Protocol conversion

Does anybody knows how can I specify the location of where the data is going to be send? e.g. If I have an ASCII serial tag reader and I need to send it to a PLC control logix tag Tag_Reader[0]. Where do I specify the location inside the PLC? I found where I can specify the plc ip address but that it is. or to be more general, suppose we have a modbus serial plc that has the register 400001 = 129, so we need to send that value to an Allen Bradely PLC5 and move it to the file N12:06. Where do I do the mapping? saying that the register modbus 400001 = plc5 N12:06.

The Digi One IAP works differently that other “Mapping” products; we specifically designed a new paradigm of operation. You are not required (or even permitted) to define a relationship like 400001 = N12:06. There is a wide (and expen$ive) variety of other products on the market that this if you really require it.

The Digi works in a radically different way. See our application note under the support documentation web site for more details:

>> "How do I get a remote Modbus value from 400001 into my PLC5’s N12:06.

First, the Digi One IAP cannot move data between 2 Masters or between 2 Slaves. Some external device needs to CREATE the request and the Digi One IAP just “adjusts” this request as it passes through. So your PLC5 needs to use a MSG block to create a DF1 or CSP (aka: AB/Ethernet) request to read data from what it thinks is a remote SLC5 or MicroLogix PLC. The MSG block should be for 1 element as a SLC5 typed read and store the data returned into N12:06. So far so good - this should be nothing new or complex to a Rockwell user.

Second, the Digi One IAP needs to understand where to forward the “AB” protocol request. You’ll set a specific target or destination address into the MSG block; for example 23. So now your MSG block is reading 1 word from a MicroLogix at DST=23. So within the Digi One IAP’s forwrding table there must exist a “destination” (or “route”) that catches message for destination 23 (or a range like 20-29, etc) and forwards them to a serial or network slave. This could be Modbus/TCP or a local Modbus/RTU serial slave.

Third, you need to use a formula to convert AB notation to Modbus. Our support documentation site has an Excel spreadsheet (document 90000652_A.xls) to determine “Given Modbus slave register 4x00001, what would the SLC5/MicroLogix equivalant notation be?”. The spreadsheet shows 4x00001 (or 400001) is the same as AB notation N10:0, 4x00012 = N10:11, 4x01001 = N20:0, and so on. Fortunately, the first Modbus 250 registers (4x00001 to 4x00256) map to N10:0-249, so this is often trivial. Default table N7 is the same as N10, so N10:0 is treated the same as N7:0.

So you are done. Your MSG block reads 1 word from what it thinks is a remote MicroLogix N10 table, and stores it anywhere on the PLC5 that you configure it to store. The Digi One IAP hides the conversion. If the Modbus slave is not there, your MSG block should return an error just as if the MicroLogix were gone. There are no “status” registers to understand slave status and so on.

>> “How do I get ASCII tags data into a ControlLogix named tag?”

Again, we have an application guide 90000642_A.pdf which explains how a ControlLogix pulls in ASCII data. The Digi One IAP cannot be configured to “push” data into a ControlLogix - the ControlLogix must use a MSG block and SLC Typed Reads to pull in the ASCII data. The Digi One IAP + ASCII tag reader appears to the ControlLogix as a SLC5/MicroLogix. To pull the ASCII data as a packed integer array, read the desired number of words from N60:0; to pull the ASCII data into a ControlLogix string, read the desired data from N60:4. Reads will be zero padded, so if you read 20 words (ie: 40 bytes) and only 15 ASCII characters are waiting, then 25 null bytes will be padded to the ASCII data. These 2 remote N-file addresses are “magic numbers” - you must just use them. See the application note for more details & how to handle transmit only or half-duplex polled ASCII slaves.