<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><DIV>Hi&nbsp;Jinyoung,</DIV>
<DIV>&nbsp;</DIV>
<DIV>Sorry, I have not used epos3&nbsp;motor&nbsp;drive&nbsp;up to&nbsp;now. </DIV>
<DIV>But I wonder&nbsp;what operation mode you used? Csp or Csv?</DIV>
<DIV>And Whether the same operation mode can work very well&nbsp;under TwinCAT control?</DIV>
<DIV>&nbsp;</DIV>
<DIV>BR!</DIV>
<DIV>&nbsp;</DIV>
<DIV></DIV>
<DIV id="divNeteaseMailCard"></DIV>
<DIV><BR></DIV><PRE><BR>At&nbsp;2012-12-06&nbsp;18:23:38,etherlab-dev-request@etherlab.org&nbsp;wrote:
&gt;Send&nbsp;etherlab-dev&nbsp;mailing&nbsp;list&nbsp;submissions&nbsp;to
&gt;        etherlab-dev@etherlab.org
&gt;
&gt;To&nbsp;subscribe&nbsp;or&nbsp;unsubscribe&nbsp;via&nbsp;the&nbsp;World&nbsp;Wide&nbsp;Web,&nbsp;visit
&gt;        http://lists.etherlab.org/mailman/listinfo/etherlab-dev
&gt;or,&nbsp;via&nbsp;email,&nbsp;send&nbsp;a&nbsp;message&nbsp;with&nbsp;subject&nbsp;or&nbsp;body&nbsp;'help'&nbsp;to
&gt;        etherlab-dev-request@etherlab.org
&gt;
&gt;You&nbsp;can&nbsp;reach&nbsp;the&nbsp;person&nbsp;managing&nbsp;the&nbsp;list&nbsp;at
&gt;        etherlab-dev-owner@etherlab.org
&gt;
&gt;When&nbsp;replying,&nbsp;please&nbsp;edit&nbsp;your&nbsp;Subject&nbsp;line&nbsp;so&nbsp;it&nbsp;is&nbsp;more&nbsp;specific
&gt;than&nbsp;"Re:&nbsp;Contents&nbsp;of&nbsp;etherlab-dev&nbsp;digest..."
&gt;
&gt;
&gt;Today's&nbsp;Topics:
&gt;
&gt;&nbsp;&nbsp;&nbsp;1.&nbsp;Re:&nbsp;etherlab-dev&nbsp;Digest,&nbsp;Vol&nbsp;50,&nbsp;Issue&nbsp;1&nbsp;(Jinyoung&nbsp;Choi)
&gt;
&gt;
&gt;----------------------------------------------------------------------
&gt;
&gt;Message:&nbsp;1
&gt;Date:&nbsp;Thu,&nbsp;6&nbsp;Dec&nbsp;2012&nbsp;19:23:33&nbsp;+0900
&gt;From:&nbsp;Jinyoung&nbsp;Choi&nbsp;&lt;kbkbc88@gmail.com&gt;
&gt;Subject:&nbsp;Re:&nbsp;[etherlab-dev]&nbsp;etherlab-dev&nbsp;Digest,&nbsp;Vol&nbsp;50,&nbsp;Issue&nbsp;1
&gt;To:&nbsp;etherlab-dev@etherlab.org
&gt;Message-ID:
&gt;        &lt;CADsBPRSWYwV7G46GmYAMSZKRonW=gDac6RUbFAE=XZeqP9opWA@mail.gmail.com&gt;
&gt;Content-Type:&nbsp;text/plain;&nbsp;charset="iso-8859-1"
&gt;
&gt;Thank&nbsp;you&nbsp;for&nbsp;your&nbsp;answer&nbsp;Qing.
&gt;
&gt;still,&nbsp;i&nbsp;can't&nbsp;solve&nbsp;the&nbsp;problem&nbsp;:&nbsp;(
&gt;
&gt;I&nbsp;captured&nbsp;some&nbsp;packets&nbsp;by&nbsp;using&nbsp;the&nbsp;wireshark&nbsp;program&nbsp;and&nbsp;i&nbsp;checked&nbsp;the
&gt;pdos&nbsp;are&nbsp;sent&nbsp;properly.
&gt;
&gt;but&nbsp;the&nbsp;real&nbsp;values&nbsp;of&nbsp;object&nbsp;dictionary&nbsp;are&nbsp;no&nbsp;changed!
&gt;
&gt;so&nbsp;I&nbsp;think&nbsp;it&nbsp;is&nbsp;not&nbsp;a&nbsp;master&nbsp;module's&nbsp;problem....
&gt;
&gt;I&nbsp;use&nbsp;epos3&nbsp;motor&nbsp;drive&nbsp;for&nbsp;the&nbsp;test...
&gt;
&gt;is&nbsp;there&nbsp;any&nbsp;solution?
&gt;
&gt;2012/12/5&nbsp;&lt;etherlab-dev-request@etherlab.org&gt;
&gt;
&gt;&gt;&nbsp;Send&nbsp;etherlab-dev&nbsp;mailing&nbsp;list&nbsp;submissions&nbsp;to
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;etherlab-dev@etherlab.org
&gt;&gt;
&gt;&gt;&nbsp;To&nbsp;subscribe&nbsp;or&nbsp;unsubscribe&nbsp;via&nbsp;the&nbsp;World&nbsp;Wide&nbsp;Web,&nbsp;visit
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://lists.etherlab.org/mailman/listinfo/etherlab-dev
&gt;&gt;&nbsp;or,&nbsp;via&nbsp;email,&nbsp;send&nbsp;a&nbsp;message&nbsp;with&nbsp;subject&nbsp;or&nbsp;body&nbsp;'help'&nbsp;to
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;etherlab-dev-request@etherlab.org
&gt;&gt;
&gt;&gt;&nbsp;You&nbsp;can&nbsp;reach&nbsp;the&nbsp;person&nbsp;managing&nbsp;the&nbsp;list&nbsp;at
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;etherlab-dev-owner@etherlab.org
&gt;&gt;
&gt;&gt;&nbsp;When&nbsp;replying,&nbsp;please&nbsp;edit&nbsp;your&nbsp;Subject&nbsp;line&nbsp;so&nbsp;it&nbsp;is&nbsp;more&nbsp;specific
&gt;&gt;&nbsp;than&nbsp;"Re:&nbsp;Contents&nbsp;of&nbsp;etherlab-dev&nbsp;digest..."
&gt;&gt;
&gt;&gt;
&gt;&gt;&nbsp;Today's&nbsp;Topics:
&gt;&gt;
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;Re:&nbsp;A&nbsp;problem&nbsp;related&nbsp;to&nbsp;the&nbsp;pdo&nbsp;communication&nbsp;&nbsp;&nbsp;&nbsp;(Jinyoung
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Choi)&nbsp;(Royal&nbsp;Qing)
&gt;&gt;
&gt;&gt;
&gt;&gt;&nbsp;----------------------------------------------------------------------
&gt;&gt;
&gt;&gt;&nbsp;Message:&nbsp;1
&gt;&gt;&nbsp;Date:&nbsp;Wed,&nbsp;5&nbsp;Dec&nbsp;2012&nbsp;11:38:09&nbsp;+0800&nbsp;(CST)
&gt;&gt;&nbsp;From:&nbsp;"Royal&nbsp;Qing"&nbsp;&lt;royalqing@163.com&gt;
&gt;&gt;&nbsp;Subject:&nbsp;Re:&nbsp;[etherlab-dev]&nbsp;A&nbsp;problem&nbsp;related&nbsp;to&nbsp;the&nbsp;pdo&nbsp;communication
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Jinyoung&nbsp;Choi)
&gt;&gt;&nbsp;To:&nbsp;etherlab-dev@etherlab.org
&gt;&gt;&nbsp;Message-ID:&nbsp;&lt;20c0bac1.500e.13b6924602d.Coremail.royalqing@163.com&gt;
&gt;&gt;&nbsp;Content-Type:&nbsp;text/plain;&nbsp;charset="gbk"
&gt;&gt;
&gt;&gt;&nbsp;Hi&nbsp;Jinyoung,
&gt;&gt;
&gt;&gt;&nbsp;It&nbsp;looks&nbsp;like&nbsp;nothing&nbsp;wrong&nbsp;with&nbsp;your&nbsp;codes.
&gt;&gt;&nbsp;First&nbsp;of&nbsp;all,&nbsp;please&nbsp;check&nbsp;the&nbsp;device&nbsp;description&nbsp;file(XML)&nbsp;and&nbsp;make&nbsp;sure
&gt;&gt;&nbsp;it&nbsp;just&nbsp;contains&nbsp;only&nbsp;1&nbsp;RxPDO&nbsp;with&nbsp;7&nbsp;entries&nbsp;and&nbsp;1&nbsp;TxPDO&nbsp;with&nbsp;6&nbsp;entries.
&gt;&gt;&nbsp;Then&nbsp;please&nbsp;try&nbsp;to&nbsp;use&nbsp;external&nbsp;memory&nbsp;to&nbsp;manage&nbsp;the&nbsp;internal&nbsp;process&nbsp;data
&gt;&gt;&nbsp;for&nbsp;your&nbsp;domain.&nbsp;I&nbsp;doubt&nbsp;that&nbsp;your&nbsp;pointer&nbsp;domain0_output&nbsp;is&nbsp;clear&nbsp;after
&gt;&gt;&nbsp;&nbsp;ecrt_master_send(master).
&gt;&gt;
&gt;&gt;&nbsp;if&nbsp;((size&nbsp;=&nbsp;ecrt_domain_size(domain0)))&nbsp;{
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!(domain0_output&nbsp;=&nbsp;(uint8_t&nbsp;*)&nbsp;kmalloc(size,&nbsp;GFP_KERNEL)))&nbsp;{
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_ERR&nbsp;PFX&nbsp;"Failed&nbsp;to&nbsp;allocate&nbsp;%u&nbsp;bytes&nbsp;of&nbsp;process
&gt;&gt;&nbsp;data"
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;memory!\n",&nbsp;size);
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_domain_external_memory(domain0,&nbsp;domain0_output);
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;
&gt;&gt;&nbsp;BR!
&gt;&gt;
&gt;&gt;&nbsp;Royal&nbsp;Qing
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;&nbsp;At&nbsp;2012-11-30&nbsp;18:20:10,etherlab-dev-request@etherlab.org&nbsp;wrote:
&gt;&gt;&nbsp;&gt;Send&nbsp;etherlab-dev&nbsp;mailing&nbsp;list&nbsp;submissions&nbsp;to
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;etherlab-dev@etherlab.org
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;To&nbsp;subscribe&nbsp;or&nbsp;unsubscribe&nbsp;via&nbsp;the&nbsp;World&nbsp;Wide&nbsp;Web,&nbsp;visit
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://lists.etherlab.org/mailman/listinfo/etherlab-dev
&gt;&gt;&nbsp;&gt;or,&nbsp;via&nbsp;email,&nbsp;send&nbsp;a&nbsp;message&nbsp;with&nbsp;subject&nbsp;or&nbsp;body&nbsp;'help'&nbsp;to
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;etherlab-dev-request@etherlab.org
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;You&nbsp;can&nbsp;reach&nbsp;the&nbsp;person&nbsp;managing&nbsp;the&nbsp;list&nbsp;at
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;etherlab-dev-owner@etherlab.org
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;When&nbsp;replying,&nbsp;please&nbsp;edit&nbsp;your&nbsp;Subject&nbsp;line&nbsp;so&nbsp;it&nbsp;is&nbsp;more&nbsp;specific
&gt;&gt;&nbsp;&gt;than&nbsp;"Re:&nbsp;Contents&nbsp;of&nbsp;etherlab-dev&nbsp;digest..."
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Today's&nbsp;Topics:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;1.&nbsp;A&nbsp;problem&nbsp;related&nbsp;to&nbsp;the&nbsp;pdo&nbsp;communication&nbsp;(Jinyoung&nbsp;Choi)
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;----------------------------------------------------------------------
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Message:&nbsp;1
&gt;&gt;&nbsp;&gt;Date:&nbsp;Fri,&nbsp;30&nbsp;Nov&nbsp;2012&nbsp;19:20:07&nbsp;+0900
&gt;&gt;&nbsp;&gt;From:&nbsp;Jinyoung&nbsp;Choi&nbsp;&lt;kbkbc88@gmail.com&gt;
&gt;&gt;&nbsp;&gt;Subject:&nbsp;[etherlab-dev]&nbsp;A&nbsp;problem&nbsp;related&nbsp;to&nbsp;the&nbsp;pdo&nbsp;communication
&gt;&gt;&nbsp;&gt;To:&nbsp;etherlab-dev@etherlab.org
&gt;&gt;&nbsp;&gt;Message-ID:
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;
&gt;&gt;&nbsp;CADsBPRSrAhDoJad1n2fyKhc8ADCW412o8b1eX-mwzYp+b68rtA@mail.gmail.com&gt;
&gt;&gt;&nbsp;&gt;Content-Type:&nbsp;text/plain;&nbsp;charset="iso-8859-1"
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Hi&nbsp;all,&nbsp;my&nbsp;name&nbsp;CJ&nbsp;from&nbsp;south&nbsp;korea.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;I&nbsp;modified&nbsp;an&nbsp;example&nbsp;in&nbsp;/example/user/main.c
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;My&nbsp;goal&nbsp;is&nbsp;to&nbsp;communicate&nbsp;with&nbsp;slave&nbsp;motor&nbsp;drive(epos3)&nbsp;by&nbsp;using&nbsp;ethercat
&gt;&gt;&nbsp;&gt;through&nbsp;SDO&nbsp;and&nbsp;PDO&nbsp;messages.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;My&nbsp;slave&nbsp;drive&nbsp;can&nbsp;get&nbsp;into&nbsp;OP&nbsp;state&nbsp;like&nbsp;these&nbsp;messages
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Activating&nbsp;master...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Starting&nbsp;timer...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Started.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;1&nbsp;slave(s).
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;AL&nbsp;states:&nbsp;0x02.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Link&nbsp;is&nbsp;up.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;EPOS3&nbsp;slave&nbsp;0&nbsp;State&nbsp;0x02.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;EPOS3&nbsp;slave&nbsp;0:&nbsp;online.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Domain:&nbsp;WC&nbsp;3.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;Domain:&nbsp;State&nbsp;2.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;AL&nbsp;states:&nbsp;0x08.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;EPOS3&nbsp;slave&nbsp;0&nbsp;State&nbsp;0x08.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;EPOS3&nbsp;slave&nbsp;0:&nbsp;operational.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;and&nbsp;kernel&nbsp;messages&nbsp;are&nbsp;like&nbsp;this,
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.133927]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;Stopping&nbsp;master&nbsp;thread.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.133930]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;Master&nbsp;IDLE&nbsp;thread&nbsp;exiting...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.133952]&nbsp;EtherCAT&nbsp;0:&nbsp;Master&nbsp;thread&nbsp;exited.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.133954]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;FSM&nbsp;datagram&nbsp;is&nbsp;ffff8800527bd648.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.133955]&nbsp;EtherCAT&nbsp;0:&nbsp;Starting&nbsp;EtherCAT-OP&nbsp;thread.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.133973]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;mmap()
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.133975]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;Vma&nbsp;fault,&nbsp;virtual_address&nbsp;=
&gt;&gt;&nbsp;&gt;00007fb7e9b61000,&nbsp;offset&nbsp;=&nbsp;0,&nbsp;page&nbsp;=&nbsp;ffffea00011ffe30
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.134008]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;Operation&nbsp;thread&nbsp;running&nbsp;with&nbsp;fsm
&gt;&gt;&nbsp;interval
&gt;&gt;&nbsp;&gt;=&nbsp;10000&nbsp;us,&nbsp;max&nbsp;data&nbsp;size=112500
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.134010]&nbsp;EtherCAT&nbsp;WARNING&nbsp;0:&nbsp;1&nbsp;datagram&nbsp;UNMATCHED!
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.143508]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;Configuration&nbsp;changed&nbsp;(aborting&nbsp;state
&gt;&gt;&nbsp;&gt;check).
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.143511]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;Writing&nbsp;system&nbsp;time&nbsp;offsets...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.143512]&nbsp;EtherCAT&nbsp;WARNING&nbsp;0:&nbsp;No&nbsp;app_time&nbsp;received&nbsp;up&nbsp;to&nbsp;now,&nbsp;but
&gt;&gt;&nbsp;&gt;master&nbsp;already&nbsp;active.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.143513]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0:&nbsp;Requesting&nbsp;OP...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.181179]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Changing&nbsp;state&nbsp;from&nbsp;PREOP&nbsp;to&nbsp;OP.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.181182]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Configuring...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.215005]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Now&nbsp;in&nbsp;INIT.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.215007]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Clearing&nbsp;FMMU&nbsp;configurations...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.235006]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Clearing&nbsp;sync&nbsp;manager&nbsp;configurations...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.255046]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Clearing&nbsp;DC&nbsp;assignment...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.274967]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Configuring&nbsp;mailbox&nbsp;sync&nbsp;managers...
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.274995]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;SM0:&nbsp;Addr&nbsp;0x1000,&nbsp;Size&nbsp;1024,&nbsp;Ctrl&nbsp;0x26,
&gt;&gt;&nbsp;&gt;En&nbsp;1
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.274997]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;SM1:&nbsp;Addr&nbsp;0x1400,&nbsp;Size&nbsp;1024,&nbsp;Ctrl&nbsp;0x22,
&gt;&gt;&nbsp;&gt;En&nbsp;1
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.334911]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Now&nbsp;in&nbsp;PREOP.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.334918]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Setting&nbsp;PDO&nbsp;assignment&nbsp;of&nbsp;SM2:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.334919]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Currently&nbsp;assigned&nbsp;PDOs:&nbsp;0x1600.&nbsp;PDOs
&gt;&gt;&nbsp;to
&gt;&gt;&nbsp;&gt;assign:&nbsp;0x1600
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.334922]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Setting&nbsp;number&nbsp;of&nbsp;assigned&nbsp;PDOs&nbsp;to
&gt;&gt;&nbsp;zero.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.334923]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Downloading&nbsp;SDO&nbsp;0x1C12:00.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.334924]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.334926]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Expedited&nbsp;download&nbsp;request:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.334927]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;20&nbsp;2F&nbsp;12&nbsp;1C&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.394874]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Download&nbsp;response:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.394876]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;30&nbsp;60&nbsp;12&nbsp;1C&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.394881]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Assigning&nbsp;PDO&nbsp;0x1600&nbsp;at&nbsp;position&nbsp;1.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.394882]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Downloading&nbsp;SDO&nbsp;0x1C12:01.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.394883]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;16
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.394885]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Expedited&nbsp;download&nbsp;request:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.394885]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;20&nbsp;2B&nbsp;12&nbsp;1C&nbsp;01&nbsp;00&nbsp;16&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.454815]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Download&nbsp;response:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.454816]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;30&nbsp;60&nbsp;12&nbsp;1C&nbsp;01&nbsp;00&nbsp;16&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.454820]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Setting&nbsp;number&nbsp;of&nbsp;assigned&nbsp;PDOs&nbsp;to&nbsp;1.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.454822]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Downloading&nbsp;SDO&nbsp;0x1C12:00.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.454822]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;01
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.454824]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Expedited&nbsp;download&nbsp;request:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.454824]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;20&nbsp;2F&nbsp;12&nbsp;1C&nbsp;00&nbsp;01&nbsp;00&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514775]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Download&nbsp;response:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514777]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;30&nbsp;60&nbsp;12&nbsp;1C&nbsp;00&nbsp;01&nbsp;00&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514783]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Successfully&nbsp;configured&nbsp;PDO&nbsp;assignment
&gt;&gt;&nbsp;&gt;of&nbsp;SM2.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514787]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Setting&nbsp;PDO&nbsp;assignment&nbsp;of&nbsp;SM3:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514787]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Currently&nbsp;assigned&nbsp;PDOs:&nbsp;0x1A00.&nbsp;PDOs
&gt;&gt;&nbsp;to
&gt;&gt;&nbsp;&gt;assign:&nbsp;0x1A00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514790]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Setting&nbsp;number&nbsp;of&nbsp;assigned&nbsp;PDOs&nbsp;to
&gt;&gt;&nbsp;zero.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514792]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Downloading&nbsp;SDO&nbsp;0x1C13:00.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514792]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514794]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Expedited&nbsp;download&nbsp;request:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.514794]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;20&nbsp;2F&nbsp;13&nbsp;1C&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.574693]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Download&nbsp;response:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.574695]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;30&nbsp;60&nbsp;13&nbsp;1C&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.574700]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Assigning&nbsp;PDO&nbsp;0x1A00&nbsp;at&nbsp;position&nbsp;1.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.574702]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Downloading&nbsp;SDO&nbsp;0x1C13:01.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.574703]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;1A
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.574704]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Expedited&nbsp;download&nbsp;request:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.574705]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;20&nbsp;2B&nbsp;13&nbsp;1C&nbsp;01&nbsp;00&nbsp;1A&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.634651]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Download&nbsp;response:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.634653]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;30&nbsp;60&nbsp;13&nbsp;1C&nbsp;01&nbsp;00&nbsp;1A&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.634656]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Setting&nbsp;number&nbsp;of&nbsp;assigned&nbsp;PDOs&nbsp;to&nbsp;1.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.634658]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Downloading&nbsp;SDO&nbsp;0x1C13:00.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.634659]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;01
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.634660]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Expedited&nbsp;download&nbsp;request:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.634661]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;20&nbsp;2F&nbsp;13&nbsp;1C&nbsp;00&nbsp;01&nbsp;00&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.694597]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Download&nbsp;response:
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.694599]&nbsp;EtherCAT&nbsp;DEBUG:&nbsp;00&nbsp;30&nbsp;60&nbsp;13&nbsp;1C&nbsp;00&nbsp;01&nbsp;00&nbsp;00&nbsp;00
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.694603]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Successfully&nbsp;configured&nbsp;PDO&nbsp;assignment
&gt;&gt;&nbsp;&gt;of&nbsp;SM3.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.694607]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;SM2:&nbsp;Addr&nbsp;0x1800,&nbsp;Size&nbsp;19,&nbsp;Ctrl&nbsp;0x64,
&gt;&gt;&nbsp;En
&gt;&gt;&nbsp;&gt;1
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.694609]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;SM3:&nbsp;Addr&nbsp;0x1C00,&nbsp;Size&nbsp;15,&nbsp;Ctrl&nbsp;0x20,
&gt;&gt;&nbsp;En
&gt;&gt;&nbsp;&gt;1
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.714583]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0&nbsp;0:0:&nbsp;FMMU:&nbsp;LogAddr&nbsp;0x00000000,&nbsp;Size&nbsp;19,
&gt;&gt;&nbsp;&gt;PhysAddr&nbsp;0x1800,&nbsp;SM2,&nbsp;Dir&nbsp;out
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.714585]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0&nbsp;0:0:&nbsp;FMMU:&nbsp;LogAddr&nbsp;0x00000013,&nbsp;Size&nbsp;15,
&gt;&gt;&nbsp;&gt;PhysAddr&nbsp;0x1C00,&nbsp;SM3,&nbsp;Dir&nbsp;in
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.764458]&nbsp;EtherCAT&nbsp;0:&nbsp;Domain&nbsp;0:&nbsp;Working&nbsp;counter&nbsp;changed&nbsp;to&nbsp;3/3.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.774506]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Now&nbsp;in&nbsp;SAFEOP.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.814535]&nbsp;EtherCAT&nbsp;DEBUG&nbsp;0-0:&nbsp;Now&nbsp;in&nbsp;OP.&nbsp;Finished&nbsp;configuration.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;[29145.840543]&nbsp;EtherCAT&nbsp;0:&nbsp;Slave&nbsp;states:&nbsp;OP.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;------------------------------------------------------------------------------------------------
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;I&nbsp;guess&nbsp;that&nbsp;the&nbsp;pdos&nbsp;may&nbsp;be&nbsp;sent&nbsp;by&nbsp;master&nbsp;module.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;but&nbsp;the&nbsp;actual&nbsp;value&nbsp;of&nbsp;objects&nbsp;in&nbsp;slave's&nbsp;object&nbsp;dictionary&nbsp;are&nbsp;not
&gt;&gt;&nbsp;&gt;changed.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;what&nbsp;is&nbsp;the&nbsp;problem?
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;please&nbsp;do&nbsp;me&nbsp;a&nbsp;favor.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;and&nbsp;this&nbsp;is&nbsp;my&nbsp;example&nbsp;code.
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/*****************************************************************************
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;$Id:&nbsp;main.c,v&nbsp;60a116ed3897&nbsp;2009/07/27&nbsp;10:44:16&nbsp;fp&nbsp;$
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;2007-2009&nbsp;&nbsp;Florian&nbsp;Pose,&nbsp;Ingenieurgemeinschaft&nbsp;IgH
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;This&nbsp;file&nbsp;is&nbsp;part&nbsp;of&nbsp;the&nbsp;IgH&nbsp;EtherCAT&nbsp;Master.
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;The&nbsp;IgH&nbsp;EtherCAT&nbsp;Master&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it
&gt;&gt;&nbsp;and/or
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;version&nbsp;2,
&gt;&gt;&nbsp;&gt;as
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation.
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;The&nbsp;IgH&nbsp;EtherCAT&nbsp;Master&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be
&gt;&gt;&nbsp;&gt;useful,
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the&nbsp;GNU
&gt;&gt;&nbsp;&gt;General
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
&gt;&gt;&nbsp;along
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;with&nbsp;the&nbsp;IgH&nbsp;EtherCAT&nbsp;Master;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;St,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;&nbsp;02110-1301
&gt;&gt;&nbsp;&gt;USA
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;---
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;The&nbsp;license&nbsp;mentioned&nbsp;above&nbsp;concerns&nbsp;the&nbsp;source&nbsp;code&nbsp;only.&nbsp;Using&nbsp;the
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;EtherCAT&nbsp;technology&nbsp;and&nbsp;brand&nbsp;is&nbsp;only&nbsp;permitted&nbsp;in&nbsp;compliance&nbsp;with&nbsp;the
&gt;&gt;&nbsp;&gt;&nbsp;*&nbsp;&nbsp;industrial&nbsp;property&nbsp;and&nbsp;similar&nbsp;rights&nbsp;of&nbsp;Beckhoff&nbsp;Automation&nbsp;GmbH.
&gt;&gt;&nbsp;&gt;&nbsp;*
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;&lt;errno.h&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;&lt;signal.h&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;&lt;stdio.h&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;&lt;string.h&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;&lt;sys/resource.h&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;&lt;sys/time.h&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;&lt;sys/types.h&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;&lt;unistd.h&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#include&nbsp;"ecrt.h"
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;//&nbsp;Application&nbsp;parameters
&gt;&gt;&nbsp;&gt;#define&nbsp;FREQUENCY&nbsp;100
&gt;&gt;&nbsp;&gt;#define&nbsp;PRIORITY&nbsp;1
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;//&nbsp;Optional&nbsp;features
&gt;&gt;&nbsp;&gt;#define&nbsp;CONFIGURE_PDOS&nbsp;&nbsp;1
&gt;&gt;&nbsp;&gt;#define&nbsp;SDO_ACCESS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;//&nbsp;EtherCAT
&gt;&gt;&nbsp;&gt;static&nbsp;ec_master_t&nbsp;*master&nbsp;=&nbsp;NULL;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_master_state_t&nbsp;master_state&nbsp;=&nbsp;{};
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_domain_t&nbsp;*domain0&nbsp;=&nbsp;NULL;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_domain_state_t&nbsp;domain_state&nbsp;=&nbsp;{};
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_slave_config_t&nbsp;*sc_epos3&nbsp;=&nbsp;NULL;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_slave_config_state_t&nbsp;sc_epos3_state&nbsp;=&nbsp;{};
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;//&nbsp;Timer
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;sig_alarms&nbsp;=&nbsp;0;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;user_alarms&nbsp;=&nbsp;0;
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;//&nbsp;process&nbsp;data
&gt;&gt;&nbsp;&gt;static&nbsp;uint8_t&nbsp;*domain0_output&nbsp;=&nbsp;NULL;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#define&nbsp;SLAVE_DRIVE_0&nbsp;0,&nbsp;0
&gt;&gt;&nbsp;&gt;#define&nbsp;MAXON_EPOS3&nbsp;&nbsp;&nbsp;&nbsp;0x000000fb,&nbsp;0x64400000
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;//&nbsp;offsets&nbsp;for&nbsp;PDO&nbsp;entries
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_cntlwd;
&gt;&gt;&nbsp;&gt;//static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_tvel;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_tpos;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_off_pos;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_off_vel;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_off_toq;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_moo;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_dof;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_status;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_pos_val;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_vel_val;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_toq_val;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_mood;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;off_epos3_dif;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;const&nbsp;static&nbsp;ec_pdo_entry_reg_t&nbsp;domain0_regs[]&nbsp;=&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x6040,&nbsp;0,&nbsp;&amp;off_epos3_cntlwd},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x607a,&nbsp;0,&nbsp;&amp;off_epos3_tpos},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x60b0,&nbsp;0,&nbsp;&amp;off_epos3_off_pos},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x60b1,&nbsp;0,&nbsp;&amp;off_epos3_off_vel},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x60b2,&nbsp;0,&nbsp;&amp;off_epos3_off_toq},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x6060,&nbsp;0,&nbsp;&amp;off_epos3_moo},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x2078,&nbsp;1,&nbsp;&amp;off_epos3_dof},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x6041,&nbsp;0,&nbsp;&amp;off_epos3_status},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x6064,&nbsp;0,&nbsp;&amp;off_epos3_pos_val},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x606c,&nbsp;0,&nbsp;&amp;off_epos3_vel_val},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x6077,&nbsp;0,&nbsp;&amp;off_epos3_toq_val},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x6061,&nbsp;0,&nbsp;&amp;off_epos3_mood},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3,&nbsp;0x2071,&nbsp;1,&nbsp;&amp;off_epos3_dif},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{}
&gt;&gt;&nbsp;&gt;};
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;counter&nbsp;=&nbsp;0;
&gt;&gt;&nbsp;&gt;static&nbsp;unsigned&nbsp;int&nbsp;blink&nbsp;=&nbsp;0;
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/*****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#if&nbsp;CONFIGURE_PDOS
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_pdo_entry_info_t&nbsp;epos3_pdo_rx_entries[]&nbsp;=&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x6040,&nbsp;0,&nbsp;16},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;controlword
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x607a,&nbsp;0,&nbsp;32},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;target&nbsp;position
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x60b0,&nbsp;0,&nbsp;32},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;position&nbsp;offset
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x60b1,&nbsp;0,&nbsp;32},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;velocity&nbsp;offset
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x60b2,&nbsp;0,&nbsp;16},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;torque&nbsp;offset
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x6060,&nbsp;0,&nbsp;8},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;modes&nbsp;of&nbsp;opeartion
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x2078,&nbsp;1,&nbsp;16}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;digital&nbsp;output&nbsp;functionality
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;};
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_pdo_entry_info_t&nbsp;epos3_pdo_tx_entries[]&nbsp;=&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x6041,&nbsp;0,&nbsp;16},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;status&nbsp;word
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x6064,&nbsp;0,&nbsp;32},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;position&nbsp;actual&nbsp;value
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x606c,&nbsp;0,&nbsp;32},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;velocity&nbsp;actual&nbsp;value
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x6077,&nbsp;0,&nbsp;16},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;torque&nbsp;actual&nbsp;value
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x6061,&nbsp;0,&nbsp;8},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;modes&nbsp;of&nbsp;operation&nbsp;display
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x2071,&nbsp;1,&nbsp;16}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;digital&nbsp;input&nbsp;functionality
&gt;&gt;&nbsp;&gt;};
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_pdo_info_t&nbsp;epos3_pdos[]&nbsp;=&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x1600,&nbsp;7,&nbsp;epos3_pdo_rx_entries},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0x1a00,&nbsp;6,&nbsp;epos3_pdo_tx_entries}
&gt;&gt;&nbsp;&gt;};
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;static&nbsp;ec_sync_info_t&nbsp;epos3_syncs[]&nbsp;=&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{2,&nbsp;EC_DIR_OUTPUT,&nbsp;1,&nbsp;epos3_pdos},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{3,&nbsp;EC_DIR_INPUT,&nbsp;1,&nbsp;epos3_pdos+1},
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0xff}
&gt;&gt;&nbsp;&gt;};
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#endif
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/*****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#if&nbsp;SDO_ACCESS
&gt;&gt;&nbsp;&gt;static&nbsp;ec_sdo_request_t&nbsp;*sdo;
&gt;&gt;&nbsp;&gt;#endif
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/*****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;void&nbsp;check_domain_state(ec_domain_t&nbsp;*domain)
&gt;&gt;&nbsp;&gt;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;ec_domain_state_t&nbsp;ds;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_domain_state(domain,&nbsp;&amp;ds);
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ds.working_counter&nbsp;!=&nbsp;domain_state.working_counter)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Domain:&nbsp;WC&nbsp;%u.\n",&nbsp;ds.working_counter);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ds.wc_state&nbsp;!=&nbsp;domain_state.wc_state)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Domain:&nbsp;State&nbsp;%u.\n",&nbsp;ds.wc_state);
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;domain_state&nbsp;=&nbsp;ds;
&gt;&gt;&nbsp;&gt;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/*****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;void&nbsp;check_master_state(void)
&gt;&gt;&nbsp;&gt;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;ec_master_state_t&nbsp;ms;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_master_state(master,&nbsp;&amp;ms);
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ms.slaves_responding&nbsp;!=&nbsp;master_state.slaves_responding)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%u&nbsp;slave(s).\n",&nbsp;ms.slaves_responding);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ms.al_states&nbsp;!=&nbsp;master_state.al_states)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("AL&nbsp;states:&nbsp;0x%02X.\n",&nbsp;ms.al_states);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ms.link_up&nbsp;!=&nbsp;master_state.link_up)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Link&nbsp;is&nbsp;%s.\n",&nbsp;ms.link_up&nbsp;?&nbsp;"up"&nbsp;:&nbsp;"down");
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;master_state&nbsp;=&nbsp;ms;
&gt;&gt;&nbsp;&gt;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/*****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;void&nbsp;check_slave_config_states(void)
&gt;&gt;&nbsp;&gt;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;ec_slave_config_state_t&nbsp;s;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_slave_config_state(sc_epos3,&nbsp;&amp;s);
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(s.al_state&nbsp;!=&nbsp;sc_epos3_state.al_state)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("EPOS3&nbsp;slave&nbsp;0&nbsp;State&nbsp;0x%02X.\n",&nbsp;s.al_state);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(s.online&nbsp;!=&nbsp;sc_epos3_state.online)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("EPOS3&nbsp;slave&nbsp;0:&nbsp;%s.\n",&nbsp;s.online&nbsp;?&nbsp;"online"&nbsp;:&nbsp;"offline");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(s.operational&nbsp;!=&nbsp;sc_epos3_state.operational)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("EPOS3&nbsp;slave&nbsp;0:&nbsp;%soperational.\n",
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.operational&nbsp;?&nbsp;""&nbsp;:&nbsp;"Not&nbsp;");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;sc_epos3_state&nbsp;=&nbsp;s;
&gt;&gt;&nbsp;&gt;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/*****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#if&nbsp;SDO_ACCESS
&gt;&gt;&nbsp;&gt;void&nbsp;read_sdo(void)
&gt;&gt;&nbsp;&gt;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(ecrt_sdo_request_state(sdo))&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;EC_REQUEST_UNUSED:&nbsp;//&nbsp;request&nbsp;was&nbsp;not&nbsp;used&nbsp;yet
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_sdo_request_read(sdo);&nbsp;//&nbsp;trigger&nbsp;first&nbsp;read
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;EC_REQUEST_BUSY:
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Still&nbsp;busy...\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;EC_REQUEST_SUCCESS:
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"SDO&nbsp;value:&nbsp;0x%04X\n",
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EC_READ_U16(ecrt_sdo_request_data(sdo)));
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_sdo_request_read(sdo);&nbsp;//&nbsp;trigger&nbsp;next&nbsp;read
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;EC_REQUEST_ERROR:
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Failed&nbsp;to&nbsp;read&nbsp;SDO!\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_sdo_request_read(sdo);&nbsp;//&nbsp;retry&nbsp;reading
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#endif
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;void&nbsp;cyclic_task(){
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;receive&nbsp;process&nbsp;data
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_master_receive(master);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_domain_process(domain0);
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;check&nbsp;process&nbsp;data&nbsp;state&nbsp;(optional)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_domain_state(domain0);
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(counter)&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter--;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;do&nbsp;this&nbsp;at&nbsp;1&nbsp;Hz
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&nbsp;=&nbsp;FREQUENCY;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;calculate&nbsp;new&nbsp;process&nbsp;data
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blink&nbsp;=&nbsp;!blink;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;check&nbsp;for&nbsp;master&nbsp;state&nbsp;(optional)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_master_state();
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;check&nbsp;for&nbsp;islave&nbsp;configuration&nbsp;state(s)&nbsp;(optional)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_slave_config_states();
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#if&nbsp;SDO_ACCESS
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;read&nbsp;process&nbsp;data&nbsp;SDO
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read_sdo();
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("read_sdo\n");
&gt;&gt;&nbsp;&gt;#endif
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;read&nbsp;process&nbsp;data
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("&nbsp;stataus&nbsp;word&nbsp;:&nbsp;%u\n",EC_READ_U8(domain1_pd&nbsp;+
&gt;&gt;&nbsp;&gt;off_epos3_moo));
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;write&nbsp;process&nbsp;data
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EC_WRITE_U32(domain0_output&nbsp;+&nbsp;off_epos3_tpos,&nbsp;0xff);
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;send&nbsp;process&nbsp;data
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_domain_queue(domain0);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_master_send(master);
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;void&nbsp;signal_handler(int&nbsp;signum)&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(signum)&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;SIGALRM:
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sig_alarms++;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/****************************************************************************/
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv)
&gt;&gt;&nbsp;&gt;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ec_slave_config_t&nbsp;*sc;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;sigaction&nbsp;sa;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;itimerval&nbsp;tv;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;master&nbsp;=&nbsp;ecrt_request_master(0);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("ecrt_request_master&nbsp;is&nbsp;called&nbsp;\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!master)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;domain0&nbsp;=&nbsp;ecrt_master_create_domain(master);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!domain0)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(sc_epos3&nbsp;=&nbsp;ecrt_master_slave_config(
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;master,&nbsp;SLAVE_DRIVE_0,&nbsp;MAXON_EPOS3))){
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Failed&nbsp;to&nbsp;get&nbsp;slave&nbsp;configuration.&nbsp;\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//added&nbsp;by&nbsp;kbkbc
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//if&nbsp;(ecrt_slave_config_sdo16(sc_epos3,&nbsp;0x6040,&nbsp;0x00,9&nbsp;)&nbsp;==&nbsp;0)
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("change&nbsp;SDO&nbsp;:&nbsp;0x6040&nbsp;\n");
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#if&nbsp;SDO_ACCESS
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Creating&nbsp;SDO&nbsp;requests...\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!(sdo&nbsp;=&nbsp;ecrt_slave_config_create_sdo_request(sc_epos3,&nbsp;0x6060,
&gt;&gt;&nbsp;&gt;0x00,&nbsp;16)))&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Failed&nbsp;to&nbsp;create&nbsp;SDO&nbsp;request.\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;ecrt_sdo_request_timeout(sdo,&nbsp;500);&nbsp;//&nbsp;ms
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#endif
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#if&nbsp;CONFIGURE_PDOS
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Configuring&nbsp;PDOs...\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ecrt_slave_config_pdos(sc_epos3,&nbsp;EC_END,&nbsp;epos3_syncs))&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Failed&nbsp;to&nbsp;configure&nbsp;PDOs.\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("configureing&nbsp;PDO&nbsp;is&nbsp;completed!\n");
&gt;&gt;&nbsp;&gt;#endif
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;ecrt_domain_reg_pdo_entry_list(domain0,&nbsp;domain0_regs)){
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"PDO&nbsp;entty&nbsp;registration&nbsp;filed!&nbsp;\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Activating&nbsp;master...\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ecrt_master_activate(master))
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;!(domain0_output&nbsp;=&nbsp;ecrt_domain_data(domain0)))&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;#if&nbsp;PRIORITY
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;pid_t&nbsp;pid&nbsp;=&nbsp;getpid();
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(setpriority(PRIO_PROCESS,&nbsp;pid,&nbsp;-19))
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Warning:&nbsp;Failed&nbsp;to&nbsp;set&nbsp;priority:&nbsp;%s\n",
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strerror(errno));
&gt;&gt;&nbsp;&gt;#endif
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;sa.sa_handler&nbsp;=&nbsp;signal_handler;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;sigemptyset(&amp;sa.sa_mask);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;sa.sa_flags&nbsp;=&nbsp;0;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(sigaction(SIGALRM,&nbsp;&amp;sa,&nbsp;0))&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Failed&nbsp;to&nbsp;install&nbsp;signal&nbsp;handler!\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;printf("Starting&nbsp;timer...\n");
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;tv.it_interval.tv_sec&nbsp;=&nbsp;0;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;tv.it_interval.tv_usec&nbsp;=&nbsp;1000000&nbsp;/&nbsp;FREQUENCY;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;tv.it_value.tv_sec&nbsp;=&nbsp;0;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;tv.it_value.tv_usec&nbsp;=&nbsp;1000;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(setitimer(ITIMER_REAL,&nbsp;&amp;tv,&nbsp;NULL))&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"Failed&nbsp;to&nbsp;start&nbsp;timer:&nbsp;%s\n",&nbsp;strerror(errno));
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;printf("Started.\n");
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pause();
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if&nbsp;0
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;timeval&nbsp;t;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gettimeofday(&amp;t,&nbsp;NULL);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%u.%06u\n",&nbsp;t.tv_sec,&nbsp;t.tv_usec);
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endif
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(sig_alarms&nbsp;!=&nbsp;user_alarms)&nbsp;{
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cyclic_task();
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_alarms++;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;
&gt;&gt;&nbsp;&gt;}
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;&gt;/****************************************************************************/
&gt;&gt;&nbsp;&gt;--------------&nbsp;next&nbsp;part&nbsp;--------------
&gt;&gt;&nbsp;&gt;An&nbsp;HTML&nbsp;attachment&nbsp;was&nbsp;scrubbed...
&gt;&gt;&nbsp;&gt;URL:&nbsp;&lt;
&gt;&gt;&nbsp;http://lists.etherlab.org/pipermail/etherlab-dev/attachments/20121130/d7e815a7/attachment.html
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;------------------------------
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;_______________________________________________
&gt;&gt;&nbsp;&gt;etherlab-dev&nbsp;mailing&nbsp;list
&gt;&gt;&nbsp;&gt;etherlab-dev@etherlab.org
&gt;&gt;&nbsp;&gt;http://lists.etherlab.org/mailman/listinfo/etherlab-dev
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;
&gt;&gt;&nbsp;&gt;End&nbsp;of&nbsp;etherlab-dev&nbsp;Digest,&nbsp;Vol&nbsp;49,&nbsp;Issue&nbsp;1
&gt;&gt;&nbsp;&gt;*******************************************
&gt;&gt;&nbsp;--------------&nbsp;next&nbsp;part&nbsp;--------------
&gt;&gt;&nbsp;An&nbsp;HTML&nbsp;attachment&nbsp;was&nbsp;scrubbed...
&gt;&gt;&nbsp;URL:&nbsp;&lt;
&gt;&gt;&nbsp;http://lists.etherlab.org/pipermail/etherlab-dev/attachments/20121205/d407ed9d/attachment.htm
&gt;&gt;&nbsp;&gt;
&gt;&gt;
&gt;&gt;&nbsp;------------------------------
&gt;&gt;
&gt;&gt;&nbsp;_______________________________________________
&gt;&gt;&nbsp;etherlab-dev&nbsp;mailing&nbsp;list
&gt;&gt;&nbsp;etherlab-dev@etherlab.org
&gt;&gt;&nbsp;http://lists.etherlab.org/mailman/listinfo/etherlab-dev
&gt;&gt;
&gt;&gt;
&gt;&gt;&nbsp;End&nbsp;of&nbsp;etherlab-dev&nbsp;Digest,&nbsp;Vol&nbsp;50,&nbsp;Issue&nbsp;1
&gt;&gt;&nbsp;*******************************************
&gt;&gt;
&gt;--------------&nbsp;next&nbsp;part&nbsp;--------------
&gt;An&nbsp;HTML&nbsp;attachment&nbsp;was&nbsp;scrubbed...
&gt;URL:&nbsp;&lt;http://lists.etherlab.org/pipermail/etherlab-dev/attachments/20121206/356863c7/attachment.htm&gt;
&gt;
&gt;------------------------------
&gt;
&gt;_______________________________________________
&gt;etherlab-dev&nbsp;mailing&nbsp;list
&gt;etherlab-dev@etherlab.org
&gt;http://lists.etherlab.org/mailman/listinfo/etherlab-dev
&gt;
&gt;
&gt;End&nbsp;of&nbsp;etherlab-dev&nbsp;Digest,&nbsp;Vol&nbsp;50,&nbsp;Issue&nbsp;3
&gt;*******************************************
</PRE></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>