MrPLC Member
  • Content count

  • Joined

  • Last visited

Community Reputation

2 Neutral

About Paycheck

  • Rank
    Hi, I am New!

Profile Information

  • Country Canada
  1. Data Control - Structures and Arrays

    Ahh...Ok, I'll give the offset thing a try.  If that doesn't work, I'll try those functions you mentioned. Thanks for the tip! (from a fellow Canuck) $$$
  2. Good morning folks, I'm not super familiar with the Omron world but I've used "everything else but..." fairly extensively.  My question is a fairly simple one, but allow me to be verbose in my explanation so that it may help others down the road. Relevant Hardware: Omron NX1P2 PLC, ifm Efector AL1120 IO-Link Master Block on Ethernet/IP Problem : IO Link device "raw" connections are In - Byte[246] and Out - Byte[174].  However, when I create the various data structures for the device IO table, the size of the tag from the resulting UDT is much bigger than the array sizes that the ethernet device is expecting so communication doesn't work when I put the tag in the Ethernet connection.  In order to get it to work, I created two new tags (byte array in and out) that match the size for the IO link master block and it works fine.  The issue is that an array of bytes isn't very user friendly for understanding IO-Link data and config function. Question : Is there a way I can map Byte[x] arrays into data structure tags (and vice versa) even though the data structure may be composed of various data types?  In the Siemens world I would use a BLK_MOV and a pointer but I don't know how to do something similar here. Thanks, $$$  
  3. ESATR / EGATR Commands

    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. PC
  4. ESATR / EGATR Commands

    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. Thanks, PC