AC800M-HI WITH GE PLC. CI867-MODBUS TCP/IP
Hello Sir,
Brief Scenario:
Controller : AC800M HI
PLC Already working as a Safety syetm in a good state.
I have coded the program , using FBD , and thus used Global variables in it.
Now, my case requirement:
I need to share the Values of these Global variables, to another PLC system ( GE) on Modbus TCP basis. Thus I have purchased CI867 for the purpose.
I am new to Modbus TCP. I am aware a bit,that after connecting Hardware libraries, i have to assign an IP later in hardware tree for Module.
But after that, what exactly I have to do ?
Other PLC is asking us that they need Address mapping for those variables,to work on.
Please guide me !!
Voted best answer
Hello,
Before establishing a communication you please ensure the following:
1.Whether our (800M HI with CI867) acting as master or slave?
Ans:If you are using CI867 as master then
a.Create the CI867 in hardware tree by adding ci867 hardware libraries.
b."modbus slave enabled=false"
c.Configure the IP address for the port1 of ci867 if you want to run at 10/100MBPS & if redundancy is required. Else use port2(10MBPS) & it runs as non-redundant.
d.Create the ModbusTCP slave under the port1 or port2 then set the ip address for the modbus tcp slave.
e.Create the function blocks modbustcp connect & modbustcpread and give the same name for ID as Comm_ID(example).
f.Set the channel =position of the CI867(2 example)
g.set the partner=port number.position of the TCp slave(1.1 example).
h.Set the startaddress according to your fucntion codes
example:
1-9999 coil status functioncode 1 (read/write) 'QX10#0000'
10001-19999 coil status functioncode 2 (read only) 'IX10#0000'
30001-39999 coil status functioncode 4 (read only) 'IW10#0000'
40001-49999 coil status functioncode 3 (read/write) 'QW10#0000'
If you are using as slave then "modbus slave enabled=true" on CI867 settings and you have to use access variables.
2.What kind of data you are going to read/write(discuss the fucntion codes)?
Answers
ROB/STEFAN/GAURAV/HARSHA
Hello,
Can it be done with ACCESS VARIABLES ?? If yes, then how ? (PATH-ok, but how to relate the NAME tab to any address ?? )
Its very urgent , I have been in contact with Local ABB support, but couldnt get satisfactory exact solution.
Can you please guide how exactly to Convert my Existing Boolean Tags in Control Builder, into Address(mapped) format , which further can be transferred to another system through Modus TCp protocol.
COMLI and Modbus TCP
The protocol addressing is handled in the Address tab in the Access Variable table.
COMLI variables can be accessed in two ways only, either COMLI direct addressing with capital X and the number for Boolean or capital R and the number for registers (R0-R3071) beginning with a percentage sign or not, or according to IEC 61131-3 standard representation for variables.
Modbus TCP variables can be accessed through IEC 61131-3 standard representation for variables.
Examples of COMLI/Modbus TCP direct addressing:
The following examples show how to address Bit 10 (octal):
%X10 or X10
(octal)
The following examples show how to address register 45 (decimal):
%R45 or R45
(decimal)
Allowed data types for a single variable are bool, dint, int, or uint.
All variables in a structured variable must be of the same data type.
A structured variable is allowed to contain more than 512 Booleans. Overlapping areas are not allowed. A structured variable is allowed to contain more than 32 components of integer data type. Overlapping areas are not allowed.
Example:
An access variable name "X0" is defined and connected to a variable which contains 544 Boolean components at octal address 0-1037. The next available address is then 1040 to ensure that areas do not overlap.
Hello,
Thanks for your valuable reply.
I have proceeded like in following manner:
1. I have Boolean IO's in my program
2. Thus I converted them into DINT format, by using BCtoDint block.
3. Now, when I have my Output variable STATUSWORD, and i tried to make a ACCESS NAME, in communication variable.
4. It is showing following error.,as attached
5. I think my purpose can be resolved, if I just learn to TRANSFER MY "dint type variable"( which is having ENCODED BOOLEAN VALUES ) on MODBUS TCP mode .
** 5. Can you please also help me that , how Either I can give my STATUS WORD , a User Defined Modbus Address, which when transferred can be Decoded on second machine
because, I am unable to give initial value in My Variable tab for STATUS WORD variable,
and also in ACCESS NAME TAB, it is showing SYNTAX Error.
Seeking for your valuable reply.
you have to write name(address) like it have showed on picture, and try to read this value using standart modbus functions 03 or 04 from the address 01
Add new comment