1、ModbusTCP通讯协议Modbus TCP通讯协议一、 适用范围及默认规范此Modbus TCP协议适用于 EIO、ADC系列产品。协议中所有数值如无特殊说明,均为 16 进制。 Modbus浮点数为标准的 IEEE 格式, Modbus 32 位长整数据为 4 字节无符号整数( unisigned long )组态软件支持此 Modbus TCP协议,可以直接使用。二、 读开关量输入1.功能码、寄存器地址、偏移功能码: 01地址:两个地址,分别用于读入全部开关量状态或单独读一路开关量输入状态。描述如下。0A - 读全部开关量输入状态。3C - 读第 1 路开关量输入状态,递增 1 为下一
2、路,如 3D 为第二路。以此类推。地址偏移:可为任意值,建议为 0000。在使用组态软件时,正确填写地址,地址偏移填写任意值即可。2. Modbus TCP格式(网口)读全部开关量输入状态发送报文: 0000000000 06 01 01000A0001读第 1 路开关量输入状态发送报文: 0000000000 06 01 01 003C000000 00 00 00 00 :Modbus TCP报文头,简化为全 0 即可。使用组态软件时,自动设置。6:剩余数据长度,说明还剩 6 个字节等待接收。使用组态软件时,自动设置。01 :子设备 ID。Modbus TCP忽略。01 :Modbus T
3、CP 功能码 0100 0A 或00 3C :寄存器地址,高位字节在前,低位字节在后。00 00 :寄存器地址偏移,设备忽略此数据,只设置寄存器地址即可工作,设置成0000 即可。读全部开关量输入状态应答报文: 00 00 00 00 00 04 01 01 01 42读一路开关量输入状态应答报文: 00 00 00 00 00 04 01 01 01 0100 00 00 00 00 :Modbus TCP报文头,简化为全 0 即可。使用组态软件时,自动设置。4:剩余数据长度,说明还剩 4 个字节等待接收。使用组态软件时,自动设置。01 :子设备 ID。Modbus TCP忽略。01 :Mo
4、dbus TCP 功能码 011:返回字节数, 1 个字节的 8 个 bit 对应 8 路输入,接通 / 低电平时,对应的bit 置 1,否则置 0。8 路输入设备返回 01, 16 路输入设备返回 02,以此类推。42或01 :对于读全部开关量输入状态报文, 此处为开关量输入状态字节, bit0对应 input1 ,接通 / 低电平为 1,否则为 0。此处为 0100 0010,说明 Input2 、Input7为接通或低电平状态。其他为断开或高电平状态。对于读一路开关量输入状态报文,此字节为 01 说明为接通 / 低电平状态, 00 为断开/ 高电平状态。三、 读模拟量、温湿度输入(保持寄
5、存器)1.功能码、寄存器地址、偏移功能码: 03地址:不同类型及格式的模量输入,具体描述如下。29- 读温湿度及传感器状态,特殊编程格式,不支持组态软件。2A - 读温度值,地址偏移可以为任意值,建议设置为 0000。标准 Modbus 浮点数格式,支持组态软件。2B - 读湿度,地址偏移可以为任意值,建议设置为 0000。标准 Modbus 浮点数格式,支持组态软件,2C - 读露点,地址偏移可以为任意值,建议设置为 0000。标准 Modbus 浮点数格式,支持组态软件。46- 读模指定路数的模数通道值,地址偏移指出要读取的几路输入,最小为 1,最大为设备支持的模数输入路数。标准 Modb
6、us浮点数格式,支持组态软件。47- 一次读取全部输入通道的模数值,地址偏移为任意值,建议设置为 0000,标准 Modbus浮点数格式,支持组态软件。50- 读第 1 路模数值,递增 1(如 51)为第 2 路,以此类推最大为 50+设备最大模拟量输入路数,地址偏移为任意值,建议设置为 0000。标准 Modbus 浮点数格式,支持组态软件。地址偏移:参照寄存器说明设置。2. Modbus TCP格式(网口)读专用格式温湿度输入发送报文: 000000000006010300290001读标准格式温度输入发送报文: 0000000000060103002A0000读第 1 路模拟量输入发送报
7、文: 000000000006010300500000一次读 2 路模拟量输入发送报文: 000000000006010300460002一次读所有模拟量输入发送报文: 00000000000601030047000000 00 00 00 00 :Modbus TCP报文头,简化为全 0 即可。使用组态软件时,自动设置。6:剩余数据长度,说明整个报文还剩 6 个字节。使用组态软件时,自动设置。01 :子设备 ID。Modbus TCP忽略。03 :Modbus TCP 功能码 030029 :寄存器地址,高位字节在前,低位字节在后。参考寄存器地址说明。0000 :寄存器地址偏移,参考寄存器地
8、址说明读 专 用 格 式 温 湿 度 输 入 应 答 报 文 : 000000000008 010305读标准格式温度输入应答报文: 000000000007010304412828F4读第 1 路模拟量输入应答报文: 00000000000701030400040879读 2 路模拟量输入应答报文:00000000000B010308000408C600079F2C读所有模拟量输入应答报文:00000000000F01030C0004077D00079FF40000077300 00 00 00 00 :Modbus TCP报文头,简化为全 0 即可。使用组态软件时,自动设置。8:剩余数据长
9、度,此处说明还剩 8 个字节等待接收。使用组态软件时,自动设置。 0B 还剩 11 个字节, 0F 还剩 15 个字节。01 :子设备 ID。Modbus TCP忽略。03 :Modbus TCP 功能码 035:结果数据长度,由发送报文的寄存器地址决定。例如, 05 为 5 个有效数据字节。 04 为4 个字节,一个模数通道或标准浮点数(温湿度)值用4 个字节,所以返回1 个通道值用4 个字节。08 为2 个通道模数值8 个字节。、412828F4 或00040879 :温湿度或模数值。描述如下。:非标准格式温湿度值。 第 1 个字节为温度整数,第2 个字节为温度小数。温度整数为10,小数为
10、25,温度值为:16.37摄氏度。第1 个字节为湿度整数,第2 个字节为湿度小数。湿度整数为2A,小数为3B,湿度值为 42.56%。传感器状态字节: 0- 传感器正常,温湿度值有效。其他值为传感器错误,温湿度值无效。412828F4 :温度、湿度、露点数据, Modbus浮点数格式。00040879 :模数采样结果值, Modbus 32 位长整数据。四、 单独设置一个开关量 /TTL 输出状态1.功能码、寄存器地址、偏移功能码: 05地址: 1E 至 1E 加设备最大输出路数( 0 起),例如第 1 路为 1E,第 8 路为 25。地址偏移:此功能码不需要地址偏移。控制数据: FF00-接
11、通或为低电平, 0000- 断开或高电平2. Modbus TCP格式(网口)设置第 8 路输出为接通或 TTL 为低电平报文:00 00 00 00 000601050025FF0000 00 00 00 00 :Modbus TCP报文头,简化为全 0 即可。使用组态软件时,自动设置。6:剩余数据长度,说明整个报文还剩 6 个字节。使用组态软件时,自动设置。01 :子设备 ID。Modbus TCP忽略。05 :Modbus TCP 功能码 050025:寄存器地址,高位字节在前,低位字节在后。第8 路=1E+07=25FF00:将第 8 路输出设置为接通或低电平。 0000 为断开或高电
12、平。如果设备正确执行了指令,将原样返回接收到的报文,应答报文: 00 00 00 00000601050025FF00五、 设置多个开关量 /TTL 输出状态1.功能码、寄存器地址、地址偏移功能码: 0F地址: 64控制路数(地址偏移):1 至最大路数的输出2. Modbus TCP格式(网口)设置全部 8 路输出为接通 / 设置 TTL 为低电平报文:000000000008010F0064000801FF00 00 00 00 00 :Modbus TCP报文头,简化为全 0 即可。使用组态软件时,自动设置。8:剩余数据长度,说明整个报文还剩 8 个字节。使用组态软件时,自动设置。01 :
13、子设备 ID。Modbus TCP忽略。0F :Modbus TCP 功能码 0F0064 :寄存器地址,高位字节在前,低位字节在后。0008 :同时设置 8 路输出状态。1:控制数据字节个数FF:控制数据字节, 1 个字节控制 8 路输出,字节中置 1 位对应的开关量输出将控制为接通或低电平状态。如 bit0=1 ,Outuput1 为接通或低电平状态。 FF 为设置所有 8 个通道全部接通或低电平状态。如果设备正确执行了指令,将原样返回接收到的报文,应答报文:000000000008010F0064000801FF六、 读开关量输出状态1.功能码、寄存器地址、偏移此报文使用第一节的 01
14、功能码,地址不同。功能码: 01地址: 64 地址偏移:小于最大输出路数即可,建议为 0000。在使用组态软件时,正确填写地址,地址偏移填写任意值即可。2. Modbus TCP格式(网口)读开关量输入发送报文: 00000000000601010064000000 00 00 00 00 :Modbus TCP报文头,简化为全 0 即可。使用组态软件时,自动设置。6:剩余数据长度,说明还剩 6 个字节等待接收。使用组态软件时,自动设置。01 :子设备 ID。Modbus TCP忽略。01 :Modbus TCP 功能码 0100 64 :寄存器地址,高位字节在前,低位字节在后。00 00 :
15、为 00设备应答报文: 00 00 00 00 00 04 01 01 01 D500 00 00 00 00 :Modbus TCP报文头,简化为全 0 即可。使用组态软件时,自动设置。4:剩余数据长度,说明还剩 4 个字节等待接收。使用组态软件时,自动设置。01 :子设备 ID。Modbus TCP忽略。01 :Modbus TCP 功能码 0101 :返回字节数, 1 个字节的 8 个 bit 对应 8 路输出,接通 / 低电平时,对应的bit 置 1,否则置 0。8 路输出设备返回 01, 16 路输入设备返回 02,以此类推。D5 :开关量输入状态字节, bit0 对应 Output
16、1 ,接通 / 低电平为 1,否则为 0。此处为 11010101,说明 Output1 、Output3 、Output5 、Output7 、Output8 为接通或低电平状态。其他为断开或高电平状态。输出状态为设备保存的值,如果硬件损坏,这个值将无法反映输出的实际情况。七、 组态软件设置,以组态王为例1.设备定义使用京金华、莫迪康或其他厂家的通用型 ModbusTCP驱动即可。2.开关量输入数据类型: bit第一路输入寄存器为 061第二路输入寄存器为 062以此类推3.开关量输出数据类型: bit使用单独读取一路开关量输入报文。第一路输输出寄存器为 031第二路输入寄存器为 032以此类推4.定义温湿度变量s数据类型: float使用 Modbus标准格式寄存器,读第一路温度值寄存器为 90043读第一路湿度值寄存器为 90044读第一路露点值寄存器为 900455.定义模拟量变量定义第一路模拟量输入,寄存器为: 90081定义第二路模拟量输入,寄存器为: 90082
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1