Slave对于不同类型数据处理方式

<< 点击显示目录 >>

主页  ModbusTCP库使用说明 > 例程与用例 > ST >

Slave对于不同类型数据处理方式

 

实现Modbus TCP Slave功能时可以按照如下方式进行不同类型的数据关联与对应:

 

在程序的初始化部分填写PLC变量与Modbus寄存器的连接,例如:

 

●  将PLC变量motorRun(BOOL类型)和motorStop(BOOL类型)分别对应到Modbus地址为10001和10002的寄存器(只读开关量寄存器,Discrete Input Status) (ST语言):

 

MBServerCfg.unit.p_discrete_inputs[0] := ADR(motorRun);

MBServerCfg.unit.p_discrete_inputs[1]  := ADR(motorStop);

 

●  将PLC变量valveOpen (BOOL类型)和valuveClose(BOOL类型)分别对应到Modbus地址为00101和00102的寄存器(读/写开关量寄存器,Coils) (ST语言):

 

MBServerCfg.unit.p_coils[100]  := ADR(valveOpen);

MBServerCfg.unit.p_coils[101]  := ADR(valveClose);

 

●  将PLC变量step (INT类型)、temperature(REAL类型)和status(DINT类型)分别对应到Modbus地址为30101、30102和30104的寄存器(只读模拟量寄存器,Input Registers) (ST语言):

 

MBServerCfg.unit.input_registers[100]  := ADR(step);

 

(*temperature 为REAL类型变量,长度为2 words,因此需要两个寄存器来存储。分别取出temperature的首地址和首地址+2*)

MBServerCfg.unit.input_registers[101]  := ADR(temperature);

MBServerCfg.unit.input_registers[102]  := ADR(temperature) + 2;

 

(*status 为DINT类型变量,长度为2 words,因此需要两个寄存器来存储。分别取出DINT的首地址和首地址+2*)

MBServerCfg.unit.input_registers[103]  := ADR(status);

MBServerCfg.unit.input_registers[104]  := ADR(status) + 2;

 

●  将PLC变量mode (INT类型)、setTemperature(REAL类型)和setCounter(DINT类型)分别对应到Modbus地址为40201、40202和40204的寄存器(读/写模拟量寄存器,Holding Registers) (ST语言):

 

MBServerCfg.unit.holding_registers[200]  := ADR(mode);

 

(*temperature 为REAL类型变量,长度为2 words,因此需要两个寄存器来存储。分别取出temperature的首地址和首地址+2*)

MBServerCfg.unit. holding_registers[201]  := ADR(setTemperature);

MBServerCfg.unit. holding_registers[202]  := ADR(setTemperature) + 2;

 

(*status 为DINT类型变量,长度为2 words,因此需要两个寄存器来存储。分别取出DINT的首地址和首地址+2*)

MBServerCfg.unit. holding_registers[203]  := ADR(setCounter);

MBServerCfg.unit. holding_registers[204]  := ADR(setCounter) + 2;