Hal to Registers. Come in, Registers. Over.

More
3 years 1 month ago #281249 by rwistort
Whew!
I read thru a hundred links, changed my code a hundred times, and eventually got it working. 
I wish I could say there was a particular 'aha moment' when I knew I'd fixed it, but I tried so many variations that I'm a little fuzzy on which fix, exactly, worked. 
Understanding the drive's 'startup' tab in Twincat certainly helps.

In the end, I scraped together a custom driver for my Pronet drives by cloning the Omron driver code. Personally, I find that the C code is more transparent than the xml, and my hal is much cleaner. Plus, it worked!

So now I have 6 out of 7 motors on my robot working! That's the good news. 

The bad news:
That last motor has a Kollmorgen AKD ethercat drive, and it uses the same register designations and state machine as my Pronets. 
I used Kollmorgen's 'workbench' app to set up the driver, and it jumped through every hoop, no problem. 
I checked that it works in Twincat using my PDOs and pdoEntries. 
Then I cloned my lcec_pronet driver into a new lcec_akd driver and, of course, it didn't work. 

Here is what I get when I start linuxcnc with the AKD drive:
Code:
reid@charles1:~/linuxcnc-dev/configs/lcec$ sudo dmesg [69600.776306] EtherCAT: Requesting master 0... [69600.776309] EtherCAT: Successfully requested master 0. [69600.776712] EtherCAT 0: Domain0: Logical address 0x00000000, 16 byte, expected working counter 3. [69600.776714] EtherCAT 0:   Datagram domain0-0-main: Logical offset 0x00000000, 16 byte, type LRW. [69600.776724] EtherCAT 0: Master thread exited. [69600.776726] EtherCAT 0: Starting EtherCAT-OP thread. [69600.776829] EtherCAT WARNING 0: 186 datagrams UNMATCHED! [69606.171811] EtherCAT WARNING 0-0: Slave did not sync after 5000 ms. [69606.177810] EtherCAT 0: Domain 0: Working counter changed to 2/3. [69606.199312] EtherCAT 0: Slave states on main device: OP. [69607.179801] EtherCAT 0: Domain 0: Working counter changed to 3/3. reid@charles1:~/linuxcnc-dev/configs/lcec$ ethercat slaves 0  0:0  OP  +  AKD EtherCAT Drive (CoE) reid@charles1:~/linuxcnc-dev/configs/lcec$ ethercat -p0 pdos SM0: PhysAddr 0x1800, DefaultSize 1024, ControlRegister 0x26, Enable 1 SM1: PhysAddr 0x1c00, DefaultSize 1024, ControlRegister 0x22, Enable 1 SM2: PhysAddr 0x1100, DefaultSize    0, ControlRegister 0x24, Enable 1   RxPDO 0x1602 ""     PDO entry 0x607a:00, 32 bit, ""     PDO entry 0x6040:00, 16 bit, ""     PDO entry 0x60b2:00, 16 bit, "" SM3: PhysAddr 0x1140, DefaultSize    0, ControlRegister 0x20, Enable 1   TxPDO 0x1a02 ""     PDO entry 0x6041:00, 16 bit, ""     PDO entry 0x6063:00, 32 bit, ""     PDO entry 0x6077:00, 16 bit, ""
That all looks normal to me. (I get the 'did not sync' message even for the working Pronet drive)

In the xml I use to start the driver, the dcConf and watchdog lines (which 'came with' the Omron example) are -required- for the Pronet driver to work. For the AKD, the watchdog line hangs the system (force reboot!) and the dcConf doesn't seem to make any difference. 
Code:
<masters>   <master idx="0" appTimePeriod="1000000" refClockSyncCycles="10">     <slave idx="0" type="Akd" name="hip">       <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>       <!--<watchdog divider="2498" intervals="1000"/>-->     </slave>   </master> </masters>

By hacking, I've watched the control and status words as they go from hal to pin to register, and from register to pin to hal. The state machine gets stuck, though, at switch_on_disabled, so the motor never enables. 
(Using Kollmorgen's workbench app, connected thru a (separate from ethercat) service port, this seems to correspond to an internal software_enable signal that the fieldbus is supposed to preempt. ??)
The rest of the PDO entries don't update at all:
pos_cmd doesn't make it to register 0x607A and
Turning the rotor shaft changes 0x6063, but not the hal pin.

Any ideas?
Reid
 

Please Log in or Create an account to join the conversation.

More
3 years 1 month ago #281366 by rodw
Sounds like that pin need to be connected to joint.N.amp-enable-out

Please Log in or Create an account to join the conversation.

More
3 years 1 month ago #281426 by rwistort
Thanks, Rod, but that 'software enable' signal is not a hal pin that I can just connect. It's a virtual signal referenced in the enable logic Kollmorgen displays in its workbench app. 

That said, my guess is that enabling my AKD drive will be 'easy' once communication is established. Getting pos_fb to change when I turn the motor rotor would be a start. 

I'm pretty sure I've got a better chance of getting help if I stick to the generic driver, rather than rolling my own, so I started from scratch again and, in the xml below, the group of sdoconfig's at the top exactly match the sequence shown in Twincat's driver startup tab, and the pdos in the syncManager section match that sequence.  This corresponds to the 'premapping over .xml' method suggested by Foxington on 9/12 in this thread.
Code:
<masters>   <master idx="0" appTimePeriod="1000000" refClockSyncCycles="1000">     <!-- trying to get AKD working-->         <slave idx="0" type="generic" vid="0x6a" pid="0x00414B44" configPdos="true" name="hip"> <!-- vid 0x6a=106=akd 1546=pronet -->             <sdoConfig idx="1C12" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear SM pdos 1C12 -->       <sdoConfig idx="1C13" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear SM pdos 1C13 -->             <sdoConfig idx="1A00" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear PDO 1A00 entries -->       <sdoConfig idx="1A00" subIdx="01"><sdoDataRaw data="10 00 41 60"/></sdoConfig> <!-- PDO entry -->       <sdoConfig idx="1A00" subIdx="00"><sdoDataRaw data="01"/></sdoConfig> <!-- set   PDO 1A00 entries -->             <sdoConfig idx="1A01" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear PDO 1A01 entries -->             <sdoConfig idx="1A02" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear PDO 1A02 entries -->       <sdoConfig idx="1A02" subIdx="01"><sdoDataRaw data="10 00 41 60"/></sdoConfig> <!-- PDO entry -->       <sdoConfig idx="1A02" subIdx="02"><sdoDataRaw data="20 00 64 60"/></sdoConfig> <!-- PDO entry -->       <sdoConfig idx="1A02" subIdx="03"><sdoDataRaw data="10 00 77 60"/></sdoConfig> <!-- PDO entry -->       <sdoConfig idx="1A02" subIdx="00"><sdoDataRaw data="03"/></sdoConfig> <!-- set   PDO 1A02 entries -->             <sdoConfig idx="1A03" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear PDO 1A03 entries -->       <sdoConfig idx="1600" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear PDO 1600 entries -->       <sdoConfig idx="1600" subIdx="01"><sdoDataRaw data="10 00 40 60"/></sdoConfig> <!-- PDO entry -->       <sdoConfig idx="1600" subIdx="00"><sdoDataRaw data="01"/></sdoConfig> <!-- set   PDO 1600 entries -->             <sdoConfig idx="1601" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear PDO 1601 entries -->       <sdoConfig idx="1602" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear PDO 1602 entries -->       <sdoConfig idx="1602" subIdx="01"><sdoDataRaw data="10 00 40 60"/></sdoConfig> <!-- PDO entry -->       <sdoConfig idx="1602" subIdx="02"><sdoDataRaw data="20 00 7A 60"/></sdoConfig> <!-- PDO entry -->       <sdoConfig idx="1602" subIdx="03"><sdoDataRaw data="10 00 B2 60"/></sdoConfig> <!-- PDO entry -->       <sdoConfig idx="1602" subIdx="00"><sdoDataRaw data="03"/></sdoConfig> <!-- set   PDO 1602 entries -->             <sdoConfig idx="1603" subIdx="00"><sdoDataRaw data="00"/></sdoConfig> <!-- clear PDO 1603 entries -->             <sdoConfig idx="1C12" subIdx="01"><sdoDataRaw data="02 16"/></sdoConfig> <!-- clear SM pdos 1C12 -->       <sdoConfig idx="1C12" subIdx="00"><sdoDataRaw data="01"/></sdoConfig> <!-- set PDO count 1C12 -->       <sdoConfig idx="1C13" subIdx="01"><sdoDataRaw data="02 1A"/></sdoConfig> <!-- clear SM pdos 1C13 -->       <sdoConfig idx="1C13" subIdx="00"><sdoDataRaw data="01"/></sdoConfig> <!-- set PDO count 1C13 -->         <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>             <syncManager idx="0" dir="out"/>       <syncManager idx="1" dir="in"/>       <syncManager idx="2" dir="out"> <pdo idx="1602"> <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control"     halType="bit"/> <pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="pos-cmd"     halType="s32"/> <pdoEntry idx="60B2" subIdx="00" bitLen="16" halPin="torq-offset" halType="s32"/> </pdo>       </syncManager>       <syncManager idx="3" dir="in"> <pdo idx="1A02"> <pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status"   halType="bit"/> <pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-act"  halType="S32"/> <pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="torq-act" halType="S32"/> </pdo>       </syncManager>             <sdoConfig idx="6060" subIdx="00"><sdoDataRaw data="08"/></sdoConfig> <!-- opmode 8-csp -->     </slave>   </master> </masters>
When I start linuxcnc, here is (part of) what dmesg gives me (with ethercat debug 1). You can see that the  index, subindex, and size columns correspond to the sdoconfigs, but the data column seems wildly wrong. 
Code:
[276816.051747] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1C12, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051750] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1C13, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051753] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A00, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051755] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A00, subindex = 0x01, data = 0x000000006f725719, size = 4) [276816.051758] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A00, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051760] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A01, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051762] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A02, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051765] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A02, subindex = 0x01, data = 0x000000006f725719, size = 4) [276816.051767] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A02, subindex = 0x02, data = 0x000000006f725719, size = 4) [276816.051769] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A02, subindex = 0x03, data = 0x000000006f725719, size = 4) [276816.051771] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A02, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051774] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1A03, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051776] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1600, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051778] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1600, subindex = 0x01, data = 0x000000006f725719, size = 4) [276816.051780] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1600, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051783] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1601, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051785] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1602, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051787] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1602, subindex = 0x01, data = 0x000000006f725719, size = 4) [276816.051789] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1602, subindex = 0x02, data = 0x000000006f725719, size = 4) [276816.051792] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1602, subindex = 0x03, data = 0x000000006f725719, size = 4) [276816.051794] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1602, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051797] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1603, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051799] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1C12, subindex = 0x01, data = 0x000000006f725719, size = 2) [276816.051801] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1C12, subindex = 0x00, data = 0x000000006f725719, size = 1) [276816.051804] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1C13, subindex = 0x01, data = 0x000000006f725719, size = 2) [276816.051806] EtherCAT DEBUG 0 0:0: ecrt_slave_config_sdo(sc = 0x0000000062016c10, index = 0x1C13, subindex = 0x00, data = 0x000000006f725719, size = 1)

The dmesg listing ends with the following, and I'd like to ask, again, if the 'slave did not sync' message is worth worrying about.
Code:
[278877.196732] EtherCAT DEBUG 0-0: Sync after 4992 ms:    3433498 ns [278877.197730] EtherCAT DEBUG 0-0: Sync after 4992 ms:    3433498 ns [278877.198730] EtherCAT DEBUG 0-0: Sync after 4992 ms:    3433498 ns [278877.199730] EtherCAT DEBUG 0-0: Sync after 4996 ms:    3433498 ns [278877.200730] EtherCAT DEBUG 0-0: Sync after 4996 ms:    3433498 ns [278877.201729] EtherCAT DEBUG 0-0: Sync after 4996 ms:    3433498 ns [278877.202730] EtherCAT DEBUG 0-0: Sync after 4996 ms:    3433498 ns [278877.203732] EtherCAT WARNING 0-0: Slave did not sync after 5000 ms. [278877.203733] EtherCAT DEBUG 0-0:    ref_time=748754634520539000 [278877.203734] EtherCAT DEBUG 0-0:    app_time=748754640099714290 [278877.203734] EtherCAT DEBUG 0-0:  start_time=748754640199714290 [278877.203735] EtherCAT DEBUG 0-0:       cycle=1000000 [278877.203736] EtherCAT DEBUG 0-0:  shift_time=0 [278877.203737] EtherCAT DEBUG 0-0:   remainder=175290 [278877.203738] EtherCAT DEBUG 0-0:        start=748754640200539000 [278877.203739] EtherCAT DEBUG 0-0: Setting DC cyclic operation start time to 748754640200539000. [278877.204732] EtherCAT DEBUG 0-0: Setting DC AssignActivate to 0x0300. [278877.210731] EtherCAT 0: Domain 0: Working counter changed to 2/3. [278877.212733] EtherCAT DEBUG 0-0: Now in SAFEOP. [278877.222730] EtherCAT DEBUG 0-0: Now in OP. Finished configuration. [278877.231305] EtherCAT 0: Slave states on main device: OP. [278878.211729] EtherCAT 0: Domain 0: Working counter changed to 3/3.
After linuxcnc starts up, ethercat slaves gives:
0  0:0  OP  +  AKD EtherCAT Drive (CoE)

Finally, can someone comment on the use of the "configPdos=true" token in the <slave> line?
It seems to me that, when I configure the PDOs explicitly using sdoconfigs, it should be redundant to configure them -again- in the <syncManager> section. 
(when I changed it, it didn't make a difference)

Thanks,
Reid

Please Log in or Create an account to join the conversation.

More
3 years 1 month ago #281686 by rwistort
What do you get when you cross a black hole with a can of worms? 
A time sucking worm-hole to 0x0666:0.

I was about to burn out when I stumbled upon a sample AKD configuration on the Driver Forum.
It worked. It solved my problem. And it helped me to understand.
A grateful thanks to sockheaven for posting his work in the driver forum .

And to foxington. I can tell you've been there. 

I'm in a better place now.
Reid
The following user(s) said Thank You: rodw, endian

Please Log in or Create an account to join the conversation.

More
3 years 1 month ago #281739 by endian
Hello,

Yes, there is running stuff from Sockheaven but be very carefully... there is config for AKD2G - which is gantry hardware...

Try :

1) put your DC config at the end of the configuration 
Code:
<syncManager idx="0" dir="out"> </syncManager> <syncManager idx="1" dir="in"> </syncManager> <syncManager idx="2" dir="out"> <pdo idx="1600"> <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="TxControlWord" halType="u32"> </pdoEntry> <pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="TxPositionCommand" halType="u32"/> </pdo> </syncManager> <syncManager idx="3" dir="in"> <pdo idx="1a00"> <pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="RxStatusWord" halType="u32"/> <pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="RxPositionFeedback" halType="float"/> </pdo> </syncManager> <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/> </slave> </master> </masters>

2) configPdos="true" have to he true because you are something setuping

3) setup SDOs have to be at the beginning before definition of cyclic communicaiton objects 
Code:
<!--  Set OpMode to Cyclic Synchronous Position  --> <sdoConfig idx="6060" subIdx="00"> <sdoDataRaw data="08"/> </sdoConfig> <!--  Set Cycle Time  --> <sdoConfig idx="60C2" subIdx="01"> <sdoDataRaw data="01"/> </sdoConfig> <!--  Set Cycle exp  --> <sdoConfig idx="60C2" subIdx="02"> <sdoDataRaw data="FD"/> </sdoConfig> <syncManager idx="0" dir="out"> </syncManager> <syncManager idx="1" dir="in"> </syncManager> <syncManager idx="2" dir="out">

4) DC config should looks like this 
Code:
<!-- <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/> -->
and value of  assignActivate="" should be greater by greating number of active cyclic PDOs ... I do not know if I am right but this parameter is like time window for communication slave in DC synchronized on the fly train ... I am with my old stuff running with 7 in and 4 out cyclic PDOs at assignActivate="660"

from my point of view your basic .xml file should looks like 
Code:
<masters> <master idx="0" appTimePeriod="1000000" refClockSyncCycles="1"> <slave idx="0" type="generic" vid="0000006A" pid="00414b44" configPdos="true"> <!--  Clear SM PDOs  --> <sdoConfig idx="1C12" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Clear SM PDOs  --> <sdoConfig idx="1C13" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Clear RX PDO1  --> <sdoConfig idx="1A00" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Map status word to RX-PDO1  --> <!--   0x6041 0010  --> <sdoConfig idx="1A00" subIdx="01"> <sdoDataRaw data="10 00 41 60"/> </sdoConfig> <!--  Map position feedback to RX-PDO1  --> <!--  0x6064 0020  --> <sdoConfig idx="1A00" subIdx="02"> <sdoDataRaw data="20 00 64 60"/> </sdoConfig> <!--  Set RX-PDO1 count to 2  --> <sdoConfig idx="1A00" subIdx="00"> <sdoDataRaw data="02"/> </sdoConfig> <!--  Clear RX-PDO2  --> <sdoConfig idx="1A01" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Clear RX-PDO3  --> <sdoConfig idx="1A02" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Clear RX-PDO4  --> <sdoConfig idx="1A03" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Clear TX-PDO1  --> <sdoConfig idx="1600" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Map control word to TX-PDO1  --> <!--  0x6040 0010  --> <sdoConfig idx="1600" subIdx="01"> <sdoDataRaw data="10 00 40 60"/> </sdoConfig> <!--  Map position command to TX-PDO1  --> <!--  0x607A 0020  --> <sdoConfig idx="1600" subIdx="02"> <sdoDataRaw data="20 00 7A 60"/> </sdoConfig> <!--  Set TX-PDO1 count to 2  --> <sdoConfig idx="1600" subIdx="00"> <sdoDataRaw data="02"/> </sdoConfig> <!--  Clear TX-PDO2  --> <sdoConfig idx="1601" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Clear TX-PDO3  --> <sdoConfig idx="1602" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Clear TX-PDO4  --> <sdoConfig idx="1603" subIdx="00"> <sdoDataRaw data="00"/> </sdoConfig> <!--  Download PDO 0x1C12:01 index  --> <!--  0x1600  --> <sdoConfig idx="1C12" subIdx="01"> <sdoDataRaw data="00 16"/> </sdoConfig> <!--  Download PDO 0x1C12 count  --> <sdoConfig idx="1C12" subIdx="00"> <sdoDataRaw data="01"/> </sdoConfig> <!--  Download PDO 0x1C13:01 index  --> <!--  0x1A00  --> <sdoConfig idx="1C13" subIdx="01"> <sdoDataRaw data="00 1A"/> </sdoConfig> <!--  Download PDO 0x1C13 count  --> <sdoConfig idx="1C13" subIdx="00"> <sdoDataRaw data="01"/> </sdoConfig> <!--  Set OpMode to Cyclic Synchronous Position  --> <sdoConfig idx="6060" subIdx="00"> <sdoDataRaw data="08"/> </sdoConfig> <!--  Set Cycle Time  --> <sdoConfig idx="60C2" subIdx="01"> <sdoDataRaw data="01"/> </sdoConfig> <!--  Set Cycle exp  --> <sdoConfig idx="60C2" subIdx="02"> <sdoDataRaw data="FD"/> </sdoConfig> <syncManager idx="0" dir="out"> </syncManager> <syncManager idx="1" dir="in"> </syncManager> <syncManager idx="2" dir="out"> <pdo idx="1600"> <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="TxControlWord" halType="u32"> </pdoEntry> <pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="TxPositionCommand" halType="s32" /> </pdo> </syncManager> <syncManager idx="3" dir="in"> <pdo idx="1A00"> <pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="RxStatusWord" halType="u32"/> <pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="RxPositionFeedback" halType="s32"/> </pdo> </syncManager> <dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/> </slave> </master> </masters>

I am glad to hear something was helpful... try to learn on someones fails no on your owns 
The following user(s) said Thank You: rwistort

Please Log in or Create an account to join the conversation.

Time to create page: 0.170 seconds
Powered by Kunena Forum