我们知道,在modbus协议中规定有四种数据,DI、DO、AI、AO
DI(Discretes Input):1xxxx, 开关量输入,离散输入,一个地址占用一个bit位空间,用户只能读取它的状态,不能修改。比如面板上的按键、开关状态,电机的故障状态。
DO(Coils):0xxxx, 开关量输出,线圈输出,一个地址占用一个bit位空间,用户可读可写,可以置位、复位,可以关闭、可以打开,也可以读状态,比如继电器输出,电机的启停控制信号。
AI(Input Registers):3xxxx, 模拟量输入,输入寄存器,一个地址占用16个bit位空间,用户只能读,不能修改,比如一个压力变送器传给PLC的电压值读数。
AO(Holding Registers):4xxxx, 模拟输出,保持寄存器,一个地址占用16个bit位空间,用户可以写,也可以读回来,比如一个控制变频器的电流值。
无论这些东西被叫做什么名字,其内容不外乎这几种,输入的信号用户只能看不能改,输出的信号用户可以修改控制,也可以读回来。开关离散的数据只有一位,模拟的数据有16位。模拟输出AO内部寄存器使用4xxxx寄存器,从40001开始排列。第1个模拟量输出端子AO1,对应于40001,类似于西门子PLC的AQW0
第2个模拟量输出端子AO2,对应于40002,类似于西门子PLC的AQW2
第3个模拟量输出端子AO3,对应于40003,类似于西门子PLC的AQW4
第4个模拟量输出端子AO4,对应于40004,类似于西门子PLC的AQW5
....................
第6个模拟量输出端子AO6,对应于40006
第7个模拟量输出端子AO7,对应于40007
第8个模拟量输出端子AO8,对应于40008
第9个模拟量输出端子AO9,对应于40009
依次类推........
例如:
0~20mA模拟电流输出,当在40001寄存器放数值0时,第1路模拟输出0mA;
当在40001寄存器放数值32767时,第1路模拟输出10mA;
当在40001寄存器放数值65535时,第1路模拟输出20mA;
4~20mA模拟电流输出,当在40001寄存器放数值0时,第1路模拟输出4mA;
当在40001寄存器放数值32767时,第1路模拟输出12mA;
当在40001寄存器放数值65535时,第1路模拟输出20mA;
0~10V模拟电压输出,当在40001寄存器放数值0时,第1路模拟输出0V;
当在40001寄存器放数值32767时,第1路模拟输出5V;
当在40001寄存器放数值65535时,第1路模拟输出10V;
,