MITUTOYO/三丰 品牌
经销商厂商性质
苏州市所在地
4路光栅尺磁栅尺编码器5MHz高速差分信号转RS485/232/WiFi模块
产品特点:
●光栅尺磁栅尺解码转换成标准Modbus RTU协议
●光栅尺5V差分信号直接输入,4倍频计数
●模块可以输出5V的电源给光栅尺供电
●高速光栅尺磁栅尺计数,频率可达5MHz
●支持4个光栅尺同时计数,可识别正反转
●也可以设置作为8路独立DI高速计数器
●编码器计数值支持断电自动保存
●DI输入和RS485/232通信接口之间1000V隔离
●通过RS-485/232接口可以清零和设置计数值
●宽电源供电范围: 8 ~ 32VDC
●可靠性高,编程方便,易于应用
●标准DIN35导轨安装,方便集中布线
●用户可编程设置模块地址、波特率等
●外形尺寸:120mmx70mmx43mm
典型应用:
●光栅尺磁栅尺长度测量
●流量计脉冲计数或流量测量
●生产线产品计数
●数控机床位置数据测量
●编码器信号远传到工控机
●智能工厂与工业物联网
●替代PLC直接传数据到控制中心
产品概述:
IBF677产品实现传感器和主机之间的信号采集,用来解码光栅尺磁栅尺编码器信号。IBF677系列产品可应用在RS-232/485总线 工业自动化控制系统,自动化机床,工业机器人,三坐标定位系统,位移测量,行程测量,角度测量,转速测量,流量测量,产品计数等等。
产品包括信号隔离,脉冲信号捕捉,信号转换和RS-485串行通信。每个串口可接255只IBF677系列模块,通讯方式采用ASCI码通讯协议或MODBUS RTU通讯协议,波特率可由代码设置,能与其他厂家的控制模块挂在同- -RS-485总线上,便于计算机编程。
IBF677系列产品是基于单片机的智能监测和控制系统,所有的用户设定的地址,波特率,数据格式,奇偶校验等配置信息都储存在非易失性存储器EEPROM里。
IBF677系列产品按工业标准设计、制造,信号输入/输出之间不隔离,抗干扰能力强,可靠性高。工作温度范围- 45°C~ +85°C。
功能简介:
IBF677远程I/O模块,可以用来测量四路编码器信号,也可以设置作为八路独立计数器
1、信号输入
4路编码器5V差分信号输入或8路5V差分信号独立计数器。
2、通讯协议
通讯接口: 1 路标准的RS-485通讯接口或1路标准的RS-232通讯接口,订货选型时注明。
通讯协议:支持两种协议,命令集定义的字符协议和MODBUSRTU通讯协议。模块自动识别通讯协议,能实现与多种品牌的PLC、RTU或计算机监控系统进行网络通讯。
数据格式: 10位。1位起始位,8位数据位,1位停止位。无校验。
通讯地址(0~255)和波特率(2400、 4800、9600、19200、 38400、57600、115200bps) 均可设定;通讯网络距离可达1200米,通过双绞屏蔽电缆连接。
通讯接口高抗干扰设计,+15KV ESD保护,通信响应时间小于100mS。
3、WiFi 通讯协议
通讯接口: WiFi 网络接口。可以连接到局域网里的WiFi,再连接到以太网。
通讯协议:支持MQTT协议,可以连接阿里云,腾讯云,华为云,中移物联OneNET,私有云等等各种MQTT服务器。也可以采用MODBUS TCP协议,实现工业以太网数据交换。
同时也支持TCP/UDP/WebSocket等通讯协议。
网络缓存: 2K Byte (收与发都是)
通信响应时间:小于10mS。
4、抗干扰
可根据需要设置校验和。模块内部有瞬态抑制二极管,可以有效抑制各种浪涌脉冲,保护模块,内部的数字滤波,也可以很好的抑制来自电网的工频干扰。
产品选型:
选型举例1:型号: IBF677- 485-WiFi-N 表示输出为RS-485接口, WiFi内置天线
选型举例2:型号: IBF677- -232-WiFi-W 表示输出 为RS-232接口,WiFi外置天线
选型举例3:型号: IBF677- -485-WiFi-X . 表示输出为RS-485接口, WiFi吸盘天线
IBF677通用参数:
(typical @ +25°C,Vs为24VDC)
输入类型: 5V 差分信号输入。差分信号范围+200mV ~+7V。
频率范围0-5MHz (所有通道同时输入)。
编码器计数范围- 2147483647~ +2147483647,采用4倍频计数,断电自动保存
DI计数器范围0~4294967295,断电自动保存
通 讯1:协议RS-485 或RS-232
标准字符协议和MODBUS RTU通讯协议
波特率(2400、 4800、 9600、19200、 38400、57600 、115200bps) 可网页设置
地址(0~255)可网页设置
通 讯2:MQTT通讯协议或者MODBUS TCP通讯协议或TCP/UDP
通讯响应时间: 100ms大
工作电源:+8~32VDC宽供电范围,内部有防反接和过压保护电路
功率消耗:小于1W
工作温度:- 45 ~ +80°C
工作湿度:10~90%(无凝露)
存储温度:-45~+80°C
存储湿度:10 ~ 95% (无凝露)
隔离耐压:DI输入和电源共地,和通讯接口之间1000V 隔离。
外形尺寸:120mmX70mmx43mm
引脚定义:
1,让模块进入AP模式 (1)接通电源,将模块的侧面的开关拨到初始化位置。 (2)打开手机“无线局域网”或者 “设置- + WLAN",找到WiFi名称为“wifi8"的WiFi进行连接。 | |
此模块出厂密码为: 12345678,然后“加入” | |
2,进入模块网页。 连接上模块的 WiFi 后,稍等几秒后会自动跳转到模块的内置网页,如左图所示。如果手机无法自动跳转,也可以打开手机浏览器,输入地址 192.168.4.1 登录。点击配置模块参数链接可以进入配置界面 | |
3,配置模块 DI参数 请根据实际需要修改以下参数: (1) AOBO~A3B3 输入计数模式: 计数模式 0: 编码器 AB 信号输入; 计数模式 1: 两路独立的计数器输入: 请根据实际输入的传感器填写,光栅尺磁栅尺请选择编码器 AB 信号输入。 (2)编码器 0~3 每转脉冲数: 编码器的每转脉冲数如果需要测量转速,请根据实际参数设置。模块将自动换算每分钟转速。 (3)编码器 0~3 脉冲倍率:设置每个脉冲对应的实际值,默认为 1,实际的工程值按这个值和实际 4倍频脉冲数换算得到。例如每个脉冲是0.005mm,可以设置为 0.005, 那么实际工程值就是 0.005*脉冲数。 (4)DI 计数边沿: 可设置不同的边沿触发计数,0表示上升沿计数,1 表示下降沿计数。正常使用使用默认的上升沿计数就行。 | |
(5)AO~B3 每转脉冲数: DI 的每转脉冲数,如果需要测量转速,请根据实际参数设置。模块将自动换算每分钟转速。 (6)AO~B3 滤波时间:取值范围是 0到65535如果是 0,代表不滤波: 其他值代表滤波的时间单位是 mS(毫秒)。如果 DI 输入点是机械开关或者是机械继电器,建议设置滤波时间为20mS。 (7)AO~B3 脉冲倍率:设置每个脉冲对应的实际值默认为 1,实际的工程值按这个值和实际脉冲换算得到。例如每个脉冲是 0.005mm,可以设置为 0.005,那么实际工程值就是 0.005*脉冲数。 | |
4,配置模块 RS485/232 参数 请根据实际需要修改以下参数: (8)模块地址:模块的通讯ID,默认是 1。 (9)模块波特率:模块通讯的波特率,默认是 9600 (10)模块的奇偶校验:默认是无校验。 5,配置模块 WiFi 参数 请根据实际需要修改以下参数: (11) WiFi 账号: 连接此地覆盖的 WiFi。 (12)WiFi 密码: 填入 Wii 的密码如果已经连接不用重复输入。 (13)工作方式: 选择工作模式,根据实际应用填写可选 TCP Server,TCP Client,UDP,MODBUSTCP,Websocket 等等 (14)本地 I P设置: 如果只是用 MOTT 协议,可以设置为自动获取 IP。如果要 Modbus TCP 或者网页访问数据,建议手动设置成固定 IP,方便通过IP 地址和模块通讯。 (15)IP 地址: 设置模块的 IP 地址,必须是当前 WiFi所在的网段,且不要和局域网内其他设备的 IP地址相同。例如: Wii 路由器的 IP 是192.168.0.1,那么可以设置模块的 IP 为192.168.0.7 (16)默认网关: 模块的网关,填当前 WiFi 路由器的IP 地址。例如: WiFi 路由器的 I 是 192.168.0.1,填写这个 IP 地址就行 (17)子网掩码: 模块的子网掩码,如果没有跨网段填默认值 255.255.255.0 即可 (18)本地端口: 模块的通讯端口,MODBUS 通讯般用 502 端口。 (19远程服务器 I 地址:远程服务器 I,TCPClient 和 UDP 需要连接的服务器。 (20)远程服务器端口:服务器的端口。 (21)自动上报时间间隔:模块定时上报数据的时间间隔,设置为 0 表示不自动上报数据。 (22)计数变化自动上报: 计数有变化就上报一条数据,只可以用在数据变化非常慢的场合,否则会发送大量数据。 (23)模块名称: 用户自定一个模块的名称,用于区分不同的模块。 (24) MOTT 设置:如果用到 MOTT 通讯,则需要打开 MOTT 功能。(25)MQTT服务器地址: 填写MOTT服务器的地址例如: brokeremqx.io 如果是本地服务器 P 为 192.168.0.100,可以写192.168.0.100 (26)MOTT Client ID,用户名,密码,端口,发布主题,订阅主题等参数请按 MQTT 服务器的要求来填写。MQTT 的 QoS 为 0,不可修改。 (27)MQTT 发布时间间隔: 模块自动发布数据给MQTT 服务器的时间间隔,单位是 ms。设置为0 表示取消定时发布功能。 6,保存参数 参数设置完成后,点击保存并重启按钮,模块将保存参数,并自动重启,然后将模块的侧面的开关拨到正常位置,模块将按设置好的参数工作。 | |
7,网页在线查看数据 在模块的主页上点击在线查看数据链接可以进入数据查看界面。如左图所示 如果模块的 P 地址是 192.168.0.5,用户也可以通过访问链接 192.168.0.5/readData 来获取 Json 格式的数据。 DI 状态表示输入的电平状态, 脉冲计数器为测量到的脉冲累计数。 脉冲频率为每秒的脉冲数 脉冲时间间隔为的两次脉冲之间的时间间隔单位为 (秒) 实际工程值由脉冲计数器的值乘以网页上设置的脉冲倍率得到。用于自动换算实际的流量,长度,产量等数据。 转速由频率和每转脉冲数换算得到。用于自动换算实际的每分钟转速。 清零计数值可以写 0 到表格,然后点击设置,计数值就会清零。也可以设置其他数值,用于修改计数值。 | |
8,批量设置参数 在模块的主页上点击 Json 批量配置链接可以进入批量设置界面。如左图所示 数据必须是标准的 Json 格式,可以设置全部参数,也可以只设置部分参数。 如果要设置的产品比较多,通过批量设置可以节省时。 填写完成后点击按钮 Save Json data 即可。 举例 1: 只修改 WiFi 账号密码可以发送: 〔"WifiSsid"."w", "WifPassword":"12345678", "setIp". 1, "ipAddress": "192.168.0.5", "gateway": "192.168.0.1" "netmask": "255.255.255.0"〕 举例 2:只修改 MQTT 参数可以发送: 〔 "setMOTT": 1. "mgttHostUrl". "broker.emqxio" "port": 1883, "clientld": "mqtt test 001", "username"", "passwd"", "topic": "mqtt_topic_001", "pubTime": 2000, "pubonchange": 0 〕 | |
9,局域网上也可以打开模块网页 如果模块已经连接上了当地的wifi,可以在电脑或手机浏览器中输入模块IP,例如:192.168.0.5.可打开模块网页(前提是电脑IP或手机IP与模块在相同网段,登陆网页要根据当前模块的IP地圳来登陆操作),即可进入模块内部网页。也可以配置模块或者读取模块的数据,操作方法与上面表格是一样的。 |
字符通讯协议:
以下命令是按模块的地址为默认的 01 发送的,如果修改了模块地址,请把 01 改成新的地址。
RS485.RS232.WiFi的 TCP/UDP 通讯都可以采用以下通讯协议。
RS485/RS232通讯:出厂默认的地址为01,波特率为 9600,无奇偶校验。如果忘记地址和波特率,可以把开关拨到初始化位置,模块会进入配置模式,地址为01,波特率为 9600,无奇偶校验。可以通过手机连接 WiFi查看参数或重新配置参数,也可以发送配置命令修改参数。设置完成请把开关拨到正常位置。
WiFi 通讯:如果要设置 WF 账号和密码以及其他参数,可以把开关拨到初始化位置,模块会进入 AP 配置模式手机连接模块产生的 wif8 名称的 AP 即可进入配置界面。设置完成请把开关拨到正常位置。
MOTT 协议:连接成功后,向模块的 MOTT 订阅主题发送命令,回复的数据显示在模块的 MOTT 发布主题上.
TCP Server,TCP Client,UDP Mode,Web Socket等工作方式下:连接成功后,可以发送命令和接收数据
WiFi 通讯如果设置了自动上报,上报的数据格式与(1、读取数据命令)的回复格式相同。
1、读取数据命令
发送: #01 (WiFi通讯,如果设置了定时自动上报,就不用发送命令,模块会定时上报数据)
回复:
"devName":"EC6260835FBC"."time".3908582."diMode":0.1.1.1 ."distate":1.1.1.1.1.0.11 ."enCounter":0.0.0.0."enFrequency": 0.0.0.0 ."enActualData": 0.0.0.0 . enSpeed":0.0.0.0 . diC ounter": 0.0.0.0.0.0.0.0 ."diFrequency":0.0.0.0.0.0.0.01."diActualData": 0.0.0.0.0.0.0.01."diSpeed":0.0.0.0.0.0.0.012
格式说明:
编码器数据按通道0~3 顺序排列:独立DI数据按A0BO~A3B3 顺序排列
"devName“模块名称,可以根据需要在网页上修改
"time"模块内部时间,单位mS
"diMode"模块计数模式。计数模式0:编码器 AB 信号输入:计数模式1: 两路独立的计数器输入
"diS tate"DI状态表示输入的电平状态。
”enCounter "编码器计数器测量到的脉冲累计数,脉冲计数采用的是 4 倍频计数法。 (计数模式 0)
“enFrequency”编码器脉冲频率为每秒的脉冲数。(计数模式 0)
“enActualData”编码器实际工程值由编码器脉冲计数器的值乘以网页上设置的脉冲倍率得到。用于自动换算实际的流量,长度,产量等数据。 (计数模式 0)
“enSpeed "编码器转速由编码器频率和每转脉冲数换算得到。用于自动换算实际的每分钟转速或流量等.(计数模式 0)
”diCounter "独立计数器测量到的脉冲累计数。 (计数模式 1)
“diFrequency”脉冲频率为每秒的脉冲数。 (计数模式1)
“diActualData”实际工程值由脉冲计数器的值乘以网页上设置的脉冲倍率得到。用于自动换算实际的流量,长度,产量等数据。(计数模式 1)
"diSpeed "转速由频率和每转脉冲数换算得到。用于自动换算实际的每分钟转速。 (计数模式 1)
也可以读单组数据,例如读取编码器计数器
发送: #01>enCounter
回复:!"enCounter":[0,0.0.0];
例如读取编码器实际工程值:
发送: #01>enFrequency
回复:"enFrequency":[0.0.0.0]
读取其他参数发送对应的参数字符即可
2、设置编码器0~3 计数值命令
设置编码器 0~3 计数值可以是 0或者其他数值,可以清零或者修改计数值。
发送: $0l!"setEn0Count":0."setEnlCount":0."setEn2Count":0."setEn3Count":0?
或$0l!"setEn0Count":666."setEnlCount":777."setEn2Count":888."setEn3Count":999;
只设置单个通道: S0l"setEn0Count":0?
同时设置一个相同的值给所有通道: SOl"setAlIDICount":0?
回复:!01(cr) 表示设置成功;? 01(cr) 表示命令错误
3设置脉冲计数器A0~B3 计数值命令
设置脉冲计数器 AO~B3 的值,可以是 0 或者其他数值,可以清零或者修改计数值。
发送:$01$"setA0Count":0."setB0Count":0. "setA1Count":0."setBICount":0, "setA2Count":0."setB2Count":0'setA3Count":0."setB3Count":0?
或$0lg"setA0Count":1000."setB0Count":2000.'setA 1Count":3000."setB 1Count":l. "setA2Count":2."setB2Count":3. "setA3Count":999."setB3Count":888
只设置单个通道: SOl!"setAOCount":0
同时设置一个相同的值给所有通道: SOl"setAlIDICount":01
回复:!01(cr) 表示设置成功:? 01(cr) 表示命令错误
4、读取配置命令
读取模块的配置参数,也可以在网页里直接查看
发送: %01ReadConfig
回复:
("enPluse":1.1.1.1j"enZoom": 1..1.1 "diMode":0.1.11 ."diEdge":1.1.1.1.1.1.1."diPluse": 1.1.1.1.1.1.1.11"diFier":(0.0,0.0.0,0,0,0)."diZoom":[1,1,1,1,1.1.1."saveData":1."D":1."Baud":115200"Check":1"WifiSsid"."w"" wifiPassword"."12345678"."workmode":0."setlp":1."ipAddress"."192.168.0.15"."gateway"." 192.168.0.1"."netmask"."255.255255.0" "localPort".23 "remoteerverlp"."192.168.0.165" "remotePort".23."send Time".2147483647."devName":"EC6260835FBC"."setMOTT":0"mgttHostUrl"."."port":1883,"clientld"."."username".""."passwd"."" "topic"."."pubTime":2000."subtopic"."
5、设置配置命令
设置模块的配置参数,也可以在网页里直接设置。可以设置全部参数或者部分参数,设置完模块会自动重启
发送:%01 WriteConfig?"enPluse":1.1.1.11."enZoom":1.1.1. ."diMode":0.1.1.1"diEdge":1.1.1.1.1.1.1.1 ."diPluse":1.1.1.1.1.1.1l."diFilter":0.0.0.0.0.0.0.0 ,"diZom": 1,1.1,1,1,1,1,1 ,"saveData":1."D":1,"Baud":115200 "Check":1."wifiSsid":"w"."WifiPassword""12345678"."workmode":0,"setlP":1."ipAddress"."192.168.0.15"."gateway":"192.168.0. 1"."netmask"."255.255.255.0"."localPort":23."remoteServerlp"." 192.168.0.165"."remotePort".23."sendTime":2147483647."deName":"EC6260835FBC"."setM0TT"0."mgtHostUrl"." "port":1883."clientld"." "username"."m "passwd".m."topic".'"."pubTime":2000."subtopic"."
也可以只设置单个参数,例如修改波特率: %01WriteConfig!"Baud":115200!
例如设置断电不保存计数值: %01WriteConfig"saveData":0?
回复:!01(cr) 表示设置成功:?01(cr) 表示命令错误
Modbus通讯协议:
RS485/RS232通讯:支持Modbus RTU协议,出厂默认的地址为01,波特率为9600,无奇偶校验。如果忘记地址和波特率,可以把开关拨到初始化位置,模块会进入配置模式,地址为 01,波特率为 9600,无奇偶校验。可以通过手机连接 WiFi 查看参数或重新配置参数,也可以发送配置命令修改参数。设置完成请把开关拨到正常位置。
WiFi通讯:支持 Modbus TCP 协议。如果要设置 WiFi 账号和密码以及其他参数,可以把开关拨到初始化位置模块会进入 AP 配置模式,手机连接模块产生的 wifi8 名称的 AP 即可进入配置界面。设置完成请把开关拨到正常位置。
Modbus RTU通讯协议和Modbus TCP通讯协议的寄存器表格如下:
支持功能码01
支持功能码 03.06.16
Modbus RTU 通讯举例:
03(0x03)读保持寄存器
假如模块地址为01,以16 进制发送: 01 03 00 00 00 02 C4 0B ,即可取得寄存器的数据。
01 | 03 | 00 | 00 | 00 | 02 | C4 | 0B |
模块IP | 读寄存器 | 地址高位 | 地址低位 | 数量高位 | 数量低位 | CRC 校验低位 | CRC 校验高位 |
假如模块回复:01 03 04 CA 90 FF FF C4 76 即读到的数据为0XFFFFCA90,换成10 进制为-13680,即表明现在编码
器0的计数值为-13680
01 | 03 | 04 | CA | 90 | FF | FF | C4 | 76 |
模块IP | 读寄存器 | 字节数 | 1高位 | 1低位 | 2高位 | 2低位 | CRC 校验低位 | CRC 校验高位 |
假如模块地址为 01,以16 进制发送: 01 03 00 64 00 02 85 D4,即可取得寄存器的数据
01 | 03 | 00 | 64 | 00 | 02 | 85 | D4 |
模块IP | 读寄存器 | 地址高位 | 地址低位 | 数量高位 | 数量低位 | CRC 校验低位 | CRC 校验高位 |
假如模块回复: 01 03 04 CA 90 FF FF C4 76 即读到的数据为 0xFFFFCA90,换成 10 进制为 4294953616,即表明现在
通道 A0的计数值为4294953616。
01 | 03 | 04 | CA | 90 | FF | FF | C4 | 76 |
模块IP | 读寄存器 | 字节数 | 1高位 | 1低位 | 2高位 | 2低位 | CRC 校验低位 | CRC 校验高位 |
06(0x06)写单个寄存器
假如模块地址为01,以16 进制发送: 01 06 00 43 00 0A F8 19 ,即清零编码器0 的计数值
01 | 06 | 00 | 43 | 00 | 0A | F8 | 19 |
模块IP | 写单个寄存器 | 地址高位 | 地址低位 | 数量高位 | 数量低位 | CRC 校验低位 | CRC 校验高位 |
假如模块回复:01 06 00 43 00 0A F8 19即表示设置成功,编码器0的计数值修改为0.
01 | 06 | 00 | 43 | 00 | 0A | F8 | 19 |
模块IP | 写单个寄存器 | 地址高位 | 地址低位 | 数量高位 | 数量低位 | CRC 校验低位 | CRC 校验高位 |
Modbus TCP 通讯举例:
01(0x01)读线圈
在一个远程设备中,使用该功能码读取线圈的1 至2000 连续状态。请求PDU详细说明了起始地址,即第一个线圈地址和线圈编号。从零开始寻址线圈。因此寻址线圈1-16 为0-15。
根据数据域的每个位(bit)将响应报文中的线圈分成为一个线圈。指示状态为I= ON 和= OFF。第一个数据作为字节的LSB(有效位),后面的线圈数据依次向高位排列,来组成8位一个的字节。如果返回的输出数量不是八的倍数,将用零填充最后数据字节中的剩余位(bit) (一直到字节的高位端)。字节数量域说明了数据的完整字节数
功能码01举例:
请求 | 响应 | ||||
字段名称 | 十六进制 | 字段名称 | 十六进制 | ||
MBAP报文头 | 传输标识 | 01 | MBAP报文头 | 传输标识 | 01 |
00 | 00 | ||||
协议标志 | 00 | 协议标志 | 00 | ||
00 | 00 | ||||
长度 | 00 | 长度 | 00 | ||
06 | 04 | ||||
单元标识符 | 01 | 单元标识符 | 01 | ||
功能码 | 01 | 功能码 | 01 | ||
起始地址 Hi | 00 | 字节数 | 01 | ||
起始地址 Lo | 20 | 输出数据 | 00 | ||
输出数量 Hi | 00 | ||||
输出数量 Lo | 08 |
03(0x03)读保持寄存器
在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。请求PDU说明了起始寄存器地址和寄存器数量。从零开始寻址寄存器。因此,寻址寄存器1-16 为0-15。在响应报文中,每个寄存器有两字节,第一个字节为数据高位,第二个字节为数据低位。
功能码03 举例:
请求 | 响应 | ||||
字段名称 | 十六进制 | 字段名称 | 十六进制 | ||
MBAP报文头 | 传输标识 | 01 | MBAP报文头 | 传输标识 | 01 |
00 | 00 | ||||
协议标志 | 00 | 协议标志 | 00 | ||
00 | 00 | ||||
长度 | 00 | 长度 | 00 | ||
06 | 05 | ||||
单元标识符 | 01 | 单元标识符 | 01 | ||
功能码 | 01 | 功能码 | 03 | ||
起始地址 Hi | 00 | 字节数 | 02 | ||
起始地址 Lo | 20 | 寄存器值Hi | 00 | ||
寄存器编号Hi | 00 | 寄存器值Lo | 00 | ||
寄存器编号Lo | 01 |
05(0x05)写单个线圈
在一个远程设备上,使用该功能码写单个输出为ON 或OFF。请求PDU说明了强制的线圈地址。从零开始寻址线圈。因此,寻址线圈地址1为0。线圈值域的常量说明请求的ON/OFF 状态。十六进制值0XFFOO请求线圈为ON。十六进制值0x0000请求线圈为OFF。其它所有值均为非法的,并且对线圈不起作用。
正确的响应应管是和请求一样的。
功能码05举例:
请求 | 响应 | ||||
字段名称 | 十六进制 | 字段名称 | 十六进制 | ||
MBAP报文头 | 传输标识 | 01 | MBAP报文头 | 传输标识 | 01 |
00 | 00 | ||||
协议标志 | 00 | 协议标志 | 00 | ||
00 | 00 | ||||
长度 | 00 | 长度 | 00 | ||
06 | 06 | ||||
单元标识符 | 01 | 单元标识符 | 01 | ||
功能码 | 05 | 功能码 | 05 | ||
输出地址 Hi | 00 | 输出地址 Hi | 00 | ||
输出地址 Lo | 00 | 输出地址 Lo | 00 | ||
输出值Hi | FF | 输出值Hi | FF | ||
输出值Lo | 00 | 输出值Lo | 00 |
06(0x06)写单个寄存器
在一个远程设备中,使用该功能码写单个保持寄存器。请求PDU说明了被写入寄存器的地址。从零开始寻址寄存器。因此,寻址寄存器地址1为0。
正确的响应应答是和请求一样的。
功能码06举例:
请求 | 响应 | ||||
字段名称 | 十六进制 | 字段名称 | 十六进制 | ||
MBAP报文头 | 传输标识 | 01 | MBAP报文头 | 传输标识 | 01 |
00 | 00 | ||||
协议标志 | 00 | 协议标志 | 00 | ||
00 | 00 | ||||
长度 | 00 | 长度 | 00 | ||
06 | 06 | ||||
单元标识符 | 01 | 单元标识符 | 01 | ||
功能码 | 06 | 功能码 | 06 | ||
寄存器地址 Hi | 00 | 寄存器地址 Hi | 00 | ||
寄存器地址 Lo | 00 | 寄存器地址 Lo | 00 | ||
寄存器值Hi | 00 | 寄存器值Hi | 00 | ||
寄存器值Lo | FF | 寄存器值Lo | FF |
15(0x0F)写多个线圈
在一个远程设备上,使用该功能码写多个输出为ON 或OFF。请求PDU说明了强制的线圈地址。从零开始寻址线圈。因此,寻址线圈地址1为0。线圈值域的常量说明请求的ON/OFF 状态。数据由16进制换算成二进制按位排列,位值为1请求线圈为ON,位值为0请求线圈为OFF。
功能码15举例:
请求 | 响应 | ||||
字段名称 | 十六进制 | 字段名称 | 十六进制 | ||
MBAP报文头 | 传输标识 | 01 | MBAP报文头 | 传输标识 | 01 |
00 | 00 | ||||
协议标志 | 00 | 协议标志 | 00 | ||
00 | 00 | ||||
长度 | 00 | 长度 | 00 | ||
06 | 06 | ||||
单元标识符 | 01 | 单元标识符 | 01 | ||
功能码 | 0F | 功能码 | 0F | ||
开始地址 Hi | 00 | 寄存器地址 Hi | 00 | ||
开始地址 Lo | 00 | 寄存器地址 Lo | 00 | ||
线圈数量Hi | 00 | 线圈数量Hi | 00 | ||
线圈数量Lo | 02 | 线圈数量Lo | 02 | ||
字节数 | 01 | ||||
输出值 | 02 |
16(0x10)写多个寄存器
在一个远程设备中,使用该功能码写多个保持寄存器。请求PDU说明了被写入寄存器的地址。从零开始寻址寄存器。因此,寻址寄存器地址1为0。功能码16举例:
请求 | 响应 | ||||
字段名称 | 十六进制 | 字段名称 | 十六进制 | ||
MBAP报文头 | 传输标识 | 01 | MBAP报文头 | 传输标识 | 01 |
00 | 00 | ||||
协议标志 | 00 | 协议标志 | 00 | ||
00 | 00 | ||||
长度 | 00 | 长度 | 00 | ||
06 | 06 | ||||
单元标识符 | 01 | 单元标识符 | 01 | ||
功能码 | 0F | 功能码 | 0F | ||
开始寄存器地址 Hi | 00 | 开始寄存器地址 Hi | 00 | ||
开始寄存器地址 Lo | 00 | 开始寄存器地址 Lo | 00 | ||
寄存器数量Hi | 00 | 寄存器数量Hi | 00 | ||
寄存器数量Lo | 02 | 寄存器数量Lo | 02 | ||
字节数 | 04 | ||||
寄存器值Hi | 00 | ||||
寄存器值Lo | 05 | ||||
寄存器值Hi | 00 | ||||
寄存器值Lo | 06 |