function blocks ESATR / EGATR Commands

2 posts in this topic

Good morning folks,

I've browsed this forum often enough over the past few years that I think it's time I finally signed up.  Lots of good ideas and advice that I've benefited from and I hope to return the favour some day.

So on to my question....

I'm currently knee deep in a project using a CJ2M PLC and I have to send and receive chunks of data over Ethernet/IP.  To do this, I'm using the ESATR and EGATR commands (set / get attribute).  I would like to know if these commands finish execution (ie. the ethernet port completes the transaction) even if the input conditions to the command are no longer true.  Specifically, if I use the "port ready" system flag (A202.00 is an input to my FB in this case) as a condition to trigger the ESATR command, this bit will go low once the port becomes busy (ie. during execution).  So will that interrupt the completion of the ESATR command resulting in an incomplete transaction and data loss?  I've looked through the help files on the command but don't get a clear picture of how it behaves.

Perhaps the attached JPEG shows more clearly what I mean.




Share this post

Link to post
Share on other sites

Answered my own if anybody cares, here's what I learned during debug.

It seems that once the ESATR / EGATR command is executed in the function block all the necessary data is sent to the module handling the communication.  So at that point, the module has all the information it needs to complete the communication transaction.  Whether it's the Ethernet/IP port on the PLC or a separate ethernet module in the rack, the "Port Busy" and "Port Ready" system flags don't change state until the module initiates the communication.  So the logic as I had it works fine.  The "inPortReady" FB input (driven by the system bit A202.00) only goes low once the module takes over, and interrupting the ESATR command at that time does not interrupt the transaction.  The communication module handles the completion of its commanded task independent of the PLC command.

Thanks for reading.  Happy to contribute.  Hope it helps someone else.


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now