J0hann Posted April 6, 2016 Share Posted April 6, 2016 Hello all, I have issues setting up an EtherCAT I/O device (PILZ PNOZ multi 2): I cannot make it change of state from 'SAFEOP' to 'OP'. When in 'SAFEOP' slave state, I activate the Master[0] tasks. Then the slave state changes as 'SAFEOP' -> 'PREOP' + Err (see first attachment). My problème is that the AL Status Code is empty (see second attachment)! As you can see, the AL control returns an error acknowledge but the AL status code is empty. I contacted the slave vendor but they sent me back to the master one, saying that it is a bad Master configuration. My first question is: do you know what the IDE "Slave status Error" is reading ? Is it a master error generation or the reading of a slave register ? Secondly: Do you know what could, in the master configuration, prevent an I/O module to pass to the 'OP' state ? PILZ told me about a slave state timeout parameter that could be set too low by the master, but I could not find anyway to modify it. Thanks in advance for the reply ! Link to comment Share on other sites More sharing options...
Omron Forums Support Posted April 6, 2016 Share Posted April 6, 2016 There is a timeout, try increasing the following variable: Motor[x].EcatAmpFaultLimit = 100 (decimal) - default value, increase it to; Motor[x].EcatAmpFaultLimit = 500 (decimal) - that is 500 real-time interrupts, or 500 servo cycle updates Note: the value read back to the terminal window for the ...EcatAmpFaultLimit is in Hexidecimal format ($xxx). Additionally, if you have not carefully followed the ECAT setup procedure the behavior you are observing can be expected. Documentation is available on our Forum to help you setup EtherCAT http://forums.deltatau.com/filedepot/ [FILE REMOVED] While in the FileDepot, Navigate to: PowerPMAC -> ApplicationNotes -> EtherCAT (and select a drive that is most similar to the PILZ) Link to comment Share on other sites More sharing options...
J0hann Posted April 7, 2016 Author Share Posted April 7, 2016 First of all, thanks for the quick reply ! I know this documentation very well, and I became familiar with the ECAT setup procedure. I am currently working on another project with several ECAT drives and everything is working properly. There is just this single project involving a PILZ safety module where the problem arises. The timeout you mentioned is not the one I am looking for, as it concerns the motor ECAT structure. The PILZ tech support told me to modify the ECAT state timeout (basically the time the controller will wait after an AL control request before falling in error state if the slave AL status has not reached the requested state). As they pointed out, other master constructors (Beckhoff, Siemens) let the user setup this parameter through SDO. This is not the PPMAC case (at least I could not find it). Furthermore, the PILZ tech support seems not having this parameter address... No comment about that. In order to understand where the problem lies, I need to know what is the Slave Status Err the PPMAC returns (you did not answer to that). The Master seems to know an error occured, but the AL Status Code is empty ! Therefore, I need to access the error information the PPMAC reads. Link to comment Share on other sites More sharing options...
Omron Forums Support Posted April 7, 2016 Share Posted April 7, 2016 We read the Application Layer (AL) Status Code from each slave, via the following command, which reads 0x0134 and 0x0135. ethercat reg_read -m0 -p0 0x0134 2 (where –m0 refers to master 0, and –p0 refers to the slave in position 0, 0xnnnn where nnnn is the memory offset, and then the number of bytes to read (2)) The Etherlab Master Stack provides a bit flip for the error indication, ‘E’ that you are reading in the Slave status window, e.g. “PRE-OP E”. This will require further research to root out the details. It is possible that PILZ is not doing a reg_write to the AL Status Code 0x0134, or that they are using a Vendor Specific Error register. If they provide the 0x0000 register/offset; we can read it using the example syntax above. Also available for Servo Drives is the 0x6041 Status Word, but this is not available for I/O type devices. Link to comment Share on other sites More sharing options...
J0hann Posted April 8, 2016 Author Share Posted April 8, 2016 I suspected that the 'Err' slave status illustrated in my first post was the AL control word. What is indeed annoying is that the Master seemed to acknowledge it (as it detected the 'PREOP + E'), but the reg_read of the AL Status Code returns 0 on all of its sub-indexes. Maybe a specific process cleared this field ? Thus I have no idea of what is the error origin and I am completely stuck... Link to comment Share on other sites More sharing options...
Omron Forums Support Posted April 8, 2016 Share Posted April 8, 2016 Just to clarify, we are not clearing the AL Status Code fields. We just read whatever the Slave has written to that Address Offset. The "E" error is buried elsewhere and it will take us some time to dig it out of the Master Stack. I have written an inquiry regarding this matter and hope to receive a helpful response. Link to comment Share on other sites More sharing options...
J0hann Posted April 11, 2016 Author Share Posted April 11, 2016 I have written an inquiry regarding this matter and hope to receive a helpful response. Thank you very much ! Link to comment Share on other sites More sharing options...
Omron Forums Support Posted April 11, 2016 Share Posted April 11, 2016 Basically we have dug up the following: The AL_State is different from the AL_Status_Code. The Master stack will usually auto-acknowledge errors and try configuring again, so the "E" state will be transitory. An exception occurs if it encountered an unrecoverable error, or timed out while trying to enable, in which case the error will show up in both the AL_State and AL_Status_Code. We test that error bit and add the "+ E" to the state print out. Why the PILZ device is showing 0x00 for the AL_Status_Code is unknown. We just read and report the slaves values. AL_Status, or state can be read from the PPMAC IDE Terminal using the, "ecat slaves" command. The value 0x12 represents, "preop+E". You can look at the actual value using the Diagnostics Tab in the System Setup Window, or you can use a reg_read of (0x0130) from the Terminal Window, see example syntax below. system ethercat -m0 -p0 reg_read 0x0130 2 --- (where -p0 needs to be -pn, "n" is your particular slave position number of interest, -p0, -p1, etc., the 2 at the end of the command line represents the size in bytes) The alarm state exception, or AL_Status_Code can be read by issuing a reg_read command of (0x134), or just looking at the Diagnostics Tab. system ethercat -m0 -p0 reg_read 0x0134 2 Regarding your main issue of set up problems. Did PILZ provide an application note, or setup document? Generally, the FSoE programming and device commissioning must be done from the OEM's software. Then the device must be configured with the master. All mandatory PDO's must be mapped. Additionally, the FSoE Outputs must be set equal to the FSoE Inputs, keeping size and type the same. Additionally, the EtherCAT Slave Information (ESI) file is critical. Currently we only support the flat ESI.xml file structure and do not support the MDP (linked) file structure. If MDP is what you have then PILZ may be helpful in getting you a flat ESI.xml file, also known as standard DS402 ESI file. I hope this helps. Link to comment Share on other sites More sharing options...
J0hann Posted April 13, 2016 Author Share Posted April 13, 2016 Basically we have dug up the following: The AL_State is different from the AL_Status_Code. The Master stack will usually auto-acknowledge errors and try configuring again, so the "E" state will be transitory. An exception occurs if it encountered an unrecoverable error, or timed out while trying to enable, in which case the error will show up in both the AL_State and AL_Status_Code. We test that error bit and add the "+ E" to the state print out. Why the PILZ device is showing 0x00 for the AL_Status_Code is unknown. We just read and report the slaves values. Thank you so much for trying to make this progress ! I have the following AL_Status at startup (I issued an ecat slaves): 0 VID=$00000569 PC=$000BC828 0:0 PREOP + PNOZ m ES EtherCAT (1.1) And then after activating the Master tasks: 0 VID=$00000569 PC=$000BC828 0:0 SAFEOP E PNOZ m ES EtherCAT (1.1) Note that the "E" remains, so according to what you said, the salve issued an unrecoverable error, or timed out while trying to enable. However, as before, have no information is the AL_Status register: system ethercat -m0 -p0 reg_read 0x0130 2 0x04 0x00 system ethercat -m0 -p0 reg_read 0x0134 2 0x00 0x00 I am in daily contact with PILZ. Apparently, they used an IgH Master in order to setup the module and it worked: "This case is confusing. Our development is not able to reproduce this behavior even if they have this ign master. We think its a problem of the master and not of our device so maybe its the best way if the customer asks ign for help." According to them, it could come from a too short AL state change timeout. Apparently, IgH Masters have a default value of 5 seconds, and they advised me to set it to 30 seconds: "Change the following value to 30: ( fsm_change.c Line 45) /** Timeout while waiting for AL state change . */ #define EC_AL_STATE_CHANGE_TIMEOUT 5" However, I do not have access to fsm_change.c which is compiled in a library in the following PPMAC path: /opt/etherlab/lib. Do you know how this value can be change in the PPMAC ? "Regarding your main issue of set up problems. Did PILZ provide an application note, or setup document? Generally, the FSoE programming and device commissioning must be done from the OEM's software. Then the device must be configured with the master. All mandatory PDO's must be mapped. Additionally, the FSoE Outputs must be set equal to the FSoE Inputs, keeping size and type the same. Additionally, the EtherCAT Slave Information (ESI) file is critical. Currently we only support the flat ESI.xml file structure and do not support the MDP (linked) file structure. If MDP is what you have then PILZ may be helpful in getting you a flat ESI.xml file, also known as standard DS402 ESI file. I hope this helps. OEM software was indeed used to configure the module. I am going to check out FSoE configuration, but I think it is OK. Furthermore, I guess their XML file is flat as th IDE System Setup tool could update the device with it. Thanks again ! Link to comment Share on other sites More sharing options...
Omron Forums Support Posted April 14, 2016 Share Posted April 14, 2016 What hardware are you using? Also, provide the screen output after issuing the following commands from the PPMAC IDE Terminal Window: cpu vers Then perhaps I can get the answer you are looking for. Link to comment Share on other sites More sharing options...
J0hann Posted April 15, 2016 Author Share Posted April 15, 2016 Please see the attached screenshot. Thanks ! Link to comment Share on other sites More sharing options...
Omron Forums Support Posted April 15, 2016 Share Posted April 15, 2016 JOhann please send me an email address for you, Michael Asher masher AT deltatau DOT com Link to comment Share on other sites More sharing options...
Recommended Posts