<< 点击显示目录 >> 主页 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;