Jump to content
OMRON Forums

EtherCAT system tool: information about the "Error" slave status


J0hann

Recommended Posts

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 !

err.JPG.7a21c967c7eab51da1c9dee37f3ce831.JPG

1060771624_ALstatus.thumb.JPG.fa7b563ee32d9c1ee110439b280d8197.JPG

Link to comment
Share on other sites

  • Replies 11
  • Created
  • Last Reply

Top Posters In This Topic

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

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

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

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

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

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

Guest
This topic is now closed to further replies.

×
×
  • Create New...