上位机通过发MODBUS指令采集F-M100的IO口数据
IO1、IO2、IO3 可设置为数字输入、输出,IO4、IO5可设置为模拟输入,采集4-20mA电流。PC需要下发指令采集IO1、IO2、IO3、IO4、IO5数据。
说明:IO1为数字量输出时寄存器地址:OX50000(功能码05)
IO2为数字量输出时寄存器地址:OX50001
IO3为数字量输出时寄存器地址:OX50002
IO1为数字量输入时寄存器地址:OX20000(功能码02)
IO2为数字量输入时寄存器地址:OX20001
IO3为数字量输入时寄存器地址:OX20002
IO4为模拟量输入时寄存器地址:OX40000(功能码04)
IO5为模拟量输入时寄存器地址:0X40001
模拟量的输入:
1.单线制:传感器的模拟量输出直接接到F-M100模拟量的输入口(IO4/IO5)。
2.两线制: 传感器的模拟量输出的正极接F-M100模拟量的输入口(IO4/IO5),地线接F8114的GND。
数字量的输入:
{C}1. {C}低电平输入:F-M100的GND出来接触点开关的输入,触点开关的输出接到F-M100的开关量输入口(IO1或者IO2或者1O3)。
高电平输入:直接往IO1或者IO2或IO3输出3.3V电压,地线需要接F-M100的GND。
MODBUS设置:
不同的F-M100可以通过设置不同的modbus地址来区分。
IO1、IO2、IO3设置为数字输入,如下图
IO1为数字量输入时寄存器地址:OX20000
IO2为数字量输入时寄存器地址:OX20001
IO3为数字量输入时寄存器地址:OX20002
查询IO1寄存器状态(配置成了数字量输入)
发:01 02 00 00 00 01 B9 CA
回:01 02 01 01 60 48 (IO1高电平)
回:01 02 01 00 A1 88 (IO1低电平)
查询IO2寄存器状态(配置成了数字量输入)
发:01 02 00 01 00 01 E8 0A
回:01 02 01 01 60 48 (IO2高电平)
回:01 02 01 00 A1 88 (IO2低电平)
查询IO3寄存器状态(配置成了数字量输入)
发:01 02 00 02 00 01 18 0A
回:01 02 01 01 60 48 (IO3高电平)
回:01 02 01 00 A1 88 (IO3低电平)
查询IO寄存器状态ModBus指令说明 (如01 02 00 02 00 01 18 0A)
RTU 地址 |
功能码 |
寄存器地址 |
寄存器个数 |
CRC 校验 |
|||
01 |
02 |
00 |
02 |
00 |
01 |
18 |
0A |
回包(01 02 01 01 60 48)
RTU 地址 |
功能码 |
字节数 |
寄存器状态 |
CRC 校验 |
|
01 |
02 |
01 |
01(高电平) |
60 |
48 |
01 |
02 |
01 |
00(低电平) |
A1 |
88 |
IO1、IO2、IO3设置为数字输出,IO4、IO5设置为模拟输入
置IO1寄存器状态(配置成了数字量输出)
发:01 05 00 00 FF 00 8C 3A(设置IO1高电平)
回:01 05 00 00 FF 00 8C 3A
发:01 05 00 00 00 00 CD CA(设置IO1低电平)
回:01 05 00 00 00 00 CD CA
置IO2寄存器状态(配置成了数字量输出)
发:01 05 00 01 FF 00 9C 0A(设置IO2高电平)
回:01 05 00 01 FF 00 9C 0A
发:01 05 00 01 00 00 AC 0A(设置IO2低电平)
回:01 05 00 01 00 00 AC 0A
置IO3寄存器状态(配置成了数字量输出)
发:01 05 00 02 FF 00 2D FA (设置IO3高电平)
回:01 05 00 02 FF 00 2D FA
发:01 05 00 02 00 00 6C 0A(设置IO3低电平)
回:01 05 00 02 00 00 6C 0A
设置寄存器状态ModBus指令说明 (如01 05 00 00 FF 00 8C 3A)
RTU 地址 |
功能码 |
寄存器地址 |
置高 |
CRC 校验 |
|||
01 |
05 |
00 |
00 |
FF |
00 |
8C |
3A |
读取IO4寄存器数据(配置成了模拟量输入)
发:01 04 00 00 00 01 31 CA
回:01 04 02 00 B8 B9 42 (电流输入为4mA)
回:01 04 02 02 B9 79 E2 (电流输入为15mA)
回:01 04 02 03 A3 F9 B9 (电流输入为20mA)
读取IO5寄存器数据(配置成了模拟量输入)
发:01 04 00 01 00 01 60 0A
回:01 04 02 00 B8 B9 42(电流输入为4mA)
回:01 04 02 02 BD 78 21 (电流输入为15mA)
回:01 04 02 03 A8 B8 7E (电流输入为20mA)
读取寄存器数据ModBus指令说明 (如01 04 00 01 00 01 60 0A)
RTU 地址 |
功能码 |
寄存器地址 |
寄存器个数 |
CRC 校验 |
|||
01 |
04 |
00 |
01 |
00 |
01 |
60 |
0A |
回包 (01 04 02 00 B8 B9 42)
RTU 地址 |
功能码 |
字节数 |
采集值 |
CRC 校验 |
||
01 |
04 |
02 |
04 |
B8 |
B9 |
42 |
电流换算公式:3.3/1023 *采集值/150 *1000= (mA)
电压换算公式:3.3/1023 *采集值/12.1*20.16= (V)
(采集值需转换成十进制)