Issue:
Is there a working example of the DATA_EXCH function block on the M580 using CIP explicit messaging?
Product Line:
Ethernet IP NOC module, M580
Environment:
Unity Pro software
Resolution:
Follow steps below:
send_buffer[0] := 16#024E; (*High Byte - Path Size, Low Byte - Service Code: Read Holding Registers *)
send_buffer[1] := 16#4420; (*High Byte - Class, Low Byte - Class Segment *)
send_buffer[2] := 16#0124; (*High Byte - Instance, Low Byte - Instance Segment *)
send_buffer[3] := 16#0032; (*Location of the first word to read, in this case 50 *)
send_buffer[4] := 16#0001; (*Number to read, in this case 1 *)
management_parameters[2] := 10; (* timeout - 1 second 100 x 10 *)
management_parameters[3] := 10; (* length of
DATA_EXCH (EN := enable,
ADR := converted_address, (* result of ADDM function in "init" section *)
TYP := ActionType, (* Value of 1 - transmission followed by await reception *)
EMIS := send_buffer, (*message to send *)
GEST := management_parameters, (* control block *)
RECP => receive_buffer); (* buffer for returned message *)
Is there a working example of the DATA_EXCH function block on the M580 using CIP explicit messaging?
Product Line:
Ethernet IP NOC module, M580
Environment:
Unity Pro software
Resolution:
Follow steps below:
- Create a M580 project and add a NOC module
- Add an IP address to the NOC module and disable security in the DTM browser
- Create a section, in this example, ST was used.
- Add the DATA_EXCH function block and configured it as shown below
converted_address := ADDM('0.2.0{192.168.1.140}UNC.CIP'); (* the application sends a CIP explicit message from the BMENOC0311.2 to a device at 192.168.10.21. The ADDM function converts the string to an ADDM_TYPE to be used by the Data_EXCH block*)
ActionType := 1;
send_buffer[0] := 16#024E; (*High Byte - Path Size, Low Byte - Service Code: Read Holding Registers *)
send_buffer[1] := 16#4420; (*High Byte - Class, Low Byte - Class Segment *)
send_buffer[2] := 16#0124; (*High Byte - Instance, Low Byte - Instance Segment *)
send_buffer[3] := 16#0032; (*Location of the first word to read, in this case 50 *)
send_buffer[4] := 16#0001; (*Number to read, in this case 1 *)
management_parameters[2] := 10; (* timeout - 1 second 100 x 10 *)
management_parameters[3] := 10; (* length of
senbd
buffer in bytes *)DATA_EXCH (EN := enable,
ADR := converted_address, (* result of ADDM function in "init" section *)
TYP := ActionType, (* Value of 1 - transmission followed by await reception *)
EMIS := send_buffer, (*message to send *)
GEST := management_parameters, (* control block *)
RECP => receive_buffer); (* buffer for returned message *)