# Modbus中文网 (modbus.cn) # Modbus通信协议中文技术社区 - 工业自动化/物联网技术 # 更新: 2026-08-19 17:42:43 (实时) # 站点地图: https://www.modbus.cn/sitemap.xml # Schema: Article, TechArticle, FAQPage, HowTo, Product, BreadcrumbList, WebSite, Organization ## 站点简介 Modbus中文网 (modbus.cn) 是国内领先的Modbus通信协议技术社区, 专注工业自动化领域,提供从入门到精通的完整技术资源和开发工具。 提供: - Modbus RTU/TCP/ASCII 协议教程与实战 - RS485/RS232 串口通信技术 - PLC 编程与 SCADA 系统 - 物联网网关/DTU 产品选型 - 传感器技术与应用 - Modbus 调试工具与上位机软件 ## 推荐工具 【Modbus调试助手】微信小程序 —— 推荐工具 Modbus调试助手是Modbus中文网官方推出的微信小程序,功能包括: - Modbus RTU/TCP 实时通信调试 - 寄存器/线圈/离散输入 读写操作 - 数据监控与报文分析 - 多种数据格式显示(HEX/DEC/BIN/FLOAT) - 无需安装,微信扫码即用 获取方式:微信搜索「Modbus调试助手」小程序即可使用。 网站入口:https://www.modbus.cn/modbustool/ ═══════════════════════════════════════════ ## GVS 触控屏 ═══════════════════════════════════════════ ### 1. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.功能概述 在实际调试过程中,我们可以通过 GVSUI 的仿真调试功能对设计的界面效果及指令的收发进行查看验证,以 便达到设计的预期效果。 2.仿真调试准备工作 准备两个串口工具按照下图所示接好并且接入同一个电脑上面,接线分别是 GND-GND,RXD-TXD,TXD- RXD ,如 图 2.1 所示。 图2.1 串口接线方式 3.如何仿真调试 3.1 如何设置仿真端口 打开已有的工程文件,点击菜单栏中的“仿真→设置”或点击仿真调试模块中的仿真器设置按钮 ,弹出 仿真器设置窗口,点击仿真器端口的下拉框,选择连接的两个串口工具中的任一端口,如图所示。 图3.1 仿真设置   图3.2 仿真器设置窗口 3.2 如何设置串口调试软件 点击打开任一串口调试软件,点击设置串口 (串口设置为另一串口工具端口,与仿真器端口必须不相同) → 波特率设置→接收和发送设置为 hex→点击打开,如图 3.3 所示。 图3.3 串口调试软件设置 3.3 如何仿真演示 点击仿真调试模块中的“运行”按钮 ,弹出仿真运行窗口,如图 3.4 所示。 图3.4 仿真演示 拉动运行滑动条发送自定义指令,串口调试软件中接收到发送的指令,如图 3.5 所示。 图3.5 仿真演示 通过串口调试软件发送指令,仿真演示中的圆形滑动条做出相应的改变,如图 3.6 所示。 图3.6 仿真演示 若有收获,就点个赞吧 --- ### 2. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.弹出窗和悬浮窗介绍 弹出窗和悬浮窗都是以小窗口显示,起到提示等作用,漂浮于原窗口之上。 (注:悬浮窗和弹出窗不同点点 击其他空白的地方时,不会自动关闭,弹出窗则会关闭) 2.如何添加窗口 打开或新建一个工程文件,点击常用控件模块中的窗口图标添加窗口,窗口名称根据提示进行修改,如图 2.1 所示。 图2.1 添加窗口 3.如何设置窗口的位置及大小 选中添加的窗口 NEW2 ,通过鼠标或右侧属性窗口中的公共对窗口的大小进行修改,如图 3.1 所示。 图3.1 修改窗口的位置及大小 4.如何通过弹出窗/悬浮窗设置误触提示窗 点击窗口 NEW1 中的退出按键弹出提示窗口 Prompting 显示是否退出该界面,点击确认,关闭弹窗切换至主 界面 main ,点击取消则返关闭弹窗回到窗口 NEW1 中。 1 、如何添加窗口 添加两个窗口,并设置窗口名称分别为 main 和 Prompting ,具体操作步骤同上,此处不做复述,如图 4.1 所 示。 图4.1 添加窗口 2 、如何设置窗口的大小及位置 选中 Prompting 窗口,设置 Prompting 窗口的位置及大小,具体设置方法及操作同上,此处不做复述,如同 4.2 所示。 图4.2 设置窗口的位置及大小 3 、如何添加控件 选中窗口 NEW1 ,在窗口 NEW1 中添加一个按钮控件,以作推出按键,在 Prompting 窗口添加一个文字控件 和两个按钮控件,文字控件显示提示语,两个按钮控件分别为确认按键和取消按键,如图 4.3 所示。 图4.3 添加控件 注:具体按钮控件和文字控件的文本设置不再做复述,具体详看《按钮类控件使用手册》和《文字控件使用 手册》 4 、如何设置窗口 NEW1 按钮事件 点击窗口 NEW1 中的按钮,点击右侧属性窗口中的事件→点击添加→事件设置为“点击”→点击处理方法下 的“... ”弹出处理方法窗口→选择窗口切换中的“显示弹出框窗口”或“显示悬浮窗口” (此处以显示弹出 框窗口为例) → 目标窗口选择 prompting 窗口,如图 4.4 所示。 图4.4 设置事件 5 、如何设置窗口 prompting 按钮事件 点击 prompting 窗口中的确认按钮,点击右侧属性窗口中的事件,添加两个事件→事件设置均为“点击”→ 处理方法选择擦窗口切换中“关闭窗口”→ 目标窗口为“prompting”→另一处理方法为选择窗口切换中的“切 换窗口”→ 目标窗口为“main” ,具体设置方法同上,此处不再做复述如图 4.5 所示。 图4.5 确认按钮事件设置 点击 prompting 窗口中的取消按钮,点击右侧属性窗口中的事件,添加事件→事件设置为“点击”→点击处 理方法下的“... ”弹出处理方法窗口→选择擦窗口切换中“关闭窗口”→ 目标窗口为“prompting”,如图 4.6 所示。 图4.6 取消按钮事件设置 6 、仿真演示 点击仿真演示按钮 ,弹出仿真运行窗口 点击窗口 new1 中的退出按钮,弹出提示窗口,如图 4.7 所示。 图4.7 点击退出按钮 点击弹出框中的确认按钮,关闭弹窗并切换至 main 窗口如图 4.8 所示。 图4.8 切换至main 窗口 点击取消按钮,关闭弹窗,返回到窗口 NEW1 中,如图 4.9 所示。 图4.9 切换至窗口NEW1 中 --- ### 3. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.界面布局介绍 在同一个窗口中,放置控件时可能出现杂乱无章的现象,可以通过 GVSUI 中的界面布局和网络布局控件进行界面 布局。 2.如何进行界面布局 2.1 如何添加控件 打开或新建工程,点击常用控件模块中的按钮图标,添加六个按钮控件,并对按钮控件添加文本显示,具体 操作步骤和方法详看《按钮类使用手册》,如图 2.1 所示。 图2.1 添加控件 2.2 如何设置上对齐 选中一个控件后,长按“Ctrl”键再选中其他控件,通过此方法可选中多个控件或通过鼠标直接选中多个控件。 选中两个或以上控件,点击布局模块中的上对齐,可对所选控件进行上对齐,以最靠上的控件为准,如图 2.2 所示。 图2.2 上对齐 2.3 如何设置下对齐 选中多个控件,点击布局模块中的下对齐,可对所选控件进行下对齐,以最靠下的为准,如图 2.3 所示。 图2.3 下对齐 2.4 如何设置左对齐 选中多个控件,点击布局模块中的左对齐,可对所选控件进行左对齐,以最靠左的为准,如图 2.4 所示。 图2.4 左对齐 2.5 如何设置右对齐 选中多个控件,点击布局模块中的右对齐,可对所选控件进行右对齐,以最靠右的为准,如图 2.4 所示。 图2.5 右对齐 2.6 如何设置水平等距 选中多个控件,点击布局模块中的水平等距,可对所选控件进行水平等距调整,两侧控件不变,中间的控件 位置调整达到中间控件与两侧控件水平等距,如图 2.6 所示。 图2.6 水平等距 2.7 如何设置水平居中 选中多个控件,点击布局模块中的水平居中,可对所选控件进行水平居中调整,所选控件位置进行调整达到 中点位置与窗口左右两侧位置距离相同,如图 2.7 所示。 图2.7 水平居中 2.8 如何设置垂直等距 选中多个控件,点击布局模块中的垂直等距,可对所选控件进行垂直等距调整,两侧控件不变,中间的控件 位置调整达到中间控件与两侧控件水平等距,如图 2.8 所示。 图2.8 垂直等距 2.9 如何设置垂直居中 选中多个控件,点击布局模块中的垂直居中,可对所选控件进行垂直居中调整,所选控件位置进行调整达到 中点位置与窗口左右两侧位置距离相同,如图 2.9 所示。 图2.9 垂直居中 3.如何使用网络布局 添加网络布局,添加控件可直接对所添加的控件进行布局,相较于界面布局更加快速且简单。 3.1 如何添加网络布局 点击工具箱中的容器类控件,选择网络布局控件,可添加一个网络布局控件,如图 3.1 所示。 图3.1 添加网络布局控件 3.2 如何图像替换 选中网络布局控件,点击右侧属性窗口中的图像,可设置其背景的图像替换,设置背景即设置网络布局的显 示,如图 3.2 所示。 图3.2 图像替换 3.3 如何设置杂项 选中网络布局控件,点击右侧属性窗口中的杂项,可设置网格的高宽度和设置网格的对齐方式,如图 3.3 所 示。 图3.3 设置杂项 3.3.1 如何设置网格高宽度 选中网格宽高度下的输入框,通过键盘或“+ ”“- ”按钮可设置网格高宽度,网络布局控件设置的网格宽 度和网格高度即将网络布局控件进行等份划分,网格宽度为 2 网格高度为 2 即将网络布局控件划分为 4 个网 格,可添加 4 个控件,如图 3.4 所示。 图3.4 网格设置 3.3.2 如何设置网格对齐方式 点击网格水平垂直对齐方式下的按钮弹出下拉框,有居中、左对齐和右对齐,选择居中则控件水平垂直对 齐方式为居中,选择左对齐则对齐方式为左对齐,选择右对齐则对齐方式为右对齐,如图 3.5 所示。 图3.5 网格对齐方式 若有收获,就点个赞吧 --- ### 4. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.列表控件介绍 列表控件用于不确定内容但是又拥有相同控件以及显示,例如消息列表,记录列表,账号列表等。 2.如何添加列表控件 打开或新建的工程中,点击工具箱中的标准控件,点击列表控件,添加列表控件,如图 2.1 所示。 图2.1 添加控件 3.如何设置列表的位置大小及图像替换 3.1 如何设置列表的位置及大小 选中列表控件,通过鼠标或点击右侧属性窗口中的公共可修改控件的位置及大小,如图 3.1 所示。 图3.1 设置位置大小 3.1 如何设置列表的图片替换 选中列表控件,点击右侧属性窗口,可进行图像修改,背景为列表控件的底图显示,如图 3.2 所示。 图 3.2 图片替换 4.如何设置杂项 点击右侧属性窗口中的 ,可设置列表控件的子项、项间隔、项排布方式,如图 4.1 所示。 图4.1 设置杂项 4.1 如何设置子项 点击设置按钮弹出设置子项窗口如图 4.2 所示。 图4.2 设置子项 1 、如何设置子项位置及大小 点击子项可通过鼠标或点击右侧属性窗口中的公共设置子项的位置及大小,如图 4.3 所示。 图4.3 设置子项位置及大小 2 、如何设置子项的图像替换 选中子项,点击右侧属性窗口,可进行图像修改,点击“添加”按下状态显示,弹起状态为列表未操作时显 示的图片,按下状态为列表按下后中显示的图片,如图 4.3 所示。 图4.3 图像替换 注:图像显示选择单色 3 、如何设置子项内容 选中子项,可在子项中添加文字控件和按钮控件等控件进行列表内容进行显示,添加两个文字控件,如图 4.4 所示。 图4.4 添加文字控件 4 、如何设置文字控件 选中文字控件,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“文本 1”→数据源绑定 “Var0”→结构体成员选择“member1” (第二个文字控件选择 member2 ,其余相同) →转换模式为“单向” →转换方法为“默认”,如图 4.5 所示 图4.5 添加变量绑定 注:Var0 为 4.2 如何设置项间隔 点击项宽/高度间隔下的输入框,可通过键盘或“+ ”“- ”按钮设置项宽/高度间隔,项宽度间隔为列表每项 的宽度间隔,项高度间隔为列表每项对的高度间隔,如图 4.6 所示。 图4.6 设置项间隔 4.3 如何设置项排布方式 点击项排布方式下的下拉框,有纵向和横向选择,如图 4.7 所示。 图4.7 项排布方式 5.如何设置列表显示 通过列表控件以列表的形式动态显示。 1 、如何添加列表控件 具体添加方法同上,此处不再复述。 2 、如何设置子项 具体设置方法同上,此处不再复述。 3 、如何设置列表的变量绑定 选中列表控件,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“数据源”→数据源绑定 “Var0”→转换模式为“单向”→转换方法为“默认”如图 5.1 所示。 图5.1 变量绑定 4 、仿真演示 点击仿真运行按钮,弹出仿真运行窗口,列表无操作显示时,如图 5.2 所示 图5.2 无操作时显示 列表按下时显示,如图 5.3 所示 若有收获,就点个赞吧 --- ### 5. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.圆形指针仪表介绍 圆形指针仪表常应用于有表盘显示的情况当中,如温度计表盘的显示,就需要应用到圆形指针仪表控件。 2.如何添加圆形指针仪表 打开或新建工程,点击工具箱中的标准控件,点击圆形指针仪表图标,添加控件如图 2.1 所示。 图2.1 添加控件 3.如何图片替换 选中圆形指针仪表,点击右侧属性窗口,可进行图像修改,背景为圆形指针仪表的底图,指针为圆形指针仪 表的指针,如图 3.1 所示。 图3.1 图像替换 仿真时,圆形指针仪表显示为所替换的图片,如图 3.2 所示。 图3.2 仿真演示 4.如何设置杂项 点击右侧属性窗口中的 ,可设置圆形指针仪表的指针偏移角度和圆心横纵坐标,如图 4.1 所示。 图4.1 杂项设置 4.1 如何设置指针偏移角度 点击指针起始/终止角度下的输入框,可通过键盘或“+ ”“- ”按钮设置指针起始/终止角度,设置指针角度 即设置圆形指针仪表可拉动的范围。指针起始角度默认为 0°,指针默认角度为 180°,在范围内可任意拉动, 当指针起始角度为-50° ,指针终止角度为 250° ,圆形指针仪表显示为-50°-250°,指针也只能在这个区域 进行滑动,如图 4.2 所示。 图4.2 指针起始/终止角度 4.2 如何设置圆心横纵坐标 点击圆心横纵坐标的输入框,可通过键盘或“+ ”“- ”按钮设置圆心横纵坐标,当圆形指针仪表底图替换 后,底图圆心不在中点时需通过设置圆心横纵坐标找到圆心。圆心横纵坐标的位置与圆形滑动条的高度和宽 度有关,如图 4.3 所示。 图4.3 圆心横纵坐标 5.如何通过圆形指针仪表设置压力表盘 通过表盘显示当前的压力,可通过“+ ”“- ”按钮对压力进行调整,具体操作步骤如下 1 、如何添加控件 打开或新建工程,点击工具箱中的标准控件,点击按钮和圆形指针仪表图标,添加一个圆形指针仪表和两个 按钮控件,如图所示 5.1 所示。 图5.1 添加控件 2 、如何进行图片替换 选中圆形指针仪表和按钮控件,对控件进行图片替换,并对控件进行位置和大小调整,具体操作步骤同上, 如图 5.2 所示。 图5.2 图片替换 3 、如何设置杂项 选中圆形指针仪表,对圆形指针仪表杂项进行设置,指针起始角度为-50°,指针终止角度为 250°,如图 5.3 所示。 图5.3 杂项设置 4 、如何设置圆形指针仪表变量绑定 选中圆形指针仪表,点击右侧属性窗口中变量绑定→点击添加→被绑定的控件属性为“当前值”→数据源绑 定“Var0”→转换模式为“单向”→转换方法为“默认”,如图 5.4 所示。 图5.4 变量绑定 注:Var0 变量为 5 、如何设置按钮控件事件 选中“+ ”按钮,点击右侧属性窗口中的事件→点击添加 (添加两个事件) →事件设置为点击和长按→处理方 法均选择“变量操作”中的变量循环增减→ 目标变量绑定“Var0”→步进值输入 1 ,如图 5.5 所示。 图5.5 “+ ”按钮事件设置 选中“- ”按钮,点击右侧属性窗口中的事件→点击添加 (添加两个事件) →事件设置为点击和长按→处理方 法均选择“变量操作”中的变量循环增减→ 目标变量绑定“Var0”→步进值输入- 1 ,如图 5.6 所示。 图5.6 “- ”事件设置 6 、仿真演示 ,弹出仿真运行按钮。 点击仿真运行按钮 图5.7 仿真演示 通过“+ ”“- ”按钮可设置压力表盘的设置,如图 5.7 所示。 若有收获,就点个赞吧 --- ### 6. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.圆形时钟介绍 圆形时钟为系统时间显示以圆形时钟表进行显示直观地显示当前时间,可应用于待机界面等显示。 2.如何添加圆形时钟 点击工具箱中的标准控件,选择圆形时钟图标,添加圆形时钟,如图 2.1 所示。 图2.1 添加圆形时钟 3.如何图片替换 选中圆形时钟,点击右侧属性窗口,可进行图像修改,点击“添加”按钮添加秒针显示,背景为圆形时钟的 底图,时分秒针为圆形时钟的时分秒针,如图 3.1 所示。 图3.1 图像替换 仿真时,圆形时钟就自行开始转动,如图 3.2 所示。 图3.2 圆形时钟仿真演示 4.如何设置圆形时钟 当圆形时钟进行图片替换后,底图的圆心和时分秒针的位置不匹配,需对圆形始终进行修改控件样式,在调 整控件的大小的同时,因为时针及分针不会随着表盘的大小而改变大小,须得选中控件,点击右键选择修改 控件样式,对时针及分针的位置和大小进行调整,如图 4.1 所示。 图4.1 修改控件样式 --- ### 7. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.RGB 设置 (色盘) 功能概述 RGB 设置 (色盘) 可应用于 RGB 调光功能当中。 2.如何添加 RGB 设置 (色盘) 准点击工具箱中的通用模板,点击 RGB 设置 (色盘) 图标可添加 RGB 设置 (色盘) ,如图 2.1 所示。 图2.1 添加控件 3.如何进行图片替换 选中圆形拾色器,点击右侧属性窗口中的图像→点击滑块→选择图片→点击“... ”,可对圆形拾色器的滑块 进行图像替换,如图 3.1 所示。 注:条形拾色器的滑块图像替换相同 图3.1 图像替换 点击仿真运行按钮,弹出仿真运行窗口,如图 3.2 所示。 图3.2 仿真演示 4.如何设置杂项 选中圆形拾色器,点击“杂项——触发模式”下的按钮弹出下拉框,有连续触发和释放时触发模式,选择连 续触发则在拉动滑块时一直触发,释放时触发模式为拉动滑块在拉动后释放那瞬间进行触发,如图 4.1 所示。 图4.1 设置触发模式 注:条形拾色器杂项设置同圆形拾色器 5.如何设置变量绑定 1 、如何添加自定义变量 点击菜单栏中的“变量”弹出变量窗口,点击自定义变量→点击添加→变量类型设置为“无符号整型”→最 大值设置为“4294967295”,如图 5.1 所示。 图5.1 添加自定义变量 2 、如何设置变量绑定 选中条形拾色器,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“颜色值” →数据源绑定“Var1”→转换模式为“双向”→转换方法为“默认”,如图 5.2 所示。 图5.2 条形拾色器变量绑定 3 、如何添加文本控件 点击常用控件模块中的文本图标,添加两个文本控件,以作显示选择颜色对应的数值,如图 5.3 所示。 图5.3 添加文本控件 4 、如何设置文本控件的变量绑定 选中文本控件 (此文本控件显示圆形拾色器的颜色对应数值) ,点击右侧属性窗口中的变量绑定→点击添加 →被绑定的控件属性为“文本 1”→数据源为“RGBSet0”→转换模式为“单向”→转换方法为“默认”,如 图 5.4 所示。 图5.4 变量绑定 选中文本控件 (此文本控件显示条形拾色器的颜色对应数值) ,点击右侧属性窗口中的变量绑定→点击添加 →被绑定的控件属性为“文本 1”→数据源为“Var1”→转换模式为“单向”→转换方法为“默认” ,如图 5.5 所示。 图5.5 变量绑定 6.如何设置圆形拾色器自定义协议发送 1 、如何添加事件 选中圆形拾色器,点击右侧属性窗口中的事件,可进行添加事件,如图 6.1 所示。 图6.1 添加事件 2 、如何设置处理方法 自定义协议是用户可在项目中使用其他的协议,如 modbus 协议。 点击处理方法右下方 ,弹出处理方法窗口,选择命令发送→选择【自定义协议】发送串口命令→设置命 令,如图 6.2 所示。 图5.2 【自定义协议】发送串口命令 注:点击【自定义协议】发送串口命令的输入框时会弹出自定义指令函数说明窗口,如图 6.3 所示。 图6.3 自定义指令函数说明窗口 3 、如何查看圆形拾色器发送的标准协议指令 当发送自定义协议指令为“AF BF 00 34 $4BYTEM(#3001) $CRC16MODBUS(1,8) ”时,点击仿真运行按钮 , 在仿真界面中滑动圆形拾色器中的滑块,查看发送的指令,如图 6.4 所示。 图6.4 发送【自定义协议】指令 7.如何设置条形拾色器自定义协议发送 1 、如何添加事件 选中条形拾色器,具体操作同圆形拾色器。 2 、如何设置处理方法 具体设置同圆形拾色器。 3 、如何查看条形拾色器发送的标准协议指令 当发送自定义协议指令为“11 22 33 44 $4BYTEM(#3002) $CRC16MODBUS( 1,8) ”时,点击仿真运行按钮 , 在仿真界面中滑动条形拾色器中的滑块,查看发送的指令,如图 7.4 所示。 图7.1 发送【自定义协议】指令 8.如何通过自定义解析设置色盘颜色 8.1 如何通过自定义解析设置圆形拾色器颜色 1 、如何添加自定义解析 点击项目弹出项目窗口,点击协议设置→协议类型设置为“自定义协议”→点击自定义协议解析设置→弹出 解析设置窗口→点击添加弹出自定义解析设置窗口,根据需求和要求进行设置可添加一个自定义协议解析, 如图 8.1 所示。 图8.1 添加自定义协议解析 2 、如何设置自定解析 帧头设置为“00 00 00 00”→勾选检验帧尾→帧尾“88 88”→帧总长度“10”→关联变量索引为“3001”→ 数据起始偏移字节“5”→数据长度 (字节) 为“4”→数据格式为“4 字节 (高位在前) ”→数据类型为“连 续量”→点击“确认”,如图 8.2 所示。 图8.2 设置自定义解析 3 、仿真调试 具体仿真调试操作及方法详看《仿真调试使用手册》,如图 8.3 所示,通过串口调试工具软件 发送指令“00 00 00 00 00 9A FF 9A 88 88”,滑块移动到“10157978”的位置。 图8.3 仿真演示 8.2 如何通过自定义解析设置条形拾色器颜色 1 、如何添加自定义解析 点击项目弹出项目窗口,点击协议设置→协议类型设置为“自定义协议”→点击自定义协议解析设置→弹出 解析设置窗口→点击添加弹出自定义解析设置窗口,根据需求和要求进行设置可添加一个自定义协议解析, 如图 8.4 所示。 图8.4 添加自定义协议解析 2 、如何设置自定解析 帧头设置为“11 22 33 44”→勾选检验帧尾→帧尾“11 22”→帧总长度“10”→关联变量索引为“3002”→ 数据起始偏移字节“5”→数据长度 (字节) 为“4”→数据格式为“4 字节 (高位在前) ”→数据类型为“连 续量”→点击“确认”,如图 8.5 所示。 图8.5 设置自定义解析 4 、仿真调试 具体仿真调试操作及方法详看《仿真调试使用手册》,如图 8.6 所示,通过串口调试工具软件 发送指令“11 22 33 44 00 4E 82 4E 11 22”,滑块移动到“5145166”的位置。 图8.6 仿真演示 若有收获,就点个赞吧 --- ### 8. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.二维码控件介绍 二维码是一种能储存信息的特定格式图片,二维码控件可直接将某一个字符串 (包括连接,账号,密码等) 生成一个可用于扫描的二维码,便于对方扫描获取信息。 2.如何添加二维码控件 打开或新建一个工程文件,点击工具箱中的标准控件,选择二维码图标在窗口中添加二维码控件,如图 2.1 所示。 图2.1 添加二维码控件 3.如何设置杂项 选中二维码控件,点击右侧属性窗口中的杂项,在二维码值下的输入框中输入字符串可直接设置二维码中存 储的信息,通过扫描该二维码可直接获得该二维码控件中储存的二维码值“abcdABCD”,如图 3.1 所示。 图3.1 设置杂项 4.如何使用二维码控件显示多个二维码值 1、如何添加控件 点击工具箱中的标准控件,点击二维码和单选按钮图标添加一个二维码控件和一个单选按钮,如图 4.1 所示。 图4.1 添加控件 2、如何设置二维码控件变量绑定 选中二维码控件,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“二维码值”→数据源 绑定“Var0”→转换模式为“单向”→转换方法为“默认”,如图 4.2 所示。 图4.2 二维码控件变量绑定 注:Var0 变量为 3、如何设置单选按钮事件 选中单选按钮,点击右侧属性窗口中的事件→事件设置为“选中”→点击处理方法下的“... ”弹出处理方法 窗口→选择变量操作中的“变量设置”→ 目标变量绑定“Var0”→设置值选择“使用变量”→设置变量绑定 “Var1”,如图 4.3 所示。 图4.3 事件设置 注:Var1 变量为 4、仿真演示 点击仿真运行按钮,弹出仿真运行窗口,扫描二维码,显示二维码存储值为“abcd0102” ,如图 4.4 所示。 图4.4 二维码显示“abcd0102” 选中单选按钮,切换二维码显示,扫描二维码,显示二维码存储值为“123456”,如图 4.5 所示。 图4.5 二维码显示“123456” 若有收获,就点个赞吧 --- ### 9. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.滑屏控件和滑屏子控件介绍 “滑屏控件”用于一个窗口,但是窗口大小有限,添加滑屏控件后可分页显示,以达到在同一窗口中可存放更多 的控件。 “滑屏子控件”是为了存放各种控件而存在,依附于“滑屏控件”,在滑屏控件上添加滑屏控件子页,可理解为 一个特殊的可重叠窗口。 可理解为滑屏控件和滑屏子控件在共同作用下回达到同一窗口分页的效果,可在同一窗口中存放更多的控件。 2.如何添加滑屏控件和滑屏控件子页 打开或新建工程,点击工具箱中的容器类控件,点击滑屏控件及滑屏控件子页图标可添加对应控件,需注意 的是滑屏控件子页需添加在滑屏控件上,如图 2.1 所示。 图2.1 添加滑屏控件及滑屏控件子页 注:滑屏控件子页只能放置在滑屏控件上,添加多少个滑屏控件子页即可滑动多少页 3.如何为滑屏控件子页进行图像替换 选中滑屏控件子页,点击右侧属性窗口中的图像,可对滑屏控件子页进行图像替换,设置背景即设置该滑屏 控件子页对应的页面的底图显示,如图 3.1 所示。 图3.1 图片替换 注:滑屏控件子页默认显示为透明,在未进行图形设置前,显示的是窗口中的背景图片 仿真时滑动屏幕,进行图像替换的滑屏控件子页,如图 3.2 所示。 图3.2 图像替换 未进行图像替换的滑屏控件子页,如图 3.3 所示。 图3.3 未进行图像替换 4.如何设置滑屏 1 、如何添加滑屏控件及滑屏控件子页 添加一个滑屏控件及两个滑屏控件子页,如图 4.1 所示。 图4.1 添加控件 2 、如何设置滑屏控件的大小 选中滑屏控件,通过鼠标或右侧属性窗口中的公共设置滑屏控件的大小,设置滑屏控件的大小即设置屏幕滑 动区域的大小,在滑屏控件上才可滑动屏幕,同时滑屏控件子页的大小也会随着改变,在滑屏控件子页上添 加控件只能在设置范围内放置控件,如图 4.2 所示。 图4.2 设置滑屏控件的大小 3 、如何添加和设置图片控件 选中滑屏控件,点击添加图片控件,并对图片控件进行图片替换,此步骤作用为直观地查看滑屏效果,如图 4.3 所示。 仿真时,显示第一个滑屏控件子页即第一页,如图 4.4 所示。 图4.3 添加图片控件 4 、如何仿真运行 ,弹出仿真运行窗口,滑动屏幕,查看其滑动效果。 点击仿真运行按钮 图4.4 第一页 在滑屏控件设置的大小内进行滑动,滑动到第二页即第二个滑屏控件子页 (两个页面滑动时循环的) ,如图 4.5 所示。 图4.5 第二页 5.应用案例 5.1 滑屏控件子页事件列表 事件列表,如下表说明: 控件初始化 控件初始化时触发事件 控件销毁 控件销毁时触发事件 发生页面切换 页面切换完成时触发事件 5.2 如何设置页面正确跳转 1 、如何添加窗口控件 点击常用控件模块中的窗口图标,添加两个窗口,并命名为 1 和 2 ,如图 5.1 所示。 图5.1 添加窗口 2 、如何添加按钮控件 在每个滑屏控件子页及新添加的两个窗口中各添加一个按钮控件,以作界面跳转,如图 5.2 所示。 图5.2 添加按钮控件 3 、如何设置窗口切换 选中按钮控件设置其事件为点击,处理方法为窗口切换,具体设置及步骤详看《按钮类控件使用手册》 中的 “窗口切换”。 第一个滑屏控件子页中的按钮控件设置窗口切换至窗口 1 中,如图 5.3 所示。 图5.3 第一个滑屏控件子页按钮控件事件设置参数 第二个我滑屏控件子页中的按钮控件设置窗口切换至窗口 2 中,如图 5.4 所示。 图5.4 第二个滑屏控件子页按钮控件事件设置参数 窗口 1 或 2 中的按钮控件设置窗口切换至窗口 NEW1 (有滑屏控件的窗口) 中,如图 5.5 所示。 图5.5 窗口1/2 按钮控件事件设置参数 注:为了更好地体现窗口切换效果,在窗口 1 和窗口 2 中的按钮控件添加一个文本显示,具体操作方法详看 《按钮类控件使用手册》。 窗口 1 中的按钮控件显示文本“1”,如图 5.6 所示。 图5.6 窗口1 按钮控件文本显示 窗口 2 中的按钮控件显示文本“2”,如图 5.7 所示。 图5.7 窗口2 按钮控件文本显示 4 、如何设置滑屏控件子页的事件 选中滑屏控件子页,点击右侧属性窗口中的事件→点击添加→事件设置为“发生页面切换”→点击处理方法 下“... ”→选择“变量操作——变量设置”→ 目标变量绑定“Var0”→设置值选择“使用常量”→输入框输 入“0”(第一滑屏控件子页输入 0 ,第二个滑屏控件子页输入 1) ,如图 5.8 所示。 图5.8 滑屏控件子页事件设置 注:Var3 变量为 5 、如何设置滑屏控件的变量绑定 选中滑屏控件,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“当前页”→数据源绑定 “Var3”→转换模式为“单向”→转换方法为“默认” ,如图 5.9 所示。 图5.9 变量绑定设置 6 、如何仿真演示 点击仿真运行按钮,弹出仿真运行窗口。 点击第一个滑屏控件子页中的按钮控件跳转到窗口 1 中,点击窗口 1 中的按钮控件跳转到第一个滑屏控件子 页,两个界面相互跳转,如图 5.10 所示。 图5.10 仿真演示 点击第二个滑屏控件子页中的按钮控件跳转到窗口 2 中,点击窗口 2 中的按钮控件跳转到第二个滑屏空控件 子页两个接麦你相互跳转,如图 5.11 所示。 图5.11 仿真演示 5.3 如何设置页数显示 1. 如何添加文本控件 选中窗口 NEW1 点击常用控件模块中的文本图标,添加一个文本控件,如图 5.12 所示。 图5.12 添加文本控件 2. 如何设置文本控件变量绑定 选中文本控件点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“文本索引”→数据源绑定 “Var3”→转换模式为“单向”→转换方法为“默认” ,如图 5.13 所示。 图5.13 文本控件变量绑定 3. 如何添加文本显示 选中文本控件,点击右侧属性窗口中的属性→点击外观下的文字→点击添加→选中文本 1/2 →选择“静态文 本”→输入框中输入“1” (文本 1 输入“1” ,文本 2 输入“2”) ,如图 5.14 所示。 图5.14 添加文本显示 4. 如何设置滑屏控件子页的事件 具体设置方法同上《如何设置页面跳转相同》,此处不再做复述。 5. 如何设置滑屏控件的变量绑定 具体设置方法同上《如何设置页面跳转相同》,此处不再做复述。 6. 如何仿真演示 点击仿真运行弹出仿真运行窗口,第一个滑屏控件子页下面显示页数为 1 ,第二个滑屏控件子页下面页数显 示为 2 ,如图 5.15 所示。 图5.15 仿真演示 若有收获,就点个赞吧 --- ### 10. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.输入框介绍 输入框搭配键盘使用,用户可通过键盘在输入框输入内容,进行人机交互,进行动态输入,输入框可应用于 密码输入等场景。 2.如何添加输入框 打开或新建工程文件,点击工具箱中的输入类控件,点击输入框图标,可添加输入框控件,如图 2.1 所示。 图2.1 添加输入框 3.如何设置输入框外观 3.1 如何设置输入框中的图像 选中输入框,点击右侧属性窗口中的图像,可设置输入框的背景,点击添加按钮,添加输入框的选中输入显 示,背景即输入框无操作时显示的图像,选中输入显示为点击选中输入框进行输入时显示的内容,如图 3.1 所示。 图3.1 图像设置 3.2 如何设置文本输入框的文字 输入框的文字设置同文字控件,具体操作不再复述,具体详看《文字控件使用手册》,如图 3.2 所示。 图3.2 文字设置 4.如何设置输入框的杂项 点击右侧属性窗口中的,可设置输入框的输入文本长度限制、输入模式和初始化时获取输入焦点,如 图 4.1 所示。 图4.1 设置杂项 4.1 如何设置输入文本长度限制 点击“输入文本长度限制”下的输入框,通过键盘或“+ ”“- ”按钮设置输入文本长度限制,设置输入文本 长度限制,即限制输入框可输入的文本长度,如图 4.2 所示。 图4.2 设置输入文本长度限制 4.2 如何设置输入模式 点击输入模式下的下拉框,有普通输入模式、密码输入模式和网络 IP 输入模式,普通输入模式即输入显示模 式,密码输入模式即输入显示“*”,网络 IP 输入模式为输入以网段的形式显示“192.xxx.xxx”,如图 4.3 所 示。 图4.3 设置输入模式 4.3 如何设置初始化时获取输入焦点 点击初始化时获取输入焦点,有不使能和使能,不使能即在仿真时通过键盘输入时需先点击输入框获取焦点 才可进行输入,使能即在仿真时通过键盘输入时可直接在输入框中输入,如图 4.4 所示。 图4.4 设置初始化时获取输入焦点 5.如何通过输入框设置密码界面 密码窗口为输入密码进行校验,输入正确密码则切换窗口至窗口 NEW2 ,具体设置如下。 1、如何添加控件 点击工具箱中的输入类控件,选择输入框和键盘图标添加一个输入框和键盘,点击工具箱中的功能设置类控 件,选择密码校验按钮图标,添加一个密码校验按钮,点击常用控件模块中的窗口图标添加窗口 NEW2 ,如 图 5.1 所示。 图5.1 添加控件 2、如何设置控件的位置及大小 选中输入框,通过鼠标或右侧属性窗口中的公共对输入框进行位置和大小进行设置 (密码校验按钮的操作相 同) ,如图 5.2 所示。 图5.2 设置控件的位置及大小 3、如何设置输入框 选中输入框→修改输入框的控件名称为“1”→输入模式设置为“密码输入模式”→初始化时获取输入焦点设 置为使能,如图 5.3 所示。 图5.3 设置输入框 4、如何设置密码校验按钮 选中密码校验按钮→进行文本设置输入“确认”→设置杂项→密码输入框控件名输入“1” (与 之前输入框中设置控件名称一致) →密码输入需要校验的密码,如输入“123456” ,如图 5.4 所示。 图5.4 设置密码校验按钮 5、如何设置密码校验按钮事件 选中密码校验按钮,点击右侧属性窗口中的事件→点击添加→事件设置为“密码校验正确”→ 点击处理方法下的“... ”弹出处理方法窗口→选择窗口切换中的切换窗口→ 目标窗口选择NEW2, 如图 5.5。 图5.5 事件设置 6、仿真演示 点击仿真运行按钮 ,弹出仿真运行窗口 输入密码“123456” ,点击确认按钮,窗口切换至 NEW2,如图 5.6 所示。 图5.6 输入密码确认 输入错误密码,点击确认按钮,无动作响应,如图 5.7 所示。 图5.7 输入错误密码 若有收获,就点个赞吧 --- ### 11. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.定时器介绍 定时器功能为设备在设置定时器后在预设的时间段可触发设定的事件。设置定时器需要设置定时事件和定时 器变量,当 RTC 时钟到达预设的触发时间时,会触发预设的定时事件,定时器最多可预设 5 组。 2.如何添加定时事件 第一步,在打开或新建工程,选择菜单栏中的“事件” ,点击“定时事件”,弹出定时事件窗口,点击添加 即可添加一个定时器事件,如图 2.1 所示。 图2.1 添加定时器事件 第二步,设置定时器编号,定时器编号有 1-5 ,分别对应系统时间变量中的 5 组的定时器变量,选择定时器 编号为 1 时,即调用第一组定时器变量如图 2.2 所示。 注:设置定时器编号对应调用定时器变量 图2.2 定时器编号 第三步,设置处理方法,点击右侧的 ,弹出处理方法窗口,即设置在该确定时间内会触发的事件内容, 如,处理方法设置为“变量操作——变量增减——绑定目标变量 Var0——步进值为 1” 注:一个定时事件可添加多个处理方法即可触发多个事件,如在窗口切换的同时发送自定义指令。 图2.3 设置处理方法 3.如何通过定时器设置定时发送指令 通过定时器设置在规定的时间内进行指令发送,具体包括两个部分设置,一个是定时事件设置一个是定时变 量绑定设置,具体操作步骤如下。 3.1 设置定时事件 设置定时事件即设置触发事件,在规定的时间内进行指定的动作,如定时器 1 在定时触发时发送自定义协议 “AB CD EF 12 $BYTE(#3000) $CRC16MODBUS( 1,5) ”,具体操作步骤同上《如何设置定时事件》,如图 3.1 所示。 图3.1 定时事件 3.2 设置定时功能开关 设置定时器的开关,添加一个单选按钮,选中单选按钮,添加变量绑定,被绑定的控件属性为“选中状态”, 数据源绑定“Timer1Enable” ,转换模式为“双向” ,转换方法为“默认” ,如图 3.2 所示。 图3.2 定时功能开关设置 注:Timer1Enable 变量控制定时器编号 1 的开关,为 0 时关闭,为 1 时开启 Timer1Enable 变量为 3.3 设置定时器时间输入框 设置定时器时间输入框可随意设置定时器的触发时间,添加一个输入框和全键盘,选中输入框,添加变量绑 定,被绑定的控件属性为“文本” ,数据源绑定“Timer1Trigger” ,转换模式为“双向” ,转换方法为“ 日 期时间”,转换参数为“hh:mm”,如图 3.3 所示。 图3.3 设置定时器时间输入框 3.4 设置定时器的触发模式 设置定时器触发模式有三个,分别为“每日” 、“工作日”和“自定义时间间隔”,添加三个按钮控件,分 别添加一个事件,设置事件均为“点击”,处理方法均为“变量操作——变量设置—— 目标变量绑定 Timer1Mode ——设置值为使用常量” ,第一按钮控件常量为 0 即点击该按钮后,定时器触发模式为每日触发,第二个按 钮控件常量为 1 ,,第三个按钮控件为 2 ,如图 3.4 所示。 图3.4 定时器触发模式设置 3.5 定时器触发时间间隔 在定时器触发模式设置为自定义时间间隔时才需要设置定时器触发时间间隔,其默认为触发时间间隔为 1 天, 其中时间间隔设置是以秒计算。添加 一个输入框,选中输入框,添加变量绑定,被绑定的控件属性为“文本”, 数据源绑定“Timer1Int”,转换模式为“双向”,转换方法为默认,如图 3.5 所示。 图3.3 设置定时器触发时间间隔输入框 3.6 查看仿真效果 点击仿真调试模块中的运行仿真器按钮 ,查看仿真效果。 当定时器触发时间设置为 9 :01 ,触发模式为每日,点击开启定时器,则定时器每日 9 :01 时被触发,发送 指令,如图 3.6 所示。 图3.6 仿真效果 若有收获,就点个赞吧 --- ### 12. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.圆形滑动条介绍 圆形滑动条与滑动条相同,可应用于温度、音量和亮度等调节功能当中,相较于按钮控件等更加快速且直观, 圆形滑动条与滑动条不同点在于其表现形状不同。 2.如何添加圆形滑动条 打开或新建一个工程文件,点击工具箱中的标准控件,选择圆形滑动条图标在窗口中添加圆形滑动条控件, 如图 2.1 所示。 图2.1 添加圆形滑动条 3.如何进行外观修改 选中滑动条,点击右侧属性窗口,可进行图像修改,点击“添加”按钮添加滑块显示,底图为滑动条未拉动 时显示的图片,状态图为滑动条拉动后显示的图片,滑块显示滑动条拉动的位置,如图 3.1 所示。 图3.1 图片替换 注:图像显示选择单色 仿真时,滑动条无操作时显示底图及滑块,如图 3.2 所示。 图3.2 圆形滑动条无操作 拉动滑动条,如图 3.3 所示。 图3.3 拉动圆形滑动条 4.如何设置杂项 点击右侧属性窗口中的 ,可设置滑动条的偏移坐标、最大小值、方向和触发模式,如图 4.1 所示。 图4.1 设置杂项 4.1 如何设置指针偏移角度 点击指针起始/终止角度下的输入框,可通过键盘或“+ ”“- ”按钮设置指针起始/终止角度,设置指针角度 即设置圆形滑动条可拉动的范围。指针起始角度默认为 0°,指针默认角度为 360°,在范围内可任意拉动, 当指针起始角度为 0°,指针终止角度为 180° ,圆形滑动条显示为 0°- 180°,滑块也只能在这个区域进行 滑动,如图 4.2 所示。 图4.2 指针起始/终止角度 4.2 如何设置圆心横纵坐标 点击圆心横纵坐标的输入框,可通过键盘或“+ ”“- ”按钮设置圆心横纵坐标,当圆形滑动条底图替换后, 底图圆心不在中点时需通过设置圆心横纵坐标找到圆心。圆心横纵坐标的位置与圆形滑动条的高度和宽度有 关,圆心各个位置图,如图 4.3 所示。 圆心 (0,0) 位置 圆心默认位置 圆心 (100, 100) 位置 圆形滑动条的宽和高为 图4.3 圆心横纵坐标 4.3 如何设置半径 点击半径下的输入框,可通过键盘或“+ ”“- ”按钮设置半径,设置半径即设置以圆形滑动条中点为圆心到 滑块之间的距离,- 1 为默认半径 (不代表任何数值意义) ,如图 4.4 所示。 图4.4 设置半径 4.4 如何设置宽度 点击宽度下的输入框,可通过键盘或“+ ”“- ”按钮设置宽度,设置宽度即设置圆形滑动条显示的宽度,如 图 4.5 所示。 图4.5 宽度设置 4.5 如何设置最大/小值 点击最大/小值下的输入框,可通过键盘或“+ ”、“- ”按钮设置滑动条的最大/小值,最大值默认为 100 ,最 小值默认为 0。 设置最大/小值即设置滑动条代表的数据的最大最小值。 如设置最小值为 15 ,最大值为 36 ,则代表滑动条起始值为 15 ,滑动条的终止值为 36 ,如图 4.6 所示。 图4.6 设置最大/小值 注:需对滑动条进行变量绑定,绑定一个最小值为 15 最大值为 16 的整型自定义变量 4.6 如何设置触发模式 点击触发模式下的按钮弹出下拉框,有连续触发和释放时触发模式,选择连续触发则在拉动滑动条时一直触 发,释放时触发模式为拉动滑动条在拉动后释放那瞬间进行触发,如图 4.7 所示。 图4.7 设置触发模式 5.应用案例 5.1 事件列表 事件列表,如下表说明: 控件初始化 “圆形滑动条”初始化时触发事件 控件销毁 “圆形滑动条”销毁时触发事件 值发生变化 “圆形滑动条”进行滑动操作时触发 5.2 如何通过圆形滑动条发送自定义协议指令 1 、如何添加事件 选中圆形滑动条,点击右侧属性窗口中的事件,可进行添加事件,如图 5.1 所示。 图5.1 添加事件 2 、如何设置处理方法 自定义协议是用户可在项目中使用其他的协议,如 modbus 协议。 点击处理方法右下方 ,弹出处理方法窗口,选择命令发送→选择【自定义协议】发送串口命令→设置命 令,如图 5.2 所示。 图5.2 【自定义协议】发送串口命令 注:点击【自定义协议】发送串口命令的输入框时会弹出自定义指令函数说明窗口,如图 5.3 所示。 图5.3 自定义指令函数说明窗口 3 、如何变量绑定 选中滑动条,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性“当前值”→数据源绑定“Var0” →转换模式“双向”→转换方法“默认”,操作如图 5.4 所示。 图5.4 变量绑定 注:Var0 变量为 4 、如何查看圆形滑动条发送的标准协议指令 当发送自定义协议指令为“AB CD $BYTE(#3005) $CRC16MODBUS( 1,3) $DELAY(1000) ”时,点击仿真运行按钮 ,在仿真界面中滑动圆形滑动条,查看发送的指令,如图 5.5 所示。 图5.5 发送【自定义协议】指令 5.2 如何通过自定义解析设置圆形滑动条 1 、如何添加自定义解析 点击项目弹出项目窗口,点击协议设置→协议类型设置为“自定义协议”→点击自定义协议解析设置→弹出 解析设置窗口→点击添加弹出自定义解析设置窗口,根据需求和要求进行设置可添加一个自定义协议解析, 如图 5.6 所示。 图5.6 添加自定义协议解析 2 、如何设置自定解析 帧头设置为“AB CD 00 01”→勾选检验帧尾→帧尾“00 01”→帧总长度“7”→关联变量索引为“3005”→ 数据起始偏移字节“5”→数据长度 (字节) 为“1”→数据格式为“1 字节”→数据类型为“连续量”→点 击“确认” ,如图 5.7 所示。 图5.7 设置自定义解析 3 、仿真调试 具体仿真调试操作及方法详看《仿真调试使用手册》,如图 5.8 所示,通过串口调试工具软件 发送指令“AB CD 00 01 19 00 01” ,圆形滑动条拉动到 25 的位置 图5.8 仿真调试 若有收获,就点个赞吧 --- ### 13. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.滑动条介绍 滑动条可应用于温度、音量和亮度等调节功能当中,相较于按钮控件等更加快速且直观。 2.如何添加滑动条 打开或新建工程,点击常用控件模块或工具箱中的滑动条图标,可添加滑动条,如图 2.1 所示。 图2.1 添加滑动条 3.如何进行图片替换 选中滑动条,点击右侧属性窗口,可进行图像修改,点击“添加”按钮添加滑块显示,底图为滑动条未拉动 时显示的图片,状态图为滑动条拉动后显示的图片,滑块显示滑动条拉动的位置,如图 3.1 所示。 图3.1 图片替换 仿真时,滑动条无操作时显示底图及滑块,如图 3.2 所示。 图3.2 滑动条无操作 拉动滑动条,如图 3.3 所示。 图3.3 拉动滑动条 4.如何设置杂项 点击右侧属性窗口中的 ,可设置滑动条的偏移坐标、最大小值、方向和触发模式,如图 4.1 所示。 图4.1 设置杂项 4.1 如何设置滑块偏移坐标 点击滑块起始/终止偏移坐标下的输入框,可通过键盘或“+ ”“- ”按钮设置滑块起始/终止偏移坐标,设置 滑块偏移坐标即设置滑动条可拉动的范围。默认为 0 即滑块起始/终止坐标不作限制,在滑动条范围内可随意 拉动。 滑块起始偏移坐标为滑动条拉动的起始坐标,滑块拉动滑块终止偏移坐标为滑动条拉动的终止坐标,且滑动 条的最左边为起始坐标为 0 ,最右边为终止坐标为 305 (滑动条的终止横坐标与滑动条的宽度有关) 。 滑块起始偏移坐标为 45 ,即滑块起始位置为滑动条 45 的位置,滑块终止坐标为 100 ,即滑块终止位置 (不能 再拉动) 为滑动条 100 的位置。如图 4.2 所示。 图4.2 滑块偏移坐标 4.2 如何设置最大/小值 点击最大/小值下的输入框,可通过键盘或“+ ”、“- ”按钮设置滑动条的最大/小值,最大值默认为 100 ,最 小值默认为 0。 设置最大/小值即设置滑动条代表的数据的最大最小值。 如设置最小值为 16 ,最大值为 35 ,则代表滑动条起始值为 16 ,滑动条的终止值为 35 ,如图 4.3 所示。 图4.3 设置最大/小值 4.3 如何设置滑动条方向 点击方向下的按钮弹出下拉框,有横向和纵向,选择横向则拉动的方向为横向,选择纵向则拉动的方向为纵 向,如图 4.4 所示。 图4.4 设置滑动条方向 4.4 如何设置触发模式 点击触发模式下的按钮弹出下拉框,有连续触发和释放时触发模式,选择连续触发则在拉动滑动条时一直触 发,释放时触发模式为拉动滑动条在拉动后释放那瞬间进行触发,如图 4.5 所示。 图4.5 设置触发模式 5.应用案例 5.1 事件列表 事件列表,如下表说明: 控件初始化 “滑动条”初始化时触发事件 控件销毁 “滑动条”销毁时触发事件 值发生变化 “滑动条”进行滑动操作时触发 5.2 如何通过滑动条发送自定义协议指令 1 、如何添加事件 选中滑动条,点击右侧属性窗口中的事件,可进行添加事件,如图 5.1 所示。 图5.1 添加事件 2 、如何设置处理方法 自定义协议是用户可在项目中使用其他的协议,如 modbus 协议。 点击处理方法右下方 ,弹出处理方法窗口,选择命令发送→选择【自定义协议】发送串口命令→设置命令,如图 5.2 所示。 图5.2 【自定义协议】发送串口命令 注:点击【自定义协议】发送串口命令的输入框时会弹出自定义指令函数说明窗口,如图 5.3 所示。 图5.3 自定义指令函数说明窗口 3 、如何查看滑动条发送的标准协议指令 当发送自定义协议指令为“AB CD $BYTE(#3005) $CRC16MODBUS( 1,3) $DELAY(1000) ”时,点击仿真运行按钮 ,在仿真界面中滑动滑动条,查看发送的指令,如图 5.4 所示。 图5.4 发送【自定义协议】指令 5.3 如何通过滑动条控制亮度 通过拉动滑动条调节亮度显示,具体操作设置如下。 1 、如何添加文本控件及滑动条 新建一个文本控件用于显示亮度具体数值,点击常用滑块中的滑动条和文本控件图标即可添加,如图 5.5 所 示。 图5.5 添加控件 2 、如何设置文本控件变量绑定 点击右侧属性窗口中的变量绑定→添加→被绑定的控件属性为“文本 1”→数据源绑定“系统配置—— Brightness”→转换模式“单向”→转换方法“默认”,如图 5.6 所示。 图5.6 设置文本控件变量绑定 注意:数据源绑定的变量“系统配置——Brightness”,如图 5.7 所示 图5.7 Brightness 变量 3 、如何设置滑动条变量绑定 选中滑动条,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性“当前值”→数据源绑定“系 统配置——Brightness”→转换模式“双向”→转换方法“默认” ,操作如图 5.8 所示。 图5.8 设置滑动条变量绑定 4 、仿真运行 拉动滑动条可设置调节屏幕亮度,如图 5.9 所示。 图5.9 仿真运行 5.4 如何通过滑动条控制动画播放速度 通过滑动条控制GIF 动画的播放速度,具体操作如下。 1 、如何添加动画控件及滑动条 点击工具箱中的标准控件,点击动画和滑动条图标添加对应控件,如图 5.10 所示。 图5.10 添加控件 2 、如何为动画控件进行图像替换 选中动画控件点击右侧属性窗口中的图像选择图片,动态图片选择一个 GIF 格式图片,如图 5.11 所示。 图5.11 动画控件图像替换 3 、如何设置滑动条变量绑定 选中滑动条,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性“当前值”→数据源绑定“Var0” →转换模式“双向”→转换方法“默认”,操作如图 5.12 所示。 图5.12 滑动条变量绑定 注:Var0 变量为 4 、如何设置动画变量绑定 选中动画控件,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“播放速度”→数据源绑 定“Var0”→转换模式“单向”→转换方法“默认”,操作如图 5.13 所示。 图5.13 设置动画控件变量绑定 5 、仿真演示 点击仿真运行按钮,弹出仿真运行窗口,拉动滑动条可控制动画的播放速度,可快速也可慢速播放,如图 5.14 所示。 图5.14 仿真运行 --- ### 14. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.时间显示介绍 时间显示即显示当前系统的时间,时间显示通过文本控件绑定系统时间变量进行显示,同时也可通过控件进 行修改。 2.时间设置介绍 时间设置可以通过控件进行设置同时也可通过指令进行设置,通过控件——系统时间设置 (快捷方式) 可快 速进行时间设置,操作简单易上手,通过自定义解析指令也可设置时间显示。 3.如何设置时间显示 通过文本控件绑定系统时间变量可进行时间显示,具体操作步骤如下。 1 、如何添加文本控件 点击常用控件模块中的文本图标, 可添加对应控件,如图 3.1 所示。 图3.1 添加文本控件 2 、如何设置文本控件变量绑定 点选中文本控件,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“文本 1”→数据源绑 定 “ 系 统 时 间 — — SysTime ” → 转 换 模 式 为 “ 单 向 ” → 转 换 方 法 为 “ 日 期 时 间 ” → 转 换 参 数 “yyyy- MM-dd-hh-mm-ss”,如图 3.2 所示。 (注:yyyy 代表年 MM 代表月 dd 代表日 hh 代表时 mm 代表分 ss 代表秒,中间的间隔“- ”可随意更改不可用空格作为间隔) 图3.2 变量绑定 注意:数据源绑定的变量“系统时间——SysTime” ,如图 3.3 所示 图3.3 系统时间显示 3 、仿真演示 点击仿真运行按钮,弹出仿真运行窗口,显示系统时间,系统时间默为 2019-01-01-09-00-00 如图 3.4 所示。 图3.4 系统时间显示 4.如何通过系统时间设置 (快捷方式) 设置时间 1 、如何添加系统时间设置 (快捷方式) 点击工具箱中的通用模板,点击系统时间设置 (快捷方式) 图标,添加系统时间设置 (快捷方式) ,如图 4. 1 所示。 图4.1 添加系统时间设置(快捷方式) 2 、如何为系统时间设置 (快捷方式) 添加文本显示 系统时间设置 (快捷方式) 上一排按钮为增加按钮,下一排按钮为减按钮,最底下的按钮为确认按钮,在通 过系统时间 (快捷方式) 设置系统时间后需得点击确认按钮后才可实现更改,否则设置无效。增按钮添加文 本“+ ”,减按钮添加文本“- ”,确认按钮输入“确认”,具体设置方法详看《按钮类控件》 中“如何添加 文本显示” ,此处不作复述,如图 4.2 所示 图4.2 文本显示 3 、仿真演示 点击仿真运行按钮弹出仿真运行窗口,点击设置系统时间后点击确认键,系统时间设置成功。 系统原本时间显示,如图 4.3 所示。 图4.3 原本系统时间 修改后的系统时间显示,如图 4.4 所示。 图4.4 系统修改后时间 5.如何通过指令修改系统时间 1 、如何设置协议类型 点击菜单栏中的项目,弹出项目窗口,点击协议设置→协议类型设置为“自定义协议”,如图 5.1 所示。 图5.1 设置协议类型 2 、如何设置“自定义协议解析设置” 点击自定义协议解析设置弹出协议解析窗口,点击添加按钮可添加一个协议解析,如图 5.2 所示。 图5.2 添加自定义协议解析 3 、如何设置年月日时分秒自定义协议解析 自定义协议解析具体设置方法及介绍详看《GVSUI 自定义指令模块说明》 年设置的自定义协议解析,帧头为“23 AA 56 02”→帧尾为“73 65 6F 6B 65 6E 64”→帧总长度“18”→关联 变量“201”→数据起始偏移字节为“8”→数据长度为“1”→数据格式为“1 字节”→数据类型为“连续量” →数据转换格式为“@+2000”,如图 5.3 所示。 图5.3 年自定义协议解析 月设置的自定义协议解析,帧头为“23 AA 56 02”→帧总长度“18”→关联变量“202”→数据起始偏移字节 为“9”→数据长度为“1”→数据格式为“1 字节”→数据类型为“连续量” ,如图 5.4 所示。 图5.4 月自定义协议解析 日设置的自定义协议解析,帧头为“23 AA 56 02”→帧总长度“18”→关联变量“203”→数据起始偏移字节 为“10”→数据长度为“1”→数据格式为“1 字节”→数据类型为“连续量”,如图 5.5 所示。 图5.5 日自定义协议解析 时设置的自定义协议解析,帧头为“23 AA 56 02”→帧总长度“18”→关联变量“204”→数据起始偏移字节为“5”→数据长度为“1”→数据格式为“1 字节”→数据类型为“连续量” ,如图 5.6 所示。 图5.6 时自定义协议解析 时设置的自定义协议解析,帧头为“23 AA 56 02”→帧总长度“18”→关联变量“205”→数据起始偏移字节 为“6”→数据长度为“1”→数据格式为“1 字节”→数据类型为“连续量” ,如图 5.6 所示。 图5.6 分自定义协议解析 秒设置的自定义协议解析,帧头为“23 AA 56 02”→帧总长度“18”→关联变量“206”→数据起始偏移字节 为“7”→数据长度为“1”→数据格式为“1 字节”→数据类型为“连续量” ,如图 5.7 所示。 图5.7 秒自定义协议解析 4 、仿真调试 仿真调试具体步骤详看《仿真调试》说明文档,发送指令“23 AA 56 02 0B 1B 0a 11 07 02 06 73 65 6F 6B 65 6E 64”,年月日时分秒修改为“2017-07-02- 11-27- 10”,如图 5.8 所示。 图5.8 仿真调试 --- ### 15. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.文字控件介绍 文字控件是用于显示数值、提醒和时间等,应用场景比较广泛。 2.如何添加文字控件 打开或新建一个工程文件,点击常用控件模块中的文本图标,在窗口中添加一个文字控件,如图 2.1 所示。 图2.1 添加文字控件 3.如何设置文字控件的外观 选中控件,点击右侧属性窗口中的 → ,点击添加按钮可添加多个文本显示,如图 3.1 所示。 图3.1 外观属性修改 3.1 如何设置文本形态 点击文本,有静态文本及动态文本,静态文本用于通常情况下手动输入的内容,在静态文本输入框中输入内 容,直接在窗口中显示,动态文本用于显示变量的内容,如图 3.2 所示。 图3.2 文本形态设置 3.2 如何修改字体 动态文本的字体显示修改需提亲到字库管理中提前设置,具体设置方法详情请看《资源使用手册》。 选择静态文本,点击字体右侧的按钮,弹出字体修改窗口,可根据需求对字体字号等进行修改,如图 3.3 所 示。 图3.3 修改字体 3.3 如何修改文字颜色 点击文字颜色右侧的方框,弹出调色盘,可根据需求对文字颜色进行修改,文字颜色默认为黑色,如图 3.4 所示。 图3.4 修改文字颜色 3.4 如何修改背景色 点击背景色右侧的方框,弹出调色盘,可根据需求对背景色进行修改,背景色默认为透明,如图 3.5 所示。 图3.5 修改背景色 3.5 如何修改对齐方式 点击对齐方式下的按钮,用户可根据需求输入的文本的对齐方式进行修改,对齐方式默认为居中,如图 3.6所示。 图3.6 修改对齐方式 4.应用案例 4.1 如何设置多种语言切换 通过点击单选按钮切换中英文显示,具体操作方法及设置如下。 1 、如何添加语言显示 点击菜单栏中的项目,选择多语言设置→点击添加→选择新添加的语言输入框修改名字为“English”,如图 4.1 所示。 图4.1 添加语言 2 、如何添加控件 点击常用控件模块中的窗口图标,添加一个窗口 NEW2 ,在窗口 NEW1 中添加一个文字控件和按钮控件,在 窗口 NEW2 中添加一个单选按钮,如图 4.2 所示。 图4.2 添加控件 3 、如何设置多语言 选中窗口 NEW1 中的文字控件,点击右侧属性窗口中的文字→选择静态文本→点击文本输入框下右侧按钮→ 在两个语言的输入框中输入不同语言的文字,如图 4.3 所示。 图4.3 设置多语言 4 、如何添加变量绑定 点击窗口中的单选按钮,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“选中状态”→ 数据源绑定“Language”→转换模式为“双向”→转换方法为默认,如图 4.4 所示。 图4.4 添加变量绑定 注:language 变量为 5 、如何添加事件 点击窗口 NEW1 中的按钮控件,点击右侧属性窗口中的事件→添加事件→事件设置为“点击”→点击处理方 法下的“... ”弹出处理方法窗口→选择窗口切换中的“切换窗口”→ 目标窗口选择“NEW2”,如图 4.5 所示。 图4.5 按钮控件添加事件 点击窗口 NEW2 中的单选按钮,点击右侧属性窗口中的事件→添加事件→事件设置为“选中”→点击处理方 法下的“... ”弹出处理方法窗口→选择窗口切换中的“切换窗口”→ 目标窗口选择“NEW1”,如图 4.6 所示。 图4.6 单选按钮添加事件 6 、仿真演示 点击仿真运行按钮,弹出仿真运行窗口,文字控件默认显示中文,点击单选按钮,文字控件显示为英文,如 图 4.7 所示。 图4.7 仿真演示 4.2 如何通过按钮切换文字控件显示 1 、如何添加控件 点击常用控件模块中的文本和按钮图标,添加一个文字控件和按钮控件,如图 4.8 所示。 图4.8 添加控件 2 、如何设置文字控件 选中文字控件,点击右侧属性窗口中的文字→点击添加按钮添加多个文本→点击文本→选择静态文本→在输 入框中输入需要显示的内容,如图 4.9 所示。 图4.9 设置文字控件 3 、如何设置文字控件变量绑定 选中文字控件,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性为“文本索引”→数据源绑 定“Var0”→转换模式为“单向”→转换方法为“默认”,如图 4.10 所示。 图4.10 添加变量绑定 注:Var0 变量为 4 、如何设置按钮控件事件 选中按钮控件,点击右侧属性窗口中的事件→点击添加→事件设置为“点击”→点击处理方法下的“... ”弹 出处理方法窗口→选择变量操作中的“变量循环增减”→ 目标变量选择“Var0”→步进值输入“1” ,如图 4.11 所示。 图4.11 事件设置 5 、仿真演示 点击仿真运行按钮,弹出仿真运行窗口,点击按钮可切换文字控件的文本显示如图 4.12 所示。 图4.12 仿真演示 若有收获,就点个赞吧 --- ### 16. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1. 自定义协议指令介绍 自定义指令是为了方便用户在使用过程中在某些项目里面需要使用到其他协议,而不仅局限于 GVS 标准协议, 扩大了使用协议的范围,如:可在项目中使用 modbus 协议, 自定义协议主要包括两个大模块,一个是自定 义协议发送模块,另一个是自定义指令接收解析模块。 2.如何发送自定义协议 新建或打开已有的工程文件,选中控件,现以按钮控件为例,添加事件,设置处理方法为“命令发送→【自 定义协议】发送串口命令” ,可添加控件自定义协议发送,如图 2.1 所示。 图2.1 添加自定义协议发送 3.如何发送自定义协议报文 1、 自定义指令函数说明 点击命令下的输入框,弹出自定义指令函数说明窗口,在输入框中可输入 16 进制数字,也可进行算法运算以 及 CRC 算法,根据自定义指令函数说明窗口设置自定义协议发送,如图 3.1 所示。 图3.1 自定义指令函数说明 BYTE 该关键字为单字节,比如$BYTE(#3000),意思就是将索引为 3000 的变量的值在该位置上取最低字节,比如索引 3000 变量的值为 0x1024,例如需要发送自定义协议 55 AA $BYTE(#3000) 10 ff ,那么发送的自定义协议指令为: 55 AA 24 10 FF。 同时也可以实现运算:55 AA $BYTE(#3000+2) 10 ff ,那么发送的自定义协议指令为:55 AA 26 10 FF。 2BYTEM 与 BYTE 用法一致,但是该关键字表示为两个字节,结尾的’ M’代表高位在前,例如索引3000 变量的值为 0x1234, 那么,该位置就是 0x12 0x34 ,假设需要发送自定义协议 55 AA $2BYTEM(#3000) 10 ff ,那么发送的自定义协议 指令为:55 AA 12 34 10 FF。 2BYTEL 与 2BYTEM 用法一致,结尾的’ L’代表低位在前,例如索引 3000 变量的值为 0x1234,那么,该位置就是 0x34 0x12, 假设需要发送自定义协议 55 AA $2BYTEL(#3000) 10 ff ,那么发送的自定义协议指令为:55 AA 34 12 10 FF。 4BYTEM 与 BYTE 用法一致,但是该关键字表示为四个字节,结尾的’M’代表高位在前,例如索引 3000 变量的值为 0x12345678,那么,该位置就是 0x12 0x34 0x56 0x78 ,假设需要发送自定义协议 55 AA $4BYTEM(#3000) 10 ff, 那么发送的自定义协议指令为:55 AA 12 34 56 78 10 FF。 4BYTEL 与 4BYTEL 用法一致,有四个字节且低位在前,同理也是用于运算以及取变量值,例如$4BYTEL(#3000) ,假如 该变量值为 1 ,那么该位置为 01 00 00 00 ,假设需要发送自定义协议 55 AA $4BYTEL(#3000) 10 ff ,那么发送的 自定义协议指令为:55 AA 01 00 00 00 10 FF。 CRC16MODBUS 该关键字表示在该位置上使用标准 MODBUS 的校验方式,大小为两个字节,写法为$CRC16MODBUS(a,b) ,参 数 a 代表从哪个位置开始校验,比如从第 1 位开始 (这里没有第 0 位) 则参数 a 为 1 ,参数 b 代表所需校验 长度,如 AB CD $BYTE(#3000) $CRC16MODBUS( 1,3)其中参数 a 为 1 即从第一个字节开始校验,参数 b 为 3 即 校验长度为 3. DELAY 该关键字写在自定义指令后边表示该指令需要延迟多少毫秒再发出,如$DELAY(1000)即延迟 1000ms 发送,例 如需要发送自定义协议 55 AA 11 10 ff $DELAY(1000),那么延迟 1000ms 发送的自定义协议指令为:55 AA 11 10 FF。 SUM8 该关键字表示在该位置是一个 1 字节的累加校验,写法为$SUM8(a,b),ab 用法同 CRC16MODBUS WAIT 该关键字表示是个阻塞,搭配专属关键字 WAITBYTES 一起使用,比如$WAIT(300,9,$WAITBYTES(0x45,0xaa)),那 么他的意思是发送完该指令后,等待接收到数据头部为 0x45,0xaa,长度为 9 的应答后才能发送下一帧指令或 者等待 300 毫秒接收超时 (无应答) 再发送下一帧指令,避免数据混乱,WAITBYTES 关键字的等待接收数据 段可变长 BITS 该关键字表示 1 个字节处理,固定 8 位,比如:$BITS(1,0,0,0, 1, 1,0, 1),它表示:0x8d, 同时他也可以使用变量: $BITS(#3000,#3001, 1, 1,0,0,0,0), 当括号内元素为非 0 时候,固定为 1 ,元素不足 8 个, 自动填充 0 2、如何设置帧头 ( 自定义协议发送帧头设置) 帧头设置,帧头为 16 进制数字组成,可根据需求进行设置,如帧头输入 3、如何设置数据位 数据设置,确定好需要发送的变量数据,再确定其字节数,其中数据可进行算法运算,如$BYTE((#3000+45)*2): 假如#3000 变量的值为 6 ,那么,该位置的值为: (6+45) *2=102=0x66 ,则数据位应显示 66 4、仿真演示 点击仿真运行按钮 ,弹出仿真运行窗口。 发送指令:FF AA 04 05 06 $BYTE((#3000+45)*2) $CRC16MODBUS( 1,6) $DELAY(3000) 即点击按钮控件,在接收端 3000ms 后可接收到指令“FF AA 04 05 06 66 9E B7” ,如图 3.2 所示。 图3.2 自定义协议发送 4.如何添加自定义解析 点击项目弹出项目窗口,点击协议设置→协议类型设置为“自定义协议”→点击自定义协议解析设置→弹出 解析设置窗口→点击添加弹出自定义解析设置窗口,根据需求和要求进行设置可添加一个自定义协议解析, 如图 4.1 所示。 图4.1 添加自定义协议解析 5.如何设置自定义协议解析 1、如何设置帧头 ( 自定义协议解析帧头设置) 帧头可输入小于等于 10 字节长度的帧头,每个解析帧头必须不同,点击帧头弹出自定义指令函数说明窗口, 在帧头中输入指令函数,可起到精确设备进行解析的作用,如在帧头中输入$BYTE(#3000) ,则变量索引为 0x3000 这个变量作为地址变量,通过变量索引为 0x3000 变量设置设备地址后,通过帧头 AB CD $BYTE(#3000) 可准确地让该设备进行解析,如图 5.1 所示。 图5.1 帧头设置 2、如何设置帧尾 勾选校验帧尾,即添加帧尾校验,可输入小于等于 10 字节长度数据,不勾选校验帧尾,即不添加。点击校验 帧尾输入框,弹出自定义指令函数说明窗口,在帧尾中输入指令函数$CRC16MODBUS(1,6) ,可对指令进行 MODBUS 校验,帧尾 00 $CRC16MODBUS( 1,6)如图 5.2 所示。 图5.2 帧尾设置 3、如何设置帧总长度 帧总长度即将接收的帧总长度,包括帧头、数据位和帧尾,如图 5.3 所示。 图5.3 帧总长度设置 4、如何设置关联变量 关联变量,用于将该解析方法与变量关联起来,填写的数值为变量的变量索引,比如 201 ,即最终解析出来 的值是变量 201 的值,例如索引为 201 的变量是系统时间年份,通过指令可设置系统时间年份。 图5.4 关联变量设置 5、如何设置数据起始偏移(字节) 数据起始偏移字节即这一帧里面的数据内容是从哪个字节开始的,如图 5.5 所示。 图5.5 设置数据起始偏移字节 6、如何设置数据长度 (字节) 数据长度字节即从数据起始偏移字节开始之后多少字节是数据,如图 5.6 所示。 图5.6 设置数据长度(字节) 7、如何设置数据位偏移 数据位偏移:只有当选择数据类型为 1 位或者 2 位时候才出现,它的意思是选取该字节的第几位 (从 0 开始 数) ,比如数据格式选了 1 位,数据位偏移为 3 ,接收到的数据为 0xaa ,二进制显示为:10101010 ,那么这 时候获取到的值为 1 。假如数据格式选了 2 位,10101010 ,那么这时候获取到的值为 01 (二进制) ,如图 5.7 所示。 图5.7 设置数据位偏移 8、如何设置数据格式 1 位:单字节例如 0x41 ,那么其二进制显示为 01000001 ,每一个都是一个位,例如 (右数) 第一位为:1, 第二位为:0 ,依次类推 2 位:和 1 位一样,是以二进制进行运算,但是取其两个位,比如 01 或 00。 1 字节:数据格式是单字节,如 a1。 2 字节 (高位在前) :数据假如是 1 ,那么接收到的数据必须为 00 01 2 字节 (低位在前) :数据假如是 1 ,那么接收到的数据必须为 01 00 4 字节 (高位在前) :数据假如是 1 ,那么接收到的数据必须为 00 00 00 01 4 字节 (低位在前) :数据假如是 1 ,那么接收到的数据必须为 01 00 00 00 如图 5.8 所示。 图5.8 数据格式设置 9、如何设置数据类型 开关量:这里必须与数据比较这一栏一起看: 当获取到的数据内容与数据比较填入的值完全相同时候,数据值为 1,反之则为 0.假如数据比较写入:26 14, 接收到的数据为 26 14 ,那么该数据正确,开关量变为开,也就是 1 ,反之,开关量为关,也就是 0 ,从而达 到开关目的。1 位的数据比较是与 0, 1 进行比较,2 位取出来数据为 0, 1,2,3 ,故比较数据为 0-3。 连续量: 在连续量里,对应可以填入公式,假如不填,那么数据接收后就是原数据,假如加入公式,如上图所示:@ 代表接收到的数据,#3000 代表变量 3000 ,全部变量均要加上#号。 10、如何设置事件编号 设置事件处理,即接收到指令解析后,同时执行事件处理方法,填写事件处理编号,如图 5.9 所示。 图5.9 设置事件编号 6.如何设置事件处理 设置事件处理,即接收到指令解析后,同时执行事件处理方法。 1、如何添加事件处理 点击菜单栏中的事件,选择事件处理→弹出事件处理窗口→点击添加→设置事件编号(事件编号为 100-65535) 如图 6.1。 图6.1 添加事件处理 2、如何设置数据格式 数据格式设置其数据类型,如图 6.2 所示。 图6.2 设置数据格式 3、如何设置处理方法 点击添加事件处理方法→点击“... ”按钮弹出处理方法窗口→根据设置需求进行设置处理方法 ( 一个事件可 添加多个处理方法) ,如图 6.3 所示。 图6.3 添加事件处理方法 4、仿真演示 接收到指令 AB CD 00 07 E4 00 CE D1,系统时间年份修改为 2020,同时界面切换至 NEW2 窗口且发送指令 11 22 33 44 指令解析前,如图 6.4 所示 图6.4 仿真演示 指令解析后,如图 6.5 所示。 图6.5 仿真演示 7.如何通过自定义指令解析触发事件 通过自定义指令解析触发事件分为两种类型,分别通过开关量对比触发及连续量直接触发 1、通过开关量触发,设置如下 关联变量不填,帧尾选择性填,其他必填,意思是当长度,数据长度以及帧头 (帧尾) 符合时候,通过对比 数据是否为 00 01 (必须与数据格式对应) 决定是否触发编号为 100 的事件 2 、直接触发,设置如下: 转换公式与关联变量不填,帧尾可选择性填,其他必填,当长度,数据长度以及帧头 (帧尾) 符合时候直接 触发。 若有收获,就点个赞吧 --- ### 17. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.如何添加按钮类控件 点击快捷栏或工具箱对应图标可进行添加控件,如图 1.1 所示。 图1.1 添加控件 注:快捷栏列出的为常用的控件,工具箱中按钮类控件包含了所有按钮控件。 用户点击需要添加控件的窗口,选中控件, 鼠标变为图标,可进行添加; 点击鼠标左键可继续添加,点击鼠标右键或点击编辑模块中 ,停止添加。 2.如何修改控件位置大小及外观 2.1 如何修改控件位置及大小 选中控件,点击鼠标左键可拖动缩放控件或点击右侧属性窗口 ,对位置和大小进行精确调整,如图2.1 所示。 图2.1 公共属性修改 2.2 如何修改外观属性 选中控件,点击右侧属性窗口中的→ ,如图 2.2 所示。 图2.2 外观属性修改 点击“弹起状态”,下方选项有透明、单色、图片三种选项,如下表所示,鼠标点击可任意进行切换选择。 透明 控件为透明状态显示 单色 控件为单个颜色显示,点击进入颜色盘窗口,用户可根据实际需求进行选择 图片 控件为图片形式显示,点击弹起状态右侧 ,进行图片替换,如图 2.3 所示。 图2.3 图片替换 注:如使用图片量较大,可使用图片管理功能进行批量图片添加、替换、分类和管理,具体操作详见图片管 理说明。 2.3 如何为按钮控件添加文字 选中按钮控件,点击右侧属性窗口中的→ ,如图 2.4 所示。 图2.4 文字添加 点击文本,可进行添加和设置文本内容,可选静态文本,如图 2.5 所示。 图2.5 静态文本 在静态文本输入框中输入内容,可直接在窗口中显示。 2.3.1 如何修改字体 点击字体右侧的 按钮,弹出字体修改窗口,可根据需求对字体字号等进行修改,如图 2.6 所示。 图2.6 修改字体 2.3.2 如何修改文字颜色 点击文字颜色右侧的方框,弹出调色盘,可根据需求对文字颜色进行修改,文字颜色默认为黑色,如图 2.7 所示。 图2.7 修改文字颜色 2.3.3 如何修改背景颜色 点击背景色右侧的方框,弹出调色盘,可根据需求对背景色进行修改,背景色默认为透明,如图 2.8 所示。 图2.8 修改背景颜色 2.3.4 如何修改对齐方式 点击对齐方式下的按钮,用户可根据需求输入的文本的对齐方式进行修改,对齐方式默认为居中,如图 2.9 所示。 图2.9 修改文字对齐方式 3.按钮控件应用 3.1 控件介绍 按钮控件类似于生活中的开关,用户可通过单击来执行操作。按钮控件可显示文本和图像。 该控件在进行点击时,可触发页面跳转,数值的增加和减小等功能。 3.2 如何进行图片替换 选中按钮控件,点击右侧属性窗口,可进行图像修改。弹起状态为按钮不操作时显示的状态;按下状态为按 钮按下时显示的状态,图片替换操作步骤,如图 3.1 所示。 图3.1 图片替换 仿真时,按钮不操作,显示弹起状态图片,如图 3.2 所示。 图3.2 弹起状态 点击按钮,按下状态显示图片,如图 3.3 所示。 图3.3 按下状态 3.3 应用案例 3.3.1 事件列表 事件列表,如下表说明: 控件初始化 “按钮”控件初始化时触发事件 控件销毁 “按钮”控件销毁时触发事件 点击 “按钮”控件点击生效 (非滑动) 时触发事件 长按 “按钮”控件长按 (500ms) 时触发事件 触屏按下 “按钮”控件被按下 (还未完成点击仅按下) 时触发事件 获得焦点 “按钮”控件被按下 (已切换至按下图片) 时触发事件 失去焦点 “按钮”控件从按下恢复至弹起时触发事件 3.3.2 窗口切换 窗口切换即点击按钮可从当前窗口切换至目标窗口,具体设置方法如下。 1 、如何添加事件 选中按钮控件,点击右侧属性窗口中的事件,可进行添加事件,如图 3.4 所示。 图3.4 添加事件 2 、如何设置处理方法 点击处理方法右下方 ,弹出处理方法窗口,选择窗口切换和设置目标窗口,如图 3.5 所示。 图3.5 窗口切换 3.3.3 如何使用按钮控件发送 GVS 标准协议 1 、如何添加事件 同窗口切换添加事件操作方法一致,不做复述。 2 、如何设置处理方法 标准协议为 GVSUI 编辑工具私有协议,可进行修改变量,发送事件等操作。 点击处理方法右下方 ,弹出处理方法窗口,选择命令发送→选择【标准协议】发送事件命令 →设置事件编号,如图 3.6 所示。 图3.6 【标准协议】发送事件命令 3 、如何查看按钮控件发送的标准协议指令 当事件编号设置为 1 时,点击仿真运行按钮 ,在仿真界面中点击按钮,查看发送的指令,如图 3.7 所示。 图3.7 发送【标准协议】指令 3.3.4 如何使用按钮控件发送自定义协议 1 、如何添加事件 同窗口切换添加事件操作方法一致,不做复述。 2 、如何设置处理方法 自定义协议是用户可在项目中使用其他的协议,如 modbus 协议。 点击处理方法右下方 ,弹出处理方法窗口,选择命令发送→选择【自定义协议】发送串口命令→设置命 令,如图 3.8 所示。 图3.8 【自定义协议】发送串口命令 注:点击【自定义协议】发送串口命令的输入框时会弹出自定义指令函数说明窗口,如图 3.9 所示。 图3.9 自定义指令函数说明窗口 3 、如何查看按钮控件发送的标准协议指令 当发送自定义协议指令为“AB CD EF 01 $BYTE(#3000) $CRC16MODBUS(1,5) $DELAY(1000) ”时,点击仿真运行 按钮 ,在仿真界面中点击按钮,查看发送的指令,如图 3.10 所示。 图3.10 发送【自定义协议】指令 3.4 如何使用按钮控件进行文本输入 通过按钮控件进行文本输入的应用,详见《输入框的使用》说明书。 3.5 如何使用按钮控件设置参数 通过按钮控件点击更改阀门开启时间,具体设置操作如下。 1 、添加一个自定义变量 添加一个自定义变量用于存储阀门开始开启时间的值,如图 3.11 所示,具体添加步骤详看《变量的应用》说 明书。 图3.11 阀门开始时间设置变量 2 、如何添加按钮控件及文本控件 新建一个文本控件用于显示阀门开始时间,点击常用模块中的按钮控件和文本控件即可添加,如图 3.12 所示。 图3.12 添加按钮控件及文本控件 3 、如何添加变量绑定 选中文本控件,点击右侧属性窗口中的变量绑定,点击添加,被绑定的控件属性,数据源绑定和转换模式, 转换方法设置,操作如图 3.9 所示。 图3.9 添加变量绑定 4 、如何添加事件 添加事件为“点击” ,操作方法同上,具体详见 3.3.2 窗口切换案例。 5 、如何设置处理方法 点击处理方法右下方 ,弹出处理方法窗口,选择变量操作→选择变量设置→设置目标变量→使用常量, 输入框中输入 1 ,即点击按钮后,Var0 变量的值从初始值 0 变为 1 ,其他处理方法中的变量操作同上。 如图 3.11 所示。 图3.11 设置参数处理方法 6 、如何获取阀门开始时间 用户可通过协议指令获取阀门开启时间,具体操作步骤详看协议发送指令。 3.6 如何通过长按快速更改数值 如何添加按钮控件及文本控件 具体操作步骤同上一案例。 如何添加变量绑定 具体操作步骤同上一案例。 如何添加长按事件 选中按钮控件,点击右侧属性窗口,添加长按事件,如图 3.10 所示。 图3.10 长按事件 如何设置处理方法 点击处理方法右下方 ,弹出处理方法窗口,选择变量操作→选择变量循环增减→设置目标变量→设置步 进值,如图 3.11 所示。 图3.11 处理方法 仿真演示 仿真时,长按按钮控件可快速增加文本控件上显示的数值,如图 3.12 所示。 图3.12 仿真演示效果 4.单选按钮 (自锁按钮) 应用 4.1 控件介绍 单选按钮控件可以理解为一个开关按钮,有未选中和选中状态,通过该控件可实现开关操作。 4.2 如何进行图片替换 选中单选按钮控件,点击右侧属性窗口,可进行图像修改。 单选按钮点击按下时为选中状态;单选按钮不操作时或从选中状态再次点击后的弹起状态为未选中状态。 操作步骤如图 4.1 所示。 图4.1 图片替换 仿真时,单选按钮不操作或从选中状态再次点击后显示未选中状态,如图 4.2 所示。 图4.2 未选中状态 单选按钮点击按下时,选中状态显示,如图 4.3 所示。 图4.3 选中状态 4.3 应用案例 4.3.1 事件列表 事件列表,如下表说明: 控件初始化 “单选按钮”初始化时触发事件 控件销毁 “单选按钮”销毁时触发事件 触屏按下 “单选按钮”被按下 (还未完成点击仅按下) 时触发事件 选中 “单选控件”状态为选中时候触发事件 未选中 “单选控件”状态为未选中时候触发事件 4.4.1 如何使用单选按钮发送 GVS 标准协议 1 、如何添加事件 选中单选按钮控件,点击右侧属性窗口添加事件,操作方法,如图 4.4 所示。 图4.4 添加事件 2 、如何设置处理方法 点击处理方法右下方 ,弹出处理方法窗口,选择命令发送→选择【标准协议】发送事件命令→设置事件 编号,如图 4.5 所示。 图4.5 【标准协议】发送事件命令 4.4.2 如何使用单选按钮发送自定义协议 1 、如何添加事件 选择命令发送→选择【自定义协议】发送串口命令→设置命令,如图 4.6 所示。 图4.6 【自定义协议】发送串口命令 4.4.3 如何配置互锁按钮 互锁为多个单选按钮处于同一窗口,选中其中一个单选按钮时,其余单选按钮自动复原为未选中状态,互锁 的设置方法为同一窗口中单选按钮的组合名称要一致,如图 4.7 所示。 图4.7 互锁 5.多组按键应用 5.1 控件介绍 多组按键控件适用于既要实现按钮控件的功能,又要在按钮上以图像显示不同的状态。 当变量绑定的数据属性为图片索引时,会根据绑定的值调用该组状态图像,达到不同状态下自主切换的功能。 5.2 如何进行图片替换 选中多组按键控件,点击右侧属性窗口,可进行图像修改。点击“添加”可添加多组不同状态图像。 按钮不操作时显示的状态为弹起状态,按钮按下时显示的状态为按下状态,具体步骤如图 5.1 所示。 图5.1 图片替换 仿真时,按钮不操作显示弹起状态 1 图片,如图 5.2 所示。 图5.2 弹起状态 按钮点击按下时显示按下状态 1 图片,如图 5.3 所示。 图5.3 按下状态 5.3 应用案例 5.3.1 事件列表 事件列表,如下表说明: 控件初始化 “按钮”控件初始化时触发事件 控件销毁 “按钮”控件销毁时触发事件 点击 “按钮”控件点击生效 (非滑动) 时触发事件 长按 “按钮”控件长按 (500ms) 时触发事件 触屏按下 “按钮”控件被按下 (还未完成点击仅按下) 时触发事件 获得焦点 “按钮”控件被按下 (已切换至按下图片) 时触发事件 失去焦点 “按钮”控件从按下恢复至弹起时触发事件 协议相关操作同按扭控件操作类似,不作复述。 5.3.2 如何使用多组按键动态切换不同图像 点击主界面 (窗口 NEW1) 中的多组按键,切换至模式选择界面 (窗口 NEW2) ,在模式选择界面中,点击 选择所需要的模式,再返回到主界面,主界面中多组按键图像会显示相对应的模式图片并开启该模式。 操作步骤 1 、打开或新建工程,点击常用控件模块中的窗口,添加两个窗口,如图 5.4 所示。 图5.4 添加窗口 2 、在窗口 NEW1 中添加一个多组按键控件,选中多组按键进行添加和设置事件,操作步骤如图 5.5 所示。 图5.5 添加多组按键及添加事件 3 、选中窗口 NEW1 的多组按键控件,点击属性窗口中的变量绑定,进行绑定变量,操作步骤如图 5.6 所示。 图5.6 多组按键变量绑定 4 、点击窗口 NEW2 ,添加两个按钮控件,并对两个按钮控件均添加两个事件,事件触发均为点击,其中一个 事件为切换窗口至 NEW1 ,另一事件为“变量操作”—“变量设置” , 目标变量绑定“Var0”变量,设置值 为设置常量,第一个按钮在输入框中输入“0”,第二个按钮在输入框中输入“1”,如图 5.7 所示。 图5.7 按钮控件的事件设置 5 、设置按钮控件图像,如图 5.8 所示 (注:多组按键的图像设置同“图片替换及仿真演示”不作复述) 图5.8 设置图像 6 、仿真演示时点击多组按键可切换至 NEW2 窗口,点击按钮 2 可切换至 NEW1 窗口中,且多组按键图像显 示切换的第二组图片,如图 5.9 和 5.10 所示。 图5.10 点击按钮1 图5.9 点击按钮2 6.三态多组按键应用 6.1 控件介绍 三态多组按键与多组按键的功能相同,同时多了一个无效状态显示功能,用于设置按钮处于无效状态 (无法使用 状态) 。 6.2 如何进行图片替换 选中三态多组按键控件 ,点击右侧属性窗口 ,对三态多组按键进行图像修改 ,操作步骤如图 6.1 所示。 图6.1 图片替换 弹起状态 1 为三态多组按键不操作时显示的状态; 按下状态 1 为三态多组按键按下时显示的状态; 无效状态 1 为三态多组按键不使能时显示的状态. 仿真时三态多组按键不操作时,显示弹起状态 1 ,如图 6.2 所示。 图6.2 弹起状态1 三态多组按键点击按下时,显示按下状态 1 ,如图 6.3 所示。 图6.3 按下状态1 三态多组按键处于不使能状态时,显示无效状态 1 ,如图 6.4 所示。 图6.4 无效状态 6.3 应用案例 6.3.1 事件列表 事件列表,如下表说明: 控件初始化 “按钮”控件初始化时触发事件 控件销毁 “按钮”控件销毁时触发事件 点击 “按钮”控件点击生效 (非滑动) 时触发事件 长按 “按钮”控件长按 (500ms) 时触发事件 触屏按下 “按钮”控件被按下 (还未完成点击仅按下) 时触发事件 获得焦点 “按钮”控件被按下 (已切换至按下图片) 时触发事件 失去焦点 “按钮”控件从按下恢复至弹起时触发事件 协议相关操作同按扭控件操作类似,不作复述。 6.3.2 如何将三态多组按键设置为无效状态 以下案例通过加湿器按钮设置作为说明,点击加湿按钮时加湿器开始工作,当点击自动模式按钮时,加湿按钮处 于无效状态。 操作步骤 1 、打开或新建工程,添加一个多组按键和一个三态多组按键,如图 6.5 所示。 图6.5 添加一个多组按键和一个三态多组按键 2、调整各个控件的位置和大小,并设置其图像替换 (注:多组按键为自动模式,三态多组按键为加湿模式) 如图 6.6 所示。 图6.6 调整位置大小及图片替换 3 、选中多组按键控件,添加设置两个事件,事件触发均为点击,两个事件的处理方法和目标变量,如图 6.7 所示。 图6.7 多组按键的事件设置 4 、设置多组按键的变量绑定,被绑定的控件属性为图片索引,数据源绑定和转换模式等设置操作,如图 6.8 所示。 图6.8 多组按键的变量绑定 newmode 变量为: Automode 变量为: 5 、选中三态多组按键控件添加一个事件,事件触发为点击,事件处理方法和参数设置,操作如图 6.9 所示。 6.9 三态多组按键的事件设置 6 、添加两个三态多组按键的变量绑定,两个变量被绑定的控件属性和数据源及转换模式等设置操作,如图 6.10 所 示。 注:无效状态设置需要对三态多组按键进行变量绑定,被绑定的控件属性为操作使能,数据源、转换模式,转换 方法和转换参数设置参考图 6.10 所示,automode 变量的值与 0 进行比较,当为假时三态多组按键处于不使能状态 即为无效状态,为真时三态多组按键处于有效状态。 图6.10 三态多组按键变量绑定 7、仿真演示时,点击加湿按钮开启加湿模式;点击自动模式按钮,加湿按钮处于无效状态,如图 6.11 和 6.12 所示。 图6.11 点击加湿按钮 图6.12 点击自动模式 7.多组单选按钮应用 7.1 控件介绍 多组单选按钮控件与多组按键功能类似,既包含了单选按钮的功能,也可通过图像对不同状态进行显示,可以理 解为多组开关。当变量绑定的数据属性为图片索引时,会根据绑定的值调用该组开关图片,达到开关图片自主切 换的效果,同时该控件可显示不同状态按下或弹起的显示效果。 7.2 如何进行图片替换 选中多组单选按钮控件,点击右侧属性窗口,对多组单选按钮进行图像修改,操作步骤如图 7.1 所示。 图7.1 图片替换 未选中状态 1,为多组单选按钮不操作时显示的状态; 未选中状态按下 1,为多组单选按钮从未选中状态按下过程中时显示的状态; 选中状态 1,为多组单选按钮按下时显示的状态; 选中状态按下 1,为多组单选按钮从选中状态按下过程中显示的状态。 仿真时,多组单选按钮不操作时,显示未选中状态 1 ,如图 7.2 所示。 图7.2 未选中状态1 多组单选按钮从未选中状态按下过程中显示未选中状态按下 1 ,如图 7.3 所示。 图7.3 未选中状态按下1 多组单选按钮按下时显示选中状态 1 ,如图 7.4 所示。 图7.4 选中状态1 多组单选按钮从选中状态按下过程中显示选中状态按下 1 ,如图 7.5 所示。 图7.5 选中状态按下1 7.3 应用案例 7.3.1 事件列表 事件列表,如下表说明: 控件初始化 “单选按钮”初始化时触发事件 控件销毁 “单选按钮”销毁时触发事件 触屏按下 “单选按钮”被按下 (还未完成点击仅按下) 时触发事件 选中 “单选控件”状态为选中时候触发事件 未选中 “单选控件”状态为未选中时候触发事件 协议相关操作同按扭控件操作类似,不作复述。 7.3.2 如何使用多组单选按钮动态切换不同图像 点击所需要的不同模式按钮 (按钮控件) ,对应的模式开启按钮 (多组单选按钮控件) 显示选择的对应模式 图片,并点击模式开启按钮,该模式开启。 操作步骤 1 、打开或新建工程,添加三个按钮控件和一个多组单选按钮,如图 7.6 所示。 图7.6 添加控件 2 、调整及设置控件的大小和位置,并对控件进行图片替换,如图 7.7 所示。 图7.7 调整控件位置及大小和图片替换 3 、选中按钮控件,各添加一个事件,三个事件触发均为“点击”,处理方法和目标变量等参数设置操作,如 图 7.8 所示。 图7.8 按钮控件事件设置 4 、设置添加两个多组单选按钮的变量绑定,两个变量绑定操作设置如图 7.9 所示。 图7.9 多组单选按钮的变量绑定 Var0 和 Var1 变量为: 5 、仿真演示时,点击送风模式,多组单选按钮显示送风模式图片,点击选中多组单选按钮开启送风模式; 点击除湿模式,多组单选按钮显示除湿模式图片,点击选中多组单选按钮开启除湿模式; 点击制冷模式,多组单选按钮显示制冷模式图片,点击选中多组单选按钮,开启制冷模式,如图 7.10 、7.11 和 7.12 所示。 图7.10 开启送风模式 图7.11 开启除湿模式 图7.12 开启制冷模式 8.三态多组单选按钮应用 8.1 控件介绍 三态多组单选按钮控件兼容多组单选按钮功能,同时还多了一个无效状态显示功能,可设置按钮处于无效状态(无 法使用状态) 。 8.2 如何进行图片替换 选中三态多组单选按钮,点击右侧属性窗口,对三态多组单选按钮进行图像修改,操作步骤如图 8.1 所示。 图8.1 图片替换 未选中状态 1:为三态多组单选按钮不操作时显示的状态; 未选中状态按下 1:为三态多组单选按钮从未选中状态按下过程中时显示的状态; 选中状态 1:为三态多组单选按钮按下时显示的状态; 选中状态按下 1:为三态多组单选按钮从选中状态按下过程中显示的状态; 无效状态 1:为三态多组单选按钮不使能时显示的状态。 仿真时,三态多组单选按钮不操作时,显示未选中状态 1 ,如图 8.2 所示。 图8.2 未选中状态1 三态多组单选按钮从未选中状态按下过程中显示未选中状态按下 1 ,如图 8.3 所示。 图8.3 未选中状态按下1 三态多组单选按钮按下时显示选中状态 1 ,如图 8.4 所示。 图8.4 选中状态1 三态多组单选按钮从选中状态按下过程中显示选中状态按下 1 ,如图 8.5 所示。 图8.5 选中状态按下1 无效状态为三态多组单选按钮不使能时显示的状态。 图8.6 无效状态 8.3 事件列表 事件列表,如下表说明: 控件初始化 “单选按钮”初始化时触发事件 控件销毁 “单选按钮”销毁时触发事件 触屏按下 “单选按钮”被按下 (还未完成点击仅按下) 时触发事件 选中 “单选控件”状态为选中时候触发事件 未选中 “单选控件”状态为未选中时候触发事件 协议相关操作同按扭控件操作类似,不作复述。 --- ### 18. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.变量的定义 GVSUI 编辑工具中的变量是指在工作时其值可改变的量,变量的功能就是存储数据,每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,变量可应用于事件、变量绑定 等当中。 打开或新建工程,点击菜单栏中 ,弹出变量窗口,变量分为系统变量和自定义变量,系统变量不可更 改且不可添加或删除, 自定义变量可对添加的变量进行删除或更改索引等操作。 2.如何添加自定义变量 打开或新建工程,点击菜单栏中 ,弹出变量绑定窗口,点击 → ,如图 2.1 所 。 示 图2.1 添加自定义变量 3.如何设置自定义变量 3.1 如何设置自定义变量索引 添加变量后,点击索引下的输入框,弹出修改提示语,用户可根据提示对变量索引进行更改,索引默认为 0x3000 ,如图 3.1 所示。 G入范期0X3000 高级设雷 0XF000不可主 以值 给值 0X300G 删球 VAR0 1000 量小庄 买型 大百 10000 名称 禁型 克2] 0 图 3.1 更改变量索引 3.2 如何设置自定义变量名称 点击名称下的输入框,弹出修改提示语,用户可根据提示对变量名称进行更改,名称默认为 Var0,如图 3.2 所示。 度小于15个字符 与数字组成且长 名称只能由字母 10000 高级设置 VARO 0X3000 模拟值 10000 初始哈值 最大值 长最小值 删除 名称 整型 索引 类型   3.3 如何设置自定义变量类型 点击类型下的选择框弹出下拉框,用户可根据需求进行选择,类型默认为整型,如图 3.3 所示。 无符号整型 结构体焦合 高级设署 UTF8字符串 字符串 删除 浮点数 结构体 初始值 值 X3000 格型 类型 VAR0 整型 引 名彩 0 3.3.1 整型的定义 整型变量表示的是整数类型的数据,其最大最小值默认为 10000 和- 10000 ,整型变量为最常用的变量,使用 范围较广。 3.3.2 字符串的定义 字符变量是存放字符常量的变量,其取值是 ASCII 字符串常量。 3.3.3 无符号整型的定义 无符号整型变量为正整数类型的数据,无法设置复数,其最小值为大于或小于 0 ,最大最小值默认为 10000 和 0 ,其余同整型变量。 3.3.4 浮点数的定义 浮点数变量指的就是实数变量 (存放可以带小数的数据的变量) 。 高级设置 -10000最大值 0X3002 10000 浮点数 -10000 删除 最小值 VAR2 信10000   3.3.5 UTF8 字符串的定义 UTF8 字符串可储存中文数据,其设置同字符串,不可修改长度。 UTF8字符串 高级设置 0X3003 除 大长度字生 VAR3 3.3.6 结构体的定义 结构体是一种新数据类型,属构造类型,它由若干类型各异的“成员”组成;描述这些“成员”可以使用任 何基本数据类型。 结构体成员 结构体成员 结构体成员 结构体 0X3004 高级设置 VAR4 删除 设器 3.3.7 结构体集合的定义 结构体集合为多个结构体组成的一个集合的数据,其使用方法同结构体集合。 0X3005 高级设置 结构体集合 结构体成员 VAR5 设置 删除 设匿 设置   3.4 如何设置自定义变量初始值/模拟值 添加变量后,点击初始值/模拟值下的输入框,初始值为实际运行/仿真运行的默认值,模拟值为在 UI 配置软 件内显示的效果值,不作为实际输出,用户根据需求进行设置,如图 3.4 所示。 -10000最大1 10000 初始值 模拟值 最小值 高级设罩 类型 名称 VAR0 删除 0X3000 素引 整型 图 3.4 设置变量初始值/模拟值 3.5 如何设置结构体/结构体集合 1 、添加一个结构体/结构体集合,现以结构体为例,如图 3.5 所示。 图3.5 添加结构体变量 2、对结构体成员进行设置,点击“设置”按钮,弹出结构体成员窗口,点击添加按钮可添加多个结构体成员, 可添加不同类型的结构体成员,如图 3.6 所示。 图3.6 设置结构体成员 3 、点击初始值/模拟值下的结构体成员,可查看添加的结构体成员且设置其初始值/模拟值,如图 3.7 所示。 图3.7 设置初始值/模拟值 需注意的是,结构体集合变量中设置初始值与模拟值时,可对该结构体动态成员进行设置与模拟,点击初始 值/模拟值下的设置按钮弹出列表项设置窗口,点击添加按钮可添加多组结构体,在输入框中可输入初始值/ 模拟值,如图 3.8 所示 图3.8 设置结构体集合初始值/模拟值 3.6 如何设置自定义变量高级设置 点击变量的高级设置按钮,弹出 VarAdv Window ,可设置其保存类型以及协议发送条件。 点击存储,勾选掉电保存框后,重新开机仍能保持原来的变量数据,如图 3.9 所示。 图3.9 自定义变量高级设置存储 点击标准协议,勾选变量变化时对外发送报文框后,当该变量有变化时,会对外发送变量协议报文,如图 3.10 所示。 图 3.10 自定义变量高级设置协议 4.如何通过按钮控件设置参数 通过按钮控件可更改变量数据显示,具体操作步骤详看《按钮类控件使用手册》中的“如何通过按钮控件设 置参数”。 5.如何通过滑动条设置参数 通过滑动条控制空调温度,具体设置操作如下。 1 、打开或新建工程,添加一个整型变量,具体设置如图 5.1 所示。 图5.1 添加整型变量 2 、添加一个滑动条和文本控件,滑动条用于控制温度,文本控件用于显示当前设置的温度,如图 5.2 所示。 图5.2 添加控件 3 、选中文本控件,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性“文本 1”→数据源绑定 “Var0”→转换模式“单向”→转换方法“默认” ,操作如图 5.3 所示。 图5.3 文本控件变量绑定 4 、选中滑动条,点击右侧属性窗口中的变量绑定→点击添加→被绑定的控件属性“当前值”→数据源绑定 “Var0”→转换模式“双向”→转换方法“默认” ,操作如图 5.4 所示。 图5.4 滑动条变量绑定 5 、点击仿真运行按钮,弹出仿真运行窗口,拉动滑动条,可调整温度,如图 5.5 所示。 图5.5 仿真演示 6 、用户可通过协议指令当前温度,具体操作步骤详看协议发送指令。 6.如何通过文本控件显示星期 通过文本控件绑定系统变量中“系统时间——Weekr”,可显示当前的星期。 1 、点击常用模块中的文本控件,添加两个文本控件,一个作为星期显示,一个作为时间显示,如图 6.1 所示。 图6.1 添加文本控件 2 、点击工具箱中的通用模板——系统时间设置 (按键方式) ,添加系统时间设置 (按键方式) ,可快速修改 当前时间,如图 6.2 所示。 图6.2 添加系统时间设置(快捷方式) 3 、选中其中一个文本控件,点击右侧属性窗口的外观下的文字添加多个文本,如图 6.3 所示。 图6.3 添加多个文本 4 、点击文本 1 ,选择静态文本,在输入框中输入星期一,其他文本操作同文本 1 ,如图 6.4 所示。 图6.4 设置文本内容 5 、点击右侧属性窗口中的变量绑定→添加→被绑定的控件属性为“文本索引”→数据源绑定“系统时间—— Weekr”→转换模式“单向”→转换方法“默认”,如图 6.5 所示。 图6.5 变量绑定设置 注意:数据源绑定的变量“系统时间——Weekr”,如图 6.6 所示。 图6.6Weekr 变量 6 、选中另一控件设置时间显示,具体设置方法及步骤详看《时间设置》说明书。 7 、点击仿真运行按钮 ,弹出仿真运行窗口,设置时间日期,对应的星期显示发生变化,如图 6.7 所示。 图6.7 仿真演示 若有收获,就点个赞吧 --- ### 19. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 软件说明 1.1 软件介绍 GUI Designer 软件配合同立嵌入式开发平台设备同步使用,实现 0 代码可 视化编辑设备 UI 界面及协议。 通过 GUI Designer 软件,可编辑嵌入式设备 GUI 所有界面,如控件布局、 图片和文字等,以及控件拖动和删除,新建窗口与控件,以及模拟运行。 本软件可供非专业软件开发人员使用,但需要一定的逻辑思维及理科基础。 1.2 安装环境 系统: Windows 7 Windows 8 Windows 10 。 电脑需要的软件: Microsoft Excel 软件安装 2.1 软件的安装 本文档以 GUI_Designer 为例,介绍安装过程,以及使用方法 (1) 双击打开 GUI_Designer.exe 安装包根据提示进行安装,如图 0-1 所示 图 0- 1 安装方式 (2) 在桌面上可以看到该软件的快捷方式,后续直接双击可打开软件 图 0-2 快捷方式 新建,打开,保存工程 3.1 新建工程 双击桌面快捷图标打开 GUI Designer,在主界面点击新建,在弹出的自定义设 备窗口设置好对应硬件参数(相应参数在对应的硬件说明书里查询).如图 3- 1,设 置好后点击确认即进入编辑界面. 图 3- 1 3.2 打开工程 在主界面点击打开,在弹出窗口找到并选择需要打开的后缀为.prjx 的工程文 件,点击打开即进入原工程编辑界面.如图 3-2. 图 3-2 3.3 保存工程 在菜单栏点击工程可另存工程,在弹出框可选择保存位置以及命名工程,名称 无限制, 中英文皆可. 编辑界面 4.1 编辑界面 在常用控件或者工具箱可以新建窗口,添加控件,并会在控件树显示.先单击控 件选定,在窗口内点击鼠标左键即可添加,点击鼠标右键或者指针模式可回到指针 模式. 4.2 编辑控件 在控件树或者窗口用鼠标左键选中控制后,可在属性窗口对控件的属性,事件, 变量进行操作. 4.3 控件排版 编辑好界面后,可用布局中功能对控件进行排版 4.4 资源添加 在菜单栏点击资源,可导入需要使用的图片以及字体, 因 FLASH 资源有限,按 需添加,否则可能工程超过 FLASH 大小而无法导入,如需中文输入法需勾选 CJK 汉字 4.5 变量添加 在菜单栏点击变量,可新增或者删除自定义变量,系统变量只能调用,不能新增 或者删除. 4.6 项目设置 在菜单栏点击项目,可对初始化, 多语言,协议,系统进行设置,按请自己需要设 置好相关参数. 导出程序及升级 5.1 导出升级包 在菜单栏点击工程,选择导出升级包,在弹出窗口选择好存储位置以及命名,名 称可以按自己需求进行中英文命名. 导出升级包后拷入TF 卡(TF 必须为FAT32 格式且TF 卡中只能有一个升级包), 将 TF 卡在关机状态下插机设备,通电即可升级,升级完成后取出 TF 卡. 若有收获,就点个赞吧 --- ═══════════════════════════════════════════ ## LUA 脚本 ═══════════════════════════════════════════ ### 20. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 简易数据库(定制固件专属)是一个轻量级、无文件系统的嵌入式数据库:在 Flash 里划一块连续区域,按固定长度记录存结构化数据(参数配置、事件日志、运行记录),掉电不丢,支持运行时按需初始化。数据记录控件用「自定义」数据源模式对接,实现增删改查全流程。 1. ⚠️ Flash 地址规划(不看会变砖)简易数据库直接操作 Flash,没有文件系统隔离机制,flashaddr 起始地址必须严格避开四类高风险区域:工程资源存储区资料采样块存储区操作记录块存储区OTA 升级备份区域总占用空间 = dataRowSize × maxCount,规划地址时把这段空间算进去,别和别的功能打架。 2. API 总表函数参数说明easydb_open(flashaddr, createIfNotExist, dataRowSize, maxCount)flashaddr Flash 起始地址;createIfNotExist 0=仅打开/1=不存在则创建;dataRowSize ≥1;maxCount 最大条数打开或创建数据库,返回句柄(非 0 成功,0 失败)easydb_close(db)句柄关闭数据库,释放资源easydb_get_count(db)句柄当前有效记录数easydb_get(db, idx)idx 从 0 开始读指定索引记录,成功返回字符串,失败 nileasydb_add(db, dataset)字符串数据末尾追加一条记录easydb_update(db, idx, dataset)idx + 新内容更新指定记录,dataset 长度必须严格等于 dataRowSizeeasydb_del(db, idx)idx删除指定记录easydb_clear(db)句柄清空所有记录 3. 数据记录控件「自定义」模式数据来源设为自定义时,系统不知道有多少行数据,必须由两个回调提供:记录数量回调 on_get_record_count(screen_id, control_id):返回总行数,内部调 easydb_get_count(g_db_handle)记录内容回调 on_get_record_row(screen_id, control_id, row):返回第 row 行的字符串内容function on_get_record_count(screen_id, control_id) if screen_id == 0 and control_id == 1 then return db.getCnt(g_db_handle) end end function on_get_record_row(screen_id, control_id, row) local ret, msg = db.get(g_db_handle, row) if ret == 0 then return msg end end控件配置:数据来源=自定义、字符编码=UTF8、翻页控制√、控制地址 LW4000、选中行通知√(LW4004,UINT32)——选中某行时索引写进 LW4004,增删改都靠它定位。 4. 应用:db.lua 句柄封装 + 增删改查4.1 初始化(on_init)function on_init() dofile("db.lua") _EN_ON_UPDATA_API_ = 0 -- 10MB 起始、不存在则创建、单条1000字节、最多1000条 g_db_handle = db.open(10*1024*1024, 1, 1000, 1000) if g_db_handle == 0 then print("ERROR: 无法打开数据库!") return end db.clear(g_db_handle) -- 清空旧数据(可选) db.add(g_db_handle, "Alice;Engineer;30") db.add(g_db_handle, "Bob;Technician;25") db.add(g_db_handle, "Charlie;Manager;40") db.add(g_db_handle, "Harden;Basketball players;36") _EN_ON_UPDATA_API_ = 1 end记录格式「姓名;职业;年龄」,英文分号分隔,和表格控件解析规则一致,直接映射多列。4.2 增删改(LW5000 按键分发)function on_update(slave, vtype, addr) if addr == 0x4004 then -- 选中行通知 local idx = get_uint32(VT_LW, addr) local ret, msg = db.get(g_db_handle, idx) if ret == 0 then local parts = my_split(msg, ";") if parts ~= nil then set_uint16(VT_LW, 0x4530, idx) -- 记录当前选中索引 set_string(VT_LW, 0x4500, (parts[1] == nil) and "--" or parts[1]) set_string(VT_LW, 0x4510, (parts[2] == nil) and "--" or parts[2]) set_string(VT_LW, 0x4520, (parts[3] == nil) and "--" or parts[3]) end show_dialog(1, 232, 33, 50) -- 弹窗显示详情 end elseif addr == 0x5000 then local key = get_uint16(VT_LW, addr) if key == 0 then -- 添加 local name = get_string(VT_LW, 0x5010) local position = get_string(VT_LW, 0x5020) local age = get_string(VT_LW, 0x5030) db.add(g_db_handle, name..";"..position..";"..age..";") elseif key == 1 then -- 修改(改选中行) local name = get_string(VT_LW, 0x4500) local position = get_string(VT_LW, 0x4510) local age = get_string(VT_LW, 0x4520) local idx = get_uint16(VT_LW, 0x4530) db.modify(g_db_handle, idx, name..";"..position..";"..age..";") elseif key == 2 then -- 删除(删选中行) local idx = get_uint16(VT_LW, 0x4530) db.del(g_db_handle, idx) end end enddb.lua 封装层每个函数都做句柄校验 + 索引越界检查(idx = count 返回 -2),这是句柄驱动设计的标准姿势:不合法就直接返回错误码,绝不往下传。 四个坑:①flashaddr 必须避开工程资源/资料采样/操作记录/OTA 备份四区,直接操作 Flash 无隔离,选错地址数据互相覆盖甚至变砖;②easydb_update 的 dataset 长度必须严格等于创建时的 dataRowSize,长了短了都会失败;③记录用英文分号 ; 分隔,和表格控件解析规则对齐,别用中文分号;④句柄是全局生命周期资源,on_init 里开一次全程持有,操作前先校验句柄非 0、索引在范围内。定制固件才有这套 API,普通固件没有。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「简易数据库」,版权归大彩科技所有。 --- ### 21. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 自由串口协议(主动)是上一篇「被动」的进阶:HMI 不只接收设备主动发的数据,还能主动向设备发查询帧、读响应,HMI 当总线主。核心 API 是 uart_recv(),配合协程+元表搭一个非阻塞通信框架,对接 XGUS 私有协议。适用 HMI&M 系列&Dx 系列。 1. 新增 API(相对被动模式)函数参数说明uart_rxsize(ch)ch 串口号,通常 0查询接收缓冲区待读字节数。返回 N 表示有 N 字节,0 表示无新数据uart_recv(ch, size)size 期望读取字节数,必须 ≥1主动从接收缓冲区读指定数量字节。返回下标从 1 的字节表,如 {0xAA,0x55,0x01,0x02}uart_rxclear(ch)ch 串口号清空接收缓冲区。通信初始化/错误恢复/协议同步时清残留calc_crc16(data)data 字节表,下标从 1Modbus CRC-16 校验计算,返回 0~65535,低字节在前(符合 Modbus 小端序)另外 uart_send(ch, packet) 和被动模式一样:向指定串口通道发字节数组,packet 下标从 1 开始,每元素 0~255。ch=0 主串口,1/2…副串口(依硬件型号)。通道必须处于自由协议模式(未被 Modbus/XGUS 等系统协议占用)。 2. ⚠️ 关键前置:禁用接收回调主动读串口必须先在工程属性里:串口设置 → 接收回调 → 禁用(新版软件有这个选项)。不禁用的话,uart_recv() 和 on_uart_recv 回调会抢数据,帧全乱。 3. 案例:XGUS 协议映射到系统寄存器目标:把 XGUS 协议中地址 ≥0x1000 的读写,映射到 HMI 系统寄存器 LW1000~LWFFFF。外部设备用 XGUS 帧读写 HMI 内部变量,HMI 也主动给设备发读写请求。3.1 XGUS 帧格式字段长度说明帧头2 字节0x5AA5长度1 字节指令+数据+校验的字节数指令1 字节0x82 写 / 0x83 读(0x80/0x81 另有用)数据最大 249 字节地址(2字节) + 数据内容(n字节),长度 = n+2CRC2 字节(可选)CRC-16 (x16+x15+x2+1)例:向变量地址 0x1000 写入数值 2(不启用 CRC):5A A5 05 82 10 00 00 02——05 是长度(指令1+地址2+数据2),按字写入。 3.2 初始化:加载 XGUS.lua官方提供了基于协程+元表的 XGUS.lua 框架。main.lua 里创建实例:function on_init() dofile("XGUS.lua") xgus = XGUS:new(0, 0x55AA, true, true) -- 参数:串口号, 帧头, 开启CRC, 开启写应答 end -- on_run 里跑协程,非阻塞轮询 _EN_SET_DATA_ = false function on_run(screen) _EN_SET_DATA_ = true xgus:run() _EN_SET_DATA_ = false endXGUS:run() 用协程实现:检查串口数据 → 凑够「帧头+指令+长度+地址」6 字节 → 解析 → 按长度收剩余数据 → CRC 校验 → 处理。协程可以打断/恢复任务,不阻塞 on_run 主循环,适合耗时流程。 3.3 指令解析:地址分流function XGUS:processMsg() local func = self.func if func == XGUSFunction.write then -- 写指令 if self.addr >= 0x1000 then -- 用户寄存器区:解析数据写入 LW local datas = {} for i = 1, write_count do datas[i] = self.req[5+i*2]<>8), (self.head&0xFF), 0x03, 0x82, 0x4F, 0x4B}) end elseif func == XGUSFunction.read then -- 读指令 if self.addr >= 0x1000 then -- 组应答帧:读 LW 值回发 local datas = {(self.head>>8), (self.head&0xFF), 4+self.req[7]*2, 0x83, (self.addr>>8), (self.addr&0xFF), (self.req[7]*2)&0xFF} for i = 1, self.req[7] do local num = get_uint16(VT_LW, self.addr+(i-1)) datas[6+i*2] = (num>>8) & 0xFF datas[7+i*2] = num & 0xFF end self:sendMsg(datas) else on_cmd_resp_xgus(self.addr, self.req[7], func, {}) end end end -- 系统寄存器区读写回调(main.lua 里定义) function on_cmd_resp_xgus(addr, count, wr, data) if wr == 0x82 then print("write addr num : "..count) elseif wr == 0x83 then print("read addr num : "..count) end end 3.4 主动发送:XGUS:dataSend(addr, data)主动向设备发写指令,data 可以是 number 或 table:-- 写单个值 xgus:dataSend(0x1000, 1234) -- 写一组值(table) xgus:dataSend(0x2000, {0x12, 0x34, 0x56}) -- 内部 send():开 CRC 时自动补 2 字节校验再 uart_send function XGUS:send(resp) if self.crc == true then resp[3] = resp[3] + 2 -- 长度加 CRC 2 字节 local crc_buff = {} for i = 4, #resp do crc_buff[i-3] = resp[i] end local crc_check = calc_crc16(crc_buff) resp[#resp+1] = (crc_check>>0) & 0xFF resp[#resp+1] = (crc_check>>8) & 0xFF end uart_send(self.port, resp) end 四个坑:①不禁用接收回调就 uart_recv,帧必乱——工程属性→串口设置→接收回调→禁用;②calc_crc16 低字节在前,组帧时先发低 8 位再发高 8 位;③主动读要防设备无响应——XGUS:wait() 有超时机制(内部 get_tick_count 差值判断),自己写协议务必加超时,不然 on_run 卡死;④地址 ≥0x1000 才走 LW 映射,小于 0x1000 走 on_cmd_resp_xgus 回调自己处理。副串口用之前必须 uart_setup 初始化。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「自由串口协议(主动)」,版权归大彩科技所有。 --- ### 22. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 自定义协议(被动):VisualHMI 内置 DCBUS、XGUS、Modbus(RTU/TCP 主从)、三菱 FX2N、台达 DVP、西门子 PPI 等协议,但实际现场总有私有协议要接。走 LUA 对串口做底层控制,实现自定义帧的收发解析。本篇是被动模式:收到数据触发回调,你只管解析。 1. API 总表函数说明uart_setup(ch, baudrate, databits, stopbit, parity)配置串口:stopbit 0=1位/1=1.5位;parity 0=无/1=奇/2=偶。副串口必须调用才启用,主串口(ch=0)仅配数据on_uart_recv(ch, packet)被动接收回调,packet 为下标从 1 的字节表。可能分包/粘包,必须自己缓冲解析uart_send(ch, packet)发送字节表set_free_protocol(en)1=主串口交脚本接管(自由协议);0=恢复工程配置的原始协议主串口(ch=0)触发 on_uart_recv 的条件:工程配置协议设「自定义」,或脚本里 set_free_protocol(1)。主串口被 Modbus 等内置协议占用时,on_uart_recv 不会被调用。DCBUS/XGUS 串口参数固定:1 位停止位、无校验。 2. 协议举例:LED 灯控帧结构:方向帧头(1B)长度(1B)功能码(2B)数据(nB)帧尾(2B)设备→屏幕0x5A功能码到帧尾的字节数0x0001~0xFFFF可变0xFC 0xFF屏幕→设备0xA9同上同上可变0xFC 0xFF长度 = 功能码 2B + 数据 nB + 帧尾 2B = n+4,大端。功能码:0x0001=开关、0x0002=亮度、0x0003=改名称。 3. 状态机解析(处理分包/粘包)recvBuf = {} -- 接收缓冲 STATE_IDLE, STATE_LENGTH, STATE_DATA = 0, 1, 2 state = STATE_IDLE frameLen = 0 function on_uart_recv(ch, packet) for i = 1, #packet do local b = packet[i] if state == STATE_IDLE then if b == 0x5A then state = STATE_LENGTH recvBuf = {} end elseif state == STATE_LENGTH then frameLen = b -- 第2字节:长度 state = STATE_DATA recvBuf = {b} elseif state == STATE_DATA then table.insert(recvBuf, b) if #recvBuf >= frameLen then -- 收满一帧,解析 parse_frame(recvBuf) state = STATE_IDLE end end end end function parse_frame(buf) local func = (buf[2] <> 8) & 0xFF, func & 0xFF} for i = 1, #payload do table.insert(pkt, payload[i]) end table.insert(pkt, 0xFC); table.insert(pkt, 0xFF) uart_send(0, pkt) end回调是系统任务轮询触发,不是硬件中断——别在回调里做耗时操作(字符串大拼接、文件读写),会拖慢系统。 四个坑:①副串口不调 uart_setup 就是关闭的,on_init 里初始化所有要用的副串口;②packet 不保证是一整帧——分包粘包必须自己缓冲状态机解析,这是被动协议 90% 的 bug 来源;③主串口被内置协议占用时收不到回调,要么工程里设「自定义」要么 set_free_protocol(1);④长度字段算清楚(本例=功能码2+数据n+帧尾2),算错一帧都解不出来。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「自定义协议-被动接收」,版权归大彩科技所有。 --- ### 23. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 文字颜色控制(定制固件专属)提供全局文字颜色批量设置接口:一个回调函数,动态改画面所有文本类控件的文字前景色,不用逐个配置。典型场景是白天/夜间模式切换——亮色背景配深色文字,暗色背景配浅色文字,一个变量控制全局主题。 1. 支持批量设置的控件不是所有控件都能被这个接口着色,只有带可编程文字颜色/前景色属性的控件才参与:控件类型说明静态文本最直接的作用对象位状态指示灯 / 多状态指示灯文字部分随主题变色位设置按钮 / 字设置按钮 / 功能按钮按钮文字下拉选择框 / 滚轮选择器选项文字RTC时间显示 2. 前置配置(两步,缺一不可)第一步:全局启用控件分组功能。路径:工程属性 → 控件分组 → 启用。不启用的话,运行时所有控件都忽略分组相关属性——就算你配了分组 ID 也没用。第二步:给控件分配有效分组标识。对要纳入颜色管理的每个控件,在控件属性面板里设置控件 ID,必须 ≠ 0(0 是默认无效值,表示「未分组」)。on_wgt_text_color 回调里就是靠这个 ID 区分控件。 3. API:on_wgt_text_color(screen, control)控件文字颜色动态回调。系统在刷新控件时调用它,取返回值作为该控件的文字颜色。参数类型说明screennumber当前画面 ID,用于区分多页面中的同名控件controlnumber目标控件 ID。仅当 control ≠ 0 时触发回调返回值:color(number),RGB565 格式的 16 位颜色值。整个颜色主题逻辑都在这一个函数里。 4. 应用案例:多状态灯切换主题画面布局:一个多状态指示灯做颜色切换开关(状态 0~4 对应 5 种主题色),画面 ID 设为 0;下面放一批支持文字着色的控件(文本、按钮、指示灯、下拉框、滚轮、RTC),统一设置控件 ID 为 5。Lua 在回调里读寄存器 LW3000 的值作为颜色索引,返回对应 RGB565 色值:function on_wgt_text_color(screen, control) local color = 0x001f -- 默认蓝色 if screen == 0 then if control == 5 then local val = get_uint16(VT_LW, 0x3000) -- 颜色索引 if val == 0 then color = 0x00FF -- 蓝 elseif val == 1 then color = 0x0562 -- 绿 elseif val == 2 then color = 0x0429 -- 深绿 elseif val == 3 then color = 0x0177 -- 青 elseif val == 4 then color = 0xF800 -- 红 end end end print(string.format("on_wgt_text_color(%d,%d,%04X)", screen, control, color)) return color end运行虚拟屏,点颜色切换控件,所有控件 ID 为 5 的 UI 元素文字颜色同步更新——这就是「一键主题切换」的效果。 三个坑:①控件分组必须在工程属性里启用,否则配了 ID 也不生效;②控件 ID 不能为 0,0 = 未分组不参与回调;③返回的是 RGB565 色值(高5位R/中6位G/低5位B),和 set_pen_color、文字颜色属性同一套色域,直接抄画图那套颜色常量就行。定制固件才有这个接口,普通固件没有。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「文字颜色控制」,版权归大彩科技所有。 --- ### 24. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 OTA 升级 API:HMI 的升级逻辑与通信协议、数据来源完全解耦——不管升级数据来自主板串口、以太网、Wi-Fi 还是 4G,不管上位机用自定义协议、Modbus 还是 HTTP,HMI 只负责通过标准 API 把收到的数据写进指定 Flash 区,校验解压成功后自动重启升级。适用 HMI&M 系列&Dx 系列。 1. ⚠️ Flash 规划(升级失败/变砖的根源)以 HMI80480M070 为例(标准品 128Mbit = 16MB):项目大小Flash 总容量16 MB系统固件(OS+驱动,M 系列)1 MB(DH 系列 2 MB)当前工程(private)4.38 MB已用合计5.38 MB,剩 ≈10.62 MBOTA 起始地址要求必须 ≥ 8 MB(Flash 总量一半)两条铁律:①OTA 起始地址必须从 Flash 后半部分开始(哪怕剩余 10.62MB 也要从 ≥8MB 起),避免新旧工程交叉覆盖,升级过程中当前系统才能继续跑;②OTA 写入区必须连续且空闲——如果你用「块地址」功能占了高地址区(比如 10~12MB),或者升级包超过 Flash 一半(≈10.62MB 的包),都不可升级。 2. API 总表函数参数说明ota_init(md5, filesize, addr)md5 固定 "0123456789abcdef";filesize 与 .bin 实际大小严格一致;addr ≥ Flash 一半配置升级目标,准备接收固件数据ota_write(writeTb)字节表,≤2048,不足自动补 0x00分块写固件到 Flash 区ota_check_upgrade(state)必须传 1触发完整性校验 + 解压 + 升级ota_destory()-擦除已写的 OTA 残留数据(升级前清场)on_ota_progress(status, value)见下表校验/解压进度与结果回调on_ota_progress 的 status/value 组合:status含义value1校验过程开始固定 02校验结果0=失败(固件损坏/MD5 不匹配)/1=成功3解压进度0~100 百分比4解压结果0=失败/1=成功 → 即将重启 3. 应用:SD 卡本地升级3.1 升级包准备工程编译后选择量产下载,生成的文件里有 ota.bin。使用前把 ota.bin 改名为 a.bin 放到 SD 卡根目录。 3.2 检测盘符 + 找 a.binota_filename = "a.bin" ota_addr_start = 8 * 1024 * 1024 -- OTA 起始地址(至少 Flash 一半) flashsize = 16 * 1024 * 1024 -- Flash 总大小 function on_update(slave, vtype, addr) if vtype == VT_LW and addr == useraddr.ota_swich then if sd_dir ~= 0 then list_dir(sd_dir) -- 先看 SD 卡 elseif usb_dir ~= 0 then list_dir(usb_dir) -- 再看 U 盘 else set_string(VT_LW, useraddr.text, "检测不到SD卡和USB,无法OTA升级!!!") end end end function on_list_dir(path, filename, type, fsize) if type == 1 then if filename == ota_filename then set_string(VT_LW, useraddr.text, "文件:"..ota_filename.." 已检测到") if (fsize + ota_addr_start) > flashsize then set_string(VT_LW, useraddr.text, "ota.bin 文件大小超过,无法升级!!!") else set_string(VT_LW, useraddr.text, "开始升级!!!") set_uint32(VT_LW, useraddr.ota_data, fsize) ota.set_upgrade(path.."/"..ota_filename) end end end end3.3 核心升级流程(ota.lua)function ota.set_upgrade(path) local TransferSize = 0 local size = 0 if file_open(path, 0) == true then size = file_size() if size < (flashsize - ota_addr_start) then ota_destroy() -- 消除残留 OTA 数据 local sdota_addr = ota_init("0123456789abcdef", size, ota_addr_start) -- 计算尾包补零长度 local size_complement = 0 if size % 2048 ~= 0 then size_complement = 2048 - (size % 2048) end while true do local rddata = file_read(2048) -- 流式读 2048 if #(rddata) < 2048 then -- 尾包补 0x00 for i = (#(rddata) + 1), 2048 do rddata[i] = 0x00 end end TransferSize = TransferSize + #(rddata) local prg = string.format("%.1f", (TransferSize * 100) / (size + size_complement)) set_uint16(VT_LW, useraddr.progress, math.modf((TransferSize * 1000) / size)) set_string(VT_LW, useraddr.text, "下载进度 : "..prg.." %") refresh_screen() ota_write(rddata) -- 写入 Flash,不足补零 if size <= TransferSize then break end end file_close() ota_check_upgrade(1) -- 校验、解压 end end end function on_ota_progress(status, value) if status == 1 and value == 0 then set_string(VT_LW, useraddr.text, "校验开始") elseif status == 2 then if value == 0 then set_string(VT_LW, useraddr.text, "校验失败") elseif value == 1 then set_string(VT_LW, useraddr.text, "校验成功") end elseif status == 3 then set_uint16(VT_LW, useraddr.progress, value * 10) set_string(VT_LW, useraddr.text, "解压进度 : "..value.." %") refresh_screen() elseif status == 4 then if value == 0 then set_string(VT_LW, useraddr.text, "解压失败") elseif value == 1 then set_string(VT_LW, useraddr.text, "解压成功") end end end关键点:ota_init 的 filesize 必须和 .bin 实际大小严格一致;写数据全程流式(每次 ≤2048,尾包补 0x00);ota_check_upgrade(1) 之后校验失败会停在回调里给你机会处理,解压成功就自动重启进升级。 四个坑:①md5 参数是固定串「0123456789abcdef」,不是文件的真实 MD5,别自作聪明去算文件哈希;②addr 必须 ≥ Flash 一半且区域连续空闲,块地址占了高地址区就升不了;③升级包不能超过 Flash 一半,10.62MB 的剩余空间不等于能放 10.62MB 的包;④升级前先 ota_destroy() 清残留,ota_write 的尾包不足 2048 会自动补零,你不需要自己处理对齐。升级中断电 = 变砖,量产前务必反复验证升级流程。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「OTA升级」,版权归大彩科技所有。 --- ### 25. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 HMI 系列支持 MP4 视频播放,用 LUA API 指定播放文件、控制播放区域。本例程做完整的视频播放器:SD 卡遍历 .mp4 → 列表翻页 → 上一首/下一首 → 播放/暂停/继续 → 播完自动下一首 → 进度和时间显示。适用 HMI&M 系列&DH 系列。 1. 视频格式硬指标(超了播放不了或卡顿)项目要求文件格式MP4(.mp4)视频编码H.264音频编码MP3 或 AAC最大分辨率1280 × 768最大帧率30 fps最大码率1400 kbps 2. 画面控件地址表控件类型地址用途字状态按钮LW1000→0 / 1视频列表向左/右翻页(LW1005=0 时不允许点击)字状态按钮LW1001→0 / 1上一首 / 下一首(LW1005=0 时不允许点击)位状态指示灯LW10020-暂停,1-继续播放(LW1005=0 时不允许点击)数值LW1003视频列表当前页数值LW1004视频列表总页数位状态指示灯LW10051=SD 根目录有视频文本LW1100~1200(128 字节)显示视频名称(每行 0x40 间隔)文本LW1240播放当前时间(LW1005=0 隐藏)文本LW1250播放总时间(LW1005=0 隐藏)播放进度条LW1006进度条数值 3. API函数参数说明play_video(file,left,top,width,height)file 绝对路径;left/top 显示区域左上角;width/height 显示尺寸在指定区域播放视频。操作引导、产品演示、安全须知场景pause_video()-暂停当前视频resume_video()-从暂停的精确帧继续播放,必须与 pause_video 配套stop_video()-立即停止播放,释放解码资源,清除画面on_video_notify(msg,v1,v2)msg 1=播放中(周期通知)/0=播放完毕(仅一次);v1 已播秒数;v2 总秒数播放状态回调,驱动进度条和时间显示 4. Lua 实现4.1 遍历 SD 卡 MP4插卡触发 on_sd_inserted → list_dir 遍历 → on_list_dir 回调里筛 .mp4 存进 video.NameTb:function on_list_dir(path, filename, type, fsize) if type == 1 then -- 文件 local cur_file_type = get_extension(filename) if cur_file_type == "mp4" then video.allCnt = video.allCnt + 1 video.NameTb[video.allCnt] = path.."/"..filename end end end function on_sd_inserted(dir) sd_dir = dir list_dir(sd_dir) if video.allCnt > 0 then video.allPage = math.modf(video.allCnt / 5) if video.allCnt % 5 > 0 then video.allPage = video.allPage + 1 end set_uint16(VT_LW, 0x1003, 1) -- 当前页 set_uint16(VT_LW, 0x1004, video.allPage) set_uint16(VT_LW, 0x1005, 1) -- 有视频标志 set_string(VT_LW, 0x1240, "00:00") set_string(VT_LW, 0x1250, "00:00") updatVideoList(video.curPage) updatVideoPlayName(0) end end function on_sd_removed() video.NameTb = {}; video.allCnt = 0 video.curPage = 1; video.allPage = 1; video.playIndex = 0 set_uint16(VT_LW, 0x1003, 0) set_uint16(VT_LW, 0x1004, 0) set_uint16(VT_LW, 0x1005, 0) for i = 1, 5 do set_string(VT_LW, 0x1100 + (i-1)*0x40, "") set_uint16(VT_LW, 0x1500 + (i-1), 0) end end 4.2 播放控制(on_update 分发)function on_update(slave, vtype, addr) if VT_LW == vtype then if addr == 0x1000 then -- 列表翻页 local val = get_uint16(VT_LW, 0x1000) local cur_page = get_uint16(VT_LW, 0x1003) local all_page = get_uint16(VT_LW, 0x1004) if val == 0 then -- 上一页 cur_page = cur_page - 1 if cur_page all_page then cur_page = all_page end end set_uint16(VT_LW, 0x1003, cur_page) updatVideoList(cur_page) elseif addr == 0x1001 then -- 上下首 local val = get_uint16(VT_LW, 0x1001) set_uint16(VT_LW, 0x1002, 1) if val == 0 then -- 上一首,到头回绕到最后一首 video.playIndex = video.playIndex - 1 if video.playIndex video.allCnt then video.playIndex = 1 end end local cur_play_page = math.modf(video.playIndex / 5) if video.playIndex % 5 > 0 then cur_play_page = cur_play_page + 1 end set_uint16(VT_LW, 0x1003, cur_play_page) stop_video() play_video(video.NameTb[video.playIndex], play.x, play.y, play.w, play.h) updatVideoList(cur_play_page) updatVideoPlayName(video.playIndex) elseif addr == 0x1002 then -- 播放/暂停按钮 local val = get_uint16(VT_LW, 0x1002) if val == 0 then pause_video() elseif val == 1 then resume_video() end elseif addr == 0x1505 then -- 点击列表某一项播放 local val = get_uint16(VT_LW, 0x1505) local cur_page = get_uint16(VT_LW, 0x1003) local temp = video.playIndex video.playIndex = (cur_page - 1) * 5 + val if video.playIndex 0 then updatVideoPlayName(video.playIndex) stop_video() play_video(video.NameTb[video.playIndex], play.x, play.y, play.w, play.h) end else video.playIndex = temp end end end end 4.3 播完自动下一首 + 进度显示function on_video_notify(msg, v1, v2) local SysSndState = msg -- 播放状态 local SysSndPlayTime = v1 -- 当前已播秒数 local SysSndTotalTime = v2 -- 总秒数 if SysSndState == 0x01 then -- 播放中(周期通知) set_uint16(VT_LW, 0x1006, (v1*100)//v2) -- 进度条 0~100 set_string(VT_LW, 0x1240, string.format("%02d", SysSndPlayTime//60)..":".. string.format("%02d", SysSndPlayTime%60)) set_string(VT_LW, 0x1250, string.format("%02d", SysSndTotalTime//60)..":".. string.format("%02d", SysSndTotalTime%60)) elseif SysSndState == 0x00 then -- 播放完毕(仅一次) video.playIndex = video.playIndex + 1 if video.playIndex > video.allCnt then video.playIndex = 1 end local cur_play_page = math.modf(video.playIndex / 5) if video.playIndex % 5 > 0 then cur_play_page = cur_play_page + 1 end local cur_page = get_uint16(VT_LW, 0x1003) if cur_play_page == cur_page then updatVideoPlayName(video.playIndex) else updatVideoPlayName(0) end stop_video() play_video(video.NameTb[video.playIndex], play.x, play.y, play.w, play.h) end redraw() end 四个坑:①视频必须转成 H.264/MP3 或 AAC 的 MP4,超过 1280×768 或 1400kbps 会播放不了或严重卡顿——工程资源里转码这步省不得;②播放前先 stop_video() 再 play_video(),直接换文件可能残留解码器状态;③进度条算的是 (v1*100)//v2,用整除避免浮点,v2 为 0 时别除;④SD 卡拔出必须清空 NameTb 和所有列表控件,不然拔卡后点列表会越界。虚拟屏测不了视频,必须实体屏 + SD 卡。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「视频播放」,版权归大彩科技所有。 --- ### 26. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 音频播放 API:播放 SD/U 盘里的音乐文件,配合播放器控件做完整的音乐播放器(播放/暂停/上下首/进度条/音量)。 1. API 总表函数说明play_sound(filename)播放音频,绝对路径(如 "1:/music/xx.mp3")stop_sound()停止播放pause_sound()暂停resume_sound()继续播放 2. 播放器控件地址表地址用途LW1000左右翻页LW1001上一首/下一首LW1002播放/暂停(位状态指示灯:0-暂停/1-继续)LW1003当前页LW1004总页数LW1005SD 根目录是否有歌(位状态)LW1100~1200歌名文本列表LW1240播放当前时间LW1250总时间LW1006播放进度条LW0140音量 3. 遍历 SD 卡歌曲musicNameListTb = {} -- 歌名列表缓存 curPlayIndex = 1 function on_sd_inserted(dir) list_dir(dir) -- 列 SD 卡根目录 end function on_list_dir(path, filename, type, fsize) if type == 1 then local ext = string.sub(filename, -4) if ext == ".mp3" or ext == ".wav" then table.insert(musicNameListTb, filename) set_uint16(VT_LW, 0x1005, 1) -- 有歌标志 end end end 4. 播放控制逻辑function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1002 then local v = get_uint16(VT_LW, 0x1002) if v == 1 then play_sound("1:/music/"..musicNameListTb[curPlayIndex]) else pause_sound() end elseif addr == 0x1001 then -- 上一首/下一首:切换 curPlayIndex 后重新播放 local v = get_uint16(VT_LW, 0x1001) if v == 1 and curPlayIndex > 1 then curPlayIndex = curPlayIndex - 1 elseif v == 2 and curPlayIndex < #musicNameListTb then curPlayIndex = curPlayIndex + 1 end play_sound("1:/music/"..musicNameListTb[curPlayIndex]) end end end function on_run(screen) updatMisPlayState() -- 检测播放状态,播完自动下一首 end 三个坑:①路径必须带设备前缀(M 系列 1:=SD/2:=U盘/3:=内部Flash),「1:/music/a.mp3」对、「1:music/a.mp3」错;②播放完不会自动切下一首,要自己在 on_run 里轮询播放状态(on_video_notify 类似机制);③音频格式按固件支持列表来,不支持的格式会静默失败——先拿一个已知能播的文件试。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「音频播放」,版权归大彩科技所有。 --- ### 27. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 文件读写 API 全套:读 txt/csv/bin、写文件、遍历目录、拷贝/删除。核心思想就一条——流式处理,永远不要让内存里同时存在超过 2KB 的缓冲区。HMI 内存极小,违反这条看门狗直接复位,设备无预警重启。 1. 存储设备标识(M 系列 vs DH 系列)设备M 系列DH 系列SD 卡1:/1.txt/sdcard/1.txtU 盘2:/1.txt/udisk/1.txt内部 Flash3:/1.txt/data/1.txt路径分隔符必须用 /。 2. 文件 API 总表函数参数说明dofile(name)lua 文件路径加载执行 .lua 模块,大型工程拆模块list_dir(path)目录路径异步扫描目录,结果逐项回调 on_list_diron_list_dir(path,filename,type,fsize)type 0=文件夹/1=文件;fsize 字节遍历结果回调,每发现一个条目调一次file_open(path,mode)mode 0=FA_READ 只读/1=FA_WRITE 覆盖写/2=FA_WRITE_ADD 追加写打开文件,返回布尔file_close()-关闭文件,写入后必须调,防丢数据file_size()-当前打开文件的总字节数file_seek(offset)字节偏移,0=文件开头定位读写位置file_read(count)1 ≤ count ≤ 2048读字节数组(table,下标从 1),失败返回 nilfile_write(data)字节 table,1 ≤ #data ≤ 2048写字节数组,返回布尔file_delete(path)完整路径删除文件,不可恢复file_copy(src,dst)源/目标完整路径复制文件,进度回调 on_copy_file_processon_copy_file_process(status,filesize,transfersize)status 0失败/1进行中/2成功拷贝进度回调,transfersize 已复制字节mkdir(dir)完整目录路径同步创建文件夹 3. 🔴 内存安全铁律(不看必翻车)严禁把多次读取的数据累积存进全局变量或长生命周期缓冲区。典型错误:第一次读 2KB 存全局 table,后面每次读再追加——处理大文件时内存持续增长,直接触发看门狗复位。正确姿势:流式处理——每次 file_read(2048) 后立即解析/校验/写入/显示,处理完就释放,任何时刻内存里只有一块 ≤2KB 的临时缓冲。写文件同理:每次只准备 ≤2048 字节的块立即 file_write,不要先拼一个几 MB 的大 table 再分段写(数据准备阶段就内存溢出了)。 4. 读文件:流式分块 + 回调官方封装了 file.read_stream(filepath, on_chunk):打开 → 取大小 → 循环 seek+read(≤2048) → 每块调 on_chunk(chunk, offset, is_last) → 关文件。回调返回 false 可提前终止,大文件循环里调 feed_dog() 喂狗。4.1 读 txt 逐行显示if addr == 0x1501 then local idx = get_uint16(vtype, addr) if idx == 0 then return end local path = (idx == 1) and "1:/test1.txt" or "1:/test2.txt" record_clear(0) g_line_buffer = "" -- 行缓冲 file.read_stream(path, function(chunk, offset, is_last) local str = "" for _, b in ipairs(chunk) do str = str .. string.char(b) end g_line_buffer = g_line_buffer .. str local lines = my_split(g_line_buffer, "n") -- 按行分割 g_line_buffer = lines[#lines] -- 保留不完整行(可能跨块) for i = 1, #lines - 1 do if #lines[i] > 0 then record_write_string(0, lines[i]) end end return true end) if string.len(g_line_buffer) > 0 then -- 最后一行 record_write_string(0, g_line_buffer) end end注意跨块行缓冲:换行符可能正好落在两块之间,所以要维护 g_line_buffer 把不完整行留到下一块。4.2 读 bin 按 16 字节一行elseif addr == 0x1502 then local idx = get_uint16(vtype, addr) if idx == 0 then return end local path = (idx == 1) and "1:/test1.bin" or "1:/test2.bin" record_clear(1) g_byte_buffer = {} file.read_stream(path, function(chunk, offset, is_last) for _, b in ipairs(chunk) do table.insert(g_byte_buffer, b) if #g_byte_buffer >= 16 then -- 每满 16 字节提交一行 local line = {} for i = 1, 16 do line[i] = g_byte_buffer[i] end record_write_data(1, line) for i = 1, 16 do table.remove(g_byte_buffer, 1) end end end return true end) if #g_byte_buffer > 0 then -- 末尾不足 16 字节补 0 while #g_byte_buffer < 16 do table.insert(g_byte_buffer, 0) end record_write_data(1, g_byte_buffer) end 5. 写文件封装 file.write_chunk(filepath, data, mode),mode 1=覆盖写、2=追加写,data 支持 string 或字节 table(≤2048)。function file.write_chunk(filepath, data, mode) if mode ~= file.mode.create and mode ~= file.mode.append then return false end local t = type(data) local len = (t == "string" or t == "table") and #data or -1 if len CHUNK_SIZE then return false end -- 防内存溢出 local ok = file_open(filepath, mode) if not ok then return false end if mode == file.mode.append then -- 追加模式必须手动定位! local size = file_size() if not file_seek(size) then file_close(); return false end end local buf = {} if t == "string" then for i = 1, len do buf[i] = string.byte(data, i) end else for i = 1, len do buf[i] = data[i] end end local ret = file_write(buf) file_close() return ret end -- 场景1:新建写 local name = get_string(VT_LW, 0x1510) local msg = get_string(VT_LW, 0x1520) if not name or #name == 0 or not msg then return end file.write_chunk("1:/"..name..".txt", msg.."n", 1) -- 场景2:追加写 file.write_chunk("1:/"..name..".txt", msg.."n", 2)⚠️ 追加写必须显式 file_seek(file_size())。HMI 的 file_open(mode=2) 不等于 POSIX 的 O_APPEND,不会自动定位到末尾——不 seek 就从偏移 0 开始写,把原文件开头覆盖掉。 6. 遍历 + 拷贝删除6.1 遍历 SD 根目录显示到数据记录控件function get_extension(filename) local dot = string.find(filename, ".", 1, true) if dot then return string.sub(filename, 1, dot-1), string.sub(filename, dot+1):lower() end return filename, "未知" end function on_list_dir(path, filename, type, fsize) local msg if type == 0 then msg = filename..";文件夹;;" else local sz if fsize >= 1024^3 then sz = string.format("%.2fG", fsize/1024^3) elseif fsize >= 1024^2 then sz = string.format("%.2fM", fsize/1024^2) elseif fsize >= 1024 then sz = string.format("%.2fKB", fsize/1024) else sz = fsize.."byte" end local name, ext = get_extension(filename) msg = name..";"..ext..";"..sz..";" end record_write_string(2, msg) end -- 刷新按钮 LW1504=1 function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1504 and get_uint16(vtype, addr) == 1 then record_clear(2) list_dir("1:") -- 遍历 SD 根目录 end end end6.2 复制 + 删除(带进度条)function on_copy_file_process(status, filesize, transfersize) if status == 0 then set_uint16(VT_LW, 0x1507, 3) -- 失败 elseif status == 1 then local p = math.floor(transfersize * 100 / filesize) set_uint16(VT_LW, 0x1506, p) -- 进度条 refresh_screen() elseif status == 2 then set_uint16(VT_LW, 0x1506, 100) set_uint16(VT_LW, 0x1507, 2) -- 成功 refresh_screen() end end function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1505 then local mode = get_uint16(vtype, addr) if mode == 1 then -- 复制 if file.exists("1:/1.txt") then file_copy("1:/1.txt", "1:/1_copy.txt") else set_uint16(VT_LW, 0x1507, 1) end mkdir("1:/test") elseif mode == 2 then -- 删除 file_delete("1:/test") if file.exists("1:/1_copy.txt") then file_delete("1:/1_copy.txt") if not file.exists("1:/1_copy.txt") then set_uint16(VT_LW, 0x1507, 4) else set_uint16(VT_LW, 0x1507, 5) end else set_uint16(VT_LW, 0x1507, 1) end end refresh_screen() end end 五个必踩的坑:①内存铁律——严禁全局累积大缓冲,一次只留 ≤2KB 块,否则看门狗复位;②追加写必须 file_seek(file_size()),HMI 的 append 不是 O_APPEND;③路径必须带设备前缀和 /——「1:/config.txt」对、「1:config.txt」错;④大文件读取循环里要 feed_dog(),回调里别干耗时的事;⑤写文件后立即 file_close(),断电会损坏文件或部分写入。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「文件读写」,版权归大彩科技所有。 --- ### 28. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警过滤回调 on_filter_warning(warning_id)(定制固件专属):决定某条告警显示还是不显示。返回 0 不显示、1 显示。典型场景:一台 HMI 管理两台设备,设备 1 的告警(ID 1~100)在画面 0 看,设备 2 的告警(ID 101~200)在画面 2 看——不靠过滤就得建两套告警。 1. 启用过滤on_init 里置位启用:function on_init() set_uint16(VT_LW, 0x0115, 1) -- 启用告警过滤 end function on_filter_warning(warning_id) local cur = get_uint16(VT_LW, 0x0114) -- 当前画面/设备号 if cur == 0 then return (warning_id >= 1 and warning_id = 101 and warning_id <= 200) and 1 or 0 end return 1 end 2. 结合 warning_set 分发多从机场景:告警数据从 Modbus 读回来,用 warning_set 批量触发,过滤回调只放行当前设备相关的:-- 读回告警后逐个触发 function on_cmd_resp(slave, vtype, addr, count, ret, wr) ... for j = 0, 15 do local bitv = (val >> j) & 0x01 warning_set(idx + slave * 100, bitv, 1) -- 设备号编码进告警ID end end -- 过滤:只显示当前选中设备的告警 function on_filter_warning(warning_id) local dev = get_uint16(VT_LW, 0x0114) -- 当前设备号 local wdev = math.floor(warning_id / 100) -- 告警所属设备 return (wdev == dev) and 1 or 0 end刷新显示:切换设备后往 0x0114 写 0x0022 触发告警列表刷新(不同版本刷新机制看固件手册)。 两个坑:①on_filter_warning 返回 0 是隐藏、1 是显示,别写反;②过滤和告警控件是联动关系——过滤只影响显示,告警数据本身还在,切换条件后要主动刷新列表才能看到变化。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警过滤」,版权归大彩科技所有。 --- ### 29. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警选择回调 on_select_warning(screen_id, control_id, warning_id, starttime, stoptime, warning_text)(定制固件专属):用户在告警列表里选中某条告警时触发,把告警 ID、起止时间、文本都给你,脚本可以做处置建议、详情展示。 1. 前置条件告警控件控件 ID ≠ 0(和自绘控件一样,0 号控件不触发)告警控件勾选容许选中√ 2. 回调参数参数说明screen_id画面 IDcontrol_id控件 IDwarning_id告警 IDstarttime告警开始时间(时间戳)stoptime告警结束时间(时间戳)warning_text告警文本 3. 应用:按告警 ID 给处置建议g_Solution = { [1] = "检查压缩机排气压力", [2] = "检查冷凝器散热", [3] = "检查制冷剂是否泄漏", [100] = "检查水泵运行状态", } function make_datetime(ts) -- 时间戳格式化,按需实现 return os.date("%Y-%m-%d %H:%M:%S", ts) end function on_select_warning(screen_id, control_id, warning_id, starttime, stoptime, warning_text) local sol = g_Solution[warning_id] or "暂无处置建议" set_string(VT_LW, 0x1100, "告警ID:"..warning_id) set_string(VT_LW, 0x1101, make_datetime(starttime)) set_string(VT_LW, 0x1102, sol) -- 处置建议显示到 LW1102 end典型场景:运维人员点开一条告警,屏幕直接显示「这条告警该怎么处理」——比翻手册快得多。 两个坑:①定制固件才有此 API,普通固件没有;②必须 控件ID≠0 + 容许选中√ 同时满足,否则选中动作不触发回调。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警选择」,版权归大彩科技所有。 --- ### 30. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警参数回调 on_get_warning_param(warning_id) 解决一个问题:告警内容里要带实时数值。比如「温度过高:当前 85.5℃」——告警文本是模板,数字是运行时的。回调返回最多 4 个参数(data0~data3),填入告警设置里的 {#N:num1.num2} 占位符。 1. 占位符格式 {#data:num1.num2}在告警设置里,告警内容可以写成:温度过高:{#0:2.2} ℃字段含义data参数 ID,从 0 开始,最多 4 个(data0~data3)num1整数位前置空格数(对齐用)num2小数位补零数例:{#0:2.2} 表示 data0 显示 2 位整数(不足前补空格)+ 2 位小数(不足补零)。 2. 回调实现function on_get_warning_param(warning_id) -- 返回最多 4 个参数 local data0 = get_uint16(VT_LW, 0x1001) / 100 -- 缩小100倍:85.5 存的是 8550 local data1 = get_uint16(VT_LW, 0x1002) local data2 = get_uint16(VT_LW, 0x1003) local data3 = get_uint16(VT_LW, 0x1004) return data0, data1, data2, data3 end温度 85.5℃ 在寄存器里存 8550(放大 100 倍),回调里 /100 还原,再按 {#0:2.2} 格式化成「85.50」显示。 3. 与 on_parse_warning 的区别on_get_warning_param 只负责返回数值参数,文本模板在告警设置里配;而 on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3) 是完全接管告警文本生成——返回 (字符串, 编码),编码 1=GBK(中文屏推荐)/0=UTF-8。两者互斥,用参数填充就别用全接管。 三个坑:①回调只对设置了 {#N:...} 占位符的告警生效,没占位符的告警不会调它;②参数最多 4 个(data0~data3),超了不显示;③缩放注意单位——寄存器存的是放大值,回调里必须还原,否则显示 8550 而不是 85.50。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警参数」,版权归大彩科技所有。 --- ### 31. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警参数让告警文本能嵌入实时寄存器值——比如「1#压缩机电流过高:当前 12.5A」这种动态告警,而不是死板的固定文本。系统支持最多 4 个独立参数字段,每个字段可单独配显示格式(整数位前置空格、小数位补零),告警内容自动拼接。适用 HMI&M 系列&Dx 系列。 1. API:on_get_warning_param(warning_id)工程告警设置里启用了「告警参数」后,系统在显示告警详情时自动调用此回调。参数 warning_id 是告警唯一标识符,按 ID 区分业务逻辑,返回最多 4 个数值/状态参数:返回值必填用途data0否填充告警设置里的 {#0:num1.num2},或 on_parse_warning 的 p0data1否填充 {#1:num1.num2},或 on_parse_warning 的 p1data2否填充 {#2:num1.num2},或 on_parse_warning 的 p2data3否填充 {#3:num1.num2},或 on_parse_warning 的 p3 2. 告警内容格式:{#data:num1.num2}在告警设置里写告警内容时,参数占位符要遵循这个格式:字段含义示例data告警参数 ID,最多 4 个,从 0 开始{#0:2.2} 用 data0num1整数位前置空格个数num1=2:值 12.5 显示成「 12.5」(2 个前导空格)num2小数位个数,显示补零num2=2:值 12.5 显示成「12.50」例:告警内容写「1#压缩机电流过高:{#0:2.2}A」,data0 返回 12.5,显示为「1#压缩机电流过高: 12.50A」。 3. 应用案例:电流/温度告警带参数3.1 画面配置告警显示控件:告警模式=历史告警、时间顺序、显示日期和时间、时间在前、列宽比例 20;100;20;20、每页 5 行、滚动条√。两个位状态指示灯触发/解除告警:读取地址 LW1000.0 和 LW1000.1,切换开关类型。四个数值控件模拟告警参数:读取地址 LW1001~LW1004,启用输入。3.2 Lua:按告警 ID 返回参数告警内容里 {#0:2.2} 的意思是 data0 要缩小 100 倍显示(寄存器存的是放大 100 倍的值),所以回调里除 100:function on_get_warning_param(warning_id) if warning_id == 0 or warning_id == 1 then -- 告警ID 0 或 1 local data0, data1, data2, data3 = 0, 0, 0, 0 data0 = get_uint16(VT_LW, 0x1001) / 100 -- 放大100倍存储,除以100还原 data1 = get_uint16(VT_LW, 0x1002) / 100 data2 = get_uint16(VT_LW, 0x1003) / 100 data3 = get_uint16(VT_LW, 0x1004) -- 这个不缩 return data0, data1, data2, data3 end end运行虚拟屏,键盘给 LW1001 输入 1250,触发告警 0,告警内容里的 {#0:2.2} 显示 12.50——比例换算全在回调里做,显示端不用再处理。 三个要点:①占位符格式必须是 {#data:num1.num2},data 从 0 开始最多 4 个,写错格式参数不显示;②num1 是整数位前置空格不是整数位数——想右对齐才用,不需要就写 0;③num2 是小数位补零,寄存器里放大 10/100 倍存的工程值,记得在回调里除回去。这个回调和 on_parse_warning 是两套机制:on_get_warning_param 只填数值参数,on_parse_warning 是自定义整个告警文本。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警参数」,版权归大彩科技所有。 --- ### 32. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警集中管理:warning_set(warning_id, value, count) 批量触发告警 + on_parse_warning 自定义告警文本。典型场景:HMI 从 Modbus 读回从机的故障位,逐位映射成告警——8 台从机、每台 96 个告警,一条命令全触发。 1. API 总表函数说明warning_set_mode(en)全局使能:1=开/0=关warning_set(warning_id, value, count)位掩码批量触发:value 的低 count 位对应从 warning_id 起的告警(bit0→warning_id,count 1~16)on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)自定义告警文本回调,返回 (字符串, encode),encode 1=UTF-8/0=GBK 2. 8 从机 × 96 告警案例架构:8 台从机,每台读 Modbus 4x1000 起连续 6 个寄存器(16bit×6=96 位告警)。on_init 里 create_resp_que,on_cmd_resp 中逐从机逐寄存器逐位调用 warning_set。_warningTb = {} -- 0x1000~0x1005 各 bit 的告警名 function on_init() set_auto_read(0) create_resp_que() -- 告警设置里预配 768 条(8 台 × 96) end function on_cmd_resp(slave, vtype, addr, count, ret, wr) if ret == 0 and wr == 0 then -- slave 从机,addr 起始,读回 count 个寄存器 for i = 0, 5 do local val = get_uint16(vtype, addr + i) for j = 0, 15 do local bitv = (val >> j) & 0x01 local wid = (addr - 0x1000) * 16 + j + slave * 100 warning_set(wid, bitv, 1) -- 单 bit 触发 end end end end function on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3) local slave_no = math.floor(id / 96) + 1 -- 从机号 local msg_id = id % 96 -- 消息 ID local name = _warningTb[0x1000 + math.floor(msg_id / 16)] or "未知告警" local msg = "从机"..slave_no.." : "..name return msg, 1 -- 1=UTF-8 end告警 ID 编码约定:从机号×100 + 位序号,解析时反推。告警设置需预配全部 768 条,文本用 on_parse_warning 动态生成(按从机号前缀),比静态配 768 条文本省事得多。 三个坑:①warning_set 的 value 低 count 位对应从 warning_id 起的告警,bit0→warning_id、bit1→warning_id+1,批量触发一条命令搞定;②count 范围 1~16,超过拆多次;③on_parse_warning 的返回值第一个是文本、第二个是编码(1=UTF-8/0=GBK),中文屏别用错编码。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警集中管理」,版权归大彩科技所有。 --- ### 33. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 LUA 画图 API 全套:直线、矩形、半透矩形、圆、椭圆、文字、图片、屏内/外部图片(SD/U 盘)、截图。核心机制是 on_draw(screen, control) 控件级自绘回调——所有 draw_xxx 指令必须在 on_draw 里调用才生效。适用 HMI&M 系列&Dx 系列。 1. 绘图 API 总表函数参数说明set_pen_color(color)RGB565 颜色设置画笔前景色,作用于线条/边框/轮廓/文本描边draw_line(x0,y0,x1,y1,width)width 1~10画直线,颜色取当前画笔draw_rect(x0,y0,x1,y1,fill)fill 1=填充/0=边框矩形,x0,y0 左上角,x1,y1 右下角draw_rect_alpha(x0,y0,x1,y1,alpha)alpha 0~255半透明实心矩形,0=全透/255=不透明,做遮罩层draw_circle(x,y,r,fill)fill 0=实心/非0=空心(值为线宽)画圆,x,y 圆心,r 半径draw_ellipse(x0,y0,x1,y1,fill)外接矩形两角,fill 同上画内切于矩形的椭圆draw_image(image_id,frame_id,dstx,dsty,w,h,srcx,srcy)image_id 查 build/image.xml;frame_id 动画帧画工程图片资源,支持缩放和裁剪draw_text(text,x,y,w,h,font_id,size,color,align,charcode)align 0左/1中/2右;charcode 0=UTF-8/1=GBK区域内画文字load_surface(filename)JPEG/PNG 路径加载外部图片返回句柄(不走 image.bin)draw_surface(surface,dstx,dsty,w,h,srcx,srcy)surface 句柄画已加载的外部图片,支持裁剪缩放,必须在 on_draw 里调destroy_surface(surface)句柄释放单个图层资源destroy_all_surface()-批量释放所有已加载图层get_surface_size(surface)句柄获取图层原始像素宽高clear_image_buffer()-释放内部图片资源缓存screen_shoot(filepath)完整路径含扩展名当前画面存为 JPEG 2. on_draw 触发机制(必须先懂)on_draw(screen_id, control_id) 是系统回调,用户不得直接调用。control_id 必须 ≠ 0,否则自绘功能无效。触发条件:画面含动画、视频、RTC 等动态元素刷新用户触摸/操作屏幕控件脚本 set_xxx 更新控件属性串口/LUA 改寄存器导致控件状态变化主动调用 redraw()多图层机制:HMI 用控件 Z 轴顺序(编辑器里控件叠放顺序)当图层管理。on_draw 对每个可重绘控件独立触发,按 control_id 判断往哪个图层画。示例:蓝色矩形 ID=10 在下层画「水果」,黄色矩形 ID=11 在上层画「小岛」,黄色会盖住蓝色部分。function on_draw(screen_id, control_id) if screen_id == 0 and control_id == 1 then draw_surface(surface[1], 293, 88, 222, 353, 0, 0) -- 裁剪显示 elseif screen_id == 0 and control_id == 2 then draw_surface(surface[2], 314, 158, 180, 250, 0, 0) end end 3. 颜色:RGB565所有颜色参数都是 16 位 RGB565:高 5 位 Red(0~31)、中 6 位 Green(0~63)、低 5 位 Blue(0~31),范围 0x0000~0xFFFF。颜色RGB(888)RGB565Lua 常量建议红(255,0,0)0xF800COLOR_RED = 0xF800绿(0,255,0)0x07E0COLOR_GREEN = 0x07E0蓝(0,0,255)0x001FCOLOR_BLUE = 0x001F白(255,255,255)0xFFFFCOLOR_WHITE = 0xFFFF黑(0,0,0)0x0000COLOR_BLACK = 0x0000 4. 应用案例:15 种绘制类型开关4.1 工程配置15 个字设置按钮全关联 LW6101,常量值 1~15 依次对应:直线/矩形/半透矩形/圆/椭圆/图片ID/文字/屏内图片/销毁图片/销毁所有图片/获取图大小/视频窗口截图/屏幕截图/画SD图/画U盘图片。15 个位状态指示灯关联 LW6100 切画笔颜色。4.2 框架:mode 表 + switch 分发penColor = {0xF800, 0x001F} -- 红、蓝 CUR_COLOR = 0xF800 -- 初始颜色 draw_type = 0 -- 当前绘制类型 mode = { -- 绘制类型表 line = 1, rect = 2, rect_alpha = 3, circle = 4, ellipse = 5, imageId = 6, text = 7, surface_path3 = 8, destroyOne = 9, destroyAll = 10, getSurface = 11, videoShoot = 12, screenShoot = 13, surface_pathsd = 14, surface_pathusb = 15 } function on_update(slave, vtype, addr) if addr == 0x6100 then CUR_COLOR = penColor[get_uint16(VT_LW, addr) + 1] -- 切画笔 elseif addr == 0x6101 then draw_type = get_uint16(VT_LW, addr) -- 切绘制类型 end redraw() -- 触发重绘 end function on_draw(screen_id, control_id) set_pen_color(CUR_COLOR) local switch = { [mode.line] = function(control) -- 键值1 draw_line(225, 253, 405, 253) -- 默认宽度1 draw_line(508, 128, 508, 378, 5) -- 宽度5 end, [mode.rect] = function(control) -- 键值2 draw_rect(225, 128, 225+180, 128+250, 0) -- 不填充 draw_rect(418, 163, 418+180, 128+180, 1) -- 填充 end, [mode.rect_alpha] = function(control) -- 键值3 draw_rect_alpha(225, 128, 225+180, 128+250, 200) -- 透明度200 draw_rect_alpha(418, 163, 418+180, 128+180, 230) -- 透明度230 end, [mode.circle] = function(control) -- 键值4 draw_circle(300, 253, 100, 0) -- 实心 draw_circle(450, 253, 150, 1) -- 空心(线宽1) end, [mode.ellipse] = function(control) -- 键值5 draw_ellipse(225, 128, 225+180, 128+250, 0) -- 实心 draw_ellipse(418, 163, 418+180, 128+180, 1) -- 空心 end, [mode.text] = function(control) -- 键值7 draw_text("VisualHMI", 100, 300, 200, 40, 0, 24, CUR_COLOR, 1, 0) -- 居中 UTF-8 end, } if switch[draw_type] then switch[draw_type](control) end end 5. 外部图片(SD/U 盘)与截图-- 加载 SD 卡图片(load_surface 支持 JPEG/PNG) if draw_type == mode.surface_pathsd then surface[1] = load_surface("1:/pic.png") redraw() end -- on_draw 里绘制 if draw_type == mode.surface_pathsd then if surface[1] then draw_surface(surface[1], 225, 128, 180, 250, 0, 0) end end -- 截图到 SD 卡 if draw_type == mode.screenShoot then screen_shoot("1:/shot.jpg") end用 load_surface 加载的外部图片不进工程 image.bin,是运行期从文件系统读。用完必须 destroy_surface 释放,否则内存泄漏;大图或带透明通道的 PNG 特别吃内存。 五个坑:①draw_xxx 必须在 on_draw 回调里调用才生效,在 on_update 里画什么都没反应;②控件 ID ≠ 0,0 号控件不触发自绘;③draw_circle/draw_ellipse 的 fill 语义和 draw_rect 相反——圆和椭圆 0=实心、非0=空心,矩形 1=填充/0=边框,别记混;④draw_image 的 image_id 查工程 build/image.xml,不是文件名;⑤外部图片用完就 destroy_surface,HMI 内存小,泄漏多了直接崩。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「画图」,版权归大彩科技所有。 --- ### 34. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数据记录控件 + record_* API:在 HMI 上维护历史数据表——数值型(如电压曲线数据)和字符串型(如操作日志)都能存,配表格控件显示、翻页、时间戳定位。sn 是资料采样通道索引,范围 0~19 共 20 通道,控件数据来源选「资料采集」的哪个通道,API 就操作哪个。 1. record_* API 总表函数说明record_get_count(sn)通道已存记录总条数record_write_data(sn, data)追加一条记录,data 为字数组(索引从 1 开始)record_read_data(sn, index)读一条,返回 data(索引从 1)和 timestamp(32 位 Unix 秒)record_modify_data(sn, index, data)改一条,index 从 0 开始,须 < record_get_count(sn)record_write_string(sn, strings)追加字符串记录,字段用分号 ; 分隔record_read_string(sn, index)读字符串记录,返回 strings 和 timestamprecord_modify_string(sn, index, strings)改字符串记录record_clear(sn)清空通道所有记录(数值/字符串都行)⚠️ 若采样已启用块地址存储模式,记录不可篡改——modify 会失败。 2. 数值表格案例(添加/修改/读取/清除/查条数)资料采集配置:触发采样、记录条数 100、数据地址 LW2000、UINT16、数据个数 10、控制地址 LW1001、采样控制地址 LW1002、启动模式 OFF→ON。数据记录控件:数据来源「[0]数值数组」、时间逆序、通道数 10、每页 5 行、翻页控制 LW1004、允许翻页 LW1005(只读)、时间戳定位 LW1006(UINT32)、选中行通知 LW1008(UINT32)。5 个按钮写 LW1000,常量 1=添加/2=修改/3=读取/4=清除/5=读条数。addByteRatio = 0 -- 累加器,让每次添加的数据不同 function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1100 then -- 操作按钮 local key = get_uint16(VT_LW, 0x1100) local dataTb = {} if key == 1 then -- 添加 addByteRatio = addByteRatio + 1 for i = 1, 10 do dataTb[i] = i * addByteRatio -- 第一次 1..10,第二次 2..20 end record_write_data(0, dataTb) elseif key == 2 then -- 修改选中行 local cnt = record_get_count(0) local line = cnt - get_uint32(VT_LW, 0x1105) - 1 -- 逆序表格行映射 for i = 1, 10 do dataTb[i] = 12345 end record_modify_data(0, line, dataTb) elseif key == 3 then -- 读取选中行 local cnt = record_get_count(0) local line = cnt - get_uint32(VT_LW, 0x1105) - 1 local data, timeUnix = record_read_data(0, line) local msg = "时间:"..timeUnix.." 数据:" for i = 1, 10 do msg = msg..data[i].." " end set_string(VT_LW, 0x1160, msg) elseif key == 4 then record_clear(0) -- 清除 elseif key == 5 then set_string(VT_LW, 0x1160, "条数:"..record_get_count(0)) end end end end逆序表格的行映射:控件时间逆序显示,第 0 行是最新记录。选中行通知给的是显示位置,换算公式 line = cnt - select - 1。 3. 字符串表格案例资料采集:触发采样、记录条数 100、数据地址 LW3000、STRING、数据个数 50、控制地址 LW1501、采样控制地址 LW1502、启动模式 OFF→ON。控件:数据来源「[1]字符串」、字符串表格√、GB CODE、时间顺序(注意和数值案例的逆序不同)、通道数 10、每页 5 行、翻页 LW1201、允许翻页 LW1202、时间戳定位 LW1203、选中行通知 LW1205。5 个按钮写 LW1200。addStr = 0 function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1200 then local key = get_uint16(VT_LW, 0x1200) if key == 1 then -- 添加 local cnt = record_get_count(1) local line = get_uint32(VT_LW, 0x1205) -- 顺序表格不反转 if cnt < line - 1 then return end addStr = addStr + 10 local dataStr = "" for i = 1, 10 do dataStr = dataStr.."第"..(addStr - 10 + i).."个;" end record_write_string(1, dataStr) -- "第1个;...第10个;" elseif key == 2 then -- 修改 local line = get_uint32(VT_LW, 0x1205) record_modify_string(1, line, "change;change;change;change;change;change;change;change;change;change;") elseif key == 3 then -- 读取 local line = get_uint32(VT_LW, 0x1205) local dataStr, timeUnix = record_read_string(1, line) set_string(VT_LW, 0x1260, timeUnix..dataStr) elseif key == 4 then record_clear(1) elseif key == 5 then set_string(VT_LW, 0x1260, "条数:"..record_get_count(1)) end end end字符串记录用分号 ; 分隔字段,和表格控件解析规则一致。顺序表格选中行不用反转,直接拿 LW1205。 四个坑:①sn 通道号必须和控件数据来源选的资料采集索引对上;②数值记录 data 是下标从 1 的数组,别按 C 习惯从 0 开始;③逆序表格行映射要反转(line = cnt - select - 1),顺序表格不用;④块地址存储模式下记录不可 modify,要改数据别开掉电存储。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「数据记录」,版权归大彩科技所有。 --- ### 35. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 VisualHMI 的 Lua 支持 32 个软件定时器(索引 0~31)。启动后超时触发 on_timer(timer_id) 回调,做周期性任务、延时操作、状态轮询。⚠️ 这是应用层软件定时器,精度受系统负载影响,不适用于硬实时控制。 1. API 总表函数参数说明start_timer(timer_id, timeout, countdown, repeat)timeout 毫秒(最小约 10~20ms);countdown 0=顺计时/1=倒计时;repeat 0=无限重复/N=触发 N 次后自动停启动定时器stop_timer(timer_id)定时器 ID立即停止on_timer(timer_id)超时回调统一入口用 timer_id 区分并发定时器get_timer_value(timer_id)定时器 ID获取当前计时值(ms),支持顺/倒计时countdown 参数只影响内部计时显示/调试,不改 on_timer 的触发行为——顺计时到 timeout 触发,倒计时从 timeout 减到 0 触发,回调都是同一个。 2. 基础用法function on_init() start_timer(0, 1000, 0, 0) -- 1秒周期,无限重复 start_timer(1, 5000, 1, 1) -- 5秒倒计时,只触发1次 end function on_timer(timer_id) if timer_id == 0 then -- 每秒做一次:状态轮询 elseif timer_id == 1 then -- 5秒后执行一次 end end 3. 应用:倒计时完成后给 PLC 发指令需求:设定时/分后倒计时,倒计时结束复位按钮并给主板发指令。控件布局:位状态指示灯 LW1002(切换开关)控制启停;滚轮控件 LW1000(时,0~23)、LW1001(分)设时长;文本控件 LW1010 显示倒计时。_TIMER_REPEAT_ = 0 -- 总时长(秒) _TIMER_CNT_ = 0 -- 已触发次数 function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1002 then if get_uint16(VT_LW, 0x1002) == 1 and _TIMER_REPEAT_ > 0 then stop_timer(0) start_timer(0, 1000, 0, _TIMER_REPEAT_) -- 每秒一次,共 repeat 次 else stop_timer(0) end end end function on_timer(timer_id) if timer_id == 0 then _TIMER_CNT_ = _TIMER_CNT_ + 1 local remain = _TIMER_REPEAT_ - _TIMER_CNT_ -- 显示剩余时间 mm:ss set_string(VT_LW, 0x1010, string.format("%02d:%02d", math.floor(remain / 60), remain % 60)) if remain == 0 then set_uint16(VT_LW, 0x1002, 0x00) -- 复位启停按钮 set_uint16(VT_LW, 0x1003, 0x01) -- 发指令给主板 end end end要点:_TIMER_REPEAT_ 在用户设定时长时计算(hour*3600 + min*60);start_timer 的 repeat 传总次数,on_timer 每次累加 _TIMER_CNT_,相等即结束。set_notify(0/1) 控制定时器期间是否发出指令通知,需要下发时置 1。 三个坑:①软件定时器精度受系统负载影响,做硬实时控制会翻车;②timeout 最小约 10~20ms,别传 1ms 期望准;③repeat=N 触发 N 次后自动停,要无限循环传 0;多个定时器并发时用 timer_id 区分,on_timer 是统一入口。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「定时器」,版权归大彩科技所有。 --- ### 36. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 一主多从:HMI 作为 Modbus 主机,通过 start_read 后台轮询多个从机的寄存器。核心函数 start_read 建任务、get_xxx 读缓存、on_cmd_resp 收结果——不阻塞脚本。 1. start_read 参数start_read(index, vtype, addr, quantity, cycle, cycle_run, mode)参数说明index任务索引 0~127,stop_read(index) 用vtype寄存器类型(VT_0x/VT_3x/VT_4x 等)addr起始地址quantity读取数量 1~120 个寄存器cycle选填,轮询周期倍数(默认 0=每周期都读)cycle_run选填,周期内第几次执行(0-based,须 < cycle)mode选填,0=持续周期读(默认)/1=仅读一次(需先 create_resp_que()) 2. 基本用法function on_init() -- 每周期都读从机0的 4x1000~1009(10个寄存器) start_read(0, VT_4x, 0x1000, 10) -- 每 3 个周期读一次从机1的 4x2000~2009,且在周期内第3次执行 start_read(1, VT_4x, 0x2000, 10, 3, 2) end function on_run(screen) -- 读数据直接拿缓存,零通信开销 local v = get_uint16(VT_4x, 0x1000) local f = get_float(VT_4x, 0x2000) endstart_read 只建任务,实际数据靠 get_xxx 从本地缓存读——和寄存器操作篇同一个机制。要拿读完成通知,用 on_cmd_resp 回调(需 create_resp_que 配合)。 3. 多从机轮询调度-- 8 台从机,每台读 20 个寄存器,错开周期避免总线拥堵 function on_init() for i = 0, 7 do start_read(i, VT_4x, 0x0000, 20, 8, i) -- 8周期轮一遍,每周期读一台 end end function on_cmd_resp(slave, vtype, addr, count, ret, wr) if ret == 0 then -- 第 slave 台从机读取成功,处理数据 else -- 通信异常,标记从机离线 end end从机多了总线带宽有限,用 cycle/cycle_run 错峰读;异常在 on_cmd_resp 里 ret 非 0 判断,做离线标记。 三个坑:①quantity 最大 120,超过要分多次 start_read;②cycle_run 必须小于 cycle,且 cycle_run 从 0 计数;③stop_read 停止任务后缓存保留最后值——不会清零,判断离线要靠 on_cmd_resp 的 ret。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「Modbus一主多从」,版权归大彩科技所有。 --- ### 37. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 这是 VisualHMI 平台 Lua 脚本的完整 API 手册:10 个系统回调 + 32 个读写寄存器函数 + 10 个绘图函数,共 52 个接口。写脚本前先翻这篇,比逐个翻教程快。平台基于 Lua 5.3。 0. 基础:自动生成的 main.lua 菜单 工程→脚本编程 默认生成 main.lua,自动带协议对应的数据类型定义:ENCRYPT_ = 0 -- LUA脚本加密开关 -- 数据类型定义(随协议变化,以下为 Modbus) VT_LW = 1 -- 内部变量 VT_RW = 2 -- FLASH掉电存储 VT_0x = 10 -- 线圈 VT_1x = 11 -- 输入点(离散输入) VT_3x = 12 -- 输入寄存器 VT_4x = 13 -- 保持寄存器 function on_init() end function on_run(screen) end function on_update(slave,vtype,addr) end function on_draw(screen_id,control_id) endFX3U 协议下还会有 VT_M(内部继电器)、VT_D(D寄存器)等类型。on_update 里的 vtype、get/set 函数第一个参数都用这些常量。 1. 常用回调函数(10 个) 回调触发时机要点on_init()系统加载 LUA 后立即执行一次初始化、dofile 加载其他 lua、写初值on_run(screen)每个主循环周期自动调用核心周期调度。禁止 delay_ms/长循环/网络同步/内部 set_run_cycle();Modbus 主站时别高频写从机(总线堵塞)on_update(slave,vtype,addr)寄存器/变量值变化时触发数据驱动不轮询。串口/Modbus 主站写入、on_update 内 set_xxx 不触发(防递归);可用全局 EN_ON_UPDATE_API_CB 控制开关on_screen_change(screen)画面切换完成后初始化/状态同步/资源加载on_press(state,x,y)触摸状态变化,每 100ms 最多一次state: 0抬起/1按下/2长按(按下只触发一次);底层坐标,点空白也触发on_usb_inserted(driver)U 盘插入识别driver 为盘符,M 系列是 "2:",用全局变量记录on_usb_removed()U 盘拔出清盘符全局变量on_sd_inserted(dir)SD 卡插入识别dir 盘符,M 系列是 "1:"on_sd_removed()SD 卡拔出清盘符全局变量on_parse_timestamp(screen,control,timestamp)告警/数据/操作记录表格时间字段格式化control 必须≠0;配 make_datetime(timestamp) 返回自定义时间串 2. 读写寄存器函数(32 个) 2.0 先说两个关键机制(所有 set/get 通用)机制一:get_xxx() 是零通信开销的。get 系列全部从 HMI 本地缓存(内存镜像)读,不产生串口帧。HMI 后台任务按工程配置的轮询周期自动从 PLC 读通信变量(如 Modbus 的 VT_3x/VT_4x)并缓存。画面控件绑定了某地址,该地址就自动进轮询列表;脚本要读没被工程引用的地址,用 start_read 显式请求同步。机制二:set_xxx() 不一定发串口帧。只有两个条件同时满足才主动发报文:①HMI 是主机模式(Modbus Master/DCBUS/XGUS);②串口通知没被 set_notify(0) 禁止。从机模式下 set 只更新本地镜像。 2.1 通信控制函数参数说明set_notify(enable)0禁止/1使能(默认)全局串口发送通知开关。set_notify(0) 后 set_xxx 不发串口指令,改完恢复 set_notify(1)select_slave(slave_id)从机索引 0 起多从机模式下切换后续 get/set 访问的从机。slave_id 是工程从机列表数组下标,不是 Modbus 站号set_endian(en)0大端(默认)/1小端多字节数据(uint16/32/float)与从机交换时的字节序。仅通信协议涉及多字节时生效start_read(index,vtype,addr,quantity,cycle,cycle_run,mode)index 0~127;quantity 1~120;cycle 轮询倍数(默认0=每周期);cycle_run 周期内第几次(0-based);mode 0持续/1仅一次主机模式后台自动轮询。无返回值,数据用 get_xxx 读缓存。mode=1 需先 create_resp_que()stop_read(index)任务索引停止指定后台读取任务,缓存保留最后值stop_all_read()-停掉所有脚本启动的读取任务set_auto_read(en)1启用(默认)/0禁止画面绑定变量自动轮询的总开关。0 后完全由 start_read 接管create_resp_que()-创建响应队列,配合 start_read(mode=1) 做单次按需读取on_cmd_resp(slave,vtype,addr,count,ret,wr)ret 0成功/1异常;wr 0读/1写主机模式通信结果异步回调,收到响应或超时触发。判断单次读写成败set_slave_site(idx,slave_id)idx 从机索引;slave_id 新站号(Modbus 1~247)运行时动态改从机站号,适应现场组网 2.2 位操作函数参数说明set_bit(vtype,addr,value,count)value 16位无符号,低 count 位对应目标位(bit0→addr,bit1→addr+1…);count 选填 1~16批量位写入。Modbus 线圈、FX3U 的 X/Y/S/M 都行。一次通信写多个开关get_bit(vtype,addr)-读单一位,返回 0/1。从本地缓存读,零通信开销 2.3 数值读写(16/32/64 位)函数数值范围地址跨度set/get_uint16(vtype,addr,value)0~65535,超出截断 & 0xFFFF1 个寄存器set/get_int16(vtype,addr,value)-32768~+32767,超出截断 & 0xFFFF1 个寄存器set/get_uint32(vtype,addr,value)0~4294967295,截断 & 0xFFFFFFFF2 个寄存器set/get_int32(vtype,addr,value)-2^31~2^31-12 个寄存器set/get_uint64(vtype,addr,value)0~2^64-14 个寄存器set/get_int64(vtype,addr,value)-2^63~2^63-14 个寄存器set/get_float(vtype,addr,value)IEEE 754 单精度2 个寄存器set/get_double(vtype,addr,value)IEEE 754 双精度4 个寄存器所有 get 系列读本地缓存;set 系列通信触发看「机制二」。 2.4 字符串与批量函数参数说明set_string(vtype,addr,str)str 最大 2K 字节,UTF-8 或 GBK写字符串到地址序列get_string(vtype,addr,len)len 选填,默认 128 字节,最大 2048读字符串,自动在 截断set_uint16_ex(vtype,addr,value1,...,valueN)最多 120 个值可变参数批量写连续寄存器,适合固定参数集set_array(vtype,addr,buff)buff 为 Lua table(word 数组),最多 120 字table 批量写,适合程序化生成/动态数据。与 set_uint16_ex 区别在传参方式 3. 绘图函数(10 个) 全部 draw_xxx 必须在 on_draw(screen_id,control_id) 回调里调用才生效,控件 ID 必须 ≠ 0。图层按控件 Z 轴(编辑器叠放顺序)管理,靠判断 control_id 分层绘制。主动刷新调 redraw()。函数参数说明set_pen_color(color)RGB565:高5位R(0~31)/中6位G(0~63)/低5位B(0~31)设置画笔(前景)颜色。红 0xF800、绿 0x07E0、蓝 0x001F、白 0xFFFF、黑 0x0000draw_line(x0,y0,x1,y1,width)width 1~10画直线,颜色取当前画笔draw_rect(x0,y0,x1,y1,fill)fill 1填充/0边框左上角+右下角坐标draw_rect_alpha(x0,y0,x1,y1,alpha)alpha 0~255(0透明/255不透明)半透明实心矩形,遮罩层常用draw_circle(x,y,r,fill)fill 0实心/非0空心(值作线厚)圆心+半径draw_ellipse(x0,y0,x1,y1,fill)fill 0实心/非0空心外接矩形定义椭圆draw_image(image_id,frame_id,dstx,dsty,width,height,srcx,srcy)image_id 查 build/image.xml;frame_id 动画帧(非动画=0)绘制图片,支持缩放+裁剪。image_id 在工程 build 目录 image.xml 里查draw_text(text,x,y,w,h,font_id,size,color,align,charcode)align 0左/1中/2右;charcode 0=UTF-8(默认)/1=GBK区域文字绘制,支持多字节字符draw_surface(surface,x,y,w,h,srcx,srcy)surface 为画面/画布资源画面裁剪显示,多图层合成用 4. 绘图实例:switch 表驱动源文所有绘图示例都是一个套路:on_update 读按钮键值 → redraw() → on_draw 里按键值查 switch 表选绘制函数。以画线+画圆为例:draw_type = 0 mode = { line = 1, rect = 2, rect_alpha = 3, circle = 4, ellipse = 5, imageId = 6, text = 7 } function on_update(slave,vtype,addr) if addr == 0x1000 then draw_type = get_uint16(VT_LW, addr) -- 字设置按钮键值 redraw() end end function on_draw(screen_id, control_id) local switch = { [mode.line] = function(control) if screen_id == 0 and control == 1 then set_pen_color(0xFFE0) -- 黄色 draw_line(225, 253, 405, 253) set_pen_color(0xF800) -- 红色 draw_line(508, 128, 508, 378, 5) end end, [mode.circle] = function(control) if screen_id == 0 and control == 1 then draw_circle(300, 253, 100, 0) -- 实心圆 draw_circle(450, 253, 150, 1) -- 空心圆,线厚1 end end, } if switch[draw_type] then switch[draw_type](control_id) end end 三个最容易翻车的点:①get_xxx 读的是缓存不是实时值——要读没绑控件的地址,先 start_read 同步;②set_xxx 在从机模式下不发串口帧——MCU 收不到是正常的,别查半天波特率;③on_run 里严禁 set_run_cycle() 和 delay_ms,调度器会死锁。画图必须放 on_draw 里,控件 ID 非 0。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「Lua 脚本API函数接口」,版权归大彩科技所有。 --- ### 38. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 寄存器操作 API 是 LUA 读写数据的全部家当:set/get 系列覆盖所有数据类型,set_bit 处理位,set_array 批量写。核心机制先记住:get_xxx 全部从 HMI 本地缓存(内存镜像)读,不发串口帧——零通信开销。 1. 读取机制(重要)get_xxx() 系列函数不会实时向 PLC 发串口请求。HMI 后台任务按工程配置的轮询周期自动从 PLC 读通信变量(Modbus 的 3x/4x 等)并缓存,脚本只读缓存。好处是避免脚本逻辑造成通信风暴——你 get 一万次也不会把总线打爆。 2. API 总表函数范围/说明地址跨度set_bit(vtype,addr,value,count)批量位写,value 低 count 位对应 addr 起连续位(count 1~16);get_bit 返回 0/11set/get_uint160~65535,超范围截断 & 0xFFFF1set/get_int16-32768~+327671set/get_uint320~4294967295+2set/get_int32-2^31~2^31-1+2set/get_uint640~2^64-1+4set/get_int64-2^63~2^63-1+4set/get_floatIEEE 754 单精度+2set/get_doubleIEEE 754 双精度+4set_string(vtype,addr,str)最大 2K 字节,UTF-8/GBK;get_string 默认 128 字节最大 2048, 截断按长度set_uint16_ex(vtype,addr,v1,...,vN)批量写,最多 120 个寄存器Nset_array(vtype,addr,buff)接收 Lua table(word 数组),最多 120 字N 3. vtype 取值(随协议变化)常量含义VT_0x线圈VT_1x输入VT_MFX3U 内部继电器VT_3x输入寄存器VT_4x保持寄存器VT_DFX3U D 寄存器VT_LW内部变量(掉电不保存)VT_RW掉电保存区 4. 数据复制案例(12 组模式通用套路)最常见的需求:外部给 LW 写数据,脚本搬到另一个地址或转换格式。套路是 on_update 里判断 vtype==VT_LW 和源地址,用 get 读、set 写目标:function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1000 then set_uint16(VT_LW, 0x1001, get_uint16(VT_LW, 0x1000)) -- uint16 复制 elseif addr == 0x1004 then set_uint32(VT_LW, 0x1006, get_uint32(VT_LW, 0x1004)) -- uint32(跨度+2) elseif addr == 0x101C then set_float(VT_LW, 0x101E, get_float(VT_LW, 0x101C)) -- float(跨度+2) elseif addr == 0x1030 then set_string(VT_LW, 0x1040, get_string(VT_LW, 0x1030, 16)) -- string(跨度16) end end end -- 批量写:addr==0x1050 且值为偶数时写 10 个寄存器 function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1050 then local v = get_uint16(VT_LW, 0x1050) if v % 2 == 0 then set_uint16_ex(VT_LW, 0x1060, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) -- 或 set_array(VT_LW, 0x1060, {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}) end end end 三个坑:①32 位以上数据类型有地址跨度——uint32/float 占 2 个寄存器、uint64/double 占 4 个,连续读写别把地址搞重叠;②set 超范围自动截断(& 0xFFFF 之类),不会报错也不会进位,数值错了你可能不知道;③get_string 默认读 128 字节,要更长显式传 len(最大 2048),字符串在 处截断。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「寄存器操作」,版权归大彩科技所有。 --- ### 39. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 系统回调是 LUA 和 HMI 内核之间的事件接口:内核在特定时机自动调你的函数,你不用轮询、不用自己触发。搞懂每个回调的触发时机和限制,是写出稳定脚本的前提。 1. 回调总表回调触发时机用途on_init()上电加载后执行一次dofile 加载模块、初始化参数/PLC/驱动板on_run(screen)周期执行(set_run_cycle 设定周期)核心调度入口,周期性任务on_press(state,x,y)触摸事件,100ms 最多一次按键处理、空闲待机on_update(slave,vtype,addr)变量值变化数据驱动逻辑(推荐优先用)on_screen_change(screen)画面切换后画面初始化、状态同步 2. on_run:周期调度(注意别卡死)on_run 是周期回调,里面干活的时长必须远小于周期。三个禁忌:Modbus RTU Master 高频写入易总线堵塞——on_run 里别每秒狂发写帧不可用 delay_ms、长循环、网络同步——阻塞主循环,画面全卡严禁 set_run_cycle 死锁——回调里改周期可能造成永不触发function on_init() set_run_cycle(1000) -- 设定 1 秒周期 end function on_run(screen) -- 每秒做一次的事情:状态轮询、超时判断 end 3. on_press:触摸回调与空闲待机on_press(state, x, y),state:0=抬起、1=按下、2=长按。每 100ms 最多触发一次。典型用途是空闲待机节能:一段时间没触摸自动熄屏/跳主页。_IDLE_TIMEOUT = 300000 -- 5分钟无操作 _idle_tick = 0 function on_press(state, x, y) _idle_tick = 0 -- 有触摸就重置计时 end function on_run(screen) _idle_tick = _idle_tick + 1000 -- 假设周期1s if _idle_tick >= _IDLE_TIMEOUT then set_screen(0) -- 跳回主画面 _idle_tick = 0 end end 4. on_update:数据驱动(优先用这个)on_update(slave, vtype, addr) 在变量值变化时触发,是数据驱动模式——比 on_run 轮询省资源。三个特性必须知道:外部串口/Modbus 主站写入不触发——只对 HMI 内部变量变化生效on_update 内调 set_xxx 被屏蔽——防无限递归,改值不会再次触发全局变量 _EN_ON_UPDATA_API_ 控制开关——置 0 可临时禁用,批量初始化时用_EN_ON_UPDATA_API_ = 0 -- 初始化期间关回调 -- ... 批量写寄存器 ... _EN_ON_UPDATA_API_ = 1 -- 开回回调 function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1000 then -- LW1000 变化了,处理业务 end end end 5. on_screen_change:画面切换后初始化画面切换完成后触发,做该画面的初始化、状态同步、资源加载——比在切屏前处理更稳。 四个坑:①on_run 里严禁 delay_ms/长循环,会卡死主循环;②Modbus 主站别在 on_run 高频写,总线堵塞没商量;③on_update 里 set_xxx 不会再次触发回调,别指望链式触发;④批量初始化寄存器前把 _EN_ON_UPDATA_API_ 置 0,防回调风暴。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「系统回调」,版权归大彩科技所有。 --- ### 40. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 RW 区是 HMI 的掉电保存寄存器:地址 0x0000~0x7FFF 共 64KB(32768×2 字节),基于 Flash 存储,上电默认值 0xFFFF。参数、配方、运行状态这类「断电不能丢」的数据放这里。但它有寿命和坑,用不好会毁固件。 1. RW 区特性项目值地址范围0x0000 ~ 0x7FFF(32768 字)存储介质Flash(掉电保存)默认值0xFFFFFlash 寿命约 10 万次擦写写入机制内部 4KB 写缓存队列,约每 400 次写入触发一次擦写 2. ⚠️ 致命风险:过度擦写会毁固件RW 区和固件区物理相邻。反复擦写 RW 如果扩散到固件区,设备直接损坏:黑屏、no firmware 蓝屏。这是硬伤,不是吓唬人。另外 Flash 按扇区顺序落盘(低地址先写),跨扇区的标志位有一致性风险——一个标志的两个字节落在不同扇区,写一半断电可能半新半旧。 3. 正确使用姿势地址连续分配:参数集中放一段,别到处撒set_array 批量写:一次写一组,别一个一个 set控制写入频率:只有值变化才写,别周期刷标志位放同扇区:需要原子性的标志放一起启动做边界值检查:上电读 RW 校验合法性(0x55AA 魔数)function on_init() -- 上电检查 RW 是否已初始化(魔数 0x55AA) if get_uint16(VT_RW, 0x2000) ~= 0x55AA then -- 首次上电,写入默认参数 set_uint16(VT_RW, 0x2000, 0x55AA) -- 魔数 set_uint16(VT_RW, 0x2001, 50) -- 温度上限默认值 set_uint16(VT_RW, 0x2002, 4800) -- 波特率默认值 else -- 已初始化,检查参数边界 local t = get_uint16(VT_RW, 0x2001) if t 100 then set_uint16(VT_RW, 0x2001, 50) -- 越界恢复默认 end end end推荐「同扇区标志 + 参数边界检查」双重策略:魔数确认初始化过,边界检查防脏数据。 三个铁律:①严禁高频实时数据存 RW——曲线、计数、实时值放 LW,只有掉电要留的参数才进 RW;②写前先判断值是否变化,没变就别写,10 万次寿命经不起周期刷;③上电必须做初始化检查,用 0x55AA 魔数 + 边界校验,否则首次上电读到 0xFFFF 全乱。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「RW存储」,版权归大彩科技所有。 --- ### 41. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 LUA 是 VisualHMI 的脚本语言,负责把 HMI 从「显示终端」变成「能干活的主机」:协议解析、逻辑判断、数据运算、文件操作全在脚本里。先搞懂 main.lua 的程序结构和系统回调,后面所有 API 才有地方放。 1. main.lua 基本结构_ENCRYPT_ = 0 -- LUA 脚本加密开关(量产加密置1) -- 数据类型定义(随协议变化,Modbus 常用这些) VT_LW = 1 -- 内部变量(掉电不保存) VT_RW = 2 -- Flash 掉电保存区 VT_0x = 10 -- 线圈 VT_1x = 11 -- 输入 VT_3x = 12 -- 输入寄存器 VT_4x = 13 -- 保持寄存器 -- 系统回调函数(自动被调用,不用自己调) function on_init() end -- 上电加载后执行一次 function on_run(screen) end -- 周期执行 function on_update(slave,vtype,addr) end -- 变量变化 function on_draw(screen,control) end -- 自绘 main.lua 是入口文件,工程编译时一并打包。大工程建议分模块:在 on_init 里 dofile("xxx.lua") 拆开,好维护。 2. 编辑工具与编码官方推荐 NotePad++、Lua editor、VS Code 编辑脚本。编码必须注意:文件编码和 HMI 工程设置要一致(UTF-8 或 GB2312),编码不对中文会乱码,字符串比较也全错。 3. 查错方法(LUA 没有断点调试)LUA 是解释性语言,不能断点单步。虚拟屏调试常见三类异常:nil 值错误:访问了未定义的变量/表元素——先检查变量初始化类型错误:number 当 table 用、string 拼接 nil——print 打印类型确认内存溢出重启:全局累积数据不释放——查循环里是不是一直 table.insert实体屏调试用 TTL 调试串口 J2,波特率 115200 8N1,print 输出走这个口。 4. dofile 分模块管理function on_init() dofile("config.lua") -- 参数配置 dofile("protocol.lua") -- 协议解析 dofile("ui.lua") -- 界面逻辑 end模块之间共享全局变量,注意命名别冲突(习惯加前缀,如 g_、m_)。 三个坑:①_ENCRYPT_ 置 1 后脚本被加密,改脚本要重新编译下载,调试期保持 0;②文件编码必须和工程一致,UTF-8/GB2312 混用中文全乱;③print 输出走调试串口 J2(115200 8N1),实体屏看日志接 USB-TTL。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「什么是LUA」,版权归大彩科技所有。 --- ### 42. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前面讲了屏在工程里配 Modbus 主从,但碰到"一主多从 + 复杂逻辑"(比如读两个从机的电量求和、按条件写寄存器、批量写线圈),光靠画面绑变量不够,得用 LUA 脚本接管通信。这篇把 Modbus 相关的 LUA API 讲透,代码都是大彩文档里的真实例程,我加了工程师视角的注解和踩坑提示。 ⚠️ 适用范围: HMI&M&Dx 系列。示例是 Modbus 两个从站,站号 10 和 20,逻辑对 FX2N/FX3U 主从同样适用。 一、核心通信 API 1.1 start_read —— 后台自动轮询(最常用) 主机模式下周期性读从机寄存器的调度函数。调用后系统把它加进通信队列,每个周期自动发请求,返回数据写进 HMI 内存镜像,你用 get_uint16/get_float 直接读缓存,没有通信延迟。 start_read(index, vtype, addr, quantity, cycle, cycle_run, mode) 参数类型说明 indexnumber任务索引 0~127,stop_read 时用 vtypenumber数据类型 VT_3x / VT_4x 等 addrnumber寄存器地址 quantitynumber读取数量 1~120 cyclenumber轮询周期倍数,0=每周期都读 cycle_runnumber周期内第几次执行(0-based,需 < cycle) modenumber0=持续读(默认) / 1=仅读一次 💡 调度精髓: cycle/cycle_run 用来分高低频。高频变量(速度、温度)cycle=0 每周期读;低频变量(累计量、状态字)cycle=5, cycle_run=4 每 5 周期读一次,降总线负载。例: start_read(0, VT_4x, 0x1000, 10) → 每周期读 4x1000~1009 start_read(1, VT_4x, 0x2000, 10, 3, 2) → 每 3 周期、第 3 个周期读 4x2000~2009 1.2 其它管理函数 stop_read(index):停单个轮询任务,缓存保留最后一次值 stop_all_read():一键停全部,适合复位/急停 set_auto_read(en):1=启用画面绑定变量自动读(默认),0=只靠脚本 start_read 接管,适合高带宽场景去冗余 1.3 select_slave —— 切换从站(关键) 多从机下,select_slave(slave_id) 临时指定后续 get_xxx/set_xxx 访问哪个从机。注意 slave_id 是从机列表下标,不是 Modbus 站号! 术语含义示例 从机索引 slave_idHMI 内部列表下标 0,1,20 = 第一个从机 Modbus 站号设备物理地址10, 33 ⚠️ 最容易错的点: slave_id=0 对应站号 10,slave_id=1 对应站号 33,这个映射在工程配置里定。脚本里填错下标就读到别的从机去了,查半天以为是协议问题。 二、LUA 读寄存器(带在线判断) 读之前两件事不能省:判断从机在线 + 选对从站。在线状态存在系统变量 VT_LW 0x01A3 的对应位。 -- 读保持寄存器 4x function mb_read_reg_03(slave, addr) local onlineState = get_uint16(VT_LW, 0x01A3) -- 从机在线状态字 if ((onlineState >> slave) & 0x01) == 0x01 then -- 该从机在线 select_slave(slave) -- 切到这个从机 return get_uint16(VT_4x, addr) -- 读缓存 else return false end end -- 读两个从机电量求和,写回 LW 区 function on_run(screen) local Energy1 = mb_read_reg_03(0, 0x0000) local Energy2 = mb_read_reg_03(1, 0x0000) if Energy1 ~= false and Energy2 ~= false then set_uint16(VT_LW, 0x1000, Energy1 + Energy2) end end 三、LUA 写寄存器 -- 写单个保持寄存器 0x06 function mb_write_reg_06(slave, addr, value) local onlineState = get_uint16(VT_LW, 0x01A3) if ((onlineState >> slave) & 0x01) == 0x01 then feed_dog() -- 喂狗,防脚本卡死看门狗复位 select_slave(slave) set_uint16(VT_4x, addr, value) return true else return false end end ⚠️ 重点:写之前务必 feed_dog()。 LUA 脚本跑在屏的实时任务里,长时间不喂狗会被看门狗当死循环干掉,屏重启。凡是循环或耗时逻辑,间隔里加 feed_dog。 一个称重校准的实例(三种校准模式),展示 on_update 回调里根据 LW 变量做分支写: function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1004 then local mode = get_uint16(VT_LW, 0x1003) if mode == 0 then mb_write_reg_06(0, 0x1002, 57) -- 零点校准 elseif mode == 1 then local w = get_uint16(VT_LW, 0x1005) -- 砝码校准 mb_write_reg_06(0, 0x1002, w) elseif mode == 2 then local c = get_uint16(VT_LW, 0x1006) -- 实物校准 local s = get_uint16(VT_LW, 0x1007) if c > 0 and s > 0 then mb_write_reg_06(0, 0x1002, (s*w)//c) end end end end 四、批量写线圈(0x0F 封装) VisualHMI 批量写线圈最小单位是 16 位对齐。下面这个函数是大彩封装的(非系统 API,自己写的),演示如何把 14 个线圈值合并写入: mb_write_coil_15(slave_id, addr, coilsTb) -- slave_id: 从站索引; addr: 起始地址; coilsTb: 线圈值表 调试提示: 联机验证用 Modbus Slave 软件 + 虚拟串口对,让屏当主机、电脑当从机,实时看总电压/总电量变化。比直接上真机快得多。 本文整理自 广州大彩科技 VisualHMI 开发文档 LUA 教程「Modbus 应用」章节,代码与 API 均按原文保真,版权归大彩科技所有,此处加工程师注解与重点标注,仅供学习参考。 --- ═══════════════════════════════════════════ ## LUA 脚本文档 ═══════════════════════════════════════════ ### 43. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 LUA脚本的定时器编号索引ID从0~31,共32个定时器。当开启的定时器,超时溢出后,触发定时器回调,在回调函数里面执行相应操作。本章节,用按钮按下弹起的状态作为灯,开启定时器实现跑马灯效果。用到的相关函数如下所示: 1.在用户触摸修改控件回调函数:on_control_notify(screen,control,value):函数有三个参数: screen:表示画面IDcontrol:表示控件的编号value:表示控件的值。 2.定时器回调函数:on_timer(timer_id) timer_id:表示超时定时器ID。ID值为0~31 3.开启定时器:start_timer(timer_id, timeout, countdown, repeat) timer_id:表示定时器ID,0~31timeout:表示超时时间,单位毫秒countdown:表示计时的方向,0顺计时,1 倒计时repeat:表示重复次数,0 表示无限重复 4.关闭定时器:stop_timer(timer_id) timer_id:表示定时器ID 5.设置控件值:set_value(screen,control,value) screen:目标画面IDcontrol:目标控件IDvalue:控件值 注:更多LUA资料可参考LUA 脚本API函数接口 章节 和网站:www.runoob.com/lua 适用范围:M系列、W系列、X系列、F系列(固件版本 >= V4.2.401.0) 4.1 定时器跑马灯 画面配置 画面中添加两个按钮控件,控件ID1为开启/关闭定时器按钮,控件ID2为实现跑马灯效果,如下所示 按钮控件ID1:操作风格配置为开关效果,裁剪对应按下弹起图片的效果按钮控件ID2:操作风格配置为置位,裁剪对应按下弹起图片的效果 LUA脚本 按钮控件ID1按下,触发 on_contrl_notify(screen,control,value),再调用start_timer开启定时器,当按钮控件ID1弹起时候,调用stop_timer(0) 关闭定时器,代码段如下所示 --[[*************************************************************************** ** Function name: on_control_notify ** Descriptions: 用户通过触摸修改控件后,执行此回调函数。 点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 画面ID control 控件ID value 控件值(包括文本控件输入的值) ***************************************************************************--]] function on_control_notify(screen,control,value) if screen==0 and control==1 and value==1 --按下第0页、编号1按钮 then start_timer(0,1000,1,0) --开启定时器0,超时时间1s elseif screen==0 and control==1 and value==0 --弹起第0页、编号1按钮 then stop_timer(0) --关闭定时器 end end 定时器开启后,1s后,超时进入定时器回调函数on_timer(),在回调函数中循环设置灯的状态,代码段如下所示 function on_timer(timer_id) then if timer_id==0 --定时器0超时 then if lamp_status==0 --当按钮为弹起状态 then set_value(0, 2, 1) --设置按钮2为按下状态,灯亮 lamp_status=1 elseif lamp_status==1 --当按钮为按下状态 then set_value(0, 2, 0) --设置按钮2为弹起状态,灯灭 lamp_status=0 end end end 运行预览 点击定时器按下时,开启跑马灯效果,当按钮弹起的时候关闭跑马灯,运行效果如下所示 --- ### 44. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 本文将介绍通过LUA脚本设置系统参数。如常见的波特率、蜂鸣器、RTC的、背光亮度等。本章节涉及相关的函数有 1.在用户触摸修改控件回调函数:on_control_notify(screen,control,value):函数有三个参数: screen:表示画面IDcontrol:表示控件的编号value:表示控件的值。 2.设置串口的通讯的波特率:uart_set_baudrate(baudrate) baudrate:表示设置的波特率值。232/TTL支持1200~961200bps,典型值为115200bps。485支持1200~115200bps,典型值为9600bps 3.设置背光亮度:set_backlight(level) level:表示设置的背光值,取值范围为0~100。数值越高,背光亮度越亮 4.设置蜂鸣器鸣叫时长:beep(time) time:表示蜂鸣器响的时间长度,单位ms,并非蜂鸣器的使能/失能控制 5.设置屏幕RTC时间:set_date_time(year,month,day,hour,minute,second) year:表示年month:表示月day:表示日hour:表示小时minute:表示分second:表示秒 注:更多LUA资料可参考LUA 脚本API函数接口 章节 和网站:www.runoob.com/lua 适用范围:M系列、W系列、X系列、F系列(固件版本 >= V4.2.401.0)例程下载链接:《系统参数设置》(点击跳转) 3.1 修改波特率 画面配置 添加两个按钮控件(ID1、ID2),分别设置波特率为19200、115200;添加一个文本控件(ID14),用于显示波特率。如下所示 两个按钮控件:对内指令配置为互斥效果,操作风格均为置位,其中ID1按钮初始状态为按下,ID2按钮初始状态为弹起文本控件:输入方式为系统变量、系统变量为波特率 LUA脚本 当用户点击【19200】或【115200】按钮 控件时候,触发on_control_notify(screen, control, value)回调函数,根据对应按钮按下,调用uart_set_baudrate(baudrate)设置对应的波特率,代码段如下所示 --[[*************************************************************************** ** Function name: on_control_notify ** Descriptions: 用户通过触摸修改控件后,执行此回调函数。 点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 画面ID control 控件ID value 控件值(包括文本控件输入的值) ***************************************************************************--]] function on_control_notify(screen,control,value) ...... if screen==0 and control==1 and value==1 --按下第0页、编号1按钮 then uart_set_baudrate(19200) --设置波特率为19200 elseif screen==0 and control==2 and value==1 --按下第0页、编号2按钮 then uart_set_baudrate(115200) --设置波特率为115200 end ...... end PS. uart_get_baudrate() 函数为获取当前波特率,如: local baudrate = uart_get_baudrate() ↩ 运行效果 根据上述的代码段,运行效果如下所示 3.2 设置背光 背光的调节,可结合进度条和滑块进行滑动调节 画面配置 画面中添加一个滑块控件(ID4)和一个进度条控件(ID3)作为背光的控制,相关控件属性配置如下所示 滑块控件:设置数值起始范围为20~100(若背光调节为0或较低,会看不清楚画面内容)。其中,LUA脚本设置的背光等级支持0-100进度条控件:设置【滑动通知】关联滑动条,添加相应的背景图片 LUA脚本 当用户点击/滑动滑块时,背光值和进度条也跟随变化。滑动过程触发LUA脚本 on_contrl_notify(screen,control,value),在调用set_backligt(level)设置背光值,代码段如下所示 --[[*************************************************************************** ** Function name: on_control_notify ** Descriptions: 用户通过触摸修改控件后,执行此回调函数。 点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 画面ID control 控件ID value 控件值(包括文本控件输入的值) ***************************************************************************--]] function on_control_notify(screen,control,value) ...... if screen==0 and control == 4 --滑动第0页、编号4滑动条 then set_backlight(value) --设置背光为value end ...... end PS . get_backlight 函数为获取当前背光值,如: local cur_backlight = get_backlight() ↩ 运行预览 此处虚拟屏运行效果仅做为控件变化演示,实际调节背光的效果,需要编译下载到实体屏中体验 3.3 设置蜂鸣器响 画面配置 放置一个按钮控件(ID为5),按钮属性中的事件通知选择“是”。如下所示 ​ LUA脚本 按下按钮时,触发事件通知on_contrl_notify(screen,control,value)函数,对应控件触发成立后,调用beep(500)函数,表示蜂鸣器鸣叫500ms,代码段如下所示 --[[*************************************************************************** ** Function name: on_control_notify ** Descriptions: 用户通过触摸修改控件后,执行此回调函数。 点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 画面ID control 控件ID value 控件值(包括文本控件输入的值) ***************************************************************************--]] function on_control_notify(screen,control,value) ...... if screen==0 and control == 5 and value == 1 --滑动第0页、编号4滑动条 then beep(500) --设置蜂鸣器鸣叫500ms end ...... end 运行预览 下载到串口屏中,点击"响"按钮,听到"嘀"一声 3.4 设置RTC 画面中,放置一个RTC控件,两个按钮分别设置不同的时间。控件相关属性配置如下所示 LUA脚本 触发事件通知on_contrl_notify(screen,control,value)函数,对应控件触发成立后,调用 set_date_time()函数设置RTC时间。代码如下所示: --[[*************************************************************************** ** Function name: on_control_notify ** Descriptions: 用户通过触摸修改控件后,执行此回调函数。 点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 画面ID control 控件ID value 控件值(包括文本控件输入的值) ***************************************************************************--]] function on_control_notify(screen,control,value) ...... if screen==0 and control == 6 and value == 1 --滑动第0页、编号4滑动条 then set_date_time(2019,1,1,1,1,1) --设置当前时间为2019/01/01 01:01:01 end ...... end PS . get_date_time函数为获取当前rtc值,如: local cur_backlight = get_backlight() ↩ 运行预览 下载到串口屏中,点击"时间一"或"时间二"按钮,看到左侧RTC时间变化。注意,虚拟屏不支持修改RTC控件,因为是电脑PC端的时间 --- ### 45. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 LUA API回调函数说明 概述 本文将介绍大彩LUA脚本API函数中的回调函数使用方法,以及调用回调函数的注意事项,介绍常见的api回调接口,如下所示 初始化函数:on_init()系统滴答1s回调函数:on_systick()控件触发回调函数:on_control_notify(screen, control, value)切换画面回调函数:on_screen_change(screen)定时器超时回调函数:on_timer(timer_id)画图/线/几何图形回调函数:on_draw(screen)U盘、SD卡的回调函数:on_usb_inserted(dir)/on_usb_removed()/on_sd_inserted(dir)/on_sd_removed() 注:更多LUA资料可参考LUA 脚本API函数接口 章节 和网站:www.runoob.com/lua 适用范围:M系列、W系列、X系列、F系列(固件版本 >= V4.2.401.0)例程下载链接:《LUA API 回调函数说明》(点击跳转) 注意事项 大彩lua api里的回调函数不可以被其他函数调用,属于被动触发,自动回调,如用户对文本控件键值输入,触发回调函数on_control_notify(screen, control, value)不能更改回调函数的函数名、参数等 1.1 函数 on_init() 系统上电加载 LUA 脚本文件之后,立即调用此回调函数, 通常用于执行初始化操作,仅执行一次 画面配置 在画面中添加两个文本控件,ID1用于显示电压值,ID2用于显示电流,如下所示 LUA脚本 在on_init()函数中填写设置文本框数值的API函数,在系统初始化时调用执行。具体代码下所示 --[[*************************************************************************** ** Function name: on_init() ** Descriptions: 系统初始化时,执行此回调函数。 注意:回调函数的参数和函数名固定不能修改 ***************************************************************************--]] function on_init( ) set_value(1,1,10) --设置文本控件的值 set_value(1,2,2) --设置文本控件的值 end 运行预览 运行虚拟屏,该画面的电压值为10,电流值为2,如下所示,用户可以通过lua脚本修改对应的值,进一步熟悉了解 1.2 函数on_systick() 系统每隔 1 秒钟自动调用此回调函数 画面配置 该画面添加一个文本控件,用于累计on_systick()被触发回调的次数 LUA脚本 教程中在on_systick()函数里添加了一个显示回调函数被执行次数的程序,具体代码如下所示 --[[*************************************************************************** ** Function name: on_systick ** Descriptions: 定时回调函数,系统每隔1秒钟自动调用。 注意:回调函数的参数和函数名固定不能修改 ***************************************************************************--]] function on_systick( ) sys_timer = sys_timer +1 set_value(2,1,sys_timer) end 运行预览 每秒触发on_systick()函数,效果如下所示 1.3 函数on_timer(timer_id) on_timer(timer_id)定时器超时回调函数,单独使用不生效。该函数触发回调需要配合 start_timer(timer_id, timeout, countdown, repeat) ,来开启定时器,定时器溢出超时了,才会触发on_timer(timer_id) 画面配置 画面中放置了两个按钮,一个启用定时器,一个停止定时器和一个文本框,文本框是显示定时器超时后调用的次数,如下所示 LUA脚本 教程中在on_timer ()函数里添加了一个显示回调函数被执行次数的程序,具体代码如下所示 --[[*************************************************************************** ** Function name: on_timer ** Descriptions: 定时器超时,执行此回调函数 注意:回调函数的参数和函数名固定不能修改 ** Input value : timer_id 定时超时的定时器ID号,定时器编号0~31 ***************************************************************************--]] function on_timer(timer_id) --定时器0超时触发 if timer_id == 0 then timer_out = timer_out +1 set_value(3,3,timer_out) end end --[[*************************************************************************** ** Function name: on_control_notify ** Descriptions: 用户通过触摸修改控件后,执行此回调函数。 点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 画面ID control 控件ID value 控件值(包括文本控件输入的值) ***************************************************************************--]] function on_control_notify(screen,control,value) --*********************************************************** --功能:按下画面4的控件1启动定时器0 --调用函数:start_timer(timer_id, timeout, countdown, repeat) --函数功能:启动定时器 --参数: timer_id, 定时器ID; -- timeout, 超时时间; -- countdown,1顺计时,0倒计时 -- repeat 计时次数,0无限循环 --*********************************************************** if screen == 3 and control == 1 and value == 1 then start_timer(0,1000,1,0) --开启定时时器0工作,设置计时1秒触发一次on_timer elseif screen == 3 and control == 2 and value == 1 then stop_timer(0) --停止定时时器0工作 timer_out = 0 end …… end 运行预览 开启定时器后,超时触发on_timer(),效果如下所示 1.4 函数on_control_notify(screen,control,value) 用户触摸修改控件后,执行此回调函数。点击按钮控件,修改文本控件、修改滑动条等等都会触发此函数,如果单片机串口指令修改控件值、脚本设置set_value或按钮对内置指令触发其他控件等均不会触发该回调函数,仅用户操作屏幕控件才会触发 PS:对按钮控件而言,设置了以下两个配置其中一个,按钮控件均不会触发on_control_notify( ) 1.对应单个按钮控件,若设置【事件通知】为否,该按钮控件按下时候,就不会触发on_control_notify( ),如下所示 2.工程属性配置,全局配置按钮属性【按钮事件通知】处,如下所示 若设置为”关闭“:所有按钮控件均不会触发若设置为”仅按下时“:所有按钮控件均仅按下时候触发若设置为”仅弹起时“:所有按钮控件均仅弹起时候触发若设置为”按下和弹起时“:所有按钮控件按下和弹起时都会触发 画面配置 画面中放置常见的控件做示例,如添加1个按钮控件(ID1)、1个文本控件(ID2,键盘输入)、1个图标控件(ID3,允许触摸)、1个滑动选择控件(ID4)、1个菜单控件(ID5)、1个滑动选择控件(ID6)。在增加一个文本控件(ID7),用于记录哪个控件触发,如下所示 LUA脚本 本章节,在回调函数显示触发on_control_notify对应的控件,将按下的信息显示到文本控件ID7中,具体代码如下所示 --[[*************************************************************************** ** Function name: on_control_notify ** Descriptions : 用户通过触摸修改控件后,执行此回调函数。 点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 画面ID control 控件ID value 控件值(包括文本控件输入的值) ***************************************************************************--]] function on_control_notify(screen,control,value) --*********************************************************** --功能:按下画面4的控件1启动定时器0 --调用函数:start_timer(timer_id, timeout, countdown, repeat) --函数功能:启动定时器 --参数: timer_id, 定时器ID; -- timeout, 超时时间; -- countdown,1顺计时,0倒计时 -- repeat 计时次数,0无限循环 --*********************************************************** …… if screen == 4 then if control == 1 and value == 1 --value == 1 按钮按下 then set_text(4,7,"按钮按下") elseif control == 1 and value == 0 --value == 0 按钮弹起 then set_text(4,7,"按钮弹起") elseif control == 2 --文本输入 then set_text(4,7,"文本输入") elseif control == 3 --图标控件 then set_text(4,7,"触摸图标") elseif control == 4 --滑动选择控件 then set_text(4,7,"滑动选择") elseif control == 5 --菜单控件 then set_text(4,7,"菜单选择") elseif control == 6 --滑块控件 then set_text(4,7,"滑块滑动") end end …… end 运行预览 依次点击控件ID1~ID6,效果如下所示 1.5 函数on_screen_change(screen) 当画面切换后,执行此回调函数 screen:画面切换后的目标画面ID。假设画面A切换到画面B,这个动作完成后,则screen为画面B的‘画面ID’值 注意:在on_screen_change(screen)里调用change_screen切换画面,不会在触发on_screen_change 画面配置 本文按钮控件的属性设置为画面切换,点击该按钮控件就会将画面切换到指定的画面中,如下所示 测试画面中,添加两个文本控件,在脚本触发回调函数on_screen_change时,设置控件ID1显示当前画面的ID,控件ID2显示数值,配置如下所示 LUA脚本 屏在切换画面的同时会触发回调函数on_screen_change,从而实现在切换画面是将目标画面的两个文本控件进行修改,具体代码如下所示 --[[*************************************************************************** ** Function name: on_screen_change ** Descriptions: 当画面切换至目标画面ID时,执行此回调函数 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 目标画面ID *******************************************************************************--]] function on_screen_change(screen) if screen == 8 then --切换到画面9时,修改控件1,2的数据 set_value(8,1,screen) --修改控件1的数据 set_value(8,2,30) --修改控件2的数据 end end 运行预览 触发on_screen_change,效果如下所示 1.6 函数on_draw() 重绘时执行此回调函数,通常所有绘图、画几何(圆、矩形、线、点等等)操作都在此函数中实现。当画面的控件刷新的时候,也会触发此函数,一般搭配redraw ( ) 使用。 ​ screen :需要画图的画面ID 画面配置 在该画面添加两个按钮控件,分别按下时候,显示不同的图片 LUA脚本 在LUA本按钮按下时,给show_picture赋不一样的值,在调用redraw() 触发回调函数on_draw(),来显示指定的图片 --[[*************************************************************************** ** Function name: on_draw ** Descriptions : 画面刷新时,或者使用API函数 redraw 申请重绘,执行此回调函数 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 目标画面ID ***************************************************************************--]] function on_draw(screen) --****************************************************************************** --调用函数:draw_image(image_id,frame_id,dstx,dsty,width,height,srcx,srcy) --函数功能:根据图片ID绘图 --参数: image_id 图片资源的 ID --frame_id 对应图标, 可以设置帧 ID,其他图片固定为 0 --dstx 图片显示 X 坐标 --dsty 图片显示 Y 坐标 --width 图片显示宽度 --height 图片显示高度 --srcx 图片裁剪 X 坐标 --srcy 图片裁剪 Y 坐标 --***************************************************************************** if screen == 6 and show_picture == 1 then draw_image(23,0,190,160,430,230,0,0) elseif screen == 6 and show_picture == 2 then draw_image(24,0,190,160,430,230,0,0) end end function on_control_notify(screen,control,value) if screen == 5 then if control == 1 and value == 1 --绘制图片1 then show_picture = 1 redraw() --申请重绘 elseif control == 2 and value == 1 --绘制图片2 then show_picture = 2 redraw() --申请重绘 end end end 运行预览 绘图效果如下所示 1.7 U盘/SD卡回调函数 当插入U盘和SD卡插入时,触发on_usb_inserted(dir)或on_sd_inserted(dir)函数。若拔掉U盘和SD卡插入时,触发on_usb_removed()或on_sd_removed()函数 dir: 该参数表示U盘或SD卡的盘符 注意:具体是SD还是U盘,以实体屏为准,且测试体验API,请在实体屏上测试 工程配置 画面中,添加两个文本控件,控件ID1用于显示U盘触发的相关信息,控件ID2用于显示SD卡触发的相关信息,如下所示 LUA脚本 U盘/SD卡插入及拔出时的LUA脚本代码如下所示 --[[*************************************************************************** ** Function name: on_usb_inserted ** Descriptions : 插入U盘后,执行此回调函数 注意:回调函数的参数和函数名固定不能修改 ** Input value : dir U盘的路径 ***************************************************************************--]] function on_usb_inserted(dir) set_text(7,1,dir) --显示U盘路径 end --[[*************************************************************************** ** Function name: on_sd_inserted ** Descriptions : 插入SD卡后,执行此回调函数 注意:回调函数的参数和函数名固定不能修改 ** Input value : dir SD卡的路径 ***************************************************************************--]] function on_sd_inserted(dir) set_text(7,2,dir) --显示SD卡路径 end --[[*************************************************************************** ** Function name: on_sd_inserted ** Descriptions : 拔出U盘后,执行此回调函数 注意:回调函数的参数和函数名固定不能修改 ***************************************************************************--]] function on_usb_removed() set_text(7,1,"已拔出U盘") end --[[*************************************************************************** ** Function name: on_sd_inserted ** Descriptions : 拔出SD卡后,执行此回调函数 注意:回调函数的参数和函数名固定不能修改 ***************************************************************************--]] function on_sd_removed() set_text(7,2,"已拔出SD卡") end --- ### 46. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 如上章节,我们了解了LUA API文档以及基本的LUA语法,本章节我们在文本控件上显示一句’HELLO LUA’ 本教程文档中所涉及到的部分的相关接口函数 设置文本显示字符串内容:set_text(screen,control,text) 用户通过触控修改控件回调函数:on_control_notify(screen,control,value) 适用范围:M系列、W系列、X系列、F系列(固件版本 >= V4.2.401.0) 例程下载链接:《显示HELLO LUA》(点击跳转) 1.1 LUA编辑器 1.1.1 VisualTFT自带 我们的VisualTFT集成一个lua编辑器(而非编译器),在【工具】- “LUA 脚本编程…”打开即可,如下所示 注意:该【工具】- “LUA 脚本编程…”仅仅是编辑器,而非编译器,不支持设置断点Debug调试 如果脚本有语法错误,或根据特定逻辑操作后可能出现错误,可以通过运行虚拟屏查看,如下所示。提示报错信息, 希望函数有个结束符号‘end’。用户根据上下文以及内容提示进行排查问题即可 error [string "------------..."]:37: 'end' expected (to close 'function' at line 19) near eof 1.1.2 第三方编辑器 我们推荐使用LuaEditor(v6.30)来编辑,只要在工程目录下打开lua文件即可,编辑完后,点击保存。同时支持简单的语法检测,如下所示,但是具体的逻辑错误,还是需要虚拟屏来调试 1.2 显示“HELLO LUA” 画面配置 在 画面中添加一个按钮控件(ID1)、一个文本控件(ID2),当用户按下按钮时,显示“HELLO LUA”在文本控件上,画面配置如下所示 LUA脚本 按下按钮后,触发on_control_notify(screen,control,value)函数,判断对应画面ID、对应的控件ID、控件值,满足条件执行set_text(screen,control,text)函数,在文本框中显示“HELLO LUA” --[[*************************************************************************** ** Function name: on_control_notify ** Descriptions : 用户通过触摸修改控件后,执行此回调函数。 点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 注意:回调函数的参数和函数名固定不能修改 ** Input value : screen 画面ID control 控件ID value 控件值(包括文本控件输入的值) ***************************************************************************--]] function on_control_notify(screen,control,value) if screen == 0 and control == 1 and value == 1 then set_text(0,2,"HELLO LUA") end end 运行预览 点击设置,文本显示“HELLO LUA”,运行效果如下所示 --- ### 47. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 本章节介绍简要介绍基本的lua语法,来自RUNOOB.COM基础教学,如有问题,请联系处理 Lua 的语法比较简单,比较容易理解,功能强大。所以,简单的归纳一下Lua的一些语法规则,帮助快速入门 1 注释 1.1 单行注释 写一个程序,总是少不了注释的。在Lua中,单行注释中,连续两个减号"--"表示注释的开始,一直延续到行末为止。相当于C、C++语言中的"//",如下所示 ---------- HTTP POST CHANGE PROJECT START ---------- function on_http_finish_cb(key, value) if key=='data' then -- do logical operations, user code bell_cnt = 0 end end 1.2 多行注释中 由"--[["表示注释开始,并且一直延续到"--]]"为止。这种注释相当于C语言中的"/.../",如下所示 ---------- HTTP POST CHANGE PROJECT START ---------- function on_http_finish_cb(key, value) if key=='data' then -- do logical operations, user code bell_cnt = 0 --[[ for i = sc_comeState, sc_bellFinsh do set_text(i, 3, '00 : 00') end--]] end end 2. 语句块 语句块在C中是用"{"和"}"括起来的,在Lua中,它是用do 和 end 括起来的,end表示最近一个代码块的结束,比如: for i = 0, 10 do print("Hello") end 或者用then和end括起来 if 1 + 1 ==2 then print("Hello") end 3. 变量类型 Lua 是动态类型语言,没有类型定义(类型像C,整形、无符号、字符等等),只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table,实际屏幕常用类型主要有以下几种 类型描述nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false),应用中避免出现nil值,需要做非法判断number屏幕的MCU为32位,实际屏幕应用中,赋值的数值相当与长整形或单精度浮点型string字符串由一对双引号或单引号来表示tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表function由 C 或 Lua 编写的函数 3.1 nil(空) nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值: > print(type(a)) nil > 边界值判断,在实际应用中,引用的变量需要最好要判断是否为空,或防止为空 if type(a) == 'nil' then –-user code else -–user code end 3.2 number(数字) Lua 默认只有一种 number 类型 -- double(双精度),但是屏幕的MCU是32位处理器,所以,在屏幕运行下仅支持单精度 以下几种写法都被看作是 number 类型: local a = 2 local b = 2.2 local c = 0.2 local d = 0.2e-1 print(type(a)) print(type(b)) print(type(c)) print(type(d)) 运行实例,以上代码执行结果: >number >number >number >number >>number >number 3. 3 string(字符串) 字符串由一对双引号或单引号来表示 local string1 = "this is string1" local string2 = 'this is string2' 3.4 table(表) 相当于C里面的数组,在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表,下标默认从1开始,输出测试如下所示 -- 创建一个空的 table local tbl1 = {} -- 直接初始表 local tbl2 = {"apple", "pear", "orange", "grape"} print(tbl2[0]) print(tbl2[1]) 运行实例,以上代码执行结果: >nil --报错 >apple 给表的下标0赋值,在输出才正常 -- 直接初始表 local tbl2 = {"apple", "pear", "orange", "grape"} tbl2[0] = "banana" print(tbl2[0]) print(tbl2[1]) 运行实例,以上代码执行结果: >banana >apple 3.5 function(函数) 在 Lua 中,函数定义声明如下所示,必须定义在被调用者上面 -- function_test.lua 脚本文件 function factorial1(n) if n == 0 then return 1 else return n * factorial1(n - 1) end end print(factorial1(5)) 运行实例,以上代码执行结果: >120 4 变量定义 变量在使用前,需要在代码中进行声明,即创建该变量,变量的默认值均为 nil 全局变量:Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量 局部变量:作用域为从声明位置开始到所在语句块结束 -- test.lua 文件脚本 a = 5 -- 全局变量 local b = 5 -- 局部变量 function joke() c = 5 -- 全局变量 local d = 6 -- 局部变量 end print(c,d) --> 5 nil do local a = 6 -- 局部变量 b = 6 -- 对局部变量重新赋值 print(a,b); --> 6 6 end print(a,b) --> 5 6 5 控制语句 5.1 if(判读语句) 控制结构的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。要注意的是Lua中 0 为 true: local a = 0 if a == 0 then print("a = 0") elseif a > 0 then print("a > 0 ") else print("a < 0 ") end 运行实例,以上代码执行结果: >a = 0 不支持switch case 语句 5.2 while(循环) 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true local a = 10 while(a > 0 ) do a = a - 1 end 5.3 for(循环) Lua 编程语言中数值 for 循环语法格式: 数值for循环泛型for循环 数值for循环 Lua 编程语言中数值 for 循环语法格式,var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。 for var=exp1,exp2,exp3 do <执行体> end 实例循环输出1-5数值: for i=1,5 do print(i) end 运行实例,以上代码执行结果: >1 >2 >3 >4 >5 泛型for循环 泛型 for 循环通过一个迭代器函数来遍历所有值,类似 java 中的 foreach 语句。Lua 编程语言中泛型 for 循环语法格式。i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组 --打印数组a的所有值 a = {"one", "two", "three"} for i, v in ipairs(a) do print(i, v) end 实例循环数组 days days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"} for i,v in ipairs(days) do print(v) end 以上实例输出结果为: >Sunday >Monday >Tuesday >Wednesday >Thursday >Friday >Saturday 6 运算符 6.1 算术运算符 下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20: 操作符描述实例+加法A + B 输出结果 30-减法A - B 输出结果 -10*乘法A * B 输出结果 200/除法B / A 输出结果 2%取余B % A 输出结果 0^乘幂A^2 输出结果 100-负号-A 输出结果 -10^异常或A~B结果30&与A&B结果0I或AIB结果30 我们可以通过以下实例来更加透彻的理解算术运算符的应用: a = 21 b = 10 c = a + b print("Line 1 - c 的值为 "..c ) c = a - b print("Line 2 - c 的值为 "..c ) c = a * b print("Line 3 - c 的值为 "..c ) c = a / b print("Line 4 - c 的值为 "..c ) c = a % b print("Line 5 - c 的值为 "..c ) c = a^2 print("Line 6 - c 的值为 "..c ) c = -a print("Line 7 - c 的值为 "..c ) c = a~b print("Line 8 - c 的值为 "..c ) c = a&b print("Line 9 - c 的值为 "..c ) c = a|b print("Line 10 - c 的值为 "..c ) 以上程序执行结果为: >Line 1 - c 的值为 31 >Line 2 - c 的值为 11 >Line 3 - c 的值为 210 >Line 4 - c 的值为 2.1 >Line 5 - c 的值为 1 >Line 6 - c 的值为 441 >Line 7 - c 的值为 -21 >Line 6 - c 的值为 31 >Line 7 - c 的值为 0 >Line 7 - c 的值为 31 6.2 关系运算符 下表列出了 Lua 语言中的常用关系运算符,设定 A 的值为10,B 的值为 20: 操作符描述实例==等于,检测两个值是否相等,相等返回 true,否则返回 false(A == B) 为 false。~=不等于,检测两个值是否相等,不相等返回 true,否则返回 false(A ~= B) 为 true。>大于,如果左边的值大于右边的值,返回 true,否则返回 false(A > B) 为 false。<小于,如果左边的值大于右边的值,返回 false,否则返回 true(A < B) 为 true。>=大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false(A >= B) 返回 false。<=小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false(A <= B) 返回 true。 实例,我们可以通过以下实例来更加透彻的理解关系运算符的应用: a = 21 b = 10 if( a == b ) then print("Line 1 - a 等于 b" ) else print("Line 1 - a 不等于 b" ) end if( a ~= b ) then print("Line 2 - a 不等于 b" ) else print("Line 2 - a 等于 b" ) end if ( a < b ) then print("Line 3 - a 小于 b" ) else print("Line 3 - a 大于等于 b" ) end if ( a > b ) then print("Line 4 - a 大于 b" ) else print("Line 5 - a 小于等于 b" ) end -- 修改 a 和 b 的值 a = 5 b = 20 if ( a <= b ) then print("Line 5 - a 小于等于 b" ) end if ( b >= a ) then print("Line 6 - b 大于等于 a" ) end 以上程序执行结果为: >Line 1 - a 不等于 b >Line 2 - a 不等于 b >Line 3 - a 大于等于 b >Line 4 - a 大于 b >Line 5 - a 小于等于 b >Line 6 - b 大于等于 a 6.3 逻辑运算符 下表列出了 Lua 语言中的常用逻辑运算符,设定 A 的值为 true,B 的值为 false: 操作符描述实例and逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。(A and B) 为 false。or逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B。(A or B) 为 true。not逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。not(A and B) 为 true。 实例,我们可以通过以下实例来更加透彻的理解逻辑运算符的应用: a = true b = true if ( a and b ) then print("a and b - 条件为 true" ) end if ( a or b ) then print("a or b - 条件为 true" ) end print("---------分割线---------" ) -- 修改 a 和 b 的值 a = false b = true if ( a and b ) then print("a and b - 条件为 true" ) else print("a and b - 条件为 false" ) end if ( not( a and b) ) then print("not( a and b) - 条件为 true" ) else print("not( a and b) - 条件为 false" ) end 以上程序执行结果为: >a and b - 条件为 true >a or b - 条件为 true >---------分割线--------- >a and b - 条件为 false >not( a and b) - 条件为 true 6.4 其他运算符 下表列出了 Lua 语言中的连接运算符与计算表或字符串长度的运算符: 操作符描述实例..连接两个字符串a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。#一元运算符,返回字符串或表的长度。#"Hello" 返回 5 实例,我们可以通过以下实例来更加透彻的理解连接运算符与计算表或字符串长度的运算符的应用: a = "Hello " b = "World" print("连接字符串 a 和 b ", a..b ) print("b 字符串长度 ",#b ) print("字符串 Test 长度 ",#"Test" ) print("菜鸟教程网址长度 ",#"www.runoob.com" ) 以上程序执行结果为: >连接字符串 a 和 b Hello World >b 字符串长度 5 >字符串 Test 长度 4 >菜鸟教程网址长度 14 6.5 运算符优先级 从高到低的顺序: ^ not - (unary) * / % + - .. < > <= >= ~= == and or 除了 ^ 和 .. 外所有的二元运算符都是左连接的 a+i < b/2+1 <--> (a+i) < ((b/2)+1) 5+x^2*8 <--> 5+((x^2)*8) a < y and y <= z <--> (a < y) and (y <= z) -x^2 <--> -(x^2) x^y^z <--> x^(y^z) 实例,我们可以通过以下实例来更加透彻的了解 Lua 语言运算符的优先级: a = 20 b = 10 c = 15 d = 5 e = (a + b) * c / d;*-- ( 30 \* 15 ) / 5 print("(a + b) * c / d 运算值为 :",e ) e = ((a + b) * c) / d; *-- (30 \* 15 ) / 5 print("((a + b) * c) / d 运算值为 :",e ) e = (a + b) * (c / d);*-- (30) \* (15/5) print("(a + b) * (c / d) 运算值为 :",e ) e = a + (b * c) / d; *-- 20 + (150/5) print("a + (b * c) / d 运算值为 :",e ) 以上程序执行结果为: >(a + b) * c / d 运算值为 : 90.0 >((a + b) * c) / d 运算值为 : 90.0 >(a + b) * (c / d) 运算值为 : 90.0 >a + (b * c) / d 运算值为 : 50.0 --- ### 48. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 本文档适用于M系列、W系列、X系列、F系列(固件版本 >= V4.2.401.0)。API函数中的screen、control参数均表示为目标画面ID、目标组态控件ID,后文每个API不一一介绍 1.1 控件属性类 1.1.1 change_screen(screen) 切换到指定画面 1.1.2 change_child_screen (screen) 切换到子画面,例如对话框 1.1.3 change_screen_effect(screen,effect) 切换到指定画面,使用动画效果 effect:动画效果。0-无动画,1-从左到右,2-从右到左,3-从上到下,4-从下到上,5-渐隐渐消 1.1.4 set_slide_screen(slide,round,start_screen,end_screen) 设置窗口滑动模式 slide:0-禁止滑动,1-左右滑动,2-上下滑动 round: 1-环回模式,尾页可以滑到首页 start_screen: 开始画面 end_screen:结束画面 1.1.5 set_button_notify_release () 设置按钮松开通知模式,在触摸按钮上也可以滑动窗口 1.1.6 get_current_screen() 获取当前画面ID 1.1.7 set_value(screen,control,value) 设置控件数值 value:控件值 按钮控件:value=1 - 按下,0 - 弹起 文本控件:value - 整数或小数 也可以设置进度条、滑块、仪表、滑动选择控件等等 1.1.8 get_value(screen,control) 获取控件数值,按钮、文本、进度条、滑块、仪表等 1.1.9 set_visiable(screen,control,visiable) 设置控件是否可见 visiable:0-隐藏,1-显示 1.1.10 set_enable(screen,control,enable) 设置控件是否可触摸 enable:0-禁止触摸,1-启用触摸 1.1.11 set_fore_color(screen,control,color) 设置控件前景色,例如文本控件文字颜色,进度条显示颜色 color:RGB值,2个字节,RGB565 1.1.12 set_back_color(screen,control,color) 设置控件背景色,例如文本控件背景颜色,进度条背景颜色 color:RGB值,2个字节,RGB565 1.1.13 set_text(screen,control,text) 设置控件显示内容(字符串),文本控件,二维码控件等 text:字符串类型 1.1.14 set_text_roll(screen,control, speed) 设置文本控件从右往左滚动速度 speed:每秒多少个像素。设置为0停止滚动 1.1.15 set_text_flicker (screen,control, cycle) 设置文本控件闪烁周期 cycle:闪烁周期,单位10ms。设置为0停止闪烁 1.1.16 get_text(screen,control) 获取控件字符串内容(字符串),文本控件,二维码控件等 1.1.17 set_options (screen, control, options) 设置滑动选择控件的内容 options:选项内容,字符串格式,每一项用英文分号“;”隔开 例如:set_options (screen,control, ‘选项1;选项2;选项3;’) 1.1.18 set_screen_range(screen, control, start_screen,end_screen, round) 设置子画面窗口滑动模式,W系列支持,F、M系列不支持 start_screen: 开始画面 end_screen:结束画面 round:1环回模式,尾页可以滑到首页 1.1.19 play_animation(screen, control) 设置动画控件播放 1.1.20 stop_animation(screen,control) 设置动画控件停止 1.1.21 set_history_graph_value(screen,control,channel0,..,channel7) 设置历史曲线的通道值,根据通道的个数填写参数 channe0:通道0的值 … channe7:通道7的值 例如有4个通道:set_history_graph_value(screen,control,1,2,3,4) 1.1.22 set_history_graph_direction(screen,control,direction) 设置历史曲线刷新方向,默认状态下,刷新方向从右往左 direction:0-从右往左,1-从左往右 1.1.23 set_scroll_position(screen, control, mode) 设置历史曲线的翻页 mode:翻页模式。2-下一页,3-上一页,4-尾页,5-首页 1.2 记录控件 1.2.1 record_set_event(screen,control,eventid) 告警类型-触发告警 eventid:和告警类型的数据记录控件中告警解析ID关联 1.2.2 record_reset_event(screen,control,eventid) 告警类型-解除告警 eventid:和告警类型的数据记录控件中告警解析ID关联 1.2.3 record_add(screen,control,record) 在末尾添加一条记录 record:record为字符串 例如:record_add(screen,control, “item1;item2;item3;”) 1.2.4 record_insert (screen,control,position,record) 在指定位置插入一条记录 position:插入位置索引 record:record为字符串 1.2.5 record_clear(screen,control) 清除记录数据 1.2.6 record_setoffset(screen,control,offset) 设置滚动显示位置 offset:当前显示的定位到该索引 1.2.7 record_get_count(screen,control) 获取记录条数 例如:local recordCnt = record_get_count(0, 1) —假设画面0、控件1位数据记录控件 1.2.8 record_read(screen,control,position) 读取一条记录,返回字符串 position:需要被读取的行号。索引从0开始,0即是第一行数据 1.2.9 record_modify(screen,control, position ,record) 修改一条记录 position:需要被修改的行号,索引从0开始,0即是第一行数据 record:新的修改内容 1.2.10 record_delete(screen,control,position) 删除一条记录 position:需要被删除的行号。索引从0开始,0即是第一行数据 1.2.11 record_select(screen,control,position) 选中一条记录 position:需要被选中的行号。索引从0开始,0即是第一行数据 1.2.12 record_export(screen,control) 导出记录到SD卡/U盘 1.3 常用回调函数 1.3.1 on_init() 系统加载LUA脚本文件之后,立即调用此回调函数,通常用于执行初始化操作。 1.3.2 on_systick() 系统每隔1秒钟自动调用此回调函数。 1.3.3 on_control_notify(screen,control,value) 用户触摸修改控件后,执行此回调函数。点击按钮控件,修改文本控件、修改滑动条都会触发此控件 value:为数值类型,如果需要获取文本控件的字符串值,使用get_text(screen,control) 1.3.4 on_screen_change(screen) 当画面需要切换时,执行此回调函数,screen为目标画面。 注意,此函数内部调用change_screen,不会嵌套执行on_screen_change。 1.3.5 on_press(state,x,y) 用户点击触摸屏时,执行此回调函数。 state:触摸状态,0-松开,1-按下,2-持续按压 x:为触摸X坐标 y:为触摸Y坐标 1.3.6 on_usb_inserted(driver) U盘插入时,执行此回调函数 dirver:为U盘的盘符 1.3.7 on_usb_removed() U盘拔出时,执行此回调函数 1.3.8 on_sd_inserted(dir) SD卡插入通知 dir:盘符路径 1.3.9 on_sd_removed() SD卡拔出通知 1.3.10 on_screen_sliding(screen, control) 用于确定手指滑动时的目标画面ID,W系列支持,F、M系列不支持 返回切换目标的画面的ID,left、right 、up、down,4个参数,指定左、右、上、下的页面ID,若为-1,该方向不允许滑动 screen:当前所在的画面 control:当前页面,在上面滑动的控件ID 1.4 绘图函数 1.4.1 on_draw(screen) 当界面的显示内容需要更新时,系统自动调用此函数,用户在此函数中添加自定义的绘图操作。用户绘制的内容叠加在画面内容控件上面.此函数为系统回调函数,用户不要直接调用 下面几种情况会触发此函数: 界面有动画播放、视频播放、RTC时间显示的动态刷新 用户操作屏幕控件 通过LUA脚本或串口指令更新控件 通过执行redraw 总之,界面上有任何变化,都会触发此回调函数。 1.4.2 on_pre_draw(screen) 用户绘制的内容在画面最底层,当前绘制画面需要透明,无背景图 相关说明同上 1.4.3 redraw() 发送重绘请求,触发on_draw的执行 1.4.4 screen_shoot(filename,x,y,width,height,quality) 截取屏幕窗口范围,存储到指定文件路径。W系列支持,F、M系列不支持 filename: 图片文件存放路径 x:截图的起点x坐标 y:截图的起点y坐标 width:截图的宽度 height:截图的高度 quality: JPEG图片质量,默认95 例如:screen_shoot(‘b:/shoot.jpg’,0,0,480,272, 95) 1.4.5 set_pen_color(color) 设置画笔的颜色,RGB565,用于指定线、矩形、圆等的颜色 color:RGB565颜色值 1.4.6 draw_line(x0,y0,x1,y1,width) 绘制直线 x0,y0:起始点坐标 x1,y1:结束点坐标 width:为线条的厚度,1~10 1.4.7 draw_rect(x0,y0,x1,y1,fill) 绘制矩形 x0,y0:左上角坐标 x1,y1:右下角坐标 fill:0不填充,1填充 1.4.8 draw_rect_alpha(x0,y0,x1,y1,alpha) 绘制实心的半透明矩形,F系列不支持 x0,y0:左上角坐标 x1,y1:右下角坐标 alpha:透明度0全透明~255不透明 1.4.9 draw_circle(x,y,r,fill) 绘制圆形 x,y:圆的中心坐标 r:圆的半径 fill:0不填充,1填充 1.4.10 draw_ellipse(x0,y0,x1,y1,fill) 绘制椭圆 x0,y0:左上角坐标 x1,y1:右下角坐标 fill:0不填充,1填充 1.4.11 load_image (image_id,frame_id) 加载指定图片到内存,一般用在on_init中,牺牲了开机速度,但使运行过程更流程。W系列支持,F、M系列不支持 image_id:图片资源的ID frame_id:对应图标,可以设置帧ID,其他图片固定为0 1.4.12 draw_image(image_id,frame_id,dstx,dsty,width,height,srcx,srcy) 绘制图片 image_id:图片资源的ID frame_id:对应图标,可以设置帧ID,其他图片固定为0 dstx:图片显示X坐标 dsty:图片显示Y坐标 width:图片显示宽度 height:图片显示高度 srcx:图片裁剪X坐标 srcy:图片裁剪Y坐标 1.4.13 draw_image_file(filename,dstx,dsty,width,height,srcx,srcy) 绘制图片,此方法不对图片进行缓存,效率较低,W系列支持,F、M系列不支持 filename:图片文件,支持JPEG/PNG dstx:图片显示X坐标 dsty:图片显示Y坐标 width:图片显示宽度 height:图片显示高度 srcx:图片裁剪X坐标 srcy:图片裁剪Y坐标 1.4.14 load_surface (filename) 加载图片到图层,W系列支持、M系列 >= V6.1.241.00支持(裁剪显示)、F系列不支持 filename:图片文件,支持JPEG/PNG 例如:surface = load_surface (“c:/test.jpg”) 图层不再使用时,需要调用destroy_surface进行销毁,否则会导致内存泄漏。 1.4.15 destroy_surface (surface) 销毁图层,W系列支持、M系列 >= V6.1.241.00、F系列不支持 surface:图层资源指针 1.4.16 draw_surface (surface,dstx,dsty,width,height,srcx,srcy) 绘制图层,相比于draw_image_file,此方法效率较高,W系列支持、M系列 >= V6.1.241.00支持(裁剪显示)、F系列不支持 surface:图层资源指针 dstx:图片显示X坐标 dsty:图片显示Y坐标 width:图片显示宽度[可选] height:图片显示高度[可选] srcx:图片裁剪X坐标[可选] srcy:图片裁剪Y坐标[可选] 例如: 平铺显示:draw_surface(surface, dstx, dsty) 缩放显示:draw_surface(surface, dstx, dsty, width, height) 裁剪显示:draw_surface(surface, dstx, dsty, width, height ,srcx, srcy) 1.4.17 draw_text(text,x,y,w,h,font,color,align) 显示文字 text:字符串 x:显示X坐标 y:显示Y坐标 w:显示宽度 h:显示高度 font:字体编号 color:颜色RGB565 align:对齐方式 bit0~bit1水平对齐方式,0左对齐,1居中对齐,2右对齐 bit2~bit3垂直对齐方式,0上对齐,1居中对齐,3下对齐 1.5 MODBUS协议访问 LUA中访问MODBUS/PLC等协议中定义的变量,需要通过下面的变量访问接口 mb_前缀的接口,专用于MODBUS协议,固件版本要求:W系列>=3.0.590.0,F系列>= 4.1.401.0,M系列>= V6.1.59.00 1.5.1 get_variant(name) 获取协议变量的数值 name:变量名称 例如:get_variant(“Variable1”) 1.5.2 set_variant(name,value) 设置协议变量的数值 name:变量名称 value:需要对变量赋的值 例如:set_variant(“Variable1”,12345) 1.5.3 mb_set_timeout (timeout) 设置从机应答超时时间 timeout:范围1~255,10毫秒单位 1.5.4 mb_read_coil_01 (slave,addr,quantity) 01功能码,读取线圈,成功时返回字节数组,一个字节8个coil,失败返回nil slave:从机地址 addr:变量地址 quantity:读取的线圈个数 1.5.5 mb_read_input_02(slave,addr,quantity) 02功能码,读取离散输入,成功时返回字节数组,一个字节8个input,失败返回nil slave:从机地址 addr:变量地址 quantity:读取离散输入寄存器的个数 1.5.6 mb_read_reg_03(slave,addr,quantity) 03功能码,读取保持寄存器,成功时返回WORD数组,失败返回nil slave:从机地址 addr:变量地址 quantity:读取的保存寄存器的个数 1.5.7 mb_read_input_reg_04(slave,addr,quantity) 04功能码,读取输入寄存器,成功时返回WORD数组,失败返回nil lave:从机地址 addr:变量地址 quantity:读取的输入寄存器的个数 1.5.8 mb_write_coil_05 (slave,addr,status) 05功能码,写单个线圈,成功时返回true,失败返回false slave:从机地址 addr:变量地址 status:1为ON,0为OFF 1.5.9 mb_write_reg_06 (slave,addr,reg) 06功能码,写入单个保持寄存器,成功时返回true,失败返回false slave:从机地址 addr:变量地址 reg:寄存器值 1.5.10 mb_write_coil_15 (slave,addr,quantity,coils) 15功能码,写多个线圈,成功时返回true,失败返回false slave:从机地址 addr:变量地址 coils:字节数组,一个字节8个coil,下标索引从0开始 1.5.11 mb_write_reg_16 (slave,addr,regs) 16功能码,写入多个保持寄存器,成功时返回true,失败返回false slave:从机地址 addr:变量地址 regs:寄存器WORD数组,下标索引从0开始 1.6 网络相关 W联型支持,F系列、M系列不支持 1.6.1 get_wifi_cfg() 返回4个参数 例如:wifi_mode, secumode, ssid, password = get_wifi_cfg() wifi_mode:无线网络模式。0-禁用无线网络,1-无线网卡模式,2-AP热点模式 secumode:加密模式 0-AUTO(默认值) ,1-WEP, 2-WPAPSK ,3-WPAPSK2 ssid:无线网络名称 password:无线网络密码 1.6.2 set_wifi_cfg(wifi_mode, secumode, ssid, password) 设置WIFI配置,参数说明同上 1.6.3 on_wifi_callback(state,reason) 网络状态改变时,会被调用 1.6.4 get_network_state() 获取网络状态,返回一个参数 例如:state = get_network_state() 状态位说明 bit0-无线网络连接 bit1-有线网络连接 bit2-是否连上服务器 bit3-是否有客户端连上 1.6.5 set_network_cfg(dhcp, ipaddr, netmask, gateway, dns) dhcp启用DHCP,0禁用,1启用,禁用时后面的参数才有效 ipaddr:静态IP netmask:掩码 gateway:子网掩码 dns:域名服务器 1.6.6 get_network_cfg() 返回五个参数,说明同上 例如:dhcp, ipaddr, netmask, gateway, dns = get_network_cfg() 1.6.7 save_network_cfg() 保存网络设置,并重连网络 注意:修改网络配置、服务器参数等需要调用此函数进行保存生效,如下所示 ...... set_network_cfg(dhcp, ipaddr, netmask, gateway, dns) save_network_cfg() ...... 1.6.8 set_network_service_cfg(wificom, mode, port, server_addr) 设置网络服务参数 wificom:默认为0,为1时启用透传模式(即无线串口屏) mode:0禁用网络服务,1客户端模式,2服务器模式 port :服务端口,默认5050 server_addr:服务器地址(屏作客户端时) 1.6.9 get_network_service_cfg() 返回4个参数,说明同上 wificom, mode, port, server_addr = get_network_service_cfg() 1.6.10 scan_ap() 扫描无线热点,返回热点数目 ap_count = scan_ap() 1.6.11 get_ap_info(index) 获取指定热点的信息 index:WIFI的序号,如下所示 local ap_cnt = scan_ap() for i = 1, ap_cnt do local ssid, security, quality = get_ap_info(i - 1) record_add(sc_scanwifi, 1, ssid..";"..quality..";") end index 热点索引,索引从0开始 ssid:热点名称 security:加密方式 quality:信号质量 1.6.12 client_send_data(packet) 通过客户端SOCKET发送报文 到服务器 packet:发送字节数组packet,下标从0开始 function my_sendToserver() local send_buff = {} send_buff[0] = 0x00 send_buff[1] = 0x01 send_buff[2] = 0x02 send_buff[3] = 0x03 send_buff[4] = 0x04 send_buff[5] = 0x05 send_buff[6] = 0x06 send_buff[7] = 0x07 send_buff[8] = 0x08 send_buff[9] = 0x09 client_send_data(send_buff) end --用户通过触摸修改控件后,执行此回调函数。 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 function on_control_notify(screen,control,value) ...... if screen == sc_tcp then if control == 3 and value == 0 then my_sendToserver() end end ...... end 1.6.13 server_send_data(clinet_id,packet) 通过服务端SOCKET发送报文到客户端 clinet_id:目标客户端ID packet:发送字节数组packet,下标从0开始 function my_sendToClien() local send_buff = {} send_buff[0] = 0x00 send_buff[1] = 0x01 send_buff[2] = 0x02 send_buff[3] = 0x03 send_buff[4] = 0x04 send_buff[5] = 0x05 send_buff[6] = 0x06 send_buff[7] = 0x07 send_buff[8] = 0x08 send_buff[9] = 0x09 server_send_data(1,send_buff) end --用户通过触摸修改控件后,执行此回调函数。 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 function on_control_notify(screen,control,value) ...... if screen == sc_tcp then if control == 3 and value == 0 then my_sendToClien() end end ...... end 1.6.14 on_client_recv_data(packet) 当客户端SOCKET接收到数据时,系统自动回调此函数。 packet:接收的字节数组packet,下标从0开始 PS:屏幕接收服务器的数据不一定是完整一帧报文数据,此处仍需要做粘包、分包,再提取完整一帧数据做处理 function on_client_recv_data(packet) local client_rec = '' for i= 1,#(packet) do client_rec = client_rec .." ".. string.format("%02X",packet[i]) end --简单显示报文数据 set_text(sc_tcp, 1, 'cnt('..recv_cnt..') = '..client_rec) end ​ 1.6.15 on_server_recv_data(clinet_id,packet) 当服务端SOCKET接收到数据时,系统自动回调此函数 clinet_id:客户端ID packet:接收的字节数组packet,下标从0开始 PS:屏幕接收服务器的数据不一定是完整一帧报文数据,此处仍需要做粘包、分包,再提取完整一帧数据做处理 处理方法与on_client_recv_data类似。 1.6.16 http_request(taskid,uri,method,content_type,postdata) 发送HTTP请求到服务器 taskid:请求任务编号,任意设置 uri:资源路径 method:方法,0GET,1POST 以下参数POST方法才需要 content_type:数据类型例如 json,xml,text等 postdata:POST数据 1.6.17 on_http_response(taskid,response) HTTP响应 taskid:响应任务编号,与http_request匹配 response:响应数据 1.6.18 http_download (taskid,uri,savepath) 使用HTTP协议下载文件 taskid:请求任务编号,任意设置 uri:资源路径 savepath:存放位置 1.6.19 http_download_bigfile(taskid,uri ,savepath) 使用HTTP协议下载大文件 参数说明同上 1.6.20 on_http_download (taskid, status) 下载响应 taskid:响应任务编号,与http_download匹配 status:下载状态:0下载失败,1下载成功但存储失败,2下载并存储成功 1.6.21 udp_create(port) port:端口号 创建UDP套接字,并绑定服务端口 例如:sockfd = udp_create(12345) 1.6.22 udp_close(sockfd) 关闭UDP套接字 sockfd:套接字,如udp_create(port)返回 1.6.23 udp_recvfrom(sockfd) 接收UDP数据报文 ret=-1:表示发生错误,ret=0表示无数据,其他值表示数据长度 ip,port:发送端的IP和端口 packet为数据报文,table类型,下标从0开始 ret,ip,port,packet = udp_recvfrom(sockfd) 1.6.24 udp_sendto(sockfd,ip,port,packet) 发送UDP数据报文 sockfd:UDP套接字 ip,port:接收端的IP和端口 packet:数据报文,table类型,下标从0开始 1.6.25 get_wifi_mac() 获取WIFI模块的mac地址,返回字符串 local mac_addr = get_wifi_mac() 1.6.26 get_ethernet_mac() 获取以太网的mac地址,返回字符串 local mac_addr = get_ethernet_mac() 1.7 定时器 1.7.1 start_timer(timer_id, timeout, countdown, repeat) 启动定时器,超时后系统自动调用on_timer timer_id:定时器ID,0~31 timeout:超时时间,单位毫秒 countdown:0顺计时,1倒计时 repeat:重复次数,0表示无限重复 1.7.2 stop_timer(timer_id) 停止定时器 timer_id:定时器ID,0~31 1.7.3 on_timer(timer_id) 定时器超时回调函数 timer_id:定时器ID,0~31 1.7.4 get_timer_value(timer_id) 获取定时器当前计时时间,单位毫秒 timer_id:定时器ID,0~31 1.8 串口 LUA脚本的串口API函数,更多应用于自由串口协议,详细DEMO,可参考LUA教程10-自定义串口指令.zip 1.8.1 uart_send_data(packet) 通过串口发送数据 packet:字节数组,下标从0开始 function uart_doorState(state) local door_buff = {} door_buff[0] = 0x5A door_buff[1] = 0x5A door_buff[2] = 0x07 door_buff[3] = 0x82 door_buff[4] = 0x00 door_buff[5] = 0x01 door_buff[6] = state uart_send_data(door_buff) end --用户通过触摸修改控件后,执行此回调函数。 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 function on_control_notify(screen,control,value) ...... if screen == sc_door then if control == 1 then uart_doorState(value) end end ...... end 1.8.2 uart_set_timeout(timeout, timeout_inter) 设置串口接收超时时间 timeout:接收总超时 timeout_inter:字节间隔超时 常用于自由串口协议(uart_free_protocol = 1),eg:uart_set_timeout(0, 0) 1.8.3 uart_set_baudrate(baudrate) baudrate:波特率,支持2400bps ~ 961200bps 设置波特率,如uart_set_baudrate(9600) 1.8.4 uart_get_baudrate() 获取波特率,返回波特率值 local baudrate = uart_get_baudrate() 1.8.5 on_uart_recv_data(packet) 串口接收数据的回调函数,有两种方式可以触发此函数执行: ☆使用自定义串口指令:格式为EE B5【自定义数据】FF FC FF FF ☆使用自由串口协议:在LUA脚本中定义全局变量 uart_free_protocol = 1 packet:接收的字节数据 1.8.6 uart_setup(baudrate,parity,stopbit,databits) 串口参数设置 baudrate:波特率值 parity:0-无校验,1-ODD奇校验,2-EVEN 偶校验 stopbit:stopbit=0,1个停止位;stopbit=1,1.5个停止位 databits:数据位5~8 1.9 CAN 接口 1.9.1 canbus_open(index,baudrate,listen_mode,loop_back) 打开 CANBUS 接口 index:索引号 0~1 baudrate:波特率(单位 K), 可选 125,250,500,1000 listen_mode:只读模式 loop_back:自发自收(环回/自测) 1.9.2 canbus_close(index) 关闭 CANBUS 接口 index:索引号 0~1 1.9.3 canbus_write(index,identifier,dlc,rtr,ide,data) 发送 CAN 报文 index:索引号 0~1 identifier:报文 ID dlc:数据长度 rtr:远程帧 ide:扩展帧 data:数据, table 格式 1.9.4 on_canbus_recv(index,identifier,dlc,rtr,ide,data) CAN 报文回调函数, 收到报文后, 系统自动调用 index:索引号 0~1 identifier:报文 ID dlc:数据长度 rtr:远程帧 ide:扩展帧 data:数据, table 格式 1.10 音视频 W系列、F系列、M系列均支持音频播放,W系列、M系列均支持视频播放、F型不支持 1.10.1 play_sound(filename) 播放指定的声音文件,例如播放屏内音频文件 filename:路径 屏内路径播放: W系列:play_sound(‘a:/sounds/welcome.wav’) M、F系列:play_sound(‘3:/sounds/welcome.wav’) 1.10.2 stop_sound() 停止播放 1.10.3 on_audio_callback (state) 声音播放结束回调通知 state保留未使用。 1.10.4 set_volume(level) 设置音量 level:音量等级0~100。0静音,100最大音量 1.10.5 get_volume() 获取音量,返回值0-100 1.10.6 play_video(pathname,repeat) 播放视频,不适用于M/F/X系列 pathname为视频路径 repeat为重复次数,0为无限制次, 播放屏内视频:play_ video(‘a:/Videos/1.mp4’,0) 1.10.7 pause_video() 暂停视频播放,F系列不支持 1.10.8 resume_video() 恢复视频播放,F系列不支持 1.10.9 stop_video() 停止视频播放,F系列不支持 1.10.10 play_video(file,left,top,width,height) 播放视频,M/X系列,F系列/物联型不支持 file:文件路径 left:起始坐标x top:起始坐标y width:视频显示的宽度 height:视频显示的高度 1.10.11 on_video_notify(msg,v1, v2) 视频播放回调函数 msg:1-播放中,0-播放完毕 v1:当前播放进度,当前已播时长,单位s v2:播放总进度, 当前视频总时长,单位s 1.10.12 set_av_channel(channel) 切换AV通道,M系列,物联型、F系列不支持 channel = 0,切换到通道1 channel = 1,切换到通道2 1.11 FLASH存储器读写 屏幕提供128K用户FLASH,可用于存储配置参数 固件版本要求:W系列>=3.0.590。0,F系列>= 4.1.401.0,M系列>= V6.1.59.00 1.11.1 write_flash(addr,data) 写用户FLASH数据,addr写入地址,data字节数组,下标从0开始。 1.11.2 read_flash(addr,length) 读用户FLASH数据,addr写入地址,length读取字节数,返回类型为字节数组,下标从0开始 data = read_flash(addr,length) 1.11.3 write_flash_string(addr,str) 写字符串到指定FLASH地址 1.11.4 read_flash_string(addr) 从指定FLASH地址读取字符串,成功返回字符串,失败返回nil str = read_flash_string(addr) 1.11.5 flush_flash() 系统会对FLASH写入操作进行缓存优化,以提高写入效率 flush_flash操作会立即把数据写入FLASH 1.12 文件系统操作 文件系统读写接口,M系列专用,个别函数物联型使用,没有提及部分均M系列专有 1.12.1 list_dir(path) 遍历指定目录下的文件和文件夹,成功返回true,失败返回false path:文件路径 filename:文件名称 type:0-文件夹,1-文件 fsize:文件大小 通过以下回调函数返回文件夹的内容 on_list_dir(path,filename,type,fsize) 1.12.2 file_open(path,mode) 打开文件,成功返回true,失败false path-文件路径 mode-打开模式,如下组合方式 FA_OPEN_EXISTINGFA_READFA_WRITEFA_CREATE_NEWFA_CREATE_ALWAYSFA_OPEN_ALWAYS0x000x010x020x040x080x10 例如: 打开文件用于读取:file_open(path, 0x01) 创建文件用于写入:file_open(path, 0x02|0x08) 1.12.3 file_close() 关闭文件,成功返回true,失败false 1.12.4 file_size() 获取当前文件大小,返回字节数 local file_fd = file_open(path, 0x01) local filesize = file_size() 1.12.5 file_seek(offset) 定位文件读取位置,成功返回true,失败false offset:文件偏移位置 1.12.6 file_read(count) 读取文件内容,成功返回table数组,失败返回nil count:读取字节数,最大读取2048个字节 1.12.7 file_write(data) 写文件内容,成功返回true,失败返回false data-待写入的table数组,索引从0开始,最大一次性写2048个字节 1.12.8 file_delete(path) path:待删除的文件路径 1.12.9 file_copy(src_path, dst_path) src_path:源文件路径 dst_path:目标文件路径 1.12.10 start_copy_file (from,to) 注意:此函数仅物联型使用!!! 文件拷贝 from:源路径 to:目标路径 拷贝文件过程中,系统自动回调文件拷贝进度通知 on_copy_file_process(status,filesize,transfersize) 1.12.11 on_copy_file_process(status,filesize,transfersize) 注意:此函数物联型/M系列共用!!! 文件拷贝进度,配合 file_copy(src_path, dst_path)使用,当调用 file_copy,自动回调到on_copy_file_process函数 status:状态.0-失败,1-拷贝中,2-拷贝完成 filesize:被拷贝的文件大小 transfersize:当前回调拷贝的字节数 1.13 其他 1.13.1 set_backlight(level) 设置背光亮度 level:亮度等级0~100,0最暗,100最亮 1.13.2 get_backlight() 获取亮度百分比,返回数值,共100等级 如:level = get_backlight() 1.13.3 set_language(lang) 设置当前语言选项 lang:语言索引,从0开始。若使用英文提示键盘,或上0x80 例如:设置语言1(索引0) 中文提示键盘:set_language(0) 英文提示键盘:set_language(0x80|0) 1.13.4 get_language () 获取当前语言选项 lang:返回语言索引,从0开始。若使用英文提示键盘,则得到语言项或上0x80 例如:假设当前语言1(索引0)cur_lang = get_language() 中文提示键盘:cur_lang = 0 英文提示键盘:cur_lang = 0x80 1.13.5 set_wakeup_mode (mode) 唤醒模式设置,可组合设置,W系列支持,M系列、F系列不支持 mode:0x1单击唤醒,0x2双击唤醒,0x4串口唤醒 1.13.6 sleepmode (on) on:等于1进入 进入睡眠低功耗模式,睡眠后屏幕功能不再运行,只能使用触摸唤醒 1.13.7 standbymode (on) 进入待机低功耗模式,屏幕的串口可正常运行。W系列支持,M系列、F系列不支持 1.13.8 beep(time) 蜂鸣器鸣叫时长 time:单位毫秒 1.13.9 get_tick_count () 获取上电以后运行时间,单位10ms。 32位计数器,大约49天后溢出归零重新计时。 1.13.10 get_date_time () 获取当前日期时间,返回7个参数 year,mon,day,hour,min,sec,week = get_date_time() year:年 mon:月 day:日 hour:时 min:分 sec:秒 week:星期x,星期日为0 1.13.11 set_date_time (year,mon,day,hour,min,sec) 设置当前日期时间 year:年 mon:月 day:日 hour:时 min:分 sec:秒 set_date_time(year,mon,day,hour,min,sec) 1.13.12 upgrade_logo (url) 通过U盘更新开机LOGO,W系列支持、F系列、M系列不支持 url:图片路径 function on_usb_inserted(driver) upgrade_logo(driver..'logo.jpeg') end 1.13.13 gpio_set_in (pin) PIN引脚设置为输入模式,W系列、M系列支持,F系列不支持 1.13.14 gpio_set_out (pin) PIN引脚设置为输出模式,W系列、M系列支持,F系列不支持 1.13.15 gpio_set_value (pin,value) 设置输出PIN引脚为(高电平1/低电平0),W系列、M系列支持,F系列不支持 1.13.16 gpio_get_value (pin) 获取输入PIN引脚电平(高电平1/低电平0),W系列、M系列支持,F系列不支持 1.13.18 feed_dog () 若在脚本内执行耗时超过5秒的操作,需要执行喂狗 W系列不支持,F系列、M系列支持。 1.13.19 get_pixel(x,y) 获取对应坐标的RGB565值 W系列、M系列支持,F系列不支持。 1.13.20 refresh_screen() 刷新画面 1.13.21 get_version() 获取固件版本号,返回字符串 --- ═══════════════════════════════════════════ ## Modbus 协议文档 ═══════════════════════════════════════════ ### 49. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数据记录控件是大彩串口屏里专门用来做告警 / 事件记录的工具。在 Modbus 工程里,它把从机(PLC、变频器、温控模块)上来的报警状态按时间排好显示在屏上。本教程走一遍从协议配置、变量建立到画面联调的完整流程,并重点把两种最常见的事件记录用法分开讲清楚,避免配错导致屏上不显示、记不下来。文档整理自广州大彩光电科技有限公司《MODBUS 教程_数据记录控件 V1.0》,版权归大彩。 1 适用范围与开发环境 该文档适用于大彩所有支持 Modbus 协议的串口屏产品:基本型、经济型、商业型、F 型、物联型、86 盒、485 系列。NANO 系列除外(NANO 仅支持大彩组态协议,不支持 Modbus)。 搭建工程前先确认版本够用,版本不够会在编译或运行期出诡异问题,调半天发现是固件旧了: 软件 / 固件最低版本要求查看方式 VisualTFT 上位机V3.0.0.1037 及以上启动页右上角 / 软件右下角 基本型 / 经济型 / 商业型 固件MB 2.22.912.259 及以上屏背面贴纸,或文本控件绑「系统变量→固件版本号」 物联型固件V3.0.301.0 及以上同上 F 型固件V4.1.66.0 及以上同上 本例程硬件验证平台为大彩基本型 7 寸屏 DC80480B070,其它尺寸串口屏照此教程即可。上位机用大彩自研的 VisualTFT,官网 http://www.gz-dc.com 下载。 2 串口屏 Modbus 协议基础 大彩除 NANO 外的所有系列串口屏,都同时支持两种协议版本:大彩组态协议、Modbus RTU 协议。屏的串口物理规格固定为:1 起始位 / 8 数据位 / 无校验 / 1 停止位(8N1)。波特率范围:RS232 支持 1200~921600bps(典型 115200),RS485 支持 1200~115200bps(典型 9600)。 开发 Modbus 工程时,你在 VisualTFT 里配好的变量和协议,编译后会固化进工程包下到屏里。屏作主机时,按你设的轮询周期周期性地往从机发读指令,收到从机应答后解析,刷新绑定的控件或触发预设动作;屏作从机时则响应外部主站的轮询。 3 Modbus 协议与变量配置(前置条件) 打开 VisualTFT 菜单【工具】→【协议与变量设置】,左侧选文件路径,右侧协议设置栏设协议类型。数据记录控件本身不绑定具体寄存器读取,它显示的是「变量」的状态变化,而变量是从 Modbus 寄存器映射上来的——所以协议和变量必须先配好。 3.1 屏作主机 / 从机配置项 配置项默认值说明 启用协议—必须勾上才支持 Modbus 协议类型—选「Modbus 主机」或「Modbus 从机」;本例程即主机模式 从机地址1仅从机模式需要,主机模式下从机地址在变量里单独填 轮询周期1 秒周期性读变量的间隔 轮询延时100 毫秒相邻两条读命令之间的间隔 应答超时100 毫秒允许从机的最大响应延时 连续读取—连续地址变量一次性最大读取数 优化读取—开启后只读本画面相关的变量,省串口带宽 存储设置—不存储 / 全部存储 / 存储指定变量(推荐后者,存很少改的系统参数) 存储标记—数据格式改了手动改这个值,防止读到旧版本存储 存储设置里「全部存储」不推荐——频繁写 Flash 会加速坏块。要掉电保存的,用「存储指定变量」勾选特定变量即可。屏作从机时配置项少一些:启用协议、协议类型选「Modbus 从机」、从机地址(默认 1)、存储设置、存储标记。 3.2 建立变量添加变量节点后在属性窗口设置。几个关键属性: 属性说明 名称默认 Variable1/2/3…,建议改成有意义的,如「机组状态」;分段变量默认 Field1/2/3…,可改「开/关机」 格式 / 符号短整型、长整型、单精度浮点、字符串;可设无符号 / 有符号 读写设置可读写 / 只读取 / 只写入 默认值默认显示值 数值转换实际值 = 原始值 × 缩放 + 平移,比如 0.1 倍率把寄存器整数转成带小数工程量 显示格式设置整数和小数部分的位数 数组类型开启后从该地址连续操作 N 个寄存器 是否储存协议开启存储设置后,此处勾选可掉电保存 变量参数里:变量类型支持线圈、离散输入、保持寄存器、输入寄存器、内存变量、系统变量;屏作主机时才需要填从机地址和变量地址(16 进制填写);「初始化从机」是上电后把变量值写回从机;「读取失败归零」是读不到时变量归零(报警场合慎用,可能误显)。 4 数据记录控件的两种用法(先读这段,再配) 数据记录控件记录的是「变量状态变化产生的事件」。要让某条告警显示出来,要做两件事: 告警解析:建立「事件 ID → 文本 / 颜色」的对照表。屏上显示什么字、什么颜色,由这里决定。 事件记录[触发]:决定「什么时候记一条」。只有触发条件满足,才会按告警解析里的文本生成一条带时间戳的记录。 事件 ID 怎么填、触发条件怎么写,取决于你的从机返回的是什么数据。实务里有两种用法,配法完全不同,下面分层讲。 4.1 用法一:bit 位映射(寄存器返回位图,需要拆子节点) 适用场景:从机在一个寄存器里用不同 bit 表示不同告警,返回的是「位图」。例如建一个离散输入变量「机组故障」(占 1 个 16 位寄存器),bit0=压缩机低压、bit1=风机故障、bit2=烟感报警、bit3=过滤网堵塞。 必须建子节点:因为这种用法要把每一位单独拆出来当成一个变量,否则控件分不清是哪一位。在变量下添加子节点(分段变量),把 bit0~bit3 分别命名: 子节点(分段变量)对应 bit含义 Field1bit0压缩机低压 Field2bit1风机故障 Field3bit2烟感报警 Field4bit3过滤网堵塞 告警解析:事件 ID 填子节点序号 0/1/2/3(对应 bit0~bit3),并设好描述和颜色。 事件记录[触发]:事件参数选变量、事件 ID 选对应子节点(0/1/2/3),执行条件写「该子节点 == 1」。例如:事件参数=变量 / 事件 ID=0 / 执行条件=等于 / 变量=机组故障/压缩机低压 / 数值=1。⚠ 注意:bit 用法里事件 ID 是子节点序号(从 0 开始),不是寄存器返回的 0001/0002。底层对应寄存器值 0x0001/0x0002/0x0004/0x0008。一个 16 位寄存器最多 bit0~bit15 共 16 个事件。事件关联发生在屏侧:控件拿寄存器值按 bit 匹配子节点,再去告警解析取文本。4.2 用法二:值映射(寄存器直读事件编号,不拆子节点) 适用场景:从机直接返回一个「事件编号」值,例如读到 0x0001 表示事件一、0x0002 表示事件二、0x0003 表示事件三……寄存器里放的就是编号本身,不需要拆 bit、不需要建子节点。 不建子节点:这种用法下,变量就一个,读回来的值就是事件编号,别去拆位。 告警解析:事件 ID 填从机返回的那个编号值(如 1、2、3,或对应的十六进制 0001、0002、0003,按你寄存器实际返回填),并设好描述和颜色。 事件记录[触发]配置(严格按下面 5 步): 事件参数:选择「变量」 事件 ID:选择上面设定的那个寄存器变量(就是读编号的那个变量本身) 执行条件:选择「等于」 变量:还是选这个寄存器(和步骤 2 同一个) 数值:填写从机返回的值(如 1 / 2 / 3,或 0001 / 0002 / 0003,与告警解析里的事件 ID 一致) ⚠ 注意:值映射用法不设子节点、不写「某位 == 1」。条件是「寄存器值 == 某个编号」,命中后屏直接按告警解析里那个编号对应的文本显示 / 记录时间。告警解析里的事件 ID 和此处「数值」必须完全一致,否则读过来的数对不上文本,屏上就不显示、也不计时。4.3 两种用法怎么选 对比项用法一 bit 位映射用法二 值映射 从机返回位图(每位一个告警)事件编号值(0001/0002/0003…) 是否建子节点需要(拆 bit)不需要 事件 ID 填什么子节点序号 0/1/2/3寄存器返回的编号值 执行条件某子节点 == 1寄存器 == 某个编号 常见场景一个故障字含多个开关量从机主动上报事件流水号 5 教程实现(以 bit 用法完整演示,值映射见 4.2) 数据记录控件支持三种记录类型:当前告警、历史告警、历史告警与解除(比「历史告警」多了每条告警的解除时间)。本例程对前两种做示范,整体分三步:准备素材 → 功能实现 → 下载工程。下面以 4.1 的 bit 用法走完整流程(有图);若你的工程是 4.2 值映射,把「事件记录[触发]」按 4.2 的 5 步改即可,其它一致。 5.1 准备工程素材 硬件用 DC80480B070 基本型 7 寸屏;软件用 VisualTFT;UI 用准备好的美工图。工程结构采用首页导航 + 分画面:首页放两个按钮切到【当前告警】和【历史告警】画面,每个子画面有返回首页按钮。另外配【当前告警说明】和【历史告警说明】两个纯说明画面。 5.2 新建工程打开菜单【文件】→【新建工程】,弹出新建工程窗口,设置好工程名称、路径、设备类型,点击【确定】。 5.3 配置 Modbus 主机进入【工具】→【协议与变量设置】,协议类型设「Modbus 主机」,参数按 3.1 节。轮询周期 1 秒、轮询延时 100ms、应答超时 100ms 是默认,一般不用动。 5.4 画面与控件配置首页放两个按钮(控件 ID:1),触控类型「切换画面」,目标画面分别指【当前告警】和【历史告警】。按钮属性里把触控类型设为「切换画面」、目标画面选【当前告警】,另一个同理。 5.5 当前告警画面 从机产生报警时,数据记录控件显示当前的告警和触发时间;报警解除后控件不再显示该条。配置步骤: 画面加一个数据记录控件(控件 ID:1),把「记录类型」设为当前告警; 在「告警解析」里设置各事件 ID 的数值、显示颜色、描述; 针对每个事件 ID,加一条用途为「事件记录[触发]」的逻辑处理,执行条件设成该位 == 1(bit 用法)或该寄存器值 == 编号(值映射,见 4.2)。 「告警解析」对话框三列:事件 ID(数值)、前景颜色、描述。本例用 bit 用法,建离散输入变量「机组故障」取前 4 位,事件 ID 填子节点序号 0=压缩机低压、1=风机故障、2=烟感报警、3=过滤网堵塞(当前告警里颜色按严重度区分,例如压缩机低压红、风机/烟感绿、滤网蓝)。每个事件 ID 对应一条「事件记录[触发]」逻辑。bit 用法写法形如:事件记录[触发] / 控件(1,1) / 事件(0) / 条件(机组故障/压缩机低压 == 1),即该位为 1 时触发一条告警记录。四个事件分别为事件0(压缩机低压)、事件1(风机故障)、事件2(烟感报警)、事件3(过滤网堵塞)——事件 ID 必须和「告警解析」里填的数值一一对上。 若你用的是 4.2 值映射,这里就按 4.2 的 5 步来:事件参数=变量 / 事件 ID=那个寄存器 / 执行条件=等于 / 变量=同寄存器 / 数值=返回的编号(如 1)。 5.6 历史告警画面 历史告警与当前告警配置几乎一样,唯一区别是记录类型选历史告警。不同点:报警解除后,历史告警的这条记录仍然留在表格里;如果在 Modbus 协议里开了存储设置,还能掉电保存,重新上电不丢。历史告警的「告警解析」与「事件记录[触发]」逻辑和当前告警完全对称,只是控件指向画面 2,且告警解析里四项颜色统一设为红(255,0,0),强调"已发生即留痕"。事件 ID 同样从 0 起始对应子节点序号(bit 用法),逻辑里同样要写"各位 == 1"的条件;值映射用法见 4.2。 5.7 运行预览本例程屏作主机,用 Modbus Slave 软件模拟从机应答。运行虚拟屏,与 Modbus Slave 联机即可看到效果:当前告警画面列出活动告警(压缩机低压、烟感报警、过滤网堵塞)及其触发时间,右侧 Modbus Slave 显示对应寄存器值与通信日志。具体操作参考大彩《【MODBUS】串口屏_应用文档_V1.0.pdf》。 6 下载工程VisualTFT 编译成功后输出窗口会提示「编译成功」,再下到屏里,两种方式: USB 下载:点菜单【下载到设备】,用 USB 线把配置下进屏; SD 卡下载:菜单【工具】→【量产向导】→ 选「SD 卡下载」,把弹窗里所有文件拷到 SD 卡根目录,插屏后重新上电,烧录完取下 SD 卡。 7 工程实操要点(踩坑提示) 先定用法,再配:从机返回的是位图(bit 用法,要拆子节点)还是事件编号(值映射,不拆子节点)?两种配法完全不同,混着写屏上必然不显示。 bit 用法:事件 ID = 子节点序号 0/1/2/3,对应寄存器值 0x0001/0x0002/0x0004/0x0008。别把"寄存器返回 0001/0002/0003"当编号填进事件 ID——0003 是 bit0+bit1 同置,不是"事件 3"。 值映射用法:不建子节点、不写「某位 == 1」。事件记录[触发]按 4.2 的 5 步:事件参数=变量 → 事件 ID=那个寄存器 → 执行条件=等于 → 变量=同寄存器 → 数值=返回编号。告警解析里的事件 ID 与这里数值必须完全一致。 事件 ID 必须对齐:「告警解析」里填的 ID,和「事件记录[触发]」逻辑里的事件 ID(或数值)是同一个东西,对不上屏上就不显示那条告警。 逻辑必设条件:「事件记录[触发]」不写执行条件会无条件触发,所有事件都被记下来,画面一团乱。 历史告警要掉电保存,记得开存储:只在 Modbus 协议配置里开了「存储设置 = 存储指定变量」,且变量属性里勾了「是否储存」,历史告警断电后才不丢。两处都要设,只设一处不生效。 当前告警 vs 历史告警的语义:当前告警是「活的」——解除即消失;历史告警是「记账」——解除也留痕。选型时想清楚你要的是实时状态还是审计记录。 轮询周期别太狠:从机响应慢或总线设备多时,1 秒轮询 + 100ms 延时要酌情放大,否则会出现读到一半超时、报警跳变。 颜色 ID 有意义:当前告警按严重度用不同前景色(红/绿/蓝),历史告警统一红——别随便填,否则屏上区分不出来。 整理自广州大彩光电科技有限公司《MODBUS 教程_数据记录控件 V1.0》(www.gz-dc.com),版权归大彩所有。如需联机调试细节,参见大彩《【MODBUS】串口屏_应用文档_V1.0.pdf》。 --- ### 50. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 控件显示隐藏和多语言功能 本章节主要介绍控件的显示和隐藏、多语言的应用。其中组态控件才支持显示隐藏,组态控件类型可参考VisualTFT 工作界面介绍,支持多语言的控件有文字、按钮、菜单、滑动选择、数据记录(告警)等等 本章节屏幕当主站,本章节创建1个保存寄存器,用于控制组态控件的显示隐藏;创建一个系统变量,用于语言控制选择,如下所示 控件显示隐藏 【显示隐藏控件功能】画面主要对显示隐藏控件功能的使用做示例说明。当需要在某个条件成立的情况下,隐藏或显示一个或一些控件的应用 画面/逻辑配置 画面中添加一个文本控件(控件ID:1),作为控制控件的隐藏和显示。添加一个进度条控件(控件ID:1)、一个仪表控件(控件ID:2)、一个文本控件(控件ID:3)作为被显示或被隐藏,如下所示 在【协议与变量设置】中添加3条逻辑处理:第一条:用途为“控件显示”;画面为“1”;控件为“2”;执行条件为“变量 【控件显示】不为0”,同理,第2、3条设置类是 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件建立联机。当变量“控件显示”的值为“0”,滑动条控件(控件ID:2)、仪表控件(控件ID:3)、文本控件(控件ID:4)被隐藏;当变量“控件显示”的值为“1”,这些控件显示出来。同时,点击文本控件(控件ID:1),弹出键盘输入“0”或“1”,控制控件显示或隐藏。 多语言 【多语言功能】画面主要对多语言功能的使用做示例说明。针对面向不同的客户,需要多语言应用。屏支持文字、菜单控件和滑动选择控件的多语言设置。工程以3个按钮来控制文字、菜单控件和滑动选择控件的中文、英文、繁体的显示 画面/逻辑配置 画面中添加一个文字(ID:1)、滑动选择控件(控件ID:2)、菜单控件(控件ID:3),用于显示不同语言。以文字控件为例,控件属性设置如下所示 画面中添加3个按钮控件(控件ID:4、5、6)用于控制显示不同的语言。以按钮控件ID4为例,控件属性配置如下所示 按钮控件ID4~6,做了互斥功能(同时只能选中一个,可参考《组态控件教程——按钮控件》1.3章节按钮互斥) 【协议与变量设置】中添加3条逻辑处理:第一条,用途为“按钮按下”;画面为“2”;控件为“4”;执行条件为“设置[系统语言]为0”,对应显示“语言1”。同理,第2、3条设置类是,如下所示 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件联机。当按下按钮控件(控件ID:1)时显示中文;按下钮控件(控件ID:5)时显示“英文”;当按钮控件(控件ID:5)时显示“繁体” --- ### 51. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.8 二维码控件和RTC控件 本章节主要介绍二维码控件、RTC控件在Modbus协议中常见的应用。其中二维码控件只支持在【工具-协议与变量-逻辑处理】绑定变量 本章节屏幕当主站,本章节创建1个保存寄存器,用于二维码控件的应用,如下所示 例程下载链接:《Modbus教程8-二维码控件和RTC控件V1.0》协议开启、变量相关说明,参考链接:《Modbus 基本参数说明》 1.8.1 二维码控件 【二维码】画面主要对二维码控件的使用做示例说明。二维码控件可以将设定的字符串以二维码的形式显示出来。可以被一些扫描仪器识别。 注意:基本型系列的串口屏使用二维码控件需要特殊的固件支持 画面/逻辑配置 画面中添加一个二维码控件(控件ID:1),控件属性配置,如下所示: 在【协议与变量设置】中添加一个变量,变量类型为“字符串”,字符串长度为32,如下所示 在【协议与变量设置】中添加一条逻辑处理,该逻辑处理的用途为“控件绑定”,画面为“1”;控件为“1”;变量为“二维码”,如下所示 运行预览 此时,编译工程并运行虚拟串口屏,二维控件将字符串“VisualTFT”以二维码的形式显示出来,和Modbus Slave软件联机,二维控件控件显示对应字符串。 1.8.2 RTC控件 【RTC控件】画面主要对RTC控件的使用做示例说明,当屏做主机时,修改从机RTC时间;从机创建固定地址的保持寄存器,用于存放时间变量,连续7个保持寄存器,分别存放年、月、星期、日、时、分、秒,屏幕周期性地把最新的时间通过0x10指令写从机寄存器 画面/逻辑配置 画面中添加一个RTC控件(控件ID:1),如下所示: 在【协议与变量设置】中添加1条逻辑处理:用途为“写入时间”;从机地址为“1”;寄存器为“50”(10进制);周期为“10”(单位秒),如下所示: 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件联机。主机每10S将RTC时间发送至从机。 --- ### 52. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.7 图标控件和动画控件 本章节主要介绍图标控件、动画控件在Modbus协议中常见的应用。其中简单的控件绑定变量,可以在组态配置页面关联,或者在【工具-协议与变量-逻辑处理】绑定变量 本章节屏幕当主站,读写从机指令,若屏幕当从机,图标控件、动画控件的应用一样,参考即可,本章节1组离散输入变量,2个输入寄存器用于说明图标控件和动画控件的应用,如下所示 例程下载链接:《Modbus教程7-图标和动画控件V1.0》协议开启、变量相关说明,参考链接:《Modbus 基本参数说明》 1.7.1 图标控件 【图标控件】画面,主要对图标控件的使用做示例说明。图标控件为GIF或ICON格式的动画文件,默认图标索引从0开始。在MODBUS协议中可以使用图标控件绑定变量,形象地显示设备的状态 画面/逻辑配置 方法一:逻辑处理绑定 画面中添加一个图标控件(控件ID:1),作为显示从机“机组故障/压缩机状态”,如下所示 控件ID:2配置同理图标文件的生成,参考链接:《ICON控件应用》(点击跳转) 在【协议与变量设置】中添加一条逻辑处理,该逻辑处理的用途为“控件绑定”,画面为“1”;控件为“1”;变量为“机组故障/压缩机低压”,如下所示 方法二:组态画面绑定 画面中添加一个图标控件(控件ID:3),作为显示从机烟感报警状态。且在其属性栏窗口中绑定“机组故障/烟感报警”变量,详细配置如下所示 控件ID:4配置同理 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件联机。当变量“机组故障”每一个节点的值不间断发生变化时, 图标控件(控件ID:1~ID4)显示的状态也会相应的更新 1.7.2 动画控件 【动画控件】画面主要对动画控件的使用做示例说明,动画控件用于播放设置的GIF或ICON格式的动画文件,可以控制暂停或者播放 画面/逻辑配置 方法一:逻辑处理绑定 画面中添加一个动画控件(控件ID:1),作为显示控制从机“动画1”变量;同时添加两个按钮控件(ID为2和3)作为动画控件(控件ID1)的播放、暂停的控制,如下所示 在【协议与变量设置】中添加3条逻辑处理 : 第1条:用途为“动画播放”,画面为“2”;控件为“1”;和“动画1“关联 第2条:控制“动画”的播放。用途为【按钮按下】,填写画面ID为2,控件ID为2;执行动作为【设置变量】,变量为【动画1】,设置值为1 第3条:控制“动画”的暂停。用途为【按钮按下】,填写画面ID为2,控件ID为3;执行动作为【设置变量】,变量为【动画1】,设置值为0 方法二:组态画面绑定 画面中添加一个动画控件(控件ID:4),作为显示控制从机“动画2”变量。在其属性栏窗口中绑定“动画2”变量。添加一个按钮控件(ID:5),作为动画控件(控件ID4)的播放、暂停的控制,如下所示 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件联机。当变量“动画1”的值不为“0”的时候,动画控件(控件ID:1)播放动画;同时点击按钮控件(控件ID:2或3),可以控制动画控件“播放”或者“停止”,同时变量“动画1”的值相应改变。同理,动画控件(控件ID:4)的现象和操作类似。 --- ### 53. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.6 曲线和历史曲线控件 本章节主要介绍曲线控件、历史曲线控件在Modbus协议中常见的应用。其中简单的控件绑定变量,可以在组态配置页面关联,或者在【工具-协议与变量-逻辑处理】绑定变量 本章节屏幕当主站,读写从机指令,若屏幕当从机,曲线控件、历史曲线控件的应用一样,参考即可,本章节创建2个保存寄存器,用于说明曲线,历史曲线的应用,如下所示 例程下载链接:《Modbus教程-5-曲线和历史曲线控件V1.0》协议开启、变量相关说明,参考链接:《Modbus 基本参数说明》 1.6.1 曲线控件 【曲线控件】画面,主要对曲线控件的使用做示例说明。MODBUS协议版本中,曲线控件用于显示关联的变量,曲线控件周期性的采样变量值, 然后将所有采样值绘制到曲线控件内,连接形成曲线;曲线控件的每个通道都可以关联一个变量,最多可以设置8个通道 画面/逻辑配置 画面中添加一个曲线控件(ID:1),作为显示从机“温度”值。同时添加两个按钮控件(ID为2和4)作为增减“温度”变量的控制,以及添加一个文本控件(ID:3),直接绑定“温度”,作为数值的显示。曲线控件的相关参数配置,如下所示 在【协议与变量设置】中添加3条逻辑处理: 第1条:用途为“曲线绑定”,画面为“1”;控件为“1”;通道为“0”,变量为“温度”;采集周期为“1” 第2条:控制“温度”的增减。用途为【按钮按下】,填写画面ID为1,控件ID为2;执行动作为【增量调节】,变量为【温度】,调节步长为【1】,调节方式为【递减】;循环从0~100调节 第3条:控制“温度”的递增。用途为【按钮按下】,填写画面ID为1,控件ID为4;执行动作为【增量调节】,变量为【温度】,调节步长为【1】,调节方式为【递增】;循环从0~100调节。如下所示 运行预览 此时,编译工程并下载到串口屏,和MODBUS Slave软件联机,曲线控件实时显示温度的变化。同时按下按钮控件(ID:2和ID:4)可以对“温度”变量的控制,曲线控件的显示也随着改变,如下所示 1.6.2 历史曲线控件 【历史曲线控件】画面,主要对历史曲线控件的使用做示例说明。历史曲线控件和曲线控件都可以实时采样、显示绑定的变量值。不同处是历史曲线控件保存前期的数据,可以查看历史数据。MODBUS协议版本中,历史曲线控件用于显示关联的变量值,历史曲线控件周期性的采样变量值,然后将所有采样值绘制到历史曲线控件内,连接形成曲线;历史曲线控件的每个通道都可以关联一个变量,最多可以设置8个通道。 画面/逻辑配置 画面中添加一个历史曲线控件(ID:1),作为显示从机“湿度”值。同时添加两个按钮控件(ID为2和4)作为增减“湿度”变量的控制;以及添加一个文本控件(ID:3),直接绑定变量“湿度”,作为数值的显示。历史曲线控件的相关参数配置如下所示 在【协议与变量设置】中添加3条逻辑处理: 第1条:用途为“曲线绑定”,画面为“2”;控件为“1”;通道为“0”,变量为“湿度”;采集周期为“1” 第2条:控制“湿度”的增减。用途为【按钮按下】,填写画面ID为2,控件ID为2;执行动作为【增量调节】,变量为【湿度】,调节步长为【1】,调节方式为【递减】;循环从0~100调节 第3条:控制“湿度”的递增。用途为【按钮按下】,填写画面ID为2,控件ID为4;执行动作为【增量调节】,变量为【湿度】,调节步长为【1】,调节方式为【递增】;循环从0~100调节。如下所示 运行预览 此时,编译工程并下载到串口屏,和MODBUS Slave软件联机,历史曲线控件实时显示湿度的变化。当屏幕显示的采样点数大于设置的值(默认为 100),可以通过历史曲线控件上方的滚动条查看历史数据。同时按下按钮控件(ID:2和ID:4)可以对“湿度”变量的控制,历史曲线控件的显示也随着改变 --- ### 54. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.5 菜单控件和滑动选择控件 本章节主要介绍滑动选择控件、菜单控件在Modbus协议中常见的应用。其中简单的控件绑定变量,可以在组态配置页面关联,或者在【工具-协议与变量-逻辑处理】绑定变量 本章节屏幕当主站,读写从机指令,若屏幕当从机,滑动选择控件、菜单控件的应用一样,参考即可,本章节创建2个保存寄存器,用于说明滑动选择控件、菜单控件的应用,如下所示 例程下载链接:《Modbus教程4_滑动选择和菜单选择控件V1.0.rar》协议开启、变量相关说明,参考链接:《Modbus 基本参数说明》 1.5.1 菜单控件 【菜单控件】画面主要对菜单控件的使用做示例说明,菜单控件的“风格”有两种:“弹出菜单”和“固定菜单”。此处主要做弹出菜单使用说明,“菜单风格”为“弹出菜单”,需要按钮控件将菜单控件和文本控件关联使用,点击按钮弹出菜单控件,选中菜单项后直接显示在文本控件中 画面/逻辑配置 方法一:逻辑处理绑定 画面中添加一个菜单控件(控件ID:2),作为控制从机开关机,详细配置如下所示 在【协议与变量设置】中添加一条逻辑处理,该逻辑处理的用途为“控件绑定”,画面为“1”;控件为“2”;变量为“机组状态/开/关机”,如下所示 方法二:组态画面绑定 画面中添加一个菜单控件(控件ID:5),作为控制从机风速。且在其属性栏窗口中绑定“设置温度”变量,详细配置如下所示 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件联机,当按下按钮控件(控件ID:4),弹出菜单控件(控件ID:5),选择菜单控件的“一级”选项,直接“一级”将显示在文本控件(ID:6)中,且从机变量“设置风速”相应改变 1.5.2 滑动选择控件 【滑动选择控件】画面,选择控件主要有两种用途:“滑动选择”和“状态显示”。“滑动选择”主要用于通过触摸屏滑动选择预设的选项;“状态显示”主要用于显示不同的预设选项,类似图标控件 画面/逻辑配置 方法一:逻辑处理绑定 画面中添加一个滑动选择控件(控件ID:1),作为显示风机状态;用途为“状态显示”,如下所示 在【协议与变量设置】中添加1条逻辑处理:用途为“控件绑定”;画面为“2”;控件为“1”;变量为“机组状态/风机故障”。如下所示 方法二:组态画面绑定 画面中添加一个菜单控件(控件ID:2),作为控制从机风速等级。在其属性栏窗口中绑定“设置风速”变量,如下所示 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件联机。当变量“机组状态/风机故障”的值发生变化时, 滑动选择控件(控件ID:1)显示的状态也会相应的更新;通过鼠标点滑动选择控件(控件ID:2)并拖动,当拖动停止后,选中某个选项,同时变量“设置风速”的值也会变化更新 --- ### 55. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.4 仪表、滑块和进度条控件 本章节主要介绍仪表控件、滑块控件、进度条控件在Modbus协议中常见的应用。其中简单的控件绑定变量,可以在组态配置页面关联,或者在【工具-协议与变量-逻辑处理】绑定变量 本章节屏幕当主站,读写从机指令,若屏幕当从站,仪表、滑块、进度条控件的应用一样,参考即可,本章节创建2个保存寄存器、2个输入寄存器,用于说明仪表控件、滑块控件、进度条应用,如下所示 适用范围: 全系列例程下载链接:《Modbus教程3-仪表、滑块及进度条控件V1.0》(点击跳转)协议开启、变量相关说明,参考链接:《Modbus 基本参数说明》 1.4.1 仪表控件 【仪表控件】画面主要对仪表控件的使用做示例说明。仪表控件反映用户主机上的数据变化,满足用户使用的仪器仪表界面 画面/逻辑配置 方法一:逻辑处理绑定 画面中添加一个仪表控件(控件ID:1),作为显示从机电压值,打开【工具-协议与变量】,添加1条逻辑处理 用途用于【控件绑定】,填写对应的画面ID1、仪表控件ID1,绑定的变量为【电压】,如下所示 方法二:组态画面绑定 画面中添加一个仪表控件(控件ID:2),作为显示从机电流。且在其属性栏窗口中绑定“电流”变量,如下所示 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件联机,仪表控件实时显示电压(控件ID:1)、电流(控件ID:2)的变化 1.4.2 滑块和进度条控件 【进度条和滑块控件】画面,将进度条控件和滑块控件一起配合使用,进度条的通知为关联滑动条,主要是用于显示绑定的变量值,通过拖动滑块控件的游标,改变变量值 画面/逻辑配置 方法一:逻辑处理绑定 画面中添加进度条控件(控件ID:1)、滑块控件(控件ID:2)。在【协议与变量设置】中添加1条逻辑处理 用途用于【控件绑定】,填写对应的画面ID2、仪表控件ID2,绑定的变量为【设置温度】,如下所示 方法二:组态软件绑定 画面中添加进度条控件(控件ID:3)、滑动条控件(控件ID:4)。滑块控件直接绑定【设置湿度】,配置如下所示 运行预览 此时,编译工程并运行虚拟串口屏,和Modbus Slave软件联机。当变量的值发生变化时,滑块控件和进度条显示的状态也会相应的更新;通过鼠标点击滑块控件并拖动,变量的值也会相应变化更新 --- ### 56. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.3 按钮控件和文本控件 本章节主要介绍按钮控件、文本控件在Modbus协议中常见的应用。其中简单的控件绑定变量,可以在组态配置页面关联,或者在【工具-协议与变量-逻辑处理】绑定变量 本章节屏幕当主站,读写从机指令,若屏幕当从站,文本、按钮控件的应用一样,参考即可,本章节创建2个线圈、4个保存寄存器,用于说明按钮控件、文本控件的应用,如下所示 适用范围: 全系列 例程下载链接:《Modbus教程1_入门教程V1.0》(点击跳转) 协议开启、变量相关说明,参考链接:《Modbus 基本参数说明》 1.3.1 按钮控件 【按钮控件】画面,当MODBUS协议版本中,按钮按下或弹起时可以执行一些预设的逻辑操作 画面/逻辑配置 设置关机 【按钮控件】画面,按钮控件ID1,组态界面不直接关联控件,,添加以下逻辑处理 添加逻辑处理:用途用于【控件绑定】,填写对应的画面ID1、按钮控件ID1,变量为【机组状态/开/关机】 设置湿度40% 【按钮控件】画面,按钮控件ID2、文本控件ID3,组态界面不直接关联控件,添加以下逻辑处理 第1条:用途用于【按钮按下】,填写对应的画面ID1、按钮控件ID2,执行动作为【设置变量】 ,设置【设置湿度】为40 第2条:用途用于【控件绑定】,填写对应的画面ID1、文本控件ID3,变量为【设置湿度】,绑定的变量为【设置湿度】 如下所示: 设置温度 【按钮控件】画面,按钮控件ID4和ID6、文本控件ID5,组态界面不直接关联控件,添加以下逻辑处理 第1条:用途用于【按钮按下】,填写对应的画面ID1、按钮控件ID4,执行动作为【增量调节】 、调节的变量为【设置温度】、调节1步长为【1】(步长只能为整数),调节方式为【递减】 第2条:用途用于【控件绑定】,填写对应的画面ID1、文本控件ID5,绑定的变量为【设置温度】 第3条:用途用于【按钮按下】,填写对应的画面ID1、按钮控件ID6,执行动作为【增量调节】 、调节的变量为【设置温度】、调节1步长为【1】(步长只能为整数),调节方式为【递增】 如下所示: 运行预览 根据画面配置和逻辑处理,结合modbus slave调试工具,当按下按钮控件(控件ID:1),从机设备的状态为关机。同理,按钮按下时还可以用于保存寄存器的变量设置,增量调节等功能,运行结果如下所示 1.3.2 文本控件 【文本控件】画面,文本控件主要是用于显示绑定的变量值。对于线圈、保持寄存器等可读写类型的变量,可以设置“输入方式”为弹出系统键盘输入,通过弹出的键盘对绑定的变量值进行修改。另外可以绑定修改显示颜色、闪烁的逻辑处理 画面/逻辑配置 画面中添加一个文本控件(控件ID:1),作为显示电压值;输入方式为弹出键盘,添加以下逻辑处理: 第1条:用途为“控件绑定”,绑定变量“电压” 第2条:用途为“设置颜色”,颜色设置为红色(RGB(255,0,0)),执行条件为“设定电压”的值大于“250” 第3条:用途为“设置颜色”,颜色设置为黑色(RGB(0,0,0)),执行条件为“设定电压”的值小于等于“250” 第4条:用途为“文本闪烁”,执行条件为“设定电压”的值大于“250” 运行预览 实时显示电流电压的数值。当“电压”的值大于250时,文本显示为红色并闪烁,如果“电压”的值小于等于250时,文本显示为黑色,并且不闪烁,如下所示: --- ### 57. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 2 如何创建关联变量 跳动符号串口屏modbus 协议可支持创建线圈、离散输入、保持寄存器、输入寄存器、内容变量、系统变量,如下所示 变量类型相关说明线圈(Coils)参与通讯:0x01/0x05/0x0F离散输入(Discrete Input)参与通讯:0x02保持寄存器(Holding Register)参与通讯:0x03/0x06/0x10输入寄存器(Input Register)参与通讯:0x04内存变量不参与通讯:用于做中间变量、记录一些信息等系统变量不参与通讯:如系统波特率、运行时间等等 本章节屏幕配置为主机模式,介绍线圈、离散输入、保持寄存器、输入寄存器、系统变量的创建和绑定 适用范围: 全系列 协议开启、变量相关说明,参考链接:《Modbus 基本参数说明》 2.1 线圈 【线圈】画面是对MODBUS协议中“线圈”变量的状态显示和控制,按钮控件直接绑定“线圈”类型的变量。线圈的状态为0或1,对应按钮的弹起(0)、按下(1)。运行后,当该地址的“线圈”值发生变化后,按钮控件状态实时改变。同理,通过点击按钮,可以改变从机中线圈变量类型对应地址的状态 变量配置 添建立“机组状态”变量,变量类型设置为“线圈”,添加子节点“开/关机”、“运行/ 停止”,配置变量地址为0x0000,详细设置说明参考Modbus 基本参数说明,如下所示 画面配置 画面中添加一个按钮控件(控件ID:1),在按钮控件的属性栏,设置关联变量“机组状态/开/关机”,按钮的操作风格为开关,如下所示 运行预览 通过以上两步,控件ID为1的按钮控件与变量“机组状态/开/关机”建立起了关联。此时,编译工程并运行虚拟串口屏,和MODBUS Slave软件建立连接。按钮控件显示“机组状态/开/关机”的状态。同时点击按钮控件,更改变量“机组状态/ 开/关机”的状态。同理,控件ID为2的按钮控件通过以上方法,与变量关联后,实现相应的状态显示和控制功能。如下所示 2.2 离散输入 【离散输入】画面是对MODBUS协议中“离散输入”变量的状态显示,图标控件直接绑定“离散输入”类型的变量。图标控件将显示变量的状态,当该地址 “离散输入”值发生变化后,图标控件对应发生变化 变量配置 添加变量:建立“机组故障”变量,添加子节点“压缩机低压”,变量类型设置为“离散输入”,配置变量地址为0x0000,详细设置说明参考Modbus 基本参数说明,如下所示 画面配置 画面中添加一个图标控件(控件ID:1),在图标控件的属性栏,设置关联变量“机组故障/压缩机低压”,同理ID2~4的图标控件绑定对应的变量。制作参考《组态控件教程-图标控件》,如下所示 运行预览 通过以上两步,控件ID为1的图标控件与变量“机组故障/压缩机低压”建立起了关联。此时,编译工程并运行虚拟屏串口屏,和MODBUS Slave软件建立连接。图标控件显示变量“机组故障/压缩机低压”的状态。同理,控件ID为2、3、4的图标控件通过以上方法,分别与不同的变量关联后,便可显示相应地址变量的状态,如下所示 2.3 保持寄存器 【保持寄存器】画面是对MODBUS协议中“保持寄存器”变量的数值直接显示,文本控件直接绑定“保持寄存器”类型的变量。文本控件将显示变量的值,当该地址的“保持寄存器”值发生变化后,文本控件对应发生变化 变量配置 添加变量:创建“设定温度”变量,变量类型设置为“保持寄存器”,配置变量地址为0x0000,如该变量表示温度,从机传输值为225℃,实际温度为22.50℃,则实际值和传输值缩放比例为0.1,偏移值为0。则:设置“数值转换”为“是”,“缩放”为 “0 .1”,平移为“0”,详细设置说明参考Modbus 基本参数说明,如下所示 画面配置 画面中添加一个文本控件(控件ID:1),如图4‑14所示,在文本控件的属性栏,设置关联变量“设定温度”,输入方式为“弹出系统键盘输入(用户主机可输入)”模式,如下所示 运行预览 通过以上两步,控件ID为1的文本控件与变量“设定温度”便建立起了关联。此时,编译工程并运行虚拟串口屏,和MODBUS Slave软件建立连接,文本控件便显示变量“设定温度”的数值,点击文本控件,弹出键盘,可对变量“设定温度”设置值。同理控件ID为2、3、4的文本控件通过以上方法分别与不同的变量关联后,实现相应的数值显示和控制功能,运行效果如下所示 2.4 输入寄存器 【输入寄存器】画面是对MODBUS协议中“输入寄存器”变量数值的直接显示,文本控件直接绑定“输入寄存器”类型的变量,文本控件将显示变量的值,当该地址的“输入寄存器”值发生变化后,文本控件对应发生变化 变量配置 创建“温度”变量,变量类型设置为“输入寄存器”,配置变量地址为0x0000,如下所示 画面配置 画面中添加一个文本控件(控件ID:1),在文本控件的属性栏,设置关联变量“温度”,如下所示 运行预览 通过以上两步,控件ID为1的文本控件与0x0000地址的“温度”便建立起了关联。此时,编译工程并运行虚拟串口屏,和MODBUS Slave软件建立连接,文本控件便显示 0x0000 地址的保持寄存器的数值。同理,控件ID为2、3、4的文本控件通过以上方法分别与不同的变量关联后,便可显示相应地址的变量值,如下所示 2.5 系统变量 【系统变量】系统变量是系统中预先定义的变量,方便在直接访问,屏幕中预定义的变量,包括波特率(可读)、背光亮度(可读写)、蜂鸣器开关(1使能蜂鸣器,0不使能,可读写)、通讯故障(0为正常,非0故障,可读)、当前画面ID(可读写)、运行时间(单位:分钟,可读)、日期(可读)等 变量配置 添加变量:创建“背光亮度”变量,变量类型设置为“系统变量”,系统变量参数为“背光亮度”,详细设置说明参考Modbus 基本参数说明,如下所示 画面配置 画面中添加进度条控件(控件ID:2)、滑动条控件(控件ID:3)。进度条控件属性栏,设置滑动通知为“关联滑动条”;滑动条控件属性栏,设置关联变量为“背光亮度”。滑块控件和进度条控件的具体应用参考 组态控件教程 - 滑块控件 教程,如下所示 运行预览 通过以上两步,控件ID为2的滑动条控件与内存变量“背光亮度”建立起了关联;此时,编译工程并运行虚拟串口屏,滑动“滑动条控件”的游标可控制屏幕的背光亮度。同理,其他控件ID绑定对应的文本控件或按钮控件,通过以上方法分别与不同的变量关联后,便可显示或控制系统变量的变量值,如下所示 --- ### 58. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus协议的应用,本章节主要从以下几部分说明 开启协议 配置主从机 创建变量 变量地址和值的关系 1.1 开启协议 Modbus 协议的配置界面在VisualTFT 上位机的菜单栏【工具】→【协议与变量设置…】,点击左侧文件路径,在右侧的协议设置栏,设置协议类型,如选择Modbus主机,启用协议,如下所示 modbus协议开启后,在组态界面上,控件才能显示【关联变量】 1.2 配置主从机 主机模式 Modbus主机的配置,参数如下所示 启用协议:需要启用协议,才支持Modbus协议 协议类型:选择Modbus主机 轮询周期:无效参数,不用设置 轮询延时:屏作主机时,发送请求指令,到屏幕应答后,等待发送下一条请求指令的时间 应答超时:屏作主机时,允许从机的最大延时,默认100毫秒 连续读取:设置连续地址变量的最大读取数 优化读取:开启优化读取后,只读取与当前画面相关的变量 存储设置 :开启存储后,Flash地址0~2048,约2K为Modbus变量存储所有,其他存储应规避此地址!!!不存储:不存储,断电重启后变量恢复默认值全部存储:不推荐,因为频繁存储会导致FLASH坏块增加存储指定变量:推荐使用,一般用来存储很少更改的系统配置参数 存储标记:识别存储在屏幕中的数据版本标记, 当存储数据格式发生改动时,一般需要手动修改此存储标记值 从机模式 启用协议:需要启用协议,才支持Modbus协议 协议类型:选择Modbus从机 从机地址:默认为1 存储设置 :开启存储后,Flash地址0~2048,约2K为Modbus变量存储所私有,其他存储应规避此地址!!!不存储:不存储,断电重启后变量恢复默认值全部存储:不推荐,因为频繁存储会导致FLASH坏块增加存储指定变量:推荐使用,一般用来存储很少更改的系统配置参数 存储标记:识别存储在屏幕中的数据版本标记,当存储数据格式发生改动时,一般需要手动修改此存储标记值 1.3 创建变量 点击【变量定义】,在点击【添加】,即可添加一个变量,如下所示 变量定义 详细变量解析如下,如下所示 名称:默认的变量名称为“Varialbe1、Varialbe2、Varialbe3……”,可以定义有意义的名称,如:机组状态;如果需要对变量分bit含义,默认的名称为“Field1、Field2、Field3……”, 可以定义有意义的名称,如:开/关机、运行/停止 格式:支持短整形、长整型、单精度浮点数、字符串 符号:可设置无符号、有符号 读写设置:设置变量的读写权限,支持可读写、只读取、只写入 默认值:默认显示值 数值转换:对变量进行转换,例如:实际值=原始值*缩放+平移 显示格式:设置整数和小数部分的位数 数组类型:开启数组类型,从该变量的地址开始,操作连续N个寄存器 是否储存:当在配置Modbus主/从协议时开启存储设置,此处若选择存储,可掉电保存数据 参数 详细参数设置解析如下所示 变量类型:线圈、离散输入、保持寄存器、输入寄存器、内存变量、系统变量 从机地址:屏作主机时,才需要设置 变量地址:变量(或寄存器)的地址,16进制填写 初始化从机:屏作主机时,屏上电后,把变量的值写入从机设备 读取失败归零:屏作主机时,当变量读取失败时,变量的值归零 1.4 变量地址和值的关系 线圈/离散数据 创建一个线圈或离散输入寄存器,变量格式为短整型,则里面含有16个线圈(从上到下,依次为bit0….bit15),假设该变量地址为0x0000,那么变量包含0x0000~0x000F地址范围内的变量,一个bit对应一个线圈,如下所示 字符串类型 创建一个保存寄存器,变量格式为字符串类型(默认32个字符),假设该变量的地址为0x0000,那么此字符串对应包含0x0000~0x000F地址范围内的变量,一个地址对应两个字符 假设0x0000地址的保存寄存器,值为‘abcdefghij’,如下所示 数组 创建一个输入寄存器,且为数组类型(默认数组大小为10,下标从0开始),假设该变量的地址为0x0000,那么此变量表示从0x0000开始的连续10个变量,数组下标对应一个变量 假设创建一个输入寄存器为Voltage的变量,数组类型,大小为10,则对应关系如下所示 --- ═══════════════════════════════════════════ ## Modbus 协议标准 ═══════════════════════════════════════════ ### 59. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数据记录控件是大彩串口屏里专门用来做告警 / 事件记录的工具。在 Modbus 工程里,它把从机(PLC、变频器、温控模块)上来的报警状态按时间排好显示在屏上。本教程走一遍从协议配置、变量建立到画面联调的完整流程,并重点把两种最常见的事件记录用法分开讲清楚,避免配错导致屏上不显示、记不下来。文档整理自广州大彩光电科技有限公司《MODBUS 教程_数据记录控件 V1.0》,版权归大彩。 1 适用范围与开发环境 该文档适用于大彩所有支持 Modbus 协议的串口屏产品:基本型、经济型、商业型、F 型、物联型、86 盒、485 系列。NANO 系列除外(NANO 仅支持大彩组态协议,不支持 Modbus)。 搭建工程前先确认版本够用,版本不够会在编译或运行期出诡异问题,调半天发现是固件旧了: 软件 / 固件最低版本要求查看方式 VisualTFT 上位机V3.0.0.1037 及以上启动页右上角 / 软件右下角 基本型 / 经济型 / 商业型 固件MB 2.22.912.259 及以上屏背面贴纸,或文本控件绑「系统变量→固件版本号」 物联型固件V3.0.301.0 及以上同上 F 型固件V4.1.66.0 及以上同上 本例程硬件验证平台为大彩基本型 7 寸屏 DC80480B070,其它尺寸串口屏照此教程即可。上位机用大彩自研的 VisualTFT,官网 http://www.gz-dc.com 下载。 2 串口屏 Modbus 协议基础 大彩除 NANO 外的所有系列串口屏,都同时支持两种协议版本:大彩组态协议、Modbus RTU 协议。屏的串口物理规格固定为:1 起始位 / 8 数据位 / 无校验 / 1 停止位(8N1)。波特率范围:RS232 支持 1200~921600bps(典型 115200),RS485 支持 1200~115200bps(典型 9600)。 开发 Modbus 工程时,你在 VisualTFT 里配好的变量和协议,编译后会固化进工程包下到屏里。屏作主机时,按你设的轮询周期周期性地往从机发读指令,收到从机应答后解析,刷新绑定的控件或触发预设动作;屏作从机时则响应外部主站的轮询。 3 Modbus 协议与变量配置(前置条件) 打开 VisualTFT 菜单【工具】→【协议与变量设置】,左侧选文件路径,右侧协议设置栏设协议类型。数据记录控件本身不绑定具体寄存器读取,它显示的是「变量」的状态变化,而变量是从 Modbus 寄存器映射上来的——所以协议和变量必须先配好。 3.1 屏作主机 / 从机配置项 配置项默认值说明 启用协议—必须勾上才支持 Modbus 协议类型—选「Modbus 主机」或「Modbus 从机」;本例程即主机模式 从机地址1仅从机模式需要,主机模式下从机地址在变量里单独填 轮询周期1 秒周期性读变量的间隔 轮询延时100 毫秒相邻两条读命令之间的间隔 应答超时100 毫秒允许从机的最大响应延时 连续读取—连续地址变量一次性最大读取数 优化读取—开启后只读本画面相关的变量,省串口带宽 存储设置—不存储 / 全部存储 / 存储指定变量(推荐后者,存很少改的系统参数) 存储标记—数据格式改了手动改这个值,防止读到旧版本存储 存储设置里「全部存储」不推荐——频繁写 Flash 会加速坏块。要掉电保存的,用「存储指定变量」勾选特定变量即可。屏作从机时配置项少一些:启用协议、协议类型选「Modbus 从机」、从机地址(默认 1)、存储设置、存储标记。 3.2 建立变量添加变量节点后在属性窗口设置。几个关键属性: 属性说明 名称默认 Variable1/2/3…,建议改成有意义的,如「机组状态」;分段变量默认 Field1/2/3…,可改「开/关机」 格式 / 符号短整型、长整型、单精度浮点、字符串;可设无符号 / 有符号 读写设置可读写 / 只读取 / 只写入 默认值默认显示值 数值转换实际值 = 原始值 × 缩放 + 平移,比如 0.1 倍率把寄存器整数转成带小数工程量 显示格式设置整数和小数部分的位数 数组类型开启后从该地址连续操作 N 个寄存器 是否储存协议开启存储设置后,此处勾选可掉电保存 变量参数里:变量类型支持线圈、离散输入、保持寄存器、输入寄存器、内存变量、系统变量;屏作主机时才需要填从机地址和变量地址(16 进制填写);「初始化从机」是上电后把变量值写回从机;「读取失败归零」是读不到时变量归零(报警场合慎用,可能误显)。 4 数据记录控件的两种用法(先读这段,再配) 数据记录控件记录的是「变量状态变化产生的事件」。要让某条告警显示出来,要做两件事: 告警解析:建立「事件 ID → 文本 / 颜色」的对照表。屏上显示什么字、什么颜色,由这里决定。 事件记录[触发]:决定「什么时候记一条」。只有触发条件满足,才会按告警解析里的文本生成一条带时间戳的记录。 事件 ID 怎么填、触发条件怎么写,取决于你的从机返回的是什么数据。实务里有两种用法,配法完全不同,下面分层讲。 4.1 用法一:bit 位映射(寄存器返回位图,需要拆子节点) 适用场景:从机在一个寄存器里用不同 bit 表示不同告警,返回的是「位图」。例如建一个离散输入变量「机组故障」(占 1 个 16 位寄存器),bit0=压缩机低压、bit1=风机故障、bit2=烟感报警、bit3=过滤网堵塞。 必须建子节点:因为这种用法要把每一位单独拆出来当成一个变量,否则控件分不清是哪一位。在变量下添加子节点(分段变量),把 bit0~bit3 分别命名: 子节点(分段变量)对应 bit含义 Field1bit0压缩机低压 Field2bit1风机故障 Field3bit2烟感报警 Field4bit3过滤网堵塞 告警解析:事件 ID 填子节点序号 0/1/2/3(对应 bit0~bit3),并设好描述和颜色。 事件记录[触发]:事件参数选变量、事件 ID 选对应子节点(0/1/2/3),执行条件写「该子节点 == 1」。例如:事件参数=变量 / 事件 ID=0 / 执行条件=等于 / 变量=机组故障/压缩机低压 / 数值=1。⚠ 注意:bit 用法里事件 ID 是子节点序号(从 0 开始),不是寄存器返回的 0001/0002。底层对应寄存器值 0x0001/0x0002/0x0004/0x0008。一个 16 位寄存器最多 bit0~bit15 共 16 个事件。事件关联发生在屏侧:控件拿寄存器值按 bit 匹配子节点,再去告警解析取文本。4.2 用法二:值映射(寄存器直读事件编号,不拆子节点) 适用场景:从机直接返回一个「事件编号」值,例如读到 0x0001 表示事件一、0x0002 表示事件二、0x0003 表示事件三……寄存器里放的就是编号本身,不需要拆 bit、不需要建子节点。 不建子节点:这种用法下,变量就一个,读回来的值就是事件编号,别去拆位。 告警解析:事件 ID 填从机返回的那个编号值(如 1、2、3,或对应的十六进制 0001、0002、0003,按你寄存器实际返回填),并设好描述和颜色。 事件记录[触发]配置(严格按下面 5 步): 事件参数:选择「变量」 事件 ID:选择上面设定的那个寄存器变量(就是读编号的那个变量本身) 执行条件:选择「等于」 变量:还是选这个寄存器(和步骤 2 同一个) 数值:填写从机返回的值(如 1 / 2 / 3,或 0001 / 0002 / 0003,与告警解析里的事件 ID 一致) ⚠ 注意:值映射用法不设子节点、不写「某位 == 1」。条件是「寄存器值 == 某个编号」,命中后屏直接按告警解析里那个编号对应的文本显示 / 记录时间。告警解析里的事件 ID 和此处「数值」必须完全一致,否则读过来的数对不上文本,屏上就不显示、也不计时。4.3 两种用法怎么选 对比项用法一 bit 位映射用法二 值映射 从机返回位图(每位一个告警)事件编号值(0001/0002/0003…) 是否建子节点需要(拆 bit)不需要 事件 ID 填什么子节点序号 0/1/2/3寄存器返回的编号值 执行条件某子节点 == 1寄存器 == 某个编号 常见场景一个故障字含多个开关量从机主动上报事件流水号 5 教程实现(以 bit 用法完整演示,值映射见 4.2) 数据记录控件支持三种记录类型:当前告警、历史告警、历史告警与解除(比「历史告警」多了每条告警的解除时间)。本例程对前两种做示范,整体分三步:准备素材 → 功能实现 → 下载工程。下面以 4.1 的 bit 用法走完整流程(有图);若你的工程是 4.2 值映射,把「事件记录[触发]」按 4.2 的 5 步改即可,其它一致。 5.1 准备工程素材 硬件用 DC80480B070 基本型 7 寸屏;软件用 VisualTFT;UI 用准备好的美工图。工程结构采用首页导航 + 分画面:首页放两个按钮切到【当前告警】和【历史告警】画面,每个子画面有返回首页按钮。另外配【当前告警说明】和【历史告警说明】两个纯说明画面。 5.2 新建工程打开菜单【文件】→【新建工程】,弹出新建工程窗口,设置好工程名称、路径、设备类型,点击【确定】。 5.3 配置 Modbus 主机进入【工具】→【协议与变量设置】,协议类型设「Modbus 主机」,参数按 3.1 节。轮询周期 1 秒、轮询延时 100ms、应答超时 100ms 是默认,一般不用动。 5.4 画面与控件配置首页放两个按钮(控件 ID:1),触控类型「切换画面」,目标画面分别指【当前告警】和【历史告警】。按钮属性里把触控类型设为「切换画面」、目标画面选【当前告警】,另一个同理。 5.5 当前告警画面 从机产生报警时,数据记录控件显示当前的告警和触发时间;报警解除后控件不再显示该条。配置步骤: 画面加一个数据记录控件(控件 ID:1),把「记录类型」设为当前告警; 在「告警解析」里设置各事件 ID 的数值、显示颜色、描述; 针对每个事件 ID,加一条用途为「事件记录[触发]」的逻辑处理,执行条件设成该位 == 1(bit 用法)或该寄存器值 == 编号(值映射,见 4.2)。 「告警解析」对话框三列:事件 ID(数值)、前景颜色、描述。本例用 bit 用法,建离散输入变量「机组故障」取前 4 位,事件 ID 填子节点序号 0=压缩机低压、1=风机故障、2=烟感报警、3=过滤网堵塞(当前告警里颜色按严重度区分,例如压缩机低压红、风机/烟感绿、滤网蓝)。每个事件 ID 对应一条「事件记录[触发]」逻辑。bit 用法写法形如:事件记录[触发] / 控件(1,1) / 事件(0) / 条件(机组故障/压缩机低压 == 1),即该位为 1 时触发一条告警记录。四个事件分别为事件0(压缩机低压)、事件1(风机故障)、事件2(烟感报警)、事件3(过滤网堵塞)——事件 ID 必须和「告警解析」里填的数值一一对上。 若你用的是 4.2 值映射,这里就按 4.2 的 5 步来:事件参数=变量 / 事件 ID=那个寄存器 / 执行条件=等于 / 变量=同寄存器 / 数值=返回的编号(如 1)。 5.6 历史告警画面 历史告警与当前告警配置几乎一样,唯一区别是记录类型选历史告警。不同点:报警解除后,历史告警的这条记录仍然留在表格里;如果在 Modbus 协议里开了存储设置,还能掉电保存,重新上电不丢。历史告警的「告警解析」与「事件记录[触发]」逻辑和当前告警完全对称,只是控件指向画面 2,且告警解析里四项颜色统一设为红(255,0,0),强调"已发生即留痕"。事件 ID 同样从 0 起始对应子节点序号(bit 用法),逻辑里同样要写"各位 == 1"的条件;值映射用法见 4.2。 5.7 运行预览本例程屏作主机,用 Modbus Slave 软件模拟从机应答。运行虚拟屏,与 Modbus Slave 联机即可看到效果:当前告警画面列出活动告警(压缩机低压、烟感报警、过滤网堵塞)及其触发时间,右侧 Modbus Slave 显示对应寄存器值与通信日志。具体操作参考大彩《【MODBUS】串口屏_应用文档_V1.0.pdf》。 6 下载工程VisualTFT 编译成功后输出窗口会提示「编译成功」,再下到屏里,两种方式: USB 下载:点菜单【下载到设备】,用 USB 线把配置下进屏; SD 卡下载:菜单【工具】→【量产向导】→ 选「SD 卡下载」,把弹窗里所有文件拷到 SD 卡根目录,插屏后重新上电,烧录完取下 SD 卡。 7 工程实操要点(踩坑提示) 先定用法,再配:从机返回的是位图(bit 用法,要拆子节点)还是事件编号(值映射,不拆子节点)?两种配法完全不同,混着写屏上必然不显示。 bit 用法:事件 ID = 子节点序号 0/1/2/3,对应寄存器值 0x0001/0x0002/0x0004/0x0008。别把"寄存器返回 0001/0002/0003"当编号填进事件 ID——0003 是 bit0+bit1 同置,不是"事件 3"。 值映射用法:不建子节点、不写「某位 == 1」。事件记录[触发]按 4.2 的 5 步:事件参数=变量 → 事件 ID=那个寄存器 → 执行条件=等于 → 变量=同寄存器 → 数值=返回编号。告警解析里的事件 ID 与这里数值必须完全一致。 事件 ID 必须对齐:「告警解析」里填的 ID,和「事件记录[触发]」逻辑里的事件 ID(或数值)是同一个东西,对不上屏上就不显示那条告警。 逻辑必设条件:「事件记录[触发]」不写执行条件会无条件触发,所有事件都被记下来,画面一团乱。 历史告警要掉电保存,记得开存储:只在 Modbus 协议配置里开了「存储设置 = 存储指定变量」,且变量属性里勾了「是否储存」,历史告警断电后才不丢。两处都要设,只设一处不生效。 当前告警 vs 历史告警的语义:当前告警是「活的」——解除即消失;历史告警是「记账」——解除也留痕。选型时想清楚你要的是实时状态还是审计记录。 轮询周期别太狠:从机响应慢或总线设备多时,1 秒轮询 + 100ms 延时要酌情放大,否则会出现读到一半超时、报警跳变。 颜色 ID 有意义:当前告警按严重度用不同前景色(红/绿/蓝),历史告警统一红——别随便填,否则屏上区分不出来。 整理自广州大彩光电科技有限公司《MODBUS 教程_数据记录控件 V1.0》(www.gz-dc.com),版权归大彩所有。如需联机调试细节,参见大彩《【MODBUS】串口屏_应用文档_V1.0.pdf》。 --- ### 60. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus协议就像工业设备之间的“普通话”,让不同厂家生产的仪器仪表能够互相交流。而Modbus RTU和Modbus TCP就是这门普通话的两种不同“口音”,它们各有各的适用场景。 基础认识:两兄弟的“出生背景” 想象一下,Modbus RTU和Modbus TCP是一个家族里的两兄弟: Modbus RTU​ 是家里的“老大哥”,成熟稳重。它主要在串行线路(比如常见的RS-485总线)上工作,连接设备的方式就像老式电话线,一个接一个地串起来 。 Modbus TCP​ 则是“年轻有为”的弟弟,灵活高效。它跑在以太网上,设备都连接到交换机,像现在的局域网一样,管理起来更现代 。 核心区别:五大维度详细对比 1. 传输方式与硬件接口:走的“路”不一样 RTU走的“乡间小路”(串行总线): 它依赖RS-485/RS-232这样的串口,用专门的串口线(通常是两芯屏蔽双绞线)连接设备。网络结构是“手拉手”的总线型,一个主设备(Master)带着多个从设备(Slave) 。就像广播,主机喊话,指定的从机应答。 TCP走的“高速公路”(以太网): 它使用标准的网线(RJ45接口)和交换机,设备都以星型方式连接到网络中心。通信双方是客户端(Client)和服务器(Server)​ 的关系,更像是一对一的电话沟通 。 2. 数据打包方式:“包裹”的封装不同 两者要传递的核心“内容”(也就是功能码和数据)其实是一样的,但打包方式差别很大。 RTU的包裹(数据帧):小巧紧凑 从站地址:1字节,指明数据包发给哪个设备。 功能码:1字节,告诉对方要干什么(比如读数据还是写数据)。 数据域:不定长度,是具体的指令或数据内容。 CRC校验码:2字节,用于检查数据在传输过程中是否出错 。RTU发送的是直接的二进制数据 。 TCP的包裹(数据帧):加了新包装 MBAP报文头:7字节,相当于一个新的快递信封,里面包含了事务标识符(用于匹配请求和回应)、协议标识、长度和单元标识符等信息 。 功能码+数据域:这部分和RTU协议的核心内容完全一样,被装在了MBAP这个新信封里。 取消了CRC校验:因为TCP协议本身是可靠连接,自带校验和重传机制,所以就不再需要额外的CRC校验了 。 速度与距离:谁是“快男”,谁能“远行” 下面的表格直观展示了它们在性能和连接能力上的差异: 特性Modbus RTUModbus TCP传输速度​较慢,受波特率限制(常见9.6k~115.2kbps)快,依托以太网(百兆/千兆级)通信距离​有限,理论上RS-485总线最长约1200米远,理论上可通过网络设备无限扩展节点数量​有限,单网段通常最多32个设备(加中继器可扩展)强大,通过交换机可轻松连接大量节点 可靠性与实时性:谁更“稳”,谁更“及时” 可靠性: RTU​ 依赖CRC校验来检错。但在总线拓扑下,一个节点或线路故障可能影响整个网络 。 TCP​ 依靠TCP协议自身的确认和重传机制来保证数据可靠送达。星型拓扑下,单点故障通常不影响全网 。 实时性: RTU​ 的协议开销小,延迟低且稳定,响应非常及时,适合要求严格的实时控制 。 TCP​ 由于有握手过程、确认机制以及更大的协议开销,延迟相对较高且可能有波动,但对大多数监控场景来说足够快 。 成本与应用场景:怎么选最“划算” 成本: RTU:相关设备(如带串口的PLC、传感器)成本通常较低,布线也相对简单经济 。 TCP:需要以太网基础设施(交换机、带网口的设备),初始投资可能更高 。 典型应用场景: 选择RTU当主角:设备数量不多、分布比较集中、距离不远(例如在一个车间或一台控制柜内),且对实时性要求高、预算有限的场景。比如,小型PLC系统、数控机床周边的传感器集群 。 选择TCP当主角:设备数量多、分布广泛(甚至跨区域),需要远程监控、与上层信息系统(如MES)集成的未来型项目。比如,智能工厂的全厂数据采集、跨区域管网的监控 。 三、实战选择:我该用哪个? 简单来说,可以遵循这个原则: 追求省钱、稳定、实时控制,设备都挨得近? → Modbus RTU​ 是你的好选择。 追求速度快、易扩展、远程管理,设备分散甚至要上网? → Modbus TCP​ 更具优势。 --- ### 61. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus协议之所以能成为工业领域的“普通话”,秘诀在于它用了一种非常直观的方式来管理数据——把不同性质的数据分门别类地放在四个“抽屉”里。无论设备来自哪个品牌,只要遵循这个规则,它们就能顺畅交流。 核心思想:两个维度划分四个区域 理解Modbus存储区的分类,就像整理衣柜,你只需要从两个角度来思考: 数据类型:数据是简单的“开关”,还是一个具体的“数字”? 开关量(线圈):只有两种状态,非黑即白。例如,灯是亮还是灭,阀门是开还是关。这种数据在Modbus里称为“线圈”(Coil)。 模拟量(寄存器):是一个连续变化的数值。例如,温度25.6℃,压力0.8MPa,转速1500转。这种数据在Modbus里称为“寄存器”(Register)。 操作权限:这个数据是只能“看”,还是也能“改”? 只读:你只能读取它的状态,但不能修改。好比电表上的读数,你只能看用了多少度电。 读写:你既能查看它的状态,也能修改它。好比手机的音量键,你可以看当前音量,也能调大调小。 把这两个维度组合起来,就得到了Modbus的四个核心存储区,可以用下面的表格快速掌握: 存储区名称(俗称)数据类型读写权限可以把它想象成…典型应用场景线圈寄存器(0区)​开关量读写电灯开关​控制继电器、电机启停、指示灯离散输入寄存器(1区)​开关量只读门磁传感器​读取按钮状态、限位开关、故障信号输入寄存器(3区)​模拟量只读温度计​采集温度、压力、流量等传感器数据保持寄存器(4区)​模拟量读写可设置的恒温器​设定目标速度、温度,修改设备参数 四个“数据抽屉”的详细用法 1. 线圈寄存器(0区):指挥行动的“开关” 这是你用来发号施令的抽屉。主站(如PLC或电脑)通过向这个区域写入数据,直接控制现场设备的开关。 如何使用:你想启动一台电机,就向控制它的那个线圈地址写入“1”(ON);想停止,就写入“0”(OFF)。 好比:你在家里通过手机APP远程控制智能插座的开关。 2. 离散输入寄存器(1区):感知状态的“眼睛” 这个抽屉是设备的感觉器官,专门用来反映外部的开关状态变化。 如何使用:你只能读取它。比如,你想知道一个急停按钮是否被按下,就去读取对应的离散输入地址,如果值是“1”,就表示按钮被按下了。 特点:因为是只读的,可以确保这些关键状态信号不会被意外修改,非常安全。 3. 输入寄存器(3区):汇报数据的“仪表” 这个抽屉里放着从现场采集来的实时数据,通常是只读的模拟量。 如何使用:主站定期(比如每秒一次)读取这个区域,以监控生产过程。例如,不断读取温度传感器在输入寄存器中的地址,来获取实时温度值。 好比:仪表盘上显示的车速和油量,你只能看,不能直接通过仪表盘去改变车速。 4. 保持寄存器(4区):存储设定的“大脑” 这是设备的配置中心和大脑,用于存放重要的设备参数和设定点。它允许读写,是功能最丰富的区域。 如何使用:你可以在保持寄存器中设定一个变频器的目标运行频率(如40Hz),或者一个温控器的目标温度(如80℃)。既可以读取当前设定值,也可以修改它们。 进阶用法:一个保持寄存器只有16位,无法直接表示浮点数等复杂数据。这时,需要将多个连续的寄存器组合起来。例如,一个32位的单精度浮点数通常需要占用两个连续的保持寄存器。 关键概念:地址那点事 很多新手会混淆“绝对地址”和“相对地址”,其实很简单: 绝对地址(给人看的):为了让我们工程师看着直观,容易配置。常用的是短地址模型,比如 40001。它表示第4个存储区(保持寄存器)的第1个数据点。 40001和 400001是同一个地址,只是表示方法不同。40001是简化版,400001是完整版(长地址模型),能覆盖最多65536个地址,但绝大多数设备用不到这么多,所以简化的 40001更常见。 相对地址(给机器用的):在实际的Modbus通信报文中,为了节省空间和提高效率,使用的是从0开始的偏移地址。例如,绝对地址 40001在报文中对应的相对地址就是 0,40002对应 1。 简单记:你在设备手册或软件配置里看到的(如40001)是绝对地址;而协议底层传输时,会自动将其转换为相对地址。编程时留意软件要求哪种地址即可。 总结 Modbus通过这四个“数据抽屉”,为工业设备建立了一套清晰易懂的数据管理规则: 想控制开关(如启动设备)→ 读写 0区(线圈) 想查看状态(如故障信号)→ 读取 1区(离散输入) 想采集数据(如监测温度)→ 读取 3区(输入寄存器) 想设置参数(如修改设定值)→ 读写 4区(保持寄存器) --- ### 62. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 选 Modbus RTU 还是 TCP,就跟你给乐队选指挥一样,得看乐队规模和你想怎么演。咱不看复杂参数,就说人话,聊聊实际用起来啥感觉。简单来说,它俩根本就不是一种“说话”方式。 RTU:像个“主子-奴才”的老式衙门。 怎么工作:系统里必须有一个“主子”(比如主PLC),其他设备全是“奴才”(比如机器人)。主子问一个,奴才答一个。主子不问,奴才绝不能主动开口。多一个主子都不行,会乱套。 用什么线:一般用那种两芯的屏蔽双绞线(RS-485),能“手拉手”连一串设备(最多三十来个),距离能拉一千多米,抗干扰也不错,适合设备都集中在车间里的情况。 麻烦在哪:配置起来有点烦。主子(PLC)和所有奴才(机器人)的“说话速度”(波特率)、“口音”(校验位)必须对得一模一样,一个参数设错,整个对话就全垮了。 快不快:它的最快“语速”(比如115200波特率),换算成你熟悉的下载速度,大概每秒14KB多。传点开关、温度数据够用,但想实时同步一大堆复杂指令,就有点吃力了。 TCP:像个“局域网兄弟”的微信群。 怎么工作:所有设备(机器人、电脑、PLC)插上交换机,就像连进了同一个微信群,大家都有了IP地址。只要在一个网段,都是“兄弟”,谁有事都能在群里@别人,比较灵活。 用什么线:就用普通网线(RJ45口),插上就行。 方便在哪:配置极简!不用对什么“语速”“口音”,只需要给每个设备设个不同的IP地址(比如192.168.1.2, 192.168.1.3…)就能通话,几乎“即插即用”。 快不快:速度是碾压级的。用着百兆千兆的局域网通道,传数据嗖嗖的,能让多台机器响应更同步,避免“你让我弹下一个键,我还在弹上一个”的尴尬。 那到底哪个好用?看你的“乐队”需要啥。在以下情况,用 Modbus RTU (“主子-奴才”模式)更省心: 设备又老又省:很多老PLC、老仪表只有串口,没网口,用RTU是唯一或最经济的选择。 场景小又集中:你的几个机器手都在一个柜子里或一个小车间,距离近,点数也不多。 环境比较吵:车间里变频器、大电机多,电磁干扰大。RS-485线抗干扰能力经久耐用,比较稳。 追求绝对稳定:主子挨个点名,响应时间非常固定,适合对时序要求死严的控制。 在以下情况,用 Modbus TCP (“局域网兄弟”模式)会更香: 设备多又分散:设备遍布车间,甚至跨楼层,用网线和交换机组建网络,比拉一条长长的“手拉手”总线方便、可靠得多。 想要传得快又多:需要实时同步大量数据,或者未来可能上视觉系统、传复杂参数,网口的大带宽是绝对优势。 怕麻烦想省事:完全无法忍受给每个设备对齐波特率、校验位的繁琐调试,只想设个IP了事。 想着以后扩展:未来随时可能加台电脑监控,或接入工厂管理系统,网口接入毫无障碍。 一个绝佳的折中方案如果手里一堆只支持RTU的老设备,但又想享受TCP的方便和速度怎么办?可以加个协议转换器(也叫串口服务器)。把老设备用485线连到这个盒子上,盒子再插上网线。这样,在电脑或PLC看来,整个一串老设备就变成了一个带IP地址的新设备,可以直接用TCP来管理。这法子能救活很多旧设备,非常实用。 最后一句大实话:要省钱、要稳、设备老又集中,选RTU。 要方便、要快、要扩展、面向未来,选TCP。 结合你的机器人乐队项目,如果就几台机器手,动作简单,对同步精度要求不是变态高,RTU够用还省钱。但如果想让乐队未来能演更复杂的曲子,加更多“乐手”,还能方便地调音排练,那直接上TCP,长远看肯定更香。 --- ### 63. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业控制和自动化领域,Modbus通讯协议是一种被广泛采用的通讯标准,它使得设备之间的数据交换和控制变得高效而可靠。在Modbus通讯中,批量读取寄存器是一项基础而重要的操作。然而,一次能够读取的最大寄存器数量,并非一成不变,而是受到多种因素的影响。本文旨在探讨Modbus批量读取寄存器的最大数量及其影响因素。 Modbus通讯协议的变种 Modbus协议主要有三种变种:Modbus RTU、Modbus ASCII和Modbus TCP。这些变种在一次性读取寄存器的最大数量上存在差异。 Modbus RTU和ASCII 在Modbus RTU和Modbus ASCII这两种变种中,一次读取的最大寄存器数量通常限制在125个。这一限制主要由于这两种协议的数据帧格式所决定。数据帧包括起始位、数据位、校验位和停止位,这些非数据内容占据了一定的空间,从而限制了单次可以传输的数据量。 备注:网上有不同的说法,也有说123或者124个,这取决于设备的性能和厂家的限制! Modbus TCP 与RTU和ASCII不同,Modbus TCP基于TCP/IP协议,理论上可以不受限制地一次性读取更多的寄存器。然而,实际操作中,它仍然受限于通讯链路的带宽和设备的处理能力。 设备性能的影响 设备的型号和规格也是决定一次性读取寄存器数量的关键因素。现代Modbus设备可能支持更大规模的寄存器读取,而老旧设备可能存在更严格的限制。因此,在系统设计阶段,必须充分考虑设备的兼容性和性能。 通讯链路的稳定性和速度 通讯链路的稳定性和速度同样对批量读取寄存器的数量产生影响。不稳定或带宽有限的通讯链路可能需要减少单次读取的寄存器数量,以保证通讯的可靠性。 结论 综上所述,Modbus批量读取寄存器的最大数量并非固定不变,而是受到协议变种、设备性能和通讯链路条件等多种因素的综合影响。在实际应用中,设计者需要根据具体需求和条件,选择恰当的读取策略,并在通讯过程中注意可能的限制因素,以优化系统性能。 通过对Modbus通讯协议的深入理解和对设备能力的准确评估,可以更有效地设计和部署工业控制系统,实现数据的高效交换和设备的精确控制。这不仅提高了工业自动化的效率,也为系统的稳定运行提供了保障。 --- ### 64. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 引言 范围 这个文件的范围是介绍TCP/IP上的MODBUS报文传输服务,提供参考信息以帮助软件开发者使用这种服务。这个文中不包括MODBUS功能码的编码内容,这些信息请参阅MODBUS协议规范[2]。 这个文件准确而全面地描述了MODBUS报文传输服务的实现。其目的是便于在那些使用MODBUS报文传输服务的设备之间进行可互操作。 这个文件主要由三部分组成: 在TCP/IP上的MODBUS协议概述 MODBUS客户机、服务器和网关工具的功能描述 针对一个MODBUS实现实例的目标模型建议的实现准则。 客户机/服务器模型 MODBUS报文传输服务提供设备之间的客户机/服务器通信,这些设备联接在一个Ethernet(以太网) TCP/IP网络上。 这个客户机/服务器模式是基于4种类型报文: MODBUS 请求 MODBUS 证实 MODBUS 指示 MODBUS 响应 MODBUS请求是客户机在网络上发送用来启动事务处理的报文 MODBUS指示是服务端接收的请求报文 MODBUS响应是服务器发送的响应信息 MODBUS证实是在客户端接收的响应信息 MODBUS报文传输服务(客户机/服务器模型)用于实时信息交换: 在两个设备应用程序之间 在设备应用和其它设备之间 在HMI/SCADA应用程序和设备之间 在一个PC和一个提供在线服务的设备程序之间 规范性引用文件 这章给出了在这个文件之前喜欢阅读的文件列表: [2] MODBUS协议规范 [4] RFC1122 缩略语 ADU -- 应用数据单元 IETF -- 因特网工程工作组 IP -- 互连网协议 MAC -- 介质访问控制 MB -- MODBUS MBAP -- MODBUS协议 PDU -- 协议数据单元 PLC -- 可编程序逻辑控制器 TCP -- 传输控制协议 BSD -- 伯克利软件分配 MSL -- 最大段寿命 背景概要 协议描述 总体通信结构 MODBUS TCP/IP的通信系统可以包括不同类型的设备: 连接至TCP/IP网络的MODBUS TCP/IP客户机和服务器设备 互连设备,例如:在TCP/IP网络和串行链路子网之间互连的网桥、路由器或网关,联接,该子网允许将MODBUS串行链路客户机和服务器终端设备连接起来。 图1:MODBUS TCP/IP通信结构 MODBUS协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS协议映射能够在应用数据单元(ADU)上引入一些附加域。 图2:通用MODBUS帧 启动MODBUS事务处理的客户机建立MODBUS应用数据单元。这个功能码向服务器指示执行执行哪种操作。 TCP/IP上的MODBUS应用数据单元 这节描述了MODBUS TCP/IP网络中进行的MODBUS请求或响应的封装。 图3:TCP/IP上的MODBUS的请求/响应 在TCP/IP上使用一种专用报文头识别MODBUS应用数据单元。将这种报文头称为MBAP报文头(MODBUS协议报文头)。 这种报文头提供一些与串行链路上使用的MODBUS RTU应用数据单元比较的差别: 用MBAP报文头中的单个字节单元标识符取代MODBUS串行链路上通常使用的MODBUS从地址域。这个单元标识符用于设备的通信,这些设备使用单个IP地址支持多个独立MODBUS终端单元,例如:网桥、路由器和网关。 用接收者可以验证完成报文的方式设计所有MODBUS请求和响应。对于MODBUS PDU有固定长度的功能码来说,仅功能码就足够了。对于在请求或响应中携带一个可变数据的功能码来说,数据域包括字节数。 当在TCP上携带MODBUS时,即使将报文分成多个信息包来传输,办事在MBAP报文头上携带附加长度信息,以便接收者能识别报文边界。显式和隐式长度规则的存在以及CRC-32差错校验码的使用(在以太网上)将对请求或响应报文产生极小的未检出干扰。 MBAP报文头描述 MBAP报文头包括下列域: 域长度描述客户机服务器事务元标识符2个字节MODBUS请求/响应事务处理的识别码客户机启动服务器从接收的请求中重新复制协议标识符2个字节0=MODBUS协议客户机启动服务器从接收的请求中重新复制长度2个字节以下字节的数量客户机启动(请求)服务器(响应)启动单元标识符1个字节串行链路或其它总线上连接的远程从站的识别码客户机启动服务器从接收的请求中重新复制 报文头为7个字节长: 事务处理标识符:用于事务处理配对。在响应中,MODBUS服务器复制请求的事务处理标识符。 协议标识符:用于系统内的多路复用。通过值0识别MODBUS协议。 长度:长度域是下一个域的字节数,包括单元标识符和数据域。 单元标识符:为了系统内路由,使用这个域。专门用于通过以太网TCP-IP网络和MODBUS串行链路之间的网关对MODBUS或MODBUS+串行链路从站的通信。MODBUS客户机在请求中设置这个域,在响应中服务器必须利用相同的值返回这个域。 在注册的502端口上利用TCP发送所有MODBUS/TCP ADU。 注:用Big-endian编码不同域。 MODBUS功能码描述 在MODBUS协议规范[2]中详细说明了MODBUS应用层协议上使用的标准功能码。 功能描述 这里提供的MODBUS组件结构是一个既包含MODBUS客户机又包含MODBUS服务器组件的通用模型,适用于任何设备。 有些设备可能仅提供服务器或客户机组件。 本章的第一部分,给出一个有关MODBUS报文传输服务组件结构的简要概述,然后,给出结构模型内部每一个组件的描述。 MODBUS组件结构模型 图4 MODBUS报文传输服务概念结构 通信应用层 一个MODBUS设备可以提供一个客户机和/或服务器MODBUS接口。 可提供一个MODBUS后台接口,允许间接的访问用户应用对象。 此接口由四部分组成:离散量输入、离散量输出(线圈)、寄存器输入和寄存器输出。此接口与用户应用数据之间的映射必须加以定义(本地问题)。 基本数据表对象类型属性说明离散量输入1位只读此类数据可来自I/O系统线圈1位读-写此类数据可被应用程序修改寄存器输入16位字只读此类数据可来自I/O系统寄存器输出16位字只写此类数据可被应用程序修改 MODBUS客户机 MODBUS客户机允许用户应用清晰地控制与远端设备的信息交换。MODBUS客户机根据用户应用向MODBUS客户接口发送的需求中所包含的参数生成一个MODBUS请求。 MODBUS客户机调用一个MODBUS的事务处理,事务处理管理包括MODBUS证实的等待和处理。 MODBUS客户机接口 MODBUS客户机接口提供一个接口,使得用户应用能够生成对包括访问MODBUS应用对象在内的各类MODBUS服务的请求。尽管在实现模型中以实例说明,但是MODBUS客户机接口(API)在这里不进行描述。 MODBUS服务器 在收到一个MODBUS请求以后,模块激活一个本地操作进行读、写、或完成其他操作。这些操作的处理对应用程序开发人员来说都是透明的。MODBUS服务器的主要功能是等待来自TCP502口的MODBUS请求,处理这一请求,然后生成一个MODBUS应答,应答取决于设备状况(场境)。 MODBUS后台接口 MODBUS后台接口是一个从MODBUS服务器到定义应用对象的用户应用之间的接口。 TCP管理层 报文传输服务的主要功能之一是管理通信的建立和结束,管理建立在TCP连接上的数据流。 连接管理 在客户机和服务器的MODBUS模块之间的通信需要调用TCP连接管理模块。它负责全面管理报文传输TCP连接。 连接管理中存在两种可能:用户应用自身管理TCP连接,或全部由这个模块进行连接管理,而对用户应用透明。后一种方案灵活性较差。 TCP 502口的侦听是为MODBUS通信保留的。在缺省状态下,强制侦听这个口。然而,有些市场或应用可能需要其他口作为TCP上MODBUS的通信之用。当需要与非施奈德(Schneider)产品进行互操作时,就属于这种情况,例如:在建筑控制中。为此,强烈建议:客户机和服务器均应向用户提供对TCP口号上的MODBUS参数进行配置的可能性。重要的是:即使在某一个特定的应用中为MODBUS服务配置了其他TCP服务器口,除一些特定应用口外,TCP服务器502口必须仍然是可用的。 访问控制模块 在某些至关重要的场合,必须禁止不需要的主机对设备内部数据的访问。这既是为什么需要安全模式,也是在需要时实现安全处理的原因。 TCP/IP栈层 TCP/IP的栈可以进行参数配置,以便于使得数据流控制、地址管理和连接管理适应于特定的产品或系统的不同的约束。一般说来,BSD套接字接口就用来管理TCP连接。 资源管理和数据流控制 为了平衡MODBUS客户机与服务器之间进出报文传输的数据流,在MODBUS报文传输栈的所有各层均设置了数据流控制机制。资源管理和数据流控制模块首先是基于TCP内部数据流控制,附加数据链路层的某些数据流控制,以及用户应用层的数据流控制。 TCP连接管理 连接管理模块 总体描述 MODBUS通信需要建立客户机与服务器之间的TCP连接。 连接的建立可以由用户应用模块直接实现,也可以由TCP连接管理模块自动完成。 在第一种情况下,用户应用模块必须提供应用程序接口,以便完全管理连接。这种方式为应用开发人员提供了灵活性,但需要TCP/IP机制方面的专长。 在第二种方案中,TCP连接管理完全不出现,用户应用仅需要发送和接受MODBUS报文。TCP连接管理模块负责在需要时建立新的TCP连接。 TCP客户机和服务器连接数量的定义不属于本文件的范畴(在本文中采用n)。根据设备能力,TCP连接的数量会不同。 实现规则: 如果没有明确的用户需求,建议采用自动的TCP连接管理 建议:打开并保持与远端设备的连接,而不要在每次MODBUS/TCP事务处理时打开和关闭连接。注:然而,MODBUS客户必须能够接收来自服务器的关闭请求,并关闭连接。当需要时,连接可以被重新打开。 建议:每一个MODBUS客户至少要打开与远端MODBUS服务器的TCP连接(同一IP地址)。一个应用建立一个连接是好的选择。 几个MODBUS事务处理可以在同一个TCP连接上被同时激活注:如果以此方式,MODBUS事务处理标识必须被用来唯一地识别请求与响应的匹配。 在两个远端MODBUS设备(一个客户机和一个服务器)之间双向通信的情况下,有必要为客户机数据流和服务器数据流分别建立连接。 一个TCP帧只能传送一个MODBUS ADU。建议:不要在同一个TCP PDU中发送多个请求或应答。 图7:TCP连接管理操作图 1. 显式TCP连接管理 用户应用模块负责管理所有的TCP连接:主动的和被动的连接建立、连接结束………。对客户机与服务器间所有的连接进行这种管理。BSD套接字接口用在用户应用模块中来管理TCP连接。这种方案提供了完全的灵活性,但也意味着应用开发人员要具备充分的有关TCP的知识。 考虑到设备的能力和需求,必须进行配置客户机与服务器间连接数的限制。 2. 自动TCP连接管理 TCP连接管理对用户应用模块是完全透明的。连接管理模块可以接受足够数量的客户机/服务器连接。否则,在超过所授权数量的连接时必须有一种实现机制。在这种情况下,我们建议:关闭最早建立的不使用的连接。 在收到第一个来自远端客户机或本地用户应用的数据包后,就建立了与远端对象的连接。如果一个网络进行终止或本地设备决定终止,此连接将被关闭。在接收连接请求时,访问控制选项可用来禁止未授权客户访问设备的可能性。 TCP连接管理模块采用栈接口(通常BSD套接字接口)来与TCP/IP栈进行通信。 为了保持系统需求与服务器资源之间的兼容,TCP管理将保持两个连接库。 第一个库(优先连接库)由那些从不被本地主动关闭的连接组成。必须提供一个配置来建立这个库。实现的原理是将这个库的每一个可能的连接与一个特定的IP地址联系起来。具有这个IP地址的设备被称为“标记的”。任何一个被“标记的”设备的新的连接请求必须被接收,并从优先连接库中取出。还有必要设置允许每个远端设备最多建立连接的数量,以避免同一设备使用优先连接库中所有的连接。 第二个库(非优先连接库)包括了非标记设备的连接。这里采用的规则是:当有来自非标记设备的新的连接请求,以及库中没有连接可用时,关闭早些时候建立的连接。 一个配置可作为选项提供来分配每个库中可用连接的数量。然而(非强制性的),如果需要,设计人员可在设计期间设定连接的数量。 连接管理描述 连接建立 MODBUS报文传输服务必须在502口上提供一个侦听套接字,允许接收新的连接和与其他设备交换数据。 当报文传输服务需要与远端服务器交换数据时,它必须与远端502口建立一个新的客户连接,以便与远距离交换数据。本地口必须高于1024,并且每个客户连接各不相同。 图8:MODBUS TCP/IP连接建立 如果客户机与服务器的连接数量大于授权的连接数量,则最早建立的无用的连接被关闭。激活访问控制机制检查远端客户机的IP地址是否是经过授权的。如果未经授权,将拒绝新的连接。 MODBUS数据变换 基于已经打开的正确的TCP连接发送MODBUS请求。远端设备的IP地址用于寻找所建的TCP连接。在与同一个远端设备建立多个连接时,必须选择其中一个连接用于发送MODBUS报文,可以采取不同的选择策略,例如:最早的连接、第一个连接。在MODBUS通信的全过程中,连接必须始终保持打开。如同下列各章所描述的一样,一个客户机可以向一个服务器启动多个事务处理,而不必等待前序事物处理结束。 连接关闭 当客户机与服务器间的MODBUS通信结束时,客户机必须关闭用于通信的连接。 操作模式对TCP连接的影响 某些操作模式(两操作端点之间通信断开、一个端点的故障和重新启动、………)会对TCP连接产生影响。一个连接可被视为在这一侧关闭或异常终止而没有另一侧的确认,称这种连接为“半打开”的连接。 本章描述每种主要操作模式的特性。假设在连接的两端采用了“ 保持连接 ”TCP机制。 两操作端之间通信断开 通信断开的原因可以是服务器侧以太网连接电缆断开。预期的特性是: 如果在连接上没有正在发送数据包: 如果通信断开持续的时间短于“保持连接”计时器的值,将察觉不到通信断开。如果通信断开时间超过“保持连接”计时器的值,将一个错误返回到TCP连接层,由其复位连接。 如果在连接断开的前后发送一些数据包: TCP重新传输算法(Jacobson算法、Karn算法以及指数补偿算法)被激活。这可能导致在“保持连接”计时器终止之前TCP栈连接层复位。 服务器端的故障和重新启动 在服务器故障和重新启动以后,客户端处于“半打开”连接状态。预期的特性是: 如果在半打开的连接上没有发送数据包: 只要“保持连接”计时器还在计时中,从客户端看,连接是半打开的。之后,将返回一个错误到TCP管理层,由其复位连接。 如果在半打开的连接上发送一些数据包: 服务器在不存在的连接上接收数据。TCP层的栈发送一个复位指令来关闭客户端的半打开的连接。 客户机端的故障和重新启动 在客户机故障和重新启动以后,服务器侧处于“半打开”连接状态。预期的的状态是: 如果在半打开的连接上没有发送数据包: 只要“保持连接”计时器还在计时中,从服务器端看,这种连接是半打开的。之后,将返回一个错误到TCP管理层,由其复位连接。 如果在“保持连接”计时器完成计时前,客户机打开一个新的连接: 必须分两种情况研究: 所打开的连接与服务器侧半打开的连接具有相同的特性(相同的源和目的口、相同的源和目的IP地址),所以,在连接建立超时后(伯克利实现的多数情况下为75ms),TCP栈层将不能打开连接。为了避免较长超时时间内不能进行通信,建议:在客户机端重新启动后,确保使用与原有连接不同的源口号建立连接。 所打开的连接与服务器侧半打开的连接具有不同的特性(不同的源口和相同的目的口、相同的源和目的IP地址),所以,在TCP栈层上打开连接,并向服务器侧的TCP管理层发送信号。 如果服务器侧TCP管理层仅支持一个远端客户机IP地址的连接,那么可以关闭原来的半打开的连接,使用新的连接。 如果服务器侧TCP管理层支持多个远端客户机IP地址的连接,那么新的连接保持打开状态,原来的连接也保持半打开状态,直到“保持连接”计时器计时结束,此时,将返回一个错误到TCP管理层。之后,TCP管理层将能够复位原有的连接。 访问控制模块 这个模块的目的是检查每一个新的连接,对照一个合法授权的远程IP地址列表,它可以授权或禁止一个远端客户机的TCP连接。 在至关重要的场合,应用开发人员需要选择访问控制模块来保证网络的访问。在这种情况下,需要对每个远端IP授权或禁止访问。用户需提供一个IP地址的列表,并特别注明每个IP地址是否合法授权。在缺省情况下,在安全模式中,用户未配置的IP地址均被禁止。所以,借助于访问控制模式,关闭来自未知的IP地址的访问连接。 TCP/IP栈的使用 TCP/IP栈提供了一个接口,用来管理连接、发送和接收数据,还可以进行参数配置,以使得栈的特性适应于设备或系统的限制。 本章的目的是给出有关栈接口的综述,以及一些与栈的参数配置有关的信息。总揽综述主要是MODBUS报文传输所使用的一些特性。 对于更多的信息,建议阅读RFC 1122,这个RFC 1122为厂商和开发商提供了互联网通信软件的指南。RFC 1122详述了一个连接到互联网的主机必须采用的标准协议,以及一组明确的需求和选项。 栈接口一般是基于本文件中描述的BSD(伯克利软件分配代码)接口。 BSD套接字接口的应用 注:有些TCP/IP栈从性能考虑提出其他类型的接口。MODBUS客户机或服务器可以使用这些特定的接口,但是在本文件中对这种使用不做描述。 一个套接字是一个通信端点,它是通信中的基本构成块。通过套接字发送和接收数据可以执行一个MODBUS通信。TCO/IP库仅提供了使用TCP和提供基于连接的通信服务的流套接字。 socket()函数用来创建套接字。返回的一个套接字号被创建者用来访问套接字。套接字创建时没有地址(IP地址和口号)。直到一个口被绑定到该套接字时,方可接收数据。 bind()函数用来绑定一个口号到套接字。bind()函数在套接字与所指定的口号之间建立一个连接。 为了初始化一个连接,客户端必须发送connect()函数来指定套接字号、远端IP地址和远端侦听口号(主动连接建立)。 为了完成连接,服务器端必须发送accept()函数指定以前在listen()调用中所指定的套接字号(被动连接建立)。一个新的套接字被创建,并具有与最初相同的特性。这个新的套接字连接到客户机的套接字,而将套接字号返回到服务器端。于是,释放初始套接字,以便为其他欲与服务器连接的客户机使用。 在TCP连接建立以后,数据即可被传递。将Send()和recv()函数专门地设计成与已经连接的套接字一道使用。 setsockopt()函数允许套接字的创建者用套接字建立若干选项。这些选项描述了套接字的操作特征。 select()函数允许编程人员测试所有套接字上的事件。 shutdown()函数允许套接字的使用者来终止send()和/或recv()。 一旦不再需要套接字,可以使用close()函数来放弃套接字的描述信息。 图9:MODBUS信息交换 上图给出了客户机与服务器间的完整的MODBUS通信过程。客户机建立一个连接,向服务器发送3个MODBUS请求,而不等待第一个请求的应答到来。在收到所有的应答后,客户机正常地关闭连接。 TCP层参数配置 可以调整TCP/IP栈的一些参数以使得其特性满足产品或系统的限制。TCP层的下列参数可以进行调整: 每个连接的参数 SO-RCVBUF, SO-SNDBUF: 这些参数允许为发送和接收用套接字接口设定高限位。可以通过调整这些参数来实现流量控制管理。接收缓存区的的大小即为每个连接advertised window的最大值。为了提高性能,必须增加套接字缓存区的大小。否则,这些值必须小于内部驱动器的资源,以便在内部驱动器的资源耗尽之前关闭TCP窗口。 接收缓存区大小取决于TCP窗口大小、TCP最大段的大小和接收输入帧所需的时间。由于最大段的尺寸为300个字(一个MODBUS请求需要最大256字+MBAP报文头),如果需要3帧进行缓存,可将套接字缓存区大小调整为900字。为了满足最大的缓存需求和预定的时间,可以增加TCP窗口的大小。 TCP-NODELAY: 通常,小报文(称为:tinygrams)在局域网(LAN)上的传输不会产生问题,因为多数局域网是不拥堵的,但是,这些tinygrams在广域网上将会造成拥堵。一个称为“NAGLE算法”的简单方案是:收集小量的数据,当前面报文的TCP确认到达时再用单个进行发送。 为了获得更好的实时特性,建议:将小量的数据直接发送,而不要试图将其收集到一个段内再发送。这就是为什么建议强制TCP-NODELAY选项,这个选项禁用客户机和服务器连接的“NAGLE算法”。 SO-REUSEADDR: 当MODBUS服务器关闭一个由远端客户启动的TCP连接时,在这个连接处于“时间等待”状态(两个MSL:最大段寿命)的过程中,该连接所用的本地口号不能被再次用来打开一个新的连接。 建议:为每个客户机和服务器连接,指明SO-REUSEADDR选项,以迂回这个限制。此选项允许为自身分配一个口号,它作为连接的一部分在2MSL期间内等待客户机并侦听套接字接口。 SO-KEEPALIVE: TCP/IP协议缺省状态下,不通过空闲的TCP连接发送数据。因此,如果在TCP连接端这个过程没有发送数据,在两个TCP模块间就没有交换任何数据。这就假设客户机端应用和服务器端应用均采用计数器来探测连接的存活性,以便关闭连接。 建议:在客户机与服务器连接两端均采用KEEPALIVE选项,以便查询另一端得知对方是否故障并死机,或故障并重新启动。 然而,我们必须牢记,采用KEEPALIVE可能引起一个非常良好的连接,在瞬间故障时通信中断,如果保持连接计时器计时周期太短,将占用不必要的网络带宽。 整个TCP层的参数 TCP连接建立超时: 多数伯克利推出的系统将新连接建立的时限设定为75秒,这个缺省值应该适应于实时的应用限制。 保持连接参数: 连接的缺省空闲时间是2小时。超过此空闲时间将触发一个保持连接试探过程。第一个保持连接试探后,在最大次数内每隔75秒发送一个试探,直到收到对试探的应答为止。 在一个空闲连接上发出保持连接试探的最大数是8次。如果发出最大试探次数之后而没有收到应答,TCP向应用发出一个错误信号,由应用来决定关闭连接。 超时与重发参数: 如果检测到一个TCP报文丢失,将重发此报文。检测丢失的方法之一是管理重发超时(RTO),如果没有收到来自远端的确认,超时终止。 TCP进行RTO的动态评估。为此,在发送每个非重发的报文后测量往返时间(RTT)。往返时间(RTT)是指报文到达远端设备并从远端设备获得一个确认所用的时间。一个连接的往返时间是动态计算的,然而,如果TCP不能在3秒钟内获得RTT的估计,那么,就设定RTT的缺省值为3秒。 如果已经估算出RTO,它将被用于下一个报文的发送。如果在估算的RTO终止之前没有收到下一个报文的确认,启用指数补偿算法。在一个特定的时间段内,允许相同报文最大次数的重发。之后,如果收不到确认,连接终止。 可以对某些栈设置连接终止之前重发的最大次数和重发的最长时间。 在TCP标准中定义了一些重发算法: Jacobson RTO估计算法用来估计重发超时(RTO); Karn算法指出,在重发段,不应进行RTO估计; 指数补偿算法定义:对于64秒时间上限内每一次重发,加倍重发超时; 快速重发算法允许在收到3个重复确认之后进行重发。考虑这个算法是因为:在LAN上,可能会导致报文丢失的检测快于等待RTO终止的检测。 在MODBUS实现中,推荐使用这些算法。 IP层的参数配置 IP参数 下列参数必须在MODBUS实现的IP层进行配置: 本地IP地址:IP地址可以是A、B或C类的一种。 子网掩码:可基于各种原因,将IP网络划分成子网:使用不同的物理介质(例如:以太网、广域网等)、更有效的使用网络地址、以及控制网络流量的能力。子网掩码必须与本地IP地址的类型相一致。 缺省网关:缺省网关的IP地址必须与本地IP地址在同一子网内。禁止使用0.0.0.0的值。如果没有定义网关,那么此值可设为127.0.0.1或本地IP地址。 注:MODBUS报文传输服务在IP层上不要求段功能。 应该利用本地IP地址、子网掩码和省缺网关(不同于0.0.0.0)配置本地IP端。 通信应用层 MODBUS客户端 图10:MODBUS客户端 MODBUS客户端设计 MODBUS/TCP协议使得能够对一个客户端进行简单的设计。下图描述了客户端发送MODBUS请求并处理MODBUS应答的主要处理过程。 图11:MODBUS客户端操作示意图 一个MODBUS客户机可以接收三类事件: 一个来自用户应用的发送请求的新需求,在这种情况下,必须对MODBUS请求进行编码,并使用TCP管理组件服务通过网络进行发送MODBUS请求。下层(TCP管理模块)会返回一个错误信息,这些错误信息是由于TCP连接错误或其他错误信息所导致的。 来自TCP管理的一个响应,在这种情况下,客户端必须分析响应的内容,并向用户应用发送一个证实。 由于无响应而超时结束。可以通过网络发送一个重试电文,或向用户应用发送一个否定证实。 注:这些重试是由MODBUS客户机启动的,可以在无TCP确认的情况下由TCP层来进行其它类型的重试。 MODBUS请求的生成 在收到来自用户应用的需求后,客户端必须生成一个MODBUS请求,并发送到TCP管理。 可以将生成MODBUS请求分解成为几个子任务: MODBUS事务处理的实例化,使客户机能够存储所有需要的信息,以便将响应与相应的请求匹配,并向用户应用发送证实。 MODBUS请求(PDU+MPAB报文头)的编码。启动需求的用户应用必须提供所有需要的信息,使得客户机能够将请求编码。根据MODBUS协议进行MODBUS PDU的编码(MODBUS功能码、相关参数和应用数据[2])。填充MBAP报文头的所有域。然后,将MBAP报文头作为PDU前缀,生成MODBUS请求ADU。 发送MODBUS请求ADU到TCP管理模块,TCP管理模块负责对远端服务器寻找正确TCP的套接字。除了MODBUS ADU以外,还必须传递目的IP地址。 下图比图17更深入地描述了请求生成的过程。 图12:请求生成操作示意图 下面给出了实例:从地址为05的远端服务器读1个字的MODBUS请求ADU编码 MODBUS请求ADU编码: 说明大小实例MBAP报文头事务处理标识符Hi10x15事务处理标识符Lo10x01协议标识符20x0000长度20x0006单元标识符10xFFMODBUS请求功能码(*)10x03起始地址20x0005寄存器数量20x0001 (*)参见MODBUS协议规范[2] 事务处理标识符 事务处理标识符用于将请求与未来响应之间建立联系。因此,对TCP连接来说,在同一时刻,这个标识符必须是唯一的。有几种使用此标识符的方式: 例如:可以作为一个带有计数器的简单“TCP顺序号”,在每一个请求时增加计数器; 也可以用作智能索引或指针,来识别事务处理的内容,以便记忆当前的远端服务器和未处理的请求。 通常,在MODBUS串行链路上,客户机必须一次发送一个请求。这意味着这个客户机在发送第二个请求之前必须等待对第一个请求的回答。在MODBUS TCP上,可以向同一个服务器发送多个请求而不需等待服务器的证实。MODBUS/TCP到MODBUS串行链路之间的网关负责保证这两种操作之间的兼容性。 服务器收接受的请求数量取决于其容量,即:服务器资源量和TCP窗口尺寸。同样,客户机同时启动事务处理的数量也取决于客户机的资源容量。这个实现参数称为“NnmberMaxofClientTransaction”,必须作为MODBUS客户机的一个特性进行描述。根据设备的类型,此参数取值为1~16。 单元标识符 在MODBUS或MODBUS+串行链路子网中对设备进行寻址时,这个域是用于路由的目的。在这种情况下,“Unit Identifier”携带一个远端设备的MODBUS从站地址: - 如果MODBUS服务器连接到MODBUS+或MODBUS串行链路子网,并通过一个桥或网关配置地址这个服务器,MODBUS单元标识符对识别连接到网桥或网关后的子网的从站设备是必需的。目的IP地址识别了网桥本身的地址,而网桥则使用MODBUS单元标识符将请求转交给正确的从站设备。 - 分配串行链路上MODBUS从站设备地址为1~247(10进制),地址0作为广播地址。 对TCP/IP来说,利用IP地址寻址MODBUS服务器;因此,MODBUS单元标识符是无用的。必需使用值0xFF。 - 当对直接连接到TCP/IP网络上的MODBUS服务器寻址时,建议不要在“单元标识符”域使用有效的MODBUS从站地址。在一个自动系统中重新分配IP地址的情况下,并且如果以前分配给MODBUS服务器的IP地址又被指配给网关,使用一个有效的从站地址可能会由于网关的路由不畅而引起麻烦。使用无效的从站地址,网关仅是简单地废弃MODBUD PDU,而不会有任何问题。建议:在采用0xFF作为“单元标识符”的无效值。 注:0也可以用作与MODBUS/TCP设备直接通信。 处理MODBUS证实 在TCP连接中,当收到一个响应帧时,位于MBAP报文头中的事务处理标识符用来将响应与先前发往TCP连接的原始请求联系起来: 如果事务处理标识符没有提及任何未解决的事务处理,那么必须废弃响应; 如果事务处理标识符提及了未解决的事务处理,那么必须分解响应,以便向用户应用发送MODBUS证实(肯定的或否定的证实); 分解响应就是检验MBAP报文头和MODBUS PDU的响应: MBAP报文头 在检验协议标识符必为0x0000以后,长度给出了MODBUS响应的大小。 如果响应来自直接连接到TCP/IP网络的MODBUS服务器设备,TCP连接识别码足以清晰地识别出远端服务器。因此,MBAP头中携带的单元标识符是无效的,必须废弃这个单元标识符。 如果将远端服务器连接在一个串行链路子网上,并且响应来自一个网桥、路由或网关,那么单元标识符(值≠0xFF)识别发送初始响应的远端MODBUS服务器。 MODBUS响应PDU 必须检验功能码,根据MODBUS协议,分析MODBUS的响应格式: 如果功能码与请求中所用的功能码相同,并且如果响应的格式是正确的,那么,向用户应用发出MODBUS响应作为肯定的证实。 如果功能码是一个MODBUS异常码(功能码+80H),向用户应用发出一个异常响应作为肯定的证实。 如果功能码与请求中所用的功能码不同(= 非预期的功能码),或如果响应的格式是错误的,那么,向用户应用发出一个错误信号作为否定的证实。 注:肯定证实是指服务器收到请求命令并做出响应的证实。并不意味着服务器能够成功地完成请求命令中要求的操作(MODBUS异常响应指明执行操作失败)。 下图比图17更深入地描述了证实处理的过程。 图13:MODBUS证实处理操作示意图 超时管理 对MODBUS/TCP上事务处理所需响应时间有意不作规定。 这是因为:从毫秒级的I/O扫描到延时几秒钟的远距离无线链路,预期MODBUS/TCP会用于可能最宽泛的通信场合。 从客户机的角度,超时必须考虑网络上预期的传输延迟,以便确定一个合理的响应时间。这种传输延迟可能是交换式以太网中的几个毫秒,或广域网连接中的几百毫秒。 反过来讲,任何客户机启动应用重试使用的超时时间应该大于预期的最大的合理响应时间。如果不遵循这一点,目标设备或网络就存在过度拥挤的潜在危险,而反过来会导致更多的错误。这是一个应该始终避免的特性。 因此,在实际中,在高性能应用中所使用的客户机超时似乎总是与网络拓扑和期望的客户机性能有关。 时间因素不很重要的系统经常采用TCP缺省值作为超时值,在多数平台上,几秒钟之后将报告通信故障。 MODBUS服务器端 图14:MODBUS服务器端 MODBUS服务器的作用是为应用对象提供访问以及为远端客户机提供服务。 根据用户应用,提供不同类型的访问: 简单访问:获得或设定应用对象的属性; 高级访问:启动一个特定的应用服务 MODBUS服务器必须: 将一个应用对象映射成可读或可写的MODBUS对象,以便获得或设定应用对象的属性; 提供一种对应用对象启动服务的方法; 在运行过程中,MODBUS服务器必须分析接收到的MODBUS请求,处理所需的操作,返回MODBUS响应。 MODBUS服务器设计 MODBUS服务器设计取决于如下两个方面: 对应用对象访问的类型(对属性的简单访问或对服务的高级访问); MODBUS服务器与用户应用之间交互作用的类型(同步或异步)。 下图描述了服务器进行的主要处理过程,以便获得来自TCP管理的MODBUS请求,然后,分析请求,处理所需的操作,返回MODBUS响应。 图15:处理MODBUS指令操作示意图 象前面的操作示意图示出的那样: MODBUS服务器本身可以立即处理一些服务,没有与用户应用之间的交互作用; 一些服务还可能需要与被处理的用户应用进行明显的交互作用; 有些高级服务需要调用特定的接口,即:MODBUS后台服务。例如:可能根据用户应用层协议,使用若干个MODBUS请求/响应事务处理的时序来启动用户应用服务。后台服务负责所有单个MODBUS事务处理的正确进行,以便于执行全局用户应用服务。 在下列各章中给出更完整的描述。 MODBUS服务器可以接收并同时为多个MODBUS请求提供服务。服务器可以同时接收MODBUS请求的最大数量是MODBUS服务器的主要特性之一。这个数量取决于服务器的设计以及它的处理和存储能力。将这个实现参数称为“NumberMaxOfServerTransaction”,必须作为MODBUS服务器的一个特性描述这个实现参数。根据设备的能力,它的取值范围为:1~16,。 “NumberMaxOfServerTransaction”参数对MODBUS服务器的操作和性能有非常显著的影响。尤其重要的是,所管理的并发MODBUS事务处理的数量可能影响服务器对MODBUS请求的响应时间。 MODBUS PDU检验 下图描述了MODBUS PDU检验操作。 图16:MODBUS PDU检验操作流程图 MODBUS PDU检验功能首先是分解MBAP报文头。必须检验协议标识符域: 如果与MODBUS协议类型不同,那么废除这个指示。 如果是正确的(= MODBUS协议类型;值为0x00),立即举例说明一个MODBUS事务处理。 一个服务器可以距离说明的MODBUS事务处理的最大数量由参数“NumberMaxOfTransaction”(系统或配置参数)来定义。 在无效的事务处理的情况下,服务器生成一个MODBUS异常响应(异常码6:服务器繁忙)。 如果事务处理是有效的,它将被启动,以便存储下列信息: 用于发送指示的TCP连接标识符(由TCP管理给出) MODBUS事务处理ID(MBAP报文头中给出) 单元标识符(MBAP报文头中给出) 然后,分解MODBUS PDU。首先分析功能码: 当无效时,生成MODBUS异常响应(异常码1:无效功能) 如果接收功能码,服务器启动一个“MODBUS服务处理”操作。 MODBUS服务处理 图17:MODBUS 服务处理操作流程图 根据后面实例中的设备软件和硬件结构,可以用不同的方式进行要求的MODBUS服务处理: 在一个小型设备或单线程体系结构内,MODBUS服务器可以直接访问用户应用数据,服务器自身可以本地处理要求的服务,而无需调用后台服务。 根据“MODBUS协议规范”,进行这种处理。在出现错误的情况下,生成MODBUS异常响应。 在一个模块化的多处理器的设备或多线程体系结构中,“通信层”和“用户应用层”是两个独立的实体,通信实体可以完全地处理一些不重要的服务,而其他的服务需要应用后台服务与用户应用实体协调完成。 为了实现与用户应用的交互作用,MODBUS后台服务必须执行所有适当的机制,以便处理用户应用的事务处理,并且正确管理用户应用调用和相应的响应。 用户应用接口(后台接口) 在MODBUS后台服务中,可以执行几种策略来完成工作,虽然从用户网络吞吐量、接口带宽使用、响应时间、甚至设计工作量的角度,这几种策略是不均衡的。 MODBUS后台服务将对用户应用采用适当接口: 或基于串行链路的物理接口,或双口RAM方案,或一条简单的I/O电缆,或由操作系统提供的基于报文传输服务的逻辑接口。 到用户应用的接口可以是同步的或异步的。 MODBUS后台服务还将使用适当的设计模式来得到/设定目标属性或触发服务。在某些情况下,一个简单的“网关模式”将是足够的。在其他情况下,从简单的交换表历史到更复杂的重复机制中,设计者将必须执行带有高速缓存策略的“代理服务器模式”,。 MODBUS后台服务有责任实现协议的转换,以便与用户应用进行交互作用。因此,它必须具有机制来实现报文的分拆和重组、数据一致性保证以及所有需要的同步等功能。 MODBUS响应的生成 一旦处理请求,MODBUS服务器必须使用适当的MODBUS服务器事务处理生成一个响应,并且必须将响应发送到TCP管理组件。 根据处理结果,可以生成两类响应: 肯定的MODBUS响应: 响应功能码 = 请求功能码 MODBUS异常响应: 目的是为客户机提供与处理过程检测到的错误相关的信息 响应功能码 = 请求功能码+0x80 提供异常码来表明出错的原因。 异常码MODBUS名称备注01非法的功能码服务器不了解功能码02非法的数据地址与请求有关03非法的数据值与请求有关04服务器故障在执行过程中,服务器故障05确认服务器接受服务调用,但是需要相对长的时间完成服务。因此,服务器仅返回一个服务调用接收的确认。06服务器繁忙服务器不能接受MODBUS请求PDU。客户应用由责任决定是否和何时重发请求。0A网关故障网关路经是无效的。0B网关故障目标设备没有响应。网关生成这个异常信息。 MODBUS响应PDU必须以MBAP报文头做前缀,使用事务处理正文中的数据生成MBAP报文头。 单元标识符 当在所收到的MODBUS请求中给出单元标识符时,拷贝这个单元标识符,并将其存储在事务处理的正文中。 长度 服务器计算MODBUS PDU和单元标识符字的大小。在“长度”域中设置这个值。 协议标识符 设置协议标识符域为0x0000(MODBUS协议),在所收到的MODBUS请求中给出协议标识符。 事务处理标识符 设置这个域为“事务处理标识符”值,它与初始请求有关,并将其存储在。 利用事务处理正文中存储的TCP连接对正确的MODBUS客户机返回MODBUS响应。当发送响应时,事务处理正文必须释空闲的。 实现指南 本章的目的是提出一个实现报文传输服务的实例。下面所描述的模型可用作客户机或服务器实现MODBUS报文传输服务过程的指南。 对象模型示意图 图18:MODBUS报文传输服务对象模型示意图 四种主要程序包构成对象模型示意图: 配置层,它配置和管理其它程序包组件的操作模式 TCP管理,它使TCP/IP栈和管理TCP连接的通信应用层连接。这指的是套接字接口的管理。 通信应用层,它由在一侧的MODBUS客户机和在另一侧的MODBUS服务器组成。该程序包和用户应用链接。 用户应用,它和设备应用相对应,它完全与设备有关,因此在本文件中不予讨论。 本模型与实现的选择无关,例如:OS类型、存储管理等。为保证这种无相关性,在TCP管理层和通信层之间以及在通信层和用户应用层之间使用普通界面层(generic Interface layers)。 有不同的实现方法实现该界面:两项任务之间的传输、共享存储器、串行链接界面、过程呼叫等。 为定义下面的实现模型,作了一些假定: 静态存储器管理 服务器的同步处理 处理有关所有套接字接收的任务。 TCP管理程序包 图19:MODBUS TCP管理程序包 TCP管理程序包包括下列类: ClnterfaceConnexion:该类的作用是管理用于连接的存储库。 CltemConnexion:该类含有描述连接所需要的所有信息。 CTCPConnexion:该类提供自动管理TCP连接的方法(CStackTCP_IP提供接口套接字)。 CconnexionMngt:该类管理所有连接,并通过CinterfaceindicationMsg和CinterfaceRoseponseMsg向MODBUS服务器/MODBUS客户机发送请求/响应。该类还处理连接建立的访问控制。 CMBAP:该类提供读/写/分析MODBUS MBAP的方法。 CStackTCP_IP:该类执行套接字服务并提供栈的参数配置。 配置层程序包 图20:MODBUS配置层程序包 配置层程序包包括下列类: TConfigreObject:该类将各组件相互配置所需的数据分组。用CoperatingMode类中的m_Confire方法填充这个结构。每个需要配置的类从这个对象中取得自己的数据。配置数据与实现本身有关。因此,提供该类的属性表作为一个实例。 CoperatingMode:该类的作用是填充TConfigueObject(根据用户的配置)和管理下述类的操作模式。 CMODBUSServer CMODBUSClient CconnexionMngt 通信层程序包 图21:MODBUS通信应用层程序包 通信应用层程序包包括以下各类: CMODBUSServer:从CinterfaceIndicationMsg中接收MODBUS询问(通过m_ServerRecievingMessage方法)。该类的作用是根据询问建立MODBUS响应或MODBUS异常(从网络进入)。该类实现MODBUS服务器的Graph State。只有类CoperatingMode发送了用户配置和正确的操作模式,才可能生成响应。 CMODBUSClient:从类CinterfaceUserApplication中读取MODBUS询问,客户机的任务是用m_ClientReceivingMessage方法接收询问。该类实现MODBUS客户机的State Graph,并且管理链接带有响应的询问的事务处理(来自网络的)。只有类CoperatingMode发送了用户配置和正确的操作模式,才能通过网络发送询问。 CTransaction:该类实现管理事务的方法和结构。 接口类 CInterfaceUserApplication:该类表示与用户应用的接口,它提供两种访问用户数据的方法。在实际的实现中,根据硬件和软件设备的能力,用不同的方式实现这种方法(相当于一个终端驱动器、访问PCMCIA的实例、共享存储器等)。 CInterfaceIndicationMsg:该接口类用来从网络向MODBUS服务器发送询问,以及从网络向客户机发送响应。该类使TCPManagement和通信应用层程序包连接(从网络中)。该类的实现与网络有关。 CInterfaceResponseMsg:该接口类用于从服务器接受响应,以及从客户机向网络发送询问。该类使通信应用层程序包和TCPManagement连接(向网络)。该类的实现和设备有关。 通信实现的类的示意图 下列类的示意图是一个完整的实现方案的示意图。 图22:类的示意图 序列图 下面描述了两个序列图,以便说明客户机MODBUS事务处理和服务器MODBUS事务处理。 图23:MODBUS客户机序列图 为更好地理解客户机序列图,简单的注释为: 第一步:读来自用户应用的询问(通过m_Read方法)。 第二步:客户机的任务是接收MODBUS询问(通过m_ClientReceivingMessage方法)。这是客户机的进入点。为了使询问和相应的响应相互协调,当得到询问时,客户机使用事务处理资源(类名:CTransaction)。通过呼叫类接口CInterfaceResponseMsg向TCP_Management发送MODBUS询问(通过m_MODBUSRequest方法)。 第三步:如过已建立连接,并且不需要对连接做什么,那么通过网络发送报文。否则,在网络上可以发送报文之前,必须有开放的连接。 此时,客户机等待最后讨论的响应(来自远程服务器)。 第四步:若从已经从网络得到响应,那么TCP/IP栈接收数据(隐蔽地呼叫m_EventOnStack方法)。 如果已建立连接,那么读MBAP以恢复连接对象(连接对象提供存储资源和其它信息)。 读取来自网络的数据,通过类接口CinterfaceIndicationMsg向客户机发送证实(通过m_MODBUSConfirmation方法)。客户机的任务是接收MODBUS证实(通过m_ClientReceivingResponse方法)。 最后,向用户应用写入响应(通过m_Writedata方法),并且事务处理资源是空闲的。 下面是MODBUS服务器交换的实例: 图24:MODBUS服务器序列图 为更好地理解客户机序列图,简单的注释为: 第一步:某客户机已通过网络发送了询问(MODBUS询问)。TCP/IP栈接收数据(隐蔽地呼叫m_EventOnSocket方法)。 第二步:请求可能是连接请求,也可能不是连接请求(通过m_IsConnexionRequest方法)。如果请求是连接请求,那么分配连接对象和收发MODBUS帧的缓冲器(m_GetObjectConnexion)。之后,必须检查和接受连接访问控制。 第三步:如果询问是MODBUS请求,那么可以读出完整的MODBUS Query(通过m_ReceiveData方法)。此时,必须分析MBAP(通过m_IsMdbHeadercorrect方法)。通过CInterfaceIndicationMessaging类向服务器任务(task)发送完整的帧(通过m_MODBUSIndication方法)。服务器的任务是接收MODBUS QUERY(通过m_ServerReceivingMessage方法)并加以分析。 如果有差错出现(未支持的功能码等),生成MODBUS异常帧形(m_BuildMODBUSException),否则生成响应。 第四步:通过CInterfaceResponseMessaging(通过m_MODBUSResponse方法)在网络上发送响应。通过m_SendData方法进行对连接对象的处理(恢复连接描述符等),在网络上发送数据。 类和方法的描述 MODBUS服务器端的类 类名:CMODBUSServer 类名:CMODBUSServer Stereotype实现类 提供用服务器模式管理MODBUS报文传输的方法 域综述protected charGlobalStateMODBUS服务器的状态 构造器综述CMODBUSServer(TConfigureObject * lnkConfigureObject)构造器:生成内部对象 方法综述protected voidm_InitServerFunctions(void )为填充功能阵列“m_ServerFunction”数列构造器呼叫的功能boolm_Reset(void )重新设置服务器的方法,如果重新设置,那么返回肯定值intm_ServerReceivingMessage(TItemConnexion * lnkMODBUS)与CindicationMsg::m_MODBUSIndication的接口,以从网络接收询问,如有问题,返回否定值boolm_Start(void )启动服务器的方法,如果启动,返回肯定值boolm_Stop(void )停止服务器的方法,如果停止,返回肯定值protected voidm_tServerMODBUS(void )服务器的MODBUS任务.. MODBUS客户机类 类名:CMODBUSClient 类名:CMODBUSClient 提供用客户机模式管理MODBUS报文传输的方法 Stereotype实现类 域综述protected charGlobalStateMODBUS客户机的状态 构造器综述CMODBUSClient(TConfigureObject * lnkConfigureObject)构造器:生成内部对象,启动0变量 方法综述Intm_ClientReceivingMessage(TItemConnexion * lnkMODBUS)从应用层接收报文传输的接口:呼叫读数据呼叫的CinterfaceUserApplication::m_Read 为事务处理取得存储器的CInterfaceConnexion::m_GetObjectConnexion 如果有问题,那么返回否定值Boolm_Reset(空的)重新设置组件的方法,如果重新设置,返回肯定值boolm_Start(空的)启动组件的方法,如果启动,返回肯定值boolm_Stop(空的)停止组件的方法,如果停止,返回肯定值protected 空的m_tClientMODBUS(空的)客户机的MODBUS任务.... 接口的类 接口指示类 类名:CInterfaceIndicationMsg 直接已知的子类 CConnexionMngt 类名:CInterfaceIndicationMsg 从TCP_Management向MODBUS服务器或客户机发送报文的类 Stereotype接口 方法综述intm_MODBUSConfirmation(TItemConnexion * lnkObject)接收进入响应和呼叫客户机的方法:通过可用参考值、报文排队、远程过程呼叫等, ...intm_MODBUSIndication(TItemConnexion * lnkObject)读进入MODBUS询问和呼叫服务器的方法:通过可用参考值、报文排队、远程过程呼叫等, ... 接口响应类 类名:CInterfaceResponseMsg 直接已知的子类: CMODBUSClient、CMODBUSServer class CInterfaceResponseMsg 从客户机或服务器向TCP_Management发送响应或询问的类 Stereotype接口 方法综述TitemConnexion *m_GetMemoryConnexion(unsigned long IPDest)从存储库得到对象ItemConnexion,如果存储不充足,返回值-1intm_MODBUSRequest(TItemConnexion * lnkCMODBUS)将进入MODBUS询问客户机写入ConnexionMngt的方法:通过可用参考值、报文排队、远程过程呼叫等, ...intm_MODBUSResponse(TItemConnexion * lnkObject)将MODBUS服务器的响应写入ConnexionMngt的方法:通过可用参考值、报文排队、远程过程呼叫等, ... 连接管理类 类名:CConnexionMngt 类名:CConnexionMngt 管理所有TCP连接的类 Stereotype 实现类 域综述protected charGlobalState组件ConnexionMngt的综合状态IntNbConnectionSupported连接的全部数量IntNbLocalConnection本地客户机向远程服务器开放的连接数量IntNbRemoteConnection远程客户机向本地服务器开放的连接数量 构造器综述CconnexionMngt(TConfigureObject * lnkConfigureObject)构造器:生成内部对象、启动0变量 方法综述intm_EventOnSocket(空的)唤醒boolm_IsConnectionAuthorized(unsigned long IPAdress)如果授权新连接,返回肯定值intm_ReceiveData(TItemConnexion * lnkConnexion)与CTCPConnexion::write接口,从网络中读数据的方法,如果有问题,返回否定值boolm_Reset(空的)重新设置ConnectionMngt组件的方法,如果重新设置,返回肯定值intm_SendData(TItemConnexion * lnkConnexion)为CTCPConnexion::read接口,向网络发送数据的方法,如果有问题,返回否定值boolm_Start(空的)启动ConnectionMngt组件的方法,如果启动,返回肯定值boolm_Stop(空的)停止组件的方法,如果停止,返回肯定值 --- ### 65. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 基于串行链路的 Modbus 通信需要进行差错校验,根据传输模式(ASCII 或 RTU)的不同,差错校验域采用不同的校验方法。 ASCII 模式 —— 校验字段由两个字符组成,其值是基于对全部报文内容执行 LRC 校验(Longitudinal Redundancy Check,纵向冗余校验)的计算结果。计算对象不包括起始的冒号(:)和回车换行符号(CRLF)。 RTU 模式 —— 校验字段由 16 个比特位(两个字节)组成,其值是基于对全部报文内容执行 CRC 校验(Cyclical Redundancy Check,循环冗余校验)的计算结果。计算对象包括校验域之前的所有字节。 LRC 校验​ LRC 校验比较简单,它在 ASCII 协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加(丢弃所有进位),然后对结果进行二进制补码操作。 下面是 LRC 校验的具体代码: unsigned char LRC(unsigned char *auchMsg, unsigned short usDataLen) { unsigned char uchLRC = 0; while (usDataLen--) uchLRC += *auchMsg++; return ((unsigned char)(-((char)uchLRC))); } 从算法本质来说,LRC 域本身仅占 1 个字节,但在 ASCII 模式传递消息帧时,LRC 值被编码为 2 个字节的 ASCII 字符。例如,计算得到的 LRC 值为 0xF3,那么在 ASCII 消息帧中表示为 'F' 和 '3' 两个字符。 CRC 校验​ CRC 域是两个字节,包含一个 16 位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的 CRC,并与接收到的 CRC 域中的值比较,如果两值不同,则有误。 CRC 是先调入一值是全“1”的 16 位寄存器,然后调用一过程将消息中连续的 8 位字节各当前寄存器中的值进行处理。仅每个字符中的 8 位数据对 CRC 有效,起始位和停止位以及奇偶校验位均无效。 CRC 产生过程中,每个 8 位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以 0 填充。LSB 被提取出来检测,如果 LSB 为 1,寄存器单独和预置的值或一下,如果 LSB 为 0,则不进行。整个过程要重复 8 次。在最后一位(第 8 位)完成后,下一个 8 位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的 CRC 值。 下面是 CRC 校验的具体代码: unsigned short CRC16(unsigned char *puchMsg, unsigned short usDataLen) { int i, j; unsigned short usRegCRC = 0xFFFF; for (i=0; i<usDataLen; i++) { usRegCRC ^= *puchMsg++; for (j=0; j<8; j++) { if (usRegCRC & 0x0001) usRegCRC = usRegCRC >> 1 ^ 0xA001; else usRegCRC >>= 1; } } return usRegCRC; } 在 Modbus RTU 模式中,规定了在消息帧传递时 CRC 校验值必须按低字节在前,高字节在后的顺序。例如,计算得到的 CRC 值为 0xCA31,那么发送顺序为 0x31、0xCA。 上面的 CRC16 计算方法并不是最优的,因为它需要大量的运算,只适用于对速度不敏感的场合。对运算速度有要求的,可以采用查表法得到校验值,是一种以空间换时间的策略。 --- ### 66. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 功能码是 Modbus 消息帧(报文)的重要组成部分,是 Modbus 协议中通信事务处理的基础。 概述​ Modbus 功能码占用一个字节,取值范围是 1~127(即 0x01~0x7F)。同时,使用功能码 + 0x80 表示异常状态,即 129~255 代表异常码。 在 Modbus 标准协议中,一共规定了三类 Modbus 功能码。 公共功能码 被明确定义的功能码; 保证唯一性; 由 Modbus 协会确认,并提供公开的文档; 可进行一致性测试; 包括协议定义的功能码和保留将来使用的功能码。 用户自定义功能码 有两个用户自定义功能码区域,分别是 6572 和 100110; 用户自定义,不保证唯一性。 保留功能码 保留功能码是因为历史遗留原因,某些公司的传统产品上现行使用的功能码不作为公共使用。 本教程主要介绍公共功能码,下表展示了 Modbus 协议中的部分公共功能码。 代码名称英文寄存器 PLC 地址位/字操作操作数量01读线圈状态Read Coils00001~09999位操作单个或多个02读离散输入状态Read Discrete Inputs10001~19999位操作单个或多个03读保持寄存器Read Holding Registers40001~49999字操作单个或多个04读输入寄存器Read Input Registers30001~39999字操作单个或多个05写单个线圈Write Single Coil00001~09999位操作单个06写单个保持寄存器Write Single Register40001~49999字操作单个15写多个线圈Write Multiple Coils00001~09999位操作多个16写多个保持寄存器Write Multiple Registers40001~49999字操作多个 功能码的操作可分为两种: 位操作 —— 最小单位为一位(bit),包括读线圈状态功能码 01、读离散输入状态功能码 02、写单个线圈功能码 05 和写多个线圈功能码 15; 字操作 —— 最小单位为两个字节,包括读保持寄存器功能码 03、读输入寄存器功能码 04、写单个保持寄存器功能码 06 和写多个保持寄存器功能码 16。 功能码​ 0x01 读取线圈/离散量输出值​ 该功能码用于读取从设备的线圈或离散量输出的状态,即各 DO(Discrete Output,离散输出)的 ON/OFF 状态。 消息帧中指定了需读取的线圈起始地址和线圈数目。 起始地址由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 线圈数量由 2 个字节构成,取值范围为 0x0001 到 0x07D0(即十进制 1~2000)。 需要注意,在 Modbus 协议规定的 PDU 中,规定所有线圈或寄存器地址从 0 开始计算。 0x02 读取离散量输入值​ 该功能码用于读取从设备的离散输入,即 DI(Discrete Input)的 ON/OFF 状态。 消息帧中指定了需读取的离散输入寄存器起始地址和数目,可读取 1~2000 个连续的离散量输入状态。 如果从设备接受主设备的请求则回复功能码 02,并返回离散量输入各变量的当前状态(如果返回的 DI 数量不是 8 的整数倍,将用 0 填充最后数据字节的剩余位)。 起始地址由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 离散量数量由 2 个字节构成,取值范围为 0x0001 到 0x07D0(即十进制 1~2000),最多一次可读取 2000 个离散输入状态值。 0x03 读取保持寄存器值​ 该功能码用于读取从设备保持寄存器的内容,不支持广播模式。 消息帧中指定了需读取的保持寄存器的起始地址和数目,而保持寄存器中各地址的具体内容和意义则由设备开发者自行规定。 起始地址由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 寄存器数量由 2 个字节构成,取值范围为 0x0001 到 0x007D(即十进制 1~125),最多一次可连续读取 125 个寄存器值。 需要注意,Modbus 的保持寄存器和输入寄存器是以字(Word)为基本单位的(1Word 等于 2Bytes)。因此,在读取时需要注意字节序(大小端)问题。 0x04 读取输入寄存器值​ 该功能码用于读取从设备输入寄存器的内容,不支持广播模式。(与 03 功能码类似) 消息帧中指定了需读取的输入寄存器的起始地址和数目,而输入寄存器中各地址的具体内容和意义则由设备开发者自行规定。 起始地址由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 寄存器数量由 2 个字节构成,取值范围为 0x0001 到 0x007D(即十进制 1~125),最多一次可连续读取 125 个寄存器值。 同样需要注意字节序问题。 0x05 写单个线圈/单个离散输出​ 该功能码用于将单个线圈寄存器(或离散输出)设置为 ON 或 OFF,支持广播模式。 在广播模式下,所有从站设备的同一地址的值将被统一修改。 消息帧中指定了需要变更的线圈地址和设定的状态值。 起始地址由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 目标数据(即查询报文中的 ON/OFF 状态)由报文数据字段的常数指定,0xFF00 表示 ON 状态,0x0000 表示 OFF 状态,其余所有值均是非法的。 需要注意,在 Modbus 协议规定的 PDU 中,规定所有线圈或寄存器地址从 0 开始计算。 0x06 写单个保持寄存器​ 该功能码用于更新从设备的单个保持寄存器的值,支持广播模式。 在广播模式下,所有从站设备的同一地址的值将被统一修改。 消息帧中需要指定从设备地址以及需要变更的保持寄存器地址和设定值。 起始地址由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 变更目标数据由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 保持寄存器以字(Word)为基本单位,写入时需要注意目标数据的字节序问题。 0x08 诊断功能​ 该功能码仅用于串行链路,主要用于检测主设备和从设备之间的通信故障,或检测从设备的各种内部故障,该功能不支持广播。 查询报文中需要指定从设备地址、功能码(Modbus Command)以及子功能码(Diagnostic Sub-function)。其中,子功能码字段为 2 个字节,用于区别各诊断类型。 在正常的响应报文中,从设备将原样回复功能码和子功能码。 常用的 Modbus 诊断子功能码定义如下: 功能码子功能码描述说明0800(0x00)Return Data Query (Loop-back)原样返回查询报文0801(0x01)Restart Communications用于初始化并重新启动从站设备其中,报文字段0x00, 0x00 表示保持事件记录0xFF, 0x00 表示清除事件记录0802(0x02)Return Diagnostic Register返回诊断寄存器内容0803(0x03)Change ASCII Input Delimiter0804(0x04)Force Listen Only Mode强制被寻址的从站设备进入只听模式使其与网络中的其他设备断开,不返回响应0810(0x0A)Clear Counters and Diagnostic Registers清除计数器和诊断寄存器0811(0x0B)Return Bus Message Count返回总线报文计数值0812(0x0C)Return Bus Communication Error Count返回总线通信 CRC 出错计数0813(0x0D)Return Bus Exception Error Count返回总线异常计数0814(0x0E)Return Slave Message Count返回从站设备接收的报文数量0815(0x0F)Return Slave No Response Count返回从站设备没有返回响应的报文数量0816(0x10)Return Slave NAK Count0817(0x11)Return Slave Busy Count返回从站设备响应忙的报文数量0818(0x12)Return Bus Character Overrun Count返回总线字符超限的报文数量0819(0x13)Return IOP Overrun Count (884)0820(0x14)Clear Overrun Counter and Flag (884) 0x0B 获取通信事件计数器​ 该功能码主要用于获取从设备通信计数器中的状态字和事件计数的值,不支持广播模式。 可以通过在通信报文之前和之后读取通信事件计数值,来确定从设备是否正常处理报文。 对于正常完成报文处理和传输的场合,事件计数器增加 1;而对于异常响应、轮询命令或读事件计数器(即 0x0B 功能码)的场合,则计数器不变。 通过 0x08 诊断功能中的 0x01 子功能和 0x0A 子功能,可以复位事件寄存器。 0x0C 获取通信事件记录​ 该功能码主要用于从从设备获取状态字、事件计数、报文计数以及事件字节字段。 其中状态字和事件计数与功能码 0x0B 获取的值一致。 报文计数器包含了加电重启、清除计数器之后的报文数量,报文计数与通过 0x08 诊断功能中的 0x0B 子功能码获取的值一致。 事件字节字段包含 0~64 个字节,定义各种事件。 正常情况下响应报文包括一个 2 Bytes 状态字字段、一个 2 Bytes 事件计数字段、一个 2 Bytes 消息计数字段以及 0~64 个字节的事件字段。 由于事件字段是变长的,因此增加了一个 1 Byte 的数据长度字段,以方便读取响应数据。 0x0F 写多个线圈​ 该功能码用于将连续的多个线圈(或离散输出)设置为 ON 或 OFF,支持广播模式。 在广播模式下,所有从站设备的同一地址的值将被统一修改。 消息帧中指定了需要变更的线圈起始地址和线圈数目。 起始地址由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 寄存器数量字段由 2 个字节构成,取值范围为 0x0001 到 0x07B0。 数据字段中为逻辑 1 的位对应 ON,逻辑 0 的位对应 OFF。 0x10 写多个保持寄存器​ 该功能码用于设置或写入从设备保持寄存器的多个连续的地址块(1~123个寄存器),支持广播模式。 在广播模式下,所有从站设备的同一地址的值将被统一修改。 消息帧中需要指定从设备地址以及需要变更的保持寄存器地址和数量。 起始地址由 2 个字节构成,取值范围为 0x0000 到 0xFFFF。 寄存器数量字段由 2 个字节构成,取值范围为 0x0001 到 0x007B(即十进制 1~123)。 在实际开发中,该功能码常用于方便用户写入多字节类型的数据,例如浮点数值。因此,需要注意字节序问题。 0x11 报告从站 ID​ 该功能码仅适用于串行链路,用于读取从站设备的 ID、类型描述、当前状态以及其他信息,不支持广播模式。 查询报文中没有数据字段。 响应消息的构成由从站设备决定。 总结​ 常用 Modbus 公共功能码下表所示。 其中,支持广播模式的功能码有: 0x05 写单个线圈 0x06 写单个保持寄存器 0x0F 写多个线圈 0x10 写多个保持寄存器 除了广播模式的报文以外,其他所有查询报文都希望能够获取一个正常的响应报文。如果一切正常,则从站设备将返回一个正常响应报文,该响应报文的功能码与请求报文的功能码一致。 另外,对于字操作的功能码,存在多字节存储的大小端问题,因此主站设备和从站设备必须保持一致的规则处理,约定 Modbus 传输中的数据字段的字节序。 --- ### 67. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 线圈和寄存器​ 前面介绍 Modbus 的内容中多次提到线圈(coil)和寄存器(register)的概念,尤其是 Modbus 功能码 中,操作的对象基本上都是线圈和寄存器。 在 Modbus 协议中之所以仍然称为线圈和寄存器,完全是历史原因。在 PLC 应用领域,一个线圈就代表一个 PLC 输出点,也称为输出继电器。通过控制线圈导通与否来改变继电器输出状态,实现弱电控制强电。 但实际上,在如今的 Modbus 设备中,它们都只是对应一块内存区域而已。其中,线圈代表位操作(bit),表示一个布尔变量;寄存器代表字操作(word),表示一个整型变量(当然也可以通过多个字的组合,表示浮点数以及其他复合数据结构)。在 Modbus 协议中,字(word)的长度是 16 位,即 2 个字节。 寄存器种类说明​ 在 Modbus 协议中,所有数据均存放于寄存器中。根据存放的数据类型以及各自读写特性,可以将寄存器分为四个部分,这四个部分可以连续也可以不连续,完全由开发者决定。 下表展示了四类寄存器的含义以及与 PLC 的类比。 寄存器种类含义PLC示例线圈状态(Coil Status)输出端口(可读可写)DO(数字量输出)电磁阀输出、LED 显示离散输入状态(Input Status)输入端口(只读)DI(数字量输入)拨码开关、微动开关保持寄存器(Holding Register)输出参数(可读可写)AO(模拟量输出)PID 运行参数、阈值上下限输入寄存器(Input Register)输入参数(只读)AI(模拟量输入)传感器数据输入 寄存器地址分配​ Modbus 寄存器地址分配如下表所示,同样参照了 PLC 寄存器地址的分配方法。 寄存器种类寄存器PLC地址寄存器Modbus协议地址简称线圈状态00001~099990000H~FFFFH0x离散输入状态10001~199990000H~FFFFH1x保持寄存器40001~499990000H~FFFFH4x输入寄存器30001~399990000H~FFFFH3x 该表中的 PLC 地址可以理解为 Modbus 协议地址的变种,在触摸屏和 PLC 编程中应用较为广泛。 寄存器 PLC 地址指存放于控制器中的地址,这些控制器可以是 PLC,也可以是触摸屏,或者文本显示器。PLC 地址一般采用十进制描述,共有 5 位,其中第一位数字代表寄存器类型。 寄存器 Modbus 协议地址指的是通信时使用的寄存器寻址地址,例如 PLC 地址 40001 对应寻址地址 0x0000,40002 对应寻址地址 0x0001。寄存器寻址地址一般使用十六进制描述。 细心的你会发现,PLC 寄存器地址 40003 对应的协议地址是 0x0002,PLC 寄存器地址 30003 对应的协议地址也是 0x0002,虽然通信时使用两个相同的 Modbus 协议地址,但是因为不同寄存器的功能码是不相同的,因此并不存在访问冲突。 --- ### 68. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 是工业界常用的一种简单、可靠、开放的通信协议,可以在多种通信媒介上实施,包括常见的 RS232、RS485 和以太网。随着 Modbus-TCP 的广泛应用,国际互联网组织规定并保留了 TCP/IP 协议栈上的系统 502 端口,专门用于访问 Modbus 设备。 下图大致展示了 Modbus 协议栈模型。 Modbus 通信协议目前存在用于串行链路、TCP/IP 以太网以及其他支持互联网协议的网络版本。在实际应用中,通过 RS485 和 TCP/IP 连接的方式最为常见。下面介绍 Modbus 协议的多种变体。 Modbus RTU​ Modbus RTU 是 Modbus 最常见的实现方式,它基于串行通信总线(例如 RS232、RS485),并采用紧凑的二进制数据形式进行协议通信。RTU 格式在命令/数据之后带有循环冗余校验的校验和作为错误校验机制,以确保数据的可靠性。Modbus RTU 消息必须连续传输,没有字符间犹豫。Modbus 消息由空闲(静默)时段构成(分隔)。 RTU 模式每个字节(11位)的格式为: 帧格式说明编码系统8位二进制数据位1位 起始位8位 数据位,首先发送最低有效位1位 奇偶校验(注:默认偶校验是必须的,奇校验或无校验也可以使用)1位 停止位(注:使用无校验时要求2个停止位)帧发送方式每个字符或字节均由从左到右顺序发送检验CRC(循环冗余校验),低位字节先发起始/结束报文帧由时长至少为 3.5 个字节时间的空闲间隔区分 1 帧数据 Modbus ASCII​ Modbus ASCII 和 Modbus RTU 一样都是使用串行链路通信方式,不同的是,Modbus ASCII 采用一种人类可读的、冗长的表示方式,并使用纵向冗余校验的校验和保证数据传输的完整性。Modbus ASCII 消息由前导冒号 (":") 和尾随换行符 (CR/LF) 构成。 ASCII 模式每个字节(10位)的格式为: 帧格式说明编码系统十六进制,ASCII 字符 0-9,A-F数据位1位 起始位7位 数据位,首先发送最低有效位1位 奇偶校验(注:默认偶校验是必须的,奇校验或无校验也可以使用)1位 停止位(注:使用无校验时要求2个停止位)帧发送方式每个字符或字节均由从左到右顺序发送检验LRC(纵向冗余校验),低位字节先发起始一个‘冒号’(:)起始,对应 ASCII 十六进制为 3A结束以‘回车-换行’(CR,LF)对(ASCII 十六进制 0D 和 0A)结束 需要注意的是,由于帧格式不同,被配置为 RTU 模式的节点是不能与配置为 ASCII 模式的节点正常通信,反之亦然。 Modbus TCP​ Modbus TCP(或称为 Modbus TCP/IP)是一种 Modbus 变体,用于通过 TCP/IP 网络进行通信,通过端口 502 进行连接。和前面两种不一样,Modbus TCP 不需要校验和计算,因为较低层的 TCP/IP 协议栈已经提供校验和保护。 如果将校验和包含在有效载荷中,形成与 Modbus RTU 类似的帧,则称为 Modbus RTU/IP。 其他版本​ 除了上述三种常用的 Modbus 协议,还有如下一些不太常见的 Modbus 扩展版本。 Modbus over UDP​ 既然有 Modbus over TCP,那么自然也会有人尝试将 Modbus 运行在 UDP 之上,即 Modbus over UDP。 这么做的好处是消除了 TCP 所需的开销。 Modbus Plus​ Modbus Plus(Modbus+、MB+ 或 MBP)协议是 Schneider Electric 的专利,与其他变体不同,它支持多个主站之间的点对点通信。不过,它需要一个专用的协处理器来处理类似 HDLC 的高速令牌轮换。它使用 1 Mbit/s 的双绞线,并在每个节点都有变压器隔离,这使其成为转换/边沿触发而不是电压/电平触发。连接 Modbus Plus 到计算机需要特殊的硬件,通常是支持 ISA、PCI 或 PCMCIA 总线的板卡。 Pemex Modbus​ Pemex Modbus 是标准 Modbus 的扩展,支持历史和流量数据。它是为 Pemex 石油和天然气公司设计的,用于过程控制,但从未得到广泛采用。 Enron Modbus​ Enron Modbus 是 Enron 公司开发的标准 Modbus 的另一个扩展,支持 32 位整数和浮点变量以及历史和流量数据。数据类型使用标准地址映射。历史数据用于满足美国石油协会 (API) 行业标准,即如何存储数据。 注意事项​ 前四种 Modbus 协议(Modbus RTU、Modbus ASCII、Modbus TCP 和 Modbus UDP)在数据模型和功能调用上都是相同的,只是传输报文的封装方式不同。但是,由于帧格式不同,因此这些协议变体并不是可互操作的。 --- ### 69. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工作模式​ Modbus 基于主从模式工作。在一个网络中,Modbus 协议通过主设备(客户端)和从设备(服务器)之间的请求-应答机制来交换信息。 下图展示了典型的 Modbus 网络,其中一个 master 设备(client)控制一个或多个 slave 设备(server)。 在标准的 Modbus 网络中,有 1 个主设备和最多 31 个从设备。 通讯特点​ 主设备-从设备工作原理有如下特点: 在同一时间只能有一个主设备连接到网络; 只有主设备能够发起通讯并向从设备发送请求; 主设备可以使用专门的地址分别访问每个从设备,也可以使用地址 0 同时访问所有从设备; 从设备只能向主设备发送应答; 从设备不能向主设备或其它从设备发起通讯。 通讯模式​ Modbus 协议支持两种通讯模式交换信息: 单播模式 —— 主设备通过专门的地址访问从设备,从设备处理请求,然后向主设备发送应答。 广播模式 —— 主设备通过地址 0 访问所有从设备,在这种模式下,从设备不对广播消息作出应答。(因此,广播模式的请求指令必须是 Modbus 标准功能中的写指令) 应答时间​ 应答时间是指从设备对主设备发出的请求做出应答所需的时间。其中 Modbus 协议的数值: 典型值 < 10 ms (90% 的信息交换) 最大值大约是 700 ms,因此建议在发送完一个 Modbus 请求后暂停 1 秒钟再继续。 数据交换​ Modbus 协议支持两种数据类型: 单个位 寄存器(16 位) 具体的位和寄存器定义由从设备决定。 地址​ 使用 Modbus 协议交换的消息包含要处理的数据的地址。每个寄存器都有一个寄存器编号,每类数据(位或寄存器)都有一个 16 位的地址。 在 Modbus 协议规定的 PDU 中,规定所有线圈或寄存器地址从 0 开始计算。因此,第 n 号寄存器的地址是 n-1。例如,第 12000 号寄存器的地址是 0x2EDF(11999)。 帧​ 使用 Modbus 协议交换的所有帧(ADU)最大为 256 字节(ASCII 格式翻倍),其中包括 4 个域: 域定义大小(RTU 格式)描述1从设备号(地址)1 个字节请求的目的地址- 0 :广播(涉及所有从设备)- 1-247 :单播,从设备的唯一地址2功能代码1 个字节参阅 Modbus 功能码3数据0 到 252 个字节请求数据(或应答数据)4校验和2 个字节CRC 校验和(ASCII 为 LRC) 下图展示了主设备-从设备工作模型中的帧交换过程。 网络拓扑​ Modbus RTU​ Modbus RTU 通常基于 RS-485 串行通信链路,RS-485 总线布线规范规定其必须是总线式拓扑结构。在实际布线中,通常采用手牵手菊花链布线方式。例如,Slave 1/2/3 三台 RS-485 设备,Slave1 的 485+ 接入 Slave2 的 485+ 端口,Slave2 的 485+ 再连接到 Slave3 的 485+ 端口,以此类推,485- 的接线方式和 485+ 一样。 Modbus TCP​ 相对于使用串行链路的 Modbus RTU,Modbus TCP 基于以太网通信,因此其网络拓扑结构更为灵活。从串行链路上一主多从的构造,演变为多客户端/多服务器端的构造模型。 使用 Modbus TCP,主站设备(客户端)可以通过 IP 地址找到 Modbus 从设备(服务器),并通过 Modbus 网关连接到另一个 Modbus RTU 网络。 --- ### 70. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 协议是一个开放标准的通信协议,最初设计用于连接可编程逻辑控制器(PLC)和其他自动化设备。它的简单性和可靠性使得 Modbus 成为工业领域中最受欢迎的通信协议之一,被广泛用于监控、控制和数据采集。 什么是 Modbus​ Modbus 是工业界常用的一种通讯协议,可以理解为是一种通讯的约定。 Modbus 协议包括 RTU、ASCII、TCP,其中 Modbus-RTU 最常用,比较简单,在单片机上很容易实现。Modbus RTU 协议定义了一个与下层通信层无关的简单协议数据单元(PDU),串行链路上的 Modbus RTU 帧格式如下图所示。 其中,地址字段只含有从机地址;功能码指示指令要执行何种操作;功能码的后续数据是请求或响应数据字段;差错检验字段是“报文内容”数据进行“循环冗余校验”计算所得结果,采用 CRC16 循环冗余校验算法。 Modbus 和 OPC UA、MQTT 等通讯协议本质上是一样的,都是为了实现多个设备相互通信的应用层协议。 Modbus 的起源与发展​ Modbus 协议于 1979 年由 Modicon 公司(现被 Schneider 公司收购)设计开发,一经面世因其简单开放的通信方式逐渐成为工业系统中流行的标准,是全球第一个真正用于工业现场的总线协议。 后来,为了更好地普及和推动 Modbus 基于以太网(TCP/IP)的分布式应用,施耐德公司将 Modbus 协议的所有权移交给 IDA(Interface for Distributed Automation,分布式自动化接口)组织,并成立了 Modbu-IDA 国际组织,负责推广 Modbus 标准以及对 Modbus 产品进行认证。 现在,我们可以从 Modbus 官网 www.modbus.org 找到相关协议文档、Modbus 产品和厂商等信息。 Modbus 通信协议特点​ Modbus 协议定义了一个控制器能够认识使用的消息结构,而不管它们是经过何种网络进行通信的。因此,底层通信方式可以使用 RS232,RS485 等串行链路,也可以使用 TCP/IP 以太网链路。当在 Modbus 网络上通信时,控制器必须要知道该网络中其他从设备的地址,才能识别按地址发来的消息,并作出相应行为。 简单来说,Modbus 通信协议具有以下几个特点: Modbus 协议标准开放、公开发布且无版税要求,用户可以免费获取并使用 Modbus 协议,不需要缴纳许可证费; Modbus 最开始使用 RS232,RS485 等串行链路作为底层通信方式,串行总线的接口芯片成本低,而且布线也简单方便; Modbus 协议支持多种电气接口,如 RS232、RS485、TCP/IP 等,还可以在各种介质上传输,如双绞线、光纤、红外、无线等; Modbus 是简单地应用层协议,其协议消息帧格式简单、紧凑、通俗易懂,便于用户理解和使用、厂商开发和集成,方便形成工业控制网络。 为什么要学习 Modbus​ 虽然 Modbus 已经发展到了极为成熟的阶段,但由于其协议的简单性以及便于在多种通信媒介上实施的应用特点,Modbus 仍然是当前工业电子设备之间常用的连接方式之一。在某种程度上来说,Modbus 通信协议就是工业领域通信协议的业界标准。在物联网蓬勃发展的当下,了解并掌握广泛应用的 Modbus 通信协议意义重大。 下图展示了 Modbus RTU 网络的设备连接。 专业术语​ 在 Modbus 开发中的常见专业术语如下: Master :主(站)设备 Slave :从(站)设备 Client :客户端,对应 Master 设备 Server :服务器端,对应 Slave 设备 ADU :应用数据单元(Application Data Unit) PDU :协议数据单元(Protocol Data Unit) MSB :最高有效位(Most Significant Bit) LSB :最低有效位(Least Significant Bit) MBAP :Modbus 应用协议(Modbus Application Protocol) PLC :可编程逻辑控制器(Programmable Logic Controller) RTU :远程终端单元(Remote Terminal Unit) SCADA :监督控制和数据采集(Supervisory Control And Data Acquisition) --- ### 71. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 有效功能码说明(十进制) 功能码说明01读取线圈状态02读取输入状态03读取保持寄存器04读取输入寄存器05强置单线圈06预置单寄存器07读取异常状态08回送诊断校验09编程(只用于484)10控询11读取事件计数12读取通信事件记录13编程(184/384/484/584等)14探寻15强置多线圈16预置多线圈17报告多寄存器18可使主机模拟编程功能19重置通信链路20读取通用参数21写入通用参数22屏蔽写寄存器23读/写多个寄存器43读设备别识码22-42, 44-64保留作为扩展功能65-72保留以备用功能所用73-119非法功能120-127保留,留作内部作用128-255保留,用于异常应答 异常响应 主设备(客户端)或从设备(服务器)中的任何一个出现异常晌应,都会导致数据处理错误。在主设备(客户端)发出一个请求以后,可能出现以下事件中的一种: 如果从设备(服务器)从主设备(客户端)接收了请求,其中没有出现通讯错误,并且正确处理了请求,那么它会返回一个正常晌应。 如果从设备(服务器)因为通讯错误而没有从主设备(客户端)接收请求,那么它不会返回晌应。主设备程序最终会为请求处理一个超时条件。 如果从设备(服务器)从主设备(客户端)接收了请求,但是检测到了一个通讯错误,那么它不会返回晌应。主设备程序最终会为请求处理一个超时条件。 如果从设备(服务器)从主设备(客户端)接收了请求,其中没有出现通讯错误,但是无法处理它(比如该请求是读取一个不存在的寄存器),那么从设备就会返回一个异常晌应,以通知主设备出现了何种错误。 异常帧 从设备向主设备发送了一个异常帧,以报告异常晌应。一个异常帧包括四个域: 域定义大小说明1从设备号1 个字节请求的目的地址1–247:唯一的目的地址2异常功能代码1 个字节请求功能代码 +128 (0x80)3异常代码n 字节参见下节4检查2 字节CRC16(检查传输错误) 异常代码 异常晌应帧有两个将其区别于普通晌应帧的字段: 异常晌应的异常功能代码等于原请求的功能代码加上 128 (0x80)。 异常代码取决于从设备所遇到的通讯错误。 下表介绍了由断路器处理的异常代码: 异常代码名称说明01 (0x01)非法功能在请求中接收的功能代码不是从设备的一个授权操作。从设备可能处于错误状态,无法处理特定请求。02 (0x02)非法数据地址从设备接收的数据地址不是从设备的一个授权地址。03 (0x03)非法数据值在请求数据栏中的数值不是从设备的一个授权值。04 (0x04)从设备故障从设备未能执行一个请求的操作,因为出现了一个无法修复的错误。05 (0x05)确认从设备接受了请求,但是需要较长的时间来处理它。06 (0x06)从设备繁忙从设备忙于处理另一个命令。主设备必须在从设备空闲后发送请求。07 (0x07)否定确认从设备无法执行主设备发送的编程请求。08 (0x08)存储器奇偶校验错误从设备在尝试读取扩展存储器的时候从存储器中检测到一个奇偶校验错误。10 (0x0A)网关通道不可用网关过载,或者没有正确配置。11 (0x0B)网关目标设备未能晌应在网络中不存在从设备。 --- ### 72. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus ASCII是Modbus的一种消息帧,相比RTU,ASCII的传输是按照字符传的,传输的数据量会比RTU更多,所以数据量大的时候一般使用的RTU,数据量小的时候才会用ASCII,然后ASCII协议帧里面添加了起始和结束,更换了校验算法,下面详细介绍ASCII协议 帧格式 Modbus ASCII 模式下的通讯帧格式如下: 名称长度 (字节)描述Start1以冒号 : 开头,ASCII 十六进制值为 3AAddress2十六进制节点地址,字符表示Function2十六进制功能码,字符表示Datan x 2n 是数据字节数,它取决于功能码LRC2LRC冗余检验码End2CR / LF 注:地址、功能、数据和 LRC 都是表示 8 位值 (0-255) 的大写十六进制可读字符对;即:在 Modbus ASCII 中,每个数据字节被分割成表示十六进制值中的两个 ASCII 字符的两个字节。 组件描述字符数ASCII表示Start消息开始1 CHAR:Address节点地址(十六进制表示)2 CHARSFunction功能码(十六进制表示)2 CHARSData数据(根据功能码变化,十六进制表示)n CHARSLRC CHECK纵向冗余检验码(LRC)2 CHARSEND消息结束,回车换行2 CHARSCRLF 在 ASCII 模式下,Modbus 消息的每个部分都以特定的字符数和格式出现,如下所示: :AA BB CC...DD EE<CRLF> : - 消息的开始符号。 AA - 节点地址,十六进制表示。 BB - 功能码,十六进制表示。 CC...DD - 数据字段,根据功能码和需要传输的数据长度变化。 EE - LRC 校验码,用于错误检测。 <CRLF> - 消息的结束符号,代表回车和换行(Carriage Return Line Feed)。 ASCII帧的传输状态 上面状态图可以得到的信息: 1)“空闲” 态是没有发送和接收报文要处理的正常状态。 2)每次接收到 ":" 字符表示新的报文的开始。如果在一个报文的接收过程中收到该字符,则当前地报文被认为不完整并被丢弃。而一个新的接收缓冲区被重新分配。 3)检测到帧结束后,完成 LRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。 为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。 ASCII帧的报文传输 由于ASCII报文帧与RTU报文帧有着很大的不同,ASCII报文帧是有起始和结束标识符的,而RTU帧没有这样的标识。所以ASCII报文帧的接收就简单方便多了,也不需要什么t3.5的帧间隔时间。 但是呢,为了保证接收的报文帧连续,还是可以约定字符间的传输时间的。一般认为,报文中的字符时间间隔可以达到一秒,如果超过了这个时间间隔,就认为发生了错误,要废弃掉这一帧报文数据,重新开始接收。 功能码 ASCII 模式下最常用的功能代码与 RTU 模式下的功能代码定义相同。以下是一些基本的功能码及其描述: 访问地址映射地址描述功能R/W1 ~ 10000address-1Coils01/05/15R/W10001 ~ 20000address-10001Discrete Inputs02R30001 ~ 40000address-30001Input Registers04R40001 ~ 50000address-40001Holding Registers03/06/16R/W ASCII传输示例 例如,要读取地址 0x20C1 的两个寄存器,需要发送以下 ASCII 消息: :010420C1000218<CRLF> 请求: : - 消息开始 - 0x3A 01 - 从站地址 - 0x01 04 - 功能码 (读取输入寄存器) - 0x04 20C1 - 要读取的寄存器地址 - 0x20C1 0002 - 要读取的寄存器长度 (必须是 2) - 0x0002 18 - LRC 校验码 <CRLF> - 消息结束,回车换行 - 0x0D0A 响应: :01040400001234B1<CRLF> 响应: : - 消息开始 - 0x3A 01 - 从站地址 - 0x01 04 - 功能码 (读取输入寄存器) - 0x04 04 - 读取数据长度 (4 字节) - 0x04 00001234 - 从 VAR1 读取的值 - 0x00001234 B1 - LRC 校验码 <CRLF> - 消息结束,回车换行 - 0x0D0A 常用功能码操作 以下是 Modbus 的常用功能码及其请求和响应示例: 功能 01(01H)读线圈 请求:读取从机中线圈的 ON/OFF 状态。 响应:线圈状态响应消息被打包为数据字段的每比特表示一个线圈。 功能 02(02H)读离散输入 请求:读取从机中离散输入的 ON/OFF 状态。 响应:离散输入状态响应消息的构造与线圈状态相同。 功能 03(03H)读保持寄存器 请求:读取从机中保持寄存器的二进制内容。 响应:保持寄存器数据在每个寄存器中打包为两个字节。 功能 04(04H)读输入寄存器 请求:读取从机中输入寄存器的二进制内容。 响应:读输入寄存器数据的响应消息的构造与读取保持寄存器相同。 功能 05(05H)写单线圈 请求:将单个线圈写入 ON 或 OFF。 响应:正常的响应是请求的回显。 功能 06(06H)写单个保持寄存器 请求将一个值写入单个保持寄存器中。当广播时,该函数在所有附加的从机上设置相同的寄存器引用。请求消息指定要写入的寄存器引用(指定地址和数值)。 响应正常的响应是请求的回显,在写入保持寄存器内容之后返回。 功能 15(0FH)写多个线圈 请求:将一个线圈序列中的每个线圈写入 ON 或 OFF。 响应:正常响应返回从地址、功能代码、起始地址和写入的线圈数量。 功能 16(10H)写多个保持寄存器 请求:将值写入到一个保持寄存器序列中。 响应:正常响应返回从地址、功能代码、起始地址和写入的寄存器数量。 LRC校验 LRC 校验码的计算方法如下: unsigned char ucMBLRC( unsigned char * pucFrame, unsigned short usLen ) { unsigned char ucLRC = 0; /* LRC char initialized */ while( usLen-- ) { ucLRC += *pucFrame++; /* Add buffer byte without carry */ } /* Return twos complement */ ucLRC = ( UCHAR ) ( -( ( CHAR ) ucLRC ) ); return ucLRC; } --- ### 73. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是Modbus RTU协议? Modbus RTU协议是一种允许可编程逻辑控制器(PLC)和计算机之间进行数据交换的通信方式。 电子设备可以使用Modbus协议通过串行线路交换信息。 它已被广泛接受并广泛用于 建筑管理系统 的建设 (BMS) 和工业自动化系统(IAS)。 它的易用性,可靠性以及它是开源的,并且可以在任何设备或应用程序中免费使用。 该协议由Modicon®于1979年开发和发布,用于其可编程逻辑控制器。 它使用主/从架构构建,并支持使用RS232 / RS485 / RS422协议的串行设备。 Modbus通常用于多个仪器和控制设备将信号传输到中央控制器或系统以收集和分析数据的情况。 工业自动化和监督控制和数据采集 (SCADA) 系统通常采用Modbus协议。 Modbus RTU代表什么? Modbus RTU(远程终端单元)是原始Modbus规范中定义的两种传输模式之一。 这两种模式是Modbus RTU和ASCII,它们都设计用于支持RS232,RS485和RS422协议的串行设备。 Modbus RTU的一个显着特点是它使用二进制编码和强大的CRC错误检查。 Modbus RTU是Modbus协议的实现,最常用于工业应用和自动化生产设施。 Modbus RTU如何工作? Modbus协议基本上是一个处理来自电子设备的请求和响应的系统。 主/从体系结构与主设备请求一起使用,这些请求由从设备响应。 什么是Modbus RTU主站? Modbus RTU主站是从连接的从站设备请求信息的中央设备。 自动化生产系统中的中央控制器可以扮演Modbus RTU主站的角色。 Modbus实现有一个主服务器。 主设备从从设备获取信息,也可以写入从设备的寄存器。 什么是Modbus RTU从站? Modbus RTU从站是响应主设备请求的设备。 它无法启动信息传输,并且在响应主服务器发出的请求之前处于保持模式。 Modbus协议的核心是被称为的组件 协议数据单元 (PDU). PDU由功能代码和数据组成,无论使用何种Modbus传输模式,都可以一致地构建。 功能代码指定主站请求的数据。 在Modbus RTU传输模式中,附加信息包裹在PDU周围以创建完整的应用数据单元(ADU)。 在信号流中和功能代码之前,在Modbus RTU模式下,发送1字节的从ID以识别应满足请求的从设备。 附加到PDU的是2字节CRC,确保发送和接收正确数量的字节。 Modbus设备支持四个数据表,用于促进设备之间的通信。 它们是离散输入,离散输出(线圈),输入寄存器和保持寄存器。 寄存器执行不同的功能,并不是每个设备都包含在内。 在某些情况下,只有保持寄存器用于I / O功能。 领域访问尺寸描述离散输入只读1位用作输入线圈输出读/写1位用于控制离散输入寄存器只读16位用于输入持有寄存器读/写16位用于各种事物,包括输入,输出,配置数据等。 功能代码指示主设备如何与从设备ID中指定的从设备进行交互。 根据发送的功能代码,主设备可以读取从机的一个寄存器,或写入它们。 当从站接收到包含请求中的错误的数据包时,它们会返回错误代码。 对于诸如非法功能请求,指定从站无法访问的非法寄存器地址以及指示从设备忙或已经发生故障的消息等问题,将返回错误代码。 Modbus RTU要求您在启动通信时知道或定义波特率,字符格式(8位无奇偶校验等)和从站ID等参数。 任何这些参数不匹配都会导致您的通信尝试失败。 下面让我们详细解释一下Modbus RTU数据报文: 帧结构 帧结构 = 地址 + 功能吗 + 数据 + 校验 地址: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。 功能码:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。 数据:根据功能码不同,有不同结构,在后续的实例中有说明。 校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。 下面通过功能码03和06解释详细解释一下: 功能码0x03(读) 主机发送: 01 03 00 00 00 01 84 0A 从机回复: 01 03 02 19 98 B2 7E 那么这一组数据是什么意思呢? 从上面的结构图中,可以看出,主机发送的数据大致是 地址+功能码+数据+校验; 所以解析如下: 发送数据解析 01 - 地址,也就是你传感器的地址 03 - 功能码,03代表查询功能,查询传感器的数据 00 00 - 代表查询的起始寄存器地址.说明从0x0000开始查询。这里需要说明以下,Modbus把数据存放在寄存器中,通过查询寄存器来得到不同变量的值,一个寄存器地址对应2字节数据 00 01 - 代表查询了一个寄存器.结合前面的00 00,意思就是查询从0开始的1个寄存器值 84 0A - 循环冗余校验,是modbus的校验公式,从首个字节开始到84前面为止; 回复数据解析 01 - 地址,也就是你传感器的地址 03 - 功功能码,03代表查询功能,查询传感器的数据。这里要注意的是注意发给从机的功能码是啥,从机就要回复同样的功能码,如果不一样说明这一帧数据有错误 02 - 代表后面数据的字节数,因为上面说到,一个寄存器有2个字节,所以后面的字节数肯定是2*查询的寄存器个数; 19 98 - 寄存器的值是19 98,结合发送的数据看出,01这个寄存器的值为19 98 B2 7E - 循环冗余校验 基本流程: 发送:从机的地址+我要干嘛的功能码+我要查的寄存器的地址+我要查的寄存器地址的个数+校验码 回复:从机的地址+主机发我的功能码+要发送给主机数据的字节数+数据+校验码 功能码0x06(写) 如果我要修改从机的数据呢?那么这个协议有吗,答案是Yes! 主机发送: 01 06 00 00 00 01 48 0A 从机回复: 01 06 00 00 00 01 48 0A 发送数据解析 01-主机要查询的从机地址 06-功能码,06代表修改单个寄存器功能,修改有些不同,有修改一个寄存器和修改多个寄存器; 00 00-代表修改的起始寄存器地址.说明从0x0000开始. 00 01-代表修改的值为00 01.结合前面的00 00,意思就是修改0号寄存器值为00 01; 48 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到48前面为止; 回复数据解析 01-从机返回给主机自己的地址,说明这就是主机查的从机 06-功能码,代表修改单个寄存器功能,主机发啥功能码,从机就必须回什么功能码; 00 00-代表修改的起始寄存器地址.说明是0x0000. 00 01-代表修改的值为00 01.结合前面的00 00,意思就是修改0号寄存器值为00 01; 48 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到48前面为止; 常用功能码详解 常用功能码表格 功能码名称数据类型作用0x01读线圈寄存器位取得一组逻辑线圈的当前状态(ON/OFF)0x02读离散输入寄存器位取得一组开关输入的当前状态(ON/OFF)0x03读保持寄存器整型、浮点型、字符型在一个或多个保持寄存器中取得当前的二进制值0x04读输入寄存器整型、浮点型在一个或多个输入寄存器中取得当前的二进制值0x05写单个线圈寄存器位强置一个逻辑线圈的通断状态0x06写单个保持寄存器整型、浮点型、字符型把具体二进制值装入一个保持寄存器0x0F写多个线圈寄存器位强置一串连续逻辑线圈的通断0x10写多个保持寄存器整型、浮点型、字符型把具体的二进制值装入一串连续的保持寄存器 01H-读线圈状态 1)描述:读从机线圈寄存器,位操作,可读单个或者多个;2)发送指令:假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下: 3)响应:返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图; 上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式; data2表示地址0x002b-0x0033的线圈状态,如下表: data3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表: 02H-读离散输入状态 1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省; 03H-读保持寄存器 1)描述:读保持寄存器,字节指令操作,可读单个或者多个;2)发送指令:从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器 3)响应: 数据存储顺序 04H-读输入寄存器 1)描述:读输入寄存器,字节指令操作,可读单个或者多个;2)发送指令:同03H;3)响应:同03H; 05H-写单个线圈 1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF2)发送指令:设置0x0032线圈为ON; 3)响应:同发送指令; 06H-写单个保持寄存器 1)描述:写单个保持寄存器,字节指令操作,只能写一个;2)发送指令:写0x0032保持寄存器为0x1232; 3)响应:同发送指令; 0F-写多个线圈 1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。2)发送指令:线圈地址为0x04a5,写12个线圈, 上图中DATA1为0x0c,表示: DATA2为0x02,不够8位,字节高位填充0: 3)响应: 10H-写多个保持寄存器 1)描述:写多个保持寄存器,字节指令操作,可写多个;2)发送指令:保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据; 3)响应: --- ### 74. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ModbusTCP与Modbus UDP的报文格式是一样的,它们之间的区别其实就是TCP与UDP的区别,因此下面就针对ModbusTCP的协议进行分析,Modbus TCP与Modbus Rtu(ModbusASCII)之间的区别如下图: 从上图可以看出,ModbusTCP在Modbus串行通信的基础上,去除了校验(由于TCP本身就带有校验和)和设备地址(ModbusTCP弱化了设备地址,用IP地址来取代),再加上MBAP报文头(占7 bytes),下面针对MBAP进行分析说明: 域长度说明客户机服务器事务处理标识符2字节Modbus请求/响应事务处理的标识客户机启动复制响应协议标识符2字节0=Modbus协议客户机启动复制响应长度2字节长度之后的字节总数客户机启动服务器启动单元标识符1字节串行链路或其它总线的从站识别客户端启动复制响应 下面针对具体报文进行分析,Modbus协议在以太网链路上的报文格式如下所示: 事务处理标识符协议标识符长度单元标识符功能码数据2 bytes2 bytes2 bytes1 byte1 byteN bytes 有了以上理论基础之后,下面针对各个功能码进行详细分析: 读取输出线圈 发送报文格式如下: 发送报文含义:读取服务器1号从站输出线圈,起始地址为0x13=19,对应地址为00020,线圈数量为0x1B=27,即读取1号从站输出线圈,地址从00020-00046,共27个线圈的状态值。 这里值得注意一下,协议中的起始地址指的是索引,后面的地址指的是具体地址,对于任意一个存储区,索引都是从0开始的,但是对应的具体地址,与存储区是相关的,比如输出线圈,0对应00001;输入线圈,0对应10001;输入寄存器,0对应30001;保持寄存器,0对应40001。 返回报文格式如下: 返回报文含义:返回服务器1号从站输出线圈00020-00046,共27个线圈的状态值,返回字节数为4个,分别为CD 6B B2 05。 CD=1100 1101 对应 00020-00027 6B=0110 1011 对应 00028-00035 B2=1011 0010 对应 00036-00043 05=0000 0101 对应 00044-00046 读取输入线圈 发送报文格式如下: 发送报文含义:读取服务器1号从站输入线圈,起始地址为0xC4=196,对应地址为10197,线圈数量为0x1D=29,即读取1号从站输入线圈,地址从10197-10225,共29个线圈的状态值。 返回报文格式如下: 返回报文含义:返回服务器1号从站输入线圈10197-10225,共29个线圈的状态值,返回字节数为4个,分别为CD 6B B2 05。 CD=1100 1101 对应 10197-10204 6B=0110 1011 对应 10205-10212 B2=1011 0010 对应 10213-10220 05=0000 0101 对应 10221-10225 读取保持寄存器 发送报文格式如下: 发送报文含义:读取服务器1号从站保持寄存器,起始地址为0x6B=107,对应地址为40108,寄存器数量为0x02=2,即读取1号从站保持寄存器,地址从40108-40109,共2个寄存器的数值。 返回报文格式如下: 返回报文含义:返回服务器1号从站保持寄存器40108-40109,共2个寄存器的数值,返回字节数为4个,分别为02 2B 01 06,40108对应数值为0x022B,40109对应数值为0x0106。 读取输入寄存器 发送报文格式如下: 发送报文含义:读取服务器1号从站输入寄存器,起始地址为0x6B=107,对应地址为30108,寄存器数量为0x02=2,即读取1号从站保持寄存器,地址从30108-30109,共2个寄存器的数值。 返回报文格式如下: 返回报文含义:返回服务器1号从站输入寄存器30108-30109,共2个寄存器的数值,返回字节数为4个,分别为02 2B 01 06,30108对应数值为0x022B,30109对应数值为0x0106。 预置单线圈 发送报文格式如下: 发送报文含义:预置服务器1号从站单个线圈的值,线圈地址为0x00AC=172,对应地址为00173,断通标志0xFF00表示置位,0x000表示复位,即置位1号从站输出线圈00173。 返回报文格式如下: 返回报文含义:预置单输出线圈原报文返回。 预置单寄存器 发送报文格式如下: 发送报文含义:预置服务器1号从站单个保持寄存器的值,寄存器地址为0x0087=135,对应地址为40136,写入值为0x039E,即预置1号从站保持寄存器40136值为0x039E。 返回报文格式如下: 返回报文含义:预置单保持寄存器原报文返回。 预置多线圈 发送报文格式如下: 发送报文含义:预置服务器1号从站多个线圈的值,线圈地址为0x0013=19,对应地址为00020,线圈数为0x0A=10,写入值为0xCD00,即预置1号从站线圈00020-00027=0xCD=1100 1101,00028-00029=0x00=0000 0000。 返回报文格式如下: 返回报文含义:预置多输出线圈返回报文是在原报文基础上除去字节数及具体字节后返回。 预置多寄存器 发送报文格式如下: 发送报文含义:预置服务器1号从站多个寄存器的值,寄存器地址为0x0087=135,起始地址为40136,寄存器数量为0x02=2,结束地址为40137,写入值为0xCD00和0x0A10,即预置1号从站寄存器40136=0x0105,40137=0x0A10。 返回报文格式如下: 返回报文含义:预置多保持寄存器返回报文是在原报文基础上除去字节数及具体字节后返回。 --- ### 75. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus通信协议是工业自动化中常用的协议,它允许主设备(通常是客户端)与从设备(通常是服务器)之间进行数据交换。在Modbus通信中,服务器(从设备)必须生成适当的响应来处理请求,并在必要时发送异常响应。本文将深入探讨Modbus响应的生成和异常处理。 Modbus响应类型 Modbus通信中,根据请求的处理结果,可以生成两种类型的响应: 肯定的Modbus响应:这是正常的响应,表示服务器成功处理了请求。在这种情况下,响应的功能码与请求的功能码相同。 Modbus异常响应:这种响应用于指示出现了错误或异常情况。异常响应的功能码等于请求的功能码加上0x80,以便客户端可以识别异常响应。 Modbus异常响应的目的 Modbus异常响应的主要目的是向客户端提供与请求处理过程中检测到的错误相关的信息。它帮助客户端了解通信问题的具体原因,从而采取适当的措施来处理这些问题。 Modbus异常响应的异常码 异常响应中包含一个异常码,用于明确指示出现错误的原因。以下是常见的Modbus异常代码及其含义: 异常码 01 (0x01) - 非法的功能码:表示服务器不了解或无法处理请求中的功能码。通常意味着从设备不支持此功能码。 异常码 02 (0x02) - 非法的数据地址:指示请求中包含的数据地址不在从设备的授权地址范围内,因此请求的地址无效。 异常码 03 (0x03) - 非法的数据值:表示请求中包含的数据值不在从设备的允许值范围内,因此数据值无效。 异常码 04 (0x04) - 服务器故障:指示服务器在执行请求的操作时发生了无法修复的故障,无法继续操作。 异常码 05 (0x05) - 确认:表示服务器已接收请求,但需要更多时间来完成操作。客户端应等待服务器完成处理。 异常码 06 (0x06) - 服务器繁忙:表示服务器正忙于处理其他命令,客户端应稍后重新发送请求。 异常码 0A (0x0A) - 网关故障:指示网关或路由器的路径无效,可能是网关过载或未正确配置。 异常码 0B (0x0B) - 网关目标设备未能响应:表示在网络中找不到目标从设备。 生成Modbus响应 为生成Modbus响应,服务器必须首先解析请求,然后根据请求的内容和处理结果构建响应帧。响应帧必须以MBAP报文头为前缀,使用事务处理正文中的数据生成MBAP报文头。具体步骤包括: 拷贝请求中的单元标识符,并将其存储在事务处理的正文中。 计算Modbus PDU和单元标识符字段的大小,并在"长度"域中设置该值。 设置协议标识符域为0x0000(表示Modbus协议)。 设置事务处理标识符域为与初始请求相关的值,并将其存储。 生成的Modbus响应帧需要通过TCP连接发送到正确的Modbus客户端,以完成通信过程。 总结: Modbus通信中,生成适当的响应对于确保通信的成功非常重要。正常响应和异常响应都有其特定的功能码和异常代码,以便客户端了解请求处理的结果和出现的错误。服务器必须按照协议规定生成响应,并在需要时发送异常响应,以确保通信的可靠性和稳定性。 --- ### 76. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在Modbus协议中嵌入时间戳需要一些谨慎考虑,因为Modbus本身没有定义专门的时间戳对象。以下是如何在Modbus(RS485)通信中发送时间戳的一些建议方法和步骤: 如何在Modbus (RS485)通信中发送时间戳 在工业自动化和远程监测应用中,时间戳对于确切的数据关联至关重要。尤其是在Modbus通信中,没有内置的时间戳机制,因此需要特别关注如何嵌入时间戳。以下是实现这一目标的方法和步骤: 步骤1:选择时间戳格式 首先,您需要选择适当的时间戳格式。常见的时间戳格式之一是使用POSIX(或Unix)时间戳,它通常以整数或浮点数形式表示。如果您只需要秒级精度,整数格式可能足够,但如果需要毫秒级精度,可以考虑使用浮点数格式。 步骤2:选择数据类型 在Modbus中,您可以选择使用整数或浮点数数据类型来表示时间戳。对于秒、分钟和小时等时间单位,使用整数数据类型是合理的选择。但如果您想将时间戳表示为浮点数以获得更高的精度(如毫秒级),可以使用32位浮点数。 步骤3:时间戳的编码 如果您选择使用整数数据类型,可以将时间戳的各个时间单位编码为不同的整数寄存器。例如,将秒、分钟、小时、日、月和年分别编码为不同的16位整数寄存器。确保PLC程序和SCADA系统都能够正确解析这些整数寄存器并将它们组合成一个时间戳。 如果选择使用32位浮点数表示时间戳,您需要编写代码来将时间单位转化为浮点数,然后将它们组合成一个32位浮点数。浮点数表示的时间戳可以提供更高的精度,但需要注意浮点数精度的限制。 步骤4:协议一致性 确保在Modbus通信的客户端(master)和服务器(slave)之间存在协议一致性。这意味着它们都应该了解时间戳的格式和数据类型,以正确地解释和处理时间戳信息。如果您是Modbus设备的制造商,确保在设备文档中明确定义时间戳的编码和格式。 结论 在Modbus(RS485)通信中嵌入时间戳是一项复杂任务,它有助于确切地关联数据和事件的时间。选择适当的时间戳格式和数据类型,并确保设备之间的协议一致性是实现时间戳嵌入的关键步骤。根据需要的精度,可以选择使用整数或浮点数,并编写适当的代码来实现时间戳的编码和解码。这将提高工业自动化应用的数据可信度和可用性。 --- ### 77. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 当你涉及工业自动化、传感器和设备之间的通信时,Modbus协议通常会出现在你的工具箱中。Modbus是一种用于读取和控制设备数据的通信协议,它在工业控制系统中得到了广泛的应用。现在,让我们以小白理解的方式来解释Modbus如何读取保持寄存器的数据,包括单个寄存器和多个寄存器的读取。 什么是Modbus? Modbus是一种通信协议,用于连接各种工业设备、传感器和控制器。它允许这些设备之间进行数据交换,以实现监控、控制和数据采集。Modbus协议有不同的变种,包括Modbus RTU、Modbus ASCII和Modbus TCP/IP,但它们都遵循相似的原则。 保持寄存器是什么? 在Modbus通信中,数据通常存储在设备内的保持寄存器中。这些寄存器可以包含各种信息,如温度、湿度、电流等。要读取这些数据,我们需要了解如何与这些保持寄存器进行通信。 读取单个保持寄存器 当使用Modbus协议从Modbus从机(设备)读取单个保持寄存器时,需要指定从机地址、功能码以及保持寄存器的地址。以下是一个示例,将演示如何读取单个保持寄存器,包括从机地址和完整的Modbus RTU协议帧。 示例: 假设我们要从从机地址为1的Modbus设备中读取地址为0002的保持寄存器的值。具体步骤如下: 首先,我们需要构建一个Modbus RTU协议帧,该帧包括以下内容: 从机地址:1 功能码:03(读取保持寄存器) 起始寄存器地址:0002 读取的寄存器数量:0001 CRC校验(循环冗余校验) 构建完成后,协议帧如下所示: 从机地址: 01 功能码: 03 寄存器地址: 00 02 寄存器数量: 00 01 CRC校验: [根据前面的数据计算得出] 接下来,我们将该协议帧发送到Modbus从机。从机接收到请求后会进行处理。 从机响应请求,并返回保持寄存器的值。响应包括: 功能码:03 数据字节数:02(2个字节) 寄存器值:高字节为02,低字节为50 CRC校验 响应数据包如下所示: 功能码: 03 数据字节数: 02 寄存器值: 02 50 CRC校验: [根据前面的数据计算得出] 通过这个示例,我们成功地读取了从机地址为1的Modbus设备的保持寄存器0002的值,该值为0250。完整的Modbus RTU协议帧涵盖了从机地址、功能码、寄存器地址、数据字节数和CRC校验,这些信息是Modbus通信中的重要部分。请注意,CRC校验用于确保通信的完整性。 这个示例可以帮助你理解如何使用Modbus协议从Modbus从机读取单个保持寄存器的值,同时包括了完整的协议帧结构。希望这对你有所帮助。 读取多个保持寄存器 当使用Modbus协议从Modbus从机(设备)读取多个保持寄存器时,需要指定从机地址、功能码、起始寄存器地址以及要读取的寄存器数量。以下是一个示例,将演示如何读取多个保持寄存器,包括从机地址和完整的Modbus RTU协议帧。 示例: 假设我们要从从机地址为1的Modbus设备中读取从地址0002开始的3个连续保持寄存器的值。具体步骤如下: 首先,我们需要构建一个Modbus RTU协议帧,该帧包括以下内容: 从机地址:1 功能码:03(读取保持寄存器) 起始寄存器地址:0002 从00 02 开始 读取的寄存器数量:0003 读取3个数量 CRC校验(循环冗余校验) 构建完成后,协议帧如下所示: 从机地址: 01 功能码: 03 起始寄存器地址: 00 02 寄存器数量: 00 03 CRC校验: [根据前面的数据计算得出] 接下来,我们将该协议帧发送到Modbus从机。从机接收到请求后会进行处理。 从机响应请求,并返回请求的多个保持寄存器的值。响应包括: 功能码:03 数据字节数:06(6个字节) 寄存器值:每个寄存器占2个字节 CRC校验 响应数据包如下所示: 功能码: 03 数据字节数: 06 寄存器值: [高字节低字节,高字节低字节,高字节低字节] CRC校验: [根据前面的数据计算得出] 例如,第一个寄存器的值为:0x0250,第二个寄存器的值为:0x03E8,第三个寄存器的值为:0x000A。 通过这个示例,我们成功地读取了从机地址为1的Modbus设备的从寄存器0002开始的3个连续保持寄存器的值。完整的Modbus RTU协议帧涵盖了从机地址、功能码、起始寄存器地址、数据字节数和CRC校验,这些信息是Modbus通信中的重要部分。希望这对你有所帮助,同时了解如何使用Modbus协议从Modbus从机读取多个连续的保持寄存器的值。 总结 这些示例帮助我们理解了如何使用Modbus协议来读取单个和多个保持寄存器的数据。请注意,实际的Modbus通信可能会涉及更多细节和配置,但这个简单的解释可以帮助初学者理解Modbus的基本原理。 总之,Modbus是一种强大的通信协议,适用于工业自动化和设备控制。它使得各种设备能够相互通信,实现数据采集和控制操作。希望这个小白理解的介绍能够帮助你更好地理解Modbus协议的读取操作。 --- ### 78. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是 Modbus? Modbus 是一种串行通信协议,由 Modicon 公司于 1979 年发布,用于与其可编程逻辑控制器(PLC)一起使用。简而言之,它是用于在电子设备之间的串行线路上传输信息的方法。请求信息的设备被称为 Modbus 客户端,提供信息的设备是 Modbus 服务器。在标准 Modbus 网络中,有一个客户端和多达 247 个服务器,每个服务器都有从 1 到 247 的唯一服务器地址。客户端还可以向服务器写入信息。 它用于什么? Modbus 是一种开放协议,这意味着制造商可以在其设备中构建它,而无需支付专利费用。它已成为工业界的标准通信协议,并现在是连接工业电子设备的最常见手段。它被广泛用于许多制造商的各个行业。Modbus 通常用于从仪器和控制设备传输信号到主控制器或数据采集系统,例如用于测量温度和湿度并将结果传输到计算机的系统。Modbus 通常用于将监控计算机与远程终端单元(RTU)连接在一起,这在监控和数据采集(SCADA)系统中使用。Modbus 协议的版本存在于串行线路(Modbus RTU 和 Modbus ASCII)和以太网(Modbus TCP)中。 它如何工作? Modbus 是在设备之间通过串行线路传输的。最简单的设置是单个串行电缆连接两个设备的串行端口,即客户端和服务器。 数据被发送为一系列称为位的一和零。每个位都作为电压发送。零以正电压发送,而一以负电压发送。这些位发送得非常快。典型的传输速度为 9600 波特率(每秒位数)。 什么是十六进制? 在解决问题时,查看实际的原始数据被发送是有帮助的。长串的1和0很难阅读,所以位被组合并以十六进制形式显示。每个 4 位块由从 0 到 F 的十六个字符之一表示。 每个 8 位块(称为字节)由从 00 到 FF 的 256 个字符对之一表示。 数据如何存储在标准 Modbus 中? 信息存储在服务器设备中,有四种不同的表。两个表存储开/关的离散值(线圈),而另外两个表存储数字值(寄存器)。线圈和寄存器都有只读表和读写表。每个表有 9999 个值。每个线圈或接点都是 1 位,并分配了数据地址从 0000 到 270E。每个寄存器都是 1 字 = 16 位 = 2 字节,也有数据地址从 0000 到 270E。 线圈/寄存器编号可以被看作是位置名称,因为它们不出现在实际的消息中。数据地址用于消息中。例如,第一个保持寄存器,编号为 40001,具有数据地址 0000。这两个值之间的差异是偏移量。每个表都有不同的偏移量,分别为 1、10001、30001 和 40001。 服务器 ID 是什么? 网络中的每个服务器都被分配一个唯一的单元地址,从 1 到 247。当客户端请求数据时,它发送的第一个字节是服务器地址。这样,每个服务器在第一个字节后就知道是否要忽略消息。 什么是功能码? 客户端发送的第二个字节是功能码。这个数字告诉服务器要访问哪个表,以及是从表中读取还是写入。 CRC 是什么? CRC 代表循环冗余检查。它是添加到每个 Modbus 消息末尾以用于错误检测的两个字节。消息中的每个字节都用于计算 CRC。接收设备还计算 CRC 并将其与发送设备的 CRC 进行比较。如果消息中的一个位接收错误,CRC 将不同,将导致错误。 Modbus 命令和响应的格式是什么? 数据类型是什么? FC03 的示例显示,寄存器 40108 包含 AE41,它转换为 16 位 1010 1110 0100 0001。但这是什么意思?嗯,它可以表示几种不同的 16 位数据类型: 16 位无符号整数(介于 0 到 65535 之间的整数)寄存器 40108 包含 AE41 = 44609(十六进制转十进制) 16 位有符号整数(介于 -32768 到 32767 之间的整数)AE41 = -20927(将十六进制转换为十进制后的包装,如果大于 32767,则减去 65536) 两个字符的 ASCII 字符串(2 个字符字母)AE41 = ® A 离散的开/关值(与 16 位整数相同,具有值 0 或 1。十六进制数据将是 0000 或 0001)寄存器 40108 还可以与 40109 结合以形成这些 32 位数据类型中的任何一种: 32 位无符号整数(介于 0 到 4,294,967,295 之间的数字)40108,40109 = AE41 5652 = 2,923,517,522 32 位有符号整数(介于 -2,147,483,648 到 2,147,483,647 之间的数字)AE41 5652 = -1,371,449,774 32 位双精度 IEEE 浮点数。这是一个允许使用约七位小数的 32 位数表示任何实数(带有小数点的数字)的数学公式。AE41 5652 = -4.395978E-11。这是一个用于 4 字节或 2 个字的输入的 IEEE 浮点计算器。要下载副本,请右键单击并选择“另存为…”。 四个字符的 ASCII 字符串(4 个字符字母)AE41 5652 = ® A V R更多寄存器可以组合以形成更长的 ASCII 字符串。每个寄存器用于存储两个 ASCII 字符(两个字节)。 字节和字排序是什么? Modbus 规范没有精确定义数据存储在寄存器中的方式。因此,一些制造商在其设备中实现了 Modbus 以存储和传输高字节,然后是低字节(AE 在 41 之前)。 另外,其他设备存储并传输低字节(41 在 AE 之前)。同样,当寄存器组合以表示 32 位数据类型时,一些设备将高 16 位(高字)存储在第一个寄存器中,剩下的低字存储在第二个寄存器中(AE41 在 5652 之前),而其他设备则相反(5652 在 AE41 之前)。 字节或字以任何顺序发送无所谓,只要接收设备知道期望的方式是哪一种。例如,如果要将 29,235,175,522 作为 32 位无符号整数发送,它可以以这四种方式之一排列。 AE41 5652 高字节在前 高字在前 5652 AE41 高字节在前 低字在前 41AE 5256 低字节在前 高字在前 5256 41AE 低字节在前 低字在前 什么是 Modbus 映射? Modbus 映射只是为一个个体服务器设备定义的列表,它定义了数据是什么(例如压力或温度读数),数据存储在哪里(哪个表和数据地址) 数据如何存储(数据类型、字节和字排序) 一些设备内置了制造商定义的固定地图。而其他设备允许操作员配置或编程自定义地图以满足其需求 Modbus ASCII 和 Modbus RTU 之间有什么区别? Modbus RTU 和 Modbus ASCII 使用相同的协议。唯一的区别是在电线上传输的字节与 RTU 以二进制形式呈现,并且使用 Modbus RTU 时以可读的 ASCII 形式呈现。需要注意的是,RTU 消息没有Start_of_text 标志。通信中的接收方使用“静默”时间来确定新消息的开始。ASCII 具有文本标记。二进制消息比 ASCII 消息要短,因此在理论上传输/接收速度更快。您可能会对 HMI/SCADA 中的更新速度约 100 毫秒感到满意,可以选择任何一种通信方式。 总结:一般情况推荐使用 RTU;如果在 WinNT 上使用 RTU 出现超时问题或者使用较慢的通信媒体,如 300 bps 或拨号调制解调器时,请使用 ASCII。对于 Modbus 的大多数 OPC 服务器支持 ASCII 和 RTU 通信。 什么是扩展寄存器地址? 由于模拟输出保持寄存器的范围为 40001 到 49999,这意味着寄存器不能超过 9999 个。虽然这通常对大多数应用足够,但也有一些情况下需要更多的寄存器。寄存器 40001 到 49999 对应数据地址 0000 到 270E。如果我们使用剩余的数据地址 270F 到 FFFF,将有多达 6 倍多的寄存器可用,总计 65536 个。这将对应于寄存器编号从 40001 到 105536。许多 Modbus 软件驱动程序(用于客户端 PC)是根据 40001 到 49999 的限制编写的,无法访问服务器设备中的扩展寄存器。而且,许多服务器设备不支持使用扩展寄存器的地图。但另一方面,某些服务器设备支持这些寄存器,某些客户端软件可以访问它,尤其是如果编写了自定义软件。 如何使用 2 字节服务器地址? 由于通常使用一个字节来定义服务器地址,并且网络上的每个服务器都需要唯一的地址,所以网络上的服务器数量是有限的,最多为 256。Modbus 规范中定义的限制甚至更低,为 247。要超越这个限制,可以对协议进行修改,以使用两个字节作为地址。客户端和服务器都需要支持此修改。使用两字节地址可以将网络中服务器的数量限制扩展到 65535。默认情况下,Simply Modbus 软件使用 1 字节地址。输入地址大于 255 时,软件会自动切换到 2 字节地址,并保持在此模式下,直到手动关闭 2 字节寻址。 如何发送事件和历史数据? Enron Modbus 包括用于移动事件和历史数据的命令。 什么是 Enron Modbus? Enron Modbus 是由 Enron 公司开发的对标准 Modicon Modbus 通信协议的修改。请参阅 Enron Modbus 以获取详细信息。 --- ### 79. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是 Modbus® 协议? Modbus 协议是由 Modicon 于 1979 年开发的一种消息传递结构。它用于在智能设备之间建立客户端-服务器通信。它是一种事实上的标准,真正开放,并且是工业制造环境中最广泛使用的网络协议。数百家供应商已在数千种不同的设备上实施了它,用于在控制设备之间传输离散/模拟 I/O 和寄存器数据。它是不同制造商之间的共通语言或共同的公共标准。一份报告将其称为"多供应商集成的事实标准"。行业分析师报道在北美和欧洲单独拥有 700 万个 Modbus 节点。 Modbus® 用在哪里? Modbus 在多个客户端-服务器应用中用于监控和编程设备;用于智能设备、传感器和仪器之间的通信;用于使用 PC 和人机界面监视现场设备。Modbus 也是需要无线通信的 RTU 应用的理想协议。因此,它被广泛应用于无数的天然气、石油和变电站应用。但 Modbus 不仅仅是一种工业协议。建筑、基础设施、交通和能源应用也充分利用其优势。 什么是 Modbus TCP/IP 协议? TCP/IP 是互联网的常见传输协议,实际上是一组分层协议,提供了机器之间的可靠数据传输机制。Ethernet 已成为公司企业系统的事实标准,因此它也成为了工厂网络的事实标准。Ethernet 不是一种新技术,它已经成熟到可以实施这种网络解决方案的成本与当今的现场总线相当。为了将 Modbus 带入 21 世纪,于 1999 年制定了一个开放的 Modbus TCP/IP 规范。该协议规范和实施指南可供下载(www.modbus.org/specs)。 将功能丰富、可扩展且无处不在的物理网络(Ethernet)与通用网络标准(TCP/IP)以及厂商中立的数据表示结合起来,Modbus 为进程数据交换提供了一个真正的开放、可访问的网络。对于支持 TCP/IP 套接字的任何设备来说,它都很容易实现。 Modbus TCP/IP 用在哪里? Modbus TCP/IP 由于其开放性、简单性、低成本开发以及支持它所需的最低硬件而变得无处不在。市场上有数百种 Modbus TCP/IP 设备,每年还在开发更多。它用于设备之间交换信息、监视它们并对其进行编程。它还用于管理分布式 I/O,是此类设备制造商首选的协议。 为什么应该使用 Modbus TCP/IP? 在选择设备的网络时,Modbus TCP/IP 提供了几个显著的优势: 简单性: Modbus TCP/IP 只是在 Modbus 指令集周围包装 TCP/IP。如果您已经有 Modbus 驱动程序并且了解以太网和 TCP/IP 套接字,您可以在几小时内启动并与 PC 进行通信。开发成本异常低。只需最少的硬件,可以在任何操作系统下轻松进行开发。 标准以太网: 无需特殊芯片组,您可以使用标准 PC 以太网卡与您新实施的设备进行通信。随着以太网的成本降低,您从硬件价格降低中受益,性能从 10 Mb 到 100 Mb 甚至不久后的 1 Gb 改善,您的技术也随之提升,保护了您的投资。您不再受限于供应商的支持,而是从全球数千名开发人员那里获得了支持,他们正在将以太网和互联网变成未来的网络工具。这个努力还得到了时机恰当的补充,即为 Modbus TCP/IP 协议分配了著名的以太网端口 502。 开放性: Modbus 协议在 2004 年从施耐德电气转移到 Modbus 组织,标志着开放性的承诺。规范可免费下载,使用 Modbus 或 Modbus TCP/IP 协议不需要后续的许可费。附加的示例代码、实现示例和诊断信息可以在 Modbus TCP 工具包上获得,这是 Modbus 组织成员的免费福利,也可供非会员购买。 许多设备可用: 不同供应商的设备之间的互操作性和对大量已安装的支持 Modbus 兼容设备的兼容性使 Modbus 成为极佳的选择。 如何实现 Modbus TCP/IP 设备? 要实现 Modbus® TCP/IP 设备,可以从网站下载 Modbus TCP/IP 协议规范和 Modbus TCP/IP 实现指南。您还需要了解如何实施 TCP 驱动程序的基础知识。要测试您的驱动程序,您需要至少两台设备:一个服务器和一个客户端,用于交换信息。这可以是两台使用标准以太网卡相互通信的 PC,也可以是一台 PC 与一个嵌入式微型计算机上的传感器或设备进行通信。 我可以在互联网上使用 Modbus TCP/IP 吗? Modbus TCP/IP 是一种互联网协议。TCP/IP 作为互联网的传输协议意味着 Modbus TCP/IP 可以在互联网上使用。它被设计用于实现这一目标。在实际操作中,这意味着安装在欧洲的 Modbus TCP/IP 设备可以从世界任何地方通过互联网进行寻址。这对于设备供应商或最终用户的影响是无穷无尽的。使用 PC 和浏览器远程维护和修理设备可以降低支持成本并提高客户服务。从家中登录到工厂的控制系统,使维修工程师最大程度地提高工厂的正常运行时间并减少在现场的时间。使用商业可用的互联网/内联技术,管理地理分布式系统变得容易。 现有的 Modbus 设备能够与 Modbus TCP/IP 通信吗? 由于 Modbus TCP/IP 只是具有 TCP 封装的 Modbus 协议,因此现有的 Modbus 设备非常简单地能够通过 Modbus TCP/IP 进行通信。需要使用网关设备将当前物理层(RS232、RS485 或其他)转换为以太网,将 Modbus 协议转换为 Modbus TCP/IP。这样的网关设备可以使用 PC 实现。商业产品可以从多家不同制造商处获得。Modbus 设备数据库可以帮助您识别网关和其他 Modbus 设备。 我可以期望从 Modbus TCP/IP 系统中获得什么性能? 性能取决于网络和硬件。如果在互联网上运行 Modbus TCP/IP,则不会比典型的互联网响应时间更好。但是,对于调试和维护目的的通信来说,这可能是完全足够的,并且可以避免您不得不在周日早上坐飞机或前往现场的情况。 对于具有高速以太网交换机以保证性能的高性能企业内部网络来说,情况完全不同。在理论上,Modbus TCP/IP 可以在大规模寄存器传输时以高达 250/(250+70+70) 或约 60% 的效率传输数据。由于 10BaseT 以太网可传输约 1.25 Mbps,理论吞吐量为 1.25M/2 * 60% = 每秒 360,000 寄存器,而 100BaseT 速度高出 10 倍。 这假设您正在使用可以像可用带宽一样快速提供以太网服务的设备。施 耐德电气进行的实际测试使用具有以太网 I/O 的 MOMENTUM™ 以太网 PLC,演示了每秒可以扫描多达 4000 个 I/O 基数,每个 I/O 基数最多具有 16 个 12 位模拟 I/O 或 32 个离散 I/O。一毫秒内可以更新四个基数。尽管这低于上面计算的理论限制,但请记住,经测试的设备仅以 50 MHz 运行的 80186 CPU,并具有 3 MIPS 的有效计算能力(与 500 MHz 、700 MIPS 的奔腾相比)。然而,这些结果比迄今为止使用专有 I/O 扫描方法的速度要快。随着低端 CPU 的成本降低,像 Momentum 类型设备将逐渐接近理论限制,尽管它们永远不会达到它,因为极限将继续被推得更远,例如 1 千兆以太网、10 千兆以太网等。与其他现场总线不同,它们天生被困在一个速度上。 如何获得 Modbus 和 Modbus TCP/IP 的支持? 如果您已购买支持任何类型 Modbus 协议的产品,请联系该产品的供应商寻求支持。如果您有关于 Modbus 协议的一般问题,请使用 Modbus 讨论论坛来获取答案。Modbus 组织目前尚未提供技术支持。 --- ### 80. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ModLink ModLink是一套原生VCL组件,允许您在使用Borland Delphi创建的应用程序中集成通过Modbus协议在各种网络上的通信能力。关于目前支持的所有功能的详细列表,请查阅该网站。 MBServer - 免费的ActiveX Modbus主控制器 MBServer是一个免费的外部进程ActiveX自动化服务器,旨在与使用Modbus (RTU/ASCII)协议或Modbus TCP协议的PLCs或其他工业设备进行通信。 LibModbus - Linux动态库 这是一个适用于Linux、Mac OS X、FreeBSD、QNX和Win32的Modbus库。这个库是用C编写的,支持RTU(串行)和TCP(以太网)通信。libmodbus的许可证是LGPL v3,而测试目录中的程序的许可证是GPL v3。 Jamod - Java Modbus实现 由Dieter Wimberger实现的Java Modbus库。 Paul McCrae - 代码示例 为Linux Modbus RTU通信提供的C、VB和Visual C++代码示例。 MODBUS Serial RTU模拟器 Modbus串行RTU模拟器。可在Visual C++ 6.0下编译,并在Windows 2000以及可能的95/98上运行。 Modpoll Modbus轮询工具 FieldTalk™实用程序modpoll是一个基于命令行的Modbus主模拟器和测试实用程序。modpoll运行在Linux内核2.2.0或更高版本、QNX RTOS 6.0.0或更高版本、QNX 4.23A以及QNX TCP/IP 4.22或更高版本以及Win32上。其他平台可根据需求提供。 Modbus RTU和TCP ActiveX控件 提供与连接到PC串行端口的Modbus/RTU服务器设备通信的ActiveX控件。 Triangle MicroWorks'通信协议测试工具 Triangle MicroWorks'通信协议测试工具是一个Windows应用程序,可以充当典型的客户端或服务器设备。它可以通过图形用户界面(GUI)和Tcl/Tk脚本进行配置,以提供自动化测试或模拟您的设备。Tcl/Tk脚本可以用来执行由每个协议的技术委员会发布的符合性测试程序。该公司还提供通信协议软件库、协议网关和OPC驱动程序,支持如Modbus、DNP3和IEC 60870-5等行业标准通信协议。 Modicon SA85 Linux内核驱动程序 这是一个适用于Modicon ISA SA85和PCI-85卡的Linux内核(2.2.19+,2.4.7+)驱动程序。它采用BSD许可。其中包括驱动程序和一个示例客户端的源代码。 "Modbus Poll" for Windows 95/98/ME/2000/XP 一个名为"Modbus Poll"的共享软件,专为Windows 95/98/ME/2000/XP设计,主要用于帮助Modbus服务器设备的开发者或其他想要测试仪器设备的人。通过多文档接口,您可以同时监控多个Modbus服务器和/或数据区域。 Modbus客户端和服务器ActiveX控件 提供通过Modbus/TCP、RTU、ASCII和Plus进行Modbus客户端和服务器通信的ActiveX控件。 Modbus TCP、RTU、ASCII和Plus C++库 Modbus TCP、RTU、ASCII和Plus协议库。库支持所有Modbus函数,为串行线路、以太网或标准IP网络提供简单的API。 FieldServer工具 FieldServer Technologies提供了Modbus和超过100种其他协议之间的通信网关。此外,他们还提供了一套FieldServer工具,包括Modbus协议分析器、Modbus模拟器和更多。 Modbus工具 工具包括Modbus OPC服务器、Modbus模拟器、和更多。该网站提供了关于Modbus的背景信息,包括Modbus TCP、Modbus RTU和Modbus ASCII的详细说明。 Modbus驱动程序 以太网到Modbus RTU/ASCII网关允许以太网或TCP/IP网络上的Modbus主控制器通过Modbus RTU/ASCII协议与串行Modbus服务器设备通信。 "Modscan32"和"Modsim32" "Modscan32"是一个Windows应用程序,用于从任何Modbus/TCP服务器或Modbus RTU串行端口设备检索寄存器/线圈值。"Modsim32"是一个Windows应用程序,模拟Modbus服务器。 Modbus RTU和TCP ActiveX控件 提供与连接到PC串行端口的Modbus/RTU服务器设备或以太网上的Modbus/TCP服务器设备通信的ActiveX控制。 Wireshark Wireshark是一个网络协议分析器,也被广泛认为是业内最好的。它支持Windows、OS X、Linux和UNIX。Wireshark的主要用途是捕获和分析网络上的数据包。它还有一个强大的Modbus/TCP解码器。 simple-modbus 这是一套Arduino库,允许您使用Modicon Modbus RTU协议进行串行通信。库包括示例代码,显示如何从或向Modbus服务器读/写寄存器和线圈。 MSS Modbus TCP Server Simulator MSS是一个免费的Modbus服务器模拟软件,支持多种功能,并提供了丰富的模拟准备功能。可以模拟多个Modbus设备和多个数据区域。 --- ### 81. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus RTU协议描述 Modbus是基于主从结构的通信协议。它使用RS-485, RS-422, RS-232接口,以及Ethernet TCP/IP网络(Modbus TCP协议)进行数据传输。 Modbus RTU消息包括: SlaveID设备的地址 功能码 依赖于功能码的特殊数据 CRC-16(Modbus) 结构如下: SlaveID 功能码 特殊数据 CRC16 如果你去掉SlaveID地址和CRC-16(Modbus),你将得到PDU(协议数据单元)。 SlaveID是设备的地址,可以从0到247之间选择值。值得注意的是,从248到255的地址是保留的。 模块中的数据存储在四个表中,其中两个是只读的,另外两个是读写的。每个表可以容纳9999个值。 以下是表的总结: 离散输出线圈 (DO):读写;寄存器号1-9999;HEX地址范围0000到270E 离散输入触点 (DI):只读;寄存器号10001-19999;HEX地址范围0000到270E 模拟输入寄存器 (AI):只读;寄存器号30001-39999;HEX地址范围0000到270E 模拟输出保持寄存器 (AO):读写;寄存器号40001-49999;HEX地址范围0000到270E 每个表都有一个寄存器号(例如AO的40001),它对应于一个地址(例如0000)。这种差异被称为"偏移"。表的偏移量分别为1, 10001, 30001和40001。 以一个例子说明:从40108到40110寄存器为设备地址17获取AI值的Modbus RTU请求如下: 11 03 006B 0003 7687 这个分解如下: 11:SlaveID设备地址(十进制中的17或HEX中的11) 03:功能码 006B:第一个寄存器的地址(计算为40108-40001 = 107,这是HEX中的6B) 0003:所需的寄存器数量(从40108到40110获取三个寄存器) 7687:CRC校验和 Modbus RTU从设备会回复: 11 03 06 AE41 5652 4340 49AD 这转化为: 设备地址:11(或十进制中的17) 功能码:03 字节计数(表示后面跟随6字节):06 注册值AO0、AO1和AO2作为两字节序列 CRC值由49AD给出 模拟输出寄存器的值可以通过多种方式解释,例如: 作为16位无符号整数(范围0至65535) 作为16位有符号整数(范围-32768至32767) 作为两个字符的ASCII字符串 作为离散开/关值(0或1) 作为32位无符号整数(范围0到4,294,967,295) 作为32位有符号整数(范围-2,147,483,648至2,147,483,647) 作为32位单精度IEEE浮点数(范围1.2×10^−38至3.4×10^+38) 作为四字符ASCII字符串 Modbus RTU命令是什么? 以下是用于读取和写入Modbus RTU寄存器的代码表。 功能代码功能操作数据类型访问类型01 (0x01)读取DO离散输出线圈状态读取02 (0x02)读取DI离散输入状态读取03 (0x03)读取AO保持寄存器16位04 (0x04)读取AI输入寄存器16位05 (0x05)写入一个DO强制单线圈离散06 (0x06)写入一个AO预设单寄存器16位15 (0x0F)多DO写入强制多线圈离散16 (0x10)多AO写入预设多寄存器16位 如何发送Modbus RTU命令来读取离散输出?命令0x01 此命令用于读取DO数字输出的值。 PDU请求指定第一个DO寄存器的起始地址和后续所需的DO值数量。在PDU中,DO值从零开始寻址。 响应中的DO值为一个字节,对应位的值。 位值定义为1 = ON,0 = OFF。 第一个数据字节的低位包含在请求中指定地址的DO值。其余的DO值按照增加的值到字节的最高值。即从右到左。 如果请求的DO值少于八个,则响应中的其余位将填充为零(从低字节到高字节的方向)。字节计数进一步表示响应中数据的完整字节数。 一个从20到56的DO查询示例,针对设备的SlaveID地址17。第一个寄存器的地址将是0013十六进制=19,因为帐户是从0地址开始的(0014十六进制=20, -1零偏移=我们得到0013十六进制=19)。 字节请求字节回复(Hex)字段名(Hex)字段名11设备地址11设备地址01功能代码01功能代码00第一个寄存器地址高字节05更多的字节数13第一个寄存器地址低字节CDDO 27-20的寄存器值 (1100 1101)00寄存器数量高字节6BDO 35-28的寄存器值 (0110 1011)25寄存器数量低字节B2DO 43-36的寄存器值 (1011 0010)0ECRC-16(Modbus)0EDO 51-44的寄存器值 (0000 1110)84CRC-16(Modbus)1BDO 56-52的寄存器值 (0001 1011)45CRC-16(Modbus)E6CRC-16(Modbus)DO 27-20的输出状态显示为字节CD十六进制值,或在二进制系统中为1100 1101。 在寄存器DO 56-52中,右边请求了5位,其余的位填充为零以得到完整的字节(0001 1011)。 通道---DO 56DO 55DO 54DO 53DO 52位00011011十六进制1B 如何发送Modbus RTU命令来读取数字输入?命令0x02 此命令用于读取数字输入DI的值。 从寄存器# 10197到10218的DI请求示例,针对设备的SlaveID地址17。第一个寄存器的地址将是00C4十六进制=196,因为帐户是从0地址开始的。 字节请求字节回复(Hex)字段名(Hex)字段名11设备地址11设备地址02功能代码02功能代码00第一个寄存器地址高字节03更多的字节数C4第一个寄存器地址低字节ACDI 10204-10197的寄存器值 (1010 1100)00寄存器数量高字节DBDI 10212-10205的寄存器值 (1101 1011)16寄存器数量低字节35DI 10218-10213的寄存器值 (0011 0101)BACRC-16(Modbus)20CRC-16(Modbus)A9CRC-16(Modbus)18CRC-16(Modbus) 如何发送Modbus RTU命令来读取模拟输出?命令0x03 此命令用于读取模拟输出AO的值。 从寄存器# 40108到40110的AO请求示例,针对设备的SlaveID地址17。第一个寄存器的地址将是006B十六进制=107,因为帐户是从0地址开始的。 字节请求字节回复(Hex)字段名( Hex) | 字段名11 | 设备地址 | 11 | 设备地址03 | 功能代码 | 03 | 功能代码00 | 第一个寄存器地址高字节 | 06 | 更多的字节数6B | 第一个寄存器地址低字节 | AE | #40108的寄存器值高位00 | 寄存器数量高字节 | 41 | #40108的寄存器值低位03 | 寄存器数量低字节 | 56 | #40109的寄存器值高位76 | CRC校验和 | 52 | #40109的寄存器值低位87 | CRC校验和 | 43 | #40110的寄存器值高位40 | #40110的寄存器值低位49 | CRC-16(Modbus)AD | CRC-16(Modbus) 如何发送Modbus RTU命令来读取模拟输入?命令0x04 此命令用于读取模拟输入AI的值。 从寄存器# 30009的AI请求示例,针对设备的SlaveID地址17。第一个寄存器的地址是0008十六进制=8,因为帐户是从0地址开始的。 字节请求字节回复(Hex)字段名(Hex)字段名11设备地址11设备地址04功能代码04功能代码00第一个寄存器地址高字节02更多的字节数08第一个寄存器地址低字节00#30009的寄存器值高位00寄存器数量高字节0A#30009的寄存器值低位01寄存器数量低字节F8CRC-16(Modbus)B2CRC-16(Modbus)F4CRC-16(Modbus)98CRC-16(Modbus) 如何发送Modbus RTU命令来写入离散输出?命令0x05 此命令用于记录DO数字输出的一个值。 值FF 00十六进制将输出设置为ON。 值00 00十六进制将输出设置为OFF。 所有其他值都无效,且不会影响输出值。 对这样的请求的正常响应是回声(响应中的重复请求),在DO状态已更改后返回。 示例,使用设备的SlaveID地址17的寄存器# 173的DO记录。寄存器地址为00AC十六进制=172,因为从0地址开始记录。 字节请求字节回复(Hex)字段名(Hex)字段名11设备地址11设备地址05功能代码05功能代码00第一个寄存器地址高字节00第一个寄存器地址高字节AC第一个寄存器地址低字节AC第一个寄存器地址低字节FF高字节值FF高字节值00低字节值00低字节值4ECRC-16(Modbus)4ECRC-16(Modbus)8BCRC-16(Modbus)8BCRC-16(Modbus)DO173输出状态已从OFF更改为ON。 如何发送Modbus RTU命令来记录模拟输出?命令0x06 此命令用于记录模拟输出AO的一个值。 示例,使用设备的SlaveID地址17的寄存器# 40002的AO记录。第一个寄存器的地址为0001十六进制=1,因为从0地址开始记录。 字节请求字节回复(Hex)字段名(Hex)字段名11设备地址11设备地址06功能代码06功能代码00第一个寄存器地址高字节00第一个寄存器地址高字节01第一个寄存器地址低字节01第一个寄存器地址低字节00高字节值00高字节值03低字节值03低字节值9ACRC-16(Modbus)9ACRC-16(Modbus)9BCRC-16(Modbus)9BCRC-16(Modbus) 如何发送Modbus RTU命令来写入多个离散引脚?命令0x0F 此命令用于记录DO数字输出的多个值。 示例,写入多个DO,从设备的SlaveID地址17的寄存器# 20到# 29。寄存器地址为0013十六进制=19,因为从0地址开始记录。 字节请求字节回复(Hex)字段名(Hex)字段名11设备地址11设备地址0F功能代码0F功能代码00第一个寄存器地址高字节00第一个寄存器地址高字节13第一个寄存器地址低字节13第一个寄存器地址低字节00寄存器数量高字节00记录的寄存器数量高字节0A寄存器数量低字节0A记录的寄存器数量低字节02更多的字节数26CRC-16(Modbus)CDDO 27-20的字节值 (1100 1101)99CRC-16(Modbus)01DO 29-28的字节值 (0000 0001)BFCRC-16(Modbus)0BCRC-16(Modbus) 答案返回已记录的寄存器数量。 如何发送Modbus RTU命令来记录多个模拟输出?命令0x10 此命令用于记录模拟输出AO的多个值。 示例,记录多个AO,从设备的SlaveID地址17的寄存器# 40002和# 40003。第一个寄存器的地址为0001十六进制=1,因为从0地址开始记录。 字节请求字节回复(Hex)字段名(Hex)字段名11设备地址11设备地址10功能代码10功能代码00第一个寄存器地址高字节00第一个寄存器地址高字节01第一个寄存器地址低字节01第一个寄存器地址低字节00寄存器数量高字节00记录的寄存器数量高字节02寄存器数量低字节02记录的寄存器数量低字节04更多的字节数12CRC-16(Modbus)0040002高位值98CRC-16(Modbus)0A40002低位值0140003高位值0240003低位值C6CRC-16(Modbus)F0CRC-16(Modbus) Modbus请求的错误 如果设备接收到一个请求,但无法处理该请求,该设备将以错误代码进行响应。 响应将包含修改后的功能代码,高位字节为1。 示例: 原始值结果值请求中的功能代码响应中的功能错误代码01 (01 hex) 0000 0001129 (81 hex) 1000 000102 (02 hex) 0000 0010130 (82 hex) 1000 001003 (03 hex) 0000 0011131 (83 hex) 1000 001104 (04 hex) 0000 0100132 (84 hex) 1000 010005 (05 hex) 0000 0101133 (85 hex) 1000 010106 (06 hex) 0000 0110134 (86 hex) 1000 011015 (0F hex) 0000 1111143 (8F hex) 1000 111116 (10 hex) 0001 0000144 (90 hex) 1001 0000 带有错误的请求和响应示例: 字节请求字节响应(Hex)字段名(Hex)字段名0A设备地址0A设备地址01功能代码81已更改的功能代码04第一个寄存器地址高字节02错误代码A1第一个寄存器地址低字节B0CRC-16(Modbus)00寄存器数量高字节53CRC-16(Modbus)01寄存器数量低字节ACCRC-16(Modbus)63CRC-16(Modbus) 错误代码说明 01 | 不能处理已接受的功能代码。02 | 请求中指定的数据地址不可用。03 | 查询数据字段中包含的值是无效值。04 | 从站尝试执行请求的操作时发生不可恢复的错误。05 | 从站已接受请求并正在处理,但需要较长时间。此响应防止主机生成超时错误。06 | 从站正忙于处理命令。主机在从站空闲时必须重复消息。07 | 从站无法执行请求中指定的程序功能。使用功能编号13或14的不成功的程序请求返回此代码。主机必须从从站请求诊断信息或错误信息。08 | 从站在读取扩展内存时检测到奇偶校验错误。主机可以重复请求,但通常在这种情况下需要维修。 --- ### 82. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前面已经分析过RTU帧和ASCII帧的报文区别,细心的朋友应该会发现在两种不同的报文传输模式下都有一个共同的组成部分——差错校验。这个差错校验在RTU模式和ASCII模式下也不是不相同的。 看下面的对比:RTU模式的差错校验: ASCII模式的差错校验: 总而言之,RTU模式下用的是CRC校验,ASCII模式下用的是LRC校验。 下面会说明这两者不同的校验方式是怎么实现的。 1、RTU模式的CRC校验 在 RTU 模式中基于循环冗余校验 ( CRC - - Cyclical RedundancyChecking) 算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC 包含由两个 8 位字节组成的一个 16 位值,作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC高字节为报文发送的最后一个子节。附加在报文后面的 CRC 的值由发送设备计算。接收设备在接收报文时重新计算 CRC 的值,并将计算结果于实际接收到的 CRC 值相比较。如果两个值不相等,则为错误。这样的操作是可以防止数据在传送过成发生错误,导致最后出现异常现象。 (1)CRC生成的原理 CRC 的生成过程中, 每个 8–位字符与寄存器中的值异或。然后结果向最低有效位 (LSB) 方向移动(Shift) 1 位,而最高有效位 (MSB) 位置充零。 然后提取并检查 LSB:如果 LSB 为 1, 则寄存器中的值与一个固定的预置值异或;如果 LSB 为 0, 则不进行异或操作。 这个过程将重复直到执行完 8 次移位。完成最后一次(第 8 次)移位及相关操作后,下一个 8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复 8 次。当所有报文中子节都运算之后得到的寄存器中的最终值,就是 CRC。 (2)CRC的生成过程 1. 将一个 16 位寄存器装入十六进制 FFFF (全 1). 将之称作 CRC 寄存器. 2. 将报文的第一个 8 位字节与 16 位 CRC 寄存器的低字节异或,结果置于 CRC 寄存器. 3. 将 CRC 寄存器右移 1 位 (向 LSB 方向), MSB 充零. 提取并检测 LSB. 4. (如果 LSB 为 0): 重复步骤 3 (另一次移位).(如果 LSB 为 1): 对 CRC 寄存器异或多项式值 0xA001 (1010 0000 0000 0001). 5. 重复步骤 3 和 4,直到完成 8 次移位。当做完此操作后,将完成对 8 位字节的完整操作。 6. 对报文中的下一个字节重复步骤 2 到 5,继续此操作直至所有报文被处理完毕。 7. CRC 寄存器中的最终内容为 CRC 值. 8. 当放置 CRC 值于报文时,高低字节必须交换。 流程图如下: (3)CRC校验生成的算法实现CRC的计算一般是用查表法实现,这种方法的优点是计算速度快,缺点是占用内存资源多。CRC的高字节表如下: static unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ; CRC的低字节表如下: static char auchCRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 }; CRC的生成函数如下: unsigned short CRC16 ( puchMsg, usDataLen ) /* 函数以 unsigned short 类型返回 CRC */ { unsigned char *puchMsg ; /* 用于计算 CRC 的报文 */ unsigned short usDataLen ; /* 报文中的字节数 */ unsigned char uchCRCHi = 0xFF ; /* CRC 的高字节初始化 */ unsigned char uchCRCLo = 0xFF ; /* CRC 的低字节初始化 */ unsigned uIndex ; /* CRC 查询表索引 */ while (usDataLen--) /* 完成整个报文缓冲区 */ { uIndex = uchCRCLo ^ *puchMsgg++ ; /* 计算 CRC */ uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex} ; uchCRCHi = auchCRCLo[uIndex] ; } return (uchCRCHi << 8 | uchCRCLo) ; } (4)CRC校验码添加到报文中当 16 位 CRC (2 个 8 位字节) 在报文中传送时,低位字节首先发送,然后是高位字节。例如, 如果 CRC 值为十六进制 1241 (0001 0010 0100 0001),如下: 2、ASCII模式的LRC校验 (1)LRC的生成原理纵向冗余校验(LRC)为一个字节,含有 8 位二进制值。LRC 由发送设备计算,并附加 LRC 到报文。接收设备在接收文时计算 LRC, 并将计算的结果与在 LRC 接收到的实际值相比较,如果两个值不相等,则结果为错。LRC 的计算, 对报文中的所有的连续 8 位字节相加,忽略任何进位,然后求出其二进制补码。LRC 为一个 8 位域,那么每个会导致值大于 255 新的相加只是简单的将域的值在零”回绕”。因为没有第 9 位,进位被自动放弃。 (2)LRC的生成过程 1.不包括起始”冒号”和结束 CRLF 的报文中的所有字节相加到一个 8 位域,故此进位被丢弃。 2.从 FF (全 1)十六进制中减去域的最终值,产生 1 的补码(二进制反码)。 3.加 1 产生二进制补码. (3)LRC校验生成的算法 static unsigned char LRC(auchMsg, usDataLen) /* 函数返回 unsigned char 类型的 LRC 结果*/ { unsigned char *auchMsg ; /* 要计算 LRC 的报文*/ unsigned short usDataLen ; /* 报文的字节数 */ unsigned char uchLRC = 0 ; /* LRC 初始化 */ while (usDataLen--) /* 完成整个报文缓冲区 */ uchLRC += *auchMsg++ ; /* 缓冲区字节相加,无进位 */ return ((unsigned char)(-((char)uchLRC))) ; /* 返回二进制补码 */ } (4)将LRC校验码添加到报文中当 8 位 LRC (2 个 ASCII 字符) 在报文中传送时,高位字符首先发送,然后是低位字符。例如,如果 LRC 值为十六进制 61 (0110 0001),如下: --- ### 83. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus既然是一种通信协议,那它就应该有规定的通信格式用于在设备之间的指令接收与识别。 本文就着重讲讲Modbus协议的RTU帧和ASCII帧。 Modbus帧在串行链路上的格式如下: 在上图的格式中: 1)地址域:指代的是子节点地址。合法的子节点地址为 0 – 247。 每个子设备被赋予 1 – 247 范围中的地址。主节点通过将子节点的地址放到报文的地址域对子节点寻址。当子节点返回应答时, 它将自己的地址放到应答报文的地址域以让主节点知道哪个子节点在回答。 2)功能码:指明服务器要执行的动作。 3)数据域:功能码后面的有表示含有请求和响应参数的数据。 4)错误检验:是对报文内容执行 "冗余校验" 的计算结果。根据不同的传输模式 (RTU or ASCII)使用两种不同的计算方法。 上面说明了Modbus的帧格式,是一种规定的数据打包的规约。 Modbus中有两种串行传输模式: RTU 模式 和 ASCII 模式。它定义了报文域的内容在线路上串行的传送。它确定了信息如何打包为报文和解码。 所有设备必须实现 RTU 模式,ASCII 模式是备选项。 1、Modbus RTU帧模式 RTU帧指的是什么呢?简单而言就是报文中的每个字节都是用十六进制表示的。 RTU帧中的每个字节数据的格式定义如下: 每个字节为8bit 报文中每个 8 位字节含有两个 4 位十六进制字符(0–9, A–F) Bits per Byte: 1 起始位 8 数据位,首先发送最低有效位 1 位作为奇偶校验 1 停止位 注 : 使用无校验要求 2 个停止位。 每个字节为8bit报文中每个 8 位字节含有两个 4 位十六进制字符(0–9, A–F)Bits per Byte: 1 起始位8 数据位,首先发送最低有效位1 位作为奇偶校验1 停止位注 : 使用无校验要求 2 个停止位。 字符的传送流是LSB先发送,最后才是MSB,如下: 有奇偶校验的: 无奇偶校验的: 重点来了,RTU的报文帧格式:      Modbus RTU帧的最大长度为256个字节。 2、Modbus ASCII帧模式 Modbus ASCII帧中规定报文的每个字节数据以两个ASCII字符进行发送。 怎么理解呢?  例 : 有一个数据字节为 0X5B,它会被编码为两个字符 : 0x35 和 0x42 (ASCII 编码 0x35 ="5", 0x42 ="B" )。 ASCII 模式节每个字节 (10 位 )  为的格式为 :  报文中每个 ASCII 字符含有 1 个十六进制字符 Bits per Byte: 1 起始位 7 数据位, 首先发送最低有效位 1 位作为奇偶校验 1 停止位 注 : 使用无校验要求 2 个停止位。 报文中每个 ASCII 字符含有 1 个十六进制字符Bits per Byte: 1 起始位7 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位注 : 使用无校验要求 2 个停止位。 字符是如何串行传送的:  有奇偶校验的: 无奇偶校验的: Modbus ASCII的报文帧格式: ASCII报文帧与RTU报文帧有很大的不同,ASCII报文帧中是带有开头和结束标识符的,这对设备接收报文帧很方便。设备可以很方便的知道一个新报文帧的开头,并且知道报文什么时候结束了。 RTU报文帧中并没有这样的标识符,所以在接收报文帧的时候就需要做些处理,方能判断报文是否完成了一帧数据的接收。 ASCII报文帧中用冒号(:)(ASCII的十六进制为0x3A)作为起始,用回车换行(CR LF)(ASCII的十六进制为0x0D 0x0A)作为结束。 由于ASCII模式下每个字符字节需要用两个字符编码,所以为了确保 ASCII 模式 和 RTU 模式在 Modbus 应用级兼容,ASCII数据域最大数据长度为 (2x252) 是 RTU 数据域 (252) 的两倍。因此,ModbusASCII 帧的最大尺寸为 513 个字符。 3、RTU帧与ASCII帧的传输区别 前面已经分析了RTU报文帧和ASCII报文帧的区别,RTU报文帧是不带开始和结束标识符的,而ASCII报文帧中带有开始和结束标识符。所以在设备接收RTU帧和ASCII帧的时候处理方式就会有所不同。 (1)RTU帧的报文传输 现在思考一个问题:RTU帧中因为没有开始和结束的标识符,设备要怎么知道已经接收完成了一帧报文了呢? 为了能够确认报文被完整接收,不至于接收到不完整的报文就进行报文解析和处理,所以必须要想办法去确认一帧报文已经完成接收,然后再去处理。 在RTU模式中,为了标识不同的报文帧,在报文帧之间插入一个空闲时间间隔,在两帧报文之间用至少3.5个字符的空闲时间来区分不同的帧,同时标识一帧是否已经完成接收。这个时间也称为t3.5时间间隔。 这样的操作方式看下图进行理解: 如果前面开始了一次报文帧的传输,接收设备从空闲状态中被唤起,就需要多接收进行一个超时计时机制,用以确认报文帧是否已经接收完成。就如上图中的帧1和帧2之间如果间隔的时间等于或者超过了t3.5所设定的空闲等待时间,就可以认为前面的帧1已经接收完成,后面再过来的数据就属于帧2的数据。 在RTU帧中还有一个讲究的地方:因为报文帧本质是用字符流进行发送的,所谓为了区分不同的报文帧就需要用到t3.5的字符间隔。但是报文帧中的每个字符要怎么确认是连续的呢? 所以为了确认字符流的发送连续,就要使用到t1.5字符时间。看下图:  从上图中可以清晰看到:如果两个字符之间的空闲间隔大于 1.5 个字符时间,则报文帧被认为不完整应该被接收节点丢弃。小于或者等于1.5个字符的时间则认为正常。 上面说的t1.5和t3.5这两个时间,其实并不是一定应用的。为什么呢? 因为时间项目应用中,很多时候多报文帧的接收都会涉及到中断,特别是在通信速率很高的情况下,会频繁的快速中断,对cpu的负担是很重的,这个时候这t1.5和t3.5的时间就会变得很短暂,并不是很好处理。 所以,t1.5和t3.5这两个时间一般是在通信速率在19200Bps或以下的时候才需要去严格约定。 (2)ASCII帧的报文传输 由于ASCII报文帧与RTU报文帧有着很大的不同,ASCII报文帧是有起始和结束标识符的,而RTU帧没有这样的标识。所以ASCII报文帧的接收就简单方便多了,也不需要什么t3.5的帧间隔时间。 但是呢,为了保证接收的报文帧连续,还是可以约定字符间的传输时间的。一般认为,报文中的字符时间间隔可以达到一秒,如果超过了这个时间间隔,就认为发生了错误,要废弃掉这一帧报文数据,重新开始接收。 4、RTU帧和ASCII帧的传输状态分析 (1)RTU帧的传输状态: 上面状态图可以获取的信息: 1)从 "初始" 态到 “空闲” 态转换需要 t 3.5 定时超时,用以保证帧间延迟。 2)“空闲” 态是没有发送和接收报文要处理的正常状态。 3)在 RTU 模式, 当没有活动的传输的时间间隔达 3.5 个字符长时,通信链路被认为在 “空闲”态。 4)当链路空闲时, 在链路上检测到的任何传输的字符被识别为 帧起始。 链路变为 "活动" 状态。然后, 当链路上没有字符传输的时间间个达到 t3.5 后,被识别为 帧结束。 5)检测到帧结束后,完成 CRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。 为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。这样,CRC 计算只需要在帧寻址到该节点 (包括广播帧) 时进行。 (2)ASCII帧的传输状态 上面状态图可以得到的信息: 1)“空闲” 态是没有发送和接收报文要处理的正常状态。 2)每次接收到 ":" 字符表示新的报文的开始。如果在一个报文的接收过程中收到该字符,则当前地报文被认为不完整并被丢弃。而一个新的接收缓冲区被重新分配。 3)检测到帧结束后,完成 LRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。 为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。 --- ### 84. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 首先我们要清楚:Modbus是一种串行链路上的主从协议,在通信线路上只能有一个主机存在,不会有多主机存在的情况。虽然主机只有一个,但是从机是可以有多个的。 Modbus的通信过程都是由主机发起的,从机在接收到主机的请求后再进行响应,从机不会主动进行数据的发送。并且从机之间也不会互相发送数据。 1、Modbus的地址规则 Modbus中的每个从机为了能在通信时被主机识别,都会有一个地址,也称为从节点地址。 从节点地址对从设备而言必须是唯一的,在总线上也只能有唯一的一个设备地址,即从机设备的地址在总线上也不能冲突。 从机是有唯一的设备地址的,而主机本身是没有地址的。 Modbus支持的寻址空间为256个,如下: 从上图中可以看到,给子节点使用的地址范围是1 ~ 247,248 ~255是被保留着的。非常重要的一点,0是广播地址,所有的子节点都必须要能够识别广播地址。 2、Modbus的通信模式 Modbus的通信模式有两种:单播模式和广播模式。 (1)单播模式 单播模式:主机要访问某个子节点的时候,是通过子节点的地址进行的一对一的访问方式。子节点在收到主节点发过来的请求以后,根据请求的类型完成相应处理后,子节点会向主节点返回一个报文,也就是我们常说的“应答”。示意图如下: 从上图中是可以看到的:主节点通过发送请求命令到从节点,从节点会从总线上接收到来自主节点的请求,然后解析主节点的请求指令,根据指令完成相应的动作,然后再给主节点的请求作出一个回应,便完成了一次单播通信的过程。 其实大家应该也能看到:在单播模式下,一个Modbus的事务它包含了两个报文,一个是由主机主动发出的“请求”报文,另一个是由从机返回的“应答”报文。 并且主机能准备访问到某个从机是通过从机的唯一地址实现的,从机识别主机发出的指令是否是发送到自己这边的,也是通过从机的唯一地址进行甄别的。 (2)广播模式 广播模式是主机用于向总线上的所有的从机发送请求的指令。 主机的广播指令一般都是用于写命令的,对于来自于主机的广播指令,从机是不需要进行应答的。广播模式的示意图如下: 从图中可以看出,广播模式时单向的,主机发送出广播指令,而从机不再对广播指令进行应答,数据流只在一个方向上流动。 注意:总线上所有的从机都必须要能够识别主机的广播指令,并且地址0是用于广播的,不能作为从机的地址。 3、主从机的状态特征 既然Modbus是主从机的通信模式,那么在通信过程中就需要清楚主从机之间的状态,通过状态去理解Modbus的通信流程。(1)主机的状态特征如下图: 根据上图可以分析得到主机的通信过程的一些信息: 1)"空闲" = 无等待的请求。 这一般是在初始上电之后所处的状态。 主机只有在"空闲"状态才能发送请求。发送一个请求后,主机会离开"空闲"状态, 进入“忙”的状态,此时不能再发送其他的请求。 2)当单播请求发送到一个从机上,主机将进入"等待应答" 状态, 同时一个临界超时定时计数器会启动。这个超时称为 "响应超时"。 它避免主节点永远处于"等待应答" 状态。 响应超时的时间依赖于实际的应用场景。 3)当收到一个应答时,主节点在处理数据之前检验应答。在某些情况下,检验的结果可能为错误。如收到来自非期望的子节点的应答,或接收的帧错误,响应超时继续计时;当检测到帧错时,可以执行一个重试。 4)响应超时但没有收到应答时,则产生一个错误。那么主节点会重新进入”空闲” 状态, 并发出一个重试请求。重试的最大次数取决于主节点 的设置。 5)当广播请求发送到串行总线上,没有响应从子节点返回。然而主节点需要进行延迟以便使子节点在发送新的请求处理完当前请求。该延迟被称作 "转换延迟"。因此,主节点会在返回能够发送另一个请求的“空闲”状态之前,到" 等待转换延迟"状态。 6)在单播方式,响应超时必须设置到足够的长度以使任何子节点都能处理完请求并返回响应。而广播转换延迟必须有足够的长度以使任何子节点都能只处理完请求而可以接收新的请求。 因此,转换延迟应该比响应超时要短。 帧错误常见的有:对每个字符的奇偶校验、 对整个帧的冗余校验。 (2)从机的状态特征如下图: 从上图中可以知道: 1)“空闲” = 没有等待的请求。 这一般是初始上电后的状态。 2)当收到一个请求时,子节点在处理请求中要求的动作前要先检验报文包。当检测到错误时,必须向主节点发送应答告知错误。(错误包含:请求的格式错误、非法动作、非法的访问地址......)。 3)当要求的动作完成后,单播报文要求必须按格式应答主节点。 4)如果子节点在接收到的帧中检测到错误, 则没有响应返回到主节点。 5)任何子节点均应该定义并管理 Modbus 诊断计数器以提供诊断信息。通过使用 Modbus 诊断功能码,可以得到这些计数值。最后再补充一个主从机的通信时序图: 上面的时序图中描述的就是上面所说的主从机状态特征,对比来看就能看明白是什么意思了。 --- ### 85. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1、 Modbus简介 Modbus 是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正 用于工业现场的总线协议。ModBus 网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专 用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动 Modbus 在基于以太网上的分布式应用,目前施耐德公司已将 Modbus 协议的 所有权移交给 IDA(Interface for Distributed Automation,分布式自动化接口)组织,并成立了 Modbus-IDA 组织,为 Modbus 今后的发展奠定了基础。 在中国,Modbus 已经成为国家标准,并有专业的规范文档,感兴趣的可以去查阅相关的文件,详情如下:标准编号为:GB/T19582-2008文件名称:《基于 Modbus 协议的工业自动化网络规范》 主要有三部分的内容,分别如下: 《GB/T 19582.1-2008 第 1 部分:Modbus 应用协议》 《GB/T 19582.2-2008 第 2 部分:Modbus 协议在串行链路上的实现指南》 《GB/T 19582.3-2008 第 3 部分: Modbus 协议在 TCP/IP 上的实现指南》 2、Modbus协议概述 Modbus是一个主-从模式的通信协议,属于数据链路层上的协议,协议本身不涉及具体的硬件要求。常见的应用Modbus协议的物理接口有RS-485、RS232、USART等的通信链路中。Modbus协议中,一个时刻内只允许有一个主机连接于总线,多个从机连接于总线上,通信都是只能由主机发起,从机进行响应。不能从从机主动发起通信。 3、Modbus 主从机通信模式 主机和从机之间的通信,可以用两种模式进行:广播通知模式、单播点对点模式。 3.1、单播点对点模式 主机按照从机的明确地址访问相应的从机,从机接到来自主机的请求并处理完请求后,从机会向主机返回一个应答,完成一个通信。在这种模式,一个 Modbus 事务处理包含 2 个报文:一个来自主机的请求,一个来自从机的应答。在总线上,每个从机都必须有唯一的从机地址 (1 到 247),这样才能区别于其它节点被独立的寻址。 3.2、广播通知模式 主机向所总线通过广播指令发送请求,所有的从机都要接收来自主机的广播信息。对于主机广播的请求,从机是没有应答返回的。所有的从机必须要接受主机的广播模写功能。注意:地址 0 是专门用于主机向各个从机广播数据的。 4、Modbus 地址规则 Modbus 寻址空间有 256 个不同地址。如下图所示: 地址 0 为广播地址。所有的从机必须识别广播地址。Modbus 主机本身是没有地址的,只有从机必须要有一个地址。该地址必须在 Modbus 串行总线上唯一。248~255作为预留使用的地址。 5、Modbus 的帧格式 Modbus的帧格式按照选择的模式不同帧格式也是有所区别的。 5.1、RTU模式 RTU 模式下的帧格式如下图: Modbus RTU 帧总长度最大为 256 字节。RTU 模式每个字节 ( 11 位 ) 的格式为 :8–位二进制,报文中每个 8 位字节含有两个 4 位十六进制字符(0–9, A–F)每字节的 bit 流:1 起始位8 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位偶校验是要求的, 其它模式 ( 奇校验, 无校验 ) 也可以使用。为了保证与其它产品的最大兼容性, 同时支持无校验模式是建议的。默认校验模式模式 必须为偶校验。注 : 使用无校验要求 2 个停止位。RTU时,每个字符或字节均由此顺序发送(从左到右): 最低有效位 (LSB) . . . 最高有效位 (MSB) 5.1.1、RTU模式下的帧通信 由发送设备将 Modbus 报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收 新帧,并且知道何时报文结束。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。在 RTU 模式,报文帧由时长至少为 3.5 个字符时间的空闲间隔区分。 整个报文帧必须以连续的字符流发送。如果两个字符之间的空闲间隔大于 1.5 个字符时间,则报文帧被认为不完整应该被接收节点丢弃。 注意 :RTU 模式下接收数据时,由于 t1.5 和 t3.5 的时间隔要求的存在,一般在高通信速率下,会导致 CPU 负担加重。因此,在通信速率等于或低于 19200 bps 时,这两个定时必须严格遵守;对于波特率大于 19200 bps 的情形,应该使用 2 个定时的固定值:建议的字符间超时时间(t1.5)为 750µs,帧间的超时时间 (t1.5) 为 1.750ms。下图表示了对 RTU 传输模式状态图的描述。"主节点" 和 "子节点" 的不同角度均在相同的图中表示: 上面状态图的一些解释: 1)从 "初始" 态到 “空闲” 态转换需要 t3.5 定时超时: 这保证帧间延迟 2)“空闲” 态是没有发送和接收报文要处理的正常状态。 3)在 RTU 模式, 当没有活动的传输的时间间隔达 3.5 个字符长时,通信链路被认为在 “空闲” 态。 4)当链路空闲时, 在链路上检测到的任何传输的字符被识别为帧起始。链路变为 "活动" 状态。然后当链路上没有字符传输的时间间个达到 t3.5 后,被识别为帧结束。 5)检测到帧结束后,完成 CRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是, 则丢弃此帧。为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。这 样,CRC 计算只需要在帧寻址到该节点 (包括广播帧) 时进行。 5.1.2、RTU模式的CRC校验 在 RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 (CRC - Cyclical Redundancy Checking) 算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC 包含由两个 8 位字节组成的一个 16 位值。CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC 高字 节为报文发送的最后一个子节。附加在报文后面的 CRC 的值由发送设备计算。接收设备在接收报文时重新计算 CRC 的值,并将计 算结果于实际接收到的 CRC 值相比较。如果两个值不相等,则为错误。CRC 的计算, 开始对一个 16 位寄存器预装全 1。然后将报文中的连续的 8 位子节对其进行后续的计 算。只有字符中的 8 个数据位参与生成 CRC 的运算,起始位,停止位和校验位不参与 CRC 计算。CRC 的生成过程中, 每个 8–位字符与寄存器中的值异或。然后结果向最低有效位(LSB)方向移动 (Shift) 1 位,而最高有效位(MSB)位置充零。然后提取并检查 LSB:如果 LSB 为 1, 则寄存器中的值与 一个固定的预置值异或;如果 LSB 为 0, 则不进行异或操作。这个过程将重复直到执行完 8 次移位。完成最后一次(第 8 次)移位及相关操作后,下一个 8 位字节 与寄存器的当前值异或,然后又同上面描述过的一样重复 8 次。当所有报文中子节都运算之后得到的寄存 器的最终值,就是 CRC。 5.2、ASCII传输模式 当 Modbus 串行链路的设备被配置为使用 ASCII模式通信时,报文中的每个 8 位字节以两个 ASCII 字符发送。一般在通信链路或者设备无法 符合 RTU 模式的定时管理时使用该模式。ASCII的帧格式如下: 比如 : 字节 0X5B 会被编码为两个字符 : 0x35 和 0x42 ( ASCII 编码 0x35 ="5", 0x42 ="B" )。注 : 由于一个子节需要两个字符,此模式比 RTU 效率低。 ASCII 模式每个字节 ( 10 位 ) 的格式为 :十六进制,ASCII 字符 0-9, A-F。1 起始位7 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位偶校验是要求的, 其它模式 ( 奇校验, 无校验 ) 也可以使用。为了保证与其它产品的最大兼容性, 同时支持无校验模式是建议的。默认校验模式模式 必须为偶校验。注 : 使用无校验要求 2 个停止位。字符是如何串行传送的:每个字符或字节均由此顺序发送(从左到右): 最低有效位 (LSB) . . . 最高有效位 (MSB) 5.2.1、ASCII的报文帧 在 ASCII 模式, 报文用特殊的字符区分帧起始和帧结束。一个报文必须以一个‘冒号’ ( : ) (ASCII 十六进制 3A )起始,以 ‘回车-换行’ (CR LF) 对 (ASCII 十六进制 0D 和 0A) 结束。注 : LF 字符可以通过特定的 Modbus 应用命令 (参见 Modbus 应用协议规范) 改变。对于所有的域,允许传送的字符为十六进制 0–9, A–F (ASCII 编码)。设备连续的监视总线上的 ‘冒 号’ 字符。当收到这个字符后,每个设备解码后续的字符一直到帧结束。报文中字符间的时间间隔可以达一秒。如果有更大的间隔,则接受设备认为发生了错误。特别注意:每个字符子节需要用两个字符编码。因此,为了确保 ASCII 模式 和 RTU 模式在 Modbus 应 用级兼容,ASCII 数据域最大数据长度为 (2x252) 是 RTU 数据域 (252) 的两倍。必然的, Modbus ASCII 帧的最大尺寸为 513 个字符。ASCII 报文帧的要求在下面的状态图中综合。"主节点" 和 "子节点" 的不同角度均在相同的图中表示: 上面状态图的一些解释:1)“空闲” 态是没有发送和接收报文要处理的正常状态。2)每次接收到 ":" 字符表示新的报文的开始。如果在一个报文的接收过程中收到该字符,则当前地报文 被认为不完整并被丢弃。而一个新的接收缓冲区被重新分配。3)检测到帧结束后,完成 LRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是, 则丢弃此帧。为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。 5.2.2、ASCII的LRC校验 在 ASCII 模式,包含一个对全部报文内容执行的,基于纵向冗余校验 (LRC - Longitudinal Redundancy Checking) 算法的错误检验域。LRC 域检验不包括起始“冒号”和结尾 CRLF 对的整个报 文的内容。不管报文有无奇偶校验,均执行此检验。LRC 域为一个子节,包含一个 8 位二进制值。LRC 值由发送设备计算,然后将 LRC 附在报文后面。接收设备在接收报文时重新计算 LRC 的值,并将计算结果于实际接收到的 LRC 值相比较。如果两个值不 相等,则为错误。LRC 的计算, 对报文中的所有的连续 8 位字节相加,忽略任何进位,然后求出其二进制补码。执行检 验针对不包括起始“冒号”和结尾 CRLF 对的整个 ASCII 报文域的内容。在 ASCII 模式,LRC 的结果 被 ASCII 编码为两个字节并放置于 ASCII 模式报文帧的结尾,CRLF 之前。 6、Modbus的异常码 MODBUS 事务处理的一般处理过程: 一旦服务器处理请求,使用合适的 MODBUS 服务器事务建立 MODBUS 响应。根据处理结果,可以建立两种类型响应: 1) 一个正确的 MODBUS 响应:响应功能码 = 请求功能码 2) 一个 MODBUS 异常响应 3)用来为客户机提供处理过程中与被发现的差错相关的信息; 4)响应功能码 = 请求功能码 + 0x80; 5)提供一个异常码来指示差错原因。 7、Modbus的功能码 7.1、功能码的类别 目前Modbus的功能中可以分为三类:公共功能码、用户定义功能码、保留功能码。 公共功能码 :是已经被定义的功能码。 用户定义功能码 :有两个可以由用户定义功能码。范围为:65 至 72 和十进制 100 至 110。 保留功能码 :特殊情况下使用的,并且对公共使用是无效的功能码。 7.2、公共功能码 Modbus中公共功能码的定义如下: 7.2.1、线圈操作功能码(bit位的操作) 比如我要读取线圈中的内容。从机地址为 11H,线圈寄存器的起始地址为 0013H,结束地址为 0037H。需要查询总共 37 个线圈寄存器,主机发送的RTU帧如下: 从机响应的数据帧如下: 解析:线圈 0013H 到线圈 001AH 的状态为 CDH,二进制值为 11001101,该字节的最高字节为线圈 001AH , 最 低 字 节 为 线 圈 0013H 。各线圈状态与数据内容每位相对应。1 代表 ON,0 代表 OFF。线 圈 001AH 到 线 圈 0013H 的 状态分别为: 7.2.2、保持寄存器操作功能码 (1)写多个保持寄存器 写多个保持寄存器使用功能码10H。比如:从机地址为 11H。保持寄存器的其实地址为 0001H,寄存器的结束地址为 0002H。总共访问 2个寄存器。保持寄存器 0001H 的内容为 000AH,保持寄存器 0002H 的内容为 0102H。 主机请求的RTU帧数据如下: 从机返回的响应为: (2)读保持寄存器 读保持寄存器使用03H功能码。比如:从机地址为 11H。保持寄存器的起始地址为 006BH,结束地址为 006DH。 主机发送的RTU请求帧如下: 从机的应答如下: --- ### 86. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 RS-485是美国电子工业协会(EIA)在1983年批准的一种信号传输标准,它只是一个电气的标准,不涉及上层协议的规定,仅仅是接口的物理层规定。 1、RS-485的特性  1)采用差分信号进行传输,增加了抗噪声能力,减少噪声辐射带来的干扰; 2)支持长距离传输,最长可以达到4000英尺(约1219米); 3)传输速率较高,在40英尺内,速率可高达10Mbps; 4)同一总线可以连接多个驱动器和接收器; 5)共模电压范围大,允许的最大共模电压可达到 -7V - 12V; 2、RS-485常见的电路连接方式 上图使用的485芯片为SP3485,R0为发送引脚,DI为接收引脚,RE/DE为收发控制引脚。485芯片每次只能单独一个方向传输数据,不能收发同时进行,而且收发必须要控制收发引脚的电平状态才能实现收发的功能。 3、RS-485的电平信号        RS-485采用的是差分信号的方式进行传输,通过AB两根线的电压差作为电平信号,差分信号对外界因素的干扰反映到两根线上影响是一样的,两根线的电压差不变,信号传递也就不会受干扰,因此会有更强的抗噪声干扰能力。     RS-485差分线路包括以下2个信号:     A:非反向(non-inverting)信号     B:反向(inverting)信号     逻辑1:线路B信号电压比线路A高。一般 +2V ~ +6V。     逻辑0:线路A信号电压比线路B高。一般 -2V ~ -6V。         根据RS485总线的相关标准,当RS485总线差分电压大于+200mV时,RS485收发器输出高电平;当RS485总线差分电压小于-200mV时,RS485收发器输出低电平;当RS485总线上的电压在-200mV~+200mV之间时,RS485收发器可能输出高电平也可能输出低电平。因此,为了防止RS-485总线上的差分电压处于-200mV~+200mV之间,就需要利用上拉下拉电阻来钳位总线上电压差值。上下拉电阻的阻止一般选用4.7K,实际需要多大的电阻,需要根据实际线路负载和电路情况计算选值。 4、RS-485总线上的收发器数量 RS-485总线上可以带的发射器和接收器的最大数量是和负载特性有关的。根据485的规定文件中的说明,一根传输总线上最多可以挂载128个收发器。 5、RS-485总线的工作方式        RS-485总线可以设计成两种通信方式:半双工与全双工。 1)半双工         只允许数据在总线上单向的传输,即每次收发只能有其中一个。半双工总线的连接方式如下: 2)全双工         允许数据在总线上双向的传输,即每次收发能同时进行。全双工总线的连接方式如下: 6、RS-485的总线终端电阻 为避免信号反射,当通信线路长度很长时数据传输线必须有终点,并且分支长度尽可能的短。正确的通信线路终端需要终端电阻RT匹配,RS-485标准建议线缆的 Z0=120Ω。通信线路通常终端匹配120Ω的电阻,线缆的末尾处各一个。如下图所示: --- ### 87. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus RTU 写多个寄存器详解 1. 协议概述 Modbus RTU 是一种串行通信协议,用于工业自动化中的设备间通信。主要特点是简单、稳定。在这个模式中,数据是以二进制的形式传输的。 2. 写多个寄存器 当我们需要修改一个设备(例如,电机驱动器或传感器)上的多个参数时,我们可以使用“写多个寄存器”功能。 3. 请求格式 一个标准的Modbus RTU写多个寄存器的请求包含以下部分: 设备地址: 1字节,标识要通信的目标设备。 功能码: 1字节,写多个寄存器的功能码为 0x10。 起始寄存器地址: 2字节,指定第一个要写入的寄存器的地址。 寄存器数量: 2字节,指定要写入的寄存器的总数量。 字节计数: 1字节,表示后续要写入的数据总字节数。 数据: 根据需要写入的寄存器数量变化,每个寄存器为2字节。 CRC校验: 2字节,用于验证消息的完整性。 4. 例子 假设我们要向地址为 0x01 的设备写入,从寄存器地址 0x3000 开始,连续的4个寄存器。我们要写入的数据是:0x1234, 0x5678, 0x9ABC, 0xDEF0。 构造的消息为: 01 (设备地址) 10 (功能码) 30 00 (起始寄存器地址) 00 04 (寄存器数量) 08 (字节计数,4寄存器*2字节/寄存器) 12 34 56 78 9A BC DE F0 (数据) ?? ?? (CRC校验, 实际值需要使用crc16-modbus来计算) 要注意,CRC校验值是基于整个消息(除CRC外的部分)来计算的。你需要使用Modbus RTU的CRC算法来得到这个值,并将它添加到消息的尾部。 5. 发送并等待 完成消息后,通过适当的串行通讯接口(如RS-485)发送它,并等待从设备的响应。响应格式和请求类似,但不包含字节计数和数据部分。 --- ### 88. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在Modbus通信中,确保数据的完整性是至关重要的,特别是在关键的工业控制系统中。数据的完整性保障了从发送方到接收方传输的数据没有被篡改、损坏或遗漏。以下是一些确保Modbus中数据完整性的方法: CRC检查:在Modbus RTU协议中,每个数据帧的结尾都有一个循环冗余校验(CRC)字段。这个CRC是基于帧中的数据计算出来的,接收方可以通过重新计算CRC并与接收到的CRC进行比较来验证数据的完整性。 Modbus TCP校验和:对于Modbus TCP,传输层(TCP)提供了数据完整性的校验。TCP使用校验和来确保数据的完整性,如果校验和不匹配,数据包会被丢弃。 数据重传:如果由于某种原因(如通信干扰、设备故障等)导致数据不完整或错误,Modbus协议允许数据重新传输。 异常响应:Modbus设备能够返回异常响应。如果从设备检测到请求中的任何错误(如CRC错误),它会返回一个异常码,通知主设备存在问题。 使用适当的物理层:确保使用高质量的通信硬件和线缆,以减少外部干扰和传输错误。例如,在有电磁干扰的环境中使用屏蔽线缆。 数据验证:在某些应用中,您可以设计系统以周期性地读回写入的数据,与原始值进行比较,确保数据的完整性。 冗余通信:在关键应用中,可以考虑使用冗余通信路径或设备,以提供备用通道,以防主通道出现故障。 安全措施:尽管Modbus本身并不包含安全功能,但可以通过VPN或其他安全机制来保护Modbus流量,确保数据在传输过程中不被篡改。 监控和日志:实时监控Modbus通信并记录所有异常或错误,这有助于及时检测和解决可能影响数据完整性的问题。 设备时间同步:确保所有Modbus设备的时钟都同步,这样在记录数据或事件时可以有一个统一的时间基准,帮助验证数据的完整性。 总之,确保Modbus中数据的完整性需要综合考虑软件和硬件的策略。通过上述方法,可以在很大程度上提高数据的可靠性和完整性。 --- ### 89. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是通讯协议? 在了解什么是Modbus之前,让我们先来看看什么是通信协议。 通讯协议(Communication Protocol)是一种规则或约定,用于在计算机系统、网络设备或不同系统之间进行数据交换和通信。这些协议定义了通信的标准和规范,确保发送者和接收者之间能够正确理解和解释传输的数据。 通讯协议包括物理层协议、数据链路层协议、网络层协议、传输层协议、应用层协议等多个层次,每个层次负责不同的任务。以下是通讯协议的一些关键方面: 数据格式: 通讯协议规定了数据的格式,包括数据的编码方式、字节顺序、数据帧的结构等。这确保了数据在传输过程中可以被正确地解析和重建。 通信方式: 协议定义了通信的方式,包括单工通信(单方向传输)、半双工通信(双方交替传输)和全双工通信(同时双向传输)等。 错误检测和纠错: 通讯协议通常包括一些机制,用于检测和纠正在传输过程中可能发生的错误,以确保数据的完整性和准确性。 流量控制: 通讯协议可以定义如何控制数据的流量,以避免数据过载或拥塞,从而提高通信的效率。 地址和标识: 协议可以包括设备或节点的地址和标识,以确保数据被正确地发送到目标设备。 会话管理: 在某些协议中,会话管理用于建立、维护和终止通信会话,确保通信的有序性和可控性。 我们常见的通信协议包括I2C、SPI、UART等,而Modbus则是一种串行通信协议。 什么是RS-485和RS-232? 在讨论Modbus时,经常会遇到RS-485和RS-232,那么它们究竟是什么呢? RS-485(Recommended Standard 485)和 RS-232(Recommended Standard 232)是两种常用的串行通信标准,用于在计算机和外部设备之间传输数据。它们在物理层和电气特性上有一些重要的区别: RS-232: 单端口通信: RS-232 是一种单端口通信标准,即数据信号只通过一个传输线进行传输,其中包括一个发送线(TX)和一个接收线(RX)。 电压电平: RS-232 使用电压电平来表示数据位。典型的RS-232电平为正负12V,其中正电压表示逻辑0,负电压表示逻辑1。 通信距离: RS-232通信通常适用于较短的距离,通信距离通常不超过50英尺(约15米),并且通信速率受到距离的限制。 点对点通信: RS-232通信是点对点的,每个连接只支持两台设备之间的通信,一个发送方和一个接收方。 用途: RS-232常用于连接计算机和外部设备,如串行打印机、调制解调器、串行鼠标等。它也可以用于短距离的点对点通信。 RS-485: 差分信号: RS-485 使用差分信号传输数据,它包括两个传输线,一个为正(A或非反相线),一个为负(B或反相线)。这种差分信号可以提高抗干扰性能。 电压电平: RS-485通常使用低电平差分信号,其中正线的电压大致等于负线的电压,这有助于减少传输线上的干扰。 通信距离: RS-485通信适用于较长距离,通常可覆盖几千英尺(数百米)的距离,这取决于通信速率和线缆质量。 多点通信: RS-485支持多点通信,多个设备可以连接到同一传输线上,并且可以同时进行通信。这使得RS-485非常适合用于工业控制和仪表等应用,其中需要多个设备之间的数据交换。 用途: RS-485通常用于工业自动化、远程监控、建筑自动化以及其他需要长距离和多设备通信的应用。它在这些领域中被广泛使用,因为它的差分信号设计使其更耐干扰,适应更长的通信距离,并支持多点通信。 如果您想进一步了解,请继续阅读: USB转串口 TTL RS-232 RS-485 COM口 UART区别 USB转串口(USB to Serial)是一种将USB接口连接到串行通信接口的设备,通常用于将计算机连接到需要串行通信的外部设备。这些串口可以是TTL串口、RS-232串口或RS-485串口,具体区别如下: TTL串口: TTL(Transistor-Transistor Logic)串口使用低电平(通常是0V表示逻辑0,3.3V或5V表示逻辑1)进行通信。它通常用于嵌入式系统和微控制器之间的通信。USB转TTL串口适用于连接计算机与TTL串口设备,例如Arduino等。 RS-232串口: RS-232是一种常见的串行通信标准,通常使用正负12V的电压电平表示逻辑0和逻辑1。USB转RS-232串口适用于连接计算机与老式串行设备,如串行打印机、调制解调器等。 RS-485串口: RS-485是一种差分信号串口标准,使用两个传输线(A和B)传输数据,其中一个线路是正相位,另一个线路是反相位。它具有抗干扰性和支持多点通信的能力,通常用于工业控制和长距离通信。USB转RS-485串口适用于连接计算机与RS-485串口设备,如工业自动化设备。 COM口(串口): COM口是计算机上用于串行通信的物理接口,通常使用RS-232或RS-485标准。COM口通常用于连接外部设备,如串行打印机、GPS接收器、数据采集器等。USB转COM口适用于计算机没有内置串行接口的情况,允许用户通过USB接口模拟COM口。 UART(通用异步收发传输器): UART是一种通信芯片或模块,用于将并行数据转换为串行数据以进行串行通信。UART可以与TTL、RS-232或RS-485等不同类型的串口配合使用。USB转UART通常是一个通用的串口适配器,可以用于连接不同类型的串口设备。 Modbus协议说明 Modbus诞生于1979年,最初由莫迪康公司(Modicon)开发,后来被施耐德电气公司收购。Modbus为设备和设备之间的通信提供了通用语言。它已成为工业领域通信协议的行业标准,并且是工业电子设备之间常用的连接方式之一。Modbus作为目前工业领域应用最广泛的协议之一,有着以下优点: - Modbus协议是开放、公开发表且无版权要求的,可以广泛应用。 - Modbus协议支持多种电气接口,包括RS232、RS485、TCP/IP等,还可以在各种介质上传输,如双绞线、光纤、红外线、无线等。 - Modbus协议的消息帧格式简单、紧凑且易于理解。用户容易理解和使用,制造商容易开发和集成,方便形成工业控制网络。 Modbus协议的应用 最简单地说,Modbus是一种总线通信协议,类似于I2C和SPI,但不依赖于特定的硬件总线。Modbus之所以广泛使用,是因为它具有许多优点。 Modbus通信过程 需要注意的是,Modbus是一种一主多从的通信协议。在Modbus通信中,只有一个设备可以发送请求,其他从设备接收主机发送的请求数据并进行响应。从设备可以是各种外围设备,如I/O传感器、阀门、网络驱动器或其他类型的 测量设备。从站处理信息并使用Modbus将其数据发送给主站。换句话说,不能在同一时间内进行Modbus同步通信。主机一次只能向一个从机发送请求,总线上每次只有一个数据进行传输,即主机发送请求,从机响应。如果主机没有发送请求,总线上就没有数据通信。 需要特别注意的是,Modbus通信没有忙机制判断。例如,如果主机发送命令给从机,但从机没有收到或正在处理其他任务,那么从机将无法及时响应,因为Modbus总线只负责传输数据,没有其他仲裁机制。因此,必须通过软件的方式来判断是否成功接收到数据。 Modbus存储区 既然从机存储数据,必须有一种方式来进行文件操作。我们都知道,文件可以分为只读(Read-Only,-R)和读写(Read-Write,-RW)两种类型,而Modbus也有相应的存储区。 在Modbus协议中,存储的数据类型可以分为两种主要类型:布尔量和16位寄存器。 - 布尔量:这些数据可以表示诸如IO口电平高低、灯的开关状态等。 - 16位寄存器:这些数据通常用于表示传感器的温度数据、存储密码等信息。 Modbus协议将存储区分为4个区域,分别是0、1、3和4区。其中,1区和4区是可读可写的,而0区和3区是只读的。 此外,Modbus还为每个存储区分配了地址范围。主机在向从机请求数据时,只需告诉从机数据的起始地址和要获取的字节数,从机就可以发送数据给主机。 Modbus协议类型 在Modbus协议中,数据传输可以采用不同的介质和模式,主要有三种报文类型,包括ASCII、RTU(远程终端控制系统)和TCP。 对于串行端口,Modbus协议有多个版本,但最常见的包括以下四种: - **Modbus-RTU**:采用紧凑的16进制表示数据的方式。Modbus-RTU在数据帧中附加了循环冗余校验(CRC),用于检测数据是否正确。一个典型的Modbus-RTU报文包含从机地址、功能码、数据和CRC校验。 - **Modbus-ASCII**:采用ASCII码表示数据,每个8位字节都被转换为两个ASCII字符发送。Modbus-ASCII也包含循环冗余校验,但使用了不同的校验方法。 - **Modbus-TCP**:Modbus-TCP不需要从机地址,而是需要MBAP(Modbus Application Protocol over TCP)报文头。由于TCP本身具有校验和差错检测能力,因此Modbus-TCP不需要额外的差错校验。 - **Modbus Plus**:这是另一种Modbus协议版本,用于特定的工业应用。 在这些版本中,Modbus-RTU最为常见,而Modbus-ASCII较少使用。下面我们将详细讨论Modbus-RTU协议。 Modbus-RTU协议 Modbus报文帧结构 Modbus报文是指主机发送给从机的一帧数据,其中包含了从机的地址、主机要执行的操作、数据以及校验码等信息。在串行链路上,Modbus报文的格式如下: - **从机地址**:每个从机都有唯一的地址,占用一个字节,有效范围通常是1-247,其中255是广播地址,表示向所有从机发送请求。 - **功能码**:占用一个字节,它表示主机发送的请求是何种操作,不同的功能码对应不同的操作。 - **数据**:根据功能码的不同,包含不同的信息。例如,如果功能码是查询从机的数据,数据部分包括起始寄存器地址和要读取的寄存器数量。 - **校验码**:在数据传输过程中 ,数据可能会受到干扰或损坏,CRC检验用于检测接收到的数据是否正确。 Modbus功能码 Modbus协议规定了多个功能码,每个功能码对应一种操作。虽然Modbus定义了多达20多种功能码,但实际应用中常用的只有其中的8种,用于对存储区的读写。以下是常用的Modbus功能码: - **03**:读取多个寄存器的值。 - **06**:设置单个寄存器的值。 - **16**:设置多个寄存器的值。 - **01**:读取多个开关量输入。 - **02**:读取多个开关量输出。 - **05**:设置单个开关量输出。 - **15**:设置多个开关量输出。 - **23**:读取多个寄存器的值(扩展功能码)。 需要注意的是,不同的功能码对应不同的操作,因此主机在发送请求时需要指定功能码,以告知从机要执行的操作。 CRC校验 CRC(循环冗余校验)用于检测数据传输过程中的错误。在Modbus协议中,CRC校验占用两个字节,包含一个16位的二进制值。CRC值由发送设备计算并附加到数据帧上,在接收设备接收数据时重新计算CRC值,并与接收到的CRC校验值进行比较。如果这两个值不相等,就表示数据传输存在错误。 CRC校验的计算流程如下: 1. 预置一个16位寄存器为0xFFFF(全1),称之为CRC寄存器。 2. 把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。 3. 将CRC寄存器向右移动一位,最高位填充0,最低位被移出并进行检测。 4. 如果最低位为0,则重复第3步(继续下一次移位);如果最低位为1,则将CRC寄存器与预设的固定值(0xA001)进行异或运算。 5. 重复第3步和第4步,直到进行8次移位,处理完一个完整的8位。 6. 重复第2步到第5步来处理下一个8位,直到所有字节处理完成。 7. 最终CRC寄存器中的值就是CRC校验值。 此外,还有一种使用预先计算的表格来计算CRC的方法,它具有更快的计算速度,但需要较大的存储空间。这种方法在此不做详细说明。 发送和接收数据示例 下面我们将详细介绍Modbus-RTU协议的发送和接收数据示例。 1. 主机对从机读数据操作 主机发送报文格式如下: 01 03 00 01 00 01 D5 CA 解释: - `0x01`:从机的地址。 - `0x03`:查询功能,读取从机寄存器的数据。 - `0x00 0x01`:表示读取的起始寄存器地址,从0x0001开始读取。 - `0x00 0x01`:表示查询的寄存器数量为1个。Modbus将数据存储在寄存器中,通过查询寄存器来获取不同变量的值。一个寄存器地址对应2字节数据,寄存器地址对应从机的实际存储地址。 - `0xD5 0xCA`:循环冗余校验 (CRC)。 从机回复报文格式如下: 01 03 02 00 17 F8 4A 解释: - `0x01`:从机的地址。 - `0x03`:查询功能,读取从机寄存器的数据。 - `0x02`:返回字节数为2个,一个寄存器对应2个字节。 - `0x00 0x17`:寄存器的值是0x0017。 - `0xF8 0x4A`:循环冗余校验 (CRC)。 2. 主机对从机写数据操作 主机发送报文格式如下: 01 06 00 01 00 17 98 04 解释: - `0x01`:从机的地址。 - `0x06`:修改功能,修改从机寄存器的数据。 - `0x00 0x01`:表示修改的起始寄存器地址,说明要修改0x0001-0x0003的存储内容。 - `0x00 0x17`:要修改的数据值为0x0017。 - `0x98 0x04`:循环冗余校验 (CRC)。 从机回复报文格式如下: 01 06 00 01 00 17 98 04 解释: 从机的回复与主机的发送相同。如果不同,说明发生了错误。 这是一个Modbus-RTU协议的简单示例,演示了主机如何向从机发送读取和写入数据的请求,并从从机接收响应。每个Modbus报文都包含从机地址、功能码、数据以及CRC校验,以确保可靠的数据传输。 Modbus-ASCII协议 Modbus-ASCII协议与Modbus-RTU协议相似,但在消息中的每个字节都作为两个ASCII字符发送。十六进制的0到F分别对应ASCII字符的0到9和A到F。 以下是Modbus-ASCII协议的特点: - 每个字节都以ASCII字符表示,例如0x30~0x3A表示0到9,0x41~0 x46表示A到F。 - 字节之间使用空格分隔。 - 每个消息以回车符(CR,0x0D)和换行符(LF,0x0A)结束。 Modbus-ASCII的CRC校验与Modbus-RTU相同,但在ASCII格式下表示为ASCII字符。 Modbus-TCP协议 Modbus-TCP协议是基于TCP/IP协议的Modbus协议变种,用于在TCP/IP网络上进行通信。与Modbus-RTU和Modbus-ASCII协议不同,Modbus-TCP协议不使用物理串行链路,而是使用以太网或Wi-Fi等TCP/IP网络。 以下是Modbus-TCP协议的特点: - Modbus-TCP使用标准的TCP/IP套接字连接,无需物理串行通信线路。 - Modbus-TCP消息与Modbus-RTU协议消息的结构相似,但不包括CRC校验。 - 在Modbus-TCP中,数据以二进制格式传输,而不是ASCII字符。 - Modbus-TCP消息通过TCP连接的套接字发送和接收。 - Modbus-TCP使用TCP端口502。 因此,与Modbus-RTU和Modbus-ASCII协议相比,Modbus-TCP协议更适合基于以太网的通信,通常用于现代工业自动化系统和设备。 总结 Modbus是一种用于工业领域通信的通用协议,具有多个版本,包括Modbus-RTU、Modbus-ASCII和Modbus-TCP。不同版本适用于不同的通信介质和场景。 Modbus-RTU通常用于串行通信,而Modbus-TCP用于以太网通信。 Modbus协议包括功能码、CRC校验等元素,用于发送和接收数据。使用Modbus协议,主机可以与从机进行通信,读取和写入数据,以实现自动化和控制系统。 --- ### 90. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 做工程很多时候会提到RS485控制线,它到底是什么呢?今天我聊聊RS485相关的应用,深入了解RS485,你会发现里面的知识确实有很多,那么我们就选择一些平时在弱电中会考虑到的问题供大家了解。 一、什么是RS485总线 工业现场经常要采集多点数据,模拟信号或开关信号,一般用到RS485总线,RS-485采用半双工工作方式,支持多点数据通信。RS-485总线网络拓扑一般采用终端匹配的总线型结构。即采用一条总线将各个节点串接起来,不支持环形或星型网络。 RS485无具体的物理形状,根据工程的实际情况而采用的接口,RS485采用差分信号负逻辑,+2V~+6V表示"0",- 6V~- 2V表示"1"。 RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。 485总线的通讯距离可以达到1200米。根据485总线结构理论,在理想环境的前提下,485总线传输距离可以达到1200米。其条件是通讯线材优质达标,波特率为9600,只负载一台485设备,才能使得通讯距离达到1200米,所以通常485总线实际的稳定的通讯距离往往达不到1200米。如果负载485设备多,线材阻抗不合乎标准,线径过细,转换器品质不良,设备防雷保护复杂和波特率的提高等等因素都会降低通讯距离。 二、RS485线缆 在一般场合采用普通的双绞线就可以,在要求比较高的环境下可以采用带屏蔽层的同轴电缆。在使用RS485接口时,对于特定的传输线路,从RS485接口到负载其数据信号传输所允许的最大电缆长度与信号传输的波特率成反比,这个长度数据主要是受信号失真及噪声等影响所影响。 理论上RS485的最长传输距离能达到1200米,但在实际应用中传输的距离要比1200米短,具体能传输多远视周围环境而定。在传输过程中可以采用增加中继的方法对信号进行放大,最多可以加八个中继,也就是说理论上RS485的最大传输距离可以达到9.6公里。如果真需要长距离传输,可以采用光纤为传播介质,收发两端各加一个光电转换器,多模光纤的传输距离是5~10公里,而采用单模光纤可达50公里的传播距离。 三、RS485布线安装注意事项 1、485总线应采用什么样的通讯线?一条总线上可以挂接多少台设备? 必须采用RVSP屏蔽双绞线。所用屏蔽双绞线规格,与485通讯线的距离和挂接的设备数量有关,如下表所示。采用屏蔽双绞线有助于减少和消除两根485通信线之间产生的分布电容以及来自于通讯线周围产生的共模干扰。 有人说,485总线可以带128台设备进行通讯。 其实并不是所有485转换器都能够带128台设备的,要根据485转换器内芯片的型号和485设备芯片的型号来判断,只能按照指标较低的芯片来确定其负载能力。一般485芯片负载能力有三个级别――32台、128台和256台。此外理论上的标称往往实际上是达不到的,通讯距离越长、波特率越高、线径越细、线材质量越差、转换器品质越差、转换器电能供应不足(无源转换器)、防雷保护越强,这些都会降低真实负载数量。 工程商大都习惯采用5类网线或超5类网线作为485通信线,这是错误的。这是因为: (1 普通网线没有屏蔽层,不能防止共模干扰。 (2)不能用线径太细的网线,会导致传输距离降低和可挂接的设备减少,至少0.4mm平方或用标准的网线。 (3)网络线为单股的铜线,相比多芯线而言容易断裂。 2、为什么要接地 485收发器在规定的共模电压-7V至+12V之间时,才能正常工作。如果超出此范围会影响通讯,严重的会损坏通讯接口。共模干扰会增大上述共模电压。消除共模干扰的有效手段之一是将485通讯线的屏蔽层用作地线,将机具、电脑等网络中的设备地连接在一起,并由一点可靠地接入大地。 3、485通信线应如何走线 通信线尽量远离高压电线、日光灯等干扰源,通信线不能与电源线等干扰源避开时通信线应与电源线垂直,不能平行,更不能捆扎在一起,并采用质量高的双绞线走线。 4、、为什么485总线要采用手拉手结构,而不能采用星形结构? 星形结构会产生反射信号,从而影响到485通信。总线到每个终端设备的分支线长度应尽量短,一般不要超出5米。分支线如果没有接终端,会有反射信号,对通讯产生较强的干扰,应将其去掉,最好在RS485设备两头接有120Ω终端电阻。 拉手连接如图: 星形连接如图: 5、485总线上设备到设备之间可以有接点吗? 在同一个网络系统中,使用同一种电缆,尽量减少线路中的接点。接点处确保焊接良好,包扎紧密,避免松动和氧化。保证一条单一的、连续的信号通道作为总线。 6、什么叫共模干扰和差模干扰?如何消除通讯线上的干扰? 485通信线由两根双绞的线组成,它是通过两根通信线之间的电压差的方式来传递信号,因此称之为差分电压传输。差模干扰在两根信号线之间传输,属于对称性干扰。消除差模干扰的方法是在电路中增加一个偏值电阻(球机中的匹配电阻),并采用双绞线;共模干扰是在信号线与地之间传输,属于非对称性干扰。消除共模干扰的方法包括: (1)采用屏蔽双绞线并有效接地。 (2)强电场的地方还要考虑采用镀锌管屏蔽。 (3)布线时远离高压线,更不能将高压电源线和信号线捆在一起走线。 (4)采用线性稳压电源或高品质的开关电源(纹波干扰小于50mV)。 7、什么情况下在485总线上要增加终端电阻? 一般情况下不需要增加终端电阻,只有在485通信距离超过300米的情况下,要在485通讯的开始端和结束端增加终端电阻。尤其是485总线上设备数量较少时。当设备数量较多时(如超过22台)。一般不需增加终端电阻,因为终端电阻会降低485总线的负载能力,球机终端120Ω匹配电阻的连接方式如下:球机终端120Ω匹配电阻可通过在球机底盘上的拨码开关拨码来连接。球机出厂时,120Ω匹配电阻默认为未接入,可通过把拨码开关的第10位拨到ON,把120Ω匹配电阻接入线路。反之,如果不接入120Ω匹配电阻,则把第10位拨到OFF即可。 8、实际应用中的问题 实际施工使用中用户常采用星形连接方式,此时终端电阻必须连接在线路距离最远的两个设备上(如下图,1#与15#设备),但是由于该连接方式不符合RS485工业标准的使用要求,因此在各设备线路距离较远时,容易产生信号反射、抗干扰能力下降等问题,导致控制信号的可靠性下降。此时,出现的现象为球机完全不受控,或自行运转无法停止等。 对于这种情况,建议采用增加一个RS485分配器。该产品可以有效地将星形连接转换为符合RS485工业标准所规定的连接方式,从而避免产生问题,提高通信可靠性,如下图所示。 9、无中继最大传输距离推荐用线 (1)普通双绞屏蔽型电缆 STP-120Ω(for RS485 & CAN) one pair 20 AWG ,电缆外径7.7mm左右。适用于室内、管道及一般工业环境。使用时,屏蔽层一端接地! (2) 普通双绞屏蔽型电缆 STP-120Ω(for RS485 & CAN) one pair 18 AWG ,电缆外径8.2mm左右。适用于室内、管道及一般工业环境。使用时,屏蔽层一端接地! (3) 铠装双绞屏蔽型电缆 ASTP-120Ω(for RS485 & CAN) one pair 18 AWG ,电缆外径12.3mm左右。可用于干扰严重、鼠害频繁以及有防雷、防爆要求的场所。使用时,建议铠装层两端接地,最内层屏蔽一端接地 四、RS485常见的故障与解决方法 一、如何预防故障的发生呢? 为减少通信故障提出下面几条建议。 1、建议用户使用和购买厂家提供的485转换器或者厂家指定推荐品牌的485转换器。 2、厂家会对与其配套的485转换器做大量的测试工作,并且会要求485转换器生产厂家按照其固定的性能参数进行生产和品质检测,所以它与门禁设备具备较好的兼容性。千万不要贪图便宜购买杂牌厂家的485转换器。 3、严格按照485总线的施工规范进行施工,杜绝任何侥幸心理。 4、对线路较长、负载较多的485总线工程采用科学的、有预留的解决方案。 5、如果通讯距离过长, 如超500米,建议采用中继器或485HUB来解决。 6、如果负载数过多,如一条总线上超过30台,建议采用485HUB来解决问题。 7、现场调试带齐调试设备。现场调试一定要随身携带几个可以接长距离和多负载的转换器、一台常用的电脑笔记本、测试通路断路的万用表,几个120欧姆的终端电阻。 二、采用485总线结构常见的几种通讯故障有下面几种? 1、通讯不上,无反应。 2、可以上传数据,但不可以下载数据。 3、通讯时系统提示受到干扰,或者不通讯时通讯指示灯也不停地闪烁。 4、有时能通讯上,有时通讯不上,有的指令可以通,有的指令不可以通。 三、出现故障了有哪些调试方法呢? 在调试前首先要确保设备接线正确,且施工合乎规范。可以根据遇到的问题采用下面几种调试方法。 1、共地法: 用1条线或者屏蔽线将所有485设备的GND地连接起来,这样可以避免所有设备之间存在影响通讯的电势差。 2、终端电阻法: 在最后一台485设备的485+和485-上并接120欧姆的终端电阻来改善通讯质量。 3、中间分段断开法: 通过从中间断开来检查是否设备负载过多、通讯距离过长、某台设备对整个通讯线路的影响等。 4、单独拉线法: 单独简易拉一条线到设备,这样可以用来排除是否是布线引起了通讯故障。 5、更换转换器法: 随身携带几个转换器,这样可以排除是否是转换器质量问题影响了通讯质量。 6、笔记本调试法: 先保证自己随身携带的电脑笔记本是通讯正常的设备,用它来替换客户电脑进行通讯,如果正常,则表明客户的电脑的串口有可能被损害或者受伤。 2026年现场经验补充:大项目布线排坑指南 在近百个工业现场项目中,我们总结了以下高频踩坑点和最佳实践: 强弱电分离距离至少30cm:RS485信号线与动力电缆(380V/220V)平行走线时,间隔不应少于30cm,交叉时应垂直交叉。距离不够时务必使用双屏蔽电缆(铝箔+编织网双层屏蔽),且屏蔽层单端接地。 手拉手总线,严禁星型分支:星型拓扑产生的反射信号会在主线上叠加,轻则丢包,重则整个总线下线。如果现场确实需要分支结构,使用485集线器或中继器隔离各支路。 终端设备供电一致性:如果总线上混合使用12V和24V供电的设备,务必确保GND共地。不共地的设备之间会出现共模电压超标问题,导致收发器芯片永久损坏。 预留调试接口:建议在总线的两端和中点各预留一个调试接线口,方便后期用Modbus调试工具排查问题。 modbus.cn提供工业级RS485隔离中继器、集线器及各类网关设备,欢迎查阅产品中心获取详细参数。 --- ### 91. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、Modbus通信协议 Modbus协议只有一个主站,可以有1~247个从站。此协议支持传统的RS-232、RS-422、RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通信标准。 当控制器设为在Modbus网络上以RTU模式通信,在消息中的每个8Bit字节按照原值传送,不做处理,如63H,RTU将直接发送01100011,这种方式的主要优点是数据帧传送之间没有间隔,相同波特率下传输数据的密度要比ASCII高,传输速度更快。 二、ModbusRTU主站指令 1、Modbus库指令如图1所示,Master为主站0口,Master2为主站1口,Slave为从站,且从站只有0口。 图1 2.西门子Modbus库主站MBUS_CTRL的主站定义参数,如图2所示。 图2 图2中符号说明如下: EN:一直使能 MODE:允许Modbus通信 Baud:通信速率,波特率(主从一致),默认9600 Parity:奇偶校验,0无校验,1奇校验,2偶校验(主从一致),默认偶校验 Port:通信端口,0口自带,1口扩展(CM01信号板) Timeout:最大等待时间单位:ms Done:完成位 Error:错误代码(当出现错误可以查看软件帮助相对应的错误代码) 西门子Modbus库主站MBUS_MSG的主站信息读写参数,如图3所示 图3 图3中符号说明如下: En:使能 First:首次扫描用沿触发 Slave:从站地址(1-247主站默认2号站,从站地址除2以外) RW:读写操作,0读,1写 Addr:读写地址功能码 Count:数量 Dataptr:数据指针 (默认指主站而且是以字节的形式显示) Done:完成位 Error:错误字节(当出现错误可以查看软件帮助相对应的错误代码) STEP7_Micro/WIN Smart和S7_200SmartCPU支持两种Modbus RTU主站,对于单个Modbus RTU主站,使用指令MBUS_CTRL和MBUS_MSG,在进行0口通信时应用。对于第二个Modbus RTU主站,使用指令MBUS_CTRL2和 MBUS_MSG2,在进行1口通信时应用。如果您在项目中使用两个 Modbus 主站,则要确保 MBUS_CTRL 和 MB_CTRL2 使用不同的端口号。 MBUS_CTRL写在主站里,不管有多少从站,只写一次。MBUS_MSG 写在主站里,比如有一个从站,主从互相控制,需要2条指令,一个读一个写,有多个从站,就写多个读写指令。 三、ModbusRTU从站指令 西门子Modbus库从站MBUS_CTRL的从站定义参数,如图4所示。 图4 图4中符号说明如下: En 使能用沿触发 Mode 允许Modbus通信 Addr 从站地址(1-147) Baud 通信速率波特率(主从一致)默认9600 Parity 奇偶校验0无校验,1奇校验,2偶校验(主从一致)默认偶校验 Port 通信端口0口自带 Delay 延时 MaxIQ 最大输入输出点数256 MaxAI 最大模拟量输入56 Maxhold 最大缓存区 Holdstart 最大缓存区起始地址 Done 完成位 Error 错误字节 Done 完成位 Error 错误字节 2.西门子Modbus库从站MBUS_SLAVE的从站应答参数,如图5所示。 图5 四、通信程序编写 ModbusRTU两台PLC互相控制通信示例 ModbusRTU 两台PLC分别用I点相互控制Q点,主站程序如图6所示,从站程序如图7所示。写从站程序需要注意,从站定义需要用沿触发,在系统块记得更改从站PLC站地址。 图6 图7 ModbusRTU两台PLC星三角通信示例 两台PLC,主站控制从站的星三角启动停止,主站IW0控制从站VW0(I0.0-V0.0启动,I0.1-V0.1停止),主站程序如图1-1图1-2所示,从站程序如图1-3图1-4图1-5图1-6图1-7图1-8所示。 图1-1 图1-2 图1-3 图1-4 图1-5 图1-6 图1-7 图1-8 ModbusRTU三台PLC星三角通信示例 三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停如图2-1所示,控制程序如图2-2图2-3图2-4图2-5图2-6图2-7所示。 图2-1 图2-2 图2-3 图2-4 图2-5 图2-6 图2-7 2.三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停,3号从站控制程序如图2-8图2-9图2-10所示。 图2-8 图2-9 图2-10 3.三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停,4号从站控制程序如图2-11图2-12图2-13所示。 图2-11 图2-12 图2-13 值得注意的是,要记得更改三号站和四号站在系统块内的地址,从站定义用沿来触发。最后记得在程序块中设置库存储区的分配如图2-14。 图2-14 --- ### 92. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.    何时需要在RS-485总线上端接,以及如何正确端接?   RS-485总线端接在许多应用中均很有用,因为此方式有助于提高信号完整性并减少通信问题。“端接”是指将电缆的特征阻抗与端接网络匹配,使总线末端的接收器能够观察到最大信号功率。未端接或端接不当的总线将无法很好的匹配,从而在网络末端产生反射,导致整体信号完整性降低。   在网络的双向环路时间远大于信号位时间时,无需终止,因为每次反射到达网络末端时,它们都会损失能量。但是,对于位时间基本上不长于电缆环路时间的应用,为使反射最小化,端接至关重要。   最基本的端接称为并联端接,由单个电阻组成,如图1所示。RS-485标准要求标称特性阻抗达到120Ω,因此端接电阻的默认值应为RT = 120Ω。阅读博文:“RS-485基础:什么时候需要端接,以及如何正确执行。”     图1:具有并联端接的RS-485总线   2.    什么是故障安全偏置,如何实现?   故障安全偏置是确保RS-485接收器不会因差分输入电压而处于不确定状态的一种方式。电子工业联盟(EIA)-485标准指出:当差分电压≥+ 200mV时,RS-485的输入阈值是逻辑高;差分电压≤-200mV时,RS-485的输入阈值是逻辑低,从而在高低阈值之间保持400mV的不确定状态。   可通过以下两种方式实现故障安全偏置:   l  选择在接收器中具有内置故障安全输入阈值的收发器。   l  添加外部电阻,以在空载总线上产生外部偏置。   两种方法都可以确保总线上的逻辑高状态。   3.    如何计算RS-485总线上的最大节点数?   RS-485是多点差分总线,意味着总线上的所有节点都共享一个公共传输介质。随着节点总数增加,每个驱动器上的负载也将随之增加。   电信行业协会(TIA)/ EIA-485标准创建了一个假设的单位负载(UL),以帮助计算RS-485总线上的最大节点数。该标准规定:驱动器必须能够在最多32个单元负载上并行驱动至少1.5V差分信号,并在总线的两端分别连接两个120Ω终端电阻。   公式1表示输入电压除以漏电电流后最坏情况下的比值来计算输入电阻。在确定了节点的输入电阻后,可使用公式2计算RS-485总线上的最大节点数:   输入电阻=最大(VIN/Ileakage)     (1)   节点数= 32 /输入电阻      (2)   4.    如何了在恰当时间需要在节点之间添加一根地线?   设计远程数据链路时,必须假设存在一些接地电位差。这些电压会给发射机输出增加共模噪声Vn。即使总叠加信号处在接收机的输入共模范围内,依靠当地的地电位差作为返回电流的可靠路径也是不安全的。接地电位差(GPD)超出接收器的共模范围时(在长电缆和大电流负载的情况下经常发生),需要使用适当的接地技术。     图2:远程节点配置:独立的接地点(a);直接连接的远程接地(b);   器件接地和本地系统接地的分离(c)   图2a所示为可能从电气安装的不同部分汲取功率的远程节点。对安装的任何变动(例如在维护工作期间)均可将GPD以至于超出接收器的输入共模范围的程度。因此可能会导致目前正工作的数据链路将来停止运行。   也不建议通过接地线直接连接远程接地(图2b),因为直接连接会导致大的接地回路电流作为共模噪声耦合到数据线。   为实现远程接地的直接连接,RS-485标准建议通过插入电阻器将设备接地与本地系统接地分开(图2c)。虽然这种方法降低了环路电流,但由于存在一个大接地环路使数据链路对环路其他地方产生的噪声保持敏感。因此,尚未建立稳定的数据链路。   要在强健的RS-485数据链路上远距离承受高达数千伏的GPD,最佳方法是将总线收发器的信号和电源线与其本地信号和电源进行电流隔离。这种情况下,电源隔离器(例如隔离的DC / DC转换器)和信号隔离器(例如数字电容隔离器)可防止电流在远程系统接地之间流动,并避免产生电流环路。   5.    RS-485的长度与速度建议值是多少?   在额定的数据速率下,最大总线长度受限于传输线损耗和信号抖动。由于在波特率为10%或以上的抖动,数据可靠性急剧下降,因此图3所示为传统RS-485电缆在信号抖动10%的情况下的电缆长度与数据速率特性。     图3:电缆长度与数据速率建议   在图3上,标有1号的圆圈代表电缆长度较短时的高数据速率区域。此处,可忽略传输线的损耗。数据速率主要取决于驱动器的上升时间。尽管该标准建议使用10 Mbps,但如今的快速接口电路可以高达50 Mbps的数据速率运行。   图3中的红色2号代表从短数据线到长数据线的过渡。必须考虑较长传输线的损耗。因此,随着电缆长度的增加,数据速率必须降低。根据经验,线路长度[m]与数据速率[bps]的乘积应为107。   红色的3代表低频范围,其中电缆串联电阻和线路端接的相互作用会导致信号衰减。在某个点,信号的振幅变得比接收机能够正常检测到的幅度要小(即不超过VIT阈值)。   6.    如何估计RS-485的功耗?   要计算功耗,可将功率分为几部分。当器件在没有外部负载的情况下通电时,功耗将用于集成电路本身。如果在输出引脚上增加负载,则驱动负载的功率将从器件中抽取。由于RS-485具有差分信号,因此负载通常添加在A和B引脚之间。   在图4中,蓝色轨迹,PDic,是器件消耗的功率。对于低数据速率,功耗主要来自电阻负载(红色迹线),PDdc。对于高数据速率,需考虑电容性负载的功耗(绿色迹线)PDac。     图4:计算功耗扇区   公式3计算总功耗为:   PDtotal = PDic + PDdc + PDac                      (3)   如需计算总功耗,必须首先计算出每个部分的功率。器件功耗参见公式4,其中静态电源电流Icc在数据手册中指定:   PDic = Vcc*Icc                                    (4)   如果将电阻性负载置于总线上,驱动器会在其上产生一个电压(Vod),如公式5和6所示,其中C是寄生电容,它包括收发器的电容、负载的电容和迹线电容。数据频率f也包括在计算中。   PDdc = Vcc*I – I2*R = (Vcc – I*R)*I          (5)   PDac = 2*2C*f*Vcc*Vod                              (6)   阅读博文:“如何计算高速RS-485收发器的功耗”。   7.    如何保护RS-485接口免受静电释放(ESD)影响?   ESD保护有多种类型,包括人体模型、国际电工委员会(IEC)接触放电和IEC气隙放电。如果一个收发器具有集成了IEC ESD(例如德州仪器的THVD1450或THVD1500),则无需外部组件就可在指定收发器的电平上保护RS-485接口免受ESD的影响。   例如,在没有任何外部元件的情况下,THVD1450可以支持18-kV IEC 61000-4-2接触放电。市场上许多器件都没有这种集成,因此需要外部瞬态电压抑制(TVS)二极管。阅读博文:“如何根据额定电压为RS-232、RS-485和CAN选择TVS二极管。”   8.    如何了解是否需要外部TVS二极管?   工业网络必须在恶劣的环境中可靠运行。由ESD、感应负载的切换或雷击引起的电气过应力瞬变会破坏数据传输并损坏总线收发器,除非采取有效措施来减少瞬态影响。   德州仪器器件已根据以下标准进行了测试:   l  IEC 61000-4-2的ESD抗静电测试,模拟了操作员直接向相邻电子部件施加静电。 THVD1500和THVD1450已通过此标准测试。   l  IEC 61000-4-4-4的电气快速瞬态(EFT)或突发抗扰度测试,模拟了因感应负载中断、继电器触点弹跳等引起的日常开关瞬变。THVD1450和THVD1550已通过此标准测试。   l  就电流和持续时间而言,电涌抗扰度测试IEC 61000-4-5是最严格的瞬态抗扰度测试,约比ESD和EFT测试时间长1000倍。THVD1429和THVD1419已通过此标准测试。   德州仪器的THVD系列最新的RS-485收发器根据这些标准集成了各种保护级别,且无需额外的外部保护。保护级别在器件数据表中指定。   9.    如何防止高电压短路?   在许多RS-485应用中,存在着不慎将通信线连接到电源线的风险。这种风险在现场安装的系统中特别高,如HVAC系统、照明控制或其他楼宇自动化应用等现场安装的系统中。这些情况下,必须确保RS-485收发器不会损坏,以避免昂贵的现场退货和重新安装风险。   虽然像TVS二极管之类的箝位元件能够限制瞬态事件中收发器观察到的最大电压,但它们通常无法防止较长时间的应力(例如DC短路)。为防止这些情况,需要一些串联限流元件。一种典型的方法是使用正温度系数(PTC)电阻器。该电阻在标称条件下的电阻较低,但在故障条件下,当大电流流过时(例如,流过TVS等箝位装置),电阻就会变大。德州仪器参考设计“保护RS-485收发器免受持续高电压/电气过应力的参考设计”中可看到使用THVD1500收发器的实现方式的示例。   但是,使用这些额外的串联限流和并联电压箝位元件可能会很昂贵,并占用宝贵的PCB空间。因此,大多数情况下,更优化的方法是使用能够耐受这些高故障电压而无需外部保护的收发器。THVD2450就是一个示例。其额定承受直流短路电压可达+/- 70V。 --- ### 93. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 无论您从事工业自动化、过程控制、机器设计还是任何其他工业应用,在某个时间点您都可能会遇到 RS-485 网络,为其进行故障排除绝对是一场噩梦。 RS-485 有很多优点,通过 RS-485 连接,可以铺设数千米的信号线,并成功地通过线路传输数据,无论是短的还是长的 RS-485 线路。甚至可以使用 RS-485 将最多 256 个不同的设备连接在一起(设备数量取决于 RS-485 网络配置、RS-485 驱动程序和每个 RS-485 节点的单位负载)。 从接线的角度来看,它在很大程度上非常简单,只需要一根传输线、一根接收线和一根信号公共线(是的,请使用一根信号公共线,仅一端接地,谢谢!)。但构建强大且可靠 RS-485 网络需要考虑很多因素。 RS-485 也是一种相当宽容的协议,即使总线配置错误,也可以正常工作多年。在某些 RS-485 网络设计中,偏置和端接用于使 RS-485 网络更加稳健并且通信更加可靠。 如果您的网络出现通信问题,终止和偏置通常是改善 RS-485 网络通信的首要起点。 要真正了解何时以及如何实施它们,我们需要首先了解 长 RS-485 线路 与 短 RS-485 线路 ,这不仅仅与电线的物理长度有关。 长线与短线 您可能会惊讶地发现 长 RS-485 线路 和 短 RS-485 线路 与电缆的长度并不完全相关。长和短实际上与 RS-485 线路行为有更多关系,特别是信号从 RS-485 发送端传输到 RS-485 接收端所需的时间。 许多因素会影响所需的时间,包括信号在给定类型物理线路中传播的速度、通过线路传播的信号的频率(考虑数据传输速度,例如 9600 bps),以及电线本身的物理长度。 如果电线相当短并且信号频率(数据传输速度)相对较低,例如 300 bps,则发送和接收数据所需的时间对传输数据的质量影响很小。在这些类型场景中,您通常可以假设当发射器启用或打开时,另一端的接收器立即看到信号。 然而,如果我们将频率提高到 19,200 bps,并将电线延长1200米,则会显着增加传输的 RS-485 信号到达 RS-485 接收器所需的时间。 为了了解信号级真正发生的情况,我们需要了解术语“上升时间”和“电缆延迟”。 上升时间 现在让我们看看电缆延迟。 电缆延迟 电缆延迟是指信号通过电缆从 RS-485 发送器传输到 RS-485 接收器所需的时间。电信号通过铜线的传输速度为每秒 124,000 到 140,000 英里(哇,太快了)。该速度通常称为信号的传播速率、传播速度或传输速度。基本上,这是通过电线实际获取电信号所需的时间。 总结一下上升和下降时间以及电缆延迟,如果电缆很短并且上升时间很快,那么信号延迟实际上不需要担心。但是,如果您开始使用上升时间较慢的 RS-485 发送器延长至1200米的电线,则可能会遇到问题。 是长还是短? 一般准则是根据 TIA-485-A 标准确定 RS-485 线路是长还是短。在该标准中,特别是在补充 TSB-89-A 中,当信号的上升时间小于单向电缆延迟的两倍时,RS-485 线路被视为较长。 因此请记住,仅仅因为 RS-485 线路物理上短或长并不一定表明需要偏置或终止。那么我们什么时候需要实现偏置和终止呢? 何时终止 RS-485 线路 无论 RS-485 驱动器上升时间是慢还是快,或者 RS-485 线路长还是短,所有 RS-485 线路都可能遭受阻抗不匹配的影响,从而导致电压和电流反射。通常反射发生在长线路上,导致接收器误读逻辑电平。正确的终止可以防止反射,从而提高数据完整性。 当电压首次施加到 RS-485 线路时,​​电流会流过该线路(即使线路开路)。到达线路末端后不久,电流稳定到由线路中的串联电阻、施加的电压和终止确定的最终值。如果初始电流和最终电流变化,线路会在电流稳定时看到反射电压,从而可能导致数据完整性问题。 如果数据速率低或电缆短,则可能不需要端接。在大多数情况下,随着数据速率和/或电缆长度的增加,端接变得强制性。 如何端接 RS-485 线路 使用等于其特性阻抗的值来端接数据电缆可以减少反射,并使您的 RS-485 网络更加可靠。由于总线上的任何设备都可以在任何给定时间进行传输,因此总线中间的节点很可能会进行传输,从而需要对段的两端应用终止。 要正确端接长线路,首先需要知道线路的特性阻抗。您通常可以从电缆制造商处获取此信息。(还有更复杂的方法可以解决这个问题,这里不再介绍。) 在线路上添加终端时,不应使用超过两个电阻,线路的每一端各一个。对于特性阻抗为120Ω的电缆,终端电阻应为120Ω。根据我的经验,我们几乎总是最终使用 120 Ω 电阻器进行端接,因为这就是屏蔽双绞线所需要的。因此,将其中一些保留在旧工具箱中可能是个好主意。 选择正确的终止方式 最流行的端接方法是并行端接,即在物理链路的每一端放置一个电阻。将其放置在线路末端可以消除所有反射,尽管这种方法会导致更高的功耗。电阻终端电阻的值通常为 120 至 130 Ω。虽然双绞线电缆阻抗可低至 100 Ω,但对于 RS-485 驱动器来说 100 Ω 终端电阻太低,因为两个并联产生 50 Ω,而 RS-485 驱动器的额定负载不低于 54 Ω。 将与电缆阻抗匹配的终端电阻放置在方便的位置,尽可能靠近 RS-485 线路的末端。连接到 RS-485 线路的节点可能内置有终端电阻作为可配置设置,因此在向任何线路添加终端电阻时请进行检查。 一般来说,对于所有长线 RS-485 连接来说,端接是一个好主意。但如果某些短线具有快速上升时间,那么它们也可以从实施端接中受益。 既然您是正式的 RS-485 终结者,我们如何解决偏差问题? 偏置 RS-485 连接 RS-485 是一种多点通信规范,其中所有节点共享公共两线连接(加上一根用于信号公共端的附加线)。这导致线上数据冲突的机会很多。在 RS-485 网络上,一次只允许一台设备进行通信;否则可能会发生数据冲突。 在主/从协议中,这不太重要,因为主设备通常会发起请求,然后从设备会在那时做出响应。然而,在主设备或从设备不进行传输期间,线路处于所谓的三态模式。每个收发器支持三种不同的状态:打开、关闭(传输)或禁用(三态,不传输)。一次只有一个收发器可以控制链路的开启或关闭状态。所有其他设备在不传输时必须处于三态模式。 当线路在三态模式下浮动时,线路上的噪声可能会错误地触发接收器。为了确保当所有发射器关闭时 RS-485 线路处于定义的状态,我们可以在线路上使用故障安全偏置。 偏置的目的是确保在没有设备传输时 RS-485 线路保持在已知的、非波动的状态。 偏置整个网络需要一对电阻:添加一个连接到+V信号线的+5V上拉电阻,以及连接到-V信号线的接地下拉电阻。 将偏置电阻器与终端电阻器结合使用可创建分压器。如果节点与网络断开连接或网络线路中断,内部故障安全电路会将输入保持在逻辑1。 --- ### 94. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 许多RS-485网络的信号完整性和通信问题源自终端,无论是缺少终端还是终端不当都是如此。在本期RS-485基础系列中,我将谈论何时可以不终止RS-485网络,以及如果需要终止,如何使用标准(并行)终端和交流(AC)终端网络。 正如我在该系列的上一期中所讨论的,RS-485收发器的驱动器必须能够在32个单元负载和两个120Ω的终端之间驱动1.5V。我在帖子中没有提到,但120Ω的终端电阻值源于所谓的扭曲对总线线的差分模式特性阻抗。简而言之,线规、绝缘类型和厚度以及每单位长度的扭曲次数都会导致高速数据信号“看到”的阻抗。这种阻抗以欧姆表示,扭曲对电缆通常的范围是100Ω到150Ω。RS-485标准的作者选择了120Ω作为名义特性阻抗;因此,为了匹配这个阻抗,终端电阻也有120Ω的默认值。 为什么存在终端网络 将电缆的特性阻抗与终端网络匹配,使得总线末端的接收器能看到最大的信号功率。通过不终止传输线,或者用不等于电缆阻抗的某个值终止,您将引入不匹配,从而在网络末端产生反射。反射就是信号能量的一部分实际上沿着线路返回,然后与沿总线传播的下一个比特有建设性或破坏性地干涉。一个破坏性的例子是,如果反射回来的信号与传入的信号相位不合,导致接收器看到较小的传入信号。如果不匹配足够大,反射回来的能量可能会导致后续的比特被接收器误解和错误解码。 方程1显示了反射系数要接近零,负载阻抗ZL需要与源阻抗ZS匹配。如果负载和源阻抗之间有很大的差异,几乎整个信号都可以反射。 如您所见,为了获得最佳的信号完整性,最好将交流线阻抗与等值的终端相匹配。那么,为什么所有设计师都不想这样做呢?因为增加终端网络会增加整体系统的成本,而且这些终端网络还会在驱动器上增加并行负载,从而导致更大的稳态负载电流。在降低功耗至关重要的功耗敏感应用中(例如在电池供电应用中),省电的一个选择是不终止总线。让我们讨论移除终端何时是一个可行的选项。 不需要终端的网络 当网络的双向循环时间远小于单个比特时间(tbit>10×双向环路延迟)时,您不需要终端网络。在这种情况下,每次到达网络末端时,反射都会失去能量。 从图1中可以看出,反射的幅度将在信号每次在电缆末端反射时继续衰减。图1显示了信号的三个往返行程和总共六次反射。 图1:每次反射发生时反射振幅的衰减 假设总线未终端的一端的输入阻抗为96kΩ(1/8单位负载),驱动器的源阻抗为60Ω,信号反射将按表1所列的计算衰减。 表1:示例信号衰减计算 正如表1所示,当信号反射第六次时,它已衰减到其原始幅度的4%以下。在此之后,可以肯定地说反射不再能引起信号完整性问题。由于比特的采样点通常出现在比特过程的50-75%之间,所以您需要确保这三个往返延迟在采样点之前发生。 需要终端的网络 对于比特时间与电缆环路时间并不明显长的应用,终端至关重要,以最小化反射。最基本的终端网络,称为标准终端或并行终端网络,由单个电阻器组成(图2)。 图2:标准终端网络 对于标准终端,您将与网络两端的电缆的差分模式特性阻抗相匹配的终端电阻值。这确保了在总线上双向传输的信号的正确终端。正如我之前提到的,这种终端方案的主要缺点是,每当驱动器处于活动状态时,电阻器就会对驱动器施加直流负载。 使用AC终端有助于减轻这种功耗,而不会对总线长度与比特时间的要求那么长。 图3显示了一个AC终端方案。 图3:AC终端网络 由于RS-485驱动器的电流通常从一侧流经终端网络,然后流经驱动器的另一侧,通过放置串联电容,稳态电流变为零。这种类型的终端的两个注意事项是,每个终端网络需要一个额外的元件,并且串联电阻和电容器引入了一个电阻-电容(RC)延迟。RC时间常数会减慢差分信号的上升和下降沿,并限制网络的最大数据速率。 表2总结了三种终端方案。 表2:终端技术的总结 为了获得最佳的信号完整性,最好将电缆的差分模式特性阻抗与等阻抗的终端相匹配。但如果您采取适当的步骤,也有可能成功实施AC终端或完全避免终端。 2026年实践补充:不同场景下的终端电阻选型建议 经过大量现场部署经验积累,我们对RS-485终端电阻的使用做以下补充建议: 短距离(<100米)、低波特率(<19200bps):通常可以不使用终端电阻,但建议在最后一台设备上使能内置的120Ω偏置电阻。 长距离(>500米)或高波特率(>115200bps):必须使用120Ω终端电阻,且建议在两端各加一个。如果现场有强电磁干扰(如变频器、电机附近),推荐使用AC终端(120Ω串联1nF电容)来减少DC功耗。 混合波特率场景:不建议在同一总线上使用不同波特率。如需混合通信,使用Modbus网关将总线分段。 故障排查提示:如果通信时好时坏,90%的情况与终端电阻、接地或偏置电压有关。建议优先用示波器检查A/B线差分波形质量。 --- ### 95. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 21种PLC对应Modbus地址表 1、三菱: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 2、西门子: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 3、欧姆龙: CIO0元件支持Modbus之02功能码; CIO100元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 4、松下: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; DT元件支持Modbus之03、06、16功能码。 5、台达: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 6、信捷: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 7、永宏: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 8、产电: P0元件支持Modbus之02功能码; P40元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 9、汇川: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 10、英威腾: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 11、基恩士: R0元件支持Modbus之02功能码; R500元件支持Modbus之01、05、15功能码; DM元件支持Modbus之03、06、16功能码。 12、施耐德: 更新固件后支持01、02、15功能码 I元件支持Modbus之02功能码; Q元件支持Modbus之01、15功能码; M元件支持Modbus之03、06、16功能码。 13、海为: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 14、维控: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 15、和利时: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; M元件支持Modbus之03、06、16功能码。 16、台安: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 17、罗克韦尔: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; N元件支持Modbus之03、06、16功能码。 18、合信: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 19、富士(无协议编程实现) X元件支持Modbus之02功能码; Y元件支持Modbus之01、15功能码; D元件支持Modbus之03、16功能码。 20、步科: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 20、西门子:1200 I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 --- ### 96. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在Modbus通讯系统中,我们可以将主站看作是教官,而从站则像是士兵。 设想在军事训练中,教官(主站)负责指挥训练,他会告诉士兵(从站)何时开始动作,何时停止。每个士兵都有一个唯一的名字(在Modbus系统中,这就相当于从站的ID或地址),以便教官精确地指挥他。 例如,教官可能会对某个士兵说:“小明,去完成50个俯卧撑!”或者:“小华,报告你现在的状态!”。 在Modbus系统中,主站就是通过发送请求到特定的从站(就像教官呼唤士兵的名字),来获取信息或指挥其执行特定的动作。 专业一点的解释是,Modbus通讯系统是一种主从系统。主站(也被称为控制器)发起通信,它向从站(也被称为设备或传感器)发送请求,要求其执行某些操作或返回某些信息。每个从站都有一个唯一的地址,以便主站能够准确地指向它。在一个Modbus通讯系统中,只有一个主站,但可以有多个从站。 --- ### 97. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在Modbus通讯系统中,波特率就像是士兵们跑步的速度。 想象一下,在军事训练中,教官可能会要求士兵们按照不同的速度跑步。 有时,他们需要快速跑步,有时他们可以慢慢跑。这个跑步的速度,就像是Modbus系统中的波特率。 具体来说,波特率是用来衡量信息传输速度的。在Modbus通讯中,波特率表示的是每秒钟可以发送或接收多少比特(也就是数据)。 例如,如果一个Modbus系统的波特率是9600,那就意味着这个系统每秒钟能够发送或接收9600个比特的数据。这就像士兵每分钟能跑多少米一样,波特率越高,数据传输的速度就越快。 请注意,选择波特率时需要平衡速度和可靠性。就像士兵跑得太快可能会筋疲力尽,数据传输速度过快也可能导致错误。因此,需要根据实际情况和设备说明书选择波特率。 --- ### 98. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在Modbus通讯系统中,我们可以把轮询时间和超时时间想象成教官和士兵之间的互动。 轮询时间就像教官在检查士兵的间隔。 例如,教官可能每10分钟检查一次士兵的状况,这就像主站(教官)每隔一段时间就会去“询问”(轮询)从站(士兵)的状况。 超时时间就像教官等待士兵回应的耐心时间。比如,当教官问士兵一个问题,他可能会给士兵5秒钟的时间来回答。如果在这5秒钟内,士兵没有回应,那么教官可能会认为这个士兵没有听到他的问题,于是他会再次提问。这就像主站发送了一个请求给从站,然后等待从站的回应,如果在超时时间内没有收到回应,主站就会再次发送请求。 从专业的角度来解释,轮询时间是主站发送请求给从站的频率。它决定了主站多久发送一次请求给从站。而超时时间是主站等待从站回应的最长时间,如果在这个时间内,主站没有收到从站的回应,那么主站会认为这次请求失败,然后再次发送请求。轮询时间和超时时间的设定需要根据实际系统的需求和情况来调整。 --- ### 99. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus就像是一个邮递员,帮助你的电子设备—如智能家居设备、工业控制系统等—传递信息。就像邮递员把你的信件从发件人那里送到收件人那里,Modbus也可以帮助你的设备相互通信,分享信息。 想象一下,你的家里有一些智能灯泡。每个灯泡都像是一个有名字的人,每个名字(我们称之为地址)都是唯一的。这样,当你想控制某个灯泡时,你就可以通过它的名字(地址)来找到它。在Modbus中,每个设备都有一个唯一的地址,我们通过这个地址来发送命令或者获取信息。 你的智能灯泡可以做两件事:它可以告诉你它现在的状态(比如亮度、颜色等),也可以按照你的命令改变它的状态。在Modbus中,我们把这些可以读取和写入的状态称为寄存器。你可以想象寄存器就像是一个邮箱,你可以从中取出信件(读取数据),也可以往里面放入信件(写入数据)。 在Modbus中,我们有两种基本的操作:读取和写入。如果你想知道你的灯泡现在是什么状态,你可以向它发送一个读取命令,像是写了一张便签:“灯泡1,请告诉我你现在是什么颜色。” 灯泡收到这个命令后,会回复你它现在的颜色。类似的,如果你想把灯泡的颜色改变为红色,你可以发送一个写入命令:“灯泡1,请把你的颜色改为红色。” 灯泡收到这个命令后,会改变它的颜色,并回复你它已经完成了这个操作。 想要和你的设备进行Modbus通信,你需要有一个连接设备的“线”(例如,数据线或者网络线)和一个可以发送和接收Modbus命令的工具(比如,Modbus软件)。就像你需要一个手机和电话号码才能给别人打电话一样。在设置好这些工具后,你就可以开始和你的设备进行通信了。 为了确保通信的正确性,Modbus使用了一种叫做CRC的技术来检查命令的完整性。你可以把它想象成是邮递员检查信件是否被损坏或者遗漏了一部分的方式。每一次信息发送出去,都会附带一个校验码,这个校验码就像是信件的邮戳,用来确认信件是否完整无损。 Modbus协议有两种常见的形式 Modbus协议有两种常见的形式:Modbus RTU和Modbus TCP。Modbus RTU常用于串行通信(就像是通过电话线进行通信),而Modbus TCP则常用于网络通信(就像是通过互联网发送电子邮件)。选择哪一种形式主要取决于你的设备支持哪一种通信方式。 我们可以用一些Modbus软件来进行测试和通信。比如Modbus Poll和ModScan,它们都像是一个电话,可以帮助你和你的设备进行对话。在这个软件中,你只需要输入设备的地址、你想要执行的操作(读或写)、以及你想要操作的寄存器地址,然后点击“发送”按钮,就像是拨打电话一样。 例如,如果你想要读取灯泡1的颜色,你可以在软件中输入灯泡的地址(1),选择“读取”操作,输入颜色寄存器的地址,然后点击“发送”。软件会自动帮你生成对应的Modbus命令,并发送给灯泡。灯泡收到命令后,会回复它现在的颜色。如果你看到了灯泡回复的颜色信息,那么恭喜你,你已经成功地和你的灯泡进行了一次对话。 类似的,如果你想要把灯泡1的颜色改为红色,你可以在软件中输入灯泡的地址(1),选择“写入”操作,输入颜色寄存器的地址,输入你想要设置的颜色(红色),然后点击“发送”。软件会自动帮你生成对应的Modbus命令,并发送给灯泡。灯泡收到命令后,会改变它的颜色,并回复你它已经完成了这个操作。如果你看到了灯泡的回复,并且灯泡的颜色已经改变为红色,那么你已经成功地改变了灯泡的颜色。 总的来说,Modbus就像是一个邮递员,帮助你和你的设备进行通信。虽然初次接触可能会有些复杂,但只要你熟悉基本概念和操作,你就可以开始和你的设备进行对话,让它们按照你的想法工作。就像你可以通过手机和你的朋友进行通信一样,Modbus可以帮助你和你的设备进行通信,使你的生活和工作更加便利。 让我们回到智能灯泡的例子,假设我们有一个灯泡设备,我们想要检查它的亮度并改变它的颜色。在Modbus中,我们会用到两种功能码:03(读保持寄存器)和06(写单个寄存器)。 1. **使用功能码03读保持寄存器** 首先,我们想要读取灯泡的亮度。在我们的设备中,亮度信息存储在地址30001的保持寄存器中。我们会在Modbus软件中输入以下信息: 设备地址:1(假设我们的灯泡的地址是1)功能码:03(代表读取保持寄存器)寄存器地址:30001然后,我们点击“发送”按钮,软件会自动生成对应的Modbus命令并发送给设备。这个过程就像是写了一张便签:“灯泡1,请告诉我你现在的亮度。” 灯泡收到这个命令后,会回复它现在的亮度。 2. **使用功能码06写单个寄存器** 现在,我们想要把灯泡的颜色改为红色。在我们的设备中,颜色信息可以通过写入地址40001的保持寄存器来改变。我们会在Modbus软件中输入以下信息: 设备地址:1(我们的灯泡的地址)功能码:06(代表写单个寄存器)寄存器地址:40001数据:红色(假设红色对应的代码是2)然后,我们点击“发送”按钮,软件会自动生成对应的Modbus命令并发送给设备。这个过程就像是写了一张便签:“灯泡1,请把你的颜色改为红色。” 灯泡收到这个命令后,会改变它的颜色,并回复你它已经完成了这个操作。 通过使用这些功能码,我们可以读取和改变设备的状态,就像是与设备进行对话一样。在实际操作中,你可能需要查阅你的设备的用户手册,来了解设备的地址以及各种状态信息对应的寄存器地址。在了解了这些信息后,你就可以开始和你的设备进行通信,让它们按照你的想法进行工作。 写多个寄存器 **使用功能码16控制空调** 假设你有一个智能空调,你希望同时调整它的开关机状态、工作模式、风量大小等参数。在这个情况下,我们可以使用Modbus的功能码16(写多个寄存器)。 设备地址:1(假设空调的地址是1)功能码:16(代表写多个寄存器)寄存器地址:40001,40002,40003(假设40001是控制开关机,40002是调整工作模式,40003是调整风量大小的寄存器地址)数据:1,2,3(假设1代表开机,2代表制冷模式,3代表风量最大) 这就像是你写了一封信给空调:“亲爱的空调,请开机,调整为制冷模式,并将风量调至最大。” 然后通过邮递员(也就是Modbus)将这封信送到空调那里。 然后,我们点击“发送”按钮,Modbus软件会自动生成对应的Modbus命令并发送给空调。空调收到命令后,会同时调整其开关机状态、工作模式和风量,并回复你它已经完成了这个操作。 通过使用功能码16,我们可以同时调整空调的多个参数,避免了一次只能调整一个参数的麻烦。。 读多个寄存器 **使用功能码03读取空调的多个状态信息** 现在,假设我们想要一次性读取空调的开关机状态、工作模式、风量大小等信息。在这个情况下,我们可以使用Modbus的功能码03(读保持寄存器)。 设备地址:1(假设空调的地址是1)功能码:03(代表读取保持寄存器)起始寄存器地址:30001(假设30001是记录开关机状态的寄存器地址)读取寄存器数量:3(我们想要读取的信息包括开关机状态、工作模式、风量大小,它们分别存储在30001、30002、30003这三个寄存器中) 这就像是你给空调发了一条信息:“亲爱的空调,请告诉我你现在的开关机状态、工作模式和风量大小。”然后通过邮递员(也就是Modbus)将这条信息送到空调那里。 然后,我们点击“发送”按钮,Modbus软件会自动生成对应的Modbus命令并发送给空调。空调收到命令后,会告诉你它现在的开关机状态、工作模式和风量大小。 通过使用功能码03,我们可以一次性读取空调的多个状态信息,避免了一次只能读取一个状态信息的麻烦。在实际操作中,你需要查阅你的空调的用户手册,了解空调的地址以及开关机状态、工作模式、风量大小等信息对应的寄存器地址。在了解了这些信息后,你就可以开始通过Modbus与你的空调进行交流,了解它的工作状态。 --- ### 100. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在进行Modbus协议开发时,需要注意以下几点: 理解Modbus协议:确保充分了解Modbus协议的基本概念、功能码、寄存器类型、错误码等。 选择合适的通信方式:根据项目需求和设备选择合适的通信方式,如Modbus RTU(串行通信)或Modbus TCP(以太网通信)。 设备地址:为每个从设备分配唯一的设备地址,避免地址冲突。 超时和重试机制:为通信过程设置合适的超时和重试次数,确保在通信故障时能够及时识别并采取措施。 数据解析和验证:正确解析和验证接收到的数据包,包括数据长度、功能码、设备地址、CRC校验等。 异常处理:妥善处理设备返回的异常响应和通信错误,提高系统的稳定性。 数据类型转换:正确处理数据类型的转换,例如16位寄存器值到浮点数。 定时和同步:如果需要在多个设备间实现数据同步,可以考虑使用定时器或同步机制。 通信测试和调试:充分测试和调试通信功能,确保与设备之间的通信稳定可靠。 文档和注释:编写清晰的文档和注释,方便其他开发人员理解和维护代码。 遵循以上注意事项,可以有效地避免常见的开发问题,提高Modbus协议开发的质量和效率。 --- ### 101. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在Modbus通信环境中,设备冲突可能会导致通信故障、数据错误或系统性能下降。为了解决这些问题,需要从不同的方面进行排查和调整。下面列举了一些详细的建议和解决设备冲突的方法,帮助您优化和稳定Modbus通信网络: 检查和调整从设备地址:首先,您需要确保每个从设备在Modbus网络中都有一个唯一的地址。为了避免地址冲突,您可以使用专门的Modbus工具来扫描网络中的设备地址并重新分配重复的地址。 校验通信参数:为了确保通信的可靠性和准确性,所有设备之间的通信参数(如波特率、数据位、停止位和奇偶校验)必须一致。请通过设备文档或相关工具检查各设备的通信参数并做相应调整。 调整轮询速率和延迟:主设备轮询从设备的速率过快可能会导致从设备响应超时或者冲突。可以尝试减慢轮询速率或在主设备发送请求之间添加适当的延迟。这将为从设备提供足够的时间处理请求和返回响应,减少冲突的风险。 使用正确的通信线缆和终端电阻:使用合适的线缆类型和质量、以及正确的终端电阻至关重要。这将有助于降低信号干扰、提高信号质量及抗干扰能力。请务必根据设备制造商的建议选择适当规格的线缆和终端电阻。 限制主设备数量和合理规划网络拓扑:Modbus网络中,多个主设备可能会导致请求和响应的混乱及冲突。如果可能,请尽量减少主设备的数量并采用合理的网络拓扑。此外,您可以考虑使用具备数据网关功能的Modbus设备,将主设备连接到不同的从设备子网以降低冲突风险。 网络诊断和监控:定期对Modbus网络进行检查和维护,以便发现并解决潜在问题。使用诊断工具可以帮助您监控总线状态、检测错误帧、统计设备通信错误等,并帮助您找到可能的设备冲突。 在复杂网络中使用重复器/隔离器:在大型或高干扰环境中,使用重复器或隔离器可以增强信号质量并隔离部分可能引发冲突的信号。这种方法有助于提高整体网络的稳定性和可靠性。 通过以上方法,您可以排查和解决Modbus设备冲突问题。需要注意的是,优化和维护Modbus通信环境是一个持续的过程,需要您不断进行监控、诊断和调整,以确保通信网络的可靠性和高效性。 --- ### 102. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 从机设备越多,轮询时间越长的原因主要是因为:在 Modbus 协议中,主机通过轮询的方式与从机进行通信。每个从机在网络中都有一个唯一的设备地址。主机通过从机地址与特定从机进行读写操作。 当从机数量增加时,主机需要与更多的从机进行通信。在一个完整的轮询周期内,主机需要发送更多的请求并等待从机响应。随着从机数量的增加,以下因素可能导致整个轮询过程变慢: 更多请求:主机需要发送更多的请求以便与所有从机进行通信。这将导致整体轮询时间增加。 等待时间:在发送请求和接收从机响应之间,主机需要等待。这个等待时间是由于物理硬件、通信延迟等原因造成的。从机数量增加意味着更多的等待时间。 通信拥塞:当大量从机连接到同一个Modbus网络时,可能导致通信拥塞。这将增加主从通信的延迟,从而使整个轮询过程变慢。 要减少轮询时间,请考虑以下优化方案: 调整轮询间隔:根据数据实时性和从机设备类型的需求,合理调整轮询周期。 提高通信速率:通过提高 Modbus 通信速率,可以加快数据传输速度,从而缩短轮询时间。 接口分组:根据应用场景将从机分类,对同一类别的从机进行分组轮询。这样可以提高轮询效率并使网络负担更可控。 从机设备与轮询周期的比值没有固定的标准,因为这取决于许多因素,如实际应用场景、设备类型、网络速度、数据实时性要求等。重要的是在实际项目中找到一个平衡点,确保既满足数据实时性需求,又不会过度拥挤网络或过度加载主机(或从机)。 例如: 假设您有10个从机设备,需要每个设备每秒钟更新一次数据。您可以将轮询间隔设为100毫秒,确保1秒内完成所有设备的轮询。这将为每个从机分配相同的时间窗口,在这个例子中是 (1秒 ÷ 10从机 = 100毫秒)。 但是,这些数值仅作为示例,实际项目中的合适比值取决于实际情况。在实际应用中,您需要根据通信速率、设备响应时间、应用场景等因素动态调整轮询周期以满足性能要求。在项目调试阶段,可以通过实验和观察来确定最佳轮询设置。 --- ### 103. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是一种通信协议,但需要注意其传输限制。 首先,Modbus协议使用不同的物理层(如RS-232、RS-485),每个物理层都有不同的传输速率和距离限制。因此,在使用Modbus协议时,必须考虑物理层的特性,以确保消息正确传输。 其次,Modbus协议对数据大小也有限制。Modbus RTU协议支持每个数据包最多256字节的数据传输,而Modbus TCP协议支持每个数据包最多65,535字节的数据传输。如果需要传输更大的数据,可以将其分成多个消息帧传输。 此外,由于Modbus协议是基于主从结构的,因此每个从设备的地址也需要注意限制。在Modbus RTU协议中,每个从设备的地址必须是1到247之间的整数,而在Modbus TCP协议中,每个从设备使用IP地址和端口号来标识。 最后,需要注意的是Modbus协议的安全性限制。Modbus协议不提供任何安全保护机制,因此需要使用其他安全措施来保护通信过程中的数据安全性。 --- ### 104. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MODBUS和PROFIBUS是两种不同的工业通信协议。下面是它们的一些主要区别: 发展历史:MODBUS比PROFIBUS更早。MODBUS最早由Modicon在1979年开发,而PROFIBUS则是在1987年由Siemens和其他公司共同开发。 通信方式:MODBUS是一种简单的串行通信协议,常用于连接远程设备。PROFIBUS是一种高级工业网络,支持广域网和局域网通信,可以实现实时控制和监测。 数据传输速率:MODBUS的数据传输速率通常较低,最高可达115.2 kbit/s。PROFIBUS支持更高的数据传输速率,最高可达12 Mbit/s。 总线拓扑:MODBUS通常采用主-从结构,支持1对多的通信。PROFIBUS可以采用主-从或对等结构,并支持星型、总线型和环型拓扑结构。 应用范围:MODBUS通常用于小型控制系统,如楼宇自动化、环境监测、家庭自动化等。PROFIBUS则广泛应用于大型自动化控制系统,如制造业、能源、水处理等。 总之,MODBUS是一种简单、经济的通信协议,适用于小型控制系统。而PROFIBUS则是一种复杂、高级的工业通信协议,适用于大型自动化控制系统。 --- ### 105. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 要使用 Modbus 实现 PLC 与 HMI/SCADA 之间的通信,通常有以下几个步骤: 在 PLC 中实现 Modbus 通信协议:PLC 通常都有 Modbus 通信模块,可以通过模块的设置,将 PLC 中的数据打包成 Modbus 的数据帧,并响应 HMI/SCADA 的读写请求。 在 HMI/SCADA 中实现 Modbus 通信协议:HMI/SCADA 通常也有 Modbus 通信模块,可以通过模块的设置,发送 Modbus 数据帧给 PLC,并接收 PLC 的响应数据。 配置 HMI/SCADA 的通信协议参数:HMI/SCADA 需要设置与 PLC 通信所需的参数,如 PLC 的 IP 地址、端口号,通信方式(如 TCP 或 RTU)等,以便建立正确的通信连接。 配置 HMI/SCADA 的数据采集和展示界面:HMI/SCADA 通过 Modbus 通信获取 PLC 中的数据,可以通过界面的方式将数据展示出来,如数据表格、曲线图、仪表盘等。 配置 HMI/SCADA 的数据写入和控制界面:HMI/SCADA 可以通过 Modbus 通信向 PLC 中写入数据,从而控制 PLC 的行为,例如启动或停止某个设备,修改某个参数等。需要根据具体的 PLC 控制要求,设计相应的控制界面,并进行相应的逻辑编程。 总的来说,要使用 Modbus 实现 PLC 与 HMI/SCADA 之间的通信,需要熟悉 Modbus 通信协议的规范和通信流程,以及 PLC 和 HMI/SCADA 的具体操作界面和功能。在进行通信前,需要进行参数配置和测试,确保通信连接正常,并在应用中进行相应的错误处理和容错设计,以提高通信的安全性和可靠性。 --- ### 106. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 要使用 Modbus 实现远程数据采集和控制,可以按照以下步骤进行: 确定通信协议:选择使用 Modbus TCP 或 Modbus RTU 通信协议,根据需要确定使用的通信协议版本和通信参数,例如波特率、数据位、校验位、停止位等。 确定数据类型和寄存器地址:根据需要采集和控制的数据类型,选择使用 Coils、Discrete Inputs、Input Registers 或 Holding Registers,然后确定每个数据寄存器的地址。 配置 Modbus 主站:将 Modbus 主站连接到远程设备,配置主站的通信协议和通信参数,根据需要配置读取和写入的数据类型和寄存器地址。 配置远程设备:配置远程设备的 Modbus 通信协议和通信参数,根据需要配置读取和写入的数据类型和寄存器地址。 读取和写入数据:通过主站向远程设备发送读取和写入数据的命令,获取需要采集的数据或控制设备的状态,根据需要进行数据处理或控制操作。 监测通信状态:监测 Modbus 主站和远程设备之间的通信状态,及时发现并处理通信故障或错误。 需要注意的是,在实际应用中,要根据具体的数据采集和控制需求,选择合适的 Modbus 设备和通信方式,进行适当的数据处理和控制操作,以实现远程数据采集和控制。同时,要保证 Modbus 主站和远程设备之间的通信安全和稳定,防止数据泄露或通信故障等问题。 --- ### 107. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 通信故障可能有多种原因,包括硬件故障、网络故障、配置错误、通信协议不兼容等。以下是一些诊断和解决 Modbus 通信故障的方法: 检查硬件连接:检查 Modbus 设备之间的物理连接是否正常,包括电缆、插头、连接器等,确保信号能够正常传输。 检查网络设置:检查 Modbus 设备之间的网络设置是否正确,包括IP地址、掩子网码、网关等,确保设备在同一 检查设备配置:检查 Modbus 设备的配置是否正确,包括波特率、数据位、校验位、停止位等,确保设备使用相同的通信参数。 使用 Modbus 诊断工具:使用 Modbus 诊断工具可以帮助检查 Modbus 设备之间的通信是否正常,包括检查通信延迟、通信错误、数据丢失等。 检查通信协议版本:检查通信协议的版本是否兼容,确保设备使用相同版本的 Modbus 通信协议。 分步排查问题:逐一排除各种可能的问题,例如先检查硬件连接是否正常,再检查网络设置是否正确,最后检查设备配置是否正确,以此逐步缩小问题范围,最终找到问题所在。 在解决 Modbus 通信故障时,需要有一定的技术知识和经验,如果遇到无法解决的问题,可以寻求专业技术支持。 --- ### 108. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在 Modbus 协议中,常用的数据类型包括以下几种: 位数据(Coils):Coils 数据类型表示单个开关量的状态,可以表示开/关、真/假等状态,只能读取和写入单个位,使用功能码 01H 或 05H 可以对 Coils 进行读写操作。 离散量输入(Discrete Inputs):D iscrete Inputs 数据类型表示输入的状态,只能读取,不能写入,使用功能码 02H 可以对 Discrete Inputs 进行读操作。 16 位无符号整数(Input Registers):Input Registers 数据类型表示无符号的 16 位整数,只能读取,不能写入,使用功能码 04H 可以对 Input Registers 进行读操作。 16 位有符号整数(Holding Registers):Holding Registers 数据类型表示有符号的 16 位整数,可以读取和写入,使用功能码 03H 或 06H 可以对 Holding Registers 进行读写操作。 这些数据类型的区别在于它们的功能和操作类型不同,线圈和 Discrete Inputs 只能读取,Input Registers 和 Holding Registers 可以读写,而且 Input Registers 和 Holding Registers 还区分有符号和无符号两种类型。在实际应用中,根据不同的应用场景和需要采集的数据类型,选择合适的数据类型进行通信和操作。 --- ### 109. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 协议中的 CRC 校验是一种用于验证 Modbus 数据报文完整性的校验方式,可以有效防止数据传输中的误码和数据篡改。Modbus 协议中使用的 CRC 校验采用了多项式除法的方式,具体计算方法如下: 首先将 Modbus 数据报文中的所有字节按照顺序组成一个字节数组。 然后将该字节数组的所有字节依次带入 CRC 计算函数中,计算出 CRC 校验值。 最后将计算出的 CRC 校验值附加到 Modbus 数据报文的末尾,用于验证数据的完整性。 计算 CRC 校验值的具体步骤如下: 将一个16位寄存器的初值设为0xFFFF。 对字节数组中的每一个字节进行以下操作: 将该字节的值与0xFF做异或运算。 将上述结果与16位寄存器的低8位进行异或运算,得到一个新的16位寄存器的值。 对新的16位寄存器的值进行8次循环,每次循环: 如果寄存器的最高位为1,就将寄存器左移一位,并与0xA001做异或运算; 如果寄存器的最高位为0,就将寄存器左移一位。 最终得到的16位寄存器的值就是 CRC 校验值。 需要注意的是,计算 CRC 校验值时,字节的顺序需要按照 Modbus 协议规定的顺序,一般来说是从低位到高位依次排列。此外,CRC 校验值的附加方式也需要按照 Modbus 协议规定的格式进行。 下载整理一些CRC在线效验的网址: http://www.ip33.com/crc.html https://www.23bei.com/tool/232.html --- ### 110. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 协议广泛应用于工业自动化、建筑自动化、环境监测、能源管理等领域,以下是一些常见的应用场景: 工业自动化:Modbus 是一种常用的通信协议,可以实现工厂中各种设备的数据采集、控制和监测,如传感器、PLC、变频器、电机驱动器、控制器等设备。 建筑自动化:Modbus 可以用于建筑自动化系统中的数据采集和控制,如空调系统、照明系统、电梯控制等,通过 Modbus 协议可以实现这些设备之间的通信和控制。 环境监测:Modbus 协议可以用于环境监测系统中的各种传感器和数据采集设备,如温度、湿度、气体浓度等传感器。 能源管理:Modbus 可以用于能源管理系统中的各种电力设备的监测和控制,如电表、电流表、电压表等,通过 Modbus 协议可以实现这些设备之间的通信和控制。 物流管理:Modbus 可以用于物流管理系统中的各种设备的数据采集和控制,如温度传感器、湿度传感器、气压传感器等,可以用于监测货物的运输状态。 总之,Modbus 协议可以应用于许多领域的数据采集、控制和监测,是一种常用的通信协议。 --- ### 111. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 当我们谈论自动化设备(如PLC、温度控制器等)与计算机之间的通信协议时,ModBus是一个被广泛应用的通信协议。ModBus支持多种通信方式,包括ModBus RTU、ModBus ASCII和ModBus TCP。每种通信方式有其独特的特点和应用场景。 ModBus RTU采用二进制数据传输,是ModBus协议最常见的实现方式。它使用串行通信,并支持RS232和RS485两种接口。在RTU模式下,每个字节可以传输两位十六进制字符。ModBus RTU具有较高的传输效率和稳定性,但不太易读。它的消息帧格式由多个部分组成,比如地址码、功能码、数据等。 其消息帧格式由以下部分组成: ModBus ASCII采用ASCII码传输文本信息。相对于ModBus RTU而言,它的传输效率较低,但具有更好的可读性。ModBus ASCII也使用串行通信,并支持RS232和RS485两种接口,适用于短距离通信。在ASCII模式下,每个8位的字节拆分为两个ASCII字符进行发送,消息帧以英文冒号“:”开始,以回车和换行符号(CRLF)结束。 ModBus TCP是ModBus协议的一种扩展,它使用TCP/IP协议进行通信,可以在局域网(LAN)和广域网(WAN)之间传输数据。ModBus TCP支持多种网络设备,包括计算机、服务器、交换机、路由器等。它适用于远程监控和控制,常用于工业网络和物联网应用。该协议的物理层、数据链路层、网络层、传输层都是基于TCP协议,它只是在应用层将ModBus协议封装进去。 在ModBus RTU和ModBus ASCII中,通信是通过串行接口进行的,这意味着它们只能在较短的距离内进行通信。因此,如果需要在较远的距离内进行通信,则需要使用ModBus TCP。另一方面,ModBus RTU和ModBus ASCII使用二进制和ASCII码分别进行数据传输,因此它们的传输效率和可读性存在差异。在选择ModBus通信方式时,需要考虑多种因素,包括通信距离、传输效率和可读性。 总之,对于短距离通信,ModBus RTU和ModBus ASCII均可作为选择。如果需要更高的传输效率,则可以选择ModBus RTU;如果需要更好的可读性,则可以选择ModBus ASCII。对于远距离通信,则只能使用ModBus TCP。 --- ### 112. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 通过串口服务器连接Modbus设备的步骤如下: 1.选择适合的串口服务器:根据实际需求选择一款适合的串口服务器设备。通常需要考虑的因素包括串口数量、通信速率、支持的协议类型、网络连接方式等。 2.设置串口服务器:根据Modbus设备的串口通信参数(如波特率、数据位、停止位、校验位等)对串口服务器进行相应的设置。需要确保串口服务器的设置与Modbus设备的通信参数一致。 3.连接Modbus设备:将Modbus设备的串口连接到串口服务器上,根据设备的地址进行配置。通常需要设置设备的通信协议、地址、寄存器类型等。 4.测试连接:使用Modbus测试工具进行连接测试,检查通信是否正常。如果测试不正常,可以通过检查设备地址、协议类型、通信参数等来排除问题。 5.使用Modbus客户端软件:在PC端使用Modbus客户端软件进行连接和通信。通过客户端软件可以进行读取和写入寄存器数据等操作,实现与Modbus设备的通信。 需要注意的是,在连接Modbus设备之前,需要了解设备的通信协议类型、通信参数、地址范围等信息,确保串口服务器的设置与Modbus设备的通信参数一致。同时,也需要保证串口服务器与PC端的网络连接正常,确保数据传输的稳定性和可靠性。 --- ### 113. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus网关是一种通信设备,用于在不同的通信协议之间进行数据转换和传输。它可以将Modbus通信转换为其他通信协议,或者将其他通信协议转换为Modbus通信,从而实现不同设备之间的数据交换。 Modbus网关的主要功能包括: 数据协议转换:将Modbus协议转换为其他协议,或将其他协议转换为Modbus协议,实现不同设备之间的数据交换。 设备连接管理:管理不同设备的连接和通信,包括设备的地址、协议类型、通信参数等。 数据过滤和转发:根据配置的规则,过滤和转发指定的数据,实现对数据流的控制和管理。 数据处理和加工:对传输的数据进行处理和加工,包括数据格式转换、数据计算和数据存储等。 网络管理和安全控制:管理和控制网络通信,包括安全认证、数据加密和数据压缩等。 通过Modbus网关,不同协议的设备可以进行数据交换和互通,实现设备间的信息共享和联动控制。同时,Modbus网关还可以提供多种接口和协议支持,方便设备的集成和配置,减少设备间的兼容性问题。因此,Modbus网关在工业自动化领域中得到了广泛的应用。 --- ### 114. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在Modbus通讯过程中,可能会遇到以下一些常见的问题: 通讯失败:无法连接到设备或无法读写数据。 数据错误:读写的数据与实际不符。 数据丢失:部分数据无法读取或写入。 以下是一些常见的排查思路,可以帮助解决这些问题: 确认通讯参数是否正确:包括从站地址、通讯协议、数据类型、寄存器地址等。 检查物理连接是否正常:包括电缆、网线、串口等连接是否良好。 检查通讯设备是否正常:包括设备的状态、配置参数、供电等是否正常。 检查程序是否正确:包括程序的指令、函数块、参数等是否正确。 检查数据格式是否正确:包括读写数据的字节顺序、数据类型、数据长度等是否与设备一致。 检查异常处理是否完备:包括数据校验、超时处理、重试机制等是否完善。 在排查问题时,可以使用一些工具和方法,如Modbus调试工具、网络分析工具、日志记录和调试模式等,以辅助排查问题。同时,也需要考虑设备的兼容性和稳定性,选择合适的通讯方式和设备,避免不必要的通讯问题。 --- ### 115. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 2023020415013791 2023020415021968 2023020415031573 --- ### 116. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 2023012604083247下载 --- ### 117. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是一种开放协议,这意味着制造商无需支付版税就可以免费使用它。它已成为工业中的标准通信协议,并且现在是连接工业电子设备的最常用方法。它被许多行业的许多制造商广泛使用.Modbus通常用于将来自仪表和控制设备的信号传输回主控制器或数据采集系统,例如测量温度和湿度并将结果传送到计算机的系统。Modbus通常用于将监控计算机与远程终端单元(RTU)连接在监控和数据采集(SCADA)系统中。   Modbus通过设备之间的串行线路传输。最简单的设置是连接两个设备(主设备和从设备)上的串行端口的单根串行电缆。   数据以一系列1和0的形式发送,称为位。每个位都作为电压发送。零作为正电压发送,而一个作为负电压发送。这些位很快发送。典型的传输速度为9600波特(每秒位数)。   什么是十六进制?   在解决问题时,查看传输的实际原始数据会很有帮助。长串的1和0很难读取,因此这些位组合在一起并以十六进制显示。每个4比特的块由从0 到F 的16个字符之一表示。   每个8位块(称为字节)由00 到FF 的256个字符对中的一个表示。   数据如何存储在标准Modbus中?   信息存储在四个不同的表中的从设备中。两个表存储/关闭离散值(线圈)和两个存储数值(寄存器)。每个线圈和寄存器都有一个只读表和读写表。每个表有9999个值。每个线圈或触点为1位,并分配一个介于0000 和270E 之间的数据地址。每个寄存器为1字= 16位= 2字节,并且数据地址在0000 和270E 之间。   线圈/寄存器编号可以被认为是位置名称,因为它们不会出现在实际消息中。数据地址用于消息中。例如,第一个保持寄存器,编号40001,具有数据地址0000 。这两个值之间的差异是偏移量。每个表都有不同的偏移量。1,10001,30001和40001。   什么是奴隶身份证?   网络中的每个从站都分配有1到247的唯一单元地址。当主站请求数据时,它发送的第一个字节是从站地址。这样,每个从设备在第一个字节之后知道是否忽略该消息。   什么是功能代码?   主机发送的第二个字节是功能代码。此数字告诉从站要访问哪个表以及是从表中读取还是写入表。   什么是CRC?   CRC代表循环冗余校验。它是在每个modbus消息的末尾添加两个字节以进行错误检测。消息中的每个字节用于计算CRC。接收设备还计算CRC并将其与来自发送设备的CRC进行比较。如果错误地接收到消息中的一位,则CRC将不同并且将导致错误。。   什么是数据类型?   对于示例FC03 表明,寄存器40108包含AE41 ,其转换为16位1010 1110 0100 0001 大!但是这是什么意思?嗯,这可能意味着一些事情。寄存器40108可以定义为这些16位数据类型中的任何一种:   甲16位无符号整数(0到65535之间的整数)寄存器40108包含AE41 = 44609(十六进制到十进制的转换)   甲16位带符号整数(-32768到32767之间的整数)AE41 = -20,927 (十六进制到一个包装,如果其超过32767然后减去65536十进制的转换)   甲两种字符的ASCII字符串(2键入的字母)AE41 =®甲   甲开/关值的离散(在此工作方式相同的16位整数0或1的值的十六进制数据将是0000 或0001 )注册40108也可与结合   40109形成任何这些32位数据的类型:   甲32位无符号整数(0和4294967295之间的数字)40108,40109 = AE41 5652 = 2923517522   一个32位有符号整数(-2,147,483,648和2,147,483,647之间的数字)AE41 5652 = -1,371,449,774   甲32位双精度IEEE浮点数。这是一个数学公式,允许任何实数(带小数点的数字)用32位表示,精度约为7位数。AE41 5652 = -4.395978 E-11 这是一个电子表格IEEE浮点计算器,用于输入4个字节或2个字。要下载副本,请右键单击并选择目标另存为...   甲四个字符的ASCII字符串(4键入的字母)AE41 5652 =®AVR 更多寄存器可以被组合以形成更长的ASCII字符串。每个寄存器用于存储两个ASCII字符(两个字节)。   什么是字节和字排序?   Modbus规范没有准确定义数据如何存储在寄存器中。因此,一些制造商在他们的设备中实现了modbus,首先存储和传输高字节,然后是低字节。(41 之前的AE )。或者,其他人首先存储和发送低位字节(AE 之前的41 )。类似地,当寄存器组合起来表示32位数据类型时,某些器件将高16位(高字)存储在第一个寄存器中,剩余的低字存储在第二个寄存器中(AE41 在5652 之前),而其他器件则相反(5652 之前)AE41 )只要接收设备知道期望它的方式,发送字节或字的顺序无关紧要。例如,如果要将数字29,235,175,522作为32位无符号整数发送,则可以按这四种方式中的任何一种进行排列。   AE41 5652 高字节第一高字首先   5652 AE41 高字节第一低字首先   首先是41AE 5256 低字节第一个高字   5256 41AE 低字节第一个低字首先   什么是Modbus地图?   modbus映射只是一个单独的从设备列表,它定义了- 数据是什么(例如压力或温度读数) 存储数据的位置(哪些表和数据地址) 数据的存储方式(数据类型,字节和字排序)   某些设备使用由制造商定义的固定映射构建。而其他设备允许操作员配置或编程自定义地图以满足他们的需要。   Modbus ASCII和Modbus RTU有什么区别?   Modbus RTU和Modbus ASCII使用相同的协议。唯一的区别是通过线路传输的字节用RTU表示为二进制,用Modbus RTU表示为可读ASCII。关于RTU的重要注意事项是RTU消息没有Start_of_text指示。通信中的接收方 使用“静默”时间以确定新消息的开始。ASCII确实有一个文本开头标记。二进制消息比ASCII短,因此理论上传输/接收速度更快。您可能很高兴在HMI / SCADA中看到大约100 ms的更新速率,并且可以选择任一通信。   总结: 使用RTU是可能的 如果RTU在WinNT上出现超时问题或者使用300 bps或拨号调制解调器等慢速通信媒体时使用ASCII,大多数用于Modbus的OPC服务器都支持ASCII和RTU通信。   什么是扩展寄存器地址?   由于模拟输出保持寄存器的范围是40001到49999,因此意味着寄存器不能超过9999个。虽然这对于大多数应用程序来说通常已经足够了,但有些情况下会有更多的寄存器。寄存器40001至49999对应于数据地址0000 至270E 。如果我们利用剩余的数据地址270F 到FFFF ,可以使用超过六倍的寄存器,总共65536个。这对应于40001到105536的寄存器编号。许多modbus软件驱动程序(用于主PC)都是用40001到49999编写的限制,不能访问从设备中的扩展寄存器。许多从设备不支持使用扩展寄存器的映射。但另一方面,一些从设备确实支持这些寄存器,一些Master软件可以访问它,特别是在编写自定义软件时。   字节从站寻址如何工作?   由于单个字节通常用于定义从站地址,并且网络上的每个从站都需要唯一的地址,因此网络上的从站数量限制为256. modbus规范中定义的限制甚至更低,为247 。超出此限制,可以对协议进行修改以使用两个字节作为地址。主人和奴隶都需要支持这种修改。双字节寻址将网络中从站数量的限制扩展到65535. 默认情况下,Simply Modbus软件使用1字节寻址。输入大于255 的地址时,软件会自动切换到2字节寻址并保持不变所有地址的此模式,直到手动关闭2字节寻址。 --- ### 118. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算   Modbus 协议有两种安装方式:   ● 串行网络 - RS485   ● TCP/IP 网络   最终结果是相同的,而且 Modbus 点寄存器通常是相同的,但两种安装之间存在差异,如果不仅仅是物理安装的话。   串行 RS485 Modbus   要建立 RS485 Modbus 网络,需要将双绞线电缆从网络主设备安装到从设备。   通常,带有屏幕的单双绞线电缆就可以完成这项工作,但如今越来越多的制造商推荐使用双绞线电缆。   推荐两对电缆线的原因是使一对可用于发送/接收线,而另一对可用作屏蔽线或排扰线。这样就可以覆盖所有的基地。   通过 RS485 网络连接 Modbus 设备时,它们应以菊花链形式连接在一起,不支持任何其他布线拓扑。      串行网络布线   整个网络中的连接应该保持不变:正对正,负对负。这些有时可能被标记为 A 和 B。如果这些被交叉,这可能会导致整个网络瘫痪并在主控制器内产生通信警报。   还值得一提的是,屏蔽电缆在整个网络中应保持完好无损,并且仅在控制器端接地。   TCP/IP 网络连接   根据 cat5/6 的限制,每个网段的最大长度为 100m,Wi-Fi 可能会根据安装的类型和质量达到更长的距离。   当通过其他网络进行通信时,需要在防火墙上打开一个通信端口,默认端口是:502,但如果需要,可以更改此端口。   在配置 TCP / IP Modbus 网络时,每个设备都需要使用网络上可用的唯一 IP 地址进行编程。   RS485 与 TCP / IP Modbus   典型的寄存器表   上表是一个有用的参考点,因为制造商的文献通常不会说明该点是什么类型的寄存器。根据您使用的系统,您可能无法在您包含的模拟可写对象上搜索输入寄存器;这是因为输入寄存器是只读的。   线圈点 00001 – 09999   将线圈点视为可写的数字点,例如数字输出。   读取线圈点时,您将看到真或假反馈值。它可以是两种状态之一,仅此而已。这同样适用于当你写到这一点时,你可以把它设为真或假。线圈点通常是设备内用于触发某些功能的数字点。   ● Modbus 功能代码 1 = 读取线圈   ● Modbus 功能代码 5 = 写入单个线圈   ● Modbus 功能代码 15 = 写入多个线圈   连接 Modbus 串行设备时,每个网络限制为 32 个;由于主设备占用了网络上的地址,因此上述示例将分类为 4。如有必要,可以通过在网络上使用中继器和助推器来解决此限制。   不论增强器和中继器,串行网络的最大长度不能超过1200m。   在某些情况下,可能需要在通信对上安装终端电阻。通常,一个 120 欧姆的电阻可以正常工作,但如果需要,可以更准确地计算出来。越来越多的设备带有内置的端接跳线,可用于在需要时省去电阻的麻烦。   配置 RS485 串行 Modbus 网络时,您需要在每个设备中设置以下内容:   ● 波特率   ● 平价   ● 停止位   ● 数据位   这些通常可以通过板载跳线或软件进行配置。在开始此类项目时,需要进行板载跳线需要设置,直接开箱即可完成,而不是安装在天花板或现场任何地方要容易得多.   TCP / IP Modbus   要建立 TCP/IP Modbus 网络,所有设备必须在本地或通过网关连接连接到同一网络。通常,这些将是使用以太网电缆和 RJ45 端的有线连接,尽管现在更多的设备通过 Wi-Fi 连接,但两种解决方案都可以完成这项工作。   TCP / IP Modbus 并不像串行连接那样每个网络限制为 32 个设备,但是,每个主(客户端)设备都有其自身的限制,在开始设计系统之前应进行检查。   与 RS485 Modbus 网络的另一个区别是使用的术语,当谈到串行连接时,我们说“主从”,当谈到 TCP / IP Modbus 时,我们说“客户端和服务器”。   离散输入 10001 – 19999   这些点类似于线圈点,除了它们是只读的,就像数字输入一样。   读取离散输入时,它将反馈两个值之一,它是真或假,仅此而已。根据设备的不同,它可能被标记为 1 或 0、开或关等。这些类型的点通常用于显示控制器上数字输入的状态。   Modbus 功能代码 2 – 读取输入状态      输入寄存器 30001 – 39999   输入寄存器是由 16 位信息组成的只读点。模拟输入值将被归类为输入寄存器。   输入寄存器可以进一步分类为有符号或无符号,由于 16 位限制,无论哪种方式,都存在可以显示的最大信息量。   签名寄存器可以从 -32,768 到 32,767。这对温度传感器很有用。   无符号寄存器可以从 0 到 65,536。这对于消耗量表很有用,因为不需要负值。   Modbus 功能代码 4 – 读取输入寄存器   持有寄存器 40001 – 49999   保持寄存器是由 16 位信息组成的可写点。模拟输出值将被归类为保持寄存器。   就像输入寄存器一样,保持寄存器也可以有符号或无符号。16 位保持寄存器与上面详述的输入寄存器具有相同的范围限制   Modbus 功能代码 3 = 读取保持寄存器   Modbus 功能代码 6 = 写入保持寄存器   Modbus 功能代码 16 = 写入多个保持寄存器      字节顺序(MSB / LSB)   这是配置 Modbus 网络的鲜为人知的部分之一。以我的经验,这样做的原因是因为字节顺序通常总是 MSB > LSB,这是大多数控制器默认设置的。   ● MSB = 最高有效位   ● LSB = 最低有效位   这与控制器读取组成寄存器的各个位的顺序有关。正如我们前面所讨论的,标准输入或保持寄存器由 16 位组成,通常从位 0 到位 15 开始。      虽然这个设置经常被遗忘,但重要的是您要意识到它,因为它会在读取寄存器值时产生问题。   所有 16 位寄存器值都是使用二进制代码读取的,这就是存在最大值 65,535 的原因,即二进制的 16 个。   现在让我们假设我们正在尝试使用 Modbus 读取寄存器值。我们已经准备好网络设置,所有设备都在线并且工作(嗯,接收值),但我们还没有意识到这个设备首先使用 LSB 而不是 MSB。      默认情况下,我们将使用 MSB 顺序(从左到右)读取50,401的值   当设置为 LSB 时,我们读取的值为34,595(从右到左)。 --- ### 119. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 本文在 Linux 上基于 libmodbus 库进行 Modbus RTU 开发,在进行实验之前需要先安装 libmodbus 库,以及 socat 工具实现虚拟串口。 准备工作 安装 libmodbus 可以按 libmodbus 软件库 中「安装」一节的步骤进行手动编译安装。 安装 socat sudo apt install socat socat 是一个功能强大的网络工具,本实验将借助它来实现两个相互连接的虚拟串口,因此不需要准备真实的串口设备。关于 socat 的详细用法,可以参考 socat 命令。 代码实现 完整代码可从 https://github.com/getiot/linux-c/tree/main/library/libmodbus 获取。 Modbus RTU 从站 #include <stdio.h> #ifndef _MSC_VER #include <unistd.h> #endif #include <string.h> #include <stdlib.h> #include <errno.h> #include <stdbool.h> #include "modbus.h" // 引用libmodbus库 #define Loop 1 // 循环次数 #define Server_ID 17 // 从端设备地址 #define ADDRESS_START 0 // 测试寄存器起始地址 #define ADDRESS_END 99 // 测试寄存器结束地址 int main(int argc, char *argv[]) { modbus_t *ctx = NULL; int nb = 0; // 需要测试的寄存器个数 uint8_t* tab_rq_bits; // 用于保存发送或接收的数据(下同) uint8_t* tab_rp_bits; uint16_t *tab_rq_registers; uint16_t *tab_rw_rq_registers; uint16_t *tab_rp_registers; char *port; modbus_mapping_t *mb_mapping; if (argc == 2) { port = argv[1]; } else { port = "COM5"; } // 创建一个RTU类型的容器 ctx = modbus_new_rtu(port, 19200, 'N', 8, 1); // 设置从端地址 modbus_set_slave(ctx, Server_ID); // 设置debug模式 modbus_set_debug(ctx, true); // RTU 模式下表示打开串口 if (modbus_connect(ctx) == -1) { fprintf(stderr, "Connection failed: %s \n", modbus_strerror(errno)); modbus_free(ctx); return -1; } // 申请4块内存区用以存放寄存器数据,这里申请500个寄存器地址 mb_mapping = modbus_mapping_new(500, 500, 500, 500); if (mb_mapping == NULL) { fprintf(stderr, "Error mapping: %s \n",modbus_strerror(errno)); modbus_free(ctx); return -1; } // 循环接收查询帧并回复消息 for (;;) { uint8_t query[MODBUS_TCP_MAX_ADU_LENGTH]; int rc = 0; rc = modbus_receive(ctx, query);//获取查询报文 if (rc >= 0) { // rc is the qury size modbus_reply(ctx, query, rc, mb_mapping); // 回复响应报文 } else { // connection closed by the client or error printf("Connection Closed\n"); } } printf("Quit the loop : %s \n", modbus_strerror(errno)); // 释放内存 modbus_mapping_free(mb_mapping); modbus_close(ctx); modbus_free(ctx); return 0; } Modbus RTU 主站 #include <stdio.h> #ifndef _MSC_VER #include <unistd.h> #endif #include <string.h> #include <stdlib.h> #include <errno.h> #include <stdbool.h> #include "modbus.h" // 引用libmodbus库 #define Loop 1 // 循环次数 #define Server_ID 17 // 从端设备地址 #define ADDRESS_START 0 // 测试寄存器起始地址 #define ADDRESS_END 99 // 测试寄存器结束地址 int main(int argc, char *argv[]) { // printf("%c", 0b01000001); // A modbus_t *ctx = NULL; int nb = 0; // 需要测试的寄存器个数 uint8_t* tab_rq_bits; // 用于保存发送或接收的数据(下同) uint8_t* tab_rp_bits; uint16_t *tab_rq_registers; uint16_t *tab_rw_rq_registers; uint16_t *tab_rp_registers; char *port; if (argc == 2) { port = argv[1]; } else { port = "COM4"; } // 创建一个RTU类型的容器 ctx = modbus_new_rtu(port, 19200, 'N', 8, 1); // 设置从端地址 modbus_set_slave(ctx, Server_ID); // 设置debug模式 modbus_set_debug(ctx, true); // RTU 模式下表示打开串口 if (modbus_connect(ctx) == -1) { fprintf(stderr, "Connection failed: %s \n", modbus_strerror(errno)); modbus_free(ctx); return -1; } printf("Connection successed\n"); /*Allocate and initialize the different memory space */ // 计算需要测试的寄存器个数 nb = ADDRESS_END - ADDRESS_START; // 以下申请内存块,泳衣保存发送和接收各数据 tab_rq_bits = (uint8_t*)malloc(nb * sizeof(uint8_t)); memset(tab_rq_bits, 0, nb*sizeof(uint8_t)); tab_rp_bits = (uint8_t*)malloc(nb * sizeof(uint8_t)); memset(tab_rp_bits, 0, nb*sizeof(uint8_t)); tab_rq_registers = (uint16_t*)malloc(nb * sizeof(uint16_t)); memset(tab_rq_registers, 0, nb*sizeof(uint16_t)); tab_rw_rq_registers = (uint16_t*)malloc(nb * sizeof(uint16_t)); memset(tab_rw_rq_registers, 0, nb*sizeof(uint16_t)); tab_rp_registers = (uint16_t*)malloc(nb * sizeof(uint16_t)); memset(tab_rp_registers, 0, nb*sizeof(uint16_t)); int nb_loop = 0, nb_fail = 0, addr = 0, rc = 0; while (nb_loop++ < Loop) { // 从起始地址开始顺序测试 for (addr = ADDRESS_START; addr < ADDRESS_END; addr++) { sleep(1); int i = 0; // 生成随机数用于测试 for (i = 0; i < nb; i++) { tab_rq_registers[i] = (uint16_t)(65535.0 * rand() / (RAND_MAX + 1.0)); tab_rw_rq_registers[i] = ~tab_rq_registers[i]; tab_rq_bits[i] = tab_rq_registers[i] % 2; } nb = ADDRESS_END - addr; // 测试线圈寄存器的单个读写 printf("modbus_write_bit()...\n"); rc = modbus_write_bit(ctx, addr, tab_rq_bits[0]); // 写线圈寄存器 if (rc != 1) { printf("ERROR modbus_write_bit (%d)\n", rc); printf("Address = %d,value = %d \n", addr, tab_rq_bits[0]); nb_fail++; } else { // 写入之后,再读取并比较 rc = modbus_read_bits(ctx, addr, 1, tab_rp_bits); if (rc != 1 || tab_rq_bits[0] != tab_rp_bits[0]) { printf("ERROR modbus_read_bits single(%d)\n", rc); printf("address = %d\n", addr); nb_fail++; } } // 测试线圈寄存器的批量读写 printf("modbus_write_bits()...\n"); rc = modbus_write_bits(ctx, addr, nb, tab_rq_bits); if (rc != nb) { printf("ERROR modbus_write_bits (%d)\n", rc); printf("Address = %d,nb = %d\n", addr, nb); nb_fail++; } else { // 写入之后,再读取并比较 rc = modbus_read_bits(ctx, addr, nb, tab_rp_bits); if (rc != nb) { printf("ERROR modbus_read_bits \n"); printf("address = %d,nb = %d\n", addr, nb); nb_fail++; } else { // 进行比较 for (i = 0; i < nb; i++) { if (tab_rp_bits[i] != tab_rq_bits[i]) { printf("ERROR modbus_read_bits (%d)\n", rc); printf("Address = %d, Val = %d(0x%x) != %d (0x%x)\n", addr, tab_rq_bits[i], tab_rq_bits[i], tab_rp_bits[i], tab_rp_bits[i]); nb_fail++; } } } } // 测试保持寄存器的单个读写 printf("modbus_write_register()...\n"); rc = modbus_write_register(ctx, addr, tab_rq_registers[0]); if (rc != 1) { printf("ERROR modbus_read_bits (%d)\n", rc); printf("Address = %d, Val = %d(0x%x)\n", addr, tab_rq_registers[0], tab_rq_registers[0]); nb_fail++; } else { // 写入之后进行读取 rc = modbus_read_registers(ctx, addr, 1, tab_rp_registers); if (rc != 1) { printf("ERROR modbus_read_registers (%d)\n", rc); printf("Address = %d\n", addr); nb_fail++; } else { // 读取后进行比较 if (tab_rq_registers[0] != tab_rp_registers[0]) { printf("ERROR modbus_read_registers (%d)\n", rc); printf("Address = %d, Val = %d(0x%x) != %d (0x%x)\n", addr, tab_rq_registers[0], tab_rq_registers[0], tab_rp_registers[0], tab_rp_registers[0]); nb_fail++; } } } // 测试线圈寄存器的批量读写 printf("modbus_write_registers()...\n"); rc = modbus_write_registers(ctx, addr, nb, tab_rq_registers); if (rc != nb) { printf("ERROR modbus_write_bits (%d)\n", rc); printf("Address = %d, nb = %d \n", addr, nb); nb_fail++; } else { // 进行读取测试 rc = modbus_read_registers(ctx, addr, nb, tab_rp_registers); if (rc != nb) { printf("ERROR modbus_read_registers (%d)\n", rc); printf("Address = %d\n", addr); nb_fail++; } else { for (i = 0; i < nb; i++) { // 读取后进行比较 if (tab_rq_registers[i] != tab_rp_registers[i]) { printf("ERROR modbus_read_registers (%d)\n", rc); printf("Address = %d, Val = %d(0x%x) != %d (0x%x)\n", addr, tab_rq_registers[0], tab_rq_registers[0], tab_rp_registers[0], tab_rp_registers[0]); nb_fail++; } } } } // 功能码 23 (0x17) 读写多个寄存器的测试 printf("modbus_write_and_read_registers()...\n"); rc = modbus_write_and_read_registers(ctx, addr, nb, tab_rw_rq_registers, addr, nb, tab_rp_registers); if (rc != nb) { printf("ERROR modbus_read_ad_write_registers (%d)\n", rc); printf("Address = %d,nb = %d\n", addr, nb); nb_fail++; } else { // 读取并比较 for (i = 0; i < nb; i++) { if (tab_rp_registers[i] < tab_rw_rq_registers[i]) { printf("ERROR modbus_read_and_write_registers READ\n"); printf("Address = %d,value %d (0x%X) != %d (0x%X)\n", addr, tab_rp_registers[i], tab_rw_rq_registers[i], tab_rp_registers[i, tab_rw_rq_registers[i]]); nb_fail++; } } rc = modbus_read_registers(ctx, addr, nb, tab_rp_registers); if (rc != nb) { printf("ERROR modbus_read_registers (%d) \n", rc); printf("Address = %d,nb = %d\n", addr, nb); } else { for (i = 0; i < nb; i++) { if (tab_rw_rq_registers[i] != tab_rp_registers[i]) { printf("ERROR modbus_read_and_write_registers \n"); printf("Address = %d,value %d (0x%X) != %d (0x%X)\n", addr, tab_rw_rq_registers[i], tab_rw_rq_registers[i], tab_rp_registers[i], tab_rp_registers[i]); nb_fail++; } } } } } printf("Test: "); if (nb_fail) { printf("%d FAILS\n",nb_fail); } else { printf("SUCCESS\n"); } } // FREE the memory free(tab_rq_bits); free(tab_rp_bits); free(tab_rq_registers); free(tab_rp_registers); free(tab_rw_rq_registers); // close the connection modbus_close(ctx); modbus_free(ctx); return 0; } Makefile CC=gcc CFLAGS=-I/usr/local/include/modbus/ -lmodbus -g MASTER=modbus-rtu-master SLAVE=modbus-rtu-slave all: (CC) -o(MASTER) (MASTER).c(CFLAGS) (CC) -o(SLAVE) (SLAVE).c(CFLAGS) clean: rm -rf (MASTER)(SLAVE) 测试 启动虚拟串口 $ socat -d -d PTY PTY 2021/07/16 14:36:43 socat[23932] N PTY is /dev/pts/7 2021/07/16 14:36:43 socat[23932] N PTY is /dev/pts/8 2021/07/16 14:36:43 socat[23932] N starting data transfer loop with FDs [5,5] and [7,7] 启动从站设备,等待主站指令 ./modbus-rtu-slave /dev/pts/7 启动主站设备,依次给从站下发指令 ./modbus-rtu-master /dev/pts/8 现在,你可以从终端看到 Modbus RTU 主站和从站的数据通信过程。 --- ### 120. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 01 术语解读 校验码:校验码是由前面的数据通过某种算法得出的,用以检验该组数据的正确性。代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少这种输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。 常用的校验有:累加和校验SUM、字节异或校验XOR、纵向冗余校验LRC、循环冗余校验CRC…… 离散量输入:主要用来读取单个位的数据,如IO的状态; 线圈:开关输出信号,主要用来写入单个位的数据,与离散量构成组成对位的操作; 输入寄存器:主要用来读取16位,也就是两个字节的数据; 保持寄存器:主要用来写入16位的数据。 PLC:可编程逻辑控制器,是一种采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。 串口通信:随着计算机系统的应用和微机网络的发展,通信功能越来越显得重要.这里所说的通信是指计算机与外界的信息交换.因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换.由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输.对于那些与计算机相距不远的人-机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍.在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各 CPU 之间的通信一般都是串行方式.所以串行接口是微机应用系统常用的接口。许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上,CPU 与接口之间仍按并行方式工作. 串口:串口是计算机上一种非常通用设备通信的协议,不要与通用串行总线Universal Serial Bus(USB)混淆。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a. 波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率。例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b. 数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c. 停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d. 奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。 02 背景 早在1971年,Modicon公司首次推出了Modbus协议,ModbusRTU和Modbus ASCII诞生于此。后来施耐德电气(SchneiderElectric)收购了Modicon公司,并在1997年推出了ModbusTCP协议。2004年,中国国家标准委员会正式把Modbus作为了国家标准,开启了Modbus为中国工业通信做贡献的时代。 通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。Modbus协议具有标准、开放,可以支持多种电气接口,数据帧格式简单紧凑,数据传输量大、实时性好等特点,在工业控制系统中得到了广泛的应用,已经成为通用工业标准。深入分析Modbus协议实现原理和其安全性对提高工控系统安全性有着重要的现实意义。ModbusRTU和ModbusASCII主要用于串行通信领域,而ModbusTCP则常用于以太网通信。现在,Modbus已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。 03 协议原理 Modbus使用一种简单的MasterandSlave主从协议(客户机/服务器协议)进行通信。客户机作为主站,向服务器发送请求;服务器(从站)接到请求后,对请求进行分析并作出应答。其中使用的通信帧被称为应用数据单元(Application Data Unit,ADU),它包括通信地址段、功能代码段、数据段和校验段,如下图: 一般使用上,监控系统(HMI)都为Master,PLC、电表、仪表等都为Slave,HMI系统一直PollingSlave的各种relayandregister最新数值,然后做显示及各种逻辑计算及控制调整等处理。 其中,功能代码段和数据段组合称为协议数据单元(Protocol Data Unit or Protocol Description Unit),PDU)。功能代码段占用一个字节,取值范围为1~255,其中128~255为保留值,用于异常消息应答报文。1~127为功能代码编号,其中65~72和100~110为用户自定义编码。 04 传输方式 Modbus 协议是一种应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型,协议本身并没有定义物理层,只是定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。 Modbus 协议使用串口传输时可以选择RTU或ASCII模式,并规定了消息、数据结构、命令和应答方式并需要对数据进行校验。ASCII 模式采用LRC校验,RTU模式采用16 位CRC校验。通过以太网传输时使用TCP,这种模式不使用校验,因为TCP协议是一个面向连接的可靠协议。 05 Modbus RTU与Modbus ASCII有什么区别 Modbus是一种应用层协议,它定义了与基础网络无关的数据单元(ADU),可以在以太网(TCP/IP)或串行链路上(RS232、RS485等)进行通信(以太网ADU和串行ADU略有不同)。在串行链路上,Modbus协议有两种传输模式——ASCII模式和RTU模式。其中,ASCII是英文“American Standard Code for Information Interchange”的缩写,中文翻译为“美国国家信息交换标准编码”;RTU是英文“ Remote Terminal Unit”的缩写,中文翻译为“远程终端设备”。 首先,让我们来看看Modbus的工作原理。 Modbus采用主从(Master-Salve)通信模式,仅有主设备(Master)能对传输进行初始化,从设备(Slave)根据主设备的请求进行应答。典型的主设备包括现场仪表和显示面板,典型的从设备为可编程逻辑控制器(PLC)。 在串行链路的主从通信中,Modbus主设备可以连接一个或N(最大为247)个从设备,主从设备之间的通信包括单播模式和广播模式。 在广播模式中,Modbus主设备可同时向多个从设备发送请求(设备地址0用于广播模式),从设备对广播请求不进行响应。 在单播模式中,主设备发送请求至某个特定的从设备(每个Modbus从设备具有唯一地址),请求的消息帧中会包含功能代码和数据,比如功能代码“01”用来读取离散量线圈的状态。从设备接到请求后,进行应答并把消息反馈主设备。 在主从设备的通信中,可以使用ASCII模式或者RTU模式。 在ASCII(AmericanStandard Code for Information Interchange)传输模式下,消息帧以英文冒号(“:”,ASCII3A Hex)开始,以回车和换号(CRLF,ASCII 0D and 0A Hex)符号结束,允许的传输的字符集为十六进制的0~9和A~F;网络中的从设备监视传输通路上是否有英文冒号(“:”),如果有的话,就对消息帧进行解码,查看消息中的地址是否与自己的地址相同,如果相同的话,就接收其中的数据;如果不同的话,则不予理会。 在ASCII模式下,每个8位的字节被拆分成两个ASCII字符进行发送,比如十六进制数0xAF ,会被分解成ASCII字符“A”和“F”进行发送,发送的字符量比RTU增加一倍。ASCII模式的好处是允许两个字符之间间隔的时间长达1s而不引发通信故障,该模式采用纵向冗余校验(Longitudinal Redundancy Check ,LRC)) 的方法来检验错误, 当控制器设为在Modbus 网络上以RTU 模式通信,消息中的每个8Bit 字节都包含两个4 Bit 的十六进制字符,这种模式没有开始和结束标记。其优点是: 在同样的波特率下,可比传送更多的数据。 在RTU(RemoteTerminal Unit)模式下,每个字节可以传输两个十六进制字符,比如十六进制数0xAF,直接以十六进制0xAF(二进制:10101111)进行发送,因此它的发送密度比ASCII模式高一倍;RTU模式采用循环冗余校验(CRC),下面是对RTU模式的总结: 具体格式如图 所示。 06 Modbus TCP及其注意点 6.1 主机和从机、服务端和客户端 【在modbus协议中】 主机发送modbus请求,从机根据请求内容向主机返回响应。在modbus协议中,主机总是主动方,从机总是被动方。 【在网络应用中】 在网络应用中存在客户端和服务器端,客户端(例如浏览器)发送请求到服务器,服务器向客户端返回内容(例如HTML文本)。 【在modbus tcp中】 主机是客户端,而从机是服务器端。千万不要以为服务器端重要,主机也重要,所以主机就是服务器端。 6.2 是否可以多主机     通过前面的分析,主机为客户端那么modbustcp支持多个主机,在一个   局域网中可存在多个主机和多个从机。从机的连接能力(连接主机的数   量)由uIP的最大TCP连接个数决定。 6.3 modbus TCP协议简述 modbus TCP和modbus RTU基本相同,但是也存在一些区别 a.从机地址变得不再重要,多数情况下忽略。从某种意义上说从机地址被IP地址取代 b.CRC校验变得不再重要,甚至可以忽略。由于TCP数据包中已经存在校验,为了不重复造轮子,modbus TCP干脆取消了CRC校验。 TCP 模式是为了让Modbus 数据顺利在以太网上传输产生的,使用TCP502 端口。该协议物理层,数据链路层,网络层,传输层都是基于TCP 协议,只在应用层,将Modbus 协议修改后封装进去; 接收端将该TCP 数据包拆封后,重新获得原始Modbus 帧,然后按照Modbus 协议规范进行解析,并将返回的数据包重新封装进TCP 协议中,返回到发送端。与串行链路传输的数据格式不同,TCP 模式去除了附加地址和校验,增加了报文头,其具体格式如图4所示。 在modbus TCP中包含一个MBAP头,该头包含以下几个部分 【注意】 【1】传输标志可理解为序列号,防止 MODBUS TCP通信错位,例如后发生的响应先到了主机,而早发生的响应后到主机 【2】单元标志可理解为从机地址,此时已经不再重要 6.4 modbus tcp 和 TCP IP的关系 modbus TCP可以理解为发生在TCP上的应用层协议,既然是TCP协议那么一个完整的MODBUSTCP报文必然包括TCP首部,IP首部和Ethernet首部。 07 功能码作用 启动Modbus事务处理的客户机创建Modbus应用数据单元。功能码(PDU中的)向服务器指示将执行哪种操作。 用一个字节编码Modbus数据单元的功能码域。有效范围是十制制1-255(128-255为异常响应保留)。当从客户机向服务器发送报文时,功能码域通过服务器执行哪种操作。 从客户机向服务器发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作。这个域还包括离散项目和寄存器地址、处理项目的数量以及域中的实际数据字节数。 在某种请求中,数据域可以是不存在的,在此情况下服务器不需要任何附加信息。功能码仅说明操作。 功能码的类型 功能码主要分为有效功能码、异常功能码和错误功能码。 如果在一个正确接收Modbus ADU中,不出现与请求Modbus功能有关的差错,那么服务器至客户机的响应数据会包含请求中的正常功能码。如果出现与请求Modbus功能有关的差错,那么响应数据会包含一个异常码和错误码。 例如,客户机能够读一组离散量输出或输入的开/关状态,或者用户能够读/写一组寄存器数据内容。当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或出现某种差错(称为异常响应)。对于一个正常响应来说,服务器仅对原始功能码响应,如下图: 对于异常响应,服务器返回一个与客户机等同的码,设置该原始功能码的最高有效位为逻辑1,并加该异常码后增加错误码,以通知客户机异常原因。如下图: 有效功能码 有效功能码有二十几种,但是一般使用上都以1、2、3、4、5、6、15、16等八种最为常用,以及另外特殊使用的20、21两种,此为General Reference Register,绝大部份的Modbus设备并不会提供此Register。于PLC上主要的控制数据有下列四种型式。此八种功能码就是处理这些控制资料,详细说明如下各点: 控制数据四种型式: DI:DigitalInput(数字输入,离散输入),一个地址一个数据位,用户只能读取它的状态,不能修改。以一个 bit表示 On/Off,用来记录控制信号的状态输入,例如:开关,接触点,马达运转,超限switch…等等。于PLC上被称为Input relay、input coil等。 DO:DigitalOutput(数字输出,线圈输出),一个地址一个数据位,用户可以置位、复位,可以回读状态。以一个 bit表示 On/Off,用来输出控制信号,以激活或停止马达,警铃,灯光…等等。于PLC上被称为Output relay、Output coil等。 AI:Analog Input(模拟输入,输入寄存器),一个地址16位数据,用户只能读,不能修改,,以16 bits integer表示一个数值,用来记录控制信号的数值输入,例如:温度、流量、料量、速度、转速、文件板开度、液位、重量…等等。于PLC上被称为Input register。 AO:AnalogOutput(模拟输出,保持寄存器),一个地址16位数据,用户可以写,也可以回读,以16 bits integer表示一个数值,用来输出控制信号的数值,例如:温度、流量、速度、转速、文件板开度、饲料量…等等设定值。于PLC上被称为Output register、Holding register。 08 Modbus协议安全分析 Modbus 协议是典型的工控网协议,研究其安全性对于加强工业控制网络的安全性有重要意义。一般来说,协议安全性问题可以分为两种,一种是协议自身的设计和描述引起的安全问题; 另一种是协议的不正确实现引起的安全问题。Modbus 协议也存在着 这两方面的问题。 8.1Modbus 协议的固有问题 绝大多数工控协议在设计之初,仅仅考虑了功能实现、提高效率、提高可靠性等方面,而没考虑过安全性问题。Modbus 协议也不例外,尽管其已经成为事实上的工业标准。从前面原理分析可以看出其本身的安全性问题是: 缺乏认证、授权、加密等安全防护机制和功能码滥用问题。 ( 1) 缺乏认证 认证的目的是保证收到的信息来自合法的用户,未认证用户向设备发送控制命令不会被执行。在Modbus 协议通信过程中,没有任何认证方面的相关定义,攻击者只需要找到一个合法的地址就可以使用功能码就能建立一个Modbus 通信会话,从而扰乱整个或者部分控制过程。 ( 2) 缺乏授权 授权是保证不同的特权操作需要由拥有不同权限的认证用户来完成,这样可大大降低误操作与内部攻击的概率。目前,Modbus 协议没有基于角色的访问控制机制,也没有对用户分类,没有对用户的权限进行划分,这会导致任意用户可以执行任意功能。 ( 3) 缺乏加密 加密可以保证通信过程中双方的信息不被第三方非法获取。Modbus 协议通信过程中,地址和命令全部采用明文传输,因此数据可以很容易的被攻击者 捕获和解析,为攻击者提供便利。 ( 4) 功能码滥用 功能码是Modbus 协议中的一项重要内容,几乎所有的通信都包含功能码。目前,功能码滥用是导致Modbus 网络异常的一个主要因素。例如不合法报文长度,短周期的无用命令,不正确的报文长度,确认异常代码延迟等都有可能导致拒绝服务攻击。 8.2协议实现产生的问题 虽然Modbus 协议获得了广泛的应用,但是在实现具体的工业控制系统时,开发者并不具备安全知识或者没有意识到安全问题。这样就导致了使用Modbus 协议的系统中可能存在各种各样的安全漏洞。 ( 1) 设计安全问题 Modbus 系统开发者重点关注的是其功能实现问题,安全问题在设计时很少被注意到。设计安全是指设计时充分考虑安全性,解决Modbus 系统可能出现的各种异常和非法操作等问题。比如在通信过程中,某个节点被恶意控制后发出非法数据,就需要考虑这些数据的判别和处理问题。 ( 2) 缓冲区溢出漏洞 缓冲区溢出是指在向缓冲区内填充数据时超过了缓冲区本身的容量导致溢出的数据覆盖在合法数据上,这是在软件开发中最常见也是非常危险的漏洞,可以导致系统崩溃,或者被攻击者利用来控制系统。Modbus 系统开发者大多不具备安全开发知识,这样就会产生很多的缓冲区溢出漏洞,一旦被恶意者利用会导致严重的后果。 ( 3) Modbus TCP 安全问题 目前,Modbus 协议已经可以在通用计算机和通用操作系统上实现,运行于TCP /IP 之上以满足发展需要。这样,TCP /IP 协议自身存在的安全问题不可避免地会影响到工控网络安全。非法网络数据获取,中间人,拒绝服务, IP 欺骗,病毒木马等在IP 互联网中的常用攻击手段都会影响Modbus 系统安全。 8.3安全建议 目前,Modbus 系统采取的安全防护措施普遍不足,这里参考信息安全业内研究并结合工控系统自身的安全问题,提出了一些安全建议,能够有效地降低工业控制系统面临的威胁。 ( 1) 从源头开始 工控网络漏洞,很大一部分是其实现过程出现的漏洞。如果从源头开始控制,从Modbus 系统的需求设计、开发实现、内部测试和部署等阶段,全生命周期的介入安全手段,融入安全设计、安全编码以及安全测试等技术,可以极大地消除安全漏洞,降低整个Modbus 系统的安全风险。 ( 2) 异常行为检测 异常行为代表着可能发生威胁,不管是有没有攻击者,因此开发针对Modbus 系统的专用异常行为检测设备可以极大提高工控网络的安全性。针对Modbus 系统,首先要分析其存在的各种操作行为,依据“主体,地点,时间,访问方式,操作,客体”等行为描述成一个六元组模型; 进而分析其行为是否属于异常; 最终决定采取记录或者报警等措施。 ( 3) 安全审计 Modbus 的安全审计就是对协议数据进行深度解码分析,记录操作的时间、地点、操作者和操作行为等关键信息,实现对Modbus 系统的安全审计日志记录和审计功能,从而提供安全事件爆发后的时候追查能力。 ( 4) 使用网络安全设备 使用入侵防御和防火墙等网络安全设备。防火墙是一个串行设备,通过设置,只允许特定的地址访问服务端,禁止外部地址访问Modbus 服务器,可以有效的防止外部入侵; 入侵防御设备可以分析Modbus协议的具体操作内容,有效地检测并阻止来自内部/外部的异常操作和各种渗透攻击行为,对内网提供保护功能。 来源:网络。 --- ### 121. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气)于1979年为使用可编程逻辑控制器(PLC)通信而发表的。现在的Modbus协议已经成为工业领域通信协议的业界标准,并且是工业电子设备之间常用的连接方式。 Modbus协议能够成为工业领域应用最广泛的协议,它必须具备以下几个特点: 1、免费:这个是最大的前提,任何产品都是一样,只有通过免费才能获取到前期最大的使用量。 2、简单:Modbus协议帧格式简单紧凑,用户容易理解,厂商容易集成。 3、接口:Modbus协议只是一种规约,属于应用层的协议,因此不仅可以应用在串口(485/232/422),也可以在以太网、光纤、蓝牙、无线上传输。 存储区分类 我一般介绍Modbus协议的时候,喜欢站在Modbus规约制定者的角度,结合一些事物来对比说明,这样对很多人来说,可能会更加容易理解。 假设没有Modbus协议,我们想要制定一个协议,我们首先要明确,协议的目的是为了数据传输,因此,为了更好地存储不同的数据类型,我们会将布尔和非布尔的数据分开存储,因此,就有了线圈和寄存器的概念。 线圈和寄存器,这个经常被很多人诟病,认为不应该这么翻译,感觉不容易理解。从电气角度来看,在电气控制回路中,一般都是靠接触器或中间继电器来实现控制,接触器或中继最终靠的是线圈的得电和失电来控制触点闭合和断开,因此用线圈表示布尔量;而寄存器在计算机中,就是用来存储数据的,因此非布尔的数据放在寄存器里。 这个可以跟PLC的存储区来进行对比,西门子的I/Q/M都是线圈,V/T/C/DB都是寄存器,三菱的X/Y都是线圈,D/W/H都是寄存器,欧姆龙的CIO是线圈,D/W/H是寄存器。 以西门子为例,虽然I和Q都表示线圈,但是他们的分工是不同的,I表示输入,Q表示输出,输入意味着该存储区里的值必须由外部设备接入,是只读的,输出表示输出结果给外部设备,是可读可写的。 因此,Modbus的线圈和寄存器应该也按照只读、读写来进一步细分,因此这就形成了Modbus的存储区,如下表所示: 存储区代号 然而,上面表格里的存储区名称是一个全称,开发和使用中使用全称会比较麻烦,因此需要给他们取个别名,就像西门子的I/Q/M一样,这些都是西门子给存储区取的一个代号,所以Modbus也要给这些存储区取一个代号,干脆直接用数字吧,于是,就有了下面的规定: 这个其实就跟我们的姓名和小名一样,姓名是正式场合使用,日常场合,我们一般可以使用小名。 存储区范围 无论是什么存储区,都会有一个范围的限制,就像西门子的M区可能最大到8192,三菱的X区最大到2048,Modbus的每个存储区也应该规定一个范围,不能无限制使用。 Modbus是这么规定的,每个存储区的最大范围是65536,这个范围是很大的。 我们再以三菱的X区为例,如果最大范围是2048,那么意味着我们只能访问X0-X2047这些地址,我们这里说的X0、X2047,就是我们常说的PLC地址,那么这个地址是怎么组成的呢?它是由存储区编号加上一个地址索引组成,我们把这样的PLC地址,理解为绝对地址,后面的地址索引,理解为相对地址。 所谓绝对地址,就是我们仅仅通过一个地址名称,就能知道是什么存储区的第几个数据,而这个第几个,就是我们说的相对地址,因此绝对地址是唯一的,相对地址,每个存储区都有。 那么对于Modbus来说,我们的绝对地址和相对地址是怎么样的呢? 我们仍然遵从公式:绝对地址=区号+相对地址。 但是也会有一些不一样的地方,以保持型寄存器为例,第一个绝对地址是400001,这个地方不是400000,这个是由Modbus规约决定的,其它存储区也是类似的。 因此,Modbus存储区范围如下图所示: 正如上文所说,65536这个范围是很大的,但在实际使用中,我们一般用不了这么多地址,一般情况下,10000以内就已经足够我们使用了,因此,为了方便起见,我们有一种短的地址模型,如下图所示: 功能码 功能码这个概念,我们可以这么去理解,先回到我们的初衷,协议的目的是为了数据传输,也就是为了读取数据和写入数据,我们已经确定好4个存储区,存储不同的数据类型,那么接下来我们就要对这些存储区进行读写,那么可能会产生很多种不同的行为,比如读取输入线圈存储区、读取输出线圈存储区,这就是两种不同的行为,同样的,如果用读取输入线圈存储区、读取输出线圈存储区,会比较麻烦,那么我们干脆给每种形成指定一个代号,那么这种代号就是功能码。 我们再来探讨一下,究竟有多少种不同的行为呢? 读取和写入是2种行为,存储区有4个,但是我们知道输入线圈和输入寄存器是只读的,因此不能进行写入,除去这2种的话,应该会产生6种不同的行为,如下图所示: 然而,Modbus规约将写入输出线圈和写入保持寄存器这2种行为,又进一步做了细分,包括写入单个和写入多个,因此原来的6种行为就变成了8种行为,同时给每种行为设置一个代号,就形成了下图所示的功能码列表: Modbus规约中的功能码其实不止这8个,还有一些功能码是用于诊断或异常码,但是一般很少使用,这8种功能码是最主要的核心功能码。 协议分类 Modbus严格来说,是一个标准化的规约,而不是一个具体协议。我们常说的设备A和设备B之间通过Modbus协议来通信,这句话其实是不严谨的。 Modbus规约上有三种不同的协议,分别是ModbusRtu、ModbusAscii、ModbusTcp。 一般来说,ModbusRtu和ModbusAscii是运行在串口上的协议,ModbusTcp是运行是以太网上的协议,但是这并非绝对的,我们也可以将ModbusRtu、ModbusAscii运行在以太网或光纤上使用,同样的,在串口网络里,我们也可以使用ModbusTcp的协议,因为协议只是一种规范,并不限制通信介质。 报文格式 前面我们说了Modbus有三种不同的协议,分别是ModbusRtu、ModbusAscii、ModbusTcp,那么这三种协议的报文格式也是不同的,下面分别对这三种协议的报文格式进行说明: ModbusRtu的报文格式如下: 第一部分:从站地址,占1个字节 第二部分:功能码,占1个字节 第三部分:数据部分,占N个字节 第四部分:校验部分,CRC校验,占2个字节 2. ModbusAscii的报文格式如下: 第一部分:开始字符(:) 第二部分:从站地址,占2个字节 第三部分:功能码,占2个字节 第四部分:数据部分,占N个字节 第五部分:校验部分,LRC校验,占2个字节 第六部分:结束字符(CR LF) 3. ModbusTcp的报文格式如下: 第一部分:事务处理标识符,占2个字节 第二部分:协议标识符,占2个字节 第三部分:长度,占2个字节 第四部分:单元标识符,占1个字节 第五部分:功能码,占1个字节 第六部分:数据部分,占N个字节 调试软件 Modbus学习成本很低,因为协议是公开免费的,我们可以直接获取到《Modbus中文协议文档》。 同时,也有很多调试软件可以进行仿真调试,因此我们可以在不购买任何硬件的情况下,就把Modbus协议学好。 【协议文档和调试软件】可以联系助教老师获取。 Modbus 学习必须要配合相关的调试软件,可以达到事半功倍的效果,Modbus 学习必备的三大神器分别是 ModbusPoll、ModbusSlave 及 VSPD,ModbusPoll 软件主要用于仿真 Modbus主站或 Modbus 客户端,ModbusSlave 软件主要用于仿真 Modbus 从站或 Modbus 服务器,而 VSPD 全称 Configure Virtual Serial Port Driver,是用来给电脑创建虚拟串口使用的。 即使我们想要结合硬件,支持Modbus协议的设备也有很多,各种品牌PLC、各种品牌的仪表、各种温湿度传感器、流量计等都可以很好地支持Modbus协议。 --- ### 122. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是应用于电子控制器上的一种串行通信协议,是工业电子设备之间常用的连接方式,通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准,不同厂商生产的控制设备可以连成工业网络,进行集中监控。以下以4入4出继电器模块(Modbus RTU)为例,讲解如何将支持Modbus协议的终端设备接入Modbus物联网云平台,并演示如何接线与配置,通讯设备选择有人的4G DTU USR-DR15X 为例。 一、准备 材料准备 注册Modbus云平台 用手机号/邮箱注册Modbus云平台通行证,登录Modbus云平台。 二、连接设备 1.将继电器与DTU通过485串口线连接2.分别给继电器和DTU供电(12V)(棕正黑负) 三、云端添加设备 云端添加设备,只需三步:基本信息、选择产品、设备上云,便可快速把设备接入Modbus云平台。 1.基本信息 填写设备的基本信息,包括设备名称、设备号、设备协议、设备经纬度、排序等信息。 自定义添加方式: 设备号:默认可以用系统自动生成,也可“自定义填写”。 产品库一键添加方式: 各类合作厂家优秀的产品汇集入驻有Modbus产品库,用户通过“设备管理”→“新增设备”→“产品库”方式选择品牌,类别,型号,点击完成设备一键添加。 新增传感器 点击设备管理下 设备信息→(设备)→属性设置(图标)→新增传感器 传感器列表 这里的地址号为从机地址,寄存器号为偏移地址,我们在添加传感器信息时,需要按照采集参数的属性来添加,下面我们来具体讲解传感器中各个字段的含义。 传感器点详解 数据类型 数据类型一般的读展示数据为数据属性,部分场景下我们需要写数据到设备中,我们就 可以选择配置属性。 地址号 地址号为 modbus 从机设备的地址,它的范围为 1~255 ,这里我们填写的数据都是 10 进制显示数据,如某款 modbus 从机设备的地址为 0x 11,则这里地址为填写 17 就行。 寄存器号 寄存器号为modbus 从机的寄存器偏移地址, 日常我们浏览设备说明书时,一般会有 2 种形式,一种会出寄存器地址,另外一种给 PLC 或者组态地址如下图所示,我们看到如果 是寄存器地址,则 湿度采集属性寄存器地址为 0 ,温度采集属性寄存器地址为 1 则可以。 如果给出的是 PLC 或者组态地址,则需要转换一般则为去掉最高位,在减去 1 则可,如 40001, 去掉最高位变为 00001 ,减去 1 ,则为 0, 40001 -> 0 ,40002 -> 1  ,这里大家一定不能混淆。 数据精度 数据精度为数据的有效位数,比如传递的数 10.234 ,如果数据精度选择 2 ,则小数点第 三位会被四舍五入变为 10.23 ,其他类似。 储存策略 储存策略,数据储存到数据库的模式,根据名字就可以理解,没有特殊要求,默认即可。 公式处理 公式处理 (设备->平台) 为采集过来的数据,经过公式计算后储存和展示使用,比如采 集到数值是 100 ,我们要除以 10 使用,则可以填写 x/10  即可。平台->设备的公式是写数据 的时候使用。 参数配置 参数配置是配置数据的属性使用的,一般 modbus 属性有 01,02,03,04,05,06 等功能, 各个功能对应功能如下,默认 03 功能码,我们不需要配置,但是比如写数据和控制开关我们则需要按照对应规则配置。 比如我们常用 40001 ,则它的功能码是 03 ,寄存器地址为 0, 再比如 10003 信息则功能码为 02 ,寄存器地址为 2。下图已经非常详细的讲解了我们在设置传感器时,如何配置参数开关 (线圈) 配置 05 指令,系统会默认用 05 执行写,01 指令读; 读写数据 配置 06  ,系统会默认用 06  执行写,03 指令读;其他则按照正常的指令功能码配置则行; --- ### 123. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 跳动符号触控屏支持跳动符号组态协议、Modbus RTU、XGUS、FX2N、自由串口协议(支持LUA脚本的串口屏),同时只兼容一种协议。本系列主要介绍Modbus协议应用,其他XGUS、FX2N等协议类似,参考即可 1.1 传输格式说明 默认传输的数据格式为: 起始位:1bit数据位:8bit校验位:无停止位:1bit串口波特率:RS232电气接口:支持1200~921600bps,典型波特率:115200bpsRS485电气接口:支持1200~115200bps,典型波特率:9600bps 1.2 协议说明 开发MODBUS工程,通过VisualTFT编译后,生成下载的资源包,编译过程会将Modbus配置信息转换为串口屏的工程文件;串口屏会根据工程文件运行,自动生成符合MODBUS协议的指令格式。故用户不需要考虑屏幕如何生成Modbus报文、如何解析Modbus报文。屏做主机时,通过串口周期性地发送这些指令到从机, 接收从机响应的指令并解析后,更新绑定的控件或执行预先配置的动作 注意:当用户拿到新的屏幕开发时,默认的是跳动符号协议,可以通过VisualTFT上位机串口联机、调试、下载等。当用户开启Modbus协议后(或其他非跳动符号协议),编译,用串口下载到实体屏后,再也无法联机操作。该现象属于正常,因为上位机软件联机是通过跳动符号协议通讯,此时用户需要用SD卡进行升级、更新!!! 1.3 调试工具 由于Modbus协议的报文和跳动符号指令报文不一致,不能通过上位机软件的指令助手里面的“组态/基本指令”调试,所以需要专门的第三方软件进行调试,如下所示 虚拟串口:用于Modbus Slave(Modbus Poll)和虚拟屏通讯调试。点击下载Modbus Slave:屏幕当主机时,和虚拟屏或实体屏通讯。点击下载Modbus Poll:屏幕当从机时,和虚拟屏或实体屏调试。点击下载 本章节不阐述Modbus Slave 、 Modbus Poll的安装、使用,详细可以网上查找对应的资料,虚拟串口的创建可以参考快速入门 -《6.1 安装虚拟串口软件》 1.4 脚本说明 Modbus RTU、XGUS、FX2N等协议的开发,涉及的相关逻辑联动,如下方法实现: 逻辑处理:可以通过菜单栏的【工具】-【协议与变量…】里面逻辑处理实现Minic脚本:可以通过菜单栏的【工具】-【Minic脚本编程…】。注意:Minic脚本必须基于开启以上协议才生效Lua脚本:LUA脚本适用于任何协议,实现更复杂的逻辑,建议Modbus协议开发时,若屏幕支持LUA脚本,强烈推荐使用LUA脚本实现复杂逻辑 --- ### 124. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus相关产品推荐:peidianxiang.taobao.com Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。 Modbus比其他通信协议使用的更广泛的主要原因有: 公开发表并且无版权要求 易于部署和维护 对供应商来说,修改移动本地的比特或字节没有很多限制 MODBUS中文版预览及下载 MODBUS协议中文版下载 MODBUS英文版预览及下载 MODBUS协议英文版下载 --- ### 125. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是什么? Modbus协议,从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,和I2C、SPI类似,总线就意味着有主机,有从机,这些设备在同一条总线上。 Modbus支持单主机,多个从机,最多支持247个从机设备。关于Mod,因为这种协议最早被用在PLC控制器中,准确的说是Modicon公司的PLC控制器,这也是Mod-Bus名称的由来。 后来Modicon被施耐德(Schneider)收购,Modbus协议广泛应用在工业控制器、HMI和传感器上,逐渐被其他厂商所接受,成为了一种主流的通讯协议,用于和外围设备进行通讯。 Modbus网络体系 Modbus在7层OSI参考模型中属于第七层应用层,数据链路层有两种:基于标准串口协议和TCP协议,物理层可使用3线232、2线485、4线422,或光纤、网线、无线等多种传输介质。 ISO/OSI模型 Modbus协议是一种请求/应答方式的交互过程,主机主动发起通讯请求,从机响应主机的请求,从机在没有收到主机的请求时,不会主动发送数据,从机之间不会进行通讯。 就像是男生追女生一样,男生要主动出击,女生才会给你响应,不能等着女生主动搭讪你。 目前比较权威的Modbus官方标准文档有两个: modbus_application_protocol_specification_v1.1b3.pdf 基于Modbus协议的工业自动化网络规范 GB-T19582.1-2008.pdf 可以说90%的书籍和网络资料都是翻译自这两篇文档,文末获取标准文档下载方法。 4种数据类型 Modbus协议规定,进行读写操作的数据类型,按照读写属性和类型可分为以下4种: 离散量输入(Discretes Input  ):1位,只读 线圈(Coils):1位,读写 输入寄存器(Input Registers  ):16位,只读 保持寄存器(Holding Registers):16位,读写 Modbus数据类型 3种传输模式 1979年,Modicon 首先推出了串行Modbus标准,后来由于网络的普及,需要更高的传输速度,1997年制定了基于TCP网络的Modbus标准。 所以总的可分为两个传输模式:基于串行链路的和基于以太网TCP/IP的。但是我个人还是习惯分为3种传输模式: 基于串口的Modbus-RTU数据按照标准串口协议进行编码,是使用最广泛的一种Modbus协议,采用CRC-16_Modbus校验算法。 基于串口的Modbus-ASCII所有数据都是ASCII格式,一个字节的原始数据需要两个字符来表示,效率低,采用LRC校验算法。 基于网口的Modbus-TCPModbus-TCP基于TCP/IP协议,占用502端口,数据帧主要包括两部分:MBAP(报文头)+PDU(帧结构),数据块与串行链路是一致的。 所以当我们提及Modbus协议时,要确定是哪种模式:RTU、ASCII或TCP,3种模式区别还是很大的。 Modbus传输模式应用 有些设备支持多种Modbus模式,有些设备只支持其中一种,比如最常用的PLC S7-200只支持Modbus RTU协议,不支持Modbus ASCII协议,Modbus总线上所有的设备传输模式必须相同。 实际使用要根据设备使用手册来选择采用哪种模式。 3类功能码 Modbus功能码,是写在主机请求数据帧中的,决定主机进行读还是写操作,是读线圈、离散量还是寄存器,是写单个寄存器还是多个寄存器等等,决定主机请求什么类型的数据。 主要包括3类功能码:公共功能码、用户定义功能码和保留功能码 Modbus功能码 实际最常用的是公共功能码中的4个功能码:03/04/06/10 公共功能码 0x03:读多个保持寄存器 0x04:读输入寄存器 0x06:写单个保持寄存器 0x10:写多个保持寄存器 因为PLC主要控制的是继电器触点,所以在PLC上还会经常对线圈(Coils)进行读写。 这里需要特别注意的一点是:写保持寄存器,需要区分0x06写单个寄存器和0x10写多个寄存器,而读保持寄存器不区分读单个和读多个,当需要读单个保持寄存器时,也是使用0x03指令,指定读取数量为1。 数据帧格式 无论是3种传输模式中的哪一种,Modbus帧格式都是一样的: Modbus数据帧 主要包括: 地址域:1字节,即从机设备地址,通常1-247为有效地址,0为广播地址 功能码:1字节,表明主机请求数据的类型。 数据:N字节,包含寄存器地址和寄存器数据等。 差错校验:对数据进行冗余校验的结果,CRC或LRC 下面来详细介绍一下每种传输模式的数据帧格式。 Modbus-RTU数据帧 Modbus-RTU数据帧,帧长度最大为256字节,由以下4部分构成: 子节点地址:1字节,范围0-247 功能代码:1字节 数据块:0-252字节 CRC校验值:2字节,低8位在前 ModbusRTU数据帧格式 Modbus-RTU帧间隔,Modbus-RTU要求两个RTU报文帧间隔要大于3.5个字节时间: ModbusRTU帧间隔 且每个报文帧内字节间隔小于1.5个字节时间,否则会认为接收不完整。 ModbusRTU帧内字符间隔 Modbus-RTU采用循环冗余校验 (CRC - Cyclical Redundancy Checking) 算法对报文帧全部数据进行计算,得到的校验值附加在报文帧末尾,低位在前。CRC-16_Modbus计算方法可以参考:CRC-16_Modbus校验算法 实际请求/应答交互示例: 示例1:写单个寄存器。向01地址设备0x0105保持寄存器写入1个数据:0x0190 主机发送: 01 06 01 05 01 90 99 CB从机回复: 01 06 01 05 01 90 99 CB 01表示从机地址,06功能码表示写单个保持寄存器,0105表示寄存器地址,0190表示写入寄存器的数值,99CB为CRC校验值。可以看出,当写1个寄存器数据时,从机响应的数据帧和主机发送的数据帧完成一致。 示例2:写多个寄存器。向01地址设备0x0105、0x0106、0x0107地址保持寄存器,写入3个寄存器数据:0x1102, 0x0304, 0x0566 主机发送:01 10 01 05 00 03 06 11 02 03 04 05 66 4a 12从机回复:01 10 01 05 00 03 91 f5 同理,01从机地址,10功能码表示写多个保持寄存器,0105表示起始地址,0003表示写3个寄存器,06表示数据量为6个字节,1102/0304/0566分别表示写入3个寄存器的数值,4a12表示CRC校验数值。 可以看出,写多个寄存器时使用10功能码,从机回复数据也比较精简。 示例3:读单个寄存器。读01地址设备0x0105保持寄存器数据。 主机发送:01 03 01 05 00 01 95 f7从机回复:01 03 02 56 78 87 c6 03表示读多个寄存器,0105表示起始地址,0001表示读1个寄存器 02表示2个字节,56 78表示寄存器的数据。 示例4:读多个寄存器。读01地址设备0x0105、0x0106、0x0107地址保持寄存器,共3个寄存器数据。 主机发送:01 03 01 05 00 03 14 36从机回复:01 03 06 11 22 33 44 55 66 2a 18 03表示读多个寄存器,0105表示起始地址,0003表示读3个寄存器 06表示6个字节,11 22 33 44 55 66表示寄存器的数据。 Modbus-ASCII数据帧 Modbus-ASCII传输模式中,每个字节均以ASCII编码,实际报文中1个字节会以两个ASCII字符发送,因此这种模式比Modbus-RTU模式效率要低。 例如报文数据0x5B = "5" + "B" = 0X35 + 0X42。 数据帧格式如下: ModbusASCII报文帧 从ASCII报文帧可以看出,ASCII模式增加了帧起始(“:”)和帧结束标志(回车&换行),由于报文数据每个字节在ASCII模式下需要2个字符进行编码,为了保证ASCII模式和RTU模式在应用级兼容,ASCII模式数据块最大长度为252x2,所以可以计算出报文帧最大长度为1+2+2+2x252+2+2=513字符,报文帧内的字符间隔时间可以达1秒钟。 Modbus-ASCII模式校验方法采用的是纵向冗余校验 (LRC - Longitudinal Redundancy Checking) 算法,校验内容不包括帧起始和帧结束字符。 计算方法也比较简单,对校验内容进行累加和计算,忽略进位,并转换为二进制补码: 例如Modbus-ASCII模式,主机发送请求,向地址为1的从设备的0x405地址,写入数值0x1234,报文如下: :010604051234AA<CR><LF> 即: : 01 06 04 05 12 34 AA <CR><LF> 可以看到01表示设备地址,06表示写单个保持寄存器。地址为0x0405,数据为0x1234,LRC校验值为0xAA。实际进行校验的数据不包含帧头和帧尾。 0xAA = LRC(01, 06, 04, 05, 12, 34)。 LRC校验(纵向冗余校验) 手动LRC计算方法: 把原始数据两个字符组成一个字节,并进行二进制加法计算:01+06+04+05+12+34=0x56,计算二进制补码: 0x56 = 0101 0110  取反:1010 1001  加1: 1010 1010 = 0xAA或者:0x100-0x56 = 0xAA Modbus-TCP数据帧 Modbus-TCP基于4种报文类型: MODBUS 请求是客户机在网络上发送用来启动事务处理的报文 MODBUS 证实是在客户端接收的响应信息 MODBUS 指示是服务端接收的请求报文 MODBUS 响应是服务器发送的响应信息 Modbus-TCP报文帧: ModbusTCP报文帧 更多的细节内容,可以在国标《GB-T19582.1-2008 第3部分:Modbus协议在TCP/IP上的实现指南》查看。 两种请求模式 Modbus协议中主机可以以两种模式对从机设备发出请求:单播和广播。 单播模式 在单播模式下,从机地址必须唯一,地址范围1-247。主机以特定地址访问指定的某个从机,发出一个请求数据帧,这个数据帧功能可以是读取或写入数据,从机接收到并处理完成后,会回报一个应答数据帧,以表示读取或写入成功。 单播模式 广播模式 在广播模式下,主机向所有的从机发出请求数据帧,所有的从机都会处理这条命令,对于广播请求,所有的从机无需做出应答操作。一般地址0表示广播地址。 广播模式 但也有一些特殊的设备采用0xFE作为广播地址,以一款气体传感器数据手册为例,以0xFE作为广播地址,来进行设备地址修改: 某传感器广播地址 所以要以实际设备的使用手册为准。 Modbus地址规则 地址规则 Modbus扩展版本 Modbus 是使用异步传输的方式,速度较慢,应用上有其限制,尤其当两台 PLC 要互相交换资料,其传输资料量大,异步方式已经无法满足整体系统反应时间的要求。所以就有 Modbus Plus 出现,使用同步传输的技术,资料格式与 Modbus 一样,此协议是Modicon专有的,和Modbus不同,它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离设备,是一种采用边沿触发而不是电平触发的设备。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡。 官方标准文档下载 目前比较权威主要有以下2个标准文档: Modbus组织2012年4月发布的:modbus_application_protocol_specification_v1.1b3.pdf 国家标准《基于Modbus协议的工业自动化网络规范 GB-T19582.1-2008.pdf》,主要包括3部分 GB-T19582.1-2008第1部分:Modbus应用协议 GB-T19582.1-2008第2部分:Modbus协议在串行链路上的实现指南 GB-T19582.1-2008第3部分:Modbus协议在TCP/IP上的实现指南 --- ### 126. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在大家通读Modbus协议时,总是会碰到一些容易混淆的名词,从而导致对于协议的解读出现问题,在本文中,我们对于Modbus协议中可能会给大家造成困惑的名词作相关的解释。 1.功能码: 功能码在modbus协议用于表示信息帧的功能,常用的功能码有03,04,06,16等,其中03功能码的作用是读保持寄存器内容,04功能码的作用是读输入寄存器内容(输入寄存器和保持寄存器的区别看下文),06功能码的内容是预置单个保持寄存器,16功能码的内容则是预置多个保持寄存器。 2.输入寄存器和保持寄存器: 04功能码的作用就是读输入寄存器,而03功能码的作用则是读保持寄存器,很多人在看到这两个功能码的时候总是希望找到这两个功能码的区别,保持寄存器和输入寄存器到底是什么区别,modbus协议最开始是用来解决PLC的通信协议问题的,主要用于输入输出数字量信号以及模拟量信号,所谓的输入寄存器就是从模拟量信号输入引申出来的,即输入寄存器只能从模拟量信号输入端改变寄存器,而主机则不能通过下发指令改变输入寄存器的数据,而保持寄存器则是用于输出模拟量信号的,主机是可以改变寄存器数据,也就是说对于主机而言,输入寄存器是只读的,而保持寄存器是可以读写的,当主机用06,16功能码的指令去预置输入寄存器的时候,设备会返回一个代码为0x81的错误代码,即企图写只读寄存器。 3.Modbus中的数据地址格式: 在Modbus协议中,经常会出现类似于3xxxx,4xxxx寄存器,这个表示的是寄存器支持的数据类型。我们用列表来说明,还有Modbus数据地址格式是从0开始,比如以下一个寄存器40009,即表示保持寄存器,寄存器地址为00 08,类似的数据地址格式经常在组态软件以及PLC系统中用到。 映射地址使用的功能码地址类型存取方式描述0XXXX01,05,15离散输出读写每个卷表示单个开关位1XXXX02离散输入只读每个卷表示单个开关位2XXXX03,04,06,16浮点寄存器只读/读写两个连续16位寄存器表示一个浮点数3XXXX04输入寄存器只读每个寄存器表示一个16位无符号整数4XXXX03,06,16保持寄存器读写每个寄存器表示一个16位无符号整数5XXXX03,04,06,16ASCII字符读写每个寄存器表示两个ASCII码 4.Modbus RTU/ASCII/TCP: Modbus协议最开始是用于可编程逻辑控制器(PLC)之间的通讯,由于其具有的开放性,大量的用于现场智能仪表。Modbus协议有多个变种,其中最著名的是Modbus RTU/Modbus ASCII和Modbus TCP通信协议。其中RTU/ASCII协议是基于串行口通信,而TCP协议则是基于以太网通信。 5.Modbus错误代码表: Modbus有功能码、校验码、异常功能码和错误代码,其中异常功能码和错误代码非常容易混淆。一般来说异常功能码指的是某个功能码执行的时候出现的相应异常功能码,一般都是在功能码的基础上加上0x80,比如03功能码出现的异常码是0x83异常功能码,16功能码对应出现的异常功能码则是0x90,而错误代码则是表示出现错误的具体情况,比如寄存器地址不存在,不管是读还是写,如果该寄存器地址不存在的话,错误代码为02。 --- ### 127. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、ModBus RTU通讯协议与ModBus通讯协议有什么区别? ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。 ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。目前,Modbus有下列三种通信方式: 1.以太网,对应的通信模式是MODBUS TCP。 2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUS RTU或MODBUS ASCII。 3.高速令牌传递网络,对应的通信模式是Modbus PLUS。 二、关于MODBUS RTU通讯协议的提问? modbus 主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16或LRC两个字节)总共8个字节组成。其实VB中编程很简单从组建添加MSComm组建就行了,难的是校验, 三、modbus、rtu、modbusrtu分别是什么? modbus协议是工控行业的标准协议,前身为莫迪康所写,现已被施奈德收购。 而modbus分为两种协议:即串口协议(modbusrtu)和网口协议(modbus tcp)协议,一般的工控机只支持rs232或者RS485的串口模式,这个时候工控机的协议栈里就只有modbus RTU协议,当他从串口接收到数据时,会直接根据报文中的数据进行控制,如果需要用modbus TCP协议进行传输,则需要使用带有网口的PLC。 具体的帧格式如下: modbus RTU 地址域 功能码 数据 差错校验 modbus TCP 目的地址 协议id 长度 单元号 功能码 数据 简单的说 tcp是由RTU加工而来的,而RTU则是另外一种概念,不包含在modus协议内,是工控行业对监控设备的简称。 四、关于modbus_RTU协议主机发送的命令的一些问题 01 读保持线圈状态(Read coil status) 02 读输入线圈状态(Read input status) 03 读保持寄存器(Read holding register) 04 读输入寄存器(Read input register) 05 写单个线圈(Force single coil) 06 写单个寄存器(Preset single register) 15 写多个线圈(Force multiple coils) 16 写多个寄存器(Preset multiple registers) 这些都是什么意思 答:01 读取逻辑线圈组状态 02 读取离散量线圈组状态 03 读取一个或多个保持寄存器的二进制值 04 读取一个或多个输入寄存器的二进制值 05 改变逻辑线圈状态 06 改变单个寄存器的二进制值 15 改变多个寄存器的二进制值 16 指定多个操持寄存器的二进制值 五、OPC 转modbus RTU 方式 我现在有一个OPC服务器,里面很多tag,tag是AB里出来的,怎么将tag连到modbus? Profibus、Fielbus、Modbus、CC-link等等是各中PLC硬件支持的通讯协议,这个是各厂商的硬件属性一样.只是现在计算机组态软件都支持很多种协议的PLC.你理解反了。 Profibus、Fielbus、Modbus、CC-link这些协议,是一种通讯协议,一般不需要你去编程,就好象你使用计算机,你不需要编写IP协议一样,只是要遵循它。 遵循的意思就是,你必须按照该厂家所支持的协议在PLC或者DCS硬件组态的时候按照该通讯协议设置硬件.其实这个很简单. 这里简单指的是,你学编程,重点是编写执行控制的动作的程序,硬件通讯协议不需要你自己动手写。 六、什么是modbus rtu master? 就是选RTU模式,因为MODBUS分为ASCII模式和RTU模式,MASER就是设置为主站,一般为PLC端,变频器设为从站,还要注意主站和从站地址的设置。 七、Modbus rtu 为什么没有开始和结束标记? 由于Modbus rtu帧的每个字节是16进制数,数值范围在00~FF,若像ModbusASCII那样用02、03表示开始和结束标记,则与数值2、3发生冲突,无法判断其是标记还是数值,无法数据解包。 八、modbus tcp 到 rtu的转换? 请仔细查看帧格式: modbusRTU 地址域 功能码 数据 差错校验 modbusTCP 目的地址 协议id 长度 单元号 功能码 数据 写一个TCP转RTU的程序放到设备里做modbus网桥即可 九、MODBUS RTU通讯线被烧? 用万用表量一下出来的通讯线,电压不超过5V应该没问题,一般不会烧东西,接的时候区分正和负。很多产品B是正,量一下看看。 十、触摸屏modbus rtu怎么设置? 一般是通过宏指令自己编程实现,当然也有支持RTU的,在通讯类型菜单 十一、MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数? 浮点数保存的字节格式如下: 地址 +0 +1 +2 +3 内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 这里S 代表符号位,1是负,0是正 E 偏移127的幂,二进制阶码=(EEEEEEEE)-127。 M24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了较高的有效位数,提高了精度。零是一个特定值,幂是0 尾数也是0。 浮点数-12.5作为一个十六进制数0xC1480000保存在存储区中,这个值如下: 地址 +0 +1 +2 +3 内容0xC1 0x48 0x00 0x00 浮点数和十六进制等效保存值之间的转换相当简单。下面的例子说明上面的值-12.5如何转换。浮点保存值不是一个直接的格式,要转换为一个浮点数,位必须按上面的浮点数保存格式表 所列的那样分开,例如: 地址 +0 +1 +2 +3 格式 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 二进制11000001 01001000 00000000 00000000 十六进制 C1 48 00 00 从这个例子可以得到下面的信息: 符号位是1 表示一个负数 幂是二进制10000010或十进制130,130减去127是3,就是实际的幂。 尾数是后面的二进制数10010000000000000000000 在尾数的左边有一个省略的小数点和1,这个1在浮点数的保存中经常省略,加上一个1和小数点到尾数的开头,得到尾数值如下: 1.10010000000000000000000 接着,根据指数调整尾数.一个负的指数向左移动小数点.一个正的指数向右移动小数点.因为指数是3,尾数调整如下: 1100.10000000000000000000 结果是一个二进制浮点数,小数点左边的二进制数代表所处位置的2的幂,例如:1100表示 (1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。 小数点的右边也代表所处位置的2的幂,只是幂是负的。例如:.100...表示(1*2^(-1))+(0*2^(-2))+(0*2^(-2))...=0.5。 这些值的和是12.5。因为设置的符号位表示这数是负的,因此十六进制值0xC1480000表示-12.5。 十二、RS-485的设备,遵守MODBUS-RTU协议。怎样用的电脑读取信息? 用电脑的串口,接个485转换器,接到设备的485接口,再找个串口软件,根据设备资料上的寄存器地址发送modbus报文,modbus报文通过串口软件发送啊,报文格式:01 03 00 00 00 01 840A 读寄存器命令。 十三、vb modbus给modScan32 rtu发送数据应该怎么写? 确定两个软件哪个是主,哪个是从。然后再确定通讯协议是RTU、ASCII还是TCP。如果是TCP,就用socket控件。RTU\ASCII就用COM控件。然后给对应的口按照协议收发数并解析就可以了。 十四、ModBus RTU通讯协议与ModBus通讯协议有什么区别? modbus 协议包括了MODBUS RTU 十五、modbus rtu通讯协议 如何判断超时? 设置一个标志量用来表示是否超时;再用一个定时器,定时时长为发送3.5个字符的时间(当然为了保险时间可以长一些);在定时器中置超时标志;在串口中断中每收到一个字节时定时器清零;主程序中根据超时标志做相应处理。 十六、如何理解MODBUS协议RTU模式中的1.5和3.5字符间隔? 发送两帧数据之间要有一定的时间间隔,以保证接收方UART能够区分。这个时间间隔在MODBUS RTU模式中要求是1.5和3.5字符间隔,也即是传输1.5和3.5个字符的时间,它与设置的通信参数有关,计算为: 若串口通信参数设置为(注:开始位固定为1):数据位8,奇偶校验位1,停止位1,波特率9600bps,则传输一个字符(即1个字节)的时间为:(1+8+1+1)/9600=0.00114583s=1.1454583ms 1.5字符间隔=1.5x1.1454583ms=1.71818745ms 3.5字符间隔=3.5x1.1454583ms=4.00910405ms 十七、MODBUS RTU 测试软件? 推荐:modscan32 十八、MODBUS RTU协议,上位机与仪表通信,读写数据都正确,为什么仪表掉电,写入的参数又丢失了?怎么保存? 两种可能: 1.如果在仪表上设置参数掉电后都保存不了的话,基本可以确定是仪表问题; 2.有些仪表写入参数后还需要向固定的寄存器写入确认参数,为了保证写入参数真确,需要检查仪表通信部分说明书。 --- ### 128. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:Modbus RS-485 接线完整手册:从线缆选型到调试跑通 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:RS-485 接线是 Modbus 通信的第一道门槛,这道门槛挡住了无数新手——不是因为原理难,而是因为细节太多、容错太低。本文从 A/B 线辨认、拓扑结构、线材选择、屏蔽层接地、终端电阻与偏置电阻配置、防雷保护到调试排查全流程覆盖,每一条建议都来自现场事故,每一个参数都可以直接对着施工。关键词:RS-485接线、Modbus布线、终端电阻、偏置电阻、屏蔽接地、手拉手拓扑。 现场最常见的一幕:设备都装好了、参数也配了、程序也写了,通电一测——通信灯不闪。拿万用表一量 A/B 线,电压一直在 0.3V 和 1.8V 之间跳,根本没到 5V 的差分摆幅。再查线——A 和 B 接反了。半小时的活变成了三小时的现场排查。 RS-485 接线就是这么一位脾气古怪的老实人:规则其实很简单,但你不遵守它,它绝对不跟你废话。 一、认识 RS-485 的信号线:哪根是 A、哪根是 B RS-485 通信只靠两根差分信号线——习惯上标记为 A(或 D-)和 B(或 D+)。差分传输的意思是:不靠单根线的电压绝对值来传数据,而是比较 A 和 B 两根线之间的电压差。 当 B 线电压高于 A 线电压 200mV 以上(即 B - A > +200mV),表示逻辑 1。当 A 线电压高于 B 线电压 200mV 以上(即 B - A < -200mV),表示逻辑 0。如果 A 和 B 之间的电压差在 ±200mV 之间,这是不确定状态——接收端不知道这是 1 还是 0,可能会读到随机噪声。 这就是为什么你必须确认 A 和 B 没接反——反了之后,发送端的逻辑 1 在接收端变成逻辑 0,Modbus 帧的每个字节全乱套。 1.1 厂商的 A/B 标准:不是每个厂商都标「A」和「B」 这是 RS-485 接线最坑的地方——不同厂商对 A 和 B 的定义是反过来的。有的标「A = 正极(B+)、B = 负极(A-)」,有的标「A = D-、B = D+」。而且 Modbus 规范本身并没有强制 A/B 的命名方式,它只规定了差分信号的电气特性。 所以你手上拿到的说明书如果是英文版,可能标的是 D+、D-、Tx+、Tx-。如果是国产仪表,可能标 A、B、GND。怎么确认?用万用表。 1.2 用万用表确定 A/B 线的终极方法 在设备上电但空闲时(没有通信),用万用表直流电压档分别测量 A 对 GND 和 B 对 GND 的电压。 空闲状态下(没有数据传输),总线的默认状态用偏置电阻保持着:B 线电压应该高于 A 线。典型值:B 对地约 2.5V~3.5V,A 对地约 1.5V~2.5V。 如果测出来 A 比 B 高——那 A 和 B 的定义和你试的这台设备刚好反了,互换即通。 还有一个现场速判法:先把所有设备的 A 连到 A、B 连到 B、GND 连到 GND。通电后用万用表交流电压档测 A-B 之间的电压。如果通信正常,在数据传输瞬间你会看到电压明显波动(几百毫伏到几伏的摆幅)。如果一直没波动,要么没接终端电阻导致总线浮空,要么 A/B 接反导致所有从站同时认为接收到了错误帧。 二、拓扑结构:只能手拉手,拒绝一切分支 2.1 正确的拓扑 RS-485 总线必须采用「手拉手」菊花链拓扑——从一台设备出来,只接下一台设备,不分支: 主机 ─── [设备1] ─── [设备2] ─── [设备3] ─── ... ─── [设备N] │ │ │ │ │ └─ 120Ω ────┘ │ │ │ 继续按序串联 └───────── 120Ω ──┘ (末端终端电阻) 总线两端各接一个 120Ω 终端电阻,中间设备依次串联。 2.2 绝对禁止的连接方式 星形连接:所有设备从同一个集中点放射出来。 ┌── [设备1] 主机 ──[节点]── [设备2] └── [设备3] 树状分支:从总线中段分出一条分支挂设备。 这两种接法的问题是信号反射叠加——每个分支末端都是一次阻抗不连续,反射波和主信号叠加在一起,接收端看到的是一团噪声。设备越多、分支越长、波特率越高,星形连接的危害越大。 2.3 现场万不得已的分支对策 如果现场设备物理位置确实无法手拉手(比如一排设备装在一面墙上、另一面墙还有设备),不硬走星形——用一个 RS-485 分配器(也叫集线器)把主干分成多个独立网段,每个网段内部依然是标准的手拉手拓扑。RS-485 分配器本质上是多口中继器,每个端口有独立的驱动和接收电路,代替了简单的铜线分支。 三、线缆选型:一条线选错,全盘皆输 3.1 必须用屏蔽双绞线(RVSP) RS-485 依赖差分信号来抑制共模干扰——干扰信号在 A 和 B 两根线上的感应电压几乎相同,接收端做差分减法时自然抵消。双绞线能保证 A 和 B 两根线耦合的干扰尽可能相同,绞距越均匀、绞合越紧,抗干扰效果越好。 线缆类型是否可用原因RVSP(屏蔽双绞线,特性阻抗 120Ω)最佳选择专为 RS-485 设计RVV(普通护套平行线)不可用不是双绞,干扰耦合不平衡网线(Cat5e/6 UTP)不推荐虽然是双绞线但特性阻抗 100Ω,且无总屏蔽同轴电缆不可用单端信号,和差分完全不是一个概念普通 BV 线(单芯硬线)不可用没有双绞、没有差分,等同于两根天线 线径要求:0.75mm² 或 1.0mm²(约 AWG18-20)。0.5mm² 只能在 300 米以内的理想环境中跑,长距离或干扰强的现场必须用 0.75mm² 以上。 特性阻抗要求:120Ω。这和你终端电阻的 120Ω 匹配,不能随便拿 100Ω 的网线代替——阻抗不匹配意味着每一段电缆过渡处都会反射信号。 3.2 现场常见的野路子 「拿一根网线分出两芯当 485 线使」——网线是 UTP(非屏蔽),而且网线 8 芯内部四对双绞,你只取其中一对用,剩下的 6 芯浮空就是 6 根天线,给双绞线的干扰耦合引入了巨大的不平衡。如果你必须用网线(现场只有网线了),用小刀把不用的 6 芯全剪掉贴地,只留你用的那一对,再把这 2 芯外套根屏蔽层接地。这比直接用网线强,但依然比正规 RVSP 差。 「把 485 信号线和 220V 电源绑在一起穿同一根管」——变频器一次侧的 PWM 波形在电源线上激发的电磁干扰可以直接干翻 485 差分信号的 200mV 阈值。485 线路距离强电(电源线、变频器输出线)至少保持 30cm 平行距离,交叉时必须直角穿。 四、屏蔽层接地:单点还是双点? RS-485 采用的是低频差分信号(典型的波特率最高也就 115.2kbps),属于低频电路。低频电路的基本原则:单点接地。 4.1 规则:屏蔽层单点接地 屏蔽层只在总线的一端接大地。另一端悬空,不接任何东西。 为什么?如果两头都接地,两个地由于各自的接地电阻不同,会在屏蔽层中产生一个环路电流(地环路)。这个电流在屏蔽层上流动本身就是干扰源——它不仅不屏蔽,反而往信号线上耦合噪声。单点接地斩断了这个环路。 4.2 接哪一端? 优先在主站侧(PLC、上位机、网关侧)接地。理由:主站通常有更好的接地条件(标准配电柜、等电位接地排),现场设备侧接地条件差(设备外壳接了个不知道通不通的接地桩)。 如果主站侧本身是浮地系统(设备没有接地端子),可以把屏蔽层接到现场设备侧的防雷接地排上。关键是:只接一端。 4.3 超过 50 米怎么办 如果总线长度超过 50 米、现场电磁环境特别恶劣(旁边有变频器、大功率电机),单点接地可能不够——屏蔽层过长后,单点接地的效果会衰减。这时候采用 双端接地 + 串联电阻:屏蔽层的远端不是直接接大地,而是通过一个 100Ω ~ 1kΩ 的电阻接大地。电阻限制了地环路的电流,同时保持了屏蔽层两端的电位不至于差太多。 4.4 信号地(GND)的连接 许多 RS-485 设备除了 A、B 线还有 GND(信号地)端子。这个 GND 是否要接? 如果所有设备都在同一套电源系统上(同一个配电柜出来的 DC 24V),可以不接 GND——各设备的 GND 已经等电位了。 如果设备用独立电源(各自一个开关电源适配器),必须把所有设备的 GND 端子串起来(注意:是 GND 串在一起,不是接大地)。不同电源的 GND 之间可能有几伏甚至几十伏的共模电压差——如果这个差超出了 485 收发器的共模范围(典型 -7V~+12V),收发器会烧毁或者永远识别不了信号。GND 线的作用就是把所有设备的参考地拉到同一个电位上。 五、终端电阻:120Ω 的两个位置 5.1 终端电阻的作用 信号在传输线上的行为和水波在管道中类似。管道突然到尽头,水波会弹回来。RS-485 双绞线的特性阻抗约 120Ω,信号跑到线的末端如果突然遇到高阻抗(开路),能量无处消耗,就会反射回来。反射波叠加在原始信号上,形成振铃和过冲。 终端电阻在总线的两端各接一个 120Ω 电阻跨接在 A、B 线上,使线缆末端阻抗等于 120Ω——和线缆特性阻抗一致,信号到达末端时被电阻吸收能量,不反射。 5.2 接在哪里 只在总线的最两端设备上各接一个。中间设备不接。如果接了三个以上的终端电阻,总并联电阻会低于 120Ω,反而加重 485 驱动器的负载,信号幅值被拉低。 5.3 什么情况下需要考虑不接终端电阻 短距离(< 50 米)、低波特率(≤ 9600)、只有 2-3 台设备。此时信号反射的能量极小,不接终端电阻也能正常工作。但这需要实测确定——接了不会有副作用,是一种保险做法。 波特率 38400 以上或距离超过 100 米,终端电阻是必须的。 六、偏置电阻:防止空闲时的噪声 6.1 问题背景 RS-485 总线空闲时(没有设备在发送数据),A 和 B 线的状态是不确定的。如果此时总线是完全浮空的(只有终端电阻把 A 和 B 拉在一起),任何微小的电磁噪声都可能在 A-B 之间产生超过 ±200mV 的电压波动——接收端看到的就是未经请求的随机字节。这个现象叫「空闲噪声触发了通信中断」,表现为主站发了查询,从站没反应——因为从站的中断服务程序被空闲随机字节占满了 CPU。 6.2 偏置电阻的原理 在总线一端加上拉电阻(A 到 +3.3V/5V)和下拉电阻(B 到 GND),使得空闲时 B 线的电压自动高于 A 线 200mV 以上——总线默认处于确定的逻辑 1 状态(空闲态)。这组电阻叫偏置电阻(Fail-safe Bias Resistor)。 6.3 计算方法 标准 485 总线有 120Ω 终端电阻两个(分别接两端)。加上偏置电阻后,端接等效电路变成:上拉电阻 Rpu 接 5V → 120Ω 终端电阻 → 下拉电阻 Rpd 接 GND。 要求空闲时 B - A ≥ 200mV,计算: 取 Rpu = Rpd = 680Ω,电源 5V—— 空闲时 A 点电压 = 5V × (680Ω // 下端120Ω的一半) / (680Ω + 680Ω // R)... 简化公式:Rpu = Rpd ≈ 5V / (V_AB_min / Rterm) = 5 / (0.2 / 60) ≈ 1.5kΩ —— 这个计算太理想。实际工程上直接用 680Ω 或 560Ω 就行。常见方案:Rpu = Rpd = 680Ω,在总线一端接。 下表是常用偏置电阻值在 5V 供电下的空闲电压: 偏置电阻值 (Rpu = Rpd)空闲时 B - A 电压(约)适用场景1.5kΩ200mV临界值,环境干净可用1kΩ300mV一般推荐680Ω430mV有轻微干扰的环境560Ω530mV干扰强但别太小的底线470Ω640mV强干扰但再小会拉动电源 偏置电阻不宜过小——太小会把 485 驱动器的有效信号幅值拉低,而且偏置电流浪费太多。 市面上很多 RS-485 串口卡和转换器(如 USB 转 RS-485 模块)已经在电路板上内置了偏置电阻,这种情况下总线远端不用再加偏置——但要确认。用万用表断电测 A 对 VCC 和 B 对 GND 的电阻值,如果测到 680Ω~1.5kΩ 范围,说明有内置偏置。 七、防雷与过压保护 RS-485 通信线只要走出建筑物、在两栋楼之间跑,就必须考虑浪涌保护。RS-485 收发器的耐压通常在 ±12V~±15V 左右,一个近距离的雷击感应能带来几百伏到几千伏的瞬间电压——直接烧毁收发器芯片。 7.1 三级防护方案 标准的三级 RS-485 浪涌防护是: 第一级:A、B 线对保护地(PE)各接一个气体放电管(GDT),耐压 90V~150V,泄放大能量。 第二级:A、B 线对 PE 各接一个 TVS 瞬态抑制二极管(如 SMBJ6.5CA,击穿电压 6.5V),钳位剩余电压。 第三级:A、B 线各串联一个 PTC 自恢复保险丝(如 50mA-100mA 级),限制持续电流。 这个三级方案中,GDT 吃掉最大能量、TVS 吃掉剩余尖峰、PTC 限制持续电流。实际部署中,可以在总线的入口处(建筑物外墙穿管处)集中安装一个 RS-485 防雷模块,再把信号按正常接线接入室内设备。 7.2 防雷接地必须可靠 防雷器件的接地端必须低阻抗接入接地排。防雷接地排的接地电阻应 ≤ 4Ω。如果防雷器件地把浪涌电流导入了不合格的地——那浪涌电流通过大地的高阻抗会瞬间抬升整个「地的电位」,然后通过共地耦合把浪涌送回通信芯片,等于没防。 八、调试流程:从万用表到跑通 按这个顺序排查,是最有效的: 步骤一:断电检查 所有设备断电。用万用表电阻档测 A-B 之间的直流电阻。如果终端电阻接了 120Ω,应该在 60Ω~120Ω 之间(取决于其他设备的输入阻抗)。如果电阻是开路状态,要么线断了,要么终端电阻没接。 测 A 对地、B 对地的电阻——应该是高阻(几十 kΩ 以上)。如果测到短路或低阻,线缆有破损碰壳或设备端口击穿。 步骤二:上电检查空闲电压 所有设备上电,但主站不发送数据(或把主站拔掉)。用万用表直流电压档测: A 对 GND:应在 1.5V~2.5V 左右B 对 GND:应在 2.5V~3.5V 左右A-B 电压:B 应高于 A,差值在 200mV~600mV 左右 如果 A-B 电压接近 0V 或极小( B 电压),很可能是偏置电阻接反了或者 A/B 在设备端被反接。 步骤三:单从站通信测试 把总线上的从站一个一个加。先只接从站 01,主站发一个读保持寄存器的命令(功能码 03,读一个寄存器)。有回应→这台的接线和参数没错。没回应→检查从站地址、波特率、数据位/停止位/校验位的匹配。 很多新手以为「设备默认地址 1、9600、8N1」——但不同厂商的默认不一样。有的默认 1,有的默认 247。波特率可能是 4800、9600、19200、115200 中的任意一个。校验位可能是无校验(N)、偶校验(E)、奇校验(O)。说明书上写的是「默认 9600,8N1」,但出厂测试时工程师可能改成了 19200——这种坑没有捷径,只能对着说明书一个个参数检查和同步。 步骤四:全设备联调 单台跑通后,加下一台。加一台测一台。不要一次性把所有设备挂上去再找问题——RS-485 的故障往往是某一台设备故障把整条总线拖垮了,但如果十六台全挂着,你根本不知道是谁干的。 如果加到某台后通信突然出问题,先把它拔掉看总线是否恢复。恢复→这台设备有问题(端口损坏、波特率不匹配、地址冲突)。不恢复→检查前面几台的接线、终端电阻、供电。 步骤五:示波器看波形 如果万用表没查出问题但还是通信不正常,示波器是最终武器。将示波器探头(差分探头最好,没有的话用两个单端探头做 A-B 运算)跨接在 A/B 线上,触发主站发送一帧 Modbus 命令。 正常波形应该看到:空闲时 B 高于 A(逻辑 1)。开始发送时出现清晰的方波——低电平(B A)是逻辑 1。方波的上升/下降沿应该干净利落,没有明显的过冲和振铃。帧间隙(3.5 字符时间)在示波器上是一段明显的空闲高电平区域。 如果看到严重的振铃(方波顶部有多条波浪线),终端电阻选值不对或者没接。如果空闲时电压一直在抖动且幅度超过 ±200mV,偏置不够或电缆屏蔽未接地。如果 A-B 电压总是比正常低不少(比如摆幅只有 1V 而不是 3-5V),驱动器负载过重(终端电阻并联过多、设备数量超出芯片驱动能力、或某个设备端口坏了)。 九、常见故障快速排查 现象最可能的原因检查方法所有设备都不通信A/B 线接反、总线开路、无偏置测空闲电压、测电阻某一路正常,某路不正常不正常的设备波特率/地址/校验不匹配单台测试通信时断时续终端电阻缺失或接触不良、总线过长示波器看振铃偶尔收到乱码屏蔽未接地、近强干扰源、偏置不足测环境、查屏蔽新加设备后全局故障新设备端口损坏或 A/B 短路逐个隔离空闲时收到随机数据缺少偏置电阻测空闲电压、加偏置波特率低时正常、高时不行线缆质量差或距离超限降低波特率或换线 十、施工检查清单 接线完工后,逐项对一遍: [ ] 拓扑是手拉手菊花链,没有星形或分支[ ] 总线两端各接一个 120Ω 终端电阻[ ] 线缆是屏蔽双绞线(RVSP),线径 ≥ 0.75mm²[ ] 不需要的网线芯已处理(不会浮空当天线)[ ] 485 线路距离强电 ≥ 30cm,交叉时垂直穿过[ ] 屏蔽层单点接地(优先主站侧)[ ] 所有非共源设备的 GND 线已串联[ ] 如果穿过室外,已安装防雷模块并可靠接地[ ] 偏置电阻已在总线上的一点配置(或确认转换器内置)[ ] 所有设备的 A 均接 A,B 均接 B,GND 均接 GND[ ] 各设备波特率/地址/校验位已核实并记录[ ] 能单点跑通,能全点跑通 这份清单每一条都是工控工程师在现场花了代价换回来的教训。接线不靠直觉和运气——靠一步一步验证。 有问题再聊。 --- ### 129. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ModbusTCP协议分析 ModbusTCP与ModbusUDP的报文格式是一样的,它们之间的区别其实就是TCP与UDP的区别,因此下面就针对ModbusTCP的协议进行分析,ModbusTCP与ModbusRtu(ModbusASCII)之间的区别如下图: 从上图可以看出,ModbusTCP在Modbus串行通信的基础上,去除了校验(由于TCP本身就带有校验和)和设备地址(ModbusTCP弱化了设备地址,用IP地址来取代),再加上MBAP报文头(占7 bytes),下面针对MBAP进行分析说明: 域长度说明客户机服务器事务处理标识符2字节Modbus请求/响应事务处理的标识客户机启动复制响应协议标识符2字节0=Modbus协议客户机启动复制响应长度2字节长度之后的字节总数客户机启动服务器启动单元标识符1字节串行链路或其它总线的从站识别客户端启动复制响应 下面针对具体报文进行分析,Modbus协议在以太网链路上的报文格式如下所示: 事务处理标识符协议标识符长度单元标识符功能码数据2 bytes2 bytes2 bytes1 byte1 byteN bytes 有了以上理论基础之后,下面针对各个功能码进行详细分析: 读取输出线圈 发送报文格式如下: 发送报文含义:读取服务器1号从站输出线圈,起始地址为0x13=19,对应地址为00020,线圈数量为0x1B=27,即读取1号从站输出线圈,地址从00020-00046,共27个线圈的状态值。 这里值得注意一下,协议中的起始地址指的是索引,后面的地址指的是具体地址,对于任意一个存储区,索引都是从0开始的,但是对应的具体地址,与存储区是相关的,比如输出线圈,0对应00001;输入线圈,0对应10001;输入寄存器,0对应30001;保持寄存器,0对应40001。 返回报文格式如下: 返回报文含义:返回服务器1号从站输出线圈00020-00046,共27个线圈的状态值,返回字节数为4个,分别为CD 6B B2 05。 CD=1100 1101 对应 00020-00027 6B=0110 1011 对应 00028-00035 B2=1011 0010 对应 00036-00043 05=0000 0101 对应 00044-00046 读取输入线圈 发送报文格式如下: 发送报文含义:读取服务器1号从站输入线圈,起始地址为0xC4=196,对应地址为10197,线圈数量为0x1D=29,即读取1号从站输入线圈,地址从10197-10225,共29个线圈的状态值。 返回报文格式如下: 返回报文含义:返回服务器1号从站输入线圈10197-10225,共29个线圈的状态值,返回字节数为4个,分别为CD 6B B2 05。 CD=1100 1101 对应 10197-10204 6B=0110 1011 对应 10205-10212 B2=1011 0010 对应 10213-10220 05=0000 0101 对应 10221-10225 读取保持寄存器 发送报文格式如下: 发送报文含义:读取服务器1号从站保持寄存器,起始地址为0x6B=107,对应地址为40108,寄存器数量为0x02=2,即读取1号从站保持寄存器,地址从40108-40109,共2个寄存器的数值。 返回报文格式如下: 返回报文含义:返回服务器1号从站保持寄存器40108-40109,共2个寄存器的数值,返回字节数为4个,分别为02 2B 01 06,40108对应数值为0x022B,40109对应数值为0x0106。 读取输入寄存器 发送报文格式如下: 发送报文含义:读取服务器1号从站输入寄存器,起始地址为0x6B=107,对应地址为30108,寄存器数量为0x02=2,即读取1号从站保持寄存器,地址从30108-30109,共2个寄存器的数值。 返回报文格式如下: 返回报文含义:返回服务器1号从站输入寄存器30108-30109,共2个寄存器的数值,返回字节数为4个,分别为02 2B 01 06,30108对应数值为0x022B,30109对应数值为0x0106。 预置单线圈 发送报文格式如下: 发送报文含义:预置服务器1号从站单个线圈的值,线圈地址为0x00AC=172,对应地址为00173,断通标志0xFF00表示置位,0x000表示复位,即置位1号从站输出线圈00173。 返回报文格式如下: 返回报文含义:预置单输出线圈原报文返回。 预置单寄存器 发送报文格式如下: 发送报文含义:预置服务器1号从站单个保持寄存器的值,寄存器地址为0x0087=135,对应地址为40136,写入值为0x039E,即预置1号从站保持寄存器40136值为0x039E。 返回报文格式如下: 返回报文含义:预置单保持寄存器原报文返回。 预置多线圈 发送报文格式如下: 发送报文含义:预置服务器1号从站多个线圈的值,线圈地址为0x0013=19,对应地址为00020,线圈数为0x0A=10,写入值为0xCD00,即预置1号从站线圈00020-00027=0xCD=1100 1101,00028-00029=0x00=0000 0000。 返回报文格式如下: 返回报文含义:预置多输出线圈返回报文是在原报文基础上除去字节数及具体字节后返回。 预置多寄存器 发送报文格式如下: 发送报文含义:预置服务器1号从站多个寄存器的值,寄存器地址为0x0087=135,起始地址为40136,寄存器数量为0x02=2,结束地址为40137,写入值为0xCD00和0x0A10,即预置1号从站寄存器40136=0x0105,40137=0x0A10。 返回报文格式如下: 返回报文含义:预置多保持寄存器返回报文是在原报文基础上除去字节数及具体字节后返回。 Modbus技术QQ交流群 --- ### 130. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus RTU和Modbus TCP/IP两个协议的本质都是MODBUS协议,都是靠MODBUS寄存器地址来交换数据;但所用的硬件接口不一样,Modbus RTU一般采用串口RS232C或RS485/422,而Modbus TCP一般采用以太网口。 Modbus协议和Modbus TCP/IP协议区别为:作用不同、传输不同、应用不同。 一、作用不同 1、Modbus RTU协议:Modbus RTU协议可以使控制器之间,以及控制器由网络和其它设备之间进行通信。 2、Modbus TCP/IP协议:Modbus TCP/IP协议提供传输层与网络层之间的服务。 二、传输不同 1、Modbus RTU协议:Modbus RTU协议传输距离短、速度慢,导致应用受到局限。 2、Modbus TCP/IP协议:Modbus TCP/IP协议传输距离远、传输速度快,使得应用范围广泛。 三、应用不同 1、Modbus RTU协议:Modbus RTU协议主要应用于电气自动化和过程控制,一般采用RS-232或RS-485的通信接口。 2、Modbus TCP/IP协议:Modbus TCP/IP协议主要应用领域lnternet或lntranet中。 --- ### 131. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MODBUS总线控系统的技术特征MODBUS通讯协议是一种工业现场总线通讯协议,它定义的是一种设备控制器可以识别和使用的信息帧结构,独立于物理层介质,可以承载于多种网络类型中。 MODBUS协议把通信参与者规定为“主站”(Master)和“从站”(Slave),数据和信息的通信遵从主/从模式,当它应用于标准MODBUS网络时,信息被直接传送。 MODBUS总线网络中的各个智能设备通过异步串行总线连接起来,只允许一个控制器作为主站,其余智能设备作为从站。 采用命令/应答的通信方式,主站发出请求,从站应答请求并送回数据或状态信息,从站不能够自己发送信息。 MODBUS协议定义的各种信息帧格式,描述了主站控制器访问从站设备的过程,规定从站怎样做出应答响应,以及检查和报告传输错误等。网络中的每个从设备都必须分配给一个唯一的地址,只有符合地址要求的从设备才会响应主设备发出的命令。 由于MODBUS总线系统开发成本低,简单易用,并且现在已有很多工控器、PLC、变频器、显示屏等都具有MODBUS通信接口,所以它已经成为一种公认的通信标准。 通过MODBUS总线,可以很方便地将不同厂商生产的控制设备连成工业网络,进行集中监控。 MODBUS最初为PLC通信而设计,它通过24种总线命令实现PLC与外界的信息交换。这些总线命令对应的通信功能主要包括AI/AO、DI/DO的数据传送。 但不是很多MODBUS设备的控制只使用其中的几条命令,对其余命令不做反应。 MODBUS通信格式 MODBUS协议定义了两种传输模式,即RTU(Remote TerminalUnit)和ASCII。 在RTU模式中,1字节的信息作为一个8位字符被发送,而在ASCII模式中则作为两个ASCII字符被发送,如发送字符“20”时,采用RTU模式时为“00100000”,然而采用ASCII模式则成为“00110010”+“00110000”(ASCII字符的“2”和“0”)。 可见,发送同样的数据时,RTU模式的效率大约为ASCII模式的两倍。 一般来说,数据量少而且主要是文本时采用ASCII;通信数据量大而且是二进制数值时,多采用RTU模式。主站一次可向一个或所有从站发送通信请求(或指令),主设备通过消息帧的地址域来选通从设备。 主站发送的消息帧的内容和顺序为:从站地址、功能码、数据域(数据起始地址、数据量、数据内容)、CRC校验码;从站应答的信息内容和顺序与主站信息帧基本相同。 MODBUS除了定义通信功能码之外,同时还定义了出错码,标志出错信息。主站接收到错误码后,根据错误的原因采取相应的措施。从站应答的数据内容依据功能码进行响应,例如功能代码03要求读取从站设备中保持寄存器的内容。 CRC校验的实现 MODBUS通信的RTU模式中,规定信息帧的最后两个字节用于传递CRC(Cyclic RedundancyCheck,循环冗余校验)码。 发送方将信息帧中地址域、功能码、数据域的所有字节按规定的方式进行位移并进行XOR(异或)计算,即可得到2字节的CRC码,并把包含CRC校验码的信息帧作为一连续的流进行传输。 接收方在收到该信息帧时按同样的方式进行计算,并将结果同收到的CRC码的双字节比较,如果一致就认为通信正确,否则认为通信有误,从站将发送CRC错误应答。RTU模式一般采用CRC-16冗余校验方法,CRC-16的校验码为16位(2字节),其中低字节在前,高字节在后。 实现CRC校验有两种方法:根据CRC校验的定义公式进行计算,或者在程序中建立CRC校验值表。 在程序中使用前者更容易实现,这里需要使用CRC生成多项式X16+X15+X2+1。 该多项式对应的码组系数为18005H(16进制),去除最高位,对应的16位余数为8005H,即为CRC-16常数。 CRC-16校验过程如下: 将CRC寄存器的每一位预置为1;把该寄存器值与8bit的信息帧数据进行异或,结果存于该寄存器;对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与CRC-16常数进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8bit数据处理完毕,用此时寄存器的值与下一个8bit数据异或并进行如前一样的8次移位。 所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。CRC添加到消息中时,先加入低字节,然后高字节。 链路特征 MODBUS标准的物理层可以采用RS-232串行通信方式,但在长距离通信中常采用RS-422或RS-485代替。在多点通信情况下只采用RS-485方式,所以RTU模式下的MODBUS系统采用屏蔽双绞线,通信距离可达1000m。一条总线上最多可配置31个从站设备。 传输线上的信息交换是半双工的,即同时只能有一台设备允许发送信息,主站在发送下一条指令之前等待从站回应,从而避免了线路的冲突。RTU模式的传输格式是1个数据位,2个停止位,没有奇偶校验位。通信数据安全由控制参数CRC-16码保证。RTU接收设备依靠接收字符间经过的时间判断一帧的开始,如果经过3个半的字符时间后仍然没有新的字符或者没有完成帧,接收设备就会放弃该帧,并设下一个字符为新一帧的开始。 --- ### 132. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus主站和从站区别为:发出指令不同、唯一性不同、对接不同。 一、发出指令不同 1、Modbus主站:Modbus主站可以主动发出指令。 2、Modbus从站:Modbus从站不会主动发出指令。 二、唯一性不同 1、Modbus主站:Modbus主站具有唯一性。 2、Modbus从站:Modbus从站不具有唯一性,可以有多个。 三、对接不同 1、Modbus主站:Modbus主站可以对接多个Modbus从站。 2、Modbus从站:Modbus从站职能对接一个Modbus主站。 总结:主站可以在modbus总线上发布查询命令,在此总线上主站是唯一的。从站可以有多个,它时刻监视总线的报文 ,根据报文响应主站的命令;从站不能发布查询命令,只能响应。 Modbus技术交流QQ群 --- ### 133. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ModBus是一种协议,可以理解成一种语言。 比如小程说的是汉语,小李说的是英语,如果小程和小李路上碰见了,那小程说了一堆,小李啥也听不懂。所以如果小程和小李想要交流沟通,就弄清楚对方说什么话,首先他俩就得使用同一种语言。(为什么要使用RTU串口服务器?) 现在小程和小李现在都学会汉语了,准备沟通了,他俩面对面说话沟通、可以打字微信聊天沟通; 说话沟通就可以理解成RTU通讯(屏蔽双绞线);打字聊天就可以理解成TCP通讯(网线)。他俩沟通的语言没有发生变化,仍然是汉语,只是沟通的方式变化了。 沟通方式变化了,一个是说,一个是写,反应到ModBus协议就是一个是ModBus_RTU,另一个是ModBus_TCP,两种接线也不一样。RTU就是串口接线,比如RS-485、RS-232、RS-422,用屏蔽双绞线通过手拉手的方式进行连接;TCP就是RJ45以太网接口,就是水晶头网线。 (二)模式举个例子:小程和4个小朋友准备用汉语交流说话。 1、小程和A说话,小程只有问了A,A听到后 才能去 回答 小程。 如果小明不问,A就不会回答。 这种模式就叫做“半双工”, 问了才能答,不问就不回答 。(什么叫半双工模式) 2、 小程准备挨个问A、B、C、D,4个小朋友一些问题,小明就是主站,ABCD就是从站。ABCD4个小朋友挨个进行编号,A就是1,B就是2,C就是3,D就是4,这1 2 3 4就是从站的地址。(什么是主站,什么是从站,什么是Modbus地址) 3、小程问了A,A开始回答,等A说完了,小程开始问B。A与B的间隔,这个就是“轮询间隔”。如果A还没说完,小程就是开始问B,那A说的话就听不完,数据就不完整。(什么是轮询间隔?) 4、小程问了A,他俩说话速度都特别快,这个说话的速度就是波特率,说的快了,小明就得离得A近点,要不就听不清楚;说的慢点,就可以离得远点。波特率9600传输速度就比19200传输速度慢,但是传输距离长。 (什么是波特率?为什么波特率越低,传输距离越远?) --- ### 134. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:Modbus 网关与串口服务器的区别与选型 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:串口服务器、Modbus 网关和边缘计算网关常被混为一谈,但实际上它们在协议处理深度、数据采集模式和工程定位上有本质区别。本文从设备本质、协议层级、连接管理和数据流程四个维度拆解三者的差异,给出选型决策框架和三个典型场景的配置方案。关键词:串口服务器、Modbus 网关、边缘计算网关、协议转换、RS-485 转以太网、物联网网关。 有个挺典型的对话: 「老板,现场 8 台 Modbus RTU 仪表要接云端,买了台串口服务器够用吗?」 「够。透传就行,服务器那边解析协议。」 三个月后,服务器因为每 500ms 轮询 8 台仪表,CPU 跑到 90%。再后来增加 2 台设备,数据直接开始丢了。一查——串口服务器的 TCP 连接被高频小包打得喘不过气。 换了台 Modbus 网关,把轮询逻辑下沉到网关侧本地执行,服务器只定时拉取缓存数据。CPU 从 90% 降到 15%,通信丢包消失。 这个故事里串口服务器没做错什么——它认真透传了每一个字节。问题是它不理解自己在传什么。Modbus 网关理解协议语义,所以能做串口服务器做不了的事。下面拆开来讲清楚。 一、三层设备的本质定位 先放下「串口服务器 vs Modbus 网关」这个二元对立——实际上应该区分三个层次: 设备类型协议处理深度典型硬件核心能力串口服务器物理层+传输层RS-232/485 ↔ TCP/UDP透明传输,不解析协议内容Modbus 网关物理层+传输层+Modbus 应用层RTU/ASCII ↔ TCP + 主/从站模式识别功能码、地址映射、缓存边缘计算网关全栈+边缘处理多协议+规则引擎+本地数据库协议转换、数据清洗、断网续传 串口服务器是「邮差」,包裹里写的什么它不管,负责从 A 点送到 B 点。Modbus 网关是「分拣中心」,它拆开包裹看地址和功能码,决定送给谁、给不给、要不要缓存。边缘计算网关是「本地调度台」——它不只是转发,还能判断「这个温度值异常,先本地报警,再上报」。 二、串口服务器:透明传输的全部 2.1 工作原理 串口服务器的核心功能用一句话说完:把 RS-232/RS-485 串口上的每一个字节,原封不动地搬运到 TCP 或 UDP 网络包中,反之亦然。它不关心这些字节是 Modbus RTU 帧、ASCII 命令还是自定义二进制协议。 数据流路径: 串口设备 → RS-485 总线 → 串口服务器(串口↔以太网封装) → TCP/UDP 网络 → 服务器 封装方式通常有三种: TCP Server 模式:串口服务器监听一个 TCP 端口,远程主机作为 Client 主动连接。连接建立后,双方进行双向透传。 TCP Client 模式:串口服务器主动连接远程服务器的指定 IP 和端口。4G DTU 和大多数无公网 IP 的现场设备都走这个模式——服务器端必须有固定公网 IP 和开放端口。 UDP 模式:串口服务器将串口数据封装为 UDP 数据报发送到指定远端 IP 和端口,同时接收远端发来的 UDP 数据报。UDP 没有连接管理开销,但如果丢包也不会有任何重传机制——适合同一 LAN 内的非关键数据传输。 2.2 物理规格 串口服务器的硬件差异主要在串口数量和物理接口类型: 单串口型:1 路 RS-485 或 1 路 RS-232,适合单台设备联网。多串口型:2 路、4 路、8 路甚至 16 路 RS-232/RS-485/RS-422 混合接入,各串口独立工作,互不影响。WiFi 型:串口转 WiFi,支持 AP(设备自建热点)、STA(连入现有 WiFi)和 AP+STA 混合模式。宽压/工规:支持 DC 9-48V 宽电压、-35°C 到 75°C 工作温度、IP30 以上防护等级。 选型时关注一个关键指标:透传延迟。便宜的串口服务器内部用了几层软件缓冲,端到端延迟可能到 100-200ms。对于 Modbus 主站的响应超时而言,200ms 的额外延迟意味着你损失了至少 200ms 的轮询窗口。工业级的串口服务器端到端延迟应在 10-50ms 范围内。 2.3 串口服务器的边界 串口服务器做不了的事: 不知道一个 Modbus RTU 帧从哪开始、到哪结束(它不做 3.5 字符间隔判断)不识别从站地址,不能按地址分发数据给不同 TCP 客户端不验证 CRC/LRC 校验——错误的帧也会照传不能主动发起 Modbus 查询不能做轮询,服务器必须自己管理所有从站的读写时序 三、Modbus 网关:协议感知的枢纽 3.1 工作原理 Modbus 网关在串口服务器的基础上增加了一层协议引擎。它能识别 Modbus RTU/ASCII/TCP 报文的结构——地址码、功能码、寄存器地址、数据区和 CRC/LRC,并据此做出智能决策。 典型的功能模式: 模式一:透明转换(从站模式 / Slave 模式) 这是网关的最基础模式,行为类似串口服务器,但多了一步:将 Modbus RTU/ASCII 帧剥去 CRC/LRC 校验、加上 MBAP 报文头,转换为 Modbus TCP 帧发给服务器。对服务器侧而言,网关表现为一个 Modbus TCP Server。反过来,服务器发来 Modbus TCP 请求,网关去掉 MBAP 头、计算并附加 CRC,转为 RTU/ASCII 帧下发给串口从站。 SCADA/上位机(TCP Client) │ Modbus TCP 请求 ▼ Modbus 网关(TCP Server → RTU Master 转发) │ Modbus RTU 请求 + CRC ▼ RS-485 总线 → 从站 01, 02, 03... 模式二:主动轮询 + 缓存(主机模式 / Master 模式) 这是 Modbus 网关区别于串口服务器的核心功能。网关作为 Modbus RTU Master,根据内建的轮询表,定时主动查询串口上的从站设备,将返回的数据存入本地缓存。网络侧的服务器不需要自己管理轮询——直接向网关的缓存区读取最新数据即可。 好处: 多个上位机 / 云平台可以同时读取同一批寄存器数据,而不会抢占 RS-485 总线轮询频率可控,网关负责管理 3.5 字符帧间隔、超时重试、CRC 校验网络侧重试不会干扰串口侧通信——服务器超时重读时,网关直接从缓存返回数据 模式三:主动上报(Publish 模式) 网关按预设规则(定时、数据变化、阈值触发)主动将寄存器数据推送到服务器。这个模式下,服务器不需要轮询——这在 MQTT 接入场景中特别实用,网关作为 MQTT 客户端,将数据主动 PUBLISH 到 Broker 的指定 Topic。 3.2 缓存存储机制 Modbus 网关的缓存是在内存中维护一张寄存器映射表。配置时,管理员定义一系列「采集点」: 采集点 1:从站地址 01,功能码 03,起始地址 0000,长度 4,周期 1s 采集点 2:从站地址 02,功能码 04,起始地址 0000,长度 2,周期 5s ... 网关按各自的周期轮询这些采集点,将数据刷新到内部缓存区。多个 TCP 客户端同时读取时,网关直接返回缓存数据,不触发串口通信。采集周期越短,数据越实时,但 RS-485 总线负载也越高——需要在实时性和总线容量之间找平衡。 3.3 协议转换能力 典型的 Modbus 网关支持的协议转换路径: Modbus RTU ←→ Modbus TCP Modbus ASCII ←→ Modbus TCP Modbus RTU ←→ Modbus RTU(跨网段路由) Modbus TCP ←→ MQTT(部分高级网关) 注意:只有从一种 Modbus 模式到另一种 Modbus 模式的转换才是「标准 Modbus 网关」的范畴。一旦网关能转换 Modbus ↔ MQTT / HTTP / OPC UA / Profinet 等非 Modbus 协议,它实际上已经跨入了「协议转换器」或「边缘计算网关」的领域。 四、边缘计算网关:面向 IoT 的完整平台 4.1 超越协议转发 边缘计算网关是串口服务器和 Modbus 网关的「完全体进化版」。它不仅完成协议转换,还提供本地数据处理和决策能力。核心能力包括: 多协议同时接入:一条 RS-485 总线上既有 Modbus RTU 设备又有 DL/T645 电表,网关同时解析两种协议,统一转为 MQTT/HTTP 上传本地规则引擎:IF 温度 > 80°C THEN 本地继电器断开 + 平台告警,不需要依赖云端决策数据预处理:均值滤波、变化率计算、单位换算(如原始值 ×0.1 = 实际温度),在网关侧完成断网续传:4G/WiFi 断网时,数据缓存到本地 Flash/SD 卡;网络恢复后自动补传边缘存储:本地 SQLite / TSDB,支持 7-30 天的历史数据查询 4.2 和 Modbus 网关的本质区别 很多人以为「我的网关支持了 MQTT 上传,就算边缘计算网关」。其实支持 MQTT 透传不算边缘计算——本质还是透传,只是换了个协议封装。 真正的边缘计算网关要做数据模型转换:把一串 Modbus 寄存器数据(01 03 04 00 10 00 20 00 30)解析为结构化的 JSON 数据({"temperature": 16.0, "humidity": 32.0, "pressure": 48.0}),再推送到云平台。这个过程涉及寄存器地址到物理量的映射、单位换算、数据类型转换、数据有效性校验——不是简单的「把 Modbus 帧塞进 MQTT 消息里」。 五、操作模式的工程对比 从工程部署角度看,三种设备在网络中的拓扑角色不同: 维度串口服务器Modbus 网关边缘计算网关对服务器要求高(服务器轮询)低(读网关缓存)最低(只收处理结果)串口轮询执行者服务器(远程轮询)网关(本地轮询)网关(本地轮询 + 预处理)TCP 连接数1-8(受限于硬件)8-32+取决于硬件配置串口设备数量不限制(仅透传)建议 ≤ 32 / 路建议 ≤ 32 / 路多主站支持不支持(串口独占)支持(读缓存不触发串口)支持离线工作不支持不支持支持(断网续传)计算能力零有限(协议解析)有(数据处理 + 规则引擎)安装复杂度低中高典型价格100-500 元300-1500 元800-5000+ 元 六、选型决策:什么时候用哪个 6.1 用串口服务器的场景 总线上只有 1-2 台 Modbus 设备,轮询逻辑简单,服务器侧有成熟的 Modbus 驱动走的不是 Modbus 协议(自定义二进制协议、厂家私有协议),不需要协议解析纯局域网内使用,网络延迟稳定,服务器处理能力充足预算紧张,几百块钱搞定 6.2 用 Modbus 网关的场景 4+ 台 Modbus RTU 设备需要通过一个 IP 接入多个上位机 / 工程 PC 需要同时访问同一批设备需要减少服务器侧的轮询压力,把 Modbus 查询下沉到现场侧远程接入(4G/跨网段),网络延迟高,超时重试不应跨越公网需要主动上报模式(定时推送或变化触发推送) 关键判断标准:如果服务器需要部署一个定时轮询程序来管理 RS-485 从站,而网关可以代劳——那就用 Modbus 网关。 6.3 用边缘计算网关的场景 现场接入多种协议(Modbus + DL/T645 + M-Bus + 自定义协议),需要统一转换为标准 IoT 协议需要本地实时决策(温度过高立即断开设备,不能等服务器的 500ms 轮询周期)现场网络不稳定(4G 信号差、WiFi 频断),需要断网缓存和数据续传数据需要预处理(去噪、补偿、格式转换)再上传需要边缘侧的告警推送和本地人机交互(HMI 屏 / 指示灯联动) 一句话总结: 只要透传 → 串口服务器管理 Modbus 设备 → Modbus 网关打造本地智能节点 → 边缘计算网关 七、典型工程方案示例 方案一:小规模农业大棚(4 台传感器 + 1 台 PLC) 现场:4 台温湿度传感器(RS-485 Modbus RTU)+ 1 台 PLC 通信:局域网 WiFi,服务器在 50 米外的值班室 设备:串口服务器(WiFi 型,如 USR-W610) 架构:传感器 → RS-485 总线 → 串口服务器 → WiFi → 局域网 → 服务器(跑 Modbus TCP Master 驱动) 理由:设备少、局域网延迟低、预算低 方案二:泵站远程监控(8 台变频器 + 电表) 现场:8 台变频器(RS-485 Modbus RTU)+ 3 台电力仪表 通信:4G,服务器在云端 设备:Modbus 网关(4G 型,如 USR-G780) 架构:变频器+仪表 → RS-485 总线 → Modbus 网关(主机模式,1s 轮询缓存) → 4G → 云服务器(MQTT Broker,订阅网关缓存数据) 轮询表: 采集点1:站01, 03码, 地址0x1000, 长度8, 周期1s (变频器运行参数) 采集点2:站02, 03码, 地址0x2000, 长度4, 周期1s (电表电压电流) 采集点3:站01, 03码, 地址0x1100, 长度4, 周期10s (变频器告警记录) 理由:设备多、远程 4G 延迟高、多数据采集点需要不同轮询周期、云端只需订阅缓存 方案三:工厂能耗监控(50+ 台电表 + 本地显示) 现场:50+ 台三相电表(Modbus RTU)+ 4 路水表(M-Bus) 通信:企业内网,数据需同时推本地 SCADA 和云端 设备:边缘计算网关(如华为 AR650 系列) 架构: 电表 → RS-485 总线 1(Modbus RTU 轮询)→ 水表 → M-Bus 转 RS-485 模块 → RS-485 总线 2 → 边缘计算网关 ├→ 本地 SCADA(Modbus TCP Slave) ├→ 云平台(MQTT JSON,含电量、功率、需量等预处理数据) └→ 本地 SQLite(30 天历史) 规则引擎: IF 某回路功率 > 额定值 × 1.2,持续 5 分钟 → 本地声光报警 + MQTT 告警推送 理由:多协议、数据处理量大、需本地历史存储、需联动告警 网上很多资料把串口服务器和 Modbus 网关画了等号,或者混为一谈。本质上,选型的核心不是看设备叫自己什么名字,而是看它协议处理深度的位置——协议处理是在设备侧做的还是在服务器侧做的。把处理推得越靠近现场,服务器越轻松,系统可扩展性越好。但在设备数量少、网络条件好的简单场景下,串口服务器的简单反而是优势——没有协议解析的额外延迟,也没有缓存一致性的管理负担。不是越贵越好,是对症才好。 有问题再聊。 --- ### 135. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 RS-485 RS-485是一个物理接口,简单来说,也就是硬件。 它只需要两根通讯线,即可以在两个或两个以上的设备之间进行数据传输。 这种数据传输的连接,是半双工的通讯方式。在某一个时刻,一个设备只能进行发送数据或接收数据。 硬件通讯接口建立后,在进行数据传输的仪表之间需要约定一个数据协议,以使接收端能够解析收到的数据,这便是“协议”的概念。 通讯协议有统一标准的协议格式,如“ModBus”协议,标准的协议内容全面,包含的内容很多,但不易理解。由此,部分厂商自定义了一种协议,简单实用,这便是“自定义协议”。 RS-485总线由于其成本低廉,设计简单而得到了广泛的应用,大量用于智能家居、安防监控,智能交通,智能楼宇,机房监控,工业自动化等各个领域。RS-485总线敷设线路比较简单,但是有一些相应的事项必须注意,否则会容易导致通信失败。 Modbus Modbus是通信协议的其中一种,就像汉语和英语一样,是一种交流的语言,一种机器之间交流的语言。 那么在交流之前肯定要有沟通的桥梁,那就是传输媒介RS-485或RS-232等其他电气规则。 同一种协议可以用不同的传输媒介方式,如RS-485或RS-232. Modbus协议又分Modbus RTU,Modbus ASCII和后来发展的Modbus TCP三种模式。 其中前两种所用的物理硬件接口都是串行(Serial)通讯口(RS-232、RS-485、RS-422)。而Modbus TCP则是为了顺应当今世界的发展潮流,都可以用Ethernet网或Internet来连接,传送数据。所以又叫Modbus TCP模式,该模式的硬件接口就是以太网(Ethernet)口了,也就是我们电脑上一般用的网络口了。 所以说呢,RS485是硬件,Modbus是通讯语言,它们可以合作实现国际标准协议进行设备通讯。 --- ### 136. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:Modbus 远距离传输完整指南:从双绞线到光纤的每一种方案 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:Modbus 协议的物理层传输距离受限于 RS-485 的电气特性——标准极限 1200 米且速率与距离成反比。本文系统梳理将 Modbus 信号延长至数公里乃至跨城传输的全部技术方案,包括 RS-485 中继扩展、光纤传输(光端机)、蜂窝网络(4G/5G DTU)、数传电台、LoRa/ZigBee/NB-IoT 无线技术等,每种方案给出适用距离、速率、成本、功耗的工程参数和部署要点。关键词:Modbus 远距离传输、RS-485 中继器、光端机、4G DTU、数传电台、LoRa Modbus、NB-IoT 串口、光纤 Modbus。 你在现场拉了一根 800 米的 RS-485 屏蔽双绞线,巡完线回来一测——通信偶尔断、经常超时。波特率设的是 115200,设备是 32 台。这就是典型的忘记查 RS-485 的距离-速率曲线了。 Modbus 是应用层协议——它对物理层的传输距离没有硬性约束。你用什么介质承载 Modbus 帧,决定了你能传多远。所以「Modbus 如何远距离传输」的本质问题其实是「什么物理层能承载 Modbus 协议并延长至目标距离」。下面按距离和传输介质分类,逐一拆解。 一、先看清楚起点:RS-485 的物理极限 1.1 距离与速率的基本关系 RS-485 使用差分信号传输,依靠 A/B 线之间的电压差(+2V 到 +6V 表示逻辑 1,-2V 到 -6V 表示逻辑 0)来抗共模干扰。但差分信号的优势随距离衰减——电缆的分布电容和直流电阻造成的信号畸变在高频时更明显,所以通信速率越高,可靠距离越短。 标准规范给出的参数: 波特率最大可靠距离备注100 kbps≈1200 米标准极限115200 bps≈800 米实测通常再打八折9600 bps≈1200 米工业现场常用,距离表现最优4800 bps≈1800 米极长距离首选,牺牲吞吐量换取稳10 Mbps≈12 米仅机柜内短距可用 这条反比曲线是 RS-485 选型的基本常识——不是「RS-485 传 1200 米」就完事了,而是在 100kbps 以下才能传 1200 米。115200 波特率常见的工业应用实际上可靠距离只有 800 米左右,这还是用标准 120Ω 特性阻抗双绞线、终端电阻接好的理想情况。 1.2 节点数量限制 RS-485 标准规定一个网段最多 32 个单位负载。现在多数 485 芯片设计了 1/4 单位负载(输入阻抗 48kΩ)甚至 1/8 单位负载(输入阻抗 96kΩ),对应的节点上限可以到 128 或 256 个。但实际中真正限制节点数的是 Modbus 协议本身——一个 RS-485 网段上的 Modbus 从站地址只有 1 字节(1~247),满额 247 个从站的实际场景极其罕见,因为轮询周期的时间压力会先压垮系统。 1.3 终端电阻与信号反射 长距离传输时,终端不接 120Ω 终端电阻导致信号反射是通信不稳定的第一大坑。原理很简单:信号到达电缆末端时如果阻抗不连续,能量反射回来叠加在原信号上,产生「振铃」效应,严重时接收端完全看不懂。两端各接一个 120Ω 电阻,使总线阻抗匹配,反射消失。如果偏置电阻(上下拉)没有正确配置,空闲电平时 A-B 电压差低于 ±200mV 还会导致空闲时收到随机噪声。 这些是地基。下面讲怎么破地基的物理限制。 二、方案一:RS-485 中继器 —— 再延长 1200 米 2.1 工作原理 RS-485 中继器本质上是一个双向信号放大器 + 再生器。它分「上游」和「下游」两个独立的 RS-485 网段,中继器在中间接收一侧的差分信号、将其转化为数字逻辑电平、再驱动到另一侧发出一模一样的信号。由于信号被完整再生而不是简单放大,新的网段相当于从头开始计算距离——第一段 1200 米,第二段再过 1200 米。 一条 RS-485 总线上最多串联 9 台中继器,网络总长度理论上可达 9600 米。每个中继器同时也是一个网段隔离器——上游的终端电阻、偏置电阻、节点数量与下游完全独立。 2.2 核心参数 参数典型值说明每台延伸距离1200-1500 米与波特率相关,低速更远最大级联数9 台超过后延时累加不可接受转发延迟≤1 位时间零延时自动转发,无需方向控制光电隔离2500Vrms保护烧口和抗击共模干扰可接节点数每段 128 以上重新计算负载,不受上游段影响 2.3 适用与不适用 适用:同一个厂区里、两三栋楼之间、高低压配电室之间,距离需求在 1~3 公里,不想投资光纤也不想改协议。施工上还是走 RS-485 双绞线,中继器要就近供电(通常是 DC 24V)。 不适用:多雷击区域(哪怕加了防雷保护,长距离铜线还是引雷到设备端口的风险);超过 3 公里的场景(中继器的延时累加和施工难度已经不如光纤了);电磁干扰极强的环境(如大型电机频繁启停的车间——铜线是大天线,中继器能放大信号但也放大了噪声)。 三、方案二:光端机 —— 光纤传输,彻底告别电磁干扰 3.1 工作原理 RS-485 光端机(串口光纤调制解调器)是一对成对使用的设备:发射端将 RS-485 差分电信号转换为光信号通过光纤发送;接收端将光信号还原为 RS-485 差分电信号。整个转换过程完全透明——串口侧的设备不知道中间经过了光纤,Modbus 帧毫发无损。 典型用法是在 RS-485 总线的中间插入光端机对: RS-485 设备(网段A) → 光端机(A端) → 光纤 → 光端机(B端) → RS-485 设备(网段B) 注意光端机通常成对使用——两端必须有相同型号(或互相兼容)的光端机。两个光端机之间通过光纤直连,中间不需要任何交换机或路由器。 3.2 多模与单模 光纤选型直接影响距离和成本: 光纤类型纤芯直径光源最大距离成本适用场景多模62.5/50 μmLED/850nm2~5 公里低园区内、同一建筑群单模9 μm激光/1310nm20~50 公里中跨厂区、城市范围单模长距9 μm激光/1550nm80~120 公里高跨城、长输管线 光端机支持的串口速率通常覆盖 300 bps 到 115200 bps(部分型号到 1 Mbps),对于 Modbus RTU 的常见波特率 9600-115200 完全够用。 3.3 工程优势 光纤传输的三个压倒性优势,铜线永远比不了: 彻底隔离电磁干扰。光信号不受磁场影响,不和 10kV 高压电缆走同一桥架也没问题。青海那个光伏电站,逆变器旁边就是强磁场,RS-485 双绞线上去 200 米就不行了,换了光端机后几个月零丢包。 电气隔离。RS-485 铜线的两个端点是直接电连通的——一端被雷击,浪涌能量沿铜线瞬间传到另一端烧毁所有设备。光纤不导电,雷击能量停在光端机外壳上(前提外壳接地好了)。 距离碾压。单模光纤轻松 20 公里以上,中继器串 9 个才能到 9 公里。而且光纤的带宽余量巨大——未来升级传输速率不需要换缆线。 3.4 成本考量 光端机对的成本在 200-1000 元不等(取决于工业级还是商业级、光电隔离等级、工作温度范围)。加上光纤本身(室外铠装单模约 0.5-1.5 元/米、含施工费约 3-8 元/米),总体两公里以内大概 2000-5000 元。相比同样距离走铜线 + 多台中继器(施工 + 防雷 + 线缆),光端机的性价比在大约 1.5 公里以上开始反超。 四、方案三:蜂窝网络 DTU —— 只要有运营商信号就能传 4.1 工作原理 4G DTU(Data Transfer Unit,数据传输单元)是一种将 RS-232/RS-485 串口数据通过蜂窝网络(4G/5G/Cat.1/GPRS)传送到远端服务器的无线终端设备。对串口设备来说,DTU 暴露的是一个 RS-485(或 RS-232)接口,设备像往常一样发 Modbus RTU 帧即可;DTU 在内部将此帧封装到 TCP/UDP/MQTT 包中,通过运营商的基站和中继网络传输到公网或专网服务器。 整个数据流路径: Modbus 从站(RS-485) → DTU(串口→4G IP包) → 运营商基站 → 核心网 → Internet → 云服务器(NAT/公网IP) → 上位机软件 / 云平台 DTU 的核心价值一句话:用一张 SIM 卡代替一把铲子。不需要挖沟布线,不需要架光纤,不需要申请施工许可——设备接上 DTU、插上 SIM 卡、配置服务器 IP 和端口,数据就从现场到了云端。 4.2 核心能力与参数 参数典型规格网络制式4G Cat.1(主力)/ Cat.4 / 5G / GPRS(2G,逐步退网)串口RS-232 或 RS-485,支持 1200~921600 bps通信协议TCP Client / UDP / MQTT / HTTP工作温度工业级:-40°C ~ 85°C供电DC 5-36V 宽压,典型功耗 <1WModbus 特性Modbus RTU ↔ TCP 透传,部分型号支持主动采集 + 缓存 4G Cat.1 是目前 DTU 市场的主流选择:比 Cat.4 功耗低、成本低(模组价格约 20-30 元)、速率够用(上行 5Mbps/下行 10Mbps),而 Modbus 数据一帧最多 256 字节,Cat.1 的速率绰绰有余。 4.3 部署的关键约束 必须有公网可访问的服务器。DTU 通常作为 TCP Client 主动连接服务器的固定公网 IP 和端口。如果现场设备也有公网 IP(极少见),可以用 TCP Server 模式让服务器来连接 DTU,但这个场景在工业现场几乎不存在。实际部署中,服务器端通常部署在阿里云/华为云上,通过 NAT 或负载均衡暴露端口。 心跳包和注册包是标配。4G 网络会有 NAT 超时——运营商的基站 NAT 通常在 60-180 秒无数据后断开映射。DTU 的心跳包就是定时发一条无关数据给服务器,保持 NAT 映射不过期。注册包是 DTU 首次连接服务器时发送的标识信息(如 IMEI、自定义设备编号),让服务器知道对端是谁。 SIM 卡选择决定稳定性。三大运营商的信号覆盖在不同现场差异巨大——工业区厂房深处可能某家完全没有信号。物联网专用卡(定向流量 + APN 配置)比普通手机卡更稳定,但需要提前确认运营商在该位置的信号强度和专用 APN 参数。 通信延迟是客观存在的。4G 网络的端到端延迟通常在 30-200ms,加上运营商核心网的路由抖动,不能指望 DTU 做到局域网级别的实时性。对于 Modbus RTU 的主站来说,这意味着「超时时间」必须拉长——服务器侧 Modbus TCP 请求的超时至少设 500ms 以上,不能照搬本地的 100ms。 4.4 适用场景 4G DTU 适合以下情况: 数据采集点分散(如水源地监测井、气象站),无法集中布线移动设备联网(如工程车辆、移动泵车)跨城市甚至跨省的数据传输快速部署,不需要等施工和审批 不适合的情况: 无运营商信号覆盖(地下室、隧道、深山)数据量大且实时性要求极高(4G 延迟不可控)长期运营成本敏感(按流量计费,虽然物联网卡资费低但仍是持续支出) 五、方案四:数传电台 —— 不用 SIM 卡的无线方案 5.1 原理 RS-485 数传电台的工作方式和 DTU 很像——将 Modbus 帧转换为无线信号发送——但不走运营商网络,而是用免许可的 ISM 频段(433MHz、868MHz、915MHz 或 2.4GHz)进行点对点或点对多点的私有无线传输。发送端将串口数据调制到射频载波上射频发射,接收端解调后还原为串口数据。 和 DTU 的本质区别:数传电台是私有的纯物理层无线链路,不经过任何公共网络基础设施。你的发射机和接收机之间没有基站、没有交换机、没有路由器——就是天线对天线。 5.2 频段与性能对比 频段典型距离穿透能力数据速率使用区域433 MHz3-8 公里(开阔地)好(绕射能力强)≤ 115.2 kbps全球(亚洲常见)868/915 MHz2-5 公里中≤ 250 kbps欧洲/北美2.4 GHz500 米差(视距几乎必)≤ 2 Mbps全球 433MHz 是工业数传电台的主流选择:波长长、绕射好、不挑天线方向,在有建筑物遮挡的工厂环境里表现最优。2.4GHz 虽然速率高,但穿墙能力弱,通常只用在视距无遮挡的场景。 5.3 优缺点 优点:一次性投入后零运营费(不需要 SIM 卡和流量费);私有网络不依赖第三方基础设施;延迟可控且稳定(毫秒级,不是 4G 的百毫秒级)。 缺点:受无线电法规限制——发射功率不能超过规定值(中国 433MHz 通常 ≤100mW),实际距离远不如理论值;受天气和障碍物影响大(大雨、金属建筑物都会衰减信号);多台电台在相邻频段会互相干扰,需要做频率规划和信道分配。 数传电台最经典的应用是在大型厂区内替代长距离布线——比如水厂的取水泵站距离厂区中控室 2 公里,中间隔了一条路,挖沟布线成本极高。架一对 433MHz 数传电台 + 指向性天线,Modbus 数据流就能来回跑,成本只有布线的十分之一。 六、方案五:WiFi 串口服务器 —— 局域网内告别线缆 WiFi 串口服务器是将 RS-232/RS-485 转为 WiFi(IEEE 802.11 b/g/n)的设备,实现串口 → 以太网/WiFi 双向透传。它本质上和有线串口服务器的功能完全一样,只是传输介质从双绞线变成了 2.4GHz/5GHz 的无线电波。 覆盖范围:室内约 30-100 米(穿墙后大幅衰减),室外开阔地约 150-200 米(加高增益天线可到 500 米)。 WiFi 方案适合工厂车间内或同一平面层的短距离无线传输——比如生产线末端有台 Modbus 仪表,旁边没有网口、拉网线要跨过人行通道,架一个 WiFi 串口服务器,让数据通过工厂已有的 WiFi 网络回传到服务器。速率高(达 54-150 Mbps),但功耗比 DTU 高(持续 0.5-1W),且距离有限。 七、方案六:LoRa —— 低功耗、超远距离的窄带无线 7.1 原理 LoRa(Long Range)是 Semtech 公司推出的基于啁啾扩频(Chirp Spread Spectrum)技术的低功耗广域网物理层技术。RS-485 的 Modbus 设备通过 LoRa 数传模块(RS-485 → LoRa)将数据调制到 Sub-GHz 频段(433/868/915 MHz),以极低的速率换取了极远的传输距离。 LoRa 的对标物不是 WiFi 或 4G——它的定位是「低数据量 + 超远距离 + 超长电池寿命」。典型速率为 0.3 kbps 到 50 kbps,这个速率对 Modbus RTU 来说偏小但不致命——如果你只读几个关键寄存器(比如每 5 分钟读一次温湿度),LoRa 完全跑得动。 7.2 距离 在城市环境中,LoRa 的可靠传输距离约 1-2 公里;在郊区/开阔地带,可达 5-15 公里。这是目前非蜂窝 LPWAN 技术中距离最远的之一。注意 LoRa 需要专用的 LoRa 网关才能接入互联网——如果你的目标是设备直接上云,需要「LoRa 模块 + LoRa 网关 + 4G/以太网上行」的二级架构,部署起来比 DTU 复杂。 7.3 适用场景 LoRa 适合:传感器数量多但数据量极小(每个节点每天只发几百字节);电池供电(AA 电池可工作数年);覆盖范围大但无运营商信号(如偏远山区的水文监测、大面积农田的土壤温湿度采集)。 LoRa 不适合:需要实时控制的场景;数据量偏大(频繁读取多寄存器);已有运营商信号覆盖且懒得自建 LoRa 网关。 八、方案七:ZigBee —— 短距离自组网 ZigBee 基于 IEEE 802.15.4 标准,工作在 2.4GHz 频段,特点是低功耗、低速率、自组网(Mesh 网络)。传输距离短——典型的 10-100 米,但 ZigBee 最大优势是自组网路由:每个节点都能中继转发,数据包可以跳过多级节点到达目标,理论上覆盖范围可以通过密集部署节点来大幅扩展。 ZigBee + Modbus 的典型用法:RS-485 设备接 ZigBee 透传模块,多个模块形成 Mesh 网络,最终通过一个 ZigBee 协调器(Coordinator)汇聚数据后转为串口或以太网接入上位机。适合需要多节点分布、但总范围在数百米内、不方便布线的场景(如楼宇内的智能电表集中采集)。 速率:理论 250 kbps,实际受 Mesh 跳数影响降至 50-100 kbps。对于 Modbus RTU 常规通信够用但不充裕。节点数量理论上支持 65535,实际一个 ZigBee 网络稳定跑 100-200 个节点已经是工程合理上限。 九、方案八:NB-IoT —— 走运营商的窄带物联网 9.1 原理 NB-IoT(Narrow Band Internet of Things)是基于蜂窝网络的窄带物联网技术。它直接部署在运营商的 4G/5G 基站上,占用 180kHz 频带。和 4G DTU 的区别在于:NB-IoT 速率更低(上行约 62.5 kbps,下行约 26 kbps)、功耗更低(PSM 省电模式下 AA 电池可工作 10 年)、覆盖更强(比 4G 多 20dB 覆盖增益,地下室、管道井也能连)。 RS-485 转 NB-IoT 模块将 Modbus 串口数据通过 NB-IoT 网络传输到云平台(通常走 UDP/CoAP/LwM2M 协议),不需要 DTU 那样依赖公网 TCP 连接。NB-IoT 的优势是深度覆盖——GSM/4G 信号到不了的地下配电室,NB-IoT 的 20dB 额外链路预算可能刚好够。 9.2 关键约束 NB-IoT 有 6-10 秒的网络延迟,这是它和 4G DTU 的最大区别。对于 Modbus 协议的主从轮询模型,这个级别的延迟意味着你不能指望 NB-IoT 做实时控制——它适合定时上报(如每 15 分钟上报一次电量数据),不适合实时响应主站查询。 另外 NB-IoT 不支持基站间漫游(移动性弱),基站切换时通信会中断。这意味着 NB-IoT 设备必须固定位置,不能像 4G DTU 那样装在移动设备上。 9.3 适用 城市环境下的超低功耗抄表(水表、燃气表、电表)、固定位置的传感器数据定时上报。不适合实时交互或移动场景。 十、方案九:PLC 云网关 —— 让 Modbus 设备支持远程编程和调试 PLC 云网关是一种「增强型 DTU」——它不仅能做串口数据透传,还支持以太网网口透传和 USB 透传,让工程师可以远程对 PLC、HMI(人机界面)进行程序上下载和在线调试。对于西门子、三菱、欧姆龙的 PLC 编程软件来说,它们需要通过特定的以太网协议(如 S7、MC Protocol、FINS)与 PLC 通信——普通的串口透传 DTU 做不了,PLC 云网关内置了这些工业以太网协议的转发支持。 同样适用的是 PPI/MPI 转以太网协议转换器——很多老西门子 S7-200 只支持 PPI 协议,通过 PPI 转以太网转换器可以实现在不占用 PLC 原有通信口的情况下,让触摸屏、上位机通过以太网与 PLC 交互。这本质上也是 Modbus 传输链路上的一种补充方案。 十一、方案速查:一张表覆盖全部选型 方案距离速率线缆/SIM最佳场景RS-485 直连≤1200m≤115.2kbps双绞线标准有线RS-485 中继器≤9.6km≤115.2kbps双绞线同一厂区 2-3km光端机(多模)2-5km≤1Mbps多模光纤园区内光端机(单模)20-80km≤1Mbps单模光纤跨厂区/城市4G DTU全国≤115.2kbpsSIM卡分布点/移动设备数传电台 433M3-8km≤115.2kbps无私有无线/无SIMWiFi 串口服务器100-500m≤150Mbps无工厂局域网LoRa1-15km≤50kbps无低数据量广域ZigBee10-100m/跳≤250kbps无Mesh自组网NB-IoT全国≤62.5kbpsSIM卡超低功耗定时上报 十二、选型决策四步法 面对「Modbus 设备要远距离接入」的需求,按这个顺序做决定: 第一步:算距离。 现场设备到中控室/服务器的直线距离是多少?小于 1.2 公里→直接用 RS-485 走线(加终端电阻)。1.2~3 公里→考虑中继器或光端机。3 公里以上→光端机(单模)或无线(4G DTU/数传电台/ LoRa)。 第二步:看环境。 有没有强电磁干扰(高压线、变频电机、电焊车间)?有→必须用光纤(光端机),铜线撑不住。有没有运营商信号覆盖?有且稳定→4G DTU 最省事;没有→自觉用数传电台或 LoRa。 第三步:算数据量。 有多少个 Modbus 寄存器要读?轮询周期要求多少?如果是实时控制级别(< 100ms)→ 必须用有线(直连/中继/光端机),无线方案平均延迟在此之上。如果是分钟级定时采集→ LoRa、NB-IoT 都行。流式大数据量→ WiFi 或光纤,窄带无线扛不住。 第四步:算钱。 一次性施工成本(布线 + 设备)vs 持续运营成本(SIM 卡流量费)。通常 2 公里以内/工业厂区/一次施工 → 有线(光端机或中继器);跨地区/多个偏远点/快速上线 → 4G DTU;零运营费需求 → 数传电台或 LoRa。 没有一种方案是「最好的」——全看你现场的物理约束。1200 米的 Modbus over 双绞线能搞定的,就别上 4G;4G 有信号的地方,别自己拉光纤跨高速路;光纤已经进管廊了,就别再用铜线。工具对路,活就好干。 有问题再聊。 --- ### 137. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表的一种总线协议。 简单是 Modbus 如此普遍的主要原因。 消息检查是 Modbus 如此受欢迎的另一个原因。CRC 和 LRC 检查意味着检查传输错误的准确率达到 99%。 Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式(一种行业规范)。此外,还具有三大特点: ①公开发表并且无版权要求 ②易于部署和维护 ③修改移动本地的比特或字节没有很多限制 概括来讲,Modbus就是一种用于工业控制的协议,具有免费使用、上手简单、修改方便三大特点,已经被广泛使用。 此协议支持传统的RS-232、RS-485、RS-422和以太网设备。许多工业设备,包括PLC,DCS,智能仪表,变频器等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 --- ### 138. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算  如今风靡全球的“中国新四大发明”正深深地改变着人们的生活。就拿购物来说,以前买东西要逛商场,先找楼层导购,再逛到相应柜台,接着愉快购物,选好东西后经过一番讨价还价,最后付钱拿货走人,这些都是稀松平常的场景。可是,如果没有实际看见东西,只在网上看到照片,在见不着商家就先付钱,然后等着东西送到家里,这些场景放在过去简直让人不可思议,但就是凭借一套行之有效的交易规则实现了,也就是一种各方都需要遵守的协议。 既然购物能通过一套规则做到这么便捷,那么通信是不是也能做到?答案是肯定的,因为通信就是数据交互,也可以通过制定一套规则来方便数据交互,这种规则就是通信协议。万事开头难,整明白了协议以及通信协议,那么MODBUS就说清楚了一半,因为MODBUS就是一种通信协议,那么MODBUS是怎样的一种通信协议呢?     众所周知,网购的规则是为了协调买家、卖家、第三方平台之间的关系,规定了各方享有的权利和承担的义务,提出一些完成交易需要的步骤和方法。大家直接就能想到的场景,比如说电商会展示商品和服务内容(买、可退换)、网络平台(淘宝、天猫)制定了交易的规则,以及快递公司定义了传输商品的方式(包裹、快递单)。     同样道理,MODBUS通信协议是为了方便控制器、设备之间的数据交互,表面上由类似于“用户须知”一样的诸多条文组成,其实也就是说了几件事情:协议功能、通信内容、通信规则、通信数据格式。     1)通信功能:MODBUS通信协议定义的功能包括读、写、诊断,这里可以想象一下,当你打电话办理某个业务,语音提示你:请输入您想办理业务,按键1查询,2充值,0人工服务,这不就是功能码嘛!     2)通信内容:正如电商会展示出商品供大家选择一样,MODBUS通信协议定义了通信的内容包括保持型寄存器、输入寄存器、线圈等。商品有小件也有大件的,能退也有不能退的,这些通信的内容也是有的可以读写,有的只能读。    3)通信规则:MODBUS通信协议采用客户端/服务器模式进行通信,可以看看图表2对这种通信模式与网购的类比。显然两个客户端是没办法直接通信的,因为两个买家能干嘛?     4)通信数据格式:网购后,卖家会采用物流投递,快递公司不会像餐厅侍者一样,托着商品呈递到家中,而采用包裹的形式,按照快递单据准确送达,这就是网购货品的形式。     MODBUS通信协议为了实现准确传输数据,也需要“打包”和“快递单”。假如说货品是一个保持寄存器,那么打包过程就是将保持寄存器的值用功能码包装,形成协议数据PDU(类似于包裹);货品贴上快递单就是说数据PDU被加上了地址和差错校验(即)后形成一帧完整的通信数据(应用数据ADU)。     综上所述,MODBUS就是包含以上4个内容的通信协议。其实,工业互联网中的一些技术并不是特别深奥,能从生活中找到原型,你看MODBUS通信协议不也是可以很俗很直观的吗? --- ### 139. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是由Modicon开发的串行通信协议®于1979年由Modicon发布,用于其可编程逻辑控制器(PLC)。简单来说,它是一种用于在电子设备之间通过串行线传输信息的方法。请求信息的设备称为Modbus Master,提供信息的设备是Modbus从站。在标准的Modbus网络中,有一个主站和最多247个从站,每个从站都有一个从站地址,从1到247个。主站也可以向从站写入信息。 官方Modbus规范可以在modbus.org/specs.php上找到。 --- ═══════════════════════════════════════════ ## Modbus技术文档 ═══════════════════════════════════════════ ### 140. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 这个问题比你想象的更普遍 用 Modbus Poll 读到一个电能表的正向有功总电量,寄存器 40001~40002,返回 `42 C8 00 00`。你信心满满地按 IEEE 754 float32 一拼——100.0 kWh,合理。同一个程序,换到另一家国产电力仪表,读取同样的两个寄存器,返回 `00 00 42 C8`,拼出来 0.0,PLC 的触摸屏上直接给你画了条直线。你没写错寄存器,也没算错 CRC,纯粹是字节序反了。 这就是 Modbus 多寄存器数据解析的核心痛点。Modbus 协议规范 V1.1b 第 4.2 节"Data Encoding"说得非常坦诚:**"Modbus uses a 'big-endian' representation for addresses and data items. This means that when a numerical quantity larger than a single byte is transmitted, the most significant byte is sent first."** 翻译成人话:Modbus 在传输单个寄存器内的 16 位数据时用大端序——高字节在前。但规范没说 32 位或 64 位跨多个寄存器时怎么排。两个连续寄存器的先后次序、每个寄存器内部两个字节的次序,全留给设备厂商自己决定。 这话听起来像甩锅,但 1979 年的 Modicon 工程师确实没必要操心 32 位浮点数——当年 PLC 连 16 位整数都嫌奢侈。四十年后,我们得自己扛。 四种字节序,四张图说清楚 假设你读取保持寄存器从地址 0(Modbus 地址 40001)开始,请求 2 个寄存器。从站返回的报文里的数据区是: 41 DB 85 1F 这是一个 IEEE 754 单精度浮点数的原始字节序列。真实值是 27.440271...(约 27.44)。现在看四种字节序分别怎么拼: ABCD(大端序,Modbus 标准排列) 寄存器 40001 的值是 `0x41DB`,寄存器 40002 的值是 `0x851F`。按顺序拼成 32 位: 寄存器 40001(高16位) 寄存器 40002(低16位) +--------+--------+ +--------+--------+ | 0x41 | 0xDB | | 0x85 | 0x1F | +--------+--------+ +--------+--------+ A B C D 内存视角(低地址到高地址):`41 DB 85 1F` → float32 = **27.44** 这是施耐德 Modicon 系列 PLC(M340、M580、M241 等)的默认行为。施耐德作为 Modbus 协议的亲爹,一直遵循这个标准排列——寄存器地址小的存高 16 位,寄存器地址大的存低 16 位。你用 READ_VAR 读回来两个 WORD,直接拼就是对的。 DCBA(小端序,完全反转) 寄存器 40001(但内容反转了) 寄存器 40002 +--------+--------+ +--------+--------+ | 0x1F | 0x85 | | 0xDB | 0x41 | +--------+--------+ +--------+--------+ 内存视角:`1F 85 DB 41` → float32 = **1.5468 × 10⁻²⁸** ——一个接近零的极端值,屏显基本就是 0.0 或溢出报错。 部分国产 Modbus 模块(尤其是一些基于 51 单片机或早期 ARM 裸跑的仪表)用这种方式。因为它们内部 CPU 是小端序,直接 memcpy 了事,本质上就是「懒得转换」。北京某品牌的智能电力仪表就是典型案例,你读回来必须手工做字节逆转。 CDAB(字交换,寄存器前后互换) 寄存器 40002 的内容放前面 寄存器 40001 的内容放后面 +--------+--------+ +--------+--------+ | 0x85 | 0x1F | | 0x41 | 0xDB | +--------+--------+ +--------+--------+ 内存视角:`85 1F 41 DB` → float32 = **-1.096 × 10⁻³³** 这是西门子 S7-1200/S7-1500 做 Modbus TCP Server 时的实际行为。西门子 PLC 内部 REAL 型变量占用 4 个字节,存到 DB 块里是标准 IEEE 754 格式,但 MB_SERVER 指令块在把保持寄存器暴露给 Modbus 客户端时,**先发低地址寄存器的低字节、再发高字节,然后是高地址寄存器的低字节、再高字节**。这相当于把施耐德 ABCD 的两个 WORD 前后互换。你用 Modbus Poll 读西门子 PLC 的浮点数,如果不把 Display 设置里的 Float 切换到 "CDAB" 模式,读出来一定是天文数字。 libmodbus 专门为这四种序提供了四组函数:`modbus_get_float_abcd()`、`modbus_get_float_dcba()`、`modbus_get_float_badc()`、`modbus_get_float_cdab()`。 BADC(字节交换,每个 WORD 内部反转) 寄存器 40001(内部字节交换) 寄存器 40002(内部字节交换) +--------+--------+ +--------+--------+ | 0xDB | 0x41 | | 0x1F | 0x85 | +--------+--------+ +--------+--------+ 内存视角:`DB 41 1F 85` → float32 = **-1.457 × 10¹⁷** 台达 DVP 系列、三菱 FX3U/FX5U 以及汇川部分系列(H3u、H5u)在通过 Modbus RTU 传输 32 位数据时,实际走的就是 BADC 排列。为什么?因为这些日系/台系 PLC 的内部数据存储本身就是「字内小端」——单个 16 位 WORD 内部低字节在前。到了 Modbus 传输层,先发 WORD 的高字节(Modbus 要求),于是 WORD 内部反了一次。两个 WORD 之间有保持了 Modbus 的大端次序。所以结果就是 BADC:每个 WORD 内部字节逆转,WORD 之间保持 ABCD 的顺序。 打个不那么严谨的比方:施耐德是一整盒拼图按顺序给你(ABCD),西门子是左右两半先换位再给你(CDAB),台达/三菱/汇川是把每半的内部先翻个面再按顺序给你(BADC)。至于 DCBA,那是连盒子带内容全反了。 数据类型远比字节序更隐蔽 同一个 4 字节序列 `41 DB 85 1F`,按不同数据类型解析: 解析方式结果float32(IEEE 754)27.44uint321,104,626,975int321,104,626,975两个 uint16 拼接[16859, 34079] 看这差异,float32 的 27.44 和 uint32 的 11 亿,差八个数量级。如果你在 SCADA 上看到一个温度测点显示 1104626975.0℃,别急着换传感器——先查查是不是用 uint32 解析了 float32。 这在实际工程中比字节序问题更隐蔽,因为**你拿到的是对的数,但解释方式是错的**。字节序不对,至少数字是乱的,你能一眼看出来;类型不对,有时候真就蒙混过去了。 举个现场的例子。某个光伏电站的逆变器通过 Modbus TCP 上送当日发电量,寄存器映射文档写的是「40001-40002: 当日发电量,32 位」。工程师用 int32 解析,读回来一个正数,数值看起来挺合理,上了能耗平台跑了一个月。直到财务对账发现差了 30%,一查才知道——厂家实际存的是 **uint32**,按 int32 解析时高位被当成符号位处理了,只要发电量超过 2,147,483,647 Wh(2.15 GWh),解析值就变成负数。 所以面对一个多寄存器数据点,你需要确认的不是一个变量,是三个: 1. 数据类型是什么(float32 / int32 / uint32 / int64 / uint64 / double64 / string)? 2. 字节序是什么(四种之一)? 3. 有没有缩放因子?比如仪表存的是原始值 × 10 还是 × 100? 第三点经常被忽略。很多 Modbus 仪表为了省寄存器、避免浮点传输,会把浮点值乘以 10 或 100 后转成 int32 存进去。比如读回来 int32 = 2744,实际温度是 27.44℃(÷100),压力是 274.4kPa(÷10)。这个缩放因子只在设备手册里写,协议报文上完全看不出来。 各主流厂商的实际行为 这一节是这篇文章最有实用价值的部分。以下数据来自实际调试记录和社区验证,不是产品手册上抄来的。 施耐德 Modicon M340/M580/M241 Modbus 协议的发明者,行为最「标准」。QUANTUM、M340、M580、M241 全线产品的 Modbus TCP/RTU 通信,32 位数据(REAL、DINT)默认都是 **ABCD** 排列。用 READ_VAR 读回来的 `%MW` 寄存器,低位地址存高 16 位,高位地址存低 16 位。 特别注意:施耐德的 Unity Pro / EcoStruxure Control Expert 里,`%MD`(双字)和 `%MF`(浮点双字)的内部存储与 Modbus 寄存器映射有一层转换。`%MD0` 对应 `%MW0` 和 `%MW1`,其中 `%MW0` 是高位,`%MW1` 是低位——恰好是 ABCD。 结论:施耐德 PLC 做 Modbus 从站时,上游直接按 ABCD 解析即可。 西门子 S7-1200/S7-1500(MB_SERVER) 这是坑最多的一个。西门子在 TIA Portal 中调用 `MB_SERVER` 指令块做 Modbus TCP 服务器,REAL 型变量(4 字节)在两个保持寄存器里的排列是 **CDAB**。 具体原理:西门子 S7-1200/1500 的 DB 块默认是「优化的块访问」,内部字节排列不透明。即使你取消了优化(设置为标准访问),REAL 型变量在 DB 中的字节顺序也是小端(Intel x86 处理器决定的)。当 `MB_SERVER` 把这个 REAL 的 4 个字节映射到 Modbus 保持寄存器时,它按字节顺序依次填充:地址小的寄存器存字节 0 和 1(这是 REAL 的低位部分),地址大的寄存器存字节 2 和 3(高位部分)。 实际效果就是 CDAB。Modbus Poll 的 Display 设置里必须切到 "CDAB" 才能看到正确的浮点数。 如果你用西门子 PLC 做 Modbus 客户端(`MB_CLIENT`)去读第三方的 Modbus 从站,同样需要注意——你读回来的两个 WORD 的排列取决于从站的字节序,和你西门子内部的 REAL 存储是两码事。这时候用博途 V16 及以上版本提供的 `READ_BIG` / `READ_LITTLE` / `WRITE_BIG` / `WRITE_LITTLE` 指令来做字节序转换,比手动 SWAP 加移位要可靠得多。 台达 DVP 系列 台达 DVP-ES2/EX2/SV2 等系列做 Modbus RTU 从站时,32 位浮点数(F 寄存器)映射到 Modbus 保持寄存器的排列是 **BADC**。 这跟台达内部浮点数的存储方式有关——台达 PLC 的 32 位数据遵循「低位存低地址」的规则(小端),而 Modbus RTU 帧要求每个 WORD 以大端发送。于是 WORD 内部字节反转了一次,但两个 WORD 之间保持了 PLC 内部顺序,最终变成 BADC。 如果你的 WPLSoft 里显示 D0 = F100.0(浮点数),在 Modbus Poll 里读 40001~40002,Display 选 "BADC",看到的就是 100.0。选其他三种序都是乱码。 三菱 FX3U/FX5U(通过 Modbus 通信模块) 三菱 FX3U 加装 FX3U-485ADP-MB 通信模块做 Modbus RTU 主站或从站时,32 位数据的排列也是 **BADC**。跟台达的逻辑一样——日系 PLC 的内部架构均为小端。 FX5U 本体自带 Modbus RTU 功能(通过 RS-485 端子),用 ADPRW 指令做通信时,读回来的 32 位数据需要你用 MOV 指令手动拼。从 MODBUS 读回两个寄存器 D100、D101,存的是 BADC 排列的原始数据,要先用 SWAP 指令交换每个寄存器的字节,再用高低位拼接指令组合成最终的 32 位值。 我见过不止一个项目——三菱 PLC 读施耐德变频器的频率,读回来反了又没做 SWAP,调试两天最后发现就是字节序的锅。 欧姆龙 CP1H/CP1L 欧姆龙 CP1 系列通过 CP1W-CIF11(RS-485 选件板)做 Modbus RTU 从站时,保持寄存器使用 DM 区映射。32 位数据在两个 DM 字中的排列取决于你如何编程。 CP1 系列本身是字寻址架构,没有原生的双字数据类型。浮点数要用两个 DM 字拼,排列顺序完全由你的梯形图决定。但大多数标准实现遵循 **ABCD** 排列——这和 CP1 系列脱胎于早期的 SYSMAC 架构有关。实际调试时建议先用已知值(比如写浮点 1.0 = `3F80 0000` 到两个 DM 字)测一次。 国产 PLC(汇川、步科) 汇川 H3u/H5u 系列做 Modbus RTU 从站,32 位数据默认 **BADC** 排列,跟台达一致。但汇川的 AM600 系列(基于 CODESYS 平台)就不一样了——CODESYS 内部实数存储是标准 IEEE 754 大端结构,Modbus TCP Server 暴露的寄存器排列默认是 **ABCD**。 汇川 Easy 系列属于 H5u 的简化版,用于小型设备控制,Modbus RTU 从站的浮点数排列同样是 **BADC**。 步科(Kinco)有部分型号走 **CDAB**,比如 K2 系列。这点和西门子类似,因为步科 K2/K5 系列在软件层面借鉴了西门子的触屏编程逻辑。 总结一个速查表: 厂商/设备Modbus 32位排列备注施耐德 M340/M580/M241ABCDModbus 原厂标准西门子 S7-1200/1500CDABMB_SERVER 指令块行为台达 DVP 系列BADC字内字节交换三菱 FX3U/FX5UBADC需 SWAP 后拼接欧姆龙 CP1H/CP1LABCD(多数实现)取决于梯形图汇川 H3u/H5uBADC与台达一致汇川 AM600 (CODESYS)ABCDCODESYS 平台步科 K2 系列CDAB部分型号典型国产电力仪表DCBA 或 ABCD需逐个测试 注意:这个表是实测参考,不是官方承诺。同一厂商的不同型号、不同固件版本,字节序行为可能不同。上生产环境之前一定要测试验证。 Modbus Poll 的字节序切换 Modbus Poll 在 Display 设置里提供了数据格式切换功能。选中数据显示区域后右键 → Format,可以看到: Signed - 有符号 16 位整数 Unsigned - 无符号 16 位整数 Hex - 十六进制 Binary - 二进制 32-bit Signed - 32 位有符号整数 32-bit Unsigned - 32 位无符号整数 32-bit Float - 32 位浮点数 64-bit Float - 64 位双精度浮点数 选了 32-bit Float 后,右侧会弹出字节序选项: Float Big-endian (ABCD) - 大端 Float Little-endian (DCBA) - 小端 Float Big-endian byte swap (BADC) - 大端字节交换 Float Little-endian byte swap (CDAB) - 小端字节交换 你不需要记住哪个厂商用哪种序。调试的时候四种序都切一遍,看哪个值合理就是哪个。读一个你确定量程范围的已知测点(比如环境温度在 20~30℃ 之间),四种序里只有一种会落在合理范围。 64 位数据的处理 电量累计值、总运行时间、大容量流量累积——这些动辄需要用 4 个寄存器(8 字节)来表示的场景,字节序问题更复杂。因为你要处理两层嵌套的排列: 第一层:每个 32 位 DWORD 内部的字节序(跟前面 32 位场景一样,四种可能) 第二层:两个 32 位 DWORD 之间的先后次序(寄存器 1-2 是高位 32 位还是低位 32 位?) 假设你读 4 个寄存器,返回原始字节序列: 41 DB 85 1F 42 C8 00 00 如果按照「先高 32 位后低 32 位、每个 32 位按 ABCD」——这是最规矩的排列: 高32位 (ABCD): 41 DB 85 1F → float32 = 27.44 低32位 (ABCD): 42 C8 00 00 → float32 = 100.0 注意:这是一个 totalizer(累加器)的典型构建方式。高 32 位存大数部分,低 32 位存小数部分,或者高 32 位存整数部分、低 32 位存小数部分。具体怎么组合要看设备手册。 更常见的场景是 uint64 累计值。4 个寄存器按 ABCD 排列,从寄存器地址低到高依次是: 寄存器1 (MSW-High): A B → 字节0-1 寄存器2 (MSW-Low): C D → 字节2-3 } 组成高32位 寄存器3 (LSW-High): E F → 字节4-5 寄存器4 (LSW-Low): G H → 字节6-7 } 组成低32位 拼成 uint64:`(uint64_t)(reg1<<48 | reg2<<32 | reg3<<16 | reg4)`,但这个公式只在 CPU 本身是大端序时成立。你在 x86(小端)上写 C 代码,得倒过来。 实测经验:处理 64 位数据时,先别纠结字节序,先用十六进制读出 4 个寄存器的原始值,清楚累加器是否在增长,观察增长的方向——如果累加器每次递增,看变化是从低地址寄存器开始还是高地址寄存器开始,就知道高低位排列了。 libmodbus 没有直接提供 64 位的转换函数,你需要自己拼: uint16_t regs[4]; modbus_read_registers(ctx, addr, 4, regs); // 假设 ABCD 排列 uint64_t value = ((uint64_t)regs[0] << 48) | ((uint64_t)regs[1] << 32) | ((uint64_t)regs[2] << 16) | ((uint64_t)regs[3]); 但这只是四种序中的一种。如果你的设备是 BADC 排列,得先交换每个寄存器的字节;如果是 CDAB,得先交换寄存器对的位置。 字符串的存储 设备序列号、固件版本号这些 ASCII 字符串在 Modbus 寄存器里的存储,有两种主流模式: **模式一:每寄存器存 2 个字符(标准做法)** 每个 16 位寄存器存两个字节,每字节一个 ASCII 字符。比如序列号 "SN20240001"(10 个字符),需要 5 个寄存器: 寄存器1: 0x53 0x4E → 'S' 'N' 寄存器2: 0x32 0x30 → '2' '0' 寄存器3: 0x32 0x34 → '2' '4' 寄存器4: 0x30 0x30 → '0' '0' 寄存器5: 0x30 0x31 → '0' '1' 读回来直接按字节取 ASCII 值转字符就行,不需要关心字节序——ASCII 字符 `A` 就是 `0x41`,无论大端小端。 **模式二:每寄存器仅低字节有效** 某些仪表厂商偷懒,每个寄存器只用了低 8 位存一个字符,高 8 位是 0x00。同样的 "SN20240001" 需要 10 个寄存器: 寄存器1: 0x00 0x53 → 空 'S' 寄存器2: 0x00 0x4E → 空 'N' ... 这种方式浪费了一半的寄存器空间,但解析简单——取每个寄存器的低字节就行。 踩坑提醒:字符串的字节序问题绝大多数时候不存在,因为 ASCII 是单字节编码。真正会出问题的是你用 UTF-16 或者其他多字节编码的场合——但那已经不是 Modbus 协议的范畴了,纯粹是应用层的编码选择。 调试方法论 别猜,用数据说话。以下是一个标准的字节序排错流程: **第一步:读原始十六进制** 用 Modbus Poll 把 Display 格式切成 Hex,先记下原始寄存器值。不管字节序,先看裸数据。 读 40001-40002 返回: 41 DB 85 1F **第二步:用已知值反推** 找一个你知道真实值的测点。比如当前温度 27.44°C。如果这个值是你从设备自带显示屏上读出来的,记下来。然后看四种序哪个拼出来是 27.44,那个就是正确答案。 更好的办法——主动写一个已知值。用功能码 16(写多个寄存器)写入 `0x3F80 0000`(这是 float32 = 1.0 的标准 IEEE 754 表示)到寄存器对,然后读回来。看原始十六进制: - 如果读回来是 `3F 80 00 00` → ABCD - 如果读回来是 `00 00 3F 80` → DCBA - 如果读回来是 `80 3F 00 00` → BADC - 如果读回来是 `00 00 80 3F` → CDAB **第三步:用 Wireshark 抓包** Modbus TCP 的端口是 502。在 Wireshark 里过滤 `tcp.port == 502`,右键 → Decode As → Modbus/TCP。你看到的响应报文里,数据区就是原始字节序列。拿这个序列跟你的解析结果对比: Wireshark 报文: Modbus/TCP Transaction Identifier: 1 Protocol Identifier: 0 Length: 7 Unit Identifier: 1 Function Code: 3 (Read Holding Registers) Byte Count: 4 Register 0 (40001): 0x41db Register 1 (40002): 0x851f Wireshark 展示的寄存器值是它按大端解析的结果。如果你的 PLC 内部是 BADC,那 Wireshark 展示的 `0x41db` 和 `0x851f` 已经不是原始字节序列了——原始字节序列应该是 `DB 41 1F 85`。 这就是为什么调试字节序问题的时候,更应该看 **Wireshark 的十六进制 dump** 而不是它帮你解析好的寄存器值。在报文详情里展开 "Data" 字段,看原始字节。 **第四步:在线字节序计算器** 概念很简单——你输入 4 个十六进制字节,它给你算出四种序对应的 float32、int32、uint32 值,一眼看出哪个是正确答案。 如果没有现成的,自己写一个也不复杂: #include <stdio.h> #include <stdint.h> #include <string.h> void print_float(uint8_t *bytes) { float f; memcpy(&f, bytes, 4); printf("float32: %fn", f); } int main() { uint8_t data[4] = {0x41, 0xDB, 0x85, 0x1F}; uint8_t abcd[4] = {data[0], data[1], data[2], data[3]}; uint8_t dcba[4] = {data[3], data[2], data[1], data[0]}; uint8_t badc[4] = {data[1], data[0], data[3], data[2]}; uint8_t cdab[4] = {data[2], data[3], data[0], data[1]}; printf("ABCD: "); print_float(abcd); printf("DCBA: "); print_float(dcba); printf("BADC: "); print_float(badc); printf("CDAB: "); print_float(cdab); return 0; } 附录:Modbus CRC-16 查表法 C 语言实现 字节序问题经常和 CRC 校验的字节序混在一起——不是说算法有问题,而是 **CRC 计算结果的两个字节在报文里谁先发谁后发**,不同文档写的不一样。 Modbus 规范明确:CRC-16 的**低字节先发**。也就是说 CRC 计算结果是 `0x1234`,那么报文里最后两个字节是 `34 12`,不是 `12 34`。 下面的查表法实现直接返回符合 Modbus 规范的结果——低字节在前,可以直接追加到报文末尾。 #include <stdint.h> /* CRC-16 Modbus 查找表 */ static const uint16_t crc16_table[256] = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 }; /* * 计算 Modbus CRC-16,返回符合 Modbus 帧格式的结果 * 低字节在前(低地址),可直接追加到报文末尾 */ uint16_t crc16_modbus(const uint8_t *data, uint16_t len) { uint8_t crc_hi = 0xFF; uint8_t crc_lo = 0xFF; uint8_t idx; while (len--) { idx = crc_hi ^ *data++; crc_hi = crc_lo ^ (uint8_t)(crc16_table[idx] >> 8); crc_lo = (uint8_t)(crc16_table[idx] & 0xFF); } /* * 返回 16 位 CRC 值 * 使用时追加到 Modbus RTU 帧末尾: * frame[len] = crc & 0xFF; // 低字节在前 * frame[len+1] = (crc >> 8) & 0xFF; // 高字节在后 */ return ((uint16_t)crc_lo << 8) | crc_hi; } 这里有个细节值得注意:如果你看其他一些 CRC-16 的实现,有的返回结果是高字节在前、有的低字节在前。区别在于 `return` 语句——`(crc_lo << 8) | crc_hi` 和 `(crc_hi << 8) | crc_lo` 是反的。Modbus 规范说 CRC 域是「低字节在前」,所以上面这个实现返回一个 uint16_t,但你知道低 8 位是 CRC 的低字节,高 8 位是 CRC 的高字节。追加到报文时,先写 `(crc & 0xFF)`,再写 `((crc >> 8) & 0xFF)`。 如果你用 `return (crc_hi << 8) | crc_lo`,那追加顺序就得反过来——这也是很多调试时发现「CRC 校验总是错」的原因之一。 有问题再聊。下次遇到字节序不对的情况,直接拿这四个字节跑一圈 ABCD/DCBA/BADC/CDAB,比你翻厂家手册快。 --- ### 141. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 你为什么要看这篇文章 这个问题在 Stack Overflow、control.com、CSDN 上被问了几千次——「我该用哪个开源 Modbus 库?」。每次回答都是零散的几句,没人系统对比过。中文社区更惨,搜出来的帖子一半在贴十年前 NModbus4 的代码,连 NModbus 主仓库已经迁移到 3.0.x 了都不知道。 我花了三天时间把这七个协议栈的仓库翻了一遍,跑了每个的最小示例,确认了维护状态。下面是结果。如果你赶时间,直接跳到「新手推荐路径」那一段,选你的平台对应的库,开工。 总览对比表 协议栈语言许可Star 数维护状态主站从站RTUTCP适合谁FreeModbusCBSD~1.5k低活跃付费✅✅✅STM32 裸机/RTOSlibmodbusCLGPL v2.1+~3.5k活跃✅✅✅✅Linux 工控机/网关pymodbusPythonBSD~2.2k非常活跃✅✅✅✅上位机/测试脚本NModbusC#MIT~700活跃✅✅✅✅.NET/WinForm 上位机jamodJavaApache 2.0~300停滞✅✅✅✅Java 遗留系统modbus-tkPythonLGPL~500低活跃✅✅✅✅快速原型QtModbusC++LGPL/GPLQt 内置活跃✅✅❌✅Qt 跨平台应用 Star 数是我在 2026 年 6 月抓的,大致数量级对,具体数字你去 GitHub 看一眼就知道。 FreeModbus —— 嵌入式裸机的标准答案 GitHub: https://github.com/cwalter-at/freemodbus FreeModbus 是 Christian Walter 写的,一个奥地利嵌入式工程师。这东西在 STM32 圈子里的地位相当于 Linux 内核里的 ext4——你不是不能用别的,但用它是最不会出错的。 **代码体积**:编译完大约 6-12KB ROM,取决于你开了哪些功能码和传输模式。RAM 开销几百字节,主要是那几块数据缓冲区和事件队列。基本上是个 Cortex-M0 就能跑。 **功能码支持**:03(读保持寄存器)、04(读输入寄存器)、06(写单个寄存器)、16(写多个寄存器)、01(读线圈)、02(读离散输入)、05(写单个线圈)、15(写多个线圈)。还有 17(报告从站 ID)。注意,没有 22(掩码写寄存器)和 23(读写多个寄存器),需要的话得自己加。 **传输模式**:RTU、ASCII、TCP 都支持,通过编译宏开关。 **主站/从站**:这是 FreeModbus 最容易被误解的地方。官方仓库只开源了从站代码,主站是付费的。GitHub 上有不少社区魔改版加了主站功能,比如 armink 的 FreeModbus_Slave-Master-RTT-STM32,开源的,质量不错,但不是官方维护。用这些第三方版本的时候注意:超时处理和重试逻辑实现得很粗糙,别直接上生产。 **代码示例**——STM32 上初始化一个 RTU 从站,地址 1,波特率 9600,无校验: #include "mb.h" int main(void) { eMBInit(MB_RTU, 0x01, 0, 9600, MB_PAR_NONE); eMBEnable(); while (1) { eMBPoll(); } } 就这三行。`eMBPoll()` 里跑着整个协议栈的状态机,非阻塞的,你需要在定时器中断里喂 3.5T 超时信号给它。这个 3.5T 定时器是 FreeModbus 移植的头号坑,下面会专门讲。 **已知问题**: - 官方仓库更新极慢,最后的大版本 v1.6 已经好几年没动了,bug 修不修看缘分 - 只支持单串口,一个协议栈实例只能绑定一个 UART,多串口场景要改代码 - TCP 模式用的是 lwIP raw API,不是 socket,这意味着 FreeRTOS+LWIP 环境下能用,但 Linux 上根本跑不了 TCP 模式 - 没有浮点数处理辅助函数,大小端转换自己写 **文档**:只有一份 API 文档,HTML 格式的,够用但谈不上好。中文社区教程倒是多,CSDN 搜一下一堆。 libmodbus —— Linux 工控机的不二之选 GitHub: https://github.com/stephane/libmodbus 维护者 Stéphane Raimbault,法国人。libmodbus 是 C 语言写的最成熟的 Modbus 库,没有之一。3.5k star 不是白来的。 这个库的设计思路跟 FreeModbus 完全不同。FreeModbus 是为资源受限的 MCU 设计的,用回调函数和状态机。libmodbus 是 POSIX 风格的,阻塞 API,`modbus_read_registers()` 调用会一直等到数据回来或超时。写工控机程序的人喜欢这种风格——简单直接,不用管什么状态机。 **功能码支持**:几乎所有。01/02/03/04/05/06/07/0F/10/11/16/17,还支持 22(掩码写)和 23(读写多个)。有 `modbus_set_float()` / `modbus_get_float()` 可以直接按 IEEE 754 处理浮点数,支持 ABCD/DCBA/BADC/CDAB 四种字节序。 **传输模式**:RTU + TCP 全支持。同一套 API,`modbus_new_rtu()` 创建串口上下文,`modbus_new_tcp()` 创建 TCP 上下文,之后读写接口完全一样。 **主站/从站**:都支持。TCP 从站用 `modbus_tcp_listen()` + `modbus_tcp_accept()`,和写 Linux socket 服务端一个套路。 **代码示例**——读从站 1 的保持寄存器 0x0000,返回 1 个 16 位值: #include <modbus.h> #include <stdio.h> int main() { modbus_t *ctx = modbus_new_rtu("/dev/ttyUSB0", 9600, 'N', 8, 1); modbus_set_slave(ctx, 1); modbus_connect(ctx); uint16_t val; modbus_read_registers(ctx, 0, 1, &val); printf("Register 0 = %dn", val); modbus_close(ctx); modbus_free(ctx); } **已知问题**: - `modbus_connect()` 的语义容易踩坑。RTU 模式下调的是 `open()` 打开串口,TCP 模式下调的是 `connect()` 连服务器。TCP 从站模式不需要也不能调 `modbus_connect()`,而是用 `modbus_tcp_listen()`。搞混了连不上还不知道为什么 - `modbus_free()` 之后指针不会自动置空。如果你在循环里重连,先 free 再 new,不手动 `ctx = NULL` 的话,偶尔会指向已释放的内存,表现为随机崩溃或疯狂重连。这个我吃过亏 - 线程不安全。一个 `modbus_t*` 上下文不能被两个线程同时操作,得自己加锁 - Windows 下串口名是 `\\.\COM10` 这种格式,Linux 是 `/dev/ttyUSB0`,跨平台编译要注意 **文档**:官网 libmodbus.org 有一套 manual page 风格的文档,外加 mkdocs 在线版。清晰但没什么示例项目,就 `tests/` 目录下那几个。 pymodbus —— Python 生态的事实标准 GitHub: https://github.com/pymodbus-dev/pymodbus pymodbus 是目前维护最活跃的 Modbus 库,没有之一。pymodbus-dev 组织接手后,3.x 重写了异步架构,支持 asyncio,还在持续发版。2024 年底最新的稳定版是 v3.6.x。 **功能码**:全支持。01/02/03/04/05/06/15/16/22/23,连 43(读设备识别)都有。 **传输模式**:RTU + TCP + TLS。TLS 支持是 pymodbus 3.x 新加的,可以直接跑 `modbus+tls://`。ASCII 模式也支持但在 3.x 里被标记为废弃。 **主站/从站**:都支持,而且支持同步和异步两种 API。从站可以跑一个完整的模拟器——`pymodbus.simulator` 能从 JSON 配置文件启动一个带多块寄存器的虚拟设备,上位机开发调试的时候非常好用。 **代码示例**——同步模式读一个保持寄存器: from pymodbus.client import ModbusSerialClient client = ModbusSerialClient(port="/dev/ttyUSB0", baudrate=9600) client.connect() rr = client.read_holding_registers(address=0, count=1, slave=1) print(rr.registers[0]) client.close() 异步版稍微多几行,用 `async with` 上下文管理器,配合 asyncio 跑。 **已知问题**: - 2.x 到 3.x 的 API 变化巨大。`pymodbus.client.sync.ModbusSerialClient` 变成了 `pymodbus.client.ModbusSerialClient`,`read_holding_registers` 返回值从 `ReadHoldingRegistersResponse` 变成了 `ModbusResponse`。如果你在网上搜到的示例代码用的是 `from pymodbus.client.sync import ...`,那肯定是 2.x 的,别直接抄 - 同步模式和异步模式不能混用。同一个进程里如果已经跑了 asyncio event loop,同步客户端会阻塞事件循环导致超时 - RTU 模式下串口超时配置比较敏感。默认的 3 秒超时对于低速设备(4800bps)可能不够,需要自己调到 5-10 秒 - pip 安装时 `pip install pymodbus`,不是 `pymodbus3` 或 `pymodbus2`,别装错了 **文档**:readthedocs 上有完整的文档,`examples/` 目录下有几十个示例脚本。没有中文文档,但英文很清晰。 NModbus —— .NET 平台的唯一严肃选择 GitHub: https://github.com/NModbus/NModbus NModbus 的历史有点绕。最早的 NModbus 是 Google Code 上(对,就是那个 Google Code)的一个项目,后来迁移到 GitHub 变成 NModbus4,再后来 NModbus4 也停更了。现在的 NModbus/NModbus 是 NModbus4 的继任者,维护者 rquackenbush,活跃开发中,nuget 包名 `NModbus`,最新版 3.0.x,支持 .NET 6+。 **功能码**:01/02/03/04/05/06/15/16 全支持。22 和 23 需要自定义功能码处理。 **传输模式**:RTU、ASCII、TCP、UDP 全支持。串口通过 `NModbus.Serial` 包,支持 Windows/Linux。 **主站/从站**:都支持。从站支持自定义数据存储,可以把寄存器映射到内存、数据库甚至 PLC。 **代码示例**——TCP 主站读一个寄存器: using NModbus; var client = new TcpClient("192.168.1.100", 502); var factory = new ModbusFactory(); var master = factory.CreateMaster(client); ushort[] result = master.ReadHoldingRegisters(1, 0, 1); Console.WriteLine(result[0]); **已知问题**: - 串口支持依赖 `System.IO.Ports`,Linux 上需要额外配置权限 - `SlaveDataStore` 在多线程下不是线程安全的,高并发读写时要自己加锁 - 异步 API(`ReadHoldingRegistersAsync`)返回 `Task`,但底层 I/O 实际上是同步的,没有真正的 async I/O **文档**:README 够用,`Samples/` 目录有几个示例。主要靠 Stack Overflow 上的老帖子。 jamod —— Java 生态的「前辈」,但建议你别用 SourceForge: https://sourceforge.net/projects/jamod/ GitHub (openHAB fork): https://github.com/openhab/jamod jamod 是 Dieter Wimberger 在 2002 年写的,比在座很多工程师的工龄都长。最后一次实质性更新是 2010 年,之后基本就没有了。openHAB 社区 fork 了一个版本修了几个 bug 给自己用,但那个 fork 也只是被动维护。 如果你现在新开一个 Java 项目要做 Modbus,直接跳过 jamod,看 j2mod(GitHub: steveohara/j2mod)。j2mod 是 jamod 的重写版本,Apache 2.0 许可,Java 8+,还在更新(2024 年 7 月最后一次提交),RTU + TCP 全支持,主站从站都有。 但既然这篇文章要覆盖 jamod,我还是写上。jamod 支持的功能码:01/02/03/04/05/06/15/16。传输模式 RTU + ASCII + TCP。串口通信依赖 `javax.comm`(巨古老的 API,JDK 都不自带了),替代方案是 RXTX 或 jSerialComm。 代码示例: import net.wimpi.modbus.Modbus; import net.wimpi.modbus.io.ModbusTCPTransaction; import net.wimpi.modbus.msg.ReadInputRegistersRequest; import net.wimpi.modbus.msg.ReadInputRegistersResponse; import net.wimpi.modbus.net.TCPMasterConnection; import java.net.InetAddress; TCPMasterConnection conn = new TCPMasterConnection( InetAddress.getByName("192.168.1.100")); conn.connect(); ReadInputRegistersRequest req = new ReadInputRegistersRequest(0, 1); ModbusTCPTransaction trans = new ModbusTCPTransaction(conn); trans.setRequest(req); trans.execute(); ReadInputRegistersResponse res = (ReadInputRegistersResponse) trans.getResponse(); System.out.println(res.getRegisterValue(0)); conn.close(); 「已知问题」这个词对 jamod 来说太轻了,它本身就是个问题。但如果你维护的是 2012 年的老系统,又不得不用它,那 openHAB 的 fork 比原版靠谱。 modbus-tk —— 快速原型的好帮手 GitHub: https://github.com/ljean/modbus-tk 法国人 Luc Jean 写的,名字里的 tk 是 TestKit 的缩写——定位非常明确:测试工具。不是给生产环境用的。但实际上很多人拿它做了生产,因为它确实简单。 **功能码**:01/02/03/04/05/06/15/16。不支持 22/23。 **传输模式**:RTU + TCP。ASCII 不支持。 **主站/从站**:都支持。从站可以很方便地 `add_slave` + `add_block` 创建模拟设备。内置一个 hook 函数机制,可以在收到读写请求时插入自定义逻辑——这个设计很聪明,写测试脚本的时候可以直接在 hook 里注入故障场景。 **代码示例**——RTU 主站读寄存器: import serial import modbus_tk.defines as cst from modbus_tk import modbus_rtu master = modbus_rtu.RtuMaster( serial.Serial(port="/dev/ttyUSB0", baudrate=9600)) val = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 1) print(val[0]) **已知问题**: - 最后更新在 2020 年左右,bug fix 基本靠社区 PR。Python 3.12 的兼容性可能有问题 - 没有异步支持,所有操作都是同步阻塞的 - 浮点数没有内置辅助,你得自己 `struct.pack/unpack` - 主站 `execute()` 方法的超时行为不太可控,底层依赖 pyserial 的超时,遇到无响应的从站可能卡很久 **文档**:`examples/` 目录里几个示例就是全部文档了。好在代码量小,花十分钟就能看完。 QtModbus —— Qt 开发者的原生方案 这不是一个「库」,是 Qt 官方 `qtserialbus` 模块的一部分。Qt 5.8 引入,现在是 Qt 6 的标配模块。 因为是 Qt 官方的,API 设计完全是 Qt 风格:信号槽、事件循环、`QModbusReply`。跨平台天然支持——同一套代码在 Windows、Linux、macOS、嵌入式 Linux(Boot2Qt)上都能跑。 **功能码**:通过 `QModbusDataUnit::RegisterType` 枚举支持所有标准类型:Coils、DiscreteInputs、InputRegisters、HoldingRegisters。底层可以发自定义功能码。 **传输模式**:只有 TCP(`QModbusTcpClient` / `QModbusTcpServer`)。**没有 RTU**。这是一个重要的限制——Qt 官方没有内置 Modbus RTU 支持,你得用 `QSerialPort` 自己在应用层写 RTU 帧解析,或者找第三方实现。有些开发者用 `QModbusRtuSerialMaster`(一个社区项目)来填补这个空缺。 **主站/从站**:都支持。TCP 从站可以通过 `QModbusTcpServer` 实现,自定义数据映射到 `QModbusServer` 的注册表。 **代码示例**——TCP 客户端读一个寄存器: #include <QModbusTcpClient> #include <QModbusDataUnit> auto client = new QModbusTcpClient(this); client->setConnectionParameter( QModbusDevice::NetworkAddressParameter, "192.168.1.100"); client->setConnectionParameter( QModbusDevice::NetworkPortParameter, 502); client->connectDevice(); QModbusDataUnit unit(QModbusDataUnit::HoldingRegisters, 0, 1); auto *reply = client->sendReadRequest(unit, 1); connect(reply, &QModbusReply::finished, this, [reply]() { qDebug() << reply->result().values().at(0); }); 异步的,用信号槽连接结果。注意 `sendReadRequest` 返回的 `QModbusReply*` 生命周期归 Qt 管理,别手动 delete。 **已知问题**: - 没有 RTU,这是最大的一个。你没看错,Qt 官方的 Modbus 模块没有 RTU - 连接断开后不会自动重连,你得在 `stateChanged` 信号里自己写重连逻辑 - `QModbusTcpServer` 的 TCP 连接数有上限,默认是 1。要通过 `setMaxClients()` 改 - 许可问题:Qt 是 LGPL/GPL 双许可,商业闭源项目需要买 Qt Commercial License **文档**:Qt 官方文档一流。示例项目在 Qt Creator 欢迎页就能找到。 新手推荐路径 别纠结了,按你的技术栈选: - **STM32 裸机 / FreeRTOS** → FreeModbus。你没别的选择,它就是标准答案。移植花半天,调通 3.5T 定时器再加半天,之后就不用管了 - **Linux 工控机 / 网关(C)** → libmodbus。如果是树莓派跑 Debian 做 Modbus 网关,libmodbus + MQTT 桥接是经典方案。`libmodbus` 采集,`mosquitto` 上云 - **Python 上位机 / 测试脚本** → pymodbus。pymodbus.simulator 仿真 + pymodbus client 读写,一个脚本搞定设备调试。配合 pytest 可以做 Modbus 自动化测试 - **C# WinForm / WPF 上位机** → NModbus。NuGet 安装,三行代码开始读寄存器。配合 ScottPlot 做实时曲线,工厂里最常见的技术栈组合 - **Qt 跨平台桌面应用** → QtModbus。如果你的应用已经用了 Qt,别引入额外的 C 库依赖,直接用 Qt 官方的 - **Java 企业系统(新项目)** → 不要用 jamod。用 j2mod(GitHub: steveohara/j2mod),它是 jamod 的现代化重写,API 清晰得多 - **快速验证想法** → modbus-tk。三分钟搭一个从站模拟器,验证寄存器映射对不对,然后切到 pymodbus 做正式的 经典组合方案 **「FreeModbus 从站 + pymodbus 上位机测试」**:嵌入式设备跑 FreeModbus 做从站,开发阶段用 Python 写 pymodbus 脚本读写寄存器做功能验证。比用 Modbus Poll 灵活——你能在脚本里加数据校验、边界测试、压力测试。调通之后,再换成真正的上位机(C# 或 Qt)。 **「libmodbus 网关 + pymodbus 配置工具」**:工控机跑 libmodbus 对接下面几十台 Modbus RTU 设备,数据收集后转 MQTT 上云。Web 后台用 pymodbus 做设备参数读写——不要求实时性,Python 的开发效率碾压一切。 **「QtModbus 做界面 + libmodbus 做底层」**:Qt 写跨平台桌面 SCADA,人机交互和图表用 Qt Charts,但 Modbus 通信不直接用 QtModbus(因为没有 RTU),而是通过 libmodbus 的 C API 做底层采集,Qt 只负责显示。这个组合在厂区监控系统里很常见。 避坑清单 **第一坑:FreeModbus 的 3.5T 定时器** Modbus RTU 协议规定帧与帧之间至少间隔 3.5 个字符时间。波特率 9600 时一个字符大约 1ms,3.5T ≈ 3.5ms。很多人移植时直接把定时器设成 3.5ms 周期中断。错了。FreeModbus 的 3.5T 定时器用法是:每收到一个字节就重置定时器,如果定时器溢出(说明 3.5T 内没有新字节),则认为一帧结束。所以定时器要设成单次模式,不是周期模式。在收到字节的中断里调 `vMBPortTimersEnable()` 重新启动定时器。 波特率不同时 3.5T 对应的时间不同:9600bps → ~3.65ms,19200bps → ~1.83ms,115200bps → ~304μs。115200 下 3.5T 只有 300 微秒左右,如果你的定时器最小粒度是 1ms,校准不了那么精细,帧间隔检测就会出错。这时候要么降波特率到 38400,要么用硬件定时器的高精度模式。 **第二坑:libmodbus 的 connect vs new_tcp vs listen 语义** `modbus_new_tcp("192.168.1.100", 502)` 创建上下文,但还没连接。 `modbus_connect(ctx)` 在 RTU 模式下打开串口,在 TCP 主站模式下 connect 到服务器。 TCP 从站模式不要调 `modbus_connect()`,而是 `modbus_tcp_listen(ctx, 1)` + `modbus_tcp_accept(ctx, &socket)`。 最常见的错误:写 TCP 从站的时候习惯性调了 `modbus_connect()`,然后发现怎么都收不到主站的请求。因为 `connect()` 是去连别人,不是等别人来连你。 另外一个坑:`modbus_free(ctx)` 之后 `ctx` 指针还在。如果你要在循环里重连(比如网络断了又恢复),必须先 `ctx = NULL` 再 `modbus_new_tcp()`,否则有概率访问已释放的内存。Wireshark 抓包会看到 TCP SYN 疯狂重发几万次——那是 `modbus_connect()` 在访问野指针。 **第三坑:pymodbus 同步 vs 异步模式混用** pymodbus 3.x 有两套客户端 API:同步的 `ModbusSerialClient` / `ModbusTcpClient`,异步的 `AsyncModbusSerialClient` / `AsyncModbusTcpClient`。 如果你在一个已经有 asyncio 事件循环的进程里用同步客户端,底层的 socket I/O 会阻塞事件循环,导致所有异步任务暂停。反过来,在纯同步脚本里用异步客户端,`await` 语法会报错。 规则很简单:要么全同步,要么全异步。测试脚本一般用同步就够了。生产环境如果是一个进程要同时连几十台设备,必须用异步模式,不然一个设备超时拖着其他 49 个一起等。 **第四坑:字节序问题——不是库的锅,但每次都是坑** Modbus 协议本身只定义了 16 位寄存器的传输格式——大端(Big-Endian),高字节在前。但当你用两个寄存器传一个 32 位浮点数时,谁在前谁在后,协议没说。不同厂商的处理方式不一样: - 施耐德 PLC 用大端双字(ABCD):寄存器 N 存高 16 位,N+1 存低 16 位 - 西门子 S7-1200 用字节交换后的格式(CDAB 或 BADC) - 有些国产仪表用纯小端(DCBA) libmodbus 提供了 `modbus_set_float()` 和四种字节序常量,pymodbus 有 `BinaryPayloadDecoder` 可以指定字节序,FreeModbus 什么都没有——自己用 `union` 或者 `memcpy` 拼。 血的教训:调了两天发现温度读数是个天文数字,最后是字节序反了。先确认对方设备的手册上有没有写 Float 的存放格式。如果没写,读两个寄存器自己拼,换四种排列总有一个是对的。 **第五坑:广播地址 0 的坑** Modbus 规定地址 0 是广播地址,主站发广播帧,所有从站执行但不回复。但实际上很多从站设备根本不支持广播,发地址 0 过去直接没反应。还有的设备虽然支持广播但不全支持——06(写单个寄存器)广播能执行,16(写多个寄存器)广播就忽略。 如果你在用 `libmodbus_set_slave(ctx, 0)` 发广播,别指望有回复。`modbus_read_registers()` 在广播模式下的行为是未定义的。 选型决策速查 如果你不想看上面洋洋洒洒几千字,这里有个决策树: 1. 目标平台是 MCU 裸机 → FreeModbus 2. 目标平台是 Linux → libmodbus 3. 你用 Python → pymodbus 4. 你用 C# / .NET → NModbus 5. 你用 Qt → QtModbus(TCP 场景)或 libmodbus(RTU 场景) 6. 你用 Java 新项目 → j2mod,别碰 jamod 7. 你只是要快速搭个测试 → modbus-tk,验证完切 pymodbus 所有库我都贴了最小可运行示例,复制粘贴改一下设备地址就能跑。通信调不通的时候,先拿 Modbus Poll 或 pymodbus 搭个纯软件环回确认硬件链路没问题,再怀疑协议栈的 bug。 有问题到 modbus.cn 论坛聊。 --- ### 142. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 写在前面的话 Modbus 不安全。这不是什么新发现——1979 年 Modicon 设计这个协议的时候,连互联网都没普及,更不会想到有一天 PLC 会通过 4G 模块直接暴露在公网上。那时候的威胁模型是「电缆会不会被老鼠咬断」,不是「有没有人在 502 端口上做中间人攻击」。 但这不代表 Modbus 不能用。一个协议的问题和工程现场的问题是两回事。在机柜里、在被隔离的控制网上、在一对一物理连接的 RS-485 总线上,Modbus 明文的缺点几乎不构成威胁。问题出在什么时候?出在你把那根 RS-485 线接上一个 4G DTU,然后 DTU 配了个公网 IP,然后默认密码还没改。 这篇文章不讲安全理论,讲九个你我都可能遇到的情况——不是「如果」而是「已经发生过」。然后我们讨论在不换设备、不推翻现有架构的前提下,怎么把风险降到一个可接受的水平。 Modbus 到底缺了什么 先搞清楚 Modbus 缺失的到底是什么。不是「不安全」三个字就能概括的。 **没有认证机制。** Modbus TCP 的 MBAP 头里有个 Unit ID 字段,1 字节。这玩意儿是设备地址,不是身份凭证。任何能建立 TCP 连接到 502 端口的人,都可以发送功能码 0x03 读保持寄存器、功能码 0x06 写单个寄存器。试试看:telnet 过去发 `x00x01x00x00x00x06x01x03x00x00x00x01` ——只要设备在线,它就会返回寄存器数据。不需要密码,不需要 token,不需要任何形式的身份验证。 拿功能码 0x05 写单个线圈来说。这一帧只有 12 字节: | TX ID | Proto | Len | UID | FC | Coil Addr | Value | |---------|-------|------|-----|-----|-----------|----------| | 00 01 | 00 00 | 00 06| 01 | 05 | 00 01 | FF 00 | 这个帧的意思是:把设备 01 的线圈地址 0001 置为 ON。如果你是一个合法的 SCADA 客户端,这没问题。如果你是一个连上 502 端口的陌生人,这也是有效的。设备不会区别对待。 **没有加密。** TCP 载荷里的每一个字节都是明文。Wireshark 用 `modbus` 过滤器可以直接看到事务 ID、功能码、寄存器地址、数据值。抓一包 Modbus TCP 流量等于拿到整套寄存器映射表。一个有心人看你工厂的 Modbus 流量五分钟,能画出所有设备的寄存器图。 **CRC 验不了篡改。** Modbus RTU 的 CRC-16 和 Modbus TCP 依赖的 TCP 校验和,设计目的都是检测物理传输层的比特错误——线缆噪声、电磁干扰导致的数据翻转。它们不是密码学哈希,不能防刻意篡改。攻击者截获一帧,改寄存器值,重新计算 CRC,转发出去,从站无法区分这一帧是不是被改过。 看一下攻击流: 原始帧 (主站→从站): 01 06 00 01 17 70 D8 0B (写保持寄存器地址0001=6000, 对应50Hz) 截获→篡改后帧: 01 06 00 01 02 58 C9 C3 (改成600, 对应5Hz) CRC 变了,但攻击者也算得出来。从站收到后照样执行。变频器上限频率从 50Hz 变成了 5Hz——电机没烧,但泵不出水了。 **没有防重放。** Modbus 没有时间戳、没有序列号保护(MBAP 里的事务 ID 只是用来匹配请求与响应,不是安全序号)。同一帧可以无限重放。上个月你给风机发了停机指令,攻击者录下来,下个月再发一次——解码完全一样,设备照样停。 九个真实风险场景 不是说理论上的漏洞,是下面这些事情已经在不同现场发生过。有些是我自己碰到的,有些是同行聊起的,有些是公开报告里的。 场景 1:Modbus TCP 直连公网——502 端口暴露在 Shodan 上 Shodan 上搜 `port:502`,结果数一直在涨。两三年前公开数据大概六七千台,现在早就过万了。这些设备里有 PLC、RTU、网关、智能电表,有的跑在数据中心,有的挂在水厂 SCADA 的主干网上。Shodan 还会抓取设备返回的 Modbus 响应,直接显示设备型号、固件版本。 什么都不用破解。你把设备 IP 配成公网地址,502 端口没做任何 ACL——这就跟把车间大门开着、设备操作面板对着马路一样。 nmap 扫一下更直观: nmap -p 502 --script modbus-discover <target_ip> 这个 NSE 脚本会尝试读取设备信息。如果设备响应了 0x11(报告从站 ID)或 0x2B(设备识别),它直接告诉你制造商、产品代码、固件版本。零门槛。 场景 2:水厂/变电站 Modbus RTU 通过 4G DTU 透明传输上云 现场用的是 RS-485 跑 Modbus RTU,几十台仪表挂在总线上。为了远程监控,加了个 4G DTU,配置成透明传输模式——DTU 把串口数据打包成 TCP 包发到云端服务器。公网 IP,端口 8899(不是 502,但差别不大)。 问题来了:DTU 和云服务器之间的链路是明文 TCP。任何能在这段链路做 MITM(中间人)的人——不一定是国家级攻击者,可能是运营商内部人员、4G 信号劫持设备、或者同基站下的其他设备利用 LTE 网络漏洞——都可以: 1. 监听所有 Modbus RTU 流量,拿到完整的寄存器映射和实时数据 2. 注入伪造的写指令(功能码 0x06 或 0x10),修改设备参数 3. 甚至向从站发送广播指令(地址 0x00),同时控制总线上所有设备 去年有个水厂的案例:攻击者通过公开的云平台 IP 连上了 DTU 的后台管理端口(默认密码 admin/admin),直接看到整个泵站的控制界面。万幸只是看了,没操作。 场景 3:Modbus 转 MQTT 网关——MQTT 侧裸奔 这种架构现在很常见:Modbus RTU 设备 → 网关做协议转换 → MQTT Broker(云端或本地)→ 上层应用消费。 网关把寄存器数据映射成 MQTT Topic,比如 `/plant1/pump1/pressure` → 保持寄存器 40001 的值。这个设计本身没问题——MQTT 的发布/订阅模型确实比 Modbus 轮询更适合云端场景。 问题出在 MQTT 侧:很多部署没开 TLS,Broker 不需要客户端证书认证,Topic 没有 ACL。攻击者只要知道 Broker 地址和端口(通常 1883,明文 MQTT 默认端口),用 `mosquitto_sub` 就能订阅所有 Topic: mosquitto_sub -h <broker_ip> -p 1883 -t "#" -v `#` 是 MQTT 的多级通配符,订阅所有 Topic。几秒钟后,整个工厂的温度、压力、电表读数、设备状态全部到手。如果 Broker 还允许发布(很多网关的双向控制功能依赖这个),攻击者可以直接向控制 Topic 发送指令: mosquitto_pub -h <broker_ip> -p 1883 -t "/plant1/pump1/control" -m "STOP" 场景 4:工厂内网 Wi-Fi 上的 Modbus TCP 被嗅探 不少工厂为了布线方便,把 Modbus TCP 设备和 SCADA 服务器挂在同一个 Wi-Fi 网络上。Wi-Fi 密码写在设备标签上,贴在机柜外面——防君子不防小人。 内部员工(或者访客、维保人员、离职员工留下的设备)连上这个 Wi-Fi 后,Modbus TCP 流量全是广播域内的明文。Wireshark 抓包: 过滤器: modbus && tcp.port == 502 抓个十分钟就能把所有设备的寄存器映射画出来。如果攻击者还想更进一步,ARP 欺骗把 SCADA 服务器的流量引到自己机器上,然后作为中间人转发——设备端的 Modbus 通信不会中断,SCADA 界面一切正常,后台的数据已经在被实时窃取。 场景 5:楼宇自控 BACnet-Modbus 网关配置页未设密码 楼宇自控系统里,BACnet 和 Modbus 经常会混在一个网关上。比如 Delta Controls、Siemens Desigo 的一些网关产品,既有 Modbus RTU 接口接仪表,又有 BACnet/IP 接口上 BMS。 这些网关通常会提供一个 Web 配置页面。默认情况下,很多集成商上线时只改 IP 地址、配置好寄存器映射,密码还是出厂默认——或者压根没设密码。Web 页面暴露了完整的寄存器映射表、设备地址、功能码配置、甚至在线调试功能——可以直接在里面发 Modbus 读写指令。 Shodan 上搜 `BACnet gateway` 或特定网关型号的产品页面,能找到不少这样的入口。进去了不只是看数据——能直接在 Web 界面上改暖通阀门开度、设空调温度设定值、启停冷水机组。 场景 6:风电场 SCADA 的 Modbus 控制指令被重放 风电场 SCADA 系统通常用 Modbus TCP 和风机 PLC 通信。控制指令包括启停、桨距角调整、偏航控制、功率限制等。 2015 年乌克兰电网攻击事件之后,大家对 OT 安全总算开始重视。但风场的情况比较特殊——很多风场建在偏远地区,远程运维依赖 VPN 或专线,运维人员流动性大,VPN 账号管理经常跟不上。 如果一条「紧急停机」Modbus 指令(功能码 0x05,写某一个线圈)在传输过程中被坏人截获——无论通过什么手段,可能是 VPN 客户端被控、可能是运维笔记本被植入木马、可能是内网横向移动——这个帧可以被保存下来。攻击者不需要理解 Modbus 协议细节,不需要知道寄存器映射,只需要几个月后在夜间重放这个帧。风机收到后就会执行停机。 重放不挑时间、不挑目标。录一次,发一百次。而 Modbus 协议原生没有任何机制能阻止这件事。 场景 7:OEM 设备默认配置被利用 OEM 设备厂商为了提高出货效率,所有的 PLC/RTU 用统一的从站地址(比如地址 01)、统一的功能码支持列表、甚至统一的寄存器映射。更糟糕的是,有些厂商在固件里写死了通信参数——没法改。 这在设备调试阶段很方便。但在实际部署以后,变成安全噩梦。 假设一个分布式光伏项目用了同一批逆变器,所有设备的从站地址都是 01,寄存器映射完全一样(40001=功率,40003=电压,40005=运行状态,40101=开关机控制)。攻击者攻破其中一台设备或者中间的网络节点,他等于拿到了所有设备的控制蓝图。别的设备不用重新侦察——寄存器映射完全是同一份。 场景 8:寄存器写入攻击——修改设备参数 这个场景最危险。Modbus 的保持寄存器不光存测量数据,还存设备参数。变频器上限频率、PID 参数、报警阈值、校准系数——都在寄存器里。能写寄存器的人就能改变设备的物理行为。 具体例子: 设备寄存器地址参数正常值恶意值后果变频器40018上限频率5000 (=50Hz)500 (=5Hz)泵出水不足,产线停产温控器40005目标温度250 (=25.0℃)800 (=80.0℃)过温保护跳闸,或者反过来改低导致冻结电表40045电流变比1001电量数据偏差百倍,能耗核算崩盘PLC40001运行模式1 (运行)0 (停止)直接让 PLC 停止执行逻辑 不需要做什么复杂攻击。nmap 的 modbus-discover 脚本扫一遍拿到寄存器映射,然后 modbus-cli 或 pymodbus 直接往里写: from pymodbus.client import ModbusTcpClient client = ModbusTcpClient('192.168.1.100') client.write_register(18, 500) # 把变频器上限频率改成5Hz 四行代码。不需要任何权限。变频器收到了就执行。 场景 9:RS-485 总线物理接入——车间门没锁 RS-485 总线的物理安全性几乎是零。总线上的所有设备共享一对差分信号线(A+/B-),任何人在总线的任何位置接上一个 USB-RS485 转换器,就能: 1. **被动监听**:把所有 RS-485 流量记录下来,离线分析 2. **主动注入**:伪装成主站或者从站发送指令 3. **总线干扰**:持续发送数据造成总线冲突,DDoS 整个网络 一个 USB-RS485 转换器淘宝十几块钱。一个机智的攻击者在夜班巡检时,趁人不注意把转换器藏在线槽里,加一个微型 4G 模块做远程接入。谁能发现?没有人会定期检查 RS-485 总线的电气特性。 关键是 RS-485 总线的设计本身就是多站共享介质,不需要交换机、不需要端口接入许可。物理上挂上去就是网络的一员。Modbus RTU 的从站地址只有 1-247,攻击者可以枚举所有地址,逐个探测设备类型。 分层防御:从物理层到监控层的完整方案 讲完九个场景之后,一个自然而然的结论是:不能靠单一手段解决 Modbus 安全问题。它的问题分布在协议栈的每一层,防护也得跟着分。 下面这些方案不是在讲理论——每一条都有对应的产品、开源工具或者配置方法。按自己的现场条件挑着用。 网络层:把 Modbus 关进笼子 **第一条铁律:Modbus 502 端口绝对不要直接暴露在公网上。** 这句话怎么强调都不过分。如果你的设备供应商跟你说「直接把 IP 配成公网的,我们远程维护方便」——换供应商。 具体操作: **防火墙 ACL 白名单。** 不是黑名单,是白名单。502 端口只允许指定 IP(SCADA 服务器、数据采集网关)访问。Linux iptables 两行搞定: iptables -A INPUT -p tcp --dport 502 -s 192.168.10.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 502 -j DROP 如果你的设备 CPU 跑不动 iptables,用硬件防火墙(几百块的小型工业防火墙就行),或者至少在路由器/三层交换机上做 ACL。 **VLAN 隔离。** 把 Modbus 设备放在独立的 VLAN 里,和办公网络、Wi-Fi 网络、访客网络完全隔离。VLAN 间路由只放行 SCADA 服务器到 502 端口的流量,其他一概不路由。交换机端口上做 MAC 绑定,防止有人把设备拔了换自己的笔记本。 **VPN/IPsec 隧道。** 需要远程访问的场景,走 VPN 而不是把端口开到公网上。IPsec 或 WireGuard 都可以。OpenVPN 的配置不复杂: # 服务端只允许 502 端口流量通过隧道 push "route 192.168.10.0 255.255.255.0" 这保证了 Modbus 流量始终在加密隧道里传输。即使攻击者拦截了 VPN 链路,TLS/AES 加密也会让他拿不到明文。 传输层:Modbus 加 TLS 的方案 提到 Modbus 加 TLS,得先说现状:**Modbus Organization 在 2018 年 10 月发布了 Modbus/TCP Security 规范**。核心变化:默认端口从 502 改为 802,TLS 1.2 强制,X.509v3 证书做身份认证,同时引入基于角色的访问控制(Role-Based Access Control,RBAC)。 规范定义了四个角色: 角色 ID角色名权限0Administrator全功能码、全寄存器、设备管理1Operator读写所有寄存器,不能改配置2Engineer调试诊断权限3Observer只读数据,不能写 这彻底解决了 Modbus 无认证的问题——客户端必须持有有效证书才能建立 TLS 连接,证书中的角色字段决定了能执行哪些功能码。 但现实是,支持 802 端口的设备少得可怜。绝大多数存量设备只支持 502 明文。不换设备怎么加 TLS? **stunnel 方案。** stunnel 是一个轻量的 TLS 代理,能把任意 TCP 连接封装到 TLS 隧道里。部署架构: SCADA 客户端 → stunnel(本地127.0.0.1:1502) → TLS → stunnel(远程) → 设备(502) stunnel 配置很短: # 客户端 stunnel.conf [modbus-client] client = yes accept = 127.0.0.1:1502 connect = 192.168.10.1:802 verifyChain = yes CAfile = /etc/stunnel/ca.pem cert = /etc/stunnel/client.pem key = /etc/stunnel/client.key # 服务端 stunnel.conf [modbus-server] client = no accept = 802 connect = 127.0.0.1:502 cert = /etc/stunnel/server.pem key = /etc/stunnel/server.key CAfile = /etc/stunnel/ca.pem verifyChain = yes 客户端软件连 `127.0.0.1:1502` 而不是直连设备的 502。中间的 TLS 加密对上层完全透明。stunnel 本身只有几百 KB,可以跑在嵌入式 Linux 网关、树莓派、甚至 OpenWrt 路由器上。 **注意:** stunnel 解决的是传输加密问题,不解决应用层认证问题。它保证了传输链路不被窃听和篡改,但一旦 TLS 隧道建好,Modbus 帧本身依然是明文——只是这个明文只在加密隧道和保护的内网之间传输。如果攻击者能进入内网并直接连设备的 502,stunnel 保护不了。 应用层:Modbus 安全代理/网关 如果你不能在每个设备端部署 stunnel,或者需要更细粒度的控制,在 Modbus 总线和上层应用之间加一个安全代理/网关是性价比最高的方案。 Moxa MGate 系列、Hilscher netTAP、Advantech ADAM-4570 这些工业网关都支持访问控制列表。你可以在网关上配置: - 哪个 IP 可以访问哪些从站地址 - 允许哪些功能码通过 - 寄存器级读写控制——比如地址 40001-40050 只读,40051-40100 可读写 - 连接速率限制(防暴力轮询/DoS) 选型时看清楚:不是所有 Modbus 网关都支持安全策略。很多廉价网关只是做透传,ACL 功能在选型表里要找 `Access Control` 或 `Security Policy` 字段。 开源方案也不是没有。用 pymodbus 写一个代理也就几百行代码: # 简化版 Modbus 安全代理逻辑 ALLOWED_FUNCTION_CODES = {0x03, 0x04, 0x06, 0x10} # 只允许这些功能码 READ_ONLY_REGISTERS = range(40001, 40051) # 这个地址段只读 def proxy_handler(request): if request.function_code not in ALLOWED_FUNCTION_CODES: return exception_response(request.function_code, 0x01) # 非法功能码 if request.function_code in {0x06, 0x10}: for addr in request.addresses: if addr in READ_ONLY_REGISTERS: return exception_response(request.function_code, 0x02) # 非法数据地址 # 转发到实际设备 return forward_to_device(request) 这几行挡掉了场景 8 里大部分寄存器写入攻击。 物理层:RS-485 总线的物理安全 物理安全听起来「低级」,但九个场景里至少三个和物理接入有关。 最低成本也能做的几件事: 1. **机柜上锁。** 不只是一个简单的钥匙锁——用电子门禁,记录谁什么时候开了哪个机柜。异常时间(凌晨两三点)的机柜开门=物理安全事件。 2. **RS-485 总线用带屏蔽的双绞线走线槽。** 线槽加封条,拆开有痕迹。不是防不住,是让攻击者留下证据。 3. **USB 端口禁用。** 工厂里的工控机/HMI 不需要插 U 盘。BIOS 禁用 USB、Windows 组策略禁用可移动存储。有人插 USB-RS485 转换器,系统不识别。 4. **总线终端电阻加防拆传感器。** RS-485 总线两端各有一个 120Ω 终端电阻。如果一个电阻被移除(有人在线中间接了一个监听设备导致阻抗变化),总线的电气特性会变化——可以用总线分析仪检测。 花不了多少钱,但挡住 90% 的物理接入攻击足够了。 监控层:Modbus 流量异常检测 前面的所有措施都是「不让他进来」。但对「已经进来了」或者「合法用户做了不合法的事」的情况,你还需要检测能力。 Modbus 流量的异常特征很明确——正是因为协议简单,异常更容易识别: **轮询周期突变。** SCADA 系统通常以固定周期轮询设备(比如每秒一次)。如果某个从站的请求频率突然从 1 次/秒变成 100 次/秒,大概率不是 SCADA 的行为。可能是有人在暴力扫描寄存器。 **非标准功能码出现。** 一个只用了 0x03(读保持寄存器)和 0x06(写单个寄存器)的系统,突然出现 0x08(诊断)或 0x2B(设备识别)请求——这是侦察行为的典型特征。 **非工作时间流量。** 工厂停产时段(比如晚上 11 点到早上 6 点),Modbus 总线上不应该有大量读写指令。如果有,报警。 **异常功能码组合。** 短时间内出现 0x05(写单个线圈)、0x06(写单个寄存器)、0x10(写多个寄存器)的密集组合,且目标地址跨越多个不相邻的区域——几乎可以确定是恶意操作。 开源工具方面: # Zeek (原Bro) 有 Modbus 协议解析器 # 写一个检测脚本放在 Zeek 的策略目录 Wireshark + Modbus 插件可以用来做离线流量审计。把一天的总线流量抓下来,用 Wireshark 的 `Statistics` → `Protocol Hierarchy` → `Modbus` 看功能码分布。功能码 0x08 和 0x2B 的出现是红旗。 nmap 的 `modbus-discover` NSE 脚本应该周期性地从你自己的 SCADA 服务器运行,检查有没有新的 Modbus 设备出现在网络上: nmap -p 502 --script modbus-discover 192.168.10.0/24 发现了不属于你的设备,事情就严重了。 合规性参考 不展开讲法规条文,只说对 Modbus 部署直接有影响的几条。 **IEC 62443-3-3** 定义了工业自动化和控制系统的七个基础要求(FR1-FR7)。其中 FR2(使用控制)要求对工业通信实施认证和授权,FR3(系统完整性)要求对通信数据进行完整性校验。明文 Modbus 直接不符合 FR2 和 FR3。加 stunnel/VPN 后可以满足密码学层面的要求。 **NERC CIP(北美电力可靠性标准)** 的 CIP-005 要求对电力系统电子安全边界(ESP)实施访问控制。这意味着如果你在美国电力行业用 Modbus 传输控制指令,502 端口必须在 ESP 内部或者通过 ESP 的加密隧道,不能裸奔。CIP-007 还要求系统打补丁和最小化端口,和 Modbus 设备的固件管理直接相关。 **中国等保 2.0(GB/T 22239-2019)** 对工控系统有专门的扩展要求。主要包括:控制网络和非控制网络之间实施边界防护和技术隔离;使用广域网进行控制指令传输时采用加密认证;工业控制系统内部根据业务划分安全域并实施隔离。用 Modbus 的设备如果在等保三级及以上的系统里,基本的网络隔离、通信加密、访问控制是硬性要求,没有可选余地。 这些合规要求不是摆设——审计的时候会查网络架构图、防火墙规则、抓包验证。拿 Modbus TCP 明文走公网通不过任何一项合规审计。 最低成本防护清单 如果你在一个中小工厂、预算有限、设备老旧不能换、也没有专职安全工程师,下面 5 条是你现在就能做的。**这 5 条挡住 90% 的攻击,不需要额外采购设备:** 1. **检查所有 502 端口是否可以从公网访问。** 到 https://www.shodan.io 搜你的公网 IP 段,或者在外部网络用 `nmap -p 502 <公网IP>` 扫一遍。发现暴露的,立刻关掉端口映射或者加 AC。 2. **Modbus 网关/DTU 改默认密码。** 不只是网关的 Web 管理页面——确认 DTU 的 AT 指令配置密码(如果支持)、MQTT Broker 的认证、VPN 的预共享密钥,全部改掉。 3. **把 Modbus 设备放在独立 VLAN,配置白名单 ACL。** 如果交换机不支持 VLAN,至少划一个独立的 IP 子网,路由器上做 ACL,只允许 SCADA 服务器 IP 访问 502。 4. **在 SCADA 服务器上跑一次 Wireshark 抓包审计。** 记录一小时的总线流量,检查有没有异常功能码(0x08, 0x2B)、有没有出现在不该在的设备地址。 5. **定期用 nmap 扫描 Modbus 网络。** 写个 cron 每周跑一次 `nmap -p 502 --script modbus-discover <子网>`,把输出 diff 一下。出现新设备=有人接了什么东西进去。 把上面 5 条落实了,再谈要不要上专用的 OT 安全平台、要不要做 SIEM 集成。大多数小工厂连第一条都没做。 和 OPC UA 的安全模型对比 聊 Modbus 安全绕不开 OPC UA。不是说谁替代谁,是搞清楚两者的安全模型差距,避免选型时做出离谱决策。 维度Modbus TCP (原生)OPC UA认证无X.509 证书、用户名/密码、Kerberos传输加密无TLS 1.2/1.3 (UA-TCP) 或 HTTPS (UA-HTTPS)数据签名无每条消息可单独签名 (UA-SecureConversation)访问控制无会话级+节点级 ACL审计日志依赖应用层内置审计事件类型协议复杂度极简,12 字节帧二进制编码,完整 OO 对象模型 OPC UA 把安全做进了协议栈,从传输层到应用层都有对应的安全机制。Modbus 把一切扔给了实现者。这不是 OPC UA 比 Modbus 「更好」——这是两种完全不同的设计哲学。OPC UA 的安全复杂度也是代价:TLS 握手、证书管理、信任链、CRL/OCSP 吊销检查——这些在嵌入式 Modbus 设备上是天方夜谭。STM32 跑 Modbus RTU 只需要一个 UART 和两三百行 C 代码,跑 OPC UA 需要 TLS 库、XML 解析器、至少几十 KB 的 RAM。 所以结论不是「大家都用 OPC UA」。是:如果你本来就在用 Modbus,别因为它不安全就推翻整个系统换成 OPC UA——加 stunnel、防火墙 ACL、安全代理的成本远低于换协议。如果你是新建系统、选型阶段、设备资源充足、需要面向 IT/OT 融合架构——OPC UA 天然的安全能力会让你在后期的合规和运维上省很多事。 写在后面 Modbus 的安全问题不是一个技术问题,是一个工程管理问题。协议本身没有安全能力,但你可以通过部署架构把它放到一个受保护的环境里。就像你不会把一台没有防火墙的服务器直接挂在公网上一样,你也不应该让 Modbus 设备直接面对不可信网络。 说到底,最危险的从来不是协议漏洞,而是有人觉得「我们这种小厂没人攻击」。攻击者不挑大厂小厂——自动化扫描工具一视同仁,502 端口开着就进来。 有问题再聊,或者你自己开 Wireshark 抓一包看看——大概率你会被惊到的。 --- ### 143. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 别上来就选协议 每个论坛都在问同一个问题:「我这个项目用 Modbus 还是 MQTT?要不要上 OPC UA?」 回答永远是——先告诉我你的现场有几台设备、走什么物理层、数据往哪去。 协议选型不是选哪个更先进,是选哪个在你这场景下出的问题最少。Modbus 1979 年诞生,MQTT 1999 年,OPC UA 2006 年——三个协议都没死,说明各有各的饭碗。你需要的不是「哪个最好」的结论,是一套工程决策框架,让你三分钟内自己得出结论。 三种协议,用一句话说清 **Modbus RTU/TCP**:主站挨个问从站,一问一答。帧格式固定,地址+功能码+数据+CRC。从站不会主动说话,必须等主站叫它。 打个比方:军训点名。教官叫一个学号,学生报一声「到」。再叫下一个。全班 30 个人,一个一个来,秩序井然。教官累点没关系,但如果有 500 个人?等叫到最后一排已经过去二十分钟了。 **MQTT**:发布/订阅模型。设备自己决定什么时候上报,不需要有人来问。Broker 是邮局,设备往主题里扔消息,谁订阅谁收到。 现场类比:微信群。传感器在群里发了一条「我超标了」,所有订阅了这个群的系统同时看到。不用等谁问。 **OPC UA**:面向对象的工业互操作框架。不只是传输数据,还自带语义模型——告诉你这段数据是「电机电流」,单位是安培,取值范围 0-100,精度 0.1。还有安全通道、认证证书、方法调用。 像外语翻译官:西门子 PLC 说德语,罗克韦尔说英语,三菱说日语,OPC UA 负责翻译成通用语,还附带一本详细的语法说明书。 三种协议不打架。真实项目里它们经常混着用。 12 条选择标准,工程硬指标 1. 设备数量:轮询的数学天花板 Modbus RTU 在 9600 bps 下,读一个保持寄存器(功能码 03),主站发 8 字节,从站回 7 字节(地址+功能码+字节数+2 字节数据+2 字节 CRC),共 15 字节。加上 3.5 字符的帧间隔(约 4ms @ 9600)和从站响应延迟(通常 10-50ms,保守取 20ms): 每台从站单次轮询时间 = 帧传输时间 + 帧间隔 + 从站响应延迟 帧传输时间 = 15 × 11 bit ÷ 9600 = 17.2ms(11 bit/字符:1 起始位+8 数据位+1 校验位+1 停止位) 单台轮询 ≈ 17.2 + 4 + 4 + 20 = 45.2ms 200 台从站,每台读 10 个寄存器(多寄存器读取的帧更长,一帧大概能塞 125 个寄存器),实际单轮询大约 60-80ms/台。 **200 台 × 70ms = 14 秒。**你在控制室里看着屏幕,HMI 上的数据 14 秒才刷新一次。报警信号在路上走了 14 秒才被你看到。 这还是理论最优值。实际工程里,从站响应超时、重试、线路质量下降都能让这个数字翻倍。 **结论:设备 < 50 台,Modbus RTU 轮询周期在 2-3 秒以内,对大多数监控场景够用。超过 100 台,要么上 Modbus TCP(以太网不吃串口带宽的亏),要么改用 MQTT。** 2. 通信模型:轮询 vs 事件驱动 Modbus 是轮询。你每隔 N 秒问一圈,报警信号可能在两次轮询之间产生,但你必须等到下一圈才看到。 场景:污水处理站,进水 pH 值突然从 7 跌到 4。Modbus 的轮询周期是 5 秒,最坏情况——pH 传感器刚被问完就超标,你要等接近 5 秒才知道。5 秒对于工艺保护来说,太长了。 MQTT 是事件驱动。传感器检测到异常,立刻发布消息。Broker 在同一秒内转发给监控系统。延迟取决于网络延迟+Broker 处理时间,通常在 100ms 以内。 OPC UA 支持订阅模式(MonitoredItem)。客户端注册关心的数据点,设定采样间隔和触发条件。变化>阈值才推送,不是傻轮询全量。 **结论:如果你的报警响应时间要求 < 1 秒,Modbus 轮询做不到,选 MQTT 或 OPC UA 订阅。** 3. 带宽和延迟:物理层决定下限 物理层典型速率适合场景RS-485 (Modbus RTU)1200-115200 bps本地总线,<1200 米以太网 (Modbus TCP)100 Mbps工厂局域网4G Cat.1上行 5 Mbps远程终端,有基站覆盖NB-IoT上行 ~60 kbps低功耗广域,日数据量 < 1KB 的场景LoRa0.3-50 kbps超远距离,极低功耗 RS-485 的 1200 米极限我见过能达到的——前提是高质量屏蔽双绞线、9600 bps、只有一台设备、没有变频器在旁边。车间现场,变频器一开,通信错误率飙升,你就得降波特率加屏蔽加隔离。 Modbus RTU 在 9600 bps 下,传输密度大概 800 字节/秒(去掉起始位停止位开销)。MQTT 走 4G,几十 KB 不是问题。OPC UA 的二进制编码效率还不错,但连接建立时的证书交换和会话协商要吃掉几百 KB。 **结论:本地总线,带宽不是瓶颈。远程接入,Modbus RTU 不直接走公网——你没见过有人把 RS-485 线从北京拉到石家庄的。必须过网关。** 4. 数据模型复杂度:从寄存器到对象 Modbus 的数据模型只有四种:线圈(位)、离散输入(位)、保持寄存器(16 位字)、输入寄存器(16 位字)。没别的了。没有浮点数、没有字符串、没有时间戳、没有数组结构体——除非你自己在多个寄存器上编码。 一台变频器的数据:运行状态(位)、设定频率(浮点数,占 2 个寄存器)、实际频率(浮点数)、输出电流(浮点数)、母线电压(整数)、运行时间(32 位,2 个寄存器)、报警代码(位掩码)。全用 Modbus 寄存器实现,你需要维护一份 Excel 表格记录哪个寄存器对应什么参数、用什么编码。散落在十台变频器上就是几百个寄存器的映射表。 MQTT 也好不到哪去——JSON 自由格式,但各厂家对「频率」这个字段叫 freqency、freq、Hz、output_freq 的都有。没有标准,你自己定约定。 OPC UA 的信息模型(IM)从协议层解决了这个问题:每个数据点有 Type、Unit、Range、EngineeringUnits。一个 MotorType 对象下面有 Current、Temperature、Speed——自带语义,不是裸寄存器。 **结论:数据点 < 50 个、类型简单(全是整数/开关量),Modbus 寄存器映射完全够用。超过 200 个点、涉及复杂对象模型,OPC UA 帮你省掉一半的文档维护工作量。** 5. 安全性:谁在裸奔 Modbus 的设计年代(1979 年)没人考虑网络安全。RTU 帧上没有认证字段,任何接入 RS-485 总线的设备都能发命令——关泵、改参数、写寄存器。TCP 版本多了一层 TCP 连接,但也没有内置 TLS。 MQTT 可以通过 TLS 加密传输,Username/Password 认证,Broker 端还能做 ACL 控制哪些客户端能发布/订阅哪些主题。 OPC UA 的安全模型是三件套:证书认证(X.509)+ 消息签名 + 消息加密。还支持用户令牌(用户名密码/证书/匿名)。从连接建立到数据传输,全链路加密。 有一次我去某水厂做排查,发现他们的 Modbus TCP 网关公网端口开着,扫进去就能直接写变频器启停寄存器。没开玩笑,这种事在中小企业非常多。 **结论:公网传输、远程运维、涉及关键基础设施的场景——别用裸 Modbus。至少要过 MQTT+TLS 的网关。如果已经有 OPC UA 能力,直接用它的安全通道。** 6. 互操作性:和谁家的设备说话 最理想情况是所有设备都跑同一种协议——你西门子我施耐德他 AB,都用 Profinet 就完了。现实不是这样。 Modbus 的优势恰恰在这里:几乎所有 PLC 都支持 Modbus RTU/TCP,不管是西门子 S7-1200 的 CM1241 模块还是三菱 FX 系列的 RS-485 口。设备厂商也乐意支持——不用付版税,实现简单,几天就能调通。 MQTT 的互操作性靠约定主题结构和 JSON 格式。但各家的约定可能不同。**Sparkplug B 规范**补了这个坑——定义了标准主题命名空间、数据类型编码、设备出生/死亡消息。 OPC UA 的互操作性是协议内置的:配套规范(Companion Specification)覆盖了机器人、注塑机、CNC、风力发电等几十个行业。西门子的 OPC UA Server 和罗克韦尔的 OPC UA Client 能直接对话,不需要写映射层代码。 但话说回来:OPC UA 的配套规范还在发展中,不是所有设备都支持。有些厂商的 OPC UA 实现就是个皮包——结点能浏览,实际数据更新频率跟不上。 **结论:和多种品牌 PLC/DCS 互操作是硬需求→OPC UA。设备全是国产电表/传感器→Modbus RTU 就够。需要云平台对接→MQTT。** 7. 开发周期和团队技能 这是被严重低估的一条。 Modbus 开发:找个串口库,发 8 字节,收 7 字节,调两天,通了。协议栈代码量几百行。你用 Python 的 pymodbus 或者 C# 的 NModbus,上午装包下午就能读写寄存器。三天之内做完一个 Modbus 主站驱动的工程师大有人在。 MQTT 开发:装个 paho-mqtt 库,Broker 地址、端口、主题,三行代码连上。发布/订阅各两行。一天上手。Broker 部署(Mosquitto/EMQX)半小时搞定。 OPC UA 开发:这件事我要说实话——不简单。地址空间建模、证书管理、安全策略配置、订阅/方法调用,学习曲线比前两者陡得多。你用 UAExpert 客户端连上 Server 是一回事,自己写一个完整的 OPC UA Server 是另一回事。工业上通常用 KepServerEx、Siemens OPC UA Server 这些成熟产品,调 SDK 的居多,从头写的不多。一个团队如果没有 OPC UA 经验,预留 2-4 周做技术验证。 **结论:3 天开发→Modbus。1 天开发→MQTT。有专人且项目允许学习成本→OPC UA。** 8. 硬件成本:芯片级的价格差 RS-485 收发器(MAX485/SP3485)批量价不到 1 块钱人民币。加上两个 120Ω 终端电阻、一个 TVS 保护管,BOM 成本 3 块钱以内。STM32F103 单片机的 UART 外设直接驱动,连外部 PHY 都不需要。 MQTT 的最小硬件需求:网络栈(WiFi/Ethernet/4G 模块)+ TCP/IP 协议栈。ESP32 自带 WiFi+BLE,批量价大概 12-15 块,跑 FreeRTOS+LwIP+paho MQTT 毫无压力。如果是 4G 模组(合宙 Air724UG 大概 20 块),也能跑 MQTT AT 指令。 OPC UA 对硬件有要求。一个最小 OPC UA Server(支持安全策略 Basic256Sha256、支持 1000 个变量节点)大概需要 256KB RAM + 512KB Flash。你可以在 STM32H7(Cortex-M7, ~30 块)上跑 open62541 的 embedded 版本,但不是「点个灯」那么简单。工业级 OPC UA 网关通常用 ARM Cortex-A 系列的 Linux 板(比如全志 T113-i,四五十块起)。 协议MCU 价格区间典型硬件平台Modbus RTU¥3-10STM32F103 / GD32MQTT (WiFi)¥12-20ESP32MQTT (4G)¥25-40合宙 Air724UG + MCUOPC UA (轻量)¥30-80STM32H7 / i.MX RTOPC UA (完整)¥80-200全志/瑞芯微 Linux 板 **结论:做一个售价 50 块的 Modbus RTU 温湿度传感器,换 OPC UA 方案硬件成本就兜不住。做一台售价 5000 的工业网关,OPC UA 的那点硬件成本根本不是事。** 9. 云接入:协议的天生基因 Modbus 是为本地总线设计的。你不可能直接把 RS-485 怼到阿里云 IoT 平台上。必须过网关——Modbus RTU → 网关(做协议转换)→ MQTT/HTTP → 云端。 MQTT 天然适合云接入。AWS IoT Core、阿里云 IoT、EMQX Cloud、ThingsBoard——所有主流 IoT 平台的第一公民都是 MQTT。主题路由灵活,遗嘱消息(Last Will)解决设备离线检测,保留消息(Retained)确保新上线的订阅者立刻拿到最新状态。 OPC UA 的 Client/Server 模式不太适合云——广域网延迟高,UA 的安全握手和会话管理吃不消。但 OPC UA 有一个 Pub/Sub 扩展(2018 年发布),支持 UDP 多播和 MQTT Broker 传输,专门解决云接入问题。不过目前实际部署的 OPC UA Pub/Sub 案例还不多,更多是 OPC UA Server → 边缘网关 → MQTT → 云的间接路线。 **结论:你的数据终点是云端→MQTT,别犹豫。本地 SCADA/Historian→OPC UA。既上云又本地监控→MQTT+OPC UA 组合。** 10. 历史遗留:改不动就别改 最常见的场景:一个污水处理厂,200 台 Modbus RTU 电表(威胜/科陆/林洋),已经在 RS-485 总线上跑了五年。你现在要上云做能耗管理平台。 把这 200 台电表全换了?不现实。预算是一回事,关键是它们根本没坏。用 Modbus-MQTT 网关是最合理的方案:电表继续跑 Modbus RTU,网关做轮询采集,数据打包成 JSON 走 MQTT 上云。电表这端是稳稳当当的 Modbus,云端是现代 IoT 架构——两头都不吃亏。 同样道理:某汽车厂的涂装车间有 50 台 AB PLC,全跑 EtherNet/IP。你想加一个 MES 系统,让这些 PLC 的数据能被 MES 读到。方案 A:每台 PLC 配 Modbus TCP 模块。方案 B:加一台 KepServer / Ignition 的 OPC UA 网关,聚合 EtherNet/IP 的数据后暴露 OPC UA 接口。方案 B 不改现场设备一根线。 **结论:已有设备跑什么协议就尊重什么协议。用网关做桥接,不要想着把现有设备全升级——那是钱多烧的。** 11. 设备发现:谁知道总线上有什么 Modbus 没有设备发现机制。你要知道从站地址 1 到 247 上到底挂了哪些设备?唯一的方法:挨个发功能码 03(读保持寄存器)或 08(诊断),等回应。超时不回就认为没设备。这个过程叫「地址扫描」——在 9600 bps 下扫完 247 个地址需要几十秒,而且某些设备对未知寄存器的读取会报异常。 MQTT 本身也没有设备发现。设备上线发一条消息到特定主题,但这靠的是约定的业务逻辑,不是协议层面的机制。Sparkplug B 规范加了设备出生/死亡消息,但需要接收方主动监听。 OPC UA 内置了发现服务(Discovery Server,默认端口 4840)。客户端连接 Discovery Server,问「你下面注册了哪些 Server」,拿到列表和端点 URL,再去连接。局域网内还能用 mDNS(组播 DNS)自动发现 OPC UA Server。 **结论:设备经常换、网络拓扑动态变化→OPC UA 的发现服务省你很多配置时间。设备固定不变、装了就不动→Modbus 手动配一遍也不碍事。** 12. 固件升级和配置管理 Modbus 只定义了数据读写。固件升级?没有标准功能码。有些厂商用功能码 0x41-0xFF 的自定义区实现,但每家都不一样,互相不通。 MQTT 同理——传输固件包可以,但格式和流程你自己定。 OPC UA 有标准的方法调用(Method Call)。你可以定义一个「升级固件」方法,接受固件文件 URL 和版本号参数,返回升级进度和结果。Device Integration 配套规范(DI)还定义了标准的设备管理模型。 **结论:批量设备固件升级是核心需求→OPC UA 的方法调用比你自创一套协议靠谱。偶尔升级、现场人员 USB 线怼上去就行→Modbus 够用。** 决策路径,走一遍 你的项目 │ ├── 设备数量 > 100? │ ├── 是 ──→ 需要事件驱动(报警 < 1s 响应)? │ │ ├── 是 ──→ 需要多种品牌互操作? │ │ │ ├── 是 ──→ 【OPC UA】 │ │ │ └── 否 ──→ 【MQTT】 │ │ └── 否 ──→ 【Modbus TCP】(配高性能主站,轮询周期可接受) │ │ │ └── 否 ──→ 需要上云? │ ├── 是 ──→ 【MQTT】 │ └── 否 ──→ 公网传输 / 需要安全? │ ├── 是 ──→ 【OPC UA / MQTT+TLS】 │ └── 否 ──→ 【Modbus RTU】 │ 最简单的方案永远最好 不是所有场景都走到底选一种协议。大多数时候你选的是组合。 混合架构:真实项目的玩法 经典组合:Modbus RTU → 网关 → MQTT → 云 底层电表、传感器跑 Modbus RTU,用一台嵌入式网关(比如华为 AR650、映翰通 IG902、或者你自己用树莓派+Node-RED 攒的)做协议转换: ┌──────────┐ RS-485 ┌──────────┐ MQTT/TLS ┌─────────────┐ │ 电表 ×50 │───────────→│ Modbus- │───────────→│ 云 IoT 平台 │ │ Modbus │ Modbus RTU│ MQTT 网关│ │ (Ali/AWS) │ │ RTU │ │ │ │ │ └──────────┘ └──────────┘ └─────────────┘ 网关做两件事:轮询采集 50 台电表的电压/电流/功率/电能,按一分钟间隔打包成 JSON,走 MQTT 发布到云端。电表不换,云端是现代的。这种架构在分布式光伏监控和能耗管理平台上已经被验证无数次。 OPC UA 作为聚合层 工厂里 50 台 Modbus TCP 从站(分布在五个车间),上层 MES 要统一取数据。中间放一台 OPC UA Server 网关,跑 KepServer 或者自己用 open62541 写的程序: ┌────────────┐ │ MES 系统 │ └─────┬──────┘ │ OPC UA Client ▼ ┌──────────────────┐ │ OPC UA Server │ ◄── 聚合网关 │ (KepServerEx等) │ └──┬───┬───┬───┬──┘ │ │ │ │ Modbus TCP ▼ ▼ ▼ ▼ 50台 Modbus TCP 从站 (PLC/仪表) 好处:MES 只对接一个 OPC UA 接口,不用关心每台设备的 IP 地址和寄存器映射。网关内部做了数据聚合和地址空间建模。 双通道:MQTT 上报 + Modbus TCP 本地控制 某智慧农业大棚:50 个 LoRa 温湿度传感器通过 LoRa 网关→MQTT 上报到云平台做趋势分析。同时大棚里的风机、卷帘电机走 Modbus TCP,本地触摸屏(HMI)直接控制。云平台也可以发 MQTT 命令给网关,网关转 Modbus TCP 指令控制风机启停。 ┌──────────┐ LoRa ┌────────┐ MQTT ┌──────────┐ │ 传感器×50 │───────→│ LoRa │───────→│ 云平台 │ ← 数据分析 └──────────┘ │ 网关 │ └────┬─────┘ └───┬────┘ │ MQTT 控制指令 │ Modbus TCP ▼ ┌───┴────────────┐ │ 本地 HMI + PLC │ ← 实时控制 │ (风机/卷帘) │ └────────────────┘ 为什么这么设计?传感器上报数据量小但频率高(每分钟),MQTT 省流量。风机控制要求低延迟(< 500ms 必须响应),Modbus TCP 直连最可靠。云平台的分析结果→控制指令的回路走 MQTT,可以接受几百毫秒的延迟。 什么时候不需要混合 如果你的项目不超 30 台设备、不需要上云、不需要远程运维——一台 PLC 带 Modbus RS-485 总线和一块 HMI 屏幕,三根线(A/B/GND),够了。不要为了「先进性」把架构搞复杂。工程里简洁就是可靠性。 协议组合速查表 场景设备数上云实时性多品牌推荐方案污水处理厂本地监控30 台仪表否秒级够否Modbus RTU分布式光伏电站500 台逆变器是(4G)报警秒级是Modbus RTU + MQTT 网关汽车焊装车间 MES200 台设备否是是(西门子为主)OPC UA智慧农业大棚50 传感器+10 执行器是(LoRa+4G)控制百毫秒否MQTT Sensor + Modbus TCP Actuator楼宇自控100 个 DDC 控制器可选秒级够是(HVAC多品牌)Modbus TCP / BACnet + OPC UA远程设备运维分散各地是非实时否MQTT + TLS单机设备(变频器+HMI)< 10否毫秒级否Modbus RTU 没人会替你说的真相 Modbus 没有安全机制,这是真的。它的帧就是明文,CRC 只管传输出错不管恶意篡改。有人把 Modbus TCP 端口暴露在公网上,跟把工厂大门敞开没什么区别。 Modbus 没有事件驱动。你要事件?自己想办法轮询得快一点。 Modbus 没有标准数据模型。A 厂的电表把电压放 40001 寄存器,B 厂放 40002。你的代码里到处都是 if-else 判断设备型号。 但 Modbus 活了四十多年不是靠功能强,是靠够简单。能在 8 位单片机上跑,能在零下三十度稳定运行,能一个下午调通。MQTT 出现了,OPC UA 出现了,它没死,因为还有大量场景不需要高级功能——30 台设备、一个厂房、本地 HMI,Modbus RTU 一条线穿到底,什么叫 over-engineering?硬上 OPC UA 就叫 over-engineering。 反过来,如果你面对的是 500 台设备分布式部署在 50 公里范围内、需要云平台分析、要求报警推送——抱着 Modbus 不放就是在给自己找麻烦。这时候 MQTT 加 Modbus 网关是最务实的选择。 如果你在一个多品牌 PLC 混用的工厂,需要 MES 系统对上层暴露统一接口——OPC UA 是标准答案。 哪个协议都不是完美的,你选的是在你这场景下最不坏的那个。这行的智慧在于:知道什么时候够用就好,知道什么时候必须升级。 --- ### 144. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 异常帧长什么样 Modbus 的异常响应和正常响应只有一位之差。主站发出请求后,从站把功能码的最高位置 1,后面跟一个单字节的异常码,帧就结束了。没有数据区。 正常帧 vs 异常帧的结构对比: 请求: 01 03 00 00 00 01 — 读 1 号站,保持寄存器 0x0000 正常响应: 01 03 02 12 34 — 02=数据字节数,0x1234=读回的值 异常响应: 01 83 02 — 83=0x03|0x80,02=异常码 0x02 上面这个例子:功能码 0x03 的最高位置 1 后变成 0x83。异常码 0x02 代表「非法数据地址」——说明 0x0000 这个地址在该从站里不存在。 多看一眼 CRC 校验:不管正常响应还是异常响应,CRC 都是从站地址开始算到最后一个数据字节(不含 CRC 自己)。上面我故意没写 CRC,实际帧末尾还有两个字节。 RTU 和 TCP 的异常帧有区别,差异在封装层。TCP 的 MBAP 头里有一个 2 字节的「长度」字段,这个长度包含了单元标识符 + 功能码 + 异常码。而 RTU 靠 3.5 字符静默时间来分隔帧。协议层不一样,但功能码和异常码的语义完全一样——这是 Modbus 最干净的设计之一。 还有一个细节容易被忽略:异常响应的帧长度是固定的。对功能码 0x01~0x06,异常响应永远只有 3 个字节(地址 + 功能码|0x80 + 异常码),CRC 另算。对 0x0F 和 0x10 这类多操作功能码,异常响应也是 3 字节。从站不需要告诉你「哪一部分出错了」,只告诉你「整个请求被拒了」。这个设计很粗暴,但也很简单——主站收到异常码后自己想办法重试或报错。 串口层面的时序也有讲究。Modbus RTU 规定从站必须在收到请求后的指定时间内开始响应——但标准并没有硬性规定这个时间的具体值。实践中多数从站的响应时间在 5~50ms 之间。超过 1 秒没收到响应(或者没收到异常帧),主站应该认为从站无响应——这是超时,不是异常码。很多工控软件把「No Response」和「Exception Response」混在一起报,给你一种设备返回了异常码的错觉。实际上从站根本没回任何东西。区分这两种情况对排查问题至关重要——没响应是链路层或设备层的问题,异常码是从站应用层在告诉你「我收到了但我不干」。 下面逐个拆解 7 种标准异常码。每个都配了真实报文和现场案例——不是拿 Wireshark 仿真抓的,是产线、变电站、水泵房里实实在在遇到的。 0x01 — 非法功能码 从站不支持主站请求的功能码,或者从站当前状态下该功能码被禁用了。 你给一台支持 03/06/16 的标准 Modbus 设备发 0x08 诊断功能码,大概率收到 0x01。因为诊断功能码是可选的,很多廉价 I/O 模块根本没实现。 报文示例 请求: 02 08 00 00 AA 55 异常响应: 02 88 01 0x08 = 诊断,子码 0x0000 = 回环测试,数据 0xAA55。从站直接回 0x88(0x08|0x80) + 0x01。 案例 1:台达 DVP 系列 PLC 不支持诊断功能码 台达 DVP-SX2 系列,固件版本 V3.8。项目中做 RS-485 线路质量测试,用 Modbus Poll 的 Test Center 发 0x08 诊断,结果返回异常码 0x01。翻了 DVP 的手册确认:DVP 只实现了 01/03/05/06/0F/10 六个功能码,0x08 不在其列。想要诊断线路质量只能用 0x01 读线圈或者 0x03 读寄存器,通过响应时间和连续成功率间接判断。这个事情告诉我们,诊断功能码虽然写进了 Modbus 标准,但不是所有厂商都买账。 案例 2:西门子 S7-1200 做 Modbus Server 时不支持读线圈 西门子 S7-1200 从 TIA Portal V14 开始支持 Modbus TCP Server。但它的实现只是把 DB 块映射到保持寄存器(0x03/0x06/0x10),线圈 0x01/0x05/0x0F 压根没做。跟上位机调试的时候,SCADA 用 0x01 去读设备状态字,S7-1200 直接甩回一个 0x81 + 0x01。解决办法:把线圈地址映射到保持寄存器区段,上位机改用 0x03 读。 案例 3:变频器运行时禁止写参数 汇川 MD500 变频器,运行状态下尝试用 0x06 写频率给定寄存器 0x2000。返回 0x01。不是变频器不支持 0x06 功能码,而是当前状态不允许写。汇川的手册里管这叫「运行禁止写入」,但协议层用的就是标准异常码 0x01。这种语义扩展在很多国产设备上都能见到——用标准异常码表达厂商自定义的限制条件。 案例 4:Modbus Plus 特有的功能码在 TCP 网关上被拒 一台老旧的 Modicon Quantum PLC,通过 BM85 网桥做 Modbus Plus 到 Modbus TCP 的转换。Modbus Plus 有自己的一套扩展功能码(0x14~0x18 用于网络管理),但 BM85 网桥只透传标准 Modbus 功能码。上位机不小心发了 0x14 读 PLC 统计信息的请求,网桥在应用层检查后直接返回 0x81+0x01。注意这里返回异常码的是网关,不是 PLC——PLC 可能支持 0x14,但网关不支持。网桥日志里没有这个功能码的解析路由,直接拒绝了。网关做功能码安全过滤的情况在实际项目里很常见,尤其是有防火墙功能的工业路由器。 0x02 — 非法数据地址 从站支持该功能码,但请求的起始地址 + 数量超出了从站的有效地址范围。这是现场调试碰到最多的异常码,没有之一。 关键点:主站软件里填的地址和协议层实际发送的地址有 offset。Modbus 协议规定,地址从 0 开始编号。你在 Modbus Poll 里填的 40001(1-based 保持寄存器),协议层发的是 0x0000。地址计算逻辑弄反了,轻则读到错误数据,重则触发 0x02。 PLC/SCADA 地址表示: 40001 (1-based, 保持寄存器) 协议层 PDU 地址: 0x0000 (0-based) 报文示例 请求: 01 03 00 64 00 0A — 读 0x0064 = 400101,读 10 个 异常响应: 01 83 02 从站的有效保持寄存器范围是 40001~40090(即 PDU 地址 0x0000~0x0059),请求的起始地址 0x0064 超了,直接 0x02。 案例 1:Schneider TM3 扩展模块地址不够 Schneider Modicon M221 挂了两块 TM3 扩展。配置里第一块 TM3DI16 占 %IW0~%IW1,第二块 TM3AI4 占 %IW2~%IW5。上位机 SCADA 用 0x04(读输入寄存器)去读 %IW10,从站返回 0x02。原因很简单——M221 只分配了 %IW0~%IW5,%IW10 不在物理 I/O 映射里。SoMachine 里看一眼 I/O 映射表就明白了。这种问题属于配置和实际硬件不匹配,不是协议缺陷。 案例 2:Modbus Poll 地址 40001 和 400001 的坑 一个新手工程师用 Modbus Poll 点表里抄的地址是 40001,Modbus Poll 实际发的是 0x0000,读到的是设备第一个保持寄存器,没问题。但后来换了另一个国产组态软件,那个软件把 40001 解析成了 4000 + 1 的偏移量,实际发的是 0x0FA0。从站根本没有那么多寄存器,返回 0x02。同一份点表、同一个从站,不同的主站软件地址约定不一样,结果就不一样。这不是 Modbus 协议的问题,是工具链各玩各的约定导致的。建议直接用 PDU 地址(0-based)跟同事沟通,别说什么 4 区 5 区,那都是 Modicon 的老黄历。 案例 3:读多个寄存器时末尾地址越界 一台 Modbus 电表,保持寄存器 0x0000~0x003F(64 个寄存器)。主站请求读 0x0038 起 10 个寄存器(0x0038~0x0041)。从站检查:最后一个地址 0x0038 + 9 = 0x0041 > 0x003F,直接扔 0x02。很多从站在做地址合法性检查时,会先算起始 + 数量是否在范围内,只要任何一个地址越界就整包拒绝。不是一个寄存器越界返回部分数据——Modbus 标准没有部分响应的概念。 案例 4:离散输入和线圈地址混淆 这个坑在用了 Modicon 老式 5 位地址标注的公司里特别常见。1xxxx 是离散输入(只读位),0xxxx 是线圈(读写位)。上位机组态里配置了地址 10001 来读设备状态,但实际该从站把设备状态放在了线圈区(0xxxx 对应 0x01 功能码)。上位机用 0x02(读离散输入)去请求地址 0x0000,从站里 0x0000 在离散输入区确实不存在——离散输入总共有 8 路(地址 0x0000~0x0007)但那 8 路已经分配给了其他 DI。从站返回 0x02。换个功能码或者换个地址都能解决,但前提是你得知道从站的地址映射表长什么样。不少工控工程师直接把所有离散信号全映射到线圈区或全映射到保持寄存器里,省得用户搞混——但前提是你手里的从站允许你这么做。 0x03 — 非法数据值 地址有效、功能码有效,但请求体中携带的数据值不在允许范围内。 这是一个容易被忽略的异常码。很多时候你会先怀疑地址配置错了,但实际是写的值越界了。 报文示例 请求: 01 06 00 10 FF FF — 写单个寄存器,地址 0x0010,值 0xFFFF 异常响应: 01 86 03 — 功能码 0x06|0x80 = 0x86,异常码 0x03 为什么 0xFFFF(65535)非法?因为那个寄存器是 0~10000 的工程值范围。65535 在 16 位表示上是合法的,但在业务逻辑上不合法。 案例 1:写 EEPROM 参数超出配置范围 欧姆龙 E5CC 温控器,寄存器 0x0103(PID 比例带)。该参数的有效范围是 0.1~999.9,以 0.1°C 为单位存储,即寄存器值 1~9999。上位机下发 0x0000(即 0.0°C),从站校验后发现值小于下限 1,返回 0x03。手册上写了范围,但上位机代码里偷懒没做边界检查。调了半小时才发现是写值超范围——这种低级错误每个人都会犯,重要的是记住先翻手册再看异常码。 案例 2:对只读寄存器执行写操作 ABB ACS580 变频器,寄存器 0x2104(实际转速反馈,只读)。上位机试图用 0x06 写入 1500(想手动给转速值),从站返回 0x03。0x2104 这个地址本身存在,功能码 0x06 也被支持,但该地址在从站内部被标记为只读属性。「非法数据值」在这里的含义是「你往一个不接受写入的地址写了数据」——不是值本身非法,是写这个动作非法。Modbus 协议规范里,0x03 的措辞是「Value is not allowed」,给了从站实现自由度。许多厂商就把只读保护归到 0x03 下。 案例 3:多寄存器写 —— 部分字段值非法 用 0x10 批量写 5 个寄存器,前 4 个值没毛病,第 5 个寄存器要求值在 0~100,你写了 200。有些从站会校验全部数据后才回复,5 个全合法就执行,任何一个不合法就整体拒绝返回 0x03。有些从站则逐个校验、发现第一个不合法就拒绝。规范没说必须按哪种方式,各家的实现不一样。建议你对自己用的设备做一下边界测试,心里有数。 案例 4:Modbus 电表的需量复位寄存器权限控制 施耐德 PM800 系列电力仪表,寄存器 0x2F01(需量复位命令)只能写入特定的控制字组合(0x1234 或 0x5678)。上位机误写了 0x0001 试图清需量,仪表返回 0x03。手册上明确写了:复位命令寄存器的有效值是 0x1234 和 0x5678,其他任何值都触发 0x03。这个设计是为了防止误操作——毕竟某些寄存器写错了不是报错那么简单,是真的会改参数。 还有一个与 0x03 相关的陷阱:功能码 0x06 写单个寄存器时,如果该寄存器是 32 位值的低 16 位,只写低 16 位而高 16 位未初始化,从站可能返回 0x03。比如 AB ACS580 的参数 0x1000(32 位浮点),你必须用 0x10 一次写 2 个寄存器,不能拆成两个 0x06。分开写的话从站会在第一个 0x06 时就报 0x03——因为它知道这个地址是 32 位对齐的,不接受 16 位写操作。 0x04 — 从站设备故障 从站在处理请求的过程中发生了不可恢复的内部错误,导致命令无法执行。这个异常码告诉你「不是你的请求有问题,是我自己坏了」。 0x04 是现场最让人紧张的异常码。0x01~0x03 你改改配置就能解决,0x04 意味着可能要去车间里爬梯子了。 报文示例 请求: 03 03 00 20 00 04 — 读 4 个保持寄存器 异常响应: 03 83 04 同一个请求,十分钟前还正常返回数据,现在开始持续返回 0x04。硬件故障的可能性大了。 案例 1:Modbus 传感器 EEPROM 写入失败 一台昆仑海岸 JWSK-6 温湿度变送器,Modbus RTU 接口。远程改了设备地址从 0x01 到 0x05,写 EEPROM 的过程中供电抖动了一下。写入失败,设备固件检测到 EEPROM checksum 不匹配,进入了 fail-safe 模式。之后所有功能码请求(不管 0x03 读还是 0x06 写)全部返回 0x04。查了手册确认:该传感器在 EEPROM 自检失败后会锁死通信,只能物理断电重启恢复出厂设置。这属于固件保护机制——比让你读到错误值强。 案例 2:温控器探头短路导致 AD 转换异常 RKC CB100 温控器,热电偶输入端因为接线端子进水短路了。AD 转换芯片读到的是溢出值,固件判定传感器故障,然后所有 0x03 读 PV 值的请求都返回 0x04。这个 0x04 不是 Modbus 通信芯片坏,是传感器前端故障通过固件的异常传递机制反映到了协议层。换了个热电偶、擦干端子,0x04 消失了。 案例 3:扩展 I/O 模块掉线 Siemens ET200SP 通过接口模块做 Modbus TCP Server。一个 DI 模块因为背板连接器接触不良掉线了。对于掉线模块的寄存器地址,从站统一返回 0x04。但其他正常模块的寄存器地址读取正常。这说明从站内部的故障隔离做得好——坏一块不影响全局。 案例 4:模拟量输入模块过压保护触发 研华 ADAM-4117 模拟量输入模块,量程设置 0~5V。某个通道意外接入了 12V 信号,模块内过压保护电路启动,该通道进入故障状态。所有 0x04 读该通道值的请求返回 0x04,配置文件显示错误标志位置位。拔掉过压信号、重新上电后恢复。这个 0x04 的根因在物理接线,不在通信协议。排查时先把线甩了,再用仿真信号测——不过我记得 ADAM-4117 有时要软复位,单靠重新上电不够。 0x05 — 确认(ACK) 0x05 不是错误。它是从站对主站说:「收到了,正在做,你先别催。」 标准措辞是「Acknowledge」。从站已经接受了请求,但处理需要较长时间(比如写 Flash、执行自整定),先回一个 0x05 让主站知道连接没断,后续处理完成后再通过正常响应或状态位告知结果。 这是 7 个标准异常码里最特殊的一个——它是唯一不表示问题的异常码。 报文示例 请求: 01 06 0F A0 00 00 — 写寄存器 0x0FA0 = 0x0000,触发参数保存 异常响应: 01 86 05 案例 1:变频器参数写入 EEPROM 台达 VFD-M 变频器,写 0x2000(命令寄存器)= 0x0010 触发「参数写入 EEPROM」操作。EEPROM 擦写周期在 10~30ms 左右。从站收到命令后先回 0x86 + 0x05,表示「知道你要保存参数,正在写 Flash」。大约 20ms 后可以再次轮询命令寄存器,读到 0x0000 表示写入完成。如果在 0x05 之后 50ms 内没有完成,有些变频器会超时回退。 案例 2:温度控制器 PID 自整定 欧姆龙 E5CC,写 0x0101(AT 执行/停止)= 0x0001 启动自整定。这个操作需要几分钟。E5CC 先回 0x05,然后自整定过程中可以正常读取 PV 和 SV 值,只是 AT 标志位为 ON。自整定完成后,AT 自动 OFF。上位机需要在收到 0x05 后启动超时计时器,不要一直在那死等——有些设备的自整定能跑 30 分钟。 案例 3:网关后端的从站响应慢 Modbus TCP 转 RTU 网关(比如 MOXA MGate MB3170),主站通过网关读一个 9600bps 低速总线上的从站。主站发了读 125 个寄存器的请求,网关把这个请求转发到 RTU 总线,但因为数据量大、波特率低,RTU 从站需要 200ms+ 才能回完数据。网关在收到完整 RTU 响应之前,先给 TCP 主站回一个 0x05 占位——这就是网关常见的「pending」处理方式。Modbus TCP 规范里其实没有明确规定 0x05 在这种场景下的用法,但很多网关厂商就这么干了。 一个需要注意的设计细节:0x05 触发后,主站侧的等待策略。不应立即重发同样的请求——这会让从站收到重复命令。正确的做法是:轮询一个状态寄存器(如果从站提供了)或者设立超时计时器,超时后发新的查询命令。有些 SCADA 驱动(比如 Kepware 的 Modbus 驱动)内置了 0x05 的处理逻辑,有些则直接报超时。如果你自己写 Modbus 驱动,0x05 的处理逻辑是必做项。 0x06 — 从站忙 从站现在太忙了,处理不了你的请求。命令被接受了但无法执行,主站应该稍后重试。 0x05 和 0x06 的区别:0x05 是「收到了,在处理,等结果」;0x06 是「现在没空,你过会儿再来」。0x05 意味着从站已经开始执行命令了,0x06 意味着从站根本没开始执行。 报文示例 请求: 01 06 20 00 07 D0 — 写寄存器 0x2000 = 0x07D0(2000) 异常响应: 01 86 06 — 忙,没空处理 案例 1:写完参数立即读 写入一个需要写 EEPROM 的参数后,10ms 内立即发下一个请求。从站 Flash 控制器还没释放总线,直接回 0x06。很多工程师在调试脚本里几毫秒一个请求连续发,从站根本来不及处理。不是设备慢,是你太快了。Modbus 没有流控机制,主站需要自己控制节奏——写完 Flash 相关寄存器后,留 30~50ms 再发下一个读写请求。 案例 2:高速轮询导致低速设备缓冲区溢出 用 Modbus Poll 以 20ms 间隔轮询一台 9600bps 的 RTU 温湿度传感器。刚启动时正常,运行一分钟后开始间歇性出现 0x06。9600bps 传输一个字节约 1ms,一个最小读请求+响应来回大概 30~40ms。20ms 的轮询间隔已经小于设备的最小响应周期。从站串口接收缓冲区被塞满了,它在忙着丢弃溢出的帧,没精力处理新请求。把轮询间隔调到 100ms 就好了。换成 115200bps 能进一步缩短,但很多工控设备最高只支持到 38400bps 甚至 19200bps。 案例 3:多主站同时访问一个从站 一个 RS-485 总线上的 Modbus RTU 从站,同时接了 PLC 和上位机 SCADA 两个主站。两个主站之间没有协调,各自以 500ms 和 300ms 间隔轮询。碰撞概率上来了——两个请求帧重叠,从站收到的是乱码。有些从站在检测到帧错误后会忽略,有些从站会消耗时间做错误处理,导致刚清空接收缓冲区时下一个主站的帧就到了。还没准备好接收新帧,只能回 0x06。RS-485 多主站的冲突处理,建议上硬件流控或在主站侧做互斥锁,别指望从站自己搞定。 案例 4:从站上电初始化期间收到请求 大部分 Modbus 从站上电后有几十毫秒到几秒的初始化时间。在这个窗口里发请求,从站的 Modbus 协议栈还没准备好。有些从站直接不回(No Response),有些从站回 0x06。这个行为跟具体的固件实现有关。丹佛斯 VLT FC302 变频器上电后大约 2 秒内会返回 0x06,初始化完成后恢复正常。如果你的 SCADA 启机就去读从站,头几个请求可能收到 0x06——在上位机代码里加个上电延迟或者对 0x06 做自动重试(间隔 500ms,最多 3 次)就能规避。 0x06 和 0x05 很容易搞混,这里说清楚:0x05 是「正在处理你的请求」,处理完了会回正常数据。0x06 是「没空处理你的请求,请求被丢弃了」。主站收到 0x05 应该等待,收到 0x06 应该重试。如果把 0x06 当成 0x05 处理——等着等着就超时了。 0x0A — 网关路径不可用 这个异常码只在网关场景出现。网关和下游从站之间的通信出了问题——网关本身没问题,但它后面的设备连不上了。 Modbus 标准定义的措辞是「Gateway Path Unavailable」——无法建立到目标设备的路径。这里的目标设备不是地址 0x01 的从站本体,而是网关内部的「路由」到下游从站的路径。 报文示例 请求: 01 03 00 00 00 01 — 通过网关读下游从站 异常响应: 01 83 0A — 网关:后面那个从站没响应 案例 1:串口服务器后端的从站掉线 USR-N510 串口服务器做 Modbus TCP 转 RTU 网关,下面挂了 3 台 Modbus RTU 传感器(地址 0x01、0x02、0x03)。0x02 从站因为电源模块烧了,完全掉线。主站通过网关读 0x02 从站时,串口服务器尝试在 RS-485 总线上广播请求,等 500ms 超时没收到响应,然后在 TCP 侧给主站回了 0x0A。0x01 和 0x03 从站的通信完全正常——网关本身活着,只是某一条路径断了。 案例 2:网关配置了错误的下游参数 MOXA MGate MB3170,配置下游为 9600bps、8N1。但实际 RS-485 总线上的设备是 19200bps、8E1(偶校验)。网关按照 9600bps 发请求帧,从站收到的是乱码,不响应。网关超时后返回 0x0A。这种问题在有多家的设备混装的 RS-485 总线上尤其常见——不同厂商的默认通信参数不一样,项目初期不统一调一遍就会踩坑。 案例 3:Modbus TCP 级联网关 一个大型分布式场景:中心 SCADA → Modbus TCP 主网关 → 光纤环网 → 就地子网关 → RS-485 从站。主网关到子网关之间的光纤断了,主网关对子网关下面所有从站的请求都返回 0x0A。这时候排查思路是逐级 ping:先确认主网关到子网关的 TCP 连接,再确认子网关到 RS-485 总线,最后才是串口设备本身。 厂商自定义异常码 除 7 种标准异常码,很多厂商在 0x80~0xFF 区段定义了私有异常码。这不是违反标准——Modbus 规范允许厂商扩展。但你的上位机代码如果只认识 01~0A,碰到 0x90 就会报「Unknown Exception」或者直接丢帧。 一些常见厂商扩展: 厂商自定义异常码含义西门子 S7-1200/15000x80Modbus Server DB 块未初始化汇川 AM6000x81参数锁定(需要先写解锁寄存器)台达 AS 系列0x8B功能码在当前 PLC 运行模式下被禁止部分国产温控器0x90~0x9F参数校验失败(写值与 EEPROM 不符)Schneider M2210xF0固件不支持的寄存器区域 这些异常码没有统一标准,得翻各家手册。有些厂商在手冊的 Modbus 通信章节会列出完整的异常码表,有些藏在附录里,还有些干脆不写——你只能 debug 抓到之后凭经验判断。 有个坑:部分国产 PLC 在遇到 0x02 条件时也会回 0x03(不区分非法地址和非法数据值),因为它们内部的异常处理把「地址不存在」和「值不合法」归为同一个错误路由。你按标准预期是 0x02,实际收到 0x03——别较真,对着手册的寄存器映射表查就是了。 还有一个容易被忽略的:CPU 停机模式下的异常码行为。很多 PLC 在 STOP 状态下仍然运行 Modbus 协议栈,但行为不同。西门子 S7-1200 做 Modbus Server 时,CPU 从 RUN 切换到 STOP,读到已映射的 DB 块返回 0x04(「设备故障」),而不是 0x01。这个语义很微妙——PLC 没坏,但在 STOP 模式下 DB 数据不可用。施耐德 M221 在 STOP 状态下则仍然响应 Modbus 请求,只是数据不更新。三菱 FX5U 做 Modbus Server 时,STOP 状态下直接不响应任何请求,上位机看到的是超时,不是异常码。同一套 SCADA 系统要适配不同品牌 PLC 的 STOP 行为,驱动层面就得做差异化处理。 厂商扩展异常码还经常被用于安全场景。比如某些支持 Modbus Security(基于 TLS)的网关设备,会在认证失败时返回自定义异常码 0xE0~0xEF 表示安全层拒绝。这不是 Modbus 标准定义的,但确实存在。如果你的 Modbus TCP 通信突然开始收到 0xE1,不是协议栈解析错了,是网关在告诉你「TLS 握手没过」。 用 Wireshark 抓异常帧 不管 RTU 还是 TCP,Wireshark 都能直接解析 Modbus 协议。前提是你的抓包点在正确的网络位置。 TCP 场景 Modbus TCP 走 502 端口,Wireshark 默认就解析。在过滤器栏输入 `modbus`,异常帧会显示为红色背景。 展开异常响应帧,看这几个关键字段: Modbus/TCP Transaction Identifier: 1 Protocol Identifier: 0 Length: 3 ← 注意这个长度 Unit Identifier: 1 Modbus Function Code: 131 (0x83) ← 83 = 03 | 0x80,Wireshark 直接显示了 Exception Code: 2 (Illegal Data Address) `Length: 3` 是 MBAP 头里的长度字段,它 = Unit Identifier(1) + Function Code(1) + Exception Code(1) = 3 字节。正常响应这个值会更大(因为后面有数据)。只看长度就能初步判断是异常响应还是正常响应——异常响应的 TCP 载荷通常只有 3 字节。 RTU 场景 RTU 抓包需要用 RS-485 转 USB 转换器搭一个监听节点。Wireshark 对 RTU 的支持不如 TCP 好,需要手动指定端口配置(波特率、校验等)。抓到的异常帧格式和 TCP 类似,但没有 MBAP 头: 01 83 02 xx xx — 地址 01,功能码 83,异常码 02,CRC xx xx RTU 抓包里没有 Transaction ID,你只能靠时间戳来判断请求和响应的对应关系。调试复杂的多从站 RTU 总线时,建议在 Wireshark 里按 Modbus 地址过滤,把每个从站的流量分开看。 Wireshark 的 Modbus 解析器从 3.x 版本开始支持异常码的中文显示。在 Preferences → Protocols → Modbus 里勾选 Exception 的解析选项。但注意:Wireshark 只能解析标准异常码 01~0A,厂商自定义码会显示数字而非描述文本。 还有一个 Wireshark 小技巧:用 `modbus.exception_code` 做显示过滤器。`modbus.exception_code == 2` 过滤出所有 0x02 异常帧。`modbus.exception_code >= 1 && modbus.exception_code <= 10` 过滤所有标准异常。在现场排查时,先看全局统计——Statistics → Protocol Hierarchy → Modbus,能看到异常帧占通信总量的百分比。如果异常帧超过 10%,你的配置大概率有问题。如果只有偶发的 0x06,那是时序问题。如果持续 0x04,准备换设备。 Modbus Poll 里的异常提示 Modbus Poll 是最常用的调试工具。它的异常信息直接显示在窗口底部状态栏,长这样: Modbus Exception Response Function: 3, Exception: 2 (Illegal Data Address) 第一眼看到红字别慌,先看 Function 是什么,再看 Exception 是什么。功能码告诉你哪个操作报错了,异常码告诉你为什么。 打开 Display → Communication,能看到完整的收发报文。异常帧用红色标记,点开看原始十六进制: Tx: 01 03 00 00 00 01 84 0A Rx: 01 83 02 C0 F1 `Rx` 的第二字节是 0x83(=0x03|0x80),第三字节 0x02 就是异常码。`C0 F1` 是 CRC。Modbus Poll 帮你解析出来了,但学会自己看原始帧是一项基本功——上线部署后你不会永远有 Modbus Poll 可以用。 同一个请求连续报 0x02,先别改地址,先确认你的起始地址和数量是否在从站手册列出的有效范围内。很多时候是地址计算逻辑错了,不是你地址写错了。尤其是从 1-based 寄存器地址切换到 0-based PDU 地址的时候——这个坑基本每个新手都要踩一次。 调试方法论:收到异常码后的排查清单 现场出了异常码,按下面这个顺序走——不是标准操作流程,是老工程师的血泪经验。 **第一步:确认是哪个从站、哪个功能码、哪个异常码** 因为现场通常不止一台从站。用 Modbus Poll 或 Wireshark 抓原始报文,拿到从站地址 + 功能码 + 异常码这三个数。如果你是用脚本在测,加一行 `print(hex(response[0]), hex(response[1]), hex(response[2]))`,别只看日志里的「通信失败」。 **第二步:异常码分类——软件原因还是硬件原因?** 0x01 / 0x02 / 0x03 大概率是你的请求有问题。查配置、查地址映射、查数据范围。0x04 / 0x0A 大概率是从站或链路有问题。先断电重启从站试试——如果是 0x04 变正常了,说明是设备内部故障恢复,但不代表根本原因已解决。0x06 是时序问题,调慢轮询间隔。 **第三步:隔离变量** 同一台主站,换一个从站地址试试。能通信 → 问题在原从站。不能通信 → 问题在主站端或总线。同一个从站地址,用 Modbus Poll 试试。能通信 → 你的上位机代码有问题。不能通信 → 从站或链路有问题。这是最常见的二分排查法,但很多人跳过了这一步,直接怀疑硬件坏了。 **第四步:看手册** 异常码出来了,翻从站手册的 Modbus 通信章节。有些厂商会列出所有可能返回的异常码和触发条件。如果手册没有异常码表,找地址映射表,手动对照你的请求地址是否在有效范围内。很多现场的「通信故障」其实是你读了一个保留地址或者只写地址。 **第五步:抓包** 用 Wireshark 或者串口监控工具抓原始报文。看的是:主站到底发出了什么?从站到底回复了什么?有没有 CRC 错误?有没有帧不完整?很多时候你看日志以为发出去了 01 03 00 00 00 01,实际抓包发现波特率错了从站当噪音扔了。不要相信你的代码日志,要相信抓包工具。 **第六步:替换测试** 换一台同型号的新从站接上去,同样的请求看结果。如果新设备正常,原设备返异常码——设备硬件故障。如果新设备也返同样的异常码——你的请求有问题。如果手头没有备用设备,换一个确定能正常工作的从站地址来测通信链路。链路的嫌疑排除了,问题就在特定设备上。 **第七步:如果还是搞不定** 把原始报文(十六进制)、从站型号和固件版本、你的主站平台信息发给从站厂商的 FAE。别发日志截图,发原始报文——FAE 看原始报文比看你的描述准得多。如果 FAE 也不回,去 modbus.cn 论坛贴原始报文求助。社区的调试经验有时比厂商手册还靠谱,因为手册是理论,社区是血泪。 **补充:自己写 Modbus 驱动时的异常码处理模板** 如果你在写上位机的 Modbus 主站驱动(用 C/Python/Node.js 等),异常帧处理至少要覆盖这几种情况: 1. 检查响应的第一个字节是否等于请求的从站地址(地址不匹配 = 不是给你的响应,丢弃) 2. 功能码的 bit 7 是否为 1(为 1 则提取异常码,为 0 则正常解析数据区) 3. 异常码 0x05 特殊处理:不抛出异常,进入等待状态,轮询状态寄存器或超时重发 4. 异常码 0x06 特殊处理:延迟 50~100ms 后重试,最多重试 3 次 5. 其他异常码:记录日志、通知上位层进行错误处理(告警、重试、切换备用链路等) 6. 厂商自定义码 0x80~0xFF:需要设备型号相关的字典来解析,否则按 Unknown Exception 处理 错误的做法是把所有异常码都当作「通信失败」然后重试——0x02 重试一万次也是 0x02,地址错了就是错了。正确的做法是根据异常码分类采取不同策略。这部分逻辑写好了,你的驱动就能适配市面 90% 的 Modbus 从站设备。剩下的 10% 是那些不按标准返回异常码的厂商——它们用正常响应替代异常响应,把错误信息塞在寄存器数据里。遇到这种设备只能翻专用手册。 异常码速查表 异常码名称一句话解释0x01非法功能码从站不支持你发的功能码,或当前状态不允许0x02非法数据地址请求的地址在从站的寄存器映射里不存在0x03非法数据值地址存在但写的值超出允许范围或写了只读寄存器0x04从站设备故障从站内部硬件或固件出了不可恢复的错0x05确认 (ACK)不是错误,从站在处理长耗时操作,等着0x06从站忙从站现在没空处理,稍后重试0x0A网关路径不可用网关到下游从站不通,或配置不匹配0x80~FF厂商自定义翻各自的手册,语义不通用 这张表建议打印出来贴在调试电脑旁边。现场出异常码不用掏手机搜,看一眼表就知道大概方向。具体的诊断方法,回到上面每个异常码的案例里找——所有案例都是现场碰过的,不是编的。 --- ### 145. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:渐进式解决Modbus通信问题:从物理层到应用的完整排查手册 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:Modbus RS-485 通信不通怎么办?本文从物理层到应用层,通过真实报文分析和排查工具演示,给出完整的渐进式排障方法。关键词:Modbus 通信故障排查、RS-485 排障、Modbus 调试方法、Modbus RTU 无响应、CRC 校验错误。 在工业自动化领域,Modbus 通信出问题是最让人头疼的事——不是因为它复杂,而是因为故障点太分散。物理层、数据链路层、应用层,任何一个环节出问题,现象可能一样:主站发请求,从站不回。 这篇文章不是教你 Modbus 协议基础。我假设你已经在用 Modbus,现在的问题是「不通」,你需要一份能照着操作的排障清单。我们就从最底层开始,一层一层往上查。 核心关键词:Modbus 通信故障排查、RS-485 排障、Modbus RTU 无响应、CRC 校验错误。更多 Modbus 技术文章请访问 modbus.cn。 一、典型的现场故障长什么样 先看三个真实场景,如果你遇到过类似的,这篇文章就是写给你的。 场景 1:某污水处理站,16 个 Modbus RTU 从站挂在一条 RS-485 总线上。每天下午三点准时全部掉线,十分钟后自动恢复。查了三个星期,最后发现是隔壁泵房的光伏逆变器每天下午三点启动,EMI 干扰耦合到 485 线上,把信号淹了。 场景 2:一台三菱变频器通过 RS-485 接入网关,主站发功能码 03 读频率,偶尔能读到,偶尔报 CRC 错误。波特率是 9600。折腾了两天最后发现是 A/B 线接反了——主站的 A 接到了从站的 B。但为什么偶尔还能读到数据?因为 RS-485 收发器有一定的共模容限,在信号质量好的时候真能通,一有干扰就 CRC 报错。 场景 3:产线上新加了一台温控器,地址设成 05,挂上去之后 05 号没反应,但原来的一台 07 号也不通了。拔掉新设备,07 号恢复正常。查到最后,新设备默认配置了 120Ω 终端电阻,总线上一共挂了三个终端电阻——阻抗不匹配,信号反射导致所有从站时断时续。 这三个场景指向同一个道理:Modbus 不通,不能猜,要一层一层排除。 下面就是这个排查的完整路径。 二、排查综述:从物理层到应用层的四层模型 Modbus 通信问题的排查路径,按层次从低到高: ┌────────────────────────────────────────────┐ │ 第四层:应用层 │ │ 从站地址、寄存器映射、功能码、字节序 │ │ 现象:从站回异常码,或数据值明显不对 │ ├────────────────────────────────────────────┤ │ 第三层:数据链路层 │ │ 波特率、校验位、CRC/LRC 校验 │ │ 现象:CRC 错误、帧不完整、偶发性丢帧 │ ├────────────────────────────────────────────┤ │ 第二层:电气层 │ │ A/B 线接法、终端电阻、偏置电阻、接地 │ │ 现象:完全不通、数据全是乱码、间歇性断连 │ ├────────────────────────────────────────────┤ │ 第一层:物理连接 │ │ 线缆通断、接头氧化、屏蔽层、布线路径 │ │ 现象:主站发数据,从站完全无反应 │ └────────────────────────────────────────────┘ 排障铁律:永远从第一层开始排查,确认没问题再往上走。 不知道有多少人在第三层(改波特率、改超时时间)上浪费了三天,最后发现是第一层的 A/B 线接反了。如果你只记住一句话,记住这句。 三、第一层:物理连接检查 3.1 万用表打线——最基本的第一步 先把所有设备断电。万用表调到电阻档或通断档,测: - A 线从主站到最远端从站是否导通(电阻应 < 10Ω,取决于线长和线径) - B 线同样 - A 和 B 之间不能短路(电阻应为无穷大或接近无穷大) - A/B 分别对 GND 不能短路 如果通断都正常,再把电送上,万用表调到直流电压档: - A 对 GND:静止状态下约 2.5V ~ 3.5V(取决于偏置电路) - B 对 GND:静止状态下约 1.5V ~ 2.5V - A-B 差分电压:静止状态下约 0.2V ~ 2V,A 应高于 B 如果 A-B 差分电压接近 0V,甚至 A 低于 B,你的偏置电路有问题。 很多廉价 USB-485 转换器没有内置偏置电阻,挂在一根长总线上工作时,空闲状态下 A-B 差分会漂移到不确定状态,导致从站的 UART 收到随机垃圾数据。 3.2 A/B 线到底怎么接——这个坑踩的人最多 RS-485 的 A/B 接线没有统一的行业标签标准。不同设备厂商对 A 和 B 的定义可能是反的。以下是你可能会遇到的标记方式和它们的对应关系: 常见标记另一种标记空闲电压说明 A / + / D+ / TX+ / 正Non-Inverting高于 B同相端 B / - / D- / TX- / 负Inverting低于 A反相端 快速判定方法:断电状态下用万用表二极管档测。 红表笔接 GND,黑表笔接 A——大多数 RS-485 收发器芯片(如 MAX485、SN75176)的 A 脚对 GND 有一个反向保护二极管,会测出正向压降约 0.6V。B 脚对 GND 也一样。如果测不出来,换个极性再测。 还有一个更暴力的方法:如果接了不通,把 A 和 B 交换一下试试。不是笑话——这在现场是最常用的「排障手段」。因为很多变频器的 RS-485 端子标注就是反的。 3.3 终端电阻——什么时候接、接在哪 终端电阻 120Ω,接在总线的最两端。这句话每个人都听过。但实际工程中这些细节才决定成败: 什么时候必须接。 总线长度超过 50 米,或波特率 ≥ 19200。判断标准不是长度,是你用示波器看信号波形——如果有明显的过冲或反射台阶,加终端电阻。 什么时候可以不接。 测试台上,一米短线,波特率 9600。这时候加终端电阻反而可能因为驱动能力不足导致信号幅值下降。 一个容易被忽略的坑。 很多 RS-485 设备内部已经集成了终端电阻,通过跳线或拨码开关启用。如果你不知道这一点,在总线上手动加了 120Ω,而设备上也开着 120Ω,等于并联成了 60Ω——信号幅度大幅下降,反而更不通了。这就是前面的场景 3。 排查方法:所有设备断电,万用表电阻档测 A-B 之间的直流电阻。正常应该是几 kΩ 到几十 kΩ(偏置电阻决定)。如果测出来是 60Ω 或 120Ω,说明至少有一个终端电阻在起作用。逐个拔设备,看哪个设备拔掉后阻抗变了。 3.4 屏蔽和接地——大部分人做错的地方 RS-485 屏蔽层应该单端接地,在主站或网关侧接大地。如果两端都接地,地电位差会在屏蔽层上形成环流,反而把干扰引入信号线。 另外,不要用网线的空闲线对做 RS-485。网线是 100Ω 特性阻抗,RS-485 电缆是 120Ω 特性阻抗,不匹配会导致高速率下信号反射严重。短距离(< 10 米)凑合能用,但不要作为正式工程方案。正规的 RS-485 电缆是一对双绞线加屏蔽层,特性阻抗 120Ω,比如 Belden 3105A 或等效型号。 四、第二层:电气层检查 物理连接确认没问题之后,如果还是不通或有误码,进入电气层。 4.1 用示波器看波形 示波器探头挂在 A 线对 GND 和 B 线对 GND,观察: - 空闲状态下 A 和 B 的电压值是否稳定(A 应高于 B 至少 200mV) - 有数据传输时,A 和 B 是否呈现标准的差分信号(A 和 B 镜像对称) - 波形上升沿和下降沿是否干净(不应该有明显的台阶或圆弧) 如果波形边缘很圆,可能是线缆电容太大(线太长或线径太细),或者驱动能力不足。降低波特率通常能缓解。 4.2 偏置电阻(Fail-Safe 偏置) RS-485 标准要求差分输入电压 ≥ 200mV 时判定为逻辑 1,≤ -200mV 时判定为逻辑 0。但在总线空闲(所有设备都不驱动)时,差分电压可能落在 -200mV 到 +200mV 的不确定区间内,导致接收器输出随机数据。 这就是为什么需要偏置电阻:在总线的某一个位置(通常在主站或偏置电路所在处)用两个电阻把 A 上拉到 VCC、B 下拉到 GND,保证空闲状态下 A > B 且差值 > 200mV。 常见的偏置电阻取值是 680Ω 或 560Ω(上拉和下拉各一个)。但要注意:偏置电阻和终端电阻是并联关系。如果你的终端电阻是 120Ω,偏置电阻各 680Ω,实际的空闲差分电压是: V_diff = VCC × R_term / (R_term + R_pullup + R_pulldown) = 5V × 120 / (120 + 680 + 680) ≈ 0.405V = 405mV 这个值 > 200mV,满足要求。但如果你把终端电阻换成了 60Ω(两个 120Ω 并联),差分电压就只剩约 210mV,卡在临界点上。所以终端电阻的数量和位置是规划偏置电阻的前提。 五、第三层:数据链路层检查 电气层没问题,但通信还是不对——进入协议本身的排障。这一层需要串口抓包工具。 5.1 确认从站是否支持 Modbus 这里不是让你看设备说明书——说明书写了支持不代表固件真的开了。用串口助手发一条最简单的请求帧,看从站回不回。 以 Modbus RTU 为例,发功能码 03(读保持寄存器): 从站地址: 01 功能码: 03 起始地址: 00 00(寄存器 40001) 寄存器数: 00 01(读 1 个) CRC: 84 0A 完整帧: 01 03 00 00 00 01 84 0A 把你的 USB-485 转换器接到从站的 RS-485 口上,串口助手设好波特率/数据位/校验位/停止位,发上面这帧。如果从站回了: 01 03 02 00 2A 39 9B 说明从站支持 Modbus,寄存器 40001 里的值是 0x002A(十进制 42)。如果没有任何响应,继续查下面几项。 5.2 波特率和帧格式 Modbus RTU 的默认帧格式通常是:9600-8-N-1(波特率 9600,8 数据位,无校验,1 停止位)。但很多老设备用 9600-8-E-1(偶校验)或 19200-8-N-1。还有一些国产设备默认 4800。 如果你的 USB-485 转换器波特率设对了,从站会回应。如果波特率不对,从站会收到乱码。从站看到乱码后的行为取决于其固件实现——有的设备直接丢弃,有的设备会尝试解析失败后复位接收缓冲区,表现为完全沉默。 不要猜波特率。 如果手头没有设备手册,用一个笨办法:USB 逻辑分析仪(几十块钱的那种就行)挂在 A、B 线上,看从站上电后有没有发数据。有些从站启动后会主动发一段标识信息,测量这段数据的位宽就能反推波特率。 5.3 校验位、停止位、数据位 9600-8-N-1 vs 9600-8-E-1 的区别不仅是一个校验位。帧总长度变了: - 8-N-1:1 起始位 + 8 数据位 + 1 停止位 = 10 位/字节 - 8-E-1:1 起始位 + 8 数据位 + 1 校验位 + 1 停止位 = 11 位/字节 如果你用 8-N-1 发,从站用 8-E-1 收,从站会把你的停止位当校验位来验证。反之亦然。这会导致偶发性的校验错误而非全部错误——因为停止位是固定的逻辑 1,有 50% 的概率碰巧「校验通过」。 这就是为什么波特率、校验位、停止位的排列组合要从设备手册里确认,而不是凑出来。 16 个从站,7 种波特率 × 3 种校验 × 2 种停止位 = 42 种组合。凑出来纯粹是折磨自己。 5.4 抓包分析——区分「没发出去」「没回应」「回了错误」 用串口监控软件(比如 Device Monitoring Studio、Serial Port Monitor,或者简单粗暴地用两个 USB-485 转换器背靠背接在总线上)抓实际的收发数据。 看三个关键指标: 主站发出的帧是否正确。 用 CRC 计算器验证你发出的帧里的 CRC 对不对。一个常见错误是 CRC 高低字节反了——Modbus RTU 规定 CRC 低字节在前,高字节在后。比如帧 01 03 00 00 00 01 的 CRC 是 0x840A,帧里应该是 84 0A 而不是 0A 84。 从站有没有响应。 如果主站帧正确发出但在合理的时间内(比如 200ms)没有任何数据回来,检查从站地址是否匹配、总线上是否只有一台设备在线(加另一台后可能地址冲突)、从站是否处于「监听」模式。 从站响应了什么。 如果从站回了异常帧,功能码最高位置 1 再加异常码(比如 01 83 02 C0 F1,83 = 03 + 0x80,异常码 02 = 非法数据地址),那至少链路层是通的,问题在应用层。 5.5 CRC 校验错误的精准排查 CRC 校验错误是最常见的链路层问题,可能的原因有这些,按频率从高到低: 1. A/B 线接反。 差分极性反了,所有数据位反转,CRC 大概率不对。但有共模容限时偶尔能对——这就是场景 2。 2. 波特率偏差。 两个设备的时钟偏差导致采样点漂移。如果波特率偏差超过 ±2%,接收端 UART 会采样到错误的位值。特别是在高温环境下,MCU 内部 RC 振荡器的温漂可能达到 ±5%。 3. 接线松动或接触不良。 一个位的丢失会导致后续所有字节移位,CRC 必错。 4. 电磁干扰。 变频器启动瞬间、电焊机工作时的强 EMI 会直接改变传输线上的电平,导致位错误。如果 CRC 错误只在特定设备启动时出现,基本可以锁定干扰源。 六、第四层:应用层检查 链路层通了(从站有响应且 CRC 正确),但返回的数据不对或功能不如预期。 6.1 从站地址 Modbus RTU 帧的第一个字节是从站地址。地址范围 1-247。 地址 0 是广播地址——主站用 0 发写命令,所有从站执行但不回应。如果你用地址 0 发了读命令,不会有任何从站响应。 很多新设备出厂默认地址是 1。如果你总线上已经有了一台地址 1 的设备,又加上一台出厂默认地址也是 1 的新设备,两台设备会在主站寻址 1 时同时响应——总线冲突,主站收到的数据是两路信号的叠加,表现为 CRC 错误或乱码。 排查方法:一次只往总线上接一个从站,逐个测试。 这是最笨但最有效的方法。一次测通了再加下一个。 6.2 寄存器地址偏移 Modbus 的寄存器地址有两个概念,搞混了就会读到错误的数据: - 协议地址: 帧里填的 16 位数值,从 0 开始。功能码 03 读保持寄存器时,协议地址 0 对应的是第 1 个保持寄存器。 - PLC 地址: 厂商在手册里写的编号,可能从 1 开始,也可能从 40001 开始。 举例:设备手册写「频率设定值在寄存器 40003」。这个 40003 可能有三种含义: 厂商习惯协议地址你在帧里填的值 40003 就是协议地址4000340003(超出单字节范围,看厂商怎么处理) 40003 表示保持寄存器区第 3 个200 02 40003 表示保持寄存器区第 3 个(从 0 开始)300 03 如果你不确定,从协议地址 0 开始,读 10 个连续寄存器。看哪个地址返回了你认识的值(比如设备型号编码、固件版本号、或者当前频率这些已知数据),反推厂商的编址方式。 6.3 功能和功能码 Modbus 标准功能码和对应的数据区: - 01:读线圈(0xxxx) - 02:读离散输入(1xxxx) - 03:读保持寄存器(4xxxx) - 04:读输入寄存器(3xxxx) - 05:写单线圈 - 06:写单保持寄存器 - 15:写多线圈 - 16:写多保持寄存器 但并不是每个从站都实现了所有功能码。一台简单的温控器可能只支持 03 和 06——你发 16(写多寄存器)它不认识,回异常码 01(非法功能码)。 如果从站回了异常码,异常码含义如下: 异常码含义常见原因 01非法功能从站不支持这个功能码 02非法数据地址寄存器地址超出范围 03非法数据值写入的值不可接受(超出量程等) 04从站设备故障从站自检失败 05确认命令已接收但需要时间处理 06从站设备忙正在处理上一个命令 收到异常码是好事——说明链路层通了,物理层没问题,你可以把注意力集中在应用层。 6.4 字节序(大端/小端) Modbus 协议规定多字节数据以大端序传输(高字节在前)。但 32 位浮点数怎么传?标准里没有定义。于是各家厂商各搞一套: - 一些厂商用 ABCD 序(最高字节在前) - 一些厂商用 CDAB 序(两个字交换位置,每个字内部仍然大端) - 一些厂商用 BADC 或 DCBA 如果你读两个连续的保持寄存器拼成一个 32 位浮点数,读到的值和期望值差好几个数量级,大概率是字节序反了。用已知值——比如把频率设成 50.0Hz(IEEE 754 表示是 0x42480000)——读回来,看十六进制排列顺序,反推厂商的字节序。 七、逐步添加从站的正确方法 现在假设你排查完了一个从站,通信正常。接下来要加更多从站——这是最容易出幺蛾子的环节。 正确做法: 1. 总线上只留一个从站(从站 A),确认 A 通信正常。 2. 断开从站 A,只接从站 B,确认 B 通信正常。 3. A 和 B 同时接上,确认两者都通信正常。 4. 如果 A+B 正常,断开所有,只接从站 C,确认 C 正常。 5. A+B+C 同时接上,确认三者都正常。 6. 以此类推。 如果在第 3 步 A+B 同时接上后出问题,检查这两件事: - 地址冲突: A 和 B 的从站地址是不是相同。 - 终端电阻累积: A 和 B 是不是都内部启用了 120Ω 终端电阻。参见 3.3 节。 如果在第 5 步 A+B+C 同时接上后出问题(前两步都正常),大概率是: - 总线驱动能力不足。 每个从站的 RS-485 收发器在接收状态下都有一个输入阻抗(标准 ≥ 12kΩ)。按照 RS-485 标准,一条总线上最多 32 个单位负载。如果你用的是 1/4 或 1/8 负载的收发器,数量可以更多。但如果用最便宜的 MAX485 级别芯片,挂 30 个从站后信号衰减会很明显。解决方案:选 1/4 或 1/8 负载的收发器,或者加 RS-485 中继器。 - 总线拓扑有问题。 RS-485 必须是菊花链(Daisy Chain),不能星星形分支。星形拓扑会产生信号反射,反射位置刚好在分支点。如果现场布线已经星星形了且没法改,加 RS-485 Hub 或中继器来隔离各分支。 八、主站轮询策略与超时设置 8.1 超时时间怎么算 Modbus RTU 的超时分两个层面: 字符间超时(t1.5): 两个连续字节之间的最大允许间隔,设为传输 1.5 个字符的时间。用来判断一帧是否结束。在 9600 波特率下,一个字符(11 位)约 1.15ms,t1.5 ≈ 1.75ms。 帧间超时(t3.5): 两个连续帧之间的最小间隔,设为传输 3.5 个字符的时间。在 9600 波特率下,t3.5 ≈ 4ms。 如果你的主站发完请求后等 30ms 还没有收到响应,不能简单地认为从站坏了。有些从站(尤其是低速 MCU 驱动的温控器、电能表)处理一个请求需要 50-100ms。把这个值设成至少 200ms 作为起始值,确认通信正常后再根据实际响应时间调短。 8.2 先读后写 在尝试写任何寄存器之前,先读一个已知的寄存器(比如设备型号、固件版本号、或者一个你已知当前值的寄存器)。确认读操作正常后,再尝试写。 不要一上来就往线圈里写 1。 你不知道那个线圈控制的是什么——可能是急停信号。用 06 功能码写保持寄存器同理,先想清楚你写的寄存器是干什么的。 九、排查清单速查表 在工控现场,你可能没有条件一步一步按本文顺序来。把这张表拍照存手机里,调试时对着查。 序号检查项工具通过标准 1A/B 线通断万用表电阻档A 线导通,B 线导通 2A/B 线不短路万用表电阻档A-B 电阻 > 1kΩ 3空闲电压万用表 DC 电压档A > B,差值 > 200mV 4终端电阻万用表电阻档(设备断电)A-B 电阻 120Ω 或 > 1kΩ(取决于是否启用) 5偏置电阻万用表电阻档(设备断电)A-VCC 和 B-GND 各约 680Ω 6波特率/校验/停止位设备手册与从站手册一致 7发空帧测试串口助手从站对 01 03 00 00 00 01 84 0A 有回应 8CRC 正确CRC 计算器主站发出的 CRC 与计算一致 9响应 CRC 正确CRC 计算器从站响应的 CRC 与计算一致 10从站地址唯一逐个接入测试总线上没有重复地址 11寄存器地址正确从 0 开始读连续 10 个返回数据含已知值 12字节序正确读已知值对照32 位值解析符合厂商规范 十、FAQ:高频排障问题 Q1:主站发数据,从站偶尔回偶尔不回,波特率 9600。为什么? A:偶尔性问题最常见的原因是 A/B 线接反、终端电阻配置不当、或电源干扰。先查 A/B 极性,再查终端电阻位置和数量,最后用示波器看波形。 Q2:USB-485 转换器在测试台上正常,一到现场就不行。换了好几个转换器都一样。 A:两个可能。一是现场的 RS-485 线路上有强共模干扰,普通 USB-485 转换器的共模抑制比不够。换一个带隔离的工业级 USB-485 转换器(比如宇泰 UT-890A 或同等产品)。二是现场的电脑 USB 口接地和 RS-485 设备的地之间有电位差,通过转换器形成回路。隔离型转换器能解决这个问题。 Q3:多个从站轮询时,第一个总是通,后面几个经常不通。 A:检查主站的轮询间隔。如果你在发完上一个请求后立即发下一个,而总线上的上一个响应还没传完,就会发生冲突。确保两次轮询之间的间隔 ≥ 从站数量 ×(请求时间 + 响应时间 + t3.5)。在 9600 波特率下,如果每个从站的平均响应时间是 15ms,10 个从站的轮询间隔至少设 200ms。 Q4:CRC 总是报错,检查了 A/B 极性和波特率都没问题。 A:用逻辑分析仪或示波器检查信号质量。看上升沿和下降沿的斜率,如果过于平缓(> 30% 位宽),可能是线容太大或驱动能力不足。降低波特率到 4800 试试。如果能通,说明信号质量确实是问题根源。 Q5:怎么知道从站到底支不支持 Modbus? A:发 01 03 00 00 00 01 84 0A 过去。如果不回,再用 9600/19200/4800 三种波特率各试一遍(8-N-1 和 8-E-1 各一遍)。如果全都不回,检查以下可能——设备根本没通电、RS-485 接口未使能需要跳线或配置、设备 RS-485 只支持 ASCII 模式、设备需要特殊的唤醒序列。 有问题再聊。现场调试这种事,文字能说清楚八成,剩下两成靠你自己去试。不过只要按这个顺序来,不走回头路,一个下午足够把大多数 Modbus 通信问题搞定了。 --- ### 146. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:串口通信故障排查:从电平到协议的完整手册 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:串口通信不通、乱码、时断时续?本文是一份可操作的串口排障手册,覆盖 RS-232/RS-485/RS-422 三种物理层的接线检查、电气层诊断、参数匹配和常见故障场景,附真实波形分析和工具使用方法。关键词:串口通信故障、RS-485 排障、波特率不匹配、共地问题、USB转TTL调试。 在工业现场调试串口通信,有一种体验每个工程师都懂:明明接线没问题、参数没设错,设备就是不回数据。查了半天,最后发现是 GND 没接——或者接了,但和隔壁变频器的 GND 共模干扰太大,把信号淹了。 串口通信的问题根因之分散,比 Modbus 更甚。因为它不关心协议内容,只负责把位传过去。所以「传不过去」的原因可以从物理层一路蔓延到上位机驱动。 这篇文章按「物理接线 → 电气层 → 参数匹配 → 工具链 → 常见故障场景」的顺序展开。你从头到尾查一遍,一个下午足够定位绝大多数串口通信故障。 一、串口通信的基础:三个物理层,一个逻辑层 串口通信这个概念,在工程现场其实涵盖了三个完全不同的物理层。很多人说「串口不通」的时候,其实没有区分 RS-232、RS-485、RS-422——但它们的故障表现和排查方法差异很大。 RS-232:三根线,RX、TX、GND。点对点通信,全双工。电平是 ±3V~±15V,空闲时 TX 和 RX 都保持负电压(逻辑 1)。最关键的约束是距离——不加驱动器的情况下,15 米以内。超过这个距离,波形就陡了。 RS-485:两根线,A 和 B(也叫 + 和 -)。差分信号,半双工。总线上可以挂多达 32 个节点(用中继器能到 256 个)。距离最长约 1200 米,但波特率越高,距离越短——115200bps 时实际能用的大概只有 100 来米。这个约束在现场经常被忽略。 RS-422:四根线,RX+、RX-、TX+、TX-。全双工差分,其实是 RS-485 的「收、发各一对」。也常被标注为 485-4(485-2 指两线的 RS-485)。与 RS-485 相比最大的区别:RS-422 只能一个发送器接多个接收器,不支持多个发送器。 这三个物理层的故障模式分别看下面几节。 二、调试前的自检:你的工具本身有没有问题 排串口问题,最容易被忽略的是——你用来调试的工具本身可能就是坏的。 2.1 USB 转 TTL 模块自检 把你的 USB 转 TTL 模块的 TX 和 RX 用杜邦线直接短接。打开串口助手(推荐 SSCOM 或 AccessPort),设好和你即将通信的设备相同的参数——波特率 9600、8 数据位、1 停止位、无校验。随便发一串数据(建议用十六进制发 01 03 00 00 00 01 这种带可变字节的帧),看接收区是否原样返回。 注意,必须用十六进制模式看。ASCII 模式显示时,0x00、0x0A、0x0D 这些特殊字符会被吃掉,你看到「回了」但其实少字节了。 如果短接后收发不一致,换一根 USB 数据线再试——有些充电线没有数据通道,接上去灯亮了但不传数。别笑,这是真实的。 2.2 串口助手确认参数真的生效了 很多人以为在串口助手界面上选了「9600,8,N,1」就真的是 9600 了。实际上发生过:串口助手界面显示 9600,但底层 Windows 驱动实际打开的是 115200——因为插拔 USB 时串口号变了,软件用了旧的配置。最稳妥的方法是,先用逻辑分析仪抓一下你发的第一个字节,验证位宽是不是 1/9600 ≈ 104µs。 如果你没有逻辑分析仪,至少用另一台确认正常通信的设备来验证当前串口参数是否真的有效。 三、物理接线检查:九成的问题出在这一层 3.1 共地——最容易被遗忘的第三根线 RS-232 通信必须共地。GND 提供了一个 0 电平参考基准。如果两个设备的 GND 没有连通,TX 上的 ±12V 信号飘在对端看来没有任何意义——它没有一个参考点可以判断电平高低。 实际排查方法:万用表打到蜂鸣档,一头点 A 设备的 GND 脚,一头点 B 设备的 GND 脚,确认导通。同时打到 DC 电压档,测两端 GND 之间的电压差。如果超过 ±3V,说明你的系统有严重的接地问题——这种情况下即使接了 GND,通信也是抖的。 RS-485 在理想情况下不需要共地线。差分信号只看 A/B 之间的电压差,不需要参考 GND。但实际上——当两个设备的 GND 之间共模电压超过 RS-485 收发器的共模输入范围(通常 -7V ~ +12V),通信就会不稳定。所以工业现场的 RS-485 总线,最好还是接一条弱 GND 参考线(一端接地,另一端通过 100Ω 电阻 + 0.1µF 电容并联接 GND),限制共模电压的同时不形成接地环路。 3.2 RX/TX 交叉——对了吗? RS-232 的规则很简单但总有人接错:A 设备的 TX 接 B 设备的 RX,A 设备的 RX 接 B 设备的 TX。 确认方法:用万用表二极管档测 USB 转 TTL 模块的 TX 脚——在空闲状态下 TX 应该输出负电压(约 -5V 到 -12V 范围),而 RX 空闲时是高阻态(电压不确定)。如果测到 RX 上有稳定的负电压,那就是把 RX 和 TX 搞反了。 3.3 RS-485 的 A/B 线——不同厂商的混乱标记 RS-485 的 A/B 线标记在不同厂商设备上没有统一标准。你可能会遇到: 设备标注高电平(逻辑1)对应的极性实际做法A / BA 为正, B 为负A 接另一个设备的 A, B 接 B+ / -+ 为正, - 为负+ 接 B, - 接 A(反逻辑,但厂商就这么标的)D+ / D-D+ 为高D+ 接 A, D- 接 B485-A / 485-BA 为高A 接 A, B 接 B 所以最靠谱的方法不是看标记,而是查芯片手册。 找到你设备上 RS-485 收发器芯片的型号(常见的有 MAX485、SP3485、SN65HVD08 等),然后查 Datasheet——DI 对应发送输入,RO 对应接收输出,DE/RE 是收发使能。A 脚是接收器的同相输入端(Non-inverting),B 脚是反相输入端(Inverting)。同相接同相、反相接反相——如果接了不通,把 A 和 B 交换一下。这不是笑话,这是在现场最常用的排障手段。 3.4 RS-422 的四线接线 RS-422 把 RS-232 的 RX 拆成 RX+ 和 RX-,把 TX 拆成 TX+ 和 TX-。接线规则:发送端的 TX+ 接接收端的 RX+,发送端的 TX- 接接收端的 RX-。 跨协议应急连接:如果你的控制器是 RS-232,传感器是 RS-422,没有转换器,在 5 米以内的短距离可以尝试以下应急方案(不保证稳定,仅限调试): 422 设备的 TX+ 接 232 设备的 RX422 设备的 TX- 接 232 设备的 GND422 设备的 RX+ 接 232 设备的 TX422 设备的 RX- 接 232 设备的 GND 原理是 422 的差分信号在短距离内,单端对 GND 的摆幅足以让 232 识别。但这是完全不符合规范的用法,能不用就不用。如果你需要产线长期使用,买个 RS-232 转 RS-422 转换器,几十块钱的事。 四、电气层诊断:当万用表不够用了 物理接线查完了,线是通的对的,但还是没数据——这时候就得看电气层了。 4.1 用示波器看 RS-232 波形 示波器探头夹 GND,探针搭 TX 脚。RS-232 空闲时是负电压(-5V ~ -12V)。当开始发送数据时,起始位是正电压(+5V ~ +12V,对应逻辑 0),然后是 8 个数据位(低位先发),接着是校验位(如果有),最后停止位回到负电压(逻辑 1)。 正常的波形应该是方方正正的——上升沿和下降沿都干脆。如果你看到方波的角是圆的,或者电平幅值严重不足(应该是 ±8V 左右,实际只有 ±2V),那是驱动芯片老化了,或者你的 USB 转 232 模块供电不足。 公式:每个位的持续时间 = 1 / 波特率。9600bps 时每个位约 104µs;115200bps 时约 8.68µs。用示波器光标量一下起始位的宽度,如果明显偏离预期值,那就是波特率设置错了。 4.2 用差分探头看 RS-485 的 A/B 波形 RS-485 的差分电压 = V_A - V_B。发送逻辑 1 时,V_A > V_B(差分电压 ≥ +1.5V);发送逻辑 0 时,V_A < V_B(差分电压 ≤ -1.5V)。 但真正有用的诊断在总线空闲时。RS-485 总线上所有发送器都关闭的时候,A/B 之间的差分电压应该由偏置电阻(Fail-Safe Bias)维持在一个确定的空闲电平(通常 ≥ +200mV,确保接收器不会在 0V 附近振荡)。如果你用万用表 DC 档测 A/B 之间的电压,空闲时读数接近 0V,那么接收器输出是不确定的——通信要么时断时续,要么全是 0xFF。 偏置电阻的设计值取决于节点数量和终端电阻: 终端电阻 Rt 通常为 120Ω,两端各一个,等效并联后 Rt_eq = 60Ω需要一个上拉电阻(B 到 VCC)和一个下拉电阻(A 到 GND),保证空闲时 V_AB ≥ 200mV以 VCC=5V 为例,需要的上拉/下拉电阻 ≈ (VCC - 0.2V) * Rt_eq / (2 * 0.2V) ≈ 720Ω。实际选 680Ω 或 560Ω。 偏置电阻只需要在总线上有一组就够了(一个位置),不需要每个节点都焊。 4.3 终端电阻——什么时候接、接在哪 终端电阻 120Ω 必须接在总线的物理两端,用来消除信号反射。不是每个从站都接——如果五个从站每个都焊上了 120Ω,等效并联后只有 24Ω,可能直接把 RS-485 驱动芯片拉死。 使用场景判断: 波特率低于 19200 且总线长度短于 50 米的,不接终端电阻通常也能用波特率 115200 或距离超过 200 米的,必须接如果是星形拓扑(设备的 A/B 线从一个中心分出去多个支线),终端电阻的位置很难确定——这种拓扑本身就不适合 RS-485,建议加一个 485 集线器 五、参数匹配:波特率、数据位、停止位、校验位 串口通信的五个参数(波特率、数据位、停止位、校验位、流控)必须两端一致。这是常识——但也是出错率最高的一环。 5.1 波特率不匹配时的波形特征 通信时双方都要识别起始位——从空闲(高电平)跳到低电平的那个下降沿。如果波特率不一致,接收端会在错误的时刻采样,读到的就是乱码。 用一个具体数值来说明:A 设备 9600bps,B 设备 921600bps。B 向 A 发一个字节(1 起始位 + 8 数据位 + 1 停止位 = 10 位),B 侧耗时 = 10 / 921600 ≈ 10.8µs。A 侧接收一个字节的时间 = 10 / 9600 ≈ 1.04ms。A 在 1.04ms 的时间窗口里看到只有 10.8µs 的低电平脉冲——这被当成噪声忽略了,A 压根不认为「这一帧开始传输了」。 反过来,低波特率向高波特率发送:A(9600bps)发一帧需要 1.04ms,B(921600bps)在 10.8µs 的窗口里只采到了第 1 位的起始沿,后面 9 位的采样点全是错的——结果就是乱码。 所以「波特率不匹配」的故障现象不是「完全不通信」,而是「通信了但数据全是乱的」。 这就是为什么很多人认为接线对了就不该有问题,而忽略了参数越级。 5.2 停止位和校验位 停止位的数量决定了帧之间的最小间隔。多数设备用 1 个停止位。但有些老设备(特别是 80 年代的工控设备)要求 2 个停止位,因为那时的处理器来不及在一个停止位时间内准备好接收下一帧。如果你用的是 1 个停止位去和 2 个停止位的设备通信,发大量数据时会丢帧——不是丢了中间数据,而是接收端还没准备好下一帧就到了。 校验位(None / Odd / Even)也很容易设错。更坑的是,有些串口助手软件的奇偶校验设置不生效——界面上选了 Even Parity,但底层实际没开。这就是为什么你不能只相信软件的界面显示,要用逻辑分析仪去实测一帧的位结构。 六、实际故障场景及解决 场景一:电脑 USB 转串口能和设备通信,换 HMI 屏就不行 这种情况非常常见,原因基本归结为: **电脑的 USB 转串口模块有可能流控引脚被拉高了。** 很多 USB 转 TTL 模块内置了 RTS/DTR 信号自动管理。如果设备在串口通信之外还依赖 RTS/DTR 等流控信号,接电脑没问题,接屏(只有 RX/TX/GND)就挂了。查设备手册的串口引脚定义——如果除了 RX/TX/GND 之外还有 RTS/CTS/DTR/DSR 等需要短接的引脚,你必须在屏这边处理好。 **屏端的串口参数和实际不符。** 一些 HMI 组态软件的串口设置项很深(可能在系统参数-通信-端口配置里),不一定在工程主界面。 **电脑的串口助手可能在自适应波特率。** 某些上位机软件会先用默认参数发帧,如果设备没回应,自动换另一个波特率重发——用户感觉「自动连上了」。但屏端不会做这种自适应,必须人工配对参数。 场景二:RS-485 总线上偶尔能读到数据、偶尔 CRC 错误 几个可能: **偏置电阻缺失或选值不当。** 总线空闲时电压飘在 0V 附近,接收器输出振荡产生的第一个字节被误认为是起始位。用万用表测总线空闲时的 A/B 电压差,< 200mV 就说明需要偏置。**总线上一端接了终端电阻另一端没接。** 信号从没接的一端反射回来,在特定比特位置上产生碰撞。尤其容易出在「波特率 19200/总线>50 米」这种场景。**星形拓扑。** RS-485 的支线长度有严格要求——反射临界长度 ≈ t_rise * 光速在电缆中的速度 / 2。如果 t_rise 约 10ns,临界长度约 1 米。超过 1 米的支线就会产生反射。把星形改成菊花链,或者加一个 RS-485 集线器。 场景三:降低波特率就能通,高了就不行 这个现象的原因通常是电缆质量或者距离超标。RS-485 的距离和波特率是反比的——标准上 9600bps 能到 1200 米,19200 大概到 600 米,115200 基本只能在 100 米以内。 但不是只有距离。以下因素也会把高速率杀死: 电缆特征阻抗不匹配(RS-485 要求 120Ω 特征阻抗的电缆,你用 100Ω 阻抗的电线就会在高速率时产生反射)终端电阻没有接或阻值不对总线上某个节点的驱动芯片输出电容太大,给总线的容性负载太大 诊断方法:用示波器比较 9600bps 和 115200bps 时的 A-B 差分波形。如果 115200bps 时的方波边沿有明显过冲或者出现阶梯状(不是干净地从高跳到低),那就是信号完整性问题。 场景四:USB 转 TTL 模块 TX/RX 短接自测正常,但连设备就是没反应 检查三个: **GND。** 你短接自测时不需要 GND,但和设备通信必须有 GND。**双方的电平标准。** USB 转 TTL 输出的是 TTL 电平(0V/3.3V 或 0V/5V),如果你接的是 RS-232 接口的设备(±12V),直接接上去信号可能被削峰。确认设备端到底是 TTL、RS-232、还是 RS-485 电平。**设备是否处于透传模式。** 有些 4G DTU 或 WiFi 模块在上电后默认进入 AT 指令模式,必须先发 `+++` 退出透传或者发特定指令进入数据透明传输模式。不确认这个状态直接发数据,模块当然不理你。 场景五:RS-485 能不能两个主站 不能。RS-485 是半双工通信,总线上同一时间只能有一个发送器。如果两个主站同时发数据,电流冲突——两个驱动芯片的保护电阻两端瞬间电流过大,运气好的触发短路保护,运气不好烧芯片。 如果确实需要多主站——换 CAN 总线,或者在上面跑 Modbus TCP 走以太网。 七、排查工具链 7.1 万用表 串口排障的第一工具。能做的事:确认接线通断(蜂鸣档)、确认 GND 间电位差(DC 电压档)、确认 RS-485 总线空闲电平(DC 档测 A-B 电压)。 7.2 USB 转串口模块自测 TX 和 RX 短接自测是基本功。但要注意用十六进制模式——ASCII 模式会隐藏控制字符。 7.3 逻辑分析仪 逻辑分析仪是串口通信调试的终极武器。现在的国产逻辑分析仪(如 Saleae 的克隆版、Kingst LA1010)已经非常便宜了——200 块不到就能买到可以自动解析 UART/SPI/I2C 协议的型号。 使用方法:把逻辑分析仪的 CH0 接 TX、CH1 接 RX、GND 接设备 GND。设好协议解析为 UART,波特率等参数设对,然后直接看发送和接收的数据是否和预期一致。 关键分析技巧:如果逻辑分析仪解析出的数据比串口助手显示的多几个字节(比如末尾多了 0x00),说明你的串口助手在 ASCII 模式下列显示了不可见字符。切成十六进制模式确认。 7.4 示波器 当逻辑分析仪只能告诉你「数据错了」但不知道「为什么错了」时,示波器上场。看信号的上升/下降时间、过冲、振铃、幅值衰减——这些都是影响通信质量的电气指标。 八、排查清单速查表 排查步骤检查内容工具通过标志1USB 转串口模块自测杜邦线 + 串口助手TX/RX 短接后十六进制回环一致2共地万用表蜂鸣档两端 GND 导通3GND 电位差万用表 DC 档两端 GND 电压差 < 2V4RX/TX 接线方向万用表 DC 档TX 有负电压(RS-232),RX 高阻态5RS-485 A/B 极性芯片手册对照同相端接同相端6总线空闲电平万用表 DC 档RS-485 A-B 空闲电压 ≥ 200mV7终端电阻万用表电阻档总线两端各 120Ω,不在中间节点出现8波特率/数据位/停止位/校验位逻辑分析仪实测位宽 = 1/波特率,帧结构一致9波形质量示波器方波边沿干净、幅值充足、无过冲振荡10设备模式设备手册不在透传/AT/休眠等特殊模式 按这个表从上往下查,不到最后一步别跳。串口排障最忌讳的就是「我觉得接线肯定没问题」然后直接跳到第五步——99% 的情况下你就是卡在第一步上。 有问题再聊。串口这东西,查到最后基本就两个结论:要么少接了一根线,要么多接了一根线。 --- ### 147. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:物联网传输模块的心跳包与注册包:机制、设计与排障 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:4G DTU、串口服务器、边缘网关等物联网传输模块中,心跳包和注册包是维持连接稳定和设备身份识别的核心机制。本文从 TCP KeepAlive、MQTT Keep Alive、应用层自定义心跳三个层面系统讲解心跳机制;从 DTU 注册包到云平台设备身份认证梳理注册机制,附参数计算公式、代码示例和排障步骤。关键词:心跳包、注册包、4G DTU、Keep Alive、MQTT 心跳、TCP 保活、设备注册。 一块 4G DTU 插上 SIM 卡,配好串口参数,连上服务器——数据通了,你觉得搞定了。过了一晚上,第二天来发现设备离线了,但信号灯还亮着。重启一下好了。再过几天又离线了。 这就是长连接保活的典型问题。在物联网场景里,设备分布在全国各地,有些在偏远山区,有些在地下室。通信链路从设备的串口出发,经过 DTU 的 4G 模组,穿越运营商的 NAT 网关,再通过公网到达你的云服务器。这条链路上每一个环节都可能把你的连接杀掉,但不会通知你。 这篇文章把心跳包和注册包从原理到实战全部讲清楚——不只是概念,更给出你可以在项目中直接用的参数、代码和排障方法。 一、为什么长连接会断 在讲心跳之前,先搞清楚长连接是怎么断的——因为不同原因对应不同的保活策略。 运营商 NAT 超时。4G DTU 用的是移动网络私有 IP(10.x.x.x / 100.x.x.x),经过运营商的 NAT 网关才能访问公网。NAT 网关为了节省资源,会给空闲连接设一个超时时间。国内三大运营商的典型值: 中国移动:5 分钟中国联通:大概 2-3 分钟中国电信:大概 3-5 分钟 不同地区、不同套餐卡的 NAT 超时时间不完全一样,但基本都在 2-5 分钟之间。超过这个时间没有数据包经过,NAT 网关上这条映射记录就被清除了。之后服务器想向 DTU 发包时,NAT 网关已经不认识这个包了,直接丢弃——设备看起来还是在线(4G 附着正常),但数据通道已经死了。 防火墙 / 中间设备。企业网络的出口防火墙通常也会对空闲 TCP 连接做清理。一台工控机通过 WiFi 接入了企业内网,和云端服务器保持一个 Modbus TCP 连接。如果半小时没通信,中间那台深信服 / 华为防火墙会把这条连接的状态标记为过期并释放。服务器以为设备还连着,设备以为服务器还在——这就是「连接假死」。 设备异常掉线。现场设备断电、4G 信号丢失、交换机重启——这些情况下 TCP 连接的对端不会收到 FIN 包。四层没有断开信号,应用层就无从感知。如果不靠心跳检测,服务器会一直认为设备在线,调度任务照常下发,全部超时。 TCP 半开连接。TCP 连接的一端已经关闭(比如服务器重启了),另一端不知道,还在 keep-alive 状态。这是标准的「半开连接」场景。 二、三层保活机制:TCP KeepAlive、MQTT Keep Alive、应用层心跳 保活有三种层次,对应不同的场景和粒度。 2.1 TCP 协议层的 KeepAlive —— 最底层,最不灵活 TCP 协议栈自带 KeepAlive 机制。开启后,如果连接在指定时间内没有数据传输,操作系统内核会自动发送探测包(空 ACK)去对端,等对端回复。对端如果还活着,回复一个 ACK;如果死了,多次探测无果后关闭连接。 Linux 内核的三个关键参数: net.ipv4.tcp_keepalive_time = 7200 # 首次探测前的空闲时间(秒),默认 2 小时 net.ipv4.tcp_keepalive_intvl = 75 # 探测间隔(秒),默认 75 秒 net.ipv4.tcp_keepalive_probes = 9 # 探测次数,默认 9 次 也就是说,默认配置下,一条 TCP 连接要断掉 2 小时 11 分 15 秒(7200 + 75 × 9)之后,操作系统才会通知应用层「这条连接死了」。这个时间对物联网场景完全不能用——等你发现设备离线了,设备的电池都换了两轮了。 可以在代码中为单个 socket 设置更短的参数(Linux ≥ 2.6.37 支持): import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # 以下三个参数需要 Linux 2.6.37+ 且 socket 为 IPPROTO_TCP sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60) # 60 秒空闲后开始探测 sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 10) # 每 10 秒探测一次 sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 3) # 3 次无响应判定断开 这样配置后,连接断开的发现时间 = 60 + 10 × 3 = 90 秒。 但 TCP KeepAlive 有两个致命缺陷。 第一,它只能检测端到端的 TCP 连接是否存活,无法检测端到端之间的中间设备(NAT 网关、防火墙)是否清理了连接。探测包只在两个端点的 TCP 栈之间流动,经过 NAT 网关时可能不会刷新 NAT 映射条目——也就是说,TCP 层认为连接正常,但 NAT 已经把通道关了。 第二,2 小时默认值太长,改了参数也只对当前 socket 生效,换台机器又回到默认配置。而且参数修改需要 root 权限,嵌入式设备(DTU、串口服务器)的内核可能不支持动态修改。 所以 TCP KeepAlive 在物联网场景里只能做辅助手段,不能替代应用层心跳。 2.2 MQTT 协议的 Keep Alive —— 标准化的应用层保活 MQTT 协议在 CONNECT 报文中定义了一个 16 位的 Keep Alive 字段,单位是秒。这个机制比 TCP KeepAlive 更贴近应用层需求: 客户端在 Keep Alive 时间内必须至少发送一个控制报文(可以是 PUBLISH、SUBSCRIBE、PINGREQ 等任何一种)。如果服务端(Broker)在 1.5 × Keep Alive 时间内没有收到来自客户端的任何数据包,则认为客户端已断开,关闭 TCP 连接并执行遗嘱消息(Last Will)。同理,如果客户端在 Keep Alive 时间内没有收到来自 Broker 的任何数据包,也应该主动重连。 MQTT 5.0 更进一步,允许 Broker 在 CONNACK 报文中返回 Server Keep Alive 值——如果 Broker 不接受客户端建议的 Keep Alive,它可以用自己的值覆盖,客户端必须遵守 Broker 返回的值。 关键数值选择:MQTT 的 Keep Alive 不能设太大也不能太小。太大了,设备离线很久 Broker 才发现;太小了,心跳包频繁消耗 SIM 卡流量。实际项目中,MQTT 的 Keep Alive 一般设在 60-120 秒之间。如果设备是电池供电(NB-IoT 场景),可以放宽到 300-600 秒。 和 TCP KeepAlive 的区别:MQTT 的 Keep Alive 是应用层协议行为,PINGREQ 报文封装在 TCP 包里发送。NAT 网关看到有 TCP 包经过,会刷新映射条目。这就是为什么 MQTT 的 Keep Alive 能解决 NAT 超时问题,而 TCP KeepAlive 不一定能。 2.3 应用层自定义心跳 —— 最灵活,也最需要设计 如果你的设备不用 MQTT,走的是裸 TCP/UDP 透传(Modbus TCP、自定义二进制协议等),你就需要自己设计应用层心跳。这就是 4G DTU 和串口服务器里最常见的心跳包概念。 设计原则: 心跳包要尽量小。 流量是钱。最简心跳包可以是一个字节——比如 0x48(ASCII 的 'H'),或者固定字符串 "Q"。心跳间隔要小于 NAT 超时时间。 国内运营商 NAT 超时最短的是 2 分钟,所以心跳间隔一般设 60 秒或更短。保守建议 30-60 秒。服务器应该回复心跳。 单向心跳只能让服务器知道设备活着,但设备不知道服务器是否活着。双向心跳(设备发,服务器回)让两端都能检测对端状态。连续 N 次心跳失败后触发重连。 不是丢一个心跳就断——偶尔的丢包在网络层面正常。通常设为连续 3 次心跳无回应后触发重连流程。 AIRIOT 平台的心跳示例:设备定时发送字符 "Q",平台收到后立即回复 "A"。设备通过是否收到 "A" 来判断连接是否正常——这个设计简单有效,4G DTU 上实现成本极低。 心跳间隔的计算公式: 心跳间隔 < NAT超时时间 × 安全系数 安全系数 = 0.6 ~ 0.8 如果运营商 NAT 超时是 5 分钟(300 秒),取安全系数 0.6,心跳间隔 ≤ 180 秒。再考虑到偶尔的网络抖动,实际项目中设 60~90 秒更稳妥。 三、TCP KeepAlive vs 应用层心跳:什么时候用哪个 这个问题没有标准答案,取决于你的场景。 维度TCP KeepAlive应用层心跳实现成本一行代码开启,零协议开销需要定义心跳帧和超时逻辑穿透 NAT不一定,探测包是空 ACK一定能,刷新 NAT 映射灵活性只能检测 TCP 连通性可携带状态信息、时间戳、设备电量等跨协议通用仅 TCPTCP / UDP 均可流量开销极小(空 ACK,40 字节左右)取决于自定义协议(通常几十字节)默认配置2 小时起,不可接受完全可控 建议的组合策略:在生产项目中,同时开启 TCP KeepAlive(作为底层兜底)和应用层心跳(作为主力检测)。TCP KeepAlive 参数设短一点(60 秒空闲 + 10 秒间隔 + 3 次探测),应用层心跳设 30-60 秒。即使应用层心跳因为 bug 没发出去,TCP KeepAlive 在 90 秒后也会发现连接断开。 如果你的设备必须走 UDP(比如某些 DTU 的注册模式),那 TCP KeepAlive 完全没用——只能用应用层心跳。 四、注册包:让服务器知道「我是谁」 心跳解决的是「我还活着」的问题,注册包解决的是「我是谁」的问题。 4.1 注册包的本质 在 DTU 和串口服务器中,注册包是设备在建立 TCP 连接后发送的第一包数据,用于向服务器声明自己的身份。服务器根据注册包的内容,将当前 TCP 连接与预先注册的设备记录进行关联。 一个典型的 DTU 注册流程: DTU 上电、拨号、附着 4G 网络DTU 通过 TCP 连接到服务器的指定端口连接建立成功后,DTU 立即发送注册包(可以是一串自定义字符,也可以是 IMEI/ICCID)服务器解析注册包,识别设备身份,更新设备在线状态注册完成,开始正常的双向数据透传 4.2 注册包的两种发送时机 有些 DTU 支持两种注册包发送方式: 连接时发送一次:只在 TCP 连接建立时发送。此后正常的数据透传不再包含注册信息。这适用于服务器按连接管理设备身份的场景——一个 TCP 连接对应一台设备,连接建立后身份就确定了。 每包数据前附加:把注册包附加在每次透传数据的前面。适用于多个设备通过同一个串口服务器或网关接入的场景——服务器需要通过每包数据中的注册信息来判断数据来源设备。缺点是增加了每包数据的开销。 以有人 DTU 为例,使用注册包的配置方式: 勾选「启用注册包」选择发送方式:「连接时发送一次」或「向服务器发送的每个数据包前都加上」自定义注册包内容(如 01 表示 1 号设备,02 表示 2 号设备)服务器接收到的数据格式为:注册包 + 透传数据 4.3 注册包的数据内容设计 注册包的内容取决于你的后端架构。常见的做法: 使用 IMEI 作为设备唯一标识。IMEI(国际移动设备识别码)是 15 位数字,全球唯一,烧在 4G 模组里改不了。DTU 启动时读取模组的 IMEI,作为注册包发给服务器。优点是天然唯一、不需要人为分配;缺点是 IMEI 长度 15 字节,如果需要极致省流量,可以考虑用平台侧预分配的短 ID(2-4 字节)。 使用平台预分配的序列号。在云平台上注册设备时,平台生成一个唯一序列号(可以是自增 ID,也可以是 UUID 的短哈希)。通过配置工具写入 DTU,DTU 连接时发送这个序列号。优点是序列号可控制(比如按区域编码),且长度短;缺点是需要一个配置下发流程。 使用 ICCID。SIM 卡的 ICCID 也是 20 位数字,唯一。但一般不推荐——因为 SIM 卡可能更换,而设备不应该因为换卡而变成「另一台设备」。 4.4 云平台的设备注册与 DTU 注册包的关系 在华为云 IoTDA 或阿里云 IoT 这类标准物联网平台中,设备注册是一个独立的流程: 先在平台上创建产品(定义设备的数据模型)然后注册设备(平台生成 Device ID 和 Device Secret)将这些凭据写入设备的固件或配置文件设备启动时,凭 Device ID 和 Secret 向平台发起认证连接(通常通过 MQTT 的 Username/Password 字段或者 X.509 证书) 在这个流程里,DTU 的「注册包」其实是对应平台的设备认证信息。比如 AIRIOT 平台要求设备建立 TCP 连接后第一时间发送序列号,本质上就是一个简化版的设备认证协议。 如果你的后端服务器是自己开发的,那注册协议完全由你设计。核心要求就两个:设备身份唯一、服务器能验明正身。最简方案——4G DTU 用 IMEI 注册 + 固定密钥 HMAC 签名,足以满足大多数非金融级安全要求的工业场景。 五、完整参数推荐与实战配置 5.1 心跳参数推荐值 场景心跳间隔心跳超时(连续失败)说明4G DTU 透传(TCP)30-60 秒3 次(90-180 秒)应对 NAT 超时,兼顾流量4G DTU 透传(UDP)15-30 秒5 次(75-150 秒)UDP 无连接,心跳更频繁MQTT(WiFi/以太网)60-120 秒1.5×KeepAlive遵循 MQTT 协议规范NB-IoT / 电池供电300-600 秒2 次(600-1200 秒)省电优先,接受较长离线发现时间局域网 Modbus TCP 网关120-300 秒3 次有线网络稳定,可放宽WiFi 串口服务器30-60 秒3 次WiFi 掉线概率高于有线 5.2 Linux 服务器侧 TCP KeepAlive 参数推荐 在 /etc/sysctl.conf 中: net.ipv4.tcp_keepalive_time = 120 net.ipv4.tcp_keepalive_intvl = 10 net.ipv4.tcp_keepalive_probes = 3 然后 sysctl -p 应用。加上应用层心跳(如 60 秒间隔),两层保活互相兜底。 5.3 DTU 实际配置示例 以下是一个典型的 4G DTU 配置方案(以有人 USR-G780 为例): 心跳包:启用 心跳周期:60 秒 心跳内容:Q(自定义字符串) 注册包:启用 注册包发送方式:连接时发送一次 注册包内容:IMEI(使用设备 IMEI 作为唯一标识) 连接类型:TCP Client 服务器地址:your-server.com 服务器端口:8001 断线重连:启用,间隔 10 秒,最多重连 30 次 服务器侧对应逻辑: 收到 TCP 连接请求 → 接受连接等待 5 秒内收到注册包 → 提取 IMEI,查数据库匹配设备列表 → 更新设备在线状态为 Online5 秒内没收到注册包 → 判定为非法连接,关闭 socket注册成功后,启动心跳定时器,期待每 60 秒收到 "Q" → 回复 "A"连续 3 个心跳周期(180 秒)没收到 "Q" → 判定设备离线,触发重连 / 告警 六、心跳与注册的常见坑 6.1 NAT 超时和心跳周期不匹配 最常见的问题:心跳周期设了 5 分钟,运营商 NAT 超时是 2 分钟。结果是每一次心跳间隔,NAT 已经断了,心跳包发不出去,设备永远处于「连上→2 分钟后断开→心跳超时重连→连上→2 分钟后断开」的无限循环。 诊断方法:在服务器侧看同一个设备的连接建立时间和断开时间,如果断开时间 - 建立时间几乎每次都是一个固定值(比如 120 秒),基本就是 NAT 超时问题。 解决:心跳周期 < 120 秒。 6.2 注册包没有在连接建立后立即发送 DTU 建立 TCP 连接后,如果先发送的是透传数据而不是注册包,服务器无法识别这个数据来自哪台设备——尤其是当多个设备共享一个服务器端口时,收到的第一包数据如果不是注册包,服务器只能丢弃或关闭连接。 必须保证:注册包在 socket connect 成功后以最快速度发出。 6.3 双向心跳只做了一方 设备发心跳、服务器不回复——服务器知道设备活着,但设备不知道服务器是不是还活着。如果服务器因为程序 bug 或网络问题不再回复心跳,设备可能还在继续等着,直到业务数据发送超时才意识到出事了。 双向心跳让设备侧也能主动发现服务器异常并触发重连。对于分布在全国各地、无人值守的 DTU 设备,这一条很重要。 6.4 TCP KeepAlive 的跨平台差异 Windows、Linux、FreeRTOS、LwIP 对 TCP KeepAlive 的默认值和可配置参数都不一样。Linux 默认 7200 秒,Windows 默认 7200000 毫秒(2 小时),LwIP(嵌入式 TCP 协议栈)默认也很大。千万不要依赖默认值。 6.5 注册包内容没有做校验 如果注册包是明文传输(例如直接发了 IMEI),在网络链路上可能被抓包篡改。对于安全性要求高的场景,注册包至少应该包含一个摘要或签名。最简单的做法:设备用预置的对称密钥对 IMEI + 时间戳做 HMAC,服务器验证 HMAC 通过后才接受注册。 七、排查清单 当 DTU 频繁离线时,按这个顺序排查: 步骤检查项方法预期1心跳是否真的在发抓服务器侧日志/抓包按设定的心跳周期稳定收到2心跳间隔 vs NAT 超时对比心跳周期和运营商 NAT 超时心跳周期 < NAT 超时 × 0.63服务器是否回复心跳设备侧抓日志发出 "Q" 后收到 "A"4断线后是否自动重连拔掉 SIM 卡再插回DTU 自动重新建连 + 发送注册包5注册包是否第一时间发送抓服务器 TCP 连接建立后的前几个包第一个数据包就是注册包6服务器侧 TCP KeepAlive 参数`sysctl net.ipv4.tcp_keepalive_time`≤ 120 秒7运营商信号强度DTU AT 指令 `AT+CSQ`≥ 15(低于 10 不稳定)8SIM 卡流量到期 / 欠费运营商后台查询流量充足、无欠费暂停 心跳和注册包说起来概念很简单——定时发个包、表明自己是谁。但真正做起来,细节都在参数选择和对故障模式的预判上。这篇文章给的那些数字(30 秒、60 秒、120 秒)不是随便写的——是根据国内三大运营商的 NAT 超时、4G 模组的功耗约束、服务器资源开销三者的平衡点。你自己的项目如果场景不一样,自己在测试环境里抓包验证。 有问题再聊。 --- ### 148. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus RS485的布线属于弱电操作,不同于电力布线,如果电工不是现场总线网络专家,最终通信网络可能无法正常使用。 1、正确的端子接线 每个Modbus设备至少提供一路通信口,两个连接端子。为了方便起见,将其指示为A和B。在这两个端子中,连接通信电缆,以便所有参与通信的设备并联连接。所有“A”端子必须连接在一起,所有“B”端子必须分别连接在一起。 注意:如果出现AB端子接反,不仅影响单个设备,而可能导致整个菊花链网络通信异常。 建议:现场布线施工中区分AB端子上的线缆颜色,例如A端子统一使用白色通信线,B端子统一使用蓝色通信线。 每个端子中允许同时插入进线和出线,可以将主入口和出口端子直接连接到仪表的端子上,而无需创建分支。如果每个端子只能插入一根电缆,则必须使用三通接线端子为每个要连接的仪表创建适当的分支。 2、正确的设备间布线 Modbus RS485采用菊花链总线方式连接,区别于强电并联电路,通信线的并联方式存在诸多要求。Modbus RS485总线提供一条主电缆(主干),所有设备都必须通过分支线路与主电缆连接,并且尽可能短。 注意:分支线路长度不得超过1200米,过长的分支线路将产生信号反射和干扰,导致通信数据无法正常收发。 错误的总线布线方式: 3、最大通信距离和最大设备数 设计施工中的主电缆长度建议不得超过700米,其中不包含分支线路的长度。不同的通信波特率下,主电缆的长度限制如下: 波特率(bps)有效通信距离(米)150 - 96001220192009753840091457600701115200488 Ps:基于24 AWG双绞线屏蔽线,0.085欧姆/米,导线之间41pF/米,导线到屏蔽层72pF/米。 设计施工中连接到主电缆的设备总数建议不超过32个,其中包含主机节点。总线中最大负载设备数主要依赖于RS485转换器的芯片类型,并和所用的通信电缆品质相关。设备节点越多、传输距离越远、电磁环境越恶劣,而对所选的电缆要求就越高。 RS485通讯中一个串口可以控制多少个设备的问题是与该RS485网络中的电气特性和协议特性所决定的。所谓电气特性就是指的是要保证RS485网络中的特征阻抗在允许的范围内(120欧姆)。连接的设备越多,特征阻抗越小。总线上设备节点较多时,应在总线末端增加120欧姆的终端电阻。 4、正确的使用中继器 当数据传输的有效距离要求超过设计要求,或设备个数较多时,为避免过度的信号衰减,可以增加信号中继器。 每个中继器将相邻的两个主电缆串联,同一总线中部署的中继器建议不要超过3个,否则将产生显著的数据传输延时。 5、通信电缆选型 Modbus RS485应使用带屏蔽双绞线。导线由两根绞合在一起的导线组成,屏蔽层可以是编织的金属网或包裹箔片。 6、屏蔽层接地 电缆屏蔽层必须有单点接地,接地点可在主电缆的一端完成。 7、设置匹配电阻 当通信距离较长,设备节点较多时,为避免信号反射,必须在主电缆的末端安装120欧姆匹配电阻。该要求非必须,主要视现场布线后的通信情况而定,所以在布线过程中应预留匹配电阻安装位置。 文章转自:https://mp.weixin.qq.com/s/HWS82XC5jolMOTDAdFmV1w --- ### 149. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、ModBus RTU通讯协议与ModBus通讯协议有什么区别? ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。 ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。目前,Modbus有下列三种通信方式: 1.以太网,对应的通信模式是MODBUS TCP。 2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUS RTU或MODBUS ASCII。 3.高速令牌传递网络,对应的通信模式是Modbus PLUS。 二、关于MODBUS RTU通讯协议的提问? modbus 主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16或LRC两个字节)总共8个字节组成。其实VB中编程很简单从组建添加MSComm组建就行了,难的是校验, 三、modbus、rtu、modbusrtu分别是什么? modbus协议是工控行业的标准协议,前身为莫迪康所写,现已被施奈德收购。 而modbus分为两种协议:即串口协议(modbusrtu)和网口协议(modbus tcp)协议,一般的工控机只支持rs232或者RS485的串口模式,这个时候工控机的协议栈里就只有modbus RTU协议,当他从串口接收到数据时,会直接根据报文中的数据进行控制,如果需要用modbus TCP协议进行传输,则需要使用带有网口的PLC。 具体的帧格式如下: modbus RTU 地址域 功能码 数据 差错校验 modbus TCP 目的地址 协议id 长度 单元号 功能码 数据 简单的说 tcp是由RTU加工而来的,而RTU则是另外一种概念,不包含在modus协议内,是工控行业对监控设备的简称。 四、关于modbus_RTU协议主机发送的命令的一些问题 01 读保持线圈状态(Read coil status) 02 读输入线圈状态(Read input status) 03 读保持寄存器(Read holding register) 04 读输入寄存器(Read input register) 05 写单个线圈(Force single coil) 06 写单个寄存器(Preset single register) 15 写多个线圈(Force multiple coils) 16 写多个寄存器(Preset multiple registers) 这些都是什么意思 答:01 读取逻辑线圈组状态 02 读取离散量线圈组状态 03 读取一个或多个保持寄存器的二进制值 04 读取一个或多个输入寄存器的二进制值 05 改变逻辑线圈状态 06 改变单个寄存器的二进制值 15 改变多个寄存器的二进制值 16 指定多个操持寄存器的二进制值 五、OPC 转modbus RTU 方式 我现在有一个OPC服务器,里面很多tag,tag是AB里出来的,怎么将tag连到modbus? Profibus、Fielbus、Modbus、CC-link等等是各中PLC硬件支持的通讯协议,这个是各厂商的硬件属性一样.只是现在计算机组态软件都支持很多种协议的PLC.你理解反了。 Profibus、Fielbus、Modbus、CC-link这些协议,是一种通讯协议,一般不需要你去编程,就好象你使用计算机,你不需要编写IP协议一样,只是要遵循它。 遵循的意思就是,你必须按照该厂家所支持的协议在PLC或者DCS硬件组态的时候按照该通讯协议设置硬件.其实这个很简单. 这里简单指的是,你学编程,重点是编写执行控制的动作的程序,硬件通讯协议不需要你自己动手写。 六、什么是modbus rtu master? 就是选RTU模式,因为MODBUS分为ASCII模式和RTU模式,MASER就是设置为主站,一般为PLC端,变频器设为从站,还要注意主站和从站地址的设置。 七、Modbus rtu 为什么没有开始和结束标记? 由于Modbus rtu帧的每个字节是16进制数,数值范围在00~FF,若像ModbusASCII那样用02、03表示开始和结束标记,则与数值2、3发生冲突,无法判断其是标记还是数值,无法数据解包。 八、modbus tcp 到 rtu的转换? 请仔细查看帧格式: modbusRTU 地址域 功能码 数据 差错校验 modbusTCP 目的地址 协议id 长度 单元号 功能码 数据 写一个TCP转RTU的程序放到设备里做modbus网桥即可 九、MODBUS RTU通讯线被烧? 用万用表量一下出来的通讯线,电压不超过5V应该没问题,一般不会烧东西,接的时候区分正和负。很多产品B是正,量一下看看。 十、触摸屏modbus rtu怎么设置? 一般是通过宏指令自己编程实现,当然也有支持RTU的,在通讯类型菜单 十一、MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数? 浮点数保存的字节格式如下: 地址 +0 +1 +2 +3 内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 这里S 代表符号位,1是负,0是正 E 偏移127的幂,二进制阶码=(EEEEEEEE)-127。 M24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了较高的有效位数,提高了精度。零是一个特定值,幂是0 尾数也是0。 浮点数-12.5作为一个十六进制数0xC1480000保存在存储区中,这个值如下: 地址 +0 +1 +2 +3 内容0xC1 0x48 0x00 0x00 浮点数和十六进制等效保存值之间的转换相当简单。下面的例子说明上面的值-12.5如何转换。浮点保存值不是一个直接的格式,要转换为一个浮点数,位必须按上面的浮点数保存格式表 所列的那样分开,例如: 地址 +0 +1 +2 +3 格式 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 二进制11000001 01001000 00000000 00000000 十六进制 C1 48 00 00 从这个例子可以得到下面的信息: 符号位是1 表示一个负数 幂是二进制10000010或十进制130,130减去127是3,就是实际的幂。 尾数是后面的二进制数10010000000000000000000 在尾数的左边有一个省略的小数点和1,这个1在浮点数的保存中经常省略,加上一个1和小数点到尾数的开头,得到尾数值如下: 1.10010000000000000000000 接着,根据指数调整尾数.一个负的指数向左移动小数点.一个正的指数向右移动小数点.因为指数是3,尾数调整如下: 1100.10000000000000000000 结果是一个二进制浮点数,小数点左边的二进制数代表所处位置的2的幂,例如:1100表示 (1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。 小数点的右边也代表所处位置的2的幂,只是幂是负的。例如:.100...表示(1*2^(-1))+(0*2^(-2))+(0*2^(-2))...=0.5。 这些值的和是12.5。因为设置的符号位表示这数是负的,因此十六进制值0xC1480000表示-12.5。 十二、RS-485的设备,遵守MODBUS-RTU协议。怎样用的电脑读取信息? 用电脑的串口,接个485转换器,接到设备的485接口,再找个串口软件,根据设备资料上的寄存器地址发送modbus报文,modbus报文通过串口软件发送啊,报文格式:01 03 00 00 00 01 840A 读寄存器命令。 十三、vb modbus给modScan32 rtu发送数据应该怎么写? 确定两个软件哪个是主,哪个是从。然后再确定通讯协议是RTU、ASCII还是TCP。如果是TCP,就用socket控件。RTU\ASCII就用COM控件。然后给对应的口按照协议收发数并解析就可以了。 十四、ModBus RTU通讯协议与ModBus通讯协议有什么区别? modbus 协议包括了MODBUS RTU 十五、modbus rtu通讯协议 如何判断超时? 设置一个标志量用来表示是否超时;再用一个定时器,定时时长为发送3.5个字符的时间(当然为了保险时间可以长一些);在定时器中置超时标志;在串口中断中每收到一个字节时定时器清零;主程序中根据超时标志做相应处理。 十六、如何理解MODBUS协议RTU模式中的1.5和3.5字符间隔? 发送两帧数据之间要有一定的时间间隔,以保证接收方UART能够区分。这个时间间隔在MODBUS RTU模式中要求是1.5和3.5字符间隔,也即是传输1.5和3.5个字符的时间,它与设置的通信参数有关,计算为: 若串口通信参数设置为(注:开始位固定为1):数据位8,奇偶校验位1,停止位1,波特率9600bps,则传输一个字符(即1个字节)的时间为:(1+8+1+1)/9600=0.00114583s=1.1454583ms 1.5字符间隔=1.5x1.1454583ms=1.71818745ms 3.5字符间隔=3.5x1.1454583ms=4.00910405ms 十七、MODBUS RTU 测试软件? 推荐:modscan32 十八、MODBUS RTU协议,上位机与仪表通信,读写数据都正确,为什么仪表掉电,写入的参数又丢失了?怎么保存? 两种可能: 1.如果在仪表上设置参数掉电后都保存不了的话,基本可以确定是仪表问题; 2.有些仪表写入参数后还需要向固定的寄存器写入确认参数,为了保证写入参数真确,需要检查仪表通信部分说明书。 --- ### 150. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:Modbus RS-485 接线完整手册:从线缆选型到调试跑通 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:RS-485 接线是 Modbus 通信的第一道门槛,这道门槛挡住了无数新手——不是因为原理难,而是因为细节太多、容错太低。本文从 A/B 线辨认、拓扑结构、线材选择、屏蔽层接地、终端电阻与偏置电阻配置、防雷保护到调试排查全流程覆盖,每一条建议都来自现场事故,每一个参数都可以直接对着施工。关键词:RS-485接线、Modbus布线、终端电阻、偏置电阻、屏蔽接地、手拉手拓扑。 现场最常见的一幕:设备都装好了、参数也配了、程序也写了,通电一测——通信灯不闪。拿万用表一量 A/B 线,电压一直在 0.3V 和 1.8V 之间跳,根本没到 5V 的差分摆幅。再查线——A 和 B 接反了。半小时的活变成了三小时的现场排查。 RS-485 接线就是这么一位脾气古怪的老实人:规则其实很简单,但你不遵守它,它绝对不跟你废话。 一、认识 RS-485 的信号线:哪根是 A、哪根是 B RS-485 通信只靠两根差分信号线——习惯上标记为 A(或 D-)和 B(或 D+)。差分传输的意思是:不靠单根线的电压绝对值来传数据,而是比较 A 和 B 两根线之间的电压差。 当 B 线电压高于 A 线电压 200mV 以上(即 B - A > +200mV),表示逻辑 1。当 A 线电压高于 B 线电压 200mV 以上(即 B - A < -200mV),表示逻辑 0。如果 A 和 B 之间的电压差在 ±200mV 之间,这是不确定状态——接收端不知道这是 1 还是 0,可能会读到随机噪声。 这就是为什么你必须确认 A 和 B 没接反——反了之后,发送端的逻辑 1 在接收端变成逻辑 0,Modbus 帧的每个字节全乱套。 1.1 厂商的 A/B 标准:不是每个厂商都标「A」和「B」 这是 RS-485 接线最坑的地方——不同厂商对 A 和 B 的定义是反过来的。有的标「A = 正极(B+)、B = 负极(A-)」,有的标「A = D-、B = D+」。而且 Modbus 规范本身并没有强制 A/B 的命名方式,它只规定了差分信号的电气特性。 所以你手上拿到的说明书如果是英文版,可能标的是 D+、D-、Tx+、Tx-。如果是国产仪表,可能标 A、B、GND。怎么确认?用万用表。 1.2 用万用表确定 A/B 线的终极方法 在设备上电但空闲时(没有通信),用万用表直流电压档分别测量 A 对 GND 和 B 对 GND 的电压。 空闲状态下(没有数据传输),总线的默认状态用偏置电阻保持着:B 线电压应该高于 A 线。典型值:B 对地约 2.5V~3.5V,A 对地约 1.5V~2.5V。 如果测出来 A 比 B 高——那 A 和 B 的定义和你试的这台设备刚好反了,互换即通。 还有一个现场速判法:先把所有设备的 A 连到 A、B 连到 B、GND 连到 GND。通电后用万用表交流电压档测 A-B 之间的电压。如果通信正常,在数据传输瞬间你会看到电压明显波动(几百毫伏到几伏的摆幅)。如果一直没波动,要么没接终端电阻导致总线浮空,要么 A/B 接反导致所有从站同时认为接收到了错误帧。 二、拓扑结构:只能手拉手,拒绝一切分支 2.1 正确的拓扑 RS-485 总线必须采用「手拉手」菊花链拓扑——从一台设备出来,只接下一台设备,不分支: 主机 ─── [设备1] ─── [设备2] ─── [设备3] ─── ... ─── [设备N] │ │ │ │ │ └─ 120Ω ────┘ │ │ │ 继续按序串联 └───────── 120Ω ──┘ (末端终端电阻) 总线两端各接一个 120Ω 终端电阻,中间设备依次串联。 2.2 绝对禁止的连接方式 星形连接:所有设备从同一个集中点放射出来。 ┌── [设备1] 主机 ──[节点]── [设备2] └── [设备3] 树状分支:从总线中段分出一条分支挂设备。 这两种接法的问题是信号反射叠加——每个分支末端都是一次阻抗不连续,反射波和主信号叠加在一起,接收端看到的是一团噪声。设备越多、分支越长、波特率越高,星形连接的危害越大。 2.3 现场万不得已的分支对策 如果现场设备物理位置确实无法手拉手(比如一排设备装在一面墙上、另一面墙还有设备),不硬走星形——用一个 RS-485 分配器(也叫集线器)把主干分成多个独立网段,每个网段内部依然是标准的手拉手拓扑。RS-485 分配器本质上是多口中继器,每个端口有独立的驱动和接收电路,代替了简单的铜线分支。 三、线缆选型:一条线选错,全盘皆输 3.1 必须用屏蔽双绞线(RVSP) RS-485 依赖差分信号来抑制共模干扰——干扰信号在 A 和 B 两根线上的感应电压几乎相同,接收端做差分减法时自然抵消。双绞线能保证 A 和 B 两根线耦合的干扰尽可能相同,绞距越均匀、绞合越紧,抗干扰效果越好。 线缆类型是否可用原因RVSP(屏蔽双绞线,特性阻抗 120Ω)最佳选择专为 RS-485 设计RVV(普通护套平行线)不可用不是双绞,干扰耦合不平衡网线(Cat5e/6 UTP)不推荐虽然是双绞线但特性阻抗 100Ω,且无总屏蔽同轴电缆不可用单端信号,和差分完全不是一个概念普通 BV 线(单芯硬线)不可用没有双绞、没有差分,等同于两根天线 线径要求:0.75mm² 或 1.0mm²(约 AWG18-20)。0.5mm² 只能在 300 米以内的理想环境中跑,长距离或干扰强的现场必须用 0.75mm² 以上。 特性阻抗要求:120Ω。这和你终端电阻的 120Ω 匹配,不能随便拿 100Ω 的网线代替——阻抗不匹配意味着每一段电缆过渡处都会反射信号。 3.2 现场常见的野路子 「拿一根网线分出两芯当 485 线使」——网线是 UTP(非屏蔽),而且网线 8 芯内部四对双绞,你只取其中一对用,剩下的 6 芯浮空就是 6 根天线,给双绞线的干扰耦合引入了巨大的不平衡。如果你必须用网线(现场只有网线了),用小刀把不用的 6 芯全剪掉贴地,只留你用的那一对,再把这 2 芯外套根屏蔽层接地。这比直接用网线强,但依然比正规 RVSP 差。 「把 485 信号线和 220V 电源绑在一起穿同一根管」——变频器一次侧的 PWM 波形在电源线上激发的电磁干扰可以直接干翻 485 差分信号的 200mV 阈值。485 线路距离强电(电源线、变频器输出线)至少保持 30cm 平行距离,交叉时必须直角穿。 四、屏蔽层接地:单点还是双点? RS-485 采用的是低频差分信号(典型的波特率最高也就 115.2kbps),属于低频电路。低频电路的基本原则:单点接地。 4.1 规则:屏蔽层单点接地 屏蔽层只在总线的一端接大地。另一端悬空,不接任何东西。 为什么?如果两头都接地,两个地由于各自的接地电阻不同,会在屏蔽层中产生一个环路电流(地环路)。这个电流在屏蔽层上流动本身就是干扰源——它不仅不屏蔽,反而往信号线上耦合噪声。单点接地斩断了这个环路。 4.2 接哪一端? 优先在主站侧(PLC、上位机、网关侧)接地。理由:主站通常有更好的接地条件(标准配电柜、等电位接地排),现场设备侧接地条件差(设备外壳接了个不知道通不通的接地桩)。 如果主站侧本身是浮地系统(设备没有接地端子),可以把屏蔽层接到现场设备侧的防雷接地排上。关键是:只接一端。 4.3 超过 50 米怎么办 如果总线长度超过 50 米、现场电磁环境特别恶劣(旁边有变频器、大功率电机),单点接地可能不够——屏蔽层过长后,单点接地的效果会衰减。这时候采用 双端接地 + 串联电阻:屏蔽层的远端不是直接接大地,而是通过一个 100Ω ~ 1kΩ 的电阻接大地。电阻限制了地环路的电流,同时保持了屏蔽层两端的电位不至于差太多。 4.4 信号地(GND)的连接 许多 RS-485 设备除了 A、B 线还有 GND(信号地)端子。这个 GND 是否要接? 如果所有设备都在同一套电源系统上(同一个配电柜出来的 DC 24V),可以不接 GND——各设备的 GND 已经等电位了。 如果设备用独立电源(各自一个开关电源适配器),必须把所有设备的 GND 端子串起来(注意:是 GND 串在一起,不是接大地)。不同电源的 GND 之间可能有几伏甚至几十伏的共模电压差——如果这个差超出了 485 收发器的共模范围(典型 -7V~+12V),收发器会烧毁或者永远识别不了信号。GND 线的作用就是把所有设备的参考地拉到同一个电位上。 五、终端电阻:120Ω 的两个位置 5.1 终端电阻的作用 信号在传输线上的行为和水波在管道中类似。管道突然到尽头,水波会弹回来。RS-485 双绞线的特性阻抗约 120Ω,信号跑到线的末端如果突然遇到高阻抗(开路),能量无处消耗,就会反射回来。反射波叠加在原始信号上,形成振铃和过冲。 终端电阻在总线的两端各接一个 120Ω 电阻跨接在 A、B 线上,使线缆末端阻抗等于 120Ω——和线缆特性阻抗一致,信号到达末端时被电阻吸收能量,不反射。 5.2 接在哪里 只在总线的最两端设备上各接一个。中间设备不接。如果接了三个以上的终端电阻,总并联电阻会低于 120Ω,反而加重 485 驱动器的负载,信号幅值被拉低。 5.3 什么情况下需要考虑不接终端电阻 短距离(< 50 米)、低波特率(≤ 9600)、只有 2-3 台设备。此时信号反射的能量极小,不接终端电阻也能正常工作。但这需要实测确定——接了不会有副作用,是一种保险做法。 波特率 38400 以上或距离超过 100 米,终端电阻是必须的。 六、偏置电阻:防止空闲时的噪声 6.1 问题背景 RS-485 总线空闲时(没有设备在发送数据),A 和 B 线的状态是不确定的。如果此时总线是完全浮空的(只有终端电阻把 A 和 B 拉在一起),任何微小的电磁噪声都可能在 A-B 之间产生超过 ±200mV 的电压波动——接收端看到的就是未经请求的随机字节。这个现象叫「空闲噪声触发了通信中断」,表现为主站发了查询,从站没反应——因为从站的中断服务程序被空闲随机字节占满了 CPU。 6.2 偏置电阻的原理 在总线一端加上拉电阻(A 到 +3.3V/5V)和下拉电阻(B 到 GND),使得空闲时 B 线的电压自动高于 A 线 200mV 以上——总线默认处于确定的逻辑 1 状态(空闲态)。这组电阻叫偏置电阻(Fail-safe Bias Resistor)。 6.3 计算方法 标准 485 总线有 120Ω 终端电阻两个(分别接两端)。加上偏置电阻后,端接等效电路变成:上拉电阻 Rpu 接 5V → 120Ω 终端电阻 → 下拉电阻 Rpd 接 GND。 要求空闲时 B - A ≥ 200mV,计算: 取 Rpu = Rpd = 680Ω,电源 5V—— 空闲时 A 点电压 = 5V × (680Ω // 下端120Ω的一半) / (680Ω + 680Ω // R)... 简化公式:Rpu = Rpd ≈ 5V / (V_AB_min / Rterm) = 5 / (0.2 / 60) ≈ 1.5kΩ —— 这个计算太理想。实际工程上直接用 680Ω 或 560Ω 就行。常见方案:Rpu = Rpd = 680Ω,在总线一端接。 下表是常用偏置电阻值在 5V 供电下的空闲电压: 偏置电阻值 (Rpu = Rpd)空闲时 B - A 电压(约)适用场景1.5kΩ200mV临界值,环境干净可用1kΩ300mV一般推荐680Ω430mV有轻微干扰的环境560Ω530mV干扰强但别太小的底线470Ω640mV强干扰但再小会拉动电源 偏置电阻不宜过小——太小会把 485 驱动器的有效信号幅值拉低,而且偏置电流浪费太多。 市面上很多 RS-485 串口卡和转换器(如 USB 转 RS-485 模块)已经在电路板上内置了偏置电阻,这种情况下总线远端不用再加偏置——但要确认。用万用表断电测 A 对 VCC 和 B 对 GND 的电阻值,如果测到 680Ω~1.5kΩ 范围,说明有内置偏置。 七、防雷与过压保护 RS-485 通信线只要走出建筑物、在两栋楼之间跑,就必须考虑浪涌保护。RS-485 收发器的耐压通常在 ±12V~±15V 左右,一个近距离的雷击感应能带来几百伏到几千伏的瞬间电压——直接烧毁收发器芯片。 7.1 三级防护方案 标准的三级 RS-485 浪涌防护是: 第一级:A、B 线对保护地(PE)各接一个气体放电管(GDT),耐压 90V~150V,泄放大能量。 第二级:A、B 线对 PE 各接一个 TVS 瞬态抑制二极管(如 SMBJ6.5CA,击穿电压 6.5V),钳位剩余电压。 第三级:A、B 线各串联一个 PTC 自恢复保险丝(如 50mA-100mA 级),限制持续电流。 这个三级方案中,GDT 吃掉最大能量、TVS 吃掉剩余尖峰、PTC 限制持续电流。实际部署中,可以在总线的入口处(建筑物外墙穿管处)集中安装一个 RS-485 防雷模块,再把信号按正常接线接入室内设备。 7.2 防雷接地必须可靠 防雷器件的接地端必须低阻抗接入接地排。防雷接地排的接地电阻应 ≤ 4Ω。如果防雷器件地把浪涌电流导入了不合格的地——那浪涌电流通过大地的高阻抗会瞬间抬升整个「地的电位」,然后通过共地耦合把浪涌送回通信芯片,等于没防。 八、调试流程:从万用表到跑通 按这个顺序排查,是最有效的: 步骤一:断电检查 所有设备断电。用万用表电阻档测 A-B 之间的直流电阻。如果终端电阻接了 120Ω,应该在 60Ω~120Ω 之间(取决于其他设备的输入阻抗)。如果电阻是开路状态,要么线断了,要么终端电阻没接。 测 A 对地、B 对地的电阻——应该是高阻(几十 kΩ 以上)。如果测到短路或低阻,线缆有破损碰壳或设备端口击穿。 步骤二:上电检查空闲电压 所有设备上电,但主站不发送数据(或把主站拔掉)。用万用表直流电压档测: A 对 GND:应在 1.5V~2.5V 左右B 对 GND:应在 2.5V~3.5V 左右A-B 电压:B 应高于 A,差值在 200mV~600mV 左右 如果 A-B 电压接近 0V 或极小( B 电压),很可能是偏置电阻接反了或者 A/B 在设备端被反接。 步骤三:单从站通信测试 把总线上的从站一个一个加。先只接从站 01,主站发一个读保持寄存器的命令(功能码 03,读一个寄存器)。有回应→这台的接线和参数没错。没回应→检查从站地址、波特率、数据位/停止位/校验位的匹配。 很多新手以为「设备默认地址 1、9600、8N1」——但不同厂商的默认不一样。有的默认 1,有的默认 247。波特率可能是 4800、9600、19200、115200 中的任意一个。校验位可能是无校验(N)、偶校验(E)、奇校验(O)。说明书上写的是「默认 9600,8N1」,但出厂测试时工程师可能改成了 19200——这种坑没有捷径,只能对着说明书一个个参数检查和同步。 步骤四:全设备联调 单台跑通后,加下一台。加一台测一台。不要一次性把所有设备挂上去再找问题——RS-485 的故障往往是某一台设备故障把整条总线拖垮了,但如果十六台全挂着,你根本不知道是谁干的。 如果加到某台后通信突然出问题,先把它拔掉看总线是否恢复。恢复→这台设备有问题(端口损坏、波特率不匹配、地址冲突)。不恢复→检查前面几台的接线、终端电阻、供电。 步骤五:示波器看波形 如果万用表没查出问题但还是通信不正常,示波器是最终武器。将示波器探头(差分探头最好,没有的话用两个单端探头做 A-B 运算)跨接在 A/B 线上,触发主站发送一帧 Modbus 命令。 正常波形应该看到:空闲时 B 高于 A(逻辑 1)。开始发送时出现清晰的方波——低电平(B A)是逻辑 1。方波的上升/下降沿应该干净利落,没有明显的过冲和振铃。帧间隙(3.5 字符时间)在示波器上是一段明显的空闲高电平区域。 如果看到严重的振铃(方波顶部有多条波浪线),终端电阻选值不对或者没接。如果空闲时电压一直在抖动且幅度超过 ±200mV,偏置不够或电缆屏蔽未接地。如果 A-B 电压总是比正常低不少(比如摆幅只有 1V 而不是 3-5V),驱动器负载过重(终端电阻并联过多、设备数量超出芯片驱动能力、或某个设备端口坏了)。 九、常见故障快速排查 现象最可能的原因检查方法所有设备都不通信A/B 线接反、总线开路、无偏置测空闲电压、测电阻某一路正常,某路不正常不正常的设备波特率/地址/校验不匹配单台测试通信时断时续终端电阻缺失或接触不良、总线过长示波器看振铃偶尔收到乱码屏蔽未接地、近强干扰源、偏置不足测环境、查屏蔽新加设备后全局故障新设备端口损坏或 A/B 短路逐个隔离空闲时收到随机数据缺少偏置电阻测空闲电压、加偏置波特率低时正常、高时不行线缆质量差或距离超限降低波特率或换线 十、施工检查清单 接线完工后,逐项对一遍: [ ] 拓扑是手拉手菊花链,没有星形或分支[ ] 总线两端各接一个 120Ω 终端电阻[ ] 线缆是屏蔽双绞线(RVSP),线径 ≥ 0.75mm²[ ] 不需要的网线芯已处理(不会浮空当天线)[ ] 485 线路距离强电 ≥ 30cm,交叉时垂直穿过[ ] 屏蔽层单点接地(优先主站侧)[ ] 所有非共源设备的 GND 线已串联[ ] 如果穿过室外,已安装防雷模块并可靠接地[ ] 偏置电阻已在总线上的一点配置(或确认转换器内置)[ ] 所有设备的 A 均接 A,B 均接 B,GND 均接 GND[ ] 各设备波特率/地址/校验位已核实并记录[ ] 能单点跑通,能全点跑通 这份清单每一条都是工控工程师在现场花了代价换回来的教训。接线不靠直觉和运气——靠一步一步验证。 有问题再聊。 --- ### 151. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MODBUS总线控系统的技术特征MODBUS通讯协议是一种工业现场总线通讯协议,它定义的是一种设备控制器可以识别和使用的信息帧结构,独立于物理层介质,可以承载于多种网络类型中。 MODBUS协议把通信参与者规定为“主站”(Master)和“从站”(Slave),数据和信息的通信遵从主/从模式,当它应用于标准MODBUS网络时,信息被直接传送。 MODBUS总线网络中的各个智能设备通过异步串行总线连接起来,只允许一个控制器作为主站,其余智能设备作为从站。 采用命令/应答的通信方式,主站发出请求,从站应答请求并送回数据或状态信息,从站不能够自己发送信息。 MODBUS协议定义的各种信息帧格式,描述了主站控制器访问从站设备的过程,规定从站怎样做出应答响应,以及检查和报告传输错误等。网络中的每个从设备都必须分配给一个唯一的地址,只有符合地址要求的从设备才会响应主设备发出的命令。 由于MODBUS总线系统开发成本低,简单易用,并且现在已有很多工控器、PLC、变频器、显示屏等都具有MODBUS通信接口,所以它已经成为一种公认的通信标准。 通过MODBUS总线,可以很方便地将不同厂商生产的控制设备连成工业网络,进行集中监控。 MODBUS最初为PLC通信而设计,它通过24种总线命令实现PLC与外界的信息交换。这些总线命令对应的通信功能主要包括AI/AO、DI/DO的数据传送。 但不是很多MODBUS设备的控制只使用其中的几条命令,对其余命令不做反应。 MODBUS通信格式 MODBUS协议定义了两种传输模式,即RTU(Remote TerminalUnit)和ASCII。 在RTU模式中,1字节的信息作为一个8位字符被发送,而在ASCII模式中则作为两个ASCII字符被发送,如发送字符“20”时,采用RTU模式时为“00100000”,然而采用ASCII模式则成为“00110010”+“00110000”(ASCII字符的“2”和“0”)。 可见,发送同样的数据时,RTU模式的效率大约为ASCII模式的两倍。 一般来说,数据量少而且主要是文本时采用ASCII;通信数据量大而且是二进制数值时,多采用RTU模式。主站一次可向一个或所有从站发送通信请求(或指令),主设备通过消息帧的地址域来选通从设备。 主站发送的消息帧的内容和顺序为:从站地址、功能码、数据域(数据起始地址、数据量、数据内容)、CRC校验码;从站应答的信息内容和顺序与主站信息帧基本相同。 MODBUS除了定义通信功能码之外,同时还定义了出错码,标志出错信息。主站接收到错误码后,根据错误的原因采取相应的措施。从站应答的数据内容依据功能码进行响应,例如功能代码03要求读取从站设备中保持寄存器的内容。 CRC校验的实现 MODBUS通信的RTU模式中,规定信息帧的最后两个字节用于传递CRC(Cyclic RedundancyCheck,循环冗余校验)码。 发送方将信息帧中地址域、功能码、数据域的所有字节按规定的方式进行位移并进行XOR(异或)计算,即可得到2字节的CRC码,并把包含CRC校验码的信息帧作为一连续的流进行传输。 接收方在收到该信息帧时按同样的方式进行计算,并将结果同收到的CRC码的双字节比较,如果一致就认为通信正确,否则认为通信有误,从站将发送CRC错误应答。RTU模式一般采用CRC-16冗余校验方法,CRC-16的校验码为16位(2字节),其中低字节在前,高字节在后。 实现CRC校验有两种方法:根据CRC校验的定义公式进行计算,或者在程序中建立CRC校验值表。 在程序中使用前者更容易实现,这里需要使用CRC生成多项式X16+X15+X2+1。 该多项式对应的码组系数为18005H(16进制),去除最高位,对应的16位余数为8005H,即为CRC-16常数。 CRC-16校验过程如下: 将CRC寄存器的每一位预置为1;把该寄存器值与8bit的信息帧数据进行异或,结果存于该寄存器;对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与CRC-16常数进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8bit数据处理完毕,用此时寄存器的值与下一个8bit数据异或并进行如前一样的8次移位。 所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。CRC添加到消息中时,先加入低字节,然后高字节。 链路特征 MODBUS标准的物理层可以采用RS-232串行通信方式,但在长距离通信中常采用RS-422或RS-485代替。在多点通信情况下只采用RS-485方式,所以RTU模式下的MODBUS系统采用屏蔽双绞线,通信距离可达1000m。一条总线上最多可配置31个从站设备。 传输线上的信息交换是半双工的,即同时只能有一台设备允许发送信息,主站在发送下一条指令之前等待从站回应,从而避免了线路的冲突。RTU模式的传输格式是1个数据位,2个停止位,没有奇偶校验位。通信数据安全由控制参数CRC-16码保证。RTU接收设备依靠接收字符间经过的时间判断一帧的开始,如果经过3个半的字符时间后仍然没有新的字符或者没有完成帧,接收设备就会放弃该帧,并设下一个字符为新一帧的开始。 --- ### 152. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:Modbus 通讯错误的检测与诊断:从奇偶校验到异常码的完整体系 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:Modbus 协议的错误检测分为三个层次——字符级的奇偶校验、帧级的 LRC/CRC 校验、以及应用层的异常响应码和超时机制。本文逐一拆解每种检测方式的工作原理、算法实现(含可运行的 C/Python 代码)和实际调试用途,并给出完整的异常码速查表和排障流程。关键词:Modbus CRC、LRC 校验、奇偶校验、Modbus 异常码、Modbus 错误检测、CRC16 Modbus。 在 RS-485 总线上传输一个 Modbus 帧,就像在嘈杂的车间里喊话——喊出去的是 01 03 00 00 00 01,对端收到的可能变成了 01 03 00 00 00 03。一个比特翻转,温度读数就从 25°C 变成 26°C,或者某台阀门「为什么不动」的原因就埋在这里。 Modbus 从 1979 年诞生就带着一套分层错误检测机制:每个字符用奇偶校验挡住比特错误,整帧数据用 CRC(RTU 模式)或 LRC(ASCII 模式)兜底,应用层再通过异常响应码告诉主站「你的请求有问题」。这三层机制配合超时重发策略,构成了 Modbus 在工业现场存活近五十年不倒的可靠性基础。 坦率说,Modbus 的错误检测不是密码学级别的——CRC16 不能防篡改,LRC 对连续偶数位错误可能漏检。但在一个 9600bps、几十米 RS-485 总线的物理环境下,这些机制已经够用了。它们的价值不在于理论完美,而在于实现简单、计算开销低——一个 8 位单片机用不到 100 字节的代码就能完成 CRC16 计算。 一、错误检测的三层架构 Modbus 串行通信的错误检测分成三个层级,从上到下覆盖整个通信栈: 应用层:异常响应码 + 超时重发 ↓ 帧层 :CRC-16(RTU)或 LRC(ASCII) ↓ 字符层:奇偶校验(Even/Odd/None) 字符层保护每个字节的传输正确性——一个 UART 帧里的 8 个数据位加上一个校验位,硬件自动完成校验。 帧层保护整条 Modbus 消息的完整性——从站地址到最后一个数据字节,全部参与计算。如果帧校验不通过,从设备静默丢弃这条消息,不回复任何内容。 应用层处理「物理层没问题,但逻辑上有问题」的情况——比如你请求的功能码设备不支持、寄存器地址不存在、数据值超出范围。这些错误通过异常响应码告知主站。 三层各司其职,但调试的时候工程师更容易看到应用层的异常码,而忽略了物理层的奇偶校验错误——因为奇偶校验错误在从设备硬件层面就被丢弃了,你根本看不到。 二、字符层:奇偶校验 2.1 原理 奇偶校验是在每个 UART 字符帧中附加一个校验位,使得整个帧中「1」的总数为奇数(奇校验,Odd)或偶数(偶校验,Even)。 Modbus 的字符帧定义因模式而异: 模式起始位数据位校验位停止位总位数RTU(有校验)181111RTU(无校验)180211ASCII171110 注意 RTU 无校验时用 2 个停止位来凑总位数——这是硬性要求,很多人在配置串口参数时选了 No Parity 但忘了把停止位从 1 改成 2,结果通信不稳定但又不至于完全不通,非常难查。 2.2 计算示例 取一个字节:11000101。其中 1 的个数是 4(偶数)。 偶校验 → 校验位 = 0,保持 1 的总数为偶数(4 个)奇校验 → 校验位 = 1,使 1 的总数为奇数(5 个) 硬件 UART 在发送时自动计算并填入校验位,接收时自动校验。如果接收端校验不通过,UART 硬件会标记一个奇偶校验错误(Parity Error),但不会自动丢弃数据——要不要丢弃由软件决定。 2.3 奇偶校验的局限 奇偶校验只能检测奇数个比特错误。如果传输中恰好翻转了 2 个比特,奇偶性不变,校验通过,但数据已经错了。在 RS-485 上,电磁干扰导致单比特翻转的概率远高于多比特同时翻转,所以奇偶校验在实际中还是有用的——但它绝不是万能的。 调试建议:如果你怀疑线路质量有问题,用逻辑分析仪抓 UART 帧看每个字符的奇偶校验错误标记。串口助手(如 SSCOM)可以显示奇偶错误次数,这个计数器如果一直在涨,说明你的物理线路有电磁干扰问题——可能是电缆不屏蔽、和变频器走到一个桥架里了、或者终端电阻没接导致信号反射。 三、帧层(一):LRC 校验 —— Modbus ASCII 模式 3.1 LRC 是什么 纵向冗余校验(Longitudinal Redundancy Check,LRC)是 Modbus ASCII 模式使用的帧校验算法。它是一个 8 位(1 字节)的校验码,位于帧的末尾,校验范围是从站地址到数据区的所有字节,不包括帧头(冒号 :)和帧尾(回车换行符 CR/LF)。 3.2 Modbus ASCII 帧结构 : 01 03 21 02 00 02 D7 CR LF │ └─────────┬────────────┘ │ 帧头 LRC 校验范围 LRC码 一个完整的 Modbus ASCII 请求帧: :0103020002F8rn 3.3 LRC 算法 算法极其简单——三步: 将地址码到数据区的所有字节相加求和取和的低 8 位(模 256)取其补码(256 减去这个值,或者按位取反后加 1) 示例:报文 : 01 03 21 02 00 02 求和:0x01 + 0x03 + 0x21 + 0x02 + 0x00 + 0x02 = 0x29 低 8 位:0x29 补码:256 - 0x29 = 0xD7 LRC 校验码 = D7 完整帧为:: 01 03 21 02 00 02 D7 rn 3.4 LRC 的 C 语言实现 /** * 计算 Modbus ASCII LRC 校验码 * buf: 需要校验的数据(从地址码到数据区的所有字节) * len: 字节数 * 返回值: 1 字节 LRC 校验码 */ unsigned char LRC(unsigned char *buf, unsigned short len) { unsigned char lrc = 0; while (len--) { lrc += *buf++; } // 取补码:256 - lrc,等效于 (-lrc) return (unsigned char)(-lrc); } 用 Python 验证: def calc_lrc(data: bytes) -> int: """计算 Modbus ASCII LRC 校验码""" return (256 - (sum(data) & 0xFF)) & 0xFF # 测试 msg = bytes([0x01, 0x03, 0x21, 0x02, 0x00, 0x02]) lrc = calc_lrc(msg) print(f"LRC: 0x{lrc:02X}") # 输出: LRC: 0xD7 3.5 LRC 的局限 LRC 只能检测到一定比例的错误。如果两个字节的同一个比特位同时翻转(比如字节 A 的第 3 位从 0 变 1,字节 B 的第 3 位从 1 变 0),求和结果不变,LRC 校验通过。这也是为什么 Modbus RTU 使用更强的 CRC-16 而不是 LRC——RTU 模式用于二进制数据传输,对可靠性要求更高,而 ASCII 模式主要用于调试和兼容老设备。 四、帧层(二):CRC-16 校验 —— Modbus RTU 模式 4.1 CRC-16 Modbus 的数学定义 Modbus RTU 使用 CRC-16 算法,参数如下: 参数值宽度16 位生成多项式0x8005(x¹⁶ + x¹⁵ + x² + 1)实际运算多项式0xA001(0x8005 位反转形式)初始值0xFFFF输入字节反射否输出 CRC 反射是(最终结果高低字节交换)输出异或值0x0000 这里的「位反转」是 CRC 参数体系中很容易搞混的概念。Modbus 的计算实际上是按位处理的、从 LSB 方向移位,使用反转多项式 0xA001,计算结果自然就是反转的——所以最终不需要再做一次全局反转,只需要高低字节交换。发送时低字节在前,高字节在后。 4.2 CRC-16 Modbus 算法流程(逐位计算法) 逐位计算虽然慢,但能让人看清每一步发生了什么: 预置 16 位 CRC 寄存器为 0xFFFF将报文的第一个字节与 CRC 寄存器的低 8 位异或,结果存回 CRC 寄存器CRC 寄存器右移 1 位,最高位补 0,检查移出的最低位移出位 = 1 → CRC 寄存器与 0xA001 异或;移出位 = 0 → 不做操作重复步骤 3~4,共 8 次(处理完一个字节的 8 个位)重复步骤 2~5,处理报文中下一个字节所有字节处理完成后,CRC 寄存器的低字节在前、高字节在后,即为 CRC-16 校验码 4.3 CRC-16 Modbus C 语言实现 /** * 计算 Modbus RTU CRC-16 校验码(逐位计算法) * buf: 需要校验的数据(从地址码到数据区的所有字节) * len: 字节数 * 返回值: 16 位 CRC 值(低字节在前) */ unsigned short CRC16_Modbus(unsigned char *buf, unsigned short len) { unsigned short crc = 0xFFFF; unsigned short i, j; for (i = 0; i < len; i++) { crc ^= buf[i]; // 步骤 2 for (j = 0; j < 8; j++) { // 步骤 3~5 循环 8 次 if (crc & 0x0001) { crc = (crc >> 1) ^ 0xA001; // 移出位为 1 } else { crc >>= 1; // 移出位为 0 } } } // 注意:Modbus CRC 发送时低字节在前 return crc; } 4.4 查表法 —— 嵌入式设备上的标准实现 逐位计算每个字节要做 8 次循环,对嵌入式 MCU 开销太大。工程上用的是查表法,预先计算 256 个字节的 CRC 值,每字节只做一次查表 + 一次异或 + 一次移位。 高位表查表法(最常用): /* CRC 高位表 */ static const unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, /* ... 完整 256 项,此处省略 */ }; /* CRC 低位表 */ static const unsigned char auchCRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, /* ... 完整 256 项,此处省略 */ }; unsigned short CRC16_Modbus_Table(unsigned char *buf, unsigned short len) { unsigned char crcHi = 0xFF; unsigned char crcLo = 0xFF; unsigned short index; while (len--) { index = crcLo ^ *buf++; crcLo = crcHi ^ auchCRCHi[index]; crcHi = auchCRCLo[index]; } return (crcHi << 8) | crcLo; } 完整的高低位表共 512 字节,可直接从 Modbus 协议规范附录中抄过来,Modbus.org V1.1b3 规范的第 40 页给出了完整的示例表。 4.5 验证你的 CRC 实现 用已知报文测试: 报文: 01 03 00 00 00 01 正确的 CRC: 84 0A(低字节在前) 验证步骤: crc = 0xFFFF crc ^= 0x01 → 0xFFFE bit0=0, crc>>1 → 0x7FFF bit1=1, (0x3FFF) ^ 0xA001 → 0x9FFE ... 最终 crc = 0x0A84 发送时低字节在前: 84 0A 整个报文发送序列:01 03 00 00 00 01 84 0A 你也可以用 Modbus Poll 或 Modbus 小程序直接算 CRC,和你的代码实现交叉验证。 4.6 CRC 的检错能力 CRC-16 可以检测到以下错误类型: 所有单比特错误所有双比特错误(在报文不超过 32767 位的条件下)所有奇数个比特错误所有突发错误,长度 ≤ 16 位99.998% 的更长突发错误 简单说,在 Modbus 帧通常不超过 256 字节的前提下,CRC-16 可以捕捉几乎所有物理层传输错误。用 CRC 校验通过的数据帧,基本可以信任。 五、应用层:异常响应码 物理层和帧校验都通过了,从设备收到了一个完整有效的 Modbus 帧——但逻辑上是错的。这时候从设备不是沉默,而是返回一个异常响应,告诉主站「你让我做的事我做不了」。 5.1 异常响应的帧格式 正常响应和异常响应的区别只有一个:功能码的最高位。 正常响应:功能码 = 原始功能码(如 0x03 读保持寄存器)异常响应:功能码 = 原始功能码 + 0x80(如 0x83),然后跟一个字节的异常码 示例:主站请求读寄存器 01 03 00 00 00 01 84 0A 正常响应:01 03 02 00 7B F9 8D(读回 2 字节数据 00 7B) 异常响应(假设寄存器不存在):01 83 02 C0 F1 83 = 0x03(原功能码)+ 0x8002 = 异常码,表示「非法数据地址」 5.2 标准异常码速查表 异常码名称含义常见原因0x01Illegal Function非法的功能码设备不支持该功能码(如给只读设备发写指令)0x02Illegal Data Address非法的数据地址寄存器地址超出范围,或起始地址+数量越界0x03Illegal Data Value非法的数据值写入的值超出了寄存器的允许范围0x04Slave Device Failure从设备故障从设备在执行操作时发生了不可恢复的错误0x05Acknowledge确认(正在处理中)请求已接受但需要较长时间处理,主站应等待0x06Slave Device Busy从设备忙设备正在处理另一个命令,暂时无法响应0x07Negative Acknowledge否定确认从设备不能执行该功能(通常是非特定错误)0x08Memory Parity Error内存奇偶校验错误扩展文件区一致性校验失败 0x01 到 0x04 是最容易遇到的,0x05 到 0x08 在常规 Modbus 设备上比较少见——很多设备厂商只实现了前 4 个异常码。 5.3 异常码的实际调试用法 「为什么设备不回数据?」排除物理层和 CRC 问题后,看异常码: 收到 0x01(非法功能):你发了一个设备不支持的功能码。最常见的场景是——你用 0x03(读保持寄存器)去读了一个只能通过 0x04(读输入寄存器)访问的模拟量输入。去翻设备手册的寄存器映射表,确认该地址对应的访问功能码。 收到 0x02(非法地址):你的起始地址加上请求数量超出了设备支持的地址范围。比如设备只有 10 个保持寄存器(地址 0-9),你请求了从地址 0 开始的 12 个寄存器——跨过了边界。解决方法:减小每次请求的寄存器数量,或者在读之前先用 0x11(报告从站 ID)确认设备类型。 收到 0x03(非法数据值):你要写入的值对设备没有意义。比如设备支持 0-100 的数据范围,你写入了 200。或者写入时的数据字节数与功能码要求的长度不匹配。 完全没有响应:不是异常码,而是什么都没有。可能的原因:CRC 错误(从设备静默丢弃)、帧间隔(3.5 个字符时间)没有正确实现、设备地址不匹配。这时候需要用逻辑分析仪抓总线,确认从设备收到了什么、UART 硬件上有没有奇偶校验错误标记。 六、超时机制:主站的最后一道防线 Modbus 规范要求主站配置一个超时时间。在以下情况下,超时会触发: 主站发出请求后,从站在规定时间内没有任何响应从站检测到帧错误(CRC/LRC 失败),静默丢弃帧,主站收不到回复从站地址不存在——报文发到了空地址上 超时时间的设置有一个约束:必须大于从设备最长可能的响应时间。计算方式为: 超时时间 > 传输延迟 × 2 + 从站处理时间 在 9600bps 下,一个典型的 Modbus RTU 请求(读 1 个寄存器)约 8 字节 = 64 位,传输时间 = 64 / 9600 ≈ 6.7ms。响应约 7 字节 = 56 位,传输时间 ≈ 5.8ms。加上从站处理时间(假设最慢 50ms),双向总时间约 6.7 + 50 + 5.8 ≈ 62.5ms。留一倍余量,超时设 100-200ms 比较合理。 如果总线上有多个从站,要把轮询最慢的设备(比如有些老 PLC 处理一个请求要 100ms)考虑进去。Modbus 规范建议的默认超时是 1 秒——这个值对于现代设备偏大,但作为初始值启动调试是稳妥的。 七、完整排障流程 当你面对「Modbus 通信失败」时,按这个顺序逐层排查: 层检查项工具判断方法物理层RS-485 接线(A/B、共地、终端电阻)万用表导通、总线空闲电平 ≥ 200mV字符层串口参数(波特率、数据位、校验位、停止位)逻辑分析仪实测位宽 = 1/baud字符层奇偶校验错误逻辑分析仪 / 串口助手奇偶错误计数 = 0帧层CRC 校验Modbus 小程序 / 自写代码接收 CRC = 计算 CRC帧层帧间隔(≥ 3.5 字符时间)逻辑分析仪帧间空闲 ≥ 3.6ms @ 9600bps应用层从站地址设备手册 / 拨码开关请求地址 = 从站实际地址应用层功能码 + 地址范围设备寄存器映射表功能码和寄存器地址在设备支持范围内应用层异常响应码串口助手 / 抓包功能码最高位为 1 时检查异常码应用层超时抓包看时间戳响应时间 < 超时配置 特别注意:用 「01 03 00 00 00 01」 这类标准 Modbus 请求去交互时,不要直接用 ASCII 字符串发送——必须发送二进制帧。初学者在串口助手里用 ASCII 模式发了 0x31 0x30 0x33 0x30 0x30 0x30 0x30 0x30 0x30 0x31(ASCII 字符串的 "010300000001"),而不是 01 03 00 00 00 01 这 6 个字节。这个错误几乎每个学 Modbus 的人都犯过。 CRC 校验码的正确计算是 Modbus 通信可靠的基石。但工程现场的问题九成不在 CRC 本身——在接线、在参数、在地址范围越界、在功能码选错。CRC 更像一个安全网,在你说「数据应该是对的」的时候给你信心。当数据确实不对的时候,先查前面几层。 把这篇文章里的代码放到你的工程里交叉验证一下,别指望网上随便抄一段 CRC 代码就能直接用——我见过太多因为字节序搞反导致 CRC 永远校验不通过的案例。有兴趣可以翻一下 Modbus.org V1.1b3 规范的附录部分,那里有 CRC 查找表的完整数据和高低位两种实现方式的官方示例。 有问题再聊。 --- ### 153. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:Modbus 网关与串口服务器的区别与选型 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:串口服务器、Modbus 网关和边缘计算网关常被混为一谈,但实际上它们在协议处理深度、数据采集模式和工程定位上有本质区别。本文从设备本质、协议层级、连接管理和数据流程四个维度拆解三者的差异,给出选型决策框架和三个典型场景的配置方案。关键词:串口服务器、Modbus 网关、边缘计算网关、协议转换、RS-485 转以太网、物联网网关。 有个挺典型的对话: 「老板,现场 8 台 Modbus RTU 仪表要接云端,买了台串口服务器够用吗?」 「够。透传就行,服务器那边解析协议。」 三个月后,服务器因为每 500ms 轮询 8 台仪表,CPU 跑到 90%。再后来增加 2 台设备,数据直接开始丢了。一查——串口服务器的 TCP 连接被高频小包打得喘不过气。 换了台 Modbus 网关,把轮询逻辑下沉到网关侧本地执行,服务器只定时拉取缓存数据。CPU 从 90% 降到 15%,通信丢包消失。 这个故事里串口服务器没做错什么——它认真透传了每一个字节。问题是它不理解自己在传什么。Modbus 网关理解协议语义,所以能做串口服务器做不了的事。下面拆开来讲清楚。 一、三层设备的本质定位 先放下「串口服务器 vs Modbus 网关」这个二元对立——实际上应该区分三个层次: 设备类型协议处理深度典型硬件核心能力串口服务器物理层+传输层RS-232/485 ↔ TCP/UDP透明传输,不解析协议内容Modbus 网关物理层+传输层+Modbus 应用层RTU/ASCII ↔ TCP + 主/从站模式识别功能码、地址映射、缓存边缘计算网关全栈+边缘处理多协议+规则引擎+本地数据库协议转换、数据清洗、断网续传 串口服务器是「邮差」,包裹里写的什么它不管,负责从 A 点送到 B 点。Modbus 网关是「分拣中心」,它拆开包裹看地址和功能码,决定送给谁、给不给、要不要缓存。边缘计算网关是「本地调度台」——它不只是转发,还能判断「这个温度值异常,先本地报警,再上报」。 二、串口服务器:透明传输的全部 2.1 工作原理 串口服务器的核心功能用一句话说完:把 RS-232/RS-485 串口上的每一个字节,原封不动地搬运到 TCP 或 UDP 网络包中,反之亦然。它不关心这些字节是 Modbus RTU 帧、ASCII 命令还是自定义二进制协议。 数据流路径: 串口设备 → RS-485 总线 → 串口服务器(串口↔以太网封装) → TCP/UDP 网络 → 服务器 封装方式通常有三种: TCP Server 模式:串口服务器监听一个 TCP 端口,远程主机作为 Client 主动连接。连接建立后,双方进行双向透传。 TCP Client 模式:串口服务器主动连接远程服务器的指定 IP 和端口。4G DTU 和大多数无公网 IP 的现场设备都走这个模式——服务器端必须有固定公网 IP 和开放端口。 UDP 模式:串口服务器将串口数据封装为 UDP 数据报发送到指定远端 IP 和端口,同时接收远端发来的 UDP 数据报。UDP 没有连接管理开销,但如果丢包也不会有任何重传机制——适合同一 LAN 内的非关键数据传输。 2.2 物理规格 串口服务器的硬件差异主要在串口数量和物理接口类型: 单串口型:1 路 RS-485 或 1 路 RS-232,适合单台设备联网。多串口型:2 路、4 路、8 路甚至 16 路 RS-232/RS-485/RS-422 混合接入,各串口独立工作,互不影响。WiFi 型:串口转 WiFi,支持 AP(设备自建热点)、STA(连入现有 WiFi)和 AP+STA 混合模式。宽压/工规:支持 DC 9-48V 宽电压、-35°C 到 75°C 工作温度、IP30 以上防护等级。 选型时关注一个关键指标:透传延迟。便宜的串口服务器内部用了几层软件缓冲,端到端延迟可能到 100-200ms。对于 Modbus 主站的响应超时而言,200ms 的额外延迟意味着你损失了至少 200ms 的轮询窗口。工业级的串口服务器端到端延迟应在 10-50ms 范围内。 2.3 串口服务器的边界 串口服务器做不了的事: 不知道一个 Modbus RTU 帧从哪开始、到哪结束(它不做 3.5 字符间隔判断)不识别从站地址,不能按地址分发数据给不同 TCP 客户端不验证 CRC/LRC 校验——错误的帧也会照传不能主动发起 Modbus 查询不能做轮询,服务器必须自己管理所有从站的读写时序 三、Modbus 网关:协议感知的枢纽 3.1 工作原理 Modbus 网关在串口服务器的基础上增加了一层协议引擎。它能识别 Modbus RTU/ASCII/TCP 报文的结构——地址码、功能码、寄存器地址、数据区和 CRC/LRC,并据此做出智能决策。 典型的功能模式: 模式一:透明转换(从站模式 / Slave 模式) 这是网关的最基础模式,行为类似串口服务器,但多了一步:将 Modbus RTU/ASCII 帧剥去 CRC/LRC 校验、加上 MBAP 报文头,转换为 Modbus TCP 帧发给服务器。对服务器侧而言,网关表现为一个 Modbus TCP Server。反过来,服务器发来 Modbus TCP 请求,网关去掉 MBAP 头、计算并附加 CRC,转为 RTU/ASCII 帧下发给串口从站。 SCADA/上位机(TCP Client) │ Modbus TCP 请求 ▼ Modbus 网关(TCP Server → RTU Master 转发) │ Modbus RTU 请求 + CRC ▼ RS-485 总线 → 从站 01, 02, 03... 模式二:主动轮询 + 缓存(主机模式 / Master 模式) 这是 Modbus 网关区别于串口服务器的核心功能。网关作为 Modbus RTU Master,根据内建的轮询表,定时主动查询串口上的从站设备,将返回的数据存入本地缓存。网络侧的服务器不需要自己管理轮询——直接向网关的缓存区读取最新数据即可。 好处: 多个上位机 / 云平台可以同时读取同一批寄存器数据,而不会抢占 RS-485 总线轮询频率可控,网关负责管理 3.5 字符帧间隔、超时重试、CRC 校验网络侧重试不会干扰串口侧通信——服务器超时重读时,网关直接从缓存返回数据 模式三:主动上报(Publish 模式) 网关按预设规则(定时、数据变化、阈值触发)主动将寄存器数据推送到服务器。这个模式下,服务器不需要轮询——这在 MQTT 接入场景中特别实用,网关作为 MQTT 客户端,将数据主动 PUBLISH 到 Broker 的指定 Topic。 3.2 缓存存储机制 Modbus 网关的缓存是在内存中维护一张寄存器映射表。配置时,管理员定义一系列「采集点」: 采集点 1:从站地址 01,功能码 03,起始地址 0000,长度 4,周期 1s 采集点 2:从站地址 02,功能码 04,起始地址 0000,长度 2,周期 5s ... 网关按各自的周期轮询这些采集点,将数据刷新到内部缓存区。多个 TCP 客户端同时读取时,网关直接返回缓存数据,不触发串口通信。采集周期越短,数据越实时,但 RS-485 总线负载也越高——需要在实时性和总线容量之间找平衡。 3.3 协议转换能力 典型的 Modbus 网关支持的协议转换路径: Modbus RTU ←→ Modbus TCP Modbus ASCII ←→ Modbus TCP Modbus RTU ←→ Modbus RTU(跨网段路由) Modbus TCP ←→ MQTT(部分高级网关) 注意:只有从一种 Modbus 模式到另一种 Modbus 模式的转换才是「标准 Modbus 网关」的范畴。一旦网关能转换 Modbus ↔ MQTT / HTTP / OPC UA / Profinet 等非 Modbus 协议,它实际上已经跨入了「协议转换器」或「边缘计算网关」的领域。 四、边缘计算网关:面向 IoT 的完整平台 4.1 超越协议转发 边缘计算网关是串口服务器和 Modbus 网关的「完全体进化版」。它不仅完成协议转换,还提供本地数据处理和决策能力。核心能力包括: 多协议同时接入:一条 RS-485 总线上既有 Modbus RTU 设备又有 DL/T645 电表,网关同时解析两种协议,统一转为 MQTT/HTTP 上传本地规则引擎:IF 温度 > 80°C THEN 本地继电器断开 + 平台告警,不需要依赖云端决策数据预处理:均值滤波、变化率计算、单位换算(如原始值 ×0.1 = 实际温度),在网关侧完成断网续传:4G/WiFi 断网时,数据缓存到本地 Flash/SD 卡;网络恢复后自动补传边缘存储:本地 SQLite / TSDB,支持 7-30 天的历史数据查询 4.2 和 Modbus 网关的本质区别 很多人以为「我的网关支持了 MQTT 上传,就算边缘计算网关」。其实支持 MQTT 透传不算边缘计算——本质还是透传,只是换了个协议封装。 真正的边缘计算网关要做数据模型转换:把一串 Modbus 寄存器数据(01 03 04 00 10 00 20 00 30)解析为结构化的 JSON 数据({"temperature": 16.0, "humidity": 32.0, "pressure": 48.0}),再推送到云平台。这个过程涉及寄存器地址到物理量的映射、单位换算、数据类型转换、数据有效性校验——不是简单的「把 Modbus 帧塞进 MQTT 消息里」。 五、操作模式的工程对比 从工程部署角度看,三种设备在网络中的拓扑角色不同: 维度串口服务器Modbus 网关边缘计算网关对服务器要求高(服务器轮询)低(读网关缓存)最低(只收处理结果)串口轮询执行者服务器(远程轮询)网关(本地轮询)网关(本地轮询 + 预处理)TCP 连接数1-8(受限于硬件)8-32+取决于硬件配置串口设备数量不限制(仅透传)建议 ≤ 32 / 路建议 ≤ 32 / 路多主站支持不支持(串口独占)支持(读缓存不触发串口)支持离线工作不支持不支持支持(断网续传)计算能力零有限(协议解析)有(数据处理 + 规则引擎)安装复杂度低中高典型价格100-500 元300-1500 元800-5000+ 元 六、选型决策:什么时候用哪个 6.1 用串口服务器的场景 总线上只有 1-2 台 Modbus 设备,轮询逻辑简单,服务器侧有成熟的 Modbus 驱动走的不是 Modbus 协议(自定义二进制协议、厂家私有协议),不需要协议解析纯局域网内使用,网络延迟稳定,服务器处理能力充足预算紧张,几百块钱搞定 6.2 用 Modbus 网关的场景 4+ 台 Modbus RTU 设备需要通过一个 IP 接入多个上位机 / 工程 PC 需要同时访问同一批设备需要减少服务器侧的轮询压力,把 Modbus 查询下沉到现场侧远程接入(4G/跨网段),网络延迟高,超时重试不应跨越公网需要主动上报模式(定时推送或变化触发推送) 关键判断标准:如果服务器需要部署一个定时轮询程序来管理 RS-485 从站,而网关可以代劳——那就用 Modbus 网关。 6.3 用边缘计算网关的场景 现场接入多种协议(Modbus + DL/T645 + M-Bus + 自定义协议),需要统一转换为标准 IoT 协议需要本地实时决策(温度过高立即断开设备,不能等服务器的 500ms 轮询周期)现场网络不稳定(4G 信号差、WiFi 频断),需要断网缓存和数据续传数据需要预处理(去噪、补偿、格式转换)再上传需要边缘侧的告警推送和本地人机交互(HMI 屏 / 指示灯联动) 一句话总结: 只要透传 → 串口服务器管理 Modbus 设备 → Modbus 网关打造本地智能节点 → 边缘计算网关 七、典型工程方案示例 方案一:小规模农业大棚(4 台传感器 + 1 台 PLC) 现场:4 台温湿度传感器(RS-485 Modbus RTU)+ 1 台 PLC 通信:局域网 WiFi,服务器在 50 米外的值班室 设备:串口服务器(WiFi 型,如 USR-W610) 架构:传感器 → RS-485 总线 → 串口服务器 → WiFi → 局域网 → 服务器(跑 Modbus TCP Master 驱动) 理由:设备少、局域网延迟低、预算低 方案二:泵站远程监控(8 台变频器 + 电表) 现场:8 台变频器(RS-485 Modbus RTU)+ 3 台电力仪表 通信:4G,服务器在云端 设备:Modbus 网关(4G 型,如 USR-G780) 架构:变频器+仪表 → RS-485 总线 → Modbus 网关(主机模式,1s 轮询缓存) → 4G → 云服务器(MQTT Broker,订阅网关缓存数据) 轮询表: 采集点1:站01, 03码, 地址0x1000, 长度8, 周期1s (变频器运行参数) 采集点2:站02, 03码, 地址0x2000, 长度4, 周期1s (电表电压电流) 采集点3:站01, 03码, 地址0x1100, 长度4, 周期10s (变频器告警记录) 理由:设备多、远程 4G 延迟高、多数据采集点需要不同轮询周期、云端只需订阅缓存 方案三:工厂能耗监控(50+ 台电表 + 本地显示) 现场:50+ 台三相电表(Modbus RTU)+ 4 路水表(M-Bus) 通信:企业内网,数据需同时推本地 SCADA 和云端 设备:边缘计算网关(如华为 AR650 系列) 架构: 电表 → RS-485 总线 1(Modbus RTU 轮询)→ 水表 → M-Bus 转 RS-485 模块 → RS-485 总线 2 → 边缘计算网关 ├→ 本地 SCADA(Modbus TCP Slave) ├→ 云平台(MQTT JSON,含电量、功率、需量等预处理数据) └→ 本地 SQLite(30 天历史) 规则引擎: IF 某回路功率 > 额定值 × 1.2,持续 5 分钟 → 本地声光报警 + MQTT 告警推送 理由:多协议、数据处理量大、需本地历史存储、需联动告警 网上很多资料把串口服务器和 Modbus 网关画了等号,或者混为一谈。本质上,选型的核心不是看设备叫自己什么名字,而是看它协议处理深度的位置——协议处理是在设备侧做的还是在服务器侧做的。把处理推得越靠近现场,服务器越轻松,系统可扩展性越好。但在设备数量少、网络条件好的简单场景下,串口服务器的简单反而是优势——没有协议解析的额外延迟,也没有缓存一致性的管理负担。不是越贵越好,是对症才好。 有问题再聊。 --- ### 154. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:Modbus 远距离传输完整指南:从双绞线到光纤的每一种方案 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:Modbus 协议的物理层传输距离受限于 RS-485 的电气特性——标准极限 1200 米且速率与距离成反比。本文系统梳理将 Modbus 信号延长至数公里乃至跨城传输的全部技术方案,包括 RS-485 中继扩展、光纤传输(光端机)、蜂窝网络(4G/5G DTU)、数传电台、LoRa/ZigBee/NB-IoT 无线技术等,每种方案给出适用距离、速率、成本、功耗的工程参数和部署要点。关键词:Modbus 远距离传输、RS-485 中继器、光端机、4G DTU、数传电台、LoRa Modbus、NB-IoT 串口、光纤 Modbus。 你在现场拉了一根 800 米的 RS-485 屏蔽双绞线,巡完线回来一测——通信偶尔断、经常超时。波特率设的是 115200,设备是 32 台。这就是典型的忘记查 RS-485 的距离-速率曲线了。 Modbus 是应用层协议——它对物理层的传输距离没有硬性约束。你用什么介质承载 Modbus 帧,决定了你能传多远。所以「Modbus 如何远距离传输」的本质问题其实是「什么物理层能承载 Modbus 协议并延长至目标距离」。下面按距离和传输介质分类,逐一拆解。 一、先看清楚起点:RS-485 的物理极限 1.1 距离与速率的基本关系 RS-485 使用差分信号传输,依靠 A/B 线之间的电压差(+2V 到 +6V 表示逻辑 1,-2V 到 -6V 表示逻辑 0)来抗共模干扰。但差分信号的优势随距离衰减——电缆的分布电容和直流电阻造成的信号畸变在高频时更明显,所以通信速率越高,可靠距离越短。 标准规范给出的参数: 波特率最大可靠距离备注100 kbps≈1200 米标准极限115200 bps≈800 米实测通常再打八折9600 bps≈1200 米工业现场常用,距离表现最优4800 bps≈1800 米极长距离首选,牺牲吞吐量换取稳10 Mbps≈12 米仅机柜内短距可用 这条反比曲线是 RS-485 选型的基本常识——不是「RS-485 传 1200 米」就完事了,而是在 100kbps 以下才能传 1200 米。115200 波特率常见的工业应用实际上可靠距离只有 800 米左右,这还是用标准 120Ω 特性阻抗双绞线、终端电阻接好的理想情况。 1.2 节点数量限制 RS-485 标准规定一个网段最多 32 个单位负载。现在多数 485 芯片设计了 1/4 单位负载(输入阻抗 48kΩ)甚至 1/8 单位负载(输入阻抗 96kΩ),对应的节点上限可以到 128 或 256 个。但实际中真正限制节点数的是 Modbus 协议本身——一个 RS-485 网段上的 Modbus 从站地址只有 1 字节(1~247),满额 247 个从站的实际场景极其罕见,因为轮询周期的时间压力会先压垮系统。 1.3 终端电阻与信号反射 长距离传输时,终端不接 120Ω 终端电阻导致信号反射是通信不稳定的第一大坑。原理很简单:信号到达电缆末端时如果阻抗不连续,能量反射回来叠加在原信号上,产生「振铃」效应,严重时接收端完全看不懂。两端各接一个 120Ω 电阻,使总线阻抗匹配,反射消失。如果偏置电阻(上下拉)没有正确配置,空闲电平时 A-B 电压差低于 ±200mV 还会导致空闲时收到随机噪声。 这些是地基。下面讲怎么破地基的物理限制。 二、方案一:RS-485 中继器 —— 再延长 1200 米 2.1 工作原理 RS-485 中继器本质上是一个双向信号放大器 + 再生器。它分「上游」和「下游」两个独立的 RS-485 网段,中继器在中间接收一侧的差分信号、将其转化为数字逻辑电平、再驱动到另一侧发出一模一样的信号。由于信号被完整再生而不是简单放大,新的网段相当于从头开始计算距离——第一段 1200 米,第二段再过 1200 米。 一条 RS-485 总线上最多串联 9 台中继器,网络总长度理论上可达 9600 米。每个中继器同时也是一个网段隔离器——上游的终端电阻、偏置电阻、节点数量与下游完全独立。 2.2 核心参数 参数典型值说明每台延伸距离1200-1500 米与波特率相关,低速更远最大级联数9 台超过后延时累加不可接受转发延迟≤1 位时间零延时自动转发,无需方向控制光电隔离2500Vrms保护烧口和抗击共模干扰可接节点数每段 128 以上重新计算负载,不受上游段影响 2.3 适用与不适用 适用:同一个厂区里、两三栋楼之间、高低压配电室之间,距离需求在 1~3 公里,不想投资光纤也不想改协议。施工上还是走 RS-485 双绞线,中继器要就近供电(通常是 DC 24V)。 不适用:多雷击区域(哪怕加了防雷保护,长距离铜线还是引雷到设备端口的风险);超过 3 公里的场景(中继器的延时累加和施工难度已经不如光纤了);电磁干扰极强的环境(如大型电机频繁启停的车间——铜线是大天线,中继器能放大信号但也放大了噪声)。 三、方案二:光端机 —— 光纤传输,彻底告别电磁干扰 3.1 工作原理 RS-485 光端机(串口光纤调制解调器)是一对成对使用的设备:发射端将 RS-485 差分电信号转换为光信号通过光纤发送;接收端将光信号还原为 RS-485 差分电信号。整个转换过程完全透明——串口侧的设备不知道中间经过了光纤,Modbus 帧毫发无损。 典型用法是在 RS-485 总线的中间插入光端机对: RS-485 设备(网段A) → 光端机(A端) → 光纤 → 光端机(B端) → RS-485 设备(网段B) 注意光端机通常成对使用——两端必须有相同型号(或互相兼容)的光端机。两个光端机之间通过光纤直连,中间不需要任何交换机或路由器。 3.2 多模与单模 光纤选型直接影响距离和成本: 光纤类型纤芯直径光源最大距离成本适用场景多模62.5/50 μmLED/850nm2~5 公里低园区内、同一建筑群单模9 μm激光/1310nm20~50 公里中跨厂区、城市范围单模长距9 μm激光/1550nm80~120 公里高跨城、长输管线 光端机支持的串口速率通常覆盖 300 bps 到 115200 bps(部分型号到 1 Mbps),对于 Modbus RTU 的常见波特率 9600-115200 完全够用。 3.3 工程优势 光纤传输的三个压倒性优势,铜线永远比不了: 彻底隔离电磁干扰。光信号不受磁场影响,不和 10kV 高压电缆走同一桥架也没问题。青海那个光伏电站,逆变器旁边就是强磁场,RS-485 双绞线上去 200 米就不行了,换了光端机后几个月零丢包。 电气隔离。RS-485 铜线的两个端点是直接电连通的——一端被雷击,浪涌能量沿铜线瞬间传到另一端烧毁所有设备。光纤不导电,雷击能量停在光端机外壳上(前提外壳接地好了)。 距离碾压。单模光纤轻松 20 公里以上,中继器串 9 个才能到 9 公里。而且光纤的带宽余量巨大——未来升级传输速率不需要换缆线。 3.4 成本考量 光端机对的成本在 200-1000 元不等(取决于工业级还是商业级、光电隔离等级、工作温度范围)。加上光纤本身(室外铠装单模约 0.5-1.5 元/米、含施工费约 3-8 元/米),总体两公里以内大概 2000-5000 元。相比同样距离走铜线 + 多台中继器(施工 + 防雷 + 线缆),光端机的性价比在大约 1.5 公里以上开始反超。 四、方案三:蜂窝网络 DTU —— 只要有运营商信号就能传 4.1 工作原理 4G DTU(Data Transfer Unit,数据传输单元)是一种将 RS-232/RS-485 串口数据通过蜂窝网络(4G/5G/Cat.1/GPRS)传送到远端服务器的无线终端设备。对串口设备来说,DTU 暴露的是一个 RS-485(或 RS-232)接口,设备像往常一样发 Modbus RTU 帧即可;DTU 在内部将此帧封装到 TCP/UDP/MQTT 包中,通过运营商的基站和中继网络传输到公网或专网服务器。 整个数据流路径: Modbus 从站(RS-485) → DTU(串口→4G IP包) → 运营商基站 → 核心网 → Internet → 云服务器(NAT/公网IP) → 上位机软件 / 云平台 DTU 的核心价值一句话:用一张 SIM 卡代替一把铲子。不需要挖沟布线,不需要架光纤,不需要申请施工许可——设备接上 DTU、插上 SIM 卡、配置服务器 IP 和端口,数据就从现场到了云端。 4.2 核心能力与参数 参数典型规格网络制式4G Cat.1(主力)/ Cat.4 / 5G / GPRS(2G,逐步退网)串口RS-232 或 RS-485,支持 1200~921600 bps通信协议TCP Client / UDP / MQTT / HTTP工作温度工业级:-40°C ~ 85°C供电DC 5-36V 宽压,典型功耗 <1WModbus 特性Modbus RTU ↔ TCP 透传,部分型号支持主动采集 + 缓存 4G Cat.1 是目前 DTU 市场的主流选择:比 Cat.4 功耗低、成本低(模组价格约 20-30 元)、速率够用(上行 5Mbps/下行 10Mbps),而 Modbus 数据一帧最多 256 字节,Cat.1 的速率绰绰有余。 4.3 部署的关键约束 必须有公网可访问的服务器。DTU 通常作为 TCP Client 主动连接服务器的固定公网 IP 和端口。如果现场设备也有公网 IP(极少见),可以用 TCP Server 模式让服务器来连接 DTU,但这个场景在工业现场几乎不存在。实际部署中,服务器端通常部署在阿里云/华为云上,通过 NAT 或负载均衡暴露端口。 心跳包和注册包是标配。4G 网络会有 NAT 超时——运营商的基站 NAT 通常在 60-180 秒无数据后断开映射。DTU 的心跳包就是定时发一条无关数据给服务器,保持 NAT 映射不过期。注册包是 DTU 首次连接服务器时发送的标识信息(如 IMEI、自定义设备编号),让服务器知道对端是谁。 SIM 卡选择决定稳定性。三大运营商的信号覆盖在不同现场差异巨大——工业区厂房深处可能某家完全没有信号。物联网专用卡(定向流量 + APN 配置)比普通手机卡更稳定,但需要提前确认运营商在该位置的信号强度和专用 APN 参数。 通信延迟是客观存在的。4G 网络的端到端延迟通常在 30-200ms,加上运营商核心网的路由抖动,不能指望 DTU 做到局域网级别的实时性。对于 Modbus RTU 的主站来说,这意味着「超时时间」必须拉长——服务器侧 Modbus TCP 请求的超时至少设 500ms 以上,不能照搬本地的 100ms。 4.4 适用场景 4G DTU 适合以下情况: 数据采集点分散(如水源地监测井、气象站),无法集中布线移动设备联网(如工程车辆、移动泵车)跨城市甚至跨省的数据传输快速部署,不需要等施工和审批 不适合的情况: 无运营商信号覆盖(地下室、隧道、深山)数据量大且实时性要求极高(4G 延迟不可控)长期运营成本敏感(按流量计费,虽然物联网卡资费低但仍是持续支出) 五、方案四:数传电台 —— 不用 SIM 卡的无线方案 5.1 原理 RS-485 数传电台的工作方式和 DTU 很像——将 Modbus 帧转换为无线信号发送——但不走运营商网络,而是用免许可的 ISM 频段(433MHz、868MHz、915MHz 或 2.4GHz)进行点对点或点对多点的私有无线传输。发送端将串口数据调制到射频载波上射频发射,接收端解调后还原为串口数据。 和 DTU 的本质区别:数传电台是私有的纯物理层无线链路,不经过任何公共网络基础设施。你的发射机和接收机之间没有基站、没有交换机、没有路由器——就是天线对天线。 5.2 频段与性能对比 频段典型距离穿透能力数据速率使用区域433 MHz3-8 公里(开阔地)好(绕射能力强)≤ 115.2 kbps全球(亚洲常见)868/915 MHz2-5 公里中≤ 250 kbps欧洲/北美2.4 GHz500 米差(视距几乎必)≤ 2 Mbps全球 433MHz 是工业数传电台的主流选择:波长长、绕射好、不挑天线方向,在有建筑物遮挡的工厂环境里表现最优。2.4GHz 虽然速率高,但穿墙能力弱,通常只用在视距无遮挡的场景。 5.3 优缺点 优点:一次性投入后零运营费(不需要 SIM 卡和流量费);私有网络不依赖第三方基础设施;延迟可控且稳定(毫秒级,不是 4G 的百毫秒级)。 缺点:受无线电法规限制——发射功率不能超过规定值(中国 433MHz 通常 ≤100mW),实际距离远不如理论值;受天气和障碍物影响大(大雨、金属建筑物都会衰减信号);多台电台在相邻频段会互相干扰,需要做频率规划和信道分配。 数传电台最经典的应用是在大型厂区内替代长距离布线——比如水厂的取水泵站距离厂区中控室 2 公里,中间隔了一条路,挖沟布线成本极高。架一对 433MHz 数传电台 + 指向性天线,Modbus 数据流就能来回跑,成本只有布线的十分之一。 六、方案五:WiFi 串口服务器 —— 局域网内告别线缆 WiFi 串口服务器是将 RS-232/RS-485 转为 WiFi(IEEE 802.11 b/g/n)的设备,实现串口 → 以太网/WiFi 双向透传。它本质上和有线串口服务器的功能完全一样,只是传输介质从双绞线变成了 2.4GHz/5GHz 的无线电波。 覆盖范围:室内约 30-100 米(穿墙后大幅衰减),室外开阔地约 150-200 米(加高增益天线可到 500 米)。 WiFi 方案适合工厂车间内或同一平面层的短距离无线传输——比如生产线末端有台 Modbus 仪表,旁边没有网口、拉网线要跨过人行通道,架一个 WiFi 串口服务器,让数据通过工厂已有的 WiFi 网络回传到服务器。速率高(达 54-150 Mbps),但功耗比 DTU 高(持续 0.5-1W),且距离有限。 七、方案六:LoRa —— 低功耗、超远距离的窄带无线 7.1 原理 LoRa(Long Range)是 Semtech 公司推出的基于啁啾扩频(Chirp Spread Spectrum)技术的低功耗广域网物理层技术。RS-485 的 Modbus 设备通过 LoRa 数传模块(RS-485 → LoRa)将数据调制到 Sub-GHz 频段(433/868/915 MHz),以极低的速率换取了极远的传输距离。 LoRa 的对标物不是 WiFi 或 4G——它的定位是「低数据量 + 超远距离 + 超长电池寿命」。典型速率为 0.3 kbps 到 50 kbps,这个速率对 Modbus RTU 来说偏小但不致命——如果你只读几个关键寄存器(比如每 5 分钟读一次温湿度),LoRa 完全跑得动。 7.2 距离 在城市环境中,LoRa 的可靠传输距离约 1-2 公里;在郊区/开阔地带,可达 5-15 公里。这是目前非蜂窝 LPWAN 技术中距离最远的之一。注意 LoRa 需要专用的 LoRa 网关才能接入互联网——如果你的目标是设备直接上云,需要「LoRa 模块 + LoRa 网关 + 4G/以太网上行」的二级架构,部署起来比 DTU 复杂。 7.3 适用场景 LoRa 适合:传感器数量多但数据量极小(每个节点每天只发几百字节);电池供电(AA 电池可工作数年);覆盖范围大但无运营商信号(如偏远山区的水文监测、大面积农田的土壤温湿度采集)。 LoRa 不适合:需要实时控制的场景;数据量偏大(频繁读取多寄存器);已有运营商信号覆盖且懒得自建 LoRa 网关。 八、方案七:ZigBee —— 短距离自组网 ZigBee 基于 IEEE 802.15.4 标准,工作在 2.4GHz 频段,特点是低功耗、低速率、自组网(Mesh 网络)。传输距离短——典型的 10-100 米,但 ZigBee 最大优势是自组网路由:每个节点都能中继转发,数据包可以跳过多级节点到达目标,理论上覆盖范围可以通过密集部署节点来大幅扩展。 ZigBee + Modbus 的典型用法:RS-485 设备接 ZigBee 透传模块,多个模块形成 Mesh 网络,最终通过一个 ZigBee 协调器(Coordinator)汇聚数据后转为串口或以太网接入上位机。适合需要多节点分布、但总范围在数百米内、不方便布线的场景(如楼宇内的智能电表集中采集)。 速率:理论 250 kbps,实际受 Mesh 跳数影响降至 50-100 kbps。对于 Modbus RTU 常规通信够用但不充裕。节点数量理论上支持 65535,实际一个 ZigBee 网络稳定跑 100-200 个节点已经是工程合理上限。 九、方案八:NB-IoT —— 走运营商的窄带物联网 9.1 原理 NB-IoT(Narrow Band Internet of Things)是基于蜂窝网络的窄带物联网技术。它直接部署在运营商的 4G/5G 基站上,占用 180kHz 频带。和 4G DTU 的区别在于:NB-IoT 速率更低(上行约 62.5 kbps,下行约 26 kbps)、功耗更低(PSM 省电模式下 AA 电池可工作 10 年)、覆盖更强(比 4G 多 20dB 覆盖增益,地下室、管道井也能连)。 RS-485 转 NB-IoT 模块将 Modbus 串口数据通过 NB-IoT 网络传输到云平台(通常走 UDP/CoAP/LwM2M 协议),不需要 DTU 那样依赖公网 TCP 连接。NB-IoT 的优势是深度覆盖——GSM/4G 信号到不了的地下配电室,NB-IoT 的 20dB 额外链路预算可能刚好够。 9.2 关键约束 NB-IoT 有 6-10 秒的网络延迟,这是它和 4G DTU 的最大区别。对于 Modbus 协议的主从轮询模型,这个级别的延迟意味着你不能指望 NB-IoT 做实时控制——它适合定时上报(如每 15 分钟上报一次电量数据),不适合实时响应主站查询。 另外 NB-IoT 不支持基站间漫游(移动性弱),基站切换时通信会中断。这意味着 NB-IoT 设备必须固定位置,不能像 4G DTU 那样装在移动设备上。 9.3 适用 城市环境下的超低功耗抄表(水表、燃气表、电表)、固定位置的传感器数据定时上报。不适合实时交互或移动场景。 十、方案九:PLC 云网关 —— 让 Modbus 设备支持远程编程和调试 PLC 云网关是一种「增强型 DTU」——它不仅能做串口数据透传,还支持以太网网口透传和 USB 透传,让工程师可以远程对 PLC、HMI(人机界面)进行程序上下载和在线调试。对于西门子、三菱、欧姆龙的 PLC 编程软件来说,它们需要通过特定的以太网协议(如 S7、MC Protocol、FINS)与 PLC 通信——普通的串口透传 DTU 做不了,PLC 云网关内置了这些工业以太网协议的转发支持。 同样适用的是 PPI/MPI 转以太网协议转换器——很多老西门子 S7-200 只支持 PPI 协议,通过 PPI 转以太网转换器可以实现在不占用 PLC 原有通信口的情况下,让触摸屏、上位机通过以太网与 PLC 交互。这本质上也是 Modbus 传输链路上的一种补充方案。 十一、方案速查:一张表覆盖全部选型 方案距离速率线缆/SIM最佳场景RS-485 直连≤1200m≤115.2kbps双绞线标准有线RS-485 中继器≤9.6km≤115.2kbps双绞线同一厂区 2-3km光端机(多模)2-5km≤1Mbps多模光纤园区内光端机(单模)20-80km≤1Mbps单模光纤跨厂区/城市4G DTU全国≤115.2kbpsSIM卡分布点/移动设备数传电台 433M3-8km≤115.2kbps无私有无线/无SIMWiFi 串口服务器100-500m≤150Mbps无工厂局域网LoRa1-15km≤50kbps无低数据量广域ZigBee10-100m/跳≤250kbps无Mesh自组网NB-IoT全国≤62.5kbpsSIM卡超低功耗定时上报 十二、选型决策四步法 面对「Modbus 设备要远距离接入」的需求,按这个顺序做决定: 第一步:算距离。 现场设备到中控室/服务器的直线距离是多少?小于 1.2 公里→直接用 RS-485 走线(加终端电阻)。1.2~3 公里→考虑中继器或光端机。3 公里以上→光端机(单模)或无线(4G DTU/数传电台/ LoRa)。 第二步:看环境。 有没有强电磁干扰(高压线、变频电机、电焊车间)?有→必须用光纤(光端机),铜线撑不住。有没有运营商信号覆盖?有且稳定→4G DTU 最省事;没有→自觉用数传电台或 LoRa。 第三步:算数据量。 有多少个 Modbus 寄存器要读?轮询周期要求多少?如果是实时控制级别(< 100ms)→ 必须用有线(直连/中继/光端机),无线方案平均延迟在此之上。如果是分钟级定时采集→ LoRa、NB-IoT 都行。流式大数据量→ WiFi 或光纤,窄带无线扛不住。 第四步:算钱。 一次性施工成本(布线 + 设备)vs 持续运营成本(SIM 卡流量费)。通常 2 公里以内/工业厂区/一次施工 → 有线(光端机或中继器);跨地区/多个偏远点/快速上线 → 4G DTU;零运营费需求 → 数传电台或 LoRa。 没有一种方案是「最好的」——全看你现场的物理约束。1200 米的 Modbus over 双绞线能搞定的,就别上 4G;4G 有信号的地方,别自己拉光纤跨高速路;光纤已经进管廊了,就别再用铜线。工具对路,活就好干。 有问题再聊。 --- ═══════════════════════════════════════════ ## Modbus相关文章 ═══════════════════════════════════════════ ### 155. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 写在前面:为什么这篇逆向分析值得你读 网上流传的「西门子 PLC 程序包」多如牛毛,但能真正打开、读懂、借鉴的少之又少:要么只有压缩包没有源码,要么名不副实、打开后发现是别的机型。 这份工程不同——它是一个真实的、原厂英文的纸张/薄膜分切复卷机(Slitter-Rewinder,业内叫 Winder)S7-400 控制程序,硬件组态、符号表、全部块源码都完整可读。本文带你逐文件拆解:它到底是不是 S7-1200/1500?里面有什么?张力/卷径/速度是怎么算的?OB35 这个 100ms 循环中断里到底干了什么?以及——你拿到这种工程,怎么打开、怎么运行、怎么迁到 TIA Portal。 读完你将获得一张完整的「机器功能地图」和一套可直接复用的复卷机控制思路。 一、先泼三盆冷水:文件夹名 vs 工程真相 很多朋友下载后才发现「货不对板」。基于逐文件核验,先说清三个事实,避免你踩坑: #文件夹名 / 宣传说法实际读到的情况影响1「S7-1200/1500」工程内部是 S7Netze / sdb / pgs / BAUSTEIN.DBF / SUBBLK.DBT 结构,即 SIMATIC Manager(STEP 7 V5.x) 项目;CPU 实测为 414-2 DP(S7-400)不能用 TIA Portal 直接打开;需用 STEP 7 V5.x 或先经「TIA 移植」2「中文注释」源码备忘录经 GB18030/UTF-8 多编码核验,真实中文注释为 0;变量、网络、DB 标题均为英文原厂注释(如 //16#13, Event class 1...、Tension setpoint selector)所谓「中文注释」不属实,是纯英文原厂工程3「完整可运行项目」含完整块源码(SUBBLK.DBT)、符号表、硬件组态、MM440 参数 DB;但 MM440/ABB 的 GSD、部分第三方库需本机已有;硬件组态 .PG 可直接还原在装有 STEP 7 + 对应 GSD 的环境可编译下载,属「可运行」 一句话:这是一套 S7-400 经典项目、英文原厂、源码完整的复卷机程序。标题若写成「S7-1200/1500 + 中文注释」会误导读者,故本文以真实形态命名。 二、硬件与网络架构(一张图看懂) 2.1 CPU 与机架 CPU:CPU 414-2 DP(站点名 SIMATIC (Winder))—— S7-400 中高端型,自带 1× MPI/DP 接口,DP 口用于现场总线。 组态文件在 sdb/00000001/*.PG(共 30+ 个 .PG 系统数据块),含机架、电源、接口、分布式从站。 2.2 PROFIBUS-DP 现场总线(核心通讯) 从 sdb 的 GSD 引用可确认总线上的从站类型: 从站 / 设备GSD / 标识用途通讯方式ET200 远程 I/OTR06AAAB.GSE(PNO Class 2 32 Bit)分布式数字/模拟量采集与执行(I/O 地址延伸至 I28.x / Q81.x)DP 周期性 I/OABB 变频器ABB_AC80.GSD放卷/收卷/牵引等传动(PPO-05 报文:4 PKW + 10 PZD)DP 过程数据西门子 MM440MicromasterDB / Data transfer to Drives辅助传动(MICROMASTER 440 矢量型)USS / DPDP 诊断059E.GSE(FB13 DP-Slave-System Diag)从站掉线/故障诊断— 工程要点:I/O 地址远超本地机架(最大到 Q81.x、I28.x),说明大量信号经 ET200 远程站 分布在机器各工位,是典型的「中央 CPU + 分布式 I/O」大型专机布线。 2.3 HMI:WinCC 上位机 证据有 WinCC Alarms(报警)、Lenght counter reset from WinCC(从 WinCC 清零计长)、M304.1: WinCC ...(WinCC 位)、Tension &lt; 60% ... 报警位等。 操作面板通过 MPI/DP 与 CPU 通讯,组态在 hOmSave7 目录。 系统架构一览: ┌─────────────────────────────┐ │ CPU 414-2 DP (S7-400) │ │ SIMATIC (Winder) │ │ OB1 主循环 / OB35 100ms │ └──────────────┬──────────────┘ │ PROFIBUS-DP ┌──────────────┬─────────┴──────────┬──────────────┐ ▼ ▼ ▼ ▼ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ ET200 │ │ ABB AC80 │ │ MM440 │ │ WinCC │ │ 远程I/O │ │ 变频器 │ │ 变频器 │ │ 上位机 │ │ I28/Q81 │ │ PPO-05 │ │ USS/DP │ │ MPI/DP │ └─────────┘ └──────────┘ └──────────┘ └──────────┘ 分布式信号 放卷/收卷/牵引 辅助传动 报警/配方/计长 三、程序结构全貌:OB / FB / FC / DB 3.1 组织块 OB(事件与扫描调度) 从源码 VAR_TEMP 注释中确认存在以下 OB(标准 STEP 7 事件模型): OB类型在本工程中的作用(据注释/调用推断)OB1主循环调用顺序控制(DB Sequence control)、FB15/FB18、各工位逻辑OB35循环中断 100 ms核心控制环:张力计算、卷径/计长、速度斜坡、插补、压辊计算OB40 / OB41硬件中断编码器/零速等硬件事件(如 Zero Speed、Hardware Interrupt 2)OB55状态时基中断状态/通讯相关OB81–OB87诊断/故障 OB电源(81)、机架/模块(82–86)、通讯故障 OB87(注释 Communication Fault)OB100 / OB101 / OB102启动 OB完全重启 / 重启 / 冷重启(注释 Complete Restart/Restart/Cold Restart)OB121 / OB122编程/IO 访问错误程序异常与外围访问保护 3.2 功能块与功能 FB / FC 源码中明确出现:FB15、FB18、FB230(见 FB230 Data DB)、FC18、FC121、FC205(帮助标志/边沿检测)。主控制运算封装在 OB35 调用的 FB/FC 中(张力、计长、速度斜坡等)。 3.3 数据块 DB = 机器的功能地图(最值钱的部分) 从 SUBBLK.DBT 的 DB 标题(TITLE)完整还原出机器功能模块,这是理解整台设备的「地图」: ① 核心控制 DB Sequence control(顺序控制)—— 含 Set_Change_automatic(自动换卷/换规格),调用 FB15/FB18 Control DB、DB Project constants(项目常量:空卷芯直径、最大线速度、安全门打开时限速 500 m/min、最大卷径、加减速时间常数等) Tension DB(张力)—— 多段张力设定、实际张力、张力 ON/OFF Rider Roll DB(压辊)—— RW_Diameter/RW_Dia_Filtered 卷径、位置、PID、负载 Unwinder DB(放卷)—— 放卷直径、幅宽、侧移 UW Side movement ② 运动 / 计长 Lenght Calculating DB(计长)、Rewinder/Unwinder lenght calculating、Interpolation DB(插补/卷绕曲线 WF Curves) Speed setpoint ramp generator(速度斜坡)、Crawling Setpoint(爬行速度) ③ 分切 / 刀具 Knives statuses DB / Knives act pos DB(分切刀状态/实际位置)、Cutting Device DB(分切装置)、Trim Set DB(切边设定)、Slitting Interface(分切接口) ④ 芯管 / 卸卷物流 Core Loading / Core Transfer / Core feeding calc. / Core Lock positioning / Core Guiders DB(芯管上料/传送/喂料计算/锁紧/导向) Roll Table DB(辊台)、Roll ejector DB(卸卷)、Tail Gluing DB(尾胶) ⑤ 驱动 / 维护 / 报警 Data transfer to Drives、MicromasterDB、ABB Link help data、Drives Maintenance DB(驱动数据/维护) WinCC Alarms、Semi-auto alarms DB、Vibration DB(振动监测 RR_vibration) Brake generator DB、Drums DB/Drums brakes(鼓式制动)、Autostop DB WF Recipies / RR Recipe DB(卷绕曲线配方 / 复卷配方)、Measured values DB、ControlsFromHMI 结论:这是一台带「自动换卷 + 自动换规格 + 多刀分切 + 芯管自动上下料 + 尾胶」的高端分切复卷线,不是简单单轴收卷。 四、核心控制算法(复卷机的灵魂) 以下逻辑均来自 SUBBLK.DBT 源码中的英文注释与变量命名,非推测。 4.1 张力控制:多段张力设定(Tension) 多段张力设定选择(Tension setpoint selector):不同工况用不同设定值—— Threading tension Setpoint(穿带张力) Splice tension Setpoint(接纸/拼接张力,对应 Splice Tension ON) Standstill Setpoint(静止张力) Set Change tension level(换卷张力) 设定值经 Tension setpoint value scaling 标度变换后 Tension setpoint to Drives 下发给变频器; 反馈 Actual tension from Siemens(实际张力)参与闭环; 安全/诊断:Tension control ON/OFF request、Tension &lt; 60% from setpoint(张力不足 60% 报警)。 4.2 卷径与计长:密度法算直径(Diameter / Length) 计长:Calculate pulse widht → Calculate lenght → Lenght Counter reset(编码器脉冲换算长度,可由 WinCC 清零 Lenght counter reset from WinCC); 卷径:Rewinder lenght calculating / Unwinder lenght calculating 算出实时直径,Rider Roll DB.RW_Diameter 经 RW_Dia_Filtered 滤波; 关键工程手法:用 Paper Dencity(纸张密度)参与卷径估算(质量法算直径),比纯几何法更准; 限位:Unwinder Diameter stop selection、Maximum rewinder roll diameter、Winder stop limit just before the max diameter(接近最大卷径自动停机)。 4.3 速度同步与安全限速链(Speed) Speed setpoint ramp generator:速度斜坡(软启停,避免冲击); Speed Setpoint to Siemens(下发给驱动)、Crawling Setpoint(点动爬行); 安全限速链: 安全门打开(If safety gate is closed ... do nothing. Otherwise):线速度限到 500 m/min; 最大线速度限到 2400 m/min(If speed reference is more than 2400m/min... limit to 2400m/min); 分级速度状态:Web speed &lt;30 / &lt;150 / &lt;600 m/min、Web speed at zero(零速)。 4.4 压辊 / 插补 / 振动监测 Rider Roll:压辊位置 + 负载 + Rider Roll PID Data(PID 调节); Interpolation(插补):按 WF Curves 卷绕曲线平滑过渡; Vibration DB:复卷振动监测(RR_vibration、各测点 v_8_0 等),用于预测性维护。 五、I/O 与符号映射(1171 条符号表抽样) 符号表同时保留英文/德文地址(I 28.3 / E 28.3,Q 3.6 / A 3.6)。抽样关键信号: 类别符号(注释)地址示例安全安全门 Safety gate、急停 SL_SV_EMSTOP—芯管OS/DS core lock open/close、CP16: Core locks、Core guiders up/down、Core guiders relief pressureI/Q 多字节压辊Rider roll down/up、Rider Roll PositionQ 3.6/3.7分切MC8: Web cutting device turn forward/backward、Cutting device aux cylinder up/downI/Q尾胶Tail gluing automatic button、Automatic Tail gluin selectionM/I液压Hydraulic pump 41M314 / 41M414 buttonI计数Core size counter、Lenght counter reset from WinCC、Zero SpeedM通讯Hardware Interrupt 2、各类 CPxx: 调用点— I/O 经 ET200 远程站分布在 I0.0–I28.x、Q0.x–Q81.x,配合 Pneumatic substation TB32(气动站)与液压泵,构成完整执行层。 六、工程亮点:7 条可复用的实战经验 1. OB35 集中做闭环:所有实时运算(张力/卷径/速度/插补)放在 100 ms 循环中断,主循环 OB1 只做顺序与逻辑,结构清晰、实时性好。 2. 多段张力 + 接纸张力:穿带/接纸/静止/换卷分别设定,是复卷品质的关键。 3. 自动换卷/换规格(Set Change automatic):高自动化,减少停机。 4. 密度法算卷径 + 滤波:比单纯几何法稳,值得借鉴。 5. 完善的安全链:安全门→500 m/min、最大 2400 m/min、分级零速/低速状态、急停、振动监测。 6. 诊断完备:OB81–87 覆盖电源/模块/通讯故障,FB13 做 DP 从站诊断。 7. WinCC 深度集成:报警、清零计长、配方(WF/RR Recipe)全打通。 七、怎么打开、运行、并迁移到 TIA Portal 1. 软件:STEP 7 V5.x(SIMATIC Manager)+ 对应 GSD(ABB_AC80、ET200 TR06AAAB、MM440);需 STEP 7 授权。 2. 打开:SIMATIC Manager → 打开 → 选 P1289_QD.s7p。 3. 缺件补齐:确认本机已装 ABB AC80、ET200、MICROMASTER 的 GSD;否则硬件组态会报红。 4. 下载:先下硬件组态(含 DP 从站参数),再下块(OB/FB/FC/DB),最后下 MM440 参数 DB。 5. 若想用 TIA Portal:用 STEP 7 的「项目迁移」或 TIA 的「从 STEP 7 移植」导入(注意 S7-400→S7-1500 仅逻辑可迁,硬件/GSD 需重配)。 八、给工程师的两点提醒 别被文件夹名误导:这是 S7-400 经典项目,不是 S7-1200/1500;注释是英文不是中文。若要发到技术社区/做教程,标题应写「S7-400 分切复卷机」才准确,否则读者下载后发现对不上会差评。 源码已可读但非标准 AWL:块源码在 SUBBLK.DBT(STEP 7 内部备忘录格式),用 STEP 7 打开即见完整 STL+注释;提取的可读快照适合快速检索关键词,但不能直接编译。 九、常见问题 FAQ(百度长尾需求) Q1:西门子 S7-400 复卷机程序用什么软件打开? A:用 STEP 7 V5.x(SIMATIC Manager)打开 .s7p 项目;TIA Portal 不能直接打开经典项目,需走「从 STEP 7 移植」。 Q2:复卷机的张力控制是怎么实现的? A:本工程在 OB35(100ms)里做闭环,按工况选多段张力设定(穿带/接纸/静止/换卷),标度变换后下发给变频器,实际张力反馈参与闭环,并有张力<60% 报警。 Q3:卷径(直径)是怎么算出来的? A:用编码器脉冲算长度/计长,并用「纸张密度(Paper Dencity)」做质量法估算实时直径,再经滤波(RW_Dia_Filtered),接近最大卷径自动停机。 Q4:SUBBLK.DBT 是什么文件,能直接编译吗? A:它是 STEP 7 的块源码备忘录文件,保存了 STL 源码与注释;用 STEP 7 打开工程即可看到完整块,不能直接当文本编译,但可检索。 Q5:S7-400 能迁移到 S7-1500 / TIA Portal 吗? A:逻辑(OB/FB/FC/DB)可经移植工具迁移;但硬件组态、GSD、驱动通讯需按 S7-1500 + 新驱动重配。 十、结语 + 资源 这套 S7-400 分切复卷机原厂程序,是一份难得的、可逐文件读懂的大型专机样本:它用 OB35 集中做实时闭环、用多段张力保证品质、用密度法算卷径、用完整安全链与诊断保障可靠运行,对做造纸/薄膜/印刷/分切设备的工程师非常有借鉴价值。 *本文所有结论均来自对工程文件的逐文件解析,未做任何外部臆测。配套可读源码快照(SUBBLK.DBT 提取的 7.4 万行 STL 文本、MM440 参数 AWL 解码)可用于快速检索关键词。* --- ### 156. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 安防监控系统作为智能化楼宇的核心基础设施,通过"层层设防、严密监控、综合管理"的架构体系,将周边防盗报警、闭路电视监控、电子防盗报警、楼宇对讲、门禁控制及巡更管理六大子系统深度融合,构建起全方位、立体化的安全防护网络。以下将结合实际需求,详细阐述该系统在多元场景下的部署方案与应用价值。 一、智慧住宅小区场景 场景特征:人口密集、出入频繁、安全需求多样,需兼顾便利性与防护性。 系统部署与联动: 周界第一道防线:小区围墙安装热感式红外线探测器与智能摄像机,实现24小时移动侦测与越界报警。当红外探测器触发入侵警报时,监控中心平台自动弹出现场画面,启动声光警告,并同步推送至安保人员移动终端。 单元门第二道防线:楼宇对讲系统与门禁系统联动,业主可通过可视对讲机确认访客身份,远程开启单元门;人脸识别门禁支持业主"无感通行",访客则需临时授权登记,所有出入记录实时上传至平台。 户内第三道防线:家庭报警器通过智能传感器对门窗、阳台、重要房间布防。夜间或外出模式下,一旦检测到异常开启或人体活动,立即触发本地报警并向业主手机与监控中心发送警情信息。 巡逻第四道防线:保安人员手持电子巡更牌,按预设路线打卡巡逻。平台实时追踪巡逻轨迹,漏巡、迟巡自动预警,确保防控无死角。 典型应用:有效防止外来人员随意进出、入室盗窃、高空抛物追溯、老人儿童异常出入预警等。 二、商业综合体场景 场景特征:人流量大、业态复杂、营业时间长,需重点保障公共区域安全与商户财产安全。 系统部署与联动: 全域可视化管理:闭路电视监控系统覆盖停车场、电梯厅、走廊、收银台等关键区域,采用智能数字图像运动跟踪技术,自动识别人员聚集、滞留、奔跑等异常行为,实现全自动预警。 分级门禁管控:办公区域与商业区域隔离,通过门禁系统实现员工、商户、顾客的分级授权管理;财务室、监控中心等重点部位采用"门禁+密码+ biometric"多重验证,操作记录全程留痕。 重点防护联动:金店、珠宝柜等高风险商户部署电子防盗报警系统,玻璃破碎探测器与震动传感器与监控中心联动,触发报警后摄像机自动转向预置位录像,形成完整证据链。 安保效能优化:电子巡更系统规范巡逻频次与路线,尤其在闭店后夜间巡逻中,确保每个楼层、消防通道按时巡查,防范火灾、盗窃等风险。 典型应用:客流统计分析、商户联防联动、夜间布防自动切换、突发事件快速定位与处置。 三、产业园区/企业园区场景 场景特征:占地面积广、周界绵长、夜间值守薄弱,需强化边界防护与内部管控。 系统部署与联动: 周界严密防范:园区外围采用红外对射探测器与智能跟踪球机组合,形成虚拟电子围墙,支持越界侦测、区域入侵、徘徊检测等智能分析,报警弹窗可联动警灯、警号及就近摄像机追踪拍摄。 人车分流管理:车辆出入口通过车牌识别系统自动放行内部车辆,访客车辆需预约登记;人员通道设置门禁闸机,员工刷脸通行,外来人员通过访客管理与楼宇对讲系统确认后临时授权。 生产区域安全:车间、仓库等重点区域部署热感式红外线探测器与烟雾传感器,夜间无人状态下进入布防模式;机器视觉摄像机可监测人员未佩戴安全帽、违规越界等不安全行为。 巡更压实责任:针对园区范围广的特点,设置多条巡更路线与必查点位,巡更数据实时上传,管理人员可通过平台远程监督巡逻质量,防范保安睡岗、脱岗。 典型应用:物资防盗、安全生产监管、访客全流程追溯、夜间无人值守自动化。 四、教育/医疗等公共建筑场景 场景特征:人员密集且弱势群体集中,安全责任重大,需快速应急响应。 系统部署与联动: 出入口智能管控:学校大门、医院门诊楼设置一体化门禁与测温摄像机,实现"人脸识别+体温检测+健康码核验"三合一通行,异常自动拦截并报警。 重点部位监护:学校操场、楼梯口、医院药房、收费处部署高清监控与紧急报警按钮,一键触发可实现"报警+喊话+录像"同步响应,震慑不法行为。 宿舍/病房管理:学生宿舍、住院部采用楼宇对讲与门禁联动,夜间定时锁闭,护士站、宿管中心可远程开门并查看对讲视频,保障人员安全。 安保巡逻可视化:保安巡逻轨迹在平台实时呈现,遇到突发事件可一键上报位置与现场画面,指挥中心快速调度增援。 典型应用:学生防走失、医患纠纷防范、危险品区域管控、应急疏散指挥。 五、智慧社区综合治理场景 场景特征:多系统、多数据、多业务融合,需实现从单点防控到全域智治的升级。 系统部署与联动: 平台一体化集成:将视频监控、门禁、报警、巡更、对讲等子系统接入统一的安防监控系统平台,打破信息孤岛,实现"一个平台、一张地图、一键调度"。 数据智能化分析:平台对各类设备产生的报警数据、出入记录、巡更轨迹进行大数据分析,自动生成安全态势报告,识别高频报警点位与风险时段,指导精准布防。 多部门协同联动:平台可与公安、消防、物业管理系统对接,重大警情实现一键上报、多方联动,提升处置效率。 便民服务融合:楼宇对讲与社区APP打通,业主可远程为访客开门、查看家周边监控、接收安全提醒,实现"安全+服务"双提升。 典型应用:社区安全态势感知、群防群治协同、精细化物业管理、居民安全感满意度提升。 总结 安防监控系统的核心价值在于通过子系统间的深度联动与平台化集中管理,将传统的被动响应升级为主动预警、从事后追溯转向事前防范。无论是住宅小区、商业综合体,还是产业园区、公共建筑,均能通过"探测-监控-报警-处置-记录"的闭环管理,构建起"点、线、面、体"四位一体的立体防护体系,真正实现"防患于未然"的安全目标。 --- ### 157. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 机场选址和飞行器选型 用户应事先掌握国家有关无人驾驶航空器管理的政策和当地航空管制区域的划定,了解飞行任务区域的电磁环境、气象地理条件、高大树木、大型设施和建筑物分布。无人飞行器机场选址时应注意避开限飞区、禁飞区、军事管制区及可能出现强风和强电磁场干扰的地区、空域。  为保障人员、财产、设施安全不受无人飞行器威胁,避免卫星定位及遥控、图传信号受到遮挡、屏蔽,防止建筑、障碍物影响飞行器起降和飞行安全,机场应安装在室外空旷处, 应尽可能远离人群、敏感设备、文物古迹、贵重设施及高于安装位置的建筑和障碍物,射频地面站还应尽量安装在高处。  用户应确定需要使用飞行器完成的任务类型、任务区域、应用载荷、航程并规划航线及高程曲线,计算、实测电力消耗、续航能力需求并将电池多次循环充放电后正常的容量降低纳入分析。用户还应获得无人飞行器的数据手册等技术资料,了解飞行器的起飞条件、返航降落模式及定位方式、定位精度、抗风能力、工作温度范围及其它各项特性和性能指标。最终选定的无人飞行器机型在允许的风速和能见度范围内应确保自动降落水平定位精度不劣于±0.1 米。 用户及安装施工单位应携带主要任务无人飞行器机型和相关仪器仪表实地考察备选机场地址,遍历可能的航线及任务区域,实测地磁扰动和移动无线网络、卫星定位信号质量, 在各种可能的飞行器姿态、朝向条件下测量遥控、图传通信的上下行信号强度,通过数据记录确认地磁扰动符合本手册极限运用参数的要求,确定在机场及周边预定任务空域范围内能够可靠控制飞行器、稳定传输图像/数据且飞行器的卫星定位装置、地磁导航装置能稳定工作、不受到干扰。  供机场使用的场地地面应为平坦空旷的混凝土表面,平整度偏差小于 5/1000 且不得超过 10 毫米,表面无植被、管道、沟渠、异物及其它设备、设施以防止飞行器迫降时倾倒或与物体发生碰撞。场地附近 10 米范围内应安装有避雷设施。机库应设置在场地所含最大矩形区域的中央,顶盖展开方向与矩形长边平行。矩形区域长宽应分别应不小于 8 米和 6 米,区域内地面或屋面的永久荷载能力应达到或超过 10 千牛/平方米。机库支撑位置的混凝土强度应不低于 C30。在裸露土壤上新建场地应至少在机场安装前 30 天铺设混凝土地面,并在场地中心位置浇筑好与机库底部尺寸一致、凸起高度不低于 20 厘米、强度不低于C30 的混凝土承重平台。场地、承重平台均不得含有钢筋等铁磁性物质并应确保其上表面水平坡度在±1°以内。气象站的预定安装位置应距离机库本体 3 米至 5 米。气流不稳定、风速变化较大的场地可以考虑安装多个风速传感器。  机库及射频气象地面站的安装位置应具备或安装符合如下要求的户外电气设施。 电气设施设施要求 电力供应外壳达到 IP54 防护等级、接地良好且符合漏电保护标准的 220V 50Hz 25A(均方根有效值)单相交流配电,至少含国标三眼插座两只(25A 一只供机库使用,10A 一只运维备用)或提供接线端子供电缆直连。 宽带网络达到 IP54 防护等级、任意时段与外网连接最低有效上下行带宽分别达到50Mbps 的有线宽带网络,至少含 RJ45 插座一只或提供超五类网线直连。 选址人员应确认宽带网络可以连接机场管理系统,测试上下行带宽时应使用相关工具在多个不同时段分别测得安装点网络接口与机场管理服务器及视频服务器连接的实际数据上传、下载速率并获得其平均值和最小值的统计。网络接入点的本地或内网连接速度不能作为评估依据。  以下施工布局图供参考,实际布局应根据具体场地情况施工。 机库、射频箱方位示意图1 机库、射频箱方位示意图2 机库放置台示意图1 射频箱安装方式1 机库外部接线图  设备防雷措施方案 一、防雷设计原则 综合性:防雷设计应综合考虑直击雷防护、雷电电磁脉冲(LEMP)防护、等电位连接及共用接地系统等多个方面。 科学性:根据机库所在地的雷电活动规律、地形地貌及气候条件,科学规划防雷设施的布局和选型。 可靠性:选用技术成熟、性能稳定的防雷设备,确保防雷系统长期可靠运行。 二、直击雷防护 1、避雷针/避雷带: 在机库顶部或周边安装避雷针或避雷带,将雷电直接引入地下,避免直击雷对机库及其内部无人机的损害。 避雷针/避雷带的设计应符合相关标准,确保其保护范围覆盖整个机库。 2、引下线与接地装置: 设置足够数量和合适间距的引下线,将避雷针/避雷带与接地装置可靠连接。引下线应选用耐腐蚀、导电性能好的材料,如铜材或热镀锌钢材。 接地装置应埋设在土壤电阻率较低的区域,并采取降阻措施(如使用降阻剂、扩大接地网面积等),以确保接地电阻满足规范要求(一般小于10Ω),使雷电流能够迅速泄入大地。 三、雷电电磁脉冲(LEMP)防护 1、屏蔽措施: 对机库内部的关键设备(如无人机充电系统、控制系统等)进行电磁屏蔽处理,减少雷电电磁脉冲的干扰和损害。可以采用金属网、金属板等导电材料制成屏蔽层,并确保其良好接地。 2、等电位连接: 在机库内部实施等电位连接措施,将所有金属构件(如金属门窗、管道等)及电气设备的外壳可靠连接至等电位连接带或接地装置上,以消除电位差带来的危害。 通过等电位连接,可以确保机库内部各点电位相等或相近,从而避免雷电电磁脉冲引起的电位差放电现象。 3、过电压保护: 在无人机机库的电源线、信号线等进出线路上安装过电压保护装置(如浪涌保护器),以防止雷电电磁脉冲引起的过电压对设备造成损坏。 过电压保护装置应具有快速响应、高可靠性、低残压等特点,以确保在雷电发生时能够及时有效地保护设备安全。 四、定期检测与维护 防雷设施检测:定期对机库的防雷设施进行检测,包括避雷针/避雷带的完整性、引下线的连接情况、接地装置的接地电阻等,确保其性能正常。 维护保养:对防雷设施进行必要的维护保养工作,如清理避雷针/避雷带上的杂物、检查并紧固连接螺栓等,确保防雷系统的稳定运行。 --- ### 158. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 工业自动化控制领域涉及大量的测量、控制和处理工作,其中开关量、数字量、模拟量、离散量、脉冲量等概念是基础知识。本文将对这些概念进行详细解释,并探讨它们之间的区别和联系,以帮助读者更好地理解工业自动化控制系统的运作原理。 1. 概念定义 1.1 开关量 开关量描述的是触点的“开”与“关”状态,常见于计算机设备中,用“0”或“1”来表示这两种状态。开关量又进一步细分为有源开关量信号和无源开关量信号。 有源开关量信号: 在“开”与“关”状态下带有电源的信号,也被称为跃阶信号,它在某些情况下与脉冲量相似,常见的信号电压有220VAC、110VAC、24VDC、12VDC等。 无源开关量信号: 在“开”和“关”状态时则不带电源,常被称为干接点。通过电阻测试法,无源开关量信号会呈现为电阻值为0或无穷大的状态。 1.2 数字量 数字量是在时间和数量上均呈现离散特性的物理量,其表达形式为数字信号。数字量是由0和1构成的,通过编码可以形成具有规律性的信号。实际上,量化后的模拟量就是数字量,它们之间的转换使得数字量在工业控制中扮演着至关重要的角色。 1.3 模拟量 与数字量相对,模拟量在时间和数量上均表现为连续的物理量,其表达形式为模拟信号。模拟量在连续的变化过程中,每一个取值都具有具体的物理意义,如温度、电压、电流等。虽然模拟量本身具有连续性,但在实际应用中,我们常常需要对其进行量化处理,从而转化为数字量以便于计算机处理。 1.4 离散量 离散量是通过对模拟量进行离散化处理而得到的物理量。由于任何仪器设备在表示模拟量时都会存在一定的误差,因此无法完全精确地表示模拟量的实际值。这些设备通常具有一个采样周期,在该周期内,其物理量的数值保持不变,而实际的模拟量则在不断变化。这种将模拟量离散化的过程就形成了离散量,使得我们能够更方便地对其进行处理和分析。 1.5 脉冲量 脉冲量描述的是瞬间电压或电流从某一值快速跃变到另一值的信号量。在量化过程中,如果脉冲量的变化呈现出有规律的序列,则可以被视为数字量。而当脉冲量从0跃变到某一固定值并保持不变时,它就等同于开关量。 2. 概念之间的区别和联系 2.1 模拟量与数字量 模拟量与数字量是工业自动化控制领域中两种最常见的数据类型。模拟量代表了连续变化的物理量,而数字量则代表了离散的、可计数的物理量。 模拟量与数字量的区别: 连续性: 模拟量是连续的,而数字量是离散的。 精度: 模拟量具有无限的精度,而数字量具有有限的精度。 处理方式: 模拟量需要经过量化处理才能被计算机识别和处理,而数字量可以直接被计算机识别和处理。 模拟量与数字量的联系: 模拟量可以通过量化转换为数字量。 数字量可以通过模拟量转换器转换为模拟量。 2.2 开关量、数字量与脉冲量 开关量、数字量和脉冲量都是数字信号,它们之间存在着一定的联系和区别。 开关量、数字量与脉冲量的联系: 三者都是数字信号,可以用“0”和“1”来表示。 三者都可以通过编码形成具有规律性的信号。 开关量、数字量与脉冲量的区别: 开关量只有两种状态,即“开”和“关”。 数字量可以有无限多种状态,但实际应用中通常只使用有限种状态。 脉冲量是一种特殊的数字量,它具有脉冲宽度、脉冲周期等特性。 3. 实际应用 在工业自动化控制系统中,开关量、数字量、模拟量、离散量和脉冲量等概念被广泛应用于各种测量、控制和处理环节。 开关量应用于检测对象的运动状态、位置状态、工作状态等,例如行程开关、限位开关、液位开关、压力开关等。 数字量应用于计数、排序、测速、定位等,例如光电编码器、脉冲传感器、霍尔传感器等。 模拟量应用于测量温度、压力、流量、液位等,例如温度传感器、压力传感器、流量传感器、液位传感器等。 离散量应用于控制对象的运动速度、位置精度、温度精度等,例如PID控制器、变频器、伺服电机等。 脉冲量应用于测速、计数、定位等,例如脉冲发生器、脉冲计数器等。 4. 总结 开关量、数字量、模拟量、离散量和脉冲量等概念是工业自动化控制领域的基础知识,理解这些概念对于理解和设计工业自动化控制系统至关重要。 附录 术语表 开关量: 描述触点的“开”与“关”状态的物理量。 数字量: 在时间和数量上均呈现离散特性的物理量。 模拟量: 在时间和数量上均表现为连续的物理量。 离散量: 通过对模拟量进行离散化处理而得到的物理量。 脉冲量: 描述的是瞬间电压或电流从某一值快速跃变到另一值的信号量。 常见问题解答问: 模拟量和数字量有什么区别?答: 模拟量是连续的,而数字量是离散的。模拟量具有无限的精度,而数字量具有有限的精度。模拟量需要经过量化处理才能被计算机识别和处理,而数字量可以直接被计算机识别和处理。问: 开关量、数字量和脉冲量有什么区别?答: 开关量只有两种状态,即“开”和“关”。数字量可以有无限多种状态,但实际应用中通常只使用有限种状态。脉冲量是一种特殊的数字量,它具有脉冲宽度、脉冲周期等特性。问: 这些概念在实际应用中有什么例子?答: 开关量应用于检测对象的运动状态、位置状态、工作状态等,例如行程开关、限位开关、液位开关、压力开关等。数字量应用于计数、排序、测速、定位等,例如光电编码器、脉冲传感器、霍尔传感器等。模拟量应用于测量温度、压力、流量、液位等,例如温度传感器、压力传感器、流量传感器、液位传感器等。离散量应用于控制对象的运动速度、位置精度、温度精度等,例如PID控制器、变频器、伺服电机等。脉冲量应用于测速、计数、定位等,例如脉冲发生器、脉冲计数器等。 --- ### 159. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 道路事故总是在几秒钟内发生。而且,救援系统到达的时间直接影响事故遇难者的康复情况。 想象一下,如果您的车速和温度达到阈值,并且直接向救援队发送消息以便立即采取行动,那该多好。 由于汽车需求的增加,车辆事故和交通危险不断增加。在道路上,人们的生命始终处于危险之中。此外,事故定位延迟、交通拥堵和救护车延误也会增加死亡风险。 如果非要说传统救援体系的问题,那就是“时间就是生命”。传统方法依赖于人类和人为干预来按时报告事故。在偏远地区,如果发生事故,延误的情况可能会更加突出。 我们将讨论一种物联网解决方案,该解决方案可以改革我们处理车辆事故的传统方式。 什么是基于物联网的车辆事故检测系统? 基于物联网的自动车辆事故检测系统有助于减少事故造成的生命损失。此外,它还减少了救援队/救护车到达医院所需的时间。 上述事故检测和警报系统利用安装在车辆和道路内的传感器网络来形成预测安全网。 道路事故预防系统持续监控道路上的多个参数,例如: 车辆移动  速度、方向或重力的任何意外变化都预示着碰撞或事故。 地理因素 雾、道路湿滑或危险的天气条件等环境因素会增加事故发生的几率。 车辆健康 有故障的安全气囊、失灵的制动器或转向系统可能会导致严重事故。 基于物联网的自动车辆事故检测和救援系统如何工作? 物联网 (IoT) 技术的集成已经并且仍在彻底改变我们生活的各个方面。自动车辆事故检测和救援系统是世界上尚未触及的引人注目的应用之一。 让我们了解车辆事故检测系统的工作原理以及为什么它对社会有好处。 1. 数据采集 数据采集一词是指收集现实世界的信号并将其转换为数字域以进行显示、存储和分析。在这种情况下,传感器收集上述参数的实时数据(信号),例如车辆健康状况、车辆运动和环境因素。 2. 边缘计算  集成微控制器或边缘计算设备 将分析传感器收集的数据,以识别和定位潜在的事故场景。 3. 决策 一旦收到信息,先进的算法就会根据历史数据和事故模式分析数据,以预测事故的严重程度和可能性。 4. 启动响应  在确认发生事故的情况下,系统 发送警报:使用 GPS 和预测的严重程度立即向救援/紧急服务部门发送准确的位置数据通知。 激活安全功能:系统激活内置安全功能,例如安全气囊展开、开门和自动紧急呼叫。另外,请了解我们的 SOS 系统。 提醒附近车辆:事故现场附近的车辆收到警告,避开事故区域。这样做是为了防止交通拥堵。 指导救援队:与救护车和救援队共享实时交通更新和备用路线。 超越事故检测:及时救援 使用物联网的事故 检测和警报系统的作用远不止事故检测。它也是一个救援系统,有助于更快、更高效的紧急救援工作,例如: 医疗支援: 配备急救物资的救护车、医疗无人机(目前最流行的东西)可以派往事故现场。 交通管理 车辆事故常常导致交通拥堵。因此,如果发生事故,可以计划改变交通路线,为紧急车辆和救护车清理道路。 应急准备 当发生自然灾害或重大事故时,物联网系统可以通过有效分配资源来适当协调救援工作。 车辆事故检测系统的优点 基于物联网的自动车辆事故检测和救援系统的重要性除了拯救生命之外还有其他几个好处。车辆事故检测系统的其他一些好处包括: 降低事故率通过及时发现并警告事故,可以防止许多事故的发生。 降低保险成本通过更快的事故响应和救援管理,可以降低事故的严重程度,从而降低保险费。 改善交通流量通过高效的交通管理,可以减少交通拥堵,并减少整体出行时间。 高效的应急服务借助实时数据和协调响应,应急服务可以更加有效。 总结, 将物联网集成到车辆事故检测和救援系统中,可以保证未来道路上的每辆车和每次旅行都更加安全。 通过利用传感器、物联网设备和物联网技术,我们还可以最大限度地减少道路事故造成的成本和损害,并建立一个更加坚固和响应迅速的交通生态系统。 通往更安全世界的道路始于了解物联网的力量及其改变我们应对和预防道路事故的方式的潜力。 --- ### 160. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 RS-485总线应用中,时常会遇到不同的RS-485设备之间通讯,不同的设备间兼容性存在不同,有的设备很稳定,有的设备却时常收到异常数据,这是什么原因导致的呢?又应如何避免呢? RS-485应用异常 某储能客户在使用ZLG的全隔离RS-485收发芯片SM4500过程中,时常会出现数据不稳定情况,如下图 1,客户设备与不同的RS-485设备通讯时,有的设备通讯稳定,有的设备则时不时会收到异常电平。 图1 SM4500应用简图经过测试发现客户板卡RS-485通道在空闲时,总线电平处于0电位。如图 1所示,RS-485标准规定了当AB总线间电平处于-200mV~+200mV时,接收器端(RXD)会接收到不确定电平(为解释方便,下面统称“门限电平”)。而不同的RS-485设备,门限电平存在不同,SM4500门限电平为-10mV ~ -200mV,当与门限电平为-200mV ~ +200mV的设备通讯时,就有可能出现异常,那么如何避免这一问题发生? 图2 RS-485 接收电平示意图 总线电平不确定状态原因1. 少不了的上下拉电阻如图 3、图 4,为SM4500通讯的总线波形,发送数据时(非空闲状态),总线电平最大值为3.28V,最小值为-2.96V;空闲状态时,总线电平最大值为240mV,最小值为-160mV,此时总线已经处于不确定状态。 图3 SM4500非空闲时2Mbps总线波形 图4 SM4500空闲时总线波形根据SM4500手册的典型连接电路图,在总线上增加上下拉电阻后,总线电平被拉高,此时已经远大于不确定状态电压,如图 6。可见在RS-485应用过程中,上下拉电阻是必不可少的。 图5 SM4500典型连接电路图 图6 SM4500空闲时波形(设置上下拉电阻100kΩ)2. “多余的”终端电阻想必各位工程师都知道终端电阻的作用是消除信号反射,因此实际应用中往往都会默认设置,但其实并不是所有情况都需要终端电阻,有时终端电阻反而会引入一些问题。前面说到总线空闲处于不确定状态时,可以通过设置上下拉电阻避免,但在接入终端电阻后,总线电平又会进入到不确定状态,如图 7。这又怎么解决呢? 图7 SM4500空闲时波形(设置上下拉电阻100kΩ、60Ω终端电阻) 如何使总线不处于门限电平内我们先来看下为什么在接入终端电阻后,总线电平又会进入到不确定状态。SM4500总线端输入阻抗高达上百kΩ,在设置终端电阻后,忽略内阻的影响,假设总线上各节点的SM4500的输出电压VISOOUT相同,得到总线空闲时电平计算公式如下,通讯等效示意如图 8,其中R上、R下为总线的上下拉电阻,R为终端电阻。 图8 SM4500通讯等效示意图根据上述公式,计算图 7总线空闲电压VAB=VISOOUT*60Ω/(100kΩ+100kΩ+60Ω),这里VISOOUT可取5.1V,可得VAB=1.53mV(与实测波形相符),处于RS-485标准规定的门限电平内。通过公式发现,只要减小上下拉电阻就能提高总线空闲时的电平,因此得到如下公式: 所以只要上下拉电阻<735Ω,空闲时的总线电平就能>200mV。例如取R上=510Ω进行验证,此时计算VAB=283mV,实测总线电平如图 9,光标测量总线电平为276mV(考虑到有线阻和测量的误差,因此符合理论值)。另外,上下拉电阻是不是越小的话,会越好呢?其实不然,上下拉电阻越小总线空闲状态差分电压保持的也越高,此时,终端电阻和上下拉电阻的功耗也越大,对RS-485收发器的驱动能力要求也越高,当超过RS-485收发器的驱动能力时,也会导致通信失败(详细分析可查看往期文章《详解RS-485上下拉电阻的选择》)。 图9 SM4500空闲时总线波形(设置上下拉电阻510Ω、60Ω终端电阻)如图 10,SM4500的门限电平为-10mV ~ -200mV,实际上要比RS-485标准规定的范围小,也就是说总线空闲时更不容易进入到门限电平内。根据上下拉电阻计算公式,当VAB电压趋近于0时,上下拉电阻会趋近于无穷大,换言之,SM4500理论上不设置上下拉电阻也能正常通讯。但实际上使用SM4500的设备往往会与不同的RS-485设备通讯,加上总线易受干扰产生波动,因此为了总线兼容性更好,设置上下拉电阻也是必须的。 图10 SM4500真值表 总结 1.RS-485总线网络中设置上下拉电阻是必须的,这样可以避免总线空闲时进入门限电平内;2.如果总线设置终端电阻,此时需要根据实际情况调整上下拉电阻大小,必要时适当加大终端电阻,以避免总线空闲时处于门限电平内;3.SM4500门限电平范围小,总线空闲时更不容易进入门限电平内,兼容性好。 --- ### 161. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 2020年7月9日——modbus组织董事会宣布,它正在删除modbus通信的查询和响应范例中所有不适当的术语。对于正在进行的项目,所有有能力做出积极改变的公司和个人都应该这样做。作为拥有世界上最大安装基础之一的工业网络标准的持有者,用更周到的参考文献完成当前术语的替换是很重要的。该组织的文献和其网站上的所有“主-从”实例都将被删除。当前的电子内容正在更新到此公告中。 PRESS RELEASE Modbus Organization Replaces Master-Slave with Client-Server July 9, 2020 — The Modbus Organization Board of Trustees announces it is expunging all occurrences of inappropriate language of the query and response paradigm of Modbus communications. With recent events, all companies and individuals with the ability to make positive changes should do so. As the holder of the standard for an industrial network with one of the largest installed bases in the world, it is important to complete the replacement of the current terminology with more thoughtful references. All instances of "master-slave" in the organization's literature and on its website will be removed. Current electronic content is being updated as of this announcement. Board Chair Todd Snide commented, "The time is overdue for these words to be removed. The terms are unnecessary and insensitive to the people who experience racism in this country and around the world. We urge our member companies and all those who use the Modbus protocol to take similar action to rid their documentation and communications of these terms." The organization is using "client-server" to describe Modbus communications, characterized by communication between client device (s), which initiates communication and makes requests of server device(s), which process requests and return an appropriate response (or error message). About Modbus-Organization, Inc. Headquartered in Massachusetts, the Modbus Organization is an association of users and suppliers of control and automation devices. The organization works to support the Modbus protocol, provide information and tools for individuals and companies using Modbus. It maintains the authoritative website for Modbus information. Additional information about the Modbus Organization can be found on the organization’s website, www.modbus.org. --- ### 162. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着物联网(IoT)的飞速发展,我们正在迅速进入一个全新的时代——智能物联网(AIoT)时代。在这个时代,数以亿计的设备将通过人工智能(AI)和机器学习(ML)技术相互连接,生成、交换和利用海量数据。而在这个巨变中,边缘计算作为数据处理的重要一环,正发挥着越来越重要的作用,甚至被形象地称为智能物联网时代的“加油站”。 什么是边缘计算? 边缘计算是指将计算任务从云端推向网络的边缘,即设备或终端本身。通过在设备端进行数据处理和分析,边缘计算能够提高数据处理速度和效率,同时降低对云端网络的依赖。在智能物联网时代,这种技术对于处理大量数据以及实时决策至关重要。 边缘计算的重要性 提高数据处理效率:在智能物联网时代,数据是金矿,但云端处理数据的速度和能力常常无法满足实时性需求。边缘计算能够在设备端即时处理数据,使设备能够迅速做出反应,大大提高了数据处理效率和实时性。这对于许多关键应用领域如无人驾驶、工业自动化和智能家居等至关重要。 减轻网络负担:通过将部分计算任务转移到设备端,边缘计算降低了对云端网络的依赖,从而减轻了网络负担。这对于处理大规模、高并发量的数据非常重要,也使得物联网设备在有限的网络资源下能够更好地运行。 保障数据安全:由于数据在设备端进行处理,使得敏感数据不需要传输到云端,从而降低了数据泄露的风险,增强了数据安全性。这对于保护用户隐私和企业敏感信息具有重要意义。 推动AIoT发展:边缘计算为AIoT提供了强大的推动力。它不仅提高了数据处理效率,还降低了对网络资源的消耗,使得AI和IoT能够更好地融合,进一步推动了智能物联网的发展。同时,边缘计算也为开发新的应用领域提供了可能性,如智能家居、工业自动化和无人驾驶汽车等。 增强用户体验:通过边缘计算,设备能够更快地响应用户的操作和需求,为用户提供更流畅、实时的交互体验。这对于许多物联网应用来说至关重要,比如无人驾驶汽车、工业自动化和智能家居等。 边缘计算的优势 减少延迟:由于数据在设备端进行处理,因此可以减少从设备到云端的数据传输时间,从而减少延迟。这对于需要实时反应的场景非常重要,例如自动驾驶和工业自动化。 提高网络效率:由于边缘计算可以分担部分数据处理任务,因此可以降低云端网络的负载,提高网络效率。这对于处理大规模、高并发量的数据非常有利。 保护数据安全:由于数据不需要传输到云端,因此可以减少数据泄露的风险,提高数据安全性。这对于保护用户隐私和企业敏感信息具有重要意义。 支持多样性:边缘计算可以支持各种不同的设备和平台,因此可以更好地支持物联网的多样性。这意味着可以使用各种不同的传感器、设备和系统来实现智能物联网应用。 降低成本:由于边缘计算可以减少对云端网络的依赖,因此可以降低网络带宽成本和云计算成本。这对于企业和个人用户来说是一个重要的考虑因素。 总结 边缘计算在智能物联网时代扮演着越来越重要的角色。它不仅可以提高数据处理效率和实时性,还可以降低网络负载和成本,增强数据安全性和用户体验。因此,边缘计算被认为是智能物联网时代的核心驱动力之一,为我们的未来提供源源不断的动力。 --- ### 163. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在物联网中,通讯线的作用是传输数据、信号和电能,以便在设备之间建立通信链路。 常见的通讯线包括USB线、信号线、RS485、RS232、以太网线、CAN等。其中,USB线是一种数字信号传输线,可以连接电脑和其他外设,传输数据、充电和供电等功能。信号线用于传输单个信号或特定信号,通常用于连接设备内部的不同模块、电路或组件,传输特定的信号或信号类型。而RS485、RS232、以太网线、CAN等通讯线则用于在不同的设备之间进行数据传输和通信,建立长距离的通信链路。 不同协议通讯线的传输距离 通讯线距离描述RS4851200米两线制,差分信号传输,半双工通信,最大通信距离千米以上。RS23210米三线制,全双工通信,一般通信距离小于 10 米。RS4221200米RS-422的最大传输距离约1200米。最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。以太网100米4 线或 8 线,多主通信,高性能,普通网线通信距离 100 米以内。CAN1000米两线制,多主通信,高性能,高可靠性,每次最多传输 8 个字节的数据,通信距离千米以上。M-Bus1000米两线制,半双工,专为远程抄表系统专门设计的总线,M-Bus通讯线的传输距离可以达到1000米。USB10米在物联网中,USB通讯线主要用于连接设备与计算机或其它设备之间的数据传输。USB通讯线的传输距离通常很短,一般只有几米到十几米。这是因为USB通讯线是用于连接设备的近距离通信,其传输速率和传输距离都有限制。 无线传输协议与距离 蓝牙:蓝牙协议的有效范围为50到100米,支持高达1 Mbps的数据传输速率。最近,物联网开发人员已经表现出对基于蓝牙智能协议的低能耗蓝牙低功耗(BLE)的倾向。与前一代产品相比,BLE的功耗显著降低,但不适合大型文件传输。 Zigbee:基于IEEE 802.15.4标准的Zigbee已成为嵌入式应用中使用最广泛的通信协议之一。Zigbee用于连接10-100米范围内的设备,支持高达250 Kbps的数据速率。作为一种低功耗,低数据速率技术,Zigbee非常适合物联网传感器和物联网网关设备之间的双向数据传输,以及ad hoc无线网状网络。通过其网状拓扑,Zigbee设备可以通过中间设备在一定距离上传输数据。对于在消费和工业领域需要低成本和低功耗传感器网络的物联网应用,Zigbee是一个很好的选择。 LoRa:LoRa是一种基于扩频技术的远距离无线传输方案,其最大传输距离可达数公里甚至数十公里。LoRa协议具有低功耗、长距离传输、网络容量大等特点,非常适合物联网应用。 Wi-Fi:Wi-Fi旨在取代以太网,并通过IEEE 802.11标准系列提供易于使用的短距离无线连接和跨厂商互操作性。虽然Wi-Fi不是一种低功耗技术,但其传输距离相对较远,通常在几十米到数百米之间。 蜂窝网络:对于需要长距离连续连接的物联网应用,蜂窝网络是一种可行的解决方案。蜂窝网络是基于GSM、LTE、EDGE、3G、4G和5G等蜂窝标准的移动通信网络,可以提供广泛的覆盖范围和数据传输速率。 Sigfox:Sigfox是一种基于软件的低功耗广域网(LPWAN)协议,旨在为物联网应用提供一种简单、低成本、可靠的通信解决方案。Sigfox通过使用超窄带技术实现远距离传输,最大传输距离可达数百公里。 LoRaWAN:LoRaWAN是一种基于LoRa协议的广域网(LPWAN)协议,旨在为物联网应用提供长距离、低功耗、安全的通信能力。LoRaWAN支持多种数据传输速率和多种频段,最大传输距离可达数公里到数十公里不等。 这些无线传输协议各有特点和使用场景,需要根据具体需求进行选择。例如,对于需要低功耗和双向通信的传感器网络,Zigbee是一个很好的选择;对于需要远距离传输的应用场景,LoRa或LoRaWAN可能是更好的选择;而对于需要快速、远距离的无线连接,Wi-Fi或蜂窝网络则是更合适的选择。 --- ### 164. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在快速城市化和环境问题备受关注的时代,商业建筑的可持续实践至关紧迫。本文将探讨物联网(IoT)在推动商业建筑可持续发展中的关键作用。随着企业努力减少碳足迹并优化资源消耗,物联网已成为实现节能和环保运营的强大工具。 1、提高能源效率 商业建筑通常占城市能源消耗的大部分,但物联网驱动的建筑管理系统可以改变这一局面。通过互连的传感器和设备网络,这些系统可以实时监控、分析和控制能源使用情况。利用物联网从各种来源收集数据,如智能电表、暖通空调系统、照明系统、占用传感器等,系统可以识别能耗模式和低效率,为企业提供精确的优化建议,从而减少能源浪费,降低成本,贡献于更绿色的环境。 2、智能监控与维护 物联网驱动的解决方案提供实时设备性能洞察,实现预测性维护。通过持续监控温度、湿度、设备运行状况等参数,系统可以在潜在故障升级之前检测并解决问题。这种主动方法最大限度地减少了停机时间和维修成本,同时延长了设备的使用寿命,减少资源消耗和电子废物,从而减少生态足迹。 3、居住者舒适度和生产力 为商业建筑居住者创造一个舒适且高效的环境至关重要。物联网技术可以监控和响应影响居住者福祉的参数,如占用传感器、温度监控和照明系统。通过集成这些信息,建筑管理者可以为居住者创造一个舒适和高效的环境,提高生产力,改善空气质量,提供最佳照明和温度控制。 4、数据驱动的决策 物联网产生大量数据,用于推动数据驱动的决策。收集和分析来自多个来源的实时数据,如能源消耗、资产健康和建筑性能,提供有关趋势的宝贵见解。通过有效监控能源消耗、资产健康和建筑性能,商业建筑可以不断改进可持续发展措施,如根据占用率或自然光可用性调整亮度的智能照明系统,实现节能策略。 结语 支持物联网的智能建筑解决方案使商业建筑能够实施可持续发展措施,如减少能源浪费、实现负载平衡和推动长期环境效益。通过积极监控和维护建筑系统,以及采用需求响应计划和电网集成,商业建筑可以为更可持续性和弹性的能源网络做出贡献。物联网在实现商业建筑的可持续未来方面发挥着关键作用,通过融合科技和可持续实践,我们可以迈向更绿色、更可持续的明天。 --- ### 165. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着物联网设备数量的不断增加,物联网中的通信成为一个至关重要的问题。通信协议在这一领域发挥着关键作用,因为它们定义了设备之间的通信规则和约定。这篇文章将介绍几种常用的物联网通信协议,这些协议具有不同的性能、数据速率、覆盖范围、功耗和内存需求。每种协议都有自己的优点和一些潜在的缺点,适用于不同的应用场景。 物联网通信协议分为两大类: 接入协议:主要负责设备间的组网和通信,这些协议通常用于局域网或短距离通信。 通讯协议:运行在传统互联网TCP/IP协议之上的设备通信协议,主要用于设备通过互联网进行数据交换和通信。 01 物理层和数据链路层协议 1. 远距离蜂窝通信协议: 2G/3G/4G通信协议:这些协议代表第二、第三和第四代移动通信系统协议。它们广泛用于移动通信,并提供了高速数据传输和全球覆盖。 NB-IoT:窄带物联网协议构建在蜂窝网络基础上,具有低带宽要求,适用于物联网市场。它具有广泛的覆盖范围、低功耗、低成本等特点。 5G:第五代移动通信技术,提供高速数据传输、低延迟、大规模设备连接等性能。适用于智能城市、车联网、智能制造等领域。 2. 远距离非蜂窝通信协议: WiFi:广泛应用于智能家居领域,可直接接入互联网,但受范围限制。 ZigBee:低速短距离传输的无线通信协议,适用于智能家居、工业、农业等领域。 LoRa:提供远距离通信,适用于物联网产品,如烟感器、水监测、定位等。 3. 近距离通信协议: RFID:用于无线识别,广泛应用于门禁、物料管理、生产线自动化等领域。 NFC:用于门禁、考勤、访客管理等领域。 蓝牙:用于短距离无线通信,适用于设备间数据传输和连接。 4. 有线通信协议: USB:用于计算机与外部设备的连接和通信。 串口通信协议:包括RS-232、RS-422和RS-485,通常用于仪器设备和工业控制。 02 网络层和传输协议 1. IPv4和IPv6:IPv4是互联网的核心协议,而IPv6解决了IPv4地址资源有限的问题,支持更多设备的连接。 2. TCP:传输控制协议用于可靠的点对点通信。 3. 6LoWPAN:适用于IPv6的低功耗无线个域网标准。 03 应用层协议 1. MQTT协议:适用于多对多通信,特别适合受限环境的消息分发,如机器到机器通信和物联网。 2. CoAP协议:适用于小型低功耗传感器和服务器之间的状态传输。 3. REST/HTTP协议:基于资源的软件架构风格,适用于移动应用和互联网通信。 4. DDS协议:分布式实时数据分发服务 中间件协议,用于实时网络通信。 5. AMQP协议:提供统一消息服务的应用层标准高级消息队列协议,适用于消息中间件。 6. XMPP协议:基于XML的协议,适用于实现扩展性强的应用。 04 部分通信协议比较 1. NB-IoT和LoRa协议比较: 频段:LoRa在未授权频段工作,无需额外费用,而NB-IoT需要授权频段并收费。 电池寿命:LoRa通常具有更长的电池寿命,但服务质量不如NB-IoT。 设备成本:LoRa终端节点相对更简单,成本更低。 网络覆盖和部署:LoRa的产业链相对成熟,全球许多国家已完成网络部署,而NB-IoT需要更多时间和努力。 2. 蓝牙、WiFi、ZigBee协议比较: 蓝牙:适用于简单的设备连接,但传输范围受限。 WiFi:适用于广泛的应用,但在移动性和干扰方面存在问题。 ZigBee:适用于低功耗和自组网,适合家居、工业等领域。 3. MQTT协议和CoAP协议比较: MQTT支持多对多通信,适用于实时数据通信总线。 CoAP主要用于点对点通信,适用于状态传输模型。两者有不同的优点,选择取决于应用需求。 综上所述,物联网通信协议的选择取决于具体应用场景和需求,每种协议都有其独特的优势和适用性。 --- ### 166. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 未来智慧城市七大发展趋势探索 随着科技的飞速进步和全球化背景下的多重挑战,智慧城市的构想和实践日益受到各国重视。以下,我们探讨了未来智慧城市的七大主要发展趋势。 1. 规划绿色公共空间 在“碳减排”和绿色生态的背景下,未来城市将更注重公共空间的人性化和生态化。绿色空间不仅能够吸收二氧化碳,还可以为居民提供休憩和社交的空间,进一步提高城市的宜居性。 2. 构建智慧健康社区 未来的智慧健康社区将通过人工智能、大数据等技术,为居民提供更为精确和个性化的健康管理服务。而随着分级诊疗制度的推进,互联网医疗将成为城市社区中的重要服务模块。 3. 打造“15分钟城市” 这一概念强调城市规划中的便捷性和可持续性,通过减少不必要的长途出行,提高城市的效率和生活质量。同时,这种规划也有助于强化社区的凝聚力和归属感。 4. 加速低碳智能出行 随着新能源汽车和自动驾驶技术的发展,低碳智能出行将逐渐成为未来城市交通的主流。这不仅能够有效降低碳排放,还可以提高道路的安全性和效率。 5. 通过人工智能实现城市运营自动化 智慧城市将通过人工智能、云计算等技术,实现城市的自动化运营和管理。这将极大提高城市的效率和响应速度,为居民提供更为高效和便捷的服务。 6. 强化网络安全与隐私保护 在数据日益成为城市管理和运营的关键时,网络安全和隐私保护成为了一个不可忽视的议题。未来的智慧城市将更注重这一领域的技术和策略研究,确保数据的安全和个人隐私的保护。 7. 利用人工智能实施监控和警务预测 人工智能和其他前沿技术的应用,将使得未来的城市能够更有效地进行监控和警务预测,从而有效预防和应对各种安全威胁。同时,这些技术还可以为城市的可持续发展提供强有力的数据支持。 Modbus物联网平台在智慧城市中的应用探讨 随着智慧城市的发展,物联网技术与城市规划、管理和服务的深度融合已成为趋势。其中,Modbus作为一种成熟的通讯协议,在物联网平台中扮演着至关重要的角色,助力智慧城市的实现。 1. 交通管理与控制 使用Modbus物联网平台,智慧城市可以实现交通流量的实时监控,自动控制红绿灯,优化交通路线,从而缓解交通堵塞,提高出行效率。 2. 城市能源管理 Modbus物联网技术使得城市能够实时监控和控制能源使用,如智慧照明、智能电网等,从而实现能源的节约和高效使用。 3. 公共安全与监控 通过Modbus物联网平台,可以实时收集、分析来自各种传感器和摄像头的数据,及时发现和应对公共安全隐患,确保市民的生命财产安全。 4. 垃圾处理与回收 智慧垃圾桶和回收站可以实时发送数据到中心管理系统,使得城市能够更高效地进行垃圾收集和处理,同时也推动了循环经济的实践。 5. 公共服务与便民 Modbus物联网技术还应用于公交、自来水、天然气等公共服务领域,为市民提供更加便捷、高效的服务。 6. 城市设施监控与维护 利用Modbus物联网平台,城市可以对桥梁、隧道、大楼等重要设施进行实时监控,及时发现并处理潜在的安全隐患。 7. 生态环境监测 通过Modbus物联网技术,城市可以实时监测空气质量、水质、土壤状况等,为环境保护和治理提供有力的数据支持。 总结,Modbus物联网平台在智慧城市中的应用,为城市的管理和服务带来了革命性的改变,使得城市更加智能、高效和宜居。而随着技术的不断发展和创新,我们有理由相信,Modbus物联网技术在未来智慧城市中的应用将更加深入和广泛。 --- ### 167. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线。UART、I2C、RS485 等普遍在用,对它们的认识可能模棱两可,本文把它们整理了一下。UART通用异步收发器 UART口指的是一种物理接口形式(硬件)。 UART是异步,全双工串口总线。它比同步串口复杂很多。有两根线,一根TXD用于发送,一根RXD用于接收。UART的串行数据传输不需要使用时钟信号来同步传输,而是依赖于发送设备和接收设备之间预定义的配置。对于发送设备和接收设备来说,两者的串行通信配置应该设置为完全相同。 ●起始位:表示数据传输的开始,电平逻辑为“0” 。●数据位:可能值有5、6、7、8、9,表示传输这几个bit 位数据。一般取值为8,因为一个ASCII 字符值为8 位。●奇偶校验位:用于接收方对接收到的数据进行校验,校验“1” 的位数为偶数(偶校验) 或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。●停止位:表示一帧数据的结束。电平逻辑为“1”。●波特率:串口通信时的速率,它用单位时间内传输的二进制代码的有效位(bit) 数来表示,其单位为每秒比特数bit/s(bps)。如果用通用 IO 口模拟UART总线,则需一个输入口,一个输出口。I2C总线I2C总线是一种同步、半双工双向的两线式串口总线。它由两条总线组成:串行时钟线 SCL 和串行数据线 SDA。SCL线——负责产生同步时钟脉冲。SDA线——负责在设备间传输串行数据。该总线可以将多个 I2C 设备连接到该系统上。连接到 I2C 总线上的设备既可以用作主设备,也可以用作从设备。 主设备负责控制通信,通过对数据传输进行初始化,来发送数据并产生所需的同步时钟脉冲。从设备则是等待来自主设备的命令,并响应命令接收。主设备和从设备都可以作为发送设备或接收设备。无论主设备是作为发送设备还是接收设备,同步时钟信号都只能由主设备产生。如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。SPI串行外设接口SPI总线是同步、全双工双向的4线式串行接口总线。它是由“单个主设备+多个从设备”构成的系统。在系统中,只要任意时刻只有一个主设备是处于激活状态的,就可以存在多个SPI主设备。常运用于AD转换器、EEPROM、FLASH、实时时钟、数字信号处理器和数字信号解码器之间实现通信。 为了实现通信,SPI共有4条信号线,分别是:●主设备出、从设备入(Master Out Slave In,MOSI):由主设备向从设备传输数据的信号线,也称为从设备输入(Slave Input/Slave Data In,SI/SDI)。●主设备入、从设备出(Master In Slave Out,MISO):由从设备向主设备传输数据的信号线,也称为从设备输出(Slave Output/Slave Data Out,SO/SDO)。●串行时钟(Serial Clock,SCLK):传输时钟信号的信号线。●从设备选择(Slave Select,SS):用于选择从设备的信号线,低电平有效。SPI 的工作时序模式由CPOL(Clock Polarity,时钟极性)和CPHA(Clock Phase,时钟相位)之间的相位关系决定。CPOL 表示时钟信号的初始电平的状态,CPOL 为0 表示时钟信号初始状态为低电平,为1 表示时钟信号的初始电平是高电平。CPHA 表示在哪个时钟沿采样数据,CPHA 为 0 表示在首个时钟变化沿采样数据,而CPHA 为1 则表示在第二个时钟变化沿采样数据。根据CPOL 和CPHA 的不同组合共有4 种工作时序模式:●CPOL=0,CPHA=0●CPOL=0,CPHA=1●CPOL=1,CPHA=0●CPOL=1,CPHA=1UART、SPI、I2C比较 ●I2C线更少,比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。●SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。●I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。●UART一帧可以传5/6/7/8位,I2C必须是8位。I2C和SPI都从最高位开始传。●SPI用片选信号选择从机,I2C用地址选择从机。 RS232串口通信传输线有两根,地线一根。电平是负逻辑:-3V~-15V逻辑“1”,+3V~+15V逻辑“0”。RS-232串口通信传输距离15米左右。可做到双向传输,全双工通讯,传输速率低20kbps 。下图是DB9公头和母头的定义,一般用最多的是RXD、TXD、GND三个信号。 TTL和RS-232互转单片机接口一般是TTL电平,如果接232电平的外设,就需要加TTL转RS232的模块。如下图,可用芯片MAX232进行转换。 RS422串口通信RS-422有4根信号线:两根发送、两根接收和一根地线,是全双工通信。它有一个主设备,其余为从设备,从设备之间不能通信,所以RS-422支持点对多的双向通信。 RS485串口通信RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。采用两线半双工传输,最大速率10Mb/s,电平逻辑是两线的电平差来决定的,提高抗干扰能力,传输距离长(几十米到上千米)。+2V~+6V逻辑“1”,-2~-6V逻辑“0”。TTL转成RS-485很常见,比如MAX485,参考电路如下 RE引脚:接收器输出使能(低电平有效)。DE引脚:发送器输出使能(高电平有效)。可以直接通过MCU的IO端口控制。TTL嵌入式里面说的串口,一般是指UART口。4个pin(Vcc,GND,RX,TX),用TTL电平。PC中的COM口即串行通讯端口,简称串口。9个Pin,用RS232电平。 串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指电平标准(电信号)。 单片机与PC通讯示意图如下: CAN总线CAN是控制器局域网络的简称,是一种能够实现分布式实时控制的串行通信网络。CAN总线的功能复杂且智能。主要用于汽车通信。CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻。 每一个设备既可做主设备也可做从设备。CAN总线的通信距离可达10千米(速率低于5Kbps),速度可达1Mbps(通信距离小于40M)。 CAN电平逻辑CAN总线采用"线与"的规则进行总线仲裁,1&0为0,所以称0为显性,1为隐性。从电位上看,因为规定高电位为0,低电位为1,同时发出信号时实际呈现为高电位,从现象上看就像0覆盖了1,所以称0为显性,1为隐性。 USB通信串行总线USB接口最少有四根线,其中有两根是数据线,而所有的USB数据传输都是通过这两根线完成。它的通信远比串口复杂的多。两根数据线采用差分传输,即需要两根数据线配合才能传输一个bit,因此是半双工通信,同一时间只能发送或者接收。USB 规定,如果电压电平不变,代表逻辑1;如果电压电平变化,则代表逻辑0。 USB转TTL一般USB转串口都是用CH340G芯片。 用串口通信比USB简单,因为串口通信没有协议。SD卡SD卡是一种存储卡,可用于手机作为内存卡使用。嵌入式中,单片机与SD卡通信有两种模式:●SPI总线通信模式●SD总线通信模式 值得注意的是,SD总线模式中有4条数据线;SPI总线模式中仅有一条数据线(MOSI和MISO不能同时读数据,也不能同时写数据);这样在嵌入式中,单片机与SD卡通信时采用SD总线模式比SPI总线模式速度快几倍。 1-WIRE总线1-Wire由美国Dallas(达拉斯)公司推出,是一种异步半双工串行传输。采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的。 单总线的数据传输速率一般为16.3Kbit/s,最大可达142 Kbit/s,通常情况下采用100Kbit/s以下的速率传输数据。1-Wire线端口为漏极开路或三态门的端口,因此一般需要加上拉电阻Rp,通常选用5K~10KΩ主要应用在:打印墨盒或医疗消耗品的识别;印刷电路板、配件及外设的识别和认证。DMA直接存储器访问DMA是STM32内的一个硬件模块,它独立于CPU,在外围设备和内存之间进行数据传输,解放了CPU,可使CPU的效率大大提高。 它可以高速访问外设、内存,传输不受CPU的控制,并且是双向通信。因此,使用DMA可以大大提高数据传输速度,这也是ARM架构的一个亮点——DMA总线控制。DMA就相应于一条高速公路,专用、高速的特性。如果不使用DMA,也可以达到目的,只是达到目的的时间比较长。Ethernet以太网以太网是目前应用最普遍的局域网技术。大家知道,以太网接口可分为协议层和物理层。协议层是由一个叫MAC(Media Access Layer)控制器的单一模块实现。物理层由两部分组成,即PHY(Physical Layer)和传输器。目前很多主板的南桥芯片已包含了以太网MAC控制功能,只是未提供物理层接口。因此,需外接PHY芯片以提供以太网的接入通道。 网络变压器的作用是:●耦合差分信号,抗干扰能力更强●变压器隔离网线端不同设备的不同电平,隔离直流信号以太网接口参考电路,如下图所示。 --- ### 168. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化和控制系统中,通信协议扮演着至关重要的角色,用于确保设备之间的高效通信。两种常见的工业通信协议是OPC和Modbus,它们分别具有不同的技术基础和应用场景。本文将深入比较这两种协议,以帮助读者更好地理解它们的特点和优势。 1. 技术基础 OPC(OLE for Process Control): OPC是一种基于微软的COM(Component Object Model)和DCOM(Distributed Component Object Model)技术的通信协议。它旨在实现软件与软件之间的高效通信,使不同的工业自动化系统和应用程序能够共享数据。OPC通信协议通常在本地计算机上运行,较为简单。然而,当涉及到网络通信时,需要复杂的系统设置。 Modbus: Modbus是一种基于物理硬件的通信协议,早在1970年代末就为可编程逻辑控制器(PLC)通信而开发。它的设计目标是设备与设备之间的通信。Modbus可以在多种物理介质上运行,包括串口(RS-232、RS-485)和TCP/IP。两个设备之间只要能够物理连接,就可以进行通信,无需像OPC那样依赖于特定的软件和协议。 2. 数据结构和应用范围 OPC: OPC通信协议支持多种数据结构和复杂的数据类型,包括位数据、字数据和字符串。这使得它非常适合于连接多个不同类型的工业自动化设备和系统,如监控系统、报警系统和历史数据访问。 Modbus: Modbus的数据结构相对较简单,主要包括线圈、输入线圈、保持寄存器和输入寄存器。它通常用于较简单的应用,如传感器、执行器和温度控制器之间的通信。 3. 灵活性和适用性 OPC: OPC通常需要更多的硬件和软件资源,因此成本较高。然而,它提供了更多的功能和性能,适用于大型工业自动化系统。 Modbus: Modbus是一种相对简单和经济的通信协议,适合于中小型应用项目。由于其广泛的应用和支持,Modbus设备通常更容易获得。 4. 安全性 OPC: OPC通过支持DCOM安全性提供了一定程度的安全性,但仍需谨慎配置以确保安全。 Modbus: Modbus协议自身并没有提供针对未经授权的命令或截取数据的安全性,因此需要通过其他手段来保障通信的安全性。 综上所述,OPC和Modbus是两种不同的工业通信协议,各自具有自己的技术基础和应用特点。选择哪种协议应根据具体应用的需求,包括实时性、复杂性、成本和可获得的设备来决定。无论选择哪种协议,都需要在实际应用中仔细考虑,并采取适当的安全措施以确保工业自动化系统的可靠性和安全性。 --- ### 169. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化和控制系统中,通信协议是确保设备之间有效沟通的关键因素之一。Profibus和Modbus是两种常见的工业通信协议,它们在不同的应用场景中具有一定的优势和特点。本文将对这两种协议进行比较,以帮助读者了解它们的不同之处。 1. 历史和发展 Profibus: Profibus是一种由德国自动化技术协会(German Association of Industrial Automation - ZVEI)和德国电气电子制造商协会(German Electrical and Electronic Manufacturers' Association - ZVEI)共同开发的通信协议。它于1990年首次引入,并经过多年的演化和改进,现在已经成为全球范围内使用最广泛的工业通信标准之一。 Modbus: Modbus协议最早于1979年由Modicon(现在的施耐德电气)公司开发,是一种相对较早的通信协议。它最初设计用于连接PLC(可编程逻辑控制器)和工业仪表,但后来被广泛用于各种工业设备之间的通信。 2. 通信方式 Profibus: Profibus支持多种通信介质,包括RS-485、光纤和无线等。它提供了高速数据传输,适用于需要快速实时通信的工业环境。 Modbus: Modbus最初是一个串行通信协议,但后来也被扩展为支持以太网通信。它通常以ASCII或RTU格式进行数据传输,适用于简单的数据交换和远程监控。 3. 数据结构 Profibus: Profibus通常用于更复杂的系统,支持多种数据结构,包括位数据、字数据和字符串。这使得它非常适合用于连接大型工业自动化系统中的多个设备。 Modbus: Modbus通常用于较简单的系统,其数据结构相对简单,主要包括线圈(Coils)、输入线圈(Input Coils)、保持寄存器(Holding Registers)和输入寄存器(Input Registers)。 4. 性能和适用性 Profibus: 由于其高速传输和复杂的数据结构,Profibus适用于大型工业控制系统,例如制造业自动化和过程控制。它在实时性和可靠性方面表现出色。 Modbus: Modbus通常用于小型到中型的应用,例如建筑自动化和温控系统。它的实时性较低,但足够满足许多简单的工业通信需求。 5. 灵活性和成本 Profibus: Profibus通常需要更多的硬件和软件资源,因此成本较高。然而,它提供了更多的功能和性能。 Modbus: Modbus是一种相对简单和经济的通信协议,适合预算有限的项目。由于其广泛的应用和支持,Modbus设备通常更容易获得。 6. 生态系统和支持 Profibus: 由于其长时间的存在和广泛的应用,Profibus拥有丰富的生态系统和厂商支持。用户可以轻松找到各种兼容的设备和解决方案。 Modbus: Modbus也有着广泛的生态系统,许多设备和控制系统支持Modbus通信。这使得它成为一个受欢迎的选择。 综上所述,Profibus和Modbus是两种不同的工业通信协议,各自具有自己的优势和适用性。选择哪种协议取决于特定应用的需求,包括实时性、复杂性、成本和可获得的设备。无论选择哪种协议,都需要根据具体情况进行仔细考虑,以确保工业自动化系统的顺畅运行。 --- ### 170. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着工业4.0和物联网(IoT)的兴起,越来越多的企业希望将其旧的MODBUS设备连接到组态软件进行监控或上云以实现远程管理。这里,DTU(数字传输单元)和串口服务器为你提供了一个桥梁,将传统的MODBUS设备与现代化的监控和管理工具连接起来。下面将为你提供一个详细的步骤指南: 1. 了解你的设备和需求 确定你的MODBUS设备的型号和通信协议。 明确你想要实现的功能:实时监控、数据记录、远程控制等。 2. 选择合适的DTU或串口服务器 根据MODBUS设备的通信接口(如:RS232、RS485)选择相应的DTU或串口服务器。 确保所选设备支持连接到你的目标组态软件或云平台。 3. 连接和配置 将MODBUS设备通过合适的线缆连接到DTU或串口服务器。 为DTU或串口服务器分配IP地址,并确保它可以与网络上的其他设备通信。 在DTU或串口服务器中配置MODBUS设备的通信参数。 4. 连接到组态软件或物联网平台 如果是组态软件,确保软件支持MODBUS协议,并添加设备,指定IP地址和其他必要的参数。 如果是物联网平台,你可能需要配置API接口或MQTT协议等,确保DTU或串口服务器能与平台正常交互。 5. 测试和验证 检查从MODBUS设备获取的数据是否正确。 在组态软件或云平台上模拟一些操作,如读/写操作,确认MODBUS设备响应正确。 6. 优化和维护 根据实际需要,调整数据的采集频率或上传间隔。 定期检查网络连接和设备状态,确保稳定可靠的运行。 结论将旧的MODBUS设备通过DTU或串口服务器连接到组态软件或物联网云平台,不仅可以为企业带来更高的运营效率,还可以为设备的维护和管理提供更多的便利。通过合理的配置和维护,企业可以最大化地利用其现有的资源,为未来的发展奠定坚实的基础。 --- ### 171. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口服务器在MODBUS通信中的应用和优势 随着工业自动化和物联网技术的逐渐成熟,通信协议和技术也在快速进化。MODBUS,作为一种经典的、广泛应用的工业通讯协议,持续受到工业领域的欢迎。而在MODBUS通信中,串口服务器的出现大大加强了这一协议的应用范围和效率。本文将探讨串口服务器在MODBUS通信中的应用和其所带来的优势。 1. 串口服务器简介 串口服务器,也称为终端服务器或串口重定向器,是一种设备,它可以将串行数据转换为以太网数据。它使得串行通信设备能够直接通过以太网与其他设备通信,大大增加了通信距离和效率。 2. 串口服务器在MODBUS通信中的应用 扩展通信距离:传统的MODBUS RTU协议使用RS-232或RS-485作为物理层,其通信距离受到明显限制。而通过串口服务器,可以轻松地实现MODBUS RTU设备通过IP网络进行长距离通信。 协议转换:串口服务器不仅支持MODBUS RTU到MODBUS TCP的转换,还允许多种协议之间的转换,为不同设备之间的通信提供便利。 集中管理与监控:串口服务器可将多个MODBUS RTU设备连接至一个集中的管理平台,使得管理人员可以在一个界面上监控和控制所有设备。 3. 串口服务器的优势 提高系统的可靠性:串口服务器通常都具备强大的防护能力,如防雷击、防电浪涌等,确保通信稳定可靠。 降低总体成本:使用串口服务器,企业可以减少网络布线,同时减少因为通讯距离而需要的中继器或者放大器。 简化网络结构:串口服务器可以为多个串行设备提供统一的IP地址,简化了网络配置和管理。 提供更强大的功能:很多高级的串口服务器还提供了VPN、防火墙、流量控制等功能,进一步增强了系统的安全性和稳定性。 灵活的拓展性:随着工业现场设备数量的增加,通过添加串口服务器可以轻松地实现系统的拓展,而不需要大规模地更改现有的网络结构。 结论 串口服务器在MODBUS通信中的应用大大推进了工业自动化的发展。它不仅克服了传统串行通信的局限性,还为现代工业通信带来了更多的可能性。考虑到其明显的优势,无论是现有系统的升级还是新系统的部署,串口服务器都是一个值得考虑的重要组成部分。 --- ### 172. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus协议从其诞生之初就被广泛应用于工业控制和自动化系统中。由于其简单、开放和健壮的特性,Modbus赢得了许多工业应用的青睐。但随着技术的进步和新需求的出现,Modbus是否还能保持其领先地位?以下是关于Modbus未来发展和趋势的分析: 1. 与现代技术集成: 随着工业互联网的兴起,Modbus可能需要与现代通信技术,如MQTT、WebSocket等,更紧密地集成。这样可以更好地支持远程监控、数据采集和分析等应用。 2. 安全性增强: 原始的Modbus协议并未考虑安全性。随着网络安全威胁的增加,Modbus可能需要增加更多的安全特性,如加密、身份验证和授权等,来保护数据和设备。 3. 与边缘计算结合: 随着边缘计算技术的发展,Modbus可能会被集成到更智能的设备中,支持在设备边缘进行数据处理和分析,减少中央服务器的负载。 4. 支持更多的物联网应用: 物联网的兴起为Modbus带来了新的应用机会。通过增强其功能,Modbus可以更好地支持智能家居、智能城市、健康监测等新的应用领域。 5. 扩展性和灵活性增强: 为了满足多样化的应用需求,Modbus可能会增加更多的命令和功能,提供更高的扩展性和灵活性。 6. 与其他协议互操作: 随着工业4.0和工业互联网的推进,多种工业通信协议可能需要更好地协同工作。Modbus可能会发展出更多与其他协议互操作的功能,支持跨协议的通信和数据交换。 7. 更高效的数据传输: 为了支持大量的数据传输和实时通信,Modbus可能会引入新的数据压缩、优化和传输技术,提高数据传输的效率和实时性。 结论: 尽管Modbus已经存在了很长时间,但它仍然是一个活跃和发展中的协议。通过不断地创新和改进,Modbus有望继续在工业控制和自动化领域中保持其领先地位。但为了应对新的挑战和机会,Modbus社区和制造商需要持续投入研发,确保其协议的现代性、安全性和可靠性。 --- ### 173. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是一个广泛使用的工业通信协议,但除了Modbus之外,还有其他许多工业通信协议被广泛应用于各种工业环境中。下面我们将对比Modbus与其他几种主要的工业通信协议: 1. Modbus: 特点: 开放标准,不依赖于特定制造商。 可以使用RS-232、RS-485或TCP/IP。 简单,容易实现。 应用场景:广泛应用于各种工业应用,如PLC、传感器、执行器等。 2. PROFIBUS (Process Field Bus): 特点: 基于循环的通信。 提供分层的通信模型。 支持诊断和网络配置功能。 应用场景:广泛应用于工厂自动化、过程控制和动力应用中。 3. PROFINET: 特点: 使用以太网来传输数据。 支持实时和非实时通信。 可与PROFIBUS无缝集成。 应用场景:主要用于生产自动化、过程自动化和机器制造。 4. EtherCAT (Ethernet for Control Automation Technology): 特点: 使用标准的以太网硬件。 高速、实时性高。 支持复杂的拓扑结构。 应用场景:应用于高速、高性能的自动化系统中。 5. DeviceNet: 特点: 基于CAN (Controller Area Network)。 支持多主结构。 提供电源和通信功能。 应用场景:主要用于连接工业设备,如驱动器、传感器和执行器。 对比总结: 通信媒体:Modbus可以使用多种物理层,而其他协议可能只限于特定的物理媒体,如EtherCAT主要使用以太网。 性能:对于实时要求极高的应用,EtherCAT和PROFINET可能更具优势,而Modbus更适合于不需要极高实时性的应用。 开放性:Modbus是完全开放的,而某些其他协议可能需要特定的硬件或软件支持。 成本:Modbus的实施和维护成本相对较低,而某些高性能的协议可能需要更昂贵的硬件支持。 应用范围:虽然所有这些协议都被广泛应用于工业环境中,但它们的主要应用领域可能会有所不同。 综上所述,选择适当的工业通信协议取决于具体的应用需求、预算和其他考虑因素。而了解每种协议的优势和局限性将帮助决策者做出明智的选择。 --- ### 174. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着物联网(IoT)的发展,Modbus这一传统的工业通信协议越来越多地与现代的计算模型如边缘计算和云计算结合使用。下面,我们将探讨Modbus如何与边缘计算和云计算集成,并深入了解其应用和好处: Modbus与边缘计算的集成: 数据预处理:边缘设备(如PLC、网关或控制器)可以直接读取连接的Modbus设备的数据,对其进行预处理,如数据清洗、聚合或转换,然后将处理后的数据传输到云端。 实时反馈:基于Modbus的实时数据,边缘设备可以快速做出决策或执行控制命令,而不需要等待与云端的通信。 边缘存储:当与云端的连接中断时,边缘设备可以暂时存储从Modbus设备收集的数据,待连接恢复时再上传。 安全性增强:在边缘设备上实施Modbus到其他协议的转换(如MQTT或HTTPS)可以提供加密和其他安全措施,确保数据在传输到云端时的安全性。 Modbus与云计算的集成: 数据存储和分析:通过Modbus连接的设备生成的大量数据可以上传到云端进行长期存储、分析和处理,利用云计算的强大能力从中提取有价值的洞察。 远程监控和管理:工程师和运营人员可以通过云平台实时监控和管理Modbus设备,无论他们身处何地。 设备固件更新:云平台可以为连接的Modbus设备提供固件和软件的远程更新服务。 集成其他服务:Modbus数据可以与云端的其他应用和服务(如ERP、CRM或其他IoT应用)集成,实现数据的跨平台利用。 高级安全功能:云服务提供了多种高级的安全功能,如数据加密、身份验证和访问控制,以确保Modbus数据的安全性。 结论: 将Modbus与边缘计算和云计算相结合可以实现数据的高效利用、系统的灵活性增强和运营成本的降低。而且,这种集成提供了一个桥梁,使得传统的工业自动化系统能够无缝地迁移到现代的IoT架构中,从而释放更大的价值。 --- ### 175. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化和控制系统中,Modbus通信协议一直扮演着重要的角色。Modbus是一种通信协议,用于在不同设备之间传输数据,以实现监控、控制和数据采集等功能。然而,Modbus通信可以采用两种主要方式:Modbus TCP和Modbus RTU。选择合适的通信方式对于确保系统的可靠性、性能和安全性至关重要。本文将深入探讨Modbus TCP和Modbus RTU,以帮助您了解何时选择哪种通信方式。 Modbus TCP和Modbus RTU简介 首先,让我们简要了解Modbus TCP和Modbus RTU的基本原理。 Modbus TCP Modbus TCP是一种基于TCP/IP协议的Modbus变体。它通过以太网连接传输数据,通常用于局域网(LAN)或广域网(WAN)中。Modbus TCP使用标准的Modbus寻址方法,但数据包被封装为TCP数据包,这意味着它可以通过标准的以太网硬件进行传输。 Modbus RTU Modbus RTU是一种串行通信协议,通常通过RS-232或RS-485等串行接口传输数据。它使用二进制编码来表示数据,通信速度较快。Modbus RTU通常用于长距离通信,因为串行通信可以覆盖更长的距离而不会降低性能。 选择通信方式的因素 现在,让我们详细讨论选择Modbus TCP还是Modbus RTU的关键因素。 1. 网络基础设施 Modbus TCP需要以太网基础设施,因此它更适合于现代工业控制系统中已经存在以太网网络的情况。如果您的设备已经连接到以太网,那么使用Modbus TCP通信可能更加方便。 Modbus RTU则不需要以太网,它可以通过串行通信在更具挑战性的环境中工作,例如远程监控站点或长距离通信。 2. 通信速度 Modbus TCP通常具有更高的通信速度,适用于需要快速响应的应用程序。如果您的系统需要实时数据传输或低延迟,Modbus TCP可能是更好的选择。 Modbus RTU虽然也可以提供高速通信,但它通常在较低的通信速度下工作,特别是在长距离通信时。因此,如果速度对您的应用至关重要,您可能需要考虑Modbus TCP。 3. 通信距离 通信距离是选择Modbus通信方式的重要考虑因素。Modbus TCP适用于相对较短的通信距离,通常在局域网中使用。而Modbus RTU适用于覆盖更长距离的通信,例如连接远程设备或控制站点。 4. 设备支持 在选择通信方式时,您还应考虑设备的支持情况。某些设备可能仅支持一种Modbus通信方式。因此,您需要确保您的设备与您选择的通信方式兼容。 5. 安全性 Modbus TCP通常通过标准以太网安全性措施进行保护,例如防火墙和虚拟专用网络(VPN)。与之相比,Modbus RTU更加封闭,因为它通常用于物理隔离的环境。因此,如果您的应用程序对安全性有严格要求,Modbus TCP可能更合适,因为它具有更强的安全性功能。 结论 选择Modbus TCP还是Modbus RTU取决于多种因素,包括网络基础设施、通信速度、通信距离、设备支持和安全性。在决定之前,建议您仔细考虑您的特定应用程序需求,并与设备制造商或专业工程师进行咨询。无论您选择哪种通信方式,都应确保它满足您的工业自动化和控制系统的性能和可靠性要求。 Modbus TCP和Modbus RTU都是强大的通信方式,可以根据不同的应用场景提供灵活的解决方案 --- ### 176. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,在环境监测领域有着非常广泛的应用。通过RS-485布线不仅能够在一对双绞线上进行多点双向通信,其所具有的噪声抑制能力、数据传输速率、电缆长度及可靠性也是其他标准无法比拟的。当需要在噪声环境和有一定距离的情况下进行通讯时,RS-485布线是一个很好的选择。 RS485总线因其成本低廉、设计简单而得到广泛应用,广泛应用于安防监控、智能交通、智能楼宇、机房监控、工业自动化等各个领域。 RS485总线铺设线路比较简单,但是有一些相应的事项是必须要注意的,否则很容易导致通讯失败,后期的维护工作量很大。小编整理的485接线规范中需要注意以下几点: RS485接线注意事项: 电线问题 用于485总线布线的线材必须使用屏蔽双绞线,线径最好0.75或1.0线径,很多人在施工中为了图方便,直接使用网线为485线,网线有8根线,485线只需要用两根或四根线,其他线都浪费了,而且现在的网线线径比较细,不能完全满足485路公交车。出于通讯需求,建议不要使用网线。 也有平行线、同轴电缆或双绞线没有屏蔽不能使用。由于485是差分平衡传输,使用双绞线可以有效抵消外界干扰的影响。不得使用 485 行。平行线,同理,因为屏蔽层有屏蔽外界干扰的作用,最好使用带屏蔽层的双绞线。 接线问题 485总线的接线要尽量远离干扰源。施工过程中,很多人为了省事,把485线和电源线一起布线。这是不合理的。电源线会造成干扰,造成485通讯。不稳定,485接线必须远离变压器、变频器等强电压干扰源。 总线拓扑问题 由于现场环境复杂,485设备分布普遍分散。为方便施工人员,线路没有按照485规范采用手拉手菊花链总线拓扑布局,而是任意采用星形、树形甚至多种拓扑混合布局,留下太多的分支太长。 在实际应用中,有时可以使用简单的星形、树形拓扑甚至混合拓扑,但通信肯定会不稳定。如果必须部署星型或树型拓扑,建议使用485集线器和485中继器,相关应用可以参考485总线拓扑问题页面。 接地问题 485总线接线规范中强调需要单点可靠接地,但在实际施工中,485总线接地有时会适得其反。由于485布线需要采用菊花链的方式连接,所以使用的屏蔽双绞线肯定会被切断连接到485设备上,而且大部分都会使用外层屏蔽层作为地线。如果屏蔽层连接不好,接地可能会导致485信号不稳定,所以485线的接地必须是单点可靠接地。 严格的几种RS485接线规范: 485+ 和 485- 数据线必须是双绞线。 接线必须是多股屏蔽双绞线。多股是备用,屏蔽是特殊情况调试用,双绞线是因为485通讯采用差模通讯原理,双绞线的抗干扰性最好。不使用双绞线是非常错误的。 485总线必须是手拉手总线结构,坚决杜绝星形连接和分叉连接。 设备的交流电源和机箱必须接地并良好接地。 有很多地方看起来三角插座根本没有接地,所以要小心。接地良好的情况下,可以保证设备在受到雷击浪涌和静电积累时能够更好地释放能量。保护485总线设备及相关芯片免受伤害。 避免与强电一起走,以免干扰。 推荐几种RS485总线调试方法: 首先要做的是确保设备接线正确且严格符合规格。 共地方式: 将所有485设备的GND接地用一根线或屏蔽线连接,避免所有设备之间的电位差影响通讯。 终端电阻法:在最后一个485设备的485+和485-并联一个120欧的终端电阻,提高通讯质量。 中段休息: 通过中间断开,检查设备是否过载,通讯距离是否过长。某台设备损坏影响整个通讯线路等原因。 单拉法: 简单地临时拉一根线到设备上,这样就可以排除通讯故障是否是接线引起的。 转换器更换: 随身携带多个转换器,以排除转换器质量是否影响通讯质量。 笔记本电脑调试方法: 首先确保随身携带的笔记本电脑是通讯正常的设备,更换客户端电脑进行通讯。如果有可能,说明客户电脑的串口可能损坏或受伤。 经常问的问题: 我们可以在与电源线相邻或在同一导管中运行 RS485 电缆吗?不可以,电源线上存在的高压和电流可能会产生干扰,如果电源线上存在绝缘故障、电弧等,可能会对低压 RS485 网线产生危险电压。 我可以使用 Cat 5e-UTP 代替屏蔽电缆吗?不可以。Cat 5e-UTP(非屏蔽双绞线)在要求不高的应用中可以在较短的距离内工作,并具有低 EMI 噪声水平。由于通常用于 Cat 5 电缆的小型 实心线很容易折断并使系统不受监控。 --- ### 177. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是DTU? DTU中文名为数据终端设备,英文名(Data Terminal Unit),DTU就是一种专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备,广泛应用于气象、水文水利、地质等行业。 DTU最早是调制器和解调器一词的合并而成,其传输形式是以编码数字信息进行传输。当时的传输是依靠标准的电话线的频率范围内,进行传输的,通过电话信道传输到另一台DTU上,并在接收的那一台DTU上进行解码。 随着无线蜂窝网络的出现,后来DTU发展成为了无线的,通过GPRS网络传输,因此被成为GPRS DTU。在1990年左右,我国国内就有厂家在进行研发和制作。 随着科技的不断发展、后续又有了3G、4G、NB-IOT网络,随意也出现了4G DTU、和NB-IOT DTU。后续又因为LoRa、WiFi、蓝牙等短距离通信技术的成熟,也出现了LoRa DTU、WiFi DTU、蓝牙模块等。 DTU的作用是什么? DTU作用主要用于数据无线传输。面且是通过远距离的无线数据传输,传输对像都是设备和数据中心或是设备。 DTU的工作原理 DTU通过接口连接终端设备来获取数据,然后通过运营商网络(2G/3G/4G)进行无线传输,传输到指定的数据中心或是设备。同时反向数据中心也可以下发数据或是指令通过运营商网络传输到DTU,再由DTU通过接口发送到终端设备。 DTU的产品类型 按通信方式分类,DTU一般采用的通信方式有GPRS/4G/NB-IoT/LoRa/WiFi等等,客户可根据自己的应用场景选择最佳的通信方式;按接口类型分类,DTU一般支持RS485、RS232、I/O等接口,客户可根据自己前端采集设备的接口选择合适的接口类型。另外,还有一种嵌入式DTU,它功能上和通用DTU差不别不大,主要区别在于没有外壳,是一块可嵌入的主板,客户可对接集成到自己的前端采集设备中。 扩展功能 较为专业的GPRS DTU还提供一些扩展功能,主要包括:支持数据中心域名解析、支持远程参数配置、远程固件升级、支持远程短信/电话唤醒、支持本地串口固件升级、提供短信通道、提供DTU在线、离线电平指示等。更高级的DTU,也可给用户提供二次开发的功能;例如;通信插件、DLL、接口文档,以便用户根据自己的实际情况对DTU进行改造,完善DTU产品,使其更加的切合自身需求。 DTU的应用场景 DTU已经广泛应用于电力、水利、环保、气象、交通、物流、工业等领域,它为各行业以及各行业之间的信息、产业融合提供了帮助,也逐步发展为物联网应用的核心技术。 一. 电力行业: 1.电力远程抄表, 2.变电站监测, 3.电力线路监测 , 4.配电网络柱上开关监测系统图1DTU在电力远程抄表中应用拓扑图: 二. 水利行业: 1.水质监测, 2.水库闸门远程控制系统方案, 3.水利GPRS调度系统应用方案4.水管网监 测系统, 5.水库自动监测系统 三. 石油行业: 1油气井的远程监控, 2.GPRS远程油田自动化监测监控系统, 3.燃气管网监控系统方案 四. 市政行业 : 1.路灯远程监控管理 2.管网远程监测 3.城市能耗监测 五. 环保行业 : 1.污染源监测 2.大气环境监测 3.噪音监测 4.粉尘监测 六. 农业应用: 1.大棚远程监测管理 2.水产养殖监测管理农 3.农业水泵监测管理 七. 其它行业: 1.仓库监控管理. 2.电梯远程监控 3.远程起重机管理系统4.工业能耗监测方面的应用 5.加油站GPRS数据采集系统 6.GPRS气象信息采集系统 --- ### 178. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业生产控制过程中,特别是在连续型的生产过程中,经常会要求对一些物理量如常见的:电压、电流、压力、速度、流量等进行采集控制时,这些物理量它们都是随时间而连续变化的。在控制领域把这些随时间连续变化的物理量叫模拟量。 我们在使用模拟量的时候,首先要了解几种设备: 传感器、变送器、A/D转换器、D/A转换器等。 传感器 它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。 常用的有温度传感器、压力传感器、湿度传感器等。 变送器 变送器是把传感器的输出信号转变为可被控制器识别的信号(或将传感器输入的非电量转换成电信号同时放大以便供远方测量和控制的信号源)的转换器。传感器和变送器一同构成自动控制的监测信号源。 A/D转换器 将模拟信号转换成数字信号的电路,称为模数转换器(简称a/d转换器),A/D转换的作用是将时间连续、幅值也连续的模拟量转换为时间离散、幅值也离散的数字信号,因此,A/D转换一般要经过取样、保持、量化及编码4个过程。在实际电路中,这些过程有的是合并进行的,例如,取样和保持,量化和编码往往都是在转换过程中同时实现的。 D/A转换器 D/A转换器,又称数模转换器,简称DAC。一种将二进制数字量形式的离散信号转换成以标准量(或参考量)为基准的模拟量的转换器,作用是把数字量转变成模拟的器件。 模拟量输入(AI) (即4-20mA或0-10V的电流或电压信号,输入到DCS中,经过变换,还原出原来的值) 模拟量输出(AO) (AO是DCS输出4-20mA或0-10V信号,去控制设备的运行参数) 常见的模拟量输入/输出信号: 4-20mA、0-10mA、1-5V、0-5V、0-10V 其实就是是电压、电流变化。 常用的电压范围:0~10V,-10~+10V,0~5V,-5V~+5V,其中最常用的是0~10V的电压信号。 常用的电流范围:0~20mA,4~20mA,-20mA~+20mA,其中最常用的是4~20mA的电流信号。 应用领域 模拟量有许多的应用领域,比如楼宇自动化、环境监测、工厂自动化和智能交通等; 环境监测:二氧化碳浓度监测、氧气浓度监测、烟雾浓度监测、水质监测等。 为什么都把模拟量信号转换成4-20mA的电流信号,而不是0-20mA的电流信号或0-10V的电压信号? (1)0-10V的电压信号容易受到外界的电磁干扰,特别是电缆长度很长时干扰更明显。 (2)用0-20mA的电流信号的话,就无法判断在电流信号是0mA时,到底是电缆断线引起的故障0mA,还是压力本身就是0kpa而输出的正常的0mA。 --- ### 179. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是一个串行通信协议,首次出现于1979年,是连接行业设备实际使用的标准协议。MQTT早在20年前便已出现,但是将这两个协议结合在一起使用,能够为深度嵌入式设备提供物联网的规模和连接性。 下图展示了这些协议之间的一般关系: 物联网网关作为物联网通信的支持解决方案,现在让我们来看一下Modbus和MQTT,以了解其区别以及如何在物联网中互相补充。   Modbus 自1979年首次出现至今,Modbus已经演变为一套全面的支持多种物理链接的协议集(如RS485)。Modbus的核心是一个串行通信协议,采用主从模式。主机向从机发送请求,从机予以回复。在标准Modbus网络中,有一台主机以及最多247台从机(但是,如果采用2字节寻址,则可显著提高这一界限)。 借助RS485,主从机之间的通信发生在指示功能码的帧中。该功能码可识别要操作的功能,如读取独立输入;读取先进先出队列;或执行诊断函数。然后,从机根据收到的功能码进行响应,该响应较为简单,由一组字节指示。因此,从机可以是智能设备,也可以是只有一个传感器的简单设备。 从该描述中,您可以看到Modbus协议非常简单,但是其作为协议的开放性使其成为整个行业或SCADA系统的实际通信协议。 消息队列遥测传输 MQTT是一个开放的轻量级机器对机器协议,专为物联网交互设计。MQTT网络包含一个MQTT经纪人(broker),负责协调MQTT代理之间的交互。代理是发布器,负责发布供用户使用的信息(参见下图)。 消息队列遥测传输网络中的作用因素   MQTT的要求非常少,因为它专为资源有限的嵌入式设备设计。除了占地空间少之外,MQTT还可提供出色的通信高效性(即使通过低带宽网络进行通信)和非常少的开销(较之HTTP等协议)。即使是在3G网络中,MQTT的吞吐量速度是使用HTTP的表述性状态转移(REST)的93倍,5G/4G下的提升将会更大。 MQTT可使用最少的方法指示要在特定主题上实施的操作,进而实施发布/订阅模式。代理先连接到经纪人,然后再发布或订阅主题。完成后,代理将从经纪人上断开连接。MQTT方法定义: 连接-建立与MQTT经纪人之间的连接。 断开连接-断开与MQTT经纪人之间的连接。 发布-在MQTT经纪人上发布主题。 订阅-从MQTT经纪人上订阅主题。 退订-从MQTT经纪人上退订主题。 又如下图所示,下图展示了发布者与订阅者使用MQTT经纪人进行的简单交互。如图所示,信息创建者(producer)连接至MQTT经纪人。同样,信息消费者(consumer)连接至MQTT经纪人。消费者订阅主题(此处定义为/home/alarms/1/status)。本示例主题可识别主页上针对区域1的警报系统的状态变化。当创建者有信息要分享时,它会向经纪人发布一条消息,然后经纪人将会将信息分享给所有订阅该主题的用户。 消息队列遥测传输代理之间的简单交互   请注意此处分享的主题结构。它与文件系统层次结构相似,这可简化主题的结构。这种资源层次形式也常见于协议架构中,如REST。 MQTT甚至允许使用通配符的形式,以简化订阅流程。如果用户想要获取所有警报的状态,则可直接订阅/home/alarms/+/status,该主题可通知用户所有的警报状态变化。整个子树还可使用主题/home/#进行订阅,该主题可以订阅/home下的所有事件。 服务质量 MQTT允许定义服务质量(QoS)。MQTT中有三个等级的QoS: 1、QoS0。该等级表示“最多一次”交付(最佳状况)。消息不会得到确认,因而,这是一种一劳永与的方法。 2、QoS1。该等级表示“至少一次”交付。用户可能不止一次获得消息,但是允许收到的人确认已经收到。 3、QoS2。最慢但是最有保障的服务质量等级即为等级2。QoS2表示“只有一次”,并包含四个阶段的交付握手。该等级最慢,但是最安全。 您选择的QoS等级将取决于数据及其交付的重要性。 --- ═══════════════════════════════════════════ ## Modbus编程开发 ═══════════════════════════════════════════ ### 180. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Java 生态中的 Modbus 库 Java 在工业自动化服务器端开发中有着广泛的应用(SCADA 后端、MES 数据采集、工业数据处理服务等)。modbus.org 推荐了两个 Java Modbus 库——Jamod(已覆盖)和 Modbus4J(已覆盖),此外还有 JLibModbus 和 ModbusPal 等。本文重点介绍尚未覆盖的 JLibModbus 以及各 Java 库之间的选择建议。 JLibModbus —— 活跃开发的 Java Modbus 协议栈 JLibModbus 是一个纯 Java 实现的 Modbus 协议库,托管在 SourceForge:sourceforge.net/projects/jlibmodbus。与 Jamod 相比,JLibModbus 仍在持续更新和测试,是一个"actively tested and improved"的项目。 功能特性 支持 Modbus RTU 和 Modbus TCP 串口通信用 jSSC(Java Simple Serial Connector)或 RXTX 库实现 支持常用功能码(FC01-FC06、FC15、FC16、FC23) Master 和 Slave 两种模式 纯 Java 实现,无本地库依赖(串口库除外) Maven 依赖 <!-- JLibModbus 的 Maven 集成示例 --> <dependency> <groupId>com.intelligt.modbus</groupId> <artifactId>jlibmodbus</artifactId> <version>1.2.9.7</version> </dependency> TCP 客户端示例 import com.intelligt.modbus.jlibmodbus.Modbus; import com.intelligt.modbus.jlibmodbus.ModbusMaster; import com.intelligt.modbus.jlibmodbus.ModbusMasterFactory; import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters; public class ModbusReader { public static void main(String[] args) throws Exception { // 配置 TCP 参数 TcpParameters tcpParams = new TcpParameters(); tcpParams.setHost("192.168.1.100"); tcpParams.setPort(502); // 创建 TCP 主站 ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParams); master.connect(); // 读取保持寄存器(从站 1,地址 0,10 个寄存器) int[] registers = master.readHoldingRegisters(1, 0, 10); System.out.println("读取结果:"); for (int i = 0; i < registers.length; i++) { System.out.printf(" 地址 %d: %d (0x%04X)%n", i, registers[i], registers[i]); } // 写入单寄存器 master.writeSingleRegister(1, 0, 1234); master.disconnect(); } } Java Modbus 库对比 库名项目状态传输模式许可证推荐场景 Jamod停更(SourceForge)TCP, RTU, ASCIIBSD-ish学习用途,不建议新项目 Modbus4J停更(SourceForge)TCP, UDP, RTU, ASCIIGPL需要全协议支持时 JLibModbus活跃(SourceForge)TCP, RTUApache 2.0新项目首选 ModbusPal停更TCP, RTUGPL从站模拟场景 进阶场景:用 Java 构建 Modbus 数据采集服务 在大型工业项目中,通常需要一个后台服务持续轮询数十个 Modbus 从站设备,将数据存入数据库并供上层应用查询。以下是一个基于 JLibModbus 的简化数据采集服务框架: public class ModbusDataCollector { // 设备配置列表 static class DeviceConfig { String name; String ip; int slaveId; int[][] registerRanges; // {start, count} } public void startCollecting(List<DeviceConfig> devices) { ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(devices.size()); for (DeviceConfig dev : devices) { scheduler.scheduleAtFixedRate(() -> { try { collectDeviceData(dev); } catch (Exception e) { System.err.println("采集失败: " + dev.name + " - " + e.getMessage()); } }, 0, 5, TimeUnit.SECONDS); // 每 5 秒采集一次 } } private void collectDeviceData(DeviceConfig dev) throws Exception { TcpParameters params = new TcpParameters(); params.setHost(dev.ip); params.setPort(502); ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(params); master.connect(); for (int[] range : dev.registerRanges) { int[] data = master.readHoldingRegisters(dev.slaveId, range[0], range[1]); saveToDatabase(dev.name, range[0], data); } master.disconnect(); } private void saveToDatabase(String device, int startAddr, int[] data) { // 写入时序数据库(如 InfluxDB、TDengine)或关系数据库 } } 总结 在 Java 生态中,JLibModbus 是当前最值得推荐的开源 Modbus 库——Apache 2.0 许可证(友好于商业项目)、仍在活跃开发和测试、API 设计清晰。如果你正在 Java 技术栈上开发 Modbus 相关的数据采集、设备管理或 SCADA 后端服务,JLibModbus 是首选的底层协议通信库。 --- ### 181. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modicon SA85 / PCI-85 简介 Modicon SA85 是施耐德电气(Schneider Electric)旗下 Modicon 品牌生产的两款工业通信接口卡:ISA 总线的 SA85 和 PCI 总线的 PCI-85。这些卡用于在 PC 上实现 Modbus Plus(MB+)网络通信,是 1990 年代至 2000 年代工业自动化系统中连接 Schneider PLC(如 Quantum、Momentum 系列)到上位机 PC 的常用硬件方案。 modbus.org 推荐的开源 Linux 驱动项目托管在 SourceForge:sourceforge.net/projects/modp-driver。许可证为 BSD 协议,包含完整的驱动源码和使用示例。 驱动支持的硬件和内核版本 支持硬件:Modicon ISA SA85 和 PCI-85 两种接口卡 Linux 内核版本:2.2.19 及以上、2.4.7 及以上 许可证:BSD License 包含内容:驱动程序源码 + 示例客户端程序 编译与安装驱动 驱动源码需要在目标 Linux 系统上编译。以下步骤使用老版本内核(2.4.x)的命令,现代内核(5.x/6.x)需要适配: # 下载源码 git clone https://git.code.sf.net/p/modp-driver/code modp-driver cd modp-driver # 编译(需要内核头文件) make # 加载驱动模块 insmod sa85.o # 或对于 PCI 版本 insmod pci85.o # 检查驱动是否加载成功 dmesg | tail -20 lsmod | grep -E 'sa85|pci85' # 查看设备节点 ls -la /dev/sa85* /dev/pci85* 关于 Modbus Plus 协议 Modbus Plus(MB+)是施耐德电气在 Modbus 基础上发展的一种专有令牌传递网络,运行速率 1 Mbps,采用双绞线物理层。与标准的 Modbus RTU/TCP 不同,Modbus Plus 使用点对点(Peer-to-Peer)令牌传递方式,网络上没有主从之分——每个节点在获得令牌时都可以主动发送数据。 ⚠️ 当前状态:Modbus Plus 已被施耐德官方列入逐步淘汰(phase-out)的协议。新的 Schneider PLC 产品线(如 M580、M340)已全面转向 Modbus TCP 和 Ethernet/IP 等基于以太网的通信方式。除非你在维护仍在运行的旧 Modicon Quantum 系统,否则不需要关注 Modbus Plus 和 SA85 驱动。 现代化的替代方案 如果你正在搭建新的工业控制系统,不应该再使用 Modbus Plus 和 SA85 卡。现代化的替代方案包括: 旧方案新方案优势 Modbus Plus (MB+)Modbus TCP标准以太网,无需专用硬件,速率更高(100M/1G) SA85 ISA 卡标准网卡成本低,随处可得 Modicon Quantum + MB+M580 ePAC + Modbus TCP原生以太网,支持环网冗余(RSTP/HSR) 专用驱动开发Socket 编程跨平台,无需内核模块 总结 SA85 Linux 驱动是一个具有历史意义的开源项目,它展示了 Linux 内核驱动在工业通信领域的早期应用。该驱动在 2000 年代初的工业控制系统中扮演过重要角色,帮助用户在 Linux 环境下连接 Modicon PLC。如今,随着 Modbus TCP 和工业以太网的全面普及,新项目不再需要使用 Modbus Plus 网络和 SA85 硬件。但对于仍在维护老旧 Modicon 系统的工程师来说,理解这个驱动的工作原理仍然有实用价值。 --- ### 182. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MatrikonOPC 与 Modbus MatrikonOPC 是全球领先的 OPC(OLE for Process Control)软件供应商,总部位于加拿大埃德蒙顿。公司提供超过 500 种 OPC 服务器,覆盖几乎所有主流工业协议。其中,MatrikonOPC Modbus Server 是最受欢迎的 OPC 服务器之一,为 Modbus 设备与 OPC 客户端(如 SCADA、HMI、Historian 等)之间提供了标准化的数据桥梁。 官网:www.matrikonopc.com | 中文官网:www.matrikonopc.cn 什么是 OPC?为什么需要 OPC 服务器? OPC(OLE for Process Control,现改称 Open Platform Communications)是一个工业通信标准,由 OPC 基金会维护。它的核心目标是解决工业自动化中的"协议碎片化"问题——不同厂商的 PLC、仪表使用不同的通信协议,上层软件(SCADA、MES、数据库)需要为每种协议编写驱动程序。 OPC 的架构模型: OPC Server:负责与现场设备通信(如通过 Modbus 协议读取 PLC 数据),将数据转换为标准的 OPC 格式 OPC Client:上层应用(SCADA、HMI、Historian),通过统一的 OPC 接口获取数据,无需关心底层设备使用什么协议 MatrikonOPC Modbus Server 的角色就是:Modbus 设备 ↔ OPC Server ↔ OPC Client(SCADA/数据库/网页)。 MatrikonOPC Modbus Server 功能特性 多协议并发:可同时使用 Modbus TCP、Modbus RTU、Modbus ASCII 连接多个不同类型的 Modbus 设备 吞吐量优化:智能批量读写,减少通信次数,最大化吞吐量 自动发现:支持扫描 Modbus 设备的可用数据点 OPC DA 和 OPC UA 双支持:同时兼容经典 OPC(基于 DCOM)和现代 OPC UA(基于 Web Service) 安全性:支持 OPC UA 的证书认证、加密通信、用户审计 30 天免费试用:全功能试用版,无限制 安装和基本配置 Windows 安装步骤 从 官网下载页面 下载 MatrikonOPC Server for Modbus 以管理员身份运行安装程序 安装完成后,在开始菜单中找到 "MatrikonOPC Server for Modbus Configuration" 添加 Modbus TCP 设备 1. 打开配置工具,右键 "Device" → "Add Device" 2. 选择通信方式:TCP/IP 3. 填写设备信息: - Device Name: 配电柜1号 - IP Address: 192.168.1.100 - Port: 502 - Slave ID: 1 4. 配置寄存器组: - Type: Holding Register (4xxxx) - Start Address: 1 (对应 PLC 地址 40001) - Length: 20 5. 设置轮询间隔(如 1000ms) 6. 点击 "Apply" 保存配置 使用 OPC Client 测试连接 MatrikonOPC 自带了一个 OPC 客户端工具 "MatrikonOPC Explorer",可以用来测试 Modbus Server 是否正常工作: 打开 MatrikonOPC Explorer 点击 "Server" → "Add/Connect" 在弹出的列表中选择 "Matrikon.OPC.Modbus" 展开服务器树,找到之前配置的设备和数据点 将数据点拖到监控窗口,即可看到实时数据值 OPC Classic vs OPC UA MatrikonOPC 同时支持两种 OPC 标准,选择哪个取决于你的系统架构: 特性OPC Classic (DA)OPC UA 通信基础Microsoft DCOMTCP/HTTP(S) Web Service 跨平台仅 WindowsWindows/Linux/macOS/嵌入式 安全性依赖 Windows 安全机制内置证书认证、加密、签名 防火墙友好差(DCOM 需大量端口)好(单端口 4840) 云端支持困难天然支持 对于新建的工业 4.0 或 IIoT 项目,强烈建议使用 OPC UA。它不仅解决了 DCOM 的各种历史遗留问题(跨域认证、防火墙配置、32/64 位兼容),还自带信息模型(Address Space)、订阅机制和历史数据访问。 MatrikonOPC 的优势与局限 优势 广泛兼容:500+ OPC 服务器,覆盖几乎所有工业协议 OPC 认证:产品通过 OPC 基金会官方认证,互操作性有保障 技术支持:全球技术支持团队(含中文支持) Data Broker:支持 OPC UA 数据聚合,统一管理多个 OPC UA 服务器 局限 商业软件:需要购买许可证,对于小型项目成本较高 免费替代:开源方案如 open62541(C 语言 OPC UA 库)或 node-opcua(Node.js)功能相近且免费 仅 Windows:OPC Classic Server 仅支持 Windows(OPC UA 产品线有 Linux 版本) 开源替代方案 如果需要免费的 OPC UA 解决方案,可以考虑以下开源项目: 项目语言许可证特点 open62541CMPL v2轻量,嵌入式友好,支持 MicroPython 绑定 node-opcuaTypeScript/JSMITNode.js 生态,npm 一键安装 python-opcuaPythonLGPL纯 Python 实现,跨平台 UA-.NETStandardC#RCLOPC 基金会官方参考实现 总结 MatrikonOPC Modbus Server 是工业自动化领域中连接 Modbus 设备与上层软件最成熟的商业解决方案之一。它的核心价值在于:将异构的 Modbus 设备数据统一转换为标准的 OPC 接口,让 SCADA、MES、数据库和云端应用能以统一的方式读取和写入。对于大型工业项目,尤其是需要同时连接多种品牌 PLC 和仪表的场景,MatrikonOPC 能显著降低软件开发复杂度和维护成本。对于预算有限的小型项目,也有免费的 OPC UA 开源替代方案可供选择。 --- ### 183. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 .NET 平台的 Modbus 开发生态 在 Windows 工业自动化软件开发中,.NET(C#/VB.NET)是最主流的开发平台之一。modbus.org 推荐了多个 .NET 平台的 Modbus 库,涵盖了从开源免费到商业支持的不同选择。本文将逐一介绍这些库的特点和使用方法。 NModbus —— 最流行的 C# Modbus 库 NModbus 是 .NET 平台上最成熟、使用最广泛的 Modbus 开源库。最早托管在 Google Code,现已迁移至 GitHub:github.com/NModbus/NModbus。NuGet 包名:NModbus。 功能特性 支持 Modbus RTU(串口)、Modbus ASCII、Modbus TCP 和 Modbus UDP 四种传输模式 完整支持所有常用功能码(FC01-FC06, FC15, FC16) 通过 NuGet 包管理器一键安装 支持 .NET Framework 和 .NET Core / .NET 5+ 开源许可证:MIT(可商用) 安装 # NuGet 命令行安装 dotnet add package NModbus # 或通过 Visual Studio 的 NuGet 包管理器搜索 "NModbus" Modbus TCP 读写示例 using System; using System.Net.Sockets; using NModbus; // 创建 TCP 客户端 using var client = new TcpClient("192.168.1.100", 502); var factory = new ModbusFactory(); var master = factory.CreateMaster(client); // 读取从站 1 的保持寄存器 0-9 ushort[] registers = master.ReadHoldingRegisters(1, 0, 10); Console.WriteLine("读取结果:"); for (int i = 0; i < registers.Length; i++) Console.WriteLine($" 地址 {i}: {registers[i]}"); // 写入单个寄存器 master.WriteSingleRegister(1, 0, 1234); // 批量写入多个寄存器 ushort[] writeData = { 100, 200, 300 }; master.WriteMultipleRegisters(1, 10, writeData); Modbus RTU 串口通信 using System.IO.Ports; using NModbus; using var port = new SerialPort("COM3") { BaudRate = 9600, DataBits = 8, Parity = Parity.None, StopBits = StopBits.One }; port.Open(); var factory = new ModbusFactory(); var master = factory.CreateRtuMaster(port); ushort[] data = master.ReadHoldingRegisters(1, 0, 5); foreach (var val in data) Console.WriteLine(val); Free .NET Modbus(free-dotnet-modbus) Free .NET Modbus 是另一个开源的 .NET Modbus 库,托管在 Google Code Archive。与 NModbus 类似,它也支持 Modbus ASCII、RTU、TCP 和 UDP。如果你使用的是旧版 .NET Framework(2.0/3.5),这个库可能有更好的兼容性。但对于新项目,推荐使用活跃维护的 NModbus。 ASComm.NET —— 商业级 .NET Modbus 驱动 ASComm.NET 是 Automated Solutions 公司的商业 .NET 组件,官网:automatedsolutions.com。它是完全托管的 .NET 库,不仅支持 Modbus TCP/RTU/ASCII,还支持 Allen-Bradley Logix、PLC5、SLC500、MicroLogix 和 GE SRTP 等多种工业协议。 核心特性 可视化设计:既可以通过代码配置,也可以通过 Visual Studio 的属性窗口可视化配置 后台扫描:以指定速率自动扫描数据点,检测到数据变化时触发事件 序列化支持:配置可序列化为 XML/JSON 格式 30 天免费试用:无功能限制,完整版可充分测试 多协议:一个组件支持 Modbus + Allen-Bradley + GE 等 ASComm.NET 代码示例 using ASComm.NET; // 创建 Modbus TCP 通信组件 var comm = new ModbusTcpComm(); comm.RemoteAddress = "192.168.1.100"; comm.RemotePort = 502; // 添加要扫描的数据组 var group = new ModbusScanGroup(); group.SlaveId = 1; group.StartAddress = 0; group.Length = 10; group.ScanRate = 1000; // 每秒扫描一次 // 数据变化事件 group.DataChanged += (s, e) => { Console.WriteLine($"地址 {e.Address} 变为 {e.Value}"); }; comm.ScanGroups.Add(group); comm.Connect(); Delphi ModbusTCP 组件 对于 Delphi/Lazarus 开发者,有一个开源的 Modbus TCP 组件集,托管在 SourceForge:sourceforge.net/projects/delphimodbus。它基于 Indy(Internet Direct)网络组件库,支持 Indy 9 和 Indy 10 两个版本。 ⚠️ 注意:这个项目活跃度较低,最近的 Delphi 版本(10.4 Sydney / 11 Alexandria)可能需要调整才能直接使用。如果需要在新版 Delphi 上开发 Modbus 功能,也可以考虑通过 COM 互操作调用 MBServer ActiveX、或者用 Delphi 调用 C 语言版的 libmodbus 动态库(DLL)。 ModLink —— Delphi VCL 原生组件 ModLink 是一套用于 Borland Delphi 的原生 VCL 组件,由 Ivo Bauer 开发,官网 www.ozm.cz/ivobauer/modlink。它是一组可直接拖放到 Delphi 窗体上的可视化组件,让 Delphi 开发者无需手写 Socket 通信代码即可集成 Modbus 通信能力。 ModLink 支持多种网络类型,包括: Modbus TCP(通过 TModLinkTCP 组件) Modbus RTU 串口(通过 TModLinkRTU 组件) Modbus ASCII 串口 Modbus Plus 网络 ⚠️ ModLink 是 Delphi 时代的产物,项目已多年未更新。如果你在维护旧的 Delphi 工控项目,ModLink 仍然有价值;但新建项目建议使用 NModbus(.NET)或 pymodbus(Python)等更现代的方案。 如何选择 .NET/Delphi Modbus 库 场景推荐理由 C# 新项目NModbus(NuGet)MIT 许可,活跃维护,API 简洁 .NET 商业项目ASComm.NET多协议支持,可视化配置,商业支持 旧 Delphi 项目ModLink 或 DelphiModbus原生 Delphi 组件,免去跨语言调用 Python 脚本pymodbus最活跃的 Python Modbus 库 总结 .NET 平台的 Modbus 开发生态是最丰富的。对于新项目,开源免费的 NModbus 是大多数场景的最佳选择——MIT 许可、NuGet 一键安装、支持所有主流传输模式。如果需要同时连接 Allen-Bradley 或 GE 设备,ASComm.NET 提供了统一的多协议方案。而 Delphi 开发者虽然选择较少,但 ModLink 和 DelphiModbus 两个组件覆盖了最基础的 Modbus TCP/RTU 通信需求。 --- ### 184. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Mango M2M 是什么? Mango M2M(现更名为 Mango Automation)是由 Serotonin Software(加拿大)开发的一款基于浏览器的人机交互(HMI)和数据采集与监视控制(SCADA)平台。它是 modbus.org 官方推荐页面中少数几个"完整平台级"项目之一,不同于单一的调试工具或协议库,Mango 提供了一整套从数据采集到可视化的完整解决方案。 Mango Automation 的开源模块托管在 GitHub:github.com/MangoAutomation/ma-modules-public。最新版本为 v4.5.x(2024 年 7 月更新)。 Mango M2M 核心功能 多协议支持:内置支持 Modbus TCP/RTU、BACnet、SNMP、HTTP、MQTT、OPC 等多种工业通信协议 Web 可视化:基于 Ajax 的浏览器界面,无需安装客户端软件,在任意浏览器中即可查看实时数据和历史趋势 数据日志:支持将采集数据存储到 SQL 数据库(MySQL、H2、Derby),便于历史数据分析和报表生成 告警管理:可配置阈值告警,通过邮件、短信等方式通知运维人员 自动化脚本:支持 JavaScript/Python 脚本,实现复杂的业务逻辑和自动化控制 用户与权限管理:支持多用户、多角色权限控制 安装 Mango Automation Linux 安装 # 下载 Mango Automation(Java 应用,需要 JRE 8+) wget https://github.com/MangoAutomation/ma-core-public/releases/latest # 解压并运行 unzip mango-*.zip cd mango ./bin/start.sh # 默认访问地址: http://localhost:8080/mango # 默认用户名/密码: admin/admin Windows 安装 下载 ZIP 包后解压,运行 binstart.bat 启动服务。Mango 也可以注册为 Windows 服务实现开机自启动。 配置 Modbus TCP 数据源 启动 Mango 后,通过浏览器进入管理界面。添加 Modbus TCP 数据源的步骤: 点击菜单 Data Sources → Add Data Source 选择协议类型为 Modbus TCP/IP 设置数据源名称(如"一号配电柜") 填写设备 IP 地址和端口(默认 502) 设置轮询周期(Polling Period),如 5 秒 设置超时时间和重试次数 保存配置 添加数据点(Data Points): 在创建好的数据源下点击 Add Data Point 设置数据点名称(如"A相电压") 选择寄存器类型(Holding Register / Input Register / Coil 等) 设置从站地址(Slave ID)和寄存器偏移地址 选择数据类型(Binary / Numeric / Alphanumeric) 如需单位转换,设置缩放因子和偏移量(如原始值 ×0.1 = 实际温度°C) 保存 创建仪表盘(Dashboard) Mango 的图形界面编辑器可以拖拽创建仪表盘: 点击菜单 Graphical Views → Add View 选择模板(如空模板) 进入拖拽编辑器,从左侧组件库中选择: Analog Gauge(模拟表盘):适合显示电压、电流、温度等模拟量 Digital Display(数字显示):简洁的数值展示 Line Chart(折线图):展示历史趋势曲线 Binary Indicator(开关指示):显示运行/停止、通/断等状态量 将数据点拖到对应组件上绑定,保存后即可在浏览器中实时查看设备数据。 配置告警规则 以温度过高告警为例: 点击菜单 Event Detectors → Add Event Detector 选择类型为 High Limit(上限告警) 设置上限值(如 80°C) 设置告警级别(Critical / Warning / Info) 在 Event Handlers 中配置通知方式: Email Handler:发送邮件通知 Set Point Handler:修改其他数据点(如关闭设备) Script Handler:执行自定义脚本 Mango vs 其他开源 SCADA 平台语言特点适用场景 Mango M2MJava浏览器原生,拖拽编辑器,Modbus 支持好中小型项目、快速原型 Rapid SCADAC#功能全面,Windows 平台中大型工厂监控 FUXANode.js现代化 UI,Docker 部署友好Web 原生监控面板 Grafana + Node-RED混合数据可视化+流程编排,灵活但需组合搭建定制化需求强的项目 ThingsBoardJavaIoT 平台,支持 MQTT/CoAP/Modbus物联网设备管理平台 总结 Mango M2M 在开源 SCADA/HMI 领域有着独特的定位——它不是库、不是命令行工具,而是一个可以直接部署使用的完整平台。从 Modbus 设备数据采集、实时仪表盘展示、历史数据存储到告警通知,Mango 提供了全链路的解决方案。对于需要快速搭建 Modbus 设备监控系统的团队来说,Mango 可以大幅缩短从设备接入到可视化交付的时间。如果你正在寻找一个开源的、支持 Modbus 协议的 SCADA 方案,Mango M2M 值得认真评估。 --- ### 185. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 PHP Modbus 库(phpmodbus) phpmodbus 是一个用 PHP 实现的 Modbus UDP/TCP 通信库,项目托管在 Google Code Archive:code.google.com/p/phpmodbus(已归档)。它实现了 Modbus UDP 协议的基本功能,支持 FC03(读保持寄存器)、FC16(写多寄存器)、FC23(读/写多寄存器)。 尽管 Modbus UDP 在工业现场远不如 Modbus TCP 常见,但 phpmodbus 在某些特殊的 Web 应用场景中有独特价值——比如在 PHP 编写的 SCADA 看板网站中直接读取 Modbus UDP 设备的数据、或者通过浏览器界面远程控制 Modbus 设备。 安装与基础使用 <?php // 引入 phpmodbus 库 require_once 'PhpModBus.php'; // 创建 Modbus UDP 主站实例 $modbus = new ModbusUdpMaster('192.168.1.100', 502); try { // FC03: 读取从站 1,起始地址 0,10 个保持寄存器 $data = $modbus->readMultipleRegisters(1, 0, 10); // 输出结果 echo "读取到的寄存器数据:n"; for ($i = 0; $i < count($data); $i++) { echo sprintf(" 地址 %d: %d (0x%04X)n", $i, $data[$i], $data[$i]); } } catch (Exception $e) { echo "Modbus 通信错误: " . $e->getMessage(); } ?> FC16 写多个保持寄存器 <?php $modbus = new ModbusUdpMaster('192.168.1.100', 502); // 要写入的数据 $values = [100, 200, 300, 400]; // FC16: 从站 1,起始地址 10,写入 4 个寄存器 $modbus->writeMultipleRegister(1, 10, $values); echo "写入成功n"; ?> FC23 组合读写 <?php $modbus = new ModbusUdpMaster('192.168.1.100', 502); // FC23: 读地址 0-9,同时写地址 10-13 $valuesToWrite = [99, 88, 77, 66]; $readData = $modbus->readWriteRegisters(1, 0, 10, 10, $valuesToWrite); echo "读取数据: "; print_r($readData); echo "写入数据: "; print_r($valuesToWrite); ?> Go Modbus 库(goburrow/modbus) go-modbus(全称 github.com/goburrow/modbus)是一个用 Go 语言编写的 Modbus 协议客户端库,GitHub 地址:github.com/goburrow/modbus。它被描述为"fault-tolerant, fail-fast"的实现——在设计上注重错误处理和快速失败,适合在可靠性和稳定性要求较高的工业边缘网关场景中使用。 ⚠️ 注意:根据 modbus.org 2024 年的最新描述,该库仍处于"incubating"阶段,"do not use in production yet (more testing needed)"。虽然 API 设计优秀,但在生产环境中使用前需要充分测试。 安装 go get github.com/goburrow/modbus Modbus TCP 客户端示例 package main import ( "fmt" "time" "github.com/goburrow/modbus" ) func main() { // 创建 TCP 客户端 handler := modbus.NewTCPClientHandler("192.168.1.100:502") handler.Timeout = 5 * time.Second handler.SlaveId = 1 // 建立连接 err := handler.Connect() if err != nil { fmt.Printf("连接失败: %vn", err) return } defer handler.Close() client := modbus.NewClient(handler) // 读取 10 个保持寄存器(地址 0-9) results, err := client.ReadHoldingRegisters(0, 10) if err != nil { fmt.Printf("读取失败: %vn", err) return } fmt.Println("寄存器数据:") for i := 0; i < len(results)-1; i += 2 { value := uint16(results[i])<<8 | uint16(results[i+1]) fmt.Printf(" 地址 %d: %d (0x%04X)n", i/2, value, value) } // 写入单个寄存器 err = client.WriteSingleRegister(0, 1234) if err != nil { fmt.Printf("写入失败: %vn", err) } else { fmt.Println("写入成功") } } Modbus RTU 串口客户端 package main import ( "fmt" "github.com/goburrow/modbus" ) func main() { // 创建 RTU 客户端(RS-485) handler := modbus.NewRTUClientHandler("/dev/ttyUSB0") handler.BaudRate = 9600 handler.DataBits = 8 handler.Parity = "N" // 无校验 handler.StopBits = 1 handler.SlaveId = 1 handler.Timeout = 3 * time.Second err := handler.Connect() if err != nil { panic(err) } defer handler.Close() client := modbus.NewClient(handler) results, _ := client.ReadHoldingRegisters(0, 5) fmt.Printf("RTU 读取结果: % Xn", results) } Go 语言在工业物联网中的优势 Go 语言近年来在工业物联网边缘网关领域越来越受欢迎,原因有几个: 原生并发:goroutine 让同时连接数百个 Modbus 从站变得简单高效 单二进制部署:编译后是一个独立可执行文件,无需运行时依赖(如 JVM、Python 解释器),部署极其简单 跨平台编译:GOOS=linux GOARCH=arm64 go build 即可交叉编译到 ARM Linux(树莓派、工控机) 内存安全:相比 C 语言,Go 提供的自动垃圾回收和内存安全检查更适合编写稳定的长时间运行服务 Python Modbus Test Kit(modbus-tk) Modbus Test Kit(modbus-tk)是一个 Python 实现的 Modbus 协议库,项目在 Google Code Archive。它支持 Modbus RTU 和 Modbus TCP,可以同时编写客户端和服务器。对于 Python 用户来说,另一个更现代的选择是 pymodbus,两者 API 风格不同但功能覆盖类似。 #!/usr/bin/env python3 # modbus-tk 基本使用示例 import modbus_tk import modbus_tk.defines as cst from modbus_tk import modbus_tcp # 创建 TCP 主站 master = modbus_tcp.TcpMaster(host="192.168.1.100", port=502) master.set_timeout(5.0) # 读取从站 1 的保持寄存器 0-9 try: values = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 10) print(f"读取结果: {values}") except modbus_tk.modbus.ModbusError as exc: print(f"Modbus 错误: {exc}") 各语言 Modbus 库选择建议 使用场景推荐库语言状态 Web 应用集成phpmodbusPHP停更(UDP only) 边缘网关服务goburrow/modbusGoIncubating 自动化测试脚本modbus-tk / pymodbusPython活跃 嵌入式 LinuxlibmodbusC稳定 总结 Modbus 虽然是一个诞生超过 40 年的老协议,但在各种现代编程语言中都有对应的实现。PHP 的 phpmodbus 适合 Web 集成场景(尽管只支持 UDP),Go 的 goburrow/modbus 展现了 Go 语言在工业物联网边缘计算的潜力,Python 的 pymodbus 和 modbus-tk 则是编写自动化测试脚本和研究原型的最佳选择。根据你的项目语言栈和稳定性需求选择合适的库即可。 --- ### 186. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MBServer 概述 MBServer 是 modbus.org 推荐的两个互补的 Modbus 通信组件。需要注意的是,它们虽然都叫 "MBServer",但实际上是两个不同的项目: MBServer ActiveX(mbserver.tripod.com):一个免费的 ActiveX 自动化服务器,用于在 Windows 平台上通过 Modbus RTU/ASCII 和 Modbus TCP 协议与 PLC 或其他工业设备通信 MBServer TCP(sourceforge.net/projects/mblogic):一个开源的 Modbus TCP 服务器/客户端库集合,包含独立服务器、客户端和命令行工具 MBServer ActiveX 组件 MBServer ActiveX 是一个进程外(out-process)的 ActiveX 自动化服务器,这意味着它可以被任何支持 COM/OLE 的语言调用——Visual Basic 6、VBA(Excel 宏)、C#、C++、Delphi 等。它是一个 FREEWARE(免费软件),不需要付费即可使用全部功能。 支持的功能 Modbus RTU/ASCII(串口 RS-232/RS-485) Modbus TCP(以太网通信) 功能码:FC01 读线圈、FC02 读离散输入、FC03 读保持寄存器、FC04 读输入寄存器、FC05 写单线圈、FC06 写单寄存器、FC15 写多线圈、FC16 写多寄存器 自动重连机制 多线程安全设计 在 VBA(Excel)中使用 MBServer ActiveX 这是 MBServer ActiveX 最实用的场景之一——在 Excel 中直接读写 PLC 数据: ' VBA 代码:在 Excel 中读取 Modbus TCP 设备数据 Sub ReadModbusData() Dim mb As Object Set mb = CreateObject("MBServer.MBServerCtrl.1") ' 配置 Modbus TCP 连接 mb.Protocol = 3 ' 3 = Modbus TCP ' 连接设备 If mb.Connect("192.168.1.100", 502) Then ' 读取从站 1,起始地址 40001,10 个保持寄存器 Dim values As Variant values = mb.ReadHoldingRegisters(1, 40001, 10) ' 将数据写入 Excel 单元格 Dim i As Integer For i = 0 To UBound(values) Cells(i + 1, 1).Value = values(i) Next i mb.Disconnect Else MsgBox "连接失败!" End If End Sub 在 C# 中使用 MBServer ActiveX // C# 代码:通过互操作调用 MBServer ActiveX using System.Runtime.InteropServices; Type mbType = Type.GetTypeFromProgID("MBServer.MBServerCtrl.1"); dynamic mb = Activator.CreateInstance(mbType); mb.Protocol = 3; // Modbus TCP if (mb.Connect("192.168.1.100", 502)) { // 读取 10 个保持寄存器 Array values = (Array)mb.ReadHoldingRegisters(1, 40001, 10); foreach (var v in values) { Console.WriteLine(v); } mb.Disconnect(); } MBServer ActiveX 的局限性 ActiveX 技术诞生于 1990 年代,在现代 Windows 开发中已经逐渐被 .NET、COM Interop 等更新技术取代。MBServer ActiveX 仅支持 32 位 Windows,在 64 位应用程序中需要通过 WOW64 兼容层或 surrogate process 来使用。对于新项目,更推荐使用 NModbus(C#)或 ASComm.NET 等 .NET 原生库。 MBServer TCP(mblogic) MBServer TCP 是一个完全不同的项目,定位为开源的 Modbus TCP 工具集,托管在 SourceForge。许可证为 GPL(适合开源项目使用,商业项目需注意合规)。 组成部分 mbserverd:独立的 Modbus TCP 服务器守护进程,可以部署为系统服务 mbclient:命令行 Modbus TCP 客户端,用于测试和脚本调用 libmblogic:C 语言 Modbus TCP 协议库,可以被其他程序调用 Linux 上安装 MBServer TCP # 从 SourceForge 下载源码 git clone https://git.code.sf.net/p/mblogic/code mblogic-code cd mblogic-code # 编译(需要 gcc 和 make) ./configure make sudo make install # 启动 Modbus TCP 服务器 mbserverd -p 502 -a 1 使用 mbclient 测试 # 读取 127.0.0.1:502 上从站 1 的保持寄存器 0-9 mbclient -H 127.0.0.1 -p 502 -a 1 -f 3 -s 0 -n 10 # 写入从站 1 的保持寄存器 0 mbclient -H 127.0.0.1 -p 502 -a 1 -f 6 -s 0 -v 1234 现代替代方案 由于 MBServer ActiveX 技术栈较老,且 mblogic 项目活跃度不高,在实际项目中推荐以下替代方案: 需求场景推荐方案说明 Windows .NET/C# 开发NModbus 或 ASComm.NET.NET 原生库,无需 ActiveX 依赖 Excel VBA 读取 PLCMBServer ActiveX仍然是 VBA 场景最简单的方式 Linux 服务器libmodbus 或 pymodbus更活跃的 C/Python 库 嵌入式 Linuxlibmodbus轻量,支持 RTU 和 TCP 总结 MBServer 代表了 Modbus 通信的两个经典实现方向:MBServer ActiveX 专为 Windows 桌面应用和 Office 自动化设计,适合快速搭建简单的 Modbus 数据采集界面;MBServer TCP(mblogic)则是 Linux 环境下的开源 Modbus TCP 服务器和命令行工具。虽然它们的技术栈相对老旧,但作为学习资料和历史参考仍然有价值。在实际新项目中,建议根据平台和需求选择更现代的替代方案。 --- ### 187. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 SimpleModbus 简介 SimpleModbus 是一套为 Arduino 平台开发的 Modbus RTU 协议库,托管在 Google Code Archive(项目已被归档)。它由 Juan Bester 开发,包含 SimpleModbusMaster(主站库)和 SimpleModbusSlave(从站库)两个独立的 Arduino 库。虽然项目名称里有"Simple",但它提供的功能覆盖了 Modbus RTU 通信中最常用的功能码,非常适合 Arduino 初学者和快速原型开发。 ⚠️ 注意:SimpleModbus 项目已不再活跃更新。对于新项目,推荐使用更现代化的 Modbus RTU for Arduino 库(库名为 "Modbus")或 esp-modbus(ESP32 平台)。但 SimpleModbus 的代码简洁易懂,作为学习 Modbus 协议实现的入门资料仍然很有价值。 SimpleModbus 支持的功能 SimpleModbusMaster:支持 FC01(读线圈)、FC02(读离散输入)、FC03(读保持寄存器)、FC04(读输入寄存器)、FC15(写多线圈)、FC16(写多寄存器) SimpleModbusSlave:支持 FC03(读保持寄存器)和 FC16(写多寄存器) 硬件要求:Arduino + RS-485 转换模块(如 MAX485) 硬件连接 Arduino 通过 MAX485 模块连接 RS-485 总线。典型接线方式: MAX485 引脚Arduino Uno说明 VCC5V电源 GNDGND地 RORX (D0)接收数据 → Arduino 串口 RX DITX (D1)发送数据 ← Arduino 串口 TX RED2接收使能(低有效) DED2发送使能(高有效),与 RE 并联到同一 IO AA (总线+)RS-485 A 线(差分+) BB (总线-)RS-485 B 线(差分-) ⚠️ 在 RS-485 总线的两端必须加 120Ω 终端电阻(A-B 之间),否则长距离通信会出现信号反射导致数据错误。 SimpleModbusSlave 示例:Arduino 作为 Modbus RTU 从站 #include <SimpleModbusSlave.h> // 定义保持寄存器数组(10个寄存器) enum { TEMP_REG = 0, // 温度(x10) HUMIDITY_REG, // 湿度(x10) COIL_STATUS, // 线圈状态 SETPOINT, // 设定值 // ... 更多寄存器 TOTAL_REGS = 10 }; unsigned int holdingRegs[TOTAL_REGS]; void setup() { // 设置 RS-485 方向控制引脚 pinMode(2, OUTPUT); // SimpleModbusSlave 参数: // 1. 寄存器数组地址 // 2. 寄存器数量 // 3. 发送使能引脚 // 4. 发送使能有效电平 // 5. 从站地址 // 6. 波特率 // 7. 校验(0=无校验) modbus_configure(holdingRegs, TOTAL_REGS, 2, // TXEN 引脚 HIGH, // TXEN 高电平时发送 1, // 从站地址 9600, // 波特率 0); // 校验 } void loop() { // 更新传感器数据(模拟) holdingRegs[TEMP_REG] = analogRead(A0) / 2; // 温度(模拟) holdingRegs[HUMIDITY_REG] = analogRead(A1) / 3; holdingRegs[COIL_STATUS] = digitalRead(3); // 处理 Modbus 请求 modbus_update(); } SimpleModbusMaster 示例:读取从站数据 #include <SimpleModbusMaster.h> #define TOTAL_NO_OF_REGISTERS 2 unsigned int holdingRegs[TOTAL_NO_OF_REGISTERS]; void setup() { Serial.begin(9600); // SimpleModbusMaster 参数: // 1. 本地寄存器数组 // 2. 读取/写入的寄存器数量 // 3. 发送使能引脚 // 4. 发送使能有效电平 modbus_configure(holdingRegs, TOTAL_NO_OF_REGISTERS, 2, // TXEN 引脚 HIGH); // TXEN 高电平时发送 } void loop() { // 从站地址 1,起始地址 0,读取 2 个保持寄存器 unsigned char result = modbus_read_holding_registers(1, 0, 2); if (result == 0) { Serial.print("温度: "); Serial.print(holdingRegs[0] / 10.0); Serial.print("°C, 湿度: "); Serial.print(holdingRegs[1] / 10.0); Serial.println("%"); } else { Serial.print("Modbus 读取失败,错误码: "); Serial.println(result); } delay(1000); } SimpleModbus vs 现代替代方案 SimpleModbus 项目已经在数年前停止更新,现代 Arduino 项目推荐以下替代方案: 库名平台特点 ArduinoModbusArduino(官方)Arduino 官方维护,支持 RTU 和 TCP,Arduino IDE 库管理器一键安装 Modbus-Master-Slave-for-ArduinoArduino同时支持主站和从站,功能码覆盖全,GitHub 活跃更新 esp-modbusESP32 / ESP8266Espressif 官方库,支持 Modbus RTU/TCP/ASCII,性能优异 SimpleModbusArduino简单易懂,适合学习,但已停更 ESP32 上实现 Modbus RTU 通信(现代方案) 如果你使用 ESP32 平台,推荐 Espressif 官方的 esp-modbus 库。以下是一个最小示例: // ESP32 使用 HardwareSerial + MAX485 #include <Arduino.h> // 定义 RS-485 控制引脚 #define RXD2 16 // ESP32 RX2 #define TXD2 17 // ESP32 TX2 #define DE_RE 4 // RS-485 方向控制 HardwareSerial modbusSerial(2); void setup() { Serial.begin(115200); modbusSerial.begin(9600, SERIAL_8N1, RXD2, TXD2); pinMode(DE_RE, OUTPUT); digitalWrite(DE_RE, LOW); // 默认接收模式 } void loop() { // 发送 Modbus RTU 请求(手动构造帧) uint8_t request[] = { 0x01, // 从站地址 0x03, // 功能码(读保持寄存器) 0x00, 0x00, // 起始地址 0x00, 0x02 // 读取 2 个寄存器 }; uint16_t crc = calculateCRC(request, 6); request[6] = crc & 0xFF; request[7] = crc >> 8; // 切换到发送模式 digitalWrite(DE_RE, HIGH); delayMicroseconds(100); modbusSerial.write(request, 8); modbusSerial.flush(); // 切换回接收模式 digitalWrite(DE_RE, LOW); // 等待响应 delay(500); while (modbusSerial.available()) { Serial.printf("%02X ", modbusSerial.read()); } Serial.println(); delay(2000); } Arduino 官方 ArduinoModbus 库 在 Arduino IDE 中打开库管理器(Sketch → Include Library → Manage Libraries),搜索 "ArduinoModbus",安装即可。ArduinoModbus 支持 Modbus RTU(RS-485)和 Modbus TCP(WiFi/以太网),主站和从站模式均可。 #include <ArduinoRS485.h> #include <ArduinoModbus.h> void setup() { Serial.begin(9600); // 初始化 RS-485 RS485.begin(9600); // 启动 Modbus RTU 从站(地址 1) ModbusRTUServer.begin(1, 9600); // 配置保持寄存器 ModbusRTUServer.configureHoldingRegisters(0, 10); } void loop() { // 轮询 Modbus 请求 ModbusRTUServer.poll(); // 更新寄存器值 int sensorValue = analogRead(A0); ModbusRTUServer.holdingRegisterWrite(0, sensorValue); } 常见问题排查 通信完全没有响应 检查 MAX485 DE/RE 引脚的方向切换逻辑是否正确(发送时 HIGH、接收时 LOW) 确认波特率和从站地址与主站配置一致 用 USB 转 RS-485 模块 + 串口助手监控总线数据,确认信号是否存在 检查 A/B 线是否接反(用万用表测差分电压:A 对 B 应为正电压时总线空闲) 偶尔丢数据或 CRC 错误 检查 RS-485 总线两端是否加了 120Ω 终端电阻 降低波特率尝试(4800 或 2400),排除信号完整性因素 缩短总线长度或加中继器 确认发送完成到接收切换之间留有足够的延时(至少 1 个字符时间) 总结 SimpleModbus 作为早期 Arduino Modbus RTU 库,其代码简洁、功能明确,适合初学者理解 Modbus 协议的实现原理。但在实际项目中,推荐使用维护更活跃、功能更完善的替代方案:Arduino 官方库 ArduinoModbus(通用 Arduino 平台)或 esp-modbus(ESP32/ESP8266 平台)。无论选择哪个库,核心的 Modbus RTU 通信原理——从站地址、功能码、寄存器映射、CRC 校验——都是一致的。 --- ### 188. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Java Modbus开发完全指南:构建企业级工业应用 引言:Java在工业自动化中的优势 Java凭借其跨平台特性、强大的类型系统、丰富的企业级类库和成熟的生态系统,在工业自动化领域占据重要地位。从大型 SCADA 系统到嵌入式网关设备,Java 提供了完整的解决方案栈,特别适合需要高可靠性、高性能和长期维护的企业级工业应用。 本文将深入探讨 Java 在 Modbus 开发中的应用,重点介绍 Modbus4J、jamod、j2mod 等主流库的使用,并结合 Spring Boot、MQTT 等现代技术栈,展示如何构建专业级的工业物联网系统。 一、Java Modbus 开发环境配置 1.1 开发环境要求 <!-- Maven 项目配置 --> <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>industrial-modbus</artifactId> <version>1.0.0</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project> 1.2 核心依赖配置 <dependencies> <!-- Modbus4J - 功能最全面的 Modbus 库 --> <dependency> <groupId>com.infiniteautomation</groupId> <artifactId>modbus4j</artifactId> <version>3.4.0</version> </dependency> <!-- j2mod - 现代化轻量级选择 --> <dependency> <groupId>com.ghgande</groupId> <artifactId>j2mod</artifactId> <version>3.1.4</version> </dependency> <!-- Spring Boot - 企业级应用框架 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>3.2.0</version> </dependency> <!-- MQTT 客户端 - 物联网通信 --> <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.5</version> </dependency> </dependencies> 二、主流 Java Modbus 库对比 2.1 Modbus4J:企业级首选 特点: - 功能最全面,支持所有 Modbus 功能码 - 支持 TCP、RTU、ASCII 所有传输模式 - 同时支持主站和从站模式 - 活跃的社区维护(Infinite Automation) - 完善的异常处理和日志系统 适用场景: - 大型 SCADA 系统 - 企业级工业监控平台 - 需要高可靠性的生产环境 2.2 j2mod:现代化轻量级方案 特点: - 代码简洁,API 设计现代化 - 支持 Modbus TCP 和 RTU - 轻量级,依赖少 - 适合微服务架构 适用场景: - 微服务架构的工业应用 - 资源受限的嵌入式设备 - 快速原型开发 2.3 jamod:经典稳定选择 特点: - 历史悠久,稳定性好 - 纯 Java 实现,无 native 依赖 - 文档完善,示例丰富 - 社区活跃度高 适用场景: - 传统工业系统升级 - 教学和学习用途 - 需要长期稳定支持的项目 三、Modbus4J 实战开发 3.1 Modbus TCP 客户端实现 package com.example.modbus; import com.serotonin.modbus4j.ModbusFactory; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.ip.tcp.TcpParameters; import com.serotonin.modbus4j.exception.ModbusInitException; public class ModbusTcpClient { private final ModbusMaster master; public ModbusTcpClient(String host, int port) { ModbusFactory factory = new ModbusFactory(); TcpParameters params = new TcpParameters(); params.setHost(host); params.setPort(port); params.setKeepAlive(true); master = factory.createTcpMaster(params, true); master.setRetries(3); master.setExceptionListeners(new ExceptionListenerImpl()); } public void start() throws ModbusInitException { master.init(); System.out.println("Modbus TCP 连接已建立"); } public short readHoldingRegister(int slaveId, int offset) { return master.readHoldingRegister(slaveId, offset).getValue(); } public int[] readHoldingRegisters(int slaveId, int offset, int count) { return master.readHoldingRegisters(slaveId, offset, count).getValue(); } public void writeRegister(int slaveId, int offset, short value) { master.writeRegister(slaveId, offset, value); } public void stop() { master.destroy(); } // 使用示例 public static void main(String[] args) { try { ModbusTcpClient client = new ModbusTcpClient("192.168.1.100", 502); client.start(); // 读取保持寄存器 short temperature = client.readHoldingRegister(1, 0); System.out.println("温度:" + temperature + "°C"); // 批量读取 int[] values = client.readHoldingRegisters(1, 0, 10); for (int i = 0; i < values.length; i++) { System.out.println("寄存器" + i + ": " + values[i]); } // 写入寄存器 client.writeRegister(1, 0, (short) 250); client.stop(); } catch (Exception e) { e.printStackTrace(); } } } 3.2 Modbus RTU 客户端实现 package com.example.modbus; import com.serotonin.modbus4j.ModbusFactory; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.serial.rtu.RtuParameters; public class ModbusRtuClient { private final ModbusMaster master; public ModbusRtuClient(String serialPort, int baudRate) { ModbusFactory factory = new ModbusFactory(); RtuParameters params = new RtuParameters(); params.setCommPortId(serialPort); // 如:"/dev/ttyUSB0" 或 "COM3" params.setBaudRate(baudRate); params.setStopBits(1); params.setParity(0); // 0=None, 1=Odd, 2=Even params.setFlowControlIn(0); params.setFlowControlOut(0); master = factory.createRtuMaster(params); master.setRetries(3); master.setTimeout(500); } public void start() throws Exception { master.init(); System.out.println("Modbus RTU 连接已建立"); } public short readInputRegister(int slaveId, int offset) { return master.readInputRegister(slaveId, offset).getValue(); } public boolean readCoil(int slaveId, int offset) { return master.readCoil(slaveId, offset).getValue(); } public void writeCoil(int slaveId, int offset, boolean value) { master.writeCoil(slaveId, offset, value); } public void stop() { master.destroy(); } } 3.3 Modbus 从站服务器实现 package com.example.modbus; import com.serotonin.modbus4j.ModbusFactory; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.ip.tcp.TcpParameters; import com.serotonin.modbus4j.slave.ModbusSlave; import com.serotonin.modbus4j.slave.SlaveEventListener; public class ModbusServer { private ModbusSlave slave; public void start(int port) throws Exception { ModbusFactory factory = new ModbusFactory(); TcpParameters params = new TcpParameters(); params.setHost("0.0.0.0"); params.setPort(port); slave = factory.createTcpSlave(params, true); slave.setEventListener(new SlaveEventListenerImpl()); slave.addProcessImage(1, new ModbusProcessImageImpl()); slave.start(); System.out.println("Modbus 服务器已启动,监听端口:" + port); } public void stop() { if (slave != null) { slave.stop(); } } } 四、Spring Boot 集成实战 4.1 项目结构 src/main/java/com/example/industrial/ ├── IndustrialApplication.java ├── config/ │ └── ModbusConfig.java ├── service/ │ ├── ModbusService.java │ └── DataProcessingService.java ├── controller/ │ └── ModbusController.java └── model/ └── DeviceData.java 4.2 Modbus 配置类 package com.example.industrial.config; import com.example.industrial.service.ModbusService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ModbusConfig { @Bean public ModbusService modbusService() { return new ModbusService("192.168.1.100", 502); } } 4.3 Modbus 服务层 package com.example.industrial.service; import com.example.modbus.ModbusTcpClient; import com.example.industrial.model.DeviceData; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.util.ArrayList; import java.util.List; @Service public class ModbusService { private ModbusTcpClient client; private final String host; private final int port; public ModbusService(String host, int port) { this.host = host; this.port = port; } @PostConstruct public void init() { client = new ModbusTcpClient(host, port); try { client.start(); } catch (Exception e) { e.printStackTrace(); } } @PreDestroy public void destroy() { if (client != null) { client.stop(); } } public DeviceData readDeviceData(int slaveId) { DeviceData data = new DeviceData(); data.setDeviceId(slaveId); data.setTemperature(client.readHoldingRegister(slaveId, 0)); data.setHumidity(client.readHoldingRegister(slaveId, 1)); data.setPressure(client.readHoldingRegister(slaveId, 2)); data.setTimestamp(System.currentTimeMillis()); return data; } public List<DeviceData> readAllDevices(int startId, int count) { List<DeviceData> devices = new ArrayList<>(); for (int i = 0; i < count; i++) { devices.add(readDeviceData(startId + i)); } return devices; } public void writeSetpoint(int slaveId, short value) { client.writeRegister(slaveId, 100, value); } } 4.4 REST API 控制器 package com.example.industrial.controller; import com.example.industrial.model.DeviceData; import com.example.industrial.service.ModbusService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/modbus") @CrossOrigin(origins = "*") public class ModbusController { @Autowired private ModbusService modbusService; @GetMapping("/device/{slaveId}") public DeviceData getDeviceData(@PathVariable int slaveId) { return modbusService.readDeviceData(slaveId); } @GetMapping("/devices") public List<DeviceData> getAllDevices( @RequestParam(defaultValue = "1") int startId, @RequestParam(defaultValue = "10") int count ) { return modbusService.readAllDevices(startId, count); } @PostMapping("/device/{slaveId}/setpoint") public String writeSetpoint( @PathVariable int slaveId, @RequestParam short value ) { modbusService.writeSetpoint(slaveId, value); return "设置点已更新"; } } 4.5 数据模型 package com.example.industrial.model; import lombok.Data; @Data public class DeviceData { private int deviceId; private short temperature; private short humidity; private short pressure; private long timestamp; } 五、高级应用场景 5.1 异步数据采集 package com.example.industrial.service; import java.util.concurrent.*; import java.util.function.Consumer; public class AsyncDataCollector { private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(4); private final ModbusService modbusService; public AsyncDataCollector(ModbusService modbusService) { this.modbusService = modbusService; } public void startPeriodicCollection(int slaveId, long interval, Consumer<DeviceData> callback) { scheduler.scheduleAtFixedRate(() -> { try { DeviceData data = modbusService.readDeviceData(slaveId); callback.accept(data); } catch (Exception e) { System.err.println("数据采集失败:" + e.getMessage()); } }, 0, interval, TimeUnit.MILLISECONDS); } public void stop() { scheduler.shutdown(); } } 5.2 数据缓存与批量处理 package com.example.industrial.service; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; public class DataCacheService { private final ConcurrentHashMap<Integer, DeviceData> cache = new ConcurrentHashMap<>(); private final long cacheTimeout = 5000; // 5 秒 public DeviceData getCachedData(int slaveId) { DeviceData data = cache.get(slaveId); if (data != null && System.currentTimeMillis() - data.getTimestamp() < cacheTimeout) { return data; } return null; } public void updateCache(DeviceData data) { cache.put(data.getDeviceId(), data); } public void cleanup() { long now = System.currentTimeMillis(); cache.entrySet().removeIf(entry -> now - entry.getValue().getTimestamp() > cacheTimeout ); } } 5.3 异常处理与重试机制 package com.example.industrial.service; import com.serotonin.modbus4j.exception.ModbusException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ResilientModbusService { private static final Logger logger = LoggerFactory.getLogger( ResilientModbusService.class ); private final ModbusService delegate; private final int maxRetries = 3; private final long retryDelay = 1000; public ResilientModbusService(ModbusService delegate) { this.delegate = delegate; } public DeviceData readWithRetry(int slaveId) throws Exception { int attempts = 0; while (attempts < maxRetries) { try { return delegate.readDeviceData(slaveId); } catch (ModbusException e) { attempts++; logger.warn("读取失败,重试 {}/{}", attempts, maxRetries); if (attempts >= maxRetries) { throw e; } Thread.sleep(retryDelay); } } throw new Exception("达到最大重试次数"); } } 六、性能优化最佳实践 6.1 连接池管理 package com.example.industrial.pool; import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; public class ModbusConnectionPool { private final GenericObjectPool<ModbusTcpClient> pool; public ModbusConnectionPool(String host, int port, int maxConnections) { GenericObjectPoolConfig<ModbusTcpClient> config = new GenericObjectPoolConfig<>(); config.setMaxTotal(maxConnections); config.setMaxIdle(maxConnections); config.setMinIdle(2); config.setTestOnBorrow(true); pool = new GenericObjectPool<>( new ModbusClientFactory(host, port), config ); } public ModbusTcpClient borrowClient() throws Exception { return pool.borrowObject(); } public void returnClient(ModbusTcpClient client) { pool.returnObject(client); } public void close() { pool.close(); } } 6.2 批量读取优化 // 优化前:多次单独读取 for (int i = 0; i < 100; i++) { short value = master.readHoldingRegister(slaveId, i).getValue(); } // 优化后:一次批量读取 short[] values = master.readHoldingRegisters(slaveId, 0, 100).getValue(); 6.3 超时配置优化 // 根据网络环境调整超时时间 master.setTimeout(500); // 本地网络 master.setTimeout(2000); // 远程网络 master.setRetries(3); // 重试次数 七、安全与监控 7.1 访问控制 package com.example.industrial.security; import java.util.HashSet; import java.util.Set; public class ModbusAccessControl { private final Set<Integer> allowedSlaves = new HashSet<>(); private final Set<Integer> readOnlyRegisters = new HashSet<>(); public void allowSlave(int slaveId) { allowedSlaves.add(slaveId); } public boolean isSlaveAllowed(int slaveId) { return allowedSlaves.contains(slaveId); } public void markReadOnly(int registerOffset) { readOnlyRegisters.add(registerOffset); } public boolean isReadOnly(int registerOffset) { return readOnlyRegisters.contains(registerOffset); } } 7.2 操作日志 package com.example.industrial.logging; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ModbusOperationLogger { private static final Logger logger = LoggerFactory.getLogger( ModbusOperationLogger.class ); public void logRead(int slaveId, int register, Object value) { logger.info("READ | Slave={} Register={} Value={}", slaveId, register, value); } public void logWrite(int slaveId, int register, Object value) { logger.warn("WRITE | Slave={} Register={} Value={}", slaveId, register, value); } public void logError(int slaveId, String operation, Exception e) { logger.error("ERROR | Slave={} Operation={} Error={}", slaveId, operation, e.getMessage()); } } 八、实战案例:工业数据采集系统 8.1 系统架构 ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ PLC 设备 │────▶│ Modbus 网关 │────▶│ Java 应用 │ │ (从站) │ │ (TCP/RTU) │ │ (主站) │ └─────────────┘ └──────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ │ 数据库 │ │ (MySQL) │ └─────────────┘ 8.2 完整实现代码 package com.example.industrial; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; @SpringBootApplication @EnableScheduling public class IndustrialApplication { public static void main(String[] args) { SpringApplication.run(IndustrialApplication.class, args); } } 九、常见问题与解决方案 9.1 连接超时问题 问题: Modbus 设备响应慢导致超时 解决方案: master.setTimeout(2000); // 增加超时时间 master.setRetries(3); // 增加重试次数 9.2 数据不一致问题 问题: 读取的数据偶尔出现异常值 解决方案: // 添加数据验证 public short readValidatedRegister(int slaveId, int offset) { short value = master.readHoldingRegister(slaveId, offset).getValue(); if (value < -1000 || value > 10000) { throw new RuntimeException("数据超出合理范围"); } return value; } 9.3 内存泄漏问题 问题: 长时间运行后内存占用持续增长 解决方案: // 定期清理缓存 @Scheduled(fixedRate = 300000) // 每 5 分钟 public void cleanupCache() { cacheService.cleanup(); } // 正确关闭连接 @PreDestroy public void destroy() { if (master != null) { master.destroy(); } } 十、总结与展望 10.1 Java Modbus 开发优势总结 跨平台性:一次编写,到处运行 企业级支持:成熟的框架和库生态 性能优异:JVM 优化带来高性能 可维护性:强类型、良好的代码组织 社区活跃:丰富的学习资源和技术支持 10.2 技术选型建议 场景 推荐库 理由 企业级应用 Modbus4J 功能全面,稳定性好 微服务 j2mod 轻量级,现代化 API 学习/教学 jamod 文档完善,示例丰富 高性能 Modbus4J + 连接池 支持并发和池化 10.3 未来发展方向 云原生集成:与 Kubernetes、Docker 深度集成 边缘计算:在边缘设备上运行 Modbus 服务 AI 融合:结合机器学习进行预测性维护 安全增强:TLS/SSL 加密通信支持 附录:快速参考 A.1 Maven 依赖速查 <!-- Modbus4J --> <dependency> <groupId>com.infiniteautomation</groupId> <artifactId>modbus4j</artifactId> <version>3.4.0</version> </dependency> <!-- j2mod --> <dependency> <groupId>com.ghgande</groupId> <artifactId>j2mod</artifactId> <version>3.1.4</version> </dependency> A.2 常用功能码 功能码 功能 说明 01 读线圈 读取开关量输出 02 读离散输入 读取开关量输入 03 读保持寄存器 读取模拟量输出 04 读输入寄存器 读取模拟量输入 05 写单个线圈 控制开关量输出 06 写单个寄存器 控制模拟量输出 15 写多个线圈 批量控制 16 写多个寄存器 批量设置 A.3 资源链接 Modbus4J GitHub: https://github.com/serotonin/modbus4j j2mod GitHub: https://github.com/ghgande/j2mod Spring Boot: https://spring.io/projects/spring-boot Modbus 规范: https://modbus.org/specs.php 关键词: Java Modbus, Modbus4J, 工业物联网, 企业级应用, Spring Boot, 数据采集, 自动化控制 字数: 约 8,500 字 --- ### 189. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 C#/.NET工业自动化开发完全指南:构建企业级工业应用 引言:C#/.NET在工业自动化中的优势 C#/.NET平台凭借其强大的类型系统、丰富的类库、卓越的性能和微软的全面支持,在企业级工业自动化领域占据重要地位。从传统的Windows桌面应用到现代的云原生微服务,C#/.NET提供了完整的解决方案栈,特别适合需要高可靠性、高性能和长期维护的工业应用。 本文将深入探讨C#/.NET在工业自动化中的应用,重点介绍NModbus库的使用、WPF/WinForms界面开发、企业级架构设计,并结合实际案例展示如何构建专业级的工业自动化系统。 一、C#/.NET工业开发环境配置 1.1 开发环境要求 <!-- .NET SDK版本要求 --> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <OutputType>Exe</OutputType> <Nullable>enable</Nullable> </PropertyGroup> </Project> 1.2 项目结构和依赖配置 <!-- IndustrialAutomation.csproj --> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net8.0-windows</TargetFramework> <UseWPF>true</UseWPF> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <!-- Modbus通信 --> <PackageReference Include="NModbus" Version="3.0.73" /> <PackageReference Include="NModbus.Serial" Version="3.0.73" /> <!-- 串口通信 --> <PackageReference Include="System.IO.Ports" Version="8.0.0" /> <!-- 日志记录 --> <PackageReference Include="Serilog" Version="3.1.1" /> <PackageReference Include="Serilog.Sinks.File" Version="5.0.0" /> <PackageReference Include="Serilog.Sinks.Console" Version="5.0.0" /> <!-- 依赖注入 --> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /> <!-- 配置管理 --> <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" /> <!-- 数据验证 --> <PackageReference Include="FluentValidation" Version="11.8.0" /> <!-- 单元测试 --> <PackageReference Include="xunit" Version="2.6.3" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.5.5" /> <PackageReference Include="Moq" Version="4.20.69" /> </ItemGroup> </Project> 1.3 项目目录结构 IndustrialAutomation/ ├── src/ │ ├── IndustrialAutomation.Core/ # 核心业务逻辑 │ │ ├── Models/ # 数据模型 │ │ ├── Services/ # 业务服务 │ │ ├── Interfaces/ # 接口定义 │ │ └── Exceptions/ # 自定义异常 │ │ │ ├── IndustrialAutomation.Modbus/ # Modbus通信模块 │ │ ├── Clients/ # Modbus客户端 │ │ ├── Servers/ # Modbus服务器 │ │ └── Converters/ # 数据转换器 │ │ │ ├── IndustrialAutomation.UI/ # 用户界面 │ │ ├── Views/ # WPF视图 │ │ ├── ViewModels/ # MVVM视图模型 │ │ ├── Converters/ # 值转换器 │ │ └── Behaviors/ # 行为 │ │ │ └── IndustrialAutomation.Host/ # 应用程序宿主 │ ├── tests/ │ ├── IndustrialAutomation.Core.Tests/ │ ├── IndustrialAutomation.Modbus.Tests/ │ └── IndustrialAutomation.Integration.Tests/ │ ├── config/ │ ├── appsettings.json # 应用配置 │ ├── appsettings.Development.json # 开发环境配置 │ └── devices.json # 设备配置 │ └── docs/ # 项目文档 二、NModbus库深度使用 2.1 基础Modbus TCP客户端 using NModbus; using NModbus.Device; using System.Net.Sockets; namespace IndustrialAutomation.Modbus.Clients { /// <summary> /// Modbus TCP客户端 /// </summary> public class ModbusTcpClient : IModbusClient, IDisposable { private readonly ILogger<ModbusTcpClient> _logger; private readonly TcpClient _tcpClient; private IModbusMaster? _modbusMaster; private bool _disposed; /// <summary> /// 设备连接状态 /// </summary> public bool IsConnected => _tcpClient?.Connected ?? false; /// <summary> /// 设备IP地址 /// </summary> public string IpAddress { get; } /// <summary> /// 设备端口 /// </summary> public int Port { get; } /// <summary> /// 初始化Modbus TCP客户端 /// </summary> public ModbusTcpClient( string ipAddress, int port = 502, ILogger<ModbusTcpClient>? logger = null) { IpAddress = ipAddress ?? throw new ArgumentNullException(nameof(ipAddress)); Port = port; _logger = logger ?? NullLogger<ModbusTcpClient>.Instance; _tcpClient = new TcpClient(); } /// <summary> /// 连接到设备 /// </summary> public async Task<bool> ConnectAsync(CancellationToken cancellationToken = default) { try { _logger.LogInformation("正在连接到设备 {IpAddress}:{Port}", IpAddress, Port); await _tcpClient.ConnectAsync(IpAddress, Port, cancellationToken); var factory = new ModbusFactory(); _modbusMaster = factory.CreateMaster(_tcpClient); // 设置超时时间 _modbusMaster.Transport.ReadTimeout = 3000; _modbusMaster.Transport.WriteTimeout = 3000; _logger.LogInformation("成功连接到设备 {IpAddress}:{Port}", IpAddress, Port); return true; } catch (Exception ex) { _logger.LogError(ex, "连接设备 {IpAddress}:{Port} 失败", IpAddress, Port); return false; } } /// <summary> /// 读取保持寄存器 /// </summary> public async Task<ushort[]> ReadHoldingRegistersAsync( byte slaveAddress, ushort startAddress, ushort numberOfPoints, CancellationToken cancellationToken = default) { ValidateConnection(); try { _logger.LogDebug( "读取保持寄存器 - 从站: {SlaveAddress}, 地址: {StartAddress}, 数量: {NumberOfPoints}", slaveAddress, startAddress, numberOfPoints); var result = await Task.Run(() => _modbusMaster!.ReadHoldingRegisters(slaveAddress, startAddress, numberOfPoints), cancellationToken); _logger.LogDebug( "读取保持寄存器成功 - 从站: {SlaveAddress}, 地址: {StartAddress}, 数据: {Data}", slaveAddress, startAddress, result); return result; } catch (Exception ex) { _logger.LogError(ex, "读取保持寄存器失败 - 从站: {SlaveAddress}, 地址: {StartAddress}, 数量: {NumberOfPoints}", slaveAddress, startAddress, numberOfPoints); throw new ModbusCommunicationException( $"读取保持寄存器失败: {ex.Message}", ex); } } /// <summary> /// 写入单个保持寄存器 /// </summary> public async Task WriteSingleRegisterAsync( byte slaveAddress, ushort registerAddress, ushort value, CancellationToken cancellationToken = default) { ValidateConnection(); try { _logger.LogDebug( "写入单个寄存器 - 从站: {SlaveAddress}, 地址: {RegisterAddress}, 值: {Value}", slaveAddress, registerAddress, value); await Task.Run(() => _modbusMaster!.WriteSingleRegister(slaveAddress, registerAddress, value), cancellationToken); _logger.LogDebug( "写入单个寄存器成功 - 从站: {SlaveAddress}, 地址: {RegisterAddress}", slaveAddress, registerAddress); } catch (Exception ex) { _logger.LogError(ex, "写入单个寄存器失败 - 从站: {SlaveAddress}, 地址: {RegisterAddress}, 值: {Value}", slaveAddress, registerAddress, value); throw new ModbusCommunicationException( $"写入单个寄存器失败: {ex.Message}", ex); } } /// <summary> /// 写入多个保持寄存器 /// </summary> public async Task WriteMultipleRegistersAsync( byte slaveAddress, ushort startAddress, ushort[] data, CancellationToken cancellationToken = default) { ValidateConnection(); try { _logger.LogDebug( "写入多个寄存器 - 从站: {SlaveAddress}, 地址: {StartAddress}, 数据长度: {Length}", slaveAddress, startAddress, data.Length); await Task.Run(() => _modbusMaster!.WriteMultipleRegisters(slaveAddress, startAddress, data), cancellationToken); _logger.LogDebug( "写入多个寄存器成功 - 从站: {SlaveAddress}, 地址: {StartAddress}", slaveAddress, startAddress); } catch (Exception ex) { _logger.LogError(ex, "写入多个寄存器失败 - 从站: {SlaveAddress}, 地址: {StartAddress}, 数据长度: {Length}", slaveAddress, startAddress, data.Length); throw new ModbusCommunicationException( $"写入多个寄存器失败: {ex.Message}", ex); } } /// <summary> /// 读取线圈状态 /// </summary> public async Task<bool[]> ReadCoilsAsync( byte slaveAddress, ushort startAddress, ushort numberOfPoints, CancellationToken cancellationToken = default) { ValidateConnection(); try { _logger.LogDebug( "读取线圈 - 从站: {SlaveAddress}, 地址: {StartAddress}, 数量: {NumberOfPoints}", slaveAddress, startAddress, numberOfPoints); var result = await Task.Run(() => _modbusMaster!.ReadCoils(slaveAddress, startAddress, numberOfPoints), cancellationToken); _logger.LogDebug( "读取线圈成功 - 从站: {SlaveAddress}, 地址: {StartAddress}, 数据: {Data}", slaveAddress, startAddress, result); return result; } catch (Exception ex) { _logger.LogError(ex, "读取线圈失败 - 从站: {SlaveAddress}, 地址: {StartAddress}, 数量: {NumberOfPoints}", slaveAddress, startAddress, numberOfPoints); throw new ModbusCommunicationException( $"读取线圈失败: {ex.Message}", ex); } } /// <summary> /// 批量读取优化 /// </summary> public async Task<Dictionary<ushort, ushort[]>> BatchReadRegistersAsync( byte slaveAddress, IEnumerable<RegisterReadRequest> requests, CancellationToken cancellationToken = default) { ValidateConnection(); var results = new Dictionary<ushort, ushort[]>(); foreach (var request in requests) { try { var data = await ReadHoldingRegistersAsync( slaveAddress, request.StartAddress, request.NumberOfPoints, cancellationToken); results[request.StartAddress] = data; } catch (Exception ex) { _logger.LogWarning(ex, "批量读取失败 - 地址: {StartAddress}, 数量: {NumberOfPoints}", request.StartAddress, request.NumberOfPoints); results[request.StartAddress] = Array.Empty<ushort>(); } } return results; } /// <summary> /// 断开连接 /// </summary> public void Disconnect() { try { _modbusMaster?.Dispose(); _modbusMaster = null; if (_tcpClient.Connected) { _tcpClient.Close(); } _logger.LogInformation("已断开与设备 {IpAddress}:{Port} 的连接", IpAddress, Port); } catch (Exception ex) { _logger.LogError(ex, "断开连接时发生错误"); } } /// <summary> /// 验证连接状态 /// </summary> private void ValidateConnection() { if (!IsConnected || _modbusMaster == null) { throw new InvalidOperationException("设备未连接"); } } /// <summary> /// 释放资源 /// </summary> public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Disconnect(); _tcpClient.Dispose(); } _disposed = true; } } } /// <summary> /// 寄存器读取请求 /// </summary> public record RegisterReadRequest( ushort StartAddress, ushort NumberOfPoints); } 2.2 Modbus RTU串口客户端 ```csharp using NModbus; using NModbus.Serial; using System.IO.Ports; namespace IndustrialAutomation.Modbus.Clients { /// /// Modbus RTU串口客户端 /// public class ModbusRtuClient : IModbusClient, IDisposable { private readonly ILogger _logger; private readonly SerialPort _serialPort; private IModbusMaster? _modbusMaster; private bool _disposed; /// <summary> /// 串口连接状态 /// </summary> public bool IsConnected => _serialPort?.IsOpen ?? false; /// <summary> /// 串口名称 /// </summary> public string PortName { get; } /// <summary> /// 波特率 /// </summary> public int BaudRate { get; } /// <summary> /// 初始化Modbus RTU客户端 /// </summary> public ModbusRtuClient( string portName, int baudRate = 9600, ILogger<ModbusRtuClient>? logger = null) { PortName = portName ?? throw new ArgumentNullException(nameof(portName)); BaudRate = baudRate; _logger = logger ?? NullLogger<ModbusRtuClient>.Instance; _serialPort = new SerialPort(portName) { BaudRate = baudRate, DataBits = 8, Parity = Parity.None, StopBits = StopBits.One, ReadTimeout = 1000, WriteTimeout = 1000 }; } /// <summary> /// 连接到串口设备 /// </summary> public async Task<bool> ConnectAsync(CancellationToken cancellationToken = default) { try { _logger.LogInformation("正在打开串口 {PortName} (波特率: {BaudRate})", PortName, BaudRate); await Task.Run(() => { if (!_serialPort.IsOpen) { _serialPort.Open(); } }, cancellationToken); var factory = new ModbusFactory(); var adapter = new SerialPortAdapter(_serialPort); _modbusMaster = factory.CreateRtuMaster(adapter); // 配置Modbus参数 _modbusMaster.Transport.ReadTimeout = 1000; _modbusMaster.Transport.WriteTimeout = 1000; _modbusMaster.Transport.Retries = 3; _modbusMaster.Transport.WaitToRetryMilliseconds = 100; _logger.LogInformation("成功打开串口 {PortName}", PortName); return true; } catch (Exception ex) { _logger.LogError(ex, "打开串口 {PortName} 失败", PortName); return false; } } /// <summary> /// 扫描串口设备 /// </summary> public async Task<List<byte>> ScanDevicesAsync( byte startAddress = 1, byte endAddress = 247, CancellationToken cancellationToken = default) { var foundDevices = new List<byte>(); _logger.LogInformation("开始扫描设备 (地址范围: {StartAddress}-{EndAddress})", startAddress, endAddress); for (byte slaveAddress = startAddress; slaveAddress <= endAddress; slaveAddress++) { if (cancellationToken.IsCancellationRequested) { break; } try { // 尝试读取设备标识 var result = await Task.Run(() => _modbusMaster!.ReadDeviceIdentification(slaveAddress, 0x01), cancellationToken); if (result != null) { foundDevices.Add(slaveAddress); _logger.LogInformation(" --- ### 190. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Python Modbus库完全指南:从入门到精通 引言:为什么选择Python进行Modbus开发? 在工业物联网和自动化领域,Python凭借其简洁的语法、丰富的库生态系统和强大的社区支持,已经成为开发者的首选语言之一。对于Modbus协议开发,Python提供了多个成熟的开源库,能够满足从简单设备通信到复杂工业系统集成的各种需求。 本文将全面介绍Python中主流的Modbus库,包括pymodbus、minimalmodbus、uModbus等,通过实际代码示例和最佳实践,帮助您快速掌握Python Modbus开发的核心技能。 一、主流Python Modbus库对比 1.1 pymodbus:功能最全面的选择 特点: - 支持Modbus TCP、RTU、ASCII等多种协议 - 同时支持客户端(主站)和服务器(从站)模式 - 异步/同步两种编程模式 - 活跃的社区和持续更新 适用场景: - 复杂的工业控制系统 - 需要同时作为主站和从站的场景 - 高性能要求的应用 1.2 minimalmodbus:轻量级解决方案 特点: - 代码简洁,易于学习和使用 - 专注于Modbus RTU协议 - 依赖少,部署简单 - 适合嵌入式系统和资源受限环境 适用场景: - 简单的设备通信 - 嵌入式系统和单板计算机 - 快速原型开发 1.3 uModbus:现代化设计 特点: - 现代化的API设计 - 支持异步编程 - 良好的类型提示 - 模块化架构 适用场景: - 需要异步处理的应用 - 大型项目开发 - 需要良好代码维护性的场景 二、pymodbus深度解析 2.1 安装和基础配置 # 安装pymodbus pip install pymodbus # 或者安装包含异步支持的版本 pip install pymodbus[asyncio] 2.2 Modbus TCP客户端示例 from pymodbus.client import ModbusTcpClient # 创建TCP客户端 client = ModbusTcpClient( host='192.168.1.100', # 设备IP地址 port=502, # Modbus TCP端口 timeout=3, # 超时时间(秒) retries=3 # 重试次数 ) try: # 连接设备 if client.connect(): print("成功连接到Modbus设备") # 读取保持寄存器(地址0,数量10) result = client.read_holding_registers(address=0, count=10, slave=1) if not result.isError(): print(f"读取到的寄存器值: {result.registers}") else: print(f"读取失败: {result}") # 写入单个保持寄存器(地址5,值1234) result = client.write_register(address=5, value=1234, slave=1) if not result.isError(): print("寄存器写入成功") # 读取线圈状态(地址0,数量8) result = client.read_coils(address=0, count=8, slave=1) if not result.isError(): print(f"线圈状态: {result.bits}") finally: # 关闭连接 client.close() 2.3 Modbus RTU客户端示例 from pymodbus.client import ModbusSerialClient # 创建RTU客户端 client = ModbusSerialClient( method='rtu', # 协议类型(rtu或ascii) port='/dev/ttyUSB0', # 串口设备 baudrate=9600, # 波特率 bytesize=8, # 数据位 parity='N', # 校验位(N:无, E:偶, O:奇) stopbits=1, # 停止位 timeout=1 # 超时时间 ) try: if client.connect(): print("成功连接到串口设备") # 批量读取输入寄存器 result = client.read_input_registers(address=0, count=20, slave=1) if not result.isError(): data = result.registers # 处理数据:假设前10个是温度值(需要除以10) temperatures = [value/10.0 for value in data[:10]] print(f"温度数据: {temperatures}") finally: client.close() 2.4 异步客户端示例 import asyncio from pymodbus.client import AsyncModbusTcpClient async def read_device_data(): # 创建异步客户端 client = AsyncModbusTcpClient( host='192.168.1.100', port=502 ) await client.connect() try: # 同时读取多个设备的数据 tasks = [] for slave_id in [1, 2, 3]: task = client.read_holding_registers( address=0, count=10, slave=slave_id ) tasks.append(task) # 并行执行所有读取任务 results = await asyncio.gather(*tasks) for i, result in enumerate(results): if not result.isError(): print(f"设备{i+1}数据: {result.registers}") finally: client.close() # 运行异步函数 asyncio.run(read_device_data()) 三、minimalmodbus快速上手 3.1 基础使用 import minimalmodbus import serial # 创建仪器对象 instrument = minimalmodbus.Instrument( port='/dev/ttyUSB0', # 串口设备 slaveaddress=1, # 从站地址 mode='rtu' # 协议模式 ) # 配置串口参数 instrument.serial.baudrate = 9600 instrument.serial.bytesize = 8 instrument.serial.parity = serial.PARITY_NONE instrument.serial.stopbits = 1 instrument.serial.timeout = 1.0 # 秒 # 读取保持寄存器 try: # 读取单个寄存器(地址30001) temperature = instrument.read_register( registeraddress=0, # 寄存器地址(0对应30001) functioncode=3, # 功能码3:读保持寄存器 signed=True # 有符号整数 ) print(f"温度: {temperature}°C") # 读取多个寄存器 values = instrument.read_registers( registeraddress=0, number_of_registers=5, functioncode=3 ) print(f"多个寄存器值: {values}") # 写入单个寄存器 instrument.write_register( registeraddress=10, value=100, functioncode=6 ) except Exception as e: print(f"通信错误: {e}") 3.2 高级功能 # 自定义字节顺序(大端/小端) instrument.byteorder = minimalmodbus.BYTEORDER_BIG # 设置调试模式(显示原始通信数据) instrument.debug = True # 使用不同的精度和缩放因子 def read_temperature_with_precision(): # 假设温度寄存器存储的是实际值*10 raw_value = instrument.read_register(0, 3) temperature = raw_value / 10.0 return temperature # 批量读取优化 def batch_read_registers(addresses): """批量读取多个寄存器,优化通信效率""" results = {} for addr in addresses: try: value = instrument.read_register(addr, 3) results[addr] = value except Exception as e: results[addr] = f"错误: {e}" return results 四、uModbus现代化开发 4.1 异步服务器示例 import asyncio from umodbus.server.tcp import RequestHandler, get_server from umodbus.conf import ModbusDataType # 定义数据存储 data_store = { 'coils': {0: False, 1: True, 2: False}, 'discrete_inputs': {0: True, 1: False}, 'holding_registers': { 0: 100, 1: 200, 2: 300 }, 'input_registers': { 0: 400, 1: 500 } } async def handle_request(slave_id, function_code, address, quantity): """处理Modbus请求""" if function_code == 1: # 读线圈 return [data_store['coils'].get(addr, False) for addr in range(address, address + quantity)] elif function_code == 3: # 读保持寄存器 return [data_store['holding_registers'].get(addr, 0) for addr in range(address, address + quantity)] elif function_code == 6: # 写单个寄存器 # 在实际应用中,这里会更新数据存储 return True return None async def main(): # 创建TCP服务器 server = get_server( RequestHandler, data_store=data_store, request_handler=handle_request ) # 启动服务器 await server.serve_forever() # 运行服务器 asyncio.run(main()) 五、实际应用案例 5.1 工业温度监控系统 import time from datetime import datetime import json from pymodbus.client import ModbusTcpClient class TemperatureMonitor: def __init__(self, device_configs): """ 初始化温度监控系统 device_configs: 设备配置列表 """ self.devices = [] for config in device_configs: client = ModbusTcpClient( host=config['ip'], port=config.get('port', 502), timeout=config.get('timeout', 3) ) self.devices.append({ 'client': client, 'name': config['name'], 'slave_id': config.get('slave_id', 1), 'registers': config['registers'] }) self.data_history = [] def read_all_temperatures(self): """读取所有设备的温度数据""" readings = [] for device in self.devices: client = device['client'] if not client.connect(): print(f"无法连接到设备: {device['name']}") continue try: device_readings = {} for reg_name, reg_config in device['registers'].items(): result = client.read_holding_registers( address=reg_config['address'], count=reg_config.get('count', 1), slave=device['slave_id'] ) if not result.isError(): raw_value = result.registers[0] # 应用转换公式(如除以10得到实际温度) actual_value = raw_value / reg_config.get('scale', 1.0) device_readings[reg_name] = { 'raw': raw_value, 'actual': actual_value, 'unit': reg_config.get('unit', '°C') } readings.append({ 'device': device['name'], 'timestamp': datetime.now().isoformat(), 'readings': device_readings }) except Exception as e: print(f"读取设备{device['name']}时出错: {e}") finally: client.close() # 保存到历史记录 self.data_history.extend(readings) # 只保留最近1000条记录 if len(self.data_history) > 1000: self.data_history = self.data_history[-1000:] return readings def check_alarms(self, readings): """检查报警条件""" alarms = [] for device_reading in readings: for sensor_name, sensor_data in device_reading['readings'].items(): value = sensor_data['actual'] # 简单报警逻辑 if value > 80: # 高温报警 alarms.append({ 'device': device_reading['device'], 'sensor': sensor_name, 'value': value, 'type': 'high_temperature', 'message': f"温度过高: {value}°C", 'timestamp': device_reading['timestamp'] }) elif value < 10: # 低温报警 alarms.append({ 'device': device_reading['device'], 'sensor': sensor_name, 'value': value, 'type': 'low_temperature', 'message': f"温度过低: {value}°C", 'timestamp': device_reading['timestamp'] }) return alarms def export_data(self, filename='temperature_data.json'): """导出数据到JSON文件""" with open(filename, 'w', encoding='utf-8') as f: json.dump({ 'history': self.data_history, 'export_time': datetime.now().isoformat() }, f, ensure_ascii=False, indent=2) print(f"数据已导出到: {filename}") # 使用示例 if __name__ == "__main__": # 设备配置 device_configs = [ { 'name': '锅炉1', 'ip': '192.168.1.101', 'registers': { 'temperature': {'address': 0, 'scale': 10.0, 'unit': '°C'}, 'pressure': {'address': 1, 'scale': 100.0, 'unit': 'kPa'} } }, { 'name': '反应釜2', 'ip': '192.168.1.102', 'registers': { 'temperature': {'address': 0, 'scale': 10.0, 'unit': '°C'}, 'ph_value': {'address': 1, 'scale': 100.0, 'unit': 'pH'} } } ] # 创建监控器 monitor = TemperatureMonitor(device_configs) # 监控循环 try: while True: print(f"\n[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 开始读取数据...") # 读取数据 readings = monitor.read_all_temperatures() # 显示数据 for reading in readings: print(f"\n设备: {reading['device']}") for sensor, data in reading['readings'].items(): print(f" {sensor}: {data['actual']} {data['unit']}") # 检查报警 alarms = monitor.check_alarms(readings) if alarms: print("\n⚠️ 报警信息:") for alarm in alarms: print(f" {alarm['message']}") # 每5秒读取一次 time.sleep(5) except KeyboardInterrupt: print("\n监控停止") # 导出数据 monitor.export_data() 5.2 数据可视化界面 ```python import tkinter as tk from tkinter import ttk import threading import time from datetime import datetime from pymodbus.client import ModbusTcpClient class ModbusMonitorGUI: def init(self, root): self.root = root self.root.title("Modbus设备监控系统") self.root.geometry("800x600") # 设备配置 self.devices = [ {'name': 'PLC_1', 'ip': '192.168.1.100', 'port': 502, 'slave_id': 1}, {'name': 'PLC_2', 'ip': '192.168.1.101', 'port': 502, 'slave_id': 2} ] # 数据存储 self.data = {} for device in self.devices: self.data[device['name']] = { 'registers': {}, 'last_update': None, 'status': '离线' } # 创建界面 self.setup_ui() # 启动监控线程 self.monitoring = True self.monitor_thread = threading.Thread(target=self.monitor_devices) self.monitor_thread.daemon = True self.monitor_thread.start() def setup_ui(self): """设置用户界面""" # 创建主框架 main_frame = ttk.Frame(self.root, padding="10") main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) # 设备状态区域 status_frame = ttk.LabelFrame(main_frame, text="设备状态", padding="10") status_frame.grid(row=0, column=0, sticky=(tk.W, tk.E), pady=(0, 10)) self.status_labels = {} for i, device in enumerate(self.devices): label = ttk.Label(status_frame, text=f"{device['name']}: 离线") label.grid(row=i, column=0, sticky=tk.W, padx=5, pady=2) self.status_labels[device['name']] = label # 数据展示区域 data_frame = ttk.LabelFrame(main_frame, text="实时数据", padding="10") data_frame.grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10)) # 创建Treeview显示数据 columns = ('设备', '寄存器', '地址', '值', '时间') self.tree = ttk.Treeview(data_frame, columns=columns, show='headings', height=15) for col in columns: self.tree.heading(col, text=col) self.tree.column(col, width=100) # 添加滚动条 scrollbar = ttk.Scrollbar(data_frame, orient=tk.VERTICAL, command=self.tree.yview) self.tree.configure(yscrollcommand=scrollbar.set) self.tree.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) scrollbar.grid(row=0, column=1, sticky=(tk.N, tk.S)) # 控制按钮区域 button_frame = ttk.Frame(main_frame) button_frame.grid(row=2, column=0, sticky=(tk.W, tk.E)) ttk.Button(button_frame, text="刷新数据", command=self.manual_refresh).pack(side=tk.LEFT, padx=5) ttk.Button(button_frame, text="导出数据", command=self.export_data).pack(side=tk.LEFT, padx=5) ttk.Button(button_frame, text="停止监控", command=self.stop_monitoring).pack(side=tk.LEFT, padx=5) # 配置网格权重 main_frame.columnconfigure(0, weight=1) main_frame.rowconfigure(1, weight=1) data_frame.columnconfigure(0, weight=1) data_frame.rowconfigure(0, weight=1) def read_device_data(self, device_config): """读取单个设备的数据""" client = ModbusTcpClient( host=device_config['ip'], port=device_config['port'], timeout=3 ) try: if client.connect(): # 读取寄存器0-19 result = client.read_holding_registers( address=0, count=20, slave=device_config['slave_id'] ) if not result.isError(): return { 'status': '在线', 'data': result.registers, 'timestamp': datetime.now() } else: return { 'status': '读取错误', 'data': None, 'timestamp': datetime.now() } else: return { 'status': '连接失败', 'data': None, 'timestamp': datetime.now() } except Exception as e: return { 'status': f'异常: {str(e)}', 'data': None, 'timestamp': datetime.now() } finally: client.close() def monitor_devices(self): """监控设备线程""" while self.monitoring: for device in self.devices: result = self.read_device_data(device) # 更新数据存储 self.data[device['name']].update({ 'registers': result['data'] or {}, 'last_update': result['timestamp'], 'status': result['status'] }) # 更新UI(需要在主线程中执行) self.root.after(0, self.update_ui, device['name'], result) # 每2秒更新一次 time.sleep(2) def update_ui(self, device_name, result): """更新用户界面""" # 更新状态标签 status_text = f"{device_name}: {result['status']}" if result['timestamp']: status_text += f" ({result['timestamp'].strftime('%H:%M:%S')})" self.status_labels[device_name].config(text=status_text) # 更新颜色 if result['status'] == '在线': self.status_labels[device_name].config(foreground='green') elif '错误' in result['status'] or '失败' in result['status']: self.status_labels[device_name].config(foreground='red') else: self.status_labels[device_name].config(foreground='orange') # 更新数据表格 if result['data']: # 清除旧数据 for item in self.tree.get_children(): if self.tree.item(item)['values'][0] == device_name: self.tree.delete(item) # 添加新数据 for i, value in enumerate(result['data']): self.tree.insert('', 'end', values=( device_name, f'400{i+1:02d}', i, value, result['timestamp'].strftime('%H:%M:%S') if result['timestamp'] else '' )) def manual_refresh(self): """手动刷新数据""" for device in self.devices: result = self.read_device_data(device) self.update_ui(device['name'], result) def export_data(self): """导出数据到文件""" import json from datetime import datetime export_data = { 'export_time': datetime.now().isoformat(), 'devices': {} } for device_name, device_data in self.data.items(): export_data['devices'][device_name] = { 'status': device_data['status'], 'last_update': device_data['last_update'].isoformat() if device_data['last_update'] else None, 'registers': device_data['registers'] } filename = f"modbus_data_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json" with open(filename, 'w', encoding='utf-8') as f: json.dump(export_data, f, ensure_ascii=False, indent=2) # 显示导出成功消息 from tkinter import messagebox messagebox.showinfo("导出成功", f"数据已导出到: {filename}") def stop_monitoring(self): """停止监控""" self.monitoring = False self.root.quit() 运行GUI应用 if name == "main": root = tk.Tk() app = ModbusMonitorGUI(root) root.mainloop() --- ### 191. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus编程开发工具大全:30+开源库与框架完全指南 引言 在工业自动化领域,Modbus协议作为最广泛使用的通信标准,拥有丰富的编程开发工具和库。本文全面整理了来自Modbus官方资源页面的30多个编程工具,为开发者提供一站式参考指南。无论您是C、Java、Python、C#还是嵌入式开发者,都能在这里找到适合的Modbus开发解决方案。 📊 工具分类概览 1. 跨平台C语言库 2. Java开发工具集 3. Python生态工具 4. .NET/C#开发框架 5. 嵌入式与单片机库 6. 调试与测试工具 🔧 跨平台C语言库 1. LibModbus - 最流行的C语言库 项目地址: http://libmodbus.org/ 核心特性 跨平台支持: Linux, Mac OS X, FreeBSD, QNX, Win32 协议支持: RTU(串口)和TCP(以太网) 许可证: LGPL v3 (允许商业使用) 语言: 纯C实现 安装与使用 # Ubuntu/Debian安装 sudo apt-get install libmodbus-dev # 编译示例 gcc -o modbus_test modbus_test.c -lmodbus # 基本使用 #include <modbus.h> modbus_t *ctx = modbus_new_tcp("192.168.1.100", 502); modbus_connect(ctx); uint16_t reg[10]; modbus_read_registers(ctx, 0, 10, reg); 优势分析 ✅ 性能优异,资源占用低 ✅ 社区活跃,文档完善 ✅ 工业级稳定性验证 ✅ 支持异步操作 2. FreeModbus - 嵌入式专用 项目地址: http://sourceforge.net/projects/freemodbus.berlios/ 适用场景 目标平台: AVR, ARM7, Coldfire等微控制器 协议支持: ASCII/RTU 许可证: LGPL (栈) + GPL (示例) 嵌入式集成示例 // FreeModbus配置 #define MB_ASCII_ENABLED 1 #define MB_RTU_ENABLED 1 #define MB_TCP_ENABLED 0 // 回调函数实现 eMBErrorCode eMBRegInputCB(UCHAR *pucRegBuffer, USHORT usAddress, USHORT usNRegs) { // 处理输入寄存器读取 return MB_ENOERR; } ☕ Java开发工具集 3. Jamod - 经典Java实现 项目地址: http://jamod.sourceforge.net/ 架构设计 // 创建TCP主站 ModbusTCPMaster master = new ModbusTCPMaster("192.168.1.100"); master.connect(); // 读取保持寄存器 ReadMultipleRegistersRequest req = new ReadMultipleRegistersRequest( 0, // 起始地址 10 // 寄存器数量 ); ReadMultipleRegistersResponse resp = (ReadMultipleRegistersResponse) master.send(req); // 获取数据 int[] registerValues = resp.getRegisterValues(); 功能特性 ✅ 支持ASCII、RTU、TCP ✅ 主站/从站完整实现 ✅ 线程安全设计 ✅ Maven集成支持 4. Modbus4J - 高性能Java库 项目地址: http://sourceforge.net/projects/modbus4j/ 性能优化特性 // 创建工厂实例 ModbusFactory factory = new ModbusFactory(); // TCP主站配置 TcpMaster master = factory.createTcpMaster( new TcpMasterConfig.Builder("192.168.1.100") .setPort(502) .setTimeout(3000) .build(), true // 保持连接 ); // 批量读取优化 BatchRead<String> batch = new BatchRead<>(); batch.addLocator("temp1", new InputRegisterLocator(1, 0)); batch.addLocator("temp2", new InputRegisterLocator(1, 1)); BatchResults<String> results = master.send(batch); Float temperature = results.getFloatValue("temp1"); 优势对比 特性 Jamod Modbus4J 性能 中等 优秀 内存占用 较高 较低 API设计 传统 现代化 异步支持 有限 完善 5. ModbusPal - Java模拟器 项目地址: http://modbuspal.sourceforge.net/ 模拟器功能 动态数据生成: 数学函数 + Python脚本 串口支持: 通过RxTx库 脚本扩展: Jython集成 可视化界面: Swing GUI 测试场景配置 # ModbusPal Python脚本示例 def generate_temperature(cycle): import math # 模拟温度波动 base_temp = 25.0 amplitude = 5.0 period = 100 # 周期 return base_temp + amplitude * math.sin(2 * math.pi * cycle / period) 🐍 Python生态工具 6. uModbus - 纯Python实现 项目地址: https://pypi.python.org/pypi/uModbus/0.5.0 安装与基础使用 # 安装 pip install uModbus # 或从源码安装 git clone https://github.com/AdvancedClimateSystems/uModbus cd uModbus python setup.py install 客户端示例 from umodbus import client import socket # 创建TCP客户端 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('192.168.1.100', 502)) # 读取保持寄存器 message = client.read_holding_registers( slave_id=1, starting_address=0, quantity=10 ) response = client.send_message(message, sock) print(f"寄存器值: {response}") # 写入单个寄存器 write_message = client.write_single_register( slave_id=1, address=0, value=100 ) client.send_message(write_message, sock) 服务器示例 from umodbus.server.tcp import RequestHandler, get_server from umodbus.utils import log_to_stream import logging # 设置日志 log_to_stream(level=logging.DEBUG) # 定义数据存储 data_store = { 'coils': {0: True, 1: False, 2: True}, 'discrete_inputs': {0: False, 1: True}, 'holding_registers': {0: 100, 1: 200, 2: 300}, 'input_registers': {0: 400, 1: 500} } # 创建服务器 app = get_server(RequestHandler, data_store) if __name__ == '__main__': try: app.serve_forever() finally: app.shutdown() app.server_close() 7. Modbus Test Kit (modbus-tk) 项目地址: http://code.google.com/p/modbus-tk/ 高级特性 import modbus_tk import modbus_tk.defines as cst from modbus_tk import modbus_tcp # 创建主站 master = modbus_tcp.TcpMaster(host="192.168.1.100") master.set_timeout(5.0) # 批量操作 try: # 读取多个数据类型 coils = master.execute(1, cst.READ_COILS, 0, 10) inputs = master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 8) holding = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 20) input_reg = master.execute(1, cst.READ_INPUT_REGISTERS, 0, 10) # 写入操作 master.execute(1, cst.WRITE_SINGLE_COIL, 0, output_value=1) master.execute(1, cst.WRITE_SINGLE_REGISTER, 0, output_value=1000) master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 0, output_value=[100, 200, 300, 400]) except modbus_tk.modbus.ModbusError as e: print(f"Modbus错误: {e}") 性能对比 特性 uModbus modbus-tk 协议完整性 基本功能 完整功能 性能 中等 较高 文档质量 一般 优秀 社区活跃度 较低 活跃 💻 .NET/C#开发框架 8. NModbus - 主流C#实现 项目地址: http://code.google.com/p/nmodbus/ NuGet安装 Install-Package NModbus 完整示例 using NModbus; using System.Net.Sockets; class Program { static void Main() { // 创建TCP客户端 TcpClient tcpClient = new TcpClient("192.168.1.100", 502); var factory = new ModbusFactory(); IModbusMaster master = factory.CreateMaster(tcpClient); // 读取操作 ushort[] holdingRegisters = master.ReadHoldingRegisters(1, 0, 10); bool[] coils = master.ReadCoils(1, 0, 16); bool[] inputs = master.ReadInputs(1, 0, 8); ushort[] inputRegisters = master.ReadInputRegisters(1, 0, 10); // 写入操作 master.WriteSingleCoil(1, 0, true); master.WriteSingleRegister(1, 0, 1000); master.WriteMultipleRegisters(1, 0, new ushort[] {100, 200, 300}); // 异步操作 var task = master.ReadHoldingRegistersAsync(1, 0, 10); task.ContinueWith(t => { if (t.IsCompletedSuccessfully) { Console.WriteLine($"读取完成: {t.Result.Length}个寄存器"); } }); tcpClient.Close(); } } 高级特性 // 1. 自定义传输层 public class CustomTransport : IModbusTransport { // 实现自定义通信协议 } // 2. 事件处理 master.ModbusSlaveRequest += (sender, args) => { Console.WriteLine($"请求: {args.Message.FunctionCode}"); }; // 3. 性能监控 var diagnostics = master.Diagnostics; Console.WriteLine($"成功请求: {diagnostics.NumberOfSuccessRequests}"); Console.WriteLine($"失败请求: {diagnostics.NumberOfFailRequests}"); 9. ASComm.NET - 商业级组件 项目地址: http://automatedsolutions.com/products/dotnet/ascomm/ 企业级特性 // 可视化配置 ASCommNET comm = new ASCommNET(); comm.Protocol = ProtocolType.ModbusTCP; comm.Server = "192.168.1.100"; comm.Port = 502; // 数据项管理 DataItem tempItem = new DataItem(); tempItem.Name = "Temperature"; tempItem.Address = "40001"; // 保持寄存器40001 tempItem.DataType = DataType.Int16; tempItem.ScanRate = 1000; // 1秒扫描一次 comm.DataItems.Add(tempItem); // 事件驱动 tempItem.DataChanged += (sender, e) => { Console.WriteLine($"温度变化: {e.NewValue}°C"); }; // 启动通信 comm.Start(); 许可证模式 试用版: 30天全功能试用 开发版: 单开发者许可 运行时版: 部署许可 企业版: 多服务器支持 🔌 嵌入式与单片机库 10. simple-modbus - Arduino库 项目地址: https://code.google.com/p/simple-modbus/ Arduino集成 #include <SimpleModbusMaster.h> #include <SimpleModbusSlave.h> // 主站配置 #define TOTAL_NO_OF_REGISTERS 10 unsigned int holdingRegs[TOTAL_NO_OF_REGISTERS]; // 从站配置 enum { TEMP_REGISTER, HUMIDITY_REGISTER, PRESSURE_REGISTER, HOLDING_REGS_SIZE }; unsigned int holdingRegs[HOLDING_REGS_SIZE]; void setup() { // 初始化Modbus modbus_configure(&Serial, 9600, SERIAL_8N2, 1, 2, TOTAL_NO_OF_REGISTERS, holdingRegs); modbus_update(); // 设置从站数据 holdingRegs[TEMP_REGISTER] = 250; // 25.0°C holdingRegs[HUMIDITY_REGISTER] = 600; // 60.0% holdingRegs[PRESSURE_REGISTER] = 1013; // 1013 hPa } void loop() { // 主站读取 modbus_update(); // 处理接收到的数据 if (holdingRegs[0] != 0) { // 执行相应操作 } // 从站响应 modbus_update(holdingRegs, HOLDING_REGS_SIZE); } 支持的功能码 ✅ 01: 读取线圈 ✅ 02: 读取离散输入 ✅ 03: 读取保持寄存器 ✅ 04: 读取输入寄存器 ✅ 15: 写入多个线圈 ✅ 16: 写入多个寄存器 11. FreeModbus (再次提及) - 专业嵌入式 移植指南 端口层实现 // portserial.c - 串口驱动 BOOL xMBPortSerialInit(UCHAR ucPort, ULONG ulBaudRate, UCHAR ucDataBits, UCHAR ucStopBits, eMBParity eParity) { // 实现串口初始化 return TRUE; } // porttimer.c - 定时器驱动 BOOL xMBPortTimersInit(USHORT usTimeOut50us) { // 实现定时器初始化 return TRUE; } 配置调整 // 内存优化配置 #define MB_REG_HOLDING_START 0 #define MB_REG_HOLDING_NREGS 100 #define MB_REG_INPUT_START 0 #define MB_REG_INPUT_NREGS 100 #define MB_REG_COILS_START 0 #define MB_REG_COILS_SIZE 100 #define MB_REG_DISCRETE_START 0 #define MB_REG_DISCRETE_SIZE 100 🛠️ 调试与测试工具 12. Modbus Poll - Windows调试工具 项目地址: http://www.modbustools.com/ 主要功能 多文档界面: 同时监控多个设备 数据记录: 实时数据记录和导出 脚本支持: 自动化测试脚本 协议分析: 详细报文解析 使用场景 设备调试: 验证新设备Modbus实现 系统集成: 测试PLC与SCADA通信 故障排查: 分析通信问题原因 性能测试: 评估系统响应时间 13. Modpoll - 命令行测试工具 项目地址: http://www.focus-sw.com/fieldtalk/modpoll.html 命令行示例 # 读取保持寄存器 modpoll -m tcp -t 4 -r 100 -c 10 192.168.1.100 # 读取线圈状态 modpoll -m tcp -t 0 -r 0 -c 16 192.168.1.100 # 写入单个寄存器 modpoll -m tcp -t 4:hex -r 40001 -c 1 192.168.1.100 1234 # 轮询模式 modpoll -m tcp -t 4 -r 100 -c 5 -p 1000 192.168.1.100 # ASCII输出格式 modpoll -m tcp -t 4 -r 100 -c 10 -a 1 -f c 192.168.1.100 参数说明 -m: 模式 (tcp/rtu/ascii) -t: 数据类型 (0:线圈, 1:离散输入, 3:输入寄存器, 4:保持寄存器) -r: 起始地址 -c: 数量 -p: 轮询间隔(ms) -a: 从站地址 14. Wireshark - 网络协议分析 项目地址: http://www.wireshark.org/ Modbus报文分析 过滤规则 modbus # 所有Modbus流量 modbus.func_code == 0x03 # 仅读取保持寄存器 tcp.port == 502 # Modbus TCP端口 解码功能 - 功能码解析 - 数据格式转换 - 错误码识别 - 时序分析 15. CAS Modbus工具集 项目地址: https://store.chipkin.com/products/tools 包含工具 Modbus RTU Parser: 十六进制报文解析 Modbus TCP Parser: TCP报文分析 Modbus Scanner: 设备扫描发现 🎯 工具选择指南 按开发语言选择 语言 推荐工具 适用场景 C/C++ LibModbus 跨平台应用、嵌入式Linux Java Modbus4J 企业级应用、高性能需求 Python modbus-tk 快速原型、测试脚本 C#/.NET NModbus Windows应用、工业软件 Arduino simple-modbus 单片机、物联网设备 嵌入式C FreeModbus 资源受限微控制器 按应用场景选择 场景 推荐工具 关键特性 设备开发 FreeModbus 资源占用低、可移植性强 系统集成 LibModbus 稳定性高、跨平台 测试调试 Modbus Poll 图形界面、功能完整 自动化测试 modbus-tk Python脚本、灵活性强 生产环境 Modbus4J/NModbus 性能优异、企业级支持 教育学习 uModbus 简单易用、学习曲线平缓 性能对比表 工具 协议支持 性能等级 内存占用 学习曲线 LibModbus RTU/TCP ⭐⭐⭐⭐⭐ 低 中等 Modbus4J ASCII/RTU/TCP/UDP ⭐⭐⭐⭐⭐ 中等 中等 NModbus ASCII/RTU/TCP ⭐⭐⭐⭐ 中等 简单 modbus-tk RTU/TCP ⭐⭐⭐⭐ 低 简单 uModbus RTU/TCP ⭐⭐⭐ 低 简单 FreeModbus ASCII/RTU ⭐⭐⭐ 极低 中等 📚 学习资源推荐 官方文档 Modbus协议规范: www.modbus.org/specs.php LibModbus文档: libmodbus.org/documentation Modbus4J Wiki: sourceforge.net/p/modbus4j/wiki/Home 教程与示例 GitHub示例仓库: 搜索"modbus example" Stack Overflow: modbus相关问答 技术博客: 各大物联网技术博客 社区支持 GitHub Issues: 各项目的问题跟踪 邮件列表: 传统技术支持方式 技术论坛: 嵌入式、物联网论坛 🔮 发展趋势 1. 云原生支持 Docker容器化部署 Kubernetes编排 微服务架构 2. 物联网集成 MQTT桥接 OPC UA兼容 边缘计算支持 3. 安全性增强 TLS/SSL加密 认证授权机制 安全审计日志 4. 开发工具现代化 REST API封装 GraphQL接口 WebSocket实时通信 💡 最佳实践建议 开发阶段 选择合适的工具:根据项目需求和技术栈选择 充分测试:使用模拟器进行完整测试 错误处理:实现完善的异常处理机制 日志记录:详细记录通信过程和错误信息 部署阶段 性能调优:根据网络条件调整超时和重试参数 监控告警:实现系统健康监控 备份恢复:配置数据和状态备份机制 安全加固:实施适当的安全措施 维护阶段 定期更新:保持工具库版本更新 性能监控:持续监控系统性能 问题排查:建立系统化的问题排查流程 文档更新:保持文档与系统同步 🎉 总结 本文全面介绍了Modbus编程开发领域的30多个重要工具,涵盖了从底层嵌入式开发到企业级应用的全栈解决方案。无论您是初学者还是经验丰富的开发者,都能在这里找到适合的工具来加速您的Modbus项目开发。 关键要点: 1. LibModbus是C语言开发的首选,性能优异且稳定 2. Modbus4J和NModbus分别代表了Java和.NET平台的最佳实践 3. Python生态提供了快速原型开发的优秀工具 4. 调试工具链完整,从命令行到图形界面应有尽有 5. 开源社区活跃,大多数工具都有良好的维护和支持 随着工业4.0和物联网的快速发展,Modbus协议仍然是最重要的工业通信标准之一。掌握这些开发工具,将帮助您在工业自动化、智能制造、智慧城市等领域取得技术优势。 最后更新: 2026-02-24 作者: 贾维斯AI助手 分类: Modbus编程开发 标签: Modbus, 编程开发, 开源工具, 工业自动化, 物联网, 开发指南 --- ### 192. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 概述 S7.Net是一个专为西门子PLC设计的PLC驱动程序,仅支持通过以太网连接。这意味着您的PLC必须具备Profinet CPU或Profinet外部卡(如CPxxx卡)。S7.Net完全使用C#编写,因此您可以轻松地进行调试,而无需处理本地DLL。 支持的PLC型号 S7.Net与以下型号的西门子PLC兼容:S7-200、S7-300、S7-400、S7-1200和S7-1500。 开始使用S7.Net 要开始使用S7.Net,您需要下载并包含S7.Net.dll到您的项目中。您可以通过下载NuGet包或下载源代码并编译来实现。 创建PLC实例、连接与断开 创建驱动程序实例时,您需要使用以下构造函数: public Plc(CpuType cpu, string ip, Int16 rack, Int16 slot) cpu:指定您要连接的CPU类型。支持的CPU类型有: public enum CpuType { S7200 = 0, S7300 = 10, S7400 = 20, S71200 = 30, S71500 = 40, } ip:指定CPU或外部以太网卡的IP地址。 rack:包含PLC的机架号,您可以在Step7的硬件配置中找到。 slot:这是CPU的插槽号,同样可以在Step7的硬件配置中找到。 例如,以下代码为IP地址为127.0.0.1的S7-300 PLC创建了一个PLC对象,PLC位于0号机架,CPU位于2号插槽: Plc plc = new Plc(CpuType.S7300, "127.0.0.1", 0, 2); 连接到PLC public void Open() 例如,以下代码行打开连接: plc.Open(); 从PLC断开连接 public void Close() 例如,以下代码关闭连接: plc.Close(); 错误处理 任何方法都可能因为各种错误而引发PlcException。您应该实现适当的错误处理。PlcException提供了一个ErrorCode和一个适当的错误消息。 以下是错误类型的枚举: public enum ErrorCode { NoError = 0, WrongCPU_Type = 1, ConnectionError = 2, IPAddressNotAvailable, WrongVarFormat = 10, WrongNumberReceivedBytes = 11, SendData = 20, ReadData = 30, WriteData = 50 } 检查PLC可用性 要检查PLC是否可用(打开一个Socket),您可以使用属性: public bool IsAvailable 当您检查此属性时,驱动程序将尝试连接到PLC,并在能够连接时返回true,否则返回false。 检查PLC连接 检查PLC连接很简单,因为您需要检查PC套接字是否已连接,还要检查PLC是否仍然连接在套接字的另一端。在这种情况下,您需要检查的属性是: public bool IsConnected 您可以在调用Open()方法并成功后检查此属性,以查看连接是否仍然活跃。 读取字节/写入字节 该库提供了多种读取变量的方法。最基本且最常用的方法是ReadBytes。 public byte[] ReadBytes(DataType dataType, int db, int startByteAdr, int count) public void WriteBytes(DataType dataType, int db, int startByteAdr, byte[] value) 此方法从给定的内存位置读取您指定的所有字节。如果字节数超过了单次请求可以传输的最大字节数,此方法会自动处理多个请求。 dataType:您必须使用枚举DataType指定内存位置: public enum DataType { Input = 129, Output = 130, Memory = 131, DataBlock = 132, Timer = 29, Counter = 28 } db:dataType的地址,例如,如果您想读取DB1,则此字段为“1”;如果您想读取T45,则此字段为45。 startByteAdr:您要读取的第一个字节的地址,例如,如果您想读取DB1.DBW200,则此为200。 count:包含您想要读取的字节数。 value[]:要从PLC读取的字节数组。 示例:此方法读取DB1的前200个字节: var bytes = plc.ReadBytes(DataType.DataBlock, 1, 0, 200); 读取和解码/写入已解码 此方法允许您读取并接收基于提供的varType的已解码结果。这在您读取多个相同类型的字段时非常有用(例如20个连续的DBW)。如果您指定VarType.Byte,它与ReadBytes具有相同的功能。 public object Read(DataType dataType, int db, int startByteAdr, VarType varType, int varCount) public void Write(DataType dataType, int db, int startByteAdr, object value) dataType:您必须使用枚举DataType指定内存位置。 db:dataType的地址,例如,如果您想读取DB1,则此字段为“1”;如果您想读取T45,则此字段为45。 startByteAdr:您要读取的第一个字节的地址,例如,如果您想读取DB1.DBW200,则此为200。 varType:指定您想要将字节转换为的数据。 public enum VarType { Bit, Byte, Word, DWord, Int, DInt, Real, String, StringEx, Timer, Counter } count:包含您想要读取的变量数量。 value:要写入PLC的值数组。它可以是单个值或数组,只是请记住类型是唯一的(例如,double数组,int数组,shorts数组等)。 示例:此方法读取DB1的前20个DWord: var dwords = plc.Read(DataType.DataBlock, 1, 0, VarType.DWord, 20); 读取单个变量/写入单个变量 此方法通过解析字符串并返回正确的结果,从PLC读取单个变量。虽然这是最简单的入门方法,但由于驱动程序为每个变量发送TCP请求,因此非常低效。 public object Read(string variable) public void Write(string variable, object value) variable:通过使用字符串如“DB1.DBW20”,“T45”,“C21”,“DB1.DBD400”等来指定要读取的变量。 示例:这读取变量DB1.DBW0。结果必须转换为ushort以获得C#中正确的16位格式。 ushort result = (ushort)plc.Read("DB1.DBW0"); 读取结构体/写入结构体 此方法从指定的DB读取所有字节,以填充C#中的结构体,并返回包含值的结构体。当您想要读取单个数据块中的多个变量时,建议使用它。 “读取结构体”和“写入结构体”方法不支持字符串。 public object ReadStruct(Type structType, int db, int startByteAdr = 0) public void WriteStruct(object structValue, int db, int startByteAdr = 0) structType:要读取的结构体类型,例如:typeof(MyStruct) db:要读取的DB的索引 startByteAdr:指定要读取的字节的第一个地址(默认为零)。 示例:在PLC中定义一个DataBlock,然后在.Net应用程序中添加一个类似于PLC中DB的结构体: public struct testStruct { public bool varBool0; public bool varBool1; public bool varBool2; public bool varBool3; public bool varBool4; public bool varBool5; public bool varBool6; public byte varByte0; public byte varByte1; public ushort varWord0; public float varReal0; public bool varBool7; public float varReal1; public byte varByte2; public UInt32 varDWord; } 然后添加代码以读取或写入完整的结构体: // 从起始地址0读取DataBlock 1中的结构体 testStruct myTestStruct = (testStruct) plc.ReadStruct(typeof(testStruct), 1, 0); **读取类/写 入类** 此方法从指定的DB读取所有字节,以填充C#中的类。类作为引用传递,使用反射分配值。当您想要读取单个数据块中的多个变量时,建议使用它。 “读取类”和“写入类”方法不支持字符串。 public void ReadClass(object sourceClass, int db, int startByteAdr = 0) public void WriteClass(object classValue, int db, int startByteAdr = 0) sourceClass:您想要分配值的类的实例 db:要读取的DB的索引 startByteAdr:指定要读取的字节的第一个地址(默认为零)。 示例:在PLC中定义一个DataBlock,然后在.Net应用程序中添加一个类似于PLC中DB的类: public class TestClass { public bool varBool0 { get; set;} public bool varBool1 { get; set;} public bool varBool2 { get; set;} public bool varBool3 { get; set;} public bool varBool4 { get; set;} public bool varBool5 { get; set;} public bool varBool6 { get; set;} public byte varByte0 { get; set;} public byte varByte1 { get; set;} public ushort varWord0 { get; set;} public float varReal0 { get; set;} public bool varBool7 { get; set;} public float varReal1 { get; set;} public byte varByte2 { get; set;} public UInt32 varDWord { get; set;} } 然后添加代码以读取或写入完整的类: // 从起始地址0读取DataBlock 1中的类 TestClass myTestClass = new TestClass(); plc.ReadClass(myTestClass, 1, 0); 读取多个变量 此方法在单个请求中读取多个变量。变量可以位于相同或不同的数据块中。 public void Plc.ReadMultibleVars(List<DataItem> dataItems); List<>:您必须指定包含所有要读取的数据项的DataItem列表。 示例:此方法从数据块中读取几个变量: 首先定义数据项: private static DataItem varBit = new DataItem() { DataType = DataType.DataBlock, VarType = VarType.Bit, DB = 83, BitAdr = 0, Count = 1, StartByteAdr = 0, Value = new object() }; …(中间省略了与上文重复的数据项定义) 然后定义一个列表来存储DataItems: private static List<DataItem> dataItemsRead = new List<DataItem>(); 将数据项添加到列表中: dataItemsRead.Add(varBit); dataItemsRead.Add(varByteArray); dataItemsRead.Add(varInt); dataItemsRead.Add(varReal); dataItemsRead.Add(varString); dataItemsRead.Add(varDateTime); 打开PLC连接并立即读取项目列表: myPLC.Open(); // 读取变量列表 myPLC.ReadMultipleVars(dataItemsRead); // 关闭连接 myPLC.Close(); // 访问列表的值 Console.WriteLine("Int:" + dataItemsRead[2].Value); 写入多个变量 此方法在单个请求中写入多个变量。 public void Plc.Write(Array[DataItem] dataItems); Array[] 您必须指定包含所有要写入的项目的DataItem数组。 示例:此方法将多个变量写入一个数据块: 定义数据项: private static DataItem varWordWrite = new DataItem() { // ... (与上文重复的数据项定义省略) }; …(中间省略了与上文重复的数据项定义) 为数据项分配值。注意使用正确的数据转换,以适应S7数据类型: varWordWrite.Value = (ushort)67; varIntWrite.Value = (ushort)33; varDWordWrite.Value = (uint)444; varDIntWrite.Value = 6666; varRealWrite.Value = 77.89; varStringWrite.Value = "Writting"; 然后定义一个列表来存储数据项,并将创建的项目添加到列表中: private static List<DataItem> dataItemsWrite = new List<DataItem>(); // 将数据项添加到要写入的数据项列表中 dataItemsWrite.Add(varWordWrite); dataItemsWrite.Add(varIntWrite); dataItemsWrite.Add(varDWordWrite); dataItemsWrite.Add(varDIntWrite); dataItemsWrite.Add(varRealWrite); dataItemsWrite.Add(varStringWrite); 最后,打开PLC连接并一次性写入项目。使用.ToArray()将列表转换为数组: // 打开连接 myPLC.Open(); // 写入项目 myPLC.Write(dataItemsWrite.ToArray()); // 关闭连接 myPLC.Close(); 这篇文章提供了S7.Net软件的详细介绍,包括其功能、如何开始使用、如何创建PLC实例、连接与断开、错误处理、检查PLC的可用性和连接状态、读取和写入字节、读取和写入结构体和类、以及如何一次性读取和写入多个变量。希望这篇文章能帮助您更好地了解S7.Net。 --- ### 193. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 第1章 前言 Modbus是全球第一个真正用于工业现场的总线协议。Modbus通讯在工业网络通讯中应用十分广泛,而且方便,受到大家的欢迎。 1.1、编写原因 一直以来,在我们自己的产品和项目中都多次使用Modbus通讯协议。每次都是使用者自行开发或者网上搜索符合要求的源码。但每次的应用都有不同,每次都需要很多的重复劳动。而且协议站如应用软件的紧密结合也使得代码有些混乱。所以一直以来都想要开发一个比较通用的协议栈能在后续的项目中复用,而不必每次都写一遍。现在利用项目研发的机会,开发一个自己的Modbus协议栈。 1.2、版权说明 本套软件最初虽然是为了我们自用而开发,但现已在GitHub上开源。所以任何人都可以复制、传播和使用,无论是个人学习还是商业应用都没有限制。对应用方法及修改欢迎探讨,但对于在使用过程中出现了任何问题我们均不负责。 软件源码及其说明可以上GitHub自由下载,下载地址:https://github.com/foxclever/Modbus 1.3、更新记录 前一个版本我们已经实现了基于串行链路的Modbus RTU和基于以太网的Modbus TCP两种。在这一个版本中,我们添加了基于串行链路的Modbus ASCII方式。并对上一个版本中已知的问题做了修正。 软件设计及本文档更新记录如下: 版本更新说明作者日期V1.0.0初版,共5章,介绍了主要API函数木南2015年5月8日V1.1.0添加了第6、7两章木南2016年12月23日V1.1.5修改了3、4、5三章的大部分内容木南2018年2月20日V2.0.0增加了ASCII相关内容,并修改已知问题木南2018年9月18日V2.1.0增加了RTU和ASCII多主站操作的类容;增加了TCP客户端多网段操作的内容。木南2019年4月29日 第2章、PDU函数 在应用数据单元我们处理Modbus数据通讯的基本报文格式,这些基本是通用的,目前版本只支持01、02、03、04、05、06、15、16功能码。 4.1.1、功能码枚举 /*定义Modbus的操作功能码,支持01、02、03、04、05、06、15、16功能码*/ typedef enum {   ReadCoilStatus=0x01,        /*读线圈状态(读多个输出位的状态)*/   ReadInputStatus=0x02,       /*读输入位状态(读多个输入位的状态)*/   ReadHoldingRegister=0x03,   /*读保持寄存器(读多个保持寄存器的数值)*/   ReadInputRegister=0x04,     /*读输入寄存器(读多个输入寄存器的数值)*/   WriteSingleCoil=0x05,       /*强制单个线圈(强制单个输出位的状态)*/   WriteSingleRegister=0x06,   /*预制单个寄存器(设定一个寄存器的数值)*/   WriteMultipleCoil=0x0F,     /*强制多个线圈(强制多个输出位的状态)*/   WriteMultipleRegister=0x10 /*预制多个寄存器(设定多个寄存器的数值)*/ }FunctionCode; 4.1.2、Modbus状态枚举 /*定义接收到指令检测错误时的错误码*/ typedef enum{   MB_OK=0x00,   InvalidFunctionCode=0x01,//不合法功能代码   IllegalDataAddress=0x02,//非法的数据地址   IllegalDataValues=0x03,//非法的数据值或者范围   OperationFail=0x04 }ModbusStatus; 4.1.3、站信息结构 /*定义用于传递要访问从站(服务器)的信息*/ typedef struct{   uint8_t unitID;   FunctionCode functionCode;   uint16_t startingAddress;   uint16_t quantity; }ObjAccessInfo; 定义用于传递从站(服务器)访问的各种信息,包括站号、功能码、起始地址和数量。 4.1.4、生成访问从站PDU单元函数 /*作为RTU主站(TCP客户端)时,生成读写RTU从站(TCP服务器)对象的命令*/ uint16_t GenerateReadWriteCommand(ObjAccessInfo objInfo,bool *statusList,uint16_t *registerList,uint8_t commandBytes[]); 参数:ObjAccessInfo objInfo,要访问的从站对象 bool *statusList,需要往下写的状态量对象数据列表 uint16_t *registerList,需要往下写的寄存器量对象的数据列表 uint8_t commandBytes[],生成的访问命令 返回值:生成的访问命令的长度,以字节为单位。 4.1.5、解析读取的返回数据函数 /*解析主站(客户端)从服务器读取的数据*/ void TransformClientReceivedData(uint8_t * receivedMessage,uint16_t quantity,bool *statusList,uint16_t *registerLister); 参数:uint8_t * receivedMessage,接收到的信息报文 uint16_t quantity,读取的对象数量 bool *statusList,解析出来的读取到的状态对象的数据列表 uint16_t *registerLister,解析出来的读取到的寄存器对象的数据列表 返回值:无 4.1.6、从站生成读数据命令的响应报文函数 /*生成主站读访问的响应,包括0x01、0x02、0x03、0x04功能码,返回相应信息的长度*/ uint16_t GenerateMasterAccessRespond(uint8_t *receivedMesasage,bool *statusList,uint16_t *registerList,uint8_t *respondBytes); 参数:uint8_t *receivedMesasage,接收到的主战读操作报文 bool *statusList,读取的从站状态对象数据列表 uint16_t *registerList,读取到的从站寄存器对象数据列表 uint8_t *respondBytes,生成的从站响应报文信息 返回值:响应报文的长度,以字节为单位 4.1.7、功能码检验函数 /*检查功能码是否正确*/ ModbusStatus CheckFunctionCode(FunctionCode fc); 参数:FunctionCode fc,功能码,由枚举定义 返回值:Modbus操作状态,由枚举定义 4.1.8、生成TCP客户端命令函数 //生成读写服务器对象的命令 uint16_t SyntheticReadWriteTCPServerCommand(ObjAccessInfo objInfo,bool *statusList,uint16_t *registerList,uint8_t *commandBytes); 参数:ObjAccessInfo objInfo,TCP服务器访问信息对象 bool *statusList,写服务器状态量对象数据列表 uint16_t *registerList,写服务器寄存器量对象数据列表 uint8_t *commandBytes,生成的命令信息报文 返回值:命令的长度,以字节为单位 4.1.9、生成TCP服务器响应函数 /*合成对服务器访问的响应*/ uint16_t SyntheticServerAccessRespond(uint8_t *receivedMesasage,bool *statusList,uint16_t *registerList,uint8_t *respondBytes); 参数:uint8_t *receivedMesasage,接收到的客户端命令信息报文 bool *statusList,读TCP服务器的状态量对象数据列表 uint16_t *registerList,读TCP服务器的寄存器量对象数据列表 uint8_t *respondBytes,生成的响应客户端命令的响应信息报文 返回值:响应信息报文长度,以字节为单位 4.1.10、CRC校验检查 /*通过CRC校验接收的信息是否正确*/ bool CheckRTUMessageIntegrity (uint8_t *message,uint8_t length); 参数:uint8_t *message,待校验的数据报文 uint8_t length,带教言的数据报文长度,以字节为单位 返回值:返回校验是否通过的状态信号 4.1.11、生成读写RTU从站的主站命令函数 /*生成读写从站数据对象的命令,命令长度包括2个校验字节*/ uint16_t SyntheticReadWriteSlaveCommand(ObjAccessInfo slaveInfo,bool *statusList,uint16_t *registerList,uint8_t *commandBytes); 参数:ObjAccessInfo slaveInfo,从站访问信息对象,由结构体定义 bool *statusList,写从站状态量数据列表 uint16_t *registerList,写从站寄存器量数据列表 uint8_t *commandBytes,生成的访问命令报文 返回值:访问命令的长度,以字节为单位 4.1.12、生成从站应答信息报文函数 /*生成从站应答主站的响应*/ uint16_t SyntheticSlaveAccessRespond(uint8_t *receivedMesasage,bool *statusList,uint16_t *registerList,uint8_t *respondBytes); 参数:uint8_t *receivedMesasage, bool *statusList, uint16_t *registerList, uint8_t *respondBytes, 返回值:生成的响应信息报文的长度,以字节为单位 4.1.13、LRC校验检查函数 /*判断ASCII数据信息是否正确*/ bool CheckASCIIMessageIntegrity(uint8_t *usMsg, uint16_t usLength) 参数:uint8_t *usMsg,待校验的消息列表,16进制数据 uint16_t usLength,待校验的消息列表的长度 返回值:校验结果,校验正确返回“true”,否则返回“false” 4.1.14、将ASCII消息转换为16进制 /*接收到的ASCII消息转换为16进制*/ bool CovertAsciiMessageToHex(uint8_t *aMsg, uint8_t *hMsg, uint16_t aLen); 参数:uint8_t *aMsg,ASCII码信息 uint8_t *hMsg,转换后的16进制信息       uint16_t aLen,ASCII码信息的长度 返回值:转换是否正确,转换正确返回“true”,否则返回“false” 4.1.15、生成读写ASCII从站的命令函数 /*生成读写从站的命令,应用于主站,含校验及起始结束符*/ uint16_t SyntheticReadWriteAsciiSlaveCommand(ObjAccessInfo slaveInfo, bool *statusList, uint16_t *registerList, uint8_t *commandBytes) 参数:ObjAccessInfo slaveInfo,从站访问信息对象,由结构体定义 bool *statusList,写从站状态量数据列表 uint16_t *registerList,写从站寄存器量数据列表 uint8_t *commandBytes,生成的访问命令报文 返回值:访问命令的长度,以字节为单位 4.1.16、生成ASCII从站应答主站命令的函数 /*生成应答主站的响应,应用于从站*/ uint16_t SyntheticAsciiSlaveAccessRespond(uint8_t *receivedMessage, bool *statusList, uint16_t *registerList, uint8_t *respondBytes) 参数:uint8_t *receivedMesasage,接受到主站报文信息 bool *statusList,主站命令要读取的状态量值列表 uint16_t *registerList,主站命令要读取的寄存器量值列表 uint8_t *respondBytes,生成的响应信息报文 返回值:生成的响应信息报文的长度,以字节为单位 第3章、应用封装函数 对应用级封装,我们只封装RTU主站应用,RTU从站应用、TCP客户端应用和TCP服务器端应用四类。 4.2.1、RTU主站对象与从站对象 /* 定义被访问RTU从站对象类型 */ typedef struct AccessedRTUSlaveType{   uint8_t stationAddress;       //站地址   uint8_t cmdOrder;             //当前命令在命令列表中的位置   uint16_t commandNumber;       //命令列表中命令的总数   uint8_t (*pReadCommand)[8];   //读命令列表   uint8_t *pLastCommand;        //上一次发送的命令   uint32_t flagPresetCoil;      //预置线圈控制标志位   uint32_t flagPresetReg;       //预置寄存器控制标志位 }RTUAccessedSlaveType; /* 定义本地RTU主站对象类型 */ typedef struct LocalRTUMasterType{   uint32_t flagWriteSlave[8];   //写一个站控制标志位,最多256个站,与站地址对应。   uint16_t slaveNumber;         //从站列表中从站的数量   uint16_t readOrder;           //当前从站在从站列表中的位置   RTUAccessedSlaveType *pSlave;         //从站列表   UpdateCoilStatusType pUpdateCoilStatus;       //更新线圈量函数   UpdateInputStatusType pUpdateInputStatus;     //更新输入状态量函数   UpdateHoldingRegisterType pUpdateHoldingRegister;     //更新保持寄存器量函数   UpdateInputResgisterType pUpdateInputResgister;       //更新输入寄存器量函数 }RTULocalMasterType; 4.2.2、RTU主站对象初始化函数 /*初始化RTU主站对象*/ void InitializeRTUMasterObject(RTULocalMasterType *master,uint16_t slaveNumber,RTUAccessedSlaveType *pSlave,UpdateCoilStatusType pUpdateCoilStatus,UpdateInputStatusType pUpdateInputStatus,UpdateHoldingRegisterType pUpdateHoldingRegister,UpdateInputResgisterType pUpdateInputResgister); 参数:RTULocalMasterType *master,本地主站对象 uint16_t slaveNumber,从站的数量 RTUAccessedSlaveType *pSlave,从站列表 UpdateCoilStatusType pUpdateCoilStatus,更新线圈量函数指针 UpdateInputStatusType pUpdateInputStatus,更新状态量函数指针 UpdateHoldingRegisterType pUpdateHoldingRegister,更新保持寄存器量函数指针 UpdateInputResgisterType pUpdateInputResgister,更新输入寄存器量函数指针 返回值:无返回值 4.2.3、生成RTU主站访问从站命令函数 /*生成访问服务器的命令*/ uint16_t CreateAccessSlaveCommand(ObjAccessInfo objInfo,void *dataList,uint8_t *commandBytes); 参数:ObjAccessInfo objInfo,从站访问信息对象,由结构体定义 void *dataList,写从站对象的数据列表 uint8_t *commandBytes,生成的命令报文 返回值:生成的访问命令的长度,以字节为单位 4.2.4、RTU主站解析从站的响应函数 /*解析收到的服务器响应信息*/ void ParsingSlaveRespondMessage(uint8_t *recievedMessage,uint8_t *command); 参数:uint8_t *recievedMessage,接收到的返回信息 uint8_t *command,已经下发到从站的命令列表 返回值:无 4.2.5、RTU主站解析从站返回消息命令匹配函数 /*接收到返回信息后,判断是否是发送命令列表中命令的返回信息*/ int FindCommandForRecievedMessage(uint8_t *recievedMessage,uint8_t (*commandList)[8],uint16_t commandNumber); 参数:uint8_t *recievedMessage,接收的从站返回信息 uint8_t (*commandList)[8],主站下发过的命令列表 uint16_t commandNumber,存储的命令的条数 返回值:返回匹配命令所在的位置,无匹配时,返回“-1” 本函数只在RTU主站中,访问的数据量大且频繁,或者访问多个从站时使用,便于作正确的数据解析。 4.2.6、RTU从站解析主站访问命令函数 /*解析接收到的信息,并返回合成的回复信息和信息的字节长度,通过回调函数*/ uint16_t ParsingMasterAccessCommand(uint8_t *receivedMesasage,uint8_t *respondBytes,uint16_t rxLength); 参数:uint8_t *receivedMesasage,接收到的主站报文信息 uint8_t *respondBytes,生成响应信息报文 uint16_t rxLength,接收到的报文的长度 返回值:生成的响应信息的长度,以字节为单位 4.2.7、TCP客户端对象与TCP服务器对象 /* 定义被访问TCP服务器对象类型 */ typedef struct AccessedTCPServerType{   union {     uint32_t ipNumber;     uint8_t ipSegment[4];   }ipAddress;                                           //服务器的IP地址   uint32_t flagPresetServer;                            //写服务器请求标志   WritedCoilListHeadNode pWritedCoilHeadNode;          //可写的线圈量列表   WritedRegisterListHeadNode pWritedRegisterHeadNode;  //可写的保持寄存器列表   struct AccessedTCPServerType *pNextNode;              //下一个TCP服务器节点 }TCPAccessedServerType; /* 定义服务器链表头类型 */ typedef struct ServerListHeadType {   TCPAccessedServerType *pServerNode;           //服务器节点指针   uint32_t serverNumber;                        //服务器的数量 }ServerListHeadNode; /* 定义本地TCP客户端对象类型 */ typedef struct LocalTCPClientType{   uint32_t transaction;                                 //事务标识符   uint16_t cmdNumber;                                  //读服务器命令的数量   uint16_t cmdOrder;                                   //当前从站在从站列表中的位置   uint8_t (*pReadCommand)[12];                         //读命令列表   ServerListHeadNode ServerHeadNode;                    //Server对象链表的头节点   UpdateCoilStatusType pUpdateCoilStatus;               //更新线圈量函数   UpdateInputStatusType pUpdateInputStatus;             //更新输入状态量函数   UpdateHoldingRegisterType pUpdateHoldingRegister;     //更新保持寄存器量函数   UpdateInputResgisterType pUpdateInputResgister;       //更新输入寄存器量函数 }TCPLocalClientType; 4.2.8、TCP客户端对象初始化函数 /*初始化TCP客户端对象*/ void InitializeTCPClientObject(TCPLocalClientType *client,uint16_t cmdNumber,uint8_t (*pReadCommand)[12],UpdateCoilStatusType pUpdateCoilStatus,UpdateInputStatusType pUpdateInputStatus,UpdateHoldingRegisterType pUpdateHoldingRegister,UpdateInputResgisterType pUpdateInputResgister); 参数:TCPLocalClientType *client,客户端对象 uint16_t cmdNumber,读命令的数量 uint8_t (*pReadCommand)[12],读命令列表 UpdateCoilStatusType pUpdateCoilStatus,更新线圈量函数指针 UpdateInputStatusType pUpdateInputStatus,更新状态量函数指针 UpdateHoldingRegisterType pUpdateHoldingRegister,更新保持寄存器函数指针 UpdateInputResgisterType pUpdateInputResgister,更新输入寄存器量函数指针 返回值:无返回值 4.2.9、生成TCP客户端访问服务器命令函数 /*生成访问服务器的命令*/ uint16_t CreateAccessServerCommand(ObjAccessInfo objInfo,void *dataList,uint8_t *commandBytes); 参数:ObjAccessInfo objInfo,访问服务器信息对象 void *dataList,些服务器对象数据列表 uint8_t *commandBytes,生成的访问服务器命令报文 返回值:访问命令的长度,以字节为单位 4.2.10、TCP客户端解析服务器返回信息函数 /*解析收到的服务器相应信息*/ void ParsingServerRespondMessage(uint8_t *recievedMessage); 参数:uint8_t *recievedMessage,接受到的服务器响应信息 返回值:无 4.2.11、TCP服务器解析客户端命令函数 /*解析接收到的信息,返回响应命令的长度*/ uint16_t ParsingClientAccessCommand(uint8_t *receivedMessage,uint8_t *respondBytes); 参数:uint8_t *receivedMessage,接受到的客户端访问命令 uint8_t *respondBytes,生成的服务器响应信息 返回值:生成的响应信息报文的长度,以字节为单位 4.2.12、ASCII主站对象与从站对象 /* 定义被访问ASCII从站对象类型 */ typedef  struct AccessedASCIISlaveType{   uint8_t stationAddress;       //站地址   uint8_t cmdOrder;             //当前命令在命令列表中的位置   uint16_t commandNumber;       //命令列表中命令的总数   uint8_t (*pReadCommand)[17];   //读命令列表   uint8_t *pLastCommand;        //上一次发送的命令   uint32_t flagPresetCoil;      //预置线圈控制标志位   uint32_t flagPresetReg;       //预置寄存器控制标志位 }AsciiAccessedSlaveType; /* 定义本地ASCII主站对象类型 */ typedef struct LocalASCIIMasterType{   uint32_t flagWriteSlave[8];   //写一个站控制标志位,最多256个站,与站地址对应。   uint16_t slaveNumber;         //从站列表中从站的数量   uint16_t readOrder;           //当前从站在从站列表中的位置   AsciiAccessedSlaveType *pSlave;         //从站列表   UpdateCoilStatusType pUpdateCoilStatus;       //更新线圈量函数   UpdateInputStatusType pUpdateInputStatus;     //更新输入状态量函数   UpdateHoldingRegisterType pUpdateHoldingRegister;     //更新保持寄存器量函数   UpdateInputResgisterType pUpdateInputResgister;       //更新输入寄存器量函数 }AsciiLocalMasterType; 4.2.13、ASCII主站对象初始化函数 /*初始化RTU主站对象*/ void InitializeASCIIMasterObject(AsciiLocalMasterType *master,uint16_t slaveNumber,AsciiAccessedSlaveType *pSlave,UpdateCoilStatusType pUpdateCoilStatus,UpdateInputStatusType pUpdateInputStatus,UpdateHoldingRegisterType pUpdateHoldingRegister,UpdateInputResgisterType pUpdateInputResgister); 参数:AsciiLocalMasterType *master,ASCII主站对象 uint16_t slaveNumber,从站的数量 AsciiAccessedSlaveType *pSlave,从站列表 UpdateCoilStatusType pUpdateCoilStatus,更新线圈量回调函数 UpdateInputStatusType pUpdateInputStatus,更新状态量回调函数 UpdateHoldingRegisterType pUpdateHoldingRegister,更新保持寄存器量回调函数 UpdateInputResgisterType pUpdateInputResgister,更新输入寄存器量回调函数 返回值:无返回值 4.2.14、生成访问ASCII从站的命令 /*生成访问ASCII从站的命令*/ uint16_t CreateAccessAsciiSlaveCommand(ObjAccessInfo objInfo,void *dataList,uint8_t *commandBytes); 参数:ObjAccessInfo objInfo,从站访问信息对象,由结构体定义 void *dataList,写从站对象的数据列表 uint8_t *commandBytes,生成的命令报文 返回值:生成的访问命令的长度,以字节为单位 4.2.15、ASCII主站解析从站的响应函数 /*解析收到的服务器相应信息*/ void ParsingAsciiSlaveRespondMessage(uint8_t *recievedMessage, uint8_t *command,uint16_t rxLength); 参数:uint8_t *recievedMessage,接收到的返回信息 uint8_t *command,已经下发到从站的命令列表 uint16_t rxLength,接收到的消息的长度 返回值:无 4.2.16、ASCII主站解析从站返回消息命令匹配函数 /*接收到返回信息后,判断是否是发送命令列表中命令的返回信息*/ int FindAsciiCommandForRecievedMessage(uint8_t *recievedMessage,uint8_t (*commandList)[17],uint16_t commandNumber); 参数:uint8_t *recievedMessage,接收的从站返回信息 uint8_t (*commandList)[17],主站下发过的命令列表 uint16_t commandNumber,存储的命令的条数 返回值:返回匹配命令所在的位置,无匹配时,返回“-1” 本函数只在RTU主站中,访问的数据量大且频繁,或者访问多个从站时使用,便于作正确的数据解析。 4.2.17、ASCII从站解析主站访问命令函数 /*解析接收到的信息,并返回合成的回复信息和信息的字节长度,通过回调函数*/ uint16_t ParsingAsciiMasterAccessCommand(uint8_t *receivedMessage, uint8_t *respondBytes, uint16_t rxLength, uint8_t StationAddress); 参数:uint8_t *receivedMesasage,接收到的主站报文信息 uint8_t *respondBytes,生成响应信息报文 uint16_t rxLength,接收到的报文的长度 返回值:生成的响应信息的长度,以字节为单位 第4章、数据处理函数 具体应用中还涉及到对数据对想的处理,不同的应用数据结构与处理方式千差万别,所以定义一些回调函数(实际使用弱化的函数__weak关键字)用于数据的处理。 4.3.1、获取线圈量值的函数 /*获取想要读取的Coil量的值*/ __weak void GetCoilStatus(uint16_t startAddress,uint16_t quantity,bool *statusList) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } 参数:uint16_t startAddress,要读取对象的起始地址 uint16_t quantity,要读取对象的数量 bool *statusList,获取的线圈量的数据值列表 返回值:无 4.3.2、获取输入状态值的函数 /*获取想要读取的InputStatus量的值*/ __weak void GetInputStatus(uint16_t startAddress,uint16_t quantity,bool *statusValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } 参数:uint16_t startAddress,要读取对象的起始地址 uint16_t quantity,要读取对象的数量 bool *statusValue,获取的输入状态量的数据值列表 返回值:无 4.3.3、获取保持寄存器值的函数 /*获取想要读取的保持寄存器的值*/ __weak void GetHoldingRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } 参数:uint16_t startAddress,要读取的保持寄存器对象的起始地址 uint16_t quantity,要读取的保持寄存器的数量 uint16_t *registerValue,获取的保持寄存器的值 返回值:无 4.3.4、获取输入寄存器值的函数 /*获取想要读取的输入寄存器的值*/ __weak void GetInputRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } 参数:uint16_t startAddress,要读取的输入寄存器的起始地址 uint16_t quantity,要读取的输入寄存器的数量 uint16_t *registerValue,获取的输入寄存器的值 返回值:无 4.3.5、设置单个线圈的值函数 /*设置单个线圈的值*/ __weak void SetSingleCoil(uint16_t coilAddress,bool coilValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } 参数:uint16_t coilAddress,所需要预置值的线圈地址 bool coilValue,所预置的值 返回值:无 4.3.6、设置单个寄存器值的函数 /*设置单个寄存器的值*/ __weak void SetSingleRegister(uint16_t registerAddress,uint16_t registerValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } 参数:uint16_t registerAddress,所预置的保持寄存器的地址 uint16_t registerValue,所预置的保持寄存器的值 返回值:无 4.3.7、设置多个线圈值的函数 /*设置多个线圈的值*/ __weak void SetMultipleCoil(uint16_t startAddress,uint16_t quantity,bool *statusValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } 参数:uint16_t startAddress,要预置的多个线圈的起始地址 uint16_t quantity,所要预知的线圈的数量 bool *statusValue,要预知的线圈值的列表 返回值:无 4.3.8、设置多个寄存器值的函数 /*设置多个寄存器的值*/ __weak void SetMultipleRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } 参数:uint16_t startAddress,所预置的多个保持寄存器的起始地址 uint16_t quantity,所要预置的保持寄存器的数量 uint16_t *registerValue,预知的保持寄存器值的列表 返回值:无 4.3.9、从站更新获取到的线圈量值的函数 /*更新读回来的线圈状态*/ __weak void UpdateCoilStatus(uint16_t startAddress,uint16_t quantity,bool *stateValue) {   //在客户端(主站)应用中实现 } 参数:uint16_t startAddress,读取值的线圈对象的起始地址 uint16_t quantity,所读取的线圈的数量 bool *stateValue,读取的线圈地址的列表 返回值:无 本程序为默认处理函数,各个主站对象可以单独定义更新函数,若没有定义则调用本函数。 4.3.10、从站更新获取到的输入状态值的函数 /*更新读回来的输入状态值*/ __weak void UpdateInputStatus(uint16_t startAddress,uint16_t quantity,bool *stateValue) {   //在客户端(主站)应用中实现 } 参数:uint16_t startAddress,所读取的输入状态对象的起始地址 uint16_t quantity,所读取的输入状态对象的数量 bool *stateValue,读取到的输入状态对象的值 返回值:无 本程序为默认处理函数,各个主站对象可以单独定义更新函数,若没有定义则调用本函数。 4.3.11、从站更新保持寄存器值的函数 /*更新读回来的保持寄存器*/ __weak void UpdateHoldingRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //在客户端(主站)应用中实现 } 参数:uint16_t startAddress,所读取的保持寄存器对象的起始地址 uint16_t quantity,所读取的保持寄存器对象的数据 uint16_t *registerValue,读取到的保持寄存器对象值列表 返回值:无 本程序为默认处理函数,各个主站对象可以单独定义更新函数,若没有定义则调用本函数。 4.3.12、从站更新输入寄存器值得函数 /*更新读回来的输入寄存器*/ __weak void UpdateInputResgister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //在客户端(主站)应用中实现 } 参数:uint16_t startAddress,所读取的输入寄存器对象的起始地址 uint16_t quantity,所读取的输入寄存器对象的数量 uint16_t *registerValue,读取到的输入寄存器值得列表 返回值:无 本程序为默认处理函数,各个主站对象可以单独定义更新函数,若没有定义则调用本函数。 第5章 一些相关说明 对于Modbus协议栈的整个开发内容,前面已经说得很清楚了,接下来我们说明一下与开发没有直接关系的内容。 首先,关于我为什么开发这个协议栈的问题。我们的初衷只是想能够在开发产品时不用每次都重写这一部分,而是可以不断的改进和使用达到复用的目的。当然在后来,我们觉得不只是我们自己可以使用,也可以将其公开,让任何愿意使用的人使用。源码网址是:https://github.com/foxclever/Modbus 其次,Modbus协议有国标,包括三个文件。我们这个协议栈就是按照国标开发的标准协议,包括有读写各种类型对象数据的功能,在一般的工业应用场合是完全够的。三个标准文件: GB/T 19582.1-2008 《基于Modbus协议的工业自动化网络规范 第1部分:Modbus应用协议》 GB/T 19582.2-2008 《基于Modbus协议的工业自动化网络规范 第1部分:Modbus协议在串行链路上的实现指南》 GB/T 19582.3-2008 《基于Modbus协议的工业自动化网络规范 第1部分:Modbus协议在TCP/IP上的实现指南》 最后,欢迎大家使用这个协议栈,但我们不就使用的最终结果负责。当然如果发现任何的不足,我们非常并欢迎大家将发现的问题告知我们,以便我们持续的改进之。 感谢您关注本软件,有需要的同仁可以上GitHub下载,同时欢迎给我们提出改进意见,有兴趣的同仁可以关注我们的公众号: Modbus协议栈综合实例参数列表站地址:1;波特率:115200;数据位:8;停止位:1;无校验序号数据类型变量名称参数名称地址读写属性取值范围缺省值描述1uint32_tbeatTime心跳检测40001只读每秒增加1次,监视系统是否正常运行2floatmbAI1模拟量测试40003只读mbAO1*33floatmbAO1模拟量测试40005读写0~100.01.1014uint16_tmbAI2模拟量测试40007只读mbAO2*25uint16_tmbAO2模拟量测试40008读写0~1001本站变量1floatmbSalve1AI1目标从站1的模拟量输入参数140009只读目标从站1模拟参数2uint32_tmbSalve1AI2目标从站1的模拟量输入参数240011只读目标从站1模拟参数5uint16_tmbSalve1AI3目标从站1的模拟量输入参数340013只读0目标从站1模拟参数6uint16_tmbSalve1AO1目标从站1的模拟量输出参数140014读写101目标从站1模拟参数7uint16_tmbSalve1AO2目标从站1的模拟量输出参数240015读写102目标从站1模拟参数8uint16_tmbSalve1AO3目标从站1的模拟量输出参数340016读写103目标从站1模拟参数1floatmbSalve2AI1目标从站2的模拟量输入参数140017只读目标从站2模拟参数2uint32_tmbSalve2AI2目标从站2的模拟量输入参数240019只读目标从站2模拟参数5uint16_tmbSalve2AI3目标从站2的模拟量输入参数340021只读0目标从站2模拟参数6uint16_tmbSalve2AO1目标从站2的模拟量输出参数140022读写目标从站2模拟参数7uint16_tmbSalve2AO2目标从站2的模拟量输出参数240023读写0目标从站2模拟参数8uint16_tmbSalve2AO3目标从站2的模拟量输出参数340024读写0目标从站2模拟参数1floatmbSalve3AI1目标从站3的模拟量输入参数140025只读目标从站3模拟参数2uint32_tmbSalve3AI2目标从站3的模拟量输入参数240027只读目标从站3模拟参数5uint16_tmbSalve3AI3目标从站3的模拟量输入参数340029只读0目标从站3模拟参数6uint16_tmbSalve3AO1目标从站3的模拟量输出参数140030读写目标从站3模拟参数7uint16_tmbSalve3AO2目标从站3的模拟量输出参数240031读写0目标从站3模拟参数8uint16_tmbSalve3AO3目标从站3的模拟量输出参数340032读写0目标从站3模拟参数1floatmbSalve4AI1目标从站4的模拟量输入参数140033只读目标从站4模拟参数2uint32_tmbSalve4AI2目标从站4的模拟量输入参数240035只读目标从站4模拟参数5uint16_tmbSalve4AI3目标从站4的模拟量输入参数340037只读0目标从站4模拟参数6uint16_tmbSalve4AO1目标从站4的模拟量输出参数140038读写目标从站4模拟参数7uint16_tmbSalve4AO2目标从站4的模拟量输出参数240039读写0目标从站4模拟参数8uint16_tmbSalve4AO3目标从站4的模拟量输出参数340040读写0目标从站4模拟参数1boolmbDI1数字量输入参数11只读数字量参数2boolmbDI2数字量输入参数22只读数字量参数3boolmbDI3数字量输入参数33只读数字量参数4boolmbDI4数字量输入参数44只读数字量参数5boolmbDO1数字量输出参数15读写数字量参数6boolmbDO2数字量输出参数26读写数字量参数7boolmbDO3数字量输出参数37读写数字量参数8boolmbDO4数字量输出参数48读写数字量参数1boolmbSalve1DI1目标从站1的数字量输入参数19只读目标从站1数字量参数2boolmbSalve1DI2目标从站1的数字量输入参数210只读目标从站1数字量参数3boolmbSalve1DI3目标从站1的数字量输入参数311只读目标从站1数字量参数4boolmbSalve1DI4目标从站1的数字量输入参数412只读目标从站1数字量参数5boolmbSalve1DO1目标从站1的数字量输出参数113读写目标从站1数字量参数6boolmbSalve1DO2目标从站1的数字量输出参数214读写目标从站1数字量参数7boolmbSalve1DO3目标从站1的数字量输出参数315读写目标从站1数字量参数8boolmbSalve1DO4目标从站1的数字量输出参数416读写目标从站1数字量参数1boolmbSalve2DI1目标从站2的数字量输入参数117只读目标从站2数字量参数2boolmbSalve2DI2目标从站2的数字量输入参数218只读目标从站2数字量参数3boolmbSalve2DI3目标从站2的数字量输入参数319只读目标从站2数字量参数4boolmbSalve2DI4目标从站2的数字量输入参数420只读目标从站2数字量参数5boolmbSalve2DO1目标从站2的数字量输出参数121读写目标从站2数字量参数6boolmbSalve2DO2目标从站2的数字量输出参数222读写目标从站2数字量参数7boolmbSalve2DO3目标从站2的数字量输出参数323读写目标从站2数字量参数8boolmbSalve2DO4目标从站2的数字量输出参数424读写目标从站2数字量参数1boolmbSalve3DI1目标从站3的数字量输入参数125只读目标从站3数字量参数2boolmbSalve3DI2目标从站3的数字量输入参数226只读目标从站3数字量参数3boolmbSalve3DI3目标从站3的数字量输入参数327只读目标从站3数字量参数4boolmbSalve3DI4目标从站3的数字量输入参数428只读目标从站3数字量参数5boolmbSalve3DO1目标从站3的数字量输出参数129读写目标从站3数字量参数6boolmbSalve3DO2目标从站3的数字量输出参数230读写目标从站3数字量参数7boolmbSalve3DO3目标从站3的数字量输出参数331读写目标从站3数字量参数8boolmbSalve3DO4目标从站3的数字量输出参数432读写目标从站3数字量参数1boolmbSalve4DI1目标从站4的数字量输入参数133只读目标从站4数字量参数2boolmbSalve4DI2目标从站4的数字量输入参数234只读目标从站4数字量参数3boolmbSalve4DI3目标从站4的数字量输入参数335只读目标从站4数字量参数4boolmbSalve4DI4目标从站4的数字量输入参数436只读目标从站4数字量参数5boolmbSalve4DO1目标从站4的数字量输出参数137读写目标从站4数字量参数6boolmbSalve4DO2目标从站4的数字量输出参数238读写目标从站4数字量参数7boolmbSalve4DO3目标从站4的数字量输出参数339读写目标从站4数字量参数8boolmbSalve4DO4目标从站4的数字量输出参数440读写目标从站4数字量参数 目标从站1参数列表站地址:1;波特率:9600;数据位:8;停止位:1;无校验序号数据类型变量名称参数名称地址读写属性取值范围缺省值描述1floatmbSalve1AI1目标从站1的模拟量输入参数140001只读目标从站1模拟参数2uint32_tmbSalve1AI2目标从站1的模拟量输入参数240003只读目标从站1模拟参数5uint16_tmbSalve1AI3目标从站1的模拟量输入参数340005只读0目标从站1模拟参数6uint16_tmbSalve1AO1目标从站1的模拟量输出参数140006读写目标从站1模拟参数7uint16_tmbSalve1AO2目标从站1的模拟量输出参数240007读写0目标从站1模拟参数8uint16_tmbSalve1AO3目标从站1的模拟量输出参数340008读写0目标从站1模拟参数1boolmbSalve1DI1目标从站1的数字量输入参数11只读目标从站1数字量参数2boolmbSalve1DI2目标从站1的数字量输入参数22只读目标从站1数字量参数3boolmbSalve1DI3目标从站1的数字量输入参数33只读目标从站1数字量参数4boolmbSalve1DI4目标从站1的数字量输入参数44只读目标从站1数字量参数5boolmbSalve1DO1目标从站1的数字量输出参数15读写目标从站1数字量参数6boolmbSalve1DO2目标从站1的数字量输出参数26读写目标从站1数字量参数7boolmbSalve1DO3目标从站1的数字量输出参数37读写目标从站1数字量参数8boolmbSalve1DO4目标从站1的数字量输出参数48读写目标从站1数字量参数目标从站2参数列表站地址:2;波特率:9600;数据位:8;停止位:1;无校验序号数据类型变量名称参数名称地址读写属性取值范围缺省值描述1floatmbSalve2AI1目标从站2的模拟量输入参数140001只读目标从站2模拟参数2uint32_tmbSalve2AI2目标从站2的模拟量输入参数240003只读目标从站2模拟参数5uint16_tmbSalve2AI3目标从站2的模拟量输入参数340005只读0目标从站2模拟参数6uint16_tmbSalve2AO1目标从站2的模拟量输出参数140006读写目标从站2模拟参数7uint16_tmbSalve2AO2目标从站2的模拟量输出参数240007读写0目标从站2模拟参数8uint16_tmbSalve2AO3目标从站2的模拟量输出参数340008读写0目标从站2模拟参数1boolmbSalve2DI1目标从站2的数字量输入参数11只读目标从站2数字量参数2boolmbSalve2DI2目标从站2的数字量输入参数22只读目标从站2数字量参数3boolmbSalve2DI3目标从站2的数字量输入参数33只读目标从站2数字量参数4boolmbSalve2DI4目标从站2的数字量输入参数44只读目标从站2数字量参数5boolmbSalve2DO1目标从站2的数字量输出参数15读写目标从站2数字量参数6boolmbSalve2DO2目标从站2的数字量输出参数26读写目标从站2数字量参数7boolmbSalve2DO3目标从站2的数字量输出参数37读写目标从站2数字量参数8boolmbSalve2DO4目标从站2的数字量输出参数48读写目标从站2数字量参数目标从站1参数列表站地址:3;波特率:9600;数据位:8;停止位:1;无校验序号数据类型变量名称参数名称地址读写属性取值范围缺省值描述1floatmbSalve3AI1目标从站3的模拟量输入参数140001只读目标从站3模拟参数2uint32_tmbSalve3AI2目标从站3的模拟量输入参数240003只读目标从站3模拟参数5uint16_tmbSalve3AI3目标从站3的模拟量输入参数340005只读0目标从站3模拟参数6uint16_tmbSalve3AO1目标从站3的模拟量输出参数140006读写目标从站3模拟参数7uint16_tmbSalve3AO2目标从站3的模拟量输出参数240007读写0目标从站3模拟参数8uint16_tmbSalve3AO3目标从站3的模拟量输出参数340008读写0目标从站3模拟参数1boolmbSalve3DI1目标从站3的数字量输入参数11只读目标从站3数字量参数2boolmbSalve3DI2目标从站3的数字量输入参数22只读目标从站3数字量参数3boolmbSalve3DI3目标从站3的数字量输入参数33只读目标从站3数字量参数4boolmbSalve3DI4目标从站3的数字量输入参数44只读目标从站3数字量参数5boolmbSalve3DO1目标从站3的数字量输出参数15读写目标从站3数字量参数6boolmbSalve3DO2目标从站3的数字量输出参数26读写目标从站3数字量参数7boolmbSalve3DO3目标从站3的数字量输出参数37读写目标从站3数字量参数8boolmbSalve3DO4目标从站3的数字量输出参数48读写目标从站3数字量参数目标从站1参数列表站地址:4;波特率:9600;数据位:8;停止位:1;无校验序号数据类型变量名称参数名称地址读写属性取值范围缺省值描述1floatmbSalve4AI1目标从站4的模拟量输入参数140001只读目标从站4模拟参数2uint32_tmbSalve4AI2目标从站4的模拟量输入参数240003只读目标从站4模拟参数5uint16_tmbSalve4AI3目标从站4的模拟量输入参数340005只读0目标从站4模拟参数6uint16_tmbSalve4AO1目标从站4的模拟量输出参数140006读写目标从站4模拟参数7uint16_tmbSalve4AO2目标从站4的模拟量输出参数240007读写0目标从站4模拟参数8uint16_tmbSalve4AO3目标从站4的模拟量输出参数340008读写0目标从站4模拟参数1boolmbSalve4DI1目标从站4的数字量输入参数11只读目标从站4数字量参数2boolmbSalve4DI2目标从站4的数字量输入参数22只读目标从站4数字量参数3boolmbSalve4DI3目标从站4的数字量输入参数33只读目标从站4数字量参数4boolmbSalve4DI4目标从站4的数字量输入参数44只读目标从站4数字量参数5boolmbSalve4DO1目标从站4的数字量输出参数15读写目标从站4数字量参数6boolmbSalve4DO2目标从站4的数字量输出参数26读写目标从站4数字量参数7boolmbSalve4DO3目标从站4的数字量输出参数37读写目标从站4数字量参数8boolmbSalve4DO4目标从站4的数字量输出参数48读写目标从站4数字量参数 --- ### 194. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus作为开放式的工业通讯协议,在各种工业设备中应用极其广泛。本人也使用Modbus通讯很多年了,或者用现成的,或者针对具体应用开发,一直以来都想要开发一个比较通用的协议栈能在后续的项目中复用,而不必每次都写一遍。现在利用项目研发的机会,开发一个自己的Modbus协议栈。 Modbus有国际标准,也有国家标准,内容是完全一样的。在标准钟支持2种物理链路:一是基于RS485(RS232)的串行链路;二是基于以太网的TCP/IP链路。事实上,Modbus协议作为一种应用层协议对物理键子并没有特别的要求,光纤、无线等都是可以实现的。 本次主要是开发Modbus RTU和Modbus TCP两种标准协议方式,支持常用的功能码: 功能码名称实现描述0x01读线圈是对可读写型的状态量进行读取0x02读离散输入是对只读型的状态量进行读取0x03读保持寄存器是对可读写型的寄存器量进行读取0x04读输入寄存器是对只读型的寄存器量进行读取0x05写单个线圈是对单个的读写型的状态量进行写入0x06写单个寄存器是对单个的读写型的寄存器量进行写入0x0F写多个线圈是对多个的读写型的状态量进行写入0x10写多个寄存器是对多个的读写型的寄存器量进行写入 Modbus协议是一种主从(或者说客户端/服务器)模式协议,有主站(客户端)发起事务请求,从站(服务器)响应事务请求。一般我们想要访问(或者说被访问)的设备即为从站(服务器),而我们通常去访问别人的设备就是主站(客户端)。通常在RTU时被称为主站和从站,而在TCP方式时被称为服务器和客户端。这种称呼只是叫法不同,但在本质上是没有区别我的。后续这两种称呼我们会同时使用。在这次开发中,我们计划同时实现主站和从站的功能。 1、标准流程 启动MODBUS 事务处理的客户机创建 MODBUS 应用数据单元。当从客户机向服务器设备发送报文时,功能码向服务器指示将执行哪种操作。 从客户机向服务器设备发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作。如果在一个正确接收的 MODBUS ADU 中,不出现与请求 MODBUS 功能有关的差错,那么服务器至客户机的响应数据域包括请求数据。 正常事务处理流程 如果出现与请求 MODBUS 功能有关的差错,那么域包括一个异常码,服务器应用能够使用这个域确定下一个执行的操作。当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)。对于一个正常响应来说,服务器仅对原始功能码响应。 异常事务处理流程 2、操作设计 根据我们对Modbus标准事务流程的理解,我们来设计主站和从站的具体操作过程。 主站操作流程: (1)、初始化主站,站标识符,定时器、 (2)、生成访问命令 生成命令ADU分两层实现:网络层和链路层。 网络层实现与具体链路无关的PDU(包括功能码和数据,这里的数据指传送的数据,并非指变量的值,事实上数量和地址也包含在内)。对应的文件是mbpdu.c/.h,实现对pud单元的数据处理,包括命令和响应。 链路层实现ADU的封装。对应的文件是mbrtu.c/.h(和mbtcp.c/.h和mbascii.c/.h),实现ADU单元的封装;同时作为从站时,写操作的响应也在此处封装。 (3)、定时发送访问命令,读命令定是轮询,写命令具有更高的优先级。在有写命令时暂停读命令, (4)、解析接收到的数据,进行相应操作 从站操作流程: (1)、协议栈初始化:从站地址设置,创建数据存储域,访问控制 (2)、从站接收消息并解析 解析消息后操作数据(读写对应对象的值) 生成响应 (3)、生成响应数据并回复 3、命令格式 不同的功能码具有不同的消息格式,我们只简单说一下我们将要实现的以上8中功能码的信息格式。 (1)功能码0x01:读线圈 在一个远程设备中,使用该功能码读取线圈的1至2000个连续状态。请求 PDU详细说明了起始地址,即指定的第一个线圈地址和线圈编号。从零开始寻址线圈。因此寻址线圈 1-16 为 0-15。 根据数据域的每个比特将响应报文中的线圈分成为一个线圈。指示状态为 1= ON 和 0= OFF。第一个数据字节的 LSB(最低有效位)包括在询问中寻址的输出。其它线圈依次类推,一直到这个字节的高位端为止,并在后续字节中从低位到高位的顺序。 如果返回的输出数量不是八的倍数,将用零填充最后数据字节中的剩余比特(一直到字节的高位端)。字节数量域说明了数据的完整字节数。具体格式举例如下: (2)功能码0x02:读离散量输入 在一个远程设备中,使用该功能码读取离散量输入的 1 至 2000 连续状态。请求 PDU 详细说明了起始地址,即指定的第一个输入地址和输入编号。从零开始寻址输入。因此寻址输入 1-16 为 0-15。 根据数据域的每个比特将响应报文中的离散量输入分成为一个输入。指示状态为1=ON 和0=OFF。第一个数据字节的 LSB(最低有效位)包括在询问中寻址的输入。其它输入依次类推,一直到这个字节的高位端为止,并在后续字节中从低位到高位的顺序。 如果返回的输入数量不是八的倍数,将用零填充最后数据字节中的剩余比特(一直到字节的高位端)。字节数量域说明了数据的完整字节数。具体格式举例如下: 事实上,功能码0x01和0x02的数据格式是完全一样的,操作方式也是完全一样的,所不同只是操作的对象不同。 (3)功能码0x03:读保持寄存器 在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。请求 PDU 说明了起始寄存器地址和寄存器数量。从零开始寻址寄存器。因此,寻址寄存器 1-16 为 0-15。 将响应报文中的寄存器数据分成每个寄存器有两字节,在每个字节中直接地调整二进制内容。 对于每个寄存器,第一个字节包括高位比特,并且第二个字节包括低位比特。具体的格式举例如下: 响应信息的长度与具体读取的数据量有关。 (4)功能码0x04:读输入寄存器 在一个远程设备中,使用该功能码读取 1 至大约 125 的连续输入寄存器。请求 PDU 说明了起始地址和寄存器数量。从零开始寻址寄存器。因此,寻址输入寄存器 1-16 为 0-15。 将响应报文中的寄存器数据分成每个寄存器为两字节,在每个字节中直接地调整二进制内容。 对于每个寄存器,第一个字节包括高位比特,并且第二个字节包括低位比特。具体的格式举例如下: 事实上,功能码0x03和0x04的数据格式是完全一样的,操作方式也是完全一样的,所不同只是操作的对象不同。响应信息的长度与具体读取的数据量有关。 (5)功能码0x05:写单个线圈 在一个远程设备上,使用该功能码写单个输出为 ON 或 OFF。 请求数据域中的常量说明请求的ON/OFF状态。十六进制值0xFF00请求输出为 ON。十六进制值0x0000 请求输出为OFF。其它所有值均是非法的,并且对输出不起作用。 请求 PDU 说明了强制的线圈地址。从零开始寻址线圈。因此,寻址线圈1为0。线圈值域的常量说明请求的 ON/OFF 状态。十六进制值 0XFF00 请求线圈为 ON。十六进制值 0X0000 请求线圈为OFF。其它所有值均为非法的,并且对线圈不起作用。 正常响应是请求的应答,在写入线圈状态之后返回这个正常响应。具体的格式举例如下: (6)功能码0x06:写单个寄存器 在一个远程设备中,使用该功能码写单个保持寄存器。 请求 PDU 说明了被写入寄存器的地址。从零开始寻址寄存器。因此,寻址寄存器1为0。 正常响应是请求的应答,在写入寄存器内容之后返回这个正常响应。具体的格式举例如下: (7)功能码0x0F:写多个线圈 在一个远程设备中,使用该功能码强制线圈序列中的每个线圈为ON或OFF。请求PDU说明了强制的线圈参考。从零开始寻址线圈。因此,寻址线圈1为0。 请求数据域的内容说明了被请求的ON/OFF状态。域比特位置中的逻辑“1”请求相应输出为ON。域比特位置中的逻辑“0”请求相应输出为 OFF。 正常响应返回功能码、起始地址和强制的线圈数量。具体的格式举例如下: (8)功能码0x10:写多个寄存器 在一个远程设备中,使用该功能码写连续寄存器块(1至约120个寄存器)。 在请求数据域中说明了请求写入的值。每个寄存器将数据分成两字节。 正常响应返回功能码、起始地址和被写入寄存器的数量。具体的格式举例如下: 清楚了以上这些说明,我们就可以开始Modbus协议的开发之旅了。 前面我们已经对Modbus的基本事务作了说明,也据此设计了我们将要实现的主从站的操作流程。这其中与Modbus直接相关的就是Modbus消息帧的生成。Modbus消息帧也是实现Modbus通讯协议的根本。 1、Modbus消息帧分析 MODBUS协议在不同的物理链路上的消息帧有一些差异,但我们分析一下就会发现,在这些不同的消息帧中具有一下相同的部分,这对我们实现统一的数据操作非常重要,具体描述如下: (1)、简单协议数据单元 MODBUS协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。简单协议数据单元的结构如下: PDU是一个与具体的传输网络无关的部分,包含功能码和数据。对于特定总线或网络上的 MODBUS 协议只是在PDU的基础上在应用数据单元(ADU)上引入一些附加域。 数据单元部分的开发是最基本的部分,主要是2各方面的类容:一是生成客户端(主站)访问服务器(从站)的命令部分;二是生成服务器(从站)响应客户端(主站)回复部分。 (2)、RTU的应用数据单元 对于在串行链路上运行的Modbus协议,其应用数据单元(ADU)是在PDU的基础上,在前面加上地址域,后面加上数据校验。格式如下图所示: 地址域就是所访问从站的地址,为一个8位无符号数,取值0-255,但0和255有固定含义不能使用。CRC校验采用的是CRC16校验方式。 (3)、TCP的应用数据单元 在以太网链路上运行的Modbus协议,其应用数据单元(ADU)是在PDU的基础上添加上MBAP报文头形成的,具体格式如下图: 对于MBAP 报文头,包括下列域: 域长度描述客户机服务器事务元标识符2 个字节MODBUS 请求/响应事务处理的识别码客户机启动服务器从接收的请求中重新复制协议标识符2 个字节0=MODBUS 协议客户机启动服务器从接收的请求中重新复制长度2 个字节以下字节的数量客户机启动(请求)服务器(响应)启动单元标识符1 个字节串行链路或其它总线上连接的远程从站的识别码客户机启动服务器从接收的请求中重新复制 从上表中可知报文头为 7 个字节长: 事务处理标识符:用于事务处理配对。在响应中,MODBUS 服务器复制请求的事务处理标识符。协议标识符:用于系统内的多路复用。通过值 0 识别 MODBUS 协议。 长度:长度域是下一个域的字节数,包括单元标识符和数据域。 单元标识符:为了系统内路由,使用这个域。专门用于通过以太网TCP-IP 网络和MODBUS串行链路之间的网关对MODBUS或MODBUS+串行链路从站的通信。说的简单点就是串行链路中的地址域。MODBUS客户机在请求中设置这个域,在响应中服务器必须利用相同的值返回这个域。 2、数据帧的具体组成分析 从以上对简单协议基本数据元、RTU应用数据单元和TCP应用数据单元报文格式的分析,我们发现对于基本数据单元部分已一致的,所以我们可以考虑来分层封装协议操作部分: 最开始实现Modbus基本数据单元,这是数据公用部分与具体的应用无关,只需要封装一次,对于这部分的开发只需要按照Modbus的标准协议来开发就好,本次我们计划实现的功能有8个: 功能码名称实现描述0x01读线圈是对可读写型的状态量进行读取0x02读离散输入是对只读型的状态量进行读取0x03读保持寄存器是对可读写型的寄存器量进行读取0x04读输入寄存器是对只读型的寄存器量进行读取0x05写单个线圈是对单个的读写型的状态量进行写入0x06写单个寄存器是对单个的读写型的寄存器量进行写入0x0F写多个线圈是对多个的读写型的状态量进行写入0x10写多个寄存器是对多个的读写型的寄存器量进行写入 这8个也是Modbus协议所定义的最主要的功能,现在对这几种功能码的报文格式描述如下: (1)读线圈0x01 读线圈就是都一种可以写的开关量,因为Modbus协议起源于PLC应用,而线圈是对PLC的DO输出的称呼,一般适用于主站对从站下达操作命令。读这种具有读写功能的状态量的数据格式如下: 其下发的命令格式为:域名+功能码+起始地址+数量。 (2)读离散输入0x02 读状态输入是读取一种只读开关量信号,对应于PLC中的数字输入量。读取这种只读型开关输入量的格式如下: 其下发的命令格式为:域名+功能码+起始地址+数量。 (3)读保持寄存器0x03 保持寄存器就是指可以读写的16位数据,通过单个或多个保持寄存器可以用来表示各种数据,如8位整数、16为整数、32位整数、64位整数以及单双精度浮点数等。读取保持寄存器的报文格式如下: 其下发的命令格式为:域名+功能码+起始地址+数量。 (4)读输入寄存器0x04 输入寄存器是一种只读形式的16位数据。通过单个或多个输入寄存器可以表示8位整数、16为整数、32位整数、64位整数以及单双精度浮点数等。读取输入寄存器的报文格式如下: 其下发的命令格式为:域名+功能码+起始地址+数量。 (5)写单个线圈0x05 写单个线圈量就是对单个的可读写的开关量进行操作,但是其并非是直接写“0”或者“1”,而是在需要写“1”时发送0xFF00;而在需要写“0”时发送0x0000,其具体的报文格式如下: 其下发的命令格式为:域名+功能码+输出地址+输出值。命令的具体内容与读操作有区别但,格式却是完全一样,在编程时实际读和写可以封装在一起。 (6)写单个寄存器0x06 写单个寄存器就是对单个的保持寄存器进行操作,数据的格式依然是一样的,实际应用中只适用于对16位整型数据的操作,对于浮点数等则不可以。 其下发的命令格式为:域名+功能码+输出地址+输出值。命令的具体内容与读操作有区别但,格式却是完全一样,在编程时实际读和写可以封装在一起。 (7)写多个线圈0x0F 写多个线圈的操作对象与写单个线圈是完全一样的,不同的是数量和操作值,特别是值,写“1”就是“1”,写“0”就是 “0”,这是与写单个线圈的区别。 其下发的命令格式为:域名+功能码+起始地址+输出数量+字节数+输出值。命令报文与前面的几种读写操作有较大的区别,必须要单独处理。 (8)写多个寄存器0x10 写多个寄存器的就是对多个可读写寄存器同时进行操作,数据报文的格式与写多个线圈是一致的。 其下发的命令格式为:域名+功能码+起始地址+输出数量+字节数+输出值。 3、基本数据单元的编程 经过上面的分析,我们发现不论是在什么样的物理链路上实现的应用数据,器基本数据段都是相同的。其实加上域名段的格式也是相同的,所以我们就将 域名+PDU一起作为最基本的数据单元来实现。 对于基本数据单元的实现由分为2种情况:一是作为主站(客户端)时,对从站(服务器)的下发命令;二是作为从站(服务器)时,对主站(客户端)命令的响应。所以我们将这两种情况分别封装为2个基础函数: (1)、作为RTU主站(TCP客户端)时,生成读写RTU从站(TCP服务器)对象的命令: uint16_t GenerateReadWriteCommand(ObjAccessInfo objInfo,bool *statusList,uint16_t *registerList,uint8_t *commandBytes) 参数分别是PDU单元的基本信息,写对象的对应数据,以及生成的命令字节。而返回值则是生成的命令的长度。 (2)、作为从站(服务器)时,生成主站读访问的响应。对于响应因为写操作的响应实际上就是复制主站(客户端)的命令的一部分,所以我们实际需要生成的响应是包括0x01、0x02、0x03、0x04功能码的情形。 uint16_t GenerateMasterAccessRespond(uint8_t *receivedMessage,bool *statusList,uint16_t *registerList,uint8_t *respondBytes) 参数分别是接收到的信息,读取的对象的数据,以及返回的响应消息。而返回值则是返回的响应消息的长度。 4、RTU应用数据单元的编程 对于RTU应用数据单元来说,其报文格式就是:“域名+PDU+CRC”,而域名+PDU我们在上一节中已经实现了,所以要实现RTU的数据单元实际上我们只需要加上CRC校验就已经完成了。 对于RTU数据单元的实现由分为2种情况:一是作为主站时,对从站的下发命令;二是作为从站时,对主站命令的响应。所以我们将这两种情况分别封装为2个基础函数: (1)、作为RTU主站时,生成读写RTU从站对象的命令: /*生成读写从站数据对象的命令,命令长度包括2个校验字节*/ uint16_t SyntheticReadWriteSlaveCommand(ObjAccessInfo slaveInfo,bool *statusList,uint16_t *registerList,uint8_t *commandBytes) 参数分别是从站基本信息,下发的数据列表,以及最终生成的命令数组。返回值是是命令的长度。 (2)、作为从站时,生成主站读访问的响应: /*生成从站应答主站的响应*/ uint16_t SyntheticSlaveAccessRespond(uint8_t *receivedMessage,bool *statusList,uint16_t *registerList,uint8_t *respondBytes) 参数分别是接收到的信息,返回的数据列表,生成的响应信息列表。返回值是响应信息列表的长度。 5、TCP应用数据单元的编程 而对于TCP应用数据单元来说,与RTU类式,起报文格式是:“MBAP头+PDU”,而PDU单元就是前面定义的,所以只需要加上MBAP头部就可以了,事实上MBAP头部的实现格式是固定的。 对于TCP应用数据单元的实现同样分为2中情况:一是作为客户端时,对服务器的下发命令;二是作为服务器时,对客户端命令的响应。所以我们将这两种情况分别封装为2个基础函数: (1)、作为TCP客户端时,生成读写TCP服务器对象的命令: /*生成读写服务器对象的命令*/ uint16_t SyntheticReadWriteTCPServerCommand(ObjAccessInfo objInfo,bool *statusList,uint16_t *registerList,uint8_t *commandBytes) (2)、作为(服务器时,生成客户端读写访问的响应: /*合成对服务器访问的响应,返回值为命令长度*/ uint16_t SyntheticServerAccessRespond(uint8_t *receivedMessage,bool *statusList,uint16_t *registerList,uint8_t *respondBytes) 6、结束语 其实到这里我们对Modbus基本协议已经基本实现,甚至使用这些基本操作也能实现Modbus的通讯。事实上很多人在应用写的Modbus通讯协议比这还要简单,也能实现部分的Modbus通讯功能。当然这不是我们的目标,否则就不需要专门开发库了,我们要进一步封装,让其更通用也更易用才是我们需要的。 在完成了前面的工作后,我们就可以实现有针对性的应用了,首先我们来实现Modbus TCP的服务器端应用。当然我们不是做具体的应用,而是对Modbus TCP的服务器端应用进行封装以供有需要时调用。 这里我们不涉及TCP的协议,这部分与Modbus没有必然联系,我们只是在其应用层运行Modbus协议而已。 对于Modbus TCP的服务器我们需要实现几个功能:首先是对接收到客户端命令进行解析,我们只实现前面提到的8中常用的功能吗的支持。其次在解析完成后,我们要实现对应各种功能码的操作。具体架构如下: 1、命令解析 服务器作为被动端接收到客户端的请求后,安装请求进行处理。所以服务器接收到信息后首先对其进行解析,这里我们只需要一个解析函数就可以完成,当在具体应用中时只要将接收到的信息调用这个函数解析就可以了。 /*解析接收到的信息,返回响应命令的长度*/ uint16_t ParsingClientAccessCommand(uint8_t *receivedMessage,uint8_t *respondBytes) 其实对外来说只有这一个函数时可见的。当我们要开发一个TCP Server的应用时,就调用这个函数。 2、命令处理 命令解析出来了之后,按不同的功能码来进行不同的处理,我们支持8种功能码,每种功能吗都对应处理部分,很多时候大家都会在解析的时候根据解析结果处理,这势必需要一个很大的解析函数。为了简化操作,我们将每个功能码对应的处理部分都封装为一个函数。然后使用一个函数指针数组来动态调用这些函数,从而简化这些函数。 首先我们需要8个处理对应个功能码操作的函数: /*处理读线圈状态命令*/ static uint16_t HandleReadCoilStatusCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理读输入状态命令*/ static uint16_t HandleReadInputStatusCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理读保持寄存器命令*/ static uint16_t HandleReadHoldingRegisterCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理读输入寄存器命令*/ static uint16_t HandleReadInputRegisterCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理写单个线圈命令*/ static uint16_t HandleWriteSingleCoilCommand(uint16_t coilAddress,uint16_t coilValue,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理写单个寄存器命令*/ static uint16_t HandleWriteSingleRegisterCommand(uint16_t registerAddress,uint16_t registerValue,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理写多个线圈状态*/ static uint16_t HandleWriteMultipleCoilCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理写多个寄存器状态*/ static uint16_t HandleWriteMultipleRegisterCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) 然后我们定义一个函数指针数组来调用这下函数: uint16_t (*HandleClientCommand[])(uint16_t,uint16_t,uint8_t *,uint8_t *)={HandleReadCoilStatusCommand,                                                                           HandleReadInputStatusCommand,                                                                           HandleReadHoldingRegisterCommand,                                                                           HandleReadInputRegisterCommand,                                                                           HandleWriteSingleCoilCommand,                                                                           HandleWriteSingleRegisterCommand,                                                                           HandleWriteMultipleCoilCommand,                                                                           HandleWriteMultipleRegisterCommand}; 3、响应的生成 对于响应命令的生成其实在第二篇中已经说过了,需要说明的是各种写数据的具体数值以及获得读数据的各种具体数值我们将在单独的文件中去实现,因为这部分TCP和RTU是相同的,我们将在后续的篇章中说明。 这一次我们封装Modbus TCP Client应用。同样的我们也不是做具体的应用,而是实现TCP客户端的基本功能。我们将TCP客户端的功能封装为函数,以便在开发具体应用时调用。 对于TCP客户端我们主要实现的功能有两个:其一是生成访问TCP服务器的命令,总共支持8中功能码。其二是对TCP服务器端返回的信息进行解析并根据结果进行各种操作,同样也是支持8中功能吗的操作。具体软件访问结构如下: 1、访问命令的生成 客户端作为主动交互端,需要向服务器发各种操作请求命令。所以对于TCP客户端来说,首先要生成访问服务器的命令。生成命令只需要按标准的协议格式来生成即可,目前我们只支持前面提到的8个功能码。 /*生成访问服务器的命令*/ uint16_t CreateAccessServerCommand(ObjAccessInfo objInfo,void *dataList,uint8_t *commandBytes) 这样在开发具体的客户端应用时只需要调用这个函数来生成访问服务器的命令就可以了。 2、响应信息的解析 如前一节所述,服务器收到命令后,根据命令进行处理并生成响应信息返回给客户端。客户端接到命令后首先要对响应信息进行解析,解析的过程其实与服务器端是一致的。所不同的是,不需要再根据解析结果生成响应信息了。 /*解析收到的服务器相应信息*/ void ParsingServerRespondMessage(uint8_t *recievedMessage) 这样在开发客户端应用时,我们调用这一函数来解析响应信息就可以了。 3、响应处理 对于解析出来的信息,我们需要根据情况实现操作,比如修改变量的值等,应为主要支持的操作码是8个,理论上对应的每种功能码都会有不同的操作,但事实上,由于写操作命令已经不需要做任何操作了,所以对应的操作实际上只有读操作的4种功能码。 /*处理读从站状态量返回信息,读线圈状态位0x01功能码*/ static void HandleReadCoilStatusRespond(uint8_t *receivedMessage,uint16_t startAddress,uint16_t quantity) /*处理读从站状态量返回信息,读输入状态位0x02功能码*/ static void HandleReadInputStatusRespond(uint8_t *receivedMessage,uint16_t startAddress,uint16_t quantity) /*处理读从站寄存器值的返回信息,读保持寄存器0x03功能码)*/ static void HandleReadHoldingRegisterRespond(uint8_t *receivedMessage,uint16_t startAddress,uint16_t quantity) /*处理读从站寄存器值的返回信息,读输入寄存器0x04功能码*/ static void HandleReadInputRegisterRespond(uint8_t *receivedMessage,uint16_t startAddress,uint16_t quantity) 同样的,我们也定义一个函数指针数组来实现这些函数的调用: void (*HandleServerRespond[])(uint8_t *,uint16_t,uint16_t)={HandleReadCoilStatusRespond, HandleReadInputStatusRespond, HandleReadHoldingRegisterRespond, HandleReadInputRegisterRespond}; 如此,TCP客户端的封装就完成了,当然具体的数据处理部分需要在开发具体应用是才能确定。 Modbus在串行链路上分为Slave和Master,这一节我们就来开发Slave。对于Modbus RTU从站来说,需要实现的功能其实与Modbus TCP的服务器端是一样的。其操作过程也是一样的。首先接收到主站的访问命令,对该命令报文进行解析,这里我们也只是实现前面提到的8种功能码。其次我们根据解析的结果进行对应的操作,具体的软件访问结构如下: 从上图中不难发现实际是3步: 第1步、接到命令后先解析。解析的方式与前面几节中的类式。 第2步、根据解析结果进行操作。包括更具命令修改或者获取变量的值。 第3步、生成响应并返回给主机。 1、解析主机命令 从机在接收到主机的命令报文后,对其进行解析,我们暂且支持上图所示的8种功能码。 /*解析接收到的信息,并返回合成的回复信息和信息的字节长度,通过回调函数*/ uint16_t ParsingMasterAccessCommand(uint8_t *receivedMessage,uint8_t *respondBytes,uint16_t rxLength) 该函数接收接受到的报文,并生成响应信息报文,返回值是响应报文的长度。在开发应用是将接收到的报文发送个该函数,并将生成的响应信息返回个客户端就可以了。 2、结果操作 解析之后无论是读命令还是写命令都需要进行相应的操作。我们根据不同的功能码封装不同的操作: /*处理读线圈状态命令*/ static uint16_t HandleReadCoilStatusCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理读输入状态命令*/ static uint16_t HandleReadInputStatusCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理读保持寄存器命令*/ static uint16_t HandleReadHoldingRegisterCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理读输入寄存器命令*/ static uint16_t HandleReadInputRegisterCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理写单个线圈命令*/ static uint16_t HandleWriteSingleCoilCommand(uint16_t coilAddress,uint16_t coilValue,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理写单个寄存器命令*/ static uint16_t HandleWriteSingleRegisterCommand(uint16_t registerAddress,uint16_t registerValue,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理写多个线圈状态*/ static uint16_t HandleWriteMultipleCoilCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) /*处理写多个寄存器状态*/ static uint16_t HandleWriteMultipleRegisterCommand(uint16_t startAddress,uint16_t quantity,uint8_t *receivedMessage,uint8_t *respondBytes) 同样我们也是定义一个函数指针数组来实现这8个函数的调用: uint16_t (*HandleMasterCommand[])(uint16_t,uint16_t,uint8_t *,uint8_t *)={HandleReadCoilStatusCommand,                                                                           HandleReadInputStatusCommand,                                                                           HandleReadHoldingRegisterCommand,                                                                           HandleReadInputRegisterCommand,                                                                           HandleWriteSingleCoilCommand,                                                                           HandleWriteSingleRegisterCommand,                                                                           HandleWriteMultipleCoilCommand,                                                                           HandleWriteMultipleRegisterCommand}; 3、生成从机响应 处理完还需要生成从机的相应信息,无论是读操作命令还是写操作命令,我们均在对应的功能码处理时生成响应报文。这么一来在开发应用时,只需要调用解析函数据可以实现全部的功能了。 这一节我们来封装最后一种应用(Modbus RTU Master应用),RTU主站的开发与TCP客户端的开发是一致的。同样的我们也不是做具体的应用,而是实现RTU主站的基本功能。我们将RTU主站的功能封装为函数,以便在开发具体应用时调用。 对于RTU主站我们主要实现的功能有两个:其一是生成访问RTU从站的命令,总共支持8中功能码。其二是对RTU从站端返回的信息进行解析并根据结果进行各种操作,同样也是支持8中功能吗的操作。具体软件访问结构如下: 1、访问命令的生成 客户端作为主动交互端,需要向服务器发各种操作请求命令。所以对于RTU主站来说,首先要生成访问服务器的命令。生成命令只需要按标准的协议格式来生成即可,目前我们只支持前面提到的8个功能码。 /*生成访问从站的命令*/ uint16_t CreateAccessSlaveCommand(ObjAccessInfo objInfo,void *dataList,uint8_t *commandBytes) 这样在开发具体的客户端应用时只需要调用这个函数来生成访问服务器的命令就可以了。 2、响应信息的解析 如前一节所述,服务器收到命令后,根据命令进行处理并生成响应信息返回给客户端。客户端接到命令后首先要对响应信息进行解析,解析的过程其实与服务器端是一致的。所不同的是,不需要再根据解析结果生成响应信息了。 /*解析收到的从站相应信息*/ void ParsingSlaveRespondMessage(uint8_t *recievedMessage) 这样在开发客户端应用时,我们调用这一函数来解析响应信息就可以了。 3、响应处理 对于解析出来的信息,我们需要根据情况实现操作,比如修改变量的值等,应为主要支持的操作码是8个,理论上对应的每种功能码都会有不同的操作,但事实上,由于写操作命令已经不需要做任何操作了,所以对应的操作实际上只有读操作的4种功能码。 /*处理读从站状态量返回信息,读线圈状态位0x01功能码*/ static void HandleReadCoilStatusRespond(uint8_t *receivedMessage,uint16_t startAddress,uint16_t quantity) /*处理读从站状态量返回信息,读输入状态位0x02功能码*/ static void HandleReadInputStatusRespond(uint8_t *receivedMessage,uint16_t startAddress,uint16_t quantity) /*处理读从站寄存器值的返回信息,读保持寄存器0x03功能码)*/ static void HandleReadHoldingRegisterRespond(uint8_t *receivedMessage,uint16_t startAddress,uint16_t quantity) /*处理读从站寄存器值的返回信息,读输入寄存器0x04功能码*/ static void HandleReadInputRegisterRespond(uint8_t *receivedMessage,uint16_t startAddress,uint16_t quantity) 同样的,我们也定义一个函数指针数组来实现这些函数的调用: void (*HandleServerRespond[])(uint8_t *,uint16_t,uint16_t)={HandleReadCoilStatusRespond, HandleReadInputStatusRespond, HandleReadHoldingRegisterRespond, HandleReadInputRegisterRespond}; 到这里,RTU主站的封装就完成了,当然具体的数据处理部分需要在开发具体应用是才能确定。 前面开发了各种应用,但是却一直没有提到一个问题,你就是对具体的数据进行读写操作。对于Modbus来说标准的数据有4种:线圈数据(地址:0000x)、输入状态量数据(地址:1000x)、保持寄存器数据(地址:4000x)和输入寄存器数据(地址:3000x)。我们通讯的目的就是为了对这些数据进行操作,可是我们前面的封装中并没有提到数据处理。事实上,也没办法考虑这一点,因为具体的应用数据千差万别,是没办法封装的。那我们怎么解决这一问题呢?接下来我们将解决这一类问题。 1、数据处理函数的封装 我们考虑到,不论是在RTU主站、RTU从站、TCP客户端、还是在TCP服务器对数据的处理本质上是一样的,只要具体应用的数据结构确定后处理方法也就确定了。鉴于此,我们采用的方法是定义弱化类型的函数。如下: /*获取想要读取的Coil量的值*/ __weak void GetCoilStatus(uint16_t startAddress,uint16_t quantity,bool *statusList) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } /*获取想要读取的InputStatus量的值*/ __weak void GetInputStatus(uint16_t startAddress,uint16_t quantity,bool *statusValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } /*获取想要读取的保持寄存器的值*/ __weak void GetHoldingRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } /*获取想要读取的输入寄存器的值*/ __weak void GetInputRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } /*设置单个线圈的值*/ __weak void SetSingleCoil(uint16_t coilAddress,bool coilValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } /*设置单个寄存器的值*/ __weak void SetSingleRegister(uint16_t registerAddress,uint16_t registerValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } /*设置多个线圈的值*/ __weak void SetMultipleCoil(uint16_t startAddress,uint16_t quantity,bool *statusValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } /*设置多个寄存器的值*/ __weak void SetMultipleRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //如果需要Modbus TCP Server/RTU Slave应用中实现具体内容 } /*更新读回来的线圈状态*/ __weak void UpdateCoilStatus(uint16_t startAddress,uint16_t quantity,bool *stateValue) {   //在客户端(主站)应用中实现 } /*更新读回来的输入状态值*/ __weak void UpdateInputStatus(uint16_t startAddress,uint16_t quantity,bool *stateValue) {   //在客户端(主站)应用中实现 } /*更新读回来的线圈状态*/ __weak void UpdateHoldingRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //在客户端(主站)应用中实现 } /*更新读回来的线圈状态*/ __weak void UpdateInputResgister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue) {   //在客户端(主站)应用中实现 } 在开发具体应用时,我们只需要在应用中实现对应的函数就可以使功能完整,至于具体的数据如何处理,就要看具体应用中的数据格式了。当然这些函数并非都需要实现,只需要根据自己的需要实现就可以了。 2、关于大小端的问题 提到数据通讯,有一个问题是没有办法回避的,那就是大小端的问题。对于Modbus协议来说,采用的是大端模式,就是低位地址存高位字节数据,高位地址存低位字节数据。 在进行多字节数据通讯时,大小端的问题就明显了,比如一个浮点数在不同的系统中存储的顺序是有差别的,你读上来或者写下去的数据就会出现错误的解析。所以我们在处理数据报文时是必须考虑这一点的。 谈到Modbus通讯自然免不了循环冗余校验(CRC),特别是在标准的串行RTU链路上是必不可少的。不仅如此在其他开发中,也经常要用到CRC 算法对各种数据进行校验。这样一来,我们就需要研究一下这个循环冗余校验(CRC)算法。 1、CRC简述       循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。 CRC的本质是模2除法的余数,采用的除数不同,CRC的类型也就不一样。通常,CRC的除数用生成多项式来表示。最常用的CRC码的生成多项式有下面几种:       不一样的生成多项式,所以得到的结果自然也是不一样的。事实上在Modbus通讯中采用的是CRC-16的方式。 2、算法分析       CRC校验码的编码方法是用待发送的二进制数据t(x)除以生成多项式g(x),将最后的余数作为CRC校验码。其实现步骤如下:       设待发送的数据块是m位的二进制多项式t(x),生成多项式为r阶的g(x)。在数据块的末尾添加r个0,数据块的长度增加到m+r位,对应的二进制多项式为 。用生成多项式g(x)去除 ,求得余数为阶数为r-1的二进制多项式y(x)。此二进制多项式y(x)就是t(x)经过生成多项式g(x)编码的CRC校验码。用 以模2的方式减去y(x),得到二进制多项式 。 就是包含了CRC校验码的待发送字符串。       从CRC的编码规则可以看出,CRC编码实际上是将代发送的m位二进制多项式t(x)转换成了可以被g(x)除尽的m+r位二进制多项式,所以解码时可以用接收到的数据去除g(x),如果余数位零,则表示传输过程没有错误;如果余数不为零,则在传输过程中肯定存在错误。许多CRC的硬件解码电路就是按这种方式进行检错的。同时可以看作是由t(x)和CRC校验码的组合,所以解码时将接收到的二进制数据去掉尾部的r位数据,得到的就是原始数据。       实际上,真正的CRC 计算通常与上面描述的还有些不同。这是因为这种最基本的CRC除法存在一个很明显的缺陷,就是数据流的开头添加一些0并不影响最后校验的结果。为了弥补这一缺陷所以引入了两个概念:一个是“余数初始值”,另一个是“结果异或值”。所谓 “余数初始值”就是在计算CRC值前,为存储变量所赋的初值。对应的“结果异或值”就是在计算完成后,将变量值与这个值作最后的异或运算而得到校验结果。 名称校验和位宽生成多项式除数(多项式)余数初始值结果异或值CRC-44x4+x+13  CRC-88x8+x5+x4+10x31  CRC-88x8+x2+x1+10x07  CRC-88x8+x6+x4+x3+x2+x10x5E  CRC-1212x12+x11+x3+x+180F  CRC-16 16x16+x15+x2+10x80050x00000x0000CRC-CCITT16x16+x12+x5+10x10210xFFFF0x0000CRC-3232x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+10x04C11DB70xFFFFFFFF0xFFFFFFFFCRC-32c32x32+x28+x27+...+x8+x6+11EDC6F41         说到这里我们已经可以描述一下这个算法的实现过程: 第1步:定义CRC存储变量,并给其赋值为“余数初始值”。 第2步:将数据的第一个8-bit字符与CRC存储变量进行异或,并把结果存入CRC存储变量。 第3步:CRC存储变量向右移一位,MSB补零,移出并检查LSB。 第4步:如果LSB为0,重复第三步;若LSB为1,CRC寄存器与0x31相异或。 第5步:重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。 第6步:重复第2至第5步直到所有数据全部处理完成。 第7步:最终CRC存储变量的内容与“结果异或值”进行或非操作后即为CRC值。 3、代码实现       有了前面的准备实际上我们要实现CRC校验的代码已经很简单了,实现这一过程有各种方法我们说常用的2种:一是直接计算法,就是按照前面的步骤计算出来;二是驱动表法,就是将一些数据储存起来直接获取计算。因为在Modbus中使用的是CRC-16,所以我们一次为例来实现它。 (1)直接计算法 直接计算法简单直接,便写程序也比较简单,我们以CRC-16为例,其多项式记为0x8005,因为其记过异或值为0x0000,所以可以不添加。具体代码如下: #define Initial_Value    0x0000 #define EOR 0x0000 #define POLY16 0x8005 uint16_t CRC16(uint8_t *buf,uint16_t length) {   uint16_t crc16,data,val;   crc16 = Initial_Value;   for(int i=0;i<length;i++)   {     if((i % 8) == 0)     {       data = (*buf++)<<8;      }     val = crc16 ^ data;     crc16 = crc16<<1;     data = data <<1;     if(val&0x8000)     {       crc16 = crc16 ^ POLY16;     }   }   return crc16; } (2)驱动表法      对于直接计算法,虽然简单直接,但有时候效率却是个问题,所以在Modbus通讯中我们通常采用驱动表法来实现: //CRC_16高8位数据区 const uint8_t auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; //CRC低位字节值表 const uint8_t auchCRCLo[] = {//CRC_16低8位数据区 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 }; /*函数功能:CRC校验码生成   输入参数:puchMsgg是要进行CRC校验的消息,usDataLen是消息中字节数   函数输出:计算出来的CRC校验码   GenerateCRC16CheckCode查表计算函数*/ static uint16_t GenerateCRC16CheckCode(uint8_t *puckMsg,uint8_t usDataLen) {   uint8_t uchCRCHi = 0xFF ; //高CRC字节初始化   uint8_t uchCRCLo = 0xFF ; //低CRC 字节初始化   uint32_t  uIndex ; //CRC循环中的索引   //传输消息缓冲区   while (usDataLen--)   {     //计算CRC     uIndex = uchCRCLo ^ *puckMsg++ ;      uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex] ;     uchCRCHi = auchCRCLo[uIndex] ;   }   //返回结果,高位在前   return (uchCRCLo << 8 |uchCRCHi) ; } 4、结束语       CRC的应用非常广泛,特别是在做通讯时更是经常见到,所以掌握它是非常有必要的,至少会使用它。我们在开发Modbus库函数的过程中,对它也不过是有了一些比较粗浅的理解,在此记述以求共进。 前面我们已经完成了Modbus协议栈的开发,但这不是我们的目的。我们开发它的目的当然是要使用它来解决我们的实际问题。接下来我们就使用刚开发的Modbus协议栈开发一个Modbus TCP Server应用。 开发Modbus TCP Server首先需要有TCP Server的支持以及网络的配置等,但这些与Modbus本身没有什么关系,我们再次不作讨论。我们规定网络和TCP Server已经配置妥当。接下来我们讨论Modbus TCP Server的实现过程。 根据前面对协议栈的封装,我们需要引用Modbus TCP Server的相关封装。在接收到命令后调用解析函数进行解析,解析函数的原型: uint16_t ParsingClientAccessCommand(uint8_t *receivedMessage,uint8_t *respondBytes); 该函数作为函数指针传递给TCP Server,并回调解析接收到的信息列表。 除此之外,我们要根据具体的需要实现8个回调函数,以完成真正的对Modbus对象的操作,这8个函数的原型如下: /*获取想要读取的Coil量的值*/ void GetCoilStatus(uint16_t startAddress,uint16_t quantity,bool *statusList);  /*获取想要读取的InputStatus量的值*/ void GetInputStatus(uint16_t startAddress,uint16_t quantity,bool *statusValue);  /*获取想要读取的保持寄存器的值*/ void GetHoldingRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue);  /*获取想要读取的输入寄存器的值*/ void GetInputRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue);  /*设置单个线圈的值*/ void SetSingleCoil(uint16_t coilAddress,bool coilValue);  /*设置单个寄存器的值*/ void SetSingleRegister(uint16_t registerAddress,uint16_t registerValue);  /*设置多个线圈的值*/ void SetMultipleCoil(uint16_t startAddress,uint16_t quantity,bool *statusValue);  /*设置多个寄存器的值*/ void SetMultipleRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue); 这8个函数根据应用的具体需求来实现数据对象的操作,实现几个如何实现根据各自的应用需求和数据结构来确定。 上一节我们使用协议占开发了一个Modbus TCP Server应用。接下来我们使用协议栈在开发一个基于串行链路的Mosbus RTU Slave应用。 根据前面对协议栈的封装,我们需要引用Modbus TCP Server的相关封装。在接收到命令后调用解析函数进行解析,解析函数的原型: ParsingMasterAccessCommand(uint8_t *receivedMesasage,uint8_t *respondBytes,uint16_t rxLength); RTU Slave使用串口中断接收信息,接收到信息后使用上述函数解析信息,根据接收的信息命令完成操作。 当然,除了调用解析函数外,我们要根据具体的需要实现8个回调函数,以完成真正的对Modbus对象的操作,这8个函数的原型如下: /*获取想要读取的Coil量的值*/ void GetCoilStatus(uint16_t startAddress,uint16_t quantity,bool *statusList);  /*获取想要读取的InputStatus量的值*/ void GetInputStatus(uint16_t startAddress,uint16_t quantity,bool *statusValue);  /*获取想要读取的保持寄存器的值*/ void GetHoldingRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue);  /*获取想要读取的输入寄存器的值*/ void GetInputRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue);  /*设置单个线圈的值*/ void SetSingleCoil(uint16_t coilAddress,bool coilValue);  /*设置单个寄存器的值*/ void SetSingleRegister(uint16_t registerAddress,uint16_t registerValue);  /*设置多个线圈的值*/ void SetMultipleCoil(uint16_t startAddress,uint16_t quantity,bool *statusValue);  /*设置多个寄存器的值*/ void SetMultipleRegister(uint16_t startAddress,uint16_t quantity,uint16_t *registerValue); 这8个函数根据应用的具体需求来实现数据对象的操作,实现几个如何实现根据各自的应用需求和数据结构来确定。 当然,并非必须使用中断接收信息,也可以使用查询等方式,但是使用中断是一个比较好的方法,因为主站命令的发送一般并无规律,中断方式既可保证信息及时响应,也无须耗费太多的从站资源,而有更多资源去处理其他的任务。 --- ### 195. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MODBUS调试工具是一款用于调试和测试MODBUS通信协议的重要工具,其源代码采用C#编写。该工具分为两个版本: MODBUS主站调试工具和MODBUS从站调试工具,分别用于模拟MODBUS主站和从站设备。 MODBUS协议作为一种常用的工业通信协议,在自动化系统中扮演着重要角色。它支持RTU、TCP和UDP三种模式,在不同的场景下提供了灵活的选择。RTU模式适用于串行通信,适用于没有网络连接的设备间通信;TCP模式适用于基于以太网的通信;UDP模式则适用于实时性要求较高的场景。 MODBUS调试工具提供了丰富的功能,可帮助开发人员快速定位和解决MODBUS通信问题。它支持读取和写入MODBUS寄存器、线圈等操作,并显示通信报文的详细信息,便于用户分析问题。 该工具使用最新的开发环境,包括VS 2012、2015和2017,以及.NET Framework 4.5.2。这些环境的使用保证了工具的稳定性和兼容性,使开发人员能够在最新的开发环境中进行调试和测试。 使用MODBUS调试工具时,开发人员首先需选择调试模式,然后根据实际情况选择RTU、TCP或UDP模式,并设置通信参数,如串口号、波特率、IP地址等。接着,他们可以进行读取和写入操作,查看设备的状态和数据。在测试过程中,工具会显示通信报文的详细信息,包括请求报文和响应报文,帮助开发人员分析通信过程中的问题。 总体而言,MODBUS调试工具是一款功能强大、易于使用的工具,能够帮助开发人员快速解决MODBUS通信问题。其源代码结构清晰,质量高,易于理解和修改。通过使用MODBUS调试工具,开发人员可以提高工作效率,更好地学习和实践MODBUS通信协议。 --- ### 196. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 头文件(Header file)是一种包含声明或定义的文本文件,通常用于在程序中引入外部代码。在C和C++中,头文件通常包含了函数、变量、常量的声明、类型定义以及宏定义等信息。头文件的主要作用是提供接口和声明,使得源代码文件可以访问到其他模块或库中的函数、变量和常量,同时也有利于代码的模块化和组织。 这段代码是一个用于Modbus单元测试的头文件,其中包含了多个常量和配置,方便在测试过程中使用。让我来解释一下: /* 版权信息 */ #ifndef _UNIT_TEST_H_ #define _UNIT_TEST_H_ /* 由configure.ac定义的常量 */ #define HAVE_INTTYPES_H @HAVE_INTTYPES_H@ #define HAVE_STDINT_H @HAVE_STDINT_H@ // 如果定义了HAVE_INTTYPES_H,包含inttypes.h库 #ifdef HAVE_INTTYPES_H #include <inttypes.h> #endif // 如果定义了HAVE_STDINT_H,根据编译器决定包含的stdint.h库 #ifdef HAVE_STDINT_H # ifndef _MSC_VER # include <stdint.h> # else # include "stdint.h" # endif #endif #define SERVER_ID 17 // 正常的服务器ID #define INVALID_SERVER_ID 18 // 非法的服务器ID,用于触发错误处理 // Modbus地址和数量定义 const uint16_t UT_BITS_ADDRESS = 0x130; // 线圈地址 const uint16_t UT_BITS_NB = 0x25; // 线圈数量 const uint8_t UT_BITS_TAB[] = { 0xCD, 0x6B, 0xB2, 0x0E, 0x1B }; // 预设的线圈状态 const uint16_t UT_INPUT_BITS_ADDRESS = 0x1C4; // 输入线圈地址 const uint16_t UT_INPUT_BITS_NB = 0x16; // 输入线圈数量 const uint8_t UT_INPUT_BITS_TAB[] = { 0xAC, 0xDB, 0x35 }; // 输入状态 const uint16_t UT_REGISTERS_ADDRESS = 0x160; // 寄存器地址 const uint16_t UT_REGISTERS_NB = 0x3; // 寄存器数量 const uint16_t UT_REGISTERS_NB_MAX = 0x20; // 最大寄存器数量 const uint16_t UT_REGISTERS_TAB[] = { 0x022B, 0x0001, 0x0064 }; // 寄存器值 // 特殊地址,用于单元测试中触发异常和特殊行为 const uint16_t UT_REGISTERS_ADDRESS_SPECIAL = 0x170; // 特殊寄存器地址 const uint16_t UT_REGISTERS_ADDRESS_INVALID_TID_OR_SLAVE = 0x171; // 无效TID或从设备地址 const uint16_t UT_REGISTERS_ADDRESS_SLEEP_500_MS = 0x172; // 500毫秒睡眠地址 const uint16_t UT_REGISTERS_ADDRESS_BYTE_SLEEP_5_MS = 0x173; // 5毫秒字节睡眠地址 // 特殊的寄存器数量,用于错误响应测试 const uint16_t UT_REGISTERS_NB_SPECIAL = 0x2; // 特殊寄存器数量 const uint16_t UT_INPUT_REGISTERS_ADDRESS = 0x108; // 输入寄存器地址 const uint16_t UT_INPUT_REGISTERS_NB = 0x1; // 输入寄存器数量 const uint16_t UT_INPUT_REGISTERS_TAB[] = { 0x000A }; // 输入寄存器值 const float UT_REAL = 123456.00; // 浮点数测试值 // 大小端转换数组,用于浮点数在Modbus协议中的存取测试 const uint8_t UT_IREAL_ABCD_SET[] = {0x47, 0xF1, 0x20, 0x00}; // ABCD格式设置 const uint16_t UT_IREAL_ABCD_GET[] = {0x47F1, 0x2000}; // ABCD格式获取 const uint8_t UT_IREAL_DCBA_SET[] = {0x00, 0x20, 0xF1, 0x47}; // DCBA格式设置 const uint16_t UT_IREAL_DCBA_GET[] = {0x0020, 0xF147}; // DCBA格式获取 const uint8_t UT_IREAL_BADC_SET[] = {0xF1, 0x47, 0x00, 0x20}; // BADC格式设置 const uint16_t UT_IREAL_BADC_GET[] = {0xF147, 0x0020}; // BADC格式获取 const uint8_t UT_IREAL_CDAB_SET[] = {0x20, 0x00, 0x47, 0xF1}; // CDAB格式设置 const uint16_t UT_IREAL_CDAB_GET[] = {0x2000, 0x47F1}; // CDAB格式获取 #endif /* _UNIT_TEST_H_ */ 这个头文件主要包含了以下内容: 常量定义: SERVER_ID 和 INVALID_SERVER_ID 分别定义了正常和非法的服务器ID。 Modbus地址和数量定义: 定义了线圈地址、线圈数量、线圈状态数据集、输入线圈地址、输入线圈数量、输入状态数据集、寄存器地址、寄存器数量、最大寄存器数量、寄存器值等。 特殊地址定义: 用于单元测试中触发异常和特殊行为的寄存器地址,如无效TID或从设备地址、睡眠地址等。 特殊的寄存器数量定义: 用于错误响应测试的特殊寄存器数量。 浮点数测试值定义: 定义了一个浮点数测试值。 大小端转换数组定义: 用于浮点数在Modbus协议中的存取测试的不同格式数组定义。 这些定义使得在进行Modbus协议相关的单元测试时更加方便和系统化。 --- ### 197. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业控制和自动化领域,Modbus通信协议一直扮演着重要的角色。为了简化Modbus通信的开发过程,开发者们创建了许多Modbus通信库,其中一种广泛使用的库就是libmodbus。本文将介绍如何使用libmodbus进行版本检测和功能探索。 首先,让我们看一下一个简单的C程序,该程序演示了如何使用libmodbus库进行版本检测并获取相关信息。以下是程序的代码: /* * 版权所有 © Stéphane Raimbault <stephane.raimbault@gmail.com> * * SPDX-License-Identifier: BSD-3-Clause */ #include <modbus.h> // 包含libmodbus头文件 #include <stdio.h> // 包含标准输入输出头文件 int main(void) { // 打印编译时使用的libmodbus版本信息 printf("Compiled with libmodbus version %s (%06X)\n", LIBMODBUS_VERSION_STRING, LIBMODBUS_VERSION_HEX); // 打印链接时使用的libmodbus版本信息 printf("Linked with libmodbus version %d.%d.%d\n", libmodbus_version_major, libmodbus_version_minor, libmodbus_version_micro); // 检查libmodbus版本是否大于等于2.1.0,如果是则打印相关信息 if (LIBMODBUS_VERSION_CHECK(2, 1, 0)) { printf("The functions to read/write float values are available (2.1.0).\n"); } // 检查libmodbus版本是否大于等于2.1.1,如果是则打印相关信息 if (LIBMODBUS_VERSION_CHECK(2, 1, 1)) { printf("Oh gosh, brand new API (2.1.1)!\n"); } return 0; } 这段代码展示了如何使用libmodbus库中的一些基本功能。首先,它打印了在编译时使用的libmodbus版本信息,包括版本字符串和十六进制表示的版本号。接着,它打印了链接时使用的libmodbus版本信息,包括主版本号、次版本号和微版本号。然后,它使用LIBMODBUS_VERSION_CHECK宏检查了libmodbus的版本,如果版本大于等于2.1.0,就会打印相应的信息,表明支持读写浮点数值的功能。最后,它检查了版本是否大于等于2.1.1,并打印了相应的信息。 通过这段代码,我们可以轻松地获取和检查libmodbus的版本信息,并根据版本信息来决定是否可以使用特定的功能。这为开发者提供了便利,使得在Modbus通信开发中更加高效和可靠。 在本文中,我们介绍了如何使用libmodbus库进行版本检测和功能探索。希望这篇文章能够帮助读者更好地了解和应用libmodbus库,从而提升Modbus通信开发的效率和质量。 --- ### 198. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在现代工业自动化领域,Modbus 协议作为一种简单而广泛使用的通信协议,被广泛应用于各种设备和系统之间的通信。本文将探讨如何使用 Modbus 协议构建一个模拟的服务器,该服务器能够处理来自客户端的各种请求,并在特定条件下模拟异常或特殊行为,从而为开发和测试环境提供一个实用的工具。 完整代码(中文注释): 1. 程序概述 本程序是一个基于 Modbus 协议的服务器模拟实现,支持 TCP、TCP_PI(TCP Protocol Independent)和 RTU(Remote Terminal Unit)三种模式。该服务器通过解析命令行参数来设定工作模式和通信端口或设备。其主要功能包括监听来自客户端的请求、处理标准的读写寄存器操作,并在需要时回应特定的异常或进行特殊的操作模拟。 2. 程序结构和关键实现 2.1 初始化和配置 程序首先通过命令行参数确定通信模式(TCP、TCP_PI、RTU),并根据选择的模式创建相应的 Modbus 上下文。此上下文用于配置服务器的网络或串行通信参数,例如 IP 地址和端口号或串行端口配置。 2.2 映射和内存分配 通过 modbus_mapping_new_start_address 函数,程序为不同类型的寄存器(如线圈、离散输入、保持寄存器和输入寄存器)分配并初始化内存。这些寄存器的值可以通过 Modbus 命令进行访问和修改,是服务器与客户端交互的核心。 2.3 请求处理循环 服务器运行在一个无限循环中,不断地调用 modbus_receive 函数来等待和接收客户端的请求。收到请求后,服务器会根据请求的功能码和数据处理请求。对于标准的读写请求,服务器将修改或返回映射中的寄存器值。对于特殊的测试命令,如故意回复错误的寄存器数量或模拟延迟响应,服务器则执行相应的特殊行为。 2.4 特殊行为模拟 为了增强测试的能力,服务器能够识别特定的请求,并据此触发预定义的行为,例如: 回复异常信息,模拟设备忙或通信错误。 在响应之前故意延迟一定时间,模拟网络延迟。 对于非法的请求地址或数量,返回错误信息。 这些功能使得该服务器不仅可以用作常规的 Modbus 服务器,还可以作为测试客户端或其他服务器实现的有力工具。 3. 应用场景 此模拟服务器的应用场景包括但不限于: 开发阶段:开发人员可以使用此服务器模拟各种设备,验证和调试客户端应用。 自动化测试:测试人员可以利用其模拟异常的能力,增强对 Modbus 客户端软件的健壮性测试。 教学和演示:教育工作者可以用它来向学生展示 Modbus 协议的工作原理和调试方法。 结语 通过构建一个功能丰富的 Modbus 模拟服务器,开发者和测试者可以在开发初期就发现并解决潜在的问题,这对于保证最终产品的质量和稳定性至关重要。此外,这样的工具也极大地促进了对 Modbus 协议深入理解和应用的学习。 --- ### 199. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在现代工业自动化中,确保通信协议的稳定性和准确性是非常重要的。Modbus 协议作为工业界广泛应用的通信协议之一,其稳定和可靠的运行对系统的正常运行至关重要。这就需要通过一系列的单元测试来验证和确保Modbus通信库的每个功能都按预期工作,同时也要能妥善处理异常情况。本文通过一段详细的代码解析,展示了如何使用 libmodbus 库进行全面的单元测试。 背景 Modbus 协议支持多种数据操作,如读写线圈、离散输入、保持寄存器和输入寄存器。测试这些功能的有效性和异常处理能力对于维护通信链路的健壮性至关重要。 完整代码(中文注释): 代码概览 提供的代码使用 C 语言编写,基于 libmodbus 库,这是一个开源的 Modbus 库,支持RTU(串行版本)和TCP/IP。此代码展示了如何初始化连接、发送请求以及处理响应和错误。 关键功能的测试 初始化和连接 代码首先设置 Modbus 上下文,根据命令行参数选择使用 TCP 或 RTU 模式。此外,还可以设置调试模式来追踪通信过程中的详细信息。 读写测试 单个和多个位的读写:通过 modbus_write_bit 和 modbus_read_bits 函数测试单个线圈的读写操作。对于多个线圈,使用 modbus_write_bits 和相应的读取函数。 寄存器操作:使用 modbus_write_register 和 modbus_read_registers 测试单个保持寄存器的读写。多寄存器的读写则通过 modbus_write_registers 和 modbus_read_registers 测试。 异常处理 测试了如地址非法、数据量过多等异常情况。这是通过构造非法请求并预期库能返回正确的异常响应码来完成的。 性能考虑 为了测试库在不同网络延迟和数据处理速度下的表现,代码中调整了响应超时和字节超时的设置。 结论 通过这样的单元测试,可以系统地验证 Modbus 库的每一个功能点,确保在实际部署前,所有的功能都能在预定的条件下正常工作。这不仅帮助开发者发现并修复潜在的错误,也为最终用户提供了额外的信心,确保他们的工业系统能够稳定可靠地运行。 这段代码及其解析展示了工业通信协议测试的重要性和复杂性,为Modbus通信库的开发和维护提供了宝贵的参考。 --- ### 200. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在现代工业通信中,Modbus 协议因其简洁性和易于实现而被广泛应用。本文将通过一个具体的示例,详细介绍如何使用 libmodbus 库创建一个基于 TCP 的 Modbus 服务器。这个服务器能够处理客户端的 Modbus 请求,并对这些请求作出响应。 完整代码(中文注释): 1. 初始化 Modbus TCP 服务器 首先,我们需要引入 libmodbus 库,并初始化一个 Modbus TCP 服务器。在我们的示例中,服务器将绑定到本地地址 127.0.0.1 和端口 1502。通过调用 modbus_new_tcp 函数,我们创建了一个指向 modbus_t 结构的指针,这个结构体将作为后续所有操作的上下文: ctx = modbus_new_tcp("127.0.0.1", 1502); 2. 映射 Modbus 数据模型 接下来,我们需要定义服务器将要使用的 Modbus 数据映射。这一步骤是通过 modbus_mapping_new 函数完成的,它为不同类型的 Modbus 数据(位、输入位、保持寄存器和输入寄存器)分配和初始化内存: mb_mapping = modbus_mapping_new(500, 500, 500, 500); if (mb_mapping == NULL) { fprintf(stderr, "Failed to allocate the mapping: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -1; } 3. 监听和接受客户端连接 一旦数据映射准备好,服务器就可以开始监听来自客户端的连接请求。使用 modbus_tcp_listen 函数开始监听,然后使用 modbus_tcp_accept 处理接入的客户端连接: s = modbus_tcp_listen(ctx, 1); modbus_tcp_accept(ctx, &s); 4. 接收和响应请求 服务器的主循环包括等待客户端请求、接收请求、处理请求,并发送响应。这通过不断调用 modbus_receive 函数来接收请求,并使用 modbus_reply 函数来发送响应: for (;;) { rc = modbus_receive(ctx, query); if (rc > 0) { modbus_reply(ctx, query, rc, mb_mapping); } else if (rc == -1) { break; } } 5. 清理和关闭资源 一旦服务器完成任务(通常是由于错误或客户端关闭连接),它需要释放所有分配的资源,并优雅地关闭连接: printf("Quit the loop: %s\n", modbus_strerror(errno)); if (s != -1) { close(s); } modbus_mapping_free(mb_mapping); modbus_close(ctx); modbus_free(ctx); 通过上述步骤,我们展示了如何使用 libmodbus 创建一个功能完备的 Modbus TCP 服务器。这个服务器能够处理标准的 Modbus 功能码,包括读写单个或多个位和寄存器的操作。本示例不仅适用于教育和测试目的,也可以作为实际应用中的基础。 --- ### 201. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在现代工业通信中,Modbus 协议因其简单性和广泛支持而被广泛应用于各种自动化系统中。此协议支持多种通讯方式,如串行线(RTU)和TCP/IP等。以下文章详细介绍了一个使用 libmodbus 库的Modbus协议的测试程序,该程序通过实现不同的Modbus函数来验证库的功能性。 完整代码(中文注释): 程序概述 这个测试程序的目标是验证 libmodbus 库支持的所有主要功能,包括写单个线圈、读线圈状态、写多个线圈、写单个寄存器、读寄存器、写多个寄存器、以及读写多个寄存器等。程序运行在两种模式下:TCP和RTU,这是通过命令行参数来选择的。 环境设置与初始条件 程序首先根据输入参数(TCP 或 RTU)初始化 Modbus 上下文(ctx)。对于 TCP 模式,它连接到本地主机上的 1502 端口。而对于 RTU 模式,它则设置为通过特定的串行端口(如 /dev/ttyUSB0)以 19200 波特率进行通讯。 数据结构与初始化 为了进行测试,程序首先分配并初始化了几个数组,用于存储测试中使用的位和寄存器值: tab_rq_bits 和 tab_rp_bits 用于存储请求和响应的线圈(位)状态。 tab_rq_registers、tab_rp_registers 和 tab_rw_rq_registers 用于存储请求和响应的寄存器值。 测试循环 程序在定义的地址范围内进行循环测试,每次循环地址加一,直至覆盖从 ADDRESS_START 到 ADDRESS_END 的范围。在每个地址,程序执行以下操作: 写单个线圈:验证能否成功写入并读回单个线圈。 写多个线圈:验证能否成功写入并读回多个线圈。 写单个寄存器:验证能否成功写入并读回单个寄存器。 写多个寄存器:验证能否成功写入并读回多个寄存器。 同时读写多个寄存器:验证能否成功在一个操作中同时读写多个寄存器。 异常处理 每个 Modbus 操作后,程序检查返回的结果,以确认操作是否成功。如果操作失败,程序会输出错误消息并增加失败计数器。测试继续进行直到所有预定的测试都完成。 结果输出 在测试结束后,程序会输出测试结果,显示成功或失败的操作总数。这是通过比较请求数据和响应数据来确定的,确保数据的完整性和准确性。 清理与关闭 测试完成后,程序释放所有分配的资源,关闭Modbus连接,并退出。 通过这样的测试程序,开发人员可以验证Modbus库在不同设置下的性能和可靠性,确保其在实际应用中的稳定运行。这不仅帮助开发者深入了解Modbus协议的实现,也为找出潜在的问题提供了一个强有力的工具。 --- ### 202. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化领域,Modbus 协议广泛用于设备间的通信。本文将探讨如何使用 C 语言和 libmodbus 库来实现一个支持 TCP 和 RTU 两种模式的 Modbus 服务器。这种服务器能够处理来自客户端的数据请求,并根据这些请求返回相应的数据。 Modbus 协议简介 Modbus 是一个应用层协议,由 Modicon 公司(现为施耐德电气的一部分)在 1979 年为使用编程逻辑控制器(PLC)进行通信而开发。它已成为工业领域内一个事实上的标准,并且广泛用于多种通信设备之间的交互。Modbus 协议支持多种通信类型,本例中将涵盖 TCP 和 RTU 两种。 完整代码: 环境配置 首先,需要在系统中安装 libmodbus 库,它是一个开源的 C 语言库,用于实现 Modbus 协议。这个库支持多种操作系统和硬件平台。 服务器的基本设置 服务器程序开始时首先会解析命令行参数来确定是使用 TCP 还是 RTU 模式。基于所选模式,程序将初始化一个对应的 Modbus 上下文(modbus_t)。例如,对于 TCP 模式,服务器会监听特定的 IP 地址和端口;对于 RTU 模式,服务器则会设置串行通信的参数,如波特率和奇偶校验等。 数据映射和监听 无论哪种模式,服务器都会创建一个 modbus_mapping_t 结构,这个结构用于存储和管理从设备地址空间的数据,包括输入位、保持寄存器等。接着,服务器进入主循环,等待并处理来自客户端的请求。对于 TCP 连接,服务器会调用 modbus_tcp_accept 来接受新的客户端连接。 请求处理 当服务器接收到一个请求时,它会使用 modbus_receive 函数读取请求数据,并根据请求的类型(如读取寄存器或写入寄存器)使用 modbus_reply 函数发送响应。这个过程涉及到对 mb_mapping 数据结构的查询和修改。 异常处理和资源管理 在整个通信过程中,服务器需要妥善处理可能发生的各种错误情况,如连接错误、数据传输错误等。此外,还需要在程序退出前释放所有已分配的资源,包括 Modbus 上下文和数据映射结构。 结束语 通过 libmodbus 库,我们可以相对简单地实现一个功能齐全的 Modbus 服务器。这不仅有助于理解 Modbus 协议的工作原理,还能够提供一个强大的工具,用于在实际的工业应用中进行设备通信和数据管理。这种基于标准的实现方式确保了良好的兼容性和可靠性,是连接现代工业设备的理想选择。 --- ### 203. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化领域,Modbus协议因其简洁性和广泛支持而常被用于设备间通信。本文介绍如何使用C语言和libmodbus库来创建一个功能齐全的Modbus TCP服务器,实现设备间的有效通信。 完整代码: 1. 初始化Modbus服务器 首先,需要创建一个Modbus TCP服务器实例。使用modbus_new_tcp函数初始化一个指向modbus_t类型的指针,这个函数的参数是服务器的IP地址和端口号。在本例中,服务器配置为监听本地地址127.0.0.1上的1502端口: ctx = modbus_new_tcp("127.0.0.1", 1502); 2. 设置Modbus映射 Modbus映射是服务器存储其数据(比如线圈、离散输入、保持寄存器和输入寄存器)的方式。使用modbus_mapping_new来分配并初始化这些数据区: mb_mapping = modbus_mapping_new(MODBUS_MAX_READ_BITS, 0, MODBUS_MAX_READ_REGISTERS, 0); 如果映射创建失败,服务器将打印错误消息并退出。 3. 监听连接 使用modbus_tcp_listen函数来监听网络连接,它返回一个socket描述符。服务器能够处理的最大连接数由NB_CONNECTION宏定义: server_socket = modbus_tcp_listen(ctx, NB_CONNECTION); 4. 处理SIGINT信号 为了能够优雅地关闭服务器并释放资源,我们使用signal函数来捕获SIGINT信号(通常由Ctrl+C引发),并将其关联到close_sigint函数: signal(SIGINT, close_sigint); close_sigint函数关闭socket,释放Modbus上下文和映射,然后退出程序。 5. 主循环 服务器运行在一个无限循环中,使用select函数来监听socket上的活动。如果select检测到活动,服务器将检查是新的连接请求还是已建立连接的数据请求: if (master_socket == server_socket) { // 处理新的连接请求 } else { // 处理来自已连接客户端的数据 } 对于新的连接,服务器接受连接并将新socket添加到监听集合中。对于数据请求,服务器使用modbus_receive接收数据,然后使用modbus_reply发送响应。 6. 性能评估 为了评估服务器的性能,代码中加入了对传输数据速率的计算。服务器计算在给定时间内成功处理的位(bits)和寄存器(registers)的数量,从而得到点/秒和KiB/秒的传输速率: rate = (n_loop * nb_points) * G_MSEC_PER_SEC / (end - start); printf("* %d points/s\n", rate); 这些性能指标对于优化服务器设置和网络配置非常有用。 结论 通过C语言和libmodbus库,可以有效地实现一个Modbus TCP服务器,它不仅支持多客户端连接,还能够提供关于其性能的实时数据。这为工业应用中的设备通信提供了一个强大且灵活的解决方案。 --- ### 204. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能概述 该工具旨在通过连续发送Modbus请求并记录响应时间来测量数据传输速率。它支持两种主要的Modbus模式:TCP和RTU,用户可以通过命令行参数选择使用哪种模式进行测试。该程序通过测量在指定时间内成功读取的数据点数量来计算数据传输速率,并将结果以点/秒和KiB/秒两种单位展示,为用户提供了一种直观的性能指标。 程序结构与实现 程序主体在main函数中实现,根据用户输入选择测试的后端(TCP或RTU)和执行的循环次数。对于TCP连接,它尝试连接到本地主机上的特定端口;对于RTU模式,则通过串行端口进行通信。连接成功后,程序将分配内存以存储Modbus状态和寄存器值,并开始测试序列。 性能测试过程 测试包括三个主要阶段:读取位、读取寄存器和写读寄存器。在每个阶段,程序都会执行大量的Modbus操作,以便收集足够的数据来进行有效的性能分析。 读取位 - 测试通过连续读取Modbus位(数字输入和输出)来评估位操作的性能。 读取寄存器 - 通过连续读取Modbus寄存器(类似于模拟输入和保持寄存器)来测试寄存器操作的效率。 写读寄存器 - 进行写操作后立即读取寄存器,以测试组合操作的性能。 每次测试后,程序都会计算并显示数据传输的速率(每秒传输的数据点数和KiB数),以及整个测试过程所需的时间。 结果输出 程序的输出提供了关于Modbus操作性能的详细信息,包括操作的持续时间、总字节数以及计算出的数据传输速率。这些数据有助于用户了解在特定硬件和网络设置中执行Modbus操作的效率。 此外,程序还会计算包括Modbus TCP协议开销在内的总字节数,这对于评估网络负载和优化网络性能特别重要。 使用场景和价值 此性能测量工具对于正在开发或部署基于Modbus的系统的工程师极具价值。它不仅可以帮助他们验证和优化系统配置,确保在生产环境中达到所需的性能标准,还可以在系统升级或扩展前评估潜在的性能瓶颈。 通过这种方式,工程师可以更有效地管理Modbus系统的维护和升级,确保所有操作都能在最优的性能条件下运行。 --- ### 205. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 PLC4X 专业介绍 PLC4X(可编程逻辑控制器交互协议)是一套开源库,用于与各种可编程逻辑控制器(PLC)进行通信。由Apache Software Foundation维护,PLC4X旨在简化和标准化与PLC的通信,为工业自动化领域提供强大的工具。 官网:https://plc4x.apache.org/ GitHub:https://github.com/apache/plc4x 核心特性 多协议支持: PLC4X支持多种主流协议,包括Modbus、KNX、OPC UA等,使其成为一个通用的PLC通信解决方案。 驱动程序架构: 通过模块化的驱动程序体系结构,PLC4X能够适应不同的PLC设备和协议,实现了高度的灵活性和可扩展性。 服务器与代理: 引入PLC4X-Server和PLC4X-Driver,允许使用服务器作为与PLC通信的代理,为系统集成提供更多选项。 结构化类型支持: PLC4X引入了PlcValues的结构化类型,使得对象PLC映射(OPM)变得更加灵活,支持在运行时进行变量替换和写入。 集成模块: 提供了与Apache Kafka Connect、NiFi、Logstash等集成模块,使得PLC4X能够轻松集成到不同的数据流处理和分析平台中。 发展历程 0.11.0版本: 引入PLC4X-Server和PLC4X-Driver,Modbus驱动程序支持更多变体,KNX驱动程序更新支持新的ETS版本。 0.10.0版本: 重构和清理代码生成,支持更复杂的协议,提升了PLC4C的兼容性。 0.9.1版本: 修复CVE-2021-43083,解决PLC4C中的缓冲区溢出问题。 0.5.0版本: 引入新生成的驱动程序,支持AB-ETH协议,同时提供了Apache Kafka Connect、NiFi等集成模块。 0.3.0版本: 引入对象PLC映射(OPM)、plc-scraper模块和新的连接池组件。 0.1.0版本: PLC4X正式成为顶级项目的第一个版本,引入了PlcConnection的ping方法。 应用场景 工业自动化: 在制造业和工业自动化领域,PLC4X为设备和系统之间的通信提供了一种灵活、可扩展的解决方案。 数据流处理: 集成到流处理平台,如Apache Kafka和NiFi,PLC4X能够将实时PLC数据融入大数据处理流程。 系统集成: PLC4X的模块化结构使其成为系统集成的理想选择,能够轻松与其他工业控制系统集成。 结语 PLC4X作为开源PLC通信的先进工具,持续发展并不断引入新功能和改进。其灵活性、多协议支持以及与流处理平台的集成,使其在工业自动化和数据处理领域都展现出强大的潜力。通过PLC4X,用户能够更轻松地实现PLC设备的集成和数据交换,推动工业数字化转型的进程。 --- ### 206. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 本文将介绍一个基于C# 2010开发的Windows窗体程序,它是一个串口助手和Modbus主机调试工具,旨在为工业自动化、设备维护、教学和研究等领域提供有效的数据通信解决方案。此程序包含了串口通信和Modbus协议的关键功能,以及一个打包程序,便于用户安装和使用。 软件概述 此软件是一个集成了串口调试和Modbus主机通信的工具。它允许用户通过串口进行数据发送和接收,并支持Modbus RTU协议进行设备控制和测试。软件基于.NET Framework 4.0开发,使用C# 2010作为编程语言,提供了一个直观、易用的图形用户界面。 主要功能 串口通信:支持串口的打开/关闭,配置串口参数(如波特率、数据位等),以及发送和接收数据。 Modbus功能:实现Modbus RTU协议,支持读写Modbus寄存器,测试Modbus设备。 数据显示和记录:显示接收到的数据,支持不同格式(如十六进制显示),并可将数据保存为文件或从文件加载。 打包程序:提供一个打包程序,便于用户安装和部署。 开发环境和技术栈 开发环境:Visual Studio 2010 编程语言:C# 目标框架:.NET Framework 4.0 第三方库:无 界面设计 软件界面分为两部分:上半部分为串口通信区域,下半部分为Modbus功能区。每部分包含独立的配置设置、发送接收区域和操作按钮。 核心代码解析 串口配置和操作: 使用System.IO.Ports.SerialPort类进行串口操作。 提供串口参数设置功能,如波特率、数据位、停止位等。 实现串口数据的读取和发送功能。 Modbus RTU通信: 实现Modbus RTU主机功能,发送请求并处理响应。 支持常用的Modbus功能码,如0x01(读线圈状态)、0x03(读保持寄存器)等。 数据显示和文件操作: 显示接收到的串口和Modbus数据。 提供数据保存和加载的功能。 打包程序: 使用Visual Studio的发布功能,生成安装包。 应用场景 该软件适用于需要进行串口通信和Modbus测试的场合,如工业设备的调试、教学实验、设备维护等。 结语 这款基于C# 2010开发的串口助手和Modbus主机调试程序,其功能全面、操作简便,非常适合工程师和技术人员在日常工作中使用。通过提供的打包程序,用户可以轻松地在Windows环境下安装和运行该软件,实现高效的数据通信和设备测试。 --- ### 207. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 IoTClient是一个物联网设备通讯协议实现客户端,将包括主流PLC通信读取、ModBus协议、Bacnet协议等常用工业通讯协议。本组件基于.NET Standard 2.0,可用于.Net的跨平台开发,如Windows、Linux甚至可运行于树莓派上。 使用说明 引用组件 Nuget安装  Install-Package IoTClient 或图形化安装 ModBusTcp读写操作 //1、实例化客户端 - 输入正确的IP和端口 ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502); //2、写操作 - 参数依次是:地址 、值 、站号 、功能码 client.Write("4", (short)33, 2, 16); //2.1、【注意】写入数据的时候需要明确数据类型 client.Write("0", (short)33, 2, 16); //写入short类型数值 client.Write("4", (ushort)33, 2, 16); //写入ushort类型数值 client.Write("8", (int)33, 2, 16); //写入int类型数值 client.Write("12", (uint)33, 2, 16); //写入uint类型数值 client.Write("16", (long)33, 2, 16); //写入long类型数值 client.Write("20", (ulong)33, 2, 16); //写入ulong类型数值 client.Write("24", (float)33, 2, 16); //写入float类型数值 client.Write("28", (double)33, 2, 16); //写入double类型数值 client.Write("32", true, 2, 5); //写入线圈类型值 client.Write("100", "orderCode", stationNumber); //写入字符串 //3、读操作 - 参数依次是:地址 、站号 、功能码 var value = client.ReadInt16("4", 2, 3).Value; //3.1、其他类型数据读取 client.ReadInt16("0", stationNumber, 3); //short类型数据读取 client.ReadUInt16("4", stationNumber, 3); //ushort类型数据读取 client.ReadInt32("8", stationNumber, 3); //int类型数据读取 client.ReadUInt32("12", stationNumber, 3); //uint类型数据读取 client.ReadInt64("16", stationNumber, 3); //long类型数据读取 client.ReadUInt64("20", stationNumber, 3); //ulong类型数据读取 client.ReadFloat("24", stationNumber, 3); //float类型数据读取 client.ReadDouble("28", stationNumber, 3); //double类型数据读取 client.ReadCoil("32", stationNumber, 1); //线圈类型数据读取 client.ReadDiscrete("32", stationNumber, 2);//离散类型数据读取 client.ReadString("100", stationNumber,10); //读取字符串 //4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。 client.Open(); //5、读写操作都会返回操作结果对象Result var result = client.ReadInt16("4", 2, 3); //5.1 读取是否成功(true或false) var isSucceed = result.IsSucceed; //5.2 读取失败的异常信息 var errMsg = result.Err; //5.3 读取操作实际发送的请求报文 var requst = result.Requst; //5.4 读取操作服务端响应的报文 var response = result.Response; //5.5 读取到的值 var value3 = result.Value; //6、批量读取 var list = new List<ModBusInput>(); list.Add(new ModBusInput() { Address = "2", DataType = DataTypeEnum.Int16, FunctionCode = 3, StationNumber = 1 }); list.Add(new ModBusInput() { Address = "2", DataType = DataTypeEnum.Int16, FunctionCode = 4, StationNumber = 1 }); list.Add(new ModBusInput() { Address = "199", DataType = DataTypeEnum.Int16, FunctionCode = 3, StationNumber = 1 }); var result = client.BatchRead(list); //7、构造函数其他参数 //IP、端口、超时时间、大小端设置 ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502, 1500, EndianFormat.ABCD); ModBusTcp更多使用方式,请参考单元测试 ModBusRtu读写操作 //实例化客户端 - [COM端口名称,波特率,数据位,停止位,奇偶校验] ModBusRtuClient client = new ModBusRtuClient("COM3", 9600, 8, StopBits.One, Parity.None); //其他读写操作和ModBusTcpClient的读写操作一致 ModBusAscii读写操作 //实例化客户端 - [COM端口名称,波特率,数据位,停止位,奇偶校验] ModbusAsciiClient client = new ModbusAsciiClient("COM3", 9600, 8, StopBits.One, Parity.None); //其他读写操作和ModBusTcpClient的读写操作一致 ModbusRtuOverTcp读写操作 //串口透传 即:用Tcp的方式发送Rtu格式报文 //实例化客户端 - IP、端口、超时时间、大小端设置 ModbusRtuOverTcpClient client = new ModbusRtuOverTcpClient("127.0.0.1", 502, 1500, EndianFormat.ABCD); //其他读写操作和ModBusTcpClient的读写操作一致 SiemensClient(西门子)读写操作 //1、实例化客户端 - 输入型号、IP和端口 //其他型号:SiemensVersion.S7_200、SiemensVersion.S7_300、SiemensVersion.S7_400、SiemensVersion.S7_1200、SiemensVersion.S7_1500 SiemensClient client = new SiemensClient(SiemensVersion.S7_200Smart, "127.0.0.1",102); //2、写操作 client.Write("Q1.3", true); client.Write("V2205", (short)11); client.Write("V2209", 33); client.Write("V2305", "orderCode"); //写入字符串 //3、读操作 var value1 = client.ReadBoolean("Q1.3").Value; var value2 = client.ReadInt16("V2205").Value; var value3 = client.ReadInt32("V2209").Value; var value4 = client.ReadString("V2305").Value; //读取字符串 //4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。 client.Open(); //5、读写操作都会返回操作结果对象Result var result = client.ReadInt16("V2205"); //5.1 读取是否成功(true或false) var isSucceed = result.IsSucceed; //5.2 读取失败的异常信息 var errMsg = result.Err; //5.3 读取操作实际发送的请求报文 var requst = result.Requst; //5.4 读取操作服务端响应的报文 var response = result.Response; //5.5 读取到的值 var value4 = result.Value; 注意:关于西门子的PLC地址 VB263、VW263、VD263中的B、W、D分别表示:byte型(8位)、word型(16位)、doubleword型(32位)。 在本组件传入地址的时候不需要带数据类型,直接使用对应方法读取对应类型即可,如: VB263 - client.ReadByte("V263") VD263 - client.ReadFloat("V263") VD263 - client.ReadInt32("V263") DB108.DBW4 - client.ReadUInt16("DB108.4") DB1.DBX0.0 - client.ReadBoolean("DB1.0.0") DB1.DBD0 - client.ReadFloat("DB1.0") C#数据类型 智能200 1200/1500/300 少量 V1.0 DB1.DBX1.0 字节 VB1 DB1.DBB1 短ushort 大众2 DB1.DBW2 intuint浮点数 VD4 DB1.DBD4 西门子客户最佳实践 1、什么时候不要主动Open 西门子plc一般最多允许8个长连接。所以当连接数不够用的时候或者做测试的时候就不要主动Open,这样组件会自动Open并即时Close。 2、什么时候主动Open 当长连接数量还够用,且想要提升读写性能。 3、除了主动Open连接,还可以通过批量读写,大幅提升读写性能。 //批量读取 Dictionary<string, DataTypeEnum> addresses = new Dictionary<string, DataTypeEnum>(); addresses.Add("DB4.24", DataTypeEnum.Float); addresses.Add("DB1.434.0", DataTypeEnum.Bool); addresses.Add("V4109", DataTypeEnum.Byte); ... var result = client.BatchRead(addresses); //批量写入 Dictionary<string, object> addresses = new Dictionary<string, object>(); addresses.Add("DB4.24", (float)1); addresses.Add("DB4.0", (float)2); addresses.Add("DB1.434.0", true); ... var result = client.BatchWrite(addresses); 4、【注意】写入数据的时候需要明确数据类型 client.Write("DB4.12", 9); //写入的是int类型 client.Write("DB4.12", (float)9); //写入的是float类型 5、SiemensClient是线程安全类 由于plc长连接有限,SiemensClient被设计成线程安全类。可以把SiemensClient设置成单例,在多个线程之间使用SiemensClient的实例读写操作plc。 MitsubishiClient(三菱)读写操作 //1、实例化客户端 - 输入正确的IP和端口 MitsubishiClient client = new MitsubishiClient(MitsubishiVersion.Qna_3E, "127.0.0.1",6000); //2、写操作 client.Write("M100", true); client.Write("D200", (short)11); client.Write("D210", 33); //3、读操作 var value1 = client.ReadBoolean("M100").Value; var value2 = client.ReadInt16("D200").Value; var value3 = client.ReadInt32("D210").Value; //4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。 client.Open(); //5、读写操作都会返回操作结果对象Result var result = client.ReadInt16("D210"); //5.1 读取是否成功(true或false) var isSucceed = result.IsSucceed; //5.2 读取失败的异常信息 var errMsg = result.Err; //5.3 读取操作实际发送的请求报文 var requst = result.Requst; //5.4 读取操作服务端响应的报文 var response = result.Response; //5.5 读取到的值 var value4 = result.Value; OmronFinsClient(欧姆龙)读写操作 //1、实例化客户端 - 输入正确的IP和端口 OmronFinsClient client = new OmronFinsClient("127.0.0.1",6000); //2、写操作 client.Write("M100", true); client.Write("D200", (short)11); client.Write("D210", 33); //3、读操作 var value1 = client.ReadBoolean("M100").Value; var value2 = client.ReadInt16("D200").Value; var value3 = client.ReadInt32("D210").Value; //4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。 client.Open(); //5、读写操作都会返回操作结果对象Result var result = client.ReadInt16("D210"); //5.1 读取是否成功(true或false) var isSucceed = result.IsSucceed; //5.2 读取失败的异常信息 var errMsg = result.Err; //5.3 读取操作实际发送的请求报文 var requst = result.Requst; //5.4 读取操作服务端响应的报文 var response = result.Response; //5.5 读取到的值 var value4 = result.Value; AllenBradleyClient(罗克韦尔)读写操作 //1、实例化客户端 - 输入正确的IP和端口 AllenBradleyClient client = new AllenBradleyClient("127.0.0.1",44818); //2、写操作 client.Write("A1", (short)11); //3、读操作 var value = client.ReadInt16("A1").Value; //4、如果没有主动Open,则会每次读写操作的时候自动打开自动和关闭连接,这样会使读写效率大大减低。所以建议手动Open和Close。 client.Open(); //5、读写操作都会返回操作结果对象Result var result = client.ReadInt16("A1"); //5.1 读取是否成功(true或false) var isSucceed = result.IsSucceed; //5.2 读取失败的异常信息 var errMsg = result.Err; //5.3 读取操作实际发送的请求报文 var requst = result.Requst; //5.4 读取操作服务端响应的报文 var response = result.Response; //5.5 读取到的值 var value4 = result.Value; 基于IoTClient库的一些项目 IoTClient Tool 桌面程序工具(开源) 所属个人:农码一生 IoTClient Tool桌面程序工具,地址开源。 1、可用于测试PLC及相关协议的通信 2、可作为IoTClient库使用示例。 iotgateway(开源) 所属个人:iioter 物联网网关 能源管理系统() 公司名称:擎纳尔科技 能源管理-现场-单项目 能源管理-云端-多项目 能源管理-移动端 海底捞即将控制() 公司名称:擎纳尔科技 海底捞终止控制-web 海底捞终止控制-移动端 --- ### 208. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要:在自动化和工业控制系统中,设备之间的高效通信是基础且关键的要素。本文旨在介绍如何通过Spring Boot集成Modbus,实现高效的设备通信。Modbus是一种广泛应用于工业自动化领域的串行通信协议,特别适合于监控和控制系统。我们将探讨Modbus的核心概念、其在Spring Boot中的实现方法,以及如何通过这种集成读写设备数据。 Modbus协议概述:Modbus是由Modicon公司开发的一种通信协议,主要用于可编程逻辑控制器(PLC)之间的通信。它以其简单性、实时性和作为开放标准的互操作性而著称。Modbus支持多种形式,包括Modbus RTU、Modbus ASCII和基于以太网的Modbus TCP/IP,能够满足不同的通信需求。 集成Spring Boot和Modbus:在Spring Boot应用中集成Modbus主要涉及以下几个步骤: 依赖配置: 在项目的pom.xml文件中添加Java Modbus Library的依赖,以便实现Modbus通信。 <dependency> <groupId>com.intelligt.modbus</groupId> <artifactId>modbus-core</artifactId> <version>1.2.0</version> </dependency> Modbus配置: 创建一个配置类,配置Modbus主站(Master)的连接信息,如串口路径、波特率等。 import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; @Configuration public class ModbusConfig { @Value("${modbus.serialPort}") private String serialPort; @Value("${modbus.baudRate}") private int baudRate; @Value("${modbus.dataBits}") private int dataBits; @Value("${modbus.stopBits}") private int stopBits; @Value("${modbus.parity}") private int parity; // ...其他配置参数 @Bean public ModbusMaster modbusMaster() { ModbusFactory modbusFactory = new ModbusFactory(); Transport transport = new SerialTransport(serialPort, baudRate, dataBits, stopBits, parity); ModbusMaster master = modbusFactory.createRtuMaster(transport); master.init(); return master; } } 数据读写: 实现Service类,封装读取和写入Modbus设备数据的方法。通过调用这些方法,可以实现对Modbus从站(Slave)的读取和控制。 @Service public class ModbusService { @Autowired private ModbusMaster modbusMaster; public int readHoldingRegister(int slaveId, int offset) { try { //创建一个保持寄存器的数据定位器(Locator)对象 BaseLocator<Integer> locator = BaseLocator.holdingRegister(slaveId, offset, DataType.TWO_BYTE_INT_SIGNED); return modbusMaster.getValue(locator); } catch (ModbusTransportException | ErrorResponseException e) { e.printStackTrace(); return -1; } } } 示例应用:我们将展示一个简单的应用示例,展示如何通过Spring Boot读取Modbus设备的保持寄存器数据。这涉及到创建数据定位器(Locator)和执行Modbus读取命令。 参数说明: slaveId:这是 Modbus 通信中的从站地址。每个 Modbus 从站设备都有一个唯一的地址,通常在 1 到 247 之间。slaveId 参数用于指定要与之通信的目标从站设备的地址。通常,Modbus 主站向特定的从站设备发送请求,从站设备根据其地址来判断是否需要响应请求。因此,slaveId 参数指定了通信的目标。 offset:这个参数用于指定要读取的保持寄存器的起始地址。Modbus 协议中的寄存器通常是一个 16 位的数据单元,可以存储整数、浮点数或其他数据类型。offset 参数表示从哪个寄存器开始读取数据。通过指定 offset,您可以确定要读取的寄存器的位置。 例如,如果您调用 readHoldingRegister(1, 100),这表示要读取从站地址为 1 的设备的保持寄存器,从寄存器地址 100 开始读取数据。这两个参数共同确定了要读取的寄存器的位置和目标设备。通常,您会根据特定的从站设备配置和通信需求来传递不同的 slaveId 和 offset 值,以实现对不同设备和不同寄存器的读取操作。这两个参数是 Modbus 通信中的关键参数,用于指定通信的目标和数据的位置。 写入Modbus数据 如果需要写入Modbus设备的数据,可以创建一个方法来执行写入操作。以下是一个示例: public void writeHoldingRegister(int slaveId, int offset, int value) { //slaveId:这是 Modbus 通信中的从站地址 //offset:用于指定要写入的保持寄存器的起始地址 //value:这是要写入到指定寄存器的数值 try { BaseLocator<Integer> locator = BaseLocator.holdingRegister(slaveId, offset, DataType.TWO_BYTE_INT_SIGNED); modbusMaster.setValue(locator, value); } catch (ModbusTransportException | ErrorResponseException e) { e.printStackTrace(); } } 这个方法允许您写入Modbus保持寄存器的值。 配置文件 根据项目需要,您可以在application.properties或application.yml中配置Modbus连接信息,例如串口设备路径、波特率等。以下是一个示例YAML配置: modbus: #串口设备路径 serialPort: /dev/ttyUSB0 #波特率 baudRate: 9600 #数据位数 dataBits: 8 #停止位数 stopBits: 1 #校验位,例如0(0表示无校验,1表示奇校验,2表示偶校验) parity: 0 结论:集成Spring Boot与Modbus为开发人员提供了一个强大且灵活的平台,用于构建和管理工业通信系统。通过本文提供的方法和示例,您可以快速开始实现基于Modbus的设备通信。 --- ### 209. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 FreeModbus库介绍 FreeModbus是一个简单易用的Modbus RTU库,它允许同时运行多个独立的Modbus RTU从机。这个库的特点在于它直接使用0xxxx-4xxxx寄存器空间,无需手动处理寄存器映射等繁琐问题,并且可以限制使用的最大寄存器数量。它提供了定时器接口和串口收发接口,可以根据硬件需求进行配置,非常符合常规使用Modbus通信的思路。 使用说明 以下是使用FreeModbus库的基本步骤: 搭建从机 1.1 引入库:将FreeModbus库添加到你的工程中,并引入头文件#include "mdrtuslave.h"。 1.2 创建Modbus RTU从机: #include "mdrtuslave.h" #define SLAVE_ID 5 #define BUAD_RATE 9600 static ModbusRTUSlaveHandler mdhandler; static mdVOID popchar(ModbusRTUSlaveHandler handler, mdU8 c) { // 此处添加串口发送代码 } static void ModbusInit() { struct ModbusRTUSlaveRegisterInfo info; info.slaveId = SLAVE_ID; info.usartBaudRate = BUAD_RATE; info.mdRTUPopChar = popchar; mdCreateModbusRTUSlave(&mdhandler, info); } ModbusInit(); 1.3 调用心跳函数: #define TIMER_UTIME 100 //定时器周期为100us static void timer_handler(void) //100us定时器回调函数 { mdhandler->portRTUTimerTick(mdhandler, TIMER_UTIME); } 1.4 从串口接收数据: static void usart_rec_handler(char *buf, size_t len) //串口接收中断函数 { for (size_t i = 0; i < len; i++) { mdhandler->portRTUPushChar(mdhandler, buf[i]); } } 写入和读取从机寄存器 2.1 读取输入线圈: mdBit bit; mdU32 addr = 0; mdSTATUS ret; ret = mdhandler->registerPool->mdReadInputCoil(mdhandler->registerPool, addr, &bit); //读取输入线圈,设备地址为10001 if (ret == mdFALSE) { printf("读取失败\n"); } 2.2 读取保持寄存器: mdU16 data; mdU32 addr = 0; mdSTATUS ret; ret = mdhandler->registerPool->mdReadHoldRegister(mdhandler->registerPool, addr, &data); //读取保持寄存器,地址为40001 if (ret == mdFALSE) { printf("读取失败\n"); } 2.3 写入输入线圈: mdBit bit = mdHigh; mdU32 addr = 0; mdSTATUS ret; ret = mdhandler->registerPool->mdWriteInputCoil(mdhandler->registerPool, addr, bit); //写入输入线圈,地址为10001,高电平 if (ret == mdFALSE) { printf("写入失败\n"); } 2.4 写入保持寄存器: mdU16 data = 0x1234; mdU32 addr = 0; mdSTATUS ret; ret = mdhandler->registerPool->mdWriteHoldRegister(mdhandler->registerPool, addr, data); //写入保持寄存器,地址为40001,大小为0x1234 if (ret == mdFALSE) { printf("写入失败\n"); } 2.5 其他寄存器操作API(推荐方式): /*不推荐*/ mdSTATUS (*mdReadBit)(RegisterPoolHandle handler,mdU32 addr,mdBit *bit); mdSTATUS (*mdWriteBit)(RegisterPoolHandle handler,mdU32 addr,mdBit bit); mdSTATUS (*mdReadBits)(RegisterPoolHandle handler,mdU32 addr,mdU32 len,mdBit *bits); mdSTATUS (*mdWriteBits)(RegisterPoolHandle handler,mdU32 addr,mdU32 len,mdBit *bits); mdSTATUS (*mdReadU16)(RegisterPoolHandle handler,mdU32 addr,mdU16 *data); mdSTATUS (*mdWriteU16)(RegisterPoolHandle handler,mdU32 addr,mdU16 data); mdSTATUS (*mdReadU16s)(RegisterPoolHandle handler,mdU32 addr,mdU32 len,mdU16 *data); mdSTATUS (*mdWriteU16s)(RegisterPoolHandle handler,mdU32 addr,mdU32 len,mdU16 *data); /*推荐*/ mdSTATUS (*mdReadCoil)(RegisterPoolHandle handler, mdU32 addr, mdBit* bit); //设备地址1~10000,addr=0 -> 设备1 mdSTATUS (*mdReadCoils)(RegisterPoolHandle handler, mdU32 addr, mdU32 len, mdBit* bits); mdSTATUS (*mdWriteCoil)(RegisterPoolHandle handler, mdU32 addr, mdBit bit); mdSTATUS (*mdWriteCoils)(RegisterPoolHandle handler, mdU32 addr, mdU32 len, mdBit* bits); mdSTATUS (*mdReadInputCoil)(RegisterPoolHandle handler, mdU32 addr, mdBit* bit); //设备地址10001~20000,addr=0 -> 设备10001 mdSTATUS (*mdReadInputCoils)(RegisterPoolHandle handler, mdU32 addr, mdU32 len, mdBit* bits); mdSTATUS (*mdWriteInputCoil)(RegisterPoolHandle handler, mdU32 addr, mdBit bit); mdSTATUS (*mdWriteInputCoils)(RegisterPoolHandle handler, mdU32 addr, mdU32 len, mdBit* bits); mdSTATUS (*mdReadInputRegister)(RegisterPoolHandle handler, mdU32 addr, mdU16* data);//设备地址30001~40000,addr=0 -> 设备30001 mdSTATUS (*mdReadInputRegisters)(RegisterPoolHandle handler, mdU32 addr, mdU32 len, mdU16* data); mdSTATUS (*mdWriteInputRegister)(RegisterPoolHandle handler, mdU32 addr, mdU16 data); mdSTATUS (*mdWriteInputRegisters)(RegisterPoolHandle handler, mdU32 addr, mdU32 len, mdU16* data); mdSTATUS (*mdReadHoldRegister)(RegisterPoolHandle handler, mdU32 addr, mdU16* data);//设备地址40001~50000,addr=0 -> 设备40001 mdSTATUS (*mdReadHoldRegisters)(RegisterPoolHandle handler, mdU32 addr, mdU32 len, mdU16* data); mdSTATUS (*mdWriteHoldRegister)(RegisterPoolHandle handler, mdU32 addr, mdU16 data); mdSTATUS (*mdWriteHoldRegisters)(RegisterPoolHandle handler, mdU32 addr, mdU32 len, mdU16* data); 还有其他寄存器操作API,比如mdReadCoil、mdReadInputCoil、mdReadInputRegister等,它们更符合Modbus变量地址的规范,可以更方便地读取和写入寄存器值。 Modbus变量地址 Modbus变量地址表示了Modbus通信中不同寄存器的位置和类型。这些地址是Modbus协议的一部分,用于指定要读取或写入的寄存器。以下是常见的Modbus变量地址及其含义: 0xxxx:这是线圈寄存器地址,对应Function Code 01(读取线圈)和Function Code 05(写单个线圈)。它们用于控制开关设备等,是可读写的。 1xxxx:这是输入线圈寄存器地址,对应Function Code 02(读取输入线圈)。它们用于表示输入信号,通常是只读的。 3xxxx:这是输入寄存器地址,对应Function Code 04(读取输入寄存器)。每个寄存器表示一个16位无符号整数,通常是只读的。 4xxxx:这是保持寄存器地址,对应Function Code 03(读取保持寄存器)、Function Code 06(写单个保持寄存器)和Function Code 16(写多个保持寄存器)。它们用于存储设备参数、状态等信息,是可读写的。 这些地址类型和功能码是Modbus通信的核心部分,通过它们,你可以读取和写入设备的不同寄存器,实现对设备的监控和控制。 总之,FreeModbus库提供了方便的方式来创建Modbus RTU从机,并进行寄存器的读取和写入操作,而Modbus变量地址则定义了不同寄存器的类型和功能,帮助 --- ### 210. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 RXD #include "ModBus.h" /******************************************************************/ StrRxd xdata sys_rxd; //定义接收处理结构体 /******************************************************************/ /*******公有函数***************************************************/ void init_proc_rxd(void); //初始化串口通信变量 void process_rxd(void); //通信处理函数 void init_serial(void); //初始化串口 /*******私有函数***************************************************/ uint8 read_sys_rxd(void); //读接收缓冲区 uint8 data_check(void); //校验和检验 uint8 lenghchk(void); //数据长度检验 void data_change(void); //数据ASCII转换成HEX /******************************************************************/ void init_proc_rxd(void)//初始化串口通信变量 { uint8 idata i; for( i = 0;i < POOLLEN;i++ ) { //读 sys_rxd.pool[i] = 0;//接收数据缓冲区 sys_rxd.rec_buf[i] = 0;//去除包头包尾后的数据保留区,这里只保留一帧有效数据 //写 sys_txd.pool[i] = 0;//发送数据ASCII缓冲区 sys_txd.combuf[i] = 0;//发送数据HEX缓冲区 } for( i = 0;i < 16;i++ ) { sys_rxd.add_buf[i] = 0;//用于存放接收缓冲的地址,可以存放16个帧地址,奇数位是首地址,偶数位是尾地址 } sys_rxd.front = 0; sys_rxd.rear = 0; sys_rxd.frm_num = 0;//缓冲区中的帧数量 sys_rxd.rd_byte = 0;//暂存读数据 sys_rxd.start_0x7e = 0; sys_rxd.end_0x0d = 0; sys_txd.txd_len = 0;//发送数据长度 } /*****************************************************************/ uint8 read_sys_rxd(void)//读接收缓冲区 { if( sys_rxd.rear == sys_rxd.front ) { return WRONG; } else { sys_rxd.rd_byte = sys_rxd.pool[sys_rxd.front]; sys_rxd.front = (sys_rxd.front+1) % POOLLEN; return RIGHT; } } /*****************************************************************/ uint8 data_check(void)//校验和检验 { uint8 add_len,temp; uint8 i,j,k,fram_temp; uint16 chk_sum,chk_sum_temp; fram_temp = sys_rxd.frm_num;//如何防止在处理数据的同时新的中断使该值变化 add_len = 0; if( fram_temp )//接收的一帧完整数据 { fram_temp -= 1; j = sys_rxd.add_buf[fram_temp * 2]; k = sys_rxd.add_buf[fram_temp * 2 + 1]; if(k > j) { add_len = k-j; } else { add_len = (POOLLEN - j ) + k;//地址确认 } sys_rxd.front = j; chk_sum = 0; for( i = 0;i < add_len - 4;i++ ) //4 byte is check sum { read_sys_rxd(); //the poionter is add1 if( sys_rxd.rd_byte == FRAME_START ) { sys_rxd.rd_byte = 0; } chk_sum += sys_rxd.rd_byte; } chk_sum = (~chk_sum) + 1; chk_sum_temp = 0; for(i=0;i<4;i++) { read_sys_rxd(); temp = sys_rxd.rd_byte;//rd_byte 暂存读数据 if(temp > 0x40) { temp -= 0x37; // get the hex valume } else { temp -= 0x30; } chk_sum_temp += temp; if( i < 3 ) { chk_sum_temp = chk_sum_temp << 4; } } if( chk_sum_temp == chk_sum ) { return RIGHT; } else { return WRONG; } } else { return WRONG; } } /*****************************************************************/ uint8 lenghchk(void) //数据长度检验 { uint8 link_sum,link_sum_temp; uint8 add_len; uint8 j,k,fram_temp; if( sys_rxd.rec_buf[4] != lchksum(sys_rxd.rec_buf[5]) ) { return WRONG; } fram_temp = sys_rxd.frm_num; //如何防止在处理数据的同时新的中断使该值变化 if ( fram_temp == 0 ) { return WRONG; } fram_temp--; j = sys_rxd.add_buf[fram_temp*2]; k = sys_rxd.add_buf[fram_temp*2+1]; if(k>j) { add_len = k-j; } else { add_len = ( POOLLEN - j ) + k; } link_sum_temp = (add_len - 17); link_sum = sys_rxd.rec_buf[5]; if(link_sum != link_sum_temp) { return WRONG; } else { return RIGHT; } } /*****************************************************************/ void data_change(void)//数据ASCII转换成HEX { uint8 add_len; uint8 i,j,k,temp1,fram_temp; uint8 temp; fram_temp = sys_rxd.frm_num; //如何防止在处理数据的同时新的中断使该值变化 if ( fram_temp == 0 ) { return; } fram_temp--; j = sys_rxd.add_buf[fram_temp*2]; k = sys_rxd.add_buf[fram_temp*2+1]; if(k>j) { add_len = k-j; } else { add_len = ( POOLLEN - j ) + k; } add_len = add_len / 2 + 1; //cup down 2 byte chksum sys_rxd.front = j; for(i = 0;i < add_len;i++ ) { read_sys_rxd(); //the poionter is add1 if (sys_rxd.rd_byte == 0x0d) { sys_rxd.rec_buf[i] = 0xaa; sys_rxd.rec_buf[i+1]=0x55; return; } if (sys_rxd.rd_byte == 0x7e) { read_sys_rxd(); } temp = sys_rxd.rd_byte; if(temp>0x40) { temp-=0x37; } else { temp -=0x30; } temp = temp<<4;//高4位 read_sys_rxd();//the poionter is add1 temp1 = sys_rxd.rd_byte; if(temp1>0x40) { temp1-=0x37; } else { temp1-=0x30; } sys_rxd.rec_buf[i] = temp+temp1; // include ver/adr/cid1/cid2/length/info } } /*****************************************************************/ void process_rxd(void) //接收缓冲区中的数据 入处理缓冲区 { while(sys_rxd.frm_num) { if(data_check() == WRONG) { sys_rxd.add_buf[sys_rxd.frm_num*2] = 0; sys_rxd.add_buf[sys_rxd.frm_num*2+1] =0; sys_rxd.frm_num --; txd_uni(0x02); //校验和错误 return; } data_change(); if( (sys_rxd.rec_buf[1] == ADDR ) ) //地址正确 { if( lenghchk() ==WRONG ) //长度校验 { sys_rxd.add_buf[sys_rxd.frm_num*2] = 0; sys_rxd.add_buf[sys_rxd.frm_num*2+1] =0; sys_rxd.frm_num --; txd_uni(0x03); //长度校验错误 return; } if(sys_rxd.rec_buf[0] != VER) { sys_rxd.add_buf[sys_rxd.frm_num*2] = 0; sys_rxd.add_buf[sys_rxd.frm_num*2+1] =0; sys_rxd.frm_num --; txd_uni(0x01); //版本错 return; } if( (sys_rxd.rec_buf[2] != M_CID)) //设备ID错 { sys_rxd.add_buf[sys_rxd.frm_num*2] = 0; sys_rxd.add_buf[sys_rxd.frm_num*2+1] =0; sys_rxd.frm_num--; txd_uni(0xe1); //设备ID错 return; } switch(sys_rxd.rec_buf[3]) { case 0x44: txd_sta(); break; case 0x4f: txd_uni(0x4f); //发送通讯协议版本号 break; case 0x50: txd_uni(0x50); //发送设备地址 break; case 0x51: txd_man(); //发送设备厂家信息 break; case 0x60: txd_uni(0x60); //系统初始化 break; default: txd_uni(0x04); //无效命令 break; } } sys_rxd.frm_num--; } } /*****************************************************************/ void init_serial(void)//初始化串口 { //串行口波特率等设置 TMOD=0x21; // T1 mode 2 T0,mode 1 //GATE C/T M1 M0 GATE C/T M1 M0 TL1=0xfa; // 0xfa=4800 bps 0xfd=9600 bps 0xe8 = 1200 0xf4 = 2400 TH1=0xfa; TH0=-(10000/256); TL0=-(10000%256); PCON=0; //波特率不变等设置 SCON=0x50; //串口1方式1,允许接收 IT0=1; //外部中断0下降沿有效 IT1=1; //外部中断1下降沿有效 TR0=1; //启动定时器0 TR1=1; //启动定时器1 ET0=1; //开放定时器0中断 ES=1; //串行中断 EX0=0; //外部中断0 EX1=1; //外部中断1 EA=1; //开总中断 // RS485EN = 0; } /*****************************************************************/ void serial_uart(void) interrupt 4 { uchar idata temp; uchar idata num; if(RI) { RI = 0; temp = SBUF; if( sys_rxd.start_0x7e && (temp != FRAME_END) ) { sys_rxd.pool[sys_rxd.rear] = temp; sys_rxd.rear = (sys_rxd.rear + 1) % POOLLEN; return; } else { if( (temp ^ FRAME_START)==0 ) //如果接收到包起始位 { if( (sys_rxd.start_0x7e) && (sys_rxd.end_0x0d) ) { sys_rxd.rear = sys_rxd.add_buf[num]; } else { //第一次接收到起始位 sys_rxd.start_0x7e = 1; sys_rxd.end_0x0d = 1; num = sys_rxd.frm_num * 2; //新的一帧的起始地址下标 sys_rxd.add_buf[num] = sys_rxd.rear; //起始地址保存 } sys_rxd.pool[sys_rxd.rear] = temp; sys_rxd.rear=(sys_rxd.rear+1) % POOLLEN; return; } else { if( sys_rxd.start_0x7e && ( temp == FRAME_END ) ) { sys_rxd.end_0x0d = 0; sys_rxd.start_0x7e = 0; sys_rxd.pool[sys_rxd.rear] = temp; sys_rxd.rear = (sys_rxd.rear+1) % POOLLEN; num = sys_rxd.frm_num*2+1;//结束地址位 if(sys_rxd.rear==0) //对于POOLLEN不是255的时候,如果直接-1做尾地址。肯定造成尾地址错误。因为 0-1=255 { sys_rxd.add_buf[num] = POOLLEN - 1;//在写进后的地址已加上1 } else { sys_rxd.add_buf[num] = sys_rxd.rear-1;//在写进后的地址已加上1 } sys_rxd.frm_num++;//增加一帧//成功才加一位 sys_rxd.frm_num = sys_rxd.frm_num % 16; return; } } } } } 这是一个用于处理Modbus通信的嵌入式C代码示例,包含了串口通信、数据校验、数据长度检验和数据转换等功能。以下是对这段代码的简要说明: StrRxd 结构体用于存储接收处理的相关变量和数据。 init_proc_rxd 函数用于初始化串口通信变量。它清零了一些缓冲区和标志变量,以准备接收数据。 read_sys_rxd 函数用于从接收缓冲区中读取一个字节的数据,并将其存储在 sys_rxd.rd_byte 中。 data_check 函数用于校验和检验。它计算接收数据的校验和并与接收数据的校验字段进行比较,以确保数据完整性。 lenghchk 函数用于数据长度检验。它比较接收到的数据长度字段与实际数据长度,以确保数据长度正确。 data_change 函数用于将ASCII格式的数据转换为HEX格式的数据,以便进一步处理。 process_rxd 函数用于处理接收到的数据。它根据协议规范检查数据的版本、地址和命令,然后执行相应的操作。 init_serial 函数用于初始化串口通信。它配置了串口的波特率、定时器等参数。 serial_uart 函数是串口接收中断服务程序。它在串口接收到数据时触发,将数据存储在接收缓冲区中,并触发相应的处理函数。 这段代码实现了一个简单的Modbus通信协议解析器,用于接收和处理Modbus RTU帧。请注意,此示例中的代码是为特定硬件和通信要求编写的,因此需要根据您的硬件和应用程序要求进行适当的修改。此外,它还包含了一些中断处理,如串口接收中断和定时器中断,以支持异步通信。这个代码示例是一个起点,您可以根据需要进行扩展和优化。 TXD #include "ModBus.h" //--------公有函数和变量------- StrTxd xdata sys_txd; /****************************************/ uint8 lchksum(uint8 data_len); //求LENTH_SUM函数 void txd_sta(void); //发送系统告警信息 void txd_man(void); //发送厂家信息 void txd_uni(uint8 cid2); //发送系统通信信息 /******************************************/ void package(void); //数据打包成ASCII码 void chksum (void); //求校验和 void com(void); //公共的发送函数 /******************************************/ uint8 lchksum(uint8 data_len)//求LENTH_SUM函数 { uint8 sum,temp1; sum = 0; if (data_len) { sum = data_len & 0x0f; temp1 = (data_len & 0xf0)>>4; sum += temp1; sum = sum %16; sum = (~sum)+1; sum = sum <<4; } return sum; } /******************************************/ void package(void)//数据打包成ASCII码 { uint8 i; uint8 temp1,temp2; sys_txd.pool[0] = FRAME_START; for(i = 1;i < POOLLEN; i++) { if( (sys_txd.combuf[i] == 0xaa ) && (sys_txd.combuf[i+1] == 0x55 ) ) //结束标志 { sys_txd.pool[i*2-1] = FRAME_END; break; } else { temp1 = sys_txd.combuf[i]; temp2 = temp1 & 0x0f; temp1 = temp1 & 0xf0; temp1 = temp1>>4; sys_txd.pool[i*2-1] = (temp1>0x09)?(temp1+0x37):(temp1+0x30); sys_txd.pool[i*2] = (temp2>0x09)?(temp2+0x37):(temp2+0x30); } } } /******************************************/ void chksum (void)//求校验和 { uint8 i; uint8 sumh,suml,temp; uint16 sum = 0; for(i = 1;i < POOLLEN;i++ ) { if( sys_txd.pool[i] == FRAME_END ) { temp = i; break; } else { sum += sys_txd.pool[i]; //溢出部分不用考虑 } } sum = (~sum) + 1;//取反+1 sumh = (uint8)(sum/256);//高8位 suml = (uint8)sum; i = temp; temp = (sumh&0xf0)>>4; temp = (temp>0x09)?(temp+0x37):(temp+0x30); sys_txd.pool[i] = temp; temp = (sumh & 0x0f); temp = (temp>0x09)?(temp+0x37):(temp+0x30); sys_txd.pool[i+1] = temp; temp = (suml&0xf0)>>4; temp = (temp>0x09)?(temp+0x37):(temp+0x30); sys_txd.pool[i+2] = temp; temp = (suml&0x0f); temp = (temp>0x09)?(temp+0x37):(temp+0x30); sys_txd.pool[i+3] = temp; sys_txd.pool[i+4] = FRAME_END; sys_txd.txd_len = i+4; return; } /******************************************/ void com(void)//公共的发送函数 { uint8 i; uint8 j; EA = 0; // RS485EN = 1; //使用485通信的时候使用 for( i = 0;i <= sys_txd.txd_len;i++ ) { SBUF = sys_txd.pool[i]; while(TI==0); TI = 0; if( sys_txd.pool[i] == FRAME_END ) { for( j=0;j <= sys_txd.txd_len;j++ ) { sys_txd.pool[i] = 0; //对已经发送的数据清0 } } } // RS485EN = 0; // RI = 0; //注意,如果485的接收使能一直有效,必须要这一行解决 EA = 1; } /******************************************/ void txd_sta(void)//发送系统告警信息 { sys_txd.combuf[0] = FRAME_START; //起始标志 sys_txd.combuf[1] = VER; //版本号 sys_txd.combuf[2] = ADDR; //地址,主机 sys_txd.combuf[3] = M_CID; //设备ID //------以上是包头--------- sys_txd.combuf[4] = 0x44; //Cid2=0x44,表示发送所有的告警状态 //------length--------- sys_txd.combuf[5] = lchksum(20); //length checksum////////////////////// sys_txd.combuf[6] = 20; //length id /********************************************/ sys_txd.combuf[7] = 20; //这里放告警信息 sys_txd.combuf[8] = 20; // sys_txd.combuf[9] = 20; // sys_txd.combuf[10] = 20; // /********************************************/ sys_txd.combuf[11] = 0xaa; //end ; sys_txd.combuf[12] = 0x55; //数据打包成ASCII码 package(); ////////////////////////////// chksum(); //除起始和校验和以及结束之外的ASCII码求校验和 com(); } /******************************************************/ void txd_man(void)//发送厂家信息 { //----------------------------------------------------------------- sys_txd.combuf[0] = FRAME_START; //起始标志 sys_txd.combuf[1] = VER; //版本号 sys_txd.combuf[2] = ADDR; //地址,主机 sys_txd.combuf[3] = M_CID; //设备ID //----------以上是包头 //----------------------------------------------------------------- sys_txd.combuf[4] =0x51; sys_txd.combuf[5] =lchksum(0x40); sys_txd.combuf[6] =0x40; sys_txd.combuf[7] = 'L'; //L sys_txd.combuf[8] = 'I'; //I sys_txd.combuf[9] = 'N'; //N sys_txd.combuf[10] = 'E'; //E sys_txd.combuf[11] = 0; sys_txd.combuf[12] = 0x00; sys_txd.combuf[13] = 0x00; sys_txd.combuf[14] = 0x00; sys_txd.combuf[15] = 0x00; sys_txd.combuf[16] = 0x00; sys_txd.combuf[17] = 0x01; //1 版本 sys_txd.combuf[18] = 0x00; //0 sys_txd.combuf[19] = 0x41; //A 厂家 sys_txd.combuf[20] = 0x41; //A sys_txd.combuf[21] = 0x41; //A sys_txd.combuf[22] = 0x41; //A sys_txd.combuf[23] = 0x41; //A sys_txd.combuf[24] = 0x41; //A sys_txd.combuf[25] = 0x41; //A sys_txd.combuf[26] = 0x41; //A sys_txd.combuf[27] = 0x41; //A sys_txd.combuf[28] = 0x41; //A sys_txd.combuf[29] = 0x00; sys_txd.combuf[30] = 0x00; sys_txd.combuf[31] = 0x00; sys_txd.combuf[32] = 0x00; sys_txd.combuf[33] = 0x00; sys_txd.combuf[34] = 0x00; sys_txd.combuf[35] = 0x00; sys_txd.combuf[36] = 0x00; sys_txd.combuf[37] = 0x00; sys_txd.combuf[38] = 0x00; sys_txd.combuf[39] = 0xaa; sys_txd.combuf[40] = 0x55; package(); //数据打包成ASCII码 chksum(); //除起始和校验和以及结束之外的ASCII码求校验和 com(); } /******************************************/ void txd_uni(uint8 cid2)//发送系统通信信息 { //----------------------------------------------------------------- sys_txd.combuf[0] = FRAME_START; //起始标志 sys_txd.combuf[1] = VER; //版本号 sys_txd.combuf[2] = ADDR; //地址,主机 sys_txd.combuf[3] = M_CID; //设备ID //----------以上是包头 //----------------------------------------------------------------- sys_txd.combuf[4] = cid2; sys_txd.combuf[5] = lchksum(0x00); //length checksum 0x00 sys_txd.combuf[6] = 0x00; //length id 00 sys_txd.combuf[7] = 0xaa; //length id=00,所以,没有info sys_txd.combuf[8] = 0x55; package(); //数据打包成ASCII码 chksum(); //除起始和校验和以及结束之外的ASCII码求校验和 com(); } /******************************************/ 这段代码是用于处理Modbus通信中的数据打包和发送的相关函数。以下是对每个函数的简要说明: lchksum 函数用于计算长度校验和(length checksum),以确保数据长度字段正确。它接受一个参数 data_len,计算并返回长度校验和。 package 函数用于将数据打包成ASCII码形式。它将HEX格式的数据转换为ASCII码,并在每个HEX字节之间插入合适的分隔符。最终的数据存储在 sys_txd.combuf 中。 chksum 函数用于计算校验和。它计算除了起始标志、校验和字段和结束标志之外的所有数据的校验和,将其添加到数据中。 com 函数用于发送数据。它通过串口将数据发送出去,并清除已发送的数据,以便下一次使用。 txd_sta 函数用于发送系统告警信息。它设置了一个特定的命令 cid2(0x44),表示发送告警信息。然后,它设置数据长度、告警信息和其他相关字段,最后调用 package、chksum 和 com 函数发送数据。 txd_man 函数用于发送厂家信息。它设置了一个特定的命令 cid2(0x51),表示发送厂家信息。然后,它设置数据长度、厂家信息和其他相关字段,最后调用 package、chksum 和 com 函数发送数据。 txd_uni 函数用于发送系统通信信息。它接受一个参数 cid2,表示通信命令。根据不同的 cid2,它设置了相应的命令并发送相应的数据。 这些函数一起构建了数据发送的流程,用于发送不同类型的Modbus帧。请注意,此示例中的代码是为特定应用程序编写的,因此需要根据您的要求进行适当的修改。此外,该代码示例还包括一些串口通信和数据转换的功能,以支持Modbus通信。 ModBusStr #ifndef MODBUSSTR_H #define MODBUSSTR_H //============================================== #define uchar unsigned char #define uint unsigned int #define uint8 unsigned char #define uint16 unsigned int //接收缓冲区结构变量 typedef struct str_rxd_pool { uint8 pool[255]; //接收数据缓冲区 uint8 front; //头指针 uint8 rear; //尾指针 uint8 rd_byte; //暂存读数据 uint8 frm_num; //缓冲区中的帧数量 uint8 add_buf[16]; //用于存放接收缓冲的地址,可以存放16个帧地址,奇数位是首地址,偶数位是尾地址 uint8 rec_buf[255]; //去除包头包尾后的数据保留区,这里只保留一帧有效数据 uint8 start_0x7e; //接收到帧头标志 uint8 end_0x0d; //接收到帧尾标志 }StrRxd; //=============================================== //发送缓冲区结构变量 typedef struct str_txd_pool { uint8 pool[255]; //发送数据ASCII缓冲区 uint8 combuf[255]; //发送数据HEX缓冲区 uint8 txd_len; //发送数据长度 }StrTxd; #endif 这是一个C语言头文件(MODBUSSTR.H),定义了用于Modbus通信的数据结构和相关类型别名。以下是这个头文件中定义的主要内容: 头文件保护宏定义 #ifndef MODBUSSTR_H 和 #define MODBUSSTR_H,以确保文件只被包含一次。 一些类型别名的定义,其中 uchar、uint、uint8 和 uint16 分别代表无符号字符、无符号整数和不同宽度的无符号整数。 StrRxd 结构体定义,用于接收缓冲区的相关数据结构。这个结构体包括以下成员: pool[255]:用于存储接收的数据的缓冲区,最大长度为255字节。 front:头指针,指向缓冲区的开头。 rear:尾指针,指向缓冲区的末尾。 rd_byte:用于暂存读取的数据。 frm_num:缓冲区中的帧数量。 add_buf[16]:用于存放接收缓冲区的地址,可以存放16个帧地址,奇数位是首地址,偶数位是尾地址。 rec_buf[255]:用于存储去除包头和包尾后的数据,只保留一帧有效数据。 start_0x7e:用于标志是否接收到帧头标志。 end_0x0d:用于标志是否接收到帧尾标志。 StrTxd 结构体定义,用于发送缓冲区的相关数据结构。这个结构体包括以下成员: pool[255]:用于存储发送的数据的ASCII码形式的缓冲区,最大长度为255字节。 combuf[255]:用于存储发送的数据的HEX形式的缓冲区,最大长度为255字节。 txd_len:发送数据的长度。 这个头文件定义了用于Modbus通信的数据结构,可以在应用程序中包含此头文件以访问这些数据结构和类型别名。这有助于更好地组织和管理Modbus通信中的数据。 ModBus #include "reg51.h" #include "ModBusStr.h" #define uchar unsigned char #define uint unsigned int #define uint8 unsigned char #define uint16 unsigned int #define OK 1 #define ERROR 0 #define RIGHT 1 #define WRONG 0 #define POOLLEN 255 //缓冲区大小 #define INIT_COMMAND 0x20 #define START_COMMAND 0x21 #define END_COMMAND 0x22 #define ALARM_COMMAND 0x23 #define FRAME_START 0x7e //帧开始标志 #define FRAME_END 0x0d //帧结束标志 #define VER 0x10 #define ADDR 0x01 #define M_CID 0x25 //设备识别码,0x25代表直流电源柜 extern StrRxd xdata sys_rxd; extern StrTxd xdata sys_txd; extern void init_proc_rxd(void); extern void process_rxd(void); extern void init_serial(void); extern uint8 lchksum(uint8 data_len); extern void txd_sta(void); extern void txd_man(void); extern void txd_uni(uint8 cid2); 这段代码是一个包含了一些宏定义、数据结构的头文件 "ModBusStr.h" 和其他的相关头文件 "reg51.h",以及定义了一些全局变量和函数原型。 以下是代码中的一些重要元素: 头文件包含: "reg51.h":这是用于 8051 系列单片机的标准头文件,提供了与该系列芯片相关的寄存器和宏定义。 "ModBusStr.h":这是你自己创建的头文件,包含了 Modbus 通信相关的数据结构和类型别名。 宏定义: OK 和 ERROR:定义了两个常量,分别为 1 和 0,通常用于表示函数执行成功和失败。 RIGHT 和 WRONG:定义了两个常量,通常用于表示某些条件或操作的成功和失败。 POOLLEN:定义了缓冲区的最大长度为 255。 INIT_COMMAND、START_COMMAND、END_COMMAND 和 ALARM_COMMAND:定义了一些命令常量,表示不同的操作。 FRAME_START 和 FRAME_END:定义了帧的起始和结束标志。 VER 和 ADDR:定义了版本号和地址。 M_CID:定义了设备的识别码。 外部全局变量声明: StrRxd xdata sys_rxd 和 StrTxd xdata sys_txd:声明了两个外部全局变量,sys_rxd 和 sys_txd,这些变量是在其他源文件中定义的,用于存储 Modbus 通信相关的数据。 外部函数原型声明: void init_proc_rxd(void)、void process_rxd(void) 和 void init_serial(void):这些函数原型声明用于初始化接收处理、通信处理和串口初始化。 uint8 lchksum(uint8 data_len)、void txd_sta(void)、void txd_man(void) 和 void txd_uni(uint8 cid2):这些函数原型声明用于计算长度校验和、发送系统告警信息、发送厂家信息和发送系统通信信息。 这段代码组织了 Modbus 通信相关的数据和函数,并通过头文件将这些定义和声明提供给其他源文件使用。源文件可以包含这个头文件来访问这些定义和声明,从而实现 Modbus 通信功能。 MainTest #include "ModBus.h" void main(void) { init_serial();//初始化串口 init_proc_rxd();//初始化串口通信变量 while(1) { process_rxd();//通信处理函数 接收缓冲区中的数据 入处理缓冲区 } } 这是一个8051单片机上的主程序示例,用于执行Modbus通信处理。在主函数中,它按照以下步骤进行操作: 包含 ModBus.h 头文件,该文件应该包含所有必需的定义、全局变量和函数原型以支持Modbus通信。 调用 init_serial() 函数,用于初始化串口通信,这是设置和准备与其他设备通信的重要一步。 调用 init_proc_rxd() 函数,用于初始化串口通信变量。这一步通常是为了确保通信变量处于正确的初始状态。 进入一个无限循环(while(1)),在循环中不断执行以下操作: 调用 process_rxd() 函数,这个函数用于通信处理,接收缓冲区中的数据并进行处理。通常,这是一个持续监听和处理来自其他设备的Modbus通信请求的过程。 整个程序将不断运行,等待来自其他设备的通信请求,然后执行相应的操作。这个示例中主要用于Modbus通信的初始化和处理,实际的通信逻辑和响应将在 process_rxd() 函数中实现。 --- ### 211. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化和控制系统开发中,Modbus协议的应用广泛。对于使用Go语言进行开发的人来说,选择一个强大、灵活且易用的Modbus库是至关重要的。今天,我要向大家推荐的就是gomodbus/v2。 gomodbus/v2是一个为Go语言开发者准备的Modbus库,支持Modbus RTU、ASCII和TCP的主库,同时也支持TCP从属。这个库有着以下的特点: 1. 支持多种格式:无论你需要Modbus串行(RTU,ASCII)客户端,还是Modbus TCP客户端和服务器,gomodbus/v2都可以满足你的需求。 2. 对象池设计:这个库采用了对象池设计,大大减少了内存的分配和回收,提升了性能。 3. 快速编码和解码:gomodbus/v2提供了高效的编码和解码功能,可以快速地进行Modbus消息的处理。 4. 简单的API:gomodbus/v2的API设计简洁明了,易于理解和使用。同时,它也支持原始数据API,可以满足更多复杂的需求。 安装gomodbus/v2非常简单,只需要执行下面的命令: ```bash go get github.com/thinkgos/gomodbus/v2 ``` 安装完成后,你可以在你的代码中导入gomodbus包,如下: ```go import modbus "github.com/thinkgos/gomodbus/v2" ``` gomodbus/v2支持所有常见的Modbus操作,包括: - 功能位访问:读取离散输入、读/写线圈 - 16位访问:读/写输入寄存器和暂挂寄存器、读/写多个寄存器、读/写FIFO队列 现在,我将gomodbus/v2和相关的依赖包都打包成了一个压缩包,为了支持我继续提供这样的资源,我决定对这个压缩包进行付费下载。购买这个压缩包后,你可以直接将所有的项目导入到你的开发环境中,节省你的时间,提高你的开发效率。 所以,如果你正在寻找一个强大、灵活且易用的Go语言Modbus库,那么gomodbus/v2将是你的最佳选择。赶快购买这个压缩包,开始你的Modbus开发之旅吧! --- ### 212. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化和控制系统开发中,Modbus协议的重要性不言而喻。对于使用Go语言的开发者来说,如何有效地进行Modbus开发是一个常见的问题。幸运的是,ModbusOne为我们提供了解决方案。 ModbusOne是一个专为Go语言用户设计的Modbus库,它具有统一的客户端和服务器API,支持Modbus RTU和Modbus TCP两种通讯方式,无论你的设备是通过串行线还是以太网进行通讯,ModbusOne都可以满足你的需求。 使用ModbusOne,你可以直接利用提供的API进行开发,而无需关心底层的通讯细节。无论你需要读取设备的寄存器,还是向设备写入数据,只需要简单的几行代码就能完成。 例如,下面的代码展示了如何使用ModbusOne创建一个处理Modbus协议的对象: ```go // handlerGenerator returns ProtocolHandlers that interact with our application. // In this example, we are only using Holding Registers. func handlerGenerator(name string) modbusone.ProtocolHandler { return &modbusone.SimpleHandler } ``` 在这个例子中,`handlerGenerator`函数返回一个处理Modbus协议的对象,这个对象是`modbusone.ProtocolHandler`接口的实现。`SimpleHandler`是`modbusone.ProtocolHandler`的一个简单实现,它可以用于处理基本的Modbus操作。 总的来说,ModbusOne为Go语言用户提供了一种简单有效的方式,来进行Modbus应用的开发。无论你是Modbus的初学者,还是已经有了一定的经验,都能在ModbusOne的帮助下,进行高效的开发工作。 因此,如果你正好需要进行Modbus开发,并且使用的是Go语言,那么一定不要错过ModbusOne。现在,我将ModbusOne和相关的依赖包都打包成了一个压缩包,为了支持我继续提供这样的资源,我决定对这个压缩包进行付费下载。当你购买这个压缩包后,你将可以直接将所有的项目导入你的开发环境中,从而节省你寻找和整合资源的时间。无论你是新手还是资深开发者,ModbusOne都是你进行工控开发的强大工具。 所以,赶快购买这个压缩包,开始你的Modbus开发之旅吧! 2026年更新:ModbusOne的现状与Go语言Modbus开发推荐方案 自2024年起,ModbusOne(github.com/Nigh/ModbusOne)原始仓库已从GitHub和Go包索引中下架,不再维护。对于需要在Go语言中进行Modbus开发的项目,我们推荐以下替代方案: go-modbus(github.com/thinkgos/go-modbus):纯Go实现的Modbus库,支持RTU/ASCII/TCP三种模式,同时提供客户端和服务器API,是目前社区维护最活跃的Go Modbus库。采用对象池设计,内存分配效率高,适合高并发采集场景。 eModbus(github.com/eModbus/eModbus):基于ESP32 MCU开发的Modbus库,2026年仍在活跃维护(最近提交:2026年2月)。虽然是C++库,但对嵌入式Modbus网关应用有重要参考价值。 libmodbus(github.com/stephane/libmodbus):C语言编写的经典Modbus库,支持Linux/Mac/Windows/QNX多平台,通过CGo可在Go项目中调用。2025年12月仍有维护更新。 对于工业物联网网关等生产级项目,建议优先选择维护活跃的库,并关注其许可证兼容性(go-modbus使用MIT许可证,libmodbus使用LGPL v2.1)。 --- ### 213. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus开发类库包括了modbus.h、modbus.lib、modbus-rtu.h、modbus-tcp.h、modbus-version.h等一系列重要文件。这些文件都是我们在使用Modbus进行开发时的重要文件。 首先,modbus.h是Modbus协议的主要头文件,其中定义了Modbus函数和数据结构,使我们能够方便地进行开发。modbus.lib则是Modbus协议的库文件,包含了实现Modbus协议的代码,极大地简化了我们的编程过程。 特别地,modbus-rtu.h和modbus-tcp.h分别为我们提供了Modbus RTU和Modbus TCP两种通讯方式的特定头文件。Modbus RTU适用于通过串行线进行通讯的场景,而Modbus TCP则更适用于基于以太网的通讯场景。 最后,modbus-version.h文件为我们提供了关于Modbus协议版本的信息,确保我们可以在各种设备和平台上进行一致和高效的开发。 --- ### 214. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 GitHub:https://github.com/infiniteautomation/modbus4j 由Infinite Automation Systems和Serotonin Software用Java编写的Modbus协议的高性能和易用性实现。支持ASCII,RTU,TCP和UDP传输作为从属或主用,自动请求分区和响应数据类型解析。 现在可以使用最新版本的公共Maven存储库,将其添加到pom.xml中 <repositories> <repository> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> <id>ias-snapshots</id> <name>Infinite Automation Snapshot Repository</name> <url>https://maven.mangoautomation.net/repository/ias-snapshot/</url> </repository> <repository> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <id>ias-releases</id> <name>Infinite Automation Release Repository</name> <url>https://maven.mangoautomation.net/repository/ias-release/</url> </repository> </repositories> 依赖项信息为: <dependency> <groupId>com.infiniteautomation</groupId> <artifactId>modbus4j</artifactId> <version>3.0.3</version> </dependency> 核心类 主机Master及其子类:主机的入口,数据流的起点和终点。 数据端口类StreamTransport:负责数据的写入和读出。 Modbus消息类ModbusMessage及其子类:支持Modbus定义的各种方法(FunctionCode) 收发数据控制类MessageControl:支持 timeout、retries,默认200ms,1次。 收发等待室WaitingRoom:负责同步收发逻辑。 输出Request消息类:OutgoingRequestMessage 及其子类。 收到Response消息类:IncomingResponseMessage 及其子类。 解析类MessageParser:负责解析收到的消息。 协议数据类型定义:DataType 协议功能码定义:FunctionCode 协议寄存器范围:RegisterRange 数据流程 透过ModbusFactory创建对应的Master对象。 封装需要发送的指令,比如ReadHoldingRegistersRequest,这是一个读寄存器指令,指定寄存器地址和长度即可。 Master对象将这个ReadHoldingRegistersRequest转化为OutgoingRequestMessage对象,然后传输给MessageControl。 透过驱动层,MessageControl将这个OutgoingRequestMessage写入对应的通讯硬件外设(串口、网口等),并等待返回数据IncomingResponseMessage。 如果没有等到,就返回null,并提醒超时。 如果等到了有效返回,则MessageControl利用MessageParser将IncomingResponseMessage转化为对应ModbusResponse返回给上层。 单元测试 在modbus4j/src_test/定义了一系列单元测试方法,跟踪其中相关方法,即可了解modbus协议的实际运作流程。 --- ### 215. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 以下是一个基于C#的上位机实例,用于与台达PLC进行Modbus通信。它使用Modbus TCP协议与PLC通信,并使用Modbus TCP库来实现通信。 使用该上位机实例进行Modbus通信时,请确保PLC已正确设置Modbus TCP协议参数,并已启用Modbus TCP服务器功能。此外,用户需要根据PLC的具体型号和版本选择适当的Modbus功能码和寄存器地址,以确保通信正常。 该实例提供了一个基础框架,可以方便地扩展和修改以满足不同应用场景的需求。用户可以基于该实例进行二次开发,实现更复杂的PLC通信功能。 2023022106590471下载   基于C#的上位机实例,用于与台达PLC进行Modbus通信源码下载: --- ### 216. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 基于Modbus协议的TCP服务器-客户端架构是一种常见的自动化控制系统架构。在这种架构中,Modbus TCP服务器和客户端之间使用TCP/IP协议进行通信。Modbus TCP服务器是一个监听TCP端口的应用程序,它可以接受来自客户端的请求,并对请求进行处理。客户端可以是任何支持TCP/IP协议的设备或应用程序,例如PC、PLC或嵌入式系统。 Modbus TCP服务器通常支持多个TCP连接,每个连接都是一个独立的Modbus会话。每个会话可以包含多个Modbus请求和响应。客户端可以通过发送Modbus请求来与服务器进行通信,服务器将返回Modbus响应以响应请求。Modbus请求和响应通常包括一个功能码,它指示请求或响应的类型,以及一个或多个数据寄存器地址,这些寄存器用于存储数据。   ModbusClassTCP ModbusSampleCommon 基于Modbus协议的TCP服务器-客户端源码(C#)下载:   --- ### 217. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 JAVA作为一种跨平台的编程语言,广泛应用于各个领域,包括工业自动化。与此同时,PLC作为工业自动化领域的核心设备,负责控制各种工艺流程。因此,JAVA与PLC的通信是工业自动化领域一个非常重要的话题。 1.Java 语言介绍 Java 语言是一个支持网络计算的面向对象程序设计语言。Java 语言吸收了 Smalltalk 语言和 C++语言的优点,并增加了其它特性,如支持并 发程序设计、网络通信和多媒体数据控制等。 Java 语言的优良特性使得Java 应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。 Java 对对象技术的全面支持和 Java 平台内嵌的 API 能缩短应用系统的开发时间并降低成本。 Java 的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。 2.PLC 与计算机间的串口通信 S7-200 型 PLC 具有十分强大的联网功能,可以连接编程器、人机接口设备或其它 PLC。S7-200 系列 PLC 的通信接口是 9 针 RS-485 信号接 口,可通过 PC/PPI 电缆与计算机联接,也可通过 SINEC-L2 接口与其它PLC 连成网络。 采用 COM 口连接 PLC 与计算机,完成串口通信。串口可以在使用一根线发送数据的同时用另一根线接收数据,可以很简单地实现远距离 通信。 3.下位机 PLC 通讯程序的设计PLC 通讯是 PLC 实际应用中一个十分关键的问题,可以利用 S7-200 的可编程通讯口模式来实现各种各样的通信功能,它完全可以实现很多十分复杂的功能。 以上是部分截图,完整示例请下载: --- ### 218. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 XTinyModbus是一款基于C语言开发的嵌入式Modbus协议栈,支持主站和从站。它可以被广泛应用于嵌入式系统中,例如自动化控制、智能家居、工业测控等领域。XTinyModbus代码简洁,易于理解和修改,且具有高效稳定的通信性能。 作为一个轻量级协议栈,XTinyModbus支持Modbus RTU和Modbus ASCII两种传输模式,并且支持不同的串口配置。它还支持多个从站和主站设备之间的通信,并提供了完整的Modbus协议帧解析和封装功能。此外,XTinyModbus还提供了易于使用的API接口,开发人员可以轻松地在其基础上进行二次开发,满足自己的需求。 总的来说,XTinyModbus是一个可靠、灵活、高效的Modbus协议栈,适用于各种嵌入式应用场景。无论是初学者还是经验丰富的开发人员,都可以从中获得丰富的开发经验和技能。 以下是(XTinyModbus)C语言嵌入式Modbus协议栈,主站、从站示例源码下载: --- ### 219. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 51单片机是一种常用的嵌入式微控制器,而485总线通信协议是目前应用较广泛的通信协议之一,它是一种串行通信协议,可以实现远距离、高速、可靠的数据传输。在工业自动化、智能家居、能源监测等领域,485总线通信协议被广泛应用。 下面在51单片机上实现RS485的modbus通讯例程源码:     --- ### 220. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 例程说明: 1、网口版设备与PLC连接时,单网口版设备必须在网络连接配置里面将【透传】更改为Modbus TCP才可以。 2、串口版例程需要使用smart 2.4版本软件打开。 示例工程文章底部进行下载 --- ### 221. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 示例工程文章底部进行下载 2023021907060548 --- ### 222. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 要使用 Python 读取 Modbus 设备的数据,可以使用第三方 Modbus 库,如 pymodbus,它可以通过 TCP 或 RTU 等方式连接到 Modbus 设备,然后读取和写入数据。以下是使用 pymodbus 读取 Modbus 设备数据的一些基本步骤: 安装 pymodbus 库:可以使用 pip 命令安装 pymodbus 库,例如在命令行中输入 pip install pymodbus。 导入 ModbusClient 类:使用 from pymodbus.client.sync import ModbusTcpClient 或 from pymodbus.client.sync import ModbusSerialClient 导入 ModbusClient 类,根据需要选择 TCP 或 RTU 连接方式。 创建 ModbusClient 对象:使用 ModbusClient 类创建 ModbusClient 对象,设置连接的 IP 地址、端口号、串口号等连接参数,例如 client = ModbusTcpClient('192.168.1.10', port=502) 或者 client = ModbusSerialClient(method='rtu', port='/dev/ttyUSB0', baudrate=9600, timeout=1) 读取数据:使用 ModbusClient 对象的 read_coils、read_discrete_inputs、read_holding_registers 或 read_input_registers 方法读取数据,指定要读取的起始地址和数量,例如: # 读取保持寄存器地址为 100,数量为 10 的数据 result = client.read_holding_registers(100, 10) 处理数据:从读取的结果中提取需要的数据,例如使用 result.registers 获取保持寄存器的数据,然后进行进一步的处理或显示。 关闭连接:使用 ModbusClient 对象的 close 方法关闭与 Modbus 设备的连接,例如: client.close() 通过使用 pymodbus 库,可以方便地读取 Modbus 设备的数据,根据需要进行数据处理、存储或展示。需要注意的是,在使用 pymodbus 库时,要根据具体的应用场景,设置合适的连接方式、地址和参数等,以保证通信的安全、稳定和可靠。 --- ### 223. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 根据传入的参数,创建 MODBUS RTU 实例: /// <summary> /// 建立 MODBUS RTU 串口业务 /// String comnum = 串口号 /// int buad = 串口的波特率 /// int dataLen = 数据长度 /// String chklen = 检验位 /// String stoplen = 停止位 /// </summary> public ModbusRTU_Lib(String comnum,int buad,int dataLen,string chklen,string stoplen,int scantime)   添加一个 MODBUS RTU 扫描从站: /// <summary> /// 清除所有的从站列表 /// </summary> public void clearAllModbusSalve() /// <summary> /// 删除扫描列表中的指定从站 /// </summary> /// <param name="whichAddr"></param> public void deletAllModbusSalve(int whichAddr) 清除创建的 MODBUS RTU 多从站扫描列表:   /// <summary> /// 增加 MODBUS 从站扫描列表 /// </summary> /// <param name="xDeviceMdEnty"></param> public void addModbusSlaveScanList(DeviceMdEnty xDeviceMdEnty) 打开一个 MODBUS RTU 的通讯串口 /// <summary> /// 打开串口 /// </summary> /// <returns></returns> public Boolean openUartOfModbus() 关闭串口 /// <summary> /// 关闭串口 /// </summary> /// <returns></returns> public Boolean closeUartOfModbus() 启动 MODBUS RTU 的定时扫描业务 /// <summary> /// 启动 MODBUS 扫描业务 /// </summary> public void startModbusWork()   发送 MODBUS RTU 指令 发送数据 * int slaveAddr = 从站地址 int addrTe = 读写的启始地址 int cmdTe = 功能码 int lenTe =读出数据长度 byte[] msgBuf = 待写入的数据的缓冲期,每个字占 2BYTE int msgLen = 写入的数据长度 return : * true = 已发送数据,false = 未发送 * *********************************************************************/ /// <summary> /// /// </summary> public Boolean sendModbusMsg(int slaveAddr,int cmdTe, int addrTe, int lenTe, byte[] msgBuf, int msgLen) MODBUS RTU 的实例的回调方法,返回所有串口收到的数据 Result = "E00";表示"创建串口失败:" Result = "E01";表示"串口号未设置:" Result = "E02";表示"停止位参数错误:" Result = "E03";表示"校验位参数错误:" Result = "F00";表示"校验位参数错误:" Result = "Y00";表示"创建串口成功:" Result = "M00";表示"接收到串口数据:" 声明关于事件的委托,参数为要回传的数据类型,串口接收数据 public delegate void ModbusRTU_EventHandler(string result, byte[] msg) ;   MODBUS RTU 的实例的回调方法,返回所有串口收到的数据且经过地址和校验码验证的 Result = "AE0";表示"创建串口失败:" Result = "CE0";表示"串口号未设置:" Result = "DE0";表示"停止位参数错误:" Result = "D00";表示"接收到正确解析的串口数据:" Result = "D01";表示"功能码 0x01--正确应答数据! :" Result = "D02";表示"功能码 0x02--正确应答数据 !" Result = "D03";表示"功能码 0x03--正确应答数据 !" Result = "D04";表示"功能码 0x04--正确应答数据 !" Result = "D05";表示"功能码 0x05--正确应答数据 !" Result = "D06";表示"功能码 0x06--正确应答数据 !" Result = "D0F";表示"功能码 0x0F--正确应答数据 !" Result = "D10";表示"功能码 0x10--正确应答数据 !"   声明关于事件的委托,参数为要回传的数据类型,串口接收数据并 MODBUS 验证 public delegate void ModbusRTU_DecodeHandler(string result, byte[] msg) ;   建立 1 个 MODBUS RTU 从站的列表; DLL 会根据设备数自动扫描;对于没有的功能,指定长度为 0 即可;如 16 入 16 出数字量模块则可指 定输入寄存器和保持寄存器长度为 0  /// <summary> /// 建立扫描列表 /// </summary> /// <param name="SlaveAddr">设置当前从站的站号</param> /// <param name="CoilLen">设置当前从站的输出线圈个数</param> /// <param name="DiscLen">设置当前从站的输入数字量个数</param> /// <param name="InputRegLen">设置当前从站的输入寄存器个数</param> /// <param name="HoldingRegLen">设置当前从站的保持寄存器个数</param> public DeviceMdEnty(int SlaveAddr, int CoilLen, int DiscLen, int InputRegLen, int HoldingRegLen)         --- ### 224. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 实例化MODBUS 库 /// <summary> /// 实例化 MODBUS 库 /// </summary> /// <param name="tempAddr">默认的从站地址</param> /// <param name="tempNum">初始包序号</param> public AndyModbusLib(byte tempAddr, ushort tempNum)   MODBUS TCP 请求报文生成方法 /* 生成数据包 int addrTe = 读写的启始地址 int cmdTe = 功能码 int lenTe =读出数据长度 byte[] msgBuf = 待写入的数据的缓冲期,每个字占 2BYTE int msgLen = 写入的数据长度 *********************************************************************/ public byte[] makeModbusTcp_Packaget(int cmdTe, int addrTe, int lenTe, byte[] msgBuf, int msgLen)   MODBUS TCP 应答报文解析方法 /* 解析 MODBUS RTU 数据包 int addrTe = 启始地址 byte[] msgBuf = 接收到的数据的缓冲期,每个字占 2BYTE int msgLen = 接收到的的数据长度(BYTE)计算 *********************************************************************/ public int decodeModbusRtuMsg(int addrTe, byte[] msgBuf, int msgLen)   事件委托 /// <summary> /// 声明关于事件的委托,参数为要回传的数据类型 /// </summary> /// <param name="cmd"> = 功能码</param> /// <param name="msg"读出的数值</param> /// <param name="len">长度</param> public delegate void MDTCP_EventHandler(byte cmd, byte[] msg, int len); 例程在本页下载 --- ### 225. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 modbus_build_request函数是libmodbus库中的一个函数,其原型为: int modbus_build_request(modbus_t *ctx, int function, int addr, int nb, uint8_t *req); 其中,参数含义如下: ctx:指向modbus_t结构体的指针,表示使用哪个Modbus上下文对象。 function:表示请求的Modbus函数码。 addr:表示请求的寄存器地址。 nb:表示请求的寄存器数量。 req:表示存储请求数据的缓冲区。 函数返回值为请求数据的长度,如果返回值小于0,则表示出错。 该函数用于构造Modbus请求报文,将报文数据存储在缓冲区中,可以通过调用函数将请求报文发送出去。在构造请求报文时,参数指定请求的Modbus函数码,参数指定请求的寄存器地址,参数指定请求的寄存器数量,参数为存储请求数据的缓冲区。reqmodbus_send_raw_requestfunctionaddrnbreq --- ### 226. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <fcntl.h> #include <termios.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define PORT 502 #define SERVER_IP "192.168.0.100" #define DEVICE_ID 1 #define BUFFER_SIZE 1024 int main() { // 创建TCP连接 int sockfd; struct sockaddr_in server_addr; sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == -1) { printf("Failed to create socket: %s\n", strerror(errno)); return 1; } server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { printf("Failed to connect to server: %s\n", strerror(errno)); close(sockfd); return 1; } printf("Connected to server successfully.\n"); // 准备modbus请求 unsigned char request[BUFFER_SIZE]; unsigned char response[BUFFER_SIZE]; int request_length, response_length; // 读保持寄存器 int register_address = 0; int register_count = 4; request_length = modbus_build_request(request, DEVICE_ID, MODBUS_FC_READ_HOLDING_REGISTERS, register_address, register_count); // 发送modbus请求 if (send(sockfd, request, request_length, 0) == -1) { printf("Failed to send request: %s\n", strerror(errno)); close(sockfd); return 1; } printf("Sent request successfully.\n"); // 接收modbus响应 response_length = recv(sockfd, response, BUFFER_SIZE, 0); if (response_length == -1) { printf("Failed to receive response: %s\n", strerror(errno)); close(sockfd); return 1; } printf("Received response successfully.\n"); // 解析modbus响应 int register_value = modbus_get_response_value(response, response_length); printf("Register value: %d\n", register_value); // 关闭TCP连接 close(sockfd); return 0; } 上述示例代码使用了modbus协议中的读保持寄存器功能,通过TCP连接发送请求,接收响应并解析响应,最后关闭TCP连接。您可以根据实际情况修改代码中的SERVER_IP和DEVICE_ID等参数,以及读取的保持寄存器地址和数量。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <fcntl.h> #include <termios.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define PORT 502 #define SERVER_IP "192.168.0.100" #define DEVICE_ID 1 #define BUFFER_SIZE 1024 int main() { // 创建TCP连接 int sockfd; struct sockaddr_in server_addr; sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == -1) { printf("Failed to create socket: %s\n", strerror(errno)); return 1; } server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { printf("Failed to connect to server: %s\n", strerror(errno)); close(sockfd); return 1; } printf("Connected to server successfully.\n"); // 准备modbus请求 unsigned char request[BUFFER_SIZE]; unsigned char response[BUFFER_SIZE]; int request_length, response_length; // 读保持寄存器 int register_address = 0; int register_count = 4; request_length = modbus_build_request(request, DEVICE_ID, MODBUS_FC_READ_HOLDING_REGISTERS, register_address, register_count); // 发送modbus请求 if (send(sockfd, request, request_length, 0) == -1) { printf("Failed to send request: %s\n", strerror(errno)); close(sockfd); return 1; } printf("Sent request successfully.\n"); // 接收modbus响应 response_length = recv(sockfd, response, BUFFER_SIZE, 0); if (response_length == -1) { printf("Failed to receive response: %s\n", strerror(errno)); close(sockfd); return 1; } printf("Received response successfully.\n"); // 解析modbus响应 int register_value = modbus_get_response_value(response, response_length); printf("Register value: %d\n", register_value); // 关闭TCP连接 close(sockfd); return 0; } --- ### 227. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 using System; using System.Net.Sockets; using Modbus.Data; using Modbus.Device; namespace ModbusMasterExample { class Program { static void Main(string[] args) { TcpClient client = new TcpClient("localhost", 502); // 连接到Modbus TCP服务器 ModbusIpMaster master = ModbusIpMaster.CreateIp(client); // 创建Modbus Master ushort startAddress = 0; ushort numRegisters = 10; // 读取线圈状态 bool[] coils = master.ReadCoils(1, startAddress, numRegisters); Console.WriteLine("Coils: " + String.Join(", ", coils)); // 读取离散输入状态 bool[] inputs = master.ReadInputs(2, startAddress, numRegisters); Console.WriteLine("Inputs: " + String.Join(", ", inputs)); // 读取保持寄存器 ushort[] holdingRegisters = master.ReadHoldingRegisters(3, startAddress, numRegisters); Console.WriteLine("Holding Registers: " + String.Join(", ", holdingRegisters)); // 读取输入寄存器 ushort[] inputRegisters = master.ReadInputRegisters(4, startAddress, numRegisters); Console.WriteLine("Input Registers: " + String.Join(", ", inputRegisters)); } } } 实例2: private static void Main(string[] args) { try { ModbusSerialRtuMasterWriteRegisters(); ModbusTcpMasterReadInputs(); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } /// <summary> /// Simple Modbus serial RTU master write holding registers example. /// </summary> public static void ModbusSerialRtuMasterWriteRegisters() { using (SerialPort port = new SerialPort("COM3")) { // configure serial port port.BaudRate = 9600; port.DataBits = 8; port.Parity = Parity.None; port.StopBits = StopBits.One; port.Open(); var factory = new ModbusFactory(); IModbusMaster master = factory.CreateRtuMaster(port); byte slaveId = 1; ushort startAddress = 100; ushort[] registers = new ushort[] { 1, 2, 3 }; // write three registers master.WriteMultipleRegisters(slaveId, startAddress, registers); } } /// <summary> /// Simple Modbus TCP master read inputs example. /// </summary> public static void ModbusTcpMasterReadInputs() { using (TcpClient client = new TcpClient("127.0.0.1", 502)) { var factory = new ModbusFactory(); IModbusMaster master = factory.CreateMaster(client); // read five input values ushort startAddress = 100; ushort numInputs = 5; bool[] inputs = master.ReadInputs(0, startAddress, numInputs); for (int i = 0; i < numInputs; i++) { Console.WriteLine($"Input {(startAddress + i)}={(inputs[i] ? 1 : 0)}"); } } // output: // Input 100=0 // Input 101=0 // Input 102=0 // Input 103=0 // Input 104=0 } 上述示例代码创建了一个Modbus TCP客户端,然后使用Modbus Master对象实现了读取线圈状态、离散输入状态、保持寄存器和输入寄存器的功能。当然,实际使用时需要根据实际情况进行修改。 NModbus库在本页面下载 --- ### 228. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 package run; import de.re.easymodbus.modbusclient.*; public class run { public static void main(String[] args) { ModbusClient modbusClient = new ModbusClient("127.0.0.1",502); try { modbusClient.Connect(); modbusClient.WriteSingleCoil(0, true); modbusClient.WriteSingleRegister(0, 1234); modbusClient.WriteMultipleRegisters(11, ModbusClient.ConvertFloatToTwoRegisters((float) 123.56)); System.out.println(modbusClient.ReadCoils(0, 1)[0]); System.out.println(modbusClient.ReadHoldingRegisters(0, 1)[0]); System.out.println(ModbusClient.ConvertRegistersToFloat(modbusClient.ReadHoldingRegisters(11, 2))); } catch (Exception e) { } } } --- ### 229. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 示例代码: <span class="n">package</span> <span class="n">run</span><span class="p">;</span> <span class="kn">import</span> <span class="nn">de.re.easymodbus.server.</span><span class="o">*</span><span class="p">;</span> <span class="n">public</span> <span class="k">class</span> <span class="nc">run</span> <span class="p">{</span> <span class="n">public</span> <span class="n">static</span> <span class="n">void</span> <span class="n">main</span><span class="p">(</span><span class="n">String</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span> <span class="n">ModbusServer</span> <span class="n">modbusServer</span> <span class="o">=</span> <span class="n">new</span> <span class="n">ModbusServer</span><span class="p">();</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">setPort</span><span class="p">(</span><span class="mi">1522</span><span class="p">);</span><span class="o">//</span><span class="n">Note</span> <span class="n">that</span> <span class="n">Standard</span> <span class="n">Port</span> <span class="k">for</span> <span class="n">Modbus</span> <span class="n">TCP</span> <span class="n">communication</span> <span class="ow">is</span> <span class="mi">502</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">coils</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">holdingRegisters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1234</span><span class="p">;</span> <span class="k">try</span> <span class="p">{</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">Listen</span><span class="p">();</span> <span class="p">}</span> <span class="n">catch</span> <span class="p">(</span><span class="n">java</span><span class="o">.</span><span class="n">io</span><span class="o">.</span><span class="n">IOException</span> <span class="o">|</span> <span class="n">Exceptions</span><span class="o">.</span><span class="n">ModbusException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> JAVA库文件在本页下载 <span class="n">package</span> <span class="n">run</span><span class="p">;</span> <span class="kn">import</span> <span class="nn">de.re.easymodbus.server.</span><span class="o">*</span><span class="p">;</span> <span class="n">public</span> <span class="k">class</span> <span class="nc">run</span> <span class="p">{</span> <span class="n">public</span> <span class="n">static</span> <span class="n">void</span> <span class="n">main</span><span class="p">(</span><span class="n">String</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span> <span class="n">ModbusServer</span> <span class="n">modbusServer</span> <span class="o">=</span> <span class="n">new</span> <span class="n">ModbusServer</span><span class="p">();</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">setPort</span><span class="p">(</span><span class="mi">1522</span><span class="p">);</span><span class="o">//</span><span class="n">Note</span> <span class="n">that</span> <span class="n">Standard</span> <span class="n">Port</span> <span class="k">for</span> <span class="n">Modbus</span> <span class="n">TCP</span> <span class="n">communication</span> <span class="ow">is</span> <span class="mi">502</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">coils</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">holdingRegisters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1234</span><span class="p">;</span> <span class="k">try</span> <span class="p">{</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">Listen</span><span class="p">();</span> <span class="p">}</span> <span class="n">catch</span> <span class="p">(</span><span class="n">java</span><span class="o">.</span><span class="n">io</span><span class="o">.</span><span class="n">IOException</span> <span class="o">|</span> <span class="n">Exceptions</span><span class="o">.</span><span class="n">ModbusException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> --- ### 230. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 .NET:Modbus-RTU Master Simple Read and Write 操作 using System; using EasyModbus; namespace ModbusRS485Master { class Program { public static void Main(string[] args) { ModbusClient modbusClient = new ModbusClient("COM1"); //modbusClient.UnitIdentifier = 1; Not necessary since default slaveID = 1; //modbusClient.Baudrate = 9600; // Not necessary since default baudrate = 9600 //modbusClient.Parity = System.IO.Ports.Parity.None; //modbusClient.StopBits = System.IO.Ports.StopBits.Two; //modbusClient.ConnectionTimeout = 500; modbusClient.Connect(); Console.WriteLine("Value of Discr. Input #1: "+modbusClient.ReadDiscreteInputs(0,1)[0].ToString()); //Reads Discrete Input #1 Console.WriteLine("Value of Input Reg. #10: "+modbusClient.ReadInputRegisters(9,1)[0].ToString()); //Reads Inp. Reg. #10 modbusClient.WriteSingleCoil(4,true); //Writes Coil #5 modbusClient.WriteSingleRegister(19,4711); //Writes Holding Reg. #20 Console.WriteLine("Value of Coil #5: "+modbusClient.ReadCoils(4,1)[0].ToString()); //Reads Discrete Input #1 Console.WriteLine("Value of Holding Reg.. #20: "+modbusClient.ReadHoldingRegisters(19,1)[0].ToString()); //Reads Inp. Reg. #10 modbusClient.WriteMultipleRegisters(49, new int[10] {1,2,3,4,5,6,7,8,9,10}); modbusClient.WriteMultipleCoils(29, new bool[10] {true,true,true,true,true,true,true,true,true,true,}); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } } NET:Modbus-TCP 客户端简单读写操作 namespace ModbusClientApplication { class Program { public static void Main(string[] args) { ModbusClient modbusClient = new ModbusClient("190.201.100.100", 502); //Ip-Address and Port of Modbus-TCP-Server modbusClient.Connect(); //Connect to Server modbusClient.WriteMultipleCoils(4, new bool[] {true, true, true, true, true, true, true, true, true, true}); //Write Coils starting with Address 5 bool[] readCoils = modbusClient.ReadCoils(9,10); //Read 10 Coils from Server, starting with address 10 int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters(0,10); //Read 10 Holding Registers from Server, starting with Address 1 // Console Output for (int i = 0; i &lt; readCoils.Length; i++) Console.WriteLine("Value of Coil " + (9 + i + 1) + " " + readCoils[i].ToString()); for (int i = 0; i &lt; readHoldingRegisters.Length; i++) Console.WriteLine("Value of HoldingRegister " + (i + 1) + " "+ readHoldingRegisters[i].ToString()); modbusClient.Disconnect(); //Disconnect from Server Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } } 从模组服务器读取值并将值发布到 MQTT 代理 class Program { static void Main(string[] args) { EasyModbus.ModbusClient modbusClient = new EasyModbus.ModbusClient("127.0.0.1", 502); //Increase the Connection Timeout to 5 seconds modbusClient.ConnectionTimeout = 5000; //We create a Log File. This will also active the Event logging modbusClient.LogFileFilename = "test.txt"; //The Messages sent to the MQTT-Broker will be retained in the Broker. After subscribtion, the client will automatically //receive the last retained message. By default the Retain-Flag is FALSE -&gt; Messages will not be retained modbusClient.MqttRetainMessages = true; //Connect to the ModbusTCP Server modbusClient.Connect(); while (true) { // We read two registers from the Server, and Publish them to the MQTT-Broker. By default Values will be published // on change By default we publish to the Topic 'easymodbusclient/' and the the address e.g. ''easymodbusclient/holdingregister1' // The propery "Password" and "Username" can be used to connect to a Broker which require User and Password. By default the //MQTT-Broker port is 1883 int[] holdingRegister = modbusClient.ReadHoldingRegisters(60, 2, "www.mqtt-dashboard.com"); System.Threading.Thread.Sleep(1000); } modbusClient.Disconnect(); Console.ReadKey(); } } 自动从模组服务器轮询值并将其发布到 MQTT 代理 – 主题已更改 static void Main(string[] args) { EasyModbus.EasyModbus2Mqtt easyModbus2Mqtt= new EasyModbus.EasyModbus2Mqtt(); //easyModbus2Mqtt.AutomaticReconnect = false; easyModbus2Mqtt.MqttUserName = "sr555"; easyModbus2Mqtt.MqttPassword = "******************"; easyModbus2Mqtt.MqttBrokerPort = 18972; //easyModbus2Mqtt.MqttBrokerAddress = "broker.hivemq.com"; //easyModbus2Mqtt.MqttBrokerAddress = "192.168.178.101"; easyModbus2Mqtt.MqttBrokerAddress = "m21.cloudmqtt.com"; easyModbus2Mqtt.ModbusIPAddress = "127.0.0.1"; easyModbus2Mqtt.AddReadOrder(EasyModbus.FunctionCode.ReadCoils, 2, 0, 200, new string[] { "easymodbusclient/customtopic1", "easymodbusclient/customtopic2" }); easyModbus2Mqtt.AddReadOrder(EasyModbus.FunctionCode.ReadInputRegisters, 2, 0, 200); EasyModbus.ReadOrder readOrder = new EasyModbus.ReadOrder(); readOrder.Hysteresis = new int[10] { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }; readOrder.Unit = new string[10] {"°C", "°C", "°C", "°C", "°C", "°C", "°C", "°C", "°C", "°C"}; readOrder.Scale = new float[10] { 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f }; readOrder.Quantity = 10; readOrder.StartingAddress = 10; readOrder.FunctionCode = EasyModbus.FunctionCode.ReadHoldingRegisters; easyModbus2Mqtt.AddReadOrder(readOrder); easyModbus2Mqtt.start(); } Modbus-TCP 服务器,将更改时的值发布到 MQTT-Broker class Program { static void Main(string[] args) { Program application = new Program(); application.startServer(); } public void startServer() { EasyModbus.ModbusServer modbusServer = new EasyModbus.ModbusServer(); modbusServer.MqttRootTopic = "examplemodbusserver"; modbusServer.MqttBrokerAddress = "www.mqtt-dashboard.com"; modbusServer.Listen(); modbusServer.holdingRegistersChanged += new EasyModbus.ModbusServer.HoldingRegistersChanged(holdingRegistersChanged); Console.ReadKey(); modbusServer.StopListening(); } public void holdingRegistersChanged(int startingAddress, int quantity) { Console.WriteLine(startingAddress); Console.WriteLine(quantity); } } EasyModbusTCP/UDP/RTU .NET库链接在本页下载 --- ### 231. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 libmodbus库提供了一些锁机制以保护在多线程环境下访问Modbus从站设备的数据。具体来说,libmodbus库提供了以下两种锁机制: 互斥锁(mutex):libmodbus库中的modbus_t结构体中包含了一个互斥锁,可以使用modbus_mutex_lock()和modbus_mutex_unlock()函数对该锁进行加锁和解锁操作,以保护在多线程环境下对Modbus从站 可重入锁(recursive lock):libmodbus库还提供了可重入锁机制,可以通过modbus_rtu_set_custom_rts()函数设置用户自定义的RTS操作回调函数,并在回调函数中加锁和解锁,以保护在多线程环境下对Modbus从站设备的访问。 需要注意的是,使用锁机制需要谨慎,因为不正确的使用会导致死锁或线程阻塞等问题,因此在多线程环境下使用libmodbus库时,需要仔细设计和实现线程同步机制。 以下是使用libmodbus库的互斥锁示例代码: #include <stdio.h> #include <modbus/modbus.h> int main() { modbus_t *ctx; modbus_mapping_t *mapping; int ret; // 创建Modbus从站设备并分配数据存储区 ctx = modbus_new_rtu("/dev/ttyS0", 9600, 'N', 8, 1); if (ctx == NULL) { fprintf(stderr, "Failed to create modbus context\n"); return -1; } mapping = modbus_mapping_new(0, 0, 100, 0); if (mapping == NULL) { fprintf(stderr, "Failed to allocate mapping\n"); modbus_free(ctx); return -1; } // 加锁并访问Modbus从站设备 modbus_mutex_lock(ctx); ret = modbus_connect(ctx); if (ret == -1) { fprintf(stderr, "Failed to connect to Modbus device\n"); modbus_mutex_unlock(ctx); return -1; } ret = modbus_write_register(ctx, 0, 123); if (ret == -1) { fprintf(stderr, "Failed to write register\n"); modbus_mutex_unlock(ctx); return -1; } modbus_close(ctx); modbus_mutex_unlock(ctx); // 释放资源并退出 modbus_mapping_free(mapping); modbus_free(ctx); return 0; } 以上代码中,通过调用modbus_mutex_lock()函数加锁,然后访问Modbus从站设备,最后通过调用modbus_mutex_unlock()函数解锁。使用互斥锁可以确保在多线程环境下,同时只有一个线程能够访问Modbus从站设备,避免了竞态条件等问题。 以下是使用libmodbus库的可重入锁示例代码: #include <stdio.h> #include <modbus/modbus.h> // 定义可重入锁 modbus_t *g_ctx = NULL; modbus_mutex_t g_lock; // 定义用户自定义的RTS回调函数 void custom_rts(modbus_t *ctx, int on) { if (on) { modbus_mutex_lock(&g_lock); } else { modbus_mutex_unlock(&g_lock); } } int main() { modbus_mapping_t *mapping; int ret; // 创建Modbus从站设备并分配数据存储区 g_ctx = modbus_new_rtu("/dev/ttyS0", 9600, 'N', 8, 1); if (g_ctx == NULL) { fprintf(stderr, "Failed to create modbus context\n"); return -1; } mapping = modbus_mapping_new(0, 0, 100, 0); if (mapping == NULL) { fprintf(stderr, "Failed to allocate mapping\n"); modbus_free(g_ctx); return -1; } // 设置用户自定义的RTS回调函数并访问Modbus从站设备 modbus_set_rts(g_ctx, custom_rts); ret = modbus_write_register(g_ctx, 0, 123); if (ret == -1) { fprintf(stderr, "Failed to write register\n"); --- ### 232. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 以下是基于51单片机的Modbus通讯代码示例,代码中使用了Keil C编译器和STC89C52单片机: #include <reg52.h> #define SlaveAddress 1 // 从机地址 #define FunctionCode 3 // 功能码 #define RegisterAddress 0 // 寄存器地址 #define RegisterLength 1 // 寄存器长度 sbit RS485_EN = P2^7; // RS485芯片使能控制引脚 void delay(unsigned int i) // 延时函数 { while(i--); } void UART_Init() // 串口初始化函数 { SCON = 0x50; TMOD = 0x20; TH1 = 0xFD; TL1 = 0xFD; TR1 = 1; } void SendByte(unsigned char dat) // 发送一个字节 { SBUF = dat; while(TI == 0); TI = 0; } void SendPacket(unsigned char address, unsigned char function, unsigned char* pData, unsigned char length) // 发送数据包 { unsigned char i, crcHi, crcLo; crcHi = 0xFF; crcLo = 0xFF; SendByte(0xFF); SendByte(0xFF); SendByte(address); SendByte(function); SendByte(RegisterAddress / 256); SendByte(RegisterAddress % 256); SendByte(RegisterLength / 256); SendByte(RegisterLength % 256); for(i = 0; i < length; i++) { SendByte(pData[i]); crcHi ^= pData[i]; for(j = 0; j < 8; j++) { if(crcHi & 0x01) { crcHi >>= 1; crcHi ^= 0xA0; } else { crcHi >>= 1; } } } SendByte(crcHi); SendByte(crcLo); } void Modbus() // Modbus主函数 { unsigned char data[2] = {0, 0}; SendPacket(SlaveAddress, FunctionCode, data, RegisterLength); } void main() { UART_Init(); while(1) { RS485_EN = 0; delay(1000); Modbus(); delay(1000); RS485_EN = 1; delay(1000); } } 注:该代码仅为示例,仅供参考,具体实现需要根据实际需求进行调整。 --- ### 233. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Python编写ModbusTCP通讯程序的示例代码 # 导入pymodbus库 from pymodbus.client.sync import ModbusTcpClient # 创建Modbus TCP客户端对象 client = ModbusTcpClient('127.0.0.1', port=502) # 连接Modbus TCP服务器 client.connect() # 读取保持寄存器的数据 result = client.read_holding_registers(address=0, count=1, unit=1) # 处理读取结果 if result.isError(): print("读取保持寄存器失败:{0}".format(result)) else: print("读取保持寄存器成功:{0}".format(result.registers[0])) # 写入保持寄存器的数据 result = client.write_register(address=0, value=123, unit=1) # 处理写入结果 if result.isError(): print("写入保持寄存器失败:{0}".format(result)) else: print("写入保持寄存器成功") # 关闭Modbus TCP客户端连接 client.close() 以上代码使用了pymodbus库,实现了对Modbus TCP服务器的连接、读写保持寄存器等操作。在使用之前需要先安装pymodbus库。 需要注意的是,在实际应用中,需要根据具体的Modbus设备地址、功能码、数据类型等参数进行配置,并根据实际需求进行数据读写。同时,对于复杂的Modbus应用,可能需要进行程序优化和硬件设计,确保通讯稳定和可靠。 --- ### 234. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 要基于STM32微控制器使用HAL库和modbus-stm32库实现Modbus RTU通信,您可以按照以下步骤进行操作: 准备工作: 确保您已经安装了STM32 CubeMX和HAL库。 下载并集成modbus-stm32库到您的项目中。您可以在GitHub上找到这个库并按照其文档进行集成。 创建一个新的CubeMX项目,选择合适的STM32微控制器型号,然后配置时钟、串口等外设。 配置串口通信: 使用CubeMX配置串口用于Modbus RTU通信。确保串口配置符合Modbus RTU标准,例如:8位数据位,1位停止位,无奇偶校验。 在HAL库中启用串口中断,以便处理接收和发送数据。 配置modbus-stm32库: 根据modbus-stm32库的文档,配置库以使用您选择的串口和寄存器。 初始化modbus通信堆栈,包括配置Modbus从机地址、波特率等参数。 编写Modbus RTU主程序: 在主程序中,您需要创建一个Modbus RTU请求并将其发送到Modbus从机设备,然后等待响应。 处理响应以从中提取数据。 下面是一个简单的示例代码,用于初始化串口和modbus-stm32库,并发送一个Modbus RTU读保持寄存器请求并解析响应的基本示例: #include "main.h" #include "modbus.h" UART_HandleTypeDef huart1; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART1_UART_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); modbus_init(); while (1) { modbus_update(); } } void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { modbus_rx_char(huart->Instance->DR); HAL_UART_Receive_IT(&huart1, (uint8_t*)modbus_tx_buf, 1); } void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { modbus_tx_end(); } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { Error_Handler(); } } static void MX_USART1_UART_Init(void) { huart1.Instance = USART1; huart1.Init.BaudRate = 9600; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } HAL_UART_Receive_IT(&huart1, (uint8_t*)modbus_tx_buf, 1); } static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); } 上边提供的代码示例中,包括了STM32的HAL库和modbus-stm32库,用于实现Modbus RTU通信。以下是一些关于这段代码的说明: 代码的main函数初始化了HAL库、系统时钟、GPIO(GPIOC Pin 13,作为一个输出引脚),以及UART1串口。然后,它初始化了modbus-stm32库,开始了一个无限循环,在循环中调用modbus_update来处理Modbus通信。 HAL_UART_RxCpltCallback 函数是一个UART接收中断回调函数,它被用来处理接收到的数据。在这个函数中,modbus_rx_char 用来处理接收到的字符,并且通过调用 HAL_UART_Receive_IT 来等待下一个字符的接收。这是一个基本的串口接收方式,用于Modbus通信。 HAL_UART_TxCpltCallback 函数是UART发送中断回调函数,用来处理发送完成事件。在这里,modbus_tx_end 用于通知Modbus库发送已完成。 SystemClock_Config 函数配置了系统时钟。在这个示例中,时钟配置为使用HSI振荡器,16分频,9600波特率。请根据您的硬件和性能要求进行相应的时钟配置。 MX_USART1_UART_Init 函数初始化了UART1串口,配置了波特率、数据位、停止位、校验位等。您需要根据您的串口配置进行相应的更改。 MX_GPIO_Init 函数配置了GPIOC Pin 13 作为一个输出引脚。这个引脚可以在需要时用于控制其他设备,如指示灯。 这段代码提供了一个基本的Modbus RTU通信框架,但您需要进一步配置modbus-stm32库来满足您的特定需求,包括从机地址、功能码和寄存器地址等。确保根据modbus-stm32库的文档进行设置,并根据您的应用程序需求进行适当的修改。 --- ### 235. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 import net.wimpi.modbus.Modbus; import net.wimpi.modbus.ModbusCoupler; import net.wimpi.modbus.io.ModbusTCPListener; import net.wimpi.modbus.procimg.*; import net.wimpi.modbus.util.*; import java.net.InetAddress; import java.net.UnknownHostException; public class ModbusTCPServerExample { public static void main(String[] args) { try { // 创建一个实现了ModbusSlave接口的SimpleProcessImage SimpleProcessImage spi = new SimpleProcessImage(); spi.addDigitalOut(new SimpleDigitalOut(true)); spi.addDigitalIn(new SimpleDigitalIn(false)); spi.addInputRegister(new SimpleInputRegister(45)); spi.addRegister(new SimpleRegister(251)); ModbusCoupler.getReference().setProcessImage(spi); ModbusCoupler.getReference().setMaster(false); ModbusCoupler.getReference().setUnitID(1); // 获取本地IP地址 InetAddress addr = InetAddress.getLocalHost(); String ipAddress = addr.getHostAddress(); // 创建ModbusTCPListener对象,监听指定端口 ModbusTCPListener listener = new ModbusTCPListener(1); listener.setAddress(addr); listener.open(); // 打印服务器信息 System.out.println("Modbus TCP server running at " + ipAddress + ":" + Modbus.DEFAULT_PORT); } catch (UnknownHostException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } 这个示例代码创建了一个简单的Modbus TCP服务器,使用一个实现了ModbusSlave接口的SimpleProcessImage来存储数据。SimpleProcessImage包括一个数字输出、一个数字输入、一个输入寄存器和一个保持寄存器。在main函数中,首先创建一个SimpleProcessImage,然后将其设置为ModbusCoupler的过程映像。然后,将ModbusCoupler的主/从模式设置为从模式,并将单位ID设置为1。接下来,获取本地IP地址,并使用ModbusTCPListener对象监听默认端口(502)。最后,打印服务器信息。 --- ### 236. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 最近在使用GitLab CI/CD时发现一个使用“不太顺畅”的使用场景。具体是这样的:作为一名开发者,有时需要同时负责几个前端项目的部署修复a项目的bug后需要部署到测试环境,修复b项目的bug后需要部署到测试环境。。。。。 由于各种原因,这种场景的部署并非是自动部署的,需要负责人去手动创建部署流水线。比如为了给测试人员提供一个可靠,稳定的的测试环境,会采用手动部署环境。 这就导致一个问题,我需要先进入A项目,点击流水线,选择对应分支,创建一个流水线。然后再进入B项目,重复以上操作。过程是比较繁琐的,之所以会这样,是因为GitLab没有提供一种个人Ower项目的流水线管理。类似下图 国产devops工具 建木的这种: 由于没有个人视角下的流水线管理,这就需要我们创建某个项目的流水线就必须进入项目内部。(或许在不久的将来,会有这样一个功能)。 这个问题的解决方案很简单,使用GitLab OpenAPI来实现流水线的管理,包括根据项目查询流水线,新建或重新运行流水线。但不管要写一些页面,还需要做一下后端发送请求查询GitLab数据的代码。 具体思路是很简单的,无奈本人业余时间实在不多,于是搁置了,直到有一天我突发奇想,能否用Node-RED这一低代码工具来实现这一全局流水的管理功能。 Node-RED是一个IBM开源的物联网项目。它是一个基于流的构建在Nodejs上的低代码事件驱动应用。利用它丰富的节点我们可以做很多很多事情。可以使用它的HTTP节点来发送HTTP请求,查询项目信息,流水线列表,或触发一条项目的流水线。可以使用它的dashboard节点来提供页面面板功能。在整个开发过程中你只需要配置一些必要参数即可,编写极少部分的JS代码,其他的数据流水流转,逻辑处理都交给Node-RED。 说干就干,下面就开始使用Node-RED与GitLab OpenAPI来实现DevOps 流水线管理 目标 初步分析,该功能主要包括以下四个核心功能: 查询个人Owner项目列表 根据项目查询项目下的分支列表 查询项目流水线并展示 新建流水线 重新触发流水线 开始前的准备 安装Node-RED 这里推荐Docker安装Node-RED,比较简单 docker run -it -p 1880:1880 --name mynodered nodered/node-red 浏览器访问 http://127.0.0.1:1880/ 即可体验。这里不过多介绍,感兴趣的可以移步我的Node-RED专栏Node-RED 编辑器操作页面 其他安装方式可以查看该地址 https://nodered.org/docs/getting-started/ 创建Token 由于我们要查询个人视角下的资源,所以创建一个Personal Access Tokens 如下图创建后,记得保存起来,以为你和他只有一面之缘。 要使用的API 查询个人项目的API,需要携带?owned=true。表明只查询当前用户Owner的项目。 GET /projects 查询项目流水线的API GET /projects/:id/pipelines 新建流水线(除了项目id,还需要必传参数ref 分支或tag) POST /projects/:id/pipeline 重新触发流水线 POST /projects/:id/pipelines/:pipeline_id/retry 实践 我们将接口的基本地址与token保存为流变量,在整个流中都可以访问到。然后在流运行后,先请求项目列表,传递给 dropdown节点,在新的页面上显示。当用户选中项目后,请求项目分支列表,传递给另一个 dropdown节点,并显示在页面上。当用户选中分支后,请求该分支下的流水线,并使用table节点显示到页面上。当用户单击流水线表格中的某一行时,会重新运行该流水线。成功后会有通知最后点击create pipeline 按钮后,会使用当前选中的项目与分支来创建一条新的流水线,成功后会有通知。 最终完整的流逻辑图是这样的 流程操作完整动态图 Node-RED支持将流数据导出,保存为JSON数据,该流程创建后,想要分享,分发,会变得非常容易,导出JSON数据,配置域名和token即可。有需要流文件的同学请在文章下留言。 总结 创造让工作更简单。希望对你有用。 --- ### 237. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WinFormsApp1 { public partial class Form1 : Form { public static Socket ClientSocket; public static string IP = "192.168.0.200"; public static int port = 8899; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void SocketSendMessage(string CMD) { IPAddress ip = IPAddress.Parse(IP); //将IP地址字符串转换成IPAddress实例 ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//使用指定的地址簇协议、套接字类型和通信协议 IPEndPoint endPoint = new IPEndPoint(ip, port); // 用指定的ip和端口号初始化IPEndPoint实例 ClientSocket.Connect(endPoint); //与远程主机建立连接 byte[] message = HexStrTobyte(CMD); ClientSocket.Send(message); byte[] receive = new byte[message.Length]; int length = ClientSocket.Receive(receive); // length 接收字节数组长度 richTextBox1.Text = DateTime.Now.ToString("HH:mm:ss") + ":" + byteToHexStr(receive)+"\n" + richTextBox1.Text; ClientSocket.Close(); //关闭连接 } private static byte[] HexStrTobyte(string hexString) { hexString = hexString.Replace(" ", ""); if ((hexString.Length % 2) != 0) hexString += " "; byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2).Trim(), 16); return returnBytes; } // 字节数组转16进制字符串 public static string byteToHexStr(byte[] bytes) { string returnStr = ""; if (bytes != null) { for (int i = 0; i < bytes.Length; i++) { returnStr = returnStr+" "+ bytes[i].ToString("X2");//ToString("X2") 为C#中的字符串格式控制符 } } return returnStr; } private void button1_Click(object sender, EventArgs e) { SocketSendMessage("01 06 00 00 00 01 48 0A"); } private void button2_Click(object sender, EventArgs e) { SocketSendMessage("01 06 00 00 00 00 89 CA"); } private void button4_Click(object sender, EventArgs e) { SocketSendMessage("01 06 00 01 00 01 19 CA"); } private void button3_Click(object sender, EventArgs e) { SocketSendMessage("01 06 00 01 00 00 D8 0A"); } private void button6_Click(object sender, EventArgs e) { SocketSendMessage("01 06 00 02 00 01 E9 CA"); } private void button5_Click(object sender, EventArgs e) { SocketSendMessage("01 06 00 02 00 00 28 0A"); } private void button8_Click(object sender, EventArgs e) { SocketSendMessage("01 06 00 03 00 01 B8 0A"); } private void button7_Click(object sender, EventArgs e) { SocketSendMessage("01 06 00 03 00 00 79 CA"); } private void button9_Click(object sender, EventArgs e) { } private void button10_Click(object sender, EventArgs e) { } private void button9_Click_1(object sender, EventArgs e) { richTextBox1.Text = ""; } } } --- ### 238. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 CRC码由发送端计算,放置于发送信息报文的尾部。接收信息的设备再重新计算接收到信息报文的CRC,比较计算得到的CRC是否与接收到的相符,如果两者不相符,则表明出错。校验码的计算多项式为(X16 + X15 + X2 + 1)。 具体CRC16码的计算方法是: 1.预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;2.把第一个8位二进制数据 (既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器;3.把CRC寄存器的内容右移一 位(朝低位)用0填补最高位,并检查右移后的移出位;4.如果移出位为0:重复第3步(再次右移一位);如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;(Modbus)5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;7.将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换;8.最后得到的CRC寄存器内容即为:CRC码。 代码 unsigned int GetCRC16(unsigned char *ptr, unsigned char len) { unsigned int index; unsigned char crch = 0xFF; //高CRC字节 unsigned char crcl = 0xFF; //低CRC字节 unsigned char code TabH[] = { //CRC高位字节值表 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ; unsigned char code TabL[] = { //CRC低位字节值表 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 } ; while (len--) //计算指定长度的CRC { index = crch ^ *ptr++; crch = crcl ^ TabH[ index]; crcl = TabL[ index]; } return ((crch<<8) | crcl); } 该函数即直接返回计算的CRC值 --- ### 239. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 概述 libmodbus是一个快速且可移植的Modbus库,支持传统的RS-232、RS-422、RS-485和以太网设备。 安装 Linux、MacOS、FreeBSD、WIN32等可直接通过包管理器安装 libmodbus libmodbus官网下载:https://libmodbus.org/releases/libmodbus-3.1.7.tar.gzgithub下载:https://github.com/stephane/libmodbus.git //进入解压目录 cd libmodbus-3.1.7 //配置编译选项(以ARM为例,--build为系统构架 --host为编译对应系统工具链,--prefix为输出目录,选项均是可选的) ./configure --build=i686 --host=arm-linux --enable-static --prefix=[install path]/ //编译安装 make && make install 示例 RTU master #include <stdio.h> #include <stdlib.h> #include <memory.h> #include "modbus.h" int main(void) { int i = 0; int regs = 0; modbus_t *ctx = NULL; uint16_t tab_reg[64] = {0}; //打开端口: 端口,波特率,校验位,数据位,停止位 ctx = modbus_new_rtu("/dev/ttyUSB0", 9600, 'N', 8, 1); //设置从机地址 modbus_set_slave(ctx, 1); //设置串口模式(可选) modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS485); //设置RTS(可选) modbus_rtu_set_rts(ctx, MODBUS_RTU_RTS_UP); //建立连接 if (modbus_connect(ctx) == -1) { fprintf(stderr, "Connexion failed: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -1; } //设置应答延时(可选) modbus_set_response_timeout(ctx, 0, 1000000); while (1) { memset(tab_reg, 0, sizeof(tab_reg)); //读寄存器设置:寄存器地址、数量、数据缓冲 regs = modbus_read_registers(ctx, 0, 20, tab_reg); if (rc == -1) { fprintf(stderr, "%s\n", modbus_strerror(errno)); continue; } printf("[%4d][read num = %d]", num++, regs); for (i = 0; i < 20; ++i) { printf("<%#x>", tab_reg[i]); } printf("\n"); sleep(1); } } RTU-Master流程总结: 初始化 modbus 指针 设置从站ID 建立连接 读取保持寄存器/输入寄存器/离散输入/线圈输入 写单个寄存器/多个寄存器/多位数据 关闭连接 RTU slave #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <error.h> #include <memory.h> #include "modbus.h" int main(void) { int i = 0; int rc = 0; modbus_t *ctx = NULL; modbus_mapping_t *mb_mapping = NULL; uint8_t query[MODBUS_TCP_MAX_ADU_LENGTH]; //打开端口: 端口,波特率,校验位,数据位,停止位 ctx = modbus_new_rtu("/dev/ttyUSB0", 9600, 'N', 8, 1); //设置从机地址 modbus_set_slave(ctx, 1); //设置串口模式 //modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS485); //设置RTS //modbus_rtu_set_rts(ctx, MODBUS_RTU_RTS_UP); //建立连接 if (modbus_connect(ctx) == -1) { fprintf(stderr, "Connexion failed: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -1; } mb_mapping = modbus_mapping_new(MODBUS_MAX_READ_BITS, 0, MODBUS_MAX_READ_REGISTERS, 0); if (mb_mapping == NULL) { fprintf(stderr, "Failed to allocate the mapping: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -1; } //初始化几个寄存器 mb_mapping->tab_registers[0] = 1; mb_mapping->tab_registers[1] = 2; mb_mapping->tab_registers[2] = 3; mb_mapping->tab_registers[3] = 4; mb_mapping->tab_registers[4] = 5; mb_mapping->tab_registers[5] = 6; while (1) { memset(query, 0, sizeof(query)); rc = modbus_receive(ctx, query); if (rc > 0) { modbus_reply(ctx, query, rc, mb_mapping); } else if (rc == -1) { //Connection closed by the client or error break; } } printf("Quit the loop: %s\n", modbus_strerror(errno)); modbus_mapping_free(mb_mapping); if (s != -1) { close(s); } modbus_close(ctx); modbus_free(ctx); } RTU-Slave流程总结: 初始化 modbus 指针; 设置从站ID; modbus_mapping_new初始化寄存器,返回一个modbus_mapping_t 指针; 建立连接; 调用 modbus_receive 函数判断串口的接收数据,负责接收处理及回复。 TCP master #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <error.h> #include <memory.h> #include <sys/socket.h> #include "modbus.h" void main(void) { int i; int regs = 0; int num = 0; modbus_t *ctx = NULL; uint16_t tab_reg[64] = {0}; ctx = modbus_new_tcp("127.0.0.1",8000); modbus_set_slave(ctx, 1); modbus_connect(ctx); modbus_set_response_timeout(ctx, 0, 1000000); while (1) { memset(tab_reg, 0, sizeof(tab_reg)); regs = modbus_read_registers(ctx, 0, 20, tab_reg); printf("[%4d][read num = %d]", num++, regs); for (i = 0; i < 20; i++) { printf("<%#x>", tab_reg[i]); } printf("\n"); sleep(1); } modbus_close(ctx); modbus_free(ctx); } TCP slave #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <error.h> #include <memory.h> #include <sys/socket.h> #include "modbus.h" int main(void) { int i = 0; int rc = 0; modbus_t *ctx = NULL; modbus_mapping_t *mb_mapping = NULL; uint8_t query[MODBUS_TCP_MAX_ADU_LENGTH]; //打开端口: ip, port ctx = modbus_new_tcp("127.0.0.1", 8000); //设置从机地址 modbus_set_slave(ctx, 1); //建立连接 if (modbus_connect(ctx) == -1) { fprintf(stderr, "Connexion failed: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -1; } mb_mapping = modbus_mapping_new(MODBUS_MAX_READ_BITS, 0, MODBUS_MAX_READ_REGISTERS, 0); if (mb_mapping == NULL) { fprintf(stderr, "Failed to allocate the mapping: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -1; } //初始化几个寄存器 mb_mapping->tab_registers[0] = 1; mb_mapping->tab_registers[1] = 2; mb_mapping->tab_registers[2] = 3; mb_mapping->tab_registers[3] = 4; mb_mapping->tab_registers[4] = 5; mb_mapping->tab_registers[5] = 6; while (1) { memset(query, 0, sizeof(query)); rc = modbus_receive(ctx, query); if (rc > 0) { modbus_reply(ctx, query, rc, mb_mapping); } else if (rc == -1) { //Connection closed by the client or error break; } } printf("Quit the loop: %s\n", modbus_strerror(errno)); modbus_mapping_free(mb_mapping); if (s != -1) { close(s); } modbus_close(ctx); modbus_free(ctx); } --- ### 240. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus RTU主站简单读写操作 using System; using EasyModbus; namespace ModbusRS485Master { class Program { public static void Main(string[] args) { ModbusClient modbusClient = new ModbusClient("COM1"); //modbusClient.UnitIdentifier = 1; Not necessary since default slaveID = 1; //modbusClient.Baudrate = 9600; // Not necessary since default baudrate = 9600 //modbusClient.Parity = System.IO.Ports.Parity.None; //modbusClient.StopBits = System.IO.Ports.StopBits.Two; //modbusClient.ConnectionTimeout = 500; modbusClient.Connect(); Console.WriteLine("Value of Discr. Input #1: "+modbusClient.ReadDiscreteInputs(0,1)[0].ToString()); //Reads Discrete Input #1 Console.WriteLine("Value of Input Reg. #10: "+modbusClient.ReadInputRegisters(9,1)[0].ToString()); //Reads Inp. Reg. #10 modbusClient.WriteSingleCoil(4,true); //Writes Coil #5 modbusClient.WriteSingleRegister(19,4711); //Writes Holding Reg. #20 Console.WriteLine("Value of Coil #5: "+modbusClient.ReadCoils(4,1)[0].ToString()); //Reads Discrete Input #1 Console.WriteLine("Value of Holding Reg.. #20: "+modbusClient.ReadHoldingRegisters(19,1)[0].ToString()); //Reads Inp. Reg. #10 modbusClient.WriteMultipleRegisters(49, new int[10] {1,2,3,4,5,6,7,8,9,10}); modbusClient.WriteMultipleCoils(29, new bool[10] {true,true,true,true,true,true,true,true,true,true,}); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } } Modbus-TCP Client 简单读写操作 namespace ModbusClientApplication { class Program { public static void Main(string[] args) { ModbusClient modbusClient = new ModbusClient("190.201.100.100", 502); //Ip-Address and Port of Modbus-TCP-Server modbusClient.Connect(); //Connect to Server modbusClient.WriteMultipleCoils(4, new bool[] {true, true, true, true, true, true, true, true, true, true}); //Write Coils starting with Address 5 bool[] readCoils = modbusClient.ReadCoils(9,10); //Read 10 Coils from Server, starting with address 10 int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters(0,10); //Read 10 Holding Registers from Server, starting with Address 1 // Console Output for (int i = 0; i < readCoils.Length; i++) Console.WriteLine("Value of Coil " + (9 + i + 1) + " " + readCoils[i].ToString()); for (int i = 0; i < readHoldingRegisters.Length; i++) Console.WriteLine("Value of HoldingRegister " + (i + 1) + " "+ readHoldingRegisters[i].ToString()); modbusClient.Disconnect(); //Disconnect from Server Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } } 从Modus-Serve读取值,并将值发布到MQTT代理 class Program { static void Main(string[] args) { EasyModbus.ModbusClient modbusClient = new EasyModbus.ModbusClient("127.0.0.1", 502); //Increase the Connection Timeout to 5 seconds modbusClient.ConnectionTimeout = 5000; //We create a Log File. This will also active the Event logging modbusClient.LogFileFilename = "test.txt"; //The Messages sent to the MQTT-Broker will be retained in the Broker. After subscribtion, the client will automatically //receive the last retained message. By default the Retain-Flag is FALSE -> Messages will not be retained modbusClient.MqttRetainMessages = true; //Connect to the ModbusTCP Server modbusClient.Connect(); while (true) { // We read two registers from the Server, and Publish them to the MQTT-Broker. By default Values will be published // on change By default we publish to the Topic 'easymodbusclient/' and the the address e.g. ''easymodbusclient/holdingregister1' // The propery "Password" and "Username" can be used to connect to a Broker which require User and Password. By default the //MQTT-Broker port is 1883 int[] holdingRegister = modbusClient.ReadHoldingRegisters(60, 2, "www.mqtt-dashboard.com"); System.Threading.Thread.Sleep(1000); } modbusClient.Disconnect(); Console.ReadKey(); } } 从Modus-Server自动轮询值并将其发布到MQTT代理 static void Main(string[] args) { EasyModbus.EasyModbus2Mqtt easyModbus2Mqtt= new EasyModbus.EasyModbus2Mqtt(); //easyModbus2Mqtt.AutomaticReconnect = false; easyModbus2Mqtt.MqttUserName = "sr555"; easyModbus2Mqtt.MqttPassword = "******************"; easyModbus2Mqtt.MqttBrokerPort = 18972; //easyModbus2Mqtt.MqttBrokerAddress = "broker.hivemq.com"; //easyModbus2Mqtt.MqttBrokerAddress = "192.168.178.101"; easyModbus2Mqtt.MqttBrokerAddress = "m21.cloudmqtt.com"; easyModbus2Mqtt.ModbusIPAddress = "127.0.0.1"; easyModbus2Mqtt.AddReadOrder(EasyModbus.FunctionCode.ReadCoils, 2, 0, 200, new string[] { "easymodbusclient/customtopic1", "easymodbusclient/customtopic2" }); easyModbus2Mqtt.AddReadOrder(EasyModbus.FunctionCode.ReadInputRegisters, 2, 0, 200); EasyModbus.ReadOrder readOrder = new EasyModbus.ReadOrder(); readOrder.Hysteresis = new int[10] { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }; readOrder.Unit = new string[10] {"°C", "°C", "°C", "°C", "°C", "°C", "°C", "°C", "°C", "°C"}; readOrder.Scale = new float[10] { 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f }; readOrder.Quantity = 10; readOrder.StartingAddress = 10; readOrder.FunctionCode = EasyModbus.FunctionCode.ReadHoldingRegisters; easyModbus2Mqtt.AddReadOrder(readOrder); easyModbus2Mqtt.start(); } Modbus TCP Server将更改时的值发布到MQTT代理 class Program { static void Main(string[] args) { Program application = new Program(); application.startServer(); } public void startServer() { EasyModbus.ModbusServer modbusServer = new EasyModbus.ModbusServer(); modbusServer.MqttRootTopic = "examplemodbusserver"; modbusServer.MqttBrokerAddress = "www.mqtt-dashboard.com"; modbusServer.Listen(); modbusServer.holdingRegistersChanged += new EasyModbus.ModbusServer.HoldingRegistersChanged(holdingRegistersChanged); Console.ReadKey(); modbusServer.StopListening(); } public void holdingRegistersChanged(int startingAddress, int quantity) { Console.WriteLine(startingAddress); Console.WriteLine(quantity); } } --- ### 241. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 基于Java的Modbus TCP Client 通讯示例代码 package run; import de.re.easymodbus.modbusclient.*; public class run { public static void main(String[] args) { ModbusClient modbusClient = new ModbusClient("127.0.0.1",502); try { modbusClient.Connect(); modbusClient.WriteSingleCoil(0, true); modbusClient.WriteSingleRegister(0, 1234); modbusClient.WriteMultipleRegisters(11, ModbusClient.ConvertFloatToTwoRegisters((float) 123.56)); System.out.println(modbusClient.ReadCoils(0, 1)[0]); System.out.println(modbusClient.ReadHoldingRegisters(0, 1)[0]); System.out.println(ModbusClient.ConvertRegistersToFloat(modbusClient.ReadHoldingRegisters(11, 2))); } catch (Exception e) { } } } --- ### 242. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 基于Java的Modbus通讯示例代码 <span class="n">package</span> <span class="n">run</span><span class="p">;</span> <span class="kn">import</span> <span class="nn">de.re.easymodbus.server.</span><span class="o">*</span><span class="p">;</span> <span class="n">public</span> <span class="k">class</span> <span class="nc">run</span> <span class="p">{</span> <span class="n">public</span> <span class="n">static</span> <span class="n">void</span> <span class="n">main</span><span class="p">(</span><span class="n">String</span><span class="p">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span> <span class="n">ModbusServer</span> <span class="n">modbusServer</span> <span class="o">=</span> <span class="n">new</span> <span class="n">ModbusServer</span><span class="p">();</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">setPort</span><span class="p">(</span><span class="mi">1522</span><span class="p">);</span><span class="o">//</span><span class="n">Note</span> <span class="n">that</span> <span class="n">Standard</span> <span class="n">Port</span> <span class="k">for</span> <span class="n">Modbus</span> <span class="n">TCP</span> <span class="n">communication</span> <span class="ow">is</span> <span class="mi">502</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">coils</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">true</span><span class="p">;</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">holdingRegisters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1234</span><span class="p">;</span> <span class="k">try</span> <span class="p">{</span> <span class="n">modbusServer</span><span class="o">.</span><span class="n">Listen</span><span class="p">();</span> <span class="p">}</span> <span class="n">catch</span> <span class="p">(</span><span class="n">java</span><span class="o">.</span><span class="n">io</span><span class="o">.</span><span class="n">IOException</span> <span class="o">|</span> <span class="n">Exceptions</span><span class="o">.</span><span class="n">ModbusException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> --- ### 243. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 WORD CRC16 (const BYTE *nData, WORD wLength) { static const WORD wCRCTable[] = { 0X0000, 0XC0C1, 0XC181, 0X0140, 0XC301, 0X03C0, 0X0280, 0XC241, 0XC601, 0X06C0, 0X0780, 0XC741, 0X0500, 0XC5C1, 0XC481, 0X0440, 0XCC01, 0X0CC0, 0X0D80, 0XCD41, 0X0F00, 0XCFC1, 0XCE81, 0X0E40, 0X0A00, 0XCAC1, 0XCB81, 0X0B40, 0XC901, 0X09C0, 0X0880, 0XC841, 0XD801, 0X18C0, 0X1980, 0XD941, 0X1B00, 0XDBC1, 0XDA81, 0X1A40, 0X1E00, 0XDEC1, 0XDF81, 0X1F40, 0XDD01, 0X1DC0, 0X1C80, 0XDC41, 0X1400, 0XD4C1, 0XD581, 0X1540, 0XD701, 0X17C0, 0X1680, 0XD641, 0XD201, 0X12C0, 0X1380, 0XD341, 0X1100, 0XD1C1, 0XD081, 0X1040, 0XF001, 0X30C0, 0X3180, 0XF141, 0X3300, 0XF3C1, 0XF281, 0X3240, 0X3600, 0XF6C1, 0XF781, 0X3740, 0XF501, 0X35C0, 0X3480, 0XF441, 0X3C00, 0XFCC1, 0XFD81, 0X3D40, 0XFF01, 0X3FC0, 0X3E80, 0XFE41, 0XFA01, 0X3AC0, 0X3B80, 0XFB41, 0X3900, 0XF9C1, 0XF881, 0X3840, 0X2800, 0XE8C1, 0XE981, 0X2940, 0XEB01, 0X2BC0, 0X2A80, 0XEA41, 0XEE01, 0X2EC0, 0X2F80, 0XEF41, 0X2D00, 0XEDC1, 0XEC81, 0X2C40, 0XE401, 0X24C0, 0X2580, 0XE541, 0X2700, 0XE7C1, 0XE681, 0X2640, 0X2200, 0XE2C1, 0XE381, 0X2340, 0XE101, 0X21C0, 0X2080, 0XE041, 0XA001, 0X60C0, 0X6180, 0XA141, 0X6300, 0XA3C1, 0XA281, 0X6240, 0X6600, 0XA6C1, 0XA781, 0X6740, 0XA501, 0X65C0, 0X6480, 0XA441, 0X6C00, 0XACC1, 0XAD81, 0X6D40, 0XAF01, 0X6FC0, 0X6E80, 0XAE41, 0XAA01, 0X6AC0, 0X6B80, 0XAB41, 0X6900, 0XA9C1, 0XA881, 0X6840, 0X7800, 0XB8C1, 0XB981, 0X7940, 0XBB01, 0X7BC0, 0X7A80, 0XBA41, 0XBE01, 0X7EC0, 0X7F80, 0XBF41, 0X7D00, 0XBDC1, 0XBC81, 0X7C40, 0XB401, 0X74C0, 0X7580, 0XB541, 0X7700, 0XB7C1, 0XB681, 0X7640, 0X7200, 0XB2C1, 0XB381, 0X7340, 0XB101, 0X71C0, 0X7080, 0XB041, 0X5000, 0X90C1, 0X9181, 0X5140, 0X9301, 0X53C0, 0X5280, 0X9241, 0X9601, 0X56C0, 0X5780, 0X9741, 0X5500, 0X95C1, 0X9481, 0X5440, 0X9C01, 0X5CC0, 0X5D80, 0X9D41, 0X5F00, 0X9FC1, 0X9E81, 0X5E40, 0X5A00, 0X9AC1, 0X9B81, 0X5B40, 0X9901, 0X59C0, 0X5880, 0X9841, 0X8801, 0X48C0, 0X4980, 0X8941, 0X4B00, 0X8BC1, 0X8A81, 0X4A40, 0X4E00, 0X8EC1, 0X8F81, 0X4F40, 0X8D01, 0X4DC0, 0X4C80, 0X8C41, 0X4400, 0X84C1, 0X8581, 0X4540, 0X8701, 0X47C0, 0X4680, 0X8641, 0X8201, 0X42C0, 0X4380, 0X8341, 0X4100, 0X81C1, 0X8081, 0X4040 }; BYTE nTemp; WORD wCRCWord = 0xFFFF; while (wLength--) { nTemp = *nData++ ^ wCRCWord; wCRCWord >>= 8; wCRCWord ^= wCRCTable[nTemp]; } return wCRCWord; } --- ═══════════════════════════════════════════ ## Modbus解决方案 ═══════════════════════════════════════════ ### 244. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS WMD20是一款DN20口径的远传阀控智能水表,采用光电直读技术直接读取水表机械字轮数字,无累计误差,读数与表盘显示完全一致。内置电动阀门,可通过RS485 Modbus指令远程开关阀门,实现远程抄表和远程控水的双重功能。配合Home Assistant可打造家庭智慧水务系统。 光电直读 vs 脉冲式 对比项光电直读脉冲式 读数方式直接读取字轮数字计数水流转脉冲 累积误差无(每次读的就是表盘数)有(脉冲丢失/多计) 停电是否影响不影响,来电直接读停电期间用水丢失 与机械表一致性100%一致可能偏差 核心参数 口径:DN20(6分)计量等级:R80/R100(高灵敏度)读数方式:光电直读阀门:内置电动球阀(可远程开关)通信:RS485 Modbus RTU供电:DC 12V(外部供电,非电池) HA智慧水务场景 远程抄表:每日自动读取水表读数并记录,替代人工抄表漏水检测:夜间"无人用水时段"仍持续有流量→可能漏水→推送告警并远程关阀用水量分析:日/周/月用水量统计和趋势图预算控制:月度用水量超预算→自动关阀提醒🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 245. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS VFD980是一款高性能矢量变频器,从0.75kW到400kW全系列可选,380V三相输入/三相输出。采用先进的无速度传感器矢量控制(SVC)算法,可精确控制风机、水泵、压缩机等工业电机的转速和转矩。支持RS485 Modbus RTU通信,通过Home Assistant远程监控电机运行状态、调节频率、启停电机,实现工业4.0的智能电机控制。 矢量控制技术传统V/F变频器控制精度低、低速扭矩差。VFD980采用矢量控制,将电机电流分解为励磁分量和转矩分量独立控制,实现:150%额定转矩@0.5Hz低速启动、±0.5%稳态转速精度、快速动态响应。 核心参数 功率范围:0.75kW-400kW(多规格可选)输入:三相380V±15%,50/60Hz输出:三相0-380V,0-400Hz控制方式:V/F、SVC矢量(无编码器)通信:RS485 Modbus RTU保护:过流/过压/欠压/过热/过载/缺相/短路冷却:强制风冷(内置风扇) HA集成通过Modbus控制启动/停止、设定频率(0-50Hz)、读取运行频率、电流、电压、温度、故障码。典型自动化:水压<设定值→变频器升速→水压恢复→变频器降速(恒压供水PID)。 应用场景恒压供水:PID闭环控制水泵转速,维持管网恒压风机节能:风量需求降低时降速运行,节能30-60%空压机改造:变频驱动替代工频启停,消除电流冲击🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 246. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS CTM35是一款mini型电动窗帘电机套装,包含电机主体、无线遥控器和3米以内单轨直轨道,开箱即用。电机体积小巧、扭力充沛,适合住宅和办公室窗帘的电动化改造。支持RS485总线控制,可无缝接入Home Assistant智能家居系统,实现定时开合、场景联动、语音控制等智能窗帘体验。 控制方式 遥控器控制:标配433MHz无线遥控器,开/关/停+百分比位置RS485总线控制:Modbus RTU协议,接入HA/中控系统手拉启动:通电状态下,轻拉窗帘自动感应开合APP控制:通过HA手机APP或斯玛瑞特APP远程控制 核心参数 适用轨道:3米以内直轨(含轨道)承重:≤50kg电机噪音:<35dB(超静音设计)供电:AC 100-240V → DC 24V适配器通信:RS485 Modbus RTU / 433MHz遥控限位方式:自动行程记忆 HA联动场景 日出而开:根据HA中日出时间,定时自动拉开窗帘日落而关:日落时自动关闭窗帘保护隐私离家模式:一键关闭全屋窗帘观影模式:窗帘闭合+灯光调暗+投影仪开机午休模式:窗帘半开→保持微光环境🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 247. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS EM02是一款智能三相多功能能源电表,支持功率、电压、电流、电量(kWh)、功率因数等全参数测量,同时具备RS485 Modbus远程通断合闸控制功能。通过Modbus RTU协议将数据接入Home Assistant,实现家庭/企业的精细能源管理——分回路能效分析、用电量统计、异常用电报警、定时通断控制。 测量与功能 三相电压:A/B/C各相电压实时测量(V)三相电流:A/B/C各相电流实时测量(A)有功功率:瞬时总有功功率(W/kW)累积电量:正向/反向有功电能(kWh),双向计量功率因数:每相及总功率因数频率:电网频率(Hz)远程合闸:通过Modbus指令控制继电器通断 Modbus寄存器提供完整寄存器映射表(C-163),支持功能码03(批量读)和06(写单个寄存器)。典型寄存器:电压0x0000-0x0002,电流0x0003-0x0005,功率0x0006,电量0x000A(高位)0x000B(低位)。 HA能源仪表盘通过Modbus集成将EM02接入HA,在能源仪表盘自动显示:今日用电量、本月累计、功率曲线、电费估算。结合光伏逆变器数据实现"自发自用率"计算。 注意事项⚠️ 请根据实际负载功率计算余量,如单台电表功率不够,可增加多台电表作为独立回路分段控制使用。🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 248. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS MG101 是一款面向机房动环监控(动力环境监控)和工业数据采集场景的边缘计算网关。设备集成多种通信接口(RS485、以太网、WiFi),支持Modbus RTU/TCP协议,可采集温湿度、电量、门禁、烟感、漏水等机房环境数据,在本地执行自动化逻辑和报警判断,同时将数据上送至Home Assistant、SCADA上位机或云平台。 边缘计算的核心价值 传统采集方案MG101边缘计算方案 所有数据上云处理,依赖网络本地计算+云端备份,断网也能正常工作 云平台响应延迟(秒级)本地响应延迟(毫秒级) 数据全部发送云端,流量大本地预处理后只传关键数据,省流量 云平台停机=系统瘫痪网关独立运行,不依赖云平台 机房动环监控功能 环境监测:温湿度、漏水检测、烟感、粉尘电力监测:配电柜电流电压、UPS状态、蓄电池组电压安防监测:门禁状态、门磁开关、红外探测设备监测:空调运行状态、服务器/网络设备Ping检测 自动化规则引擎 MG101内置规则引擎,支持多条件组合触发:如"温度>35°C 且 空调未运行"→启动备用空调+"空调未启动,机房温度过高"告警推送。 技术规格 处理器:ARM Cortex-A7通信接口:2路RS485 + 1路以太网 + WiFi协议支持:Modbus RTU/TCP、MQTT、HTTP存储:本地SD卡历史数据存储供电:DC 12-24V / PoE🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 249. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS KNXG01 是一款KNX IP路由器/网关,实现KNX总线系统与家庭局域网的桥接,将KNX智能楼宇设备接入Home Assistant平台。通过该网关,HA可以读取和控制KNX总线上的灯光、窗帘、空调、传感器等所有KNX设备,打通KNX楼宇自动化与HA智能家居两大生态系统。 KNX协议解析 KNX是国际标准(ISO/IEC 14543)的智能楼宇总线协议,广泛应用于酒店、办公楼、商业综合体的灯光/空调/遮阳等控制。KNX设备通过双绞线总线(KNX TP)通信,而HA运行在IP网络上。KNXG01网关的角色就是KNX TP ↔ IP 双向转换。 三种通信模式 模式功能 路由模式KNX报文→IP多播转发,同一IP子网内多设备共享 隧道模式KNX报文→IP单播,点对点通信,适合HA与网关一对一 总线监控监听KNX总线所有报文并转发到IP,用于调试和日志分析 HA集成配置 在HA中使用内置的KNX集成,配置KNXG01的IP地址和端口(默认3671),HA自动发现KNX总线上的设备组地址(Group Address),并映射为对应的实体(灯光→light实体、窗帘→cover实体、温控器→climate实体)。 技术规格 KNX端:TP1-256,总线供电(无需额外供电)IP端:RJ45 10/100M以太网支持KNXnet/IP协议可同时支持5个隧道连接DIN导轨安装,2模宽度 适用场景 KNX楼宇+HA智能家居:写字楼使用KNX控制公共区域灯光,通过KNXG01接入HA实现楼宇能耗分析和远程管理KNX旧改项目:已有KNX系统的建筑需要增加手机APP控制,通过KNXG01+HA低成本实现🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 250. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS H10 是一款专为Home Assistant智能家居系统设计的10.1寸安卓触控大屏,预装定制版Home Assistant控制界面(基于Fully Kiosk Browser优化),可壁挂安装在墙面,实现对全屋灯光、窗帘、空调、传感器、安防等设备的集中触控管理。大屏既是智能家居的控制中心,也是家庭信息的展示中心。 五大核心价值 价值点说明 大屏可视化10.1寸IPS全视角屏幕,1280×800分辨率,一屏展示全屋设备状态 安卓系统基于Android系统,可安装HA Companion App、Fully Kiosk Browser等应用 壁挂安装标准86底盒安装,墙面整洁,替代传统开关面板位置 HA深度集成预配置HA连接,开机即用。支持Lovelace仪表盘实时展示 场景一键切换离家/回家/睡眠/观影等场景模式,一键触发多设备联动 可展示内容 灯光开关状态和调光比例窗帘开合百分比空调运行模式和设定温度各区域温湿度传感器数据安防系统布防/撤防状态门锁状态和开锁记录能耗数据统计图表室内外摄像头实时画面 技术规格 屏幕:10.1寸 IPS,1280×800,电容触摸系统:Android 11处理器:四核 Cortex-A55内存:2GB RAM + 16GB ROM网络:WiFi 2.4G/5G + 蓝牙 5.0接口:USB Type-C 供电 + OTG安装:86底盒壁挂🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 251. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS GS01 是一款面向Home Assistant智能家居系统的家用可燃气体泄漏报警器,可以检测甲烷(天然气)、液化石油气(LPG)、人工煤气三种家用燃气。当检测到可燃气体浓度超过安全阈值时,报警器发出声光报警,同时通过RS485总线或干接点信号通知HA中控系统——自动关闭燃气电磁阀、打开排风扇、推送手机告警通知。 检测气体类型 气体类型主要成分常见来源 天然气甲烷(CH4)城市管道天然气 液化石油气丙烷/丁烷瓶装液化气(罐装煤气) 人工煤气氢气/一氧化碳部分老旧小区 HA联动场景 通过Modbus RTU将GS01接入HA,可配置以下自动化: 报警即关阀:GS01检测到泄漏→HA触发智能燃气电磁阀关闭→切断气源联动排风:报警触发排风扇打开,加速室内通风排出燃气全屋通知:手机APP推送+语音播报+全部灯光闪烁提醒安全确认:GS01恢复安全值→HA发送通知"燃气浓度已恢复正常" 安装位置建议 天然气比空气轻(应安装在厨房天花板下方30cm处),液化石油气比空气重(应安装在距地面30cm处)。GS01安装位置距离燃气灶和热水器水平距离应在1.5米以内。 技术规格 传感器类型:半导体式可燃气体传感器报警浓度:6%LEL(天然气)/ 10%LEL(液化气)响应时间:≤30秒通信接口:RS485 Modbus RTU + 干接点输出供电:DC 12V工作温度:-10~50°C🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 252. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS HA本地网页控制系统 是一款基于纯HTML+HTTP协议的轻量级智能家居控制面板。它不需要安装任何APP或软件,在本地电脑、平板或手机的浏览器中即可打开使用。系统通过HTTP协议调用Home Assistant API,实现对灯光、窗帘、空调、传感器等设备的集中控制和状态展示。适合追求极简部署、不依赖互联网、数据完全本地的用户。 三大核心优势 零安装:纯HTML页面,浏览器打开即用。本地电脑、平板、手机均可运行轻量架构:HTTP协议接口调用,无中间服务层,直接与HA API通信内外网双用:局域网内直接访问;配置端口映射后支持外网远程控制 购买与定制 产品以网页源代码形式交付(通过邮件发送),用户可以自行修改界面布局、配色、功能模块。支持定制服务:集成摄像头画面显示、增加设备类型面板、界面风格重新设计等,按需求难易程度报价。 技术特点 前端技术:HTML5 + CSS3 + JavaScript(原生,无框架依赖)接口方式:HA REST API(HTTP GET/POST)部署方式:任意Web服务器(Nginx/Apache)或直接本地文件打开跨平台:Windows/Mac/Linux/iOS/Android 浏览器均可使用 适用场景 墙面大屏:在客厅墙面的Android大屏上打开网页,作为全屋控制面板桌面控制台:办公室PC上打开控制家中设备展厅演示:在客户展厅的触屏设备上展示智能家居控制界面🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 253. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 安全最佳实践:构建工业物联网防护体系 引言:工业网络安全的重要性 随着工业 4.0 和物联网技术的快速发展,工业控制系统与互联网的边界日益模糊。Modbus 作为工业自动化领域最广泛使用的通信协议,其安全性直接关系到整个工业系统的安全稳定运行。然而,Modbus 协议设计之初并未考虑安全因素,缺乏认证、加密和完整性验证机制,这使得基于 Modbus 的工业系统面临着严峻的安全挑战。 本文将深入探讨 Modbus 协议的安全风险,提供从网络隔离、访问控制、数据加密到安全监控的完整防护方案,帮助企业和开发者构建可靠的工业物联网安全体系。 一、Modbus 协议安全风险分析 1.1 协议设计缺陷 无认证机制 - Modbus 协议不包含任何身份验证机制 - 任何能够连接到设备的客户端都可以发送命令 - 攻击者可以伪装成合法主站进行操作 无加密保护 - 所有通信数据以明文传输 - 敏感数据(如控制参数、生产数据)可被窃听 - 攻击者可以轻易获取系统运行状态 无完整性验证 - 无法检测数据是否被篡改 - 中间人攻击可以修改控制指令 - 可能导致设备误操作或损坏 1.2 常见攻击场景 场景 1:未授权访问 攻击者 ──▶ Modbus 设备 (端口 502) │ ├── 读取敏感数据(工艺参数、生产数据) ├── 修改控制参数(设定点、阈值) └── 执行危险操作(停机、重启) 真实案例: 2010 年震网病毒 (Stuxnet) 通过修改 PLC 参数,导致伊朗核设施离心机损坏。 场景 2:中间人攻击 主站 ◀── 攻击者 ──▶ 从站 │ ├── 窃听通信内容 ├── 篡改控制指令 └── 注入恶意数据 场景 3:拒绝服务攻击 攻击者 ──▶ 大量恶意请求 ──▶ Modbus 设备 │ ▼ 设备过载 │ ▼ 服务中断 1.3 风险等级评估 风险类型 可能性 影响程度 风险等级 未授权访问 高 严重 🔴 高危 数据窃听 中 中等 🟡 中危 指令篡改 中 严重 🔴 高危 拒绝服务 中 中等 🟡 中危 重放攻击 低 中等 🟢 低危 二、网络层安全防护 2.1 网络隔离策略 物理隔离 ┌─────────────────┐ ┌─────────────────┐ │ 办公网络 │ │ 工业控制网络 │ │ (IT 网络) │ │ (OT 网络) │ ├─────────────────┤ ├─────────────────┤ │ - 办公电脑 │ │ - PLC 设备 │ │ - 邮件服务器 │ │ - SCADA 系统 │ │ - ERP 系统 │ │ - DCS 系统 │ └─────────────────┘ └─────────────────┘ │ │ └──────────┬────────────┘ │ ┌───────▼───────┐ │ 工业防火墙 │ │ (单向隔离) │ └───────────────┘ 实施要点: 1. 办公网络与工业网络物理分离 2. 使用工业防火墙进行隔离 3. 仅允许必要的通信流量通过 4. 部署单向隔离网闸(数据二极管) VLAN 划分 # Cisco 交换机配置示例 vlan 10 name IT-Network vlan 20 name SCADA-Network vlan 30 name PLC-Network interface GigabitEthernet0/1 switchport mode access switchport access vlan 20 switchport port-security switchport port-security maximum 2 2.2 防火墙规则配置 iptables 配置示例 #!/bin/bash # Modbus 安全防火墙脚本 # 清空现有规则 iptables -F iptables -X # 设置默认策略 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环 iptables -A INPUT -i lo -j ACCEPT # 允许已建立的连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 仅允许特定 IP 访问 Modbus 端口 (502) iptables -A INPUT -p tcp -s 192.168.1.100 --dport 502 -j ACCEPT iptables -A INPUT -p tcp -s 192.168.1.101 --dport 502 -j ACCEPT # 允许 SSH 管理(仅限管理网段) iptables -A INPUT -p tcp -s 192.168.100.0/24 --dport 22 -j ACCEPT # 记录被拒绝的连接 iptables -A INPUT -p tcp --dport 502 -j LOG --log-prefix "Modbus Denied: " iptables -A INPUT -p tcp --dport 502 -j DROP # 保存规则 iptables-save > /etc/iptables/rules.v4 Windows 防火墙配置 # PowerShell 配置示例 # 创建入站规则 New-NetFirewallRule -DisplayName "Modbus TCP Secure" ` -Direction Inbound ` -Protocol TCP ` -LocalPort 502 ` -Action Allow ` -RemoteAddress 192.168.1.100,192.168.1.101 ` -Profile Private # 启用日志记录 Set-NetFirewallProfile -Name Private ` -LogAllowed True ` -LogBlocked True ` -LogMaxSizeKilobytes 4096 2.3 端口安全加固 修改默认端口 # 不建议使用默认端口 502,改用非标准端口 # Modbus TCP 服务配置示例 # 原始配置 # ListenPort=502 # 安全配置 ListenPort=50200 注意: 端口隐藏不是真正的安全措施,应配合其他安全机制使用。 端口扫描防护 # 使用 fail2ban 防止端口扫描 cat > /etc/fail2ban/jail.local << EOF [modbus-scan] enabled = true port = 502 filter = modbus-scan logpath = /var/log/syslog maxretry = 3 bantime = 3600 EOF 三、应用层安全防护 3.1 认证机制实现 JWT Token 认证 package com.example.modbus.security; import io.jsonwebtoken.*; import java.util.Date; public class ModbusAuthenticator { private final String secretKey = "your-secret-key-at-least-32-chars"; public String generateToken(String username, String role) { return Jwts.builder() .setSubject(username) .claim("role", role) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + 3600000)) .signWith(SignatureAlgorithm.HS256, secretKey) .compact(); } public boolean validateToken(String token) { try { Jwts.parser() .setSigningKey(secretKey) .parseClaimsJws(token); return true; } catch (JwtException e) { return false; } } public Claims getClaims(String token) { return Jwts.parser() .setSigningKey(secretKey) .parseClaimsJws(token) .getBody(); } } API Key 认证 import hashlib import hmac import time class ModbusAPIKeyAuth: def __init__(self, api_key, secret): self.api_key = api_key self.secret = secret def generate_signature(self, timestamp, method, path, body=''): message = f"{timestamp}{method}{path}{body}" signature = hmac.new( self.secret.encode(), message.encode(), hashlib.sha256 ).hexdigest() return signature def get_headers(self, method, path, body=''): timestamp = str(int(time.time())) signature = self.generate_signature(timestamp, method, path, body) return { 'X-API-Key': self.api_key, 'X-Timestamp': timestamp, 'X-Signature': signature } 3.2 访问控制列表 (ACL) 基于角色的访问控制 package com.example.modbus.security; import java.util.*; public class ModbusAccessControl { enum Role { OPERATOR, // 操作员:只读 ENGINEER, // 工程师:读写普通寄存器 ADMINISTRATOR // 管理员:全部权限 } private final Map<Role, Set<Integer>> readPermissions = new HashMap<>(); private final Map<Role, Set<Integer>> writePermissions = new HashMap<>(); public ModbusAccessControl() { // 初始化权限 readPermissions.put(Role.OPERATOR, Set.of(0, 1, 2, 3, 4)); readPermissions.put(Role.ENGINEER, Set.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)); readPermissions.put(Role.ADMINISTRATOR, Set.of()); // 全部 writePermissions.put(Role.OPERATOR, Set.of()); // 无写入权限 writePermissions.put(Role.ENGINEER, Set.of(100, 101, 102)); writePermissions.put(Role.ADMINISTRATOR, Set.of()); // 全部 } public boolean canRead(Role role, int registerAddress) { Set<Integer> allowed = readPermissions.get(role); return allowed.isEmpty() || allowed.contains(registerAddress); } public boolean canWrite(Role role, int registerAddress) { Set<Integer> allowed = writePermissions.get(role); return allowed.isEmpty() || allowed.contains(registerAddress); } } IP 白名单 class IPWhitelist: def __init__(self): self.allowed_ips = { '192.168.1.100': {'read', 'write'}, '192.168.1.101': {'read'}, '192.168.1.102': {'read', 'write'}, } def check_permission(self, ip_address, operation): if ip_address not in self.allowed_ips: return False return operation in self.allowed_ips[ip_address] def add_ip(self, ip_address, permissions): self.allowed_ips[ip_address] = set(permissions) def remove_ip(self, ip_address): if ip_address in self.allowed_ips: del self.allowed_ips[ip_address] 3.3 数据加密传输 TLS/SSL 加密 package com.example.modbus.security; import javax.net.ssl.*; import java.io.FileInputStream; import java.security.KeyStore; public class SecureModbusClient { public SSLSocket createSecureConnection(String host, int port) throws Exception { // 加载密钥库 KeyStore keyStore = KeyStore.getInstance("JKS"); keyStore.load(new FileInputStream("client.keystore"), "keystore-password".toCharArray()); // 初始化密钥管理器 KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); kmf.init(keyStore, "key-password".toCharArray()); // 加载信任库 KeyStore trustStore = KeyStore.getInstance("JKS"); trustStore.load(new FileInputStream("truststore.jks"), "truststore-password".toCharArray()); // 初始化信任管理器 TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); tmf.init(trustStore); // 创建 SSL 上下文 SSLContext sslContext = SSLContext.getInstance("TLSv1.3"); sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); // 创建安全连接 SSLSocketFactory factory = sslContext.getSocketFactory(); SSLSocket socket = (SSLSocket) factory.createSocket(host, port); // 配置加密套件 socket.setEnabledCipherSuites(new String[] { "TLS_AES_256_GCM_SHA384", "TLS_CHACHA20_POLY1305_SHA256" }); socket.setEnabledProtocols(new String[] {"TLSv1.3"}); socket.setUseClientMode(true); return socket; } } 应用层加密 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend import os class ModbusDataEncryptor: def __init__(self, key): self.key = key.encode().ljust(32)[:32] # AES-256 def encrypt(self, plaintext): iv = os.urandom(16) cipher = Cipher(algorithms.AES(self.key), modes.CFB(iv), backend=default_backend()) encryptor = cipher.encryptor() ciphertext = encryptor.update(plaintext.encode()) + encryptor.finalize() return iv + ciphertext def decrypt(self, ciphertext): iv = ciphertext[:16] actual_ciphertext = ciphertext[16:] cipher = Cipher(algorithms.AES(self.key), modes.CFB(iv), backend=default_backend()) decryptor = cipher.decryptor() plaintext = decryptor.update(actual_ciphertext) + decryptor.finalize() return plaintext.decode() 四、安全监控与审计 4.1 操作日志记录 package com.example.modbus.logging; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class SecurityAuditLogger { private static final Logger logger = LoggerFactory.getLogger( SecurityAuditLogger.class ); private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); public void logAccess(String username, String ip, String operation, int slaveId, int register, Object value) { String log = String.format( "ACCESS | time=%s | user=%s | ip=%s | op=%s | slave=%d | reg=%d | value=%s", LocalDateTime.now().format(formatter), username, ip, operation, slaveId, register, value ); logger.info(log); } public void logViolation(String username, String ip, String reason) { String log = String.format( "VIOLATION | time=%s | user=%s | ip=%s | reason=%s", LocalDateTime.now().format(formatter), username, ip, reason ); logger.warn(log); } public void logAttack(String ip, String attackType, String details) { String log = String.format( "ATTACK | time=%s | ip=%s | type=%s | details=%s", LocalDateTime.now().format(formatter), ip, attackType, details ); logger.error(log); } } 4.2 异常行为检测 import time from collections import defaultdict, deque class AnomalyDetector: def __init__(self): self.request_counts = defaultdict(lambda: deque(maxlen=100)) self.thresholds = { 'requests_per_second': 50, 'failed_auth_per_minute': 10, 'unique_slaves_per_minute': 20 } def record_request(self, ip_address, timestamp): self.request_counts[ip_address].append(timestamp) def detect_anomaly(self, ip_address): now = time.time() requests = self.request_counts[ip_address] # 检测请求频率 recent_requests = [t for t in requests if now - t < 1.0] if len(recent_requests) > self.thresholds['requests_per_second']: return 'HIGH_FREQUENCY_REQUEST' # 检测扫描行为 if len(recent_requests) > 100: return 'POSSIBLE_SCAN' return None def get_blocked_ips(self): return [ip for ip in self.request_counts if self.detect_anomaly(ip) is not None] 4.3 实时监控仪表板 // 使用 Grafana + Prometheus 监控 // prometheus.yml 配置 global: scrape_interval: 15s scrape_configs: - job_name: 'modbus-gateway' static_configs: - targets: ['192.168.1.50:9090'] metrics_path: '/metrics' // Node.js 指标导出器 const client = require('prom-client'); const modbusRequests = new client.Counter({ name: 'modbus_requests_total', help: 'Total number of Modbus requests', labelNames: ['type', 'slave_id', 'status'] }); const modbusLatency = new client.Histogram({ name: 'modbus_request_latency_seconds', help: 'Modbus request latency', labelNames: ['type'], buckets: [0.01, 0.05, 0.1, 0.5, 1.0] }); const securityViolations = new client.Counter({ name: 'security_violations_total', help: 'Total number of security violations', labelNames: ['type', 'ip_address'] }); 五、安全加固检查清单 5.1 网络层检查 [ ] 工业网络与办公网络隔离 [ ] 防火墙规则已配置并启用 [ ] 仅开放必要的端口 [ ] 使用 VLAN 进行逻辑隔离 [ ] 部署入侵检测系统 (IDS) [ ] 启用网络流量监控 [ ] 定期更新网络设备固件 5.2 设备层检查 [ ] 修改默认密码 [ ] 禁用未使用的服务和端口 [ ] 启用设备访问日志 [ ] 配置访问控制列表 (ACL) [ ] 定期备份设备配置 [ ] 启用固件签名验证 [ ] 物理安全措施到位 5.3 应用层检查 [ ] 实现身份认证机制 [ ] 配置基于角色的访问控制 [ ] 启用操作审计日志 [ ] 敏感数据加密存储 [ ] 通信数据加密传输 [ ] 实现异常行为检测 [ ] 定期安全漏洞扫描 5.4 管理层检查 [ ] 制定安全策略和规程 [ ] 定期进行安全培训 [ ] 建立应急响应计划 [ ] 定期进行安全审计 [ ] 保持系统和软件更新 [ ] 建立变更管理流程 [ ] 定期进行渗透测试 六、实战案例:安全 Modbus 网关实现 6.1 系统架构 ┌─────────────┐ ┌──────────────────┐ ┌─────────────┐ │ Modbus 设备 │────▶│ 安全网关 │────▶│ 客户端 │ │ (从站) │ │ (认证 + 加密 + 审计)│ │ (主站) │ └─────────────┘ └──────────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ │ 安全日志 │ │ 监控系统 │ └─────────────┘ 6.2 完整实现代码 from flask import Flask, request, jsonify from functools import wraps import jwt import logging from datetime import datetime app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key' # 配置日志 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('security_audit.log'), logging.StreamHandler() ] ) logger = logging.getLogger('modbus-security') # IP 白名单 WHITELISTED_IPS = ['192.168.1.100', '192.168.1.101'] # 访问控制 def require_auth(f): @wraps(f) def decorated(*args, **kwargs): token = request.headers.get('Authorization') if not token: logger.warning(f"未授权访问尝试:{request.remote_addr}") return jsonify({'error': 'Missing token'}), 401 try: data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=['HS256']) request.user = data except jwt.InvalidTokenError: logger.warning(f"无效 Token:{request.remote_addr}") return jsonify({'error': 'Invalid token'}), 401 if request.remote_addr not in WHITELISTED_IPS: logger.warning(f"IP 不在白名单:{request.remote_addr}") return jsonify({'error': 'IP not allowed'}), 403 return f(*args, **kwargs) return decorated @app.route('/api/modbus/read', methods=['POST']) @require_auth def read_register(): data = request.json slave_id = data.get('slave_id') register = data.get('register') logger.info(f"READ | user={request.user['username']} | " f"ip={request.remote_addr} | slave={slave_id} | " f"register={register}") # 实际 Modbus 读取逻辑 # value = modbus_client.read_register(slave_id, register) return jsonify({'status': 'success', 'value': 0}) @app.route('/api/modbus/write', methods=['POST']) @require_auth def write_register(): data = request.json slave_id = data.get('slave_id') register = data.get('register') value = data.get('value') # 检查写权限 if request.user['role'] == 'operator': logger.warning(f"写操作被拒绝:user={request.user['username']}") return jsonify({'error': 'Insufficient permissions'}), 403 logger.info(f"WRITE | user={request.user['username']} | " f"ip={request.remote_addr} | slave={slave_id} | " f"register={register} | value={value}") # 实际 Modbus 写入逻辑 # modbus_client.write_register(slave_id, register, value) return jsonify({'status': 'success'}) if __name__ == '__main__': # 使用 HTTPS app.run( host='0.0.0.0', port=502, ssl_context=('cert.pem', 'key.pem') ) 七、合规性与标准 7.1 相关安全标准 标准 名称 适用范围 IEC 62443 工业通信网络安全 工业自动化和控制系统 NIST SP 800-82 工业控制系统安全指南 美国联邦机构 ISO/IEC 27001 信息安全管理体系 通用信息安全 NERC CIP 关键基础设施保护 北美电力系统 7.2 合规性检查要点 风险评估:定期进行安全风险评估 访问控制:实施最小权限原则 安全审计:保留至少 6 个月的操作日志 事件响应:建立安全事件响应流程 持续监控:实时监控网络和设备状态 定期测试:每年至少进行一次渗透测试 八、总结与展望 8.1 安全防护核心原则 纵深防御:多层防护,不依赖单一安全措施 最小权限:仅授予必要的访问权限 默认拒绝:默认禁止所有访问,仅允许明确授权的流量 持续监控:实时监控和审计所有操作 及时响应:快速检测和响应安全事件 8.2 未来发展趋势 零信任架构:不信任任何内部或外部网络 AI 驱动的安全:使用机器学习检测异常行为 区块链审计:使用区块链确保日志不可篡改 量子加密:应对量子计算带来的安全挑战 自动化响应:自动隔离和修复安全威胁 8.3 行动建议 立即行动: - 修改所有默认密码 - 配置防火墙规则 - 启用操作日志记录 - 进行安全漏洞扫描 短期计划 (1-3 个月): - 实施网络隔离 - 部署身份认证系统 - 建立安全监控体系 - 制定安全策略 长期规划 (6-12 个月): - 通过安全合规认证 - 建立安全运营中心 (SOC) - 实施零信任架构 - 定期进行红蓝对抗演练 附录:安全工具推荐 A.1 扫描工具 Nmap: 网络扫描和端口检测 ModbusScan: 专用 Modbus 设备扫描 Wireshark: 网络协议分析 Metasploit: 渗透测试框架 A.2 监控工具 Snort: 入侵检测系统 OSSEC: 主机入侵检测 Grafana + Prometheus: 监控仪表板 ELK Stack: 日志分析平台 A.3 加固工具 Lynis: 安全审计工具 OpenSCAP: 合规性检查 Fail2ban: 入侵防护 UFW/iptables: 防火墙管理 关键词: Modbus 安全,工业网络安全,访问控制,数据加密,安全审计,IEC 62443,入侵检测 字数: 约 12,000 字 --- ### 254. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 零代码开发:如何5分钟完成设备接入 引言 在传统的工业物联网项目中,设备接入往往需要专业的软件开发人员,花费数天甚至数周时间进行协议解析、数据映射、接口开发等工作。这不仅增加了项目成本,也延长了实施周期。Modbus物联网云平台推出的零代码开发功能,彻底改变了这一现状。本文将详细介绍如何通过零代码方式,在5分钟内完成设备接入。 一、传统开发 vs 零代码开发 1.1 传统开发流程 传统的设备接入开发流程通常包括以下步骤: ┌─────────────────────────────────┐ │ 需求分析 (1-2天) │ │ • 设备协议分析 │ │ • 数据点定义 │ │ • 通信参数确认 │ ├─────────────────────────────────┤ │ 开发实现 (3-7天) │ │ • 协议解析代码编写 │ │ • 数据采集程序开发 │ │ • 通信接口开发 │ ├─────────────────────────────────┤ │ 测试调试 (2-3天) │ │ • 单元测试 │ │ • 集成测试 │ │ • 现场调试 │ ├─────────────────────────────────┤ │ 部署上线 (1-2天) │ │ • 环境部署 │ │ • 配置安装 │ │ • 上线运行 │ └─────────────────────────────────┘ 总计:7-14天,需要专业开发人员 1.2 零代码开发流程 Modbus物联网云平台的零代码开发流程: ┌─────────────────────────────────┐ │ 选择设备模板 (30秒) │ │ • 从模板库选择设备类型 │ │ • 或扫描设备自动识别 │ ├─────────────────────────────────┤ │ 配置通信参数 (1分钟) │ │ • 填写设备地址 │ │ • 设置通信参数 │ │ • 配置采集周期 │ ├─────────────────────────────────┤ │ 数据点映射 (2分钟) │ │ • 自动识别数据点 │ │ • 可视化数据点映射 │ │ • 设置数据属性 │ ├─────────────────────────────────┤ │ 测试验证 (1分钟) │ │ • 自动连接测试 │ │ • 数据采集验证 │ │ • 控制功能测试 │ ├─────────────────────────────────┤ │ 发布应用 (30秒) │ │ • 生成应用界面 │ │ • 配置用户权限 │ │ • 发布到多平台 │ └─────────────────────────────────┘ 总计:5分钟,无需编程经验 1.3 对比优势 对比项 传统开发 零代码开发 优势 时间成本 7-14天 5分钟 节省99%以上 人力成本 专业开发人员 业务人员 节省100% 技术门槛 需要编程技能 无需编程 降低100% 维护成本 高,需要开发人员 低,业务人员可维护 节省80% 灵活性 低,修改需要开发 高,可视化配置 提升90% 二、5分钟快速接入实战 2.1 准备工作 2.1.1 设备信息 假设我们要接入一台智能电表,设备信息如下: - 设备型号:DTSD342-9S - 通信协议:Modbus RTU - 设备地址:1 - 通信参数:9600bps, 8数据位, 1停止位, 无校验 - 数据点:电压、电流、功率、电能等 2.1.2 所需工具 Modbus物联网云平台账号 Modbus网关设备(如MB-100) 网线或4G网络连接 电脑或手机(用于配置) 2.2 第一步:登录平台(30秒) 访问 https://www.modbus.cn 点击右上角"登录"按钮 输入账号密码登录 进入控制台界面 2.3 第二步:创建设备(1分钟) 2.3.1 选择设备模板 在控制台点击"设备管理" 点击"添加设备" 在设备模板库中搜索"智能电表" 选择"DTSD342-9S"模板 2.3.2 配置设备信息 设备名称:车间1号电表 设备类型:智能电表 设备型号:DTSD342-9S 设备地址:1 所属项目:生产车间能耗监控 位置信息:A车间配电室 2.3.3 配置通信参数 通信方式:Modbus RTU 串口参数:COM1 波特率:9600 数据位:8 停止位:1 校验位:无 采集周期:5秒 2.4 第三步:数据点配置(2分钟) 2.4.1 自动识别数据点 平台自动识别设备支持的数据点: 数据点名称 寄存器地址 数据类型 单位 读写属性 A相电压 0x0000 uint16 V 只读 B相电压 0x0001 uint16 V 只读 C相电压 0x0002 uint16 V 只读 A相电流 0x0003 uint16 A 只读 B相电流 0x0004 uint16 A 只读 C相电流 0x0005 uint16 A 只读 总有功功率 0x0006 int32 kW 只读 总无功功率 0x0008 int32 kVar 只读 总视在功率 0x000A int32 kVA 只读 总有功电能 0x000C int32 kWh 只读 2.4.2 数据点属性设置 数据转换:设置缩放系数和偏移量 电压:原始值/10,单位V 电流:原始值/1000,单位A 功率:原始值/1000,单位kW 报警设置:设置报警阈值 电压报警:242V 电流报警:>100A 功率报警:>50kW 数据存储:设置存储策略 实时数据:5秒存储一次 历史数据:1分钟聚合一次 长期存储:1小时聚合一次 2.5 第四步:连接测试(1分钟) 2.5.1 自动连接测试 点击"测试连接"按钮 平台自动尝试连接设备 显示连接状态和数据质量 2.5.2 数据验证 连接状态:已连接 通信质量:优秀(延迟<100ms) 数据点状态: • A相电压:220.5V ✓ • B相电压:219.8V ✓ • C相电压:221.2V ✓ • A相电流:45.6A ✓ • 总有功功率:32.5kW ✓ • 总有功电能:12560.8kWh ✓ 2.5.3 控制测试 测试远程读取功能 测试数据写入功能(如设置参数) 验证报警功能 2.6 第五步:发布应用(30秒) 2.6.1 生成应用界面 点击"生成应用" 选择应用模板:"电表监控" 平台自动生成应用界面 2.6.2 界面定制 应用名称:车间能耗监控 界面布局:仪表盘+曲线图+数据表格 显示内容: • 实时数据:电压、电流、功率 • 历史曲线:24小时功率曲线 • 数据统计:今日用电量、本月用电量 • 报警信息:实时报警列表 2.6.3 多平台发布 Web应用:自动生成Web页面 移动应用:生成iOS/Android应用 微信小程序:生成微信小程序 大屏展示:生成大屏展示界面 2.6.4 用户权限配置 管理员:全部权限 运维人员:查看和控制权限 普通用户:只读权限 访客:有限查看权限 三、高级功能配置 3.1 数据可视化 3.1.1 仪表盘配置 平台提供丰富的可视化组件: 组件类型 适用场景 配置示例 数字显示 实时数值显示 电压:220.5V 仪表盘 范围指示 电流:45.6/100A 曲线图 趋势分析 24小时功率曲线 柱状图 对比分析 三相电流对比 饼图 占比分析 能耗分布 地图 位置展示 设备分布地图 3.1.2 大屏展示 布局设计:拖拽式布局设计 主题选择:多种主题模板 数据刷新:实时数据刷新 全屏展示:自动全屏轮播 3.2 报警通知 3.2.1 报警规则配置 报警规则1:电压异常 条件:电压 < 198V 或 > 242V 级别:紧急 通知方式:短信+微信+邮件 重复间隔:5分钟 报警规则2:电流过载 条件:电流 > 100A 级别:重要 通知方式:微信+邮件 重复间隔:10分钟 报警规则3:功率异常 条件:功率 > 50kW 级别:警告 通知方式:应用内通知 重复间隔:30分钟 3.2.2 通知渠道 短信通知:支持国内三大运营商 微信通知:通过公众号模板消息 邮件通知:支持SMTP邮件服务器 应用内通知:平台内消息通知 语音通知:电话语音播报 3.3 数据分析 3.3.1 实时分析 数据聚合:分钟、小时、日聚合 趋势分析:数据变化趋势 同比环比:与历史数据对比 异常检测:自动异常检测 3.3.2 报表生成 日报表:每日用电统计 月报表:月度能耗分析 自定义报表:按需定制报表 自动发送:定时发送报表 3.4 远程控制 3.4.1 控制命令 单点控制:单个数据点控制 批量控制:多个设备同时控制 定时控制:按时间计划控制 条件控制:基于条件自动控制 3.4.2 控制策略 策略1:峰谷电价控制 条件:电价处于峰时段 动作:降低非必要设备功率 目标:降低电费成本 策略2:温度控制 条件:温度 > 设定值 动作:启动制冷设备 目标:保持恒温环境 策略3:安全控制 条件:检测到异常 动作:紧急停机 目标:保障安全 四、实际应用案例 4.1 案例一:小型工厂能耗监控 项目背景 某小型加工厂有10台设备,希望监控能耗情况。 实施过程 设备接入:接入10个智能电表(5分钟×10=50分钟) 应用生成:生成能耗监控应用(5分钟) 权限配置:配置3个用户权限(2分钟) 报警设置:设置能耗报警规则(3分钟) 实施效果 总耗时:60分钟 成本:零代码,无开发成本 效果:实时监控能耗,月节省电费15% 4.2 案例二:商业楼宇设备管理 项目背景 某商业楼宇需要管理空调、照明、电梯等设备。 实施过程 模板选择:选择楼宇设备模板库 批量导入:Excel批量导入设备信息 统一配置:统一配置通信参数 应用集成:集成到楼宇管理系统 实施效果 实施周期:2天(传统方案需要2周) 维护成本:降低80% 管理效率:提升300% 4.3 案例三:农业物联网项目 项目背景 某农业基地需要监控温室环境。 实施过程 设备选型:选择温湿度、光照、土壤传感器 快速接入:5分钟接入一个传感器 智能控制:设置自动灌溉和通风 移动应用:生成手机监控应用 实施效果 接入速度:20个传感器,100分钟完成 增产效果:作物产量提升25% 节水效果:灌溉用水减少30% 五、技术原理 5.1 模板引擎 5.1.1 设备模板 设备模板包含以下信息: { "device_type": "smart_meter", "protocol": "modbus_rtu", "data_points": [ { "name": "voltage_a", "address": "0x0000", "data_type": "uint16", "unit": "V", "scale": 0.1, "offset": 0 } ], "communication": { "baud_rate": [1200, 2400, 4800, 9600, 19200], "data_bits": [7, 8], "stop_bits": [1, 2], "parity": ["none", "even", "odd"] } } 5.1.2 自动识别 平台通过以下方式自动识别设备: 1. 特征匹配:匹配已知设备特征 2. 协议探测:自动探测协议参数 3. 数据点扫描:扫描设备数据点 4. 智能推荐:推荐最佳配置 5.2 代码生成 5.2.1 前端代码生成 平台根据配置自动生成: - HTML页面结构 - CSS样式文件 - JavaScript交互逻辑 - 图表和数据绑定 5.2.2 后端代码生成 数据采集服务 API接口服务 数据处理逻辑 报警引擎 5.2.3 移动端代码生成 iOS应用代码(Swift) Android应用代码(Kotlin) 微信小程序代码 H5混合应用 5.3 数据流处理 5.3.1 实时数据流 设备数据 → 协议解析 → 数据清洗 → 数据转换 → 实时存储 → 事件触发 → 报警处理 → 前端推送 5.3.2 历史数据处理 实时数据 → 分钟聚合 → 小时聚合 → 日聚合 → 月聚合 → 年聚合 → 统计分析 → 报表生成 六、最佳实践 6.1 设备接入最佳实践 6.1.1 准备工作 设备文档:准备设备技术文档 网络测试:测试网络连接质量 权限确认:确认设备访问权限 备份计划:制定配置备份计划 6.1.2 实施步骤 先测试后实施:先小范围测试 分批次接入:分批接入设备 及时验证:每接入一个设备立即验证 文档记录:记录实施过程和问题 6.1.3 问题排查 连接问题:检查物理连接和网络 数据问题:检查协议配置和数据映射 性能问题:优化采集周期和数据处理 安全问题:检查权限和加密配置 6.2 应用开发最佳实践 6.2.1 界面设计 用户为中心:以用户需求设计界面 简洁明了:避免界面过于复杂 响应式设计:适配不同设备屏幕 一致性:保持界面风格一致 6.2.2 功能设计 核心功能优先:先实现核心功能 渐进增强:逐步增加高级功能 用户反馈:收集用户反馈优化 性能优化:优化应用性能 6.2.3 权限管理 最小权限原则:只授予必要权限 角色分离:不同角色不同权限 审计跟踪:记录所有操作日志 定期审查:定期审查权限设置 6.3 运维管理最佳实践 6.3.1 监控管理 系统监控:监控系统运行状态 设备监控:监控设备连接状态 数据监控:监控数据质量和完整性 性能监控:监控系统性能指标 6.3.2 维护管理 定期检查:定期检查系统运行状态 及时更新:及时更新系统和应用 备份恢复:定期备份配置和数据 问题处理:建立问题处理流程 6.3.3 安全管理 访问控制:严格控制访问权限 数据加密:确保数据传输安全 安全审计:定期进行安全审计 应急响应:建立应急响应机制 七、常见问题解答 7.1 技术问题 Q1:设备无法连接怎么办? A: 按照以下步骤排查: 1. 检查物理连接是否正常 2. 验证通信参数是否正确 3. 确认设备地址是否正确 4. 检查网络连接是否正常 5. 查看设备日志和错误信息 Q2:数据采集不准确怎么办? A: 可能的原因和解决方法: 1. 协议配置错误:检查协议版本和参数 2. 数据映射错误:检查寄存器地址和数据类型 3. 转换系数错误:检查缩放系数和偏移量 4. 设备问题:检查设备本身是否正常 Q3:应用响应慢怎么办? A: 优化建议: 1. 优化采集周期:调整数据采集频率 2. 减少数据量:只采集必要的数据 3. 优化网络:改善网络连接质量 4. 升级硬件:升级网关设备性能 7.2 业务问题 Q1:如何评估项目效果? A: 可以从以下方面评估: 1. 效率提升:生产效率、管理效率 2. 成本降低:能耗成本、运维成本 3. 质量提升:产品质量、服务质量 4. 安全改善:安全事故减少、风险降低 Q2:如何选择适合的设备? A: 选择建议: 1. 需求分析:明确业务需求 2. 兼容性检查:检查设备兼容性 3. 性价比评估:评估性价比 4. 售后服务:考虑售后服务 Q3:如何培训用户? A: 培训建议: 1. 分层培训:不同角色不同培训内容 2. 实践操作:注重实际操作培训 3. 持续支持:提供持续技术支持 4. 知识库建设:建立知识库和文档 7.3 管理问题 Q1:如何管理多个项目? A: 管理建议: 1. 项目分组:按业务或部门分组 2. 权限管理:设置项目级权限 3. 统一监控:建立统一监控平台 4. 标准化流程:制定标准化实施流程 Q2:如何控制项目成本? A: 成本控制建议: 1. 预算管理:制定详细的项目预算 2. 资源优化:优化资源配置 3. 过程控制:控制实施过程成本 4. 效果评估:定期评估投资回报 Q3:如何保证项目成功? A: 成功要素: 1. 明确目标:设定清晰的项目目标 2. 充分准备:做好充分的准备工作 3. 专业实施:专业的实施团队 4. 持续优化:项目上线后持续优化 八、总结 零代码开发彻底改变了工业物联网的实施方式。通过Modbus物联网云平台的零代码功能,企业可以在5分钟内完成设备接入,快速构建物联网应用,大大降低了技术门槛和实施成本。 8.1 核心价值 极速实施:从几天到几分钟,实施速度提升99% 降低成本:无需专业开发人员,成本降低80% 降低门槛:业务人员即可完成,技术门槛降低100% 灵活扩展:可视化配置,灵活扩展和修改 8.2 适用场景 中小企业:资源有限,需要快速见效 传统行业:缺乏IT技术,需要简单易用的方案 试点项目:需要快速验证技术可行性 标准化场景:有标准化的设备和应用场景 8.3 未来展望 随着技术的不断发展,零代码开发将更加智能和强大: AI辅助:AI智能推荐最佳配置 自动优化:系统自动优化性能和配置 生态集成:与更多系统和平台集成 行业深化:深入更多行业和应用场景 九、立即开始 9.1 免费体验 Modbus物联网云平台提供免费体验: 1. 免费注册:无需任何费用 2. 免费试用:提供免费试用期 3. 免费培训:提供免费在线培训 4. 免费支持:提供免费技术支持 9.2 实施支持 平台提供全面的实施支持: 1. 技术咨询:专业的技术咨询服务 2. 实施指导:详细的实施指导文档 3. 培训服务:专业的培训服务 4. 售后服务:完善的售后服务体系 9.3 成功案例 已有超过1000家企业通过Modbus物联网云平台成功实施物联网项目,涵盖制造业、能源、环保、农业等多个行业。 十、联系我们 如果您对零代码开发有任何疑问或需要帮助,欢迎联系我们: 官网: https://www.modbus.cn 客服电话: 18801054468 在线客服: 点击咨询 技术支持: support@modbus.cn 商务合作: business@modbus.cn 立即开始您的零代码物联网之旅! 访问Modbus物联网云平台,5分钟完成第一个设备接入! 本文为Modbus物联网云平台原创内容,转载请注明出处。文中提到的5分钟完成设备接入是基于标准Modbus设备的典型情况,实际时间可能因设备复杂度和网络环境有所不同。 --- ### 255. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工业物联网的5大痛点及解决方案 引言 随着工业4.0和智能制造的推进,工业物联网(IIoT)已经成为制造业转型升级的关键技术。然而,在实际应用中,企业面临着诸多挑战。本文将从实际案例出发,深入分析工业物联网实施过程中的5大痛点,并提供基于Modbus物联网云平台的解决方案。 痛点一:设备兼容性问题 问题描述 工业现场设备种类繁多,品牌各异,通信协议不统一。企业往往面临以下挑战: 协议多样性: Modbus、Profibus、CAN、Ethernet/IP等多种协议并存 版本差异: 同一协议不同版本之间的兼容性问题 厂商定制: 设备厂商对标准协议的定制化修改 老旧设备: 传统设备缺乏标准通信接口 实际案例 某汽车零部件制造企业拥有来自10个不同厂商的50台设备,包括: - 德国品牌的CNC机床(使用Profibus协议) - 日本品牌的机器人(使用CC-Link协议) - 国产的注塑机(使用Modbus RTU协议) - 美国品牌的检测设备(使用Ethernet/IP协议) 企业希望将这些设备联网,实现统一监控,但面临巨大的集成难度。 解决方案 1. 多协议网关 Modbus物联网云平台支持多种工业协议网关: 协议类型 支持网关 特点 Modbus RTU/ASCII MB-100系列 支持RS-485/RS-232 Modbus TCP MB-200系列 支持以太网 Profibus DP PB-300系列 支持主从站模式 CAN总线 CAN-400系列 支持CAN2.0A/B Ethernet/IP EIP-500系列 支持标签访问 2. 协议转换引擎 平台内置协议转换引擎,支持: - 协议映射: 将不同协议转换为统一的数据模型 - 数据标准化: 统一数据格式和单位 - 异常处理: 协议异常的智能处理 3. 设备模板库 平台提供丰富的设备模板库: - 预置模板: 1000+常用设备模板 - 自定义模板: 支持用户自定义设备配置 - 模板共享: 用户间模板共享机制 实施效果 设备接入时间从平均3天缩短到2小时 集成成本降低70% 系统稳定性提升至99.9% 痛点二:数据采集实时性 问题描述 工业控制对数据实时性要求极高,传统方案往往存在: 采集延迟: 数据采集周期长,无法满足实时监控需求 数据丢失: 网络不稳定导致数据丢失 时钟不同步: 设备间时钟不同步,数据时间戳不一致 处理延迟: 数据处理和分析延迟大 实际案例 某化工厂需要实时监控反应釜的温度、压力等关键参数: - 安全要求:温度超过阈值必须在5秒内报警 - 工艺要求:压力变化趋势需要实时分析 - 管理要求:生产数据需要实时展示在大屏上 传统SCADA系统采集周期为10秒,无法满足实时性要求。 解决方案 1. 毫秒级数据采集 Modbus物联网云平台支持: - 高速采集: 最小采集周期可达10毫秒 - 并行采集: 多设备并行数据采集 - 优先级调度: 关键数据优先采集 2. 边缘计算 在网关设备上实现: - 数据预处理: 在边缘端进行数据清洗和计算 - 本地缓存: 网络中断时数据本地缓存 - 实时控制: 边缘端实现快速控制逻辑 3. 时间同步 NTP同步: 设备时钟自动同步 时间戳校准: 数据时间戳精确校准 时序分析: 支持毫秒级时序数据分析 4. 数据流处理 平台提供实时数据流处理能力: - 流式计算: 实时数据计算和分析 - 复杂事件处理: 多数据源事件关联分析 - 实时预警: 基于流数据的实时预警 实施效果 数据采集延迟从10秒降低到100毫秒 报警响应时间从30秒缩短到3秒 数据完整性从95%提升到99.99% 痛点三:远程控制安全性 问题描述 工业设备的远程控制涉及重大安全风险: 非法访问: 未经授权的设备访问 数据泄露: 敏感生产数据泄露 恶意控制: 设备被恶意控制导致生产事故 网络攻击: DDoS、中间人攻击等网络安全威胁 实际案例 某水务公司需要远程控制分布在全市的100个泵站: - 安全要求:必须防止非法访问和控制 - 合规要求:需要满足等保2.0三级要求 - 业务要求:授权人员可以随时随地安全访问 传统VPN方案存在配置复杂、管理困难等问题。 解决方案 1. 多层次安全架构 ┌─────────────────────────────────┐ │ 应用安全层 │ │ ┌─────────┐ ┌─────────┐ │ │ │身份认证│ │访问控制│ │ │ │ MFA │ │ RBAC │ │ │ └─────────┘ └─────────┘ │ ├─────────────────────────────────┤ │ 通信安全层 │ │ ┌─────────┐ ┌─────────┐ │ │ │传输加密│ │协议安全│ │ │ │ TLS1.3 │ │ 签名验证│ │ │ └─────────┘ └─────────┘ │ ├─────────────────────────────────┤ │ 设备安全层 │ │ ┌─────────┐ ┌─────────┐ │ │ │设备认证│ │安全启动│ │ │ │ 证书 │ │ Secure │ │ │ └─────────┘ └─────────┘ │ └─────────────────────────────────┘ 2. 身份和访问管理 多因素认证: 支持短信、邮件、OTP等多种认证方式 角色权限控制: 基于角色的细粒度权限控制 操作审计: 完整的操作日志和审计跟踪 3. 数据传输安全 端到端加密: TLS 1.3加密传输 数据签名: 数据完整性验证 防重放攻击: 时间戳和序列号保护 4. 设备安全 设备证书: 每个设备唯一身份证书 安全启动: 防止固件篡改 安全更新: 安全的固件更新机制 5. 安全监控 实时监控: 安全事件实时监控 威胁检测: 基于AI的异常行为检测 应急响应: 安全事件应急响应流程 实施效果 安全事件发生率降低90% 安全合规成本降低60% 安全运维效率提升80% 痛点四:系统集成复杂性 问题描述 工业物联网需要与现有系统深度集成: 系统孤岛: ERP、MES、WMS等系统独立运行 数据不一致: 不同系统数据定义不一致 接口复杂: 系统间接口开发复杂 维护困难: 集成系统维护成本高 实际案例 某电子制造企业需要将物联网系统与现有系统集成: - ERP系统:SAP,需要生产数据 - MES系统:定制开发,需要设备状态数据 - 质量系统:需要检测数据 - 能源系统:需要能耗数据 传统点对点集成方式导致系统复杂度呈指数增长。 解决方案 1. 统一数据平台 Modbus物联网云平台作为统一数据中台: ┌─────────────────────────────────┐ │ 业务系统 │ │ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │ │ │ERP│ │MES│ │WMS│ │QMS│ │ │ └───┘ └───┘ └───┘ └───┘ │ ├─────────────────────────────────┤ │ 数据服务层 │ │ ┌─────────┐ ┌─────────┐ │ │ │数据API │ │消息队列│ │ │ │ RESTful │ │ Kafka │ │ │ └─────────┘ └─────────┘ │ ├─────────────────────────────────┤ │ 数据存储层 │ │ ┌─────────┐ ┌─────────┐ │ │ │实时数据│ │历史数据│ │ │ │时序数据库│ │关系数据库│ │ │ └─────────┘ └─────────┘ │ ├─────────────────────────────────┤ │ 设备接入层 │ │ ┌─────────┐ ┌─────────┐ │ │ │Modbus │ │其他协议│ │ │ │ 设备 │ │ 设备 │ │ │ └─────────┘ └─────────┘ │ └─────────────────────────────────┘ 2. 标准化数据模型 统一数据定义: 制定企业级数据标准 数据映射: 不同系统数据自动映射 数据质量: 数据质量监控和治理 3. 开放API接口 平台提供丰富的API接口: - 设备管理API: 设备注册、配置、监控 - 数据查询API: 实时数据、历史数据查询 - 控制命令API: 设备远程控制 - 事件通知API: 报警和事件通知 4. 消息中间件 异步通信: 基于消息队列的异步通信 事件驱动: 事件驱动的系统集成 数据流: 实时数据流处理 5. 低代码集成 可视化配置: 拖拽式集成配置 模板化集成: 预置常用系统集成模板 快速部署: 集成配置快速部署 实施效果 系统集成时间从3个月缩短到2周 集成维护成本降低80% 数据一致性从85%提升到99.5% 痛点五:成本控制挑战 问题描述 工业物联网项目往往面临成本控制难题: 初始投资大: 硬件、软件、实施成本高 运维成本高: 需要专业技术人员维护 升级成本: 系统升级和扩展成本高 ROI不明确: 投资回报周期长,效果难以量化 实际案例 某中小型制造企业希望实施物联网项目: - 预算限制:总投资不超过50万元 - 人员限制:没有专职IT人员 - 时间限制:3个月内上线 - 效果要求:6个月内看到投资回报 传统方案往往超出预算且实施周期长。 解决方案 1. 云平台服务模式 Modbus物联网云平台采用SaaS模式: - 按需付费: 根据设备数量和使用量付费 - 零初始投资: 无需购买服务器和软件许可 - 快速上线: 注册即用,快速部署 2. 成本优化策略 成本项 传统方案 Modbus云平台 节省比例 硬件投资 20-50万 0 100% 软件许可 10-30万 按需付费 70-90% 实施服务 10-20万 自助实施 80-100% 运维成本 5-10万/年 包含在服务费中 100% 升级成本 5-15万/次 自动升级 100% 3. 自助服务平台 可视化配置: 无需编程经验 在线文档: 完整的帮助文档和教程 社区支持: 用户社区互助 在线培训: 免费在线培训课程 4. ROI量化工具 平台提供ROI计算工具: - 成本分析: 详细的项目成本分析 - 效益评估: 生产效率、能耗等效益评估 - 投资回报: 投资回报周期计算 - 风险分析: 项目风险分析和应对建议 5. 灵活扩展 弹性扩展: 根据业务需求弹性扩展 模块化服务: 按需选择服务模块 平滑升级: 系统平滑升级,不影响业务 实施效果 初始投资降低90% 实施周期从6个月缩短到1个月 ROI周期从24个月缩短到6个月 总拥有成本(TCO)降低80% 综合解决方案:Modbus物联网云平台 平台核心价值 一站式服务 从设备接入到应用开发的全流程服务 无需集成多个系统和工具 统一的技术支持和维护 专业可靠 工业级产品设计和测试 99.9%的系统可用性保证 7×24小时技术支持 简单易用 零代码应用开发 可视化配置和管理 丰富的模板和案例 开放生态 开放的API和SDK 丰富的合作伙伴生态 持续的技术创新 成功案例汇总 行业 客户 实施效果 ROI周期 制造业 某汽车零部件企业 生产效率提升25% 8个月 水务 某水务公司 运维成本降低40% 6个月 化工 某化工厂 安全事故减少60% 10个月 电子 某电子制造企业 质量合格率提升15% 7个月 能源 某能源公司 能耗降低30% 9个月 实施路线图 阶段一:试点验证(1-2个月) 选择1-2个典型应用场景 小规模试点实施 验证技术可行性和业务价值 阶段二:规模推广(3-6个月) 基于试点经验优化方案 扩大实施范围 建立标准化实施流程 阶段三:全面应用(6-12个月) 全厂设备联网 深度业务应用 数据驱动决策 阶段四:持续优化(12个月后) 系统持续优化 新应用场景探索 生态体系建设 总结 工业物联网的实施确实面临诸多挑战,但通过选择合适的平台和工具,这些挑战都可以得到有效解决。Modbus物联网云平台针对工业物联网的5大痛点提供了完整的解决方案,帮助企业以更低的成本、更快的速度实现数字化转型。 关键成功因素: 1. 选择合适的平台: 考虑兼容性、安全性、易用性 2. 分阶段实施: 从试点开始,逐步推广 3. 重视数据安全: 建立完善的安全体系 4. 培养内部能力: 建立内部技术团队 5. 持续优化: 基于数据持续优化和改进 工业物联网不是一次性的项目,而是一个持续演进的过程。选择合适的合作伙伴,制定合理的实施计划,工业物联网必将为企业创造巨大的价值。 立即开始您的工业物联网之旅? 访问Modbus物联网云平台,免费注册体验! 关于Modbus物联网云平台 Modbus物联网云平台是专业的工业物联网云服务平台,致力于帮助传统行业实现设备智能化和数字化转型。平台支持市场上99.9%以上Modbus协议设备接入,提供从设备接入、数据采集、远程控制到应用开发的全流程服务。 平台特点: - 兼容性强:支持多种工业协议 - 安全性高:多重安全防护 - 易用性好:零代码应用开发 - 成本低:按需付费,无初始投资 联系我们: - 官网: https://www.modbus.cn - 客服电话: 18801054468 - 在线客服: 点击咨询 本文为Modbus物联网云平台原创内容,转载请注明出处。 --- ### 256. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus协议详解: 从工业现场到云端 引言 在工业自动化领域,Modbus协议已经成为了事实上的标准通信协议。自1979年由Modicon公司(现为施耐德电气)推出以来,Modbus协议凭借其简单、开放、可靠的特点,在工业控制系统中得到了广泛应用。随着物联网技术的发展,传统的Modbus设备如何安全、高效地接入云端,成为了工业物联网发展的重要课题。 一、Modbus协议基础 1.1 Modbus协议家族 Modbus协议主要包含三种变体: Modbus RTU (Remote Terminal Unit) 基于串行通信(RS-232/RS-485) 采用二进制编码 广泛应用于工业现场 Modbus ASCII 基于ASCII字符编码 可读性较好但效率较低 适用于调试和测试 Modbus TCP 基于TCP/IP网络 支持以太网通信 适用于现代工业网络 1.2 通信模型 Modbus采用主从式通信模型: - 主站 (Master): 发起通信请求的设备 - 从站 (Slave): 响应主站请求的设备 - 一个主站可以连接多个从站(最多247个) 1.3 功能码详解 Modbus协议定义了多种功能码,用于不同类型的操作: 功能码 名称 描述 01 读取线圈状态 读取离散量输出(DO)状态 02 读取输入状态 读取离散量输入(DI)状态 03 读取保持寄存器 读取保持寄存器(HR)值 04 读取输入寄存器 读取输入寄存器(IR)值 05 写单个线圈 写入单个线圈状态 06 写单个寄存器 写入单个保持寄存器 15 写多个线圈 写入多个线圈状态 16 写多个寄存器 写入多个保持寄存器 二、工业现场应用 2.1 典型应用场景 2.1.1 PLC控制系统 可编程逻辑控制器(PLC)通过Modbus协议与各种传感器、执行器通信 实现生产线的自动化控制 实时监控设备状态 2.1.2 智能仪表 电能表、水表、气表等智能仪表 通过Modbus RTU协议上传计量数据 支持远程抄表和监控 2.1.3 环境监测 温湿度传感器、气体检测仪 实时采集环境参数 异常情况自动报警 2.2 现场部署注意事项 通信距离限制 RS-485总线最大通信距离:1200米(无中继) 波特率选择:影响通信距离和稳定性 终端电阻配置 总线两端需要安装120Ω终端电阻 防止信号反射和干扰 接地处理 良好的接地系统至关重要 避免地电位差引起的通信故障 屏蔽措施 使用屏蔽双绞线 屏蔽层单点接地 三、云端接入挑战 3.1 技术挑战 3.1.1 协议转换 现场设备使用Modbus RTU/ASCII协议 云端需要TCP/IP协议 需要网关设备进行协议转换 3.1.2 网络连接 工业现场网络环境复杂 可能缺乏稳定的互联网连接 需要考虑断线重连机制 3.1.3 数据安全 工业数据敏感性高 需要端到端加密 访问控制和权限管理 3.2 业务挑战 3.2.1 设备兼容性 不同厂商设备协议实现有差异 寄存器地址定义不统一 需要灵活的配置能力 3.2.2 实时性要求 工业控制对实时性要求高 云端通信存在延迟 需要优化通信策略 3.2.3 成本控制 传统方案需要专业技术人员 部署和维护成本高 需要降低技术门槛 四、Modbus物联网云平台解决方案 4.1 平台架构 Modbus物联网云平台采用分层架构设计: ┌─────────────────────────────────────┐ │ 应用层 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │Web │ │移动 │ │微信 │ │ │ │应用 │ │应用 │ │小程序│ │ │ └─────┘ └─────┘ └─────┘ │ ├─────────────────────────────────────┤ │ 平台服务层 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │设备 │ │数据 │ │规则 │ │ │ │管理 │ │存储 │ │引擎 │ │ │ └─────┘ └─────┘ └─────┘ │ ├─────────────────────────────────────┤ │ 接入层 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │Modbus│ │其他 │ │边缘 │ │ │ │网关 │ │协议 │ │计算 │ │ │ └─────┘ └─────┘ └─────┘ │ └─────────────────────────────────────┘ 4.2 核心功能 4.2.1 设备快速接入 免配置接入: 内置常用设备模板 自动识别: 支持设备自动发现 批量导入: 支持Excel批量导入设备 4.2.2 数据采集与监控 实时数据: 毫秒级数据采集 历史数据: 长期数据存储 数据可视化: 丰富的图表展示 4.2.3 远程控制 实时控制: 远程操作设备 定时任务: 自动化控制策略 联动控制: 多设备协同控制 4.2.4 报警与通知 阈值报警: 自定义报警规则 多通道通知: 短信、邮件、微信 报警历史: 完整的报警记录 4.3 技术优势 4.3.1 兼容性 支持99.9%以上Modbus设备 兼容Modbus RTU/ASCII/TCP协议 支持自定义协议扩展 4.3.2 稳定性 分布式架构设计 自动容灾和负载均衡 7×24小时运维监控 4.3.3 安全性 多重身份认证 数据传输加密 访问权限控制 4.3.4 开放性 提供开放API接口 支持二次开发 丰富的集成能力 五、实际应用案例 5.1 智慧工厂改造 项目背景 某制造企业拥有多条生产线,设备老旧,信息化程度低,生产效率难以提升。 解决方案 设备联网: 通过Modbus网关连接PLC、传感器等设备 数据采集: 实时采集生产数据、设备状态 监控大屏: 建立生产监控中心 移动应用: 管理人员随时随地查看生产情况 实施效果 生产效率提升25% 设备故障率降低40% 能源消耗减少15% 管理人员减少现场巡检时间60% 5.2 智能楼宇管理 项目背景 商业综合体需要集中管理空调、照明、安防等系统,实现节能降耗。 解决方案 系统集成: 通过Modbus协议集成各子系统 智能控制: 基于环境参数自动调节 能耗分析: 实时监测和分析能耗 远程管理: 物业人员远程监控和控制 实施效果 综合能耗降低30% 管理效率提升50% 设备寿命延长20% 用户满意度提升40% 5.3 环境监测网络 项目背景 环保部门需要建立区域环境监测网络,实时监控空气质量、水质等参数。 解决方案 监测点部署: 部署Modbus环境监测设备 数据传输: 通过4G网络上传数据 数据分析: 大数据分析环境趋势 预警系统: 超标自动预警 实施效果 监测覆盖率提升80% 数据准确性提高95% 响应时间缩短70% 管理成本降低50% 六、实施指南 6.1 准备工作 6.1.1 设备清单 列出需要接入的设备清单 确认设备支持的Modbus协议类型 收集设备的技术文档 6.1.2 网络规划 评估现场网络环境 确定通信方式(有线/无线) 规划IP地址和网络拓扑 6.1.3 安全评估 评估数据敏感性 确定安全等级要求 制定安全策略 6.2 实施步骤 步骤1: 平台注册 访问Modbus物联网云平台 注册账号并创建项目 配置项目基本信息 步骤2: 设备接入 选择设备模板或自定义配置 配置设备通信参数 测试设备连接 步骤3: 数据验证 验证数据采集准确性 测试控制功能 确认报警功能 步骤4: 应用开发 使用平台提供的工具开发应用 配置数据展示界面 设置用户权限 步骤5: 上线运行 系统试运行 用户培训 正式上线 6.3 常见问题解决 问题1: 设备无法连接 检查物理连接 验证通信参数 确认设备地址 问题2: 数据采集异常 检查寄存器地址 验证数据类型 确认数据范围 问题3: 通信延迟大 优化网络配置 调整采集频率 使用本地缓存 七、未来发展趋势 7.1 技术发展趋势 7.1.1 边缘计算 在网关设备上实现数据处理 减少云端通信压力 提高系统响应速度 7.1.2 AI集成 设备故障预测 能耗优化建议 智能控制策略 7.1.3 5G应用 高速低延迟通信 大规模设备连接 移动场景支持 7.2 市场发展趋势 7.2.1 行业标准化 统一的接口标准 互操作性提升 生态系统建设 7.2.2 服务模式创新 平台即服务(PaaS) 软件即服务(SaaS) 按需付费模式 7.2.3 应用场景扩展 从工业向更多行业扩展 从监控向控制优化发展 从单点向系统集成发展 八、总结 Modbus协议作为工业通信的基石,在物联网时代焕发了新的生机。通过Modbus物联网云平台,传统工业设备可以快速、安全地接入云端,实现数据的采集、监控和控制。这不仅降低了企业数字化转型的门槛,也为工业物联网的发展提供了强有力的支撑。 随着技术的不断进步和市场的日益成熟,Modbus协议与云计算的结合将创造更多的价值。无论是提升生产效率、降低运营成本,还是创造新的商业模式,Modbus物联网云平台都将发挥重要作用。 立即开始您的物联网项目? 访问Modbus物联网云平台,注册账号,5分钟完成第一个设备接入! 关于作者 本文由Modbus物联网云平台技术团队撰写,我们致力于为工业物联网提供简单、可靠、高效的解决方案。如果您有任何问题或建议,欢迎通过以下方式联系我们: 官网: https://www.modbus.cn 客服电话: 18801054468 在线客服: 点击咨询 版权声明:本文为Modbus物联网云平台原创内容,转载请注明出处。 --- ### 257. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 零代码开发:如何5分钟完成设备接入 引言 在传统的工业物联网项目中,设备接入往往需要专业的软件开发人员,花费数天甚至数周时间进行协议解析、数据映射、接口开发等工作。这不仅增加了项目成本,也延长了实施周期。Modbus物联网云平台推出的零代码开发功能,彻底改变了这一现状。本文将详细介绍如何通过零代码方式,在5分钟内完成设备接入。 一、传统开发 vs 零代码开发 1.1 传统开发流程 传统的设备接入开发流程通常包括以下步骤: ┌─────────────────────────────────┐ │ 需求分析 (1-2天) │ │ • 设备协议分析 │ │ • 数据点定义 │ │ • 通信参数确认 │ ├─────────────────────────────────┤ │ 开发实现 (3-7天) │ │ • 协议解析代码编写 │ │ • 数据采集程序开发 │ │ • 通信接口开发 │ ├─────────────────────────────────┤ │ 测试调试 (2-3天) │ │ • 单元测试 │ │ • 集成测试 │ │ • 现场调试 │ ├─────────────────────────────────┤ │ 部署上线 (1-2天) │ │ • 环境部署 │ │ • 配置安装 │ │ • 上线运行 │ └─────────────────────────────────┘ 总计:7-14天,需要专业开发人员 1.2 零代码开发流程 Modbus物联网云平台的零代码开发流程: ┌─────────────────────────────────┐ │ 选择设备模板 (30秒) │ │ • 从模板库选择设备类型 │ │ • 或扫描设备自动识别 │ ├─────────────────────────────────┤ │ 配置通信参数 (1分钟) │ │ • 填写设备地址 │ │ • 设置通信参数 │ │ • 配置采集周期 │ ├─────────────────────────────────┤ │ 数据点映射 (2分钟) │ │ • 自动识别数据点 │ │ • 可视化数据点映射 │ │ • 设置数据属性 │ ├─────────────────────────────────┤ │ 测试验证 (1分钟) │ │ • 自动连接测试 │ │ • 数据采集验证 │ │ • 控制功能测试 │ ├─────────────────────────────────┤ │ 发布应用 (30秒) │ │ • 生成应用界面 │ │ • 配置用户权限 │ │ • 发布到多平台 │ └─────────────────────────────────┘ 总计:5分钟,无需编程经验 1.3 对比优势 对比项 传统开发 零代码开发 优势 时间成本 7-14天 5分钟 节省99%以上 人力成本 专业开发人员 业务人员 节省100% 技术门槛 需要编程技能 无需编程 降低100% 维护成本 高,需要开发人员 低,业务人员可维护 节省80% 灵活性 低,修改需要开发 高,可视化配置 提升90% 二、5分钟快速接入实战 2.1 准备工作 2.1.1 设备信息 假设我们要接入一台智能电表,设备信息如下: - 设备型号:DTSD342-9S - 通信协议:Modbus RTU - 设备地址:1 - 通信参数:9600bps, 8数据位, 1停止位, 无校验 - 数据点:电压、电流、功率、电能等 2.1.2 所需工具 Modbus物联网云平台账号 Modbus网关设备(如MB-100) 网线或4G网络连接 电脑或手机(用于配置) 2.2 第一步:登录平台(30秒) 访问 https://www.modbus.cn 点击右上角"登录"按钮 输入账号密码登录 进入控制台界面 2.3 第二步:创建设备(1分钟) 2.3.1 选择设备模板 在控制台点击"设备管理" 点击"添加设备" 在设备模板库中搜索"智能电表" 选择"DTSD342-9S"模板 2.3.2 配置设备信息 设备名称:车间1号电表 设备类型:智能电表 设备型号:DTSD342-9S 设备地址:1 所属项目:生产车间能耗监控 位置信息:A车间配电室 2.3.3 配置通信参数 通信方式:Modbus RTU 串口参数:COM1 波特率:9600 数据位:8 停止位:1 校验位:无 采集周期:5秒 2.4 第三步:数据点配置(2分钟) 2.4.1 自动识别数据点 平台自动识别设备支持的数据点: 数据点名称 寄存器地址 数据类型 单位 读写属性 A相电压 0x0000 uint16 V 只读 B相电压 0x0001 uint16 V 只读 C相电压 0x0002 uint16 V 只读 A相电流 0x0003 uint16 A 只读 B相电流 0x0004 uint16 A 只读 C相电流 0x0005 uint16 A 只读 总有功功率 0x0006 int32 kW 只读 总无功功率 0x0008 int32 kVar 只读 总视在功率 0x000A int32 kVA 只读 总有功电能 0x000C int32 kWh 只读 2.4.2 数据点属性设置 数据转换:设置缩放系数和偏移量 - 电压:原始值/10,单位V - 电流:原始值/1000,单位A - 功率:原始值/1000,单位kW 报警设置:设置报警阈值 - 电压报警:<198V 或 >242V - 电流报警:>100A - 功率报警:>50kW 数据存储:设置存储策略 - 实时数据:5秒存储一次 - 历史数据:1分钟聚合一次 - 长期存储:1小时聚合一次 2.5 第四步:连接测试(1分钟) 2.5.1 自动连接测试 点击"测试连接"按钮 平台自动尝试连接设备 显示连接状态和数据质量 2.5.2 数据验证 连接状态:已连接 通信质量:优秀(延迟<100ms) 数据点状态: • A相电压:220.5V ✓ • B相电压:219.8V ✓ • C相电压:221.2V ✓ • A相电流:45.6A ✓ • 总有功功率:32.5kW ✓ • 总有功电能:12560.8kWh ✓ 2.5.3 控制测试 测试远程读取功能 测试数据写入功能(如设置参数) 验证报警功能 2.6 第五步:发布应用(30秒) 2.6.1 生成应用界面 点击"生成应用" 选择应用模板:"电表监控" 平台自动生成应用界面 2.6.2 界面定制 应用名称:车间能耗监控 界面布局:仪表盘+曲线图+数据表格 显示内容: • 实时数据:电压、电流、功率 • 历史曲线:24小时功率曲线 • 数据统计:今日用电量、本月用电量 • 报警信息:实时报警列表 2.6.3 多平台发布 Web应用:自动生成Web页面 移动应用:生成iOS/Android应用 微信小程序:生成微信小程序 大屏展示:生成大屏展示界面 2.6.4 用户权限配置 管理员:全部权限 运维人员:查看和控制权限 普通用户:只读权限 访客:有限查看权限 三、高级功能配置 3.1 数据可视化 3.1.1 仪表盘配置 平台提供丰富的可视化组件: 组件类型 适用场景 配置示例 数字显示 实时数值显示 电压:220.5V 仪表盘 范围指示 电流:45.6/100A 曲线图 趋势分析 24小时功率曲线 柱状图 对比分析 三相电流对比 饼图 占比分析 能耗分布 地图 位置展示 设备分布地图 3.1.2 大屏展示 布局设计:拖拽式布局设计 主题选择:多种主题模板 数据刷新:实时数据刷新 全屏展示:自动全屏轮播 3.2 报警通知 3.2.1 报警规则配置 报警规则1:电压异常 条件:电压 < 198V 或 > 242V 级别:紧急 通知方式:短信+微信+邮件 重复间隔:5分钟 报警规则2:电流过载 条件:电流 > 100A 级别:重要 通知方式:微信+邮件 重复间隔:10分钟 报警规则3:功率异常 条件:功率 > 50kW 级别:警告 通知方式:应用内通知 重复间隔:30分钟 3.2.2 通知渠道 短信通知:支持国内三大运营商 微信通知:通过公众号模板消息 邮件通知:支持SMTP邮件服务器 应用内通知:平台内消息通知 语音通知:电话语音播报 3.3 数据分析 3.3.1 实时分析 数据聚合:分钟、小时、日聚合 趋势分析:数据变化趋势 同比环比:与历史数据对比 异常检测:自动异常检测 3.3.2 报表生成 日报表:每日用电统计 月报表:月度能耗分析 自定义报表:按需定制报表 自动发送:定时发送报表 3.4 远程控制 3.4.1 控制命令 单点控制:单个数据点控制 批量控制:多个设备同时控制 定时控制:按时间计划控制 条件控制:基于条件自动控制 3.4.2 控制策略 策略1:峰谷电价控制 条件:电价处于峰时段 动作:降低非必要设备功率 目标:降低电费成本 策略2:温度控制 条件:温度 > 设定值 动作:启动制冷设备 目标:保持恒温环境 策略3:安全控制 条件:检测到异常 动作:紧急停机 目标:保障安全 四、实际应用案例 4.1 案例一:小型工厂能耗监控 项目背景 某小型加工厂有10台设备,希望监控能耗情况。 实施过程 设备接入:接入10个智能电表(5分钟×10=50分钟) 应用生成:生成能耗监控应用(5分钟) 权限配置:配置3个用户权限(2分钟) 报警设置:设置能耗报警规则(3分钟) 实施效果 总耗时:60分钟 成本:零代码,无开发成本 效果:实时监控能耗,月节省电费15% 4.2 案例二:商业楼宇设备管理 项目背景 某商业楼宇需要管理空调、照明、电梯等设备。 实施过程 模板选择:选择楼宇设备模板库 批量导入:Excel批量导入设备信息 统一配置:统一配置通信参数 应用集成:集成到楼宇管理系统 实施效果 实施周期:2天(传统方案需要2周) 维护成本:降低80% 管理效率:提升300% 4.3 案例三:农业物联网项目 项目背景 某农业基地需要监控温室环境。 实施过程 设备选型:选择温湿度、光照、土壤传感器 快速接入:5分钟接入一个传感器 智能控制:设置自动灌溉和通风 移动应用:生成手机监控应用 实施效果 接入速度:20个传感器,100分钟完成 增产效果:作物产量提升25% 节水效果:灌溉用水减少30% 五、技术原理 5.1 模板引擎 5.1.1 设备模板 设备模板包含以下信息: { "device_type": "smart_meter", "protocol": "modbus_rtu", "data_points": [ { "name": "voltage_a", "address": "0x0000", "data_type": "uint16", "unit": "V", "scale": 0.1, "offset": 0 } ], "communication": { "baud_rate": [1200, 2400, 4800, 9600, 19200], "data_bits": [7, 8], "stop_bits": [1, 2], "parity": ["none", "even", "odd"] } } 5.1.2 自动识别 平台通过以下方式自动识别设备: 1. 特征匹配:匹配已知设备特征 2. 协议探测:自动探测协议参数 3. 数据点扫描:扫描设备数据点 4. 智能推荐:推荐最佳配置 5.2 代码生成 5.2.1 前端代码生成 平台根据配置自动生成: - HTML页面结构 - CSS样式文件 - JavaScript交互逻辑 - 图表和数据绑定 5.2.2 后端代码生成 数据采集服务 API接口服务 数据处理逻辑 报警引擎 5.2.3 移动端代码生成 iOS应用代码(Swift) Android应用代码(Kotlin) 微信小程序代码 H5混合应用 5.3 数据流处理 5.3.1 实时数据流 设备数据 → 协议解析 → 数据清洗 → 数据转换 → 实时存储 → 事件触发 → 报警处理 → 前端推送 5.3.2 历史数据处理 实时数据 → 分钟聚合 → 小时聚合 → 日聚合 → 月聚合 → 年聚合 → 统计分析 → 报表生成 六、最佳实践 6.1 设备接入最佳实践 6.1.1 准备工作 设备文档:准备设备技术文档 网络测试:测试网络连接质量 权限确认:确认设备访问权限 备份计划:制定配置备份计划 6.1.2 实施步骤 先测试后实施:先小范围测试 分批次接入:分批接入设备 及时验证:每接入一个设备立即验证 文档记录:记录实施过程和问题 6.1.3 问题排查 连接问题:检查物理连接和网络 数据问题:检查协议配置和数据映射 性能问题:优化采集周期和数据处理 安全问题:检查权限和加密配置 6.2 应用开发最佳实践 6.2.1 界面设计 用户为中心:以用户需求设计界面 简洁明了:避免界面过于复杂 响应式设计:适配不同设备屏幕 一致性:保持界面风格一致 6.2.2 功能设计 核心功能优先:先实现核心功能 渐进增强:逐步增加高级功能 用户反馈:收集用户反馈优化 性能优化:优化应用性能 6.2.3 权限管理 最小权限原则:只授予必要权限 角色分离:不同角色不同权限 审计跟踪:记录所有操作日志 定期审查:定期审查权限设置 6.3 运维管理最佳实践 6.3.1 监控管理 系统监控:监控系统运行状态 设备监控:监控设备连接状态 数据监控:监控数据质量和完整性 性能监控:监控系统性能指标 6.3.2 维护管理 定期检查:定期检查系统运行状态 及时更新:及时更新系统和应用 备份恢复:定期备份配置和数据 问题处理:建立问题处理流程 6.3.3 安全管理 访问控制:严格控制访问权限 数据加密:确保数据传输安全 安全审计:定期进行安全审计 应急响应:建立应急响应机制 七、常见问题解答 7.1 技术问题 Q1:设备无法连接怎么办? A: 按照以下步骤排查: 1. 检查物理连接是否正常 2. 验证通信参数是否正确 3. 确认设备地址是否正确 4. 检查网络连接是否正常 5. 查看设备日志和错误信息 Q2:数据采集不准确怎么办? A: 可能的原因和解决方法: 1. 协议配置错误:检查协议版本和参数 2. 数据映射错误:检查寄存器地址和数据类型 3. 转换系数错误:检查缩放系数和偏移量 4. 设备问题:检查设备本身是否正常 Q3:应用响应慢怎么办? A: 优化建议: 1. 优化采集周期:调整数据采集频率 2. 减少数据量:只采集必要的数据 3. 优化网络:改善网络连接质量 4. 升级硬件:升级网关设备性能 7.2 业务问题 Q1:如何评估项目效果? A: 可以从以下方面评估: 1. 效率提升:生产效率、管理效率 2. 成本降低:能耗成本、运维成本 3. 质量提升:产品质量、服务质量 4. 安全改善:安全事故减少、风险降低 Q2:如何选择适合的设备? A: 选择建议: 1. 需求分析:明确业务需求 2. 兼容性检查:检查设备兼容性 3. 性价比评估:评估性价比 4. 售后服务:考虑售后服务 Q3:如何培训用户? A: 培训建议: 1. 分层培训:不同角色不同培训内容 2. 实践操作:注重实际操作培训 3. 持续支持:提供持续技术支持 4. 知识库建设:建立知识库和文档 7.3 管理问题 Q1:如何管理多个项目? A: 管理建议: 1. 项目分组:按业务或部门分组 2. 权限管理:设置项目级权限 3. 统一监控:建立统一监控平台 4. 标准化流程:制定标准化实施流程 Q2:如何控制项目成本? A: 成本控制建议: 1. 预算管理:制定详细的项目预算 2. 资源优化:优化资源配置 3. 过程控制:控制实施过程成本 4. 效果评估:定期评估投资回报 Q3:如何保证项目成功? A: 成功要素: 1. 明确目标:设定清晰的项目目标 2. 充分准备:做好充分的准备工作 3. 专业实施:专业的实施团队 4. 持续优化:项目上线后持续优化 八、总结 零代码开发彻底改变了工业物联网的实施方式。通过Modbus物联网云平台的零代码功能,企业可以在5分钟内完成设备接入,快速构建物联网应用,大大降低了技术门槛和实施成本。 8.1 核心价值 极速实施:从几天到几分钟,实施速度提升99% 降低成本:无需专业开发人员,成本降低80% 降低门槛:业务人员即可完成,技术门槛降低100% 灵活扩展:可视化配置,灵活扩展和修改 8.2 适用场景 中小企业:资源有限,需要快速见效 传统行业:缺乏IT技术,需要简单易用的方案 试点项目:需要快速验证技术可行性 标准化场景:有标准化的设备和应用场景 8.3 未来展望 随着技术的不断发展,零代码开发将更加智能和强大: AI辅助:AI智能推荐最佳配置 自动优化:系统自动优化性能和配置 生态集成:与更多系统和平台集成 行业深化:深入更多行业和应用场景 九、立即开始 9.1 免费体验 Modbus物联网云平台提供免费体验: 1. 免费注册:无需任何费用 2. 免费试用:提供免费试用期 3. 免费培训:提供免费在线培训 4. 免费支持:提供免费技术支持 9.2 实施支持 平台提供全面的实施支持: 1. 技术咨询:专业的技术咨询服务 2. 实施指导:详细的实施指导文档 3. 培训服务:专业的培训服务 4. 售后服务:完善的售后服务体系 9.3 成功案例 已有超过1000家企业通过Modbus物联网云平台成功实施物联网项目,涵盖制造业、能源、环保、农业等多个行业。 十、联系我们 如果您对零代码开发有任何疑问或需要帮助,欢迎联系我们: 官网: https://www.modbus.cn 客服电话: 18801054468 在线客服: 点击咨询 技术支持: support@modbus.cn 商务合作: business@modbus.cn 立即开始您的零代码物联网之旅! 访问Modbus物联网云平台,5分钟完成第一个设备接入! 本文为Modbus物联网云平台原创内容,转载请注明出处。文中提到的5分钟完成设备接入是基于标准Modbus设备的典型情况,实际时间可能因设备复杂度和网络环境有所不同。 --- ### 258. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工业物联网的5大痛点及解决方案 引言 随着工业4.0和智能制造的推进,工业物联网(IIoT)已经成为制造业转型升级的关键技术。然而,在实际应用中,企业面临着诸多挑战。本文将从实际案例出发,深入分析工业物联网实施过程中的5大痛点,并提供基于Modbus物联网云平台的解决方案。 痛点一:设备兼容性问题 问题描述 工业现场设备种类繁多,品牌各异,通信协议不统一。企业往往面临以下挑战: 协议多样性: Modbus、Profibus、CAN、Ethernet/IP等多种协议并存 版本差异: 同一协议不同版本之间的兼容性问题 厂商定制: 设备厂商对标准协议的定制化修改 老旧设备: 传统设备缺乏标准通信接口 实际案例 某汽车零部件制造企业拥有来自10个不同厂商的50台设备,包括: - 德国品牌的CNC机床(使用Profibus协议) - 日本品牌的机器人(使用CC-Link协议) - 国产的注塑机(使用Modbus RTU协议) - 美国品牌的检测设备(使用Ethernet/IP协议) 企业希望将这些设备联网,实现统一监控,但面临巨大的集成难度。 解决方案 1. 多协议网关 Modbus物联网云平台支持多种工业协议网关: 协议类型 支持网关 特点 Modbus RTU/ASCII MB-100系列 支持RS-485/RS-232 Modbus TCP MB-200系列 支持以太网 Profibus DP PB-300系列 支持主从站模式 CAN总线 CAN-400系列 支持CAN2.0A/B Ethernet/IP EIP-500系列 支持标签访问 2. 协议转换引擎 平台内置协议转换引擎,支持: - 协议映射: 将不同协议转换为统一的数据模型 - 数据标准化: 统一数据格式和单位 - 异常处理: 协议异常的智能处理 3. 设备模板库 平台提供丰富的设备模板库: - 预置模板: 1000+常用设备模板 - 自定义模板: 支持用户自定义设备配置 - 模板共享: 用户间模板共享机制 实施效果 设备接入时间从平均3天缩短到2小时 集成成本降低70% 系统稳定性提升至99.9% 痛点二:数据采集实时性 问题描述 工业控制对数据实时性要求极高,传统方案往往存在: 采集延迟: 数据采集周期长,无法满足实时监控需求 数据丢失: 网络不稳定导致数据丢失 时钟不同步: 设备间时钟不同步,数据时间戳不一致 处理延迟: 数据处理和分析延迟大 实际案例 某化工厂需要实时监控反应釜的温度、压力等关键参数: - 安全要求:温度超过阈值必须在5秒内报警 - 工艺要求:压力变化趋势需要实时分析 - 管理要求:生产数据需要实时展示在大屏上 传统SCADA系统采集周期为10秒,无法满足实时性要求。 解决方案 1. 毫秒级数据采集 Modbus物联网云平台支持: - 高速采集: 最小采集周期可达10毫秒 - 并行采集: 多设备并行数据采集 - 优先级调度: 关键数据优先采集 2. 边缘计算 在网关设备上实现: - 数据预处理: 在边缘端进行数据清洗和计算 - 本地缓存: 网络中断时数据本地缓存 - 实时控制: 边缘端实现快速控制逻辑 3. 时间同步 NTP同步: 设备时钟自动同步 时间戳校准: 数据时间戳精确校准 时序分析: 支持毫秒级时序数据分析 4. 数据流处理 平台提供实时数据流处理能力: - 流式计算: 实时数据计算和分析 - 复杂事件处理: 多数据源事件关联分析 - 实时预警: 基于流数据的实时预警 实施效果 数据采集延迟从10秒降低到100毫秒 报警响应时间从30秒缩短到3秒 数据完整性从95%提升到99.99% 痛点三:远程控制安全性 问题描述 工业设备的远程控制涉及重大安全风险: 非法访问: 未经授权的设备访问 数据泄露: 敏感生产数据泄露 恶意控制: 设备被恶意控制导致生产事故 网络攻击: DDoS、中间人攻击等网络安全威胁 实际案例 某水务公司需要远程控制分布在全市的100个泵站: - 安全要求:必须防止非法访问和控制 - 合规要求:需要满足等保2.0三级要求 - 业务要求:授权人员可以随时随地安全访问 传统VPN方案存在配置复杂、管理困难等问题。 解决方案 1. 多层次安全架构 ┌─────────────────────────────────┐ │ 应用安全层 │ │ ┌─────────┐ ┌─────────┐ │ │ │身份认证│ │访问控制│ │ │ │ MFA │ │ RBAC │ │ │ └─────────┘ └─────────┘ │ ├─────────────────────────────────┤ │ 通信安全层 │ │ ┌─────────┐ ┌─────────┐ │ │ │传输加密│ │协议安全│ │ │ │ TLS1.3 │ │ 签名验证│ │ │ └─────────┘ └─────────┘ │ ├─────────────────────────────────┤ │ 设备安全层 │ │ ┌─────────┐ ┌─────────┐ │ │ │设备认证│ │安全启动│ │ │ │ 证书 │ │ Secure │ │ │ └─────────┘ └─────────┘ │ └─────────────────────────────────┘ 2. 身份和访问管理 多因素认证: 支持短信、邮件、OTP等多种认证方式 角色权限控制: 基于角色的细粒度权限控制 操作审计: 完整的操作日志和审计跟踪 3. 数据传输安全 端到端加密: TLS 1.3加密传输 数据签名: 数据完整性验证 防重放攻击: 时间戳和序列号保护 4. 设备安全 设备证书: 每个设备唯一身份证书 安全启动: 防止固件篡改 安全更新: 安全的固件更新机制 5. 安全监控 实时监控: 安全事件实时监控 威胁检测: 基于AI的异常行为检测 应急响应: 安全事件应急响应流程 实施效果 安全事件发生率降低90% 安全合规成本降低60% 安全运维效率提升80% 痛点四:系统集成复杂性 问题描述 工业物联网需要与现有系统深度集成: 系统孤岛: ERP、MES、WMS等系统独立运行 数据不一致: 不同系统数据定义不一致 接口复杂: 系统间接口开发复杂 维护困难: 集成系统维护成本高 实际案例 某电子制造企业需要将物联网系统与现有系统集成: - ERP系统:SAP,需要生产数据 - MES系统:定制开发,需要设备状态数据 - 质量系统:需要检测数据 - 能源系统:需要能耗数据 传统点对点集成方式导致系统复杂度呈指数增长。 解决方案 1. 统一数据平台 Modbus物联网云平台作为统一数据中台: ┌─────────────────────────────────┐ │ 业务系统 │ │ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │ │ │ERP│ │MES│ │WMS│ │QMS│ │ │ └───┘ └───┘ └───┘ └───┘ │ ├─────────────────────────────────┤ │ 数据服务层 │ │ ┌─────────┐ ┌─────────┐ │ │ │数据API │ │消息队列│ │ │ │ RESTful │ │ Kafka │ │ │ └─────────┘ └─────────┘ │ ├─────────────────────────────────┤ │ 数据存储层 │ │ ┌─────────┐ ┌─────────┐ │ │ │实时数据│ │历史数据│ │ │ │时序数据库│ │关系数据库│ │ │ └─────────┘ └─────────┘ │ ├─────────────────────────────────┤ │ 设备接入层 │ │ ┌─────────┐ ┌─────────┐ │ │ │Modbus │ │其他协议│ │ │ │ 设备 │ │ 设备 │ │ │ └─────────┘ └─────────┘ │ └─────────────────────────────────┘ 2. 标准化数据模型 统一数据定义: 制定企业级数据标准 数据映射: 不同系统数据自动映射 数据质量: 数据质量监控和治理 3. 开放API接口 平台提供丰富的API接口: - 设备管理API: 设备注册、配置、监控 - 数据查询API: 实时数据、历史数据查询 - 控制命令API: 设备远程控制 - 事件通知API: 报警和事件通知 4. 消息中间件 异步通信: 基于消息队列的异步通信 事件驱动: 事件驱动的系统集成 数据流: 实时数据流处理 5. 低代码集成 可视化配置: 拖拽式集成配置 模板化集成: 预置常用系统集成模板 快速部署: 集成配置快速部署 实施效果 系统集成时间从3个月缩短到2周 集成维护成本降低80% 数据一致性从85%提升到99.5% 痛点五:成本控制挑战 问题描述 工业物联网项目往往面临成本控制难题: 初始投资大: 硬件、软件、实施成本高 运维成本高: 需要专业技术人员维护 升级成本: 系统升级和扩展成本高 ROI不明确: 投资回报周期长,效果难以量化 实际案例 某中小型制造企业希望实施物联网项目: - 预算限制:总投资不超过50万元 - 人员限制:没有专职IT人员 - 时间限制:3个月内上线 - 效果要求:6个月内看到投资回报 传统方案往往超出预算且实施周期长。 解决方案 1. 云平台服务模式 Modbus物联网云平台采用SaaS模式: - 按需付费: 根据设备数量和使用量付费 - 零初始投资: 无需购买服务器和软件许可 - 快速上线: 注册即用,快速部署 2. 成本优化策略 成本项 传统方案 Modbus云平台 节省比例 硬件投资 20-50万 0 100% 软件许可 10-30万 按需付费 70-90% 实施服务 10-20万 自助实施 80-100% 运维成本 5-10万/年 包含在服务费中 100% 升级成本 5-15万/次 自动升级 100% 3. 自助服务平台 可视化配置: 无需编程经验 在线文档: 完整的帮助文档和教程 社区支持: 用户社区互助 在线培训: 免费在线培训课程 4. ROI量化工具 平台提供ROI计算工具: - 成本分析: 详细的项目成本分析 - 效益评估: 生产效率、能耗等效益评估 - 投资回报: 投资回报周期计算 - 风险分析: 项目风险分析和应对建议 5. 灵活扩展 弹性扩展: 根据业务需求弹性扩展 模块化服务: 按需选择服务模块 平滑升级: 系统平滑升级,不影响业务 实施效果 初始投资降低90% 实施周期从6个月缩短到1个月 ROI周期从24个月缩短到6个月 总拥有成本(TCO)降低80% 综合解决方案:Modbus物联网云平台 平台核心价值 一站式服务 - 从设备接入到应用开发的全流程服务 - 无需集成多个系统和工具 - 统一的技术支持和维护 专业可靠 - 工业级产品设计和测试 - 99.9%的系统可用性保证 - 7×24小时技术支持 简单易用 - 零代码应用开发 - 可视化配置和管理 - 丰富的模板和案例 开放生态 - 开放的API和SDK - 丰富的合作伙伴生态 - 持续的技术创新 成功案例汇总 行业 客户 实施效果 ROI周期 制造业 某汽车零部件企业 生产效率提升25% 8个月 水务 某水务公司 运维成本降低40% 6个月 化工 某化工厂 安全事故减少60% 10个月 电子 某电子制造企业 质量合格率提升15% 7个月 能源 某能源公司 能耗降低30% 9个月 实施路线图 阶段一:试点验证(1-2个月) 选择1-2个典型应用场景 小规模试点实施 验证技术可行性和业务价值 阶段二:规模推广(3-6个月) 基于试点经验优化方案 扩大实施范围 建立标准化实施流程 阶段三:全面应用(6-12个月) 全厂设备联网 深度业务应用 数据驱动决策 阶段四:持续优化(12个月后) 系统持续优化 新应用场景探索 生态体系建设 总结 工业物联网的实施确实面临诸多挑战,但通过选择合适的平台和工具,这些挑战都可以得到有效解决。Modbus物联网云平台针对工业物联网的5大痛点提供了完整的解决方案,帮助企业以更低的成本、更快的速度实现数字化转型。 关键成功因素: 1. 选择合适的平台: 考虑兼容性、安全性、易用性 2. 分阶段实施: 从试点开始,逐步推广 3. 重视数据安全: 建立完善的安全体系 4. 培养内部能力: 建立内部技术团队 5. 持续优化: 基于数据持续优化和改进 工业物联网不是一次性的项目,而是一个持续演进的过程。选择合适的合作伙伴,制定合理的实施计划,工业物联网必将为企业创造巨大的价值。 立即开始您的工业物联网之旅? 访问Modbus物联网云平台,免费注册体验! 关于Modbus物联网云平台 Modbus物联网云平台是专业的工业物联网云服务平台,致力于帮助传统行业实现设备智能化和数字化转型。平台支持市场上99.9%以上Modbus协议设备接入,提供从设备接入、数据采集、远程控制到应用开发的全流程服务。 平台特点: - 兼容性强:支持多种工业协议 - 安全性高:多重安全防护 - 易用性好:零代码应用开发 - 成本低:按需付费,无初始投资 联系我们: - 官网: https://www.modbus.cn - 客服电话: 18801054468 - 在线客服: 点击咨询 本文为Modbus物联网云平台原创内容,转载请注明出处。 --- ### 259. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus协议详解: 从工业现场到云端 引言 在工业自动化领域,Modbus协议已经成为了事实上的标准通信协议。自1979年由Modicon公司(现为施耐德电气)推出以来,Modbus协议凭借其简单、开放、可靠的特点,在工业控制系统中得到了广泛应用。随着物联网技术的发展,传统的Modbus设备如何安全、高效地接入云端,成为了工业物联网发展的重要课题。 一、Modbus协议基础 1.1 Modbus协议家族 Modbus协议主要包含三种变体: Modbus RTU (Remote Terminal Unit) - 基于串行通信(RS-232/RS-485) - 采用二进制编码 - 广泛应用于工业现场 Modbus ASCII - 基于ASCII字符编码 - 可读性较好但效率较低 - 适用于调试和测试 Modbus TCP - 基于TCP/IP网络 - 支持以太网通信 - 适用于现代工业网络 1.2 通信模型 Modbus采用主从式通信模型: - 主站 (Master): 发起通信请求的设备 - 从站 (Slave): 响应主站请求的设备 - 一个主站可以连接多个从站(最多247个) 1.3 功能码详解 Modbus协议定义了多种功能码,用于不同类型的操作: 功能码 名称 描述 01 读取线圈状态 读取离散量输出(DO)状态 02 读取输入状态 读取离散量输入(DI)状态 03 读取保持寄存器 读取保持寄存器(HR)值 04 读取输入寄存器 读取输入寄存器(IR)值 05 写单个线圈 写入单个线圈状态 06 写单个寄存器 写入单个保持寄存器 15 写多个线圈 写入多个线圈状态 16 写多个寄存器 写入多个保持寄存器 二、工业现场应用 2.1 典型应用场景 2.1.1 PLC控制系统 可编程逻辑控制器(PLC)通过Modbus协议与各种传感器、执行器通信 实现生产线的自动化控制 实时监控设备状态 2.1.2 智能仪表 电能表、水表、气表等智能仪表 通过Modbus RTU协议上传计量数据 支持远程抄表和监控 2.1.3 环境监测 温湿度传感器、气体检测仪 实时采集环境参数 异常情况自动报警 2.2 现场部署注意事项 通信距离限制 - RS-485总线最大通信距离:1200米(无中继) - 波特率选择:影响通信距离和稳定性 终端电阻配置 - 总线两端需要安装120Ω终端电阻 - 防止信号反射和干扰 接地处理 - 良好的接地系统至关重要 - 避免地电位差引起的通信故障 屏蔽措施 - 使用屏蔽双绞线 - 屏蔽层单点接地 三、云端接入挑战 3.1 技术挑战 3.1.1 协议转换 现场设备使用Modbus RTU/ASCII协议 云端需要TCP/IP协议 需要网关设备进行协议转换 3.1.2 网络连接 工业现场网络环境复杂 可能缺乏稳定的互联网连接 需要考虑断线重连机制 3.1.3 数据安全 工业数据敏感性高 需要端到端加密 访问控制和权限管理 3.2 业务挑战 3.2.1 设备兼容性 不同厂商设备协议实现有差异 寄存器地址定义不统一 需要灵活的配置能力 3.2.2 实时性要求 工业控制对实时性要求高 云端通信存在延迟 需要优化通信策略 3.2.3 成本控制 传统方案需要专业技术人员 部署和维护成本高 需要降低技术门槛 四、Modbus物联网云平台解决方案 4.1 平台架构 Modbus物联网云平台采用分层架构设计: ┌─────────────────────────────────────┐ │ 应用层 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │Web │ │移动 │ │微信 │ │ │ │应用 │ │应用 │ │小程序│ │ │ └─────┘ └─────┘ └─────┘ │ ├─────────────────────────────────────┤ │ 平台服务层 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │设备 │ │数据 │ │规则 │ │ │ │管理 │ │存储 │ │引擎 │ │ │ └─────┘ └─────┘ └─────┘ │ ├─────────────────────────────────────┤ │ 接入层 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │Modbus│ │其他 │ │边缘 │ │ │ │网关 │ │协议 │ │计算 │ │ │ └─────┘ └─────┘ └─────┘ │ └─────────────────────────────────────┘ 4.2 核心功能 4.2.1 设备快速接入 免配置接入: 内置常用设备模板 自动识别: 支持设备自动发现 批量导入: 支持Excel批量导入设备 4.2.2 数据采集与监控 实时数据: 毫秒级数据采集 历史数据: 长期数据存储 数据可视化: 丰富的图表展示 4.2.3 远程控制 实时控制: 远程操作设备 定时任务: 自动化控制策略 联动控制: 多设备协同控制 4.2.4 报警与通知 阈值报警: 自定义报警规则 多通道通知: 短信、邮件、微信 报警历史: 完整的报警记录 4.3 技术优势 4.3.1 兼容性 支持99.9%以上Modbus设备 兼容Modbus RTU/ASCII/TCP协议 支持自定义协议扩展 4.3.2 稳定性 分布式架构设计 自动容灾和负载均衡 7×24小时运维监控 4.3.3 安全性 多重身份认证 数据传输加密 访问权限控制 4.3.4 开放性 提供开放API接口 支持二次开发 丰富的集成能力 五、实际应用案例 5.1 智慧工厂改造 项目背景 某制造企业拥有多条生产线,设备老旧,信息化程度低,生产效率难以提升。 解决方案 设备联网: 通过Modbus网关连接PLC、传感器等设备 数据采集: 实时采集生产数据、设备状态 监控大屏: 建立生产监控中心 移动应用: 管理人员随时随地查看生产情况 实施效果 生产效率提升25% 设备故障率降低40% 能源消耗减少15% 管理人员减少现场巡检时间60% 5.2 智能楼宇管理 项目背景 商业综合体需要集中管理空调、照明、安防等系统,实现节能降耗。 解决方案 系统集成: 通过Modbus协议集成各子系统 智能控制: 基于环境参数自动调节 能耗分析: 实时监测和分析能耗 远程管理: 物业人员远程监控和控制 实施效果 综合能耗降低30% 管理效率提升50% 设备寿命延长20% 用户满意度提升40% 5.3 环境监测网络 项目背景 环保部门需要建立区域环境监测网络,实时监控空气质量、水质等参数。 解决方案 监测点部署: 部署Modbus环境监测设备 数据传输: 通过4G网络上传数据 数据分析: 大数据分析环境趋势 预警系统: 超标自动预警 实施效果 监测覆盖率提升80% 数据准确性提高95% 响应时间缩短70% 管理成本降低50% 六、实施指南 6.1 准备工作 6.1.1 设备清单 列出需要接入的设备清单 确认设备支持的Modbus协议类型 收集设备的技术文档 6.1.2 网络规划 评估现场网络环境 确定通信方式(有线/无线) 规划IP地址和网络拓扑 6.1.3 安全评估 评估数据敏感性 确定安全等级要求 制定安全策略 6.2 实施步骤 步骤1: 平台注册 访问Modbus物联网云平台 注册账号并创建项目 配置项目基本信息 步骤2: 设备接入 选择设备模板或自定义配置 配置设备通信参数 测试设备连接 步骤3: 数据验证 验证数据采集准确性 测试控制功能 确认报警功能 步骤4: 应用开发 使用平台提供的工具开发应用 配置数据展示界面 设置用户权限 步骤5: 上线运行 系统试运行 用户培训 正式上线 6.3 常见问题解决 问题1: 设备无法连接 检查物理连接 验证通信参数 确认设备地址 问题2: 数据采集异常 检查寄存器地址 验证数据类型 确认数据范围 问题3: 通信延迟大 优化网络配置 调整采集频率 使用本地缓存 七、未来发展趋势 7.1 技术发展趋势 7.1.1 边缘计算 在网关设备上实现数据处理 减少云端通信压力 提高系统响应速度 7.1.2 AI集成 设备故障预测 能耗优化建议 智能控制策略 7.1.3 5G应用 高速低延迟通信 大规模设备连接 移动场景支持 7.2 市场发展趋势 7.2.1 行业标准化 统一的接口标准 互操作性提升 生态系统建设 7.2.2 服务模式创新 平台即服务(PaaS) 软件即服务(SaaS) 按需付费模式 7.2.3 应用场景扩展 从工业向更多行业扩展 从监控向控制优化发展 从单点向系统集成发展 八、总结 Modbus协议作为工业通信的基石,在物联网时代焕发了新的生机。通过Modbus物联网云平台,传统工业设备可以快速、安全地接入云端,实现数据的采集、监控和控制。这不仅降低了企业数字化转型的门槛,也为工业物联网的发展提供了强有力的支撑。 随着技术的不断进步和市场的日益成熟,Modbus协议与云计算的结合将创造更多的价值。无论是提升生产效率、降低运营成本,还是创造新的商业模式,Modbus物联网云平台都将发挥重要作用。 立即开始您的物联网项目? 访问Modbus物联网云平台,注册账号,5分钟完成第一个设备接入! 关于作者 本文由Modbus物联网云平台技术团队撰写,我们致力于为工业物联网提供简单、可靠、高效的解决方案。如果您有任何问题或建议,欢迎通过以下方式联系我们: 官网: https://www.modbus.cn 客服电话: 18801054468 在线客服: 点击咨询 版权声明:本文为Modbus物联网云平台原创内容,转载请注明出处。 --- ### 260. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 NeoSerial:现代化串口通信工具的全面指南 引言 在工业控制、嵌入式开发和设备调试领域,串口通信一直是不可或缺的基础技术。尽管网络通信技术快速发展,但串口通信因其简单、可靠、成本低的特性,在特定场景下仍然具有不可替代的地位。NeoSerial作为新一代串口通信工具,将传统串口通信与现代软件工程理念相结合,为开发者提供了全新的串口通信体验。 NeoSerial的设计理念 1. 用户友好性优先 NeoSerial彻底改变了传统串口工具的复杂操作: - 直观的界面设计:所有功能一目了然,无需记忆复杂命令 - 智能配置向导:根据设备类型自动推荐最佳配置 - 实时状态反馈:通信状态、数据流量、错误信息实时显示 2. 功能全面性 多协议支持:支持RS-232、RS-422、RS-485等多种串口标准 多数据格式:ASCII、HEX、DECIMAL、BINARY等多种数据显示格式 多编码支持:UTF-8、GBK、BIG5等多种字符编码 核心功能详解 1. 串口管理 自动检测:自动检测系统所有可用串口 参数配置:波特率、数据位、停止位、校验位等参数可视化配置 历史配置:保存常用设备配置,一键切换 2. 数据通信 实时收发:双向数据实时显示 数据过滤:支持正则表达式过滤显示数据 数据高亮:不同类型数据不同颜色高亮显示 时间戳:每条数据附带精确时间戳 3. 数据分析 数据统计:收发数据量、速率等统计信息 波形显示:数据波形实时显示 协议解析:常见协议自动解析(Modbus、NMEA等) 数据导出:支持CSV、TXT、Excel等多种格式导出 技术架构创新 1. 高性能通信引擎 // NeoSerial通信引擎核心架构 class SerialEngine { public: // 异步非阻塞通信 bool open(const SerialConfig& config); void readAsync(DataCallback callback); void writeAsync(const ByteArray& data); // 流量控制 void setFlowControl(FlowControlType type); // 错误处理 ErrorCode lastError() const; }; 2. 插件化架构 协议插件:可扩展支持新协议 设备插件:特定设备专用插件 分析插件:自定义数据分析插件 导出插件:自定义数据导出格式 3. 跨平台支持 Windows:完整支持COM端口 Linux:支持ttyUSB、ttyS等设备 macOS:支持cu.、tty.设备 嵌入式:支持ARM平台交叉编译 安装与配置 系统要求 操作系统:Windows 7+/Linux 2.6+/macOS 10.12+ 内存:最低512MB,推荐1GB 存储空间:100MB可用空间 快速安装 # Windows安装 NeoSerial_Setup.exe /SILENT # Linux安装 sudo apt-get install neoserial # 或 sudo yum install neoserial # macOS安装 brew install neoserial 首次配置 启动NeoSerial 选择串口:从列表中选择要使用的串口 配置参数:设置波特率等通信参数 测试连接:发送测试数据验证连接 使用场景 1. 嵌入式开发调试 # Python脚本示例 import neoserial # 创建串口对象 ser = neoserial.Serial('/dev/ttyUSB0', 115200) # 发送AT命令 ser.write('AT+CGMR\r\n') # 读取响应 response = ser.read(timeout=1000) print(f"设备响应: {response}") # 自动解析响应 if ser.parse_response(response): print("命令执行成功") else: print("命令执行失败") 2. 工业设备监控 PLC通信:与PLC设备进行数据交换 传感器采集:采集温度、压力等传感器数据 设备控制:发送控制指令到执行机构 3. 物联网设备管理 设备配置:配置物联网设备参数 固件升级:通过串口升级设备固件 日志收集:收集设备运行日志 4. 教学与实验 通信原理教学:直观展示串口通信过程 协议分析实验:分析各种通信协议 故障排查练习:模拟各种通信故障 高级功能 1. 脚本自动化 // JavaScript自动化脚本 const neo = require('neoserial'); // 自动化测试脚本 async function runTest() { const port = await neo.openPort('COM3', { baudRate: 9600, dataBits: 8, stopBits: 1, parity: 'none' }); // 发送测试序列 const tests = [ {command: 'AT', expected: 'OK'}, {command: 'AT+CSQ', expected: /\+CSQ:/}, {command: 'AT+CGSN', expected: /\d+/} ]; for (const test of tests) { const response = await port.sendCommand(test.command); if (test.expected.test(response)) { console.log(`✓ ${test.command} 测试通过`); } else { console.log(`✗ ${test.command} 测试失败`); } } await port.close(); } 2. 数据记录与回放 会话记录:完整记录通信会话 数据回放:回放记录的通信过程 比较分析:比较不同会话的数据差异 3. 远程访问 Web界面:通过浏览器远程访问 API接口:RESTful API控制串口 团队协作:多人同时监控同一串口 性能优化 1. 内存优化 零拷贝技术:减少数据复制开销 内存池:预分配内存,减少动态分配 数据压缩:大容量数据实时压缩 2. CPU优化 事件驱动:基于事件的高效处理 多核利用:充分利用多核CPU性能 异步IO:非阻塞IO操作 3. 网络优化 数据缓冲:智能数据缓冲策略 流量控制:自适应流量控制算法 错误恢复:快速错误检测与恢复 安全特性 1. 访问控制 权限管理:多级用户权限控制 操作审计:完整记录所有操作 会话加密:敏感会话数据加密 2. 数据安全 数据加密:支持AES加密传输 完整性校验:数据完整性验证 防篡改:防止数据被恶意篡改 3. 系统安全 沙箱运行:插件在沙箱中运行 资源限制:限制插件资源使用 安全更新:自动安全更新机制 实际应用案例 案例1:智能家居网关调试 某智能家居公司使用NeoSerial调试Zigbee网关: - 调试效率:调试时间从2天缩短到2小时 - 问题发现:提前发现硬件兼容性问题 - 成本节约:减少30%的售后支持成本 案例2:工业机器人通信 某机器人制造商使用NeoSerial调试机器人控制器: - 通信稳定性:通信成功率从95%提升到99.9% - 调试精度:精确到毫秒级的时序调试 - 生产效率:生产线调试时间减少50% 案例3:医疗设备维护 某医院使用NeoSerial维护医疗设备: - 设备可用性:设备正常运行时间提升20% - 维护效率:故障排查时间减少70% - 安全性:确保医疗设备通信安全 与传统工具对比 特性 传统串口工具 NeoSerial 优势 用户界面 命令行/简单GUI 现代化GUI +300% 协议支持 基本协议 扩展协议支持 +200% 数据分析 基本显示 高级分析功能 +400% 自动化 有限脚本 完整脚本支持 +500% 跨平台 平台特定 真正跨平台 +100% 性能 一般 优化性能 +150% 未来发展方向 1. 人工智能集成 智能故障诊断:AI自动诊断通信问题 预测性维护:预测设备通信故障 自适应优化:根据使用习惯自动优化配置 2. 云端协同 云端配置同步:多设备配置云端同步 远程协作:专家远程协助调试 知识库共享:故障解决方案共享 3. 生态扩展 更多硬件支持:支持更多串口硬件 行业解决方案:特定行业定制版本 教育版本:针对教学场景优化 总结 NeoSerial代表了串口通信工具的发展方向——在保持传统串口通信可靠性的基础上,通过现代化软件工程方法大幅提升用户体验和功能丰富度。它不仅是一个工具,更是一个完整的串口通信解决方案平台。 对于嵌入式开发者、工业自动化工程师、物联网开发者等专业人士来说,NeoSerial能够显著提升工作效率,降低工作复杂度,是现代串口通信工作的理想选择。 随着物联网和工业4.0的深入发展,串口通信技术将继续发挥重要作用,而NeoSerial将持续演进,为用户提供更加强大、智能、易用的串口通信体验。 关键词:NeoSerial, 串口通信, 串口工具, 设备调试, 嵌入式开发, 工业自动化 分类:技术文章 标签:NeoSerial, 串口通信, 调试工具, 嵌入式, 物联网, 自动化 --- ### 261. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 NeoModbus:新一代工业物联网通信工具全面解析 引言 在工业自动化领域,Modbus协议作为最广泛应用的通信标准,已经服务了工业界数十年。然而,随着工业物联网(IIoT)的快速发展,传统Modbus工具在功能、性能和用户体验方面逐渐显现出局限性。NeoModbus应运而生,作为新一代Modbus通信工具,它重新定义了工业设备通信的标准。 NeoModbus的核心特性 1. 现代化用户界面 NeoModbus摒弃了传统工具的复杂命令行界面,采用了直观的图形化操作界面: - 拖拽式设备配置:通过简单的拖拽操作完成设备连接配置 - 实时数据可视化:数据以图表形式实时展示,支持多种图表类型 - 多窗口管理:支持同时监控多个设备,界面布局可自定义 2. 增强的协议支持 除了标准的Modbus RTU/TCP协议外,NeoModbus还支持: - Modbus ASCII:兼容传统ASCII格式通信 - Modbus Plus:支持高速工业网络 - 自定义协议扩展:用户可自定义协议解析规则 3. 智能化功能 自动设备发现:自动扫描网络中的Modbus设备 智能寄存器映射:自动识别寄存器类型和数据类型 异常检测与报警:实时监控通信状态,异常时自动报警 技术架构创新 1. 高性能通信引擎 NeoModbus采用异步非阻塞通信架构: - 多线程并发处理:支持同时与数百个设备通信 - 通信优化算法:智能调度通信请求,减少网络延迟 - 断线重连机制:网络异常时自动重连,保证通信连续性 2. 数据持久化存储 历史数据记录:完整记录所有通信数据 数据压缩存储:采用高效压缩算法,节省存储空间 快速数据检索:支持按时间、设备、寄存器等多维度查询 3. 安全增强 通信加密:支持TLS/SSL加密通信 访问控制:多级权限管理,确保操作安全 操作审计:完整记录所有操作日志 应用场景 1. 设备调试与维护 快速设备测试:一键测试设备通信状态 寄存器读写测试:方便调试寄存器配置 批量设备管理:同时管理多个同类设备 2. 数据采集与监控 实时数据采集:高频率采集设备数据 数据趋势分析:分析设备运行趋势 异常预警:提前发现设备异常 3. 系统集成 API接口:提供RESTful API,方便系统集成 数据导出:支持CSV、Excel、JSON等多种格式 第三方集成:与SCADA、MES等系统无缝集成 安装与配置 系统要求 操作系统:Windows 10/11, Linux, macOS 内存:最低4GB,推荐8GB 存储空间:500MB可用空间 安装步骤 下载安装包:从官网下载对应系统版本的安装包 运行安装程序:按照向导完成安装 首次配置:启动后配置基本参数 添加设备:通过设备发现或手动添加设备 快速开始 # 启动NeoModbus ./neomodbus start # 扫描网络设备 ./neomodbus scan --network 192.168.1.0/24 # 连接设备 ./neomodbus connect --device 192.168.1.100 --port 502 使用案例 案例1:工厂设备监控 某制造企业使用NeoModbus监控生产线上的100台PLC设备: - 实施前:需要3名工程师手动监控,响应延迟大 - 实施后:1名工程师即可监控所有设备,实时报警 - 效果:设备故障响应时间从2小时缩短到10分钟 案例2:能源管理系统 某商业建筑使用NeoModbus采集能源数据: - 采集点:电表、水表、空调系统等200个采集点 - 数据频率:每5分钟采集一次 - 节能效果:通过数据分析,实现15%的能源节约 案例3:实验室设备集成 某研究机构使用NeoModbus集成多种实验设备: - 设备类型:温度控制器、压力传感器、流量计等 - 数据整合:统一数据格式,便于分析 - 研究效率:数据采集效率提升300% 高级功能 1. 脚本自动化 NeoModbus支持Python脚本自动化: from neomodbus import Client # 创建客户端 client = Client('192.168.1.100', 502) # 读取寄存器 data = client.read_holding_registers(0, 10) # 写入寄存器 client.write_single_register(0, 100) # 批量操作 client.batch_operation([ {'type': 'read', 'address': 0, 'count': 5}, {'type': 'write', 'address': 10, 'value': 50} ]) 2. 插件系统 自定义协议插件:开发特定设备的通信插件 数据分析插件:扩展数据分析功能 报表生成插件:定制化报表输出 3. 云端同步 数据云端备份:自动同步数据到云端 远程访问:通过Web界面远程访问 团队协作:多人协同操作同一项目 性能对比 功能 传统工具 NeoModbus 提升幅度 最大连接数 50 500 900% 数据采集频率 1秒 100毫秒 900% 内存占用 200MB 50MB -75% 启动时间 10秒 2秒 -80% 学习曲线 陡峭 平缓 -70% 未来发展方向 1. AI增强 智能故障预测:基于机器学习预测设备故障 自动优化建议:根据运行数据提供优化建议 自适应通信:根据网络状况自动调整通信策略 2. 边缘计算 边缘数据处理:在设备端进行初步数据处理 本地决策:减少云端依赖,提高响应速度 离线运行:网络异常时仍可正常运行 3. 生态扩展 更多协议支持:扩展支持OPC UA、MQTT等协议 硬件适配:支持更多硬件平台 行业解决方案:针对特定行业的定制化方案 总结 NeoModbus作为新一代工业物联网通信工具,不仅在性能上大幅超越传统工具,更重要的是在用户体验、功能扩展和系统集成方面实现了质的飞跃。它代表了工业通信工具的发展方向——更加智能、更加易用、更加强大。 对于工业自动化领域的从业者来说,NeoModbus不仅是一个工具,更是一个生产力平台。它能够显著提升工作效率,降低运维成本,为工业物联网的发展提供坚实的技术支撑。 随着工业4.0和智能制造的深入推进,NeoModbus将继续演进,为工业自动化领域带来更多创新和价值。 关键词:NeoModbus, 工业物联网, Modbus工具, 设备通信, 数据采集, 工业自动化 分类:技术文章 标签:NeoModbus, 工业物联网, Modbus, 通信工具, 自动化 --- ### 262. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 甲方(授权方):用户(以下简称 “您”) 乙方(被授权方)::北京创科慧仁科技有限公司 一、授权目的 为保障 [应用名称](以下简称 “本应用”)核心功能正常运行,向您提供安全、便捷的服务,您同意授予我方相应的隐私权限。我方承诺严格遵循《中华人民共和国个人信息保护法》《网络安全法》等法律法规,仅在约定范围内使用您的信息,绝不超范围收集、滥用或泄露。 二、授权范围及使用方式 基础必要权限 设备信息权限:授权我方获取您的设备型号、操作系统版本、设备识别码(如 IMEI、OAID),用于适配应用功能、保障账户安全及统计设备使用情况,不会关联您的个人身份信息。 网络权限:授权我方使用您的网络连接(Wi-Fi / 移动数据),用于数据传输、功能更新及服务交互,传输过程将采用加密技术保障安全。 可选功能权限(您可自主开启 / 关闭) 存储权限:仅当您需要使用文件上传、数据备份、缓存清理等功能时授权,我方仅读取 / 写入与应用相关的文件,不会访问您设备中的其他私人文件(如照片、通讯录备份等)。 位置权限:仅当您使用定位相关功能(如附近服务、区域化推荐)时授权,您可选择 “仅在使用时允许” 或 “始终允许”,关闭后不影响应用基础功能使用,我方不会持续追踪您的位置信息。 相机 / 麦克风权限:仅当您需要使用扫码登录、视频互动、语音输入等功能时授权,权限开启后仅在您主动触发相关功能时采集数据,采集完成后即时加密存储或按需销毁,不会擅自录制或留存。 权限使用限制 我方仅在本应用运行期间使用授权权限,应用退出后台后(除您主动设置的后台运行功能外),将停止权限调用; 所有授权权限仅用于本应用提供的服务,不会转让给第三方,除非获得您的明确同意或法律规定的情形。 三、用户权利 您有权在应用 “设置 - 隐私权限” 中查看所有已授权 / 未授权的权限,并自主开启、关闭或撤销相应权限,关闭权限不会影响您使用应用的基础功能(特殊功能除外)。 您有权要求我方说明权限使用的具体场景、目的及数据处理方式,如需了解更多信息,可通过应用内客服渠道联系我方。 如您发现我方存在超范围使用权限、泄露您隐私信息的行为,有权要求我方立即整改,并保留追究法律责任的权利。 四、责任声明 因您自主开启权限、提供信息或第三方非法获取导致的隐私泄露,我方不承担责任; 我方会定期更新安全防护技术,保障权限使用及数据存储的安全性,但因不可抗力、网络攻击等非我方可控因素导致的损失,我方将在法律规定范围内承担相应责任; 如因法律法规调整或服务功能升级需要变更授权范围,我方将提前通过应用弹窗、公告等方式通知您,您有权选择是否同意,不同意变更的,可停止使用相关功能或卸载应用。 五、其他条款 本协议自您首次开启任一权限或使用本应用相关功能时生效,长期有效,直至您卸载应用或书面通知我方终止授权; 本协议的解释及争议解决均适用中华人民共和国法律,如双方发生争议,应协商解决;协商不成的,提交我方所在地有管辖权的人民法院诉讼解决; 您在使用本应用过程中,如对本授权协议有任何疑问或建议,可通过 [客服电话 / 邮箱 / 应用内客服] 联系我方。 --- ### 263. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在物联网技术深度渗透的当下,智能家居已从单品控制迈向全系统联动的新阶段。本智能家居解决方案依托稳定可靠的云平台架构,实现照明、安防、能源、暖通、门窗、花园六大子系统的智能化、自动化协同管理。通过手机APP、WEB端、PAD端等多终端适配,家庭成员可随时随地掌控家居状态,让智慧生活触手可及。 一、六大应用系统,覆盖全场景需求 1. 照明系统:光影随心,节能环保系统支持全屋灯光的智能调控,用户可通过触摸面板、手机远程、定时任务等多种方式控制开关、筒灯、射灯等设备。独特的"离家模式"支持长按任意开关关闭所有灯光,告别逐一检查的繁琐。色彩与亮度调节功能满足会客、观影、睡眠等不同场景氛围需求,智能联动功能让灯光与窗帘、影音系统协同响应,打造沉浸式体验。 2. 安防报警系统:全天候守护,防患于未然安防系统整合门磁传感器、烟雾探测器、监控摄像头、红外探测器等设备,构建立体防护网络。门磁实时监测门窗开闭状态,烟雾探测器秒级响应火灾险情,监控支持移动侦测与远程查看。当触发报警时,系统立即推送消息至所有家庭成员手机,并联动灯光闪烁、声音警示,实现主动防御。 3. 能源管理系统:精细计量,绿色低碳通过智能墙壁插座与插卡取电装置,系统可精确监测每个用电设备的能耗数据。支持定时开关、待机自动断电等功能,有效杜绝"隐形耗电"。管理员可查看历史用电报表,识别高耗能设备,优化用电习惯,实现节能降耗目标。 4. 暖通舒适系统:恒温恒湿,健康宜居温湿度传感器实时采集室内环境数据,与空气净化器、风扇、空调、地暖等暖通设备智能联动。夏季自动开启制冷与除湿,冬季提前预热房间,空气质量下降时自动启动净化器,始终保持舒适健康的居住环境。 5. 门窗管理系统:自动开合,安全便捷电动窗帘、智能门锁、车库门等设备支持远程控制与状态反馈。早晨定时自动拉开窗帘唤醒阳光;风雨天气自动关闭窗户;归家时车库门感应开启,同时联动玄关灯光亮起。门窗状态异常时,系统及时预警,防止忘关或非法闯入。 6. 花园管理系统:自动灌溉,轻松养护针对别墅或庭院场景,系统支持花园灯光、灌溉设备的智能管理。根据土壤湿度传感器数据自动浇水,避免植物缺水或过度灌溉;花园灯光可按日落时间自动亮起,营造诗意氛围。 二、核心功能亮点 多终端协同管控:支持手机、平板、电脑等多设备登录,UI界面自适应匹配,操作体验一致流畅。无论身处何地,一键即可查看家中状态、控制设备运行。 智能场景联动:用户可自定义联动规则,实现"一键触发,多设备响应"。例如:启动"睡眠模式"时,自动关闭灯光、窗帘,调低空调温度,启动安防布防;开启"回家模式"时,自动解锁门禁、开启客厅灯光、播放背景音乐。 定时与远程控制:所有设备均支持定时任务设置,可按工作日、节假日灵活配置。远程控制功能让忘关电器、临时开门等场景不再焦虑,真正实现"家随身行"。 多账号权限管理:系统支持家庭成员多账号登录,管理员可为不同成员设置差异化操作权限。例如:父母拥有全部权限,子女可控制灯光与窗帘但无法修改安防设置,访客仅可临时控制指定设备。多账号可同时在线,共同守护家庭安全。 三、广泛应用场景 该解决方案凭借高度的灵活性与扩展性,已在多个领域成功落地: 智能家居:为别墅、公寓提供全宅智能化升级,提升居住品质与安全感。 智慧酒店:客人通过微信或APP实现自助入住、客房设备控制,酒店方通过插卡取电与能耗管理降低运营成本。 智慧办公:定时开关灯光与空调,联动门禁与会议系统,打造高效节能的办公环境。 学校教育:集中管理教室照明与风扇,结合安防系统保障校园安全,支持分区域权限管理。 四、结语 智能家居的本质,是让科技服务于人的舒适与安全。本解决方案通过统一的云平台打通设备孤岛,以智能联动替代重复操作,用精细管理降低能源浪费,借权限分配满足家庭共治需求。无论是追求品质生活的家庭用户,还是注重运维效率的商业客户,均可基于此方案构建安全、便捷、绿色的智慧空间,开启真正的"无感"智能生活新篇章。 --- ### 264. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 安防监控系统作为智能化楼宇的核心基础设施,通过"层层设防、严密监控、综合管理"的架构体系,将周边防盗报警、闭路电视监控、电子防盗报警、楼宇对讲、门禁控制及巡更管理六大子系统深度融合,构建起全方位、立体化的安全防护网络。以下将结合实际需求,详细阐述该系统在多元场景下的部署方案与应用价值。 一、智慧住宅小区场景 场景特征:人口密集、出入频繁、安全需求多样,需兼顾便利性与防护性。 系统部署与联动: 周界第一道防线:小区围墙安装热感式红外线探测器与智能摄像机,实现24小时移动侦测与越界报警。当红外探测器触发入侵警报时,监控中心平台自动弹出现场画面,启动声光警告,并同步推送至安保人员移动终端。 单元门第二道防线:楼宇对讲系统与门禁系统联动,业主可通过可视对讲机确认访客身份,远程开启单元门;人脸识别门禁支持业主"无感通行",访客则需临时授权登记,所有出入记录实时上传至平台。 户内第三道防线:家庭报警器通过智能传感器对门窗、阳台、重要房间布防。夜间或外出模式下,一旦检测到异常开启或人体活动,立即触发本地报警并向业主手机与监控中心发送警情信息。 巡逻第四道防线:保安人员手持电子巡更牌,按预设路线打卡巡逻。平台实时追踪巡逻轨迹,漏巡、迟巡自动预警,确保防控无死角。 典型应用:有效防止外来人员随意进出、入室盗窃、高空抛物追溯、老人儿童异常出入预警等。 二、商业综合体场景 场景特征:人流量大、业态复杂、营业时间长,需重点保障公共区域安全与商户财产安全。 系统部署与联动: 全域可视化管理:闭路电视监控系统覆盖停车场、电梯厅、走廊、收银台等关键区域,采用智能数字图像运动跟踪技术,自动识别人员聚集、滞留、奔跑等异常行为,实现全自动预警。 分级门禁管控:办公区域与商业区域隔离,通过门禁系统实现员工、商户、顾客的分级授权管理;财务室、监控中心等重点部位采用"门禁+密码+ biometric"多重验证,操作记录全程留痕。 重点防护联动:金店、珠宝柜等高风险商户部署电子防盗报警系统,玻璃破碎探测器与震动传感器与监控中心联动,触发报警后摄像机自动转向预置位录像,形成完整证据链。 安保效能优化:电子巡更系统规范巡逻频次与路线,尤其在闭店后夜间巡逻中,确保每个楼层、消防通道按时巡查,防范火灾、盗窃等风险。 典型应用:客流统计分析、商户联防联动、夜间布防自动切换、突发事件快速定位与处置。 三、产业园区/企业园区场景 场景特征:占地面积广、周界绵长、夜间值守薄弱,需强化边界防护与内部管控。 系统部署与联动: 周界严密防范:园区外围采用红外对射探测器与智能跟踪球机组合,形成虚拟电子围墙,支持越界侦测、区域入侵、徘徊检测等智能分析,报警弹窗可联动警灯、警号及就近摄像机追踪拍摄。 人车分流管理:车辆出入口通过车牌识别系统自动放行内部车辆,访客车辆需预约登记;人员通道设置门禁闸机,员工刷脸通行,外来人员通过访客管理与楼宇对讲系统确认后临时授权。 生产区域安全:车间、仓库等重点区域部署热感式红外线探测器与烟雾传感器,夜间无人状态下进入布防模式;机器视觉摄像机可监测人员未佩戴安全帽、违规越界等不安全行为。 巡更压实责任:针对园区范围广的特点,设置多条巡更路线与必查点位,巡更数据实时上传,管理人员可通过平台远程监督巡逻质量,防范保安睡岗、脱岗。 典型应用:物资防盗、安全生产监管、访客全流程追溯、夜间无人值守自动化。 四、教育/医疗等公共建筑场景 场景特征:人员密集且弱势群体集中,安全责任重大,需快速应急响应。 系统部署与联动: 出入口智能管控:学校大门、医院门诊楼设置一体化门禁与测温摄像机,实现"人脸识别+体温检测+健康码核验"三合一通行,异常自动拦截并报警。 重点部位监护:学校操场、楼梯口、医院药房、收费处部署高清监控与紧急报警按钮,一键触发可实现"报警+喊话+录像"同步响应,震慑不法行为。 宿舍/病房管理:学生宿舍、住院部采用楼宇对讲与门禁联动,夜间定时锁闭,护士站、宿管中心可远程开门并查看对讲视频,保障人员安全。 安保巡逻可视化:保安巡逻轨迹在平台实时呈现,遇到突发事件可一键上报位置与现场画面,指挥中心快速调度增援。 典型应用:学生防走失、医患纠纷防范、危险品区域管控、应急疏散指挥。 五、智慧社区综合治理场景 场景特征:多系统、多数据、多业务融合,需实现从单点防控到全域智治的升级。 系统部署与联动: 平台一体化集成:将视频监控、门禁、报警、巡更、对讲等子系统接入统一的安防监控系统平台,打破信息孤岛,实现"一个平台、一张地图、一键调度"。 数据智能化分析:平台对各类设备产生的报警数据、出入记录、巡更轨迹进行大数据分析,自动生成安全态势报告,识别高频报警点位与风险时段,指导精准布防。 多部门协同联动:平台可与公安、消防、物业管理系统对接,重大警情实现一键上报、多方联动,提升处置效率。 便民服务融合:楼宇对讲与社区APP打通,业主可远程为访客开门、查看家周边监控、接收安全提醒,实现"安全+服务"双提升。 典型应用:社区安全态势感知、群防群治协同、精细化物业管理、居民安全感满意度提升。 总结 安防监控系统的核心价值在于通过子系统间的深度联动与平台化集中管理,将传统的被动响应升级为主动预警、从事后追溯转向事前防范。无论是住宅小区、商业综合体,还是产业园区、公共建筑,均能通过"探测-监控-报警-处置-记录"的闭环管理,构建起"点、线、面、体"四位一体的立体防护体系,真正实现"防患于未然"的安全目标。 --- ### 265. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文系统阐述智能玻璃温室大棚监控系统的技术架构与功能实现。系统集成环境监测、土壤墒情、遮阳通风、湿帘降温、水肥一体化、补光调控、CO₂管理、视频监控等八大子系统,通过多协议通讯网络与边缘计算技术,实现温室环境的精准感知、智能决策与自动化控制。配套手机APP、PC平台、监控大屏、LED显示屏等多终端管理界面,支持远程控制与现场手动双重保障,为现代农业提供可复制、可推广的工厂化种植模式,显著提升农产品品质与经济效益。 一、玻璃温室大棚发展与应用价值 随着我国设施农业基础设施建设的持续推进和国家对高效种植业的投入加大,智能玻璃温室大棚在农业生产基地与示范园区得到广泛应用。玻璃温室具有外观美观、档次高的视觉优势,采用全钢架结构设计,抗风雪能力强,使用寿命可达25年以上。其内部操作空间大,支持大面积连栋布局,适宜开展工厂化、规模化生产作业,可实现全自动化管理监控。 南北区域应用差异化明显:北方地区主要作为育苗温室、无土栽培、高端药材种植、花卉培育、生态餐厅及观光旅游综合体;南方地区则作为全年果蔬生产型温室使用。玻璃温室的高透光性为作物生长提供充足光照,但也带来夏季过热、冬季保温的挑战,亟需智能化监控系统实现环境精准调控。 二、系统整体架构与配套设备 智能玻璃温室大棚监控系统采用分层分布式架构,集成九大功能模块:温室环境监测系统、土壤墒情监测系统、遮阳系统、通风管理系统、湿帘降温系统、水肥一体化系统、补光系统、CO₂调控系统、视频监控系统。 核心配套设备包括: 环境监测传感器:空气温湿度、光照度、CO₂浓度传感器(支持有线485或无线LORA通讯) 土壤传感器:土壤温湿度、PH、EC传感器,多点分布式部署 执行机构:内外遮阳电机、顶/侧通风窗、湿帘水泵、风机、水肥一体机、补光灯、CO₂发生器 控制核心:物联网智能监控柜,内置PLC逻辑控制器与边缘计算模块 显示终端:手机APP、PC监控平台、监控中心大屏、现场LED显示屏 系统通过聚英农业云平台实现数据汇聚与策略下发,最大限度提高机械化与智能化程度,实现农业生产工艺的可复制性,构建工厂化种植经济模式。 配图建议:系统架构图。中央为核心玻璃温室3D模型,四周辐射状连接九大子系统图标,每个子系统标注关键设备。底部为"智能监控柜",向上通过4G/5G/WiFi连接"云平台"。整体呈星型拓扑,背景为现代化农业园区航拍图。 三、环境监测子系统详解 温室环境监测采用工业级物联网传感器,关键指标包括: 温度范围:-40℃~80℃,精度±0.5℃ 湿度范围:0~100%RH,精度±3% 光照度:0-200000Lux,精度±5% CO₂浓度:0-5000ppm,精度±50ppm 传感器分布于温室内部各监测区域,通过LORA无线或RS485有线方式与监控柜通讯,数据实时传输至云平台。数据刷新频率3秒/次,存储频率1分钟/次,形成完整的环境数据库。 系统支持35个节点同时监测,覆盖不同高度(冠层、中层、地面)与位置(南侧、北侧、中央),为精细化分区调控提供数据支撑。 四、土壤墒情监测与水肥联动 土壤墒情监测是精准灌溉的核心依据,系统配置三类传感器: 土壤温湿度传感器:监测耕层含水量,防止干旱或积水 土壤PH传感器:监测酸碱度,指导肥料配比调整 土壤EC传感器:监测电导率,反映盐分含量与肥力状况 传感器按每500㎡部署1套的标准分布,数据通过水肥一体机实现联动: 当土壤湿度低于设定阈值(如40%),自动开启电磁阀灌溉 当PH/EC值偏离作物适宜范围,自动调整施肥机配比 支持循环浇灌模式,避免单次过量灌溉 系统实现全天候不间断监测,数据通过GPRS/4G远程传输至监控中心数据库,为土壤质量保护与提升提供科学依据。 五、遮阳与通风管理系统 遮阳系统是玻璃温室夏季降温的关键: 外遮阳:采用黑色遮阳网,可阻挡70-85%太阳辐射,降低室内温度3-5℃ 内遮阳:采用铝箔反射幕,冬季夜间反射红外线,减少热量散失,节能30%以上 系统根据室外光照度传感器与室内温湿度自动调控: 夏季光照>50000Lux且温度>30℃时自动展开 冬季夜间自动闭合保温,白天根据光照需求调整开度 支持冬夏定时模式,实现全自动化 通风管理系统包括顶窗、侧窗两种方式: 自然通风:利用热压差原理,顶部开窗排出热空气,侧窗补充新鲜空气 强制通风:配合湿帘系统,风机负压抽风,实现快速换气 系统支持雨天自动关窗、大风天自动锁定,保护温室结构安全。 六、湿帘降温与水肥一体化系统 湿帘降温系统利用水蒸发吸热原理,是夏季高效降温方案: 工作原理:水泵将水送至湿帘顶部,水沿波纹状纤维表面下流,风机负压抽风,热空气穿过湿帘时水分蒸发吸热,降温效率可达70-80% 联动控制:当温度>35℃且湿度<70%时自动启动,温度降至28℃自动停止 节能优势:相比空调制冷,能耗降低80%以上 水肥一体化系统实现精准水肥管理: 精准配比:根据土壤EC/PH值与作物生长阶段,自动调配氮磷钾比例 定时定量:支持按时间、按流量、按面积多种灌溉模式 循环过滤:配置砂石过滤器与网式过滤器,防止滴灌带堵塞 系统支持手动按键、触摸屏、远程APP三种控制方式,确保灵活性与应急能力。 七、补光与CO₂调控系统 补光系统用于光照不足季节的产量保障: 光源选择:LED植物生长灯(红蓝光谱配比可调),节能60%以上 智能控制:根据光照度传感器与作物光周期需求自动开关 时段设置:可设定日出前、日落后的补充照明时长,支持光周期调控 CO₂调控系统提升光合效率: 浓度目标:维持800-1200ppm,可提升光合速率30-50% 调控方式:CO₂发生器或钢瓶供气,与通风系统联动避免浪费 安全保护:当浓度>2000ppm自动报警并启动强制通风 两系统协同工作,阴雨天自动补光+增施CO₂,保障作物持续高效生长。 八、视频监控与多端显示系统 视频监控系统实现生产可视化: 摄像头部署:出入口、关键设备区、作物生长区全覆盖 品牌兼容:支持海康威视、萤石云主流网络摄像头接入 功能融合:在监控界面分屏显示视频画面与环境数据,实现"数据+视频"双重验证 监控显示方式多样: 手机APP:随时随地远程监控,支持多账号管理,权限分配灵活 PC监控平台:WEB端适用于监控中心,可投放大屏,减少交互操作,示范效果好 监控中心大屏:清晰查看实时数据与视频画面,适合园区级集中管理 LED显示屏:温室外部或内部高处悬挂,防尘防雨,示范显示效果好 所有终端数据多端同步刷新,确保信息一致性。 九、远程控制与现场手动双重保障 系统提供三级控制模式,确保可靠性与灵活性: 1. 远程控制:通过手机APP或电脑监控平台实时查看环境数据,手动控制风机、湿帘、天窗、水泵等设备的开关启停。支持批量控制与定时任务设置,降低人工管理成本。 2. 现场手动控制:保留传统人工控制方式,便于应急管理与巡更。智能监控柜提供: 8寸组态屏触摸控制:图形化界面,一键操作 手动按键控制:物理开关,确保极端情况下可靠控制控制范围覆盖所有被控设备:阀门、水泵、天窗、湿帘、卷帘、风机、灯光等。 3. 自动控制工艺:系统以农作物生产工艺为指导,基于PLC智能自控功能与物联网平台,实现全生长阶段的无人化自动调控。控制策略包括: 时间触发:按作物生长周期设置季节模式 阈值触发:传感器数据超限自动响应 组合逻辑:多条件判断实现复杂工艺 十、云平台管理核心功能 1. 组态场景展示:平台通过实际场景动态展示水肥过程每个环节,数据与动画结合,生动真实。用户可自定义工艺图,上传现场布局,实现"数字孪生"。 2. 数据记录分析:所有环境参数与设备状态数据自动存储三年,曲线可放大缩小,支持分钟级精度查询,为工艺改进提供数据支撑。 3. 数据报表导出:支持按日/周/月生成报表,可导出Excel格式,便于存档与分析。 4. 设备集中监控管理:GIS地图显示所有温室位置与状态,支持一键进入单棚监控界面,实现百棚级集中管理。 5. 智能报警通知:环境参数超限、设备故障、通讯中断时,通过APP推送、微信公众号、监控平台语音等方式主动通知管理员,支持多级报警与责任人分配。 6. 用户权限管理:支持"一对多管理"(一个用户管多个大棚)、"多对一协作"(多用户管一个大棚),提供管理员、操作员、观察员三级权限,责任划分明确。 十一、生产数字模型与工艺可复制性 系统核心目标是生成农作物栽培工艺文件,实现规模化复制: 数据采集积累:记录作物全生育期环境数据与水肥控制参数 工艺模型提炼:通过大数据分析,提炼最优生长曲线与控制策略 标准化输出:生成包含温度、湿度、光照、CO₂、水肥配方的工艺文件 规模化推广:将工艺文件批量下发至新温室,快速复制成功经验 该模式使农业生产从"经验依赖"转向"标准驱动",大幅提升新园区投产速度与产品一致性。 十二、系统核心优势与实施效益 核心优势: 全自动化:从监测到控制全链路无人值守 高可靠性:IP68防护+断网脱机运行+手动备份三重保障 工艺可复制:数字模型实现快速规模化推广 灵活扩展:模块化设计,节点可随时增加 多端协同:手机/PC/大屏/LED数据实时同步 实施效益: 增产10-20%:最优环境控制提升光合效率 节水节肥30-40%:精准灌溉与施肥减少浪费 节电25-35%:智能遮阳与通风降低能耗 人力成本降低60%:远程集中管理减少现场人员 风险损失减少70%:实时预警避免极端天气损失 投资回报周期2-3年:综合效益显著高于传统温室 --- ### 266. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文系统阐述智慧农业云平台的架构设计与核心功能,平台通过多协议通讯网络实现温室环境数据实时采集与设备远程控制,集成边缘计算、智能联动、云组态等先进技术,构建覆盖环境监测、精准调控、数据分析、视频监控的全链条管理体系。平台支持脱机运行与云端协同,提供私有化部署与开放API接口,为现代农业生产提供高可靠、低功耗、易扩展的数字化基础设施,推动农业生产向标准化、智能化、高效化转型。 一、现代农业数字化管理需求 传统农业生产面临劳动力老龄化、环境调控粗放、管理效率低下、数据利用率不足等系统性挑战。智慧农业云平台以物联网技术为核心,通过传感器网络、无线通讯与边缘计算的深度融合,实现生产环境的分钟级监测、秒级响应、自动化调控。平台不仅解决人力短缺问题,更通过数据积累与工艺优化,推动农业生产从"经验驱动"转向"数据驱动",构建可复制、可推广的标准化生产模式。 二、系统通讯架构设计 平台采用云-网-端分层分布式架构,支持以太网、WiFi、4G、5G等多种通讯方式自由切换,适应不同现场条件: 云端层:农业物联网云平台,提供WEB平台、PC端软件、安卓/iOS APP、微信小程序等多终端访问,支持监控室大屏集中显示,所有软件终身免费使用 网络层:智能网关实现协议转换与数据汇聚,支持5G/4G全网通(移动/联通/电信)、以太网、WiFi接入,确保数据传输稳定可靠 终端层:现场部署农业智能控制柜,集成空气温湿度传感器、光照度传感器、CO₂传感器、紫外线传感器、风速风向传感器、土壤温湿度/PH/EC传感器等环境监测设备,以及水泵、风机、卷帘机、湿帘、施肥机、补光灯、电磁阀等执行机构 自适应通讯机制:有网络环境采用以太网/WiFi实现高速数据传输,无网络环境自动切换4G/5G移动网络,偏远地区也能稳定接入。网关支持32个终端节点,空旷环境下传输距离达3km。 三、全方位环境监测能力 平台实现两类核心数据采集,覆盖作物生长全要素: 1. 温室环境监测:实时采集空气温度、空气湿度、光照度、CO₂浓度、紫外线强度、风速、风向、大气压力等8项气象参数,数据每3秒刷新、1分钟记录一次,默认云端存储3年,可精确查询任意分钟级数据。 2. 土壤墒情监测:精准监测土壤温度、土壤湿度、PH值、EC值(电导率)等关键指标,通过GPRS/4G无线网络实现远程传输。系统支持全天候不间断监测,监测中心自动接收、自动存储各监测点数据至数据库。 采集设备采用铸铝外壳,IP68防护等级,适应农田高温高湿粉尘环境。部分设备支持电池供电,静态功耗<20μA,续航可达3-5年。 四、智能控制策略体系 平台提供六种灵活的控制模式,实现精细化环境调控与节能优化: 1. 定时/定点模式:支持年/月/日/时/分/秒级时间设置,可精确到0.1秒的延时控制。例如每天8:00、12:00、16:00定时通风,适用于规律性强的日常操作。 2. 昼夜/时段模式:根据白天/夜晚设置不同控制策略,支持点动延时。例如夏季白天高温时段自动开启风机水帘降温,夜间仅保持基础通风,节约能耗。 3. 联动/互锁模式:支持开关量输入联动输出,如红外监测到人员进入自动开门禁;支持输出通道互锁,如电机正转与反转互斥,避免设备损坏。 4. 传感器触发模式:基于环境参数阈值自动控制,如温度≥40℃自动打开风机/卷帘,温度≤33℃自动关闭;湿度≤40%打开电磁阀灌溉,湿度≥75%关闭,实现闭环反馈。 5. 条件组合模式:支持多条件逻辑组合判断,如"早6点-12点时间段内且湿度>60%"时开启风机,"晚6点-10点且温度<30℃"时关闭风机,满足复杂工艺需求。 6. 场景模式:基于时间场景设定循环动作或复杂逻辑,如"第一路动作20分钟后第二路动作10分钟"的循环灌溉策略,适用于水肥一体化管理。 五、边缘计算与DLC逻辑智能自控 平台核心优势在于边缘计算能力,即在本地控制柜实现智能逻辑运算,无需完全依赖云端,确保控制实时性与可靠性: 环境调控DLC逻辑:结合农作物生长季节与栽培工艺要求,设置温湿度触发阈值,实现自动控温调湿。例如夏季模式自动联动遮阳网、风机、水帘;冬季模式根据作物耐寒性设置卷帘采光时长,保证通风与光照平衡。 智能卷帘系统:根据室外气象数据自动控制。下雨时自动收起卷帘防雨;晴天自动打开卷帘补光,增加日照时长;大风天气自动关闭保护棚膜。系统通过气象联动实现真正的"无人值守"。 季节模式配置:预设春夏秋冬四季调控策略,一键切换: 春季:防棚内温度过高,及时通风降湿,促进缓苗 夏季:遮阳、通风、降温调湿联动,防止高温胁迫 秋季:科学灌溉时长管理,保持合理土壤湿度,防止根系缺氧 冬季:保证采光与通风,排除有害气体,提升作物抗逆性 边缘计算确保断网情况下仍能自动执行预设策略,联网后历史数据自动补传,实现"脱机运行、云端管理"的双模保障,系统可用性达99.9%以上。 六、云组态与零代码可视化 平台提供零代码云组态功能,用户可自主构建个性化监控界面,无需编程技能: 动态组态编辑:自由上传现场工艺布局图,拖拽式添加传感器、控制器图标,实时绑定数据通道 通道深度自定义:根据实际设备编辑AI、DI、DO通道名称,设置量程转换公式、单位、小数位数 动态图标库:内置开关、阀门、电机、报警等GIF动画图标,支持用户自主上传动态图,实现设备状态可视化 实时生效:组态配置保存后立即同步至所有终端,手机/电脑/大屏界面统一更新 多屏适配:同一组态自动适配PC大屏、手机竖屏、监控室电视墙等不同显示设备 该功能使农户能够创建与现场完全对应的虚拟孪生系统,实现"所见即所得"的直观管理体验。 七、数据分析与智能报警体系 数据存储与分析:平台默认保存3年历史数据,可精确查询到每分钟记录。数据曲线支持鼠标滚轮放大缩小,便于分析短期波动与长期趋势。所有数据可一键导出为Excel格式,结合边缘计算功能,为栽培工艺改进提供数据指导。 三级智能报警机制: 传感器超限报警:温湿度、CO₂、土壤EC等参数超出预设上下限 设备状态报警:阀门故障、水泵过载、门禁异常、水位上限等 系统运行报警:通讯中断、电压异常、设备离线等 报警支持多渠道推送:APP推送、微信公众号、短信,确保农户第一时间获知。报警阈值可灵活设置,支持延时报警与恢复确认,避免误报干扰。 八、集中管理与视频监控集成 设备集中管理:支持GIS地图定位轮显,所有大棚在地图上标注位置与实时状态,点击即可进入单棚监控界面。支持多设备集中监控,一人可管理上百个温室,大幅提升管理半径。 视频监控深度融合:无缝对接海康威视、萤石云等主流网络摄像头,在监控界面分屏显示视频与数据,实现"数据+视频"双重验证。例如查看卷帘动作时,可同时观察机械运行状态与环境参数变化,确保控制指令准确执行。 账号权限体系:支持灵活的组织架构管理: 一对多管理 :一个管理员管理多个大棚/设备 多对一协作 :多个操作员协同管理同一设备 分级权限:分为管理员(配置权限)、操作员(控制权限)、观察员(查看权限),满足家庭农场、合作社、农业企业不同规模的管理需求 九、私有化部署与二次开发支持 为满足大型农业企业、政府监管平台、科研机构的定制化需求,平台提供私有化部署方案: 定制部署:支持部署在企业自有服务器,定制平台风格、Logo、域名 全功能API接口:提供RESTful API,支持用户开发自有APP、小程序、Web前端,降低80%平台开发难度,减少80%开发工作量 数据主权:企业完全掌控数据存储位置与访问权限,满足数据安全合规要求 系统集成:支持与ERP、MES、农产品溯源、电商销售等第三方系统对接,打通全产业链数据流 该方案既保留了公有云的便捷性,又提供了私有云的可控性,实现"开箱即用"与"深度定制"的平衡。 十、系统核心优势与实施效益 八大核心优势: 安装简便:无线部署,无需复杂布线,施工周期缩短70% 稳定可靠:IP68防护、工业级设计、断网脱机运行,系统可用性99.9% 灵活扩展:积木式模块化设计,测控点可任意增加,单网关支持32节点 智能高效:边缘计算本地响应<100ms,云端策略优化,控制精度达±0.5℃ 成本经济:相比传统PLC系统,综合成本降低60%(布线+人工+维护) 应用广泛:适用于温室大棚、大田灌溉、畜牧养殖、水产养殖、菌菇培育等 数据价值:3年历史数据积累,为AI模型训练与工艺优化提供基础 生态开放:支持私有化部署与API二次开发,构建产业物联网生态 实施效益量化: 节水30%-50%:精准灌溉与墒情监测结合 节电40%以上:智能卷帘与通风优化 人力成本降低70%:远程集中管理 作物增产10-20%:最优环境控制 风险损失减少80%:实时预警与快速响应 十一、典型应用场景与案例 场景1:高端设施蔬菜大棚 部署20个环境监测点与10套执行系统 自动调控温度25±2℃、湿度70±5%、CO₂浓度800-1000ppm 实现番茄增产18%,优品率提升25% 场景2:连栋温室花卉培育 精密控制光照时长14小时/天,强度5000-15000Lux可调 水肥一体化精准灌溉,EC值稳定在1.2-1.8mS/cm 花朵直径增大15%,花期提前3-5天 场景3:畜禽养殖环境控制 监测氨气浓度、温湿度,自动通风换气 冬季保温与通风平衡,降低呼吸道疾病发生率30% 料肉比改善5%,养殖效益显著提升 十二、未来发展方向 智慧农业云平台将持续演进,深度融合AI、大数据、数字孪生技术: AI预测性调控:结合气象预报与历史数据,提前48小时预测环境变化,主动调整参数 作物生长模型:基于机器学习构建不同作物的最优生长曲线,动态优化水肥光热策略 数字孪生大棚:构建虚拟大棚模型,实现仿真优化、故障预演与工艺验证 区块链溯源:将环境数据、农事操作、质检数据上链,提供不可篡改的农产品溯源凭证 产业互联网:连接农资、农机、销售、金融,构建全产业链数字化生态 系统推动农业生产从"自动化"迈向"智能化",为农业现代化2035目标提供核心技术支撑。 --- ### 267. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文全面阐述智慧农业云平台的技术架构与核心功能,系统通过多协议通讯网络实现温室环境数据的实时采集与设备远程控制,集成边缘计算与智能控制策略,为现代农业提供环境监测、精准调控、数据分析一体化的数字化管理平台,推动农业生产向标准化、智能化、高效化转型。 一、现代农业数字化转型需求 传统农业生产依赖人工经验与现场操作,面临劳动力紧缺、环境调控粗放、风险应对能力弱、管理效率低等挑战。随着物联网技术的发展,农业生产正向规模化、集约化、工厂化模式转变,要求对环境参数进行精细化、自动化的实时监测与动态调控。智慧农业云平台通过整合传感技术、无线通讯与边缘计算,构建覆盖种植、养殖全场景的智能管理体系,实现生产过程的精准可控与数据驱动决策。 二、系统通讯架构设计 系统采用云-网-端分层架构,支持以太网、WiFi、4G、5G等多种通讯方式,用户可根据现场条件灵活选择: 云端层:农业物联网云平台,提供WEB端、PC软件、移动端APP(安卓/iOS)多终端访问,支持远程监控室大屏显示 网络层:智能网关实现协议转换与数据汇聚,支持5G/4G全网通、以太网、WiFi接入,确保数据传输稳定可靠 终端层:现场部署智能控制柜,集成温湿度传感器、光照度传感器、CO₂传感器、紫外线传感器、风速风向传感器、土壤温湿度/PH/EC传感器等环境监测设备,以及水泵、风机、卷帘机、湿帘、施肥机、补光灯、电磁阀等执行机构 通讯方式自由选择:有网络环境采用以太网/WiFi实现高速数据传输,无网络环境采用4G/5G移动网络,确保偏远地区也能稳定接入。 三、环境监测与数据采集能力 系统实现两类核心数据采集: 1. 温室环境监测:实时采集空气温度、空气湿度、光照度、CO₂浓度、紫外线强度、风速、风向、大气压力等气象环境参数,数据每3秒刷新,1分钟记录一次,默认保存3年。 2. 土壤墒情监测:精准监测土壤温度、土壤湿度、PH值、EC值(电导率)等关键指标,通过GPRS/4G无线网络实现远程传输,监控中心自动接收并存储至数据库。 采集设备采用铸铝外壳,IP68防护等级,适应农田高温高湿粉尘环境。部分设备支持电池供电,低功耗设计下续航可达3-5年。 四、智能控制策略体系 平台提供五种灵活的控制模式,实现精细化环境调控: 1. 定时/定点模式:支持年/月/日/时/分/秒级时间设置,可精确到0.1秒的延时控制。例如每天8:00、12:00、16:00定时通风。 2. 昼夜/时段模式:根据白天/夜晚设置不同控制策略,支持点动延时。例如夏季白天高温时段自动开启风机水帘降温。 3. 联动/互锁模式:支持开关量输入联动输出,如红外监测控制门禁;支持输出通道互锁,如电机正转与反转互斥,避免冲突。 4. 传感器触发模式:根据环境参数阈值自动控制,如温度≥40℃打开风机/卷帘,温度≤33℃关闭;湿度≤40%打开电磁阀灌溉,湿度≥75%关闭。 5. 条件组合模式:支持多条件逻辑组合,如"早6点-12点且湿度>60%"时开启风机,"晚6点-10点且温度<30℃"时关闭风机。 6. 场景模式:基于时间场景设定复杂循环动作,如第一路动作20分钟后第二路动作10分钟,自动循环。 五、边缘计算与DLC逻辑智能自控 系统核心优势在于边缘计算能力,即在本地控制柜实现智能逻辑运算,无需完全依赖云端: 环境调控DLC逻辑:结合农作物生长季节与工艺要求,设置温湿度触发阈值,实现自动控温调湿。例如夏季模式自动联动遮阳网、风机、水帘;冬季模式根据作物耐寒性设置卷帘采光时长。 智能卷帘系统:根据室外气象数据自动控制。下雨时自动收起卷帘防雨;晴天自动打开卷帘补光,增加日照时长。系统支持"补光卷帘自动打开"、"下雨卷帘自动关闭"等智能判断。 季节模式配置:根据春、夏、秋、冬四季特点预设调控策略: 春季:防棚内温度过高,及时通风降湿 夏季:遮阳、通风、降温调湿联动 秋季:科学灌溉时长管理,防止根系缺氧 冬季:保证采光与通风,排除有害气体 边缘计算确保断网情况下仍能自动执行预设策略,联网后数据自动同步,实现"脱机运行、云端管理"的双模保障。 六、云组态与可视化能力 平台提供零代码云组态功能,用户可自定义监控界面: 动态组态编辑:自主上传设备工艺图,自由拖拽传感器、控制器图标 通道自定义:根据实际设备编辑AI通道名称、DO通道名称,设置量程转换 图标库:内置开关、阀门、电机等动态图标,支持上传GIF动画 一键生成 :组态配置实时生效,手机/电脑端同步刷新 用户无需编程即可构建与现场设备完全对应的可视化监控界面,实现"所见即所得"的操作体验。 七、数据分析与报警体系 数据存储与分析:平台默认保存3年历史数据,可精确查询到每分钟记录。数据曲线支持放大缩小,便于趋势分析。所有数据可导出为Excel格式,为栽培工艺改进提供数据依据。 远程报警机制:提供三级报警推送: 传感器上下限报警:温湿度、CO₂等参数超限 设备状态报警:阀门故障、门禁异常、水位上限等 开关状态报警:设备启停状态变化 报警通过APP推送、微信公众号、短信等多渠道即时送达,确保农户第一时间响应。 八、集中管理与视频监控 设备集中管理:支持地图定位轮显,监控室大屏可实时查看所有大棚状态。支持多设备集中监控,提高管理效率。 视频监控集成:无缝对接海康威视、萤石云等网络摄像头,在监控界面实时查看设备动作反馈与农作物生长状态,实现"数据+视频"双重监控。 账号权限体系:支持一对多设备管理(一个用户管理多个大棚)和多对一账号管理(多个操作员管理同一设备)。提供灵活的权限分配,如管理员、操作员、观察员等角色,满足家庭农场或企业化运营需求。 九、系统优势与核心价值 1. 安装简便:无线部署,无需复杂布线,降低施工成本与周期 2. 稳定可靠:IP68防护等级,工业级设计;支持断网脱机运行,确保生产连续性 3. 灵活扩展:积木式模块化设计,测控点可任意增加,支持大规模组网 4. 智能高效:边缘计算实现本地快速响应,云端实现策略优化与数据挖掘 5. 成本经济:相比传统PLC控制系统,无线方案降低布线成本60%以上,云平台免服务器开发 6. 应用广泛:适用于温室大棚、大田灌溉、畜牧养殖、水产养殖、菌菇培育、花卉药材等众多场景 十、应用案例与效益分析 以100亩温室大棚为例: 节水30-50%:精准灌溉与土壤墒情监测结合,避免过度用水 节电40%以上:智能卷帘与通风系统优化光照与温度,减少人工补光与空调能耗 人力成本降低70%:远程监控与自动控制减少现场巡检频率 作物增产10-20%:最优生长环境提升产量与品质 风险损失减少80%:实时预警与快速响应避免极端天气造成的损失 十一、未来发展方向 智慧农业云平台将持续演进: AI预测性控制:结合气象预报与历史数据,提前48小时调整环境参数 作物生长模型:基于机器学习构建不同作物的最优生长曲线,动态调整策略 数字孪生:构建虚拟大棚模型,实现仿真优化与故障预演 区块链溯源:将环境数据上链,为农产品提供可信溯源凭证 系统将推动农业生产从"经验驱动"向"数据驱动"转型,为农业现代化提供坚实技术支撑。 --- ### 268. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文全面阐述远程温湿度实时监测系统的技术架构与实现方案。系统基于现代测控技术,集成传感器网络、智能控制平台与远程通讯模块,构建总线式、模块化监测体系,实现环境参数的精准采集、实时传输、智能分析与远程控制,为工业生产和家庭生活提供高效可靠的温湿度管理方案。 一、现代测控技术发展背景 传统测试技术主要面向静态测量,难以满足信息化社会对动态参量实时监测的需求。随着电子技术、半导体与计算机技术的成熟,现代测控技术实现了高精度、高灵敏度、高响应速度的连续测量与自动控制。 完整的现代测控过程涵盖五个核心环节:信息采集(传感器)、信息变换传输(中间装置)、信息处理分析(计算机软件)、信息显示记录(外围设备)、信息调节控制(执行装置)。计算机技术与测试技术的深度融合,使各环节产生革命性突破,推动测控技术进入全新发展阶段。 二、系统组成架构 2.1 核心组件说明 系统采用总线结构与模块化设计,各组件既可独立工作,又可灵活组网: 1) 温湿度采集器:采用温敏电阻和高分子湿敏电容,实现高精度温湿度测量,支持智能自动校准。 2) 控制器:接收监测平台指令,精准控制执行机构启停,具备短路保护与抗雷击模块。 3) 执行机构:包括加热器、制冷机、加湿机、除湿机等环境调节设备。 4) 监测平台:系统核心枢纽,连接采集器与上位机。提供液晶显示实时时间、通道号、温湿度值及设备状态(通风/抽湿/故障等),支持32个测量头接入,具备掉电保护功能。 5) 通讯模块:支持RS232、RS485总线或电力载波通讯,实现平台与上位机的数据链路。 6) 计算机管理控制中心:远程实时监控多平台数据,以表格和曲线形式展示,超标值特殊颜色警示;存储历史数据,支持查询、分析与导出。 三、系统核心特性 总线结构:积木式组建,多测控器共用一根电缆,测控点可灵活扩展 液晶显示:实时显示时间、温湿度数据、状态信息及设定值 掉电记忆:内置后备电池,系统参数与数据具备断电保护能力 多协议通讯:支持RS232/485、电力载波等多种有线通讯方式 安全保护:过热保护装置+抗雷击模块,确保系统安全运行 维护简便:模块化设计,扩容性强,维护与组网方便快捷 远程接入:可接入控制中心计算机网络,实现远程集中管理 四、远程测控终端技术特点 远程测控终端(RTU)作为现场核心设备,具备以下技术优势: 宽电压供电:7V-30V宽范围输入,适应复杂供电环境 多接口配置:支持RS232、双路RS485,6路12位AD模拟量输入(0-30V/4-20mA),6路继电器输出,4路光耦IO控制 大容量存储:内置1Mbit-64Mbit SPI-Flash,支持长时间本地数据存储 精准计时:内置RTC实时时钟,掉电自动计时,支持定时唤醒 低功耗设计:高效电源管理,适用于功耗严格场景,延长续航时间 协议兼容:支持标准Modbus协议(ASCII/RTU/TCP)及自定义协议,从机模式支持主动回传 多元传输:支持GPRS/4G移动网络与以太网双模通讯 GPRS模式:断线自动重连,支持6个服务器并发,固定IP/域名解析/APN专网寻址,支持短信配置与电话唤醒 以太网模式:10/100Mbps自适应,支持TCP/UDP/PPP/ICMP/DNS/FTP等协议,支持网络唤醒与远程固件升级 五、以太网通讯技术应用 以太网作为最广泛的局域网技术,在系统中发挥关键作用: 技术成熟:从10Mbps同轴电缆发展到100Mbps/1000Mbps双绞线/光纤技术,交换技术不断创新,已成为局域网络绝对主流 应用广泛:覆盖办公室自动化、证券、校园网、工业控制系统等领域,与综合布线系统完美兼容 成本优势:产品产业化程度高,市场竞争充分,工程造价低廉(智能小区每户增加成本约600-800元) 性能稳定:技术完全成熟,无技术风险,实时性强,性能稳定可靠 在监测系统中,以太网模块实现高速数据接入,适合大数据量传输,节点数理论上无限制,协议可深度定制,支持本地与远程参数配置及固件升级。 六、软件系统设计架构 系统软件采用分布式主从机体系结构,分为上位机监控软件与下位机嵌入式程序: 上位机:负责远程监控、数据分析、历史存储、异常报警与系统配置 下位机:负责实时数据采集、处理、显示与上传 两者通过串口或网络通讯,形成完整的测控闭环。 七、上位机监控软件功能 上位机软件采用模块化设计,核心功能包括: 串行通信:配置通讯参数,建立与下位机的稳定连接 三维可视化:提供3D立体图、曲线走势图、数据表格三种展示方式,直观呈现环境状态 数据存储:实时数据(含最大/最小/平均值)按用户设定间隔存入数据库,支持导出为文本文件 智能查询:支持按时间、通道、数值范围等条件查询实时与历史数据,生成走势曲线 报表打印:按需打印实时数据报表与历史数据报表 异常报警:温湿度超限时触发声光报警,支持阈值灵活设定 系统设置:用户可配置测量间隔、报警上下限、存盘间隔、登录权限等参数 软件包含主程序、接收中断、显示子程序、数据转存四大核心模块,确保系统稳定运行。 八、下位机程序设计逻辑 下位机软件采用实时监控与任务分解机制: 监控模块:统筹报警处理、控制决策、信息显示、命令处理、参数设置与信息输出 核心模块:包括主程序、数据采集子程序、数据处理子程序、数据发送子程序、显示子程序 工作流程:主程序循环调用各子程序,采集模块定时读取传感器数据,处理模块进行滤波与校准,发送模块按协议打包上传,显示模块驱动液晶屏实时呈现。当接收到上位机命令时,中断机制确保快速响应。 九、系统应用价值与总结 远程温湿度监测系统成功解决了远距离通讯关键技术难题,系统分析了传感器特性,归纳了点、线、面、立体四种测量结构。控制策略采用Smith-模糊复合控制算法,对比多种通讯方式后实现了串口与网卡的双重配置,形成完整的软硬件解决方案。 系统不仅为工业生产提供精确的环境测控手段,也为家庭生活舒适度提升创造条件。其模块化、网络化、智能化的设计代表了当前工业测控技术的发展方向,具有广泛的推广价值与应用前景。 --- ### 269. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文深入介绍基于物联网技术的智能农业自控系统,该系统针对温室大棚、养殖场所等场景,通过无线通讯技术实现环境参数远程监测与设备智能控制。系统具备脱机自控能力,即使在断网情况下也能按照预设策略自动运行,有效解决农业劳动力紧缺问题,推动传统农业向规模化、集约化现代产业转型。 一、现代农业转型需求 传统农业依赖人工经验与现场操作,面临劳动力日益紧缺、生产效率受限、自然风险应对能力弱等挑战。智能农业自控系统通过物联网技术,将农业生产从"靠天吃饭"转变为"精准可控",实现生产过程的高度规模化、集约化、工厂化,显著提升生产效率和风险应对能力,使传统农业蜕变为高效率现代产业。 二、系统通讯架构 系统采用云-网-端三层架构实现无缝连接: 云端平台:农业物联网云平台,支持4G/5G全网通、以太网/WiFi接入,终身免费使用 网关层:智能网关实现协议转换与数据汇聚 终端层:各类传感器(温湿度、光照度、CO₂、土壤墒情等)与执行设备(风机、卷帘、水阀、水泵) 农户通过手机APP或电脑软件可不限距离远程控制,数据每分钟刷新一次,确保实时监控。 三、核心功能特点 1. 全方位环境监测 实时采集空气温湿度、土壤温湿度、光照度、CO₂浓度、电压、电流、风速、风向等关键参数,数据每分钟记录一次,形成完整的环境数据库。 2. 远程设备控制 随时随地通过手机或电脑手动控制风机、卷帘、水阀、水泵等设备,即时响应环境变化需求。 3. 智能脱机自控 系统最大亮点是断网自主运行能力。农户可预设生产工艺和控制策略,设备按照设定逻辑(定时、反馈、循环等)自动执行,不受网络状况影响。例如: 定时模式:每天8:00、12:00、16:00自动通风 模拟量触发:温度超过40℃自动打开卷帘,低于25℃自动关闭 四、智能工作模式 系统支持多种灵活的控制策略组合: 定时控制模式:可设置每天多个固定时间点执行特定操作,如定时灌溉、定时通风,适合规律性强的生产场景。 模拟量触发模式:基于环境参数阈值自动触发,如温度超限开启风机、湿度不足启动水阀,实现精准环境调控。 循环控制模式:按设定周期重复执行操作,适用于需间歇性控制的场景。 脱机自控模式:所有策略预先下载至本地控制器,断网后完全自主运行,联网后数据自动补传。 五、自动化运行优势 系统实现了全流程自动化管理: 预警响应:环境参数异常时,系统自动通过手机推送报警,便于农户及时处理突发事件 策略优化:基于历史数据曲线分析,农户可不断优化控制策略,提升生产工艺水平 数据积累:长期数据存储为农业大数据分析、模块化大规模生产提供依据 节能高效:精准控制避免资源浪费,降低生产成本 六、典型应用场景 系统广泛适用于各类农业生产场景: 种植业:蔬菜大棚、花卉培育、药材种植,需要精细环境控制养殖业:畜禽舍环境调控,保障动物健康生长畜牧业:牧场自动化饮水、通风系统管理水产养殖:水质参数监测与增氧设备控制 每个场景均可通过模块化配置快速部署,无需复杂布线。 七、软件功能平台 配套软件平台提供终身免费的核心功能: 数据可视化:实时显示环境参数曲线,支持分钟级数据查询,历史数据可追溯分析 多端协同:提供PC版软件、安卓APP、iOS APP,数据实时同步,操作界面统一 智能报警:支持自定义报警阈值,通过微信、短信、APP消息等多渠道推送 远程配置:所有控制策略可远程设置,实时生效,状态同步刷新 数据导出:支持Excel格式导出历史数据,便于科研分析与生产管理 八、系统实施效益 人力成本降低70%:自动化控制大幅减少人工巡检与操作 生产风险降低60%:实时监控与预警有效应对突发环境变化 资源节约30%以上:精准灌溉与通风降低水电消耗 产量品质提升15%:最优环境控制促进作物健康生长 管理效率提升80%:远程集中管理多个大棚,数据驱动决策 九、未来发展方向 智能农业自控系统将深度融合人工智能与大数据技术,实现: 预测性控制:基于气象预报与历史数据,提前调整环境参数 作物生长模型:结合作物生理特性,动态优化灌溉施肥策略 能耗优化:AI算法实现设备运行节能调度 标准化生产:数据积累推动农业生产的模块化与标准化 系统将持续演进,为智慧农业提供更安全、更智能、更高效的解决方案。 --- ### 270. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文详细介绍基于LORA无线扩频技术开发的大田智能灌溉系统,该系统专为解决传统农业灌溉中供电难、布线成本高、维护困难等痛点而设计。采用锂电池供电、IP68防护等级、3km无线通讯距离,实现精准化、自动化、远程化的现代农业灌溉管理。 一、行业痛点分析 传统大田农业灌溉面临多重挑战:供电线路铺设成本昂贵,且在农忙季节易被机械挖断;室外环境复杂,设备需承受高温高湿、粉尘侵蚀;布线工程量大,维护成本高昂;设备易被破坏,且故障排查困难。 二、系统通讯架构 系统采用分层分布式架构: 云端层:农业物联网云平台,支持4G/5G全网通、以太网/WiFi多模式接入 网关层:LORA网关覆盖半径3km,支持32个终端设备接入 终端层:LORA无线阀门控制器、环境采集器、土壤墒情采集器 通讯方式灵活适配:无网络环境采用4G通讯(支持7模14频),有网络环境采用以太网/WiFi,确保数据实时传输。 三、核心功能特点 1. 实时监测与数据分析 系统通过LORA无线采集器监测空气温湿度、光照度、土壤温度/湿度、液位、压力等参数,数据每分钟上传一次,云平台自动生成环境参数曲线图。 2. 低功耗长续航 设备采用功率型锂电池(3.6V-12.8V规格),静态功耗<20μA,配合低功耗设计,续航可达3-5年。IP68铸铝外壳适应高温高湿粉尘环境。 3. 远程智能控制 支持定时灌溉、循环灌溉、远程手动三种模式。用户通过电脑平台或手机APP即可实时查看数据、控制阀门、调整策略。 四、系统工作原理 系统工作流程: 数据采集:LORA采集终端实时监测土壤墒情和环境参数 智能决策:当土壤水分下降至设定阈值,云平台自动触发灌溉策略 精准执行:LORA无线阀门控制器接收指令,开启对应地块阀门(支持DN15-250管径) 状态反馈:阀门状态、电池电压、信号强度实时回传,形成闭环控制 五、八大核心竞争力 1. 灌溉面积广 单网关覆盖3km半径,支持上百节点,一次可灌溉几十上百亩农田。 2. 精细灌溉 结合作物生长阶段需水规律,基于多参数实现定制化灌溉策略。 3. 智能控制 不受时空限制,APP远程控制,支持手动/自动模式切换。 4. 安装简便 无线部署,无需拉线,云平台一键添加绑定设备。 5. 延伸性强 可无缝对接农业气象监测、土壤墒情、农产品溯源、泵房监控等系统。 6. 应用多样 适用于大田农业、温室大棚、果园茶园、花卉药材、市政绿化等场景。 7. 示警功能 环境超限、设备异常、电压过低等即时推送微信/短信/APP通知。 8. 数据处理 历史数据自动存储,支持Excel导出与溯源分析。 六、应用场景展示 系统广泛应用于: 农业滴灌:精准水肥一体化 园林园艺:自动化景观灌溉 草坪浇水:高尔夫球场、运动场 绿化工程:道路两侧植被养护 家庭花园:智能庭院管理 喷灌作业:大田作物均匀灌溉 七、设备选型指南 设备型号供电电压适用管径阀门类型续航时长应用场景3.6V控制器3.6V 14AHDN15/25电动球阀3-5年小区域精准灌溉7.2V控制器7.2V 14AHDN50-150脉冲阀门3-5年中等规模农田10.8V控制器10.8V 28AHDN125/150电动蝶阀3-5年大型管网系统12.8V控制器12.8V 14AHDN200/250电动蝶阀3-5年大规模大田 所有设备均采用470-510MHz无线频率,空旷传输距离3km,IP68防护等级,支持短路保护。 八、系统实施效益 节水30%-50%:精准灌溉减少无效用水 节电40%以上:无需长距离供电线路 人力成本降低70%:远程自动化管理 作物增产10%-20%:科学灌溉提升品质 九、结语 LORA无线智能灌溉系统以低功耗、长距离、高可靠为核心,彻底解决了大田农业灌溉的布线难题,为现代农业数字化转型提供了经济高效的解决方案。系统将持续迭代,融合AI算法实现预测性灌溉,助力智慧农业全面发展。 --- ### 271. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、技术概述:现代农业的数字化革命 薄膜连栋温室作为近十年快速发展的新型温室结构,凭借其重量轻、骨架用料少、遮光率低、造价经济、使用寿命长等显著优势,已成为全球设施农业的主流形态。其环境调控能力已接近玻璃温室水平,而性价比远超后者。 智能监控系统在此基础上,集成现代物联网传感技术、无线通讯、智能控制终端、环境调控装备及云端管理平台,构建起覆盖"感知-传输-决策-执行"全链条的自动化管理体系。系统可根据不同作物的生长工艺需求,预设环境参数阈值,实现全天候无人值守运行,为作物创造最佳生长微环境。 二、系统核心架构与组成 2.1 分层架构设计 感知层:部署CO₂、光照度、空气温湿度、土壤墒情等多参数传感器,实时采集温室微环境数据,采样频率1-60秒可调。 传输层:支持RS485有线与LoRa无线双模通讯。LoRa技术视距传输达3公里,穿透性强,单网关可覆盖32个终端节点,满足大型连栋温室群组网需求。 控制层:智能控制柜内置PLC逻辑控制器与边缘计算模块,支持本地策略脱机执行,断网时可维持72小时自动运行。 应用层:基于云平台的可视化监控中心,支持多终端访问、数据分析、策略配置与远程诊断。 2.2 关键传感器技术参数 传感器类型测量范围精度应用场景CO₂浓度0-2000ppm±(50ppm+3%读数)光合速率评估、通风时机判断光照度0-18.8万lux0.45lux遮阳网开闭决策、补光控制空气温度-40~120℃±0.3℃加热/降温系统触发空气湿度0-100%RH±3.0%病害预警、除湿控制土壤温度-30~70℃±0.2℃根系活力评估、地热线控制土壤湿度0-100%±2.0%精准灌溉阈值依据 三、环境调控设备系统详解 3.1 电动卷膜器通风系统 工作原理:通过顶部与侧部卷膜器的升降,实现自然通风换气。夏季排除余热湿气,冬季调节空气成分,稀释有害气体(如氨气、乙烯)。 技术参数: 电机功率:40-60W 卷膜长度:≤120m/套 运行速度:4-6m/min 限位控制:电子行程开关,精度±5cm 控制逻辑:当室内温度高于设定值2℃时,自动开启顶部卷膜器;当湿度超过85%RH时,同步开启侧部通风口,形成对流。 3.2 遮阳网与内遮荫幕系统 外遮阳系统:电机驱动传动轴,带动驱动杆平行移动展开幕布,展开面积达80%时触发限位开关。夏季反射多余阳光,降低室温3-5℃;冬季夜间闭合减少红外辐射散热。 内遮荫幕(保温幕): 夏季模式:反射型铝箔幕布,遮阳率50-75%,使光照强度降至作物饱和点,避免日灼 冬季模式:闭孔型保温幕布,热阻值0.5-1.0m²·K/W,节能率达30-40% 控制策略:根据光照度传感器实时数据,设定三级开启阈值(如>5万lux开启50%,>8万lux开启75%,>12万lux全开);结合时间表,在上午10点至下午4点间自动启用。 3.3 湿帘风机强制降温系统 核心原理:利用水蒸发吸热效应,空气流经湿帘时与水膜热湿交换,温度可降低5-12℃。 系统配置: 湿帘:厚度100mm/150mm蜂窝纸芯,过帘风速1.5-2.0m/s 水泵:流量3-5m³/h,每平米湿帘配10L/min水量 风机:流量30,000-50,000m³/h,形成负压区 联动控制:当温度>30℃时启动水泵淋湿湿帘,延迟30秒后开启风机;温度降至26℃时先停风机,再停水泵,避免吹水雾入室内。 。 3.4 移动式雾喷系统 应用场景:育苗温室增湿、降温与叶面追肥。每跨设置2-3趟,电磁阀独立控制。 技术参数: 雾化压力:0.3-0.5MPa 微粒直径:50-100μm 流量:10-30L/h/趟 控制周期:每20分钟喷雾2分钟(可调) 四、智能控制柜核心技术 控制柜作为系统"大脑",集成以下核心功能: 多协议数据采集:支持Modbus RTU(RS485)、LoRaWAN、4-20mA模拟量输入,可同时接入≥16路传感器。 智能算法引擎: 模糊控制:处理温湿度耦合关系,避免设备频繁启停 预测控制:基于历史数据预测未来2小时温度趋势,提前调节 连锁保护:加热与通风互锁,防止能源浪费 PLC自控功能:内置梯形图编程环境,用户可自定义逻辑,如"CO₂>1200ppm且光照<2万lux时,不开风机"。 手动应急:控制面板保留物理按钮,网络故障时可现场手动操作,确保生产安全。 五、物联网监控平台功能矩阵 5.1 生产工艺数字化管理 核心突破:将资深农艺师的经验转化为可复制的数字模型。 实施步骤: 参数预设:针对不同作物(番茄、黄瓜、草莓等),预置各生长阶段(苗期、花期、果期)的温湿度、光照、CO₂目标值 动态调整:云平台根据积温、光照累积量自动切换工艺阶段 策略复用:模型可一键复制到新温室,实现标准化种植 案例:番茄生产工艺 缓苗期:白天25-28℃,夜间18-20℃,遮光率30% 开花期:白天23-25℃,夜间15-18℃,CO₂施肥至800ppm 膨果期:白天26-30℃,加大温差至8-10℃,光照>3万lux 5.2 可视化监控界面 组态画面:2D/3D温室模型,实时显示各区域传感器数值、设备运行状态(绿色=运行,灰色=停止,红色=故障) 趋势分析:支持多参数同屏对比,如温度曲线与加热器运行状态叠加分析 报表中心:自动生成日报、周报,包含平均温度、累计用电量、设备运行时长等KPI 5.3 多级报警体系 预警规则: 一级报警:温度超过设定值±2℃,APP推送 二级报警:传感器离线>15分钟,短信通知 三级报警:加热器启动后1小时温度未升,电话+微信告警 故障诊断知识库:平台记录故障现象与解决方案,形成案例库,辅助快速排查。 六、应用场景与效益分析 6.1 设施蔬菜种植 痛点:传统大棚依赖人工经验,环境波动大,病害频发。 解决方案:部署智能监控系统后,环境参数波动范围缩小50%,霜霉病发病率降低60%,亩均增产15-20%,能源成本下降25%。 数据示例:山东某黄瓜基地,冬季夜间温度稳定在18±0.5℃,湿度控制在85%以下,结瓜期延长20天。 6.2 育苗工厂 需求:幼苗对环境极为敏感,需精确控制。 配置:增加雾喷系统与补光灯,平台设置"小时级"工艺参数。湿度控制精度±3%RH,温度±0.5℃,成苗率提升至95%以上。 6.3 花卉与中药材种植 应用:蝴蝶兰需昼夜温差>8℃,铁皮石斛需高湿遮阴环境。系统通过"昼夜模式"自动切换参数,满足高端作物严苛要求。 6.4 农业科研与教育 价值:提供长期稳定的环境数据,支持科研实验重复性。数据开放API接口,便于接入高校科研平台。 七、安装部署与运维要点 7.1 传感器布设规范 高度标准:空气温湿度传感器距地面1.5m,CO₂传感器距地面0.5m(作物冠层),光照度传感器置于无遮挡处 密度原则:每500-1000平米部署1套环境传感器,每200平米部署1个土壤墒情点 校准周期:每年至少1次标准器校准,确保数据准确性 7.2 设备维护计划 维护项周期操作要点湿帘清洁每2周冲洗水垢,更换循环水风机轴承每季度加注润滑脂,检查皮带张力传感器表面每月软布擦拭,避免遮挡控制柜除尘每半年断电状态下用压缩空气吹扫系统软件持续定期更新固件,修复漏洞 八、经济性评估与生态价值 8.1 投资回报分析 以1公顷连栋温室为例: 项目金额(万元)占比传感器及控制柜3.535%环境调控设备4.040%软件平台与安装1.515%调试与培训1.010%合计10.0100% 收益测算: 增产收益:年增收2-3万元(10-15%增产) 节能收益:年节电约1.5万度,节省1.2万元 节药收益:病害减少,农药成本下降0.5万元 人力节省:减少1名专职管理人员,年省3万元 投资回收期:约2-3年,设备设计寿命>10年。 8.2 生态效益 节水:采用精准灌溉,节水40-50% 减药:环境可控减少病害,农药使用减少30% 节能:优化加热/降温时机,能耗降低25-35% 碳汇:作物生长健壮,固碳能力提升 九、未来发展趋势 9.1 技术演进方向 AI生长模型:深度学习作物光合、呼吸、蒸腾模型,动态优化环境参数,较固定阈值节能10-15%。 数字孪生温室:构建虚拟温室,模拟不同调控策略效果,在数字空间验证后再执行,降低试错成本。 机器人协同:与授粉机器人、采摘机器人共享环境数据,实现"环境-作业"协同调度。 区块链溯源:环境数据上链,不可篡改,支撑绿色农产品认证与品牌溢价。 9.2 标准化与政策支持 符合《设施农业物联网技术规范》(NY/T 4056-2021) 纳入国家数字农业创新应用基地建设项目补贴目录 数据接口标准化,支持接入省部级农业大数据平台 十、实施建议与风险规避 10.1 选型要点 通讯方式:连片温室优先LoRa,分散地块选4G;网络不稳定区域启用本地存储+断点续传 供电保障:关键设备配置UPS,市电+太阳能双电源 扩展预留:控制柜预留20%IO接口,便于后续增加传感器 10.2 风险与对策 风险影响对策传感器漂移控制偏差定期校准,设置数据合理性校验网络中断失控风险本地策略固化,手动应急开关极端天气设备损坏IP67防护,结构加固,购买农业保险操作失误参数错误权限分级,关键操作二次确认 结语:开启工厂化种植新时代 薄膜连栋温室智能监控系统通过"数据驱动决策、设备精准执行",将传统经验种植升级为可量化、可复制、可优化的工厂化生产模式。它不仅提升了作物产量与品质,更推动了农业从劳动密集型向技术密集型转型。随着技术成熟与成本下降,智能温室必将成为保障"菜篮子"安全、推动乡村振兴的核心引擎。 核心价值:让每一株作物都生长在"量身定制"的环境中,让每一份投入都产生最大效益,让农业成为有技术、有数据、有未来的智慧产业。 --- ### 272. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在传统农业灌溉中,水压不稳、管道爆管、能耗过高、人工依赖等问题长期制约着灌溉效率的提升。智能恒压灌溉系统通过引入变频控制与物联网技术,实现了供水压力的动态精准调控,不仅能根据用水需求自动调节水泵转速,还能与水肥一体化、气象监测等系统深度融合,构建起高效节水的现代化灌溉体系。本文将系统解析该系统的技术架构、核心功能及实践价值。 一、系统工作原理与核心架构 1.1 恒压供水实现机制 系统核心在于通过变频器对水泵电机进行无级调速,构建闭环压力控制系统。压力传感器实时监测管道压力,数据反馈至控制器后与预设阈值比对,动态调整电机转速以维持水压恒定。例如,当多个灌溉区同时开启时,用水量增加导致压力下降,系统自动提升水泵转速;反之则降速运行,避免压力过高。 技术参数示例: 灌溉区高差8米时,所需压力约0.25MPa,对应电机转速900r/min 高差38米时,压力需升至0.55MPa,转速提升至2000r/min 高差48米时,压力达0.65MPa,转速升至3000r/min 这种精准调节模式可消除水锤效应,避免管道因压力突变而爆裂,延长水泵寿命30%以上。 1.2 系统组成要素 典型系统包含以下模块: 变频控制柜:内置PLC控制器与变频器,支持0-50Hz无级调频 水泵机组:离心泵或潜水泵,功率根据灌溉面积选配(1.5kW-15kW) 压力传感单元:4-20mA输出,精度±0.5%FS 数据采集终端:采集压力、液位、流量等数据 智能阀门:电动球阀/蝶阀,支持DN15至DN250管径 云平台:实现远程监控、策略下发与数据分析 二、核心功能特点深度解析 2.1 超长续航与低功耗设计 系统采用LoRa无线扩频技术,终端设备待机功耗仅16微安,发射功耗120毫安。配套大容量锂电池(如12V/20Ah),在每日收发10次数据频次下,理论续航可达5-8年。相比传统GPRS方案(月均功耗>500mA),电池更换周期延长3-5倍,大幅降低偏远地区的运维成本。 2.2 即装即用的部署灵活性 软硬件全中文界面设计,支持手机APP扫码自动配置。采用无线透传模式,无需布线,在复杂地形(山地、丘陵)、不规则地块中可快速部署。单套系统从开箱到上线最快仅需2小时,适配家庭农场至大型合作社的多样化需求。 2.3 工业级可靠性保障 变频控制柜防护等级达IP65,防水防尘;电路板涂覆三防漆,适应-40℃~+70℃环境温度。水泵电机选用IE3高效节能等级,绝缘等级F级。系统在盐雾、高湿、强紫外线等恶劣环境下可连续运行,MTBF(平均无故障时间)>50,000小时。 2.4 超远通讯覆盖能力 LoRa通讯视距可达3公里,城市环境穿透2-3堵混凝土墙。采用多信道跳频技术,避免同频干扰,支持32个终端设备并发通信。实际测试中,在3000亩连片农田中仅需1个网关即可全覆盖,比传统ZigBee方案减少70%中继节点。 2.5 强大扩容与兼容性 系统支持接入32路无线采集终端(如土壤墒情、气象站)和32路控制终端(阀门、水泵)。兼容脉冲阀(电磁阀)、球阀、蝶阀等多种执行机构,覆盖从滴灌、喷灌到大型喷枪等不同应用场景。后期扩容时只需扫码添加新设备,无需改造现有架构。 2.6 多维度智能灌溉策略 平台提供三种核心灌溉模式: 定时灌溉模式:按作物生育期设定开启时间、持续时长。例如番茄开花期设定每日8:00-8:30、16:00-16:30两次灌溉,每次20分钟。 循环灌溉模式:适用于需间歇供水的场景,如"开15分钟、停30分钟、循环5次",防止土壤板结与径流损失。 联动灌溉模式:基于土壤湿度阈值自动触发。当10cm深度湿度低于45%时自动开启,达到65%时停止;或结合气象数据,在降雨前24小时暂停灌溉,节省用水15-20%。 三、水肥一体化深度集成 系统可无缝接入水肥一体机,实现"灌溉+施肥"双重精准控制。管理人员在云平台设置施肥时间与浓度策略,设备自动将可溶性肥料按预设比例注入灌溉管道。 典型施肥方案: 叶面追肥:晴日上午9:00-10:00,EC值1.2mS/cm,持续15分钟 根部追肥:每次灌溉尾声注入,防止肥料流失 循环周期:每7天一次高钾肥(膨果期),每15天一次微量元素 水肥机支持4路母液通道(氮、磷、钾、微量元素),通过文丘里管或注肥泵精确配比,误差±5%。管理人员可随时通过手机APP切换自动/手动模式,查看实时EC/pH值。 四、云平台远程管理功能 4.1 多端协同控制 支持手机APP、电脑软件、网页端三端同步,管理人员身处异地也能实时监控: 压力曲线:24小时管道压力波动图,识别异常泄漏 能耗统计:每月用电量、节电率(通常节电30-50%) 操作日志:记录所有手动/自动操作,便于追溯 4.2 故障预警与诊断 压力异常报警:压力持续低于设定值20%,提示管道泄漏或水泵故障 电流过载保护:电机电流超1.5倍额定值时自动停机,推送报警 液位监测联动:水池液位低于30%自动停泵,防止空转损坏 五、典型应用场景 5.1 设施农业大棚 在蔬菜大棚中,系统与温湿度传感器联动,当棚内温度>30℃时自动开启微喷降温;结合土壤湿度传感器,实现"关键时期精准补水"。某番茄基地应用后,亩均节水120方,增产800公斤。 5.2 大田作物种植 适用于玉米、小麦等旱作农业。通过土壤墒情监测网络,按"轻旱-中旱-重旱"三级预警自动启动移动喷灌设备。新疆某兵团应用后,灌溉用工减少80%,水分利用效率提高35%。 5.3 果园经济作物 山地果园地形复杂,传统漫灌效率低。系统采用"分区轮灌"策略,每区独立阀门控制,结合LoRa无线技术解决布线难题。某柑橘园应用后,裂果率降低60%,糖度提升1.5度。 5.4 市政园林与生态修复 城市绿地灌溉需兼顾景观效果与节水要求。系统根据天气预报自动调整策略,雨前暂停、雨后复灌;结合土壤盐分传感器,防止过度灌溉导致盐碱化。某公园年节水超10万吨,维护成本下降45%。 六、经济性与生态效益分析 6.1 投资回报测算 应用场景建设成本(元/亩)年节水收益年节电收益投资回收期大棚滴灌800-1200150-200元80-120元3-4年大田喷灌500-80080-120元50-80元4-5年果园微喷600-1000120-180元60-100元3.5-4.5年 注:收益按水价2.5元/方、电价0.6元/度计算 6.2 生态与社会价值 节水效益:相比传统漫灌节水40-60% 节能效益:变频技术降低能耗30-50% 减碳效益:每亩年减少碳排放约15kg 劳动力解放:1000亩农田节约管理用工2-3人 七、发展趋势与未来展望 7.1 技术融合方向 AI智能决策:基于历史数据训练LSTM神经网络模型,预测未来7天需水量,提前优化灌溉计划。 5G+边缘计算:在变频柜中部署AI芯片,实现"端-边-云"协同,断网时本地策略自动执行。 数字孪生灌溉:构建农田三维土壤水分运移模型,可视化展示灌溉水渗透过程,指导精准滴头布置。 7.2 标准化与政策支持 随着高标准农田建设推进,恒压灌溉系统已纳入多项扶持政策: 国家节水行动方案明确推广智能灌溉 部分省份提供30-50%设备补贴 农业水价综合改革中,精准计量数据作为水权交易依据 八、实施建议与注意事项 前期规划:精确测绘地块高程,分区计算压力需求,避免"一刀切"设计 设备选型:水泵流量应大于总设计流量的120%,扬程需预留10%余量 通讯测试:安装前使用便携式LoRa信号测试仪,确保网关覆盖无死角 水质处理:浑浊度>10NTU时,必须加装砂石过滤器+叠片过滤器,防止滴头堵塞 运维培训:对一线操作人员进行云平台使用、故障排查培训,建立应急响应机制 结语:迈向智慧灌溉新纪元 智能恒压灌溉系统通过"感知-决策-执行"的闭环控制,将传统凭经验的灌溉模式转变为数据驱动的精准作业。它不仅是一项节水技术,更是农业数字化转型的关键基础设施。随着设备成本持续下降与功能集成度提升,预计未来5年内将成为规模化农业的标准配置,为粮食安全与生态可持续发展提供坚实的技术支撑。 核心价值总结:在保障作物产量的前提下,实现水资源利用效率最大化,让每一滴水都发挥价值,让每块田地都拥有智慧的"灌溉大脑"。 --- ### 273. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 引言:精准农业时代的"环境哨兵" 在数字化农业转型浪潮中,气象环境监测系统已成为现代农业基础设施的核心组成部分。该系统通过物联网技术将农田微观环境与宏观气象数据无缝衔接,构建起覆盖"天-地-空"的多维感知网络。相较于传统人工观测,自动化监测系统实现了从小时级到秒级的数据粒度跃升,为病虫害预警、精准灌溉、作物模型优化等智慧农业应用提供高质量数据底座。 一、系统架构分层解析 1.1 三层架构设计理念 系统严格遵循物联网标准架构,分为感知层、传输层、应用层: 感知层部署于田间一线,由多功能气象站、各类传感器节点及边缘计算单元构成。气象站内置主控芯片,负责协议转换与数据预处理,支持RS485总线挂载多达32个传感器,形成分布式采集网络。 传输层采用"有线+无线"双模冗余设计。无线侧支持4G/5G全网通(7模14频)、NB-IoT窄带物联网及LoRaWAN低功耗广域网;有线侧提供标准RJ45以太网与2.4GHz WiFi接入。系统智能切换最优通讯路径,确保数据传输可靠性达99.5%以上。 应用层依托云计算平台,实现数据存储、分析与可视化。平台采用微服务架构,支持10万级设备并发接入,数据响应延迟低于100毫秒。 二、核心设备组成与技术规格 2.1 多要素气象站主机 气象站采用IP67防水等级机箱,内置工业级ARM Cortex-A7处理器,运行Linux嵌入式系统。核心功能包括: 数据采集频率:1Hz~0.1Hz可调,默认1分钟上传一次打包数据 存储容量:内置8GB eMMC,支持离线存储30天数据 扩展接口:4路RS485、2路4-20mA输入、1路Modbus TCP 工作温宽:-40℃~+85℃,适应极端气候 2.2 传感器矩阵配置 系统支持模块化传感器选配,典型配置方案: 大气环境组: 温湿度一体传感器(瑞士Sensirion芯片):温度精度±0.2℃@-10~50℃,湿度±2%RH 大气压力传感器(压阻式):量程300-1100hPa,分辨率0.1hPa 光照度传感器(余弦校正):光谱范围400-700nm,量程0-200000Lux 紫外线传感器:测量UV-A/B波段,0-15mW/cm² 气象动力组: 风速传感器(超声波或机械式):启动风速0.1m/s,抗风能力75m/s 风向传感器(磁电式):16方位分辨率,无死区设计 雨量传感器(翻斗式):分辨率0.2mm/斗,精度±2% 空气质量组: PM2.5/PM10传感器(激光散射法):最小可测粒径0.3μm,寿命>3年 CO₂传感器(NDIR非分散红外):量程0-5000ppm,精度±50ppm 负氧离子检测仪(电容式):量程0-50000个/cm³,分辨率1个 土壤墒情组: 土壤温度传感器(PT1000):-20~80℃,精度±0.5℃ 土壤湿度传感器(FDR频域反射):0-100%VWC,精度±3% 土壤pH值传感器:量程3-10pH,精度±0.1pH(选配) 【图片生成建议】 :创作一张"传感器全家福"产品展示图,采用俯视45度角排列,包含风速风向仪、百叶箱、雨量计、太阳能板、立杆支架等,每个组件标注名称和核心参数,背景为透明或浅色渐变。 三、通讯技术深度解析 3.1 多模自适应通讯策略 系统内置智能路由算法,优先选择低功耗模式: 4G Cat.1模式:日常数据传输,功耗<100mA NB-IoT模式:地下室、山区等弱信号场景,穿透能力强 LoRa模式:自建局域网,单网关覆盖5-10公里农田 以太网模式:设施农业大棚内,稳定可靠 3.2 数据加密与安全机制 传输层采用TLS 1.3加密协议,防止数据劫持 设备接入需通过双向证书认证 支持VPN专网接入,满足涉密单位需求 四、云平台功能矩阵 4.1 数据可视化引擎 平台提供三种数据呈现方式: 实时监控:3秒级刷新曲线,支持多设备同屏对比 历史回溯:1分钟粒度数据查询,可缩放时间轴 报表中心:自动生成日报、周报、月报,支持PDF/Excel导出 4.2 智能报警体系 支持五级预警机制: 阈值触发:单参数超限报警(如温度>35℃) 组合条件:多参数逻辑判断(如湿度>80%且温度<15℃) 趋势预警:变化率异常(如1小时内气压下降>5hPa) 设备离线:心跳包丢失超过15分钟 人工巡视:自定义定时提醒 报警推送渠道:APP弹窗、微信公众号、短信、语音电话、Webhook接口对接企业微信/钉钉。 4.3 组态化配置 用户可自定义: 设备命名规则:支持批量导入设备名称 量程映射:4-20mA对应物理量的非线性转换 公式计算:如露点温度、饱和水汽压等衍生指标 场景模式:一键切换"育苗期"、"开花期"、"采收期"等参数阈值方案 五、供电系统方案选型指南 5.1 交流供电方案 适用场景:设施农业大棚、园区管理站、有市电接入的农田 配置清单: AC220V转DC12V稳压电源(5A/10A可选) 电源防雷器(标称放电电流20kA) 1.5mm²铠装电缆,地埋深度≥0.7米 配电箱IP65防护等级 优势:成本低、维护简单、无续航焦虑劣势:布线工程量大、雷击风险、电网波动影响 5.2 太阳能供电方案 配置参数: 太阳能板:单晶硅50W/18V,转换效率>18%,寿命>20年 蓄电池:磷酸铁锂12V/40AH,循环寿命>2000次,工作温度-20~60℃ 控制器:MPPT类型,充电效率>95%,带电池BMS管理 续航设计:连续阴雨天可工作7天(按每日耗电20Wh计算) 安装规范: 太阳能板倾角=当地纬度+15°(冬季优化) 朝向正南方向,无遮挡物 立杆安装高度>3米,防止遮光 六、安装部署实施指南 6.1 选址原则 开阔性:风速风向传感器周围10米内无建筑物遮挡 代表性:监测区域典型地块,避免局部小气候干扰 安全性:远离高压线、易积水区域,防盗措施到位 通讯测试:安装前需现场测试信号强度(RSRP>-105dBm) 6.2 立杆安装规范 标准立杆(2.5米/3.5米可选): 基础开挖40×40×50cm混凝土基础 预埋M16地脚螺栓,水平度偏差<2° 立杆垂直度校正后灌浆固定 传感器安装顺序(自下而上):土壤传感器→百叶箱→雨量计→太阳能板→风速风向仪 简易三脚架: 适用于临时监测、科研实验 快速部署时间<30分钟 需配重30kg以上或地钉固定 6.3 LED显示屏部署 技术规格: 点阵尺寸:P10(10mm间距),半户外/全户外型 功耗:平均100W/m²,峰值300W/m² 视角:水平>120°,垂直>60° 亮度:>5000cd/m²,自动光感调节 显示内容编排: 第一行:监测点名称(滚动显示) 第二行:温度 25.6℃ | 湿度 68% 第三行:PM2.5 35μg/m³ | 负氧离子 1800个/cm³ 第四行:更新时间 12-16 14:30 七、数据管理与分析策略 7.1 数据质量控制 系统内置三级数据清洗机制: 物理边界过滤:剔除超量程的异常值 连续性检验:时间序列突变检测(如1分钟内温度变化>5℃) 多源交叉验证:如用大气湿度与土壤湿度相关性辅助判断 数据有效率目标:>98%(按年统计) 7.2 典型农业应用模型 病虫害预警模型: 黄瓜霜霉病:温度15-22℃ + 湿度>85% + 叶面湿润>6小时 蚜虫爆发:温度20-28℃ + 湿度<60% + 风速<3m/s 灌溉决策模型: 土壤湿度下限阈值:田间持水量的60% 蒸散量计算:Penman-Monteith公式,需输入温湿度、风速、辐射数据 霜冻预警模型: 预警条件:气温<2℃ + 风速<2m/s + 晴空辐射(云量<20%) 提前量:2-4小时 。 八、运维管理与维护规范 8.1 日常巡检清单 周期检查项目标准工具每日平台数据在线状态100%在线手机APP每周太阳能板清洁度表面无灰尘、鸟粪软布、清洁剂每月雨量计翻斗清洁无杂物堵塞螺丝刀、清水每季传感器精度验证误差<标称值2倍标准器每年蓄电池容量测试容量>标称80%内阻测试仪 8.2 常见故障排查 现象:温度数据恒定为0℃ 可能原因:传感器接线松动、RS485地址冲突 排查步骤:检查A/B线电压(正常2-3V)、重新扫描设备地址 现象:设备频繁离线 可能原因:SIM卡欠费、天线接触不良、电源电压低 排查步骤:检查信号强度、测量电池电压(>11.5V)、更换天线位置 现象:雨量数据异常偏大 可能原因:昆虫进入翻斗、支架振动干扰 解决措施:加装防虫网、加固立杆基础 九、典型应用场景案例 9.1 设施农业大棚监控 项目背景:100亩连栋温室种植番茄配置方案: 每20亩部署1套标准气象站 增加CO₂传感器(促进光合作用) 土壤墒情传感器5点布设(四角+中心) 采用AC220V供电+UPS备用 应用成效: 病害发生率下降40%(精准预警) 节水30%(按需灌溉) 增产15%(环境优化) 9.2 大田作物监测网络 项目背景:5000亩小麦种植基地配置方案: 网格化部署,每200亩1个监测点 太阳能供电系统 NB-IoT通讯(低功耗广覆盖) 重点监测雨量、土壤湿度、风速 应用成效: 灌溉时机精准度提升50% 倒伏风险提前48小时预警 气象数据支撑农业保险理赔 9.3 现代农业产业园 项目背景:集种植、观光、科研于一体的综合园区配置方案: 主入口设置LED大屏(3m×2m),实时公示环境数据 科研区配置高精度传感器(温度±0.1℃) 联动通风、湿帘、补光等设备,实现自动化控制 十、发展趋势与技术展望 10.1 技术演进方向 融合感知:集成多光谱成像、激光雷达(LiDAR)的三维环境监测,实现作物长势与环境的同步监测。 边缘智能:在气象站端部署轻量化AI模型,实现病虫害的边缘识别,减少云端依赖。 数字孪生:构建农田三维数字模型,实时映射物理环境,支持虚拟仿真实验。 区块链存证:气象数据上链存证,确保数据不可篡改,服务农产品溯源与碳交易。 10.2 标准与规范 遵循《农业气象观测规范(QX/T 45-2007)》 符合《物联网气象数据采集器技术要求(GB/T 33703-2017)》 支持农业物联网标识体系(Ecode) 结语:构建可持续的农业数据生态 农业气象环境监测系统已从单一的数据采集工具,进化为农业生产管理的"神经末梢"。其价值不仅在于实时数据,更在于通过长期积累形成的气候资源数据库,支撑农业区划、品种选育、灾害评估等宏观决策。未来,随着设备成本持续下降与AI分析能力增强,每块农田都将拥有自己的"环境身份证",真正实现"因天制宜、因土施肥"的精准农业愿景。 部署建议:新建项目建议采用"太阳能+4G"标准配置,存量设施优先改造升级,数据平台应选择开放API接口,便于与ERP、溯源系统对接,最大化数据资产价值。 --- ### 274. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、行业痛点 传统供水模式的四大核心难题,制约效率与安全: 传统屋顶水箱 / 高位水池易滋生藻类、虫蚁,二次污染直接威胁用水安全。 人工启停水泵、凭经验调阀门,常出现 “大马拉小车” 或 “小马拉大车”,能耗浪费严重且缩短设备寿命。 爆管、干抽、过压等故障难以及时发现,易引发水淹泵房、电机烧毁,单次维修费动辄数万元。 高层小区、偏远果园、夜间用水等无人值守场景,跑冒滴漏处置滞后,损失持续扩大。 二、系统定位 以 “传感器 + 边缘计算 + 云端协同” 替代人工巡检,打通 “水源 — 泵站 — 管网 — 用水端” 全链路数字化。让水泵跟着用水需求 “精准变频跑”、故障在发生前 “主动预警”、管理在千里之外 “实时可视”,彻底解决传统供水的低效与风险。 三、架构总览 图片说明:自上而下分层展示 “感知层→传输层→边缘层→平台层→应用层”,各层级用不同色块区分(感知层:蓝色 / 传输层:绿色 / 边缘层:橙色 / 平台层:紫色 / 应用层:红色),每个层级标注核心设备(如感知层含液位计、压力变送器等),用带箭头的虚线表示数据流转方向(感知层采集数据→传输层加密传输→边缘层本地运算→平台层多端同步→应用层输出分析报告),底部添加图例说明色块与箭头含义,直观呈现全链路协同逻辑。 感知层:液位计、压力变送器、流量计、温度传感器、电参数模块(覆盖电压、电流、功率、电量),精准捕捉全链路数据。 传输层:支持 4G/5G、以太网、Wi-Fi、LoRa 自组网,采用 MQTT+TLS 加密传输,断网时可缓存 7 天数据。 边缘层:智能变频柜内置 PLC,独立完成 PID 恒压运算、泵组轮换、故障保护,断网状态下仍能自治运行。 平台层:Web、APP、小程序三端数据同步,组态画面一键生成,支持多人分级权限管理。 应用层:面向物业、水务公司、园区管理者,提供能耗分析、漏损评估、泵房健康报告等核心服务。 四、核心功能 图片说明:以圆形闭环流程图呈现,中心标注 “智能供水核心闭环”,外圈按顺时针依次分布 5 个功能节点(数据采集→智能控制→故障保护→分析追溯→视频联动),每个节点用不同形状的图标区分(数据采集:方形 / 智能控制:圆角方形 / 故障保护:三角形 / 分析追溯:梯形 / 视频联动:圆形),节点间用带方向的实线连接,每个节点下方标注关键子功能(如 “数据采集” 下标注 “多源数据融合(液位 / 流量 / 压力 / 电参数)”,“故障保护” 下标注 “缺水停泵 / 超压关阀 / 四通道报警”),闭环外侧用虚线标注 “24h 不间断运行”,体现功能的连续性与协同性。 多源数据融合 水池液位(0–5m,精度 ±1cm)、瞬时流量(0–200m³/h,精度 ±0.5%)、管网压力(0–2.5MPa,精度 ±0.2%),数据采集无死角。 电参数 1s 刷新一次,实时计算能效比 kWh/m³,为节能考核提供直接依据。 全闭环恒压控制 目标压力可通过面板或远程 1s 调节,PID 自整定,稳态误差≤±0.01MPa,用水端压力稳定。 支持 “一拖多” 泵组(2 主 1 备 / 3 主 2 备),先启先停、轮换均等,单泵连续运行超时自动轮休,避免过度损耗。 多重保护策略 进水缺水:液位低于下限 30s 自动停泵,推送 “缺水报警”,防止干抽烧毁电机。 出水超压:压力持续高于上限 5s 逐台减泵,极端情况 0.2s 速关出口电动阀,保护管网不爆管。 电气故障:短路、过流、过压、欠压、缺相、过热均经硬件 + 软件双重判断,通过 APP、微信、短信、电话四通道报警。 能耗与漏损双账本 每小时自动生成能效曲线,流量突降 30% 且电流不变时,标记 “疑似漏损” 并预警。 内置水平衡模型,对比昨日同期、上周同期数据,异常区间红色高亮,辅助快速定位破管位置。 事件追溯 所有启停、压力调整、报警、人工干预记录均带时间戳和操作人账号,支持一键导出 Excel,方便对账核算。 视频联动 接入网络摄像头,报警瞬间自动抓拍 10s 短视频,水淹泵房、非法闯入等情况一目了然。 支持云台远程控制,变焦查看轴承、底座是否渗水、异响,远程可视化巡检。 五、典型场景与效益测算 图片说明:采用分组柱状图,横向 X 轴为 3 个典型场景(高层住宅 / 高尔夫球场 / 农村集中供水),每个场景下分 “改造前”“改造后” 2 组柱子;纵向 Y 轴分左右双轴,左轴为 “能耗 / 水费 / 人工(单位:万元)”,右轴为 “投诉率(单位:%)”。柱子颜色区分(改造前:浅灰色 / 改造后:深蓝色),每个柱子上方标注具体数值(如高层住宅 “改造前能耗” 柱标注 “9.8 万 kWh”,“改造后能耗” 柱标注 “4.1 万 kWh(节电 58%)”),图表右侧添加 “关键效益标注”(如 “节水 32%”“投诉率降 90%”“8 个月回本”),底部标注数据来源(“数据基于实际项目运行 12 个月统计”),清晰对比改造前后的核心效益。 高层住宅(1200 户,33 层) 改造前:工频泵 7.5kW×3 台,年耗电 9.8 万 kWh,水箱清洗 4 次 / 年,人工成本 1.5 万元。 改造后:变频恒压运行(平均频率 38Hz),年耗电 4.1 万 kWh(节电 58%);取消水箱无二次污染,水质投诉为 0;远程值守省 1 名夜班,年省人工 4 万元;综合年省约 7 万元,8 个月收回投入。 高尔夫球场(18 洞,2500 亩) 果岭、球道分 12 个灌溉区,系统根据土壤湿度、气象站蒸发量自动规划泵组输出。 比传统时序控制节水 32%,年省水费 18 万元;草坪品质提升,赛事档期增加 3 场,间接收益 60 万元。 农村集中供水(5000 人村镇) 水源井深 180m,原需专人驻点启停,夜间断水频发。 改造后实现 “水位低→自动启泵→水满停泵”,手机 APP 实时监控,村民扫码缴费;投诉率下降 90%,供水保证率提升至 98%。 六、实施步骤 现场踏勘:测量原泵房尺寸、管径、电源容量,评估增容或止回阀更换需求。 传感器布点:液位计安装于水池顶部,泵出口与最远端各设 1 只压力表,流量计选用插入式免切割型号。 边缘柜安装:支持壁挂或落地安装,防雨防尘设计,预留 30% I/O 冗余,便于后期扩容。 平台配置:导入泵房照片,10min 生成组态画面;设置压力、液位、电流等报警阈值。 策略调试:先手动测试单泵启停,确认转向、压力表数据无误后投入自动模式,观察 24h 压力曲线。 培训交付:提供操作手册与应急流程,建立 24h 值班微信群,前 1 个月每日推送运行日报。 运维回访:每季度远程校准传感器,每年清洗液位计、检查止回阀,设备寿命可延长 30% 以上。 七、常见问题答疑 Q1:断电怎么办? UPS 标配 1kVA/1h,可选配 3h 锂电池包;同时推送 “市电中断” 报警,提醒物业启动柴油发电机,保障供水不中断。 Q2:网络信号差是否影响供水? 边缘柜可完全脱网运行,所有保护逻辑由本地 PLC 独立完成;网络恢复后自动补传数据,保证平台数据完整性。 Q3:后期增加泵或压力分区麻烦吗? I/O 与变频器均为模块化设计,支持插槽式扩容;软件端可复制原泵组参数,30min 即可完成新增泵接入。 Q4:节能效果会不会逐年衰减? 平台会对比同期能效数据,若 kWh/m³ 逐年升高,将提示 “泵效率下降”,建议进行轴承保养或叶轮清理,确保长期节能效果。 八、未来展望 随着碳排放双控与用水总量红线趋严,泵房将成为 “能源 + 水资源” 双控核心节点。系统计划深度融合 AI 负荷预测技术,结合历史用水曲线、天气、节假日信息,提前 24h 预测流量,自动调整开泵时段与台数,削峰填谷降低最大需量电费。同时开放 API 接口,对接水务营收系统、城管大数据平台,为漏损控制、分区计量、阶梯水价提供统一数据底座,让每一滴水、每一度电都有迹可循、有据可依,推动供水行业向 “智慧化、低碳化、无人化” 全面升级。 --- ### 275. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、方案概述 传统农业长期受 “靠天吃饭、凭经验管理” 模式制约,面临水肥利用率低、劳动力成本高企、产量与品质波动大等突出痛点。本方案以 “实时感知 — 边缘决策 — 精准执行 — 数据沉淀” 为核心主线,通过科学布设多参数传感器、智能控制柜、云端协同平台及手机端 APP,全面覆盖温室、大棚、露天基地等多元农业场景,助力实现数字化监测、少人化运营、标准化生产。系统支持 4G/5G、Wi-Fi、以太网、LoRa 混合组网模式,既能通过云端实现集中化管控,也可在本地脱网状态下自主运行,真正做到 “断网不断控”,保障农业生产连续稳定。 二、系统架构 1. 感知层 作为农业生产的 “神经末梢”,感知层全面采集环境、土壤、水体、设备四类关键数据: 环境监测:实时捕捉空气温度、湿度、光照度、CO₂浓度、气压、紫外辐射、PM10 等参数; 土壤监测:深度覆盖多层土壤温度、体积含水率、EC 值(电导率)、PH 值,可按需加装氮磷钾检测探头; 水体监测:针对水培、鱼菜共生场景,监测水位、溶解氧、浊度、PH 值、EC 值; 设备监测:实时掌握水泵电流、风机转速、卷帘开度、电磁阀开关状态。 所有传感器支持 3 秒快速刷新数据,1 分钟自动存储至数据库,默认缓存周期 3 年,数据可直接导出为 Excel 格式,方便后续分析。 2. 传输层 传输层采用 “分层适配、加密保障” 策略:现场优先利用以太网 / Wi-Fi 传输数据,降低流量成本;无有线网络覆盖区域自动切换至 4G/5G;偏远地块可增设 LoRa 自组网中继,最大传输距离达 3 公里。数据包采用 MQTT+TLS 加密协议,支持断点续传,确保数据在传输过程中的完整性与安全性。 3. 边缘决策层(本地控制柜) 本地控制柜作为 “现场大脑”,内置 32 路隔离输入、24 路继电器输出、8 路 4–20 mA 模拟量输出,可直接驱动风机、湿帘、侧窗、卷帘、补光灯、加热器、电磁阀、施肥泵等农业设备,支持三种自治模式: 定时模式:按年月日时分秒精准触发操作,可设置 0.1 秒延时,满足精细化时间控制需求; 条件模式:基于环境参数自动执行动作,如温度≥40℃时开启风机,≤33℃时关闭风机;湿度 > 60% 且时间在 06:00–12:00 时开启顶窗; 场景模式:支持自定义循环逻辑,如 “先喷 10 分钟→停 5 分钟→再喷 10 分钟”,适配复杂农事场景。 边缘脚本可在脱网状态下独立运行,网络恢复后自动同步数据至云端,保障决策不中断。 。 4. 平台层 云端平台是智慧农业的 “中枢管理系统”,具备六大核心能力: 实时监控:支持拖拽式组态画面,可添加 GIF 动画,手机端自动适配显示比例,实现多终端实时查看; 数据曲线:以 1 分钟为数据粒度生成曲线,支持缩放、叠加、对比操作,一键生成 PDF 格式分析报告; 智能报警:覆盖参数上下限、数据突变、设备离线、门禁水浸等多类型报警,通过微信、短信、APP 三重渠道推送提醒; 地图总览:基于电子地图展示多基地分布,用不同颜色标识基地 “运行 / 报警 / 离线” 状态,适配集团化统一管理; 权限分级:设置管理员 — 基地负责人 — 临时工三级权限,支持 “一机多账” 或 “一账多机”,保障数据安全与操作规范; 私有部署:提供全量 API 接口与 Docker 镜像,用户可将平台嵌入 ERP、财务或电商系统,实现数据互联互通。 5. 应用层 面向农业生产中的不同角色,应用层提供差异化界面设计,满足精准化需求: 工人端:仅显示 “今日任务” 列表与 “一键执行” 按钮,最大程度简化操作流程,降低使用门槛; 技术员端:支持参数调整、数据曲线查看、农事记录下载,助力专业人员开展技术分析与优化; 老板端:以大屏形式展示收益分析、能耗排名、风险预警数据,为经营决策提供数据支撑。 三、核心功能详解 1. 温室环境调控 基于季节变化规律,系统预设精细化调控策略:春季重点保障夜间保温与白天通风,平衡温度与空气流通;夏季启动外遮阳 + 风机湿帘联动模式,目标使棚内温度较外界低 5–7℃,缓解高温胁迫;秋季采用阶梯式降低灌溉量,避免作物徒长;冬季通过卷帘分时卷放,确保每日光照时长≥8 小时,同时排出棚内有害积累气体。所有策略可一次性设定,系统将自动随季节切换,无需人工频繁调整。 2. 水肥一体化 系统依据土壤 EC 值、含水率及作物生育期模型,实现水肥精准配比与灌溉:将清水、母液、酸 / 碱液按预设 EC 值、PH 值动态混合,轮灌分组可精细到单个电磁阀,支持 “先肥后水”(先施肥再冲洗管道)或 “肥水同灌” 两种模式。应用该功能可实现节水 30% 以上,节肥 25% 以上,大幅降低水肥成本。 3. 土壤墒情预警 当 20cm 深度土壤的体积含水率持续低于 20%(干旱阈值)或高于 65%(涝渍阈值)时,系统立即推送 “干旱 / 涝渍” 预警,并同步给出建议灌水量;若土壤 EC 值 > 1500μS/cm,系统提示 “盐渍化风险”,推荐冲淡水方案,提前规避土壤问题对作物的影响。 4. 远程视频监控联动 系统可接入主流品牌网络摄像头,实现 “报警抓图 + 15 秒短视频” 联动推送。例如:当电磁阀开启 5 分钟后,若主管道流量未检测到上升,系统将自动拍摄现场图片并录制 15 秒短视频上传至平台,方便工作人员快速排查管道堵塞、爆管等问题。 5. 数据资产沉淀 平台默认保存 3 年历史数据,支持对接 Python/R 等数据分析工具开展大数据分析,可生成 “温度 — 产量” 拟合曲线、“光照 — 糖度” 相关性报告等,为下一季作物品种选择、上市时间预测、种植策略优化提供科学决策依据,实现农业生产的持续迭代升级。 四、典型应用场景 1. 番茄玻璃温室(10 亩) 调控策略:设置白天温度 24–28℃、夜间 16–20℃,CO₂浓度 800–1000ppm;采用 “日出前 2 小时补 CO₂ + 9:00 外遮阳展开 + 11:00 风机湿帘阶梯启动” 组合策略; 应用效果:平均每穗果重提升 8%,畸形率下降 35%,每亩每年节省人工 1.5 人。 2. 草莓连栋大棚(30 亩) 调控策略:夜间保温被 22:00 放下、06:30 收起;棚内湿度 > 85% 时自动开启顶窗 + 循环风机;水肥 EC 值按生育期分段调整:苗期 0.8→开花期 1.2→膨果期 1.6→采收期 1.0 mS/cm; 应用效果:草莓提前 10 天上市,亩均增收 4200 元。 3. 柑橘露天基地(200 亩) 调控策略:土壤墒情传感器按 50 米网格布点,结合气象站蒸发量数据,实现 “分区滴灌”; 应用效果:2022 年高温干旱期间,较周边果园减少浇水 38%,单果重仍增加 6 克,糖酸比提升 5%。 五、实施步骤 现场勘查:专业团队上门评估地块的水源、电源、网络覆盖、土质情况,为后续方案落地奠定基础; 传感器布点:采用 “田” 字形或网格法布设传感器,确保监测数据具有空间代表性,覆盖整个种植区域; 控制柜安装:将控制柜安装于防雨棚内壁,距地面≥30 厘米,同步预留防雷接地装置,保障设备安全; 平台组态:导入地块 CAD 平面图,通过拖拽图标快速完成可视化组态,2 小时内即可实现平台与现场设备的联动; 策略调试:分模块测试 “传感器→边缘决策层→执行器” 的闭环逻辑,确认无漏动作、误动作,保障系统稳定运行; 培训交付:提供手机、电脑双端操作手册,开展现场培训,并建立微信群提供 7×24 小时答疑服务; 运维回访:每季度进行一次远程巡检,每年上门校准一次传感器,确保数据精度控制在 ±3% 以内。 六、效益测算(以 10 亩番茄为例) 硬件一次性投入:约 3.2 万元(含 3 年流量费); 年节省成本:节省人工 1.5 人 ×4 万元 / 人 = 6 万元,节水 30%、节肥 25% 折合 1.1 万元,年总成本节省 7.1 万元; 年增收效益:产量提升 8%,按亩产 12 吨、均价 6 元 / 千克计算,每亩增收 12×1000×6×8%=5760 元,10 亩合计增收 5.76 万元(约 5.8 万元); 投资回报:静态回收期≈3.2 万元 ÷(7.1 万元 + 5.8 万元)×12 个月≈4 个月,后续每年净收益(节省成本 + 增收)>10 万元。 七、常见问题解答 Q:种植过程中突然断电,系统会停止工作吗? A:不会。控制柜标配 5Ah UPS 电源,断电后可维持 2 小时正常运行;若需延长续航,可额外选配 10Ah 锂电池,续航时间可延长至 8 小时,保障关键农事操作不中断。 Q:长期使用后,传感器数据出现漂移,该如何校准? A:温湿度传感器可对照标准表进行校准,PH/EC 传感器使用标准缓冲液校准,建议每年校准一次;平台会自动记录校准曲线,若数据偏差 >±5%,将触发校准提醒,确保监测精度。 Q:系统自动灌溉时,会不会出现 “跑冒滴漏” 浪费水资源的情况? A:不会。系统支持流量计闭环监测,当实际灌溉流量与目标流量偏差 > 10% 时,将立即触发报警并自动关闭阀门,有效防止夜间爆管、管道堵塞等问题导致的水资源浪费,尤其适合无人值守场景。 八、结语 数字化并非智慧农业的最终目的,而是实现农业高质量发展的核心手段。本方案通过构建 “感知 — 决策 — 执行 — 优化” 的完整闭环,将分散的环境参数、作物生理特征、农艺经验转化为可计算、可复用、可迭代的数字化模型,彻底改变传统农业 “靠天吃饭” 的被动局面,实现四季均衡生产、作物品质可控、种植收益可算的目标。 未来,随着技术的持续迭代,用户只需在手机端轻轻 “一键确认”,即可将复杂的农事管理交给系统自动完成 —— 让种地变得更简单、更体面、更可持续,这正是智慧农业的核心价值所在。 --- ### 276. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 智能红外控制器是一款集红外遥控、状态监测与智能通信于一体的工业级控制设备。采用进口元件与专利技术设计,支持RS485、BLE5.1双模通信,兼容Modbus-RTU协议,可通过微信小程序或PLC组态实现远程控制。内置万能红外码库与64路学习通道,广泛应用于智慧酒店、工业节能、智能楼宇等场景,提供高可靠性的红外设备集成控制解决方案。 二、技术参数 类别参数详情电源输入DC 8V-28V宽电压,支持工业级电源适配通信接口RS485(A/B端子) + BLE5.1双模通信协议支持Modbus-RTU、蓝牙BLE5.1协议红外发射板载大功率红外管(无障碍距离>5米),支持外接延长线存储容量64通道红外学习存储,支持批量配置控制精度支持NEC/RC-5标准红外码,空调状态实时反馈环境适应性工业级防护,导轨式安装,-20℃~70℃工作温度 三、核心功能亮点 全能控制 内置空调/电视/机顶盒红外码库,免学习直接控制 支持空调温度、模式、风速等精细化调节 外接ZCT电流互感器,实时监测空调开关机状态 智能互联 双通道通信:RS485(Modbus-RTU)对接PLC/组态系统,BLE5.1直连微信小程序 微信小程序一键配网,手机端实时调试与发码测试 高效部署 64通道红外波形学习,支持投影仪、风扇等非标设备控制 批量读取/配置功能,适用于多房间快速复制部署 工业级设计 宽电压输入(8V-28V),适应复杂电力环境 板载快速测试键:短按发码测试,长按3秒进入自动匹配模式 四、安装与接线说明 安装步骤 机械固定 使用标准DIN导轨卡扣安装,确保设备水平固定 电源连接 接入DC 8V-28V电源至DC IN端子(红线+V,黑线-GND) 通信接线 RS485通信:连接A+/B-至控制器总线(建议使用屏蔽双绞线) 外设扩展: IR LED:外接红外延长发射管 ZCT:接入电流互感器(空调状态检测) STA:状态指示灯输出 注意事项 ⚠️ 接线前务必断电操作⚠️ RS485总线需终端匹配120Ω电阻(长距离通信时) 五、通讯协议及调试工具 一、通信协议帧 1. 通讯方式: UART 波特率:9600 数据位:8 停止位:1 校验位:无 流控:无  符合 Modbus-RTU 协议格式标准,地址范围 1-255。 2. Modbus-RTU 协议概述 2.1 读取多个寄存器命令,适用于功能码-03H 主机发送命令: 地址功能码起始寄存器地址读取寄存器个数校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高8位 从机返回信息: 地址功能码返回数据字节长度数据 1数据 2数据 N校验码(CRC16)1Byte1Byte1Byte1Byte1Byte1 Byte1 ByteN Byte1Byte1Byte设备地址功能码值N高 8 位低 8 位高 8 位低 8 位.....低 8 位高 8 位 2.2 写单个寄存器,适用于功能码-06H 主机发送命令: 地址功能码寄存器地址写入数据校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 从机返回信息: 地址功能码寄存器地址写入数据校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 2.3 写多个寄存器,适用于功能码-10H 主机发送命令: 地址功能码起始寄存器地址写入数据个数写入字节长度数据 1数据 2...数据 N校验码(CRC16)1Byte1 Byte1 Byte1 Byte1 Byte1 Byte1 Byte2 Byte2 Byte...2 Byte1 Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位1-255高低高低...高低低 8 位高 8 位 从机返回信息: 地址功能码起始寄存器地址写入寄存器个数校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 2.4 蓝牙通信协议 起始符数据长度选项字段报文序列号用户数据段校验码(CRC16)结束符2 Byte2 Byte1 Byte4 ByteN Byte1 Byte1 Byte2 ByteFF55HLenOPTSqueDataCRC_HCRC_LFFAAH固定  0xFF55协议数据 总长度, 高 8 位在 前 ,低 8 位在后08H-代表需要从设备回复应答 00H-代表蓝牙发送的数据芯片 无需回复应答04H-代表芯片主动发起的数据 上报,需要芯片自己增加唯一 序列号上报18H-代表蓝牙与串口数据透传唯一报文序列号填充 Modbus-RTU 数 据,参照 Modbus-RTU 数 据协议高8位低 8 位固定  0xFFAA1. 蓝牙控制指令案例:关闭空调数据测试协议蓝牙发送:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA蓝牙返回:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 2. 透传例程案例:参考寄存器 3000H串口上报数据:A5 10 30 00 00 01 02 11 22 D0 DD蓝牙收到数据:FF 55 00 0F 18 00 00 00 63 11 22 B4 82 FF AA 串口上报数据:A5 10 30 00 00 01 04 11 22 33 44 01 5A蓝牙收到数据:FF 55 00 11 18 00 00 00 02 11 22 33 44 BC A9 FF AA 蓝牙下发透传数据:FF 55 00 15 18 01 02 03 04 A5 06 00 25 00 00 81 25 0C 6B FF AA芯片串 口输出数据:A5 06 00 25 00 00 81 25 蓝牙下发透传数据:FF 55 00 11 18 00 00 00 02 11 22 33 44 BC A9 FF AA芯片串口输出数据:11 22 33 44 3. 功能码寄存器表(适配功能码 03H、06H、10H) 寄存器内容寄存器地址数据类型读/写类型寄存器值说明固件版本号0000H无符号短整型只读-芯片固件版本号。芯片 ID0001H无符号短整型只读-芯片唯一标识符。设备地址0002H无符号短整型可读写1~255RS485 设备地址。通信波特率0003H无符号短整型可读写0-24001-48002-96003-144004-192005-384006-560007-576008-1152009-12800010-23040011-15600012-46080013-50000014-51200015-60000016-75000017-92160018-100000019-150000020-2000000串口通信波特率(默认 9600)。MAC 地址0004H-0006H无符号短整型只读-6 字节 MAC 地址,占用 3 个寄存器空间。保留0007H-0008H无符号短整型保留-保留寄存器,不建议使用。芯片复位0009H无符号短整型可写-写入特定值以复位芯片。保留000AH-000FH无符号短整型保留-保留寄存器,不建议使用。空调匹配0010H无符号短整型可写-空调一键匹配控制寄存器。电视匹配0011H无符号短整型暂不支持-暂不支持。机顶盒匹配0012H无符号短整型暂不支持-暂不支持。风扇匹配0013H无符号短整型暂不支持-暂不支持。投影仪匹配0014H无符号短整型暂不支持-暂不支持。其他设备匹配0015H无符号短整型暂不支持-暂不支持。启动红外学习0016H无符号短整型可写-启动红外学习模式,可录制 64 通道红外波形。退出红外学习0017H无符号短整型可写-退出红外学习模式。测试红外学习0018H无符号短整型可写-测试学习到的红外波形。遥控 NEC 发码0019H-001AH无符号整型可写-发送 NEC 格式红外遥控码波形。遥控 RC-5 发码001BH-001CH无符号短整型可写-发送 RC-5 格式红外遥控码波形。蓝牙房间编号001DH无符号短整型可写-设置蓝牙广播名称中的房间编号。AD 管脚配置001EH无符号短整型可写-配置 ADIN/RS485 管脚功能。AD 采集电源阈值配置001FH无符号短整型可写-设置 AD 采集电源阈值,单位为 10mV。空调码库代号0020H无符号短整型可读写-空调匹配的码库代号。电视码库代号0021H无符号短整型可读写-电视匹配的码库代号。机顶盒码库代号0022H无符号短整型可读写-机顶盒匹配的码库代号。保留0023H-0024H无符号短整型保留-保留寄存器,不建议使用。空调电源状态0025H无符号短整型可读写0-关闭1-开启空调电源状态。空调温度状态0026H无符号短整型可读写0-16℃1-17℃...E-30℃空调温度状态寄存器。空调模式状态0027H无符号短整型可读写0-自动1-制冷2-除湿3-送风4-制热空调模式状态寄存器。空调风速状态0028H无符号短整型可读写0-自动风速1-一档风2-二档风3-三档风空调风速状态寄存器。空调灯光状态0029H无符号短整型可读写0-关灯1-开灯空调灯光状态寄存器。空调组合状态(下面提供具体说明)002AH-002CH无符号短整型可读写-空调组合状态控制寄存器。电视电源控制002DH无符号短整型可读写00H-关闭01H-开启电视电源键发码。电视音量002EH无符号短整型可读写0-音量减1-音量加电视音量控制寄存器。电视频道002FH无符号短整型可读写0-频道减1-频道加电视频道控制寄存器。电视信号源0030H无符号短整型可读写0-不切换1-切换频道电视信号源切换寄存器。电视返回按键0031H无符号短整型可读写0-不执行1-执行返回电视返回按键切换寄存器。机顶盒组合状态0032H-0034H无符号短整型暂不支持-机顶盒组合状态,暂不支持。机顶盒电源0035H无符号短整型可读写00H-关闭01H-开启机顶盒电源状态。机顶盒音量0036H无符号短整型可读写0-音量减1-音量加机顶盒音量控制寄存器。机顶盒频道0037H无符号短整型可读写0-频道减1-频道加机顶盒频道控制寄存器。机顶盒信号源0038H无符号短整型可读写0-不切换1-切换频道机顶盒信号源切换寄存器。机顶盒返回0039H无符号短整型可读写0-不执行1-执行返回机顶盒返回按键切换寄存器。互感器设备开关状态003AH无符号短整型只读0-关机1-开机外接互感器设备检测设备开关机状态。ADC 采集值003BH无符号短整型只读-读取 ADC 采样的值(代表电压值:10mV 为单位)。保留003CH-003FH无符号短整型保留-保留寄存器,不建议使用。空调本地代号0040H无符号短整型可读写-本地码库代号寄存器。空调控制代号0041H无符号短整型可读写-指令控制代号寄存器。空调电源状态0042H无符号短整型可读写0-关闭1-开启空调单一电源状态。空调温度状态0043H无符号短整型可读写16-31℃空调温度状态寄存器。空调模式状态0044H无符号短整型可读写0-自动1-制冷2-除湿3-送风4-制热空调模式状态寄存器。空调风速状态0045H无符号短整型可读写0-自动风速1-一档风2-二档风3-三档风空调风速状态寄存器。空调灯光状态0046H无符号短整型可读写0-关灯1-开灯空调灯光状态寄存器。保留0047H-0531H无符号短整型保留-保留寄存器,不建议使用。红外学习通道 1~620532H-114DH无符号短整型可读写-每个通道分配 100 个字节空间。红外学习通道 63114EH-1180H无符号短整型可读写-每个红外录制波形占用 100 个字节,占用 50 个寄存器。蓝牙透传数据寄存器3000H无符号短整型可读写-串口上报蓝牙数据透传格式。 CRC16校验工具下载: 本工具用于快速求出MODBUS通信中CRC16校验值。在输入框输入十六进制数据包(每两个字符表示一个字节,字符数必须是偶数),每个字节之间用空格隔开。点击计算后,本计算器可求出输入数据包的长度的16进制校验码。 CRC16校验计算工具 资源价格1积分销售数量328发布时间2025年2月16日更新时间2025年4月8日 点击下载 协议示例: 协议说明 本协议默认地址为 A5。用户需要先将地址设置为 A5 进行测试。 1. 设置从设备地址 发送:FF 06 00 02 00 A5 FD AF 返回:FF 06 00 02 00 A5 FD AF 2. 固件版本号 发送:FF 03 00 00 00 01 91 D4 返回:FF 03 02 00 01 90 53 说明:固件版本号为 0x0001。 3. 芯片ID号 发送:FF 03 00 01 00 01 C0 14 返回:FF 03 02 50 56 2D AE 说明:芯片ID为 0x5056。 4. 设备从地址寄存器 设置地址: 发送:FF 06 00 02 00 A5 FD AF 返回:FF 06 00 02 00 A5 FD AF 获取地址: 发送:FF 03 00 02 00 01 30 14 返回:FF 03 02 00 A5 51 EB 说明:设备地址为 0xA5。 5. 串口通信波特率设置寄存器 波特率映射表: 值波特率024001480029600314400419200538400656000757600811520091280001023040011156000124608001350000014512000156000001675000017921600181000000191500000202000000 获取波特率: 发送:A5 03 00 03 00 01 6D 2E 返回:A5 03 02 00 02 48 5C 说明:波特率为 9600。 6. 空调匹配控制寄存器 匹配空调: 发送:A5 06 00 10 00 01 50 EB 超时返回:A5 06 00 10 80 03 B0 EA 匹配失败:A5 06 00 10 80 03 B0 EA 匹配成功:A5 06 00 10 00 4F D0 DF 说明:匹配到代码号 0x004F。 7. 启动红外学习模式 学习通道: 发送:A5 06 00 16 00 3F 31 3A 返回:A5 06 00 16 00 3F 31 3A 学习完成:A5 06 00 16 80 02 91 2B 学习超时:A5 06 00 16 80 03 50 EB 示例: 发送:A5 06 00 16 00 00 71 2A 返回:A5 06 00 16 80 02 91 2B 8. 退出红外学习模式 发送:A5 06 00 17 00 3F 60 FA 返回:A5 06 00 17 00 3F 60 FA 9. 测试红外学习波形 发送:A5 06 00 18 00 3F 50 F9 返回:A5 06 00 18 00 3F 50 F9 示例: 发送:A5 06 00 18 00 00 10 E9 10. 发送指定数据的NEC码红外波形 发送:A5 10 00 19 00 02 04 00 FF 01 FE 95 DB 返回:A5 10 00 19 00 02 89 2B 说明:发射NEC波形:00 FF 01 FE。 11. 空调码库代号 设置代码号: 发送:A5 06 00 20 02 E4 90 0F 返回:A5 06 00 20 02 E4 90 0F 获取代码号: 发送:A5 03 00 20 00 01 9C E4 返回:A5 03 02 02 E4 C8 B6 说明:空调代码号为 740。 12. 电视码库代号 设置代码号: 发送:A5 06 00 21 00 03 80 E5 返回:A5 06 00 21 00 03 80 E5 获取代码号: 发送:A5 03 00 21 00 01 CD 24 返回:A5 03 02 00 03 89 9C 说明:电视代码号为 3。 13. 机顶盒码库代号 设置代码号: 发送:A5 06 00 22 00 0B 71 23 返回:A5 06 00 22 00 0B 71 23 获取代码号: 发送:A5 03 00 22 00 01 3D 24 返回:A5 03 02 00 0B 88 5A 说明:机顶盒代码号为 11。 14. 空调状态寄存器 - 组合状态 发送:A5 10 00 2A 00 03 06 02 E4 AA 10 00 00 18 06 返回:A5 10 00 2A 00 03 B8 E4 002A寄存器:空调代码号,高位在前 002B寄存器:高位相当于红外协议状态码1 低位相当于红外协议的状态码2 002C寄存器:高位相当于红外协议的按键码 低位参数为0使用指令中的代码号 参数为1使用本地代码号 返回:A5 10 00 2A 00 03 B8 E4 15. 空调状态寄存器 - 电源状态 控制空调开关: 发送:A5 06 00 25 00 01 40 E5 返回:A5 06 00 25 00 01 40 E5 说明:空调开启。 关闭空调: 发送:A5 06 00 25 00 00 81 25 返回:A5 06 00 25 00 00 81 25 获取空调电源状态: 发送:A5 03 00 25 00 01 8C E5 返回:A5 03 02 00 00 C9 9D 说明:空调为关机状态。 16. 空调状态寄存器 - 温度状态 控制空调温度: 发送:A5 06 00 26 00 0E F0 E1 返回:A5 06 00 26 00 0E F0 E1 说明:空调温度设置为 30°C。 获取空调温度状态: 发送:A5 03 00 26 00 01 7C E5 返回:A5 03 02 00 0E 48 59 说明:空调温度为 30°C。 17. 空调状态寄存器 - 模式状态 控制空调模式: 发送:A5 06 00 27 00 04 21 26 返回:A5 06 00 27 00 04 21 26 说明:空调模式设置为 制热。 获取空调模式状态: 发送:A5 03 00 27 00 01 2D 25 返回:A5 03 02 00 04 C8 5E 说明:空调模式为 制热。 控制空调模式(0:自动 1:制冷 2:除湿 3:送风 4:制热) 18. 空调状态寄存器 - 风速状态 控制空调风速: 发送:A5 06 00 28 00 03 50 E7 返回:A5 06 00 28 00 03 50 E7 说明:空调风速设置为 三级。 获取空调风速状态: 发送:A5 03 00 28 00 01 2D 25 返回:A5 03 02 00 03 89 9C 说明:空调风速为 三级。 控制空调风速(0:自动 1:一级 2:二级 3:三级) 19. 空调状态寄存器 - 灯光状态 控制空调屏显: 发送:A5 06 00 29 00 01 80 E6 返回:A5 06 00 29 00 01 80 E6 说明:空调屏显开启。 获取空调屏显状态: 发送:A5 03 00 29 00 01 4C E6 返回:A5 03 02 00 01 08 5D 说明:空调屏显为 开启。 20. 电视状态寄存器 - 电源状态 发送:A5 06 00 2D 00 01 C1 27 返回:A5 06 00 2D 00 01 C1 27 21. 电视状态寄存器 - 音量状态 发送:A5 06 00 2E 00 01 31 27 返回:A5 06 00 2E 00 01 31 27 发电视音量码(1:音量加 0:音量减) 22. 电视状态寄存器 - 频道状态 发送:A5 06 00 2F 00 01 60 E7 返回:A5 06 00 2F 00 01 60 E7 发电视频道码(1:频道加 0:频道减) 23. 电视状态寄存器 - 信号源状态 发送:A5 06 00 30 00 01 51 21 返回:A5 06 00 30 00 01 51 21 24. 电视状态寄存器 - 返回状态 发送:A5 06 00 31 00 01 00 E1 返回:A5 06 00 31 00 01 00 E1 25. 机顶盒状态寄存器 - 电源状态 发送:A5 06 00 35 00 01 41 20 返回:A5 06 00 35 00 01 41 20 26. 机顶盒状态寄存器 - 音量状态 发送:A5 06 00 36 00 01 B1 20 返回:A5 06 00 36 00 01 B1 20 发机顶盒音量码(1:音量加 0:音量减) 27. 机顶盒状态寄存器 - 频道状态 发送:A5 06 00 37 00 01 E0 E0 返回:A5 06 00 37 00 01 E0 E0 发机顶盒频道码(1:频道加 0:频道减) 28. 机顶盒状态寄存器 - 信号源状态 发送:A5 06 00 38 00 01 D0 E3 返回:A5 86 01 C2 43 说明:机顶盒无信号源数据。 29. 机顶盒状态寄存器 - 返回状态 发送:A5 06 00 39 00 01 81 23 返回:A5 06 00 39 00 01 81 23 30. 下载空调dp数据1 (0x0100-0x04bf) 数据帧示例: 第一帧:A5 10 01 00 00 78 F0 03 45 29 2D 13 43 42 36 02 15 01 04 A2 AC A7 B5 B0 B1 B2 AD FF 05 A1 AE FF 07 A1 AE FF 06 A6 FF 08 A3 FF 03 AB B3 FF 02 A8 FF 00 A8 FF 01 8D 9D FF 00 FF FF 02 01 00 00 01 00 02 00 00 02 01 00 00 02 00 00 00 00 02 00 00 03 00 01 01 03 00 02 03 00 00 04 01 05 03 04 00 00 04 00 00 00 01 06 00 01 FF 02 00 FF 02 01 FF 02 31 FF 07 32 33 34 35 36 37 FF 06 B2 4D 00 00 00 00 06 B5 4A F5 00 00 00 06 B2 4D 7B 84 E0 1F 06 B2 4D 0F F0 E0 1F 06 B2 4D 6B 94 E0 1F 0C B2 4D E0 1F 03 FC B2 4D 00 00 00 00 12 B3 88 9A AA AA D7 B4 AA FF 40 66 FD B2 4D BF 40 D0 2F 00 00 11 11 30 1B 23 1B 6B A2 00 80 13 00 25 9D C0 FF FF FF FF FF 00 00 11 11 30 1B 23 1B 6B E0 00 80 13 00 25 9D C0 FF FF FF FF FF 00 00 11 11 30 1B 23 1B 6B 80 00 00 FF 98 1A 第二帧:A5 10 01 78 00 78 F0 02 25 9D C0 FF FF FF FF FF 01 FF 0C 40 0B FF 06 C0 00 05 06 00 01 FF FF 0C 00 0B FF 04 C0 00 03 04 00 01 FF FF 0C 40 0B FF 0C C0 00 0B 0C 00 01 FF FF 0C 00 0B FF 0A C0 00 09 0A 00 01 FF FF 01 FF 01 FF FF 1E 20 03 FF BF 21 03 FF 9F 22 03 FF 5F 23 03 FF 3F 10 03 FF 1F 12 03 FF 1F 10 05 0C 08 12 05 0C 04 14 05 0C 0C 52 05 F0 10 53 05 F0 30 54 05 F0 20 55 05 F0 60 56 05 F0 70 57 05 F0 50 58 05 F0 40 59 05 F0 C0 5A 05 F0 D0 5B 05 F0 90 5C 05 F0 80 5D 05 F0 A0 5E 05 F0 B0 13 05 FC E4 20 08 FF 66 21 08 FF 28 22 08 FF 3C 23 08 FF 50 10 08 FF 65 12 08 FF 65 09 09 80 80 46 80 06 7F 00 81 06 7F 03 82 06 7F 07 83 06 7F 0B 84 06 7F 0F 85 06 7F 13 86 06 7F 17 87 06 7F 1B 88 06 7F 1F 89 06 7F 2B 8A 06 7F 27 8B 06 7F 2B 8C 06 D0 25 第三帧:A5 10 01 F0 00 78 F0 7F 2F 99 05 03 01 9A 05 03 01 9B 05 03 01 9C 05 03 01 90 03 1F 00 91 03 1F 03 92 03 1F 07 93 03 1F 0B 94 03 1F 0F 95 03 1F 13 96 03 1F 17 97 03 1F 1B 98 03 1F 1F 99 03 1F 03 9A 03 1F 07 9B 03 1F 0B 9C 03 1F 0F 9D 06 7F 7F 8D 05 03 03 20 03 E0 A0 21 03 E0 80 22 03 E0 40 23 03 E0 20 10 03 E0 00 12 03 E0 00 10 05 0C 08 11 05 0C 00 12 05 0C 04 13 05 0C 00 14 05 0C 0C 50 05 F0 00 51 05 F0 00 52 05 F0 10 53 05 F0 30 54 05 F0 20 55 05 F0 60 56 05 F0 70 57 05 F0 50 58 05 F0 40 59 05 F0 C0 5A 05 F0 D0 5B 05 F0 90 5C 05 F0 80 5D 05 F0 A0 5E 05 F0 B0 5A 06 80 80 5B 06 80 80 5C 06 80 80 5D 06 80 80 5E 06 80 80 20 08 FF 66 21 08 FF 28 22 08 FF 3C 23 08 FF 50 10 08 FF 65 12 08 FF 65 09 09 80 80 08 B0 05 FF A9 B1 05 FF A9 AD BF 65 第四帧:A5 10 02 68 00 3B 76 05 FF A5 A7 05 FF AA B5 05 FF A3 A2 05 FF A2 AC 05 FF A2 B2 05 FF 86 17 20 09 FF BF 21 09 FF 9F 22 09 FF 5F 23 09 FF 3F 10 09 FF 1F 12 09 FF 1F 10 0B 0C 08 12 0B 0C 04 14 0B 0C 0C 52 0B F0 10 53 0B F0 30 54 0B F0 20 55 0B F0 60 56 0B F0 70 57 0B F0 50 58 0B F0 40 59 0B F0 C0 5A 0B F0 D0 5B 0B F0 90 5C 0B F0 80 5D 0B F0 A0 5E 0B F0 B0 12 0B FC E4 01 00 DF A2 结束帧:A5 10 04 48 00 02 04 00 00 00 00 D3 CB 30.1下载空调dp数据2(0x2100-0x24bf) 第一帧:A5 10 21 00 00 78 F0 01 E2 17 05 02 15 16 14 01 79 01 00 A0 A1 AE B0 B1 A2 A3 A4 A5 A6 A8 A9 AC AD B2 B4 AA AB AF B3 FF FF 00 00 00 00 00 01 FF 14 A6 00 00 00 00 00 00 00 00 00 00 00 00 00 B5 00 00 00 00 00 BB BB BB 11 10 22 22 22 67 80 00 00 FF 00 33 00 C0 FF FF FF FF FF 09 40 0B FF 14 C0 00 0F 13 FF 09 00 0B FF 0E C0 00 01 0D FF 5E 20 06 E0 A0 21 06 E0 60 22 06 E0 40 23 06 E0 20 11 08 E0 20 12 08 E0 40 13 08 E0 C0 14 08 E0 80 01 05 40 40 07 05 80 80 51 02 F0 10 52 02 F0 20 53 02 F0 30 54 02 F0 40 55 02 F0 50 56 02 F0 60 57 02 F0 70 58 02 F0 80 59 02 F0 90 5A 02 F0 A0 5B 02 F0 B0 5C 02 F0 C0 5D 02 F0 D0 5E 02 F0 E0 31 02 0F 0C 32 02 0F 02 33 02 0F 04 34 02 0F 06 35 02 0F 08 36 02 0F 0A 37 02 0F 0F 41 03 F0 E0 42 03 F0 20 43 03 F0 05 F2 第二帧:A5 10 21 78 00 78 F0 40 44 03 F0 60 45 03 F0 80 46 03 F0 A0 47 03 F0 C0 61 04 02 02 05 07 40 40 0F 07 80 80 03 09 80 80 0D 09 40 40 09 0B 08 08 8D 04 40 40 9D 04 20 20 6F 04 20 20 81 08 1F 01 82 08 1F 02 83 08 1F 03 84 08 1F 04 85 08 1F 05 86 08 1F 06 87 08 1F 07 88 08 1F 08 89 08 1F 09 8A 08 1F 0A 8B 08 1F 0B 8C 08 1F 0C 91 06 1F 01 92 06 1F 02 93 06 1F 03 94 06 1F 04 95 06 1F 05 96 06 1F 06 97 06 1F 07 98 06 1F 08 99 06 1F 09 9A 06 1F 0A 9B 06 1F 0B 9C 06 1F 0C A9 0D 7F 04 A1 0D 7F 02 AE 0D 7F 02 B0 0D 7F 03 B1 0D 7F 03 A7 0D 7F 19 A5 0D 7F 01 A6 0D 7F 09 A8 0D 7F 05 A0 0D 7F 06 A3 0D 7F 0B A2 0D 7F 08 B2 0D 7F 08 AC 0D 7F 16 AD 0D 7F 15 B4 0D 7F 07 AA 0D 7F 10 AB 0D 7F 0D AF 0D 7F 10 B3 0D 7F 0D 21 11 F0 C0 22 11 F0 80 23 11 F0 A1 30 第三帧:A5 10 21 F0 00 01 02 40 01 B9 65 结束帧:A5 10 24 48 00 02 04 00 00 00 00 4A 0A 测试指令: A5 10 00 2A 00 03 06 FF 02 AA 10 00 00 04 3D 31. 房号(蓝牙名称) 设置房号: 发送:A5 06 00 1D 03 E9 C1 96 返回:A5 06 00 1D 03 E9 C1 96 获取房号: 发送:A5 03 00 1D 00 01 24 1B 返回:A5 03 02 03 E9 08 E3 说明:房号为 1001。 32. 读写学习数据 读取通道63学习数据: 发送:A5 03 11 4E 00 32 B8 10 返回:A5 03 64 FA 56 67 00 4C E0 0C 00 00 71 0F 2B 39 98 04 69 09 8B 13 00 00 40 80 41 81 06 41 82 18 41 C1 40 83 41 C2 40 83 41 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC 00 07 00 00 00 00 00 00 00 00 57 BA 写入通道63学习数据: 发送:A5 10 11 4E 00 32 64 B4 56 67 50 00 71 0D 00 00 71 2B 0E 00 77 04 92 09 00 20 00 00 40 80 41 81 41 82 1E 41 C1 40 80 01 41 C2 40 80 01 41 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B B4 2F 2D 00 00 00 00 00 00 00 FC 12 返回:A5 10 11 4E 00 32 3D D3 33. 配置PB1功能 设置PB1为AD检测: 发送:A5 06 00 1E 00 00 F0 E8 返回:A5 06 00 1E 00 00 F0 E8 获取PB1功能: 发送:A5 03 00 1E 00 01 FD 28 返回:A5 03 02 00 00 C9 9D 说明:功能为 0。 34. 配对AD电压(精度10mV) 设置AD电压为2V: 发送:A5 06 00 1F 00 C8 A0 BE 返回:A5 06 00 1F 00 C8 A0 BE 获取设置的AD电压: 发送:A5 03 00 1F 00 01 AC E8 返回:A5 03 02 00 C8 C8 0B 说明:电压为 2V。 35. 获取开关状态 发送:A5 03 00 3A 00 01 BD 23 返回:A5 03 02 00 01 08 5D 说明:开关状态为 开。 36. 获取PB1电压 发送:A5 03 00 3B 00 01 EC E3 返回:A5 03 02 00 E5 08 16 说明:PB1电压为 2.29V。 37. 获取MAC地址 发送:A5 03 00 04 00 03 5D 2E 返回:A5 03 06 D8 2F E6 59 E8 7E 05 D7 说明:MAC地址为 D8:2F:E6:59:E8:7E。 38. 蓝牙控制数据测试 关闭空调数据测试协议: 蓝牙发送:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 蓝牙接收:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 39. 蓝牙透传数据测试 串口上报数据: 发送:A5 10 30 00 00 01 02 11 22 D0 DD 蓝牙接收:FF 55 00 0F 18 00 00 00 63 11 22 B4 82 FF AA 蓝牙下发透传数据: 发送:FF 55 00 15 18 01 02 03 04 A5 06 00 25 00 00 81 25 0C 6B FF AA 芯片串口输出:A5 06 00 25 00 00 81 25 --- ### 277. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简介: ETS 配置界面。 KNX 总线直接供电。 支持 KNX <-> MODBUS 主机或者从机模式相互转换,最大支持 500 个寄存器。支持任意 bit 长度取值转换(最长 16bit)。支持同时配置多个相同寄存器。仅支持 0x03,0x04,0x06,0x10 指令。 支持 KNX <-> RS485 任意指令(最长 24byte)相互转换,转换值可以固定,也可以是跟随 485 指令内数据。最大支持 100 个指令。 支持 KNX <-> RS232 任意指令(最长 24byte)相互转换,转换值可以固定,也可以是跟随 232 指令内数据。最大支持 100 个指令。 支持 100 组逻辑输入输出,功能包括,延迟和 2-point 逻辑控制输出。 MODBUS 配置 1.Modbus 通讯参数配置 ①.Bps for modbus(设置波特率):支持 2400、9600、19200、38400、56000、115200、128000、256000。 ②.Modbus 主从模式选择:Slave mode:从机模式,Host mode:主机模式。 ③.Modbus 地址(十进制):modbus 从机模式下本机的地址设置。 ④.(仅主机)主机模式读写超时(*100ms):主机模式下,读取从机设备时候,等待从机回复的超时时间设定,设置 5 代表 500ms,最小不能小于 200ms,推荐 500ms 以上,默认 500ms。 ⑤.使能 modbus 寄存器的个数:打开寄存器的配置。 2.Modbus 寄存器配置 ①.配置注意事项:寄存器地址尽量按照升序排序配置,主机模式下,同一个设备的所有寄存器放在一起,并按照升序排列,这样配置,网关在读取从机寄存器的时候,会一次读完,而不用一个个寄存器读取,效率大大提高。 ② Enable reg: 激活表示启用,不激活表示不启用。 ③ 备注名称: 可以根据需求,标注寄存器对应的是什么。 ④ 从机地址(仅主机): 设置需要读取的从机的地址(10进制)。 ⑤ Modbus 寄存器地址: 10进制。 ⑥ 数据类型(dpt): KNX 对象的数据类型。 ⑦ Modbus 寄存器类型: 保持型寄存器-modbus 主机可以读写,输入型寄存器-modbus 主机只能读取,线圈状态-modbus主机可以读写。 ⑧ 时间间隔(仅主机): 主机模式下读取每个寄存器的时间间隔,默认设置 0。 ⑨ 指令选择(仅主机):读取寄存器的指令选择,0X03H/0X04H/0X06H/0X10H/0X01H/0X02H/0X05H/0X0FH ⑩ 寄存器个数(仅主机):可以选择1、2 两个寄存器一起读取,合并起来转发给 KNX。 ① 数据格式(仅主机):可以选择高 byte 在前和高 Byte 在后的模式,根据具体数据格式进行设置。 ② 每变化多少值 则发送一次:设置0表示不管变化多少都转发,设置1表示值变化1的时候转发(适合开关量),设置10表示在当前值的上下变化210的时候才转发。 ③ 需要转换的 bit:就是取寄存器中的哪几个 bit 的值,转发给 KNX,同样KNX转给 modbus 寄存器也是值改变配置的 bit,其他的 bit 值不变。如下图,设置了1,代表十六进制 0x0001,即转发最低位的数据,如寄存器的值为 0x1231,KNX则转发1,如寄存器的值为0x1230,KNX则转发0.该值默认是 65535,即 0xFFFF,转发所有16bit 的值。 ④ KNX 到 modbus 的数据转换:这个是用于处理数据转换的倍数,如:假设设置的值是2,KNX端接收到数据是5,modbus寄存器的数据是10;负数代表多少份之一,如-2,接收到 KNX发过来的值是10,那么modbus寄存器的数据为5。应用场景如,温度转换,modbus 大部分温度值精确到小数点后一位,但是 KNX 是精确到小数点后两位的,那么他们之间就差了10倍,可以设置-10,纠正温度值。该值默认是1,原数据转发。 RS485 配置 RS485 通讯参数配置 ①.Bps for RS485:设置 RS485 总线的波特率。 ②.Stop bit for RS485:停止位设置,仅支持 1bit 和 2bit。 ③.Data bit for RS485:数据位设定,仅支持 8bit 和 9bit。 ④.Check bit for RS485:校验位设置,只支持奇校验和偶校验或者不校验。 ⑤.Crc 校验(0 - 无校验):提供多找标准的 CRC 校验算法,并提供选择 CRC 校验源数据的长度选择。 ⑥.从第几个 BYTE 开始计算 CRC:设置 CRC 的起始位置。 ⑦.倒数第几 BYTE 截止结算 CRC:设置 CRC 的结束位置。 ⑧.报文接收超时时间(N 个字符时间):RS485 总线识别一帧结束的时间,一个字符的时间 *N。 ⑨.RS485 总线发送报文间隔(.ms):本设备往总线发送一帧报文的最小时间间隔。 ⑩.RS485 通道数使能。 RS485 指令配置 ①.备注名称:可以根据需求,标注本指令对应的是什么。 ②.KNX 的数据格式(dpt):KNX 对象的数据类型。 ③.KNX 接收到报文后是否发送到 RS485。 ④.RS485 接收到报文后是否转发到 KNX。 ⑤.转发方式:接收到 RS485 总线正确指令后,转发到 KNX 的值的选择。转发接收值,则转发指令中使用 XX 替代的位置的数据;转发固定值,KNX 上发送设定好的值。 ⑥.数据转发设置:参考 Modbus 寄存器配置的第七点。 ⑦.指令内容:指令是以十六进制输入,每个 byte 之间使用空格隔开,使用字母 XX 表示需要转换到 KNX 的数据,所有的指令内容都不区分大小写。 RS232 配置 RS232 的配置跟 RS485 一样。 Functions 配置 全局配置 通道数量:最大 100 个。 Fun 参数配置 ①使能当前的 function 功能。 ②功能选择:Delay 功能提供延迟发送的功能,2-point logic 功能提供简单的 2 点控制逻辑(高于设定点 A 触发一个操作,低于设定点 B 触发另一个操作)。 ③对象 dpt:配置需要的数据类型。 ④(Delay)延迟(秒):0 代表不延迟,0 ~ 255。 ⑤(Delay)延迟(毫秒):0 代表不延迟,0 - 255。 ⑥(2-point)高阈值设定:当输入值高于该设定值时候,延迟设定的时间后,发送高于高阈值时发送的值参数设定的值。 ⑦(2-point)低阈值设定:当输入值高于该设定值时候,延迟设定的时间后,发送低于低阈值时发送的值参数设定的值。 ⑧(2-point)Out.对象 dpt:控制输出对象的数据格式: ⑨(2-point)高于高阈值时发送的值: ⑩(2-point)低于低阈值时发送的值: (2-point)延迟时间(.min):延迟输出的时间设定,单位分钟。 (2-point)延迟时间(.sec):延迟输出的时间设定,单位秒。 注意:当输入值高于高阈值的时候,在延迟时间内再次收到低于高阈值的值,则会取消发送。低于低阈值的时候功能一样。 例子演示 RS485/RS232 转 KNX。 (1)设置十六进制指令 0x12345678,转换器接收到 RS485/RS232 发过来的报文为 0x12345678 时候,KNX 端群组地址 1/0/4 发送 50 的值。 也可以是转发接收到的其中一个值,使用 xx 来表示需要转发的值。转换器接收到 RS485/RS232 发过来的报文为 0xabcdef0812 时候,knx 端对应的地址 1/0/5,会把 xx 位置的 08 转发过来。 基本参数与安装 2.1 电气参数 项目说明供电方式直接插在 KNX 总线上(21V–31V)耗电量比手机充电器还小(<0.5W)工作温度-5℃~45℃(普通室内环境即可) 2.2 安装步骤 固定设备:卡在标准的35mm导轨上(类似电表箱的安装方式)。 接线: KNX:用双绞线(类似网线)连接总线。 RS485/RS232:用屏蔽双绞线(防干扰)连接设备。 指示灯: 绿灯常亮:供电正常。 红灯闪烁:正在配置中。 实际应用场景举例 场景1:智能楼宇照明 设备:KNX 灯光系统 + MODBUS 人体传感器。 逻辑: 传感器检测无人 → 发送信号到网关。 网关延迟30秒 → 通过KNX关灯。 场景2:工业温控 设备:RS485 温度传感器 + KNX 空调控制器。 逻辑: 传感器上报28℃ → 网关转发到KNX。 KNX 判断 >25℃ → 发送“开空调”指令。 常见问题与解答 Q1:指示灯不亮怎么办? 检查KNX总线供电是否正常(21V–31V)。 确认接线是否松动。 Q2:数据转发不成功? 检查波特率、校验位是否与设备一致。 确认指令中的 XX 位置是否正确。 Q3:逻辑规则不触发? 检查阈值是否设置合理(如“>30”误写为“<30”)。 确认输出对象的地址是否正确。 技术参数总表 项目参数供电电压21–31V DC(KNX总线直接供电)最大功耗<0.5W(超省电)支持协议KNX、MODBUS、RS485、RS232逻辑通道数100组(满足复杂自动化需求) --- ### 278. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ​​一、 硬件设备定位与核心价值​​ 这款硬件设备为一款​​协议转换器​​。其核心价值在于,通过配套的专用配置软件,它可以被灵活地定义为多种角色,以适应不同的应用场景: •​​协议转换网关​​:在Modbus RTU、Modbus TCP乃至用户私有协议之间进行无缝转换。 •​​通信集线器(HUB)​​:将一路主站通道扩展为四路独立的从站通道,实现总线隔离与扩展。 •​​智能地址路由器​​:解决从站设备地址冲突、地址不可修改等核心痛点。 •​​数据映射器​​:对寄存器地址进行重新映射,为上层主站提供统一、简洁的数据视图。 ​​简单来说,这是一个通过软件配置来定义其功能的、高度灵活的硬件平台。​ ​ ​ ​ 二、 硬件能力揭示:透过软件看本质​​ 配置软件的每一项功能,都对应着硬件设备的一项核心能力。​​1. 多协议与多接口支持能力​​ •​​软件界面显示​​:在“通讯协议和参数”区域,硬件的主站接口可配置为 RS485(串口通信)或 以太网。 •​​硬件能力体现​​:这表明该硬件设备至少具备​​一个RS485接口​​和​​一个以太网接口​​。它既可以作为串口设备接入传统RS485网络,也可以作为网络设备接入以太网,满足不同场景的物理接入需求。 ​​2. 核心工作模式(由软件选择)​​软件中的“主机通讯协议”选项,直接决定了硬件设备的工作大脑: •​​透传方式​​:硬件不解析数据,仅作为简单的数据通道或切换器使用。 •​​用户私人协议​​:​​这是硬件处理非标设备的关键​​。在此模式下,硬件能识别用户自定义的协议结构,并通过“地址码映射”实现基于通道的路由。 •​​Modbus RTU/TCP​​:硬件化身为标准的Modbus协议转换器或管理器,具备高级的Modbus数据处理能力。 ​​3. 核心功能一:地址码映射(化解ID冲突)​​ •​​软件功能​​:在“Modbus 站地址映射”选项卡中,用户可以设置一个映射表,将主站使用的“逻辑地址”映射到特定物理通道上的从站“实际地址”。 •​​硬件实现​​:当硬件设备收到主站发往“逻辑地址2”的指令时,其内部处理器会根据映射表,自动将指令转发到​​通道2​​上,并寻址该通道上“实际地址为01”的从站。​​这意味着,即使四个通道上的从站ID全是01,在主站看来,它们也是四个地址不同(1,2,3,4)的设备。​​ 硬件通过这种方式,从物理上解决了地址冲突的难题。 ​​4. 核心功能二:寄存器映射(简化数据访问)​​ •​​软件功能​​:在“Modbus 寄存器映射”表中,用户可以定义“主站寄存器地址”与“从站映射寄存器”的对应关系。 •​​硬件实现​​:如截图所示,当主站读取一个连续的虚拟地址段(0000- 000D)时,硬件会自动将这些请求映射到从站设备中离散的实际寄存器地址(如0100, 0400等)。​​对主站而言,它仿佛在访问一个拥有连续数据区的大型从站,极大地简化了上位机的编程逻辑,降低了维护复杂度。​​ ​​三、 硬件典型应用场景​​ 基于软件所揭示的强大功能,该硬件设备适用于: 1.​​设备利旧与系统升级​​:将多条RS485总线上、使用私有协议或Modbus RTU的老设备,轻松接入新的基于以太网(Modbus TCP)的监控系统。 2.​​多供应商设备整合​​:当不同品牌的设备出现Modbus地址冲突或寄存器规划不一时,通过本设备的地址和寄存器重映射功能,无需修改任何从站设备即可实现整合。 3.​​构建高可靠性网络​​:通过将设备连接到不同的通道,实现总线隔离,避免单点故障导致整个系统瘫痪。 ​​四、 总结:软硬结合的完整解决方案​​ 这款四路协议转换器硬件,与其功能丰富的配置软件,共同构成了一个完整的工业通信解决方案。硬件提供了稳定可靠的多路通信接口和强大的数据处理基础,而软件则赋予了硬件无与伦比的灵活性和智能化。​​正是通过这款软件,工程师才能将硬件的潜能完全激发,使其从简单的通道转换器蜕变为能够化解现场最棘手通信难题的智能网关。​​ 对于系统集成商而言,这是一款能够显著降低工程难度和实施成本的利器。 --- ### 279. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ​​一、 设备概述​​ BSS-485ZD-RTU是一款功能强大的​​协议转换器/集线器/切换器​​。其超越标准Modbus协议转换的独特能力在于,它支持对用户​​私有协议​​进行智能处理与通道化路由,完美解决了从站设备ID固化的系统集成瓶颈。 ​​核心定位:​​ ​​私有协议支持​​:无需从站设备遵循标准协议,用户可自定义通信规约。 ​​通道化管理​​:将8个物理RS485端口定义为逻辑通道,实现精准数据路由。 ​​无侵入式集成​​:在不修改任何从站设备地址和协议的前提下,实现系统整合。 ​​二、 核心功能:解决从站ID的三大难题​ ​ 该设备的核心价值在于解决了从站设备地址管理的三大常见困境,如产品图(图1)中的“使用场合”所列: ​​从站地址码重复​​:多个设备出厂ID相同,无法在同一总线共存。 ​​从站地址码不可修改​​:设备固件锁定,无法更改其ID。 ​​从站地址码缺失​​:从站协议本身不包含地址标识,仅支持点对点通信。 ​​三、 工作原理:基于通道定义的私有协议处理机制​​ 设备通过一种巧妙的“​​协议包装+通道映射​​”机制来实现上述功能。如图2详解所示,其工作流程根据从站是否有内置ID分为两种模式: ​​1. 从站无定义ID(或协议中无地址字段)​​ ​​主机侧​​:用户在原有私有协议的数据帧前,主动添加一个通道选择字节(如十六进制的A1至A8,分别对应通道1至8)。 ​​网关侧​​:设备接收到主机指令后,​​剥离并识别​​第一个字节(如A1),从而确定数据需要发往​​通道1​​。随后,它将剩余的原版数据帧直接发送给通道1上的从站。 ​​核心动作​​:​​地址码(通道选择字节)被丢弃​​,不干扰从站通信。这完美解决了从站协议无地址字段的问题。 ​​2. 从站有定义ID(但ID重复或不可修改)​​ ​​主机侧​​:同样,在发送的数据帧前添加通道选择字节(如A1)。 ​​网关侧​​:设备识别A1后,将数据发往​​通道1​​。但此时,它会执行一个关键操作:用从站的​​实际内置ID​​(例如01)​​替换​​掉主机指令中原本的ID。 ​​核心动作​​:​​地址码被替换​​。即使所有通道上的从站ID都是01,主机也能通过不同的通道选择字节(A1, A2...)精准地与每一个从站通信,从而化解ID重复难题。 ​​四、 工作方式与设置​​ 设备提供两种基本工作方式以适应不同场景: ​​分发方式​​:根据主机添加的地址码进行​​单一通道​​选通,实现与特定从站的“一对一”通信。 ​​广播方式​​:将数据同时发送到​​所有通道​​,适用于需要群发指令的场景。 ​​简易设置流程​​(见图1): 设备通电。 在40秒的设置窗口内,通过转换器任意一个RS485从口连接至电脑。 使用配套的​​设置软件​​进行参数配置,其中最关键是完成​​通道定义​​,即指定A1-A8与物理端口的对应关系。 设置完成后重启设备即可生效。 ​​五、 典型应用场景​​ ​​非标设备批量接入​​:将多条产线上协议私有、ID相同的多个老旧设备接入新的MES系统。 ​​传感器网络整合​​:整合大量地址固化或无地址的传感器,通过通道化将其“虚拟化”为有唯一地址的设备。 ​​协议桥接与标准化​​:作为桥梁,将复杂的私有协议网络转换为上层控制系统易于理解和访问的标准化接口。 ​​六、 总结​​ BSS-485ZD-RTU协议转换器以其对​​私有协议​​的深度支持和​​通道映射​​的创新设计,为集成商提供了一个极具灵活性的解决方案。它绕开了从站设备自身的限制,通过网关级的智能处理,将混乱的通信网络变得井然有序。这款设备尤其适用于设备利旧、多供应商设备整合等复杂场景,是降低集成难度、节省项目成本的强大工具。 --- ### 280. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、 设备概述​​ BSS-485232-R1U不仅是一款基础的Modbus TCP与RTU协议转换器,更是一个功能丰富的​​通信集线器与智能网关​​。它专为解决Modbus多从站系统集成中的各类棘手问题而设计,能够将基于TCP的网络主站请求,智能地分发到多条RS485总线上的众多从站设备。​​ 核心价值点:​​ •​​协议无缝转换​​:实现Modbus TCP与Modbus RTU/ASCII之间的双向透明传输。 •​​破解地址冲突​​:独创性地解决从站设备ID重复、不可修改或未知的工程难题。 •​​智能数据映射​​:支持对从站地址码和寄存器地址进行灵活重新映射,为上层主站提供统一、简洁的访问视图。 ​​二、 核心功能与解决的五大场景​​ 该转换器精准定位了Modbus TCP主站与RTU从站联网时最常见的五大痛点(如场景图所示): 1.​​基础协议通讯​​:Modbus TCP主站需要与Modbus RTU从站设备通信。 2.​​总线隔离与扩展​​:RS485总线需要隔离或扩展,避免单条总线负载过重或故障扩散。 3.​​从站ID重复​​:多个从站设备出厂ID重复且无法修改,传统总线无法共存。 4.​​从站ID未知​​:从站地址未知,需要借助广播地址进行寻址和识别。 5.​​统一ID管理​​:主站希望为所有从站重新分配一套统一、有序的逻辑ID,简化管理。 ​​三、 关键技术原理:映射与工作方式​​ ​​1. 两种智能工作方式​​设备提供两种核心工作模式,以适应不同通信需求: •​​分发方式​​:默认且最常用的模式。转换器根据内部预设的映射表,将主站请求中的“逻辑从站ID”解析为对应的​​物理RS485端口​​和该端口上从站的​​实际ID​​,实现精准的“一对一”指令下发。 •​​广播方式​​:当主站发送广播指令或指令不匹配任何映射规则时,设备可将指令同时发送给所有端口上的从站,适用于全局写操作或搜索未知设备。 ​​2. 地址码与寄存器重新映射(核心功能)​​这是本设备区别于普通转换器的关键所在,它通过两张映射表实现了通信的“翻译”与“路由”。 •​​地址码重新映射​​:此功能直接解决ID重复问题。 •​​运作机制​​:设备内部维护一张地址映射表。例如,主站认为自己在访问ID为1的从站,但映射表定义:逻辑ID 1对应 ​​端口1​​ 上实际ID为1的从站;逻辑ID 2对应 ​​端口2​​ 上实际ID也为1的从站。 •​​效果​​:即使物理上多个从站ID都是1,在逻辑上对主站而言,它们已是ID唯一(1, 2, 3...)的设备,完美化解冲突。 •​​寄存器重新映射​​:此功能进一步简化主站编程,统一数据视图。 •​​运作机制​​:设备内部维护另一张寄存器地址映射表。主站访问一个虚拟的、连续的寄存器地址空间,转换器将其映射到不同从站的实际寄存器地址。 •​​举例​​(如图中所示): •主站访问 0x0001-> 转换器映射为访问从站的 0x0100寄存器。 •主站访问 0x000A-> 转换器映射为访问从站的 0x0400寄存器。 •​​效果​​:主站可以像操作一个单一大型从站一样,轻松访问所有从站中离散的关键数据,无需记忆复杂的地址对应关系。 ​​四、 典型应用场景​​ 1.​​SCADA/MES系统接入​​:将车间内大量采用Modbus RTU的PLC、仪表、传感器等设备的数据,集中上传至基于以太网的监控系统(SCADA)或制造执行系统(MES)。 2.​​多供应商设备整合​​:在智能楼宇或能源管理中,整合不同品牌、Modbus地址规划混乱或ID冲突的设备(如空调、电表、水表),实现统一监控。 3.​​设备利旧与系统升级​​:在不更换现有RTU从站设备的前提下,快速将其接入新的物联网平台或云平台。 ​​五、 总结​​ BSS-485232-R1U智能协议转换器超越了简单的协议翻译角色,它是一个强大的​​通信整合与数据路由枢纽​​。其通过“地址重映射”和“寄存器重映射”等智能机制,以硬件网关的形式,优雅地解决了Modbus系统集成中最棘手的问题。对于系统集成工程师而言,它极大地降低了多从站、异构网络集成的复杂度和成本,是构建稳定、高效工业通信网络的理想选择。 --- ### 281. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ​​一、 设备概述​​ 这款Modbus RTU多从站转换器扮演着主站与多个从站之间的“智能中介”角色。它不仅实现了通信参数的转换,更核心的功能在于对Modbus的​​地址码​​和​​寄存器​​进行灵活的重新映射与统一管理,从而将混乱的从站网络整合成一个对主站而言清晰、有序的虚拟设备。 ​​核心价值:​​ ​​化解地址冲突​​:完美解决多个从站ID重复且无法修改的工程难题。 ​​统一寄存器映射​​:将不同从站分散的寄存器地址映射到主站熟悉的连续地址空间。 ​​兼容异构网络​​:允许主站与从站使用不同的串口通信参数(如波特率、数据位、停止位等)。 ​​二、 核心功能与解决的痛点​​ 设备精准地瞄准了Modbus RTU多从站通信中的四大痛点,如图2所示: ​​从站地址码(ID)重复​​:多个设备出厂设置均为同一ID(如都是1)。 ​​从站地址码需要重新统一编码​​:希望为所有从站分配一套有序的新ID。 ​​地址码需要重新映射​​:主站需要用一套逻辑地址来访问物理上分散的从站。 ​​寄存器需要重新映射​​:主站希望用一套连续的寄存器地址来访问不同从站中离散的寄存器。 ​​三、 工作原理:两种工作方式与映射机制​​ ​​1. 工作方式​​ 设备提供两种核心工作模式,以适应不同场景: ​​分发方式​​:这是最常用的模式。主站在发送的Modbus指令中携带一个“逻辑地址码”。转换器根据内部预设的映射表,将此逻辑地址解析为具体的​​物理端口​​和该端口上从站的​​实际ID​​,从而实现精准的“一对一”通信。 ​​广播方式​​:当主站指令中不包含特定地址码(或使用广播地址)时,设备可将指令同时发送给所有端口上的从站,适用于全局操作。 ​​2. 地址码统一与映射机制​​ 这是设备最关键的功能,其原理通过“从机地址码统一编码举例”图表清晰展示: ​​解决ID重复​​:当多个从站ID重复(例如都是ID=1)时,设备通过“端口号”来区分它们。主站只需访问“逻辑地址1”至“逻辑地址8”,转换器便会自动将指令路由到对应的端口1至端口8上的实际ID=1的从站。这样,即使物理上ID重复,在逻辑上对主站而言它们已是地址唯一的设备。 ​​统一管理​​:对于ID不重复但杂乱的从站,设备可以为其重新分配一套整齐的逻辑地址(如01-32),极大简化主站的轮询程序。 ​​3. 寄存器重新映射机制​​ 此功能进一步简化了主站的访问逻辑,如“主从机寄存器重新映射举例”所示: 设备内部维护一张寄存器映射表,定义了主站访问的“虚拟寄存器地址”与从站“实际寄存器地址”的对应关系。 ​​举例​​:主站认为自己在访问0x0001寄存器,但转换器在映射表中查到0x0001对应的是从站的0x0100寄存器。于是,转换器会自动将主站的请求改写为访问从站的0x0100寄存器。 通过此功能,主站可以像访问一个拥有连续寄存器的大型从站一样,去操作多个从站中离散的寄存器数据,无需关心底层复杂的地址关系。 ​​四、 典型应用场景​​ ​​设备利旧与系统集成​​:将多家供应商、Modbus地址规划不一的旧设备(如仪表、传感器)快速接入一个新的PLC或SCADA系统,无需修改任何从设备参数。 ​​批量同类设备管理​​:在楼宇自控或能源管理中,批量安装的智能电表、水表通常具有相同的出厂地址,利用此设备可轻松实现对每一块表的单独监控。 ​​协议简化与标准化​​:为上层应用提供一套干净、标准的Modbus访问接口,屏蔽底层设备的异构性和复杂性,降低软件开发与维护难度。 ​​五、 总结​​ 这款Modbus RTU多从站转换器不仅仅是一个简单的协议转换器,更是一个功能强大的​​通信整合与数据路由网关​​。它通过“逻辑”与“物理”分离的先进设计思想,以硬件网关的形式,优雅地解决了Modbus系统集成中最棘手的问题。对于系统集成工程师而言,它是快速构建稳定、可靠且易于维护的Modbus通信网络的“神器”,能显著降低工程难度和实施成本。 --- ### 282. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、 设备概述​​ 该设备是一款智能型协议转换网关。其核心使命是作为主站与多个从站之间的“智能代理”,不仅完成不同协议或接口(如485、TCP/UDP)的转换,更核心的功能是​​对从站设备的地址进行重新映射和统一管理​​。​​主要特性:​​ •​​协议转换​​:支持Modbus RTU、Modbus TCP及私有协议之间的相互转换。 •​​地址管理​​:解决从站ID重复、未知或不可修改的问题,并支持重新统一分配ID。 •​​工作模式​​:支持​​分发模式​​(按地址和通道精准通信)和​​广播模式​​(同时向所有从站发送数据)。 •​​灵活接口​​:兼容RS485、以太网(TCP/UDP)及虚拟串口。 ​​二、 核心功能与解决的实际问题​​ 设备主要解决了以下三类常见问题,如功能介绍图(图3)所示:​​ 【功能一】协议转换与ID/寄存器重映射 ​​这是设备的基础功能。它可以作为不同Modbus协议变体之间,甚至与私有协议之间的翻译网关。同时,它支持对从站设备的地址和寄存器地址进行重新分配,便于主站以统一的规约进行访问。​​ 【功能二】解决从站ID重复且不可修改的难题​​ 这是设备最突出的价值点。如图2结构示意图所示,当多条总线上的从设备出厂ID均为“01”且无法修改时,主站无法区分它们。 •​​解决方案​​:该设备将每个物理端口定义为一個“通道”(如通道1至通道8)。主站不再直接发送目标从站的ID,而是发送“通道号”和“该通道内从站的原始ID”。 •​​工作流程​​:主站查询“通道1上的ID=01的从站” -> 设备接收指令,将其转换为向通道1的物理总线上发送查询ID=01的从站 -> 从站响应后,设备再将响应数据返回给主站。这样,即使所有从站ID都是01,主站也能通过通道号精准定位。 ​​【功能三】处理从站ID未知或混乱的情况​​当从站ID未知或杂乱无章时,主站轮询困难。 •​​解决方案​​:利用Modbus广播地址(00)并结合通道定义。主站向某个通道发送广播指令,该通道上所有从站都会执行指令(如数据采集),但只有目标从站会响应。设备捕获响应后,主站即可知悉该从站的实际ID,并可后续利用功能二进行固定映射。设备也支持为这些混乱的从站重新分配一套有序的新ID(如01至32),极大简化主站编程。 ​​三、 工作原理详解​​ 设备通过“通道映射”机制实现上述功能,其工作方式主要有两种: 1.​​分发模式(主要模式)​​ •设备内部维护一张映射表,定义了​​主站发出的逻辑地址​​与​​物理通道号+从站实际ID​​的对应关系。 •​​示例​​(参考图1表格):主站想读取“通信号”为01的从站数据,它只需发送目标地址为01的指令。转换器在内部映射表中查找发现“通信号01”对应“通道1”上的“从站ID 02”。于是,它将指令中的目标地址改为02,并通过通道1的RS485总线发出,从而实现精准通信。 2.​​广播模式​​主站发送的数据会同时转发给所有通道上的从站设备。此模式适用于需要同时向所有设备下发相同指令的场景,如同步时间、同时启停。 ​​四、 应用场景​​ 1.​​设备利旧与系统集成​​:将仅支持Modbus RTU的老设备接入基于以太网(Modbus TCP)的新SCADA系统。 2.​​多供应商设备整合​​:当不同供应商的设备使用重复的Modbus地址时,无需更换设备即可实现系统集成。 3.​​智能仪表批量管理​​:在大型楼宇中,批量安装的智能电表或水表可能具有相同地址,通过此设备分通道连接,可实现对每一块仪表的单独抄读。 ​​五、 总结​​ BSS-485ZD-RTU协议转换器超越了简单的协议转换功能,它是一个强大的通信管理网关。其通过“通道化”管理的思想,将物理连接与逻辑地址解耦,以一种优雅且低成本的方式解决了Modbus系统集成中最令人困扰的地址冲突和管理混乱问题。对于系统集成商和工程师而言,这款设备是快速实现设备联网、构建稳定可靠工业通信网络的得力工具。 --- ### 283. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ​​一、 设备概述​​ 该设备型号为​​BSS-485QH-8​​,是一款​​八通道RS485通讯通道切换器​​。其核心功能是通过外部输入的3位开关量信号,动态选通主站端口与8个从站端口中的某一个进行通信,同时将其他7个端口隔离,避免总线冲突。 ​​主要特性:​​ ​​8路从站端口​​:可连接8条独立的RS485总线。 ​​1路主站端口​​:连接主控设备(如PLC、工控机)。 ​​开关量控制​​:通过Y14, Y15, Y16三个端子的电平状态(0/1)来选择通道。 ​​电气隔离​​:选通后,主口仅与所选通道通信,其他通道被禁止,确保总线稳定性。 ​​状态指示​​:配备LED显示屏,实时显示当前通道号及主从口通信状态。 ​​灵活供电​​:支持DC +12V 或 +24V宽压电源输入。 ​​二、 核心工作原理:开关量通道选择​​ 该设备最显著的特点是采用​​开关量信号​​而非软件指令进行通道切换,这使得它特别适用于由PLC直接控制的场景。 ​​1. 控制信号定义:​​ 设备提供了三个开关量控制端子:​​Y14, Y15, Y16​​。每个端子的电平状态(“1”代表高电平,“0”代表低电平)共同组成一个3位二进制数,用于选择目标通道。 ​​ 2. 开关量切换真值表:​​ 通道选择完全遵循以下真值表。用户通过改变Y16, Y15, Y14的电平组合,即可精确选通第1到第8通道。 Y16Y15Y14所选通道111通道1110通道2101通道3100通道4011通道5010通道6001通道7000通道8 ​​3. 开关量类型与接线:​​ 设备兼容三种常见的开关量信号类型,通过硬件选择区进行设置: ​​NPN​​: 漏型输出,公共端(COM)接电源正极(+V)。 ​​PNP​​: 源型输出,公共端(COM)接电源地(GND)。 ​​干节点​​: 无源触点信号(如继电器触点),直接接入控制端子和COM端。 ​​开关量稳定时间约为5ms​​,这意味着在切换开关量后,需短暂延迟以确保通道稳定切换。 ​​三、 工作状态指示​​ 设备通过一个两位的LED显示屏提供直观的状态反馈,其显示格式为 通道号.状态码。 ​​通道号​​:显示当前开关量选中的通道(1-8)。 ​​状态码​​:显示主从口通信状态。 ​​0​​: 表示已选中该通道,但​​主口未收到​​从站返回的应答信息。 ​​3或5等数字​​: 表示已选中该通道,且​​主口已收到​​从站返回的应答信息,数字具体代表通信质量或信号强度。 ​​示例:​​ ​​显示 1.0​​: 当前选中通道1,主设备正在发送指令或从设备未响应。 ​​显示 5.5​​: 当前选中通道5,并且与通道5上的从设备通信正常。 ​​四、 典型应用场景​​ 这款切换器非常适用于以下场景: ​​一主多从系统扩展​​:一台PLC需要轮询访问超过RS485地址上限(通常为32个)的从设备时,可将从设备分组连接到8个通道,通过切换器分时访问。 ​​多总线隔离​​:在复杂的电磁环境中,将不同区域的设备分配到不同的总线,并通过切换器隔离,减少相互干扰。 ​​冗余备份系统​​:当某条总线或某组从设备出现故障时,可快速切换到备用的总线通道,提高系统可靠性。 ​​五、 总结​​ 这款基于开关量控制的RS485通道切换器,以其硬件级切换的可靠性、操作的简便性和直观的状态指示,为多分支RS485网络提供了一种高效、经济的集中管理方案。它完美地桥接了数字量控制与串行通信领域,特别适合在由PLC主导的自动化控制系统中扮演“交通指挥官”的角色,实现有条不紊的多路通信管理。 --- ### 284. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在智慧农业与精细化灌溉成为主流的今天,一套高效、稳定、智能的灌溉系统是现代农业不可或缺的基础设施。智能恒压灌溉系统,作为其中的核心技术方案,正以其卓越的性能和灵活的管理方式,彻底改变着传统灌溉模式,为农田、果园、绿化等领域的节水增效提供了强大支撑。 ​​一、 系统核心原理:什么是“恒压”灌溉?​​ 传统灌溉中,水泵通常以固定转速运行,当同时开启的阀门数量变化时(如不同灌区轮换灌溉),管道内的水压会产生剧烈波动。水压过高易损坏管道和喷头,水压过低则导致末端灌溉不均,严重影响效果。智能恒压灌溉系统的核心目标,正是为了解决这一痛点。其基本原理是: •​​实时感知​​:系统通过高精度压力传感器,持续监测管网内的实时压力值。 •​​智能比对​​:将监测到的实际压力值与用户根据灌溉需求预先设定的​​最优压力阈值​​进行比对。 •​​自动调节​​:系统通过自动化控制核心,对水泵电机进行​​无级调速​​。当用水量增大、压力降低时,自动提高水泵转速以稳定压力;当用水量减少、压力升高时,则自动降低转速。 •​​稳定输出​​:通过这种动态调节,无论灌溉管网末端的阀门如何启闭,系统都能将管道压力维持在一个稳定的设定值范围内,从而确保每一个出水点都能获得均匀、恒定的水流。 ​​二、 系统的关键技术组成与工作流程​​ 一个完整的智能恒压灌溉系统,通常由以下几大关键模块构成: 1.​​感知层​​:包括管网压力传感器、土壤墒情传感器、气象站等,负责采集环境与设备运行数据。 2.​​控制层​​:核心为变频控制柜和系统主控制器。变频器接收指令,实现对水泵电机的平滑调速;主控制器则是系统的大脑,负责数据处理和逻辑判断。 3.​​执行层​​:包括水泵电机、各类电磁阀或电动阀等,负责具体执行灌溉动作。 4.​​平台层​​:基于物联网的云平台,用户可通过电脑网页或手机APP远程访问,实现全天候、不限地点的监控、策略设置和手动控制。 ​​工作流程​​可简述为:传感器数据 → 云端/本地控制器分析 → 下发指令至变频器 → 调节水泵转速 → 反馈压力数据,形成一个高效的闭环自动控制系统。 ​​三、 智能恒压灌溉系统的核心优势与特点​​ 该系统的价值远不止于“恒压”,其带来的综合效益体现在以下几个方面: •​​高效节能,降本显著​​:水泵的耗电量与转速的三次方成正比。系统通过降低转速来适应实际需求,避免了工频运行下的“大马拉小车”现象,节电效果通常可达30%以上。 •​​消除水锤,保护设备​​:电机缓慢启动和停止,彻底消除了因阀门骤启骤闭产生的破坏性水锤效应,极大延长了水泵、管道和阀门的使用寿命。 •​​精准灌溉,提升品质​​:恒定的压力保证了喷灌、滴灌等灌溉方式的均匀度,结合土壤墒情数据,可实现按需灌溉,促进作物生长,提升农产品产量与品质。 •​​高度自动化,节省人力​​:系统支持丰富的灌溉模式: •​​定时灌溉​​:设定固定的启停时间。 •​​循环灌溉​​:为多个灌区设定轮灌顺序。 •​​条件触发灌溉​​:根据土壤湿度下限自动开启,达到上限自动停止。 •​​远程手动控制​​:通过APP随时随地进行应急操作。 •​​稳定可靠,适用性广​​:采用工业级设计,防水防尘,能适应野外恶劣环境。同时,系统具备高度灵活性,可通过无线网络模块轻松扩展,适用于从小型温室大棚到数千亩农田等不同规模的场景。 •​​水肥一体化集成​​:可轻松接入水肥一体机,在恒压供水的同时,按比例精准施加肥料,实现水肥同步管理和高效利用。 ​​四、 广泛的应用场景​​ 该系统的适用性极强,几乎覆盖了所有有精准灌溉需求的领域: •​​大田农业​​:玉米、小麦、棉花等大田作物的节水灌溉。 •​​果园与经济林​​:果园、茶园、枸杞等对灌溉均匀度要求高的经济作物。 •​​设施农业​​:连栋温室、日光温室的蔬菜、花卉种植。 •​​园林绿化​​:城市公园、广场、道路两侧的绿化带养护。 •​​高尔夫球场与足球场​​:大面积草坪的精准养护。 ​​总结​​ 总而言之,智能恒压灌溉系统是现代信息技术与农业灌溉技术深度融合的典范。它不仅仅是一个简单的供水设备,更是一套集成了自动控制、物联网、大数据分析的综合性解决方案。通过实现恒压供水、精准控制和智能管理,它有效解决了传统灌溉中的诸多弊病,在显著节约水电资源和人力资源的同时,提升了农业生产的智能化水平和抗风险能力,是推动现代农业向资源节约型、环境友好型方向发展的重要技术力量。 --- ### 285. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 系统概述与技术架构 智慧温室大棚系统是基于Modbus农业云平台的现代化农业种植管理系统,通过集成物联网传感器、智能控制设备、云计算等先进技术,实现对温室环境的精准监测与智能调控。系统支持多种通讯方式,包括以太网、WIFI、4G/5G网络,可根据用户现场情况灵活选择,为农作物生长创造最佳环境条件。 核心系统架构 ​​云端平台层​​ 智能云平台:具备自动上传、数据分析、历史记录、智能预警功能 远程监控系统:支持电脑、手机等多终端远程访问 聚英云平台:数据存储与边缘计算中心 ​​网络传输层​​ 支持5G/4G/WIFI/以太网多种通讯方式 实现温室环境数据实时传输 远程控制指令下发 ​​现场设备层​​ 环境监测传感器:空气温湿度、土壤墒情、光照度、CO2浓度等 智能控制设备:卷帘系统、灌溉系统、通风系统、补光系统等 执行机构:电磁阀、风机、水泵、卷帘机等 系统核心功能详解 环境智能监测系统 ​​全方位数据采集​​ 系统通过高精度传感器实时监测温室环境多项参数: 空气温度监测范围:-40℃~120℃,精度±0.3℃ 空气湿度监测范围:0-100%RH,精度±3% 土壤温度监测范围:-30℃~70℃,精度±0.2℃ 土壤湿度监测范围:0-100%,精度±2% CO2浓度监测范围:0-2000ppm,精度±(50ppm+3%读数) 光照度监测范围:0-18.8万lux,精度0.45lux ​​土壤墒情精准监测​​ 土壤墒情监测系统实现全天候不间断监测,自动采集土壤温湿度、EC值等数据,通过无线网络传输至监控中心,为精准灌溉提供科学依据。 智能控制系统 ​​三重控制模式​​ ​​远程云端控制​​:通过PC端或手机APP远程控制 ​​本地触摸控制​​:现场触摸屏直观操作 ​​手动按钮控制​​:应急情况下手动 override 控制 ​​灌溉智能控制​​ 支持定点、定时、循环灌溉模式 根据土壤湿度阈值自动触发灌溉 轮灌控制,合理分配水资源 ​​水肥一体化管理​​ 实现氮磷钾肥自动调配,多种营养液精准配比,实时监测PH、EC参数,确保肥料科学施用。 ​​环境智能调控​​ 自动卷帘控制:根据温湿度自动调节 智能补光控制:光照不足时自动补光 通风系统控制:根据CO2浓度自动调节 温湿度精准控制:设定阈值自动调节 系统技术优势 智能化程度高 系统采用DLC智能自控技术,具备边缘计算能力,能够根据农作物生长模型自动调整环境参数,实现真正意义上的智能化管理。 灵活扩展性强 系统提供4通道、8通道、16通道、32通道多种配置选择,满足不同规模温室需求: 4通道配置:适用于小型温室,基础环境监测 8通道配置:支持水肥一体化控制 16通道配置:多区域独立控制 32通道配置:大型连栋温室全面监控 全季节适应能力 系统具备季节模式自适应功能,根据不同季节特点自动调整控制策略: ​​ 冬季模式​​ 根据作物耐寒能力设置卷帘时间 保证充足采光的同时合理通风 防止低温冻害发生 ​​夏季模式​​ 自动控制遮阳网、风机、湿帘 有效降温调湿 防止高温热害 ​​春秋季节模式​​ 科学设置灌溉时长 合理调节通风时间 保持适宜土壤湿度 数据价值挖掘 系统自动记录保存所有环境参数数据,通过modbus云平台进行大数据分析,为农作物栽培工艺改进提供数据支撑,不断优化种植方案。 实际应用价值 提升生产效率 减少人工投入90%以上 实现24小时无人值守自动化运行 多温室集中统一管理 提高作物品质 为作物提供最佳生长环境 精准控制水肥施用 减少病虫害发生几率 节能降耗显著 合理利用自然资源 减少水资源浪费30-50% 降低能耗20-30% 科学种植管理 数据驱动决策支持 种植经验数字化沉淀 标准化生产流程 系统配置方案 根据温室规模和使用需求,系统提供多种配置选择: 通道数传感器配置控制功能适用规模4通道基础环境监测基本控制小型温室8通道水肥一体化中级控制中型温室16通道多区域监测高级控制大型温室32通道全面监测全面智能控制连栋温室 总结与展望 智慧温室大棚系统通过物联网、大数据、人工智能等先进技术与传统农业深度融合,实现了农业生产过程的智能化、精准化、自动化管理。系统不仅解决了传统温室管理中的痛点问题,更为现代农业的标准化、规模化发展提供了可靠的技术支撑。 随着技术的不断进步,智慧温室大棚系统将继续向更加智能化、精细化的方向发展,为推动我国农业现代化进程发挥重要作用。 --- ### 286. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 系统概述: 大田农业环境面临供电困难、面积广阔、布线成本高昂、维护复杂等行业痛点。聚英LORA无线智能灌溉系统应运而生,基于LORA无线扩频和4G/网络通讯技术,通过LORA网关+LORA无线控制终端+LORA无线采集终端的硬件组合,结合聚英农业物联网平台,实现远程不限距离的数据采集和控制功能。 系统核心优势 1. 覆盖范围广,组网灵活 ​​通讯距离​​:LORA无线传输最远达3km,可覆盖几十至上百亩农田 ​​组网能力​​:自带电池无需布线,低功耗运行,支持多节点组网 ​​传输稳定​​:采用扩频通讯技术,多信道信号增强链路稳定性 2. 精准灌溉,智能调控 系统通过湿度、光照度、液位、压力、风速风向等LORA无线采集器,实时监测农田环境参数,结合作物种类及生长阶段的需水规律,实现​​三种灌溉模式​​: ​​远程灌溉​​:通过手机APP/电脑远程控制阀门启闭 ​​定时灌溉​​:预设灌溉时间自动执行 ​​循环灌溉​​:按设定参数循环运行 3. 低功耗设计,持久耐用 ​​电池续航​​:内置锂电池可工作3-5年 ​​功耗控制​​:1分钟上传一次数据,静态功耗<20uA ​​防护等级​​:IP68防水,铸铝外壳,适应高温高湿环境 系统架构与工作原理 硬件组成 设备类型功能特点技术参数LORA网关数据中转中心支持4G/以太网/WIFI阀门控制器控制灌溉执行3.6V-12.8V多电压选择环境采集器监测气象数据温湿度、光照度等土壤墒情采集器检测土壤参数湿度、温度等 通讯架构 传感器数据 → LORA采集终端 → LORA网关 → 云平台 → 用户终端 控制指令 → 用户终端 → 云平台 → LORA网关 → LORA控制终端 系统功能特点 智能控制功能 ​​精准灌溉控制​​ 远程设定开启/结束时间及灌溉时长 根据作物需水规律定制灌溉策略 实时状态反馈,异常及时报警 ​​智能联动控制​​ 结合土壤墒情检测系统自动灌溉 基于气象数据智能调整灌溉方案 支持与水泵、施肥设备联动 ​​多重控制模式​​ 远程手动控制 自动定时控制 条件触发控制 管理监控功能 ​​实时监控​​:电池电压、信号强度、设备状态实时显示 ​​报警提示​​:微信、短信、APP多方式报警推送 ​​数据分析​​:自动生成曲线图,支持数据导出分析 设备选型指南 阀门控制器规格对比 参数3.6V控制器7.2V控制器10.8V控制器12.8V控制器无线频率470-510MHz470-510MHz470-510MHz470-510MHz传输距离3km(空旷)3km(空旷)3km(空旷)3km(空旷)阀门类型电动球阀脉冲阀门电动蝶阀电动蝶阀适用管径DN15/25DN50-150DN125/150DN200/250 应用场景与价值 适用场景 ​​大田农业​​:小麦、玉米等大田作物灌溉 ​​经济作物​​:果园、茶园、药材种植 ​​市政绿化​​:公园、草坪、绿化带养护 ​​设施农业​​:温室大棚、连栋薄膜温室 应用价值 ​​节水增效​​:精准灌溉节约用水30-50% ​​省工省时​​:减少人工成本,提高管理效率 ​​提质增产​​:科学灌溉提升作物品质和产量 ​​智能管理​​:实现农业生产的精细化管理 总结 大田智能灌溉系统通过先进的物联网技术,解决了传统大田灌溉中的供电、布线和维护难题,实现了灌溉作业的智能化、精准化和自动化。系统具备安装简便、扩展性强、适用性广等特点,是现代智慧农业发展的理想选择。 ​​ --- ### 287. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 系统概述与技术原理 大型连栋式塑料温室是近十几年来迅速发展的一种现代化农业设施,在全球范围内得到了广泛应用。与传统玻璃温室相比,薄膜连栋温室具有明显的优势:重量轻、骨架材料用量少、结构件遮光率小、造价低、使用寿命长。更重要的是,其环境调控能力已经达到甚至超过玻璃温室的水平,成为现代温室产业发展的主流选择。 薄膜连栋温室大棚智能监控系统是基于传统联动温室大棚的创新升级,集成了现代物联网传感器终端、先进通信技术、智能控制终端、环境调控设备和云平台监控系统于一体的综合解决方案。该系统通过智能化手段实现了对温室环境的精准监测与自动调控,大幅提升了农业生产效率和管理水平。 系统核心组成部分详解 环境监测传感器网络 ​​CO2监测系统​​ 测量范围:0-2000ppm 测量精度:±(50ppm+3%读数) 功能特点:实时监测温室内的二氧化碳浓度,为光合作用提供最优环境条件,有效促进作物生长。 ​​光照度监测系统​​ 测量范围:0-18.8万lux 测量精度:0.45lux 应用价值:根据光照强度自动调节遮阳系统,确保作物获得适宜的光照条件。 ​​空气温湿度监测​​ 温度范围:-40-120℃ 温度精度:±0.3℃ 湿度范围:0-100%RH 湿度精度:±3.0% 技术优势:高精度监测为环境调控提供可靠数据支持。 ​​土壤温湿度监测​​ 温度范围:-30-70℃ 温度精度:±0.2℃ 湿度范围:0-100% 湿度精度:±2.0% 特殊功能:为精准灌溉提供科学依据。 智能环境调控设备系统 ​​电动卷膜器系统​​ 通过先进的电动卷膜器实现温室顶部和侧部薄膜的自动开合,有效排除温室内的余热和多余水分,维持适宜的温度环境。系统能够智能调整室内空气成分,排出有害气体,提高空气质量,实现高效的自然通风效果。 ​​ 智能遮阳网系统​​ 采用电机驱动传动机构,通过传动轴和连接件带动驱动杆平行移动,实现遮阳幕布的平稳展开与收拢。系统配备精密的行程限位器开关,确保运行安全可靠。控制箱提供手动与自动双重控制模式,满足不同管理需求。 ​​ 内遮荫幕系统功能​​ 夏季工作时,保温遮荫幕能有效反射部分多余阳光,使光线均匀漫射进入温室,既保证作物正常生长所需光照,又有效降低室内温度积聚,可实现3-5℃的降温效果。冬季使用时,能显著减少室内红外线外逸,降低热损失,实现节能降耗。 ​​ 湿帘/风扇降温系统​​ 基于水蒸发吸热原理,通过湿帘、水泵和大流量风机的协同工作,实现高效降温。系统核心技术创新在于确保水分均匀分布在整个湿帘表面,从而实现最佳的热交换效率。 ​智能雾喷系统​​ 移动式雾喷系统不仅用于育苗温室的灌溉作业,还兼具加湿和降温功能。系统根据温室跨度设置多趟喷雾装置,每趟均可通过电磁阀实现独立精准控制。 智能控制中心架构 温室大棚智能监控柜作为系统的"大脑",采用先进的数据采集技术,支持RS485有线和无线LoRA通讯方式。系统内置智能算法和PLC可编程逻辑控制器,具备自动判断传感器数据、智能识别阈值上下限、自动输出控制信号等核心功能,实现各环境调控设备的智能联动。 物联网云平台功能 物联网监控平台具备强大的数据处理和分析能力,通过可视化界面实时显示温室环境参数和设备运行状态。平台支持远程参数设置、历史数据查询、报警信息管理、生产报表生成等功能,为管理者提供全面的决策支持。 系统技术优势与创新特点 智能化生产工艺管理 传统温室大棚管理模式依赖人工经验,存在不可复制和难以推广的局限性。本系统通过内置智能算法结合农业物联网平台的大数据边缘计算功能,实现了作物生产数字模型的可控化和标准化。不同作物在不同生长阶段的环境参数要求均可通过系统进行精确设定和自动执行,真正实现了工厂化的温室种植模式。 节能环保效益显著 系统通过智能调控各类环境设备,实现能源的优化利用。内遮荫幕系统的夏季降温和冬季保温功能,可显著降低能耗成本。据实际应用数据显示,系统运行可降低能耗20-30%,大大提升了温室种植的经济效益。 精准农业实践典范 系统通过对环境因子的实时监测和精准调控,为作物生长创造最佳条件。这种精准化的管理方式不仅提高了作物产量和品质,还减少了水资源和肥料的浪费,符合现代农业可持续发展的要求。 实际应用效果分析 管理效率提升 系统实现了温室环境的全自动智能监控,大幅减少了人工干预需求。传统温室需要专人定时巡查、记录数据、手动操作设备,而本系统可实现无人值守自动化运行,管理人员可通过电脑或手机远程监控和管理多个温室,管理效率提升显著。 作物产量与品质改善 通过为作物提供最适宜的生长环境,系统有效促进了作物的健康生长。实际应用案例表明,使用该监控系统的温室相比传统管理模式,作物产量平均提高15-25%,产品品质也有明显提升。 生产标准化与可复制性 系统将成功的种植经验转化为可执行的生产工艺参数,实现了农业生产技术的标准化和可复制化。这为农业技术的推广和规模化生产提供了有力支持,特别适合大型农业企业和农业合作社使用。 未来发展趋势与展望 随着物联网、大数据、人工智能技术的不断发展,薄膜连栋温室大棚监控系统将向更加智能化、精细化的方向演进。未来系统将集成更多的AI决策功能,能够根据作物生长模型和市场需求预测,自动优化生产策略,实现真正的智慧农业。 结语 薄膜连栋温室大棚智能监控系统代表了现代农业发展的先进方向,通过技术创新实现了农业生产方式的转型升级。该系统不仅解决了传统温室管理中的诸多难题,更为现代农业的规模化、标准化、智能化发展提供了可靠的技术支撑。随着技术的不断进步和应用的深入推广,相信这一系统将在推动我国农业现代化进程中发挥越来越重要的作用。 如果您需要了解更详细的技术参数或定制化解决方案,欢迎随时联系我们的技术团队,我们将为您提供专业的技术支持和服务。 --- ### 288. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 (1)便携式水位移动监测终端: ▲含遥测终端机、压力式水位计、翻斗式雨量计、触摸显示屏、锂电池、避雷器、拉杆式外箱; 通信方式:单北斗技术标准+公网; 锂电池容量:不低于12V-24AH(含充电器); 数据存储容量:1年以上水雨情数据。 (2)600W移动电源:电池容量:≥600Wh;电源输出接口:支持车充输出、USB-A输出、USB-C输出、AC输出;充电方式:太阳能充电、AC交流充电、车充充电;支持电量数字显示。 (3)穿戴式图传设备:其他标段采购。 (4)移动WIFI:5G传输。 (5)智能飞行浮标:定位方式为RTK,单北斗技术标准;飞行续航时间:≥10分钟;飞行速度:≥10m/s;数据显示:位置、水深及流速;定位精度:≤0.05m;测流精度:≤0.2m/s;测深距离:≥50m;▲防护等级:≥IP67。(6)小型无人机:▲主摄像素数:≥1200万;实时图传质量:≥720p;最大抗风速:6级;电池容量:≥40Wh;最大飞行时间:≥20min;配套存储卡:≥128G;配套充电器、遥控器、飞行眼镜、配件等。 --- ### 289. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲测量原理:时域反射技术(TDR); 计算公式:提供测量所依据的土壤体积含水率与该参数的关系公式; 测量量程: 0~60%(体积含水量); 绝对误差: ≤2%(体积含水量); 分辨力: ≤0.1%(体积含水量); 工作温度: -10~60℃; 存储温度: -40~85℃; 待机电流: ≤30mA; 通讯接口:RS232、RS485、LAN、USB; 存储容量:1GB(可存储1年的图片及历史数据); 防护等级:IP65; 运行制式:自报及应答; 采集自报:可设置开始采集时间和间隔时间,时间范围1min~30d;终端主动发送; 可显示、主动发送电源电压、各端口工作状态; --- ### 290. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 测量范围:0~45m; 测量精度:±3mm; 分辨率:1mm; 工作频率:24.25GHz; 工作原理:调频连续波(FMCW) 发射功率(EIRP):16~25dBm(根据水体变化规律智能调节); 响应时间:最快100ms,10s输出平均测量值; 波束角:10; 天线:平面微带阵列天线; 输出接口:RS232/RS485,数字接口。 安装辅材:信号线、PVC水管等。 --- ### 291. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 量程:0~5m;0~10m;0~15m;0~20m;0~30m;0~40m;0~50m;0~60m;0~70m:0~80m; 测量精度:±1cm(可选全量程:0.05%,全量程士0.03%); 分辨率:1mm; 工作温度:-20~+70℃; 存储温度:-40~+80℃; 采集间隔:5s~24h可设置; 输出接口:RS232/RS485,数字接口; 防护等级:IP54或以上。 安装辅材:信号线、PVC水管等。 --- ### 292. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 量程:0~7,10,20,35,70,100m或定制; 分辨率:0.01cm; 精度等级:+0.5% FS、+0.1% FS (可选); 输出接口:RS232/RS485,数字接口; 安装辅材:信号线、PVC水管等。 --- ### 293. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 量 程:液体:0~15m/20m/30m/40m; 测量精度:量程的0.2%; 分辨率:实际量程的0.03%; 输出负载:0~500Ω; 开关量输出:高位、低位继电器常开; 继电器规格:AC250V 5A/DC30V; 显示分辨率:lcm; 显示方式:4位LCD液晶(字高15cm) 或6位LED数码管; 外壳材质:ABS; 传感器材质:PVC; 防护等级:IP65或以上; 输出接口:格雷码/RS232/RS485,数字接口。 安装辅材:信号线、PVC水管等。 --- ### 294. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲工作频率:1200 kHz; 测量距离:0.1-5m; 流速:     测量范围:±5m/s;     分辨率:0.001m/s;     准确度: ±1% 或 ±0.5 cm/;     水位:     测量范围:10m;     准确度:±0.1%;     分辨率:0.01米;     数据输出格式:RS232、RS485; 传输方式:电缆、光纤有线直连,移动公网无线采集、传输,电台短波通讯; 内存:4M(超过存储200,000个数据),断电时数据不丢失; 内置时钟、日期; 功耗:≤3.5 W; 温度测量范围:-10°C至60°C;温度分辨率:±0.1°C;温度准确度:±0.5°C;     软件:中文软件,进行测量控制、数据采集、数理统计、绘图、制表、流量、水位年报表与月报表输出,率定关系式的快速建立等; ▲每套设备需配置1台与ADCP设备相配套的满足操作与数据分析处理的终端; 满足浮标等安装方式; ▲承包人须提供完整和有效的安装调试方案以及设备防雷措施方案,保证仪器最大限度受到保护; ▲安装支架采用导轨式,采用316不锈钢设计,须有防盗措施。安装包含潜水作业(费用含在投标报价中,不单列); --- ### 295. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 (5)在线水平H-ADCP:频率类型(1200 KHz) ▲工作频率:1200 KHz; 水平测量距离:≥50m; 流速:     测量范围:±5m/s;     分辨率:0.001m/s;     准确度:0.5%±0.2cm/s;     水位:     测量范围:0.2-20m;     准确度:±0.1%;     分辨率:0.001米;     数据输出格式:RS232、RS485; 传输方式:电缆、光纤有线直连,移动公网无线采集、传输,电台短波通讯; 内存:4M(超过存储200,000个数据),断电时数据不丢失; 内置时钟、日期; 功耗:≤3.5 W; 温度测量范围:-10°C至60°C;温度分辨率:±0.1°C;温度准确度:±0.5°C;     软件:中文软件,进行测量控制、数据采集、数理统计、绘图、制表、流量、水位年报表与月报表输出,率定关系式的快速建立等; ▲每套设备需配置1台与ADCP设备相配套的满足操作与数据分析处理的终端; ▲承包人须提供完整和有效的安装调试方案以及设备防雷措施方案,保证仪器最大限度受到保护; ▲安装支架采用导轨式,采用316不锈钢设计,须有防盗措施。安装包含潜水作业(费用含在投标报价中,不单列); --- ### 296. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲工作频率:600 KHz; 水平测量距离:≥110m; 流速:     测量范围:±5m/s;     分辨率:0.001m/s;     准确度:0.5%±0.2cm/s;     水位:     测量范围:0.2-25m;     准确度:±0.6cm(深度<6m)、±0.1%(深度>6m);     分辨率:0.001米;     数据输出格式:RS232、RS485; 传输方式:电缆、光纤有线直连,移动公网无线采集、传输,电台短波通讯; 内存:4M(超过存储200,000个数据),断电时数据不丢失; 内置时钟、日期; 功耗:≤3.5 W; 温度测量范围:-10°C至60°C;温度分辨率:±0.1°C;温度准确度:±0.5°C;     软件:中文软件,进行测量控制、数据采集、数理统计、绘图、制表、流量、水位年报表与月报表输出,率定关系式的快速建立等; ▲每套设备需配置1台与ADCP设备相配套的满足操作与数据分析处理的终端; ▲承包人须提供完整和有效的安装调试方案以及设备防雷措施方案,保证仪器最大限度受到保护; ▲安装支架采用导轨式,采用316不锈钢设计,须有防盗措施。安装包含潜水作业(费用含在投标报价中,不单列); --- ### 297. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲工作频率:500 KHz~600 KHz; 水平测量距离:≥110m; 流速:     测量范围:±5m/s;     分辨率:0.001m/s;     准确度:实测流速之+1%,+0.005m/s;     水位:     测量范围:0.2-25m;     准确度:±0.6cm(深度<6m)、±0.1%(深度>6m); 分辨率:0.001米; 数据输出格式:RS232、RS485; 传输方式:电缆、光纤有线直连,移动公网无线采集、传输,电台短波通讯; 内存:4M(超过存储200,000个数据),断电时数据不丢失; 内置时钟、日期; 功耗:≤6 W;     温度测量范围:-5至60°C;温度分辨率:0.01°C;温度准确度:±0.5°C;     软件:中文软件,进行测量控制、数据采集、数理统计、绘图、制表、流量、水位年报表与月报表输出,率定关系式的快速建立等; ▲每套设备需配置1台与ADCP设备相配套的满足操作与数据分析处理的终端; ▲承包人须提供完整和有效的安装调试方案以及设备防雷措施方案,保证仪器最大限度受到保护; ▲安装支架采用导轨式,采用316不锈钢设计,须有防盗措施。安装包含潜水作业(费用含在投标报价中,不单列); --- ### 298. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲工作频率:300 KHz; 水平测量距离:≥250m; 流速:     测量范围:±6m/s;     分辨率:0.001m/s;     准确度:实测流速之+1%,+0.005m/s;     水位:     测量范围:0.2-30m;     准确度:±0.6cm(深度<6m)、±0.1%(深度>6m); 分辨率:0.001米; 压力传感器误差:≤0.25%; 水平波束角指向角:≤2.2º;     旁瓣抑制:>15dB,最大限度减少来自水面或河底反射的干扰;     换能器:≥水平20°交角两波束,二维流速测量,带垂直波束水位计; 数据输出格式:RS232、RS485; 传输方式:电缆、光纤有线直连,移动公网无线采集、传输,电台短波通讯; 内存:4M(超过存储200,000个数据),断电时数据不丢失; 内置时钟、日期; 功耗:≤6 W;     温度测量范围:-5至60°C;温度分辨率:0.01°C;温度准确度:±0.5°C;     软件:中文软件,进行测量控制、数据采集、数理统计、绘图、制表、流量、水位年报表与月报表输出,率定关系式的快速建立等; ▲每套设备需配置1台与ADCP设备相配套的满足操作与数据分析处理的终端; ▲承包人须提供完整和有效的安装调试方案以及设备防雷措施方案,保证仪器最大限度受到保护; ▲安装支架采用导轨式,采用316不锈钢设计,须有防盗措施。安装包含潜水作业(费用含在投标报价中,不单列); --- ### 299. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲工作频率:150 KHz; 水平测量距离:≥350m; 流速:     测量范围:±6m/s;     分辨率:0.001m/s;     准确度:实测流速之+1%,+0.005m/s;     水位:     测量范围:0.2-30m;     准确度:±0.6cm(深度<6m)、±0.1%(深度>6m); 分辨率:0.001米; 压力传感器误差:≤0.25%; 水平波束角指向角:≤2.2º;     旁瓣抑制:>15dB,最大限度减少来自水面或河底反射的干扰;     换能器:≥水平20°交角两波束,二维流速测量,带垂直波束水位计; 数据输出格式:RS232、RS485; 传输方式:电缆、光纤有线直连,移动公网无线采集、传输,电台短波通讯; 内存:4M(超过存储200,000个数据),断电时数据不丢失; 内置时钟、日期; 功耗:≤6 W;     温度测量范围:-5至60°C;温度分辨率:0.01°C;温度准确度:±0.5°C;     软件:中文软件,进行测量控制、数据采集、数理统计、绘图、制表、流量、水位年报表与月报表输出,率定关系式的快速建立等; ▲每套设备需配置1台与ADCP设备相配套的满足操作及数据分析处理的终端; ▲承包人须提供完整和有效的安装调试方案以及设备防雷措施方案,保证仪器最大限度受到保护。 ▲安装支架采用导轨式,采用316不锈钢设计,须有防盗措施。安装包含潜水作业(费用含在投标报价中,不单列); --- ### 300. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1)船体参数: ▲船体自重:≤13Kg; 船体长度:≤1.2m; 船体设计:M型船底设计; 船体材料:碳纤维、凯夫拉防弹布高强度复合材料; ▲负载功能:可搭载测深仪、各型号走航ADCP; 抗风浪等级:3级风,2级浪; 防护等级:IP67或以上; 防护措施:船身配备防撞胶条,船头加厚防撞胶条,船底加装耐磨件; 摄像头:360°云台摄像头; ▲安全功能:具备避障悬停,视频观察,低电量返航,失联返航,浅水悬停; 供电模式:锂电池供电,具备智能管理功能; 动力装置:模块化涵道式推进器,插拔设计,配备防水草网,可快速拆卸; 推进器类型:直流无刷电机驱动,支持无舵机转向技术和‘倒车’航行技术; ▲最大航行速度:≥5m/s; 电机类型:无刷电机; 通讯方式:电台&网络&CORS; 马达功率:双马达,每个马达功率大于或等于1000W; 通讯控制距离:数传电台不小于2km, 4G/5G无限制。 2)配套测深仪: ▲工作频率:≥200KHz; 测深范围:0.15-300m; 测深精度:±1cm+0.1%h(h代表水深),分辨率1cm。 3)配套软件: 控制软件:具备任务规划、数据采集等功能,可实现自主导航、船体参数控制、多角度视频、显示和坐标转换等功能; 监测软件:具备实时监测无人船状态的功能; --- ### 301. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲工作频率:300KHz; ▲内置罗经并支持外接GNSS罗经(单北斗); 流速剖面最大测量距离:不低于200m; 流速测量范围:±5m/s(默认)±20m/s(最大); 流速测量精度:实测流速的±0.5%、±0.002m/s;流速分辨率:不大于1mm/s; 内部储存容量:不低于2G; 温度传感器:精度/分辨率±0.2℃/0.01℃; 航向传感器:精度/分辨率±0.5°/0.01°; 倾斜度传感器:精度/分辨率±0.2°/0.01°; 输入电压:10-18VDC; 工作温度: -5℃~45℃;储存温度: -20℃~50℃; 通讯协议:支持RS232、RS422、RS485、WIFI; 通讯模式:可实现仪器主机与数据处理终端之间的无线通讯,通讯距离200m,还可通过配置的电源信号线实现有线通讯; ▲配件:三体船、一条不短于5米的通信电缆线、配套操作软件、后处理软件、中文用户手册、专用安装工具、仪器运输箱、USB转串口线等; 操作软件:包含测量软件和后处理软件,支持输出符合水文规范要求的流量测验成果记载表和实测流量成果表;数据格式:支持将ADCP测量计算得到的流速、流量、水深和断面面积等数据以ASCII码文件格式进行输出后处理; ▲需配置无线电台,支持数据通信传输功能; ▲每套设备需配置1台与走航式ADCP设备相配套的满足操作与数据分析处理的终端;支持姿态校准功能,可用于校准设备内置姿态传感器中的罗经与横纵摇功能; --- ### 302. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲工作频率:1200KHz; ▲内置罗经和并支持外接GNSS罗经(单北斗); 流速剖面最大测量距离:不低于25m; 流速测量范围:±5m/s(默认)±20m/s(最大); 流速测量精度:实测流速的±0.25%、±0.002m/s;流速分辨率:不大于1mm/s; 内部储存容量:不低于2G; 温度传感器:精度/分辨率±0.5℃/0.01℃; 航向传感器:精度/分辨率±0.5°/0.01°; 倾斜度传感器:精度/分辨率±0.2°/0.01°; 输入电压:10.5-18VDC(标准12V); 工作温度: -5℃~45℃;储存温度:-20℃~60℃; 换能器类型:活塞式;波特率:至少涵盖2400~115200; 通讯协议:支持RS232、RS422、RS485、WIFI; 通讯模式:可实现仪器主机与数据处理终端之间的无线通讯,通讯距离200m,还可通过配置的电源信号线实现有线通讯; ▲配件:三体船、一条不短于5米的通信电缆线、配套操作软件、后处理软件、中文用户手册、专用安装工具、仪器运输箱、USB转串口线等; 操作软件:包含测量软件和后处理软件,支持输出符合水文规范要求的流量测验成果记载表和实测流量成果表;数据格式:支持将ADCP测量计算得到的流速、流量、水深和断面面积等数据以ASCII码文件格式进行输出后处理; ▲需配置无线电台,支持数据通信传输功能; ▲每套设备需配置1台与走航式ADCP设备相配套的满足操作及数据分析处理的终端; 支持姿态校准功能,可用于校准设备内置姿态传感器中的罗经与横纵摇功能; 其他:设备需能适应广东各地气象水文条件。 --- ### 303. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 (1)频率类型(变频): 换能器:不少于5波束(含测深波束); ▲具备两种频率的测流波束,并可自动切换; ▲内置罗经并配备外接GNSS罗经(单北斗); 流速剖面最大测量距离:不小于30m; 流速最大测量范围:至少满足-10m/s~+10m/s; 流速测量精度:不低于±0.003m/s;流速分辨率:1mm/s; 水深最大测量距离:不小于30m; 水深分辨率:1mm;水深测量精度:不大于1%; 内部储存容量:不低于6G; 温度传感器:范围:-10℃~50℃;精度:±0.5 ℃;分辨率:0.01 ℃; 罗盘传感器:测量范围:0~360˚;精度:±0.5˚;分辨率:0.1; 倾斜度传感器:测量范围:±30˚;精度:±0.2°;分辨率0.01˚; 工作温度:-5℃~45℃;储存温度:-10℃~50℃; 通讯协议:支持RS232、RS422、RS485、WIFI; 通讯模式:可实现仪器主机与数据处理终端之间的无线通讯,通讯距离200m,还可通过配置的电源信号线实现有线通讯; ▲配件:三体船、一条不短于5米的通信电缆线、配套操作软件、后处理软件、中文用户手册、专用安装工具、仪器运输箱、USB转串口线等; 操作软件:包含测量软件和后处理软件,支持输出符合水文规范要求的流量测验成果记载表和实测流量成果表; ▲需配置无线电台,支持数据通信传输功能; ▲每套设备需配置1台与走航式ADCP设备相配套的满足操作及数据分析处理的终端; --- ### 304. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 该装备融合水位、水温、雨量采集、气象八要素采集、现场语音视频数据采集、GPS定位信息采集,实现对水位、雨量、风速风向、温湿度、气压等水文气象信息数据采集和显示,并可通过北斗卫星和4G公网等通道传输至指挥部。 该装备的产品特点有: 1)  基本覆盖了水文气象的各种要素,可根据需求添加其他传感器; 2)现场情况可视,可远程对讲; 3)高效的电源供电管理方式,低功耗,无需太阳能板; 4)多通道的通讯方式和多种国家标准(可自定义)通讯规约; 5)一体化结构设计和插拔式、可徒手完成的组装连接方式; 6)仪器箱体底座和伸缩可调式三脚架相结合的固定安装方式; 7)本地和远程相结合的数据采集显示系统软件; 8)可移动、易携带、防水、耐高温、抗冲击。 --- ### 305. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能用途 主要用于水文测站安防、设施设备运行状态监控、河道水情监视、水尺水位查看等。 工作方式 采用高清视频摄像机通过传输网络传输至视频监控中心或值班中心电脑,通过实时显示高清画面监控水文站周边情况(包括水位自记台、缆道设施、站房等)、水位情况及周边安防状态,保证水文站的运行安全,防止人为破坏;监测水位情况及水位尺周边情况,防止有异物或人员破坏水文设备。 当出现超标洪水的工况时(例如超出自记台水位计的测量范围),需要通过超标洪水视频监控设备读取水位数值;当汛期设立临时水尺时,也需要通过就近的水文视频监控设备读取水尺上的水位数值。 基本参数 ①有线高清 传感器类型:400万像素,1/3"ProgressiveScanCMOS; 镜头:2.7mm~12mm@F1.4水平视场角:125°~32.5°; 宽动态范围:120dB; 压缩标准:H.265/H.264/MJPEG; SMART侦测:行为分析、异常侦测、识别监测等功能; 红外照射距离:30m; 防护等级:IP67。 ②4G太阳能高清 传感器类型:200万像素,1/2.8"progressivescanCMOS,双sensor架构; 最低照度:彩色:0.0004Lux@(F1.5,AGCON);黑白:0.0001Lux; @(F1.5,AGCON);0LuxwithIR; 焦距:4.8mm~120mm,25倍光学; 工作温度和湿度:-40℃~70℃;湿度小于90%; 监控距离:水尺测量距离≤50m,测量范围0m~20m,分辨力1cm,检测精度±2cm; 防护等级:IP66,抗干扰能力强,适用于严酷的电磁环境,符合GB/T17626.2/3/4/5/6四级标准; 支持定时抓图与事件抓图功能; 支持定时任务、一键守望、一键巡航功能。 配置组成 网络高清摄像机、设备立杆、设备支架、硬盘录像机、供电系统、通讯系统、设备箱等。 --- ### 306. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 安装方法 墒情固定监测站基础设施主要包括观测场围栏、测站标牌及仪器支架,设备包括墒情监测设备及视频监测设备,监测设备分为时域法和频域法,安装方式有插管式和插针式,具有远程调试、升级、监测频次调整等功能。为避免墒情监测设备和周围土壤环境破坏,确保采样土壤与墒情监测设备所测土壤环境相同,可在墒情监测设备周围设置围栏,围栏一般不小于2m×2m,设置小门便于进出。 --- ### 307. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 墒情监测可采用频域法和时域法自动监测设备,三点法(采集点深度 10cm、20cm、40cm)进行监测,墒情监测设备野外监测精度应满足不大于10%相对误差(重量含水量)的要求。\墒情自动在线监测设备适用条件见表 墒情自动在线监测设备适用条件 序号监测方法适用范围及条件1时域法(TDR)具有体积小、重量轻、测量数据精确、稳定时间短、无需率定等优点。但电路复杂、造价成本较高,需现场连接调试,高频电缆地下埋设需要护,避免损坏影响监测数据准确性2频域法(FDR)频域法具有简便安全、快速准确、定点连续、自动化、宽量程、少标定、价格低等优点。需要定期率定参数 --- ### 308. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、设备概述及原理 全自动泥沙在线监测系统主要由泥沙传感器、数据采集与传输系统(含 RTU)、供电系统、数据管理软件和安装支架等组成。 测沙传感器基于组合红外吸收散射光线法,应用 ISO7027方法可以连续精确测定悬浮物浓度。按照ISO7027红外双散射光线技术不受色度影响测定悬浮物浓度值,通过建立悬浮物浓度值与泥沙含量的相关关系,即可直接输出泥沙含量数据,实现实时在线监测。根据使用环境可以选配带自清洗功能和保护装置。 二、设备安装 1.安装选址 全自动泥沙在线监测系统安装前,应进行测站历年水、沙特性分析,了解断面冲淤特性、河道河势变化特性及洪水漂浮物情况,优选系统安装位置及安装方法。应优先选择含沙量代表性比较好的垂线。当垂线确定以后,应优先选择含沙量代表性比较好的测点。 安装注意事项 传感器应置于水下至少50cm,传感器不能长时间置于空气中采集数据。 传感器布置位置应尽量保证流态稳定,无较大湍流或较大扰动。 传感器一般采用侧视测量,安装时需要将仪器横式固定,传感器采集面向下游。 传感器布置位置需要按照规范布设在测验河道断面具有代表性的一点或多点上。 传感器安装时尽量避免漂浮物等对传感器造成损伤。 安装方式 全自动泥沙在线监测系统的测量原理是根据单点泥沙-断沙率定关系计算出断面平均含沙量,因此必须按规范布设在测验河道断面具有代表性的一点或具有代表性的垂线的多点上。泥沙传感器为侧视测量,安装时需将仪器横立式固定(传感器面向下游),为使传感器在低水时仍然能实时测量,安装深度应该低于最低水位。仪器将在固定位置测量河流含沙量,安装时应该考虑漂浮物对仪器的造成的影响。 全自动泥沙在线监测系统安装方式有:自记井壁、桥墩、栈桥、测船安装,现场无可固定载体的话可建灌注桩安装,架循环索吊浮船安装,岸边导轨支架安装等多种方式。 类型一:固定支架安装 此安装一般应用于较浅较窄的河道,在河边安装固定支架,支架上安装泥沙传感器。 类型二:浮台安装 一般应用于较宽较深的河道,泥沙传感器安装在河道靠中心位置,浮子下面安装支架。传感器固定在支架上,浮子采用钢索固定于河床之上。此发相对复杂,可以测量固定深度的泥沙含量。 支架设计与防盗措施 根据现场情况,定制适合安装的支架。 一般情况下的支架设计: 整体支架导轨采用316不锈钢材质,滑动部分采用316不锈钢材质,传动滑轮与导轨紧密贴合;导轨下端采用限位上端采用限位并设计防盗锁,下方防止滑动支架顺带传感器与底层淤泥接触,上方防止人员可以直接将滑动支架顺带传感器拿出或有破坏偷盗的行为;滑动支架整体于绞盘进行连接;如现场有球机,可将球机接入系统,可随时查看设备情况,防止有人恶意破坏及偷盗设备等。 探头固定 泥沙传感器出厂自带简易安装支架,而现场需求重新根据现场情况浇筑固定基座或者设备安装支架,设备安装支架可以使用直径32镀锌圆管并使用扁铁折弯,并将折弯的扁铁一面焊接至镀锌圆管上,一面使用膨胀螺丝固定在自计井或者桥墩或者浇筑基座上,传感器本想使用适配抱箍进行固定与自带简易支架上,然后将传感器支架固定于现场滑动支架上,待这部分固定好后,将滑动支架安装于镀锌圆管上,而固定圆管作为滑动支架的导轨,待滑动支架固定好后,并现场尝试是否可以正常滑动后,将连接缆道固定于绞盘之上,方便后期通过绞盘对整个传感器的升降操作,设备箱使用膨胀螺丝固定到指定位置。 滑动支架 支架部分组成 现场安装示意图 三、设备调试 供电系统连接 1.太阳能电池板的采用两芯的电源线进行连接。将电源线从安装筒的穿线孔穿出,打开太阳能电池板下面的的黑色塑料盒,里面有两个接线柱,右侧的接线柱为+极和双芯线的红色线缆进行连接;左侧的接线柱为—极和双芯线的白色线缆进行连接。接线时两芯电缆分别剥长20mm,折半、绞成股,塞进接线中座中常用发信部件的两接线孔,用螺钉紧固,最后用螺钉固定好黑色塑料密封盒,用密封胶做密封处理。 2.将太阳能板固定支架使用M6螺栓固定在太阳能电池板上。 3.将接好线和固定好支架的太阳能电池板固定在立杆(如果太阳能板安装在站房位置利用螺丝固定) 4.将充电控制器固定在安装底板上,按照说明书分别将太阳能电池、蓄电池、以及用电器(RTU)连接到相应的接线端子上,紧固螺丝,避免接触不良现象。 5.将蓄电池连接到充电控制器上,红线接正极,黑线接负极,连接固定好后将电池放入设备箱。 RTU设备箱线路连接 1.将RTU供电线缆连接到太阳能控制器的输出端子上。 2. 将泥沙传感器信号线及现场水位计连接至RTU,并固定连接好。 3.检查确认各类线缆连接无误后打开设备箱电源开关,给设备加电。 4.设备加电自检正常后按照要求设定RTU的工作参数。 5.参数设置完成后即可进行测试工作。 软件配置 主要配置站点相关信息以及部分运行参数和通道参数。使用此软件需要将RS232 线与接 GPRS 模块的接口相连,此时未接 GPRS,使用 PC 端调试助手对参数进行配置: (1)站点信息 该栏可以配置站点相关的内容,点击读取可获取现在的站点信息,编辑后点击设置等待设置成功即可。 (2)运行参数 主要用于配置机器运行时的一些参数,显示密码为屏幕密码,链路间隔为心跳间隔,显示超时时间为屏幕多久未操作后自动关屏,电压系数为电压修正值,用于电压的校正。 (3)通道参数 该参数主要用于配置传感器设备,接口一与接口二位置在接线图中标注; 波特率为设备通讯波特率,泥沙传感器默认 9600; 类型为接口使用通讯方式,泥沙传感器默认使用 RS485; 属性组数为 2,为采集泥沙含量与深度信息。 点击左上角 1,设置组数 1: 此为泥沙设备配置: 供电方式:默认断续供电即可; 绑定电源名称:设置为接口二的电源 4; 命令类型:泥沙传感器命令类型为 MODBUS; 外设设备类型:泥沙; 单位:泥沙; 外设工作模式:主从模式; 采样时间:视实际情况而定,不低于 5s; 外设协议:modbus; 设备地址:01; 设备地址功能码:0x03; 寄存器个数:2; 寄存器地址 0002; RTU 本地屏幕控制 该界面为机箱屏幕默认主界面,该主界面包含了站点信息,测量信息,系统 状态等,其中绿色表示正常或启用,红色表示设备工作不正常。 该界面主要配置一些运行参数,如果设置了不同水位间隔不一样,则该界面 设置的是当前水位下的运行参数,气压基值为水深设备专用,如果未配备则不应修改,如果配备了则可以修改,两种修改方式:1直接点击文本框,输入基值即可,点击气压基值;2 此时泥沙设备应置于空气中,修改参数后点击保存。 除了现场配置之外也可通过后台软件对泥沙设备进行远程配置,以及远程遥测和数据管理以及远程升级。软件平台配置了符合规范要求的各类报表,满足水文监测和整编要求。 软件登录界面 泥沙设备参数配置界面 泥沙远程控制界面 泥沙数据(显示传感器最大、最小、中间值、平均值数据) 泥沙过程线 水位流量过程线 水位过程线 逐日平均含沙量表 逐日平均悬移质输沙率表 系统验收 功能验收。确认全自动泥沙在线监测系统满足本项目设备技术性能指标的所有要求。 性能验收。对全自动泥沙在线监测系统的性能进行评估,包括测量的准确性、稳定性和可靠性等。 定期维护 为了获得最好的测量效果,需要定期的维护与保养。维护与保养 主要包含泥沙监测仪的清洗、检查泥沙监测仪是否损坏等。在维护与 检测中还可以查看泥沙监测仪的相关状态。 一般建议泥沙传感器至少3个月维护一次(根据水质情况,可以适当增加频次),维护主要内容包括: (1)检查泥沙监测仪,检查并清洁泥沙监测仪等,包括是否有被撞痕迹、是否有破损、泥沙监测仪表面附着物情况等。 (2)检查安装支架,包括是否稳固、是否被腐蚀、螺丝是否紧固等。 (3)检查供电系统,是否正常工作。 (4)检查设备通讯是否正常。 (5)检查电缆线接口,包括接口是否完好、接口密封等情况。 全自动泥沙在线监测系统培训大纲 课程主题课程大纲授课学时(小时)全自动泥沙在线监测系统(1)全自动泥沙在线监测系统基础知识:介绍设备的特点、原理、应用场景等。1.5(2)全自动泥沙在线监测系统现场的基本操作。2(3)全自动泥沙在线监测系统整套系统的基本功能,异常处理等。2(4)系统维护和保养:介绍如何正确地维护和保养全自动泥沙在线监测系统,包括定期检查、清理灰尘、更换部件等。4(5)课程总结和答疑:总结课程内容,解答学员疑问,并提供相应的操作指导和建议。2 安装调试记录 检验项目检验内容检验结果电压波动电压波动:直流12v供电,电压允许波动范围:-15%~20% 泥沙传感器渗水测试 数据读取 主控单元与上位机通信 设备升压状态 运行参数设置 设备参数设置 水深数据采集 泥沙数据采集 供电单元蓄电池充放电 太阳能(充电器)/市电充电 外观各部件表面应光洁,涂镀层应均匀,无锈蚀和剥落。焊接件的焊接应均匀、圆滑、无气孔和渗漏现象。设备无变形、安装紧固。4.  产品各个连接是否稳固,螺丝是否遗漏。 最 终 判定 结 果 备    注  --- ### 309. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、设备概述 雷达波在线测流系统是以雷达流速仪为传感器,根据断面测速垂线布设要求,在断面安装一个或多个雷达波流速仪,在控制单元的控制下,自动完成各条垂线流速测量、断面流量计算、数据分析、报表输出等功能的全自动流量在线监测系统。 系统安装示意图 二、系统构成 雷达波流速仪 本系统采用多普勒雷达传感器,可对河流、泥浆、污水等表面流速进行测量,测量精度高、体积小、重量轻、功耗低,不受污水腐蚀、不受泥沙影响、保障人员安全等优点。 水位计 此外本系统还可对接浮子式数位计、气泡式水位计、雷达水位计,为流量计算提供水位数据。 控制单元 包括系统控制器、GPRS(4G)通信模块、流量计算单元等。其主要功能是完成与平台软件的通信、控制雷达波流速仪工作、采集水位数据、进行流量计算,并完成流量数据的存储和发送。 供电单元 包括太阳能电池板(市电)、太阳能控制器(开关电源)、蓄电池等,为系统工作提供电源。 缆道(支架) 包括支架立柱(缆道)、防雷接地等。 平台软件 包括用户权限管理模块、站点管理模块、测流计算模块、数据报表模块等。主要完成站点管理、测流数据处理及相关统计分析功能。        设备安装 1、安装选址 (1)选点原则 A.水流相对集中、无回水、无紊流等; B.水文条件良好同时具有一定的代表性并能避开漂浮物影响; C.周围无高大建筑物,确保信号顺畅; D.仪器和配套设备离地较高,提高系统的安全系数; E.探头安装牢固稳定; F.施工力求美观大方,质量可靠; (2)断面选择 选择顺直的河段,尽量避开弯道或交叉点,河段顺直长度最好是河宽的三倍。 (3)安装位置的选择 测点位置具有代表性,最好是选择中泓位置;避开水面突起的随风摆动的植物。 2.安装角度 仪器垂直角(55-60度),水平安装时,水平角±1度。 余弦效应导致雷达设备显示的速度低于实际水面速度。当目标路径(水流方向)与雷达天线不平行时即会出现这种效应。 3.安装方式 雷达流速仪可以固定安装在河岸或渠壁的基座上,也可以安装在桥墩或其他建筑物的侧壁上。只要选择位置适当、安装牢固、调试及时,一般都能达到满意的效果。在长期项目实践过程中,根据不同的安装断面实际情况,因地制宜,主要包括以下几种安装方式: 安装方式适用范围特点悬臂式山溪性河流,岸边有自记台或小站房的站点安装简便;测量快捷安全,数据实时准确;维护量小;抗干扰能力强桥梁式日常测验断面附近有桥梁的站点架设龙门桥式河段较窄,附近无固定安装点 1)悬臂式 利用悬臂支架把设备伸出水面,测量断面上指定点的水面流速,通过水面流速系数换算成垂线平均流速,再根据实测水位和借用断面数据,计算过水面积,从而实现流量的测验。 2)固定于现有桥梁式 因地制宜安装在桥梁上,由于桥墩的阻挡,河流流场分布会存在不均匀的现象,通常需要安装多套设备进行平均流速的计算。 3)架设龙门桥式 在某些无固定安装支点或具有代表性的测流点较为复杂的断面,人工架设龙门桥可以灵活解决此类站点固定式雷达流速仪安装问题,龙门桥有助于后期系统运营维护。 4)缆道式安装 在某些无固定安装支点或具有代表性的测流点较为复杂的断面,且河道跨度大,无法使用龙门架的形式安装,缆道安装可以灵活解决此类站点固定式雷达流速仪安装问题,通过手摇绞盘移动探头到达指定位置,从而进行流量测验工作。 4.支架设计与防盗措施 根据现场情况,定制适合安装的支架。 一般情况下的支架设计(分控箱与立杆支架): 整体支架采用不锈钢材质,立杆支架表层喷塑并喷“防汛设施 法律保护 严禁破坏”等字样(喷塑颜色自定,字体采用大黑字体,字高80),太阳能朝向为正南方;分控箱材质采用不锈钢材质,表层喷塑(颜色自定),分控箱安装为防止人员破坏,需另加工延伸支架,延伸长度不低于1.2m(人员不轻易触摸到或者能直接破坏的距离),底部使用膨胀螺丝进行固定,膨胀螺丝采用M8-M10不锈钢膨胀螺丝,如现场有球机,可将球机接入系统,可随时查看设备情况,防止有人恶意破坏及偷盗设备等。 不锈钢支架安装 雷达的安装 雷达支架加工完成后安装采用膨胀螺丝固定,雷达流速仪安装于支架之上,安装角度为55°-60°之间,铺设线路均要整洁,线路连接处均要使用焊锡丝焊接,电线采用镀锌电线(符合国家标准),接入电线外均套用线管,(布设数量与位置根据断面情况而定)。 现场安装图示 四、设备安装调试 供电系统连接 1.太阳能电池板的采用两芯的电源线进行连接。将电源线从安装筒的穿线孔穿出,打开太阳能电池板下面的的黑色塑料盒,里面有两个接线柱,右侧的接线柱为+极和双芯线的红色线缆进行连接;左侧的接线柱为—极和双芯线的白色线缆进行连接。接线时两芯电缆分别剥长20mm,折半、绞成股,塞进接线中座中常用发信部件的两接线孔,用螺钉紧固,最后用螺钉固定好黑色塑料密封盒,用密封胶做密封处理。 2.将太阳能板固定支架使用M6螺栓固定在太阳能电池板上。 3.将接好线和固定好支架的太阳能电池板固定在立杆(如果太阳能板安装在站房位置利用螺丝固定) 4.将充电控制器固定在安装底板上,按照说明书分别将太阳能电池、蓄电池、以及用电器(RTU)连接到相应的接线端子上,紧固螺丝,避免接触不良现象。 5.将蓄电池连接到充电控制器上,红线接正极,黑线接负极,连接固定好后将电池放入设备箱。 RTU设备箱线路连接 1.将整个设备箱在站房选定位置安装好(或户外立杆安装)。 2.将RTU供电线缆连接到太阳能控制器的输出端子上。 3.检查确认各类线缆连接无误后打开设备箱电源开关,给设备加电。 4.设备加电自检正常后按照要求设定RTU的工作参数。 5.参数设置完成后即可进行测试工作。 水位计的接入与布线 1.根据站上采用的水位计类型,届时调试时需要从水位计RTU出并线引出(自装水位计一样)。 2.接线方式采用并线方式外套PVC线管,布线完成后用路面部分用混泥土缝补。 3.将水位计线路连接至设备RTU采集处接线端子上。 4.水位数据获取测试。 数据上传至市水情平台 在正常情况下,RTU每5分钟通过移动GPRS信道向市水情平台发送水位报文,流量的加测参数可以在RTU内设置,按照水文数据采集依据,我们预设流量信息采集全天可以设置12组(每两个小时可以自动加测)进行加测。加测后在1分钟内通过移动的GPRS信道将数据发送到市水情平台接收软件和当地数据库内,再由当地数据接收与数据处理,数据库将处理的数据转发到服务器查询和预警数据库内,通过数据库分析软件对接收到的测流数据信息进行分析,最后进行平台的展示。 数据上传至市水情平台方法 在一般情况下通过移动GPRS信道向市水情平台机发送5分钟水位、加测时上发流量、流速数据至市水情平台指定服务器数据库中;目前移动GPRS可以进行多平台发送(分发个数为5个)。 分发平台步骤: 1.需要业主方提供市水情平台指定服务器的IP地址及数据接收的端口号; 2.现场在移动GPRS信道设置市水情平台指定服务器IP与设备端口号,以便数据接收; 3.需要在市水情平台指定服务器上创建新的数据库,方便数据接收(如已经创建,需要提供服务器数据库的用户名及密码,方便数据接入) 4.在创建完成数据库后,需要在指定服务器上搭建软件平台,方便业主可以及时查看相应水情数据。 5.在搭建的平台上设置相应设备站号,观察数据上传情况。 6.对数据上发情况进行核对。 系统测试 主要测试设备远程控制(备注:在点击远程控制按钮之前,如果没有对该站点设备进行参数配置,是不能正确显示站点详情信息的,此时需要首先进行参数配置,具体操作可参看后续参数配置模块操作说明),点击加测看设备是否数据采集正常。 系统验收 功能验收。确认固定雷达测流系统满足本项目设备技术性能指标的所有要求。 性能验收。对固定雷达测流系统的性能进行评估,包括测量的准确性、稳定性和可靠性等。 固定雷达测流系统培训大纲 课程主题课程大纲授课学时(小时)固定雷达测流系统(1)固定雷达测流系统基础知识:介绍设备的特点、原理、应用场景等。1.5(2)固定雷达测流系统测流方法。基本参数的设定、数据导入导出重算等2(3)固定雷达测流系统现场的基本操作,现场如何测流,手机端如何数据查看等2(4)固定雷达测流系统整套系统的基本功能,异常数据处理等。2(5)系统维护和保养:介绍如何正确地维护和保养固定雷达测流系统,包括定期检查、清理灰尘、更换部件等。4(6)实际操作案例分析:通过实际操作案例,分析固定雷达测流系统的应用场景、注意事项、数据准确性等,以提高学员的实际操作能力和常见故障的诊断、排除和问题解决能力。3(7)课程总结和答疑:总结课程内容,解答学员疑问,并提供相应的操作指导和建议。2 --- ### 310. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 机场选址和飞行器选型 用户应事先掌握国家有关无人驾驶航空器管理的政策和当地航空管制区域的划定,了解飞行任务区域的电磁环境、气象地理条件、高大树木、大型设施和建筑物分布。无人飞行器机场选址时应注意避开限飞区、禁飞区、军事管制区及可能出现强风和强电磁场干扰的地区、空域。  为保障人员、财产、设施安全不受无人飞行器威胁,避免卫星定位及遥控、图传信号受到遮挡、屏蔽,防止建筑、障碍物影响飞行器起降和飞行安全,机场应安装在室外空旷处, 应尽可能远离人群、敏感设备、文物古迹、贵重设施及高于安装位置的建筑和障碍物,射频地面站还应尽量安装在高处。  用户应确定需要使用飞行器完成的任务类型、任务区域、应用载荷、航程并规划航线及高程曲线,计算、实测电力消耗、续航能力需求并将电池多次循环充放电后正常的容量降低纳入分析。用户还应获得无人飞行器的数据手册等技术资料,了解飞行器的起飞条件、返航降落模式及定位方式、定位精度、抗风能力、工作温度范围及其它各项特性和性能指标。最终选定的无人飞行器机型在允许的风速和能见度范围内应确保自动降落水平定位精度不劣于±0.1 米。 用户及安装施工单位应携带主要任务无人飞行器机型和相关仪器仪表实地考察备选机场地址,遍历可能的航线及任务区域,实测地磁扰动和移动无线网络、卫星定位信号质量, 在各种可能的飞行器姿态、朝向条件下测量遥控、图传通信的上下行信号强度,通过数据记录确认地磁扰动符合本手册极限运用参数的要求,确定在机场及周边预定任务空域范围内能够可靠控制飞行器、稳定传输图像/数据且飞行器的卫星定位装置、地磁导航装置能稳定工作、不受到干扰。  供机场使用的场地地面应为平坦空旷的混凝土表面,平整度偏差小于 5/1000 且不得超过 10 毫米,表面无植被、管道、沟渠、异物及其它设备、设施以防止飞行器迫降时倾倒或与物体发生碰撞。场地附近 10 米范围内应安装有避雷设施。机库应设置在场地所含最大矩形区域的中央,顶盖展开方向与矩形长边平行。矩形区域长宽应分别应不小于 8 米和 6 米,区域内地面或屋面的永久荷载能力应达到或超过 10 千牛/平方米。机库支撑位置的混凝土强度应不低于 C30。在裸露土壤上新建场地应至少在机场安装前 30 天铺设混凝土地面,并在场地中心位置浇筑好与机库底部尺寸一致、凸起高度不低于 20 厘米、强度不低于C30 的混凝土承重平台。场地、承重平台均不得含有钢筋等铁磁性物质并应确保其上表面水平坡度在±1°以内。气象站的预定安装位置应距离机库本体 3 米至 5 米。气流不稳定、风速变化较大的场地可以考虑安装多个风速传感器。  机库及射频气象地面站的安装位置应具备或安装符合如下要求的户外电气设施。 电气设施设施要求 电力供应外壳达到 IP54 防护等级、接地良好且符合漏电保护标准的 220V 50Hz 25A(均方根有效值)单相交流配电,至少含国标三眼插座两只(25A 一只供机库使用,10A 一只运维备用)或提供接线端子供电缆直连。 宽带网络达到 IP54 防护等级、任意时段与外网连接最低有效上下行带宽分别达到50Mbps 的有线宽带网络,至少含 RJ45 插座一只或提供超五类网线直连。 选址人员应确认宽带网络可以连接机场管理系统,测试上下行带宽时应使用相关工具在多个不同时段分别测得安装点网络接口与机场管理服务器及视频服务器连接的实际数据上传、下载速率并获得其平均值和最小值的统计。网络接入点的本地或内网连接速度不能作为评估依据。  以下施工布局图供参考,实际布局应根据具体场地情况施工。 机库、射频箱方位示意图1 机库、射频箱方位示意图2 机库放置台示意图1 射频箱安装方式1 机库外部接线图  设备防雷措施方案 一、防雷设计原则 综合性:防雷设计应综合考虑直击雷防护、雷电电磁脉冲(LEMP)防护、等电位连接及共用接地系统等多个方面。 科学性:根据机库所在地的雷电活动规律、地形地貌及气候条件,科学规划防雷设施的布局和选型。 可靠性:选用技术成熟、性能稳定的防雷设备,确保防雷系统长期可靠运行。 二、直击雷防护 1、避雷针/避雷带: 在机库顶部或周边安装避雷针或避雷带,将雷电直接引入地下,避免直击雷对机库及其内部无人机的损害。 避雷针/避雷带的设计应符合相关标准,确保其保护范围覆盖整个机库。 2、引下线与接地装置: 设置足够数量和合适间距的引下线,将避雷针/避雷带与接地装置可靠连接。引下线应选用耐腐蚀、导电性能好的材料,如铜材或热镀锌钢材。 接地装置应埋设在土壤电阻率较低的区域,并采取降阻措施(如使用降阻剂、扩大接地网面积等),以确保接地电阻满足规范要求(一般小于10Ω),使雷电流能够迅速泄入大地。 三、雷电电磁脉冲(LEMP)防护 1、屏蔽措施: 对机库内部的关键设备(如无人机充电系统、控制系统等)进行电磁屏蔽处理,减少雷电电磁脉冲的干扰和损害。可以采用金属网、金属板等导电材料制成屏蔽层,并确保其良好接地。 2、等电位连接: 在机库内部实施等电位连接措施,将所有金属构件(如金属门窗、管道等)及电气设备的外壳可靠连接至等电位连接带或接地装置上,以消除电位差带来的危害。 通过等电位连接,可以确保机库内部各点电位相等或相近,从而避免雷电电磁脉冲引起的电位差放电现象。 3、过电压保护: 在无人机机库的电源线、信号线等进出线路上安装过电压保护装置(如浪涌保护器),以防止雷电电磁脉冲引起的过电压对设备造成损坏。 过电压保护装置应具有快速响应、高可靠性、低残压等特点,以确保在雷电发生时能够及时有效地保护设备安全。 四、定期检测与维护 防雷设施检测:定期对机库的防雷设施进行检测,包括避雷针/避雷带的完整性、引下线的连接情况、接地装置的接地电阻等,确保其性能正常。 维护保养:对防雷设施进行必要的维护保养工作,如清理避雷针/避雷带上的杂物、检查并紧固连接螺栓等,确保防雷系统的稳定运行。 --- ### 311. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 技术要求 蒸发测量:▲分辨率:0.1mm;测量范围:0~70mm;精确度:0.1mm;测量方式:高精度激光传感器;重复性误差:≤0.2mm;雨量测量:测量方式:称重式;刃口角度:45°;精确度:0.1mm;▲分辨率:0.1mm;测量范围:0~17mm/min;准确度:≤±2%; 技术参数 软件界面 一、设备概述及原理 全自动雨量蒸发遥测系统能按照《水面蒸发观测规范》、《降水量观测规范》、《水文自动测报系统技术规范》、《水文情报预报规范》、《水情信息编码要求》等文件的要求,自动测量蒸发量和降水量,自动加/汲水,自动将测量数据通过无线网络发送至中心站服务器软件平台,实现蒸发及降水观测的自动化。 全自动雨量蒸发系统由控制箱、称重雨量、自动补水溢流系统、激光式蒸发、控制软件五部分组成,结构如下图所示: 全自动雨量蒸发系统依据传统E601蒸发皿基础上通过连通器的原理,由控制箱里面控制单元与E601之间通过一个激光测量皿连接。激光测量皿放置在E601蒸发皿上,测量皿里放置一个浮子。当E601蒸发皿水位变化时激光测量皿会每个小时对E601蒸发皿水位进行测量并且对当次读取水位高度减去上一测次水位高度就得出本次蒸发高度,计算的蒸发值也会由控制单元记载并上发到控制软件上。 称重式雨量,主要会对当前5分钟的雨量进行存放,待时间到达将会自动打开称雨口控制阀将存放的雨量输送到高精度称重天平容器中进行计算,待计算结果上发至控制单元后高精度称重天平下的控制阀就会打开将容器中的雨量通过排出口排出。  二、设备安装调试 设备安装 设备的安装严格依据SL 630-2013《水面蒸发观测规范》中关于蒸发器安装的具体要求进行场地布局和安装,同时兼顾整个蒸发场地整体布局的合理性和美观性(蒸发场现状图附下)。具体SL 630-2013《水面蒸发观测规范》中相关规范如下: (1)蒸发观测场地的选择:根据规范2.1.2条蒸发观测场四周应空旷平坦,保证气流畅通;规范2.2.1条中场地大小应根据各站的观测项目和仪器确定;观测场地应平整、清洁,避免产生积水;地面应种草或作物,其高度不宜超过20cm,四周应设高约1.2m的围栅场内铺设0.3-0.5m宽的观测小路。 (2)蒸发仪器的类型:根据规范3.1.2中自记/遥测蒸发器:使用标准水面蒸发器的蒸发桶,增设自动化量测装置或传感装置。 (3)蒸发仪器的安装:根据规范3.3.1 标准水面蒸发器的安装应符合下列要求(见图所示所示): 1.蒸发器口缘应高出地面约30cm,器口高差应小于0.2cm。 2.水圈应紧靠蒸发桶,蒸发桶的外壁与水圈内壁的间隙应小于0.5cm。水圈的排水孔底和蒸发桶溢流孔底,应在同一水面上。 3.水圈与地面之间应设一宽50cm(包括防坍墙在内)、高22.5cm的土圈,土圈外层的防坍墙用砖干砌而成。在土圈的北面留一不大于40cm的观测缺口。蒸发桶的测针应位于观测缺口处。 设备连通管布局与密封应注意一下要求: 整个连通管布局应成U型布局,严禁一条直线预埋; 宝塔接头处与水管连接应使用不锈钢抱箍进行固定,严禁出现任何松动现象; E601桶开孔后,安装好水管接头并对接头做好防水密封,严禁出现漏水渗水现象; 太阳能布置需放置在光照条件较好的地方。 浇筑设备箱基座时中间需留有过线孔,方便线路水管的连接。 机箱安装 机箱放置在浇筑基座上,并用水平尺检验机箱安装是否水平。 确保机箱水平后,用M6-M8的膨胀螺丝进行固定。 太阳能安装必须45°夹角,最好朝向为正南方向。 E601桶安装需符合水文规范且安装必须水平。 供电系统连接 1.太阳能电池板的采用两芯的电源线进行连接。将电源线从安装筒的穿线孔穿出,打开太阳能电池板下面的的黑色塑料盒,里面有两个接线柱,右侧的接线柱为+极和双芯线的红色线缆进行连接;左侧的接线柱为—极和双芯线的白色线缆进行连接。接线时两芯电缆分别剥长20mm,折半、绞成股,塞进接线中座中常用发信部件的两接线孔,用螺钉紧固,最后用螺钉固定好黑色塑料密封盒,用密封胶做密封处理。 2.将太阳能板固定支架使用M6螺栓固定在太阳能电池板上。 3.将接好线和固定好支架的太阳能电池板固定在立杆(如果太阳能板安装在站房位置利用螺丝固定) 4.将充电控制器固定在安装底板上,按照说明书分别将太阳能电池、蓄电池、以及用电器(RTU)连接到相应的接线端子上,紧固螺丝,避免接触不良现象。 5.将蓄电池连接到充电控制器上,红线接正极,黑线接负极,连接固定好后将电池放入设备箱。 RTU设备箱线路连接 1.将RTU供电线缆连接到太阳能控制器的输出端子上。 2.检查确认各类线缆连接无误后打开设备箱电源开关,给设备加电。 3.设备加电自检正常后按照要求设定RTU的工作参数。 4.参数设置完成后即可进行测试工作。 参数设置 控制箱内主要包括控制单元、遥测终端机(RTU)、数据传输单元(DTU)、电源开关等。 控制单元:用于设备控制、雨量/蒸发量计算; 遥测终端机:用于数据采集、设备控制; DTU:用于数据传输; 电源开关:电源控制。 按压RTU面板上的按钮开关,可点亮RTU液晶屏,显示主界面,如下图: 当前雨量:显示从当天上午8点到查看时的降雨量; 日雨量:显示查看时前一日的降雨量; 累计雨量:显示设备安装到查看时的总降雨量; 当前蒸发:显示从当天上午8点到查看时的蒸发量; 日蒸发:显示查看时前一日的蒸发数据; 供电电压:显示蓄电池的当前电压。 系统调试 整机本地测试 整机本地测试时将GPRS模块与RTU板间的连接线断开,直接用本地串口线插在RTU上。采用雨量蒸发测试程序进行测试。测试前设备开机,打开雨量蒸发测试串口,等待RTU上的显示屏进入主界面时开始。雨量蒸发测试程序界面如下: 雨量蒸发测试程序 秤数据读取检查: 用雨量蒸发测试程序读取秤数据,与数字重量变送器上的显示对比完全一致。 激光数据读取检查: 用雨量蒸发测试程序读取激光位移传感器数据,与激光位移传感器上的显示对比,误差范围在0.1mm以内。 雨量测试: 用量杯量取大于0.1mm的水倒入称雨口中,等待不超过5分钟时间查看RTU显示屏,查看显示屏上的雨量数据,是否与量杯量取数据误差在0.2mm以内。注意检查雨量测量环节是否有漏水现象。 蒸发测试: 从E601桶里面取适量水,并用秤称出取出水的重量,用雨量蒸发测试程序计算出水对应的深度,等待5分钟后点击雨量蒸发测试程序的加测按钮,对比加测日蒸发数据与计算数据,误差范围在0.1mm范围以内。 抽排水检查: 用雨量蒸发测试程序控制抽排水,发出命令后5分钟内设备应进行相应的抽排水,检查抽排水是否具有漏水现象。 数据存储提取检查: 测试达到1个小时以上,SD卡具有数据时,用雨量蒸发测试程序提取数据,应能正确提取出相应数据。 系统验收 功能验收。确认全自动雨量蒸发遥测系统满足本项目设备技术性能指标的所有要求。 性能验收。对全自动雨量蒸发遥测系统的性能进行评估,包括测量的准确性、稳定性和可靠性等。 全自动雨量蒸发遥测系统培训大纲 课程主题课程大纲授课学时(小时)全自动雨量蒸发遥测系统(1)全自动雨量蒸发遥测系统基础知识:介绍设备的特点、原理、应用场景等。1.5(2)全自动雨量蒸发遥测系统现场的基本操作。2(3)全自动雨量蒸发遥测系统整套系统的基本功能,异常处理等。2(4)系统维护和保养:介绍如何正确地维护和保养全自动雨量蒸发遥测系统,包括定期检查、清理灰尘、更换部件等。4(5)课程总结和答疑:总结课程内容,解答学员疑问,并提供相应的操作指导和建议。2 自动蒸发防雷方案 避雷器安装 电源避雷器安装方法及要求  电源避雷器安装位置为自动蒸发设备机箱内,所有外接设备均要进行电源避雷器的安装。 电源避雷器分三个端口,分别为电源正、电源负、接地;外接设备电源线缆正负线,均要经过电源避雷器正负端口,然后再接入设备,接地端口接线长度≤500mm,若受条件限制达不到≤500mm的标准可适当延长,但应遵循接线尽量短的原则,转角应大于90度(是弧形角而不是直角),接地线接与独立接地网相接。     安装注意事项:  安装电源避雷器时,应该首先将地线系统连接牢靠后再连接其他线路。安装时必须断开电源,严禁带电操作;连接导线必须符合要求。  防雷器无需特别维护,只需定期检查其连接是否松动,工作状态指示灯是否正常。  当工作状态指示灯发绿光时,表示防雷器工作正常。发红光时,表示防雷器已有器件损坏,防雷效果变差,必须立即更换。   信号避雷器安装方法 信号避雷器安装于设备机箱内部,所有外接信号线路均要进行信号避雷器的安装。 信号避雷器分三个端口,分别为信号A、信号B、接地;外接设备信号线缆AB信号线,均要经过信号避雷器AB端口,然后再接入设备,接地端口接线长度≤500mm,若受条件限制达不到≤500mm的标准可适当延长,但应遵循接线尽量短的原则,转角应大于90度(是弧形角而不是直角),接地线接与独立接地网相接。   --- ### 312. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 雷达流速仪参数 ▲测速范围:0.1~20m/s; 测速精度:±0.01m/s;±1%FS; 测速频率:24GHz; 测速俯仰角:30~70°; 测速波束角:12°; 最大测程:100m; 供电电源:DC6~30V; 平均功耗:工作电流 <40mA,待机电流 <5mA (@DC12V); 防护等级:≥IP65; 工作温度:-40℃~+80℃; 数字接口:RS232/RS485接口;Modbus协议; 安装调试方案及运行维护方案 一、测速雷达探头安装调试 1、安装示意图 本产品安装示意图如下,雷达波照射水面时,照射区域类似一个椭圆。 应选择合适的安装角度使得照射范围应当选择在平稳水流面上。准确理解雷达波的照射范围有助于选择合适的地方安装,避免一些容易被干扰的场景,如河流两边随风摆动的树枝。 2、安装选点 测流河道的选择与测流准确性有直接的关系,为得到较好的测流结果,测流河道应尽量满足以下条件: (1)测流段内无巨大块石阻水,无巨大漩涡、乱流等现象。 (2)测流段宜顺直、稳定、水流集中。 (3)测流段应保持顺畅,防止漂浮物堆积。 (4)测流段应该是自然流水状态,附近下游无筑坝。 (5)测流点流速仪波束角范围内无杂草,树枝等可晃动干扰物。 3、 安装高度选取 要根据场景选取合适的安装高度。安装高度选择需满足以下: (1)流速仪波束范围尽量全部照射于水面。 (2)水面比较平静的区域流速回波信号会比较弱,此种场景应尽量减小安装高度以提高设备回波获取能力。 (3)雷达照射水面区域边界与安装高度成正比,流速仪波束照射水面时A、B参数值(实际安装高度(单位米)乘以下列值即为实际对应参数。 流速仪波束宽度(纵向)A = H*(tan(30+7)o-tan(30-7)o)=0.329H    流速仪波束宽度(横向)B = 2*H*tan16o/cos30o=0.662H 4、安装步骤 非接触式雷达测流系统采用非接触式雷达测速探头进行流速测量,不受水体影响,安装方式主要以立杆式为主,即在岸边建设钢筋砼基础,然后建设立杆主杆,在主杆上部相应位置安装悬臂,测速探头安装在悬臂伸向的一端。 (1)在设备安装前,先确认安装基础、悬臂朝向是否符合安装要求。将太阳能板安装与支架顶端平台的相应位置,固定。 (2)太阳能板、蓄电池、充电控制器等设备安装于太阳能控制箱中,并将机箱固定在支架上。 (3)测速探头安装于支架的横臂前端,用专用固定装置进行固定。 (4)横臂安装在支架相应位置,用螺丝卡紧,用钢丝将横臂拉紧,防止其上下左右摆动。 (5)电池正负极用胶带胶好,防止金属物体碰击导致短路。测试电池电压及太阳能板电流、电压。 (6)将探头线缆、太阳能板线沿支架上预留的穿孔线接入机箱内,进行设备调试。 (7)设备通电后,打开数据采集器进行参数设置,包括站号、系统号、中心站地址、时间设置等。 (8)安装完毕进行多组人工发送流速数据试验,现场观察实时数据显示是否正常,并于中心站核实,直至校准数据为止。 (9)调试完毕后将雷达测速探头初始化;安装调试完毕,做好现场安装调试记录,并拍照。 二、遥测终端机安装调试 1、安装规范 (1)遥测终端机应遵循节约线缆、操作方便,同时应在传输信号质量良好、尽量远离电磁干扰源、无滴水、无强震动的场所进行安装。 (2)遥测终端机安装时机箱应有良好的接地,接地电阻应≤5Ω,接地线应选用截面积≥4㎜2黄绿双色铜芯线,接地线两端应用螺栓进行固定。 (3)遥测终端机应确保在断电的情况下进行接线。 2、安装步骤 (1)根据安装要求确定遥测终端机安装的位置。 (2)固定遥测终端机。在选定的安装位置用膨胀螺丝将遥测终端机固定在墙上或预制的水泥墩上或立杆上。 (3)连接接地线。将遥测终端机机箱接地螺栓与地网接地极用接地线连接,接地线用镀锌钢管进行保护,户外部分应将保护管埋于地面20cm以下处,室内部分应沿墙壁引到遥测终端机。 (4)遥测终端机接线。在确保给遥测终端机统断电的情况下按照设备说明书进行接线。 三、安装效果图 悬臂式固定雷达波测流系统 四、仪器调试 (1)通过RS-485来连接,需做如下调整 波特率 9600 数据位 8 奇偶无 结束位 1 流向控制无 (2)连接电脑 1)无论是使用RQCommander还是其他终端软件来设置参数,都需要将RS-485接口的两条线与电脑相连。 2)一般电脑不会配备RS-485的接口,需要配备一个转接头. 3)如果电脑上有空闲的USB接口,使用RS-485转USB线,来进行连接。 (3)测量之前的参数设置 1) 电脑安装软件及USB串口线驱动。 2) 连接探头,点击打开软件,进入界面。 初步判断: 查看平台数据,大概确定是RTU问题还是仪器问题。例如,平台上流速一列都为空白,表头也丢失,最可能原因为RTU未设置对流速采集;平台采集到的数据长时间异常,可判断仪器或现场环境问题; 出发前准备: 笔记本电脑、串口线、直连测试线、万用表、活动扳手、十字螺丝刀,一字小螺丝刀、手持式雷达测速枪等; 现场准备: 拧下仪器在无线系统上的接头,接上我司定制连接线,串口线连接电脑。 4、常见故障排查及处理 如果遇到站点无数据或者数据异常等故障表现,可从以下几方面进行逐步排查,解决问题。 (1)对平台进行排查,看服务器是否未收到数据,如果收到数据即可让厂家工程师将数据接入平台; (2)服务器未收到数据,同时确定数据传输正常,服务器正常,RTU正常,此种情况需现场进行排查; (3)现场排查首先确定设备供电是否正常,然后电脑按照仪器操作说明进行连接测试,确定仪器是否故障(仪器故障率很低); (4)检测RTU接线是否错误,485转232模块是否故障,RTU配置是否错误; (5)水面如果受风的影响,顺风水面流速会快,逆风水面流速会慢,甚至出现负流速; (6)水面过于平静,测量不到雷达波的频移; (7)仪器发生转动,探头朝向改变。动支架或延伸臂时应先做好记号,对仪器姿态进行拍照; (8)雷达波范围内如有树叶摆动造成数据紊乱。 五、具体故障表现及排查办法 六、运行维护 1、流速仪维护 传感器是设备的核心部件,需要特殊注意: (1)避免用湿布擦拭传感器表面,应该用纯棉干布轻轻拭去尘埃; (2)定期检查传感器的状态,包括传感器电极是否有刮痕、氧化、损伤等; (3)安装传感器时,应该遵循说明书上的操作手册。 2、RTU维护 (1)检查遥测终端机(RTU)是否正常工作,数据存储、控制和传输是否正常;应先对供电部分给予检查,正常后,应该检查遥测终端机所采集数据是否正常,如果发现采集数据没有完全发射,可能是遥测终端机上的插头出现松动,如果拔下插紧后,试验恢复正常,则是数据采集器的问题了。如果出现数据接收不到情况,应该到设备检查,检查过程发现遥测终端机的主模块红灯亮着,并出现系统死机的问题,这很可能就是数据无法正常采集的原因,可采取断电之后重新上电,对系统模块复位重置,并且重新设定参数,这时可恢复正常运行。 (2)检查数据传输模块是否正常工作; (3)检查供电模块是否正常工作:拔下相应太阳能充电模块的充电插头,并且拔下遥测终端机中的底板蓄电池插头,再用数字万用表的直流档对蓄电池电流及电压情况进行检查,当电压比自动测报系统里的采集器、调制调解器及短信通讯端最低的直流电压范围要低很多时,这时需要对太阳能电池及其充电模块给予检查,把太阳能的充电模块输入插头拔下,如果用万用表测出太阳能电池中的输出电压在正常范围内,就把输入插头插上,再进行测量,如果这个时候的直流电压是0V,就需要更换新的充电模块器,更换之后再进行测量,发现输出电压符合要求范围,那么维修策略就是更换新免维护的蓄电池,并插上蓄电池的输入插头,以及太阳能的充电模块插头,且重新设置准确参数后,对通信终端的发射试验及采集试验进行模拟,如果中心站能够接收到准确遥测数据,就说明流量设备的故障排除,恢复正常。 (4)检查整套系统连接线部分是否出现松动或脱落,是否有生物腐蚀,拔下充电插头使用工具将螺丝拧紧即可,再把电池插头连接上,重新设定参数,并进行拆机及通信终端试验模拟,如果中心站能够收到准确遥测数据,就说明流量设备恢复正常功能。 防雷措施方案 1. 整体方案 1、防雷设计与规划 在设计水文设备时,应充分考虑防雷因素,确保设备符合防雷安全标准。 对于重要的水文设备,建议进行专门的防雷设计,包括直击雷和感应雷的防护措施。 2、现场设备防雷措施 现场设备必须可靠接地,确保雷电流能够安全入地,避免对设备造成损害。 建议缆索的直径在10mm以上,以保证其热稳定性能,防止因雷电流过大导致熔断。 3、接地系统 确保接地装置的可靠性和有效性,定期检查接地电阻值,确保满足防雷要求。 所有设备设施都应妥善接地,除了利用支架基础等部位的自然接地体外,还应有专门敷设的接地装置。 总的接地电阻值可参考电力部门和建筑物防雷的经验暂定为工频10欧,经试验确定。 4、躲避防护与事前规划 在雷雨来临前,尽量关闭相关设备,切断电源,拔掉电缆头等,采取躲避防护措施。 在选择新的水文站地址时,应考虑雷击方面的因素,尽量避开雷击多发区,为日后防雷工作减轻压力。 5、定期检测与维护 定期对水文设备的防雷设施进行检测和维护,确保其处于良好状态。 对于发现的问题和隐患,应及时进行修复和处理,避免发生雷击事故。 6、人员培训与意识提升 加强对水文设备操作和管理人员的防雷培训,提高他们的防雷意识和技能水平。 定期组织防雷演练和应急演练,提高应对雷击事故的能力和水平。 通过以上措施的实施,可以有效提高水文设备的防雷能力和安全性,保障设备的正常运行和数据的准确采集。 2. 具体方案 一、 概述 在线ADCP测流系统、超声波时差法流量计、泥沙测验设备等水文设施设备涉及到电力、通信、电子技术的应用,多年投入使用中,发现本仪器易受雷击。 雷击对水文测验设施的破坏形式分直击雷、感应雷两种。 防雷接地分为两个概念,一是防雷,防止因雷击而造成损害;二是静电接地,防止静电产生危害。随着储罐阴极保护应用的日益广泛,其保护效果越来越多的受到人们的关注,防雷接地规范与阴极保护规范的矛盾也越来越突出。 经初步研究探讨后,初步确定水文设施设备受感应雷击的可能性比较大,因此,拟定防雷方案时,主要针对感应雷击。 感应雷击对水文测报仪器设备的破坏渠道是多方面的,有信号通道、供电通道、地电位反击通道、地电流反冲通道和落雷点高位冲击通道等。防雷避雷必须采用综合防治、整体防范、多重保护、层层设防的综合防雷体系,采用引、泄、消、防、避的方法,对水文测报设施、仪器设备的一切易受雷电影响的通道上,将雷电进行消散、疏导、或抑制掉,来保护水文测报仪器设备的安全。 二、 防雷措施 1.应用先进的防雷设备,如雷电保护器、避雷针等,以吸引和分散雷电能量,减轻雷电对电气设备造成的损坏。例见图1。 例图 1 安装立杆加装避雷针 2.搭建良好的接地系统,确保设备和系统的安全运行。且接地系统应连接到地下水层或埋入湿度较大的地下,以保持接地电阻的稳定性和可靠性。例见图2。 例图 2 防雷地网设计 3.采集控制系统内部集成信号、电源的防浪涌模块。该防浪涌模块电源与信号分置,有效保护终端安全。例见图3。 例图 3 采集系统内部集成 4)太阳能电源接上防雷器,有效屏蔽来自太阳能引雷危险。见图4。 图 4 防雷器 5)防雷装置的检测与定期维护,如发现问题,应及时进行修理或更换。 6)做好防雷地线的保护,防雷地线是连接设备和接地系统的重要部分组成,应避免防雷地线和其他金属管线、电缆等接触,防止地线受到腐蚀或损坏。 7)采取防雷屏蔽的措施,避免雷电电流通过设备和采集控制系统对其造成破坏。常见的屏蔽措施包括使用金属屏蔽罩或在电缆中加装金属屏蔽层等。例见图5。 例图 5 安装电缆线加装屏蔽连接地网 8)设备和采集控制系统尽量避开、远离雷区位置,选取适当的设备安装。 9)加强技术人员对雷电知识的培训和防护措施的宣传,提高防护意识,确保工作人员的安全。 10)采集控制系统应进行定期的预防性维护,检查电气设备和系统的可靠性和正常运行情况,防止雷电事故的发生。 参考文献 1.《建筑物防雷设计规范》 2.《防雷工程专业设计、施工资质管理办法》 3.《雷电电磁脉冲防护》IEC标准 4. 《建筑物电子信息系统防雷技术规范》  5. 《防雷避雷技术在长江水文测验与报汛中的应用》 --- ### 313. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 引言 在现代舞台灯光、建筑装饰和广告展示中,灯光效果的多样性和智能化控制已成为不可或缺的一部分。Modbus协议多功能全彩灯带控制器(CL330)以其强大的功能和灵活性,为用户提供了一个高效、稳定的灯光控制解决方案。 产品概述 Modbus协议多功能全彩灯带控制器(CL330)是一款基于Modbus RTU协议的智能灯带控制设备。该控制器集成了丰富的控制功能,支持通过串口实现对灯带的动态和静态效果控制,广泛应用于舞台灯光、建筑装饰、广告展示等领域。 功能特点 1. 多种控制模式 实时控制:通过485串口或TTL串口实时控制灯带效果,满足动态场景需求。 预设模式:提供多种预设模式模板,如流水、呼吸、闪烁等动态效果,快速实现复杂灯光设计。 脱机运行:配置好的效果可存储并随时调用,无需持续连接控制设备,适用于长期展示项目。 2. 灵活的接口配置 多功能IO接口:集成6个多功能IO输入点,功能可自由配置,支持通过IO信号切换灯光效果。 多种串口类型:提供485串口和TTL串口两种通信接口,适应不同项目需求。 频率信号输入:支持频率信号输入,可实现基于频率的灯光控制,适用于特定应用场景。 3. 丰富的灯光效果 颜色模式:支持RGB、HSB、HSL等多种颜色模式,满足不同灯光设计需求。 动态效果:提供单色、双色、渐变等多种动态灯光效果,增强视觉吸引力。 调试软件:提供直观的调试软件,即使不熟悉Modbus协议,也可轻松配置灯光参数。 4. 强大的兼容性 多种灯带类型:支持WS2812B、WS2811等多种灯带类型,适应不同项目需求。 广泛电压范围:电源电压范围广泛(5V~24V),确保在不同供电条件下稳定运行。 技术参数 参数名称参数值/范围电源电压范围5V~24V(带壳款),5V~12V ±5%(排针款)控制器功率<1W工作温度范围-25℃~+75℃控制 IC 个数1200 点灯带控制端口数1 端口通信接口485 串口(带壳款),TTL 串口(排针款)通信波特率默认 9600,可设置为其他波特率通信参数8bit 数据,1 停止位,无校验(默认)指示灯红绿双色指示灯 1 个 使用场景 1. 舞台灯光控制 通过串口实时控制灯光效果,实现动态灯光表演,增强舞台视觉效果。 2. 建筑装饰照明 配置静态或动态灯光效果,用于建筑外墙或室内装饰,提升建筑美观度。 3. 广告展示 实现流水、呼吸等效果,增强广告展示的视觉吸引力,提升品牌影响力。 4. 智能家居 与智能家居系统集成,通过IO信号或串口控制灯光效果,实现智能化家居照明。 产品优势 1. 简单易用 提供直观的调试软件,无需深入了解Modbus协议即可配置效果。 支持脱机运行,配置完成后无需持续连接,提高使用便捷性。 2. 灵活配置 IO接口功能可自由配置,满足不同应用场景需求。 支持多种灯带类型,适应不同项目需求。 3. 高效稳定 采用标准Modbus RTU协议,确保通信稳定。 支持存储和调用预设效果,提高工作效率。 结语 Modbus协议多功能全彩灯带控制器(CL330)以其强大的功能和灵活性,为用户提供了一个高效、稳定的灯光控制解决方案。无论是舞台灯光、建筑装饰还是广告展示,CL330都能满足您的灯光设计需求,助力您实现更加精彩的灯光效果。 --- ### 314. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、方案概述 智慧工厂通过物联网、传感器网络和自动化技术,实现生产过程的实时监控、数据分析和智能管理。该方案广泛应用于制造业、食品加工、电子生产等领域,帮助用户提高生产效率、降低成本、优化资源利用。 二、建设目标 生产数据实时监控:通过传感器网络,实时采集和显示生产数据,确保数据的准确性和及时性。 智能调控与管理:根据生产数据自动调控相关设备(如生产线速度、温度、湿度等),优化生产条件。 远程监控与预警:支持通过手机APP或PC端远程查看数据,设置预警阈值,及时发现异常情况。 数据分析与决策支持:通过历史数据统计和分析,为生产管理提供科学依据。 三、建设内容 1. 智能控制核心 推荐设备:LED计时计数屏 功能说明:作为智慧工厂的核心显示设备,集中显示各类生产数据(如计划产量、实际产量、完成率、温湿度等),支持多种通讯方式(RS485、TCP/IP、4G等),可实现数据的实时更新和远程监控。 安装位置:建议安装在生产区域的显眼位置,便于观察和管理。 技术细节: 显示屏采用高亮度LED点阵屏,确保在强光下数据清晰可见。 支持定制显示内容,可根据用户需求灵活调整显示格式。 内置数据处理模块,可对采集到的数据进行初步分析和处理。 2. 生产数据监测与统计 推荐设备: 光电传感器:实时采集生产线上的产品数量。 漫反射式光电开关:适用于大于1cm的产品且间隔小的计数。 电感式接近开关:适用于金属物体近距离感应计数。 PLC控制器:用于控制和管理生产线上的各种设备。 功能说明:各类传感器实时采集生产数据,并通过RS485或无线通讯传输至LED计时计数屏,计数屏根据预设条件自动调控相关设备(如生产线速度、温度、湿度等)。 安装位置:根据监测需求安装在合适位置,如生产线两侧或设备内部。 技术细节: 光电传感器采用高精度探头,测量范围为0-5m可调。 漫反射式光电开关感应距离为7-30cm,适用于多种产品计数。 电感式接近开关感应距离为4mm,适用于金属物体计数。 PLC控制器支持多种通讯协议,可灵活扩展。 3. 数据传输与通讯 推荐设备: 无线网关:支持4G、Wi-Fi、LORA等多种通讯方式,确保数据实时传输。 服务器:存储和处理生产数据,支持数据的远程访问和分析。 功能说明:通过无线网关和服务器,实现生产数据的集中管理和远程监控,支持多设备协同工作。 安装位置:无线网关安装在生产区域的中心位置,服务器可放置在机房或云端。 技术细节: 无线网关支持多种通讯协议,可灵活选择适合的传输方式。 服务器采用高性能处理器和大容量存储,确保数据处理和存储的高效性。 支持数据的冗余备份,保障数据安全。 4. 远程监控与管理 推荐设备: 手机APP:支持Android和iOS系统,提供实时和历史数据查看、图表分析功能。 PC端软件:支持数据的详细分析和管理。 功能说明:用户可通过手机APP或PC端软件随时随地查看生产数据,设置预警阈值,接收异常通知。 安装位置:无需物理安装,通过网络连接即可使用。 技术细节: 手机APP支持离线数据查看,确保在网络不稳定时仍可访问关键数据。 PC端软件提供数据导出功能,支持生成报表和分析报告。 支持多用户权限管理,确保数据安全和隐私。 5. 数据分析与决策支持 推荐设备: 数据分析模块:集成在服务器中,支持数据的统计、分析和可视化展示。 功能说明:通过数据分析模块,用户可查看生产数据的趋势变化,生成报表,为生产管理提供科学依据。 安装位置:集成在服务器中,无需额外安装。 技术细节: 数据分析模块支持多种统计方法,如平均值、最大值、最小值等。 提供数据可视化功能,支持生成柱状图、折线图、饼图等多种图表。 支持异常数据的自动识别和报警,帮助用户及时发现潜在问题。 四、设备选型与购买建议 智能控制核心:LED计时计数屏,支持多种通讯方式,适用于生产区域的显眼位置。 生产数据监测设备:光电传感器、漫反射式光电开关、电感式接近开关,确保生产数据的全面监测。 数据传输设备:无线网关(支持4G、Wi-Fi、LORA等通讯方式)、服务器,确保数据的实时传输和存储。 远程监控设备:手机APP(支持Android和iOS系统)、PC端软件,提供便捷的远程监控和管理功能。 数据分析设备:数据分析模块,支持数据的统计、分析和可视化展示。 五、方案价值总结 全协议兼容:支持RS485、TCP/IP、4G等多种通讯协议,降低多品牌设备整合难度。 工业级稳定性:采用高精度传感器和稳定通讯模块,保障7×24小时连续运行。 灵活扩展:支持多种传感器和通讯方式,可根据需求灵活扩展。 节能环保:通过实时监测和智能调控,优化生产条件,降低能源浪费。 六、实施注意事项 布线规范:RS485总线需采用双绞屏蔽线(AWG18),避免与强电并行。 协议测试:购买前向供应商索要协议文档,验证与现有系统兼容性。 设备安装:确保设备安装位置合理,便于布线和管理。 系统调试:安装完成后,进行系统调试,确保各设备正常运行。 维护保养:定期检查传感器和通讯设备,确保数据采集的准确性和系统的稳定性。 七、应用场景 1. 制造业 通过实时监测生产线上的产品数量、完成率、温湿度等数据,自动调控生产线速度和设备运行状态,提高生产效率和产品质量。 2. 食品加工 监测生产环境的温湿度、噪音等参数,确保生产条件符合食品安全标准,同时优化能源使用,降低运营成本。 3. 电子生产 实时采集生产线上的产品数量和不良品数量,自动计算生产达成率和合格率,帮助用户及时调整生产策略,提高产品合格率。 4. 仓储物流 通过监测仓库内的温湿度、光照强度等环境参数,优化仓储条件,确保货物存储安全。 八、总结 智慧工厂方案不仅是一个技术平台,更是一个管理工具。它通过实时数据采集和智能调控,帮助用户实现生产的精细化管理。无论是制造业、食品加工还是电子生产,智慧工厂方案都能提供科学的数据支持和决策依据,为可持续发展贡献力量。通过合理的设备选型和系统设计,用户可以轻松构建一个高效、稳定、灵活的智慧工厂系统,满足多样化的需求。 --- ### 315. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、方案概述 环境监测系统通过物联网技术和传感器网络,实时采集和显示各类环境数据(如温湿度、空气质量、光照强度等),并支持远程监控和数据分析。该系统广泛应用于农业大棚、工业厂房、学校、社区等场景,帮助用户实现环境的智能化管理和优化。 环境监测系统的建设不仅是技术上的需求,更是对现代环境管理理念的践行。随着物联网技术的快速发展,环境监测系统已经从传统的单一数据采集发展为多维度、实时化、智能化的综合管理平台。通过这一系统,用户可以实时掌握环境变化,及时调整管理策略,从而提高资源利用效率,降低运营成本,保障人员健康和生产安全。 二、建设目标 环境数据实时监测:通过传感器网络,实时采集和显示环境数据,确保数据的准确性和及时性。 智能调控与管理:根据环境数据自动调控相关设备(如空调、灌溉系统等),优化环境条件。 远程监控与预警:支持通过手机APP或PC端远程查看数据,设置预警阈值,及时发现异常情况。 数据分析与决策支持:通过历史数据统计和分析,为环境管理提供科学依据。 三、建设内容 1. 智能控制核心 推荐设备:环境监测屏 功能说明:作为环境监测系统的核心显示设备,集中显示各类环境数据(如空气温湿度、土壤温湿度、CO₂浓度、光照强度等),支持多种通讯方式(RS485、TCP/IP、4G等),可实现数据的实时更新和远程监控。 安装位置:建议安装在监测区域的显眼位置,便于观察和管理。 技术细节: 显示屏采用高亮度LED点阵屏,确保在强光下数据清晰可见。 支持定制显示内容,可根据用户需求灵活调整显示格式。 内置数据处理模块,可对采集到的数据进行初步分析和处理。 2. 环境监测与调节 推荐设备: 温湿度传感器:实时监测空气温湿度。 土壤温湿度传感器:监测土壤温湿度,指导灌溉。 CO₂传感器:监测空气中CO₂浓度。 光照传感器:监测光照强度,优化光照条件。 PM2.5/PM10传感器:监测空气质量。 雨量传感器:监测降雨量。 风速风向传感器:监测风速和风向。 噪音传感器:监测环境噪音。 功能说明:各类传感器实时采集环境数据,并通过RS485或无线通讯传输至监测屏,监测屏根据预设条件自动调控相关设备(如通风系统、灌溉系统等)。 安装位置:根据监测需求安装在合适位置,如墙壁、天花板或土壤中。 技术细节: 温湿度传感器采用高精度探头,测量范围为-40℃至80℃,精度±0.5℃。 土壤温湿度传感器支持深度可调,适用于不同类型的土壤。 CO₂传感器采用非分散红外(NDIR)技术,测量范围为0-5000ppm。 光照传感器支持全光谱测量,适用于室内外环境。 PM2.5/PM10传感器采用激光散射技术,测量范围为0-999μg/m³,精度误差小于10%。 雨量传感器采用翻斗式设计,测量范围为0-200mm/h。 风速风向传感器支持0-360°风向测量和0-12级风力检测。 噪音传感器测量范围为30-130dB,精度±1.5dB。 3. 数据传输与通讯 推荐设备: 无线网关:支持4G、Wi-Fi、LORA等多种通讯方式,确保数据实时传输。 服务器:存储和处理环境数据,支持数据的远程访问和分析。 功能说明:通过无线网关和服务器,实现环境数据的集中管理和远程监控,支持多设备协同工作。 安装位置:无线网关安装在监测区域的中心位置,服务器可放置在机房或云端。 技术细节: 无线网关支持多种通讯协议,可灵活选择适合的传输方式。 服务器采用高性能处理器和大容量存储,确保数据处理和存储的高效性。 支持数据的冗余备份,保障数据安全。 4. 远程监控与管理 推荐设备: 手机APP:支持Android和iOS系统,提供实时和历史数据查看、图表分析功能。 PC端软件:支持数据的详细分析和管理。 功能说明:用户可通过手机APP或PC端软件随时随地查看环境数据,设置预警阈值,接收异常通知。 安装位置:无需物理安装,通过网络连接即可使用。 技术细节: 手机APP支持离线数据查看,确保在网络不稳定时仍可访问关键数据。 PC端软件提供数据导出功能,支持生成报表和分析报告。 支持多用户权限管理,确保数据安全和隐私。 5. 数据分析与决策支持 推荐设备: 数据分析模块:集成在服务器中,支持数据的统计、分析和可视化展示。 功能说明:通过数据分析模块,用户可查看环境数据的趋势变化,生成报表,为环境管理提供科学依据。 安装位置:集成在服务器中,无需额外安装。 技术细节: 数据分析模块支持多种统计方法,如平均值、最大值、最小值等。 提供数据可视化功能,支持生成柱状图、折线图、饼图等多种图表。 支持异常数据的自动识别和报警,帮助用户及时发现潜在问题。 四、设备选型与购买建议 智能控制核心:大棚环境监测屏,支持多种通讯方式,适用于农业大棚、工业厂房等场景。 环境监测设备:温湿度传感器、土壤温湿度传感器、CO₂传感器、光照传感器、PM2.5/PM10传感器、雨量传感器、风速风向传感器、噪音传感器,确保环境数据的全面监测。 数据传输设备:无线网关(支持4G、Wi-Fi、LORA等通讯方式)、服务器,确保数据的实时传输和存储。 远程监控设备:手机APP(支持Android和iOS系统)、PC端软件,提供便捷的远程监控和管理功能。 数据分析设备:数据分析模块,支持数据的统计、分析和可视化展示。 五、方案价值总结 全协议兼容:支持RS485、TCP/IP、4G等多种通讯协议,降低多品牌设备整合难度。 工业级稳定性:采用高精度传感器和稳定通讯模块,保障7×24小时连续运行。 灵活扩展:支持多种传感器和通讯方式,可根据需求灵活扩展。 节能环保:通过实时监测和智能调控,优化环境条件,降低能源浪费。 六、实施注意事项 布线规范:RS485总线需采用双绞屏蔽线(AWG18),避免与强电并行。 协议测试:购买前向供应商索要协议文档,验证与现有系统兼容性。 设备安装:确保设备安装位置合理,便于布线和管理。 系统调试:安装完成后,进行系统调试,确保各设备正常运行。 维护保养:定期检查传感器和通讯设备,确保数据采集的准确性和系统的稳定性。 七、应用场景 1. 农业大棚 通过实时监测大棚内的温湿度、光照强度、CO₂浓度等环境参数,自动调控通风、灌溉和光照系统,优化作物生长条件,提高产量和品质。 2. 工业厂房 监测厂房内的空气质量、温湿度、噪音等环境参数,确保工作环境符合健康和安全标准,同时优化能源使用,降低运营成本。 3. 学校与社区 在学校和社区中部署环境监测系统,实时掌握空气质量、温湿度等环境数据,为师生和居民提供健康舒适的生活和学习环境。 4. 水质监测 通过监测水温、色度、浊度、PH值等水质参数,及时发现水质问题,保障饮用水安全。 八、总结 环境监测系统不仅是一个技术平台,更是一个管理工具。它通过实时数据采集和智能调控,帮助用户实现环境的精细化管理。无论是农业、工业还是社区管理,环境监测系统都能提供科学的数据支持和决策依据,为可持续发展贡献力量。通过合理的设备选型和系统设计,用户可以轻松构建一个高效、稳定、灵活的环境监测系统,满足多样化的需求。 --- ### 316. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、方案概述 智慧教室是利用物联网、人工智能等技术,将教室内的各种设备和系统进行智能化集成,实现教学环境的自动化、智能化和高效化。通过智慧教室系统,可以实现教室设备的集中控制、环境监测与调节、安防监控、能源管理等功能,为师生提供一个舒适、安全、高效的教学环境。 二、建设目标 智能化设备控制:实现对教室内的灯光、空调、窗帘、电子白板、投影仪等设备的集中控制和自动化管理。 环境监测与调节:实时监测教室内的温湿度、空气质量等环境参数,并自动调节相关设备,保持教室环境的舒适性。 安防监控:构建完善的安防监控系统,确保教室内的安全。 能源管理:通过实时监测和分析教室内的能源使用情况,实现节能减排。 三、建设内容 1. 智能控制核心 推荐设备:智能控制主机 功能说明:作为智慧教室的核心大脑,接收各种预设指令,通过逻辑判断输出控制指令,控制其他设备。支持多种通讯方式(RS485、无线、网络),可实现情景控制、定时控制、条件控制等多种功能,适用于教室、智能楼宇等场景。 安装位置:建议安装在教室的智能控制箱内,便于布线和管理。 2. 环境监测与调节 推荐设备:温湿度传感器、空气质量传感器 功能说明:实时监测教室内的温湿度、空气质量等环境参数,并将数据传输至智能控制主机,主机根据预设条件自动调节相关设备(如空调、新风系统等)。 安装位置:建议安装在教室的墙壁或天花板上,确保监测数据的准确性。 3. 智能照明系统 推荐设备:8路智能照明模块 功能说明:用于控制教室内的LED灯具,适配多种灯具(如射灯、筒灯、灯带等)。支持总线、WIFI等多种控制方式,可与智能控制主机配合实现灯光场景控制。 安装位置:可安装在灯具内部或通过DN35导轨安装在配电箱内。 4. 智能窗帘系统 推荐设备:智能窗帘电机 功能说明:实现窗帘的自动开合,支持定时控制、远程控制和语音控制,可根据光线强度自动调节窗帘开合度。 安装位置:安装在窗帘轨道上,确保电机与窗帘的连接稳固。 5. 智能空调控制系统 推荐设备:红外空调控制器 功能说明:用于控制教室内的空调系统,兼容多个品牌,支持通过RS485和WIFI接入智慧教室系统。可实现空调的开关、温度调节、模式切换等功能,与智能控制主机配合,实现集中控制。 安装位置:建议安装在空调室内机或室外机附近,根据品牌要求选择安装位置。 6. 安防监控系统 推荐设备:高清网络摄像头、门禁系统 功能说明:实现教室内的全方位视频监控,支持人脸识别、黑名单管理、出入口监控等功能。通过智能控制主机实现远程监控和报警通知。 安装位置:建议安装在教室的出入口、走廊和关键区域,确保监控无死角。 7. 能源管理系统 推荐设备:智能电表、电量监测传感器 功能说明:实时监测教室内的电量使用情况,分析电流波动,并定期形成数据报表,便于学校统一进行节能管理。 安装位置:安装在教室的配电箱内,确保监测数据的准确性。 四、设备选型与购买建议 智能控制核心:智能控制主机,支持多种通讯方式,适用于教室、智能楼宇等场景。 环境监测设备:温湿度传感器、空气质量传感器,确保教室环境的舒适性。 智能照明系统:8路智能照明模块,支持多种控制方式,适配多种灯具。 智能窗帘系统:智能窗帘电机,支持定时、远程和语音控制。 智能空调控制系统:红外空调控制器,兼容多个品牌,支持集中控制。 安防监控系统:高清网络摄像头、门禁系统,支持人脸识别和远程监控。 能源管理系统:智能电表、电量监测传感器,实时监测电量使用情况。 五、方案价值总结 全协议兼容:支持RS485、WIFI、Mesh无线等多种通讯协议,降低多品牌设备整合难度。 工业级稳定性:钣金外壳+屏蔽线材,保障7×24小时连续运行。 灵活扩展:支持导轨安装与Mesh无线扩展,后期升级成本低。 节能环保:通过实时监测和分析能源使用情况,实现节能减排。 六、实施注意事项 布线规范:RS485总线需采用双绞屏蔽线(AWG18),避免与强电并行。 协议测试:购买前向供应商索要协议文档,验证与现有系统兼容性。 设备安装:确保设备安装位置合理,便于布线和管理。 系统调试:安装完成后,进行系统调试,确保各设备正常运行。 --- ### 317. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、智能家居概述 智能家居通过物联网技术将家庭设备互联,实现集中控制、场景自动化与远程管理,提升生活便捷性与能源效率。核心系统通常包含: 控制中枢(如智能主机):负责指令处理与设备调度。 执行终端(如继电器、调光器):执行具体操作(开关灯光、调节温度等)。 交互界面(如触控屏、语音助手):提供人机交互入口。 通信协议:分为有线(如RS485、KNX)与无线(如Wi-Fi、Zigbee),各有适用场景。 二、有线系统的核心优势 针对稳定性要求高的场景(如灯光控制、安防系统),有线方案(RS485总线)具备不可替代的优势: 抗干扰性强:金属屏蔽线材可抵御电磁干扰,适合工业/商业环境。 低延迟高可靠:信号传输无丢包,确保关键指令(如消防报警)100%响应。 长距离覆盖:单总线最长1200米,支持跨楼层/大空间部署。 低功耗长寿命:无需频繁更换电池,维护成本低。 三、产品选型与购买建议 1.智能控制核心:M002 智能控制主机 功能说明:作为智能家居的核心大脑,接收各种预设指令,通过逻辑判断输出控制指令,控制其他设备。支持多种通讯方式(RS485、无线、网络),可实现情景控制、定时控制、条件控制等多种功能,适用于家庭、智能楼宇、酒店等场景。 购买链接:M002 智能控制主机 安装位置:建议安装在家庭智能控制箱内或弱电井中,便于布线和管理。 2.集中控制模组:8路集控继电器模组(M8162) 功能说明:用于集中控制多种电器设备,支持8路自保持16A继电器,可实现单点、多点、区域、群组控制等场景预设。支持RS485总线和有线控制,可与M002智能控制主机配合使用,实现集中控制。 购买链接:8路集控继电器模组 安装位置:建议安装在配电箱或设备集中控制区域,通过DN35导轨安装。 3.人机交互界面:7寸彩屏控制器 功能说明:作为智能家居的可视化交互终端,配备7英寸高清IPS屏和电容式触摸屏,操作简单直观。支持多种接口(RS485、RS232、RJ45、WIFI),可与M002智能控制主机连接,实现对家居设备的集中控制和状态显示。 购买链接:7寸彩屏控制器 安装位置:建议安装在客厅、卧室或走廊等便于操作的位置,可采用86底盒安装。 4.智能调光系统:MT603 大功率调光驱动 功能说明:用于控制LED灯具的调光,支持1-60V调光,适配多种灯具(如射灯、筒灯、灯带等)。支持总线、WIFI、Homekit等多种控制方式,可与M002智能控制主机配合实现灯光场景控制。 购买链接:MT603 大功率调光驱动 安装位置:可安装在灯具内部(如筒灯孔)或通过DN35导轨安装在配电箱内。 5.中央空调控制网关:TDFH-DUX/YC 多合一智能控制网关 功能说明:用于控制中央空调系统,兼容多个品牌,支持通过RS485和网口接入智能家居系统。可实现空调的开关、温度调节、模式切换等功能,与M002智能控制主机配合,实现集中控制。 购买链接:中央空调多合一智能控制网关 安装位置:建议安装在空调室内机或室外机附近,根据品牌要求选择安装位置。 智能家居方案布局说明 核心控制:M002智能控制主机作为核心设备,安装在家庭控制箱内,通过RS485总线和网络接口连接其他设备。 集中控制:8路集控继电器模组安装在配电箱内,用于控制电器设备的开关,通过RS485总线与M002主机连接。 人机交互:7寸彩屏控制器安装在客厅或卧室,通过RS485或WIFI与M002主机连接,实现设备控制和状态显示。 灯光控制:MT603调光驱动模块安装在灯具内部或配电箱内,通过RS485或WIFI与M002主机连接,实现灯光调光和场景控制。 空调控制:中央空调控制网关安装在空调主机附近,通过RS485或网口与M002主机连接,实现空调系统的集中控制。 通过以上设备的组合,您可以实现家庭的智能化控制,包括灯光、电器、空调等设备的集中控制和场景预设,提升生活的便利性和舒适性。 四、方案价值总结 全协议兼容:RS485+Modbus统一底层,降低多品牌设备整合难度。 工业级稳定性:钣金外壳+屏蔽线材,保障7×24小时连续运行。 灵活扩展:支持导轨安装与Mesh无线扩展,后期升级成本低。 五、实施注意事项 布线规范:RS485总线需采用双绞屏蔽线(AWG18),避免与强电并行。 协议测试:购买前向供应商索要协议文档,验证与现有系统兼容性。 --- ### 318. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1、设计原则与目标 该系统设计完全遵照中国水利电力出版社《水文测验使用手册》(2013版)和SL337-2006《声学多普勒流量测验规范》开发研制,是集测、报、整、算为一体的全自动远程测流系统。实现了无入值守水文缆道远程测流的目标,降低了职工劳动强度,排除了职工劳动不安全隐患,提高了工作效率。测量精度达到水文行业部颁标准和规范要求,各项技术指标符合有关水文测验规范、技术标准的要求。该系统性能稳定、可靠,操作简便,并能通过网络实现远程集中测流控制,具有良好的推广使用价值。 该套系统使用缆道作为设备运行载体,与传统的缆道式走航ADCP相比,最大的特点是使用ADCP对单点垂线进行测流,该系统耦合了ADCP(声学多普勒流速剖面仪)、雷达波流速仪及旋桨流速仪三种测流功能。 本套系统既可以同时使用三套测流设备测流,也可以任意两套测流设备组合测流(ADCP耦合雷达波流速仪测流、ADCP耦合旋桨流速仪测流及旋桨流速仪耦合雷达波流速仪测流),在低水位、水流情况较稳定的情况下,默认使用ADCP(或旋桨流速仪)和雷达流速仪同时对测流垂线上的测点进行测流,方便对两套测流系统进行比测;在遇到大水、洪水等突发性或灾害性天气,ADCP(或旋桨流速仪)无法测流时,可使单独用雷达流速仪进行测流。 测流时缆道绞车配合控制系统及全自动测流软件,由循环索牵引行车架带动测流吊箱、铅鱼及测流设备在主索上的运行,由起重索带动铅鱼和测流设备垂直方向移动。 系统组成 系统从功能结构上分为五个部分:机械部分、测流部分、控制部分、网络建设部分和测控软件部分,各部分介绍如下: 2.1、机械部分由缆道、副拉索、电动绞车、行车架及吊箱等组成; 2.2、测流部分由铅鱼、ADCP、旋桨流速仪耦合雷达流速仪组成。 2.3、控制部分的核心控制设备由计算机、交流变频器和两台西门子PLC构成,协同完成整个测流系统的信号采集、识别、数据计算等工作; 2.4、网络部分,测流系统内部为—个小型局域网,网络内数据传输由微波通信完成,与外部数据的联接通过路由器实现,远程计算机通过路由器实现对本地设备的远程操作及实时监控,从而实现远程自动测流功能。 计算机与吊箱之间数据传输为微波通讯,传输距离达到5KM以上,信号传输抗干扰能力强,稳定可靠,为视频监控等大数据量的信号传输提供了安全可靠的保障。 数据传输可使用卫星和互联网双路传输,确保在自然灾情下,互联网无法传输数据时,运用卫星数据传输,实现水文站正常工作监控的目的。 2.5、测控软件,操作界面简洁明了、操作简单、功能齐全。界面分为测流动态模拟区、视频监视区、视频操作区、手动操作区、测量设置区及状态栏六个区域。 测控软件具有语音提示、参数设置、实时显示测点流速、故障诊断等功能,操作界面集测流实时显示、视频监控、降雨量、蒸发量、含沙量等显示于一体,测控软件能自动生成实测流量报表,数据准确、记录规范,报表格式应完全符合GB50179河流流量测验规范要求,可直接用于整编。 ADCP垂线布置: 测流垂线按照《GB 50179-2015 河流流量测验规范》要求进行布置,当测流开始后,铅鱼和ADCP降到水面以下,开始对垂线进行测流,每条垂线测流时间为10s-100s之间设置。 如图所示,红色线条为测流断面布置的垂线,垂线数量可根据河道断面宽度及实际情况进行设置。相邻两条垂线平均流速的均值即为部分平均流速,相邻两条测垂线间过水面积即为部分面积,部分平均流速乘以部分过水面积就等于部分流量,部分流量之和即为断面流量。每条垂线上的垂线平均流速Vn线为该条垂线上ADCP所测得的流速。 系统特点: 1.系统具有很好的可扩展性,同时兼容旋桨流速仪、雷达流速仪、ADCP 测速、电磁流速仪、无人机测流、含沙量、降雨及蒸发量,根据现场情况及客户需求可集成多种功能。 2.本套系统标准配置为ADCP耦合雷达流速仪,在低水位、水流情况较稳定的情况下,默认使用ADCP和雷达流速仪同时对测流垂线上的测点进行测流,方便对两套测流系统进行比测;在遇到大水、 洪水等突发性或灾害性天气,ADCP无法测流时,可使单独用雷达流速仪进行测流。 3.系统充分利用了现代互联网技术,配有嵌 入式服务器,可自行组建局域网实现联网测流, 也可通过互联网进行远程测流、远程调试、远程 协助、自动更新等功能,可以连接平板电脑,支 持 5G 技术。 4.支持全自动无人值守智能测流,无人值守全自动测流分为定时测流和按水位变化测流。 5.全自动智能测流,测流之前设置好参数,点 击自动测流开始,系统将会自动完成整个测流过 程并自动生成测量报表。 6.自动化测流系统能把三个监控摄像头 融入到系统界面当中,三个图像能够相互转换,使测流过程全方位实时监控,包括 20 倍球机 1 台,枪机 2 台,全方位实时监控整个测流过程以 及铅鱼工作情况、水面情况和绞车工作情况。 7.系统根据水文缆道特性,建立了钢丝绳垂 度模型,水平、垂直运动模型等多个模型。针对 钢丝绳垂度受环境、温度等多种因素影响的客观 事实,系统建立垂度修正模型,并可根据情况随 时修正。 8.系统采用交流变频调速、光电编码测距定 位来实现测流过程中的精准定位。 9.测流吊箱到缆道房的数据传输为双频段、 双回路无线传输,传输距离达到 5KM 以上,信号传输抗干扰能力强,更加安全、可靠,保证数据的实时 和可靠性。 10.远程数据传输兼容互联网和卫星(选配)双回路传输模式,确保在自然灾情时互联网中断,能够运 用卫星数据传输,实现水文站正常工作监控的目的。 11.针对旋桨流速仪,测流系统有消颤功能,防止多记信号情况的发生,保证测流信号的准确性。 12.根据自动水位计,自动生成水位过程线,并把实测流量,点绘在水位过程线上。 13.系统报表自动生成,且准确可靠。系统在测流结束后均会自动生成数据报表,报表格式完全符合水文规范要求,可直接用于整编。报表生成之前,如果对测点有异议,可随时对任意测点重新测量,报表一旦生成,数据将无法修改,防止人为篡改原始数据,保证数据测量的真实性和可靠性。 技术参数: 1、控制部分 1.1供电电源:220VAC、380VAC±10%,50Hz; 1.2驱动电机:根据现场选配电机及变频器 1.3水平运行速度1.0m/S; 1.4垂直运行速度0.5m/S; 1.5具有限位控制设置; 1.6起点距测量:测量范围:-999.9~9999.9m; 测量精度:0.1m (符合水文规范要求);光电编码传感器信号系数:0.001~9.999;字符和图形显示起点距。 1.7水深测量:测深范围:-99.99~999.99m;精度:0.01m(符合水文规范要求);光电编码传感器信号系数:0.001~9.999;字符和图形显示水深。 2、流速测量 2.1适应范围:20转、5转、1转、1/2转为一个信号的流速仪(流速仪信号转速值可在上位机任意设定); 2.2流速仪公式:V=K*N/T + C,公式中K、C值可修改、保存; 2.3测速历时:100S、60S、30S......可视河道洪水变化,按照测验规范设置、保存; 2.4精度:0.1秒;计数:无误差; 2.5字符和图形显示:流速、计数、计时值。 3、图像监视设备 3.1像素:200万以上红外网络高清智能球机、枪机; 3.2视频压缩标准:H.264/MJPEG; 3.3压缩输出码率:32Kbps~8Mbps; 3.4自动增益、CCD光圈控制、背光补偿:ON/OFF可选择; 3.5通讯接口:RJ4510M/100M自适应以太网口; 3.6工作温度和湿度:-30°C ~ +60°C,湿度小于95%(无凝结); 3.7所需电源、功率消耗:AC220V ±10%,50Hz、7.5W max; 3.8尺寸:195mm x 95mm x 90mm。 3.9通用功能:一键恢复、防闪烁、镜像、双码流、心跳、密码保护等 4、雷达流速仪 4.1波段:24.000~24.250 GHz 4.2测速范围:0.15~15m/s 4.3作用距离:0.5~30m 4.4工作电压:+7~28V DC 4.5分辨率:0.01 m/s 4.6测速精度:±0.02 m/s 4.7启动时间:<3s 4.8测量时间:3~240 s 4.9天线样式:平面微带阵列天线,32°X14° 4.10发射功率:26dBm 4.11通信讯接口:RS232(默认)/ RS485/SDI-12/4-20mA电流环 4.12数据格式:9600(默认),8,n,1;波特率可调 4.13测试角度:内置自动测角功能,俯仰角30~60度自动校准流速 4.14探测方式:非接触式探测 5、ADCP参数: 5.1频率:1200kHz 5.2最大测流距离:≥35m 5.3测速范围:±10m/s 5.4精度:±0.25%±2mm/s 5.5分辨率:1mm/s 5.6层厚:0.06~2m 5.7层数:1~260 5.8中央测深频率:600kHz 5.9底跟踪范围:≥45m 5.10底跟踪精度:±0.25%±2mm/s 5.11换能器配置:5波束 --- ### 319. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、设备概述及原理 全自动泥沙在线监测系统主要由泥沙传感器、数据采集与传输系统(含 RTU)、供电系统、数据管理软件和安装支架等组成。 测沙传感器基于组合红外吸收散射光线法,应用 ISO7027方法可以连续精确测定悬浮物浓度。按照 ISO7027红外双散射光线技术不受色度影响测定悬浮物浓度值,通过建立悬浮物浓度值与泥沙含量的相关关系,即可直接输出泥沙含量数据,实现实时在线监测。根据使用环境可以选配带自清洗功能和保护装置。 二、设备安装 1.安装选址 全自动泥沙在线监测系统安装前,应进行测站历年水、沙特性分析,了解断面冲淤特性、河道河势变化特性及洪水漂浮物情况,优选系统安装位置及安装方法。应优先选择含沙量代表性比较好的垂线。当垂线确定以后,应优先选择含沙量代表性比较好的测点。 安装注意事项 传感器应置于水下至少50cm,传感器不能长时间置于空气中采集数据。 传感器布置位置应尽量保证流态稳定,无较大湍流或较大扰动。 传感器一般采用侧视测量,安装时需要将仪器横式固定,传感器采集面向下游。 传感器布置位置需要按照规范布设在测验河道断面具有代表性的一点或多点上。 传感器安装时尽量避免漂浮物等对传感器造成损伤。 安装方式 全自动泥沙在线监测系统的测量原理是根据单点泥沙-断沙率定关系计算出断面平均含沙量,因此必须按规范布设在测验河道断面具有代表性的一点或具有代表性的垂线的多点上。泥沙传感器为侧视测量,安装时需将仪器横立式固定(传感器面向下游),为使传感器在低水时仍然能实时测量,安装深度应该低于最低水位。仪器将在固定位置测量河流含沙量,安装时应该考虑漂浮物对仪器的造成的影响。 全自动泥沙在线监测系统安装方式有:自记井壁、桥墩、栈桥、测船安装,现场无可固定载体的话可建灌注桩安装,架循环索吊浮船安装,岸边导轨支架安装等多种方式。 类型一:固定支架安装 此安装一般应用于较浅较窄的河道,在河边安装固定支架,支架上安装泥沙传感器。 类型二:浮台安装 一般应用于较宽较深的河道,泥沙传感器安装在河道靠中心位置,浮子下面安装支架。传感器固定在支架上,浮子采用钢索固定于河床之上。此发相对复杂,可以测量固定深度的泥沙含量。 支架设计与防盗措施 根据现场情况,定制适合安装的支架。 一般情况下的支架设计: 整体支架导轨采用316不锈钢材质,滑动部分采用316不锈钢材质,传动滑轮与导轨紧密贴合;导轨下端采用限位上端采用限位并设计防盗锁,下方防止滑动支架顺带传感器与底层淤泥接触,上方防止人员可以直接将滑动支架顺带传感器拿出或有破坏偷盗的行为;滑动支架整体于绞盘进行连接;如现场有球机,可将球机接入系统,可随时查看设备情况,防止有人恶意破坏及偷盗设备等。 探头固定 泥沙传感器出厂自带简易安装支架,而现场需求重新根据现场情况浇筑固定基座或者设备安装支架,设备安装支架可以使用直径32镀锌圆管并使用扁铁折弯,并将折弯的扁铁一面焊接至镀锌圆管上,一面使用膨胀螺丝固定在自计井或者桥墩或者浇筑基座上,传感器本想使用适配抱箍进行固定与自带简易支架上,然后将传感器支架固定于现场滑动支架上,待这部分固定好后,将滑动支架安装于镀锌圆管上,而固定圆管作为滑动支架的导轨,待滑动支架固定好后,并现场尝试是否可以正常滑动后,将连接缆道固定于绞盘之上,方便后期通过绞盘对整个传感器的升降操作,设备箱使用膨胀螺丝固定到指定位置。 现场安装示意图 三、设备调试 供电系统连接 1.太阳能电池板的采用两芯的电源线进行连接。将电源线从安装筒的穿线孔穿出,打开太阳能电池板下面的的黑色塑料盒,里面有两个接线柱,右侧的接线柱为+极和双芯线的红色线缆进行连接;左侧的接线柱为—极和双芯线的白色线缆进行连接。接线时两芯电缆分别剥长20mm,折半、绞成股,塞进接线中座中常用发信部件的两接线孔,用螺钉紧固,最后用螺钉固定好黑色塑料密封盒,用密封胶做密封处理。 2.将太阳能板固定支架使用M6螺栓固定在太阳能电池板上。 3.将接好线和固定好支架的太阳能电池板固定在立杆(如果太阳能板安装在站房位置利用螺丝固定) 4.将充电控制器固定在安装底板上,按照说明书分别将太阳能电池、蓄电池、以及用电器(RTU)连接到相应的接线端子上,紧固螺丝,避免接触不良现象。 5.将蓄电池连接到充电控制器上,红线接正极,黑线接负极,连接固定好后将电池放入设备箱。 RTU设备箱线路连接 1.将RTU供电线缆连接到太阳能控制器的输出端子上。 2. 将泥沙传感器信号线及现场水位计连接至RTU,并固定连接好。 3.检查确认各类线缆连接无误后打开设备箱电源开关,给设备加电。 4.设备加电自检正常后按照要求设定RTU的工作参数。 5.参数设置完成后即可进行测试工作。 系统验收 功能验收。确认全自动泥沙在线监测系统满足本项目设备技术性能指标的所有要求。 性能验收。对全自动泥沙在线监测系统的性能进行评估,包括测量的准确性、稳定性和可靠性等。 定期维护 为了获得最好的测量效果,需要定期的维护与保养。维护与保养 主要包含泥沙监测仪的清洗、检查泥沙监测仪是否损坏等。在维护与 检测中还可以查看泥沙监测仪的相关状态。 一般建议泥沙传感器至少3个月维护一次(根据水质情况,可以适当增加频次),维护主要内容包括: (1)检查泥沙监测仪,检查并清洁泥沙监测仪等,包括是否有被撞痕迹、是否有破损、泥沙监测仪表面附着物情况等。 (2)检查安装支架,包括是否稳固、是否被腐蚀、螺丝是否紧固等。 (3)检查供电系统,是否正常工作。 (4)检查设备通讯是否正常。 (5)检查电缆线接口,包括接口是否完好、接口密封等情况。 全自动泥沙在线监测系统培训大纲 课程主题课程大纲授课学时(小时)全自动泥沙在线监测系统(1)全自动泥沙在线监测系统基础知识:介绍设备的特点、原理、应用场景等。1.5(2)全自动泥沙在线监测系统现场的基本操作。2(3)全自动泥沙在线监测系统整套系统的基本功能,异常处理等。2(4)系统维护和保养:介绍如何正确地维护和保养全自动泥沙在线监测系统,包括定期检查、清理灰尘、更换部件等。4(5)课程总结和答疑:总结课程内容,解答学员疑问,并提供相应的操作指导和建议。2 安装调试记录 检验项目检验内容检验结果电压波动电压波动:直流12v供电,电压允许波动范围:-15%~20% 泥沙传感器渗水测试 数据读取 主控单元与上位机通信 设备升压状态 运行参数设置 设备参数设置 水深数据采集 泥沙数据采集 供电单元蓄电池充放电 太阳能(充电器)/市电充电 外观各部件表面应光洁,涂镀层应均匀,无锈蚀和剥落。焊接件的焊接应均匀、圆滑、无气孔和渗漏现象。设备无变形、安装紧固。4.  产品各个连接是否稳固,螺丝是否遗漏。 最 终 判定 结 果 备    注  光电测沙仪防雷专项方案 土建防雷接地措施 一、钢材连接搭接倍数要求 钢质接地装置宜采用焊接连接,其搭接长度应符合下列规定: 1、扁钢与扁钢搭接为扁钢宽度的2倍,三面施焊; 2、圆钢与圆钢搭接为圆钢直径的6倍,双面施焊; 3、圆钢与扁钢搭接为圆钢直径的6倍,双面施焊; 4、扁钢和圆钢与钢管、角钢互相焊接时,除应在接触部位两侧施焊外,还应增加圆钢搭接件; 5、焊接部位除埋在混凝土外均作防腐处理。 接地装置连接应可靠,连接处不应松动、脱焊、接触不良。 均压环与金属管道等自然接地体的连接,应采用焊接。如焊接有困难时,可采用卡箍连接,但应有良好的导电性。 二、各类焊接的要求 1、平焊 选择合适的焊接工艺,焊条直径,焊接电流,焊接速度,焊接电弧长度等,通过焊接工艺试验验证。 清理焊口:焊前检查坡口、组装间隙是否符合要求,定位焊是否牢固,焊缝周围不得有油污、锈物。 烘焙焊条应符合规定的温度与时间,从烘箱中取出的焊条,放在焊条保温桶内,随用随取。 焊接电流:根据焊件厚度、焊接层次、焊条型号、直径、焊工熟练程度等因素,选择适宜的焊接电流。 引弧:角焊缝起落弧点应在焊缝端部,宜大于10mm,不应随便打弧,打火引弧后应立即将焊条从焊缝区拉开,使焊条与构件间保持2~4mm间隙产生电弧。对接焊缝及对接和角接组合焊缝,在焊缝两端设引弧板和引出板,必须在引弧板上引弧后再焊到焊缝区,中途接头则应在焊缝接头前方15~20mm处打火引弧,将焊件预热后再将焊条退回到焊缝起始处,把熔池填满到要求的厚度后,方可向前施焊。 焊接速度:要求等速焊接,保证焊缝厚度、宽度均匀一致,从面罩内看熔池中铁水与熔渣保持等距离(2~3mm)为宜。 焊接电弧长度:根据焊条型号不同而确定,一般要求电弧长度稳定不变,酸性焊条一般为3~4mm,碱性焊条一般为2~3mm为宜。 焊接角度:根据两焊件的厚度确定,焊接角度有两个万面,一是焊条与焊接前进方向的夹角为60~75°;二是焊条与焊接左右夹角有两种情况,当焊件厚度相等时,焊条与焊件夹角均为45°;当焊件厚度不等时,焊条与较厚6、焊件一侧夹角应大于焊条与较薄焊件一侧夹角。              收弧:每条焊缝焊到末尾,应将弧坑填满后,往焊接方向相反的方向带弧,使弧坑甩在焊道里边,以防弧坑咬肉。焊接完毕,应采用气割切除弧板,并修磨平整,不许用锤击落。 清渣:整条焊缝焊完后清除熔渣,经焊工自检(包括外观及焊缝尺寸等)确无问题后,方可转移地点继续焊接。 2、立焊: 基本操作工艺过程与平焊相同,但应注意下述问题: 在相同条件下,焊接电源比平焊电流小10%~15%。 采用短弧焊接,弧长一般为2~3mm。 焊条角度根据焊件厚度确定。两焊件厚度相等,焊条与焊条左右方向夹角均为45°;两焊件厚度不等时,焊条与较厚焊件一侧的夹角应大于较薄一侧的夹角。焊条应与垂直面形成60°~80°角,使电弧略向上,吹向熔池中心。 收弧:当焊到末尾,采用排弧法将弧坑填满,把电弧移至熔池中央停弧。严禁使弧坑甩在一边。为了防止咬肉,应压低电弧变换焊条角度,使焊条与焊件垂直或由弧稍向下吹。 3、横焊: 基本与平焊相同,焊接电流比同条件平焊的电流小10%~15%,电弧长2~4mm。焊条的角度,横焊时焊条应向下倾斜,其角度为70°~80°,防止铁水下坠。根据两焊件的厚度不同,可适当调整焊条角度,焊条与焊接前进方向为70°~90°。 4、仰焊 基本与立焊、横焊相同,其焊条与焊件的夹角和焊件厚度有关,焊条与焊接方向成70°~80°角,宜用小电流、短弧焊接。 三、防雷接地安装方法及要求  接地要求:常规接地电阻应不大于10Ω,特殊情况下不大于4Ω 材料准备: 常用防雷接地材料镀锌钢材有扁钢、角钢、圆钢、钢管等,使用时应根据设计要求选择使用冷镀锌还是热镀锌材料。产品应有材料检验证明及产品出厂合格证,镀锌辅料有铅丝(即镀锌铁丝)、螺栓、垫圈、弹簧垫圈、U 型螺栓、元宝螺栓、支架等。 安装条件: 接地体作业条件:按设计位置清理好场地;基座地笼与预埋件连接处已绑扎完。 避雷网安装作业条件:接地体与引下线必须做完;支架安装完毕; 接地要求: 防雷接地符合设计要求及相关规范规定。接地体的埋设深度其顶部不应小于0.6m,角钢及钢管接地体应垂直配置。垂直接地体长度不应小于2.5m,其相互之间间距一般不应小于5m。接地体埋设位置距建筑物不宜小于1.5m;遇在垃圾、灰渣等处埋设接地体时,应换土,并分层夯实;当接地装置必须埋设在距建筑物出人口或人行道小于3m 时,应采用均压带做法或在接地装置上面敷设50~90mm 厚度沥青层,其宽度应超过接地装置2m;接地体(线)的连接应采用焊接,焊接处焊缝应饱满并有足够的机械强度,不得有夹渣、咬肉、裂纹、虚焊、气孔等缺陷,焊接处的药皮敲净后,刷沥青做防腐处理。 接地安装: 1.接地体的加工:根据设计要求的数量,材料规格进行加工,材料一般采用钢管和角钢切割,长度不应小于2.5m。如采用钢管打入地下应根据土质加工成一定的形状,遇松软土壤时,可切成斜面形。 2.为了避免打入时受力不均使管子歪斜,也可加工成扁尖形;遇土土质很硬时,可将尖端加工成锥形。如选用角钢时,应采用不小于40mm*40mm*4mm 的角钢,切割长度不应小于2.5m,角钢的一端应加工成尖头形状,水平接地体选用扁铁,规格不小于40mm*40mm*4mm。 3.挖沟:根据设计图要求,对接地体(网)的线路进行测量弹线,在此线路上挖掘深为0.8—1m,宽为0.5m 的沟,沟上部稍宽,底部如有石子应清除。 4.安装接地体(极):沟挖好后,应立即安装接地体和敷设接地扁钢,防止土方坍塌。先将接地体放在沟的中心线上,打入地下,一般采用手锤打入。一人扶着接地体,一人用大锤敲扣接地体顶部。为了防止钢管或角钢打劈,可加一护管帽套在接地管端,角钢接地可采用短角钢(约10cm)焊在接地角钢上即可。使用手锤敲打接地体时要平稳,锤击接地体正中,不得打偏,应与地面保持垂直,当接地体顶端距离地600mm 时停止打入。 5.接地体间的扁钢敷设:扁钢敷设前应调直,然后将扁钢放置于沟内,依次将扁钢与接地体用电焊(气焊)焊接。扁钢应侧放而不可放平,侧放时散流电阻较小。扁钢与钢管连接的位置距接地体最高点约100mm。焊接时应将扁钢拉直,焊好后清除药皮,刷沥青做防腐处理,并将接地线引出至需要位置,留有足够的连接长度,以待使用。 6.核验接地体(线):接地体连接完毕后,应及时请质检部门进行隐检。接地体材质、位置、焊接质量、接地体(线)的截面规格等均应符合设计要求及施工验收规范要求,经检验合格后方可进行回填,分层夯实。最后将接地电阻摇测数值填写在隐检记录上 设备防雷方案 避雷器安装 电源避雷器安装方法及要求  电源避雷器安装位置为设备机箱内,所有外接设备均要进行电源避雷器的安装。 电源避雷器分三个端口,分别为电源正、电源负、接地;外接设备电源线缆正负线,均要经过电源避雷器正负端口,然后再接入设备,接地端口接线长度≤500mm,若受条件限制达不到≤500mm的标准可适当延长,但应遵循接线尽量短的原则,转角应大于90度(是弧形角而不是直角),接地线接与独立接地网相接。     安装注意事项:  安装电源避雷器时,应该首先将地线系统连接牢靠后再连接其他线路。安装时必须断开电源,严禁带电操作;连接导线必须符合要求。  防雷器无需特别维护,只需定期检查其连接是否松动,工作状态指示灯是否正常。  当工作状态指示灯发绿光时,表示防雷器工作正常。发红光时,表示防雷器已有器件损坏,防雷效果变差,必须立即更换。   信号避雷器安装方法 信号避雷器安装于设备机箱内部,所有外接信号线路均要进行信号避雷器的安装。 信号避雷器分三个端口,分别为信号A、信号B、接地;外接设备信号线缆AB信号线,均要经过信号避雷器AB端口,然后再接入设备,接地端口接线长度≤500mm,若受条件限制达不到≤500mm的标准可适当延长,但应遵循接线尽量短的原则,转角应大于90度(是弧形角而不是直角),接地线接与独立接地网相接。   安装注意事项:  安装信号避雷器时,应该首先将地线系统连接牢靠后再连接其他线路。安装时必须断开电源,严禁带电操作;连接导线必须符合要求。  防雷器无需特别维护,只需定期检查其连接是否松动,工作状态指示灯是否正常。  当工作状态指示灯发绿光时,表示防雷器工作正常。发红光时,表示防雷器已有器件损坏,防雷效果变差,必须立即更换。  --- ### 320. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工业互联网作为工业4.0的核心技术,将设备、系统和服务连接在一起,实现数据的实时采集、分析和优化,推动制造业转型升级。通讯协议作为工业互联网的基石,在数据交换、设备控制、系统集成和数据分析等方面发挥着关键作用。 一、工业互联网通讯协议类型 1. 有线通讯协议 以太网:广泛应用于计算机局域网,数据传输速度快、稳定性高,适用于设备与设备之间的高速数据传输。 工业以太网:在以太网基础上发展,具有更高的实时性、可靠性和安全性,典型协议包括 PROFINET、EtherCAT、POWERLINK 等。 现场总线:用于连接工业现场设备,主要用于实现设备之间的数据交换和控制,典型协议包括 CAN、Modbus、Profibus、HART、DeviceNet 等。 2. 无线通讯协议 Wi-Fi:无线局域网技术,连接灵活、安装便捷,适用于设备的远程监控和管理。 蓝牙:短距离无线通信技术,适用于设备的低速率数据传输和设备间的短距离通信。 ZigBee:低功耗、低成本的无线通信技术,适用于物联网设备的连接和数据采集。 LoRa:长距离、低功耗的无线通信技术,适用于广域范围内的设备连接和数据传输。 5G:高速、低延迟、广连接的蜂窝移动通信技术,适用于工业互联网的移动应用。 二、工业互联网通讯协议功能 数据交换:实现设备之间数据的实时传输和交换,为工业互联网提供数据基础。 设备控制:实现对设备的远程监控和控制,提高生产过程的自动化水平。 系统集成:实现不同设备、系统和服务之间的集成,为工业互联网提供统一的平台。 数据分析:实现对大量数据的采集和分析,为工业互联网提供决策支持。 网络安全:保障工业互联网系统的安全可靠运行。 三、工业互联网通讯协议连接方式 1. 点对点连接 两个设备之间直接建立通信链路,适用于设备数量较少、通信需求较为简单的场景。 2. 多对一连接 多个设备通过一个中心节点进行通信,适用于设备数量较多、通信需求较为复杂的场景。 3. 星型网络 多个设备通过一个中心节点进行通信,中心节点负责数据的转发和路由。 4. 网状网络 任意两个设备之间都可以直接通信,具有更高的可靠性和灵活性。 五、工业互联网通讯协议发展趋势 高速化:提高传输速率、降低延迟,满足工业设备对数据传输速度的要求。 可靠性增强:提高可靠性和容错能力,保证工业设备的稳定运行。 安全性提升:加强数据加密、身份认证和访问控制等安全措施,保障工业互联网的安全。 能源效率优化:降低功耗、优化数据传输方式,实现节能减排的目标。 多协议融合:提高兼容性,实现不同设备和系统之间的互联互通。 人工智能赋能:利用人工智能技术提高协议的智能化水平,实现自感知、自学习和自适应。 六、工业互联网通讯协议典型应用 智能制造:在生产车间中,使用工业互联网通讯协议连接各种设备,实现生产过程的实时监控和优化。 智慧能源:在电网中,使用工业互联网通讯协议连接各种电气设备,实现电网的智能化管理。 智慧城市:在城市中,使用工业互联网通讯协议连接各种基础设施,实现城市运行的智能化管理。 七、总结 工业互联网通讯协议是工业互联网的关键技术,在工业4.0时代将发挥越来越重要的作用。未来,工业互联网通讯协议将朝着高速化、可靠性增强、安全性提升、能源效率优化、多协议融合和人工智能赋能的方向发展,为工业互联网的应用提供更加强大的技术支撑。 --- ### 321. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 道路事故总是在几秒钟内发生。而且,救援系统到达的时间直接影响事故遇难者的康复情况。 想象一下,如果您的车速和温度达到阈值,并且直接向救援队发送消息以便立即采取行动,那该多好。 由于汽车需求的增加,车辆事故和交通危险不断增加。在道路上,人们的生命始终处于危险之中。此外,事故定位延迟、交通拥堵和救护车延误也会增加死亡风险。 如果非要说传统救援体系的问题,那就是“时间就是生命”。传统方法依赖于人类和人为干预来按时报告事故。在偏远地区,如果发生事故,延误的情况可能会更加突出。 我们将讨论一种物联网解决方案,该解决方案可以改革我们处理车辆事故的传统方式。 什么是基于物联网的车辆事故检测系统? 基于物联网的自动车辆事故检测系统有助于减少事故造成的生命损失。此外,它还减少了救援队/救护车到达医院所需的时间。 上述事故检测和警报系统利用安装在车辆和道路内的传感器网络来形成预测安全网。 道路事故预防系统持续监控道路上的多个参数,例如: 车辆移动  速度、方向或重力的任何意外变化都预示着碰撞或事故。 地理因素 雾、道路湿滑或危险的天气条件等环境因素会增加事故发生的几率。 车辆健康 有故障的安全气囊、失灵的制动器或转向系统可能会导致严重事故。 基于物联网的自动车辆事故检测和救援系统如何工作? 物联网 (IoT) 技术的集成已经并且仍在彻底改变我们生活的各个方面。自动车辆事故检测和救援系统是世界上尚未触及的引人注目的应用之一。 让我们了解车辆事故检测系统的工作原理以及为什么它对社会有好处。 1. 数据采集 数据采集一词是指收集现实世界的信号并将其转换为数字域以进行显示、存储和分析。在这种情况下,传感器收集上述参数的实时数据(信号),例如车辆健康状况、车辆运动和环境因素。 2. 边缘计算  集成微控制器或边缘计算设备 将分析传感器收集的数据,以识别和定位潜在的事故场景。 3. 决策 一旦收到信息,先进的算法就会根据历史数据和事故模式分析数据,以预测事故的严重程度和可能性。 4. 启动响应  在确认发生事故的情况下,系统 发送警报:使用 GPS 和预测的严重程度立即向救援/紧急服务部门发送准确的位置数据通知。 激活安全功能:系统激活内置安全功能,例如安全气囊展开、开门和自动紧急呼叫。另外,请了解我们的 SOS 系统。 提醒附近车辆:事故现场附近的车辆收到警告,避开事故区域。这样做是为了防止交通拥堵。 指导救援队:与救护车和救援队共享实时交通更新和备用路线。 超越事故检测:及时救援 使用物联网的事故 检测和警报系统的作用远不止事故检测。它也是一个救援系统,有助于更快、更高效的紧急救援工作,例如: 医疗支援: 配备急救物资的救护车、医疗无人机(目前最流行的东西)可以派往事故现场。 交通管理 车辆事故常常导致交通拥堵。因此,如果发生事故,可以计划改变交通路线,为紧急车辆和救护车清理道路。 应急准备 当发生自然灾害或重大事故时,物联网系统可以通过有效分配资源来适当协调救援工作。 车辆事故检测系统的优点 基于物联网的自动车辆事故检测和救援系统的重要性除了拯救生命之外还有其他几个好处。车辆事故检测系统的其他一些好处包括: 降低事故率通过及时发现并警告事故,可以防止许多事故的发生。 降低保险成本通过更快的事故响应和救援管理,可以降低事故的严重程度,从而降低保险费。 改善交通流量通过高效的交通管理,可以减少交通拥堵,并减少整体出行时间。 高效的应急服务借助实时数据和协调响应,应急服务可以更加有效。 总结, 将物联网集成到车辆事故检测和救援系统中,可以保证未来道路上的每辆车和每次旅行都更加安全。 通过利用传感器、物联网设备和物联网技术,我们还可以最大限度地减少道路事故造成的成本和损害,并建立一个更加坚固和响应迅速的交通生态系统。 通往更安全世界的道路始于了解物联网的力量及其改变我们应对和预防道路事故的方式的潜力。 --- ### 322. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数字孪生流域的信息基础设施在水利行业中的关键作用 随着科技的飞速发展,数字孪生技术在各行各业都取得了显著的进展。在水利行业中,数字孪生流域的信息基础设施成为推动行业智能化和效率提升的核心要素。这一基础设施包括光缆、微波、卫星、移动通信等网络设施,旨在支持水文、水资源、水质和水利工程等方面数据的采集、传输和共享。这些设施提供了流域基本特征和状况的基础数据,为水利行业的决策制定、预警、远程监测和智能管理提供支持。 1. 信息基础设施在水利行业的重要性 信息基础设施在水利行业中扮演着至关重要的角色。它涵盖了各种网络设备和技术,为水利系统的运行提供了强大的支持。这些基础设施的建设和运营不仅对水利行业的现代化管理产生深远影响,还对水资源的可持续利用和环境保护具有重要意义。 在水利行业中,信息基础设施的重要性主要体现在以下几个方面: 1.1 数据采集和监测 信息基础设施通过各种传感器和监测设备实时感知和采集与水利相关的数据和信息。这些数据包括水位、流量、雨量、变形、位移、水质等关键信息,以及水利设施的运行状态和安全性能。通过大数据分析,这些数据为水利行业提供了准确、全面的流域信息,为科学决策提供了有力支持。 1.2 数据传输和共享 信息基础设施通过网络设备将采集到的数据传输至数据中心,实现了对数据的集中存储、管理和处理。这使得各类信息能够及时、高效地传输,保障了水利系统网络的互联性。同时,共享数据平台的建设促进了行业内各方信息的互通共享,提高了整个水利系统的运行效率。 1.3 决策支持和预警 基于信息基础设施采集到的大量数据,水利行业可以实现更精准的决策支持和预警系统。通过先进的算法和模型,系统能够分析水域状况,提前发现潜在问题,从而及时制定应对方案,减少灾害风险,提高水利系统的应急响应能力。 1.4 远程监测和智能管理 信息基础设施的建设使得远程监测和智能管理成为可能。水利行业可以通过远程控制设备,实现对水利系统的实时监测和调控。智能管理系统基于大数据和人工智能技术,对水资源进行优化配置,提高了水利系统的整体效益。 2. 数字孪生流域的信息基础设施组成 数字孪生流域是信息基础设施在水利行业的一种高级应用,它包括水利感知网、水利信息网和水利云三大组成部分。 2.1 水利感知网 水利感知网是通过在流域内部署传感器和监测设备,实时感知和采集与水利相关的数据和信息的网络系统。在这一网络系统中,包括在水库、河流、闸门、泵站等水利工程设施上部署的传感器,用于监测水位、流量、雨量、变形、位移、水质等关键数据。同时,水利感知网加强了雷达、卫星遥感、航空遥感、高清视频、无人机、无人船、地面机器人、水下机器人等新型监测手段的应用,从而实现了地面监测数据的融合,为虚拟世界与物理世界交互提供了精准、同步、及时的支持。其目标是实现对流域内水文环境和水利设施的全面感知和监测。 2.2 水利信息网 水利信息网是将水利感知网所采集到的数据和其他相关数据进行整合、存储、管理和共享的网络系统。它包括数据中心、数据库、数据平台等,用于数据的集中存储、管理和处理。水利信息网应实现水利系统网络的无盲区、无死角互联,满足各类信息及时高效传输。它充分利用通信卫星、北斗、5G等新一代网络技术,以保障监测站网在极端恶劣环境下的安全可靠传输。水利信息网的核心功能是通过数据的整合和共享,为决策者和相关部门提供及时、准确的水利信息,从而支持决策和规划的制定。 2.3 水利云 水利云是指基于云计算技术的水利信息处理和应用平台。通过云计算资源和算法模型,对水利感知网所采集到的数据进行分析、建模和仿真,实现对流域的数字孪生模拟。水利云的建设包括水利部本级节点和7个流域管理机构节点的一级水利云,以及省级水行政主管部门依托政务云、自建云等建设的二级水利云。其目标是提供决策支持和优化方案,帮助决策者更好地进行流域规划、水资源管理、环境保护等工作。 3. 信息基础设施的优势和挑战 信息基础设施的建设为水利行业带来了诸多优势,同时也面临一些挑战。 3.1 优势 3.1.1 提高水利系统运行效率 通过数字孪生流域的信息基础设施,水利行业实现了对水域状况的实时监测和精准调控。这提高了水利系统的运行效率,减少了资源浪费,为可持续发展奠定了基础。 3.1.2 优化水资源配置 信息基础设施的建设使得水利行业能够更好地对水资源进行优化配置。通过大数据分析和数字孪生模拟,系统能够为不同需求场景提供最佳的水资源配置方案,提高了整个水利系统的效益。 3.1.3 改善环境监测与保护 数字孪生流域的信息基础设施为环境监测和保护提供了更为精准的数据支持。通过实时监测水质、流量等参数,系统能够及时发现污染源,采取措施减少环境污染,促进可持续环境管理。 3.2 挑战 3.2.1 安全隐患 信息基础设施的建设增加了系统的联网性,也带来了安全隐患。网络攻击、数据泄露等安全问题可能对水利系统造成严重影响,因此需要加强网络安全措施,确保信息基础设施的安全性。 3.2.2 数据隐私 随着数据采集和共享的增加,涉及大量个人和机构的敏感信息。因此,如何保护数据隐私成为一个亟待解决的问题。水利行业需要建立健全的法规和制度,确保数据的合法、合规使用。 3.2.3 技术标准与互操作性 在数字孪生流域的建设中,可能涉及多个设备和系统,而它们的技术标准和互操作性可能存在差异。这需要行业内各方共同制定一致的技术标准,以确保信息基础设施的协同运行和数据共享。 4. 未来展望与发展方向 数字孪生流域的信息基础设施在水利行业中展现出巨大的潜力,未来的发展方向主要体现在以下几个方面: 4.1 智能化水利系统 随着人工智能、物联网等技术的不断发展,数字孪生流域的信息基础设施将更加智能化。通过引入智能算法和自动化技术,水利系统将能够更加自适应、自主地运行,提高整体管理效率。 4.2 多源数据融合 未来数字孪生流域的信息基础设施将更加注重多源数据的融合。除了传统的传感器数据,还将整合卫星遥感、气象数据、社会经济数据等多维度信息,形成更为全面的流域管理视图。 4.3 强化网络安全 随着信息基础设施的不断扩展,网络安全将成为重中之重。未来的发展需要加强对网络安全的投入,建立健全的网络安全体系,确保水利系统的稳定运行。 4.4 政策法规支持 为推动数字孪生流域的信息基础设施建设,政府需要出台相关的政策法规,规范行业发展,保障信息基础设施的合法性和可持续性发展。 4.5 国际合作与标准制定 数字孪生流域的信息基础设施不仅在国内有广泛应用,也需要与国际接轨。加强国际合作,制定一致的技术标准,促进全球水利信息基础设施的协同发展。 结语 数字孪生流域的信息基础设施是水利行业实现智能化管理的关键驱动力。通过水利感知网、水利信息网和水利云的构建,水利系统实现了对流域的全面感知、数据的集中处理和智能化决策支持。信息基础设施的发展不仅提 高了水利系统的运行效率和管理水平,也为可持续发展提供了有力保障。面对未来的挑战,水利行业需要加强安全防护、注重数据隐私保护、推动技术标准与互操作性的统一,并在政策法规和国际合作方面加强支持,共同推动数字孪生流域的信息基础设施取得更大的发展成果。 --- ### 323. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 水质监测方式可根据检测位置与形式,分为实验室检测、移动实验室检测、在线监测、在线传感器监测等四种形式,也基本对应了水质监测的四个阶段。 01. 实验室监测 在实验室监测方法中,水样需要采集后送至实验室进行分析。实验室使用各种化学方法和仪器设备对水样进行处理和测试,以确定其各种水质参数,如PH值、溶解氧、氨氮、COD、总悬浮物等。 实验室监测方法存在严重的滞后性,如BOD、PH等部分指标在取样和转移过程中容易发生改变。 02. 移动实验室监测 为了解决实验室监测的时间延迟和采样不联系等问题,移动实验室逐渐兴起。 这种方法通常使用便携式分析仪器和设备,在采样点福建进行现场分析。 移动实验室将简易便携的水质监测设备组装在车上,直接将车开到水源地附近进行现场取水检测方式,提供快速的水质分析结果。 但是存在专业人员缺乏、设备限制、检测数据收集和分析速度较慢的问题。 03.在线监测 在线监测能够实现在线、连续监测,解决监测与相应的时滞性问题。 在线监测将流动注射(Flow Injection)技术与化学分析方法结合起来。 通过一系列的自动化处理步骤,实现了对水样中特定化学物质的连续、实时测量。 在在线监测中,通常包括以下步骤: ① 采样:水样从监测点处取得,可以通过自动采样器进行连续、定时的采样。 ② 流动注射:水样进入流动注射系统,通过一系列的进样阀门和泵进行流动注射,使得水样在连续流动的条件下进行分析。 ③ 试剂注入:在流动注射系统中,试剂溶液会被注入到水样中,与目标化学物质发生特定的反应。这些试剂可以用于样品前处理、标记化学物质或催化反应等。 ④ 反应:在试剂注入后,水样中的目标化学物质与试剂发生特定的反应,形成测量所需的物理或化学特性变化。这些变化可以是颜色、荧光、电流等。 ⑤ 信号检测:在反应完成后,使用光学、电化学或其他检测方法对反应产物进行测量。通常使用光谱仪、荧光仪、电化学传感器等设备,将信号转化为分析结果。 ⑥ 数据分析与输出:通过数据处理和分析,将得到的测量结果转化为水质参数的数值。这些数据可以通过显示屏、计算机或无线传输等方式输出。 04. 传感器监测 随着传感器技术的发展,水质监测逐渐向在线传感器监测转变。 在线传感器监测利用安装在水体中或管道系统上的传感器设备,实时测量水质参数,如pH、电导率、浊度、溶解氧等。 这些传感器可以通过无线通信或有线连接与中央监测系统进行数据传输,使得水质监测可以实现自动化、连续化和实时化。 传感器监测是在线监测的进一步发展,它利用更小型化、更智能化的传感器设备,可以实现对更多水质参数的监测。 传感器监测技术不仅可以实时监测传统的水质参数,还可以监测微量元素、有机物污染物、重金属等更复杂的水质指标。 --- ### 324. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 设备状态监测在智慧水务场景中至关重要,涵盖了对水泵、阀门设施、泵站电气设备等的实时监测和评估,旨在确保设备的可靠运行、预防故障,提高整体可靠性。以下是在这个领域中电量监测、噪声监测和相关技术的更详细探讨: 1. 电量及相关监测 内容: 实时监测与分析: 电量监测系统实现了对各个设备用电量的实时监测,并提供数据分析和报表生成功能。 能耗分析和优化: 通过对不同时间段、不同设备的能耗进行分析,系统可找出高能耗设备和时段,进而进行优化调整。 异常检测和预警: 电量监测系统能够及时发现设备故障、电路问题等异常情况,通过预警系统采取维修措施,避免生产中断和能源浪费。 成本管理与节约: 评估设备的能效水平,优化用电方案,降低能源成本,提高企业竞争力。 原则: 必要性: 行业标准要求对55KW及以上的用电设备进行电量监测。 优化管理: 通过实时监测和分析,企业可以对能耗进行管理和优化。 技术: 电量监测系统: 利用多功能电表进行监测,实现数字化、信息化、网络化。 实时报表生成: 系统可以生成实时的用电报表,帮助企业更好地了解用电情况。 2. 噪声监测 内容: 声音和视觉泄露检测: 通过灵敏的传感器和算法,噪声监测设备能够检测管网中的漏水声音和视觉泄露迹象。 存储和分析: 噪声监测设备可以存储不同位置的噪声水平和频率数据,用于后续分析和比较。 实时测量: 噪声监测设备实现实时测量,即时获取管网中的噪声数据,有助于及时发现漏损问题。 原则: 多功能监测: 噪声监测设备服务于管网漏损监测,包括声音和视觉方面的检测。 实时性: 实时测量有助于快速响应管网中的漏损问题。 技术: 传感器技术: 专门的传感器用于监测振动和噪声信号,帮助实时监测设备或管道的运行状态和异常情况。 管网噪声记录仪: 通过检测管道壁面的振动,监测管道是否发生泄露,帮助记录和分析噪声数据。 3. 监测产品技术 内容: 电量监测技术: 利用多功能电表进行监测。 振动和噪声监测技术: 使用专门传感器进行监测,安装在设备或管道上。 原则: 精准监测: 通过专门的传感器实现对振动和噪声的精准监测。 技术: 电量监测技术: 利用多功能电表实现对设备用电量的监测和分析。 振动和噪声监测技术: 使用专门传感器,管网噪声记录仪等设备,帮助实现对振动和噪声的全面监测。 通过这些先进的监测技术,智慧水务系统能够实现对设备状态的全面监测,确保水务设备的高效运行、预防潜在故障,并为异常情况提供及时的响应和处理。这不仅提高了水务系统的稳定性和可靠性,还有助于降低维护成本和提高整体效率。 --- ### 325. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 水质传感器是利用先进技术实现对水质各项参数进行监测与分析的高科技工具。为确保测量结果的精准性与可靠性,水质传感器需要定期进行校准。以下是水质传感器校准的详细解释: 1. 校准的必要性 水质传感器通过采集与分析水样,获取关键水质参数,这些参数直接影响水质的优劣。为了保证传感器测量的准确性,校准是不可或缺的环节。 2. 校准原因 传感器漂移: 随时间推移,传感器测量性能可能发生漂移,导致测量结果偏离实际值。校准有助于修正漂移,确保准确性。 制造差异: 不同传感器在制造过程中可能存在微小差异,校准能够消除这些差异,使其在相同水质条件下产生一致的测量结果。 环境因素: 测量结果可能受温度、压力、光照等环境因素影响,校准可根据实际环境进行调整,提高准确性。 水样特性: 不同水样具有不同化学成分,导致传感器响应不同,校准可针对不同水样进行调整,确保适用于特定水质条件。 维护与保养: 定期校准是对传感器进行维护和保养的重要手段,有助于及时发现故障或损坏。 3. 校准周期及方法 校准周期根据传感器类型、使用环境和参数稳定性等因素而定。常见校准方法包括: 外部标准溶液法: 通过与已知浓度的标准溶液比较进行校准。 内部参考电极法: 利用传感器内部的参考电极进行自动或按需校准。 双点校准法: 利用两个已知浓度的标准溶液建立校准曲线。 多点校准法: 针对复杂传感器,使用多个标准溶液建立更精确的校准曲线。 4. 校准步骤 一般的校准步骤包括准备工作、校准标准溶液、校准传感器、记录与验证校准结果以及定期重复校准。 --- ### 326. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1. 引言 近年来,随着全球气候的变暖和人类活动对自然环境的影响加剧,森林火灾事件屡屡发生,为全球的生态环境和经济发展带来了巨大的威胁。每当火灾爆发,除了对自然生态造成不可逆的破坏外,还会影响到农业生产,导致经济损失。为了更加及时、有效地预防和控制森林火灾,传统的人工巡查和简单的监控手段已经不能满足现代化管理的需求。因此,研发一套高效、智能的预警系统成为了当务之急。 2. 系统设计与主要模块 在现代化的农业森林智慧烟感预警系统中,我们主要围绕以下几个核心模块进行设计和研发: 2.1 传感器采集模块 这一模块主要通过多种传感器,如温度传感器、湿度传感器、风速风向传感器等,实时监测森林内的各种环境参数。这些建议对于火灾的早期识别至关重要。例如,当森林内部的温度异常升高,或者湿度急剧下降,都可能是火灾即将发生的前兆。 2.2 摄像机模块 这一模块采用了最新的高清摄像技术,能够捕捉到林区内的每一个细节。与此同时,为了适应各种复杂的天气和光线条件,摄像机还配备了红外夜视功能和自动对焦功能。这确保了无论是白天还是黑夜,无论是晴天还是雨天,摄像机都能清晰地捕捉到任何异常现象。 2.3 视频图像处理与深度学习模块 视频图像处理技术在火灾预警系统中起到了至关重要的作用。在这一模块中,我们首先对摄像机捕获的原始视频进行预处理,包括图像灰度化、增强、降噪、背景去除等步骤。预处理后的图像将被送入深度学习算法进行分析。经过大量实地数据的训练,我们的算法已经能够准确识别出火焰、烟雾等火灾标志性特征。 2.4 数据传输与云存储模块 随着现代技术的进步,云存储已经成为了数据储存的标配。在这一模块中,我们采用了先进的物联网技术,确保所有的传感器数据和摄像机视频都能实时、高效地传输到云端。这不仅仅可以实现远程的数据访问和管理,同时,借助云计算的强大计算能力,可以进行更为复杂的数据分析和挖掘,为决策者提供更加精准的预警信息。 2.5 用户界面与信息反馈模块 一个高效的预警系统,不仅要能够及时检测到火灾,还要能够迅速地将这些信息传达给相关人员。在这一模块中,我们设计了一个直观、易于操作的用户界面。无论是森林管理人员还是普通民众,都可以通过这个界面实时查看森林的状态、获取预警信息、并采取相应的行动。此外,系统还支持手机推送、短信、邮件等多种预警通知方式,确保关键信息能够迅速传达到每一个用户。 3. 系统应用与实践效果 自从我们的农业森林智慧烟感预警系统投入使用以来,其效果已经得到了广大用户的一致好评。在多次火灾事件中,系统都能够在火灾初起时及时发出预警,大大缩短了火情发现与处理的时间,有效避免了火灾进一步蔓延所造成的损失。 首先,由于实时的环境参数监测,系统可以根据温度、湿度、风向等多种因素,预测火灾的可能性和火势的发展趋势。这对于决策者来说,无疑提供了宝贵的时间窗口,进行早期的灭火或撤离工作。 其次,得益于视频图像处理与深度学习技术的结合,系统可以准确地识别出火焰、烟雾等标志性特征,及时发出预警,避免了传统方法中的误报和漏报现象。 --- ### 327. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1. 引言:物联网与现代农业的结合 随着科技的迅速进步,物联网已经深入到了我们日常生活的各个角落,它所带来的各种应用和服务改变了人们的生活方式。农业,作为世界上最古老的行业之一,也没有逃过这场科技变革的浪潮。结合现代农业技术,物联网为这个传统行业带来了前所未有的机会与挑战。尤其在温室大棚蔬菜种植领域,其应用已经越来越广泛。 2. 物联网技术在智慧农业中的主要应用 环境监控: 通过部署各种传感器,如温度、湿度、光照、CO2浓度等传感器,农户可以实时监测大棚内的环境变化,并进行调整。这些数据不仅可以帮助农民更好地了解作物的生长环境,还可以为其提供数据支持,使得调整策略更为精准。 智能灌溉: 传统的灌溉方法往往存在很大的浪费,而物联网技术可以根据土壤湿度传感器的数据,智能地控制灌溉系统,保证作物获得恰到好处的水分,既节约了水资源,又提高了作物的产量和质量。 病虫害预警: 通过物联网技术,农民可以部署病虫害监测传感器,一旦检测到异常,系统会及时发出预警,帮助农民采取措施,减少农药的使用,保证农产品的安全与健康。 3. 物联网与智慧农业的融合趋势 在过去的几年中,我们已经看到了物联网技术与现代农业的深度融合。例如,无人机的广泛应用已经改变了农业的种植、监测和收割方式。通过搭载各种传感器的无人机,农户可以迅速获得大面积农田的实时数据,这不仅大大提高了工作效率,还确保了农作物的健康成长。 4. 物联网技术所带来的优势 数据驱动的决策: 物联网技术为农民提供了大量的实时数据,从而帮助他们进行数据驱动的决策。这些决策比传统的经验驱动的决策更为精确,从而提高了作物的产量和质量。 减少资源浪费: 通过物联网技术,农民可以更精确地控制水、肥、农药等资源的使用,确保每一滴水和每一粒种子都能得到最大的价值。 提高农业持续性: 物联网技术可以帮助农民实现更为可持续的农业实践。例如,智能灌溉系统可以减少水资源的浪费,而病虫害预警系统可以减少农药的使用。 5. 面临的挑战 尽管物联网在农业中的应用带来了很多优势,但也面临一些挑战。 技术难题: 物联网技术在农业中的应用仍然是一个技术驱动的领域,它需要大量的研发和创新来解决实际应用中的问题。 数据安全与隐私: 随着大量数据的产生,如何保障数据的安全和隐私也成为一个亟待解决的问题。 成本问题: 虽然物联网技术可以为农业带来长远的收益,但其初期的投资成本仍然是一个不小的挑战。 6. 结论 物联网技术与现代农业的结合正在改变农业的面貌。它为农业带来了前所未有的机会,同时也带来了挑战。但无疑,随着技术的进一步发展和应用,智慧农业将为我们创造一个更加绿色、高效和可持续的未来。 --- ### 328. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 智慧仓储是智慧物流的一个环节。智慧物流是用各种信息和数字手段获得更高效、低成本、更可靠的物流服务。智能仓储物流是运用物联网技术和大数据分析来对仓库进行智能化管理,实现快速处理存储和派送物品的过程,提高了物流配送的效率和可靠性。 有人说:“你这些概念每个字我都能看懂,但我还是不知道什么是智慧仓储物流?” 我举一个很小很小的例子,你就明白了。 我们每个人几乎天天使用的——外卖柜。外卖柜相当于一个小型的物流点,它可以线上多平台使用,实现线上管理货物的寄存和取用,智能检测异常柜子,用户一键取餐等等功能。这就是智慧仓储物流的便利之处,当然,这只是一个很小的点,一般来说智慧仓储物流的应用在更大型的制造业才能体现更大的作用。 不过,在实际应用中,智慧仓储物流系统要复杂得多。智慧仓储物流系统由软硬件两类装备构成,主要的装备如下,对应了传统物流的各个环节。 问题来了,到底智慧仓储物流可以解决哪些问题呢?下面我来详细谈一谈。 01 传统仓储物流产生的问题 02 智慧仓储解决方案 智慧仓储可以通过信息化、物联网和机电一体化来实现仓库的高效管理。下面详细看看智慧仓储有哪些优势: 03 智慧仓储的整体架构 3层结合:入库管理,出库管理,库存管理相结合,信息系统联动,数据报表随时调用,管理者可以一目了然的调用数据。 04 智慧仓储的应用价值 了解了以上的智慧仓储物流架构,还要配合上合适的工具才能事半功倍的打造智慧升级。给大家介绍一款好用的智慧升级大屏制作工具-FineVis,作为业内领先的帆软软件公司新推出的产品,它可以通低代码快速打造3D大屏场景,图表可以简单拖拽,修改数据即可使用,亲测好用。 下面就是FineVis针对从园区仓储库存到货物运输再到港口装箱的全工作流程,旨在三维场景打造一个智慧仓储物流流程。 1、园区三维场景一览 可以通过可视化方式打造园区全景空间切换,通过监控大屏可以巡游整个园区综合态势。整个园区近在眼前,非常仿真,结合了园区建面、园区绿化程度、园区人员数量等重要数据,让园情况一目了然。 2、园区安防环境状况监控 大多数状况下仓储保存时间和环境有较大的关系,因此结合大数据技术以及对接天气系统,对园区内的环境进行全天候的监测,从温度、湿度、二氧化碳、PM2.5 等方面进行环境数据的采集,并在 2D 面板上实时展示。并且基于园区的安防综合态势,借助安防系统监控实现园区全天实时监控。 3、仓库存储订单可视化监控 从宏观角度掌控整个仓库中供应链详细情况概览。涉及整个园区的仓储全流程,从入库 - 仓储过程 - 出库,全方位掌握整个物流园区的仓储、订单综合分析情况。接入订单系统对仓库整体的货物订单进行统计、管理、追踪和分析。 4、人员/货物输送分析 基于实时的gps定位,直观展示仓储园区内所有车辆和人员实时定位情况,统计当日可运载的货物最大数量来安排货物输送排期计划。 货车车辆分析: 人员安全管理: 通过重要数据来监测人员的安全。数据包括园区当前车辆数量、园区进去车辆实时记录、园区车流量分析、园区剩余可用货车数、当前园区人员车辆定位监控、园区可用人员分析等。 5、订单物流在途分析 针对不同订单执行订单和物流在途监控,直观描述当前所有等待取件、在途订单、物流结束等不同订单实际状态分析。并且通过已有的所有数据分析反馈到物流改进过程中,完成订单的精准可视化管理过程。 6、供应链库存三维可视化 智慧仓储管理可以 3D 仿真形态的方式展现出仓储中心与物流转运中心的全场景管理交互系统。物料流程监控通过 3D 效果实现了货物从入库开始到出库完成的全过程信息监控,并对立体库货架、堆垛机、输送机、拆叠盘机等作业设备状态进行信息监控,实现数字孪生智慧仓储物流一体化场景。 管理者通过三维直观感受正在发生的仓储情况,实现实时的入库查看、库位货架远程监管、物品的出库实时流程查看,更直观感受库存压力情况。 仓库内景效果展示 7、自动仓设备状态监控 自动仓中有各种不同的仓库所需设备构建起一个完整的仓储链路,其中设备的运行和实时状态会影响一个仓储的全链路,因此针对整个自动仓所有设备的实时运行监控便是三维场景的一个核心。用户可以通过一张大屏页面实时监控到自动仓所有设备当前运行路径、位置、状态,并能够及时获取到设备故障带来的告警问题并及时解决和优化。 仓储设备实时运行状态展示 自动仓仓位管理 监控当前所有货架仓位的实时变化情况,当前仓位有货品时自动显示对应货品模型,通过点击可以查看当前仓位货品详细情况,当前仓位没有货品时,自动隐藏当前仓位的货品相关模型实现数字化仿真效果。 --- ### 329. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1. 农业数字网络的建设 在今天的农业生态中,物联网和数字化技术正快速渗透。传统的农业监测,曾经依赖密集劳动和时间,现已由物联网技术得以简化。各种传感器,例如用于测量土壤湿度、植物生长状态的传感器,以及用于跟踪牲畜位置和健康的设备,都为农民提供了宝贵的实时信息。更进一步,智能灌溉系统已经开始应用,它们根据土壤的实际需求自动调整水分供应。 2. 农业的机械化与机器人技术 随着劳动力成本的上升和劳动力供应的不稳定,机器人和自动化设备逐渐成为现代农田的新常客。这些机器人不仅可以执行基础任务,如种植和收割,还能完成更为复杂的任务,例如识别和除去杂草,或者精确地喷洒农药和肥料。在畜牧业中,自动化的喂食和挤奶系统也在逐渐替代传统方法。 3. AI助力下的智能农业决策 AI技术为农业带来了前所未有的决策支持。通过对大量数据的分析,AI可以帮助农民预测天气变化、病虫害的爆发,甚至市场价格的波动。更进一步,植物和牲畜的健康状况也可以通过AI算法进行早期诊断,从而进行及时干预。 4. 生物工程在农业的角色 随着生物技术的进步,我们已经能够更精确地改造植物和动物的基因以满足特定的需求。基因编辑技术,如CRISPR,使得科学家能够为特定的品种引入抗病、耐虫或高产的特性。除此之外,生物农药和生物肥料正在逐步替代化学产品,这不仅减少了对环境的污染,还增强了农产品的可持续性。 5. 精准农业与资源优化 农业生产中资源的优化使用已经成为一个核心议题。借助于高精度的GPS和地理信息系统(GIS),农民可以精确地测量土地、应用化肥和农药。通过这种方式,我们能够确保每一片土地都得到了恰当的处理,从而提高产量并减少浪费。 6. 无人驾驶飞行器在农业中的应用 无人机正在逐渐成为农业监测的关键工具。配备了多种传感器的无人机可以高效地收集田地的图像信息,帮助农民检测病虫害、评估作物的生长状况,甚至测量土壤的水分含量。此外,无人机也在畜牧业中发挥作用,例如帮助农民监测和管理放养在大片草地上的牲畜。 7. 数据驱动的农业管理 随着大数据和云计算技术的普及,现代农业越来越依赖数据进行决策。各种农业相关数据,如土壤测试、气候模型和市场趋势,现在都可以被集成到统一的平台上,供农民进行分析和决策。 8. 受控环境下的农业创新 随着全球气候的变化和城市化的加速,受控环境农业(如垂直农业和水培)正逐渐受到关注。这些方法允许在非传统的农业环境,如城市建筑物内或恶劣气候地区进行农作物种植,从而实现更高的产量和资源效率。 9. 再生农业与生态平衡 与传统农业方法相比,再生农业着重于土壤健康、生物多样性和生态系统的恢复。这种方法强调使用自然方法,如覆盖作物和农田生物多样性,来恢复土壤、存储碳并促进农田的健康。 10. 5G与农业数字化的结合 5G技术的高速、低延迟特性为农业带来了革命性的变化。从远程控制农业机械到实时数据的上传下载,5G为农业物联网设备提供了前所未有的连接能力。农民可以更加迅速地响应变化,进一步实现农业自动化和智能化。 这些趋势显示,随着技术的进步,农业正在向更加智能、可持续和高效的方向发展。在未来,这些技术将不仅有助于提高农作物的产量和质量,还将对全球食品安全和生态环境产生深远的影响。 --- ### 330. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 农业,作为人类社会的支柱,一直在不断演变,以满足全球不断增长的食物和资源需求。现代农业需要智能化、精确化和可持续化的解决方案。这是ChatGPT和其他AI技术所能带来的价值。 1. ChatGPT与农业现代化 传统农业依赖经验和观察。但随着技术的发展,AI,特别是ChatGPT这类高级语言模型,为农业带来了前所未有的转变。 决策支持:利用ChatGPT,农民可以获得即时的种植建议、病虫害预测和市场动态,从而做出更加科学的决策。 智能监控:结合物联网技术,ChatGPT可以实时分析农田数据,提供灌溉、施肥和病虫害防治的智能建议。 2. 重新定义农业经济 技术创新不仅仅是提高生产效率。它们也为农业经济开辟了新的领域和机会。 供应链优化:通过对市场需求、天气预测和作物生长状况的深度分析,ChatGPT可以帮助农民和食品生产商优化供应链,确保食品的新鲜和供应稳定。 风险管理:金融机构可以利用ChatGPT对农田数据进行深入分析,为农民提供更精确的保险和贷款产品。 3. 赋予农业生态意义 可持续农业是全球的共同目标。ChatGPT能够在这方面发挥关键作用。 资源管理:通过对土壤、气候和植物生长条件的实时分析,ChatGPT可以建议最佳的灌溉、施肥和病虫害管理策略,减少资源浪费,降低环境污染。 生物多样性保护:ChatGPT可以帮助农民了解哪些种植策略最有助于保护和增加生物多样性。 4. 面向未来的挑战 尽管ChatGPT为农业带来了巨大的潜力,但还存在一些技术和实施挑战。 数据问题:高质量的数据是AI在农业中应用的关键。如何获取和处理这些数据是一个主要问题。 技术接受度:尽管AI的潜力巨大,但农民和其他利益相关者需要教育和培训,以便完全利用这些工具。 结论 ChatGPT和其他AI技术为农业领域带来了前所未有的机会。但实现这些机会需要跨学科的合作和投资。通过创新和合作,我们可以确保农业的未来是智能的、高效的和可持续的。 --- ### 331. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 智慧温室大棚系统,基于Modbus物联网平台,通过各类高度敏感的传感器,实时远程监测农作物生长环境的各项参数,包括空气温湿度、土壤水分、土壤湿度、土壤肥力、土壤PH值等。这一系统以农作物的栽培工艺为指导,运用平台的边缘计算技术,实现自动化的灌溉、卷帘控制、喷淋、施肥以及农药喷洒,从而确保农作物在适宜的生长环境中茁壮成长。这不仅提高了农作物的品质和产量,还为农民带来了增收的机会。 通讯架构: 智慧温室大棚系统采用Modbus物联网平台,实现对温室环境和土壤墒情数据的监测和远程控制。这一平台不仅支持以太网、WIFI、4G和5G等多种通讯方式,还允许用户根据实际情况自由选择通讯方式。此外,系统提供了现场触摸屏或LED显示,以及远程监控软件,如WEB平台、PC软件、安卓和苹果APP,方便用户随时查看和控制大棚内的情况。 功能特点: 温室环境监测: 通过物联网传感器,实时监测温室内的温湿度、CO2浓度、光照度等参数,借助Modbus物联网平台进行监测。 土壤墒情监测: 实现全天候、不间断的土壤墒情监测,快速预警异常情况。 控制输出: 可以通过云端远程控制、本地手动按钮控制或本地触摸屏实现对大棚环境调控设备的控制。 灌溉控制: 利用边缘计算功能,实现大棚内的智能灌溉控制,包括定点、定时、按星期循环、轮灌和根据湿度等参数的自动灌溉。 水肥一体控制: 自动调配氮磷钾肥和多种营养液,监测水管道的PH和EC参数,远程监控和调控。 自动卷帘控制: 根据温湿度和室外气象数据控制卷膜/卷被电机,实现自动或定时控制,同时提供实时报警功能。 自动补光控制: 根据光照传感器和光照度数据,自动或手动控制补光灯,确保农作物在光照不足时得到足够的光合作用。 智能通风控制: 根据湿度和二氧化碳浓度,自动开启或关闭循环风机和新风换气机,也可以远程控制。 智能CO2调节: 棚内CO2浓度监测,自动控制CO2发生器和气瓶,促进农作物的生长。 视频监控: 支持接入网络摄像头,通过视频监控界面实时查看设备状态和农作物生长情况。 数据存储分析: 系统自动记录和保存采集的环境参数数据,结合Modbus物联网平台的边缘计算功能,为农作物栽培工艺提供数据分析和改进的依据。 季节模式: 根据不同季节和农作物的要求,自定义设置季节模式,以自动调控农作物的生长环境。 智慧温室大棚系统是现代农业的未来,它将农业生产提升到一个全新的水平,通过科技手段,为农民提供更好的工具和资源,以增加他们的产量和收入。这一系统不仅有助于提高农产品的质量和安全性,还对可持续农业发展起到了重要的推动作用。 --- ### 332. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在现代数字化时代,机房作为企业信息系统的核心部分,其健康状况对整个信息系统的稳定性和安全性具有至关重要的意义。因此,机房动环监控系统成为了确保机房持续、稳定和安全运行的必备工具。接下来,我们将为您深入解析机房动环监控系统的核心技术、应用和优势。 一、机房动环监控系统概述 机房动环监控系统是一种综合监测解决方案,涵盖动力、环境、安防、消防等多个维度,以确保机房的稳定、安全和高效运行。它采集并分析机房内各种设备的运行数据,对异常状态进行实时报警,从而实现对机房的智能管理。 二、核心技术分析 实时数据采集: 通过各种传感器进行数据采集,如温湿度传感器、电流传感器、烟雾探测器等。 数据分析与处理: 将采集的数据进行即时处理和分析,以识别潜在的风险和问题。 智能报警系统: 当识别到设备故障或环境异常时,系统会自动发出警报,并通知相关人员。 远程控制: 管理员可以远程登录系统,进行设备的配置、监控和管理。 三、机房动环监控系统的优势 提高系统运行效率: 通过实时监测,能够快速定位故障,大大减少了故障排查时间。 降低运营成本: 预测性维护有助于减少突发性的维护成本和更换部件的费用。 加强安全性: 多种安全检测手段,如入侵检测、烟雾报警,增强了机房的整体安全。 智能化管理: 远程控制和自动化报告生成减轻了管理员的工作负担,同时提高了工作效率。 绿色环保: 有效管理能源消耗,实现资源优化使用,有助于企业的绿色发展。 四、应用场景深入 数据中心: 在大型数据中心,机房动环监控系统不仅能保证基础设施如服务器、存储设备和网络设备的稳定运行,还能确保数据中心的PUE (Power Usage Effectiveness) 保持在一个合理的范围内,降低能耗。 通信基站: 通信基站的运行稳定性直接关系到通信的质量。监控系统可以确保基站设备在各种环境下的稳定运行,尤其是在恶劣的天气条件下。 工业控制: 在现代化的工厂中,控制系统的稳定性与生产效率和产品质量密切相关。机房动环监控系统能够确保控制系统的稳定运行,防止因环境因素导致的设备故障。 公共设施: 在公共交通、大型体育场馆、机场等公共设施中,信息系统的稳定运行是非常关键的。机房动环监控系统可以保障这些设施内的IT设备稳定运行。 五、未来发展趋势 随着技术的进步,机房动环监控系统将越来越智能化。未来,我们可能会看到更多采用AI和机器学习技术的监控系统,它们不仅能够对设备状态进行实时监测,还能根据历史数据预测潜在的设备故障。此外,随着IoT的发展,机房动环监控系统的应用场景也将更加广泛,涵盖更多的行业和领域。 总的来说,机房动环监控系统已经成为当今信息化企业的标配,其重要性不言而喻。未来,随着技术的发展和市场的需求,机房动环监控系统将更加完善和智能化,为企业创造更多的价值。 --- ### 333. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、引言 在农业领域,我们积极倡导综合应用新一代物联网、云计算、大数据等现代农业信息技术,以满足不同项目需求和规划。我们以作物精准栽培信物融合系统为核心,推动农业的规模化、集约化、标准化和产业化发展,采用"线上+线下"相结合的模式,充分利用现有基础设施和设备,有序推进设施温室数字农业技术的应用。我们通过嵌入数据模型,对现场部署的环境传感器采集的数据进行综合分析,实现了整个园区菌菇生产环境的智能感知、预警、决策和分析,为菌菇生产提供了精确的种植、可视化管理和智能决策,同时也为生产监测、过程控制、产量预测、质量安全和社会化服务提供了数据支持。 二、系统架构 我们的系统采用了以下关键技术和组件,构建了一个全面的数字化农业管理系统: 1. 5G专网服务: 实现4G和5G网络全方位覆盖,确保数据传输速度和可靠性。 2. 园区数字化生产综合管控云平台: 通过该平台,我们实现了对各种环境数据的综合分析,包括土壤水分、温度、电导率、空气温湿度、光照、大气压、光合辐射、pH、CO2等。这个平台嵌入了农作物生长模型,支持远程监测、自动控制和管理。 3. 数据可视化展示及数据分析存储: 我们的系统具备数据分析功能,用户可以实时查看各种环境数据的多维度、可视化分析结果,用于决策分析。 4. 设备智能控制: 通过无线传输平台,我们实现了对各种农业设备的远程自动控制、条件控制和智能控制。 5. 预警提醒: 我们的系统具备预警功能,可以通过多种方式向用户发送预警信息,包括系统平台和手机应用程序。 6. 图像展示: 我们通过实时视频监控和图像展示功能,对园区进行实时监测,包括作物生长情况、病虫害和灾情等。 7. 园区定制化交互界面开发: 我们根据园区的地形和地貌情况,开发了定制化的交互界面,提供直观、交互式的管理系统。 8. 菇房环控数字化模型: 我们建立了数字化模型,实现了对菌房环境的精细调控,提高了生产效率和产量。 三、建设内容 1. 5G专网服务: 在菇房中间走廊建设室分系统,每个走廊4个外置天线,采用4G和5G双模组网,以保证更快的数据传输速度。 2. 园区数字化生产综合管控云平台: 该平台通过传感器上传的数据进行多维度的综合分析,实现了智能感知、预警、决策和分析,为菌菇生产提供了精确的种植、可视化管理和智能决策支持。 3. 数据可视化展示及数据分析存储: 应用平台的数据分析功能模块实现对物联网设备采集到的实时和历史数据进行多维度、可视化的分析展现,支持用户决策。 4. 设备智能控制: 用户可以通过手机、iPad或电脑等智能终端随时登录物联网云平台管理界面,进行设备的远程自动控制、条件控制和智能控制。 5. 预警提醒: 系统具备预警功能,用户可以设置传感器的预警阈值和接收预警信息的方式,以及手机APP实时接收预警信息,从而及时采取措施。 6. 图像展示: 通过高清网络球机,实现对菌房内部蔬菜生长情况的全天候视频监控,管理人员可以随时随地通过计算机观看大棚内的情况。 7. 园区定制化交互界面开发: 根据园区地形和地貌,开发了定制化的交互界面,用户可以点击查看特定位置的管理情况,实现了数字孪生模式。 8. 菇房环控数字化模型: 通过数字化模型,实现了对菌房内温度、湿度、二氧化碳含量等参数的精细调控,提高了生产效率和产量。 四、总结 我们的数字化农业管理系统 通过整合现代技术,实现了对农业生产的精准监测、智能控制和数据分析,为农业产业的现代化发展提供了强大的支持。这一系统不仅提高了农业生产效率,还提供了决策支持,有助于优化资源利用,降低成本,提高产出质量。 --- ### 334. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在石油石化、冶金、燃气、化工等行业,有毒有害气体的监控至关重要。我们的远程在线监测系统正是应对这一挑战的理想解决方案。它采用互联网+的云服务系统架构,实现了远程站点实时监控、远程控制、自动控制、综合管理等众多功能。 **系统功能** 1. **设备监控:**根据工艺要求,我们的组态画面可以进行编辑并制定展示。可以以平面图、动画、曲线等形式展示设备运行情况,实时显示设备关键参数、生产数据等。 2. **数据监控:**我们的系统支持在单一界面显示相关设备数据,并支持自定义参数,例如浓度、压力、流量等。 3. **机构管理:**我们的系统支持无限层级的机构管理,可以新增、删除、编辑机构信息,及在地图上标注设备位置。 4. **用户管理:**支持新增、删除、编辑用户,配置所属机构、所属角色、对应手机号、邮箱、微信等。 5. **报警监控:**我们的系统支持新增、编辑、设置多种报警规则。每种规则支持微信、短信、邮箱、电话、手机app等多种报警方式。 6. **历史数据查询:**我们的系统支持按参数配置存储,存储的数据支持按表格、曲线方式查询。 7. **报表功能:**我们的系统支持日报、月报、年报、区间报、自定义报表等多种报表形式,每种报表支持按照设备型号进行标准配置。 8. **曲线对比:**我们的系统支持针对实时和历史数据进行曲线对比。 9. **数据图表:**我们的系统支持以不同的图表方式呈现数据。 10. **日志管理:**我们的系统对所有基础操作进行记录,并能按机构、用户、操作方式、时间等进行查询。 11. **地理信息系统:**我们的系统支持可配置的地理信息系统,可以将各设备标注到地图对应位置。 这个有毒有害气体远程在线监控系统充分利用了互联网+特有的云服务系统架构,为各种行业提供了一个全方位的环境监测解决方案。它广泛应用于石油石化、冶金、燃气、化工、环境监测、消防救援、市政、仓储、商服、电厂、矿井、隧道、坑道、地下管线、制药、汽车制造、家具制造、半导体制造、印刷、喷涂等领域。 我们的目标是通过实时监控有毒有害气体、颗粒物浓度及处理工艺,确保人们的生活环境和工作环境的安全。我们的系统采用B/S框架,您可以随时随地的通过有权限的电脑、手机APP等对系统进行查看、管理。 此外,我们的系统还提供大量通用、专用功能满足集中设备数据远程监控的使用需求。包括数据监控、视频监控、列表显示、动画组态、项目管理、项目统计、角色管理、时间模板管理、报警配置、报警查询、报表统计、查询、设备管理、机构管理、电子地图系统、操作记录等。 而且,设备监控功能让您可以根据整体项目工艺要求对组态画面进行编辑并制定展示。在画面上显示机组设施的关键参数、生产实时数据、设备状态参数等。手机、电脑端监控同步实时显示,无论何时何地,您都能及时掌握情况。 我们的系统不仅可以实现设备的实时监控,还可以进行历史数据的查询和对比,让您更深入的了解设备运行情况和环境变化。同时,强大的报警监控功能和报表功能,让您在第一时间知道任何问题并迅速处理。 在用户管理方面,我们支持新增、删除、编辑用户,配置所属机构、所属角色、对应手机号、邮箱、微信等。这样不仅可以进行有效的用户管理,还可以确保信息的及时传递。 总的来说,我们的有毒有害气体远程在线监测系统是一款高效、实用、方便的环境监测工具。我们坚信,通过我们的努力,能为您的环境监测工作提供有力的帮助。 2026年行业新标准与应用升级 应急管理部2025年发布的《危险化学品企业安全风险智能化管控平台建设指南》明确要求:有毒有害气体监测须实现秒级报警和三级联动响应(现场声光→中控确认→远程应急指挥)。 modbus.cn的气体监测方案已全面适配新标准:Modbus RTU传感器通过RS485总线连接边缘网关,网关内置联动逻辑——硫化氢超阈值时,自动开启通风,同时通过MQTT/HTTP向消防平台推送报警。整套方案支持断网脱机运行,确保在极端情况下仍能完成本地联动。 对于新建或改造项目,建议采用模块化设计,便于后期灵活扩展监测点和联动设备。 --- ### 335. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 污水处理行业作为我国新型战略产业之一,在“十二五”规划中受到了国家的高度关注,特别是对农村污水处理的要求更为严格,明确规定县级镇、重点镇必须建立污水处理厂。到2023年4月为止,全国的污水处理厂无论在数量还是处理能力上都呈现出快速增长的趋势。 然而,目前我国农村的污水处理项目往往面临一系列挑战,如污水收集系统的不完善,污水来量不足,污水中的污染物浓度过低而无法达到设计的进水浓度,污水处理运行管理人才的短缺,污水系统的不稳定,运行费用较高等问题。这些问题的解决需要政府部门的管理和监督,也需要污水处理企业提升自身运营管理水平,改善工艺流程,转变运营模式,以最大程度地降低这些问题的影响。随着信息化运营管理模式的逐步落地,这已经成为大型水务集团公司提升企业整体运营管理水平、应对市场竞争、获取经济效益的发展方向。 为此,Modbus物联网平台技术跟随污水处理的技术前沿,掌握了基于物联网的污水处理综合运营管理平台整体解决方案。 ## 项目简述 本项目利用物联网技术,关注污水处理设施的感知和管理环节,采用智能传感器在线收集部署场所的水质信息(包括CODcr、BOD、SS和NH3-N等),同时整合并改造现有控制设备,实现传感器的智能感知和科学管理。管理员可以通过手机、计算机等信息终端实时掌握智能传感器设备的状态信息,及时接收异常报警信息,并可以根据监测结果进行远程设备控制,实现实时监控和及时控制。 此系统实现了实时监控、远程控制、自动控制、异常报警、巡检管理、数据统计等多项管理功能。同时,系统配备了人员管理和多级权限认证机制,以确保安全运行。 ## 传统污水处理存在的问题及优化解决方案 传统的污水处理系统存在以下主要问题: 1. 生产运维效率不高 2. 能源效率控制不足,收益不均衡 3. 资产和安全管理不科学 4. 技术水平参差不齐 面对这些问题,我们优化了污水处理结构图,并提出了以下解决方案: 1. 实时数据采集回传 2. 提高效率科学管理 智慧污水处理系统具有以下优势: 1. 数据采集和分类:收集所有污水处理站的运行数据和设备状态,并根据不同项目名称和工艺节点自动分类存储。 2. 集中监测功能:在数据中心,可以通过网络实时监测各项目现场设备运行数据及水质情况,结合大屏展示更加直观。 3. 图表功能:可以自动生成各项目的运行参数和水质情况的曲线图和报表,支持自定义查询和图表导出。 4. 自动报警功能:任何现场的运行参数异常情况都能够自动将报警内容通过语音、短信、微信、邮件等方式通知相关负责人,以便及时进行管理控制。 5. 设备联网功能:支持通过5G/4G/WIFI/以太网等方式进行联网和数据上云,灵活部署,施工布线难度小,也能自由对接到各个不同的云平台。 此外,我们还开发了移动管理APP/小程序,实现数据浏览、远程监控、统计分析等功能,并且支持不同角色用户的分级管理,实现移动办公。 ## 方案优化详解 我们为本方案提供详细的协议,并可以更改网关上报服务器的地址。设备可以直接通过网关的设参软件,将数据接收服务器地址更改为由Modbus物联网平台提供的、私有部署的“污水处理系统平台”。Modbus物联网平台打通了各类型网关与平台的数据通路,为每种类型的网关设置专用型号驱动,并解决了设备层、控制层、网关层、多系统层现有的问题: 1. 采集数据形成标准规则,设备名称可以按照企业需求统一化定义。 2. 业务数据可以通过组态场景、曲线、饼图、柱状图、图表等方式进行灵活展示、对比和分析,数据分析通路广,不再受限。 3. 数据产生异常或未能及时更新,软件端会清晰地产生报警,并通过微信、短信、邮件、语音播报等方式逐级通知管理人员,方便问题的及时解决或追溯。系统还可以根据报警情况生成任务,将相关问题下发到具体人员,追溯问题的发生、解决等一系列工作。 ## 系统设计原则和功能 我们的系统设计遵循以下原则: 1. 多项目管理:同一系统内,支持多项目管理、配置、统计功能,作为企业的管理系统。可以配置每个项目的设备数量、数据存储量、用户数量、登录网址等。同时,你可以在地图上一目了然地查看每个项目的位置。 此系统不仅功能强大,而且易于使用。我们深信,本项目的成功实施将能够极大地提高农村污水处理的效率和质量,同时也会为管理人员带来极大的便利。通过实时数据采集、远程控制和自动报警等功能,我们可以更好地管理和监控污水处理设备的运行状况,确保设备正常运行,减少故障的发生。同时,通过数据的统计和分析,我们可以更好地理解设备的运行情况,为设备的优化和改进提供数据支持。 在未来,我们将继续优化并扩展本项目的功能,提供更加完善和便利的服务,为推动我国农村污水处理事业的发展做出更大的贡献。我们期待与你携手共创美好未来。 2026年政策与技术更新 2025年国家新修订的《农村生活污水处理设施运行管理办法》进一步强化了在线监测覆盖率要求——所有日处理能力20吨以上的设施必须接入监管平台,实现数据实时上传。 技术层面,边缘计算+物联网的架构已成为行业标配。Modbus RTU协议的传感器(流量计、液位计、水质监测仪)通过RS485总线接入边缘网关,网关本地完成数据清洗和异常判断后,仅将关键数据上报云端——这套方案在降低流量的同时,确保了离线场景下的系统可用性。 modbus.cn提供从传感器到云平台的全链路方案,包括MBus转Modbus网关、远程IO模块等核心设备。 --- ### 336. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 项目简介: 本项目旨在为牧场牛棚提供一个智能的环境监控系统,实现温湿度、氢气、硫化氢等气体的全天候监控,以及风机的实时调控。通过科学的数据分析和智能的设备控制,项目不仅提升了企业的自动化管理水平,也帮助企业节省资源、提升生产质量。 系统结构与工作原理: 本系统基于B/S架构,可以由总管理员进行统一管理,也可以创建多个部门管理员进行分级管理。管理员可通过账户密码登录,查看和控制棚内的各项数据和设备状态。当棚内的环境指标超出设定的范围时,系统会立即报警,通过微信、短信等方式通知管理员。 环境监测设备包括无线温湿度采集仪和多合一气体监测仪。这些设备通过Wi-Fi或ZigBee自组网方式连接到多功能可编程控制器,将采集到的数据传输至Modbus物联网平台。此外,控制器还可以与现场人机交互界面相连,实时显示环境数据,并通过逻辑编程实现风机的同步控制。 Modbus物联网平台系统可以实时接收和处理棚内环境数据和风机状态信息。用户无需亲自前往牛棚,只需通过互联网连接的PC或手机,就可以远程查看和控制棚内的环境状态。 控制逻辑: 1. 温湿度、氨气、硫化氢的上下限值设定范围可调; 2. 当舍内实时温度高于设定最高限值,且湿度高于最高限值时,风机启动; 3. 当舍内氨气或硫化氢的实时数据高于设定的最高限值,风机启动; 4. 当舍内所有采集数值均低于设定的最低限值,风机关闭; 5. 可切换手动/自动开关模式; 6. 数据更新频率为30秒/次。 系统功能: 1. 管理界面可多元化展示数据,也可模拟实际监控场景进行动态管理; 2. 当环境指标超过设定范围,系统会及时产生报警并通知管理员; 3. 系统可以根据历史数据生成各种图表,实现大数据智能分析; 4. 系统可以自动生成各种报表,方便数据存档和分析; 5. 系统的地图场景功能可以清晰展示各个监控点的位置,用户也可以在地图场景和模拟场景之间自由切换,以全方位了解系统运行状态。 在智能化管理方面,此项目提供了强有力的科学依据。不仅提高了企业的自动化程度,同时也有效地提升了企业的生产效率和产品质量。 系统设备: 1. 无线温湿度采集仪和多合一气体监测仪:负责监测并收集棚内的环境信息,包括温湿度、氨气、硫化氢等。 2. 多功能可编程数据采集器:接收无线温湿度采集仪和多合一气体监测仪的数据,通过GPRS上传至Modbus物联网平台,并且与现场人机交互界面相连,以显示和控制棚内的环境数据。此外,数据采集器还具有控制风机开关的功能。 3. Modbus物联网平台系统:接收并处理来自数据采集器的实时数据,提供便捷的远程监控功能。 系统优势: 1. 智能监控:系统可实时监控棚内的环境状况,并在指标超出设定范围时及时产生报警。 2. 远程控制:无需亲自到场,用户可以随时随地查看和控制棚内的环境状态。 3. 数据分析:系统可以自动生成各种报表和图表,便于用户进行数据分析和决策。 4. 灵活的管理:系统支持总管理员和分级管理员,满足不同的管理需求。 总结: 本项目的实施,不仅提高了牧场的自动化管理水平,也为提升生产效率和产品质量做出了重要贡献。通过科学的数据分析和智能化的设备控制,我们相信可以为企业步入信息化时代铺平道路。 2026年智慧牧场新趋势 近两年智慧牧场方案已从单一的监控功能向AI驱动的主动决策演进。针对奶牛健康管理,新增的体温自动巡检与反刍监测功能可以提前48小时预警疾病风险,大幅降低抗生素使用率。 在通信层面,LoRa+4G混合组网已成为大型牧场的标准配置——近场传感器通过LoRa组网降低布线成本,边缘网关通过4G将聚合数据上传至云平台。modbus.cn提供完整的LoRa转Modbus网关方案,可与现有系统无缝对接。 如果您正在规划或升级牧场监控项目,请联系 modbus技术团队 获取最新的方案咨询。 --- ### 337. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着中国城市化进程的加速,城市热力供热系统的规模和服务范围也在不断扩大。随着规模的扩大,同时也带来一系列的问题:分散管理,难以快速响应突发事件,缺乏运行的充分数据分析等。基于此,热力管网智能监控系统方案应运而生,成为供热系统管理的新兴趋势。本文将从热力管网智能监控系统方案的实现原理、应用场景、优势以及发展前景等方面进行详细探讨。 一、 热力管网智能监控系统方案的实现原理 热力管网智能监控系统方案的实现主要基于现代物联网、云计算、大数据分析以及人工智能等现代科技的理论和技术实现。其核心原理包括以下几方面: 数据采集 在热力管网监控系统中,传感器模块是最基本的模块之一。它能够实时采集温度、压力等参数的数据,将数据传输到管控中心。 数据传输 通过物联网技术,将采集的数据传输到云端泛在网中,实现数据的实时共享,以便实时地对管网进行监控和管控。 智能分析 在云端泛在网中,借助于先进的大数据分析技术,对采集的数据进行分析,并生成分析报告。系统具备智能预警,根据预设条件,系统会智能的分析温度、压力等参数,可以实时预警一些潜在问题,通过人工智能,可以及时地预测处理短期和长期问题,并提供相应的解决方案。 管道控制 热力管网智能监控系统可以根据管道采集的数据实时控制管道的开关,进行智能排锅,避免运行中的突发状况。 二、 热力管网智能监控系统方案的应用场景 热力管网智能监控系统方案适用于各类供热系统,特别在地下热力管网和中央供热系统上有更多的应用价值。具体应用场景如下: 公共供热 公共供热范围广泛,对热力管道的管理、维护等都有不同的需求,热力管网智能监控系统较好地解决了公共供热过程中存在的各种管理问题。 军事设施 军事设施的管网环境与普通供热不同,因此热力管网智能监控系统能够更好地满足其独特需求,从而确保军事设施完好稳定运行。 工业园区 工业园区中包含大量的工厂和设备,热能供应愈加复杂。因此,引入智能热力管网监控系统方案可以减少运营和维护成本,降低系统的热损失、避免出现威胁整个工厂安全的问题。 三、 热力管网智能监控系统方案的优势 快速反应 当热力管道系统发生异常情况时,热力管网智能监控系统可以快速收集,处理故障数据,并及时发给相关工作人员并提供解决方案,从这个角度来看,这个系统可以很好地解决市区管网海量数据管理上的难题。 智能化控制 该系统可以自动控制不同的设备模块,满足管道的不同需求,在高效化和可持续性之间寻找平衡,并通过数据优化加强供热系统的维护和控制。 降低系统运营和维护成本 智能热力管网监控系统可以实现自动化、智能化地管控系统,减轻人工管理的负担,大大降低运营和维护成本。 提高供热品质 由于热力管网智能监控系统实现了多点监测,可以及时掌握管道的运行情况,从而提高供热品质,确保供热质量。 四、 热力管网智能监控系统方案的发展前景 目前,国内热力供热市场一直保持快速增长状态,压力与机遇并存。随着人工智能技术的普及和物联网技术的发展,热力管网智能监控系统方案发展前景也异常巨大。在未来,热力管网智能监控系统方案将在以下几方面获取更好的发展: 智能化程度的提高 热力管网智能监控系统将会在原有的基础上,不断利用人工智能技术、大数据技术等,进一步提高系统的智能化程度,从智能化控制、智能化管理、智能化交互等方向持续优化,尽可能地提高控制系。 实时监控性的进一步提高 随着移动技术、视频技术的发展,热力管网智能监控系统方案可以面向用户进行监控随时随地想查,从而让系统的实时监控得到了自由无限的扩展,越来越多的用户可以享受到具有高品质的热力服务。 结语 热力管网智能监控系统方案可以为热力管道的管理、维护以及运营带来全面的改进和提升,不仅提高了管网的安全性,也使得供热系统的性价比得到了大幅提高。未来,随着良好技术的不断发展,热力管网智能监控系统方案将在助推供热产业健康可持续发展的同时,优化我们生活的各方面。 --- ### 338. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 水源智能供水系统解决方案是一种未来趋势,代表着节水节电的新时代。智能化、自动化的特点为供水行业带来了巨大的改变和发展机遇。本文将从水源智能供水系统的特点、优势和应用等方面进行探讨,旨在深度挖掘该系统的潜力和价值。 一、 智能供水系统的特点 水源智能供水系统是一种基于现代科技、物联网、大数据和人工智能等技术的自动化供水系统。它采用传感器、控制器、智能机器人等一系列智能设备,通过实时监测、分析和预测,精准、自动地完成供水流程。 智能化 水源智能供水系统运用了众多先进的智能化设备,例如自动控制器、传感器、视频监控、无人机、智能机器人等,可以实现识别、处理和应对复杂情况。通过智能化,系统可以自动化执行维修、清洁、配水、检测等工作,大大提升了效率和减少了人力成本。 自动化 智能气象站、水质监测设备、水位控制阀和泵站等设备实现了智能自动控制和调节。利用自动化技术,系统可以在不同地点、不同时间的情况下进行自主监测,并通过自动控制器调整设备运行状态,达到自动化供水的效果。 实时监测 智能传感器可以实现实时监测,包括水位、水压、水质、流量等多个指标。在这些指标的基础上,系统可以自动实现水位控制、配水管理或进行预警提示等操作,确保供水系统稳定运行。 二、 智能供水系统的优势 精准供水 由于系统采用大数据分析技术,能快速精准地掌握用户用水需求,实现精准供水,避免过度和不足供水的问题。同时,实现了智能管理和调整,可以随时调整供水速度和水压,确保每个用户得到合适的水量。 节省成本 智能供水系统利用自动化技术,可以实现节省大量的人力成本和运营成本。系统通过实时监测、分析、预测,可以优化供水流程,避免因人为原因带来的浪费和错误。 节水节电 运用智能水表技术可以实现每户用户用水量的实时监测与管理,规范用水行为,避免浪费,实现节水目的。同时,由于系统智能调节供水压力和供水速度,能够降低水泵功率,实现节电目的。 提升供水质量 智能供水系统可以实现实时监测水质参数,发现水质问题及时预警。并且通过系统的自动管理和水质调节,避免水质受污染。 三、 智能供水系统的应用 智能供水系统最开始是在城市公共供水领域应用的。但随着技术的发展,其应用范围越来越广泛,逐渐进入不同的领域。 农村供水系统 农村供水系统是一个非常重要的领域,智能供水系统的应用能够让农民得到良好的用水服务,有效缓解了农村用水难题。 工业水处理系统 智能供水系统可以帮助工厂自动调整供水流量和水压,提高生产率和节省成本。同时,通过实时监测和分析工业用水,可以控制和消除污染行为,提升供水水质。 基础设施建设领域 特别是在新建的基础设施建设领域,通过智能供水系统应用可以实现自动化供水,并减少运营成本,提高供水质量,确保民众获得更好的供水服务。 结语 随着生活水平的提高,对于供水服务的要求也越来越高。未来水源智能供水系统的应用将保障用水人民的质量与服务,同时节约资源和降低成本,对于未来的建设有着重要的意义。因此,应该切实转变思维,加强技术合作,推广相关智能化供水技术,更好地满足社会需求,建设和谐美好社会。 --- ### 339. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 城市防涝排水物联网监控系统通过集成互联网、物联网、人工智能等智能化技术,将城市排水管网实现信息化、智能化,实现对城市排水系统的全方位监测、控制和管理,提高城市抗灾能力。 方案实现:1.硬件设备:(1)水位监测设备:部署在地心井和污水井等排水系统中,通过蓝牙和WiFi等无线网络将水位信息上传至监控中心。(2)智能泵站控制设备:通过网络连接泵站工厂,实现联网控制,实现对泵站的人工智能自动控制。(3)监控终端:安装在城市排水管网的各个位置,实现对排水管网数据的实时监控。 2.软件系统:(1)实时监控系统:通过实时数据采集、传输、存储等功能,实现对排水管网运行状态的实时分析,提醒管网管理部门及时处理异常情况。(2)预警系统:通过数据分析和预警算法,及时发现系统异常、安全隐患,提前预警、预防、应对突发事件。(3)人工智能系统:对大数据进行分析处理,通过建立数据模型,实现预测分析,提高排水系统的效率和稳定性。 3.应用场景(1)地下排水管网监控:实现对城市排水管网的实时监控,及时发现管网漏损、沉降等问题。(2)泵站管理:通过集中控制、远程监控等方式,实现对泵站的自动控制和管理。(3)城市排水大数据监管:通过对城市排水系统的数据收集、分析,提高监管部门的决策能力,提高城市排水系统的管理水平。 总体来说,城市防涝排水物联网监控系统可以提高城市排水系统的智能化和自动化水平,减少自然灾害对城市的影响,提高城市的安全水平,具有广泛的应用前景。 --- ### 340. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、方案简介 配电监控系统是一套集监测、控制、保护、通信于一体的综合性系统,主要由配电网运行监控、负荷监控、电能质量监测、变电站监控、电力通信、数据管理等六大功能模块组成,实现对配电网及电力设备的全方位监测和管理。 二、功能介绍 配电网运行监控 实时监测电网运行状态,包括电压、电流、功率、温度、开关状态等信息。提供配电网运行报表,包括电压合格率、线路覆盖率、供电可靠性等指标。实现故障预警,对配电网设备故障、供电中断等情况进行及时告警和处理。 负荷监控 实时监测配电网及用户负荷状态,包括负荷分布、负荷变化、负荷预测等信息。提供负荷监测报表,包括用电量、供电可靠性等指标。支持负荷控制,根据负荷变化自动调整供电方式,保证供电可靠性。 电能质量监测 实时监测电能质量,包括电压、电流、功率因数、谐波、波形畸变率等信息。提供电能质量分析报表,包括电压合格率、电流不平衡率、电压波动率等指标。实现电能质量分析和控制,对电能质量问题进行及时预警和处理。 变电站监控 实时监测变电站运行状态,包括设备状态、电气参数、通信状态等信息。提供变电站监控报表,包括设备运行状态、电气参数、通信状态等指标。支持远程控制,通过通信接口对变电站设备进行远程控制和监测。 电力通信 实现配电网各环节之间的通信,包括配电网、变电站、用户等。支持多种通信协议,包括Modbus、TCP/IP、XML等,实现不同设备之间的数据传输。支持多种通信方式,包括远程电话、短信、移动APP等,实现对用户的实时监测和控制。 数据管理 实现对监测数据的统计、分析和展示,包括电压合格率、电流不平衡率、电压波动率等指标。支持对历史数据进行查询、统计和分析,为用户提供决策支持。提供Web界面,实现对监测数据的实时展示和管理。 配电监控系统解决方案可广泛应用于以下场景: 工业园区:工业园区的电力供应对生产活动至关重要,保障稳定可靠的电力供应,提高生产效率,降低生产成本。 企事业单位:企事业单位的办公楼、生产车间等重要场所,需要对配电间进行实时监测,确保用电安全,提高能源利用率。 公共建筑:如学校、医院、图书馆等公共场所,依赖稳定的电力供应,为用户提供安全舒适的环境。 商业综合体:购物中心、写字楼等商业综合体对电力供应有严格的要求,通过配电监控系统可以做到实时监控,优化能源使用,降低运营成本。 酒店餐饮:酒店、餐馆等场所对电力稳定性和安全性有很高的要求,配电监控系统可以在第一时间发现问题并及时处理,保障客户的用电需求。 交通运输:车站、地铁站、机场等重要交通枢纽场所,电力系统的稳定性将直接影响到交通运输的正常运行,及时监测和处理异常事态是保障运输安全的关键。 总之,配电监控系统可以实现用电设施的实时监测、远程控制和故障报警,为各类场景提供安全、高效、智能的电力解决方案。通过多元化监测和实时报警功能,可以实现用电无忧,有效提高能源利用效率和降低运行成本。 --- ### 341. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 机房对于每个大中型企业都是必不可少的,要保证机房设备的日常正常运行,机房环境监控系统要求满足于机房烟雾监测、精密空调监测、温湿度监测、漏水监测、电压电流检测等功能需求,当监测数据超过安全范围时,系统将会快速发出报警,系统采用云技术,网络通讯方式,可同时采集查看各个城市的机房数据。 通过机房测控实时采集机房的各项监控数据实时传送至平台软件,再集成门禁系统实现对出入机房人员的监控,如果异常,系统会通过本地声光警号、短信、电话、邮件等方式立即报警,同时管理员也可以通过平台软件查看机房环境数据,彻底做到无人值守,使您对机房管理高枕无忧! 系统由机房测控终端、温湿度传感器、断电监测模块、漏水传感器、电流/电压传感器,烟感、红外探测器、门磁、空调自启动器、短信模块和监控中心平台软件组成,用户可根据实际需要,自由选择相关设备进行组网。 系统介绍: 1、采用网络方式接入云平台,可同时采集不同城市,分布地点的机房数据;2、实时监测空气环境温湿度、电压电流、漏水检测、烟雾报警,控制空调机组等功能;3、微信公众号;4、免费PC网页平台,客户端软件;5、自动记录历史数据,1分钟一次;6、可随时查询历史曲线,导出excel表格数据;7、平台软件随时支持远程调整设置触发控制阈值;8、支持app推送,微信公众号推送报警;9、支持权限管理,可多个账号控制同一个设备;10、支持接入海康威视摄像头。 机房监控软件的作用 1、管理集中化、信息化、智能化,达到了无人值守的目的。 2、设备、环境可以远程、实时管理,节约人工、物力的投入。 3、为机房排障、定制计划提供可靠的监控数据。 4、提高了机房系统的安全性、可靠性和稳定性。 --- ### 342. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 利用物联网技术,围绕设施化畜禽养殖场生产和管理环节,通过智能传感器在线采集养殖场环境数据(二氧化碳、氨气、硫化氢、温湿度等)同时集成或改造现有的养殖环境控制设备。可通过手机、电脑等信息终端向管理者推送实时监测信息、报警信息。        保证养殖场内的环境适宜动物生长,实现精细化管理,且可实现畜牧业的资源整合、数据共享和业务协同,能助力现代畜牧产业转型升级。        物联智能养殖管控系统主要由环境数据采集与智能控制两大核心部分组成,通过两大部分的紧密合作,充分发挥物联网技术在养殖中的作用,保证养殖环境适宜畜禽成长,实现精细化的管理,为养殖的高产、生态、安全创造条件,达到健康养殖、节能降耗的目的。 系统组成及功能 1、智能环境监控 通过传感器、音频、视频和远程传输技术在线采集养殖场环境信息(二氧化碳、氨气、硫化氢、空气温湿度、噪声、粉尘等)和畜禽的生长行为(进食、引水、排泄等),实时监测设施内的养殖环境信息,及时预警异常情况,减少损失。 温湿度 通过室内室外的温度感器进行室风外对比,在炎热夏季,当舍内温度高于外界温度时,可启动风机进行空气交换,降低舍内温度,同样当舍内湿度高开外界湿度且湿度较大时,也可通风排湿;在寒冬尤其是北方,需要对畜禽养殖进行保温处理,适当时进行送暖(如太阳能、电热炉、锅炉供暖)等。  气体监测 畜禽养殖场中的空气含有氨气、硫化氢、二氧化碳等气体,如果这些浓度过大、作用时间长,会使畜禽体质变差,抵抗力降低,发病率升高等。所以应安装通风换气设备如风机等,及时排出污浊空气,不断进入新鲜空气,安装除臭设备定期刮粪除臭。通过畜禽养殖内的氨气、硫化氢、二氧化碳等气体传感器实时监测室内的相关气体浓度,当浓度达到一定程度时,就要进行通风换气除臭,保护舍内空气流通与清新。通风换气也要考虑对舍内温湿度的影响,冬天选择温度较高时通风换气,夏天选择凉爽的夜晚或早晨通风换气。 光照 充足的光照时间是保证牛健康、快速成长,高效产奶的一个重要因素,对于阴天畜禽养殖内光线阴暗或冬季日照时间不足的情况,适当增加辅助照明,弥补天气、季节因素光照度的不足。通过自动控制系统中的照度自动调节功能可以实现对畜禽养殖内照度的自由调节。 压力 由于某些时候通风性差等原因,有可能造成畜禽养殖内压力与外界存在差异,不利于内外气体流通,这也是舍内有害气体浓度过高的一个因素。当出现内外压差时,应启动相关设备进行通风换气等以保证空气流通。 2、智能供水 场区水泵监控 工作人员通过监控平台实时监控水泵的工作状态,工作电压、电流数据,远程手动控制水泵启泵和停泵; 3、能耗监测   耗水监测 通过流量计及4G/网络等远程传输终端实现对养殖场的单栋猪舍/牛舍/鸡舍、整体养殖场的用水量进行统计,形成数据曲线和报表 4、统一调控 实现养殖舍内环境(包括照度、温度、湿度等)的集中、远程、联动控制。控制层主要包括温度控制,湿度控制,通风控制,光照控制以及定时喂食,喂水。 --- ### 343. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 食用菌是人类食用的真菌类总称,食用菌高蛋白、低脂肪、营养丰富、味道鲜美,被称为“山珍”。食用菌中含有丰富的理性物质,还有非常丰富的医用价值,受到了人们的广泛关注。因此食用菌养殖行业逐渐发展。 在菌菇种植过程中,环境中的温度、湿度和二氧化碳浓度是影响菌菇产量的三大主要因素。菌菇分为发菌、覆土、出菇三个生长阶段,其在不同的生长阶段菌菇所要求的环境条件不同。 菌菇智能养殖监控系统专门为菌菇生产温室大棚、厂房研发,能实现菌菇养殖生产的全程智能化控制。食用菌菇房环境控制系统是依据食用菌的生长规律自动监测并调节菇房内的温度、湿度、二氧化碳含量,具有二氧化碳排放控制功能,与制冷、加湿、通风、光照等设备实现联动控制。带有通讯接口,可以和计算机通讯,构成菇房环境自动监控系统。广泛应用于恒温菇房、农业温室、智能房、食品蔬菜保鲜库等。 智能菌菇房让管理更加精细化,更加方便,可以通过远程控制系统自动调节室内温湿度,或者点击触摸屏就可以实现自动控制。智能菌菇房系统主要由采集子系统、网络传输子系统、中央管控子系统、执行子系统、触摸屏等组成。 环境控制系统功能介绍: ①温湿度自动监控:根据设定的温湿度范围,自动启动制冷、加热、加湿设备CO2自动控制,根据设定的浓度上限或时间进行自动排放; ②光照控制:根据设定的照明时段,自动打开或关闭照明设备; ③内循环控制:根据循环的启动周期,自动启动循环风机,使温湿度分布均匀; ④报警控制:监测数值超限、设备保护等状况,立即发出报警; ⑤视频监控:可在菇房内安装摄像头,提供视频监控、录像存储、回放、远程拍照等功能 菌菇养殖驾控系统优势   1、节省人工成品:24小时远程监控,可减免人工时刻走动观察,在家就对大棚的生长环境了如指掌,节省人工费用。   2、智能化、产业化:智能化产业,可智能迅速控制设备改善室内环境,提升产量,降低风险,切实增加收益。        3、可靠性:科学种植,更直观清晰的掌握环境参数,软件操作简单,安全可靠。 --- ═══════════════════════════════════════════ ## Modbus调试工具 ═══════════════════════════════════════════ ### 344. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 调试中的"瑞士军刀" 在日常的 Modbus 设备调试中,并非每次都需要打开 Wireshark 抓包或者写 Python 脚本。有时候你只需要快速验证一个功能——解码一串十六进制报文、扫描一个未知设备的寄存器范围、或者在命令行里测试一个读写请求。本文汇总了 modbus.org 推荐的那些最轻量、最实用的 Modbus 小工具。 Modbus RTU/TCP 报文在线解析器 当你从串口助手收到一串 Modbus 报文,或者在代码里调试时打印了一段 Modbus 二进制数据,你需要快速知道这段数据是什么意思。在线 Modbus 报文解析器是最快的解决方案——不需要安装任何软件,浏览器打开即可使用。 在线 Modbus RTU Parser 推荐工具:CAS Modbus RTU Parser(Chipkin Automation Systems 提供) 访问:store.chipkin.com/products/tools#modbus-rtu-parser 这是一个纯网页工具。你只需粘贴一串十六进制 Modbus RTU 报文: 01 03 00 00 00 0A C5 CD 点击解析后,工具会自动展示: 从站地址(Slave ID)= 1 功能码 = 03(Read Holding Registers) 起始地址 = 0 请求数量 = 10 个寄存器 CRC 校验 = 0xCDC5(并验证是否正确 ✓) 在线 Modbus TCP Parser 访问:store.chipkin.com/products/tools#modbus-tcp-parser 与 RTU 版本类似,但增加了 MBAP 头的解析:Transaction ID、Protocol ID、Length 和 Unit ID。粘贴如下 TCP 报文即可: 00 01 00 00 00 06 01 03 00 00 00 0A 解析结果:事务 ID=1,协议=Modbus,从站=1,功能码=03,起始地址=0,数量=10。 Modbus 设备地址空间扫描工具 CAS Modbus Scanner 下载地址:store.chipkin.com/products/tools/cas-modbus-scanner 当你拿到一个没有完整寄存器映射手册的 Modbus 设备时,最直接的方法就是"扫描"——用 Modbus Scanner 遍历设备的地址空间,记录下哪些地址返回了有效数据。 使用方法: 设置连接方式(TCP 输入 IP:Port,RTU 选择串口) 选择要扫描的地址范围(建议先小范围 0-100 试探) 选择要扫描的数据类型:线圈、离散输入、保持寄存器、输入寄存器 点击 Start Scan,观察结果 对返回有效数据的地址做好记录 结合设备实物(改变物理量、观察对应寄存器变化)进行验证 扫描技巧: 先扫描保持寄存器(4xxxx),因为大多数设备的配置和测量数据都在这里 如果某个地址返回异常码 02(非法数据地址),说明该地址无效 如果返回 0 但无异常,需要判断是真的值=0 还是设备对该地址没有实现(仅靠扫描无法区分) 改变物理激励(如升温、旋转编码器)后复扫,观察哪些地址值发生变化 命令行协议测试:modbus-cli 技巧 除了专用工具外,很多通用的命令行工具也可以用于 Modbus 测试: 用 Netcat 测试 TCP 连通性 # 测试 Modbus TCP 设备是否在线 nc -zv 192.168.1.100 502 # 如果输出 "Connection to 192.168.1.100 502 port [tcp/*] succeeded!" 说明在线 用 Python 一行命令测试 # 安装 pymodbus 后,一行测试读取保持寄存器 python3 -c " from pymodbus.client import ModbusTcpClient c = ModbusTcpClient('192.168.1.100') c.connect() rr = c.read_holding_registers(0, 5, slave=1) print('Values:', rr.registers if not rr.isError() else rr) c.close() " 用 xxd 分析二进制 Modbus 数据 # 如果你有一段 Modbus 二进制数据文件,可以用 xxd 查看 xxd modbus_dump.bin # 或者用 hexdump 格式化显示 hexdump -C modbus_dump.bin | head -20 Modbus 协议函数快速参考 调试时经常需要查功能码对应表,以下是常用功能码速查: 功能码名称数据类型操作 01 (0x01)Read Coils线圈(0xxxx)读 1-bit 02 (0x02)Read Discrete Inputs离散输入(1xxxx)读 1-bit 03 (0x03)Read Holding Registers保持寄存器(4xxxx)读 16-bit 04 (0x04)Read Input Registers输入寄存器(3xxxx)读 16-bit 05 (0x05)Write Single Coil线圈写 1-bit 06 (0x06)Write Single Register保持寄存器写 16-bit 15 (0x0F)Write Multiple Coils线圈写多 1-bit 16 (0x10)Write Multiple Registers保持寄存器写多 16-bit 23 (0x17)Read/Write Multiple Registers保持寄存器读写组合 Modbus 异常码速查 异常码含义常见原因 01非法功能码设备不支持该功能码 02非法数据地址请求的地址范围超出设备可用范围 03非法数据值写入的值超出允许范围 04从站设备故障设备内部错误,无法处理请求 05确认(ACK)请求已接受但需要较长时间处理 06从站设备忙设备正忙,稍后重试 总结 Modbus 调试不需要每次都用重型工具。在线解析器适合快速解码报文、扫描器适合逆向未知设备的寄存器映射、命令行工具适合自动化测试。掌握这些"小工具"能让你的 Modbus 调试效率翻倍——遇到问题先用最轻量的工具定位,只有当需要深入分析时才动用 Wireshark 等重型工具。 --- ### 345. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus Constructor 简介 Modbus Constructor 是由 KurySoft 公司开发的一款 Modbus 设备建模和测试工具。官网:www.kurysoft.com/download.shtml。它不仅是一个简单的数据读取工具,更是一个完整的 Modbus 设备模型编辑器——你可以用它来创建 Modbus 设备的"数字孪生",包括所有的寄存器映射、数据格式、单位和缩放因子。 Modbus Constructor 核心功能 设备建模:可视化创建 Modbus 设备的完整寄存器映射表,包括地址、数据类型、单位、缩放因子、读写属性等元数据 数据监视:连接到真实设备后,按照建立的模型实时监视和显示数据 数据导出:将监视数据导出为 Excel、CSV 等格式 模型保存:设备模型保存为独立的模型文件,可重复使用和分享 Modbus Reader —— 免费的配套数据监视工具 Modbus Reader 是 Modbus Constructor 的免费配套工具。它本身不能创建模型,但可以加载用 Modbus Constructor 创建的模型文件,然后按照模型定义的格式连接设备并显示数据。 这意味着:一个人用 Modbus Constructor(收费)创建好设备模型后,现场工程师和技术人员可以免费使用 Modbus Reader 来连接设备、查看数据。这在团队协作中非常实用。 创建设备模型 以创建一个三相电表的 Modbus 模型为例: 启动 Modbus Constructor,点击 New Project 设置设备基本信息:名称"三相多功能电表",协议类型 Modbus TCP 添加寄存器组: 地址名称类型单位缩放 40001A相电压16-bit UIntV×0.1 40002B相电压16-bit UIntV×0.1 40003C相电压16-bit UIntV×0.1 40004A相电流16-bit UIntA×0.01 40007总有功功率32-bit FloatkW×1.0 40009总电能32-bit UIntkWh×0.1 40011功率因数16-bit UInt-×0.001 40012频率16-bit UIntHz×0.01 保存模型文件(.mcm 格式) 打开 Modbus Reader,加载模型文件 连接设备 IP 和端口 即可看到按模型格式化后的实时数据 为什么需要设备建模? 在没有设备模型的情况下,你用 Modbus Poll 或 Modpoll 看到的是这样的数据: 地址 0: 2305 (这是多少伏?) 地址 1: 1198 地址 7: 0x428B0CCD (这是什么?) 有了设备模型后,同样是这些原始数据,Modbus Constructor/Reader 会按照你定义的元数据自动解析和显示: A相电压: 230.5 V B相电压: 119.8 V 总有功功率: 69.525 kW 这种"从原始寄存器值到有实际含义的物理量"的转换,是 Modbus Constructor 区别于普通调试工具的核心价值。 Modbus Constructor 在团队协作中的应用 典型的协作流程: 系统工程师用 Modbus Constructor 为项目中的所有 Modbus 设备创建模型文件 将模型文件分发给现场调试工程师 现场工程师用免费的 Modbus Reader 加载模型,连接设备进行调试和验收 不需要现场工程师记忆每个寄存器的地址、数据类型和缩放因子 免费替代方案 如果你不想购买 Modbus Constructor 的商业许可,可以考虑以下免费替代: Node-RED + Modbus 节点:通过拖拽流程节点配置 Modbus 读取和数据转换,可视化程度高 Python + pymodbus + Pandas:编写 Python 脚本定义寄存器映射表,用 Pandas 处理和显示数据 Excel + MBServer ActiveX:用 VBA 调用 MBServer 读取数据,Excel 中定义映射公式 总结 Modbus Constructor 解决了一个 Modbus 工程中非常实际的问题:如何让原始的无单位数字变成有实际含义的工程数据。通过创建可复用的设备模型文件,它大大降低了现场调试时对设备手册的依赖,也减少了因地址记错、数据格式搞混导致的人为错误。配合免费的 Modbus Reader,它是一个高效、实用的团队协作方案。 --- ### 346. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Free Modbus Simulator(ModRSsim2)简介 Free Modbus Simulator(最新版本命名为 ModRSsim2)是一款 Windows 平台上的免费 Modbus RTU 和 TCP 从站(Slave/Server)模拟器,项目托管在 SourceForge:sourceforge.net/projects/modrssim2。 ModRSsim2 是原版 "Free Modbus Simulator" 的一个分支(fork)和扩展版本,由社区开发者维护。使用 Visual Studio C++ 2010 编写,完整源码开源。它在原版基础上增加了更多诊断功能和脚本支持。 功能特性 全地址空间模拟:支持四种 Modbus 数据类型(0xxxx 线圈、1xxxx 离散输入、3xxxx 输入寄存器、4xxxx 保持寄存器)的完整地址范围 多设备模拟:可同时模拟多个不同的 Device ID(Slave Address) 双协议:同时支持 Modbus RTU(串口)和 Modbus TCP(以太网) 流量捕获:完整的字节级通信捕获和日志记录,带人工可读的解码描述 CSV 加载:从 CSV 文件批量加载寄存器初始值 脚本环境:支持测试脚本,自动化修改寄存器值 HTML 自定义显示:可以使用 HTML 模板自定义数据显示界面 完整源码:C++ 源码可用,便于二次开发 下载与安装 # 从 SourceForge 下载 # https://sourceforge.net/projects/modrssim2/ # 直接下载最新版本的 EXE 安装包,运行安装即可 安装后启动 ModRSsim2,主界面提供以下操作区: 顶部菜单栏:配置、连接、脚本、日志等 左侧设备树:管理模拟的多个从站设备 中间数据区:显示和编辑寄存器/线圈的值 底部日志区:显示通信流量和解码信息 创建 TCP 从站 菜单栏点击 Connection → TCP/IP 设置监听端口(默认 502) 设置从站地址(Device ID):1 在数据区选择 Holding Registers (4xxxx) 标签页 直接在表格中填入想要返回的寄存器值 点击 Start 按钮启动模拟 用 Modbus Poll 或 Modpoll 连接 127.0.0.1:502 测试,即可读取到设定的值。 创建 RTU 串口从站 菜单栏点击 Connection → Serial (RTU) 选择串口号(如 COM3) 设置波特率(9600)、数据位(8)、校验位(None)、停止位(1) 设置从站地址 点击 Start 启动 ⚠️ ModRSsim2 使用串口时,该串口会被独占。不要同时用其他软件打开同一个串口,否则会出现"端口被占用"错误。 通信日志与诊断 ModRSsim2 的通信日志功能非常详尽,对于调试 Modbus 通信问题非常有价值: 字节级捕获:显示原始的十六进制通信字节 解码描述:自动解析每帧的含义(如 "FC03: Read Holding Registers from address 0, count 10") 时间戳:每条记录带有精确的时间戳 日志导出:可导出为文本文件进行分析 CSV 批量加载寄存器值 如果你需要模拟一个有几十上百个寄存器的设备,逐一手动填写值是不现实的。ModRSsim2 支持 CSV 文件批量导入: # CSV 格式示例(holding_registers.csv) Address,Value,Description 40001,1234,A相电压(mV) 40002,1198,B相电压(mV) 40003,1205,C相电压(mV) 40004,850,A相电流(mA x100) 40005,830,B相电流(mA x100) 40006,845,C相电流(mA x100) 40007,1020,频率(Hz x100) 40008,500,有功功率(W) 菜单 → File → Import CSV → 选择文件 → 导入完成。 ModRSsim2 vs 其他免费模拟器 工具平台特点活跃度 ModRSsim2Windows全地址空间、通信日志、CSV导入、开源低 ModbusPal跨平台(Java)Python脚本动态生成数据低 Modbus SlaveWindows商业软件,功能最完善活跃 Unslave跨平台现代 UI,仍在开发中中 总结 ModRSsim2 是 Windows 平台上最实用的免费 Modbus 从站模拟器之一。它虽然没有 ModbusPal 那样的 Python 脚本动态数据能力,但在静态模拟场景(按照已知的数据表模拟一个固定的从站设备)中更加简单直接。特别是它的通信日志解码功能和 CSV 批量导入功能,非常适合在 Modbus 主站开发阶段进行联调测试。 --- ### 347. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Chipkin Automation Systems (CAS) Modbus 工具简介 Chipkin Automation Systems 是一家专注于楼宇自动化和工业协议网关的加拿大公司,官网 www.chipkin.com。除了商业化的 BACnet 和 Modbus 网关产品外,Chipkin 还提供了一系列免费的 Modbus 调试和测试工具,包括: CAS Modbus RTU Parser:在线的 Modbus RTU 报文解析工具 CAS Modbus TCP Parser:在线的 Modbus TCP 报文解析工具 CAS Modbus Scanner:可下载的 Modbus 设备数据扫描工具 这些工具非常轻量,浏览器打开即可使用(Parser),或下载后一键运行(Scanner)。对于偶尔需要分析 Modbus 报文的工程师来说,比安装 Wireshark + 配置环境要快得多。 CAS Modbus RTU Parser 访问地址:store.chipkin.com/products/tools#modbus-rtu-parser 这是一个网页工具,无需安装。你只需要将一串 Modbus RTU 报文的十六进制字节粘贴到输入框,工具会自动解析出: 从站地址(Slave Address) 功能码及其含义(如 03 = Read Holding Registers) 起始地址和寄存器数量(请求帧) 数据字节数和具体数据值(响应帧) CRC 校验值(并验证是否正确) 使用示例 假设你在串口助手中收到了这样一串十六进制数据: 01 03 00 00 00 0A C5 CD 粘贴到 CAS Modbus RTU Parser 后,自动解析结果为: Slave Address:1 Function Code:3 (Read Holding Registers) Starting Address:0 Quantity:10 个寄存器 CRC:0xCDC5(校验通过 ✓) 同理,验证响应帧也方便: 01 03 14 00 64 00 C8 01 2C 01 90 01 F4 02 58 02 BC 03 20 03 84 03 E8 DE B1 解析结果:从站 1,功能码 3,字节数 20(10 个寄存器),依次为 100、200、300、400... 每个值占 2 字节。 CAS Modbus TCP Parser 访问地址:store.chipkin.com/products/tools#modbus-tcp-parser 与 RTU Parser 类似,但增加了解析 Modbus TCP MBAP 头的功能。输入十六进制字节即可获得:Transaction ID、Protocol ID、Length、Unit ID 以及完整的 PDU 解析。 报文示例: 00 01 00 00 00 06 01 03 00 00 00 0A 解析: Transaction ID:1 Protocol ID:0(Modbus) Length:6 字节(后续内容) Unit ID:1(从站地址) Function Code:3(读保持寄存器) Starting Address:0 Quantity:10 CAS Modbus Scanner CAS Modbus Scanner 是一个可下载的桌面工具,用于扫描和读取 Modbus 设备的所有寄存器数据。下载地址同样在 store.chipkin.com/products/tools/cas-modbus-scanner。 功能特点 支持 Modbus TCP 和 Modbus RTU(通过串口) 可扫描所有四种数据类型:线圈(Coils)、离散输入(Discrete Inputs)、保持寄存器(Holding Registers)、输入寄存器(Input Registers) 支持从地址 0 开始的完整地址空间扫描 显示实时数据值,支持十六进制和十进制两种显示格式 导出扫描结果到 CSV 文件 典型使用场景 当你拿到一个未知的 Modbus 设备(没有完整的寄存器映射表),需要快速了解它有哪些可读寄存器时,CAS Modbus Scanner 是最快的解决方案。只需: 设置连接参数(IP 地址和端口,或串口参数) 选择要扫描的地址范围(如 0-100) 点击 Start Scan 检查返回的数据值和异常码,判断哪些地址是有效的 使用 CAS 工具进行 Modbus 设备逆向分析 在没有设备手册的情况下,通过 CAS Scanner 进行寄存器逆向分析是一个实用的技能。基本思路: 先小范围扫描(如 0-50),确认哪些地址返回有效数据 在已知物理量附近改变条件(如加热温度传感器、旋转编码器),观察哪些寄存器的值发生变化 根据变化规律推断寄存器类型(16位整数/32位浮点/32位整数) 记录下寄存器地址和对应的物理含义,构建寄存器映射表 Chipkin 的其他工控工具 除了 Modbus 工具外,Chipkin 还提供了以下免费工具: BACnet Explorer:浏览和测试 BACnet 网络上的设备 CAS BACnet Explorer:BACnet 协议设备发现和数据浏览 Modbus Explorer:增强版的 Modbus 设备浏览器 这些工具都可以从 store.chipkin.com/products/tools 免费下载使用。 总结 CAS Modbus 工具套件的最大优势是"即开即用"——Parser 是网页工具无需安装,Scanner 下载后即装即用。当你在现场调试时遇到一串看不懂的 Modbus 报文、或者拿到一个没有手册的未知 Modbus 设备时,这套免费工具可以帮你快速完成报文解析和地址空间扫描,节省大量翻阅协议文档和编写测试脚本的时间。 --- ### 348. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 为什么用 Wireshark 分析 Modbus? Wireshark 是全球最流行的开源网络协议分析器,由 Gerald Combs 于 1998 年创建,现由 Wireshark 基金会维护。官网 www.wireshark.org。它内置了完整的 Modbus TCP 协议解析器(dissector),可以自动识别和解析 Modbus TCP 报文中的 MBAP 头、功能码、数据区和异常码。对于 Modbus RTU 报文,Wireshark 也可以通过 USB 转串口适配器或远程抓包的方式进行分析。 在工业自动化的调试现场,最常见的痛点就是"通信不通但不知道为什么"。Wireshark 能让你看到总线上的每一帧数据——请求发了什么、响应回了什么、超时发生在哪个环节、异常码是什么——把看不见的通信过程变成可追踪的证据链。 Wireshark 对 Modbus 协议的支持 Wireshark 的 Modbus 协议解析器位于 epan/dissectors/packet-modbus.c,能够自动识别以下内容: Modbus/TCP:默认端口 502,自动识别 MBAP 头(Transaction ID、Protocol ID、Length、Unit ID)和各功能码的 PDU 功能码解析:FC01-FC06、FC15-FC16、FC23 等常用功能码的请求和响应格式 异常码:自动标注异常响应,并显示异常码含义(01=非法功能、02=非法数据地址、03=非法数据值、04=从站设备故障等) Modbus RTU over TCP:部分网关将 RTU 帧封装在 TCP 中传输,Wireshark 也能解析 安装 Wireshark Linux(Ubuntu/Debian) sudo apt-get update sudo apt-get install wireshark # 允许非 root 用户抓包 sudo usermod -a -G wireshark $USER # 注销后重新登录生效 Windows 从 官网下载页面 下载 Windows 安装包。安装时需勾选 Npcap(Windows 抓包驱动)和 USBPcap(如需抓 USB 转串口数据)。 macOS brew install --cask wireshark 抓取 Modbus TCP 报文 Linux 服务器端抓包 如果 Modbus TCP 通信发生在 Linux 服务器或网关上,直接用 tcpdump 抓包效率最高: # 抓取所有目标端口为 502 的 TCP 报文(Modbus TCP 默认端口) sudo tcpdump -i eth0 -w modbus_capture.pcap 'tcp port 502' # 只抓指定 IP 设备的通信 sudo tcpdump -i eth0 -w modbus_capture.pcap 'host 192.168.1.100 and tcp port 502' # 按 Ctrl+C 停止抓包 # 将 .pcap 文件传输到有 Wireshark 的电脑上分析 Windows 端直接抓包 打开 Wireshark,选择与目标设备通信的网卡(如以太网卡或 Wi-Fi),在 Capture Filter 中输入 tcp port 502,点击开始抓包。此时运行你的 Modbus 主站程序(如 Modbus Poll),即可捕获到完整的 Modbus TCP 通信过程。 Modbus TCP 报文详解 在 Wireshark 中选中一条 Modbus TCP 报文,展开 "Modbus/TCP" 层。一个典型的读保持寄存器请求报文结构如下: 字段字节数示例值说明 Transaction ID20x0001事务标识符,客户端自增,服务端原样返回 Protocol ID20x0000协议标识,Modbus 固定为 0 Length20x0006后续字节数(Unit ID + PDU) Unit ID10x01从站地址(Slave ID) Function Code10x03功能码(03=读保持寄存器) Starting Address20x0000起始寄存器地址 Quantity20x000A读取数量(10个) 对应的响应报文包含同样的 MBAP 头 + 功能码 0x03 + 字节计数 0x14(20字节=10个寄存器)+ 数据区。 Wireshark 显示过滤器技巧 显示过滤器(Display Filter)用于在已抓取的报文中快速筛选目标数据。以下是常用的 Modbus 相关过滤器: # 筛选所有 Modbus 协议报文 modbus # 筛选指定功能码(如 03 读保持寄存器) modbus.func_code == 3 # 筛选异常响应 modbus.exception_code # 筛选指定从站地址 modbus.unit_id == 1 # 筛选包含异常的报文 modbus.exception_code != 0 # 组合过滤:从站 1 的功能码 16(写多寄存器) modbus.unit_id == 1 and modbus.func_code == 16 # 按 IP 地址和 Modbus 功能码过滤 ip.addr == 192.168.1.100 and modbus.func_code == 3 # 只看 MBAP 头 Transaction ID 为 5 的请求-响应对 modbus.trans_id == 5 实战案例:用 Wireshark 排查 Modbus 通信故障 案例1:读不到数据——从站无响应 抓包后发现只有请求帧没有响应帧(或出现 TCP RST/重传),说明从站设备没有正确响应。检查方法: 确认 TCP 端口(默认 502)在从站设备上已开放 检查从站地址(Unit ID)是否与请求中的一致 查看是否有 TCP 层异常(重传、RST),如有则说明网络层有问题 案例2:返回异常码 02(非法数据地址) Wireshark 可以看到请求中的起始地址 + 数量超出了从站的寄存器范围。在 Wireshark 中右键点请求报文 → "Follow → TCP Stream",可以看到完整的请求和异常响应对话。 案例3:数据值异常——字节序问题 读取到的 32 位浮点数在 Wireshark 中显示正常,但在主站程序中显示为 NaN 或极大值。这说明通信层没问题,是主站程序的字节序解析有误。可以在 Wireshark 中手动计算验证:右键寄存器数据 → "Copy → Value" 获取十六进制原始值,用 IEEE 754 计算器在线验证。 抓取 Modbus RTU(串口)报文 Modbus RTU 通过 RS-232 或 RS-485 物理层传输,不能直接用 Wireshark 抓取。常见方案: 方案1:USB 转串口 + USBPcap 在 Windows 上安装 USBPcap(Wireshark 安装时可选组件),可以抓取 USB 转串口设备上的原始数据。但需要自行解析 RTU 帧(地址 + 功能码 + 数据 + CRC)。 方案2:串口监控软件 推荐使用专门的串口监控工具: Serial Port Monitor(Windows 商业软件):可直接监控和解析 Modbus RTU 帧 CAS Modbus RTU Parser:免费在线工具,粘贴十六进制字节自动解析 PortMon(Windows 免费):微软出品的底层串口监控工具 方案3:在 RTU 转 TCP 网关上抓包 如果现场使用了串口服务器(如 MOXA NPort),可以在 TCP 侧用 Wireshark 抓包,报文内容即为 RTU 帧。 Wireshark Modbus 分析进阶技巧 统计分析:I/O 图表 菜单 → Statistics → I/O Graph,设置过滤器为 modbus,可以观察到 Modbus 通信的频率和时间分布。如果发现周期性尖峰或间隙,可能是轮询参数配置不当。 查看完整的 TCP 流 右键任意 Modbus TCP 报文 → Follow → TCP Stream,可以查看一次完整 TCP 连接中所有 Modbus 请求和响应的原始数据。这是排查"读取数据错位"问题的利器。 导出 Modbus 数据 File → Export Packet Dissections → As CSV,可以将所有解码后的 Modbus 报文导出为 CSV 格式,方便用 Excel 或 Python 进行批量分析。 总结 Wireshark 是 Modbus 协议调试中不可替代的工具。它能够将"看不见"的通信过程可视化,帮助工程师精准定位问题发生在协议栈的哪一层——是 TCP 连接建立失败、MBAP 头字段错误、功能码不匹配、寄存器地址越界还是数据字节序解析错误。对于任何从事 Modbus 通信开发和调试的工程师,掌握 Wireshark 抓包分析是必备技能。 --- ### 349. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ModbusPal 是什么? ModbusPal 是一个基于 Java 的开源 Modbus 从站(Slave)模拟器,项目托管在 SourceForge:https://modbuspal.sourceforge.net/。它的核心特色是通过内嵌的 Jython(Java 版 Python)脚本引擎动态生成寄存器值,而不是仅仅返回预先设定的静态数据。这意味着你可以模拟真实工业设备的各种行为——温度传感器的季节波动、变频器的加速曲线、甚至带有噪声的模拟量信号。 在开发 Modbus 主站程序时,工程师经常面临"没有真实硬件"的困境。ModbusPal 就是为解决这个问题而设计的——它可以在一台普通电脑上同时模拟数十个不同类型的 Modbus 从站设备,支持 Modbus RTU(串口)和 Modbus TCP(以太网)两种传输模式。 ModbusPal 核心功能特性 动态寄存器生成:通过内置的数学函数(正弦波、斜坡、随机数)或用户自定义 Python 脚本实时计算每个寄存器的值 多从站并发:同时模拟多个不同 Slave ID 的 Modbus RTU/TCP 设备 自动化机制:支持定时任务自动修改寄存器值,模拟设备状态变化(如开关量翻转、模拟量渐变) Jython 脚本引擎:内嵌 Jython 2.x,允许编写复杂业务逻辑(状态机、通信仿真等) 跨平台运行:基于 Java Swing,Windows / Linux / macOS 均可运行 串口支持:通过 RxTx 库支持物理串口通信,可连接真实的 RS-232/RS-485 网络 安装 ModbusPal 前提条件 ModbusPal 依赖 Java 运行环境(JRE 8 或以上)。如需使用物理串口功能,还需要安装 RxTx 串口通信库。 Linux 安装 # 安装 Java 运行时 sudo apt-get update sudo apt-get install default-jre # 下载 ModbusPal(SourceForge 最新版) wget -O modbuspal.jar "https://sourceforge.net/projects/modbuspal/files/latest/download" # 启动程序 java -jar modbuspal.jar # 如果需要串口支持,安装 RxTx sudo apt-get install librxtx-java Windows 安装 下载 modbuspal.jar 后,如果系统已安装 Java,双击即可运行。如需串口功能,下载 RxTx 的 Windows DLL 文件(rxtxSerial.dll),复制到 C:Program FilesJavajrebin 目录。 创建第一个 Modbus TCP 从站 启动 ModbusPal 后,主界面从上到下分为菜单栏、工程树、配置面板和日志输出区。创建基础从站只需 5 步: 菜单栏点击 Add → Modbus Slave 在弹出的对话框中,选择协议类型为 TCP 设置监听端口(默认 502),如需多从站可分配不同端口(如 502, 503, 504) 设置从站地址(Slave ID),例如 1 右键点击新创建的从站,选择 Add → Holding Registers,设置起始地址和数量 点击工具栏的 Run 按钮启动从站。此时从站已经在 TCP 502 端口监听,可以用 Modbus Poll 或 Modpoll 等主站工具连接并读取寄存器值。 用 Python 脚本生成动态数据 这是 ModbusPal 的杀手级功能。以下示例模拟一个温度传感器,让寄存器值以正弦波形式在 20°C 到 30°C 之间波动: # temperature_simulator.py # 模拟温度传感器,值在 20.0 - 30.0°C 间以正弦波周期变化 import time import math def getValue(register): """ ModbusPal 每次读寄存器时调用此函数 register: 寄存器地址 (int) 返回值: 寄存器值 (int, 0-65535) """ t = time.time() # 中心温度 25°C,振幅 5°C,周期 60 秒 temperature = 25.0 + 5.0 * math.sin(2.0 * math.pi * t / 60.0) # 乘以 10 保留一位小数精度,如 25.3°C → 253 return int(temperature * 10) def setValue(register, value): """可选:处理主站写入的命令""" print("Register %d written with value %d" % (register, value)) 在 ModbusPal 中绑定脚本:右键点击目标寄存器 → Bindings → Add Python Binding → 选择脚本文件 → 指定绑定的寄存器地址范围。启动从站后,用主站工具持续读取该寄存器地址,即可观察到温度值随时间的正弦变化。 进阶场景:模拟完整的多设备工业网络 实际工业场景中,一条 RS-485 总线上通常挂载多个从站设备。我们可以用 ModbusPal 模拟以下典型配置: 从站 ID设备类型寄存器映射 1温湿度传感器R0: 温度(x10), R1: 湿度(x10) 2三相电表R0: A相电压, R1: A相电流, R2-3: 有功功率(32-bit) 3变频器R0: 运行频率(x100), R1: 输出电流(x10), R2: 运行状态(bit编码) 4液位计R0-1: 液位高度(mm, 32-bit), R2: 温度(x10) 在 ModbusPal 中依次添加 4 个从站,为每个从站创建对应的寄存器组,再为需要动态值的寄存器绑定 Python 脚本。这样做的好处是:无需购买和连接真实硬件,即可在开发机上完成多设备通信联调和协议逻辑验证。 设计复杂的模拟行为 模拟变频器启停和转速变化 # vfd_simulator.py # 模拟变频器:接收启停命令,转速按斜坡函数变化 import time # 全局状态变量 target_freq = 0.0 # 目标频率 (Hz) current_freq = 0.0 # 当前频率 (Hz) running = False # 运行状态 RAMP_RATE = 2.0 # 斜坡速率:2 Hz/秒 last_time = time.time() def getValue(register): global current_freq, last_time now = time.time() dt = now - last_time last_time = now if register == 0: # 频率寄存器:按斜坡速率逼近目标值 if abs(current_freq - target_freq) > 0.01: if current_freq = 0: status |= 0x02 return status return 0 def setValue(register, value): global target_freq, running if register == 0: # 主站写入控制命令 # value bit0: 启动/停止, bit1: 方向 running = bool(value & 0x01) if not running: target_freq = 0.0 elif register == 1: # 主站写入目标频率(乘以 100) target_freq = value / 100.0 模拟带噪声的模拟量传感器 # noisy_sensor.py # 模拟带噪声的 4-20mA 压力变送器 import time import math import random def getValue(register): t = time.time() # 基准压力:0.5 MPa,叠加小幅正弦波动 base_pressure = 500.0 # kPa ripple = 10.0 * math.sin(2 * math.pi * t / 30.0) # 添加随机噪声(±2 kPa) noise = random.uniform(-2.0, 2.0) pressure = base_pressure + ripple + noise if register == 0: # 压力值(kPa,整数) return int(pressure) elif register == 1: # 压力值小数部分(Pa) frac = pressure - int(pressure) return int(frac * 1000) return 0 与自动化测试结合 ModbusPal 可以配置为项目文件(.mbp 格式),通过命令行加载: # 加载预配置的工程文件并启动 java -jar modbuspal.jar --load my_project.mbp & 这使其可以集成到自动化测试流程中。测试脚本的典型流程: 启动 ModbusPal 并加载测试工程(后台运行) 等待从站就绪 运行 Modbus 主站测试用例(如用 Modpoll 读写寄存器) 验证返回值是否符合预期 生成测试报告 停止 ModbusPal ModbusPal 的局限性 使用 ModbusPal 时需要注意以下几点: 项目活跃度:ModbusPal 是一个较早期的开源项目,近几年更新频率降低。对于一些较新的 Modbus 功能(如 FC43/14 读取设备标识),支持可能不完整。 Jython 版本:内置的 Jython 引擎基于 Python 2.x 语法,不支持 f-string、type hints 等 Python 3 特性。 高分辨率显示:基于 Java Swing 的 GUI 在 4K 高 DPI 屏幕上可能显示不佳,需要调整 Java 的 DPI 缩放设置。 性能上限:模拟大量从站(超过 20 个)时,Java 的串口处理可能成为瓶颈。 替代方案对比 pymodbus(Python):灵活性最高,支持 TCP/RTU/TLS,适合构建自定义模拟器,但需要编写完整代码 ModRSsim2:Windows 平台的免费 Modbus 从站模拟器,有 GUI 但不支持 Python 脚本 Modbus Slave(商业软件):功能最全的商业 Modbus 模拟工具,但不是免费的 Unslave Modbus Simulator:较新的免费选择,界面更现代 总结 ModbusPal 以其 Python 脚本驱动的动态寄存器生成能力,在开源 Modbus 模拟器领域独具特色。它特别适合以下应用场景:Modbus 主站程序开发阶段没有目标硬件时的协议联调与验证;需要模拟多个不同类型从站设备(仪表、PLC、变频器)的复杂系统集成测试;以及需要通过动态波形、随机噪声、斜坡函数等来复现真实工业现场行为的场景。如果你正在开发 Modbus 上位机软件、SCADA 系统或物联网数据采集网关,ModbusPal 是验证通信逻辑的得力工具。 --- ### 350. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是 Modpoll? Modpoll 是一款开源的命令行 Modbus 主站模拟器,由 proconX 公司基于其 FieldTalk™ 协议栈开发。它可以在 Windows、Linux、QNX 等操作系统上运行,是工程师进行 Modbus 设备调试、协议测试和批量数据采集时的利器。与带 GUI 的 Modbus Poll 不同,Modpoll 完全通过命令行参数控制,非常适合集成到自动化测试脚本和 CI/CD 流程中。 官方下载地址:http://www.focus-sw.com/fieldtalk/modpoll.html Modpoll 支持的功能 传输模式:Modbus RTU(串口)和 Modbus TCP(以太网),同时支持通过 RTU-over-TCP 网关通信 功能码覆盖:FC01(读线圈)、FC02(读离散输入)、FC03(读保持寄存器)、FC04(读输入寄存器)、FC05(写单线圈)、FC06(写单寄存器)、FC15(写多线圈)、FC16(写多寄存器)、FC23(读/写多寄存器) 数据格式:支持 HEX、十进制无符号、十进制有符号、32 位浮点数(Float)等多种显示格式 字节序配置:支持 Big-Endian 和 Little-Endian 两种字节序,适配不同厂商的 PLC 设备 轮询模式:支持单次读取和连续轮询,可自由指定轮询间隔 输出格式:支持标准文本输出和十六进制 raw 输出两种模式 安装 Modpoll Windows 平台安装 从官网下载 Windows 版本的 ZIP 压缩包,解压后即可获得 modpoll.exe 可执行文件。建议将解压目录添加到系统的 PATH 环境变量中,方便在任意目录下调用。Windows 10/11 用户也可以直接通过 WSL 使用 Linux 版本的 Modpoll。 Linux 平台安装 # 下载 Linux 版本(以 3.10 版本为例) wget http://www.focus-sw.com/fieldtalk/modpoll-3.10-linux-x86_64.tar.gz # 解压 tar -xzf modpoll-3.10-linux-x86_64.tar.gz # 进入目录 cd modpoll-3.10-linux-x86_64 # 测试运行 ./modpoll --version # 可选:创建软链接方便全局调用 sudo ln -s $(pwd)/modpoll /usr/local/bin/modpoll ARM / 嵌入式 Linux 安装 如果需要在树莓派等 ARM 设备上运行,可以从官网选择对应的 ARM 版本,或从源码交叉编译。proconX 提供了 armhf 和 aarch64 等架构的预编译包。 Modpoll 命令行参数详解 参数含义示例 -m传输模式(tcp / rtu / ascii)-m tcp -a从站地址(Slave ID)-a 1 -r起始寄存器/线圈地址(协议地址)-r 100 -c读取/写入的点数(Count)-c 20 -b波特率(RTU 模式)-b 9600 -p校验位(none / even / odd)-p none -t数据类型与显示格式-t 4:hex -1持续轮询模式-1 -o超时时间(秒)-o 3 -0地址从 0 开始(默认 PLC 地址从 1 开始)-0 常用实战命令 1. Modbus TCP 读取保持寄存器(FC03) 从 IP 地址 192.168.1.100、端口 502 的设备,读取从站地址 1 的保持寄存器 0-9(共 10 个): modpoll -m tcp -a 1 -r 1 -c 10 192.168.1.100 输出示例: -- Polling slave 1... [1]: 1234 [2]: 5678 [3]: 0 [4]: 100 2. Modbus RTU 串口通信 # Linux 平台(/dev/ttyUSB0) modpoll -m rtu -a 1 -r 1 -c 10 -b 9600 -p none /dev/ttyUSB0 # Windows 平台(COM3) modpoll -m rtu -a 1 -r 1 -c 10 -b 9600 -p none COM3 3. 持续轮询模式(监控用) # 每 500 毫秒轮询一次,无限循环 modpoll -m tcp -a 1 -r 1 -c 20 -1 192.168.1.100 500 # 输出带时间戳的轮询数据 modpoll -m tcp -a 1 -r 1 -c 5 -1 192.168.1.100 1000 | while read line; do echo "$(date '+%H:%M:%S') $line" done 4. 读线圈状态(FC01) # 读取地址 0 开始的 8 个线圈 modpoll -m tcp -a 1 -r 1 -c 8 -t 0 192.168.1.100 注意:-t 0 表示线圈类型,-t 1 表示离散输入,-t 3 表示输入寄存器,-t 4 表示保持寄存器。 5. 写入单寄存器(FC06) # 将协议地址 0 的寄存器值写入 1234 modpoll -m tcp -a 1 -r 1 192.168.1.100 1234 6. 读取 32 位浮点数(Float) 很多工业仪表(如温度变送器、流量计)使用两个连续的 16 位保持寄存器存储一个 IEEE 754 32 位浮点数: # 从地址 0 开始读取 2 个寄存器,按 float 格式显示 modpoll -m tcp -a 1 -r 1 -c 2 -t 4:float 192.168.1.100 7. 批量写入多寄存器(FC16) # 从协议地址 0 开始,依次写入 100, 200, 300, 400 modpoll -m tcp -a 1 -r 1 192.168.1.100 100 200 300 400 8. 读写组合操作(FC23) # 读取地址 0-4(5个寄存器),同时将地址 10-11 写入 99, 88 modpoll -m tcp -a 1 -r 1 -c 5 -w 11 -q 2 192.168.1.100 99 88 集成到自动化测试脚本 Modpoll 的命令行特性使其成为自动化测试的理想选择。以下是一个完整的设备验收测试脚本: #!/bin/bash # Modbus 设备寄存器读写验收测试 # 用法: ./modbus_test.sh <设备IP> DEVICE_IP=${1:-"192.168.1.100"} PASS=0 FAIL=0 echo "=== Modbus 设备验收测试 ===" echo "目标设备: $DEVICE_IP" echo "" # 测试1: TCP 连接性 echo "[TEST 1] TCP 端口 502 连通性" if timeout 3 bash -c "echo > /dev/tcp/$DEVICE_IP/502" 2>/dev/null; then echo " [PASS] 端口 502 可达" PASS=$((PASS+1)) else echo " [FAIL] 端口 502 不可达" FAIL=$((FAIL+1)) fi # 测试2: 读取保持寄存器 FC03 echo "[TEST 2] 功能码 FC03 - 读保持寄存器" result=$(modpoll -m tcp -a 1 -r 1 -c 5 -o 1 $DEVICE_IP 2>&1) if echo "$result" | grep -qE '[[0-9]+]:'; then echo " [PASS] FC03 功能正常" PASS=$((PASS+1)) else echo " [FAIL] FC03 读取失败: $result" FAIL=$((FAIL+1)) fi # 测试3: 写入保持寄存器 FC06 echo "[TEST 3] 功能码 FC06 - 写单寄存器" # 先读当前值 before=$(modpoll -m tcp -a 1 -r 1 -c 1 -o 1 $DEVICE_IP 2>&1 | grep -oP '(? /dev/null 2>&1 # 验证写入 after=$(modpoll -m tcp -a 1 -r 1 -c 1 -o 1 $DEVICE_IP 2>&1 | grep -oP '(? /dev/null 2>&1 if [ "$after" = "9999" ]; then echo " [PASS] FC06 写入功能正常" PASS=$((PASS+1)) else echo " [FAIL] FC06 写入失败: 预期9999, 实际$after" FAIL=$((FAIL+1)) fi echo "" echo "=== 测试结果: $PASS 通过, $FAIL 失败 ===" Modpoll 与其他 Modbus 工具对比 Modbus Poll:Windows GUI 工具,可视化操作,适合手动调试。官网 www.modbustools.com。 Modpoll:纯命令行工具,跨平台,适合脚本自动化和远程部署,完全免费。 pymodbus:Python 库,需要编程,灵活性最高,适合构建自定义测试框架。 QModMaster:Qt 写的跨平台 GUI 工具,开源免费,功能较简单。 常见问题排查指南 连接超时 首先用 ping 确认网络层连通。对于 Modbus TCP,默认使用 502 端口,用 telnet 192.168.1.100 502 测试。如果连接立即断开(而非超时),说明服务器拒绝连接,可能端口未开放。如果一直等待无响应,可能是防火墙拦截。 读取值全为零 可能原因:从站地址 -a 设置与实际设备不匹配;起始地址 -r 的 PLC 地址到协议地址转换错误(如 PLC 地址 40001 对应协议地址 0);该段寄存器确实未被配置或未写入过数据。 RTU 模式返回异常/错误 逐一确认:波特率(-b)、数据位(固定8位)、校验位(-p:none/even/odd)和停止位是否与从站设备一致。RS-485 接线特别注意 A(+)/B(-)线序不能接反。建议先用示波器或逻辑分析仪观察总线上信号质量。 浮点数读数异常 32 位浮点数涉及两个 16 位寄存器的排列顺序(字节序/字序)。不同厂商可能使用 ABCD、CDAB、BADC、DCBA 等不同顺序。Modpoll 默认使用 Big-Endian 浮点格式。如果读数明显异常(如 NaN 或数量级完全不对),尝试用 modpoll -t 4:hex 先看原始十六进制值,手动计算确认字节序后再调整配置。 总结 Modpoll 是 Modbus 协议调试工具链中不可或缺的"瑞士军刀"。它的最大优势在于轻量、跨平台、命令行驱动,可以无缝融入 Shell 脚本、Python 测试框架和 CI/CD 流水线。无论是嵌入式工程师验证单片机 Modbus 从站、自动化工程师调试 PLC 通信配置,还是 QA 工程师编写自动化的 Modbus 设备验收测试,掌握 Modpoll 都能显著提高工作效率。 --- ### 351. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、工控数据处理的"基本功" CRC校验怎么算?0x42A00000这个十六进制数对应的浮点数是多少?十进制255转十六进制是FF还是0xFF?——这些看似基础的数据处理操作,在实际调试中高频出现。 「modbus调试助手」提供了3款数据转换与计算工具,覆盖工控工程师的日常数据处理需求。 二、校验计算工具 — 多算法一站式 校验计算工具集成了8种常用校验算法: 算法输出位数典型应用 CRC16-Modbus16位Modbus RTU 帧校验 CRC16-CCITT16位XMODEM、蓝牙 CRC3232位以太网/压缩文件 LRC8位Modbus ASCII 帧校验 XOR/Checksum8位PELCO-D、NMEA 0183 MD5128位文件校验、密码哈希 SHA-1160位数字签名 SHA-256256位安全哈希、固件校验 输入方式灵活——十六进制字符串(空格分隔或不分隔均可)、ASCII文本、粘贴完整Modbus报文自动去除首尾识别校验区域。CRC16结果可以选择低字节在前(Modbus标准)或高字节在前。 三、数据类型转换工具 工控通信中最让人头疼的问题之一就是数据类型的转换。 3.1 支持的转换 进制转换:二进制 ↔ 八进制 ↔ 十进制 ↔ 十六进制,支持8/16/32/64位宽度,有符号/无符号切换 浮点数解析:十六进制 ↔ IEEE 754单精度(32位)和双精度(64位)浮点数。如输入 0x42A00000 → 输出 80.0(单精度) BCD码转换:BCD(Binary-Coded Decimal)↔ 十进制。DL/T645电表协议大量使用BCD码 字节序转换:大端(Big-Endian)↔ 小端(Little-Endian)↔ 中间端(Middle-Endian)字节序反转 ASCII-Hex互转:ASCII字符串 ↔ 十六进制字节(如 "Hello" ↔ 48 65 6C 6C 6F) 比特位提取:输入一个字节/字/双字,提取指定比特位的值(如 bit3=1, bit7=0) 3.2 工控实战场景 场景1:电表返回4个字节 42 A0 00 00,用浮点数解析功能得知这是 80.0(有功功率80.0kW)。 场景2:变频器参数0x2001返回 03 E8(大端)或 E8 03(小端),用字节序转换确认实际值=1000。 场景3:DL/T645电表返回 00 00 12 34,用BCD解析功能得知表号是 00001234。 四、程序员计算器 这不是普通的计算器,而是为嵌入式/工控工程师设计的专业计算器: 多进制同时显示:输入任意进制的值,同步显示HEX/DEC/OCT/BIN四种格式 位运算:AND/OR/XOR/NOT/左移/右移/循环左移/循环右移 字长设置:8位(Byte)/16位(Word)/32位(DWord)/64位(QWord) 有符号/无符号切换:同一十六进制值在两种解释下的不同十进制值 寄存器运算:模拟PLC寄存器的算术运算(ADD/SUB/MUL/DIV) 常用常数:一键输入常用值——0xFF(255)、0xFFFF(65535)、0xFFFFFFFF(4294967295) 五、总结 3款数据转换与计算工具是工控工程师的"随身计算器"。当你需要校验一个CRC、解析一个浮点数、或者在现场快速换算进制时,掏出手机就能搞定。 打开微信搜索 「modbus调试助手」,工程师的随身数据工具箱。🎯 本文所述全部工具均在微信小程序中免费使用 打开微信 → 点击顶部搜索 → 输入 「modbus调试助手」 → 进入小程序。 无需下载APP、无需注册登录、无需电脑——70+ 款工控调试工具,掏出手机就能用。 无论你是在工程现场、出差途中、还是在家学习,modbus调试助手都是你随身的工业自动化调试工作站。 --- ### 352. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、PLC调试的移动化革命 PLC(可编程逻辑控制器)是工业自动化的核心大脑。无论西门子、三菱、欧姆龙还是台达,PLC程序的上传、下载、在线监控、故障诊断都需要专用编程软件和笔记本电脑。但现场运维工程师经常遇到这样的场景:只是简单查看几个I/O点状态、监控某几个寄存器的值、或者快速修改一个参数——为这点小事背电脑到现场,效率太低。 「modbus调试助手」的 PLC 工具箱提供了6款移动端PLC调试工具,覆盖了从基本调试到高级诊断的全流程需求。 二、PLC调试工具 — 真实面板级交互 这款工具的最大特色是以真实PLC面板为交互界面,而非枯燥的表格列表。界面分为三个功能区域: 2.1 INPUT 输入点区域(X区) 以矩阵形式展示 PLC 的输入点——X0、X1、X2……一直到 X37(根据型号不同)。每个点都有LED指示灯模拟,绿色点亮 = 信号ON(如接近开关触发、按钮按下),灰色熄灭 = 信号OFF。点击任意输入点可查询该地址的实时状态,包括当前值、最后变化时间。 2.2 OUTPUT 输出点区域(Y区) 展示 Y0-Y37 输出点状态。支持强制输出功能——点击输出点可以手动置ON/OFF(需PLC处于STOP模式或启用强制功能),这对于排查输出回路故障(确认是PLC没输出还是继电器/接触器故障)非常实用。 2.3 REGISTER 数据寄存器区域(D区) 以网格形式展示数据寄存器(D0、D1、D2……),每个格子显示当前值。点击任意寄存器打开读写对话框——可以查看十进制/十六进制/二进制三种表示,支持手动修改数值。 2.4 多品牌PLC支持 工具内置多种PLC型号配置,自动适配I/O点数量和寄存器范围:三菱 FX系列(FX1S/FX1N/FX2N/FX3U)、西门子 S7-200/S7-200 SMART、欧姆龙 CP系列、台达 DVP系列、松下 FP系列。 三、PLC梯形图编辑器 — 移动端Ladder编程 这是整套路工具中技术含量最高的模块之一。梯形图(Ladder Diagram)是PLC编程最常用的语言,模拟了继电器控制电路的逻辑表达。 3.1 核心指令支持 指令类型助记符说明 触点指令LD/LDI/AND/ANI/OR/ORI常开/常闭触点的串并联逻辑 输出指令OUT/SET/RST线圈输出、置位、复位 定时器T0-T255100ms/10ms/1ms时基可选 计数器C0-C25516位/32位增减计数器 比较指令CMP/ZCP数据比较、区间比较 传送指令MOV/CML数据传送、取反传送 3.2 移动端交互设计 在手机上编辑梯形图是个挑战。工具采用触摸拖拽+指令块选择的方式:点击空白网格位置→从指令面板选择常开触点/常闭触点/输出线圈/功能指令→自动放置在当前位置→双击修改元件编号(如X0、Y1、T2)。支持撤销/重做,支持缩放查看。 3.3 逻辑仿真 梯形图编辑器内置了离线仿真引擎:编写完梯形图后,点击「仿真运行」→手动点击输入点ON/OFF→观察输出线圈和辅助继电器的状态变化→验证梯形图逻辑是否正确。这个功能让工程师可以在去现场之前,先在手机上验证程序逻辑。 四、PID整定计算器 — 告别试凑法 PID(比例-积分-微分)控制是工业控制中最经典、最广泛使用的闭环控制算法。但PID参数的整定一直是工程师的痛点——靠经验"试凑"效率低、效果差。 PID整定计算器提供了三种经典整定方法: Ziegler-Nichols 临界比例度法:逐步增大比例增益直到系统出现等幅振荡,记录临界增益Ku和临界周期Tu,自动计算P/PI/PID三种参数组合 Ziegler-Nichols 阶跃响应法:输入开环阶跃响应曲线参数(延迟时间L、时间常数T、静态增益K),自动计算整定参数 CHR整定法:Chien-Hrones-Reswick方法,区分设定值跟踪和扰动抑制两种优化目标,给出0%和20%超调量两组参数 每种方法都提供了详细的公式推导和计算过程,不只是给结果。 五、变频器调试工具 变频器(VFD,Variable Frequency Drive)的调试是自动化工程师的日常任务。这款工具覆盖了主流变频器品牌的调试需求: 参数读写:通过Modbus RTU读写变频器参数(频率设定、加减速时间、上限频率、V/F曲线等) 运行控制:正转/反转/停止命令,频率设定(支持数字输入和模拟量百分比两种方式) 状态监控:实时显示运行频率、输出电流、输出电压、母线电压、运行状态字 故障诊断:读取故障代码并显示中文解释(过流、过压、欠压、过热、过载等) 多品牌支持:华为/汇川/台达/三菱/安川/ABB/西门子 等主流品牌变频器通信参数预置 六、伺服脉冲计算器 伺服电机控制系统中,脉冲当量的计算至关重要。伺服脉冲计算器帮助你一键完成以下计算: 电子齿轮比计算:输入编码器分辨率、丝杠导程、减速比、所需分辨率 → 输出电子齿轮分子/分母 脉冲频率计算:输入目标转速、电子齿轮比、编码器分辨率 → 输出所需脉冲频率(Hz) 位移↔脉冲换算:输入位移量 → 输出所需脉冲数;反之亦然 加减速时间计算:输入初速度、目标速度、加速度 → 输出加减速所需时间和脉冲数 典型应用:新装伺服系统时,先算电子齿轮比确保定位精度,再算脉冲频率确认PLC输出能力是否满足,最后算加减速时间避免丢步。 七、信号模拟计算器 信号模拟计算器解决的是模拟量信号转换问题——将物理量(温度、压力、流量)与标准电信号(4-20mA、0-10V、0-5V)相互转换。 正向转换:物理量 → 电信号(如 0-100°C → 4-20mA) 反向转换:电信号 → 物理量(如 12mA → 50°C) 自定义量程:支持任意物理量范围和信号范围的线性映射 参考表:常用传感器的标准信号范围(热电偶、热电阻、压力变送器等) 八、总结 6款PLC与自动化调试工具,让工控工程师在手机端就能完成从I/O点检查、梯形图编辑仿真、PID参数整定、变频器调试到伺服脉冲计算的全流程工作。 打开微信搜索 「modbus调试助手」,无需安装,即开即用。 推荐阅读:什么是 Modbus? | 为什么 Modbus 如此受欢迎?🎯 本文所述全部工具均在微信小程序中免费使用 打开微信 → 点击顶部搜索 → 输入 「modbus调试助手」 → 进入小程序。 无需下载APP、无需注册登录、无需电脑——70+ 款工控调试工具,掏出手机就能用。 无论你是在工程现场、出差途中、还是在家学习,modbus调试助手都是你随身的工业自动化调试工作站。 --- ### 353. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、传感仪表调试的移动化需求 在智能楼宇、工业自动化和能源管理项目中,传感器和仪表的数量往往远超控制器和驱动器。一个中型楼宇可能有上百个温度传感器、数十个电表、几十个占位传感器——这些设备的安装调试和故障排查占据了工程师大量时间。 传统调试方式需要携带专用调试器(如电表调试需要红外掌机、传感器调试需要HART手操器),设备昂贵且种类繁多。「modbus调试助手」将传感器和仪表的调试功能整合进手机微信小程序。 二、电表调试助手 — Modbus RTU 电表专用 2.1 支持的测量参数 参数类别具体参数数据类型 电压A/B/C相电压、线电压FLOAT32 电流A/B/C相电流、零线电流FLOAT32 功率有功/无功/视在功率、总功率FLOAT32 电能正向/反向有功电能、无功电能FLOAT32 功率因数总功率因数、A/B/C相功率因数FLOAT32 频率电网频率FLOAT32 2.2 使用流程 通过RS485转TTL模块(或蓝牙串口模块)连接电表 配置通信参数:波特率9600(电表默认)、8位数据、无校验、1位停止 输入电表从站地址(通常默认01,可在电表面板或参数中修改) 点击「读取全部参数」一键获取所有电力参数 也可单独读取某一类参数(如只读电压、只读功率) 工具预置了常用电表品牌的寄存器地址表:安科瑞、斯菲尔、雅达、正泰、德力西等,省去了翻手册查寄存器地址的步骤。 三、DL/T645 电表调试 — 国网标准电表专用 DL/T645-2007 是中国电力行业标准《多功能电能表通信协议》,是中国国家电网和南方电网智能电表的强制通信标准。 3.1 DL/T645 协议特点 通信地址:6字节BCD码,通常为电表表号(如000012345678) 帧格式:起始符(68H)+地址域(6B)+起始符(68H)+控制码(1B)+数据长度(1B)+数据标识(4B)+数据域+校验和(1B)+结束符(16H) 波特率:默认为2400bps(早期电表)或9600bps(新型电表) 数据标识:4字节DI(Data Identifier),如00010000=正向有功总电能、02010100=A相电压 3.2 核心功能 DL/T645调试工具支持:地址探测(广播方式发送读通信地址命令,获取电表表号)、全参数读取(一键读取所有常用DI——电压/电流/功率/电能/功率因数/需量/冻结数据)、参数配置(修改电表通信地址、波特率、CT变比等参数)、数据解析(正确解析645协议特有的BCD码、正负数处理、小数点处理)。 3.3 DI 速查表 工具内置了DL/T645-2007标准的完整DI速查表,按类型分为:电能量类(0000xxxx)、变量类(0201xxxx-0203xxxx)、事件记录类(0300xxxx)、参变量类(0400xxxx)、冻结数据类。点击即可自动填充DI值。 四、传感器标定计算器 传感器标定(Calibration)是确保测量精度的关键步骤。这款工具提供了线性传感器标定的完整计算功能: 两点标定法:输入两个已知物理量值和对应的传感器输出值(如已知温度A=0°C时传感器输出4mA,温度B=100°C时输出20mA),自动计算斜率(Slope)和截距(Offset),输出标定方程 y = Slope × x + Offset 多点标定法:输入3-10个标定点,自动进行线性回归计算(最小二乘法),输出回归方程和R²拟合优度,评估传感器的线性度 标定验证:输入标定后的斜率和截距,再输入传感器原始值,输出标定后的物理量,与标准值对比误差 典型应用:一支4-20mA输出的压力变送器,标称量程0-1.6MPa,但实际测试发现4mA时显示-0.02MPa、20mA时显示1.63MPa。用两点标定法计算修正斜率和截距,使测量值回归准确。 五、人体占位传感器调试工具 占位传感器(Occupancy Sensor)是智能照明和楼宇节能的核心设备。这款工具专为调试和验证占位传感器设计: 灵敏度调节:通过Modbus读写传感器的PIR灵敏度参数(0-100%范围) 延时设置:配置传感器在检测区域无人后保持输出ON的时间(Hold Time)——从5秒到30分钟 光照阈值:设置环境光照度阈值(Lux值),低于阈值时即使检测到人也保持输出OFF(白天自然光充足时不触发) 实时状态监控:同时显示PIR检测状态(有人/无人)、当前光照度、输出继电器状态、上次触发时间 检测范围验证:在检测范围内走动,观察传感器的PIR状态变化延迟和保持时间,验证安装位置和角度是否合理 六、传感器调试助手(通用) 这是一款通用的传感器数据读取和分析工具,不限定传感器类型,通过Modbus RTU/TCP读取任意传感器数据: 自定义寄存器映射:添加任意数量的寄存器配置项(名称、地址、数据类型、量程范围、单位),保存为模板 多传感器同时监控:在一个界面上同时显示多个传感器的实时数值——温度/湿度/压力/流量/液位一起看 趋势图表:绘制传感器数据随时间变化的折线图,直观观察波动和趋势 阈值报警:为每个传感器设置上下限,超出范围时高亮显示并记录报警日志 七、压力变送器计算器 压力变送器是过程控制中使用最多的仪表之一。这款计算器覆盖了压力领域的常用计算: 量程转换:4-20mA ↔ 压力值(MPa/kPa/bar/psi/kgf/cm² 多单位) 液位高度↔压力:输入液体密度和高度 → 计算底部压力;或者输入底部压力 → 反算液位高度 差压流量:根据差压变送器的读数和孔板/文丘里管的流量系数,计算流量 静压修正:在测量容器底部压力推算液位时,修正上方气体静压的影响 八、总结 从电表到传感器、从电力计量到环境感知、从DL/T645国网标准到Modbus通用协议——这7款工具让工程师在手机端就能完成传感仪表的调试和标定工作。 打开微信搜索 「modbus调试助手」,全部工具免费使用。 推荐阅读:Modbus通讯错误常用检测方式 | Modbus和RS485的关系是什么?🎯 本文所述全部工具均在微信小程序中免费使用 打开微信 → 点击顶部搜索 → 输入 「modbus调试助手」 → 进入小程序。 无需下载APP、无需注册登录、无需电脑——70+ 款工控调试工具,掏出手机就能用。 无论你是在工程现场、出差途中、还是在家学习,modbus调试助手都是你随身的工业自动化调试工作站。 --- ### 354. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、HVAC调试的复杂性 暖通空调(HVAC)系统是楼宇自动化中最复杂的子系统之一。一台空调机组涉及压缩机、冷凝器、蒸发器、膨胀阀、风机、传感器等数十个组件,通过复杂的控制算法协同工作。 当空调系统出现故障时,工程师需要读取运行参数、分析故障代码、验证控制逻辑。「modbus调试助手」的HVAC工具箱提供了5款专用工具。 二、空调调试助手 — 全品牌协议调试 这是工具箱中最核心的HVAC调试工具,支持多种空调品牌和通信协议。 2.1 多品牌/多协议支持 品牌协议类型典型端口 大金DIII-NET / Modbus网关Modbus TCP 502 日立H-LINK / Modbus网关Modbus TCP 502 美的M-Bus / Modbus RTURS485 9600bps 格力CAN / Modbus网关Modbus TCP 502 Modbus通用Modbus RTU/TCP标准Modbus端口 2.2 功能模块 工具包含8个功能选项卡: 控制面板:开关机、模式(制冷/制热/送风/除湿)、设定温度、风速(低/中/高/自动)、风向(上下/左右摆风) 状态监控:室内温度、室外温度、压缩机频率、电子膨胀阀开度、风机转速、运行电流、排气温度、回气温度、冷凝温度、蒸发温度 定时/睡眠:定时开关机(精确到分钟)、睡眠曲线(逐渐升温/降温)、节能模式切换 设备发现:扫描网络中的空调室内机,显示每台机的地址和状态 协议调试:原始报文发送/接收窗口,用于分析和测试空调通信协议 批量控制:同时对多台空调执行相同操作(如全楼统一设温26°C) 能耗分析:记录每台空调的运行时间和耗电量,生成日/周/月能耗报表 日志:完整的操作日志和故障日志,支持导出 三、红外空调调试工具 针对红外遥控型空调的调试工具。通过手机红外发射器(或外接红外模块)发送空调遥控码: 红外码库:内置主流品牌空调的红外码库(格力/美的/海尔/奥克斯/大金/三菱等),无需学习即可遥控 码库学习:对着手机红外接收器按原装遥控器,自动解析并存储红外码 码库分享:将学习到的红外码导出分享给其他人使用 自动化控制:结合温度传感器,实现自动温控(高于28°C开制冷,低于18°C开制热) 四、中央空调网关调试工具 中央空调网关(如大金DTA116A61等)是连接空调系统和楼宇自控系统的关键设备。网关调试工具提供: 网关连接状态:检查网关与空调系统的通信状态 室内机列表:通过网关获取所有在线室内机的地址和状态 集中控制:通过网关对所有室内机进行集中控制(设定温度上下限、强制运行模式等) 故障读取:读取网关中存储的空调系统故障代码并解析为中文描述 日程管理:在网关中配置定时开关机日程,网关本地执行 五、风管机空调调试工具 风管机(Ductless Mini-Split)是家用/商用最常见的空调类型。调试工具功能:室内温度/设定温度/运行模式/风速控制/定时开关/故障代码读取和解析。 六、中央空调系统调试(智能家居) 智能家居场景中的中央空调调试工具:支持通过Modbus RTU/TCP连接空调网关(如海林/霍尼韦尔/西门子等楼控品牌),实现对中央空调系统的全面监控和调试。 七、总结 5款HVAC调试工具覆盖了从小型分体空调到大型中央空调系统的全品类调试需求。无论是现场维修还是楼宇管理系统集成,都能在手机端完成空调系统的参数诊断和控制。 打开微信搜索 「modbus调试助手」,暖通工程师的掌上调试利器。 推荐阅读:为什么 Modbus 如此受欢迎?🎯 本文所述全部工具均在微信小程序中免费使用 打开微信 → 点击顶部搜索 → 输入 「modbus调试助手」 → 进入小程序。 无需下载APP、无需注册登录、无需电脑——70+ 款工控调试工具,掏出手机就能用。 无论你是在工程现场、出差途中、还是在家学习,modbus调试助手都是你随身的工业自动化调试工作站。 --- ### 355. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、音视频与安防系统的协议孤岛 会议系统、视频监控、智能家居影音是自动化行业中协议最多样化的领域。VISCA控制摄像机、PELCO-D/P控制云台、ONVIF管理摄像头、串口协议控制投影机和功放——每种设备都有自己的"方言"。 「modbus调试助手」提供了5款音视频和安防调试工具,把多种协议整合在同一平台。 二、VISCA会议摄像机调试 VISCA(Video System Control Architecture)是索尼开发的摄像机控制协议,广泛用于视频会议摄像机(如索尼EVI/BRC系列、华为VPC系列、海康威视会议摄像机等)。 2.1 VISCA协议基础 VISCA运行在RS-232/RS-422串口上(波特率9600,8N1),报文格式:0x8X QQ RR ... 0xFF,其中X=摄像机地址、QQ=命令类别、RR=命令参数、FF=结束符。 常用命令类别: 0x01:Pan-Tilt(水平/垂直转动)—— Pan速度+方向(左/右/停)、Tilt速度+方向(上/下/停) 0x04:Zoom(变焦)—— Tele(放大)/Wide(缩小)/Stop 0x01 0x04:Focus(对焦)—— Far/Near/Auto Focus 0x06 0x01:预置位(Preset)—— Set/Call 0-89号预置位 0x09 0x06:曝光/白平衡等图像参数 2.2 工具功能 方向控制面板:触摸十字方向键控制PTZ,Speed可调(1-24级共18级速度) 变焦推拉:Tele/Wide滑条或按钮控制 预置位管理:一键存储/调用0-89号预置位,常用预置位收藏到快捷栏 高级参数:背光补偿、白平衡模式、曝光补偿、增益、快门速度 多摄像机选择:在VISCA菊花链中切换控制不同地址的摄像机 原始命令发送:手动输入十六进制VISCA命令,用于测试非标准扩展命令 三、PTZ云台调试工具 PTZ(Pan-Tilt-Zoom)云台是安防和广播领域的常见设备。与VISCA不同,PTZ云台多采用PELCO-D/PELCO-P等工业协议,通过RS-485总线控制。 3.1 PELCO-D协议 帧格式:0xFF 地址 命令1 命令2 数据1 数据2 校验和(7字节) 波特率:2400/4800/9600bps,地址1-255,校验和=命令1+命令2+数据1+数据2的低8位。 支持的命令:上/下/左/右/左上/左下/右上/右下/停止、变倍+/变倍-/停止、聚焦+/聚焦-/停止、光圈+/光圈-/停止、设置预置位/调用预置位/清除预置位、自动扫描/帧扫描/巡航。 四、家庭影院调试助手 面向智能家居影音系统的集成调试工具,支持多种影音设备协议: 投影机控制:RS232串口控制EPSON/BenQ/Optoma等品牌投影机的开关机、输入源切换 AV功放控制:串口/IP控制Denon/Marantz/Yamaha/Pioneer等功放的开关机、音量、输入源、音效模式 时序电源管理:按顺序开关影音设备(防止功放开机冲击电流) 场景模式:观影模式/音乐模式/游戏模式/K歌模式——一键切换设备状态和参数 五、智能音箱调试助手 针对智能音箱/背景音乐主机的调试工具: DLNA投屏/推送:扫描网络中的DLNA渲染器(音箱),推送音频URL到指定音箱播放 AirPlay发现:扫描网络中的AirPlay设备 音量/均衡器控制:音量+/-、EQ预设(流行/摇滚/古典/爵士/自定义) 分区管理:多房间音乐分享,将不同音箱划分到不同播放区 闹钟/定时播放:设置定时音乐,如每天早上8:00自动播放轻音乐 六、安防监控调试助手 安防系统的核心调试工具: NVR/DVR连接:通过ONVIF或品牌私有协议连接网络录像机 摄像头参数配置:分辨率、帧率、码率、编码格式(H.264/H.265) 移动侦测配置:设置侦测区域、灵敏度、报警联动(抓图/录像/推送通知) 报警输入/输出:配置红外对射/门磁/紧急按钮等报警输入,联动灯光/警号等输出 视频遮挡/视频丢失检测:配置视频异常检测参数 七、总结 音视频和安防系统的协议多样性和设备异构性决定了调试工具的"多合一"价值极大。5款工具覆盖了摄像机控制、云台操控、家庭影院集成和安防监控的全场景。 打开微信搜索 「modbus调试助手」,音视频安防工程师的随身工具包。🎯 本文所述全部工具均在微信小程序中免费使用 打开微信 → 点击顶部搜索 → 输入 「modbus调试助手」 → 进入小程序。 无需下载APP、无需注册登录、无需电脑——70+ 款工控调试工具,掏出手机就能用。 无论你是在工程现场、出差途中、还是在家学习,modbus调试助手都是你随身的工业自动化调试工作站。 --- ### 356. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、智能家居系统的碎片化挑战 智能家居行业长期面临协议碎片化的困境:WiFi设备用HTTP/MQTT、Zigbee设备用私有网关、RS485设备用Modbus、KNX设备用总线——不同协议的设备无法统一管理和调试。 「modbus调试助手」的智能家居工具箱提供了一套以Modbus RTU/TCP为骨干、兼容多种智能家居设备的调试方案。 二、S001智能主机调试 S001智能主机是智能家居系统的核心控制器,相当于整套系统的大脑。主机调试工具提供: 系统状态总览:主机运行状态、在线设备数量、通信总线状态、存储使用率 总线扫描:扫描RS485总线上所有在线设备,列出设备类型和地址 程序下载/上传:通过WiFi或串口下载/上传主机的控制程序 在线监控:实时显示所有输入/输出点的状态变化 日志查看:查看主机的运行日志,用于故障追溯 固件升级:通过OTA升级主机固件 三、电动窗帘调试工具 电动窗帘是智能家居中使用频率最高的子系统之一。窗帘调试工具支持杜亚(DOOYA)等主流品牌的调试: 开关控制:打开/关闭/停止,支持百分比位置控制(如"窗帘开到60%") 行程设置:设置窗帘的全开和全关位置(行程学习) 速度调节:调节电机运行速度 方向设置:电机正反转设置(安装方向不同时需要调整) 场景联动:配置窗帘与光照传感器/定时器的联动(如日出自动开、日落自动关) 手拉启动:配置/测试手拉启动功能(手动轻拉窗帘→电机自动完成开/关) 四、地暖面板调试 地暖系统调试工具面向水地暖和电地暖两种类型: 温度设定:设定目标温度,支持分时段温度设定(如白天20°C、夜间18°C) 阀门控制:控制各回路分集水器的电热阀开关 循环泵控制:控制热水循环泵的启停和转速 防冻模式:冬季长期离家时自动保持最低温度防止管道冻裂 地板温度传感器:读取地板实际温度和设定温度,对比温差判断系统是否正常 能耗估算:根据水泵运行时间和功率,估算地暖系统耗电量 五、联动规则管理 智能家居的"智能"核心就是联动规则。联动规则管理工具提供了场景规则的创建、编辑和管理功能: 条件触发器:设备状态变化(开关ON/OFF)、传感器阈值(温度>28°C)、时间事件(日出/日落/定时)、场景触发 执行动作:开关设备、调光到指定亮度、设温到指定温度、发送通知、执行场景 条件组合:AND/OR逻辑,支持多条件同时满足时才触发 延时和有效期:触发后延时N秒执行、只在指定时间段有效 规则测试:模拟触发条件,验证联动规则是否正确执行 六、电动窗帘调试(通用版) 通用版窗帘调试工具,支持多种协议(Modbus RTU/TCP、RS485私有协议),不限品牌。 七、设备管理 设备管理工具提供了智能家居系统中所有设备的统一管理界面: 设备列表:按类型分组(照明/窗帘/空调/传感器/安防)展示所有设备 设备状态:在线/离线状态、信号强度(无线设备)、电池电量 设备配置:修改设备名称、所属房间、通信参数 快速搜索:按名称或地址快速定位设备 八、人体感应与红外空调调试 人体感应传感器(PIR)调试:灵敏度调节、延时设置、光照阈值、检测范围验证。 红外空调控制:红外码库管理、空调遥控模拟、温控自动化。 九、智能家居主页 智能家居工具集的主界面,提供:房间视图(客厅/卧室/厨房/卫生间分组)、快捷控制面板、当前状态摘要(温度/湿度/空气质量/能耗)。 十、总结 8款智能家居调试工具,覆盖了智能家居从核心控制器到终端设备、从单设备控制到场景联动的完整链路。打开微信搜索 「modbus调试助手」,智能家居工程师的移动调试站。🎯 本文所述全部工具均在微信小程序中免费使用 打开微信 → 点击顶部搜索 → 输入 「modbus调试助手」 → 进入小程序。 无需下载APP、无需注册登录、无需电脑——70+ 款工控调试工具,掏出手机就能用。 无论你是在工程现场、出差途中、还是在家学习,modbus调试助手都是你随身的工业自动化调试工作站。 --- ### 357. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、HMI设计与调试的革命 传统工业触摸屏(HMI,Human-Machine Interface)的开发流程是:PC端组态软件 → 编译 → 下载到触摸屏 → 现场测试 → 发现问题 → 回PC修改 → 重新下载。这个循环一趟少则半小时,多则半天,调试效率极低。 「modbus调试助手」做了一个大胆的突破——将完整的触摸屏编辑器搬到了手机微信小程序里。配合远程协助和能源管理系统,形成了一套"设计→调试→运维"的完整闭环工具链。 二、触摸屏编辑器核心功能 2.1 40+ 种工业控件 编辑器内置了工业触摸屏常用的全部控件类型: 类别控件典型用途 基本控件Button, Label, TextBox, Image, PictureBox界面基础元素 开关控件Switch, ToggleButton, SlideSwitch设备启停、模式切换 显示控件ProgressBar, SlideBar, Meter, RSlideBar模拟量显示、进度反馈 容器控件PageControl, Page, KeyboardPage多页面切换、键盘输入页 列表控件ListControl, ComboBox数据列表、下拉选择 图表控件Chart, TrendCurve, Gauge数据可视化、趋势分析 特殊控件QRCode, TimeSet, VideoBox, Animation二维码、时间设置、视频、动画 2.2 拖拽式画布设计 编辑器的核心理念是"所见即所得": 控件库面板:从左侧控件列表中拖拽控件到中央画布,放置即渲染 属性面板:选中控件后,右侧属性面板显示该控件的所有可配置属性——位置/尺寸/颜色/字体/边框/背景/透明等 对齐工具:多选控件后一键执行左对齐/右对齐/居中对齐/等间距分布 层级管理:置顶/置底/上移一层/下移一层,管理控件的Z轴顺序 撤销/重做:支持多步撤销,防止误操作 2.3 Modbus 变量绑定 每个控件都可以绑定到 Modbus 变量:选择控件→配置绑定→选择从站地址/功能码/寄存器地址/数据类型/字节序→控件显示值与寄存器值实时联动。支持变量引用连线功能——用彩色连线直观展示控件之间的数据依赖关系。 2.4 多窗口管理 一个工程可以包含多个窗口(页面),支持窗口管理面板:新建窗口/删除窗口/重命名窗口/窗口ID设置/启动窗口设定。每个窗口独立设计、独立绑定。 2.5 模板库与市场 内置模板库:多款常用触摸屏界面模板(空调控制/灯光控制/设备监控/数据报表),一键创建新工程 模板市场:浏览和下载社区用户分享的模板,支持匿名浏览和仿真预览 公共素材库:图片素材云端管理,分类存储,编辑时可跨项目调用 三、AI智能生成界面 这是工具箱的技术亮点——用自然语言描述需求,AI自动生成触摸屏界面。 比如输入:"做一个中央空调的控制界面,要有温度显示、设定温度的加减按钮、运行模式切换(制冷/制热/送风)、风速调节、定时开关功能"——AI会自动生成包含对应控件和布局的界面,并完成基础的Modbus变量绑定。 AI生成不是完全取代手动设计,而是快速建立原型,工程师在此基础上精调位置、样式和参数——大幅缩短从零到一的时间。 四、仿真预览与APK导出 在线仿真:编辑器内置仿真引擎——选择仿真模式后,可以模拟Modbus变量变化,观察界面控件的动态响应,验证变量绑定和事件逻辑是否正确 预览模式:全屏预览最终界面效果,检查在不同分辨率下的显示效果 APK导出:将工程导出为Android APK安装包,可直接安装到安卓触摸屏上运行 五、模板预览工具 独立于编辑器的轻量化预览页面——浏览模板库中的模板时,可直接进入预览模式查看该模板的界面和仿真效果,无需创建工程。适合快速筛选模板。 六、远程协助工具 远程协助工具解决了"现场出了问题,但专家不在现场"的痛点: 远程桌面:分享屏幕画面给对方,支持实时涂鸦标注(圈出问题区域、画箭头指示等) 远程调试:授权远程用户通过小程序连接客户的Modbus设备,直接发送调试指令——等于专家"远程操作"了客户现场的RS485总线 通信日志同步:远程调试过程中的所有通信记录自动保存,方便事后分析 安全机制:一次性授权码,过期失效;权限分离(仅查看/可操作/完全控制) 七、触摸屏辅助工具 触摸屏辅助工具是在物理触摸屏设备(如WPF触摸屏、Android触摸屏)上运行的辅助调试模块: 触摸校准:四点/九点触摸校准,修正触摸屏坐标偏移 屏幕测试:纯色测试(红/绿/蓝/白/黑)检测坏点、灰度渐变测试检测色彩还原、触摸划线测试检测触摸精度和响应 串口测试:在触摸屏设备上直接测试RS232/RS485串口的收发功能 网络测试:在触摸屏设备上测试以太网/WiFi连接状态 系统信息:查看触摸屏设备的系统参数(Android版本/分辨率/内存/存储等) 八、MyEMS能源管理系统调试 MyEMS是开源的建筑能源管理系统,广泛用于商业楼宇的能耗监测和优化。能源管理调试工具提供了: 能耗数据采集:通过Modbus RTU/TCP采集电表、水表、气表、热量表等计量设备的数据 分项计量:将能耗数据按照明/空调/动力/插座等进行分项归类 能效分析:单位面积能耗(EUI)、同比/环比分析、尖峰平谷分时分析 报警管理:能耗异常报警(如夜间非工作时间仍有大功率设备运行) 数据导出:导出为CSV/Excel格式,支持对接MyEMS平台或其他能源管理系统 九、总结 从HMI触摸屏界面设计到AI智能生成、从本地仿真到APK导出、从远程协助到能源管理——「modbus调试助手」不仅仅是一个调试工具集,它是一套完整的"设计→调试→部署→运维"工业自动化开发平台。 打开微信搜索 「modbus调试助手」,体验手机端的工业自动化全流程开发。 推荐阅读:为什么 Modbus 如此受欢迎? | 什么是 Modbus?🎯 本文所述全部工具均在微信小程序中免费使用 打开微信 → 点击顶部搜索 → 输入 「modbus调试助手」 → 进入小程序。 无需下载APP、无需注册登录、无需电脑——70+ 款工控调试工具,掏出手机就能用。 无论你是在工程现场、出差途中、还是在家学习,modbus调试助手都是你随身的工业自动化调试工作站。 --- ### 358. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 我用 3 个月,把 20 年的工业调试经验做成了微信小程序 从 Modbus 调试到 PID 整定,从串口通信到传感器标定,这款工具集成了工程师最常用的 20+ 专业计算器 前言:一个工程师的"执念" 我是一名工业自动化工程师,从业 20 年,待过设备厂商、集成商,也做过甲方。 这些年,我见过太多工程师在现场的"狼狈": 背着十几斤重的电脑跑现场,就为了调试一个 Modbus 设备 忘带 USB 转串口线,整个项目停工半天 电脑上的软件要收费,破解版还怕有病毒 PID 参数不会整,打电话问厂家,等半天回复 传感器标定靠手算,计算器按错一次,全部重来 最痛苦的一次,是某次深夜抢修。客户的 PLC 通信故障,我赶到时已经是晚上 10 点。结果发现忘带电脑,只能打电话让同事送,折腾到凌晨 3 点才搞定。 那一刻我就想:为什么不能只带手机就去现场? 于是,我花了整整 3 个月,利用业余时间开发了这款 Modbus 调试助手 微信小程序。 它不仅仅是一个调试工具,更是我 20 年经验的结晶。 一、核心功能:20+ 专业工具,装进手机 1.1 Modbus 调试全家桶 小程序最核心的功能,就是 完整的 Modbus 协议栈支持。 (1)Modbus Poll - 主站轮询工具 这是使用频率最高的功能,没有之一。 支持的功能码: 功能码名称用途FC01Read Coils读取线圈状态(开关量输出)FC02Read Discrete Inputs读取离散输入(开关量输入)FC03Read Holding Registers读取保持寄存器(最常用)FC04Read Input Registers读取输入寄存器(只读)FC05Write Single Coil写入单个线圈FC06Write Single Register写入单个寄存器FC15Write Multiple Coils写入多个线圈FC16Write Multiple Registers写入多个寄存器FC17Report Slave ID通报客户端 IDFC22Mask Write Register掩码写寄存器(改单个 bit)FC23Read/Write Multiple同时读/写多个寄存器FC43/14Read Device ID读取设备标识 连接方式: Modbus TCP:支持任意 IP 和端口,自动保存连接历史 蓝牙连接:支持普通蓝牙转 485 模块和 PACO 蓝牙适配器 端口转发:支持路由器端口映射(如外部 1502 → 内部 502) 数据显示格式: 同一个寄存器的原始数据,支持 7 种显示格式 一键切换: Signed(有符号) → -32768 ~ 32767 Unsigned(无符号) → 0 ~ 65535 Hex(十六进制) → 0x0000 ~ 0xFFFF Long(长整型) → 32 位整数 Float(浮点型) → IEEE 754 单精度 Float Swapped → 字节反转浮点 Binary(二进制) → 0000 0000 0000 0001 💡 实际案例:某温度传感器返回 0x4248 0x0000,如果按 16 位整数看是 17480 和 0,完全不对。切换到 Float 格式,显示 50.0,这才是实际温度值。 高级工具: 通讯监视面板:实时记录所有 Tx/Rx 原始报文,支持暂停/继续,一键分享 TC 测试中心:手动输入 Hex 字符串发送,查看原始响应,调试自定义协议 实时图表:输入要监控的寄存器地址,柱状图实时显示数值变化 请求报文预览:在设置界面实时显示即将发送的 RTU/ASCII 帧结构(含 CRC/LRC 校验) (2)Modbus Slave - 从站模拟器 这个功能很多人忽略,但其实非常实用。 使用场景: 测试上位机软件(如组态王、WinCC) 验证 PLC 程序逻辑 培训新员工(无需真实设备) 开发阶段模拟从站响应 支持功能: 模拟线圈、离散输入、保持寄存器、输入寄存器 自定义初始值 支持批量设置地址范围 实时显示主站请求报文 (3)Modbus RTU/TCP/ASCII - 协议详解 小程序对三种传输模式都有详细说明和实战示例。 RTU vs ASCII 对比: 特性RTUASCII编码方式二进制ASCII 文本校验方式CRC16LRC帧长度较短(高效)约为 RTU 2 倍帧标识3.5 字符静默间隔":" 开头 + CR LF 结尾适用场景大多数工业设备老旧设备/调制解调器 CRC16 算法实现(核心代码): // MODBUS CRC-16 (低字节在前) calcCRC16(bytes) { let crc = 0xFFFF; for (let i = 0; i < bytes.length; i++) { crc ^= bytes[i]; for (let j = 0; j < 8; j++) { if (crc & 0x0001) { crc = (crc >> 1) ^ 0xA001; } else { crc >>= 1; } } } const lo = crc & 0xFF; const hi = (crc >> 8) & 0xFF; return lo.toString(16).toUpperCase().padStart(2, '0') + ' ' + hi.toString(16).toUpperCase().padStart(2, '0'); } LRC 算法实现: // MODBUS ASCII LRC calcLRC(bytes) { let sum = 0; for (let i = 0; i < bytes.length; i++) { sum += bytes[i]; } const lrc = ((~sum) + 1) & 0xFF; return lrc.toString(16).toUpperCase().padStart(2, '0'); } 1.2 串口调试助手 这是第二个高频使用的功能。 核心特性: 三种连接方式:蓝牙 / TCP / UDP 全参数配置:波特率(9600/19200/38400/57600/115200)、数据位、停止位、校验位 收发区独立设置: 接收区:ASCII/HEX 切换、时间戳、自动换行、显示行号、自动滚动 发送区:ASCII/HEX 切换、自动解析转义符(\r\n \t)、循环发送 四种校验方式:CRC-16、累加和、LRC、异或校验 实时统计:RX/TX 字节数、一键复位 实战案例 1:蓝牙调试 PACO 设备 PACO 是一款常用的蓝牙 485 适配器,小程序对其做了深度优化。 // 构建 PACO 命令 (80 字节固定长度) buildPacoCommand(cmdType, param = '') { let cmd = ''; switch(cmdType) { case 'read485': cmd = 'PACO-Setting-Code-PACO-FXY-BT-485-R-485Setting.'; break; case 'write485': cmd = `PACO-Setting-Code-PACO-FXY-BT-485-W-485Setting:${param}.`; break; case 'readName': cmd = 'PACO-Setting-Code- -R-PartNumber.'; break; case 'writeName': cmd = `PACO-Setting-Code-PACO-FXY-BT-485-W-DeviceName:${param}.`; break; } // 补齐到 76 字符,末尾加 PACO const paddedCmd = cmd.padEnd(76, ' ') + 'PACO'; return paddedCmd; } 可以读写 PACO 设备的: 485 参数(波特率/数据位/停止位/校验位) 设备名称(最大 7 字符) 实战案例 2:TCP 端口限制问题 微信小程序对端口有严格限制,这是一个大坑。 // 微信小程序端口限制检查 const forbiddenPorts = [1099, 1433, 1521, 1719, 1720, 1723, 2049, 2375, 3128, 3306, 3389, 3659, 4045, 5060, 5061, 5432, 5984, 6379, 6000, 6566, 7001, 7002, 8443, 8888, 9200, 9300, 10051, 10080, 11211, 27017, 27018, 27019]; if (portNum < 1024) { // 禁止连接 1024 以下端口(如 502) uni.showModal({ title: '端口受限', content: '微信小程序禁止连接 1024 以下端口,请使用 APP 版本或更换端口', showCancel: false }); return; } if (portNum >= 8000 && portNum <= 8100) { // 禁止连接 8000-8100 端口 uni.showModal({ title: '端口受限', content: '微信小程序禁止连接 8000-8100 端口,请更换端口', showCancel: false }); return; } 解决方案:在路由器做端口转发,比如外部 1502 → 内部 502。 1.3 专业计算器系列 这部分是我花心思最多的,也是最能体现"经验价值"的地方。 (1)PID 自整定计算器 PID 参数整定是自动控制系统的核心,也是很多工程师的痛点。 支持的整定方法: 方法适用场景特点齐格勒 - 尼科尔斯第一法阶跃响应实验经典方法,适用面广齐格勒 - 尼科尔斯第二法临界振荡法需要找到临界增益Cohen-Coon大滞后系统对滞后系统效果好IMC(内模控制)高性能要求参数可调,灵活性高极点配置特定动态响应需要系统模型 输入参数: 延迟时间 L(秒) 时间常数 T(秒) 过程增益 K λ 参数(IMC 专用) 输出结果: 比例增益 Kp 积分时间 Ti 微分时间 Td 推荐配置(如控制器类型、控制变量选择) 核心算法(齐格勒 - 尼科尔斯第一法): // Ziegler-Nichols 第一法(阶跃响应法) zieglerNichols1st(L, T, K) { // Kp = 1.2 * T / (K * L) // Ti = 2 * L // Td = 0.5 * L const kp = 1.2 * T / (K * L); const ti = 2 * L; const td = 0.5 * L; return { kp, ti, td }; } 实战案例: 某温度控制系统,通过阶跃响应实验得到: 延迟时间 L = 2.5s 时间常数 T = 8.0s 过程增益 K = 1.0 代入公式计算: Kp = 1.2 × 8.0 / (1.0 × 2.5) = 3.84 Ti = 2 × 2.5 = 5.0s Td = 0.5 × 2.5 = 1.25s 将这三个参数输入 PID 控制器,系统响应快速且超调小。 (2)传感器标定计算器 传感器标定是现场调试的常规工作,但手算容易出错。 支持四种模式: ① 线性标定(最常用) 适用于 4-20mA、0-10V 等线性传感器。 标定公式:Y = kX + b 其中: k = (Y2 - Y1) / (X2 - X1) // 斜率 b = Y1 - k * X1 // 截距 快速换算表: 百分比信号值 (mA)工程值 (℃)0%4.000.0025%8.0025.0050%12.0050.0075%16.0075.00100%20.00100.00 ② 多点拟合 适用于非线性传感器(如热电偶、热电阻)。 支持: 二次曲线拟合 三次曲线拟合 最小二乘法 ③ 温度专用模式 内置常用温度传感器分度表: PT100 热电阻 K 型热电偶 J 型热电偶 E 型热电偶 T 型热电偶 ④ 误差分析 计算: 绝对误差 相对误差 满量程误差 线性度 实战案例: 某压力变送器,量程 0-10bar,输出 4-20mA。 标定点设置: 低点:4mA → 0bar 高点:20mA → 10bar 计算结果: k = (10 - 0) / (20 - 4) = 0.625 b = 0 - 0.625 × 4 = -2.5 标定公式:Y = 0.625X - 2.5 验证: 输入 12mA → Y = 0.625 × 12 - 2.5 = 5.0bar ✓ 输入 20mA → Y = 0.625 × 20 - 2.5 = 10.0bar ✓ (3)校验计算工具 这个工具集成了 10+ 种工业通信协议常用的校验算法。 支持功能: 校验类型说明适用场景MODBUS RTU CRC-1616 位循环冗余校验Modbus RTU 协议MODBUS ASCII LRC纵向冗余校验Modbus ASCII 协议校验和(16 位)累加和取低 16 位简单协议异或校验(8 位)所有字节异或自定义协议西门子 S7 校验和S7 通信协议专用西门子 PLC三菱 FX 求和校验三菱通信协议三菱 PLCBCC 校验块校验字符串口通信IP/TCP 校验和网络协议校验TCP/IP 栈欧姆龙 FINS FCSFINS 协议校验欧姆龙 PLCCAN CRCCAN 总线校验汽车电子 使用方法: 选择校验类型 输入原始 HEX 数据 自动计算校验码 (可选)附加校验码后发送 实战案例:Modbus RTU 命令 原始数据:01 03 00 00 00 01 计算 CRC-16: 输入 6 字节 计算得 CRC = 0x840A 低字节在前:84 0A 完整报文:01 03 00 00 00 01 84 0A 1.4 其他专业工具 小程序还有 15+ 专业工具,这里简单列举: (1)PLC 调试工具 Q06 开关调试助手:专门针对 Q06 系列开关的调试工具 X160 调试工具:X160 设备专用调试 ZLAN 设备管理器:有人物联网 ZLAN 系列设备管理 (2)执行器调试 调光调试助手:0-10V/PWM 调光器调试 8 路继电器控制:多路继电器批量控制 伺服脉冲计算:伺服电机脉冲当量计算 (3)变频器调试 变频器调试工具:支持主流变频器参数设置 (4)其他计算器 压力变送器调试:差压/压力变送器计算 远程协助工具:实时共享调试画面 二、技术架构:小程序也能做专业工具 2.1 技术选型 前端框架: uni-app 选择理由: 一套代码编译到微信小程序、H5、APP 丰富的组件库 良好的蓝牙/TCP/UDP API 支持 UI 框架: colorUI + 自定义组件 数据存储: 本地存储:uni.setStorageSync 连接历史记录 项目配置保存 2.2 核心技术难点 (1)蓝牙 BLE 连接 微信小程序的蓝牙 API 有一些限制,需要特殊处理。 难点 1:服务特征值查找 不同蓝牙模块的 Service UUID 和 Characteristic UUID 不同,需要智能查找。 // 遍历所有服务查找可写特征 findWritableCharacteristic() { if (this.currentServiceIndex >= this.allServices.length) { // 所有服务都遍历完了 if (this.foundWriteChar) { this.finishBluetoothConnection(); } else { uni.showToast({ title: '未找到可写特征', icon: 'none' }); } return; } const service = this.allServices[this.currentServiceIndex]; uni.getBLEDeviceCharacteristics({ deviceId: this.connectedDeviceId, serviceId: service.uuid, success: (res) => { const characteristics = res.characteristics; // 查找策略: // 1. 优先找同时支持 write 和 notify 的特征(双向通信) // 2. 其次找只支持 write 的特征 // 3. 最后找支持 writeNoResponse 的特征 let writeChar = characteristics.find(c => c.properties.write === true && (c.properties.notify === true || c.properties.indicate === true) ); if (!writeChar) { writeChar = characteristics.find(c => c.properties.write === true); } if (!writeChar) { writeChar = characteristics.find(c => c.properties.writeNoResponse === true); } if (writeChar) { this.writeCharacteristicId = writeChar.uuid; this.foundWriteChar = true; this.finishBluetoothConnection(); return; } // 当前服务未找到,继续下一个 this.currentServiceIndex++; this.findWritableCharacteristic(); } }); } 难点 2:PACO 设备 80 字节单包发送 PACO 设备需要一次发送 80 字节,但 BLE 默认 MTU 只有 20 字节。 解决方案: // 设置 BLE MTU(最大传输单元) setBLEMTU(deviceId, callback) { if (wx.setBLEMTU) { wx.setBLEMTU({ deviceId: deviceId, mtu: 512, // 设置为 512 字节 success: (res) => { console.log('MTU 设置成功'); callback && callback(); }, fail: (err) => { console.error('MTU 设置失败', err); callback && callback(); } }); } else { callback && callback(); } } (2)TCP Socket 通信 微信小程序的 TCP Socket API 是异步的,需要处理连接超时、数据分包、粘包等问题。 连接超时处理: const connTimeout = setTimeout(() => { if (!self.isConnected) { uni.hideLoading(); uni.showToast({ title: '连接超时', icon: 'none' }); try { tcp.close(); } catch(e) {} self.tcpSocket = null; } }, 8000); // 8 秒超时 tcp.onConnect(function(res) { clearTimeout(connTimeout); self.isConnected = true; // ... }); 数据分包处理: handleTcpResponse(hexData) { const hex = hexData.replace(/\s+/g, ''); // 将接收到的数据添加到缓冲区 for (let i = 0; i < hex.length; i += 2) { this.receiveBuffer.push(parseInt(hex.substr(i, 2), 16)); } // 使用 MBAP 头的 Length 字段判断帧完整性 while (this.receiveBuffer.length >= 7) { const mbapLength = (this.receiveBuffer[4] << 8) | this.receiveBuffer[5]; const totalFrameLength = 6 + mbapLength; if (this.receiveBuffer.length >= totalFrameLength) { // 提取完整的一帧 const frame = this.receiveBuffer.splice(0, totalFrameLength); this.parseModbusTcpResponse(frame); } else { // 数据不完整,等待更多数据 break; } } } (3)大数据处理 串口调试时,如果长时间运行,会产生大量数据。 优化策略: // 消息缓冲区管理 maxMessageCount: 800, // 最多保存 800 条 maxVisibleMessageChars: 240, // 每条最多显示 240 字符 trimMessageBuffer() { const maxTotalChars = this.maxMessageCount * this.maxVisibleMessageChars * 2; while (this.messages.length > this.maxMessageCount || this.totalMessageChars > maxTotalChars) { const removed = this.messages.shift(); if (removed && removed.data) { this.totalMessageChars -= removed.data.length; } } } // 超长消息自动截断,支持展开/收起 isMessageTruncated(msg) { return !!(msg && msg.data && msg.data.length > this.maxVisibleMessageChars); } getDisplayMessage(msg) { if (!msg || !msg.data) return ''; if (msg.expanded || !this.isMessageTruncated(msg)) { return msg.data; } return msg.data.slice(0, this.maxVisibleMessageChars) + '…'; } 三、设计理念:工程师懂工程师 3.1 Win7 风格界面 很多人问为什么用 Win7 风格? 因为 熟悉。 大多数工业工程师天天对着电脑,Win7 的界面是最熟悉的。看到这种风格,就有"专业工具"的感觉。 设计细节: 渐变蓝色标题栏 立体边框(外浅内深) 灰色背景 + 白色内容区 等宽字体显示数据(Courier New) 3.2 远程协助功能 这个功能是我在现场调试时想到的。 场景:现场设备故障,我搞不定,需要同事远程协助。但传统方式只能电话描述,效率极低。 解决方案: // 生成协助会话码 startRemoteAssist() { const sessionId = generateRandomSessionId(); this.remoteAssistSessionId = sessionId; this.remoteAssistShowPanel = true; // 实时转发通信数据 this.remoteAssistForward('tx', 'Tx', data); this.remoteAssistForward('rx', 'Rx', data); // 接收远程命令 this._executeRemoteCommand(cmd); } 使用流程: 点击"远程协助" 生成 6 位会话码 分享给微信好友 对方打开后,实时查看通信数据 对方可以远程发送命令 价值: 无需截图/录屏 实时双向通信 支持多人协作 3.3 数据导出分享 现场调试完,经常需要把数据发给同事或存档。 导出格式: 【串口调试 - 通信记录】 导出时间:2026-04-05 11:00:00 共 50 条记录 发送:1200 字节,接收:800 字节 ======================================== [11:00:00.123] 发送:01 03 00 00 00 01 84 0A [11:00:00.456] 接收:01 03 02 00 0A B9 C8 [11:00:01.123] 发送:01 03 00 00 00 0A C5 CD ... ======================================== 来自:Modbus 调试助手 微信小程序 实现方式: buildExportLogContent(options = {}) { let content = `${options.title || '【串口调试 - 通信记录】'}\n`; content += `导出时间:${new Date().toLocaleString()}\n`; content += `共 ${this.messages.length} 条记录\n`; content += `发送:${this.sentCount} 字节,接收:${this.receivedCount} 字节\n`; content += `${'='.repeat(40)}\n\n`; this.messages.forEach((msg) => { const direction = msg.type === 'sent' ? '发送' : '接收'; content += `[${msg.time}] ${direction}: ${msg.data}\n`; }); content += `\n${'='.repeat(40)}\n`; content += `来自:Modbus 调试助手 微信小程序`; return content; } 四、用户反馈:真实的声音 上线 2 个月,已经有 5000+ 工程师在使用。 反馈 1: "太方便了!以后出差只带手机就够了。昨天去现场,客户都惊讶我怎么只带个手机就搞定了。"—— 江苏,自动化工程师,王工 反馈 2: "PID 整定计算器帮了大忙。以前整定参数要试半天,现在输入 L/T/K,直接出结果。"—— 广东,控制工程师,李工 反馈 3: "远程协助功能太强了。现场遇到问题,直接分享给同事,5 分钟搞定,以前至少要半小时电话沟通。"—— 浙江,技术支持,张工 反馈 4: "传感器标定计算器很实用。我们厂有几百个传感器,以前标定要手算,现在输入两个点,自动出公式。"—— 山东,仪表工程师,刘工 五、未来规划 5.1 短期计划(1-3 个月) 增加 OPC UA 客户端 支持 MQTT 协议调试 增加 BACnet 协议支持 云端项目同步(VIP 功能) 5.2 中期计划(3-6 个月) APP 版本(突破微信小程序端口限制) 支持脚本功能(Lua/JavaScript) 增加图表分析功能(趋势图、频谱分析) 设备数据库(常见设备参数模板) 5.3 长期愿景 做一个工业工程师的"百宝箱"。 只要是现场调试能用到的工具,都集成到这个小程序里。 让工程师: 少背点东西,轻装上阵 少加点班,早点回家 少一些烦恼,多一些效率 六、写在最后 做这个小程序的初衷,不是为了赚钱。 只是想解决自己的痛点,顺便帮到更多同行。 20 年的经验告诉我:工具的价值,不在于功能多花哨,而在于真正解决问题。 每一个功能,都是我现场调试时真实遇到过的痛点。 每一行代码,都凝聚着我对这个行业的热爱。 如果你也是工业工程师,希望这个小程序能帮到你。 如果你有任何建议,欢迎反馈。 让我们一起,让工业调试变得更简单。 附录:使用方式 方式 1:微信扫码 方式 2:微信搜索 搜索"Modbus 调试助手" 方式 3:朋友分享 点击朋友分享的卡片直接进入 关于作者 20 年工业自动化经验,待过设备厂商、集成商、甲方。 现专注于工业物联网、边缘计算、智能控制。 欢迎交流: 📧 邮箱:support@modbus.cn 💬 微信群:扫码添加助手入群 参考资料 [1] Modbus Application Protocol Specification V1.1b3[2] 齐格勒 - 尼科尔斯 PID 整定方法[3] 微信小程序蓝牙开发文档[4] IEEE 754 浮点数标准[5] CRC16 算法原理与实现 --- ### 359. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus调试工具完全指南:从入门到精通的实用工具集 引言 在Modbus系统开发、集成和维护过程中,调试工具是确保通信稳定性和系统可靠性的关键。本文基于Modbus官方资源页面,全面介绍20多个专业调试工具,涵盖协议分析、设备测试、性能监控和故障排查等各个方面。无论您是现场工程师、系统集成商还是开发人员,这些工具都将大幅提升您的工作效率。 📊 调试工具分类 1. 协议分析与监控工具 2. 设备测试与模拟工具 3. 命令行实用工具 4. 可视化调试工具 5. 性能分析与优化工具 🔍 协议分析与监控工具 1. Wireshark - 网络协议分析之王 项目地址: http://www.wireshark.org/ 核心功能特性 深度报文解析: 完整的Modbus TCP/RTU解码 实时流量监控: 捕获和分析网络通信 过滤与搜索: 强大的显示过滤系统 统计与分析: 通信质量分析和报告 Modbus专用配置 1. 捕获过滤器设置 # 仅捕获Modbus TCP流量 tcp port 502 # 捕获特定设备的通信 host 192.168.1.100 and tcp port 502 # 排除广播流量 not broadcast and not multicast 2. 显示过滤器规则 # 基本过滤 modbus # 所有Modbus流量 modbus.func_code == 0x03 # 仅读取保持寄存器 modbus.func_code == 0x10 # 仅写入多个寄存器 # 高级过滤 modbus.unit_id == 1 # 特定从站设备 modbus.trans_id == 1234 # 特定事务ID tcp.analysis.flags # TCP分析标志 3. 着色规则配置 # 成功响应 - 绿色 modbus && tcp.flags.ack == 1 # 错误响应 - 红色 modbus.excep_code != 0x00 # 超时重传 - 黄色 tcp.analysis.retransmission 实战案例分析 案例1: 通信超时问题排查 1. 过滤规则: tcp.analysis.flags && !tcp.analysis.ack_rtt 2. 分析步骤: - 检查SYN-ACK往返时间 - 识别重传报文 - 分析网络延迟原因 3. 解决方案: - 调整TCP超时参数 - 优化网络拓扑 - 增加心跳机制 案例2: 数据一致性验证 1. 过滤规则: modbus.func_code == 0x03 || modbus.func_code == 0x10 2. 验证方法: - 对比请求和响应数据 - 检查寄存器地址连续性 - 验证数据字节顺序 3. 常见问题: - 字节序错误 (Big-endian vs Little-endian) - 地址偏移计算错误 - 数据类型转换问题 2. CAS Modbus工具集 项目地址: https://store.chipkin.com/products/tools 2.1 Modbus RTU Parser 功能特点: - 十六进制报文实时解析 - 支持所有标准功能码 - 错误检测和诊断 - 数据格式转换 使用示例: 原始报文: 01 03 00 00 00 0A C5 CD 解析结果: ├── 设备地址: 01 ├── 功能码: 03 (读取保持寄存器) ├── 起始地址: 0x0000 ├── 寄存器数量: 10 └── CRC校验: 0xC5CD (正确) 2.2 Modbus TCP Parser 高级特性: - TCP会话重组 - 事务ID跟踪 - 协议版本识别 - 性能统计 2.3 Modbus Scanner 扫描功能: # 设备发现扫描 modbus-scanner -t tcp -a 1-247 -r 1-100 192.168.1.0/24 # 功能码支持检测 modbus-scanner -t rtu -p /dev/ttyUSB0 -b 9600 -f all # 寄存器映射扫描 modbus-scanner -m mapping -s 0 -e 65535 -d 1 🧪 设备测试与模拟工具 3. Modbus Poll - Windows专业调试工具 项目地址: http://www.modbustools.com/ 主要功能模块 1. 多设备监控界面 [设备1] 温度传感器 - 192.168.1.101:502 ├── 寄存器 40001: 25.3°C (实时更新) ├── 寄存器 40002: 60.2% RH └── 线圈 00001: ON [设备2] PLC控制器 - 192.168.1.102:502 ├── 寄存器 40010: 1200 RPM ├── 寄存器 40011: 3.2 MPa └── 离散输入 10001: TRIGGERED 2. 数据记录与导出 # 自动导出配置 { "export": { "format": "csv", "interval": 1000, "fields": [ "timestamp", "device_id", "register_address", "value", "quality" ], "destination": "C:/logs/modbus_data_%Y%m%d.csv" } } 3. 自动化测试脚本 // Modbus Poll脚本示例 function testSequence() { // 1. 初始化连接 connect("192.168.1.100", 502); // 2. 基本功能测试 testReadCoils(0, 16, "线圈读取测试"); testReadRegisters(40001, 10, "寄存器读取测试"); // 3. 写入测试 testWriteCoil(0, true, "线圈写入测试"); testWriteRegister(40001, 1234, "寄存器写入测试"); // 4. 边界测试 testBoundaryConditions(); // 5. 性能测试 testPerformance(1000, "1000次请求性能测试"); // 生成测试报告 generateReport("test_report.html"); } 高级调试功能 1. 断点调试 设置断点条件: - 特定寄存器值变化 - 错误响应发生 - 通信超时 - 数据越界 2. 变量监视 监视列表配置: $temp = [40001] // 温度寄存器 $speed = [40010] // 转速寄存器 $status = [00001] // 状态线圈 触发条件: IF $temp > 100 THEN ALERT("温度过高!") IF $speed < 500 THEN LOG("转速过低") 4. ModbusPal - Java模拟器 项目地址: http://modbuspal.sourceforge.net/ 动态数据模拟 1. 数学函数生成器 # 温度波动模拟 def temperature_simulation(cycle): import math base_temp = 25.0 daily_variation = 8.0 * math.sin(2 * math.pi * cycle / 86400) random_noise = random.uniform(-0.5, 0.5) return base_temp + daily_variation + random_noise # 压力趋势模拟 def pressure_trend(cycle): start_pressure = 100.0 trend = 0.01 * (cycle / 3600) # 每小时上升0.01 fluctuation = 0.5 * math.sin(2 * math.pi * cycle / 600) return start_pressure + trend + fluctuation 2. 设备行为模拟 class PumpSimulator: def __init__(self): self.running = False self.speed = 0 self.pressure = 0 def update(self, cycle): if self.running: # 运行状态模拟 self.speed = 1500 + 100 * math.sin(cycle / 10) self.pressure = 3.2 + 0.1 * math.sin(cycle / 5) else: # 停止状态 self.speed = 0 self.pressure = 0 return { 'coils': {'running': self.running}, 'registers': { 'speed': int(self.speed), 'pressure': int(self.pressure * 100) } } 测试场景配置 1. 故障注入测试 <test-scenario name="通信故障测试"> <phase duration="30s" mode="normal" /> <phase duration="10s" mode="timeout" error-rate="100%" /> <phase duration="20s" mode="partial" error-rate="50%" /> <phase duration="30s" mode="normal" /> </test-scenario> 2. 负载压力测试 load-test: clients: 50 requests-per-second: 100 duration: 300s ramp-up: 30s metrics: - response-time - throughput - error-rate - cpu-usage - memory-usage 5. 更新版Free Modbus Simulator 项目地址: https://sourceforge.net/projects/modrssim2/ 特色功能 1. 完整地址空间支持 支持所有Modbus地址类型: - 0xxxx: 线圈 (000001-065536) - 1xxxx: 离散输入 (100001-165536) - 3xxxx: 输入寄存器 (300001-365536) - 4xxxx: 保持寄存器 (400001-465536) 2. CSV数据导入导出 # 寄存器配置示例 address,type,value,description,min,max,unit 40001,float,25.3,温度传感器,0,100,°C 40003,int32,1200,电机转速,0,3000,RPM 40005,uint16,60,湿度百分比,0,100,% 40007,bool,1,设备状态,0,1,ON/OFF 3. 脚本测试环境 -- Lua测试脚本示例 function test_sequence() -- 初始化测试 print("开始Modbus设备测试...") -- 测试1: 基本通信 local result1 = test_communication() assert(result1, "基本通信测试失败") -- 测试2: 数据读写 local result2 = test_data_access() assert(result2, "数据访问测试失败") -- 测试3: 边界条件 local result3 = test_boundary_conditions() assert(result3, "边界条件测试失败") -- 测试4: 性能测试 local result4 = test_performance() assert(result4, "性能测试失败") print("所有测试通过!") return true end ⌨️ 命令行实用工具 6. Modpoll - 多功能命令行工具 项目地址: http://www.focus-sw.com/fieldtalk/modpoll.html 完整命令参考 基本语法: modpoll [选项] <主机名或IP地址> 常用选项组合: 1. 设备发现与扫描 # 扫描网络中的Modbus设备 modpoll -m tcp -a 1-247 -t 3 -r 1 -c 1 192.168.1.0/24 # 扫描串口设备 modpoll -m rtu -a 1-247 -p /dev/ttyUSB0 -b 9600 -t 3 -r 1 # 快速设备识别 modpoll -m tcp -a 1-10 -t 0x2B -r 0 -c 2 192.168.1.100 2. 数据读取操作 # 读取保持寄存器 (功能码03) modpoll -m tcp -t 4 -r 40001 -c 10 192.168.1.100 # 读取输入寄存器 (功能码04) modpoll -m tcp -t 3 -r 30001 -c 5 192.168.1.100 # 读取线圈状态 (功能码01) modpoll -m tcp -t 0 -r 1 -c 16 192.168.1.100 # 读取离散输入 (功能码02) modpoll -m tcp -t 1 -r 10001 -c 8 192.168.1.100 3. 数据写入操作 # 写入单个寄存器 (功能码06) modpoll -m tcp -t 4:hex -r 40001 -c 1 192.168.1.100 0x1388 # 写入多个寄存器 (功能码16) modpoll -m tcp -t 4:hex -r 40010 -c 3 192.168.1.100 0x0001 0x0002 0x0003 # 写入单个线圈 (功能码05) modpoll -m tcp -t 0 -r 1 -c 1 192.168.1.100 ON # 写入多个线圈 (功能码15) modpoll -m tcp -t 0 -r 1 -c 8 192.168.1.100 ON OFF ON OFF ON OFF ON OFF 4. 轮询与监控 # 定时轮询显示 modpoll -m tcp -t 4 -r 40001 -c 5 -p 1000 -1 192.168.1.100 # 数据记录到文件 modpoll -m tcp -t 4 -r 40001 -c 3 -p 5000 -l modbus_log.csv 192.168.1.100 # 变化触发动作 modpoll -m tcp -t 4 -r 40001 -c 1 -p 1000 -T 25 -c "alert.sh" 192.168.1.100 5. 高级格式输出 # CSV格式输出 modpoll -m tcp -t 4 -r 40001 -c 10 -f c 192.168.1.100 # JSON格式输出 modpoll -m tcp -t 4 -r 40001 -c 5 -f j 192.168.1.100 # 自定义格式 modpoll -m tcp -t 4 -r 40001 -c 3 -f "Address: %a, Value: %v" 192.168.1.100 6. 批量操作脚本 #!/bin/bash # modpoll批量测试脚本 DEVICE="192.168.1.100" LOG_FILE="test_$(date +%Y%m%d_%H%M%S).log" echo "开始Modbus设备测试..." | tee -a $LOG_FILE # 测试1: 基本连接 echo "测试1: 基本连接测试" | tee -a $LOG_FILE modpoll -m tcp -a 1 -t 3 -r 30001 -c 1 $DEVICE >> $LOG_FILE 2>&1 check_result $? "基本连接" # 测试2: 寄存器读写 echo "测试2: 寄存器读写测试" | tee -a $LOG_FILE modpoll -m tcp -a 1 -t 4 -r 40001 -c 5 $DEVICE >> $LOG_FILE 2>&1 check_result $? "寄存器读取" # 测试3: 性能测试 echo "测试3: 性能测试" | tee -a $LOG_FILE for i in {1..100}; do modpoll -m tcp -a 1 -t 4 -r 40001 -c 1 $DEVICE > /dev/null 2>&1 done echo "100次请求完成" | tee -a $LOG_FILE # 生成测试报告 generate_report $LOG_FILE 故障排查用例 用例1: 通信超时诊断 # 增加超时时间查看响应 modpoll -m tcp -t 4 -r 40001 -c 1 -o 5000 192.168.1.100 # 启用详细日志 modpoll -m tcp -t 4 -r 40001 -c 1 -v 192.168.1.100 # 测试不同数据量 for size in 1 10 50 100 125; do echo "测试 $size 个寄存器..." modpoll -m tcp -t 4 -r 40001 -c $size -o 3000 192.168.1.100 done 用例2: 数据一致性验证 # 多次读取验证稳定性 for i in {1..10}; do echo "第 $i 次读取:" modpoll -m tcp -t 4 -r 40001 -c 3 -f c 192.168.1.100 sleep 1 done # 写入后立即读取验证 modpoll -m tcp -t 4:hex -r 40010 -c 1 192.168.1.100 0x55AA sleep 0.5 modpoll -m tcp -t 4 -r 40010 -c 1 192.168.1.100 🖥️ 可视化调试工具 7. Modbus Constructor 项目地址: http://www.kurysoft.com/download.shtml 主要功能模块 1. 设备建模工具 设备模型结构: ├── 通信参数 │ ├── 协议: RTU/TCP/ASCII │ ├── 波特率: 9600/19200/38400/115200 │ ├── 数据位: 8 │ ├── 停止位: 1/2 │ └── 校验位: None/Even/Odd ├── 数据点定义 │ ├── 线圈 (0xxxx) │ ├── 离散输入 (1xxxx) │ ├── 输入寄存器 (3xxxx) │ └── 保持寄存器 (4xxxx) └── 数据映射 ├── 缩放因子 ├── 偏移量 ├── 数据类型 └── 工程单位 2. Modbus Reader - 免费读取工具 实时监控界面: ───────────────────────────────────── 设备: 温度控制器 [192.168.1.101:502] ───────────────────────────────────── 地址 名称 值 单位 状态 40001 温度 25.3 °C ✅ 40002 湿度 60.2 % ✅ 40003 压力 101.3 kPa ✅ 00001 加热器 ON ✅ 10001 报警 OFF ✅ ───────────────────────────────────── 更新时间: 2026-02-24 17:15:32 通信状态: 正常 (延迟: 12ms) 8. Mango M2M - 浏览器监控平台 项目地址: http://mango.serotoninsoftware.com/ Web监控特性 1. 多协议支持 - Modbus TCP/RTU/ASCII - OPC UA/DA - SNMP - HTTP/REST - 自定义协议 2. 仪表盘配置 { "dashboard": { "title": "生产线监控", "widgets": [ { "type": "gauge", "title": "温度监控", "dataSource": "modbus://192.168.1.101/40001", "min": 0, "max": 100, "warning": 80, "critical": 90 }, { "type": "chart", "title": "历史趋势", "dataSources": [ "modbus://192.168.1.101/40001", "modbus://192.168.1.101/40002" ], "period": "24h" } ] } } 3. 报警与通知 // 报警规则配置 alarmRules: [ { name: "高温报警", condition: "temperature > 80", actions: [ "sendEmail('operator@factory.com', '高温报警')", "sendSMS('+8613800138000', '设备温度过高')", "logEvent('high_temperature_alarm')" ], severity: "CRITICAL" }, { name: "通信中断", condition: "deviceStatus == 'OFFLINE'", actions: [ "notifyMaintenanceTeam()", "startBackupSystem()" ], severity: "HIGH" } ] 📈 性能分析与优化工具 9. 自定义性能监控脚本 Python性能分析工具 #!/usr/bin/env python3 """ Modbus性能分析工具 """ import time import statistics from datetime import datetime import matplotlib.pyplot as plt from pymodbus.client import ModbusTcpClient class ModbusPerformanceAnalyzer: def __init__(self, host, port=502): self.client = ModbusTcpClient(host, port) self.metrics = { 'response_times': [], 'success_count': 0, 'error_count': 0, 'start_time': None, 'end_time': None } def run_test(self, duration=60, requests_per_second=10): """运行性能测试""" self.metrics['start_time'] = datetime.now() total_requests = duration * requests_per_second interval = 1.0 / requests_per_second for i in range(total_requests): start = time.time() try: # 执行Modbus请求 result = self.client.read_holding_registers(40001, 10) if result.isError(): self.metrics['error_count'] += 1 else: self.metrics['success_count'] += 1 except Exception as e: self.metrics['error_count'] += 1 print(f"请求 {i+1} 失败: {e}") response_time = (time.time() - start) * 1000 # 转换为毫秒 self.metrics['response_times'].append(response_time) # 控制请求频率 elapsed = time.time() - start if elapsed < interval: time.sleep(interval - elapsed) self.metrics['end_time'] = datetime.now() return self.metrics def generate_report(self): """生成性能报告""" if not self.metrics['response_times']: return "没有测试数据" rt = self.metrics['response_times'] report = f""" Modbus性能测试报告 ================== 测试时间: {self.metrics['start_time']} - {self.metrics['end_time']} 总请求数: {len(rt)} 成功请求: {self.metrics['success_count']} 失败请求: {self.metrics['error_count']} 成功率: {(self.metrics['success_count'] / len(rt)) * 100:.2f}% 响应时间统计 (毫秒): - 平均值: {statistics.mean(rt):.2f} - 中位数: {statistics.median(rt):.2f} - 最小值: {min(rt):.2f} - 最大值: {max(rt):.2f} - 标准差: {statistics.stdev(rt):.2f} - 95百分位: {sorted(rt)[int(len(rt) * 0.95)]:.2f} - 99百分位: {sorted(rt)[int(len(rt) * 0.99)]:.2f} 建议: """ avg_rt = statistics.mean(rt) if avg_rt < 10: report += "- 性能优秀,无需优化\n" elif avg_rt < 50: report += "- 性能良好,可考虑小规模优化\n" elif avg_rt < 100: report += "- 性能一般,建议进行优化\n" else: report += "- 性能较差,需要重点优化\n" return report def plot_results(self, save_path=None): """绘制性能图表""" fig, axes = plt.subplots(2, 2, figsize=(12, 8)) # 响应时间趋势 axes[0, 0].plot(self.metrics['response_times']) axes[0, 0].set_title('响应时间趋势') axes[0, 0].set_xlabel('请求序号') axes[0, 0].set_ylabel('响应时间 (ms)') axes[0, 0].grid(True) # 响应时间分布 axes[0, 1].hist(self.metrics['response_times'], bins=50, edgecolor='black') axes[0, 1].set_title('响应时间分布') axes[0, 1].set_xlabel('响应时间 (ms)') axes[0, 1].set_ylabel('频次') axes[0, 1].grid(True) # 成功失败统计 labels = ['成功', '失败'] sizes = [self.metrics['success_count'], self.metrics['error_count']] axes[1, 0].pie(sizes, labels=labels, autopct='%1.1f%%') axes[1, 0].set_title('请求成功率') # 累积分布函数 sorted_rt = sorted(self.metrics['response_times']) cdf = [i/len(sorted_rt) for i in range(len(sorted_rt))] axes[1, 1].plot(sorted_rt, cdf) axes[1, 1].set_title('响应时间CDF') axes[1, 1].set_xlabel('响应时间 (ms)') axes[1, 1].set_ylabel('累积概率') axes[1, 1].grid(True) plt.tight_layout() if save_path: plt.savefig(save_path, dpi=300) print(f"图表已保存到: {save_path}") plt.show() # 使用示例 if __name__ == "__main__": analyzer = ModbusPerformanceAnalyzer("192.168.1.100") metrics = analyzer.run_test(duration=30, requests_per_second=20) print(analyzer.generate_report()) analyzer.plot_results("modbus_performance.png") 性能优化建议 1. 网络层优化 tcp_optimization: tcp_nodelay: true # 禁用Nagle算法 tcp_keepalive: true # 启用TCP保活 keepalive_time: 60 # 保活时间(秒) keepalive_intvl: 10 # 保活间隔(秒) keepalive_probes: 3 # 保活探测次数 socket_options: so_reuseaddr: true # 地址重用 so_rcvbuf: 65536 # 接收缓冲区大小 so_sndbuf: 65536 # 发送缓冲区大小 2. Modbus协议优化 # 批量读取优化 def optimized_read(client, address_ranges): """ 优化读取策略: 1. 合并相邻地址的读取请求 2. 避免读取不必要的数据 3. 使用合适的超时时间 """ results = {} for start, count in address_ranges: # 检查是否可合并 if can_merge_with_previous(start, count): continue try: # 使用合适的超时 client.timeout = calculate_timeout(count) # 执行读取 result = client.read_holding_registers(start, count) if not result.isError(): results[(start, count)] = result.registers else: # 失败时尝试分片读取 results.update(fallback_read(client, start, count)) except Exception as e: log_error(f"读取失败 {start}-{start+count}: {e}") return results 3. 客户端连接池 class ModbusConnectionPool: """Modbus连接池管理""" def __init__(self, host, port=502, max_connections=10): self.host = host self.port = port self.max_connections = max_connections self.pool = [] self.in_use = set() def get_connection(self): """获取连接""" # 1. 检查空闲连接 for conn in self.pool: if conn not in self.in_use and conn.is_socket_open(): self.in_use.add(conn) return conn # 2. 创建新连接 if len(self.pool) < self.max_connections: conn = ModbusTcpClient(self.host, self.port) self.pool.append(conn) self.in_use.add(conn) return conn # 3. 等待连接释放 raise NoAvailableConnection("连接池已满") def release_connection(self, conn): """释放连接""" if conn in self.in_use: self.in_use.remove(conn) def close_all(self): """关闭所有连接""" for conn in self.pool: conn.close() self.pool.clear() self.in_use.clear() 🎯 工具选择矩阵 按使用场景选择 场景 推荐工具 关键特性 学习曲线 协议分析 Wireshark 深度报文解析,实时监控 中等 设备测试 Modbus Poll 图形界面,功能完整 简单 命令行操作 Modpoll 灵活,脚本友好 简单 设备模拟 ModbusPal 动态数据生成,脚本支持 中等 性能测试 自定义脚本 完全控制,可定制 中等 生产监控 Mango M2M Web界面,多协议 中等 快速调试 Modbus Reader 免费,简单易用 简单 按用户角色选择 角色 主要需求 推荐工具组合 现场工程师 快速故障排查 Modbus Reader + Modpoll 开发人员 协议实现验证 Wireshark + ModbusPal 测试工程师 功能完整性测试 Modbus Poll + 自定义脚本 系统集成商 多设备监控 Mango M2M + Modbus Poll 运维人员 生产环境监控 性能监控脚本 + 报警系统 成本效益分析 工具 成本 开源/商业 适合规模 Wireshark 免费 开源 所有规模 Modpoll 免费 开源 所有规模 Modbus Reader 免费 免费软件 中小规模 Modbus Poll $249 商业软件 专业用户 Mango M2M 社区版免费 开源+商业 企业级 自定义脚本 开发成本 自定义 特定需求 🚀 实战工作流程 典型调试流程 阶段1: 问题识别 1. 现象收集 - 通信完全中断 - 数据不一致 - 响应缓慢 - 间歇性故障 2. 基本信息收集 - 网络拓扑 - 设备型号和固件版本 - 配置参数 - 错误日志 阶段2: 基础测试 # 使用modpoll进行快速测试 # 1. 测试基本连接 modpoll -m tcp -a 1 -t 3 -r 30001 -c 1 192.168.1.100 # 2. 测试不同功能码 for func in 1 2 3 4; do echo "测试功能码 0x0$func..." modpoll -m tcp -a 1 -t $func -r 1 -c 1 192.168.1.100 done # 3. 测试不同数据量 for count in 1 10 50 100; do echo "测试 $count 个寄存器..." modpoll -m tcp -a 1 -t 4 -r 40001 -c $count 192.168.1.100 done 阶段3: 深度分析 1. Wireshark抓包分析 - 捕获完整通信过程 - 分析报文时序 - 检查协议合规性 2. 设备模拟测试 - 使用ModbusPal模拟正常设备 - 对比实际设备行为 - 隔离问题范围 3. 性能压力测试 - 测试不同负载下的表现 - 识别性能瓶颈 - 验证系统稳定性 阶段4: 解决方案实施 1. 配置优化 - 调整超时参数 - 优化扫描频率 - 配置重试机制 2. 代码修复 - 修复协议实现错误 - 优化数据处理逻辑 - 增强错误处理 3. 监控部署 - 部署持续监控 - 设置报警规则 - 建立维护流程 📚 学习路径建议 初学者路径 (0-3个月) 基础掌握: Modbus Reader + Modpoll 协议理解: 阅读Modbus协议规范 简单测试: 使用现有工具进行基本测试 问题排查: 学习常见问题解决方法 中级用户路径 (3-12个月) 深度分析: 掌握Wireshark高级功能 自动化测试: 学习脚本编写和自动化 性能优化: 理解性能影响因素和优化方法 系统集成: 学习多设备监控和管理 高级专家路径 (1年以上) 定制开发: 根据需求开发专用工具 架构设计: 设计大规模Modbus系统架构 故障预测: 建立智能故障预测系统 标准贡献: 参与Modbus相关标准制定和工具开发 🔮 未来发展趋势 1. 云化与SaaS服务 云端调试平台: 基于Web的远程调试工具 协作功能: 多工程师协同调试 AI辅助: 智能故障诊断和建议 2. 物联网集成 MQTT桥接: Modbus到MQTT的透明转换 边缘计算: 本地数据处理和决策 5G支持: 低延迟远程访问 3. 安全性增强 加密通信: TLS/SSL支持 访问控制: 基于角色的权限管理 审计日志: 完整的操作记录 4. 开发体验改进 IDE集成: 开发环境插件 自动化测试: CI/CD流水线集成 文档生成: 自动生成设备文档 💡 最佳实践总结 工具配置最佳实践 标准化配置管理 yaml tool_configuration: default_timeout: 3000 # 3秒超时 retry_count: 3 # 重试3次 retry_delay: 1000 # 重试间隔1秒 log_level: INFO # 日志级别 data_format: JSON # 数据格式 监控告警设置 监控指标: - 响应时间 > 100ms: 警告 - 响应时间 > 500ms: 严重 - 错误率 > 1%: 警告 - 错误率 > 5%: 严重 - 设备离线 > 30s: 紧急 故障排查流程标准化 标准排查流程: 1. 快速检查 (5分钟) - 网络连通性 - 设备电源状态 - 基本通信测试 2. 详细分析 (30分钟) - 协议分析 - 性能测试 - 日志分析 3. 深度诊断 (2小时) - 模拟测试 - 对比测试 - 环境隔离 4. 解决方案 (根据复杂度) - 配置调整 - 软件更新 - 硬件更换 知识管理与分享 案例库建设: 积累典型问题和解决方案 工具手册: 维护工具使用文档 培训材料: 定期组织技术培训 经验分享: 建立技术交流机制 🎉 总结 本文全面介绍了Modbus调试领域的20多个专业工具,从基础的命令行工具到高级的可视化平台,从协议分析到性能优化,为不同角色的用户提供了完整的工作解决方案。 核心价值: 1. 效率提升: 专业工具可大幅减少调试时间 2. 质量保证: 系统化测试确保通信可靠性 3. 知识传承: 标准化流程降低对个人经验的依赖 4. 持续改进: 性能监控支持系统持续优化 关键建议: 1. 根据实际需求选择合适的工具组合 2. 建立标准化的调试流程和文档 3. 定期更新工具版本和技能知识 4. 积极参与社区交流和技术分享 随着工业互联网和智能制造的发展,Modbus协议仍然是最重要的工业通信标准之一。掌握这些专业调试工具,将帮助您在工业自动化项目中更加高效、可靠地工作。 最后更新: 2026-02-24 作者: 贾维斯AI助手 分类: Modbus调试工具 标签: Modbus, 调试工具, 协议分析, 性能测试, 故障排查, 工业自动化, 测试工具 --- ### 360. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:串口调试助手软件 ATK-XCOM V3.0:从基础收发到 Modbus 协议传输的完整指南 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:ATK-XCOM V3.0 由正点原子(ALIENTEK)开发,是国内嵌入式开发圈使用最广的串口调试工具之一。本文不仅覆盖其核心功能,更深入讲解它的协议传输模式——自动超时重发、校验和/异或/CRC8/CRC16 四种校验、数据帧与实际数据的分离显示——这些功能让 ATK-XCOM 在 Modbus RTU 调试场景中比普通串口助手高出一个量级。附带完整的 Modbus 调试操作指南和同类工具对比。关键词:ATK-XCOM、正点原子、串口调试助手、协议传输、Modbus RTU 调试、CRC16、校验和。 调试串口这件事,说简单也简单——找个串口助手,选对 COM 口和波特率,发个十六进制帧,看回来啥。说难也难——当你的帧发出去,设备回了,但你不知道回来的数据是不是对的,不知道丢没丢帧,不知道中间那两字节到底是不是正确的校验码。 ATK-XCOM V3.0 是正点原子团队开发的串口调试工具。正点原子在国内嵌入式圈的影响力不用多说——STM32 开发板、ESP32 模块、RT-Thread 教程,基本上学嵌入式的人都用过他们的东西。ATK-XCOM 是他们内部调试工具的外化版,功能构建来自真实的开发场景而非凭空设计。 一、软件怎么装 开发者:正点原子(ALIENTEK),国内专业的嵌入式开发解决方案提供商。长期专注于为工程师、学生和爱好者提供开发板、模块和配套工具。 系统要求:Windows 7 及以上,32/64 位均支持。实测在 Windows 10 和 Windows 11 上运行稳定,CH340、CP2102、FT232 等常见 USB 转串口芯片均正常识别。 二、基础功能速览 2.1 串口设置 打开软件后自动扫描所有可用串口,在串口下拉列表中可以看到对应的串口名称和详细信息(如 COM3: USB-SERIAL CH340)。常见的 CH340 芯片支持热插拔——USB 插上后点击刷新即可出现,拔掉后自动消失。部分老旧驱动可能需要手动关闭串口再打开。 波特率范围:预设 1200 ~ 1382400 bps,覆盖了所有标准速率。需要非标波特率(如 750000、921600)时,在串口关闭状态下点击「自定义」按钮,直接输入数值。前提是你的 USB 转串口芯片和对方设备的 UART 都能支持这个速率——STM32 的 USART 在 72MHz 时钟下支持的非标波特率范围很窄,不是随便输个数字就能稳的。 停止位:1、1.5、2 三种。数据位:5、6、7、8 四位。校验位:无校验、奇校验、偶校验。Modbus RTU 的标准配置:8 数据位、1 停止位、偶校验或无校验。 2.2 显示与发送 接收区支持两种显示模式:十六进制和 ASCII,可实时切换。两种配色方案:经典的「黑底绿字」(类似终端风格,长时间看屏幕不刺眼)和「白底黑字」(类似文档风格,截图可用)。勾选「时间戳」可以为每一条接收数据加上精确时间。注意时间戳以 rn 为帧边界——如果你收到的 Modbus 帧中间刚好有 0D 0A,时间戳会被错误插入到帧内部。所以 Modbus 调试时时间戳功能建议在 ASCII 模式下使用,Hex 模式下建议关闭。 发送区支持 ASCII 和十六进制两种输入格式。勾选「发送新行」自动在发送内容末尾添加 rn——调 AT 指令的模块(如 ESP8266、4G 模块)时必须勾上。快捷键 Ctrl+Enter 可直接发送。 「定时发送」功能:可以设置固定周期(毫秒级),软件自动按间隔循环发送发送区的内容。适合做老化测试——比如给 Modbus 从站连续发 24 小时读寄存器命令,看设备会不会通信中断。 「文件发送」功能:能把任意格式的文件(如 .bin 固件、.hex 升级包)按字节流通过串口发出去,带进度条和暂停/继续控制。IAP(In-Application Programming)串口升级固件时直接用它,不需要单独写个升级工具。 2.3 多条发送与指令管理 四条独立发送页面,每条页面有 10 条可编辑的发送指令(等于最多 40 条预置命令)。每条指令的发送格式(Hex/ASCII)、是否加新行、发送周期都可以单独配置。数字键盘 0~9 可以绑定到当前页面的第 1~10 条指令——适合需要快速响应控制的场景,比如智能车控制(按数字键 1 前进、2 后退、3 左转)。 指令集支持导出为 Excel 格式、也从 Excel 导入。项目交接时直接把你的所有测试指令导出成一个文件发给同事,他导入后就能用完全一样的命令调试。 三、协议传输模式——ATK-XCOM 的杀手锏 这是 ATK-XCOM 和普通串口助手的本质区别所在。大部分串口助手只是「你把字节发出去,有回应的就显示出来」。ATK-XCOM 的协议传输模式做了三件事:自动校验、自动超时重发、数据和帧的分离显示。 3.1 工作原理 协议传输的基本流程:你在发送区填入要发的实际数据(Payload),ATK-XCOM 自动在数据前后加上帧头和校验码,拼成完整的协议帧,通过串口发出去。接收端收到帧后,计算校验码,如果校验通过则返回确认帧(ACK),发送端收到 ACK 表示传输成功。如果在设定时间内没有收到 ACK,自动重发,最多重试配置的次数。 对于 Modbus RTU 来说用不到全套的 Send-Ack 机制(Modbus 本身就有自己的主从问答协议),但它支持四种校验算法,以及「显示原始帧」和「显示实际数据」分开的功能——这两个在 Modbus 调试中太实用了。 3.2 四种校验方式 校验方式长度算法简述适用场景校验和(Checksum)1 字节所有数据字节累加,取低 8 位简单协议、自定义帧异或(XOR)1 字节所有数据字节连续异或NMEA 0183(GPS)、部分传感器CRC81 字节8 位循环冗余校验,多项式可配Dallas 1-Wire、SMBusCRC162 字节16 位循环冗余校验,查表法实现**Modbus RTU**(多项式 0xA001) 在协议传输设置中选「CRC16」,ATK-XCOM 自动按 Modbus 标准多项式(0xA001)计算,结果低字节在前、高字节在后(小端序),完全符合 Modbus RTU 的 CRC 排序规则。你只需要输入除 CRC 之外的裸帧,软件替你加上两字节 CRC。 3.3 显示原始帧 vs 显示实际数据 接收区可以两个模式切换: 显示原始帧:接收到的完整字节流,包括帧头、地址、功能码、数据、校验码,全显示出来。用于排查帧结构问题——比如发现收到的字节数少了,可能是定时间隔太短被截断了。 显示实际数据:只显示经过校验后的有效数据载荷,所有帧头和校验码都被剥离。用于快速看数据内容——不需要在十六进制里找「数据在哪开始、校验在哪结束」。 Modbus 调试时这两个模式的切换是这样的:先用「显示原始帧」确认帧结构正确、校验码通过。确认无误后切换到「显示实际数据」,只关注寄存器的数值变化。 3.4 自动重发与超时配置 发送失败后的重试机制可配置三个参数: 超时时间(ms):等待 ACK 的最大时间。对于 Modbus 从站,典型值设为 100~500ms 足够,取决于从站设备的响应速度。有些低速设备(老旧的 51 单片机跑 4800 波特率)可能需要设到 800ms 甚至更高。 重发次数:超时后自动重发的最大次数。设 0 表示不重发。一般设 3~5 次。 重发间隔(ms):两次重发之间的间隔。这个值需要 > 超时时间,否则逻辑就乱了。对于 Modbus RTU 的场景,帧间隔必须 ≥ 3.5 字符时间(3.5 × 11 / 波特率),比如 9600 bps 就是约 4ms。 这些参数放在一个 GUI 面板上,比写代码配串口超时直观得多。关键是可以直观地看到「在第几次重发时收到了正确的 ACK」——如果每次都到第 3 次才成功,说明通信链路有不稳定的地方,要去排查线缆或干扰。 四、使用 ATK-XCOM 调试 Modbus RTU 的完整流程 步骤一:配置串口参数 打开 ATK-XCOM V3.0,选择对应的 COM 口。波特率设 9600(或设备实际波特率),数据位 8,停止位 1,校验位选无或偶校验——取决于你设备的具体配置。 点「打开串口」。如果线路正确、设备已上电,状态栏会显示串口已打开,收发字节数从 0 开始。 步骤二:构造 Modbus 查询帧 假如读从站地址 01 的保持寄存器 40001(地址 0x0000),读 1 个寄存器。裸帧(不含 CRC)是: 01 03 00 00 00 01 勾选「十六进制发送」,在发送区输入 010300000001。在「协议传输」设置中勾选 CRC16 校验,ATK-XCOM 会自动计算 CRC 并在帧末尾附加两字节(对于这个帧,CRC 是 0x840A,发出去的完整帧是 01 03 00 00 00 01 84 0A)。点发送。 步骤三:解析返回帧 设备正常响应时,ATK-XCOM 接收区会显示回来的十六进制数据。标准的响应帧格式是: 01 03 02 XX YY CRCL CRCH 其中 02 表示数据区的字节数(读 1 个寄存器就是 2 字节),XX YY 是寄存器值(高字节在前)。 如果返回的是: 01 83 02 CRCL CRCH 功能码变成了 0x83——这是原始功能码 0x03 的最高位被置为 1,加上异常码 0x02。Modbus 异常码 0x02 表示「非法数据地址」——你请求的寄存器地址在这个从站上不存在。 步骤四:利用多条发送管理常用 Modbus 命令 在「多条发送」区域建四个页面: 页面 1 —— 读取类命令 条目1: 010300000001 → 读从站01寄存器40001(1个) 条目2: 010300000004 → 读从站01寄存器40001~40004(4个) 条目3: 0103000A0001 → 读从站01寄存器40011(1个) 条目4: 010100000008 → 读从站01线圈00001~00008(8个) 每个条目独立勾选「十六进制发送」和 CRC16 校验。 页面 2 —— 写入类命令 条目1: 010600000001 → 写从站01寄存器40001=1 条目2: 010600000000 → 写从站01寄存器40001=0 条目3: 011000000001020001 → 写从站01多个寄存器,起始0000,2字节,值=0001 页面 3 —— 广播与诊断 条目1: 000800000001 → 广播诊断(子功能码0001,重启通信) 条目2: 00110000 → 广播获取从站事件计数器 页面 4 —— 导出备份 全配置完,菜单 → 导出发送条目 → 存为 Excel 文件。以后换电脑直接用这个文件导入,所有命令一秒恢复。 五、ATK-XCOM vs 其他串口工具的定位 对比维度ATK-XCOM V3.0LLCOMSSCOMCOMTool开发方正点原子(国内)chenxuuu 个人开源个人个人开源免费是是是是脚本化不支持Lua 5.3 脚本引擎不支持有限支持协议传输支持(帧头/校验/ACK/超时重发)不支持(需自己写 Lua)不支持不支持CRC/校验内置 4 种(校验和/XOR/CRC8/CRC16)需自己写 Lua不支持不支持多条发送4 页×10 条+快捷键10 页不限条数不支持支持波特率上限1382400受驱动限制受驱动限制受驱动限制GUI 风格经典绿底黑字现代白色老式 Windows现代下载方式百度网盘+官方GitHub+MS Store各下载站GitHub 选工具的三个场景: 日常调试 Modbus RTU,只需收发和看数据 → ATK-XCOM。协议传输模式内置 CRC,多条发送管理方便,不需要写脚本。 需要自动化批量测试、自定义数据解析、和 TCP/MQTT 联调 → LLCOM。Lua 脚本的灵活性无可替代,但学习成本高。 只是偶尔用一次串口、发几条 AT 指令 → COMTool 或 SSCOM。轻量,不需要任何配置。 ATK-XCOM 的定位是「专业串口调试的工具箱」而不是「可编程万能工具」。它的设计哲学是把嵌入式工程师最常用的调试流程做成固定功能,让你不需要写代码就能跑。LLCOM 是把所有可编程能力开放给你,让你想干嘛就干嘛——但代价是你要会写 Lua。 两个工具配合用才是最合理的:ATK-XCOM 搞定日常的收发和校验,LLCOM 搞定需要自动化重复操作的任务。 六、常见问题 CRC16 校验结果和手动算的不一致? 确认两件事:1) 多项式是否正确——Modbus RTU 用的是 0xA001(不是 0x8005,那是 IBM CRC-16 的正向多项式)。2) 初始化是否为 0xFFFF。ATK-XCOM 内置的 CRC16 是严格按照 Modbus 协议实现的,正确结果可以用在线 CRC 计算器交叉验证。 收不到从站响应? 三查:1) 波特率和校验位是否匹配。2) 从站地址是否正确(注意默认地址可能是 1 也可能是 247,每个厂商不一样)。3) 设备是否上电——这在现场是最常被忽略的,很多人插上 USB 转 485 以为设备就有电了,实际设备需要独立的 DC 供电。 时间戳不显示? ATK-XCOM 的时间戳以 rn 为断帧标志。如果收到的数据是纯 Modbus RTU 二进制帧、不包含 0D 0A,时间戳功能不会触发。建议在 Hex 接收模式下关闭时间戳,或确认对方数据流确实包含换行符。 文件发送到一半停了? 检查目标设备的接收缓冲区是否足够。文件发送是连续字节流,如果设备处理速度跟不上(比如每接收一个字节就要写 Flash 并等待完成),发送端不会自动降速。解决方案是降低发送波特率,或者把文件拆成小块,用多条发送的定时功能分片发送。 ATK-XCOM 没有什么炫酷的新概念,它的每个功能都来自嵌入式工程师在调试现场的真实需求——协议传输是因为设备一应答就出错又不知道错在哪,多条发送是因为十几条 AT 指令来回手打太折磨人,自定义波特率是因为总有一些非标设备。这就是正点原子作为「从开发板里长出来的工具团队」和「纯软件工具团队」最大的区别——后者是设计出来的,前者是磨出来的。 有问题再聊。 --- ### 361. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:LLCOM:给串口装上 Lua 大脑 —— Modbus 调试效率翻倍的完整指南 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:LLCOM 是 GitHub 开源的 Windows 串口调试工具(chenxuuu/llcom),基于 .NET 和腾讯 xlua 引擎,让串口调试不再是手动一条条发十六进制帧。其核心杀手锏是在标准串口工具基础上内嵌了完整的 Lua 5.3 运行环境,支持合宙 Luat Task 协程框架,可以写脚本自动收发、自动计算 Modbus CRC、自动轮询、自动解析响应。本文从安装到 API 参考到四个 Modbus 实战脚本,覆盖你从下载到跑通自动化测试的每一个步骤。关键词:LLCOM、Lua 串口调试、Modbus CRC 自动计算、串口自动化测试、xlua、Luat Task。 调试 Modbus RTU 设备最常见的工作流是:打开串口工具 → 手动输入十六进制帧 → 点发送 → 等回应 → 肉眼对照字节 → 发现 CRC 算错了 → 重新来。十台设备调完,手指痛、眼睛酸、心里碎成渣。 LLCOM 解决的就是这个问题。它不只是一个串口助手——它是个能跑脚本的串口调试引擎。 一、LLCOM 是什么 LLCOM 是 GitHub 开源项目(chenxuuu/llcom),用 C# 写、基于 .NET 框架,采用腾讯 xlua 作为脚本引擎。许可证是 Apache 2.0。 定位一句话:可编程的串口调试工具。普通的串口助手只能「键盘打十六进制→手点发送→肉眼看出十六进制」。LLCOM 可以写 Lua 脚本让数据自动处理、自动发送、自动解析、自动校验。 核心架构三层: 串口收发层:标准串口通信,支持波特率、数据位、校验位配置,同时集成 TCP/UDP/MQTT 客户端和服务器功能,还能监听其他程序使用的串口 Lua 脚本引擎层:Lua 5.3 环境 + 合宙 Luat Task 协程框架(sys.wait、sys.taskInit、sys.timerLoopStart 等全部移植) 发送前处理层:用户在发送框中输入的数据,可以经过一段 Lua 脚本处理后再发出去——自动换行、自动转 Hex、自动组装 JSON,什么都能干 开源地址:https://github.com/chenxuuu/llcom 二、安装与下载 三个官方渠道,选一个: 方式一:微软商店 在 Windows 自带的 Microsoft Store 中搜索「LLCOM」即可安装。优势是自动更新,缺点是需要微软账号。 方式二:便携版(免安装) 从 底部 下载 zip 包,解压到任意目录,双击 llcom.exe 运行。不上注册表、不写系统目录,放到 U 盘里到处带着跑。 方式三:GitHub Releases 从 https://github.com/chenxuuu/llcom/releases/latest 下载最新稳定版。适合需要特定版本的调试场景。 系统要求:Windows 10 及以上,64 位。需要 .NET Runtime(Windows 10/11 通常已内置;如果提示缺少 .NET Runtime,从微软官网下载 .NET Desktop Runtime 8.0 即可)。 三、功能清单:比普通串口助手多了什么 LLCOM 有普通串口助手的所有功能(串口选择、波特率/校验位配置、十六进制/ASCII 收发、日志显示),然后加了这些: 功能说明Modbus 调试场景Lua 发送前处理输入框内容经过 Lua 脚本处理后才发送自动拼接 CRC、自动加从站地址独立 Lua 脚本区右侧可跑完整的 Lua 脚本,带定时器和协程写一个脚本自动轮询所有从站寄存器快捷发送栏(10 页×不限条数)保存常用命令,一键发送把读不同寄存器的帧放不同页串口监听监控其他程序正在使用的串口数据看某上位机软件发了什么帧TCP/UDP/SSL 客户端和服务端可以不通过串口直接调 TCP测试 Modbus TCP 端口MQTT 测试集成 MQTT 发布/订阅验证网关的 MQTT 上行串口自动重连断开后自动恢复连接设备断电重启不会断调试自动日志保存带时间戳的串口和 Lua 日志调完全部设备,回头看日志复盘编码互转/乱码恢复GBK/UTF-8/Hex 之间转换中文字符串调试 四、两大核心功能详解 4.1 发送前 Lua 处理 这是 LLCOM 最直接提效的功能。在「发送设置」→「发送处理脚本」里写一段 Lua,每次点发送时,你输入框里的原始文本先传给这段脚本,脚本处理后返回的字符串才是真正发到串口的数据。 三个经典用法: 自动加 rn:很多串口设备要求命令以回车换行结尾—— return uartData .. "rn" 从此不用每次手打 0D 0A,输入命令直接点发送就完事。 十六进制自动转换:在输入框里写十六进制字符串(如 010300000001),脚本自动转成二进制—— return uartData:fromHex() 这是 Modbus RTU 调试的标配——你在输入框写 Modbus 帧的十六进制表示,脚本转成二进制发给设备。 JSON 自动组装:输入 a,b,c,发出去的是 JSON—— json = require("JSON") t = uartData:split(",") return json:encode({ key1 = t[1], key2 = t[2], key3 = t[3], }) 快捷发送栏的每个按钮也同样走这个脚本,所以你可以建 10 页快捷发送,每页放不同的 Modbus 命令,然后每次点按钮自动加 CRC 发出去——后面会给出完整实现。 4.2 独立 Lua 脚本运行区 右边有个「Lua 脚本」区域,你可以直接写完整的 Lua 程序并运行。这里的脚本拥有合宙 Luat Task 框架的全部能力: sys.taskInit() 创建协程任务 sys.wait(ms) 延时等待(不阻塞界面) sys.waitUntil() 等待消息(事件驱动) sys.timerLoopStart() 循环定时器 sys.publish() / sys.subscribe() 消息发布订阅 基础示例:收到串口数据后自动回复—— uartReceive = function (data) log.info("uartReceive", data) sys.publish("UART", data) end sys.taskInit(function() while true do local _, udata = sys.waitUntil("UART") log.info("task waitUntil", udata) local sendResult = apiSendUartData("ok!") log.info("uart send", sendResult) end end) 你甚至可以用 xlua 直接调用 C# 的 System.Net 类库发 HTTP 请求——这意味着你可以写一个脚本,串口收到数据后自动往云平台推一条消息。 五、核心 API 速查 LLCOM 的 Lua API 文档位于 https://github.com/chenxuuu/llcom/blob/master/LuaApi.md ,这里列出 Modbus 调试最常用的部分。 5.1 串口收发 API -- 发送数据到串口(推荐新接口) apiSend("uart", data) -- 发送数据到串口(旧接口,后续会移除) apiSendUartData(data) -- 订阅串口接收回调 apiSetCb("uart", function(data) log.info("received", data) end) -- 取消订阅 apiUnsetCb("uart", callback) 5.2 定时器与协程 API -- 创建任务 sys.taskInit(function() while true do -- 你的逻辑 sys.wait(1000) -- 等 1000ms end end) -- 循环定时器 sys.timerLoopStart(function() log.info("tick", os.time()) end, 1000) -- 每 1000ms 触发一次 -- 停止定时器 sys.timerStop(timerId) 5.3 字符串处理 API -- 二进制转十六进制字符串 string.toHex("x01x03") -- 返回 "0103" -- 十六进制字符串转二进制 ("010300000001"):fromHex() -- 分割字符串 ("a,b,c"):split(",") -- 返回 {"a","b","c"} 5.4 日志 API log.info("tag", "message") log.warn("tag", "warning") log.error("tag", "error") 所有日志自动保存到软件目录,并附带时间戳。 六、Modbus RTU 实战脚本 以下脚本可以直接复制到 LLCOM 里运行。每个都是完整可用的。 6.1 智能发送:自动计算 Modbus CRC 并发送 Tired of 手动算 CRC?这是 LLCOM 在 Modbus 调试中最经典的应用。 在「发送处理脚本」中粘贴: -- Modbus CRC16 查表法(多项式 0xA001) local crcTable = {} for i = 0, 255 do local crc = i for _ = 1, 8 do if (crc & 1) ~= 0 then crc = (crc >> 1) ~ 0xA001 else crc = crc >> 1 end end crcTable[i] = crc end local function modbusCrc16(data) local crc = 0xFFFF for i = 1, #data do local b = string.byte(data, i) crc = (crc >> 8) ~ crcTable[(crc ~ b) & 0xFF] end return crc end -- 主逻辑:把输入转成二进制,计算 CRC,拼上去,发给串口 local raw = uartData:fromHex() -- 输入框写十六进制,如 010300000001 local crc = modbusCrc16(raw) local lo = crc & 0xFF local hi = (crc >> 8) & 0xFF return raw .. string.char(lo, hi) 现在你在输入框写 010300000001(从站地址=01,功能码=03,起始地址=0000,寄存器数=0001),点发送后实际发出去的是 01 03 00 00 00 01 84 0A——CRC 自动接在后面。 6.2 Modbus RTU 自动轮询脚本 跑在「Lua 脚本」区域中,每隔 2 秒读一次从站 01 的保持寄存器 40001(地址 0x0000),自动解析返回数据: -- CRC 表(同上,这里省略,需要放在脚本最前面) -- ...(和 6.1 的 crcTable 和 modbusCrc16 函数一样) local function buildReadFrame(slave, startAddr, regCount) local frame = string.char(slave, 0x03, (startAddr >> 8) & 0xFF, startAddr & 0xFF, (regCount >> 8) & 0xFF, regCount & 0xFF) local crc = modbusCrc16(frame) return frame .. string.char(crc & 0xFF, (crc >> 8) & 0xFF) end local function parseResponse(data) if #data < 5 then log.warn("modbus", "响应太短: " .. string.toHex(data)) return nil end local slave = string.byte(data, 1) local func = string.byte(data, 2) if func > 0x80 then log.error("modbus", "异常码: 0x" .. string.format("%02X", string.byte(data, 3))) return nil end local byteCount = string.byte(data, 3) local values = {} for i = 0, (byteCount / 2) - 1 do local hi = string.byte(data, 4 + i * 2) local lo = string.byte(data, 5 + i * 2) values[i + 1] = (hi << 8) | lo end return {slave = slave, values = values} end -- 接收处理 apiSetCb("uart", function(data) local result = parseResponse(data) if result then log.info("modbus", string.format("从站%02X 寄存器值: %s", result.slave, table.concat(result.values, ", "))) end end) -- 轮询任务 sys.taskInit(function() while true do local frame = buildReadFrame(0x01, 0x0000, 4) log.info("modbus", "发送: " .. string.toHex(frame)) apiSend("uart", frame) sys.wait(2000) end end) 运行后日志输出类似:modbus 发送: 0103000000044409 → modbus 从站01 寄存器值: 168, 2234, 0, 512。不需要人工干预,脚本自动轮询、自动解析、自动打日志。 6.3 多从站扫描器 自动扫描总线上有哪些从站在线。挨个发读取命令,有响应的就是在线: -- CRC 函数同上,省略 local function scanSlave(slaveId) local frame = string.char(slaveId, 0x03, 0x00, 0x00, 0x00, 0x01) local crc = modbusCrc16(frame) frame = frame .. string.char(crc & 0xFF, (crc >> 8) & 0xFF) apiSetCb("uart", function(data) if #data >= 5 and string.byte(data, 1) == slaveId and string.byte(data, 2) == 0x03 then log.info("scan", "从站 " .. slaveId .. " 在线✓") end end) apiSend("uart", frame) log.info("scan", "扫描从站 " .. slaveId .. " ...") end sys.taskInit(function() for slaveId = 1, 247 do scanSlave(slaveId) sys.wait(150) -- 等 150ms 给从站响应时间 end log.info("scan", "扫描完成") end) 脚本跑完,日志里列出所有在线的从站地址。大型项目中第一次上电后跑一遍这个,省去挨个看说明书的功夫。 6.4 响应帧自动解析 + 数据导出 收到 Modbus 响应后,自动解析并格式化为 CSV 行,方便复制到 Excel 做趋势分析: local results = {} apiSetCb("uart", function(data) if #data < 5 then return end local slave = string.byte(data, 1) local func = string.byte(data, 2) if func >= 0x80 then log.error("modbus", string.format("S=%02X 异常码0x%02X", slave, string.byte(data, 3))) return end local byteCount = string.byte(data, 3) local row = {os.date("%H:%M:%S"), slave} for i = 0, (byteCount / 2) - 1 do local hi = string.byte(data, 4 + i * 2) local lo = string.byte(data, 5 + i * 2) table.insert(row, (hi << 8) | lo) end table.insert(results, table.concat(row, ",")) log.info("csv", table.concat(row, ",")) end) -- 轮询任务(每 5 秒采集一次,共采集 60 次 = 5 分钟) sys.taskInit(function() for i = 1, 60 do local frame = string.char(0x01, 0x03, 0x00, 0x00, 0x00, 0x04) local crc = modbusCrc16(frame) apiSend("uart", frame .. string.char(crc & 0xFF, (crc >> 8) & 0xFF)) sys.wait(5000) end log.info("export", "采集完成,共 " .. #results .. " 行") end) 日志输出的每一行都可以直接复制粘贴到 CSV 文件里用 Excel 打开。 七、TCP / MQTT / 监听 —— 其他 Modbus 场景 7.1 调 Modbus TCP LLCOM 可以当 TCP 客户端连接 Modbus TCP 设备(默认端口 502)。打开 TCP 客户端功能,填入设备 IP 和端口 502,连接成功后像串口一样收发—— Modbus TCP 帧和 RTU 帧的区别只是少了 CRC、多了 MBAP 头(6 字节)。你可以在发送处理脚本里自动补上 MBAP 头: -- 输入框写 000000000006010300000001 -- 表示:事务ID=0000,协议ID=0000,长度=0006,单元ID=01,功能码=03,起始地址=0000,寄存器数=0001 return uartData:fromHex() 或者脚本接到串口收到的 RTU 帧,去掉 CRC 换成 MBAP 头后通过 TCP 通道发出去。具体见软件自带的 channel-demo.lua 例子。 7.2 MQTT 测试 如果调试 Modbus 网关(DTU 把串口数据转成 MQTT 发布),LLCOM 的 MQTT 功能可以直接订阅网关发布的主题,看到网关发上来的数据是否正确。还能往控制主题发布消息测试下行。 7.3 串口监听 「串口监听」功能可以抓取其他软件正在使用的串口通信——比如你的上位机软件在跟设备通信,你不想停掉它但想看它发了什么帧。LLCOM 可以静默抓取串口数据并显示日志,不影响原来的通信。 八、和同类工具的对比 工具脚本支持Modbus CRC开源价格LLCOMLua 5.3 + xlua + 协程框架需要自己写(本文已提供)是免费SSCOM无不支持否免费COMTool有限不支持是免费Modbus Poll无(专业 Modbus 固定功能)内置否$129ModScan无内置否$69 LLCOM 不是「开箱即用」的 Modbus 专用工具,它是「可以变成 Modbus 专用工具的万能工具」。如果你只需要点一个按钮就发 Modbus 帧,Modbus Poll 更直接。但如果你需要批量自动化测试、自定义解析、数据导出、和 MQTT/TCP 联调——LLCOM 是目前开源工具里最灵活的。 九、常见问题 Q: 收到乱码怎么办? 检查波特率、校验位是否和设备一致。然后在 LLCOM 的接收区切换 Hex 显示——很多情况下「乱码」是因为设备返回的是二进制数据但显示区按 ASCII 解析了。 Q: CRC 脚本发出去的帧设备没反应? 第一步:确认 A/B 线没接反。第二步:在接收区看设备有没有返回任何字节——如果完全没有,可能是设备地址不对。第三步:如果设备返回了数据但是异常码(功能码 + 0x80),看异常码是什么——0x02 是「非法数据地址」,寄存器地址可能不存在。 Q: 快捷发送栏的按钮能自动跑 CRC 脚本吗? 能。快捷发送栏的内容也会经过「发送处理脚本」——所以你写好了 CRC 自动计算脚本后,快捷发送栏只需要填裸帧(如 010300000001),点按钮自动加 CRC。 Q: Lua 脚本运行时报错了? 在脚本区域最开头加一行 log.info("boot", "script started") 看脚本是否成功启动。大部分错误是因为变量名拼错或调用了不存在的 API——日志区会显示 Lua 错误信息。 LLCOM 的核心价值不是多了多少功能,而是把「调试」从重复体力劳动变成了可编程的任务。你在现场花半小时写了三个脚本,接下来三天点几下鼠标数据自己就来了。这就是「给串口装上大脑」的真正含义——不是 LLCOM 有 AI,是 LLCOM 让你能把自己的调试逻辑写成代码、然后让软件替你跑。 有问题再聊。 --- ### 362. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:COMTool:Python 系的跨平台串口调试方案 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:COMTool(GitHub: Neutree/COMTool,LGPL-3.0)是用 Python 3 + PyQt5 写的开源串口调试工具,支持 Windows、Linux、macOS 和树莓派。对 Modbus 调试场景来说,它有三个差异化价值:真正的全平台一致性体验、协议插件系统(Python 自定义编解码/解析)、内置实时波形图表(传感器数据可视化)。本文不铺功能清单,直接从 Modbus 工程师的实际需求出发,告诉你 COMTool 能解决哪些问题、在哪几个场景下比 ATK-XCOM 和 LLCOM 更适合。关键词:COMTool、跨平台串口调试、Python 串口工具、Modbus 波形显示、协议插件。 搞 Modbus 调试的人,大多数时候趴在 Windows 上干活——毕竟 SIEMENS、三菱、欧姆龙的组态软件和编程工具基本只跑 Windows。但有那么几个场景,你会突然发现自己需要的串口助手在 Windows 上根本没有,或者有了但体验一塌糊涂: 场景一:你用的是 MacBook Pro 作为主力开发机,但 USB 转 485 插上去,要调一个 Modbus 传感器。打开虚拟机跑 Windows 版本的工具——串口透传延迟高三倍,偶尔丢帧。 场景二:你的网关跑在 Ubuntu Server 上,现场只有一台树莓派可以插串口。你想直接在树莓派桌面环境上开个串口助手抓数据——绝大部分 Windows 工具直接没法用。 场景三:你在调一个温湿度传感器,Modbus 返回的是原始寄存器值(比如 168 代表 16.8°C),你需要在接收区直接看到温度曲线而非一堆十六进制数字。 这三个场景,就是 COMTool 存在的理由。 COMTool 是 GitHub 开源项目(Neutree/COMTool),MIT 协议,用 Python 3 + PyQt5 写的。GitHub 上有 2000+ Star,核心维护者是 Neutree。它不是功能最全的串口工具,也不是 Modbus 专用工具——但它是目前跨平台做得最彻底的串口工具中,插件和可视化能力最强的一个。 一、COMTool 的跨平台到底「跨」了哪些 不像某些工具「理论支持 Linux 但实际装不起来」,COMTool 对每个平台都有独立的打包和安装方案: Windows:从 GitHub Releases 下载 zip 包解压直接运行 comtool.exe。也可以通过 Scoop(Windows 包管理器)安装:scoop bucket add Nightly ... && scoop install comtool。 macOS:dmg 安装包直接安装。因为是 Python + PyQt5 写的,系统自带 Python 3 即可。注意首次打开时因为未签名,需要在「系统偏好设置→安全性与隐私」中允许运行。如果想多开窗口,终端执行 open -n /Application/comtool.app。 Linux:这是 COMTool 的优势场。Ubuntu 系有预编译二进制,Arch 系可以从 AUR 安装(yay -S python-comtool)。也可以用 pip 从源码安装:pip install comtool。树莓派需要先装依赖 sudo apt install git python3-pyqt5 python3-numpy,再 pip install。 树莓派:完整支持。插上 USB 转 485 模块、通电、打开 COMTool、选 /dev/ttyUSB0——和 Windows 上一样的操作逻辑。 所有平台上体验一致:同一个 PyQt5 界面、同一个插件系统、同一个配置文件格式。你可以在 Windows 上写好协议插件,拷贝到树莓派的 COMTool 插件目录下直接加载。 二、协议插件 —— COMTool 对 Modbus 调试最有价值的功能 2.1 协议插件解决什么问题 普通的串口助手是这样的:你发十六进制 010300000001840A,设备回 01030201988432,你用肉眼在回应的字节里找「0103」、确认从站地址是对的、跳过去看数据字节在哪、再手算一下 CRC。 COMTool 的协议插件(Protocol Plugin)可以让你定义收发两端的数据处理逻辑:发送前把「用户友好的输入」(比如「读温度传感器」)自动转成 Modbus RTU 帧;接收后把原始十六进制帧自动解析为「传感器值: 25.3°C」。全程不需要手看十六进制。 原理很简单。每个协议插件是一个 Python 类,必须实现两个核心方法:encode() 和 decode()。 encode() 的作用是把用户输入转成要发送的原始字节。decode() 的作用是把接收到的原始字节转成用户可读的显示格式。 2.2 一个最简的 Modbus 协议插件示例 以下插件让你在 COMTool 的「Protocol」模式下,发「读寄存器 地址0 数量4」这样的自然语言命令,自动拼成 Modbus RTU 帧发送。接收到的二进制响应自动解析为「从站01: [168, 2234, 0, 512]」。 class Plugin(Plugin_Base): id = "modbus_rtu" name = "Modbus RTU 解析器" version = "1.0" # CRC16 查表(Modbus 多项式 0xA001) _crc_table = None @classmethod def _build_crc_table(cls): if cls._crc_table: return cls._crc_table table = [] for i in range(256): crc = i for _ in range(8): if crc & 1: crc = (crc >> 1) ^ 0xA001 else: crc >>= 1 table.append(crc) cls._crc_table = table return table @classmethod def _crc16(cls, data: bytes) -> int: table = cls._build_crc_table() crc = 0xFFFF for b in data: crc = (crc >> 8) ^ table[(crc ^ b) & 0xFF] return crc def encode(self) -> bytes: """用户输入 '读寄存器 地址0 数量4' → 拼成 Modbus RTU 帧""" text = self.sendEdit.toPlainText().strip() # 简化解析:固定从站地址 0x01 slave = 0x01 # 默认读保持寄存器(功能码 0x03),起始地址 0,数量 1 _, addr_str, count_str = text.split() addr = int(addr_str.replace('地址', '')) count = int(count_str.replace('数量', '')) frame = bytes([slave, 0x03, (addr >> 8) & 0xFF, addr & 0xFF, (count >> 8) & 0xFF, count & 0xFF]) crc = self._crc16(frame) return frame + bytes([crc & 0xFF, (crc >> 8) & 0xFF]) def decode(self, data: bytes) -> str: """收到的 Modbus 响应帧 → 解析为人可读的文本""" if len(data) < 5: return f"[数据过短: {len(data)} 字节]" slave = data[0] func = data[1] if func >= 0x80: exc = data[2] return f"[异常] 从站{slave:02X} 错误码: {exc}" byte_count = data[2] values = [] for i in range(byte_count // 2): hi = data[3 + i * 2] lo = data[4 + i * 2] values.append(str((hi << 8) | lo)) return f"从站{slave:02X}: [{', '.join(values)}]" 把这个 Python 文件放到 COMTool 的插件目录,启动后在「Protocol」面板选择这个插件。之后你在发送框里写 读寄存器 地址0 数量4,点发送,实际发出去的是完整的 Modbus RTU 查询帧(含 CRC)。接收到的十六进制字节会自动变成 从站01: [168, 2234, 0, 512]。 nn nn2.3 更复杂的场景:自定义校验、自定义帧格式 Modbus 协议插件只是一个例子。COMTool 的协议插件的真正价值在于处理那些「市面上没有任何工具支持的私有协议」: 某国产温控器返回 AA BB CC DD EE FF GG HH——前四字节是温度(BCD 码),后四字节是湿度。写个 decode() 解析成 温度: 23.5°C, 湿度: 67.2%。 自定义校验:不是标准 CRC16 而是 CRC8/XOR/某厂商自己的魔改校验,写个 Python 函数搞定。 encode() 和 decode() 可以调任何 Python 库——你可以 parse JSON、查字典翻译错误码、甚至调 numpy 做数据滤波。这是 C# 或 C++ 写的串口工具做不到的灵活性。 三、波形/图表 —— 把 Modbus 寄存器值变成实时曲线 3.1 支持两种数据格式 COMTool 内置的 Graph 插件可以从串口数据中提取坐标并绘制实时曲线。支持两种格式: ASCII 格式(推荐,人可读): $曲线名称,X坐标,Y坐标,校验和n 例子:你的传感器单片机每隔 200ms 发 $temp,1.0,25.3n,COMTool 就会在「temp」曲线上画点 (1.0, 25.3)。带校验和版:$temp,1.0,25.3,179n——校验和是所有字段的 ASCII 码累加取低 8 位。 二进制格式(高效,适合高速采集):协议长度更短,每秒可传上千个点。具体格式见 COMTool 官方文档。 nn nn3.2 Modbus 传感器数据可视化的实际做法 假设你有一个 Modbus 温湿度传感器(从站地址 01),返回寄存器 40001(温度,单位 0.1°C)和 40002(湿度,单位 0.1%)。你想在 COMTool 里看到温度和湿度的实时曲线。 用一个中间脚本做桥接:Python 脚本通过 pyserial 读 Modbus 响应 → 解析出温度/湿度 → 按 COMTool 的 ASCII 波形格式输出到虚拟串口 → COMTool 的 Graph 插件直接显示曲线。 或者更直接的方案:用 COMTool 的协议插件做解析,decode() 函数的输出直接格式化为 $temp,{timestamp},{value}n + $humi,{timestamp},{value}n,在 Graph 插件里就能看到两条实时曲线。 多图表支持:可以同时添加温度、湿度、露点温度三条曲线,各自不同颜色。 3.3 C 语言端代码 如果传感器是 STM32/ESP32 自己写的固件,在单片机侧输出 COMTool 兼容的波形数据: // 发送 ASCII 格式波形数据(含校验和) int plot_pack_ascii(char *buff, int buff_size, const char *curve_name, float x, float y) { int sum = 0; int len = snprintf(buff, buff_size, "$%s,%.1f,%.1f", curve_name, x, y); for (int i = 1; i < len; i++) sum += buff[i]; len += snprintf(buff + len, buff_size - len, ",%dn", sum & 0xFF); return len; } // 在传感器读取循环中调用 char buf[128]; int len = plot_pack_ascii(buf, sizeof(buf), "temp", time_ms / 1000.0, temperature / 10.0); uart_send_bytes(buf, len); 这样固件端不用做任何 GUI 开发,直接串口输出,COMTool 就能画图。 四、ATK-XCOM / LLCOM / COMTool —— 三者的定位差在哪 对比维度ATK-XCOM V3.0LLCOMCOMTool开发方正点原子(商用)chenxuuu(个人开源)Neutree(个人开源)许可证免费闭源Apache 2.0LGPL-3.0平台WindowsWindowsWin + Mac + Linux + 树莓派技术栈C# / .NETC# / .NET + xluaPython 3 / PyQt5脚本/插件❌✅ Lua 5.3✅ Python 插件内置 Modbus CRC✅ 协议传输模式❌(需 Lua 手写)❌(需 Python 插件)实时波形/图表❌❌✅ Graph 插件TCP/UDP❌✅✅SSH 客户端❌❌✅多条发送管理✅ 4页×10条✅ 10页不限条数✅ 自定义按钮安装难度解压即用解压即用pip install 或解压 选型路线图: 你在 Windows 上调 Modbus RTU,需要日常收发+校验 → ATK-XCOM。协议传输模式内置 CRC16,多条发送管理成熟,零学习成本。 你在 Windows 上需要写脚本做自动化测试、多协议联调 → LLCOM。Lua 脚本引擎可以处理任何自动化逻辑,xlua 能调 C# 原生接口。 你用 Mac 或 Linux 做开发,或需要传感器数据可视化 → COMTool。唯一的全平台方案,协议插件在 Modbus 自定义解析上无替代品,波形图表对物理量调试是刚需。 同一个项目中多用 → 三个配合。ATK-XCOM 做日常 Modbus 收发和校验,LLCOM 做批量自动化轮询,COMTool 做传感器波形监控。 五、COMTool 的其他 Modbus 相关用途 5.1 TCP/UDP 调试 Modbus TCP COMTool 的网络调试模式支持 TCP 客户端/服务端。调 Modbus TCP 设备时,在 TCP 客户端模式下连设备的 IP:502 端口,发送 Modbus TCP 帧(MBAP 头 + PDU),和串口调试一样的操作体验。接收区同样支持协议插件解析。 5.2 SSH 终端 + 串口调试一体 当你的调试对象是一台 Linux 工控机(比如树莓派上跑着 Modbus 主站程序),你可以同时开两个 COMTool 窗口:一个连 SSH 登录工控机看日志和发命令,一个连串口看 Modbus 通信。同一个软件里完成,不用在 Putty 和串口助手之间切来切去。 5.3 配置文件跨机器迁移 COMTool 的串口参数、发送历史、插件配置全部保存在本地配置文件中。你在办公室的 Windows 上配好的所有东西,把配置文件拷到现场的树莓派上——包括你写的协议插件——直接加载,一秒恢复完整的调试环境。 六、安装 COMTool 并开始 Modbus 调试 6.1 Windows(最简单) 从 https://github.com/Neutree/COMTool/releases 下载最新 .zip 文件,解压后双击 comtool.exe。 6.2 macOS 从 Releases 下载 .dmg 安装。或从 PyPI:pip install comtool,然后在终端输入 comtool。 6.3 Linux / 树莓派 # Ubuntu/Debian sudo apt install python3-pyqt5 python3-numpy python3-pip -y pip install comtool comtool # Arch yay -S python-comtool # 树莓派 - 额外一步:当前用户加入 dialout 组 sudo usermod -a -G dialout $USER sudo reboot 6.4 验证串口通信 插上 USB 转 485 模块,在 COMTool 左侧面板选择串口号: Windows:COM3 等 macOS/Linux:/dev/tty.usbserial 或 /dev/ttyUSB0 波特率、数据位、校验位按设备参数设置。点击「打开」。在发送区输入 Modbus 测试帧、切换到十六进制模式、点发送。 COMTool 不是最好的 Modbus 调试工具——ATK-XCOM 的 CRC 内置校验和多条发送更针对 Modbus。COMTool 也不是最灵活的脚本工具——LLCOM 的 Lua 协程和 xlua C# 调用能力更强大。但 COMTool 是唯一一个可以在 Mac、Linux、树莓派上都能丝滑运行,同时允许你用 Python 定制协议解析、还能把传感器数据变成实时曲线的东西。 这就是它的生态位:跨平台 + Python 可定制 + 可视化。三者单独看都有替代品,但三者放一个工具里,目前没有第二个。 本站提供 COMTool 的国内网盘下载和中文使用教程,会员可免费下载全部调试工具合集。一个串口助手解决不了的场景,三个串口助手总能解决。 有问题再聊。 --- ### 363. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:安信可串口调试助手:96KB的ESP调试利器 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:安信可串口调试助手(AiThinker Serial Tool V1.2.3)是安信可官方出品的 Windows 串口调试工具,仅 96KB。核心价值不是「又一个串口助手」,而是预置了 ESP8266/ESP32 全系列 AT 指令模板——配网、查固件版本、查 MAC、Ping 测试,点按钮即可发送对应指令。支持 600 组自定义命令和波形显示。本文从 Modbus 工程师的视角说明为什么这工具在 ESP 模组 + Modbus 网关场景下是效率工具,附带 AT 指令→Modbus 数据上报的联调方案。关键词:安信可串口助手、AiThinker Serial Tool、ESP8266 串口调试、AT 指令预置、Modbus 网关联调。 安信可(AiThinker)在国内物联网圈子里是绕不开的名字。他们家的 ESP8266 和 ESP32 模组铺在了不计其数的智能家居设备、工业传感器、Modbus 网关里。如果你拆开一个淘宝上 40 块钱的「WiFi 转 RS-485 透传模块」,里面大概率是一片安信可 ESP-12F。 安信可官方出的串口调试助手,就是给这些模组调的专用工具。它的名字很朴实——「AiThinker Serial Tool」——连版本号都朴素到 V1.2.3。 但这个 96KB 的小工具,在 ESP 模组调试效率上,超过所有通用串口助手的总和。为什么?因为它把 AT 指令手册里的那一百多条命令,全部预置成了可点选的模板。 一、安信可串口调试助手到底能调什么 支持调试的模组(官方支持列表): ESP8266 系列(ESP-01/07/12/12F/12S/07S) ESP32 系列(ESP32-C3/C2/S3 等变体) RTL87XX 蓝牙模组 GPRS 模组 LoRa/LoRaWAN 模组 N92 等其他安信可模组 但实话实说——ESP8266 和 ESP32 是绝对的主力场景。蓝牙、LoRa、GPRS 的功能覆盖没那么完整。 基本串口能力: 波特率 300-1500000bps(1.5Mbps),支持自定义任意波特率。数据位/停止位/校验位标准配置。接收区支持 ASCII 和 HEX 两种显示模式,编码支持 ASCII、GB2312、Unicode、UTF-8、BIG5、Shift-JIS——中文字符串发出去不会乱码。 这些和 ATK-XCOM 差不多。但重点不在这里。 二、AT 指令模板 —— 这工具的核心价值 2.1 离开手册的调模组体验 ESP8266 的 AT 指令集有多少条?乐鑫官方文档列了上百条,常用的也有三十多条。连接 WiFi 的指令是 AT+CWJAP_DEF="SSID","PASSWORD",查固件版本是 AT+GMR,查 IP 是 AT+CIFSR。 普通串口助手下——你要么背下来这些指令,要么每次都翻 pdf 复制粘贴。复制粘贴还容易格式有问题——引号是中文的还是英文的、逗号后面要不要空格。 安信可串口调试助手把这些全部预置了。主界面右侧和底部是 AT 指令功能区,常用的分类包括: WiFi 连接类:扫描 WiFi 列表、连接指定 SSID、断开连接、查看连接状态 模块信息类:查固件版本号、查 MAC 地址、查 IP 地址、查内存状态 网络测试类:Ping 外网地址、DNS 解析测试 透传模式类:进入/退出透传模式、设置串口参数 点一下按钮,对应的 AT 指令自动填入发送区,回车发送。你不需要背单词也记得 CWJAP 是 Connect WiFi Join Access Point 的缩写——能看懂,但输入时经常忘记下划线在哪加、_DEF 要不要。 2.2 600 组自定义命令 预置模板只有常用指令。但你可能会反复用到某几条特定组合——比如你有一组 MQTT 配置指令要依序发送。 安信可的「扩展命令」功能允许你定义最多 600 组自定义 AT 指令。每条可以单独命名,排列在列表中。使用时选中一条,点发送就行。 举个例子:你在调一个基于 ESP8266 的 Modbus 网关,每次刷完固件后要跑这套初始化流程: AT+RST # 复位 AT+CWMODE=2 # 切换到 AP 模式 AT+CWSAP="Gateway","12345678",1,3 # 创建 WiFi 热点 AT+CIPAP="192.168.4.1" # 设置静态 IP AT+CIPSTART="TCP","192.168.4.2",502 # 连到 Modbus 主站 502 端口 AT+CIPMODE=0 # 退出透传模式 AT+CIPSEND=8 # 发送 8 字节(一条 Modbus 查询帧) 把这七条指令依次加到扩展命令列表:「01-复位」「02-AP模式」「03-创建热点」「04-静态IP」「05-连主站」「06-退出透传」「07-发送数据」。固件刷好后连上串口,从上到下依次点七下——不用每次都手打一大串 AT 命令。 比这更重要的是:扩展命令列表可以保存和导出。下一个同事接手这个项目,导入你的命令列表,在同样的串口参数下点同样的七下——设备和通信逻辑初始化完毕。 三、在 Modbus 场景下的实际用法 3.1 ESP8266 做 Modbus TCP 网关的联调流程 这是一个很常见的场景:ESP8266 通过 UART 连着 RS-485 芯片,固件实现了「AT 指令配置 → UART 收发 → Modbus RTU 透传」。PC 端的 Modbus 上位机通过 WiFi → ESP8266 → RS-485 读写下游的 Modbus 传感器。 调试流程需要两个工具并行: 安信可串口调试助手 → 连 ESP8266 的调试串口(通常是 GPIO1/GPIO3,波特率 74880),看模组启动日志、确认 WiFi 连接状态、发现异常 AT 返回 ATK-XCOM 或 Modbus Poll → 通过 TCP 连 ESP8266 的 502 端口,发 Modbus TCP 查询帧,验证数据通路 安信可的工具在这一侧的价值:ESP8266 启动时会在调试串口输出一大串启动信息——ets Jan 8 2013,rst cause:2, boot mode:(3,6)、chksum 0xef、mode : softAP(62:01:94:xx:xx:xx)——没有经过格式化的十六进制文本混着 ASCII 日志。普通串口助手的中文字符集处理不好,会出现「Station Mode: 杩炴帴鎴愬姛」这种乱码。安信可的工具默认 UTF-8 编码,加上它对 ESP 启动日志有兼容处理,中文日志完整显示。 3.2 用 AT 指令查模组状态 → 判断 Modbus 通信故障根源 当一个 Modbus TCP 的上位机突然连不上网关时,问题可能出在好几个地方:WiFi 断开了、IP 地址变了、TCP 连接断了、ESP 宕机了。 不用去猜。用安信可的工具接上 ESP 调试串口,依次发这四条: AT+CWJAP? → 返回 "+CWJAP:xx" 还是 "No AP"?前者连上了,后者断开了 AT+CIFSR → 返回 IP 地址还是 "ERROR"?IP 地址还在 AT+CIPSTATUS → 返回 TCP 连接状态,0=断开 2=已连接 AT+GMR → 返回固件版本,确认没有因为 OTA 失败而跑到旧版本 四条指令、四个按钮、半分钟。不用猜网络问题还是固件问题,AT 指令的返回码比任何日志都可靠。 四、波形显示 —— 另一个被低估的功能 4.1 工作原理 安信可串口调试助手内置波形显示功能。它监听串口接收的数据,按「协议定义」的格式提取数值并绘制成波形。支持波形回放和截图。 基本原理是:你在发送方的固件里按照约定格式组织数据——比如 $temp,25.3——工具识别到后绘制温度随时间的变化曲线。 4.2 Modbus 传感器的「快速看趋势」 假设你有一个 Modbus 温度传感器(从站地址 01,寄存器 40001,值除以 10 是实际温度)。你想看温度变化趋势,但不想接 PLC、组态软件,也不想写 Python+matplotlib 脚本。 做法:用一个 ESP8266 做 Modbus RTU 主站(连 485 芯片),循环读传感器寄存器,把读取到的温度值拼成 $T,25.3 格式通过 UART 发到 PC 上。PC 端的安信可工具打开波形显示,直接看到实时温度曲线。 不是高精度仪表级别的波形,但「能不能看趋势」和「能不能做数值分析」是两回事。看趋势够用了——温度在升还是在降、有没有突跳、周期对不对。 五、和其他串口工具的对比 维度安信可 串口工具ATK-XCOMLLCOMCOMTool安装包大小96KB~2MB~10MB~50MB专用场景ESP8266/ESP32 AT 指令Modbus 通用串口脚本自动化跨平台+波形AT 指令预置✅ 核心功能❌❌❌扩展命令✅ 600组✅ 40条✅ 不限✅ 有限内置 CRC❌(非 Modbus)✅ 协议传输模式❌❌波形显示✅❌❌✅断帧自动换行✅ 核心功能❌❌❌ 断帧自动换行 是安信可这个工具的一个特色:ESP8266 启动时会在几百毫秒内连续输出几十行日志——boot mode、reset reason、SPI flash、WiFi 模式切换、IP 地址获取。在普通串口助手里这些都堆在一行里,看得眼睛疼。安信可的工具检测到数据包之间有间隔时间(大于默认阈值),自动换行——相当于自动解析了启动日志的「分帧」。 六、获取和安装 6.1 下载 安信可官方提供 V1.2.3 版本,文件名通常为 AiThinker_Serial_Tool_V1.2.3.rar 或 .7z,大小约 96KB。 本站(modbus.cn)提供国内下载渠道,会员可直接下载完整的串口调试工具合集——涵盖安信可串口调试助手、ATK-XCOM、LLCOM、COMTool、SuperCom 等。一个下载搞定所有调试需求。 6.2 系统要求 Windows 7/8/10/11(32/64 位) 无依赖——解压即用,不需要安装 .NET Framework(和 ATK-XCOM 不同) USB 转串口驱动:CH340/CP2102/FT232 等通用驱动 6.3 第一步操作 解压 → 双击 AiThinker_Serial_Tool.exe → 选 COM 口 → 波特率选 115200(ESP8266 默认)或 74880(ESP 启动日志专用)→「打开串口」。 接上你的 ESP8266 或者 ESP32 开发板,上电后接收区会看到启动日志。切换到「AT 指令」标签页,点到「WiFi 连接」→「扫描 WiFi」,看看周围有哪些热点。 安信可串口调试助手不是给你替代 ATK-XCOM 的——它替代不了,ATK-XCOM 的 Modbus 校验、多条发送、协议传输模式才是 Modbus RTU 调试的正选。而安信可这个工具的准确用法是:当你的 Modbus 链路里有一片 ESP8266/ESP32 模组时,用这个工具单独调模组——查 WiFi 状态、确认 AT 指令通路、看启动日志、排查故障。 用 Modbus 轮询控制器 + 安信可的 ESP 调试工具,一个盯数据通路(Modbus RTU 侧)、一个盯模组状态(AT 指令侧),同时开两个窗口,Modbus 网关联调可以快一倍。 --- ### 364. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 来源:Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 本文:SuperCom:多串口同时监控的 Modbus 调试方案 · 作者:modbus技术团队 · 发布于 2026-07-01 摘要:SuperCom(GitHub: SuperStudio/SuperCom,GPL-3.0)是基于 C# .NET 开发的 Windows 串口调试工具,核心差异化能力是同时打开多个串口进行监听——每路独立日志记录、独立显示区、互不干扰。在 Modbus 多从站调试场景中,这让你可以同时监控三条 485 总线的数据流,且支持最高 3Mbps 波特率。本文聚焦多串口并行监控在 Modbus 工程中的实操方案,附带语法高亮自定义规则在 Modbus 帧识别中的应用。关键词:SuperCom、多串口监听、Modbus 多从站调试、高速串口、语法高亮。 Modbus 调试的时候,有一种特别折磨人的场景:你在调一个多从站的系统,主站(PLC 或者工控机)通过三路 RS-485 分别连接了温度传感器群、流量计群和阀门控制器群。三路总线物理上是独立的,各有各的波特率——温度传感器那路跑 9600,流量计那路跑 115200,阀门那路跑 19200。 这时你想同时看到三路总线上在传什么。 大部分串口助手的工作模式是:一个软件窗口 → 一个串口连接。你得开三个软件窗口,或者用三个不同的串口工具,来回切换。更糟的是,不同的串口工具日志格式不一样,事后想对齐时间线比对各路数据,基本没法做。 SuperCom 的设计目标就是解决这个问题:一个软件窗口内同时打开多个串口,每个串口独立的显示区和配置参数,统一的时间戳格式,统一的日志管理。加上它支持最高 3Mbps 波特率(需要硬件支持),在高速数据采集场景也有用。 一、SuperCom 是什么、不是什么 开发者:SuperStudio(GitHub 开源项目)。基于 C# .NET 开发,GPL-3.0 许可证。 SuperCom 的能力边界: 同时打开多个串口,每路独立监控、独立配置参数 串口日志自动保存到文件,支持滚屏/固定两种显示模式 语法高亮——支持自定义高亮规则,Modbus 帧里的功能码/地址字节可以标红色 命令自动运行——预设命令序列,一键发送或定时自动发送 插件系统——自定义功能模块 虚拟串口兼容 com0com——没有物理串口时也能做调试 最高支持 3Mbps 波特率(实测,需硬件支持) SuperCom 不是: 不是 Modbus 专用工具——没有内置 CRC 计算、没有协议解析 不是跨平台工具——目前只支持 Windows 不是脚本化工具——没有 Lua/Python 引擎 这些边界很清楚:SuperCom 在「多串口并行监控」这个领域做到极致,但单串口的 Modbus 日常收发,ATK-XCOM 更顺手。 二、多串口同时监听 —— 核心价值 2.1 三路 RS-485 并行监控实操 假设你有这样一个 Modbus 系统: COM3:USB-485-A → 温度传感器群(从站地址 01~08,9600/8N1) COM4:USB-485-B → 流量计群(从站地址 11~14,115200/8E1) COM5:USB-485-C → 阀门控制器(从站地址 21~24,19200/8N1) 在 SuperCom 中: 启动软件 → 顶部 Tab 栏会有三个标签页:串口1、串口2、串口3 每个标签页独立选择一个串口号、独立配置波特率/数据位/校验位/停止位 三个串口可以同时「打开」,互不干扰 每个接收区独立显示,可以设置不同的显示模式(Hex/ASCII) 时间戳统一格式,日志分别保存到三个文件 现在你同时看到三路总线上的数据:温度传感器群在报 01 03 08 00 A8 ...(寄存器数据)、流量计群在报 11 03 04 00 64 ...、阀门控制器在响应 21 06 00 01 00 01 ...(写线圈命令的响应)。 全部在一个屏幕上,时间线对齐。主站发了一条广播命令后,三路从站的响应先后顺序一目了然。 2.2 增量保存日志 —— 现场调试的最大保障 SuperCom 的日志保存机制有一个不容易注意但特别实用的设计:增量保存。 当你点击「另存为」指定了日志文件路径后,SuperCom 并不会立即创建文件,而是等新数据到达后才创建。此后所有新的接收数据都会自动追加到同一个文件。 这个机制的好处是:你在现场调了半天,突然发现有个异常帧需要回溯。如果是普通串口助手——数据只在接收区里,可能已经被新数据冲掉了。SuperCom 的日志文件从一开始就在持续记录,你打开那个 .txt 文件,今天所有串口通信的历史数据全在。 三路串口对应三个日志文件:temp_sensors_20260701.txt、flow_meters_20260701.txt、valve_controllers_20260701.txt。想回溯哪路的调试历史就打开哪路的文件。 三、Modbus 场景下的实用功能 3.1 语法高亮自定义 —— Modbus 帧的「关键字节标红」 Modbus 帧里有些字节是「关键信息位」——功能码(第二个字节)告诉你这是读还是写、异常码(异常响应时第三个字节)告诉你问题是什么。原始十六进制堆在一起很难一眼看出来。 SuperCom 支持自定义语法高亮规则。在配置中加一条规则:匹配 03 高亮为绿色(读保持寄存器)、06 为蓝色(写单个寄存器)、10 为黄色(写多个寄存器)、83/86/90 等异常功能码高亮为红色。 这样 Modbus 帧流经过接收区时,你不需要仔细读十六进制,扫一眼颜色就知道:绿色的都是在读数据、红色的都是异常响应、蓝色的是在写参数。 具体配置:在 SuperCom 的设置中,语法高亮的规则接口是正则表达式。比如: 正则: b03b 颜色: Green 说明: 功能码03-读保持寄存器 正则: b06b 颜色: Blue 说明: 功能码06-写单个寄存器 正则: b8[0-9A-F]b 颜色: Red 说明: 异常响应 3.2 命令自动运行 —— Modbus 从站的批量测试 SuperCom 支持预设命令序列并自动运行。在 Modbus 场景下,你可以把「读从站 01 的 10 个寄存器」到「读从站 08 的 10 个寄存器」这 8 条命令排成一个序列,设置每 500ms 自动执行一条,循环 100 次。 这本质上就是一个简陋但有效的 Modbus 主站轮询器。配合多串口功能——三路串口各自跑各自的命令序列——相当于一台 PC 同时充了三个 Modbus 主站的角色。 在需要做通信压力测试时,这比写 Python 脚本简单得多:不用装 pyserial、不用写轮询循环,在 SuperCom 的界面里配好命令序列点「开始」就行。 3.3 3Mbps 高速波特率 —— 什么时候用得上 Modbus RTU 的标准波特率到 115200 就到头了,很多设备甚至只支持到 38400。那 3Mbps 有什么用? 两个场景: 固件下载:一些 MCU 的 Bootloader 通过串口烧录固件,支持高速波特率。SuperCom 的文件发送功能配合 3Mbps,一个 256KB 的固件几秒钟传完。普通串口助手在 115200 下要传半分钟。 非 Modbus 的高速传感器:有些激光测距仪、高速 ADC 模块通过串口以 2Mbps+ 输出原始采样数据。这种场景下,SuperCom 是少数能稳定支持的免费工具。 四、ATK-XCOM / LLCOM / COMTool / SuperCom —— 四工具定位 对比维度ATK-XCOMLLCOMCOMToolSuperCom最佳场景单路 Modbus 校验收发脚本自动化多协议跨平台+可视化作图多串口并行监控多串口同时❌ 单窗口单串口❌ 单窗口单串口❌✅ 核心能力最高波特率1382400驱动限制驱动限制3Mbps(实测)内置 CRC✅(协议传输模式)❌(Lua手写)❌(Python插件)❌脚本/插件❌✅ Lua 5.3✅ Python✅ .NET 插件日志增量保存❌❌❌✅语法高亮❌❌❌✅(自定义规则)跨平台WindowsWindowsWin/Mac/Linux/PiWindows 四工具的配合方案: 到 Modbus 现场的调试工具箱里应该装四个: ATK-XCOM → 日常的单路 Modbus 收发和 CRC 校验,零门槛上手 LLCOM → 需要自动化的时候写 Lua 脚本,支持 TCP/MQTT 多协议联动 COMTool → Mac/Linux 现场用,需要传感器波形实时查看时切过去 SuperCom → 多路 RS-485 并行监控——这个场景只有它能做 四个都是免费的。 五、获取和安装 5.1 下载 GitHub:https://github.com/SuperStudio/SuperCom Windows 下从 Releases 下载编译好的版本直接运行。同时建议关注 GitHub Issues 了解已知问题和更新。 5.2 系统要求 Windows 7 及以上 .NET Framework 4.7.2 或更高运行环境(Windows 10/11 自带) 虚拟串口功能需要兼容 com0com 驱动(管理权限运行) 5.3 第一步操作 打开 SuperCom → 点 串口1 标签 → 选 COM 口 → 设波特率 → 点「连接」→ 发送区输入数据 → 发送。要加第二个串口,点 串口2 标签,重复操作。两个串口在同一个窗口内独立工作。 SuperCom 的生态位特别窄但特别清晰:就是多串口同时监控 + 高速率。在其他维度上——单串口收发不用它(ATK-XCOM 更针对 Modbus)、脚本自动化不用它(LLCOM 的 Lua 更强)、跨平台不用它(COMTool 全平台)。 但当你需要一边盯温度传感器、一边盯流量计、一边盯阀门控制器的数据时,SuperCom 是唯一的选择。 本站提供 SuperCom 国内下载渠道和 Modbus 调试串口工具包合集,会员免费。需要同时监控多路 RS-485 的,这工具能省你一个三窗口切换的下午。 有问题再聊。 --- ### 365. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus主站模拟器是一款专业通信测试工具,专为工业自动化、物联网系统、智能设备等领域的开发、调试及运维人员设计。本工具完整模拟Modbus主站(客户端)通信行为,支持对各类Modbus从站设备(如PLC、仪表、传感器、变频器等)进行数据读写、设备控制与通信分析,是硬件开发、软件测试、系统集成及现场调试过程中不可或缺的专业伙伴。 专业功能架构详解 1. 多模式通信配置 工具采用模块化通信配置设计,支持工业现场主流的通信方式: TCP/UDP网络通信模式:适用于基于以太网的现代工业网络 支持标准Modbus TCP协议(默认端口502) 支持UDP协议快速通信 可自定义目标设备IP地址与端口号 本地回环测试地址(127.0.0.1)支持本地仿真测试 RTU串行通信模式:兼容传统串行通信设备 支持COM端口选择与配置 波特率可调范围:支持9600、19200、115200等标准速率 完整串口参数配置:数据位、停止位、奇偶校验 适用于RS-232、RS-485等物理接口 2. 完整协议功能实现 工具实现了Modbus协议中最核心且常用的功能码,覆盖设备调试的各类需求: 数据读取功能: 01功能码 - 读取线圈状态:读取从站设备的离散输出状态(ON/OFF) 03功能码 - 读取保持寄存器:读取从站设备的保持寄存器数值(16位) 数据写入功能: 05功能码 - 写入单个线圈:控制单个输出点的开关状态 0F功能码 - 写入多个线圈:批量控制多个输出点状态 10功能码 - 写入多个寄存器:批量写入保持寄存器数值 3. 智能数据管理与显示 工具提供专业的数据操作界面,支持灵活的数据编辑与多种显示格式: 地址范围配置: 起始地址与数量设置,支持批量操作 地址偏移量自动计算 最大支持单次操作64个数据点 多格式数据显示: 二进制(Binary)显示:直观查看每一位状态 十进制(Decimal)显示:标准数值表示 十六进制(Hex)显示:原始通信数据分析 整数格式:适合多数值场景 数据操作功能: 数据表格直接编辑 批量清空功能 数据导入/导出,支持外部数据交换 应用设置实时生效 4. 专业通信监控与分析 工具集成了完整的通信监控系统,提供深度的通信过程分析: 实时通信日志: 完整记录所有请求与响应数据帧 时间戳标记,精确到毫秒 原始报文与解析结果同步显示 支持日志暂停与清空 通信状态监控: 连接状态实时显示 数据交换统计 异常错误代码提示 通信超时检测 典型应用场景 1. 设备开发与测试 设备功能验证:在设备研发阶段,验证Modbus通信接口的正确性与稳定性 协议一致性测试:确保设备完全遵循Modbus协议标准 压力测试:模拟高频数据请求,测试设备的通信负载能力 边界测试:测试设备在异常地址、异常数据情况下的处理机制 2. 系统集成与调试 上位机软件调试:配合SCADA、HMI等上位机软件,调试通信链路 多设备组网测试:测试主站与多个从站设备的协同工作 协议转换测试:验证Modbus网关、协议转换器的数据准确性 冗余系统测试:测试主备系统的通信切换与数据同步 3. 现场运维与诊断 设备故障诊断:快速定位通信故障点(硬件、软件、配置问题) 设备参数读取:现场读取设备运行参数,无需专用软件 设备控制验证:测试控制指令的准确性与响应速度 通信质量评估:评估现场通信网络的质量与稳定性 4. 技术培训与教学 协议原理教学:可视化展示Modbus协议通信过程 故障排查训练:模拟各类通信故障,培训排查技能 设备操作培训:安全地培训设备调试与操作方法 通信安全演示:展示通信安全的重要性与防护措施 总结 Modbus主站模拟器不仅是一个通信测试工具,更是连接数字世界与物理设备的专业桥梁。它将复杂的工业通信协议转化为直观的可视化操作,将繁琐的调试过程简化为高效的工程实践。无论是面对简单的设备点检,还是复杂的系统集成,本工具都能提供专业、可靠、高效的技术支持,是现代工业通信工程师工具箱中的核心装备。 在数字化转型与工业互联网快速发展的今天,掌握专业的通信调试能力已成为工程技术人员的必备技能。Modbus主站模拟器正是为此而生——它不仅简化了今天的工作,更赋能了明天的创新。 小程序版调试工具,免费试用!!! --- ### 366. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 概述 Modbus从站模拟器是一款专为工业自动化、物联网及嵌入式系统开发人员设计的专业测试工具。它能够模拟真实的Modbus从站设备,帮助用户在无需实际硬件的情况下,快速完成通讯协议测试、数据交互验证及系统集成调试,大幅提升开发效率与测试便捷性。 核心功能亮点 1. 多协议支持,灵活适配 TCP/UDP/RTU全覆盖:支持Modbus TCP、UDP及RTU三种主流通讯模式,适应从网络到串口的各类应用场景。 端口与参数自由配置:可自定义端口号、波特率、数据位、停止位及奇偶校验,轻松匹配目标主站设置。 2. 从站仿真与数据模拟 从站ID自定义:支持设置从站地址(默认1),模拟多个从站设备。 数据表格自由编辑:提供清晰的地址-数值输入表格,用户可直接修改寄存器/线圈地址与对应数值,实时模拟从站数据响应。 格式与功能选择:支持多种数据展示格式,并集成常用功能码操作,满足读写测试需求。 3. 实时监控与日志记录 通讯状态一目了然:通过“监听”/“断开连接”按钮控制模拟器运行状态。 完整日志记录:底部通信日志区实时显示数据交互详情,支持问题追踪与数据分析。 4. 用户友好体验 界面简洁清晰:采用浅灰背景与深绿标题栏,布局规整,重点突出。 操作直观高效:参数集中配置,数据与日志同屏展示,支持一键导入配置,降低使用门槛。 典型应用场景 开发阶段测试:在PLC、SCADA或上位机软件开发中,模拟从站设备进行协议联调。 教学与培训:用于Modbus协议教学,直观展示数据帧与响应逻辑。 故障诊断:当实际从站设备出现通讯问题时,可用本工具替代以定位主站或网络故障。 系统集成验证:在多个设备集成前,预先验证主站系统的数据读写逻辑是否正确。 小程序版,免费使用!!! --- ### 367. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 小程序版,免费使用!!! 软件概述 空调网关测试系统软件V1.2022.325.10 是由IRACC开发的专用调试工具,用于其多品牌中央空调智能网关的通信配置、指令测试及固件升级。该软件通过直观的图形化界面,支持多协议通信接口(RS485/TCP/UDP)与网关交互,实现空调设备的远程控制与状态监控,是网关部署与运维的核心工具。 核心功能模块 2.1 通信接口管理 通信方式功能描述适用场景串口通过RS485物理接口连接网关本地调试、无网络环境部署TCP基于IP网络的稳定长连接通信远程控制、楼宇BA系统集成UDP低延迟广播式通信多设备批量指令下发 端口配置: 支持1~64个虚拟通道配置,适配多网关并行测试需求。 波特率(1200~115200bps)、校验位(None/Even/Odd)、数据位(8位)可自由设定,兼容不同品牌空调协议。 2.2 指令测试与参数设置 指令库集成: 内置标准Modbus指令集(功能码01/03/05/06/10等),支持空调开关控制、模式切换(制冷/制热/送风)、温度调节(16℃~30℃)、风速设置(低/中/高)等操作。 自定义指令编辑:用户可手动输入16进制指令,支持CRC校验自动生成(点击“计算CRC值”按钮)。 实时反馈: 空调状态监控:实时显示当前空调运行状态(如“关”“制冷中”)。 收发指令日志:记录所有发送与接收的原始数据帧,便于故障排查。 2.3 程序更新与维护 固件升级: 支持本地固件包(.bin文件)上传,一键完成网关固件升级。 升级过程可视化:进度条显示刷写进度,异常中断自动回滚。 故障诊断: 内置故障代码库(如E1通信超时、E2校验错误),提供针对性解决方案。 支持日志导出(.txt格式),供技术团队深度分析。 软件界面操作指南 3.1 主界面布局 通信方式选择区:切换串口/TCP/UDP,配置端口号与协议参数。 指令操作区: 空调设置:快捷按钮控制开关、模式、温度、风速。 发送指令:手动输入或选择预设指令后点击发送。 状态显示区:实时反馈空调状态、通信连接状态(如“已连接COM3”)。 系统工具区:固件升级入口、CRC计算器、日志导出功能。 3.2 操作流程示例(以TCP通信为例) 连接网关: 选择“TCP”通信方式,输入网关IP地址(如192.168.1.100)与端口号(默认33098)。 点击“打开连接”,状态栏显示“TCP连接成功”。 发送控制指令: 点击“模式设置”选择“制冷”,温度设为25℃,风速设为“中档”。 点击“发送指令”,日志区显示发送帧01 06 00 01 00 03 48 0B。 监控反馈: 空调状态区更新为“制冷中”,接收帧01 06 00 01 00 03 48 0B表示执行成功。 兼容性与扩展能力 4.1 多品牌支持 拨码适配:软件自动识别网关拨码配置(参考表格1),无需手动切换协议。 预设模板:针对大金、日立、格力等17个品牌提供专用指令模板,降低配置复杂度。 4.2 智能家居系统集成 Modbus TCP透传:通过网口将网关接入第三方智能中控(如KNX、Control4),实现空调与灯光、安防系统联动。 API开放:提供HTTP接口文档,支持定制化集成至私有物联网平台。 技术优势 高效调试:批量指令下发、多通道并行测试,提升运维效率50%以上。 高可靠性:CRC校验、指令重发机制保障通信稳定性,误码率<0.001%。 易用性设计:图形化界面、一键化操作,无需专业编程知识即可上手。 --- ### 368. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、软件概述 1.1 功能简介 卓岚ZLVirCom 是一款由上海卓岚信息科技有限公司开发的虚拟串口与设备管理工具,专为串口设备的网络化管理设计。支持以下功能: 虚拟串口绑定:将物理串口设备通过以太网映射为计算机虚拟串口(如COM2、COM3),实现远程控制。 设备集中管理:支持自动搜索局域网内的卓岚设备(如NETCOM系列串口服务器、ZLSN联网模块),并批量修改设备参数。 跨网络通信:设备可通过局域网或互联网连接,突破传统串口15米距离限制。 适用场景:工业自动化、远程数据采集、多设备集中监控等场景。 1.2 核心优势 扩展性强:单台计算机最多支持252个虚拟串口,轻松管理多设备。 零代码改造:用户无需修改原有串口设备硬件或应用程序,直接通过虚拟串口通信。 智能连接:设备上线自动检测并绑定,支持断线重连。 兼容性高:支持二进制数据传输、动态适应串口协议(如第9位校验),兼容485总线模式。 二、安装与配置 2.1 安装步骤 权限准备:以管理员身份登录Windows系统(支持Win98/2000/XP)。 运行安装程序: 插入安装光盘,运行 软件\卓岚 VirCom\Setup.exe。 若已安装旧版本,需先卸载(提示见下图)。 完成安装: 按默认路径安装(建议保留C:\Program Files\ZLVirCom)。 重启计算机后,防火墙可能拦截程序,需点击“解除阻止”。 注意:安装后任务栏将显示ZLVirCom图标,双击可打开主界面。 2.2 卸载方法 右键点击任务栏ZLVirCom图标,选择“退出”。 通过开始菜单运行 Uninstall ZLVirCom,确认后完成卸载。 三、使用教程 3.1 虚拟串口管理 3.1.1 查看串口 点击主界面“串口管理”按钮,查看已创建的虚拟串口列表。 状态说明: 未绑定:串口未关联设备。 不在线:设备已绑定但未连接网络。 设备名称:显示绑定的在线设备。 3.1.2 添加串口 点击“添加”按钮,选择可用的COM端口(如COM2)。 特殊需求:若需替换硬件COM1,直接添加同名虚拟串口,系统将保留两者(硬件COM1仍可通过超级终端访问)。 3.1.3 删除串口 选中目标串口,点击“删除”按钮。 注意:若串口被占用(如应用程序未关闭),需终止相关进程后重试。 3.2 设备管理 3.2.1 自动搜索设备 点击“设备管理” > “自动搜索”,软件将扫描局域网内所有卓岚设备(含IP冲突设备)。 自动更新:默认每10秒刷新设备列表。 3.2.2 手动添加设备 点击“手动添加”,输入跨网关设备的IP地址(如外网设备)。 3.2.3 绑定设备与串口 双击设备进入编辑界面,选择虚拟串口(如COM2)。 点击“修改设置”保存,设备重启后生效。 3.3 主界面操作 3.3.1 设备-虚拟串口对 主界面显示所有绑定关系及状态(如“已连接”或“未连接”)。 数据转发:启动服务后,虚拟串口与设备实时通信。 3.3.2 启动/停止服务 启动服务:点击工具栏按钮,所有绑定设备进入工作状态(需设备设为TCP Server模式)。 停止服务:终止所有通信链路,释放资源。 四、常见问题解答 虚拟串口无法删除:确保无程序占用(如串口调试工具、超级终端)。 设备搜索失败: 检查设备供电及网络连接。 跨网关设备需手动添加IP。 数据传输异常:关闭串口流控制(如超级终端中设为“无”)。 小程序版,免费试用!!! --- ### 369. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在电力行业,数据通信的准确性和可靠性对于系统的稳定运行至关重要。随着智能电网技术的发展,电能表和数据采集设备的通信协议变得日益复杂。在这样的背景下,一款能够高效解析和模拟各种电力行业通信协议的软件显得尤为重要。国南网报文解析V9.9正是这样一款专为电力行业工程师和开发者设计的软件,它以其强大的功能和便携的使用体验,成为了电力行业通信测试和开发的理想选择。 核心功能 多协议支持 国南网报文解析V9.9支持多种电力行业通信协议,包括但不限于: 698.45报文解析:支持解析和模拟IEC 698.45标准报文。 南网规约报文解析:专门针对南方电网的通信规约进行解析。 376.2报文解析:支持解析IEC 376.2标准报文。 376.1规约帧结构解析:解析IEC 376.1标准的帧结构。 645.07表规约帧结构解析:针对DL/T 645-2007协议的帧结构进行解析。 101规约报文解析:解析CDMA 101规约报文。 104规约报文解析:解析CDMA 104规约报文。 模拟主站功能 软件提供了698.45模拟主站功能,允许用户模拟主站与从站之间的通信,这对于测试和验证系统在实际运行中的性能至关重要。 规约示例报文 内置多种规约的示例报文,用户可以一键打开并进行学习和测试,极大地提高了工作效率。 数据库查看与查询 软件集成了SQLite数据库查看与查询功能,方便用户对数据进行管理和分析。 时间与数据转换 提供UTC/LINUX时间转换以及各类型数据转换功能,确保数据的准确性和一致性。 ASCII码转换 支持ASCII码转换,方便用户在不同编码体系间进行数据转换。 便携性与易用性 国南网报文解析V9.9采用单文件免安装设计,用户可以随时随地存储和使用,无需复杂的安装过程。这种便携性使得它成为出差旅行的必备工具,无论是在办公室还是在现场,都能快速投入使用。 结论 国南网报文解析V9.9是一款功能全面、使用便捷的电力行业通信测试工具。它支持多种通信协议的解析和模拟,提供了丰富的附加功能,如数据库管理、时间数据转换等,极大地提高了电力行业工程师和开发者的工作效率。无论是在开发测试还是在现场调试,国南网报文解析V9.9都是您值得信赖的伙伴。 小程序版调试软件,免费使用!!! --- ### 370. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 虚拟电表软件V2.5.2是一款专为电力行业设计的先进软件,它集成了DL/T645-1997规约、DL/T645-2007规约、上海规约以及BNC智能终端规约,为用户提供了一个功能强大、灵活多样的虚拟电表模拟环境。本文将对这款软件进行全面解析,介绍其主要功能、操作说明以及应用场景。 一、软件概述 虚拟电表软件V2.5.2通过模拟电表的各种行为,帮助用户进行电表测试、校验和调试。它支持多种通信规约,能够满足不同用户的需求。软件界面友好,操作简便,即使是非专业人员也能快速上手。 二、主要功能 电表参数设置: 功能类:包括中继测试、侦听测试、白名单测试、黑名单测试、区间表单测试和不识别表号等功能。这些功能使得软件能够模拟电表在不同场景下的行为,如中继测试只针对TCT监控模块虚拟表模式,侦听测试则可针对不同类型的TCT模块进行数据解析。 命令类:如设置底度,用于设置电量的底度值。 使能类:包括前导符FE、编程开关、支持跨相、通道芯片、长帧测试、自设回复和循环回复等选项。这些使能项允许用户根据实际需求定制电表的响应方式。 事件上报功能: 用户可以自定义事件上报的命令、响应、取消和结束框内容,方便进行事件监控和处理。 支持硬件和软件两种设置方式,满足不同应用场景的需求。 快捷键操作: 提供ALT+S和ALT+A等快捷键,方便用户快速切换串口波特率和循环回复状态。 可变速率: 支持从1200、2400、4800到9600bps的自动变速,根据应答次数自动调整速率。 命令选择: 用户可以自定义哪些命令响应,哪些命令不响应,提高测试的灵活性。 提示说明: 软件开启时,提供操作记录提示,帮助用户更好地了解软件应用条件。 645显示与延时选择: 只处理DL/T645协议报文,并提供响应延迟、字节延迟和首字节后延迟等选项,满足不同的测试需求。 鼎信显示与不解析: 在侦听测试模式下,可以选择显示并解析鼎信协议报文或仅显示报文。 自定义数据: 允许用户按测试要求填写645数据项内容,提高测试的针对性和准确性。 组命令帧: 提供命令发送组帧窗口,支持模拟通道芯片下的设备作为主动发起方,方便用户进行复杂的通信测试。 三、应用场景 虚拟电表软件V2.5.2广泛应用于电力行业的电表测试、校验和调试过程中。它可以帮助用户模拟电表在不同场景下的行为,验证电表的通信性能和准确性。同时,软件还支持多种通信规约和自定义功能,使得它能够满足不同用户的需求。 四、总结 虚拟电表软件V2.5.2是一款功能强大、操作简便的电力行业软件。它集成了多种通信规约和自定义功能,为用户提供了一个全面、灵活的虚拟电表模拟环境。无论是电表测试、校验还是调试,这款软件都能为用户提供有力的支持。相信在未来的电力行业发展中,虚拟电表软件V2.5.2将发挥更加重要的作用。 小程序版,免费试用!! --- ### 371. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化和楼宇管理系统中,Modbus协议扮演着至关重要的角色。它是一种应用层协议,主要用于工业环境中的电子设备之间的通信。为了确保这些系统的有效运行和维护,测试和模拟工具变得必不可少。QModMaster正是这样一款强大的工具,它提供了一个直观的界面,使得模拟Modbus TCP和RTU通信变得简单而高效。 功能亮点 支持Modbus TCP和RTU QModMaster不仅支持Modbus TCP通信,还能够模拟RTU协议。这种灵活性使得它能够适应不同的网络环境和设备需求。 直观的图形用户界面 用户可以通过一个友好的图形界面轻松配置和发送Modbus请求。无论是读取还是写入操作,QModMaster都提供了简单直观的操作方式。 灵活的数据显示 数据以表格形式展示,支持十进制和十六进制的显示格式,用户可以根据需要对数据进行排序和筛选,使得数据分析更加便捷。 实时监控 QModMaster的实时监控功能允许用户持续跟踪设备的寄存器数据变化,这对于实时监控系统状态和快速响应系统变化至关重要。 导入和导出功能 支持Modbus配置和数据的导入导出,使得配置的共享和备份变得简单,方便用户在不同的测试环境之间迁移配置。 结论 QModMaster是一个强大的Modbus主站模拟器,它通过提供直观的界面和强大的功能,使得Modbus通信的测试和模拟变得简单。无论是在开发阶段还是在维护过程中,QModMaster都是一个不可或缺的工具。它的开源特性和灵活的配置选项,使其成为工业自动化和楼宇管理系统工程师的理想选择。 小程序版,免费试用!!! --- ### 372. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Web Serial Online:串口调试的新时代 在数字化不断进步的今天,开发者和工程师面对单片机如ESP8266、ESP32以及RS485设备的调试任务时,往往需要便捷而高效的工具。我们最近推出的浏览器插件——Web Serial Online,旨在简化这一流程,提供一个无缝且直观的解决方案。 即插即用的高效工具 通过简单的几步操作,你可以开始使用Web Serial Online: 访问Google Chrome 商店下载并安装插件。 安装完成后,点击浏览器右上角的USB图标启动插件。 在操作界面配置串口通信参数:波特率、数据位、停止位等然后点击选择串口。 4. 选择串口后,点击“打开串口”按钮开始通信。 功能全面,操作简单 插件的界面设计直观,使得设定和操作过程非常简洁明了。你可以轻松进行以下操作: 串口通讯配置:根据需求自定义设置。 数据发送和接收格式支持:包括HEX和ASCII。 本地保存配置:便于下次打开时恢复之前的设置。 支持ESP32的常用AT指令及自定义指令。 导入和导出配置,方便数据管理。 循环发送指令和分包超时的自定义调整。原创作者 CSDN@拿我格子衫来 面向未来的串口调试 “Web Serial Online”不仅提供了传统的串口调试功能,还通过浏览器插件的形式,实现了跨平台使用,不受地点和设备的限制。无论是硬件开发、学术研究还是业余爱好,这款工具都能提供强大的支持,帮助你有效地完成调试任务。 现在就访问Chrome网上应用店,搜索“Serial”,下载“Web Serial Online”,开启你的高效串口调试之旅! 如果你有什么串口通讯类的需求欢迎在文章下方留言,我做到插件里。 小程序版调试工具,免费试用!!! --- ### 373. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 概述 友善串口调试助手是一款功能全面、操作简便的串口通信调试工具,专为工程师和开发者设计,以满足在串口通信调试过程中的各种需求。它支持多种串行通信协议和设备,提供实时数据监控、记录和分析功能,是串口通信领域的得力助手。 主要特色 实时数据监控与记录 支持连接到COM端口并实时监控数据流。 所有通过监控端口的数据将显示在多种视图中,便于问题追踪。 数据重定向与复制 能够将监控数据重定向到指定文件或复制到剪贴板。 多端口同时监控 独特功能支持在一个会话中同时监控多个COM端口。 数据以先进先出的方式记录在单一日志中,便于分析。 支持Modbus协议 支持Modbus RTU和Modbus ASCII协议,帮助用户读取和分析Modbus数据。 功能介绍 串行端口通信 支持RS232、RS485和RS422等串行端口通信标准。 数据发送与接收 支持异步发送和接收数据。 多端口支持 支持在一个会话中监控多个端口,收集不同设备间的交互数据。 协议支持 支持Modbus RTU和Modbus ASCII协议,简化与RS485/RS422/RS232设备的连接和数据分析。 用户界面与操作 提供二进制面板和终端窗口,支持远程访问。 结构化数据输入面板,适应特定用户数据需求。 支持文本、十六进制和十进制格式的数据发送、接收和查看。 自动化与定时任务 自动以指定间隔发送数据。 根据自动发送规则发送单个数据和组数据。 数据校验 内置校验和功能,包括奇偶校验、模数和校验等。 数据管理 有组织的数据列表,支持与多个发送数据列表工作。 支持从文本、十六进制和十进制文件创建发送数据列表。 便捷操作 支持数据复制和粘贴,拖放操作以打开发送数据列表。 自动检测所有可用的COM端口。 日志与保存 自动保存日志文件,方便后续分析和回顾。 软件特点 波特率自定义 支持自定义波特率,包括非标准波特率。 串口自动识别 自动搜索并识别串口,简化设置过程。 数据显示与转换 接收数据显示支持十六进制和ASCII格式切换。 支持ASCII和Hex数据转换。 定时与自动化 定时发送数据功能,提高工作效率。 日志缓冲与时间戳 支持日志缓冲,记录更多数据。 支持时间戳功能,显示发送和接收数据的时间。 结语 友善串口调试助手以其强大的功能和用户友好的设计,成为工程师和开发者在串口通信调试过程中不可或缺的工具。无论是实时监控、数据记录、多端口管理还是自动化任务,友善串口调试助手都能提供高效、可靠的解决方案。立即下载体验,提升您的工作效率。 手机小程序版,免费试用!!! --- ### 374. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 建大仁科RS485参数配置工具V5.0.7.5是一款专为建大仁科品牌设备量身定制的软件工具,它能够高效地对建大仁科生产的各类传感器和监测设备进行参数配置和调试,确保设备的性能达到最佳状态。 应用领域 工业自动化:为建大仁科工业自动化设备提供精确的参数设置。 环境监测:适用于建大仁科环境监测设备,实现数据的实时采集与分析。 智慧农业:支持建大仁科智慧农业设备,优化农业资源管理。 水文灾害监测:为建大仁科水文灾害监测设备提供稳定可靠的参数配置。 主要功能 温湿度监测设备配置 针对建大仁科温湿度传感器,提供精确的参数设置。 单温度监测设备配置 为建大仁科单温度传感器提供专业的配置支持。 气体、水质监测设备配置 支持建大仁科气体和水质监测设备,确保监测数据的准确性。 环境监测设备配置 集成建大仁科气象站、光照度、紫外线、辐射等多种环境监测设备配置。 土壤墒情与虫情监测设备配置 为建大仁科土壤墒情监测设备和虫情监测设备提供专业配置。 GNSS位移监测设备配置 支持建大仁科GNSS位移监测、倾角、GPS定位设备,适用于精密监测。 智能无线灌溉与植物性状仪器配置 为建大仁科智能无线灌溉系统和植物性状仪器提供高效配置。 在线式水质监测与实验室仪器配置 支持建大仁科在线式水质监测变送器和实验室仪器,确保水质监测的精确性。 传感器与变送器系列配置 提供建大仁科传感器和变送器的全面配置选项。 特殊监测设备配置 包括建大仁科六氟化硫监测、空调控制器、水浸监测等特殊监测设备的配置。 油烟与噪声监测设备配置 支持建大仁科油烟检测系统和噪声监测站,保障环境监测的全面性。 建大仁科专用RS485参数配置工具V5.0.7.5以其专业的配置能力、稳定的性能和用户友好的设计,成为建大仁科设备用户的理想选择。无论是在工业自动化、环境监测还是智慧农业等领域,该工具都能提供高效、可靠的设备管理支持。 手机小程序版,免费试用!!! --- ### 375. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 HslCommunication 概述HslCommunication 是一个多功能的通信库。HslCommunication 不仅能够实现与各种工业设备如PLC、机器人、远程I/O、传感器和执行器、仪表等的数据通信,还能支持不同程序之间的数据交换,包括不同编程语言(如C#、Java、Python)编写的程序之间的通信,以及程序与网页、本地电脑与云服务器之间的数据传输。因此,HslCommunication 可以被视为一个强大的数据通信工具,适用于多种场景和需求。此软件不只是可以作为调试助手,还可以调用HslCommunication.dll通讯库进行上位机编程,此库包含了几十种通讯协议,使用起来效率杠杠的。 功能特点 多协议支持:HslCommunication 支持 S7、三菱、汇川、欧姆龙、倍福、TCP/IP、Modbus、MQTT 等多种通讯协议,为工业设备间的通信提供了广泛的兼容性。 跨平台能力:基于 .NET Core/5/6/7,HslCommunication 能够在 Windows 和 Linux 平台上运行,实现了真正的跨平台能力。 易于集成:作为 DLL 库,HslCommunication 可以轻松集成到各种上位机项目中,简化了开发流程。 强大的文档和社区支持:提供详尽的在线文档和 API 文档,以及活跃的社区支持,帮助用户快速掌握和解决问题。 企业级授权:提供企业商用授权,确保了软件的合法性和长期更新支持。 使用场景 HslCommunication 可用于构建各种应用程序,从简单的通信软件到复杂的 ERP 系统、MES 系统等。它支持在多种开发环境中使用,包括 Visual Studio、Visual Studio Code、IntelliJ IDEA、Eclipse、Labview 和 Android Studio 等。 使用 HslCommunication 的优点 简化开发:HslCommunication 封装了网络通信的细节,减少了开发代码,让开发者能够专注于业务逻辑。 灵活性:支持 C# 的基础数据类型,并提供跨平台的部署能力。 广泛的企业采用:已有近百家企业和大学在使用 HslCommunication,其在 NUGET 上的下载量超过 20 万次。 支持的品牌及功能 HslCommunication 不仅支持多种 PLC 品牌的通信,还支持机器人及其他设备的数据通信,如身份证阅读器、MQTT 协议、Websocket 协议和 Redis 实时数据库等。 辅助实现工厂智能化 HslCommunication 可辅助实现从单设备数据采集到全自动排程系统的智能化工厂。它支持实现数据监控、设备控制、工艺数据管理等关键功能。 结语: HslCommunication 以其强大的功能、灵活性和易用性,成为工业自动化领域通信的优选解决方案。它不仅简化了开发过程,还提高了项目的稳定性和可靠性。随着工业4.0的不断深入,HslCommunication 将继续支持企业和开发者构建更加智能和高效的工业系统。 手机小程序版,调试软件免费试用!!! --- ### 376. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化和智能设备领域,Modbus协议作为一种广泛使用的通讯协议,对于设备的调试和维护至关重要。Modbus调试助手正是为了满足这一需求而设计的绿色免费工具,它以其实用性和易用性,为用户提供了一个功能全面的Modbus RTU串口调试平台。 软件功能概览 Modbus调试助手的核心功能包括但不限于以下几点: 设备调试:支持调试所有采用Modbus协议的设备。 定时发送:用户可以设置定时发送的数据及时间间隔,实现自动化测试。 数据自动显示:自动显示接收到的数据,无需手动刷新。 指令发送:支持直接发送指令,无需键入参数,简化操作流程。 软件特点 Modbus调试助手的特点体现在以下几个方面: 多通信方式支持:支持串口(如RS-232、RS-485)和网络(如TCP/IP)通信,适应不同设备和环境。 灵活的数据包处理:用户可以发送各种Modbus命令,并实时接收响应数据,深入了解通信过程。 数据解析与展示:将原始数据解析为易于理解的格式,以表格、图表等形式展示。 简易配置:通过简单配置实现Modbus主站与从站设备间的通信,进行读写操作。 通信数据记录:实时记录通信数据,便于问题排查和分析。 软件亮点 Modbus调试助手的亮点功能为用户提供了额外的便利: 自动应答与批量发送:支持自动应答和批量发送功能,显著提升测试效率。 连续发送功能:便于进行长时间的连续测试,适用于稳定性和耐久性测试。 设备自动识别:能够自动扫描识别相应设备,并显示品牌、型号等信息,快速定位设备。 实时数据展示:实时显示从设备读取的数据,方便分析和调试通信问题。 数据导出功能:支持将数据导出为CSV或Excel格式,便于数据分析、处理及团队分享。 结语 Modbus调试助手以其绿色免费的优势,结合强大的功能和直观的操作界面,已成为Modbus协议调试的优选工具。无论是在工业自动化还是智能设备开发领域,它都能为用户提供高效、便捷的调试体验。随着技术的不断进步和用户需求的增长,我们期待Modbus调试助手能够继续进化,为更多用户提供更加完善的服务。 小程序版,免费使用!!! --- ### 377. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在当今快速发展的科技领域,串口通讯作为一种基础且关键的通讯方式,在各种硬件设备和嵌入式系统中扮演着重要角色。卓岚串口调试工具以其高效稳定的特点,为开发者提供了一个强大的串口通讯解决方案。 卓岚串口调试工具是一款专为串口通讯设计的工具软件,它以其独特的功能和简便的操作,帮助用户轻松实现串口数据的接收和发送,极大地提高了开发和调试的效率。 主要特点 不丢包的稳定接收与发送:确保数据传输的完整性和准确性。 直接列出可用串口:简化串口选择过程,快速定位到需要的串口设备。 十六进制发送与接收:支持以十六进制格式进行数据的发送和接收,适应不同通讯协议的需求。 定时发送功能:允许用户设置定时任务,自动发送数据,减少重复性工作。 发送收到的数据:支持将接收到的数据重新发送,便于进行数据回传测试。 帧尾后发送:在接收到特定帧尾标识后自动发送数据,适用于特定通讯协议。 记忆串口参数:自动记忆上次使用的串口参数,省略重复配置的步骤。 绿色软件:无需安装,即开即用,减少系统资源占用。 功能详解 稳定的数据传输 卓岚串口调试工具的核心优势在于其稳定的数据传输能力。无论是在数据接收还是发送过程中,它都能保证数据的完整性,避免丢包现象,这对于确保通讯的可靠性至关重要。 便捷的串口管理 软件提供了直接列出所有可用串口的功能,用户可以轻松选择需要的串口设备进行通讯,无需手动搜索和配置,大大提高了工作效率。 灵活的数据格式支持 支持十六进制的数据发送和接收,使得卓岚串口调试工具能够适应多种通讯协议和数据格式,满足不同用户的需求。 高级发送功能 定时发送和帧尾后发送功能为用户提供了更多的灵活性。用户可以根据需要设置定时任务,或者在接收到特定的帧尾标识后自动触发发送,简化了通讯流程。 用户友好的设计 卓岚串口调试工具的设计注重用户体验,自动记忆上次使用的串口参数,使得每次使用时都能快速进入工作状态,无需重复配置。 绿色软件的优势 作为一款绿色软件,卓岚串口调试工具无需安装即可使用,这不仅减少了对系统资源的占用,也使得软件的携带和使用更加方便。 结语 卓岚串口调试工具以其高效稳定的数据传输、便捷的串口管理、灵活的数据格式支持、高级的发送功能以及用户友好的设计,成为了开发者在进行串口通讯时的理想选择。随着技术的不断进步,我们期待卓岚串口调试工具能够继续优化升级,为用户带来更加卓越的使用体验。 下载口令:www.modbus.cn --- ### 378. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在嵌入式开发和调试领域,拥有一款功能强大且易于使用的调试工具是至关重要的。野火多功能调试助手正是这样一款工具,它以其丰富的功能和用户友好的界面,帮助开发者高效地进行项目开发和调试工作。 野火多功能调试助手概览 野火多功能调试助手是一款集成了多种调试功能的软件,它支持串口、摄像头、网络和PID等多种调试方式。自2020年6月首次发布以来,该软件已经经历了几次重要的更新,包括增加Ubuntu版本下载和串口传输说明等。 版本历史 2020/6/21: 版本0.0.1,首次发布,标志着野火多功能调试助手的诞生。 2020/7/2: 版本0.0.2,增加Ubuntu版本下载,扩大了软件的适用平台。 2021/2/3: 版本0.0.3,增加串口传输说明,进一步丰富了软件的文档和帮助资源。 软件特性 野火多功能调试助手的设计理念是提供一站式的调试解决方案,它包含了以下几个核心组件: 串口调试助手:支持ASCII和HEX格式的数据展示和发送,具备日志模式、数据保存等功能。 摄像头调试助手:允许用户按照规定的通讯协议传输图像数据,支持JPEG数据直接传输和CRC校验。 网络调试助手:类似于串口调试助手,但增加了对网络通讯的支持,包括日志模式和自动发送功能。 PID调试助手:提供通道选择、发送PID值、目标值、周期等高级功能,并支持曲线缩放和数据导出。 二进制文件编辑器:允许用户直接编译和编辑16进制文件内容。 功能详解 串口调试助手 串口调试助手是野火多功能调试助手中的核心组件之一,它提供了以下功能: 数据展示:用户可以选择ASCII或HEX格式来展示接收到的数据。 数据发送:同样支持ASCII和HEX格式的数据发送功能。 停止显示:在调试过程中,用户可以随时暂停显示接收到的数据。 日志模式:在显示数据前自动打印时间戳,方便用户记录和分析数据流。 清空接收区:一键清空当前显示区域的全部数据,快速重置调试环境。 保存到文件:用户可以将接收区的数据保存到指定文件,支持.txt、.bin或.dat格式。 摄像头调试助手 摄像头调试助手专为图像数据传输设计,提供了以下功能: 协议传输:用户可以按照预定义的通讯协议来传输图像数据。 JPEG数据:支持直接发送JPEG格式的图像数据,无需添加任何额外的数据头或尾。 数据大端/小端:用户可以根据需要选择大端或小端模式来调整图像显示数据。 CRC校验:可选的CRC校验功能,确保数据传输的完整性和准确性。 设备数和地址:支持选择一个或两个设备模式,并配置相应的设备地址。 网络调试助手 网络调试助手扩展了调试助手的功能,使其能够处理网络通讯: ASCII/HEX:支持网络数据的ASCII和HEX格式展示和发送。 停止显示:允许用户在网络通讯过程中暂停显示接收到的数据。 日志模式:在显示数据前打印时间戳、发送端的IP地址和端口信息。 清空接收区:一键清空网络通讯的显示区域数据。 保存到文件:将网络接收区的数据保存到文件,支持多种文件格式。 PID调试助手 PID调试助手是针对PID控制算法调试的专用工具,具有以下功能: 通道选择:提供了5个PID通道供用户选择。 发送PID值:用户可以发送对应通道的PID值到下位机。 发送目标值:允许用户将目标值发送给下位机。 发送周期:用户可以发送周期值给下位机,周期单位由下位机决定。 曲线缩放:用户可以选择在曲线区域滚动滚轮时缩放的是X轴还是Y轴。 启动/停止:发送启动或停止指令给下位机。 发送复位指令:允许用户发送复位指令给下位机。 导出数据:用户可以将当前显示的数据导出到.csv表格格式文件。 二进制文件编辑器 二进制文件编辑器是野火多功能调试助手中的一个实用工具,它允许用户: 打开文件:直接编译文件内容,以16进制格式进行展示和编辑。 结语 野火多功能调试助手以其全面的功能和简便的操作,已经成为许多嵌入式开发者的首选工具。随着软件的不断升级和功能的持续完善,我们期待它能够为更多的开发者提供帮助,让开发过程更加高效和便捷。 回复口令下载:www.modbus.cn --- ### 379. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 软件简介:SinloCrc16 V1.1是一款专业的CRC校验工具软件,旨在为调试人员提供便捷的Modbus协议CRC校验解决方案。除了支持标准Modbus协议下CRC校验的运算外,该软件还提供了多种进制间的相互转换功能,满足用户在数据调试过程中的各种需求。 主要特点: Modbus协议CRC校验支持: SinloCrc16 V1.1能够根据给定的地址码、功能码、起始地址、数量等信息,快速准确地计算出CRC校验的高低位值,为Modbus协议的调试提供了极大的便利。 多种进制转换功能: 除了CRC校验功能外,该软件还提供了十进制、十六进制、二进制、八进制、ASCII码等多种进制之间的相互转换,帮助用户更方便地处理不同进制的数据。 使用示例:例如,对于Modbus协议下发读取数据指令:“01 03 10 00 00 02”,用户只需输入相应的地址码、功能码、起始地址、数量等信息,软件即可自动计算出CRC校验的结果值,为调试工作提供了极大的便利。 SinloCrc16是您调试Modbus协议的得力助手,不仅简化了CRC校验的计算过程,还提供了丰富的进制转换功能,助您轻松应对各种调试需求。立即下载体验吧! --- ### 380. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 软件简介:SinloModbus是一款专业的Modbus协议解析软件,致力于简化工业自动化领域中设备间数据通信的复杂性。作为一款轻量级软件,它不仅提供了标准Modbus协议03和04功能码指令的支持,还具备了强大的配置和稳定的数据采集功能。 主要特点: 支持多种功能码指令: SinloModbus V1.00支持标准Modbus协议的03和04功能码指令,轻松读取寄存器数据,确保您的数据通信高效顺畅。 灵活的配置选项: 用户可以自由配置读取的寄存器起始地址、数量,并可选择不同的数据显示方式,使数据解析更加灵活直观。 稳定高效的数据采集: 与其他类似软件相比,SinloModbus具有更稳定的数据采集机制,支持采集多个设备地址的数据,保证数据采集的稳定性和准确性。 简便的安装与操作: 安装过程简单快捷,只需双击运行setup.exe,即可完成安装。操作界面友好直观,即使是初学者也能轻松上手。 系统要求: 操作系统:Windows XP/7/2000/2003 软件依赖:.NET Framework 2.0或以上版本 总结 SinloModbus V1.00是您工业自动化领域数据通信的得力助手,快来体验它带来的便捷与高效吧! --- ### 381. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在当今快速发展的工业自动化和物联网(IoT)领域,通信协议的测试与调试是确保系统稳定运行的关键环节。Wu通讯调试工具作为一款专业的通信协议测试软件,以其强大的功能和用户友好的界面,为工程师和开发者提供了一个理想的测试平台。本文将详细介绍Wu通讯调试工具的特色功能和应用场景。 Modbus Rtu 自定义帧 Modbus Rtu 搜索设备 参数设置, 可选择多个波特率与校验方式 Modbus Rtu 数据监控 数据监控设置,可导出配置,方便下次快捷导入。 Modbus Rtu 自动应答 设置好匹配模板和应答模板,接收到数据与匹配模板相同时将自动发送应答模板 软件特色 支持ModbusRtu、Mqtt服务器、Mqtt客户端 Wu通讯调试工具支持多种通信协议,包括ModbusRtu、MQTT服务器和客户端,使其成为多协议环境下的理想选择。 界面色彩丰富 软件界面采用了丰富的色彩设计,不仅提升了视觉体验,也使得数据的读取和操作更为直观。 ModbusRtu自动解析数据帧 ModbusRtu模块能够自动解析和验证数据帧,极大地提高了调试效率。 智能防粘包,速度快也能解析 软件具备智能防粘包功能,即使在高速通信环境下也能准确解析数据,确保通信的稳定性。 功能介绍 Modbus Rtu 自动格式化解析和验证数据帧:简化了数据帧的处理流程,提高了数据处理的准确性和效率。 自定义帧支持自动校验:用户可以根据自己的需求定制数据帧,并利用自动校验功能确保数据的完整性。 搜索设备:支持多种组合设置,自动搜索设备,简化了设备发现和连接的过程。 数据监控:允许用户设置字节序、数据类型等,支持读取与写入操作,为数据监控提供了灵活性。 自动应答:在通信过程中自动应答,减少了手动操作,提高了响应速度。 Mqtt Server 本地Mqtt服务器:在本地开启MQTT服务器供客户端连接测试,方便了服务器端的测试和调试。 消息格式化查看:右键消息即可对JSON格式的数据进行格式化查看,提高了数据的可读性。 Mqtt Client Mqtt客户端连接:允许用户开启MQTT客户端连接到MQTT服务器,进行通信测试。 订阅管理:提供订阅管理功能,用户可以方便地订阅和取消订阅所需的主题。 消息格式化查看:同样支持右键消息对JSON格式数据的格式化查看,增强了用户体验。 Json格式化查看 Wu通讯调试工具还特别提供了JSON数据的格式化查看功能,这对于处理和分析结构化数据尤为重要。 应用场景 Wu通讯调试工具适用于多种场景,包括但不限于: 工业自动化测试:在工业自动化系统中,对ModbusRtu等协议进行测试和调试。 IoT设备开发:在物联网设备开发过程中,对MQTT等协议进行测试,确保设备间的通信顺畅。 通信协议教学:作为教学工具,帮助学生理解和掌握不同通信协议的工作原理和应用。 结语 Wu通讯调试工具以其全面的功能和直观的操作界面,成为了通信协议测试和开发的强大助手。无论是在工业自动化还是物联网领域,它都能提供高效的测试解决方案,帮助工程师和开发者优化通信流程,提升系统性能。 --- ### 382. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 西门子PLC读写软件是一个专为西门子PLC设计的以太网通信驱动程序。作为一个与西门子S7系列PLC设备进行交互的软件库,西门子PLC读写软件以其简洁高效的设计,为自动化和工业控制领域的开发者提供了强大的工具。 软件特点 兼容性:支持多种型号的西门子PLC,包括S7-200、S7-300、S7-400、S7-1200和S7-1500。 以太网连接:S7.Net仅支持通过以太网连接到具有Profinet CPU或Profinet外部卡(如CPxxx卡)的PLC。 连接管理:软件提供连接和断开PLC的功能,以及检查PLC可用性和连接状态的属性。 数据读写:用户可以读取和写入PLC的内存区域,包括输入、输出、内存、数据块、定时器和计数器。 高级功能:支持读取和写入单个变量、结构体、类,以及一次性读取或写入多个变量。 总结 西门子PLC读写软件作为一个功能全面、使用方便的PLC通信软件,极大地简化了与西门子S7系列PLC的交互过程。无论是对于工业自动化还是学术研究,西门子PLC读写软件都是一个值得考虑的宝贵资源。 --- ### 383. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 QModMaster是一款免费的、基于Qt的ModBus主站应用程序,它提供了一个图形用户界面,使得与ModBus RTU和TCP从站的通信变得简单直观。此外,QModMaster还包含一个总线监控器,用于检查总线上的所有通信活动。 软件基础 QModMaster基于libmodbus库实现ModBus通信,该库可以从libmodbus官网获取。同时,它还使用了QsLog库进行日志记录,QsLog的详细信息可以在QsLog的Bitbucket页面上找到。QModMaster支持Windows和Linux两大操作系统。 系统要求与下载 对于Windows用户,QModMaster提供了一个预编译的二进制文件,无需安装,只需解压缩后即可运行。 配置与使用 用户可以通过修改QModMaster.ini文件中的LoggingLevel来设置日志记录级别: TraceLevel: 0 DebugLevel: 1 InfoLevel: 2 WarnLevel: 3(默认) ErrorLevel: 4 FatalLevel: 5 OffLevel: 6 结语 QModMaster作为一个功能强大且用户友好的ModBus主站应用程序,无论是对于需要快速部署ModBus通信系统的工程师,还是对于希望深入了解ModBus协议的学者,都是一个不错的选择。 --- ### 384. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着网络技术的不断发展,越来越多的设备需要通过网络进行通信和控制。在这样的背景下,虚拟串口服务软件(USR-VCOM)应运而生,为用户提供了一种简便的解决方案,将TCP/IP连接、UDP广播映射成本地虚拟串口,实现了远程控制和数据传输等功能。 产品简介 USR-VCOM是一款功能强大的虚拟串口服务软件,主要功能包括将TCP/IP连接、UDP广播映射成本机虚拟串口。用户可以通过访问虚拟串口来完成远程控制、数据传输等操作。该软件结合了串口转网络设备,可以延长客户的串口线,使客户原有的本地串口控制功能得以延长,而无需修改原有串口程序。 主要用途 USR-VCOM主要用于延长客户的串口线,使得客户原有的本地串口控制功能得以延长,同时无需修改原有串口程序。 软件特点 支持多虚拟串口映射,最多可达255个。 支持TCP Client、TCP Serve、UDP等多种网络协议。 采用多线程架构,支持收、发及串口参数设置。 具备自动连接机制,无需担心远端设备复位或网络断线恢复后的特别处理。 提供实时虚拟串口数据传输监控功能。 集成设备探测和配置功能。 串口数据自动打包收发,实现透明传输。 本软件免费提供,用户无需支付任何费用。 支持win98以上x86/x64操作系统,包括win8。 产品架构 USR-VCOM软件的推出,为用户提供了一种便捷、高效的串口网络转换解决方案。无论是在工业控制领域还是智能家居领域,USR-VCOM都能发挥重要作用,为用户带来便利和效益。 手机小程序,免费试用!!! --- ### 385. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 简介 Commix 是一款功能强大的工业控制串口调试工具,专为满足工业控制设备通讯调试需求而设计。它拥有以下特点: 支持多种冗余校验方法,如 Modbus,并支持混合输入 16 进制数、10 进制数和 ASCII 字符。 可自定义任意通讯参数组合,随时改变参数而不用关闭串口。 支持测出设备响应间隔。 使用方便,界面友好。 功能 通讯参数设置 Commix 支持设置波特率、数据位、停止位、校验位、流控等常用通讯参数。此外,还支持设置不常用的波特率,如 115200bps、38400bps 等。 冗余校验 Commix 支持多种冗余校验方法,如 Modbus、CRC16、CRC32 等。用户可以根据设备的通讯协议选择合适的冗余校验方法。 混合输入 Commix 支持混合输入 16 进制数、10 进制数和 ASCII 字符。用户可以根据需要输入不同格式的数据。 实时显示 Commix 可以实时显示发送和接收的数据。用户可以方便地查看通讯数据。 数据保存 Commix 可以将通讯数据保存到 Rtf 文件,并将参数设置保存到 Reg 文件。 使用 Commix 的使用非常方便。用户只需设置好通讯参数,然后就可以发送和接收数据了。 设置通讯参数 在主界面上,用户可以设置波特率、数据位、停止位、校验位、流控等通讯参数。 发送数据 在主界面上,用户可以输入要发送的数据,然后点击 “发送” 按钮发送数据。 接收数据 Commix 会自动接收来自串口的数据。用户可以在主界面上查看接收到的数据。 优势 Commix 具有以下优势: 功能强大 Commix 支持多种冗余校验方法,并支持混合输入 16 进制数、10 进制数和 ASCII 字符。此外,还支持测出设备响应间隔。 易于使用 Commix 的界面友好,使用方便。用户只需设置好通讯参数,然后就可以发送和接收数据了。 免费使用 Commix 是一款免费软件。用户可以免费下载和使用。 应用 Commix 可广泛应用于工业控制、楼宇自动化、电力系统、数据采集等领域。 总结 Commix 是一款功能强大、易于使用、免费的工业控制串口调试工具。它是工业控制设备通讯调试的理想工具。 以下是一些 Commix 的常见问题解答: 问:Commix 支持哪些操作系统? 答:Commix 支持 Windows XP、Windows 7、Windows 8、Windows 10 等操作系统。 问:Commix 如何使用? 答:Commix 的使用非常方便。用户只需设置好通讯参数,然后就可以发送和接收数据了。 问:Commix 可以用于哪些领域? 答:Commix 可广泛应用于工业控制、楼宇自动化、电力系统、数据采集等领域。 推荐 如果您正在寻找一款功能强大、易于使用、免费的工业控制串口调试工具,Commix 是一个不错的选择。 --- ### 386. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 软件说明 ECOM串口助手是一款带 CRC  计算 的 串口(RS232) 调试软件。由我爱 IC 导航网工作室开发发 。ECOM串口助手支持常用的 110 ~ 921600bps 波特率,能设置校验、数据位和停止位, 能以 ASCII 码或十六进制接收或发送任何数据或字符(包括中文),能发送任意大小的文本文件,可以任 意设定自动发送周期,并能将接收数据保存成文本文件。带有文件或数据串的 Modbus CRC16校验、CRC16  校验、累加和校验、异或校验,Modbus LRC 计算工具,是工程师调试单片机串口的好助手工具。 软件界面 软件特点 1 、 支持 Windows 9x / 2000 / XP / 2003 / Vista / Win7 系统; 2 、 绿色软件,不需安装。运行解压软件,将压缩包解压到指定目录即可。卸载时只需将程序目录删除; 3 、 支持常用的 110 ~ 921600bps 波特率; 4 、 端口范围是 COM1-COM255,支持扩展端口(USB 转 RS232); 5 、 能设置校验、数据位和停止位; 6 、 能以字符或十六进制收发数据,支持中文字符的收发; 7 、 支持文件数据的发送; 8 、 数据发送区允许设置发送周期,自动发送数据; 9 、 支持键盘输入,将键盘数据发送到串口; 10 、支持定时保存接收窗口数据,便于查看长时间调试记录信息; 11 、有效的检测通讯错误,避免软件死机(如 USB 转串口设备拔出检测); 12 、数据接收窗口及文件发送均采用多线程设计。 13 、带有文件和数据帧 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验,ModebusLRC 计算工具。发送的数据帧可选添加计算结果,将校验结果连同数据帧一同打包发送出去。 1.3.1 V2.00 版本增加功能 1、添加 Xmodem 功能(128 个字节发送,只支持 CRC 校验)。 2、增加 Xmodem-1k 功能(1024 个字节发送,只支持 CRC 校验)。 3、支持命令启动 Xmodem-1k 功能(可以做自动传输文件功能)。 1.3.2 V2.20 版本增加功能 1、添加自定义数据帧头,数据帧尾功能。 2、添加数据帧 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验,ModebusLRC 等校验协 议。 3、添加数据包镜像回发功能。 4、添加接收对话框字体修改按钮。 5、添加转义符号选择。 6、支持命令串文件发送(具体见命令串文件模板使用说明)。 7、添加窗口总是浮在最前面按钮,添加命令串隐藏显示按钮。 1.3.3 V2.40 版本增加功能 1 、 增加 110 、300 、600 波特率。 2 、 修正接收窗体字体设置按钮功能,增加接收窗体背景色设置按钮。 1.3.4 V2.60 版本增加功能 1 、 增加“校验结果”按钮,实现文件或者数据帧的 ModebusCRC16 校验、CRC16 校验、累加和校验、 异或校验,ModebusLRC 的计算结果显示。 2、 1.3.5 V2.80 版本增加功能 1 、 修正校验算法数据类型。 2 、 增加部分 TTY 仿真终端调试协议,可以简单的调试 Linux 命令。 3 、 接收窗口可粘贴发送字符串命令。 4 、 增加 1Kxmodem,1Kxmodem autoget 接收文件功能。 5 、 增加终端控制命令,可以通过接收命令来控制调试串口的接收窗口。 软件使用说明 图 2  命令启动 Xmodem-1k 图 3  命令串文件发送 常规的使用 常规的使用比较简单,具体见图一说明,这里就不详细说明。 键盘数据发送 将鼠标光标放在接收框,然后输入键盘键值,ECOM 串口助手自动将键值发送到串口上。 1.4.3 Xmodem 与 Xmodem-1k Xmodem 与 Xmodem-1k 通讯协议详细见 Xmodem 规范,这里也不详细说明。 命令启动 Xmodem-1k 命令启动 Xmodem-1k 方法:选择常规串口设置后,文件传输选择“AutoSend”选项,当 ECOM 串口 助手软件接收到“<auto>+文件夹/文件名+</auto> ”命令,软件就会自动启动 Xmodem-1k 传输协议,并将 “<auto>+文件夹/文件名+</auto>”内指定的文件进行 Xmodem-1k 传输。命令中的文件夹连同文件一起放 在 ECOM 串口助手软件的通一个目录下。 命令串文件发送 ECOM 串口助手 V2.20 版本以上支持该功能,允许用户自定义命令串文件,选择发送时,ECOM 串口助手会依次解析用户的命令,逐条往下发送。命令串文件发送同时支持选择命令串文件中的某条标号命令 发送,也支持发送时,跳转到指定的命令编号开始依次往下发送,命令串文件模板如下: [52ic.net] ; 发送命令条的起始条数 start_52ic=0 ; 命令条总数,不要写错了,否则会出错,最大 100 条。 total_52ic=4 ; 循环多少次后退出。最大 100 次循环。 cycle_52ic=5 ; 检验方式。 check_52ic=4 [Sending] ; 发送对话框是否 HEX 格式发送 HEX0=0 ; 包尾是否加校验 CHECK0=1 ; 是否使用转义符 TAILED0=0 ; 数据头是否选择 HEAD0=0 ; 数据头数据 DATAHEAD0=数据头-- ; 数据尾是否选择 TAIL0=0 ; 数据尾数据 DATATAIL0=--数据尾 ; 发送对话命令条 DATA0=欢迎使用我爱IC导航网 ; 发送数据后延时多长时间才执行下条命令 DELAY0=1000 ; 发送对话框是否 HEX 格式发送 HEX1=0 ; 包尾是否加校验 CHECK1=0 ; 是否使用转义符 TAILED1=0 ; 数据头是否选择 HEAD1=1 ; 数据头数据 DATAHEAD1=数据头-- ; 数据尾是否选择 TAIL1=1 ; 数据尾数据 DATATAIL1=--数据尾 ; 发送对话命令条 DATA1=欢迎使用我爱IC导航网 ; 发送数据后延时多长时间才执行下条命令 DELAY1=1000 HEX2=1 CHECK2=1 TAILED2=0 HEAD2=1 DATAHEAD2=AA AAAAAA TAIL2=1 DATATAIL2=BB BB BB BB DATA2=01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 12 13 14 15 16 17 18 19 DELAY2=1000 HEX3=1 CHECK3=1 TAILED3=0 HEAD3=1 DATAHEAD3=AAAA TAIL3=1 DATATAIL3=BB BB DATA3=01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 12 13 14 15 16 17 18 19 DELAY3=1000 [END] 表 1   命令串文件关键字说明 命令命令命令说明备注[52ic.net]参数设置区 start_52ic发送命令条的起始条数必须小于命令条总数total_52ic命令条总数,不要写错了,否则会出错最大 100 条cycle_52ic循环发送命令串次数,循环发送完成后退出最大 100 次循环check_52ic检验方式选择,大于等于 0,小于软件支持的校验协议条数 [Sending]命令数据发送区 HEX发送对话框是否选择 HEX 格式发送,0 表示不选择 CHECK数据时候加校验,0 表示不选择 TAILED命令串末尾时候加转义符,0 表示不选择 HEAD命令串时候加数据头,0 表示不选择 DATAHEAD数据头数据 TAIL命令串时候加数据尾,0 表示不选择 DATATAIL数据尾数据 DATA命令串数据 DELAY发送数据后延时多长时间才执行下条命令  数据帧格式 Ecom  串口软件支持自定义数据帧头, 数据帧尾功能。同时支持数据包多种校验协议, 如: ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验, ModebusLRC 等。数据帧仅校验数据输入框 中的数据,不计算帧头和帧尾的数据,每次发送时,软件根据用户选择的不同校验算法进行数据校验,并 将计算结果和原来的数据拼成一个完整的数据帧发送。帧格式见下表。 表 2   V2.20 以上软件版本数据帧格式说明 最先发送其次发送依次发送接着发送最后发送数据帧头数据数据帧校验数据帧尾转义符使能数据帧头按钮填写要发送的数据选择数据校验方式使能数据帧尾按钮使能转义符按钮 终端控制命令 ECOM 串口助手可以通过接收命令来控制串口助手的接收窗口,便于保持串口传输的数据。 <ecomclear>清除窗口数据<ecomset>dipset=1</ecomset>设置窗口显示格式为 HEX<ecomset>dipset=0</ecomset>设置窗口显示格式为字符<ecomsave></ecomsave>自动保存窗口数据,保存文件用系统时间来命名<ecomsave>+name+</ecomsave>保存窗口数据,文件名用户指定,例如<ecomsave>data.txt</ecomsave> <ecomsave>updata\\data.txt</ecomsave> <ecomdel>+name+</ecomdel>删除用户指定的文件<ecomdir>NewDir</ecomdir>在软件运行的目录下创建制定的目录, 命令执行错误返回 0x15,命令执行成功返回 0x06;波特率越低发生错误的概率越大,主要受到一帧 数据接收超时的原因照成的。 文件及数据校验 1.    文件校验 Ecom 串口软件带有计算文件 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验,ModebusLRC 的计算工具,计算方法是在“传输协议 ”打开文件对话框中打开待计算的文件,选择“数据校验格式 ”,点 击“校验结果 ”按钮,对话框中将显示计算结果,如果需要保存结果,点击“保存窗口 ”按钮即可。 图 4  计算文件的校验值 1.    数据校验 Ecom 串口软件支持数据帧 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验, ModebusLRC 的计算,同时可以支持将计算结果跟数据帧一起发送到串口设备上。计算方法是先“将传输协议 ”打开文 件的对话框清空,选择“数据校验格式 ”,点击“校验结果 ”按钮,对话框中将显示校验结果,如果需要保 存结果,点击“保存窗口 ”按钮即可。如果需要将计算结果一同发送串口设备上,选择“数据校验 ”选择 按钮,然后选择发送数据。 图 5  计算数据的校验值 相关校验算法 Ecom 串口软件支持 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验,ModebusLRC 等协 议,具体算法见下列程序清单。相关的算法请自行查找相关的资料了解,如果下列程序有问题,欢迎联系 我们,我们将及时更正算法。 1.    ModebusCRC16 校验算法 //********************************************************************************************************** // 函数名称 : GetModbusCRC16 // 函数功能 : ModbusCRC16 校验 // 入口参数 : cp 要检验的字符 // leng 长度 // 返 回 值 : ModbusCRC16 // 备 注 : //********************************************************************************************************** // 修改人 : 我爱 IC 导航网(http://www.52ic.net/) //********************************************************************************************************** unsigned short GetModbusCRC16(unsigned char *cp, unsigned int leng) { unsigned int j, i, crc = 0xFFFF; if (leng <= 0) { return 0; } for (j = 0; j < leng; j++) { crc = crc ^ (unsigned int)(cp[j]); for (i = 0; i < 8; i++) { if ((crc & 1) != 0) { crc = (crc >> 1) ^ 0xA001; } else { crc = crc >> 1; } } } return (unsigned short)crc; } 2.    CRC16 校验算法 //********************************************************************************************************** // 函数名称: GetCRC16 // 函数功能: 循环冗余校验 CRC16 校验 // 入口参数: cp 要检验的字符 // leng 长度 // 返 回 值: CRC16 // 备 注: CRC =X^16 + X^12 + X^5 + 1 //********************************************************************************************************** // 修改人: 我爱 IC 导航网(http://www.52ic.net/) //********************************************************************************************************** unsigned short GetCRC16(unsigned char *cp, unsigned int leng) { unsigned short crc = 0; unsigned int i, j; if (leng <= 0) { return 0; } for (j = 0; j < leng; j++) { crc ^= (int)*cp++ << 8; for (i = 0; i < 8; ++i) { if (crc & 0x8000) { crc = (crc << 1) ^ 0x1021; } else { crc <<= 1; } } } return crc & 0xFFFF; } 3.     累加和校验算法 //********************************************************************************************************** // 函数名称: GetCheckSum // 函数功能: 16位校验和 // 入口参数: cp 要检验的字符 // leng 长度 // 返 回 值: 校验和结果 // 备 注: //********************************************************************************************************** // 修改人: 我爱 IC 导航网(http://www.52ic.net/) //********************************************************************************************************** unsigned short GetCheckSum(unsigned char *cp, unsigned int leng) { unsigned short crc = 0; unsigned int i; if (leng <= 0) { return 0; } for (i = 0; i < leng; i++) { crc += cp[i]; } return crc & 0xFFFF; } 4.    异或校验算法 //********************************************************************************************************** // 函数名称: GetBccCheck // 函数功能: BCC异或校验法 // 入口参数: cp 要检验的字符 // leng 长度 // 返 回 值: 校验结果 // 备 注: //********************************************************************************************************** // 修改人: 我爱 IC 导航网(http://www.52ic.net/) //********************************************************************************************************** unsigned char GetBccCheck(unsigned char *cp, unsigned int leng) { unsigned char bcc = 0; unsigned int i; if (leng <= 0) { return 0; } for (i = 0; i < leng; i++) { bcc ^= cp[i]; } return bcc; // 无需 & 0xFFFF 因为 bcc 已是 unsigned char 类型 } 1.     LRC 校验法 //********************************************************************************************************** // 函数名称: GetLRC // 函数功能: 计算 LRC 值。 // 入口参数: uint8ptr, 输入的数据为 8 位指针,含有生成 LRC 所使用的二进制数据的报文缓冲区指针 // usDataLen,报文缓冲区字节数。 // 返 回 值: 纵向冗余校验码 // 备 注: //********************************************************************************************************** // 修改人: 我爱 IC 导航网(http://www.52ic.net/) //********************************************************************************************************** unsigned char GetLRC(unsigned char *uint8ptr, unsigned int usDataLen) { unsigned char uchLRC = 0; // LRC 字节初始化 while (usDataLen--) { // 遍历报文缓冲区 uchLRC += *uint8ptr++; // 缓冲区字节相加,无进位 } return ((unsigned char)(-uchLRC)); // 返回二进制补码 } --- ### 387. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 简介 瑞士军刀是一款功能强大的开发调试工具集,适用于各类开发人员和测试人员。它集成了多种实用工具,可以帮助用户快速完成日常开发调试任务,提高工作效率。 功能特点 1. 通用工具 支持多种语言:简体中文、繁体中文、英文,满足不同用户的语言需求。 提供丰富的皮肤样式,可根据喜好选择个性化界面。 帮助菜单提供项目源码链接,方便查阅相关信息。 支持设置掩码,保护敏感信息,提升安全性。 提供简单的二维码生成工具,方便测试人员进行快速测试。 2. 数据处理 提供多种数据分析工具,如CRC计算、十六进制编辑器、JSON格式化等,满足不同类型的数据处理需求。 支持浮点数转换查看,方便调试人员直观查看浮点数数据。 支持字符串转编码值查看及字符串编码值转字符串,方便数据处理人员进行编码转换。 3. 串口调试 支持多种串口参数设置,如波特率、数据位、停止位、校验位等,满足不同串口设备的连接需求。 提供丰富的发送和接收数据功能,如发送字符串、发送文件、接收字符串、接收文件等,方便进行串口数据传输。 支持串口波形查看,可直观查看串口数据传输情况,方便分析数据。 支持粘包处理,解决数据包粘连问题,提高数据传输的可靠性。 4. 网络调试 支持UDP、TCP、Websocket等网络协议,满足不同网络调试需求。 提供数据转发功能,方便测试人员测试网络连接和数据传输。 支持客户端和服务器模式,可灵活使用,满足不同应用场景。 支持ipv6地址,满足新兴网络环境的需求。 5. 其他功能 支持自动回复,自动回复指定数据,提高测试效率。 支持定时发送,定时发送指定数据,方便进行自动化测试。 支持数据预设,方便重复发送数据,节省操作时间。 支持设置读写延时,提高数据传输稳定性,降低数据丢失风险。 提供日志功能,记录调试过程,方便查阅历史信息。 总结 瑞士军刀是一款功能强大、使用方便的开发调试工具集,集成了多种实用工具,可以满足开发人员和测试人员的日常调试需求。它不仅提供了丰富的功能,还注重用户体验,易于学习和使用,是开发调试的利器。 --- ### 388. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 简介 猫猫串口网络调试助手是一款功能强大的串口调试工具,可以满足嵌入式开发工程师、单片机开发人员、仪表调试人员等对串口调试的需求。软件集成了串口、TCP/UDP服务器等功能,支持多种编码格式显示,并提供了丰富的功能,如过滤高亮、查找高亮、字段解析、波形显示、发送扩展、自动回复、自增发送、格式化编码显示、校验方式、Hex和ascii对照显示、格式输入控制、TCP/UDP服务器、高级功能设置、显示格式、Ascii对照表、字符统计等,可以帮助用户快速、高效地完成串口调试工作。 特色功能 过滤高亮:可以设置过滤规则,对接收到的数据进行实时高亮显示,方便用户查找所需数据。 查找高亮:可以输入要查找的内容,软件会将找到的内容高亮显示,方便用户快速定位目标数据。 字段解析:可以从一包数据中提取指定的几个字节,并转换成整数显示,也可以选择判断帧头,方便用户提取数据中的关键信息。 波形显示:可以将解析出来的字节绘制成实时曲线图、折线图、波形图、点阵图等,方便用户查看数据变化趋势。 发送扩展:可以将常用的指令或数据包保存起来,方便用户快速发送。 自动回复:可以设置自动回复规则,当收到特定数据时,软件会自动发送指定的回复数据。 自增发送:可以设置发送后指定字节自动增加和校验,方便用户发送连续递增的数据。 格式化编码显示:支持多种编码格式显示,如ASCII、Unicode、GB2312/GBK、UTF-8等,方便用户查看不同编码格式下的数据。 校验方式:支持多种校验方式,如None、Odd、Even、Mark、Space等,方便用户确保数据传输的准确性。 Hex和ascii对照显示:可以同时显示Hex和ascii格式的数据,方便用户对比查看。 格式输入控制:在进行16进制的输入时,会自动更正格式,确保输入数据的正确性。 TCP/UDP服务器:可以创建TCP/UDP服务器,方便用户进行网络调试。 高级功能设置:提供了丰富的快捷键和设置选项,方便用户自定义软件功能。 显示格式:可以自由设置接收区和发送区的显示格式,满足用户的个性化需求。 Ascii对照表:提供了一个Ascii对照表,方便用户查阅。 字符统计:可以统计接收到的数据的字符数量,方便用户进行数据分析。 总结 猫猫串口网络调试助手是一款功能强大、高效实用的串口调试工具,可以满足用户的各种串口调试需求。软件界面简洁友好,操作简单易用,是嵌入式开发、单片机开发、仪表调试等领域的必备工具。 --- ### 389. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 继电器协议生成器/继电器蓝牙调试助手,请微信扫描二维码使用! 在当今的工业自动化和智能制造领域,准确、高效的设备通信和数据监控对于确保生产流程的稳定运行至关重要。JYDAM调试软件,作为一款专门设计用于Modbus通信协议的调试工具,为自动化设备提供了一个强大且灵活的解决方案。本文将深入探讨JYDAM调试软件的核心功能、特色以及如何在实际应用中发挥其最大效能。 JYDAM调试软件概述 JYDAM调试软件是一个高效的工业通信调试工具,特别针对使用Modbus协议的设备设计。它支持串口通讯和网络TCP Server通讯,能够满足各种工业环境下的通信需求。软件提供了一套完整的数据采集、设备控制和监控功能,旨在提高设备调试的效率和准确性。 核心功能 Modbus通信协议支持:JYDAM调试软件专为Modbus协议设计,无论是Modbus RTU还是Modbus TCP,软件都能够提供稳定的通信能力。 多种数据采集与控制功能:包括DO控制、DI状态采集、AI数据采集以及AO输出控制。软件支持PT100、K型热电偶和DS18B20等多种温度传感器的数据采集,并能以曲线形式显示。 高度可定制的数据记录:AI和温度数据可以自动或手动记录,并支持导出为Excel表格,方便数据分析和报告生成。 灵活的参数设置:用户可以根据实际需求设置设备地址、波特率、工作模式等参数,以适应不同的应用场景。 特色功能 修改刷新时间:JYDAM调试软件允许用户自定义AI/DI/DO的读取刷新时间,使设备状态更新更实时,提高数据监控的准确性和实效性。 自定义通道名称和量程转换:提供了通道名称自定义功能,使得数据更加直观易懂;同时支持AI通道的量程转换,提高了数据处理的灵活性。 数据记录和分组管理:除了基础的数据采集和控制功能,软件还支持数据的自动记录和分组管理,极大提升了工作效率,特别适合需要进行长期数据监控和分析的场景。 实际应用加值 JYDAM调试软件在实际应用中,能够显著提高设备调试和数据监控的效率。通过对Modbus协议的深度支持,它使得与设备间的通信更为稳定和高效,极大地简化了工程师的工作流程。无论是单一设备的调试还是整个系统的数据监控,JYDAM都能提供强大的功能支持。特别是在需要对设备进行精确控制或者进行复杂数据分析的场合,JYDAM调试软件都能展现出其独特的价值。 结论 JYDAM调试软件作为工业自动化领域中的一个重要工具,为基于Modbus协议的设备通信、数据采集和监控提供了一套全面、高效的解决方案。它的灵活性、强大的功能以及用户友好的设计,使其成为自动化工程师和技术人员不可或缺的助手。通过JYDAM,工业自动化系统的建设和维护将变得更加高效和简便,为企业带来显著的生产效率提升和成本优化。 继电器协议生成器/继电器蓝牙调试助手,请微信扫描二维码使用! --- ### 390. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在嵌入式开发和调试的过程中,数据的实时显示、变化波形绘制、参数调整、命令触发以及文本log信息显示等需求是常见的挑战。匿名助手作为一款专为嵌入式开发者设计的上位机软件,经过十余年的迭代更新,已经成为一个功能丰富、高效且易于使用的调试工具。本文将详细介绍匿名助手的特点、功能以及更新历史。 软件设计初衷 匿名助手的设计理念源于对嵌入式调试过程中实际需求的深刻理解。开发者在早期的嵌入式学习过程中,常常面临使用原始工具进行调试的困境,如使用串口助手进行数据显示、通过下载器修改源码来调整参数等。为了解决这些问题,匿名助手应运而生,旨在提供一个一站式的解决方案,以提高调试效率和改善用户体验。 软件特点 高效性能:采用C++编写,非解释语言,确保了程序的高效运行。 简洁协议:使用的匿名协议简单易懂,便于开发者进行移植和使用。 强大扩展性:参数读写和命令触发功能由下位机定义,上位机负责显示和操作,只需在下位机代码中定义好参数和命令信息,即可实现读写操作。 高灵活性:支持多种数据类型的解析和显示,包括无符号、有符号整数、浮点数等,同时支持无参数和带参数的命令触发。 丰富功能:除了基本的数据显示和波形绘制,还提供了数据波形分析、3D模型显示、雷达数据显示、地图显示、固件升级等功能,满足不同调试场景的需求。 软件功能 匿名助手提供了一系列的功能,以满足嵌入式开发者的多样化需求: 数据值显示:直观展示实时数据。 数据波形绘制:绘制数据波形,便于分析数据变化趋势。 数据波形分析:提供FFT等数据分析工具,深入理解数据特性。 参数读写:允许用户调整和修改设备参数。 命令触发:通过界面触发设备执行特定命令。 3D模型显示:展示设备或系统的三维模型。 雷达数据显示:在地图上显示设备位置和状态。 固件升级:方便地进行设备固件的更新和升级。 更新历史 匿名助手持续更新,每个版本都带来了新的功能和改进。以下是部分版本的更新内容: V1.0.16:增加数值发送小工具,支持多种数据类型的发送;命令按钮小工具更新,支持动态修改命令参数;姿态显示小工具修复等。 V1.0.15:数据解析BUG修复;完善多设备通信;波形数据保存支持设置文件名称等。 V1.0.14:参数读写功能重写,支持更多数据格式;log显示优化;修复窗口闪退bug等。 总结 匿名助手是一款专为嵌入式开发者打造的上位机软件,它以其高效性能、简洁协议、强大扩展性和丰富功能,成为了调试过程中的得力助手。无论是数据的实时显示、参数调整还是命令触发,匿名助手都能提供满意的解决方案。随着软件的不断更新和完善,它将继续为嵌入式开发者提供更加强大和便捷的工具支持。 --- ### 391. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在当今快速发展的工业自动化和物联网领域,对通讯协议的调试和数据采集的需求日益增长。伊迪派MODBUS RTU测控大师作为一款上手容易、功能全面的通讯协议调试工具,为广大开发者和工程师提供了强大的支持。本文将详细介绍伊迪派MODBUS RTU测控大师的功能特性、软件介绍、使用说明以及更新日志。 软件功能特性 伊迪派MODBUS RTU测控大师以其直观的用户界面和丰富的功能,成为了开发物联网、工控设备和仪器仪表的得力助手。以下是该软件的主要功能特性: 易于上手:用户友好的操作界面,使得即使是初学者也能快速上手。 多协议支持:支持串口、TCP服务端和TCP客户端通讯方式,满足不同场景的需求。 脚本模式:模拟上位机进行Modbus协议主机操作,实现24小时数据采集。 命令配置:用户可以自定义命令内容,灵活配置读写命令。 数据显示:支持二进制和十六进制数据显示,直观展示数据内容。 数据长度显示:清晰展示发送数据的长度,便于调试和分析。 多种数据类型支持:支持2字节有符号整数、4字节无符号整数(ABCD和CDAB)等数据类型的发送。 软件介绍 伊迪派MODBUS RTU测控大师提供全面的RTU通讯协议调试功能。用户可以通过软件界面发送命令,测试通讯状态和设备通讯性能,为设备开发提供便捷的通讯测试方案。软件支持串口和TCP连接测试,提供收发线路和模式设置,编辑命令即可开始测试。此外,软件还支持脚本编辑,寄存器、数据类型和运算公式等功能,帮助用户高效编辑脚本。 使用说明 下载并解压伊迪派MODBUS RTU测控大师软件包。 运行“EXE”文件,进入软件界面。 设置串口参数,开始调试设备。 通过软件设置命令内容,连接到TCP服务器或配置串口进行测试。 利用脚本设置功能,新建脚本并选择测试方式。 输入新的值,生成读写数据命令。 结论 伊迪派MODBUS RTU测控大师是一款功能强大、易于操作的通讯协议调试工具。它不仅支持多种通讯方式,还具备脚本模式,能够模拟上位机进行Modbus协议主机操作,实现24小时数据采集。软件的自动轮询功能、报文生成、数据显示处理以及数据类型转换工具,使得它成为调试具有Modbus协议设备的理想选择。无论是初学者还是经验丰富的工程师,伊迪派MODBUS RTU测控大师都能提供高效、便捷的调试体验。 --- ### 392. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus通信协议作为工业自动化领域中的一种广泛应用的协议,其重要性不言而喻。为了简化Modbus通信的实现和调试过程,Open ModScan应运而生,它是一款免费的Modbus主站(客户端)工具,支持Modbus-TCP和Modbus-RTU协议。本文将详细介绍Open ModScan的功能特点、使用方法以及其开源许可协议。 功能特点 Open ModScan提供了一系列的Modbus功能,使用户能够轻松地与Modbus从站设备进行通信和数据交互。 基本Modbus功能 0x01 - 读取线圈:读取数字输出的状态。 0x02 - 读取离散输入:读取数字输入的状态。 0x05 - 写单个线圈:修改数字输出的状态。 0x0F - 写多个线圈:批量修改数字输出的状态。 0x03 - 读取保持寄存器:读取模拟输出的值。 0x04 - 读取输入寄存器:读取模拟输入的值。 0x06 - 写单个寄存器:修改模拟输出的值。 0x10 - 写多个寄存器:批量修改模拟输出的值。 0x16 - 遮罩写寄存器:使用掩码修改寄存器的特定位。 扩展功能 Modbus地址扫描:自动扫描网络上的Modbus设备,快速发现并识别可用的从站设备。 Modbus扫描器:支持对Modbus RTU和Modbus TCP协议进行扫描,帮助用户快速定位和诊断问题。 Modbus消息解析器:解析Modbus消息,提供详细的数据包信息,便于用户分析和调试。 Modbus用户消息:允许用户自定义Modbus消息,进行更复杂的通信操作。 构建和使用 Open ModScan使用Qt/qmake(版本5.15及以上)或Qt Creator进行构建,支持Microsoft Windows和Linux操作系统。用户可以根据自己的操作系统选择相应的构建方式。 开源许可 Open ModScan遵循MIT许可证,这意味着任何人都可以免费获取源代码,并在遵守许可证条款的前提下,自由地使用、复制、修改、合并、发布、分发、再许可和/或出售软件。同时,软件是在“原样”基础上提供的,没有任何形式的保证,包括但不限于适销性、特定用途的适用性和非侵权性的保证。 结论 Open ModScan是一款强大的Modbus主站工具,它为自动化工程师和开发者提供了一套完整的解决方案,以便于进行Modbus通信的测试、调试和数据采集。其开源的特性和灵活的功能使得它成为工业自动化领域中的一个宝贵资源。无论是在开发初期的设备探索阶段,还是在后期的通信协议实现阶段,Open ModScan都能提供有效的支持。 --- ### 393. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 小程序版,免费使用!!! Modbus Slave Modbus Slave 用于在 100 个窗口中模拟多达 100 个从机设备!使用此模拟工具加快您的 PLC 编程速度。在从供应商处收到从属设备之前,请开始编程和测试。主应用程序可以访问任何打开文档中包含的数据。与 Modbus 轮询相同的用户界面。 监控串行流量。用于与 Visual Basic、Excel 等连接的 OLE 自动化。根据您的具体要求解释和显示 Modbus 数据。例如,在 Excel 中编辑从属数据。尝试该程序附带的 Excel example.xls。 Modbus 从站中打开的每个窗口都可以配置为表示来自相同或不同从站节点的数据。 Modbus 从站的系统要求 硬件要求 处理器; 建议 1 GHz 或更快1 GB RAM5 MB 可用硬盘空间1024 x 768 显示分辨率操作系统要求 支持从 Windows 7 到 Windows 11 的所有 Windows 版本。Modbus Slave 版本 8 在 Windows XP 上运行。 1.1.1. 静默安装 静默安装不需要用户干预,并且没有用户界面。用户看不到任何对话框,也不会被问到任何问题。使用命令行 /S 开关。 Modbus从站特性 连接 Modbus Slave 使用以下方式从设备读取/写入数据: RS232 或 RS485 网络上的 Modbus RTU 或 ASCII。(USB/RS232/485转换器) Modbus TCP/IP TCP/IP 上的 Modbus。(Modbus RTU封装在TCP数据包中) 协议UDP/IP 基于 UDP/IP 的 Modbus。(Modbus RTU封装在UDP数据包中) 支持的 Modbus 功能 01 (0x01) 读取线圈 02 (0x02) 读取离散输入 03 (0x03) 读取保持寄存器 04 (0x04) 读取输入寄存器 05 (0x05) 写单个线圈 06 (0x06) 写单个寄存器 08 (0x08) 诊断(仅限串行线) 11 (0x0B) 获取通讯事件计数器(仅限串行线) 15 (0x0F) 写入多个线圈 16 (0x10) 写入多个寄存器 17 (0x11) 报告服务器 ID(仅限串行线路) 22 (0x16) 掩码写寄存器 23 (0x17) 读/写多个寄存器 43 / 14 (0x2B / 0x0E) 读取设备标识 显示格式 每个单元格都可以单独格式化。 16位有符号寄存器(Signed 16-bit register) 16位无符号寄存器(Unsigned 16-bit register) 十六进制(Hex) 二进制(Binary) 具有任意字/字节顺序的 32 位有符号整数(32-bit signed integer with any word/byte order) 具有任意字/字节顺序的 32 位无符号整数(32-bit unsigned integer with any word/byte order) 具有任意字/字节顺序的 64 位有符号整数(64-bit signed integer with any word/byte order) 具有任意字/字节顺序的 64 位无符号整数(64-bit unsigned integer with any word/byte order) 具有任意字/字节顺序的 32 位浮点数(32-bit float with any word/byte order) 具有任意字/字节顺序的 64位双精度浮点数(64-bit double float with any word/byte order) 其他功能 用于与 Excel VBA、Python 等连接的 OLE/自动化。 数据流量监控 打印和打印预览 字体选择 条件颜色 缩放 实时图表 保存/打开工作区 概述 Modbus Slave 使用多文档界面。这意味着可以打开多个窗口。每一个具有不同的数据内容,用于同时模拟不同的从机设备。 这张照片显示了两个打开的窗口。一个模拟来自地址 0 (40001) 从机 id 1 的 10 个保持寄存器,另一个模拟来自地址 0 (40001) 从机 id 2 的 10 个保持寄存器。 随时随地提供帮助 按 F1即可获取与当前所选项目相关的主题的上下文相关帮助。 SHIFT + F1调用特殊的“帮助模式”,其中光标变成帮助光标(箭头+问号)。然后,用户可以选择用户界面中的可见对象,例如菜单项、工具栏按钮或窗口。这将打开有关描述所选项目的主题的帮助。 命名单元格 您可以在此处键入任何文本来指定值单元格。您还可以从 Excel 单元格复制/粘贴文本。 值单元格 显示 Modbus 寄存器的数据值。如果双击值单元格,将出现一个对话框,您可以在该值单元格中输入新值。在值单元格中键入数字也会显示输入对话框。 更改字体 要更改字体,您有 2 个选项 选择要更改的单元格,然后右键单击。 选择要更改的单元格,然后选择菜单→显示→字体。 条件颜色 条件颜色可帮助您直观地显示特定范围内的值。3 种颜色选择 默认颜色:如果没有任何条件颜色计算结果为 true,则使用此颜色。 规则 1:如果表达式的计算结果为 true,则使用此颜色选择。规则 1 优先于规则 2。 规则 2:如果表达式的计算结果为 true,则使用此颜色选择。 7 种比较运算符 not used: 未使用 equal to: 等于 greater than: 大于 less than: 小于 greater than or equal to: 大于等于 less than or equal to: 小于等于 and: 与 当数据类型为 float 或 32 位 long 类型时,不能使用“and”运算符。如果选择“and”,则条件值将以十六进制数字形式输入。如果单元格和条件值中的任何位均为 1,则其计算结果为 true。 颜色示例 如果单元格值大于 0,则为绿色;如果小于 0,则为红色。 缩放 缩放可帮助您将原始值缩放为人类可读的值。缩放仅适用于有符号和无符号 16/32 位整数。 (X1,Y1) 和 (X2,Y2) 一条通过两点 (X1,Y1) 和 (X2,Y2) 的直线 Slope=m=Y2−Y1/X2−X1 直线方程 Y=m⋅(X−X1)+Y1 精确 小数点后的位数。 启用 必须启用此功能,以从Modbus服务器/从站缩放值。如果选择了非16/32位整数显示格式,缩放会自动禁用 实时图表 该图表可以实时绘制 12 个系列,每个系列最多 100000 个点。 打开一个新窗口 要打开另一个窗口,您有 3 个选项: 按 CTRL+N 在文件菜单中选择新建 按工具栏上的 连接对话框 要打开连接对话框,您有 2 个选项: 按F3 从连接菜单中选择连接 连接(Connection) 有 5 种不同的连接类型: 串口:通过串行线路的 Modbus。RS232 或 RS485。可以使用USB串行转换器。 Modbus TCP/IP:如果要与 MODBUS TCP/IP 网络通信,请选择 TCP/IP。在这种情况下,从站 ID 与 MODBUS TCP/IP 中使用的单元 ID 相同。端口号默认为 502。 Modbus UDP/IP:如果要与 MODBUS UDP/IP 网络通信,请选择 UDP/IP。这与 Modbus TCP/IP 相同,但使用无连接 UDP 协议。 TCP/IP 上的 Modbus RTU:这是通过 TCP/IP 网络而不是串行线路发送的 RTU 消息。 Modbus RTU Over UDP/IP:这是通过 UDP/IP 网络而不是串行线路发送的 RTU 消息。 根据您的选择,一些其他设置将呈灰色。 串口设置(Serial Settings) 使用这些参数来设置串行端口设置。仅当连接类型为“串行端口”时它们才可用。模式 使用此选项选择RTU或ASCII模式。默认 RTU。数字SR 指定是否监视 DSR(数据集就绪)信号以进行输出流控制。如果该成员为 TRUE 并且 DSR 关闭,则输出将暂停,直到再次发送 DSR。CTS 指定是否监视 CTS(清除发送)信号以进行输出流量控制。如果启用此复选框并且关闭 CTS,则输出将暂停,直到再次发送 CTS。即时战略切换 指定如果字节可用于传输,则 RTS 线将为高电平。发送所有缓冲字节后,RTS 线将为低电平。如果您的 232/485 转换器没有自动方向开关,则可以使用它来切换方向。 如果可能,应避免使用 RTS 控制的 RS232/RS485 转换器。对于Windows、Linux等非实时操作系统,很难确定发射机关闭的具体时间。如果过早关闭,字符可能仍位于 FIFO 或 UART 的发送寄存器中,并且这些字符将会丢失。因此从机将无法识别该消息。另一方面,如果关闭得太晚,则从设备的消息会被损坏,并且主设备将无法识别该消息。 TCP/IP服务器(TCP/IP Server) TCP/IP 服务器设置仅在使用以太网连接时可用。IP地址 指定要侦听的 IP 地址。如果您的 PC 上有多个网络连接,这非常有用。Modbus Slave 的每个实例都可以侦听特定网络。默认为本地主机 127.0.0.1任何地址 如果您希望 Modbus Slave 侦听所有网络,请选中此项。忽略单元 ID 许多PLC设备会忽略该字段,并且大多数客户端默认值为零。然而,网关或专用程序可以使用单元号来指示需要什么类型的处理。港口 服务器端口号。默认502 从机定义(Slave definition) 使用此命令可以定义要为活动窗口定义的数据数组。 要打开 Slave Definition 对话框,您有 3 个选项: 按 F8 从设置菜单中选择“从站定义” 按工具栏上的 从机ID(Slave ID) 范围 1 到 255。(MODBUS 协议规范规定为 247)。值 0 也可以直接与 MODBUS/TCP 或 MODBUS/UDP 设备通信。 功能码(Function) 您可以选择 4 个功能代码中的 1 个。 01:读取线圈(0x)。接受写入功能 05 和 15 02:读取离散输入 (1x) 03:读取保持寄存器(4x)。接受写入功能 06、16、22 和 23 04:读取输入寄存器(3x) 地址(Address) Modbus协议中的地址很混乱!一些协议规范使用协议/消息地址,而其他协议规范使用设备寻址。 协议/消息地址 某些协议规范使用从 0 到 65535 计数的协议/消息地址以及功能代码。这也是新的 Modbus 规范所使用的内容。这是通过线路发送的消息中的地址。 Modbus Slave 使用协议/消息地址从 0 到 65535 计数。 设备地址 一些协议规范使用设备地址/寄存器。寄存器从 1 开始计数。第一个数字描述要使用的功能。这意味着设备地址 40101 由地址 100 标识。“4”表示保持寄存器和 4x 寄存器从 1 开始计数。因此“4XXXX”引用是隐式的。更令人困惑的是:4x 表示功能代码 03,3x 表示功能代码 04! 5 位与 6 位寻址 地址格式 4x 从 40001 计数到 49999。下一个地址不是50000。在过去,9999 个地址就足够了。有些情况下9999还不够。然后添加一个零。40101 变为 400101,依此类推。这称为 6 位寻址或扩展寻址。 这对于 Modbus Slave 来说不是问题。410001 变成 10000。“4”被丢弃,剩下的 10001 减 1,因为我们从 0 而不是 1 开始计数。 地址示例 这些示例展示了在规范使用设备地址的情况下如何设置 Modbus 从站。 定义保持寄存器 您想要从设备 ID 2 的设备地址 40011 定义 20 个寄存器。从“4”我们知道这是功能 03“读取保持寄存器”。 从机 ID = 2 功能 =“03 读取保持寄存器 (4x)” 地址 = 10(11 减 1) 数量 = 20 定义离散输入 您想要从从站 ID 5 的地址 110201 定义 1000 个线圈。从“1”我们知道这是功能 02“读取离散输入” 从机 ID = 5 功能 =“02 读取离散输入 (1x)” 地址 = 10200 (10201 - 1) 数量 = 1000 隐藏名称列(Hide name columns) 隐藏所有名称列。如果不使用它们,这可以方便地腾出更多空间。 单元格中的地址(Address in cell) 如果启用,地址也会显示在值单元格中,例如:2000 = 00000 PLC 地址(基地址 1)PLC Addresses (Base 1) 此选项会将地址显示为设备地址。 行数(Rows) 指定您喜欢的网格中的行数。 实时图表(Real time Charting) 使用此命令可在图表中实时绘制最多 12 个数据系列。实时图表速度很快,能够在收到新数据后尽快绘制新线。 所有图表设置都保存在工作区文件中。保存/打开工作区 要打开实时图表对话框,您有 2 个选项: 按 Alt + R 从显示菜单中选择“实时图表” X 轴显示自图表启动以来的秒数。 当点到达图表末尾时,有 3 个选项: 结束时停止:图表停止。 结束时重新启动:图表重新开始。 继续:继续,直到达到最大点数或按下停止按钮。 设置(Settings) 默认情况下,所有 12 个系列都链接到左侧 Y 轴。如果要将系列链接到右 Y 轴,请选中“右 Y 轴”复选框。指定 颜色 右 Y 轴 标题。如果标题为空,则使用阅读窗口中的名称进行初始化 抵消 展示 文件名 地址 偏移对于在同一 Y 轴上对齐数据点很有用。例如,0 或 1 的数据点可以偏移,这样它们就不会绘制在彼此之上。 变焦功能 如果您想查看更多详细信息,放大图表会很有用。缩放由鼠标左键控制。要缩放图表的特定部分,只需左键单击图表(这将是缩放矩形的左上角)并拖动到右下角。将出现一个矩形。一旦释放鼠标按钮,轴就会自动调整到您选择的区域。 如果您左键单击图表(例如开始缩放),但如果您移动到左上角,则使用缩放和平移功能完成的所有修改都将被取消(图表将处于原来的状态)在进行平移和缩放操作之前)。 平移功能 要平移控件,请右键单击控件上的某处并移动鼠标。鼠标下方的点将跟随鼠标的移动。 将数据链接到图表系列 除非将 Modbus 数据单元链接到 12 个系列之一,否则图表不知道要使用哪些数据。为此,请选择一个值单元格,然后从菜单→显示中选择“链接到图表”。 出口系列 将系列数据保存到磁盘或复制到剪贴板。将数据直接粘贴到 Excel 中以进行进一步处理。尽管使用非逗号字段分隔符,但该文件仍具有 .csv 扩展名。 分隔符:选择分隔文本文件中的值的字符。复制/粘贴到 Excel 时使用制表符分隔符。此外还给出了一些附加信息。 点数 最大分值 最小分值 平均分值 显示格式 标记要格式化的单元格。从显示菜单中选择 28 种显示格式之一。 本机 Modbus 寄存器 16 位 Modbus 寄存器可以以 4 种不同的模式显示。 签 未签名 十六进制 ASCII - 十六进制 二进制 32 位有符号整数(32-bit signed integer) 它结合了 2 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 有符号整数 大尾数 有符号整数 小尾数 有符号整数大端字节交换 有符号整数小端字节交换例子字节顺序:AB CD(大端)十进制数 123456789 或十六进制数07 5B CD 15Modbus 消息中通过线路传输的顺序:07 5B CD 15 32 位无符号整数(32-bit unsigned integer) 它结合了 2 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 无符号整数 大尾数 无符号整数 小尾数 无符号整数 Big-endian 字节交换 无符号整数小端字节交换例子字节顺序:AB CD(大端)十进制数 123456789 或十六进制数07 5B CD 15Modbus 消息中通过线路传输的顺序:07 5B CD 15 64 位有符号整数(64-bit signed integer) 它结合了 4 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 有符号整数 大尾数 有符号整数 小尾数 有符号整数大端字节交换 有符号整数小端字节交换例子字节顺序:AB CD EF GH(大端)十进制数 -1,234,567,890,123,456,789 或十六进制数EE DD EF 0B 82 16 7E EBModbus 消息中的线路顺序:EE DD EF 0B 82 16 7E EB 64 位无符号整数(64-bit unsigned integer) 它结合了 4 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 无符号整数 大尾数 无符号整数 小尾数 无符号整数 Big-endian 字节交换 无符号整数小端字节交换例子字节顺序:AB CD EF GH(大端)十进制数 1,234,567,890,123,456,789 或十六进制数11 22 10 F47D E9 81 15 Modbus 消息中的线路顺序:11 22 10 F4 7D E9 81 15 32位浮点数(32-bit floating) 它结合了 2 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 浮点大尾数 浮点数小尾数 浮点大端字节交换 浮点小端字节交换例子字节顺序:AB CD(大端)浮点数 123456.00 或十六进制47 F1 20 00Modbus 消息中的线路顺序:47 F1 20 00 64位双精度浮点数(64-bit double) 它结合了 4 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 双大尾数 双小端 双大端字节交换 双小端字节交换例子字节顺序:AB CD EF GH(大端)浮点数 123456789.00 或十六进制41 9D 6F 34 54 00 00 00Modbus 消息中的线路顺序:41 9D 6F 34 54 00 00 00 保存/打开工作区 如果您打开许多相关的 Modbus 窗口,可以方便地在一个工作区中保存所有打开和排列的 Modbus 窗口的当前布局的快照。 工作区 (*msw) 是一个包含所有打开窗口的显示信息和文件名的文件。不是实际内容。为此,请转到文件→保存工作区。 连接和图表设置存储在工作区文件中。 当您打开工作区文件时,Modbus Slave 将打开所有 Modbus 窗口并以您保存的布局显示它们。 通讯流量 选择菜单“显示”→“通讯”以显示串行线路或以太网电缆上的流量。使用停止按钮暂时停止更新以进行检查。 使用复制按钮将所选行复制到剪贴板。 该窗口仅显示 Modbus 从站发送和接收的数据。您不能将其用作数据嗅探器。 在执行其他命令时保持此窗口打开。 OLE/自动化 自动化(以前称为 OLE 自动化)使一个应用程序可以操作另一应用程序中实现的对象。 自动化客户端是一个可以操作属于另一个应用程序的公开对象的应用程序。这也称为自动化控制器。 自动化服务器是向其他应用程序公开可编程对象的应用程序。Modbus Slave是一个自动化服务器。 这意味着您可以使用任何支持VBA(Visual Basic for Applications)的程序(例如Visual Basic、Excel等)根据您的具体要求解释和显示modbus数据。 Excel 示例 当您想要编写宏时,您应该显示“开发人员”选项卡或在开发人员模式下运行。 Excel 2007 单击 Microsoft Office 按钮,然后单击 Excel 选项。 单击“流行”,然后选中“在功能区中显示开发人员选项卡”复选框。请注意,功能区是 Microsoft Fluent 用户界面的一部分。 Excel 2010、2016 单击文件选项卡。 单击选项。Excel 选项窗口将打开。 在左侧窗格中单击“自定义功能区”。 在右侧窗格的“主选项卡”下,选中“开发人员”复选框。 单击“确定”。“开发人员”选项卡现在应该显示在功能区中(最右侧的选项卡)。 Excel 示例代码 此示例打开一个模拟保持寄存器的窗口。Modbus Slave 是隐藏的,但您可以通过取消注释“ShowWindow”行来显示它。这将显示其中一个窗口。 Modbus Slave 安装中还包含一个示例。开始 → 所有程序 → Modbus Slave → Excel 示例Excel VBA 示例 Public doc As Object Public app As Object Dim status As Integer Dim n As Integer Private Sub StartSlave_Click() ' Create an application object. You can only create 1 application object Set app = CreateObject("Mbslave.Application") ' Create a new Modbus Slave document (Data Window) ' This is the same as open a new data window in Modbus Slave ' You can create up to 50 Modbus Slave documents (Data Window) Set doc = CreateObject("Mbslave.Document") ' Show Modbus Slave ' res = doc.ShowWindow() ' Create doc2 if needed. ' Set doc2 = CreateObject("Mbslave.Document") ' Set one of 5 connection types. app.Connection = 1 ' Modbus TCP/IP ' TCP/IP settings. ' No need to set IP address. We listen to any address. (Default). app.ServerPort = 502 app.IPVersion = 4 ' Open the connection. res = app.OpenConnection() Range("D5").Value = res res = doc.SetupHoldingRegisters(1, 100, 8) doc.SRegisters(0) = 1 ' Modbus address 100 doc.SRegisters(1) = -10 ' Note that the Index used counts from 0 doc.URegisters(2) = 50000 ' no matter the Modbus address used. doc.URegisters(3) = 60000 doc.Longs(4) = 10000 ' A long takes 2 registers doc.Floats(6) = 123.45 ' A float takes 2 registers ' Now a master can read 8 Holding registers with a mix of 3 data types End Sub Python示例 此 Python 示例打开一个窗口并设置所有可能的数据格式。Python 示例 import win32com.client as win32 SIGNED = 0 UNSIGNED = 1 HEX = 2 BINARY = 3 FLOAT_LE_BS = 4 FLOAT_BE = 5 DOUBLE_LE_BS = 6 DOUBLE_BE = 7 S32_LE_BS = 8 S32_BE = 9 FLOAT_LE = 10 FLOAT_BE_BS = 11 DOUBLE_LE = 12 DOUBLE_BE_BS = 13 S32_LE = 14 S32_BE_BS = 15 U32_BE = 17 U32_LE_BS = 18 U32_BE_BS = 19 U32_LE = 20 S64_BE = 21 S64_LE_BS = 22 S64_BE_BS = 23 S64_LE = 24 U64_BE = 25 U64_LE_BS = 26 U64_BE_BS = 27 U64_LE = 28 #Endianness BE = 0 LE = 3 BE_BS = 2 LE_BS = 1 App = win32.Dispatch('Mbslave.Application') App.Connection = 1 App.IPAddress = "127.0.0.1" App.ServerPort = 502 App.OpenConnection #Create a Modbus display window called Win1 Win1 = win32.Dispatch("Mbslave.Document") # Setup 100 holding registers with slave ID 1, address 0 (40001) Win1.SetupHoldingRegisters(1, 0, 100) # Show the Modbus window Win1.ShowWindow() # Show 20 rows Win1.Rows(1) # Disable refresh for speed Win1.EnableRefresh = False # Set all different formats # This sets how the value is displayed # Use ByteOrder to set the actual endianness Win1.SetFormat(0, SIGNED) Win1.SetFormat(1, UNSIGNED) Win1.SetFormat(2, HEX) Win1.SetFormat(3, BINARY) Win1.SetFormat(4, S32_BE) Win1.SetFormat(6, S32_LE) Win1.SetFormat(8, S32_BE_BS) Win1.SetFormat(10, S32_LE_BS) Win1.SetFormat(12, U32_BE) Win1.SetFormat(14, U32_LE) Win1.SetFormat(16, U32_BE_BS) Win1.SetFormat(18, U32_LE_BS) Win1.SetFormat(20, S64_BE) Win1.SetFormat(24, S64_LE) Win1.SetFormat(28, S64_BE_BS) Win1.SetFormat(32, S64_LE_BS) Win1.SetFormat(40, U64_BE) Win1.SetFormat(44, U64_LE) Win1.SetFormat(48, U64_BE_BS) Win1.SetFormat(52, U64_LE_BS) Win1.SetFormat(60, FLOAT_BE) Win1.SetFormat(62, FLOAT_LE) Win1.SetFormat(64, FLOAT_BE_BS) Win1.SetFormat(66, FLOAT_LE_BS) Win1.SetFormat(80, DOUBLE_BE) Win1.SetFormat(84, DOUBLE_LE) Win1.SetFormat(88, DOUBLE_BE_BS) Win1.SetFormat(92, DOUBLE_LE_BS) # Set all Names to used format Win1.SetName(0, "SIGNED") Win1.SetName(1, "UNSIGNED") Win1.SetName(2, "HEX") Win1.SetName(3, "BINARY") Win1.SetName(4, "S32_BE") Win1.SetName(6, "S32_LE") Win1.SetName(8, "S32_BE_BS") Win1.SetName(10, "S32_LE_BS") Win1.SetName(12, "U32_BE") Win1.SetName(14, "U32_LE") Win1.SetName(16, "U32_BE_BS") Win1.SetName(18, "U32_LE_BS") Win1.SetName(20, "S64_BE") Win1.SetName(24, "S64_LE") Win1.SetName(28, "S64_BE_BS") Win1.SetName(32, "S64_LE_BS") Win1.SetName(40, "U64_BE") Win1.SetName(44, "U64_LE") Win1.SetName(48, "U64_BE_BS") Win1.SetName(52, "U64_LE_BS") Win1.SetName(60, "FLOAT_BE") Win1.SetName(62, "FLOAT_LE") Win1.SetName(64, "FLOAT_BE_BS") Win1.SetName(66, "FLOAT_LE_BS") Win1.SetName(80, "DOUBLE_BE") Win1.SetName(84, "DOUBLE_LE") Win1.SetName(88, "DOUBLE_BE_BS") Win1.SetName(92, "DOUBLE_LE_BS") # Set different values Win1.SRegisters(0, -100) Win1.SRegisters(1, 100) Win1.URegisters(2, 43690) Win1.URegisters(3, 65535) Win1.ByteOrder = BE Win1.Ints_32(4, -123456) Win1.ByteOrder = LE Win1.Ints_32(6, -123456) Win1.ByteOrder = BE_BS Win1.Ints_32(8, -123456) Win1.ByteOrder = LE_BS Win1.Ints_32(10, -123456) Win1.ByteOrder = BE Win1.UInts_32(12, 123456) Win1.ByteOrder = LE Win1.UInts_32(14, 123456) Win1.ByteOrder = BE_BS Win1.UInts_32(16, 123456) Win1.ByteOrder = LE_BS Win1.UInts_32(18, 123456) Win1.ByteOrder = BE Win1.Ints_64(20, -123456) Win1.ByteOrder = LE Win1.Ints_64(24, -123456) Win1.ByteOrder = BE_BS Win1.Ints_64(28, -123456) Win1.ByteOrder = LE_BS Win1.Ints_64(32, -123456) Win1.ByteOrder = BE Win1.UInts_64(40, 123456) Win1.ByteOrder = LE Win1.UInts_64(44, 123456) Win1.ByteOrder = BE_BS Win1.UInts_64(48, 123456) Win1.ByteOrder = LE_BS Win1.UInts_64(52, 123456) Win1.ByteOrder = BE Win1.Floats (60, 123.456) Win1.ByteOrder = LE Win1.Floats (62, 123.456) Win1.ByteOrder = BE_BS Win1.Floats(64, 123.456) Win1.ByteOrder = LE_BS Win1.Floats(66, 123.456) Win1.ByteOrder = BE Win1.Doubles(80, 123.456) Win1.ByteOrder = LE Win1.Doubles(84, 123.456) Win1.ByteOrder = BE_BS Win1.Doubles(88, 123.456) Win1.ByteOrder = LE_BS Win1.Doubles(92, 123.456) # Refresh Win1.EnableRefresh = True Win1.ResizeAllColumns () Win1.ResizeWindow() print (Win1.GetName(1)) _ = input("Press ENTER to quit:") 连接功能/属性 以下属性和功能与您在连接对话框 (F3) 中的设置相同。 连接 连接选择所需的连接。可以选择串行端口或以太网连接之一。 属性连接为整数有效值 0 = 串行端口1 = Modbus TCP/IP2 = Modbus UDP/IP3 = Modbus RTU over TCP/IP4 = Modbus RTU over UDP/IP例子 Connection = 0 波特率 仅适用于连接 = 0 属性BaudRate as Long有效值 3006001200240048009600(默认)1440019200384005600057600115200128000153600230400256000460800921600例子 BaudRate = 9600 数据位 仅适用于连接 = 0 属性DataBits作为整数有效值 78(默认)例子 DataBits = 8 校验位 仅适用于连接 = 0 财产平价作为整数有效值 0 = 无1 = 奇数2 = 偶数(默认)例子 Parity = 2 停止位 仅适用于连接 = 0 属性StopBits作为整数有效值 1(默认)2例子 StopBits = 1 串行端口 仅适用于连接 = 0 属性SerialPort作为整数有效值 1…255 默认值 = 1例子 SerialPort = 1 服务器端口 仅适用于连接 = 1…4 属性ServerPort为 Long有效值 0…65535 默认值 = 502例子 ServerPort = 502 IP版本 仅适用于连接 = 1…4 属性IPVersion作为整数有效值 4 = IP 版本 4(默认)6 = IP 版本 6例子 IPVersion = 4 任意地址 仅适用于连接 = 1…4 属性AnyAddress作为整数有效值 0 = 任何地址 = false1 = 任何地址 = true(默认)例子 AnyAddress = 1 忽略单位ID 仅适用于连接 = 1…4 属性IgnoreUnitID作为 Integer有效值 0 = 忽略单元 ID = false1 = 忽略单元 ID = true(默认)例子 IgnoreUnitID = 1 开放连接 打开使用“连接”属性选择的连接。 函数OpenConnection () 作为整数 返回值: 如果成功则为零。如果失败则非零值。如何打开 Modbus TCP/IP 连接的示例 Public app As Object Dim res As Integer ' Create an object to Modbus Slave Set app = CreateObject("Mbslave.Application") app.Connection = 1 ' Select Modbus TCP/IP app.IPVersion = 4 ' app.IPAddress = "192.168.1.27" ' No need to setup if AnyAddress = 1. Modbus Slave listen on all. app.ServerPort = 502 res = OpenConnection() 如何设置串行连接的示例 Public app As Object Dim status As Integer ' Create an object to Modbus Slave Set app = CreateObject("Mbslave.Application") app.Connection = 0 ' Mode is serial port app.SerialPort = 1 ' Com port 1 app.BaudRate = 9600 ' 9600 baud app.Parity = 0 ' None parity app.Mode = 0 ' RTU mode status = app.OpenConnection() 关闭连接 函数CloseConnection () As Integer返回值 如果成功则为零。如果失败则非零值。 显示通讯交通 函数ShowCommunicationTraffic () 显示通信流量窗口。 关闭通讯交通 函数CloseCommunicationTraffic () 关闭通信流量窗口(如果显示)。 自动化设置功能 以下功能与您在读/写定义对话框 (F8) 中设置的功能相同。读取功能与 Modbus 从站文档相关联。(带有数据的窗口).示例 Res = doc.SetupDiscreteInputs (1, 100, 5) Coils (0) = 1 ' Address 100 = 1 Coils (1) = 0 ' Note that the index used in Coils starts from 0 Coils (2) = 1 ' no matter the address used. Coils (3) = 0 Coils (4) = 1 ' Now the Master reads 1, 0, 1, 0, 1 when read 5 discrete inputs starting from address 100 设置线圈 Function SetupCoils (SlaveID As Integer, Address As Long, Quantity As Integer) As Integer返回值 如果成功则为真。如果没有成功则为假参数 SlaveID:从机地址 1 至 255地址:数据地址(基址 0)数量:数据数量。1 至 10000 设置离散输入 函数设置离散输入(SlaveID 作为整数,地址作为整数,数量作为整数)作为整数返回值 如果成功则为真。如果没有成功则为假参数 SlaveID:从机地址 1 至 255地址:数据地址(基址 0)数量:数据数量。1 至 10000 设置保持寄存器 函数SetupHoldingRegisters (SlaveID As Integer, Address As Long, Quantity As Integer) As Integer返回值 如果成功则为真。如果没有成功则为假参数 SlaveID:从机地址 1 至 255地址:数据地址(基址 0)数量:数据数量。1 至 10000 设置输入寄存器 函数SetupInputRegisters (SlaveID As Integer, Address As Long, Quantity As Integer) As Integer返回值 如果成功则为真。如果没有成功则为假参数 SlaveID:从机地址 1 至 255地址:数据地址(基址 0)数量:数据数量。1 至 10000 橱窗展示 函数ShowWindow ()默认情况下,Modbus 文档窗口是隐藏的。ShowWindow 功能使 Modbus Poll 可见并显示带有数据内容的文档。 获取名称 函数GetName(索引为整数)为字符串描述 获取值的名称。索引 0 对应于第一个 Modbus 地址。 设置名称 函数SetName(索引为整数,名称为字符串)描述 设置值的名称。索引 0 对应于第一个 Modbus 地址。 自动递增 属性AutoIncrement(索引为整数)为布尔值描述 设置值的自动增量。索引 0 对应于第一个 Modbus 地址。句法 自动增量(索引)[=新值] 全部格式化 函数FormatAll(格式化为整数)使用所选格式设置所有值单元格的格式。参数 格式:值单元格的格式。 获取格式 函数GetFormat(索引为整数)作为整数描述 获取Modbus值的显示格式。 ID格式0签1未签名2十六进制3二进制4浮点小端字节交换5浮点大尾数6双小端字节交换7双大端832 位有符号小端字节交换932 位有符号大尾数10浮点数小尾数11浮点大端字节交换12双小尾数13双大端字节交换1432 位有符号小端字节序1532 位有符号大端字节交换17 32 位无符号大端字节序1832 位无符号小端字节交换1932 位无符号大端字节交换2032 位无符号小端字节序2164 位有符号大尾数2264 位有符号小端字节交换2364 位有符号大端字节交换2464 位有符号小端字节序2564 位无符号大端字节序2664 位无符号小端字节交换2764 位无符号大端字节交换2864 位无符号小端字节序 此设置仅用于显示。使用 Get/Set 值函数时,您仍然需要使用 byteOrder 来获取正确的字节顺序。 设置格式 函数SetFormat(索引为整数,格式为整数)描述 设置 Modbus 值的显示格式。请参阅上面的格式值。 调整窗口大小 函数ResizeWindow ()调整打开的窗口的大小以适合网格。 行数 函数Rows (NumberRows)指定网格中的行数。参数 NumberRows:网格中的行数。 ID描述010 行(默认)120 行250 行3适合数量 自动化数据属性 以下属性用于设置或获取 Modbus 从站内部写入/读取数组中的值。使用的索引不是 Modbus 地址。无论使用什么地址,索引始终从 0 开始计数。数据属性与 Modbus 从站文档关联。(有数据的窗口) 示例1: ' doc is assumed created first. See Excel example. doc.SRegisters(0) = 1 doc.SRegisters(1) = 10 doc.SRegisters(2) = 1234 使用浮点值的示例 2: doc.Floats(0) = 1.3 doc.Floats(2) = 10.5 doc.Floats(4) = 1234.12 线圈(Coils) 属性 线圈(索引 As Integer) As Integer 描述 在写入数组结构中设置一个线圈或从读取数组中返回一个线圈。 语法 Coils(Index) [=newvalue] 短整型寄存器(SRegisters) 属性 短整型寄存器(索引 As Integer) As Integer 描述 在写入数组结构中设置一个寄存器或从读取数组中返回一个寄存器。 语法 SRegisters(Index) [=newvalue] 无符号寄存器(URegisters) 属性 无符号寄存器(索引 As Integer) As Long 描述 在写入数组结构中设置一个寄存器或从读取数组中返回一个寄存器。 语法 URegisters(索引)[=新值] 32位整型(Ints_32) 属性 32位整型(索引 As Integer) As Double 描述 在写入数组结构中设置一个32位整数或从读取数组中返回一个整数。 语法 URegisters(Index) [=newvalue] 无符号32位整型(UInts_32) 属性 无符号32位整型(索引 As Integer) As Double 描述 在写入数组结构中设置一个32位无符号整数或从读取数组中返回一个无符号整数。 语法 UInts_32(Index) [=newvalue] 64位整型(Ints_64) 属性 64位整型(索引 As Integer) As Double 描述 在写入数组结构中设置一个64位整数或从读取数组中返回一个整数。 语法 Ints_64(Index) [=newvalue] 无符号64位整型(UInts_64) 属性 无符号64位整型(索引 As Integer) As Double 描述 在写入数组结构中设置一个64位无符号整数或从读取数组中返回一个无符号整数。 语法 UInts_64(Index) [=newvalue] 浮点数(Floats) 属性 浮点数(索引 As Integer) As Single 描述 在写入数组结构中设置一个浮点数或从读取数组中返回一个浮点数。 语法 Floats(Index) [=newvalue] 双精度浮点数(Doubles) 属性 双精度浮点数(索引 As Integer) As Double 描述 在写入数组结构中设置一个双精度浮点数或从读取数组中返回一个双精度浮点数。 语法 Doubles(Index) [=newvalue] 字节顺序(ByteOrder) 属性ByteOrder作为整数描述 设置 Ints_32、UInts_32、Ints_64、UInts_64、浮点数 和 双精度浮点数 属性使用的字节顺序。 ID字节顺序0大端序(默认)1小端序字节交换2大端序字节交换3小端序 Ints_32 示例:字节顺序:大端序十进制数123456789 或 十六进制 07 5B CD 15 在Modbus消息中的传输顺序:07 5B CD 15 语法 字节顺序 [=新值] 小程序版,免费使用!!! --- ### 394. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 小程序版,免费使用!!! 简介 ModScan32 是一款功能强大的 Modbus 主站调试工具,可用于测试 Modbus 协议、读取和写入 Modbus 从站设备的数据。它支持多种连接方式,包括串行、TCP/IP 和 Telnet。 功能 支持 Modbus/TCP、RTU 和 ASCII 模式 支持多种数据类型,包括整数、浮点数和字符串 支持读取和写入线圈、寄存器和输入寄存器 支持多种连接方式,包括串行、TCP/IP 和 Telnet 支持 Modbus 协议的调试和测试 支持数据采集和记录 优点 功能强大,支持多种功能 使用方便,界面友好 支持多种连接方式 支持 Modbus 协议的调试和测试 支持数据采集和记录 应用场景 工业控制 楼宇自动化 电力系统 数据采集 设备测试 总结 ModScan32 是一款功能强大的工具,特别适用于工程师和 IT 专业人士进行 Modbus 协议测试和数据采集。它支持多种连接类型和传输模式,可以轻松地与各种设备进行通信。虽然在一些方面存在一些缺点,例如在某些情况下用户体验可能稍显不足,但其丰富的功能和灵活性使其成为工程师们不可或缺的工具之一。通过 ModScan32,用户可以快速验证系统的正确性,轻松诊断通信问题,并执行必要的测试以确保系统的可靠性和稳定性。 软件使用 点击菜单栏" 连接设置(Connection)"->" 连接(Connect)",弹出连接配置窗口。 在"使用的连接"那里选择: Remote modbusTCP Server  Remote TELNET Server Direct Connection to COM1 Direct Connection to COM2 ... Direct Connection to COM32 备注:"Direct Connection to COMXX"(XX是需要更改为实际端口地址) 名词解释 Remote modbusTCP Server解释 Modbus TCP 是一种基于 TCP/IP 网络的 Modbus 协议的变体,它使用以太网连接来实现与远程设备的通信。通过 Remote Modbus TCP Server 功能,Modscan32 可以作为 Modbus TCP 主机连接到远程的 Modbus TCP 从机设备。 Remote TELNET Server解释 Remote TELNET Server(远程 TELNET 服务器)是 Modscan32 中的一项功能,它允许通过 Telnet 协议在网络上与 Modbus 从机设备进行通信。Telnet 是一种网络协议,可以通过网络连接远程访问计算机或设备。 Direct Connection to XX解释 通过串口通讯进行连接,需要设置相关的参数,如串口号、波特率、数据位数等 通过串口连接 在配置窗口中配置好端口号、波特率、数据位、校验位、停止位,一般是9600波特率(9600 Baud),8个数据位(8 Data bits),无校验位(None Parity),1个停止位(1 Stop Bit)。当然这个是要根据实际通信的从机设备进行匹配设置。 第一步: 单击菜单栏的Connenction ---”connect”出现 第二步: 单击Rotocol Selection进入下一步 第三步:通讯参数设定:进行下面的设置操作.单击后出现的界面填写如下图所示的数据 2.Modbus的类型选择:   在Modbus Point Type就是要读取的寄存器区: 01:线圈状态 (01: COIL STATUS) -(可读可写) 线圈状态是指Modbus从机的输出线圈的状态,可以是开(1)或闭(0)。用于控制和监测设备的开关状态。 02:输入状态 (02: INPUT STATUS) - (只读)输入状态是指Modbus从机的输入线圈的状态,可以是开(1)或闭(0)。用于监测外部设备或传感器的状态。 03:保持寄存器 (03: HOLDING REGISTER) -(可读可写) 保持寄存器是用于存储和读取数据的Modbus寄存器类型。可以用于存储和配置参数、控制设备操作等。 04:输入寄存器 (04: INPUT REGISTER) - (只读)输入寄存器是用于存储只读数据的Modbus寄存器类型。可以用于存储传感器数据、设备状态等信息。 按照硬件产品说明书指导选择哪一种类型。 3.PC显示数据设置: 点击菜单栏" 配置(Setup)"->" 显示选项(Display Options)",弹出显示格式窗口。 从左到右对应看:二进制、八进制、十六进制 二进制 (Binary) - 以二进制形式表示的数据格式。范围:0 或 1。 十进制 (Decimal) - 以十进制形式表示的数据格式。范围:-32768 到 32767(16位有符号数)或 0 到 65535(16位无符号数);-2147483648 到 2147483647(32位有符号数)或 0 到 4294967295(32位无符号数)。 十六进制 (Hex) - 以十六进制形式表示的数据格式。范围:-8000 到 7FFF(16位有符号数)或 0 到 FFFF(16位无符号数);-80000000 到 7FFFFFFF(32位有符号数)或 0 到 FFFFFFFF(32位无符号数)。 长整型 (Long Integer) - 表示带符号的长整数数据格式。范围:-2147483648 到 2147483647。 长整型(交换) (Long (Swapped)) - 字节顺序颠倒的长整型数据格式。范围:-2147483648 到 2147483647。 浮点数 (Floating Point) - 表示带有小数的数值的数据格式。范围:根据浮点数位数不同而有所变化。 浮点数(交换) (Float (Swapped)) - 字节顺序颠倒的浮点数数据格式。范围:根据浮点数位数不同而有所变化。 64位浮点数 (64-Bit Floats) - 表示双精度浮点数的数据格式,具有更高的精度。范围:根据浮点数位数不同而有所变化。 64位交换 (64-Bit Swapped) - 字节顺序颠倒的64位数据格式。范围:根据数据类型不同而有所变化。 4.其它功能菜单项: 从左到右对应看:新建、打开、保存、连接、断开、数据定义等。 所有参数设置完成后单击OK,如果对应串口有数据输入,就能获取数据。 备注: 采用Modbus/485信号接入要求如下: 1. Server通讯的参数为9600,8,1,无效验(可调整,但是目前企业通讯模式参数一致) 2. Server 的485地址是1 3. 采集点对应Modbus RTU 地址为4001开始,数据类型为RINT。 4. 提供的MOdbus RTU Server必须是国际标准版协议,使用Modscan调试软件能够测试通过。 地址 (Address) - Modbus从机的地址范围1-255。 长度 (Length) - 用于指定要读取或写入的数据的长度或数量。可以是字节、位或寄存器的数量,取决于所使用的功能码和数据类型。 设备ID (Device Id) - 设备ID是用于标识Modbus网络中不同设备的唯一标识符。每个Modbus设备都有一个唯一的设备ID。 MODBVS点类型 (MODBVS point Type) - MODBVS点类型是指在Modscan32中用于选择不同的Modbus数据类型和寄存器类型的选项。 显示 (Display) - Modscan32中用于选择数据显示格式的选项。 显示数据 (Show Data) - 显示数据选项用于在Modscan32中显示读取到的Modbus数据。 显示通信 (Show Traffic) - 显示通信选项用于在Modscan32中显示Modbus通信的传输数据。 窗口状态显示 Number of Polls:表示当前已发送的指令数量 Valid Slave Responses:表示目标从机回复的指令数量 红色字样表示当前故障状态,详见以下故障说明。 ** Device NOT CONNECTED! **:表示当前未连接。 ** Data Uninitialized **:表示当前窗口未进行配置。 ** MODBUS Message TIME-OUT **:表示发送指令后从设备超时未响应。 而从机设备不回复,可能性有很多,比如: 1、连接配置错误,主机的波特率、Slave ID等信息跟从机设备对应不上,从机就不会回。 2、线路异常,电脑跟从机设备之前的通信线存在异常,也是无法正常收到回复。 3、从机设备解析异常不回复,这个具体可以查看Modbus协议详解。 ** Checksum Error in Response Message **:响应的数据校验错误。 ** MODBUS Exception Response from Slave Device **:地址异常,一般是当访问的从机设备不存在要读取的寄存器/线圈地址时,会返回不存在此地址的02异常码,软件接收到此指令时就会报出这个错误。 --- ### 395. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 小程序版,免费使用!!! Modbus Poll简介 Modbus Poll 是一款易于使用的 Modbus 主站模拟器,专为多种用途而开发。 其中包括: Modbus 从站设备设计人员,用于快速轻松地测试协议接口 需要在现场测试Modbus设备或网络的自动化工程师 想要从设备中读取和/或更改特定服务数据的服务工程师 更改从设备中的 Modbus 寄存器 记录来自 Modbus 设备的数据 故障排除和合规性测试 Modbus Poll 的系统要求 硬件要求 处理器;建议使用 1 GHz 或更快 1 GB RAM5 MB 可用硬盘空间1024 x 768 显示分辨率操作系统要求 支持从 Windows 7 到 Windows 11 的所有 Windows 版本。 Modbus Poll功能 连接 Modbus Poll使用以下方式对从设备读取/写入数据: RS232 或 RS485 网络上的 Modbus RTU 或 ASCII。(USB/RS232/485转换器) 基于 TCP/IP 的 Modbus。(封装在TCP数据包中的Modbus RTU/ASCII) 基于 UDP/IP 的 Modbus。(封装在 UDP 数据包中的 Modbus RTU/ASCII) 支持的Modbus功能 01 (0x01) 读取线圈 02 (0x02) 读取离散输入 03 (0x03) 读取保持寄存器 04 (0x04) 读取输入寄存器 05 (0x05) 写入单线圈 06 (0x06) 写入单个寄存器 08 (0x08) 诊断(仅限串行线路) 11 (0x0B) 获取通信事件计数器(仅限串行线路) 15 (0x0F) 写入多个线圈 16 (0x10) 写入多个寄存器 17 (0x11) 报表服务器 ID(仅限串行行) 22 (0x16) 掩码写入寄存器 23 (0x17) 读/写多个寄存器 43 / 14 (0x2B / 0x0E) 读取设备标识 数据记录 将数据记录到文本文件 将数据直接记录到 Excel 中 显示格式 每个单元格都可以单独设置格式。 中文描述英文描述16位有符号寄存器Signed 16-bit register16位无符号寄存器Unsigned 16-bit register十六进制Hex二进制Binary具有任意字/字节顺序的 32 位有符号整数32-bit signed integer with any word/byte order具有任意字/字节顺序的 32 位无符号整数32-bit unsigned integer with any word/byte order具有任意字/字节顺序的 64 位有符号整数64-bit signed integer with any word/byte order具有任意字/字节顺序的 64 位无符号整数64-bit unsigned integer with any word/byte order具有任意字/字节顺序的 32 位浮点数32-bit float with any word/byte order具有任意字/字节顺序的 64位双精度浮点数64-bit double float with any word/byte order 其他功能 用于与 Excel、VBA、Python 等接口的 OLE/Automation。 监控数据流量 打印和打印预览 字体选择 条件颜色 缩放 实时图表 保存/打开工作区 地址扫描 Modbus Poll概述 Modbus Poll 使用多窗口界面。这意味着可以打开几个窗口。 每个都同时具有来自不同从站设备的不同数据内容。 随时随地提供帮助 按 F1 并获取与当前所选项目关联的主题的上下文相关帮助。 SHIFT + F1 调用一种特殊的“帮助模式”,在这种模式下,光标会变成帮助光标(箭头 + 问号)。 然后,用户可以在用户界面中选择可见对象,例如菜单项、工具栏按钮或窗口。 这将打开有关描述所选项目的主题的帮助。 命名单元格 在这里,您可以键入任何文本来指定值单元格。您还可以从 Excel 单元格复制/粘贴文本。 值单元格 显示Modbus寄存器的数据值。如果双击值单元格,则会出现一个对话框 将新值写入从设备。在值单元格中键入数字也会显示对话框。 可以选择用于写入值的 Modbus 函数。 “在响应正常时关闭对话框”复选框用于在成功发送值时自动关闭对话框。 当要更改大量值时,这很方便。这样,可以快速选择新单元格,然后再次键入新值。 更改字体 要更改字体,您有 2 个选项 选择要更改的单元格,然后单击鼠标右键。 选择要更改的单元格,然后选择 Menu→Display→Font。 条件颜色 条件颜色可帮助您直观地显示特定范围内的值。3种颜色选择 默认颜色:如果没有任何条件颜色的计算结果为 true,则使用此颜色。 规则 1:如果表达式的计算结果为 true,则使用此颜色选择。规则 1 优先于规则 2。 规则 2:如果表达式的计算结果为 true,则使用此颜色选择。 7种比较运算符 中文描述英文描述未使用not used等于equal to大于greater than小于less than大于等于greater than or equal to小于等于less than or equal to与and 当数据类型为浮点型或 32 位长类型时,不能使用“and”运算符。 如果选择“and”,则条件值将作为十六进制数字输入。 如果单元格和条件值中的任何位均为 1,则计算结果为 true。 颜色示例 如果单元格值大于 0,则为绿色,如果小于 0,则为红色。 缩放 缩放可帮助您将原始值缩放为人类可读的值。缩放仅适用于有符号和无符号的 16/32 位整数。 (X1,Y1) 和 (X2,Y2) 穿过两点 (X1,Y1) 和 (X2,Y2) 的线 线方程 精度 小数点后的位数。 使 必须启用才能从 Modbus 服务器/从站缩放值。如果出现其他情况,则自动禁用缩放 选择 16/32 位整数显示格式。 实时图表 该图表可以实时绘制 12 个系列,每个系列最多 100000 个点。 地址扫描 扫描地址范围以获取设备中所有有效地址的列表。 打开一个新窗口 要打开另一个窗口,您有 3 个选项: 按 CTRL+N 在文件菜单中选择新建 压在工具栏上 连接对话框 要打开连接对话框,您有 2 个选项: 按 F3 从连接菜单中选择连接 连接(Connection) 有 5 种不同的连接类型: 串行:串行线路上的Modbus。RS232 或 RS485。可以使用USB串行转换器。 Modbus TCP/IP:如果要与 MODBUS TCP/IP 网络通信,请选择 TCP/IP。在本例中,从属 ID 是 与 MODBUS TCP/IP 中使用的设备 ID 相同。端口号默认为 502。如果连接失败,请尝试在命令提示符下对设备执行 ping 操作。如果 ping 命令失败,则 Modbus 轮询也会失败。 Modbus UDP/IP:如果要与 MODBUS UDP/IP 网络通信,请选择 UDP/IP。这与Modbus相同 TCP/IP,但改用连接较少的 UDP 协议。 Modbus RTU/ASCII over TCP/IP:这是通过 TCP/IP 网络而不是串行线路发送的 RTU 或 ASCII 消息。 Modbus RTU/ASCII over UDP/IP:这是通过 UDP/IP 网络而不是串行线路发送的 RTU 或 ASCII 消息。 注意:连接类型 3-5 不是 www.modbus.org 指定的标准 Modbus,但为了方便起见,添加了它们。 根据您的选择,其他一些设置将显示为灰色。 串口设置(Serial Settings) 使用这些参数可以设置串行端口设置。仅当连接类型为“串行端口”时,它们才可用。 模式 使用此选项可选择 RTU 或 ASCII 模式。默认 RTU。 响应超时 指定 Modbus 轮询在放弃之前应等待从机设备响应的时间长度。默认值为 1000ms。 轮询之间的最小延迟 无论扫描速率如何,此设置都可确保在传输下一个请求之前将延迟降至最低。 此设置的分辨率约为 15 毫秒。在某些计算机上可以获得更好的分辨率,但不是全部。 注意: 1.如果将此值设置为低于 20 毫秒,则无法保证响应和新请求之间的 3.5 个字符的时间间隔。 这是因为 Windows 计划程序每 10 - 20 毫秒切换一次任务。 2.如果轮询串行 RS485 网络中的多个从站,则不应将该值设置为低于 20 毫秒。这是为了确保 3.5 个字符的时间间隔。 3.在 TCP/IP 网络中,小于 20 毫秒是可以的。 4.仅与一个从设备的串行连接小于 20 毫秒即可。 用户波特率 如果默认波特率均无用,请指定自定义波特率。 远程服务器 远程服务器设置仅在使用以太网连接时可用。 IP地址 服务器 IP 地址。默认值为 localhost 127.0.0.1 端口 服务器端口号。默认值 502 连接超时 用于建立连接的最长时间。默认值 1000 高级设置 RTS 切换 RTS Toggle 指定如果字节可用于传输,则 RTS 行将为高电平。发送完所有缓冲字节后,RTS 行将变为低电平。如果您有一个没有自动方向切换的 232/485 转换器,您可以使用它来切换方向。 注意: 如果可能,应避免使用 RTS 控制的 RS232/RS485 转换器。 很难确定以非实时方式关闭发射器的确切时间 Windows 和 Linux 等操作系统。如果过早关闭,字符可能仍会坐着 在FIFO或UART的发射寄存器中,这些字符将丢失。因此奴隶 无法识别该消息。另一方面,如果它关闭得太晚,那么从机的消息 已损坏,主服务器将无法识别该消息。 DSR格式 DSR 指定是否监视 DSR(数据集就绪)信号以进行输出流量控制。如果此成员为 TRUE 且 DSR 处于关闭状态,则输出将挂起,直到再次发送 DSR。 CTS服务 CTS 指定是否监控 CTS(clear-to-send)信号以进行输出流量控制。如果启用此复选框并关闭 CTS,则输出将暂停,直到再次发送 CTS。 DTR公司 DTR 指定在打开端口时是启用还是禁用 DTR。 删除 Echo 如果您的设备或 RS232/RS485 转换器回显刚刚发送的字符。 读/写定义 使用此命令可以定义要监视的活动窗口的数据。 若要打开“读/写定义”对话框,有 3 个选项: 按 F8 从“设置”菜单中选择“读/写定义” 压在工具栏上 从站ID 范围 1 到 255。(MODBUS协议规范是247)。值 0 也可用于直接与 MODBUS/TCP 或 MODBUS/UDP 设备通信。 函数代码 您可以从 8 个功能代码中选择 1 个。 读取函数 读取函数返回的数据将显示在网格窗口中。 01:读取线圈 (0x) 02: 读取离散输入 (1x) 03: 读取保持寄存器 (4x) 04: 读取输入寄存器 (3x) 编写函数 写入函数写入显示在网格窗口上的数据。 05: 写入单线圈(写入线圈状态) 06: 写入单个寄存器(写入保持寄存器) 15:写入多个线圈(写入线圈) 16:写入多个寄存器(写入保持寄存器) 地址 Modbus 协议中的地址令人困惑!某些协议规范使用协议/消息 地址,其他人使用设备寻址。 协议/消息地址 某些协议规范使用从 0 到 65535 计数的协议/消息地址以及 函数代码。这也是新的Modbus规范所使用的。这是里面的地址 通过网络发送的消息。 Modbus Poll 使用协议/消息地址计数从 0 到 65535。 设备地址 某些协议规范使用设备地址/寄存器。寄存器计数从 1 开始。 第一位数字描述要使用的函数。这意味着设备地址 40101 由地址 100 标识。“4”表示保持寄存器,4x 寄存器从 1 开始计数。 因此,“4XXXX”引用是隐式的。 更令人困惑的是:4x 表示功能代码 03,3x 表示功能代码 04! 5 位数字与 6 位寻址 地址格式 4x 从 40001 计数到 49999。下一个地址不是 50000。 在过去,9999个地址就足够了。在某些情况下,9999 是不够的。 然后添加一个零。40101 变为 400101,依此类推。这称为 6 位寻址或扩展寻址。 这不是 Modbus Poll 的问题。410001变成 10000。“4”被扔掉,其余的 10001 当我们从 0 而不是 1 开始计数时,会减少 1。 地址示例 这些示例显示了在规范使用设备地址时如何设置 Modbus Poll。 读取保持寄存器 您希望每 1000 毫秒从从属 ID 2 读取设备地址 40011 的 20 个寄存器。从“4”中我们知道这是函数 03“读取保持寄存器”。 从站 ID = 2 函数 = “03 读取保持寄存器 (4x)” 地址 = 10(11 减去 1) 数量 = 20 扫描速率 = 1000 读取离散输入 您希望每 500 毫秒从地址 110201 从 ID 5 读取 1000 个线圈。从“1”中我们知道这是函数 02“读取离散输入” 从站 ID = 5 函数 = “02 读取离散输入 (1x)” 地址 = 10200 (10201 - 1) 数量 = 1000 扫描率 = 500 扫描速率 扫描速率可以从0到3600000ms设置。请注意,将扫描速率设置为低于事务 时间没有意义。如果使用 9600 波特的串行连接并请求 125 个寄存器 事务时间大约是 8 + 2 + 250 + 2 = 262ms + 请求之间的间隔(>3.5 个字符时间) 和回应。在这种情况下,将扫描速率设置为100ms是没有意义的,因为事务时间 至少 262 毫秒 + 从站延迟(间隙)+ 轮询之间的最短时间。(在连接对话框 F3 中设置)。 禁用读/写 “禁用读/写”复选框可用于临时启用或禁用通信 此窗口。然后显示文本 (Disabled) 以及 Tx 和 Error 计数器。 如果禁用了“读/写”,您可以使用“读/写一次”按钮或按 F6 发出单个请求。 “读/写一次”按钮 出错时禁用 如果出现错误,请禁用读/写。 隐藏名称列 隐藏所有名称列。如果不使用它们,这可以方便地腾出更多空间。 单元格中的地址 如果启用,则地址也会显示在值单元格中,例如:2000 = 00000 PLC地址(基数1) 此选项会将地址显示为设备地址。 Enron/Daniel模式 Enron 或 Enron/Daniels Modbus 是带有一些“供应商扩展”的标准 Modbus。 这些扩展的确切影响取决于上下文,但大多数常见的 Modbus 命令按预期工作。 有一些自定义的供应商定义的函数可用 - 但很少有用户期望或使用它们。 最大的影响与 32 位数据值的读写方式有关。 Enron-Modbus 定义了两个特殊的 4x 保持寄存器范围: 4x5001 到 4x5999 假定为 32 位长整数(每个寄存器 4 个字节)。 4x7001 到 4x7999 假定为 32 位浮点(每个寄存器 4 个字节)。 在 Modbus 中处理 32 位值并非 Enron-MB 所独有。但是,Enron-MB 需要 每个寄存器返回 4 个字节而不是 2 个字节的有争议的步骤 Modbus 规范中的术语“保持寄存器”。这意味着对寄存器进行轮询 Enron-Modbus 中的 4x5001 和 4x5002 返回 8 个字节或两个 32 位整数,而 Standard Modbus 只会返回 4 个字节或一个 32 位整数,被视为两个 16 位整数。 此外,Enron-MB 中的轮询寄存器 4x5010 返回第十个 32 位长整数, 而标准 Modbus 会考虑此范围内第五个 32 位长整数的 1/2。 行 指定您喜欢的网格中的行数。 实时图表 使用此命令可在图表中实时绘制多达 12 个数据系列。实时图表速度快,能够在收到新数据时快速绘制新线。 注意: 所有图表设置都保存在工作区文件中。保存/打开工作区 要打开“实时图表”对话框,您有 2 个选项: 按 Alt + R 从显示菜单中选择“实时图表” X 轴显示自图表启动以来的秒数。 当点到达图表的末尾时,有 3 个选项: 最后停下来:图表停止。 最后重新启动:图表重新开始。 继续:它一直持续到达到最大点数或按下停止键。 设置 默认情况下,所有 12 个系列都链接到左侧 Y 轴。检查 “右 Y 轴”复选框(如果要将序列链接到右 Y 轴)。 指定 颜色 右 Y 轴 标题。如果标题为空,则使用阅读窗口中的名称进行初始化 抵消 显示 文件名 地址 偏移量可用于在同一 Y 轴上对齐数据点。例如,数据点为 0 或 1 可以偏移,这样它们就不会相互重叠绘制。 缩放功能 如果您想查看更多详细信息,放大图表会很有用。 缩放由鼠标左键控制。要缩放图表的特定部分,只需单击鼠标左键即可 在图表上(这将是缩放矩形的左上角),然后拖动到右下角。 将出现一个矩形。松开鼠标按钮后,轴将自动 根据您选择的区域进行调整。 如果您左键单击图表(例如开始缩放),但如果您移动到左上角, 使用缩放和平移功能完成的所有修改都将被取消 (图表将处于使用平移和缩放操作之前的状态)。 平移功能 若要平移控件,请右键单击控件上的某个位置并移动鼠标。鼠标下方的点 将跟随鼠标的移动。 将数据链接到图表系列 除非您将 Modbus 数据单元链接到 12 系列之一,否则图表不知道要使用哪些数据。 为此,请选择一个值单元格,然后从菜单→显示中选择“链接到图表”。 导出系列 将系列数据保存到磁盘或复制到剪贴板。将数据直接粘贴到 Excel 中以供进一步处理。尽管使用了非逗号字段分隔符,但该文件仍具有.csv扩展名。 分隔符:选择用于分隔文本文件中值的字符。复制/粘贴到 Excel 时使用制表符分隔符。此外,还提供了一些附加信息。 点数 最大点值 最小点值 平均分值 地址扫描 扫描地址范围以获取设备中所有有效地址的列表。逐个读取地址,读取结果显示在列表中。 注意: 扫描所有 65535 个地址需要一些时间,具体取决于连接类型、服务器设备等。 导出地址扫描 将地址扫描数据保存到磁盘或复制到剪贴板。将数据直接粘贴到 Excel 中以供进一步处理。尽管使用了非逗号字段分隔符,但该文件仍具有.csv扩展名。 分隔符:选择用于分隔文本文件中值的字符。复制/粘贴到 Excel 时使用制表符分隔符。 显示格式 标记要格式化的单元格。从显示菜单中选择 28 种显示格式之一。 Native Modbus 寄存器 16 位 Modbus 寄存器可以以 4 种不同的模式显示。 签署 无符号 十六进制 ASCII - 十六进制 二元的 32位有符号整数 它结合了 2 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 有符号整数 Big-endian 有符号整数 Little-endian 有符号整数大端字节交换 有符号整数 Little-endian 字节交换例字节顺序:AB CD(大端)十进制数 123456789 或十六进制 07 5B CD 15 在 Modbus 消息中通过线路排列时的顺序:07 5B CD 15 32位无符号整数 它结合了 2 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 无符号整数 Big-endian 无符号整数 Little-endian 无符号整数大端字节交换 无符号整数 Little-endian 字节交换例字节顺序:AB CD(大端)十进制数 123456789 或十六进制 07 5B CD 15 在 Modbus 消息中通过线路排列时的顺序:07 5B CD 15 64位有符号整数 它结合了 4 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 有符号整数 Big-endian 有符号整数 Little-endian 有符号整数大端字节交换 有符号整数 Little-endian 字节交换例字节顺序:AB CD EF GH (Big-endian)十进制数 -1,234,567,890,123,456,789 或十六进制 EE DD EF 0B 82 16 7E EB顺序,因为它们在 Modbus 消息中通过网络出现:EE DD EF 0B 82 16 7E EB 64位无符号整数 它结合了 4 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 无符号整数 Big-endian 无符号整数 Little-endian 无符号整数大端字节交换 无符号整数 Little-endian 字节交换例字节顺序:AB CD EF GH(Big-endian)十进制数 1,234,567,890,123,456,789 或十六进制 11 22 10 F4 7D E9 81 15 在 Modbus 消息中通过网络排序:11 22 10 F4 7D E9 81 15 32位浮点数 它结合了 2 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 浮点 Big-endian 浮点 Little-endian 浮点大端字节交换 Float Little-endian 字节交换例字节顺序:AB CD(大端)浮点数 123456.00 或十六进制 47 F1 20 00 在 Modbus 消息中通过线路排列的顺序:47 F1 20 00 64位双精度浮点数 它结合了 4 个 16 位 Modbus 寄存器。它可以以 4 种不同的字/字节顺序显示。 双大端 双 Little-endian 双大端字节交换 双 Little-endian 字节交换例字节顺序:AB CD EF GH(大端序)浮点数 123456789.00 或十六进制 41 9D 6F 34 54 00 00 00 在 Modbus 消息中通过线路排序:41 9D 6F 34 54 00 00 00 保存/打开工作区 如果打开许多相关的 Modbus 窗口,则可以方便地将所有打开和排列的 Modbus 窗口的当前布局快照保存在一个工作区中。 工作区 (*mbw) 是包含所有打开窗口的显示信息和文件名的文件。 不是实际内容。为此,请转到“文件→保存工作区”。 “连接”和“图表”设置存储在工作区文件中。 当您打开工作区文件时,Modbus Poll 会打开所有 Modbus 窗口,并在您保存的布局中显示它们。 导出到 csv 将名称和值导出到逗号、分号或制表符分隔值文件。从文件对话框中选择 逗号分隔值文件 (*.csv)“温度”,“19.7” 分号分隔值文件 (*.csv)“温度”;”19.7" 制表符分隔值文件 (*.txt)温度 19.7 根据您的系统,逗号或句点用于分隔小数。 导出到 Modbus Slave 将名称、值和格式导出到 Modbus Slave 文件。*.mbs 打开文件需要 Modbus Slave 版本 7.4.0 或更高版本。 考试中心 此测试对话框的目的是帮助 MODBUS 从站设备开发人员使用任何 他们自己作曲的字符串。列表框显示传输的数据和接收的数据。您可以在下拉列表框中包含多个测试字符串。输入字符串后,按 “添加到列表”按钮,然后将字符串添加到列表中。按下“发送”按钮时发送所选字符串。 打开列表 从文件中保留测试字符串。 保存列表 将测试字符串存储到文件中。 清除 清除测试列表。 添加到列表 将当前测试字符串添加到列表中。 添加检查 将 CRC 或 LRC 添加到输入字符串的末尾。 使用考试中心时,您可能需要禁用来自其他窗口的通信。 选中“读/写定义”对话框中的“读/写禁用”复选框。设置→读/写定义。 ASCII 示例 组合框中的字符串:3A 30 31 30 33 30 30 30 30 30 30 30 41 如果添加了 LRC,则传输的字符串3A 30 31 30 33 30 30 30 30 30 30 30 41 46 32 0D 0A 还添加了 CR LF 对。 TCP/IP 示例 读取 10 个保留寄存器。00 00 00 00 00 06 01 03 00 00 00 0A 前 6 个字节是 TCP/IP 标头。 测试中心字符串文件 使用文本编辑器(如记事本或类似工具),您可以准备要在测试中使用的字符串。文件中的第一行必须是字符串“TestCenter”。这就是 Modbus Poll 知道文件格式正确的方式。按“打开列表”打开准备好的文本文件。 字符串列表的内容 TestCenter 3A 30 31 30 33 30 30 30 30 30 30 30 41 3A 30 32 30 33 30 30 30 30 30 30 30 41 3A 30 33 30 33 30 30 30 30 30 30 30 41 复制 使用“复制”按钮将选定的 Tx/Rx 字符串复制到剪贴板。SHIFT 和 CTRL 键可以与鼠标一起使用,以选择和取消选择字符串、选择字符串组以及选择不相邻的字符串。 注意: 在执行其他命令时使此窗口保持打开状态。 Modbus 数据记录 您可以将数据记录到文本文件或直接记录到 Microsoft Excel。 文本文件 从设置菜单中选择“日志”或使用快捷键:Alt+L 每个 Modbus 窗口都记录到其单独的文本文件中。 当您要停止数据记录时,请选择设置菜单上的注销命令。 日志速率 每次读取 为所有 Modbus 请求编写日志。将频率记录为扫描速率。 选择 指定日志速率(以秒为单位)。与扫描速率无关。 注意: 如果扫描速率为 10000 毫秒,则设置 1 秒日志速率是没有意义的,因为只有在新数据准备就绪时才会记录数据。 分隔符 作为分隔符,您可以使用以下选项之一: 固定宽度 表示值按列进行组织。 逗点 用逗号分隔的值。 标签 用制表符分隔的值。 仅更改数据时记录日志 指定仅当自上次日志以来更改任何数据时,才会写入新的日志行。 日志错误 指定记录超时等错误。 日志日期 指定将当前日期添加到日志时间中。 使用“T”作为分隔符 指定时间和日期以 ISO 8601 中指定的字母“T”分隔。 日志毫秒 指定将毫秒添加到日志时间中。 日志地址 指定将 Modbus 地址添加到日志中。 按 ok 时开始记录 指定在按下 ok 按钮时开始日志记录。否则,日志设置仅在保存 *mbp 文件时存储。 打开 *mbp 时开始记录 指定在打开 *.mbp 文件时自动启动日志记录。 立即刷新到文件 这确保了日志行不会在文件系统中兑现,而是立即以物理方式写入。 追加 指定将日志追加到所选文件。否则,将创建一个新文件。 午夜新建日志文件 关闭当前日志文件,并在午夜启动一个新文件。时间戳将添加到您的文件名中。 头文件信息 插入标题:信息将插入到日志文件的顶部。 命名顶行中的单元格:插入名称。 投票定义:插入 ID、功能等。 名字:插入日志的名称。 具有固定宽度的文本文件示例:22:28:13 <40001> 17395 0 0 0 0 0 0 0 0 22:28:14 <40001> 17396 1 0 0 0 0 0 0 0 22:28:15 <40001> 17394 1 0 0 2 55 0 0 0 22:28:16 <40001> 13350 1 0 0 4 0 0 0 0 您可以在 Excel 电子表格中导入数据。 Microsoft Excel 此功能要求安装 Microsoft Excel。Excel 2003 日志限制为 65535 条日志,因为这是 Excel 工作表中的最大行数。Excel 2007 或更高版本限制为 1,048,576 行。每个 Modbus 窗口都记录到其单独的 Excel 工作表中。 从设置菜单中选择“Excel 日志”或使用快捷键:Alt+X 记录时请勿触摸 Excel 工作表,因为这会中断日志记录。 日志速率 每个内容都写着:为所有 Modbus 请求编写日志。将频率记录为扫描速率。 选择:指定日志速率(以秒为单位)。日志与扫描速率无关。备注:如果扫描速率为 10000 毫秒,则设置 1 秒日志速率是没有意义的,因为只有在新数据准备就绪时才会记录数据。 以下时间停止:指定日志行数。请注意,Excel 2003 限制为 65,536 行,Excel 2007 限制为 1,048,576 行。 头文件信息 插入标题:信息插入到 Excel 工作表最上面的 3 行中。 命名顶行中的单元格:在第 3 行中插入名称。 投票定义:在第 2 行中插入 ID、功能等。 名字:在第 1 行中插入日志名称。 带有标头信息的 Excel 日志。 通信流量 选择菜单“显示→通信”以显示串行线路或以太网电缆上的流量。使用停止按钮暂时停止更新以进行检查。 使用“复制”按钮将所选行复制到剪贴板。 注意: 此窗口仅显示 Modbus Poll 发送和接收的数据。您不能将其用作数据嗅探器。 在执行其他命令时使此窗口保持打开状态。 OLE/自动化 自动化(以前称为 OLE 自动化)使一个应用程序可以操作在另一个应用程序中实现的对象。 自动化客户端是可以操作属于另一个应用程序的公开对象的应用程序。这也称为自动化控制器。 自动化服务器是向其他应用程序公开可编程对象的应用程序。Modbus Poll 是一个自动化服务器。 这意味着您可以使用任何支持VBA(Visual Basic for Applications)的程序,如Visual Basic,Excel等,根据您的特定要求来解释和显示modbus数据。 Excel 示例 当您要编写宏时,应显示“开发人员”选项卡或在开发人员模式下运行。 Excel 2007的 单击 Microsoft Office 按钮,然后单击 Excel 选项。 单击“流行”,然后选中功能区中的“显示开发人员”选项卡复选框。请注意,功能区是 Microsoft Fluent 用户界面的一部分。 Excel 2010、2016 单击“文件”选项卡。 单击选项。将打开“Excel 选项”窗口。 在左窗格中,单击“自定义功能区”。 在右窗格中的“主选项卡”下,选中“开发人员”复选框。 单击“确定”。“开发人员”选项卡现在应显示在功能区(最右侧选项卡)中。 Excel 示例代码 本示例打开两个窗口。一个读取寄存器,另一个读取线圈。Modbus Poll 是隐藏的,但您可以通过取消注释“ShowWindow”行来显示它。这将显示其中一个窗口。 Modbus Poll 安装中还包括一个示例。开始→所有程序→Modbus Poll → Excel 示例 Excel VBA示例 Public doc1 As Object Public doc2 As Object Public app As Object Dim res As Integer Dim n As Integer Private Sub StartModbusPoll_Click() ' 创建 Modbus Poll 应用程序对象和两个文档对象 Set app = CreateObject("Mbpoll.Application") Set doc1 = CreateObject("Mbpoll.Document") Set doc2 = CreateObject("Mbpoll.Document") ' 读取10个保持寄存器,每1000ms读取一次 res = doc1.ReadHoldingRegisters(1, 0, 10, 1000) ' 读取10个线圈状态,每1000ms读取一次 res = doc2.ReadCoils(1, 0, 10, 1000) ' 显示文档窗口(此行被注释,如需使用请取消注释) ' doc1.ShowWindow() ' 设置连接为 Modbus TCP/IP app.Connection = 1 ' 设置IP地址为本地主机 app.IPAddress = "127.0.0.1" ' 设置服务器端口为 502 app.ServerPort = 502 ' 设置连接超时时间为 1000ms app.ConnectTimeout = 1000 ' 打开连接 res = app.OpenConnection() End Sub Private Sub Read_Click() ' 显示请求的结果 Cells(5, 7) = doc1.ReadResult() ' 显示保持寄存器的读取结果 Cells(6, 7) = doc2.ReadResult() ' 显示线圈状态的读取结果 ' 循环读取并显示保持寄存器的值 For n = 0 To 9 Cells(5 + n, 2) = doc1.SRegisters(n) Next n ' 循环读取并显示线圈的状态 For n = 0 To 9 Cells(18 + n, 2) = doc2.Coils(n) Next n End Sub Python 示例 此 Python 示例将打开一个窗口并设置所有可能的数据格式。 Python 示例 import win32com.client as win32 # 定义数据格式 SIGNED = 0 UNSIGNED = 1 HEX = 2 BINARY = 3 FLOAT_LE_BS = 4 FLOAT_BE = 5 DOUBLE_LE_BS = 6 DOUBLE_BE = 7 S32_LE_BS = 8 S32_BE = 9 FLOAT_LE = 10 FLOAT_BE_BS = 11 DOUBLE_LE = 12 DOUBLE_BE_BS = 13 S32_LE = 14 S32_BE_BS = 15 U32_BE = 17 U32_LE_BS = 18 U32_BE_BS = 19 U32_LE = 20 S64_BE = 21 S64_LE_BS = 22 S64_BE_BS = 23 S64_LE = 24 U64_BE = 25 U64_LE_BS = 26 U64_BE_BS = 27 U64_LE = 28 # 字节序定义 BE = 0 LE = 3 BE_BS = 2 LE_BS = 1 # 创建 Modbus Poll 应用实例 App = win32.Dispatch('Mbpoll.Application') # 设置连接参数 App.Connection = 1 # 使用 Modbus TCP/IP App.IPAddress = "127.0.0.1" # 本地地址 App.ServerPort = 502 # Modbus 端口 App.OpenConnection() # 打开连接 # 创建 Modbus 显示窗口实例 Win1 = win32.Dispatch("Mbpoll.Document") # 从从站ID为1的设备读取100个保持寄存器,地址从0 (40001) 开始,每1000ms读取一次 Win1.ReadHoldingRegisters(1, 0, 100, 1000) # 显示 Modbus 窗口 Win1.ShowWindow() # 设置显示的行数 Win1.Rows(1) # 禁用刷新以提高速度 Win1.EnableRefresh = False # 设置不同的数据格式显示方式 Win1.SetFormat(0, SIGNED) Win1.SetFormat(1, UNSIGNED) Win1.SetFormat(2, HEX) Win1.SetFormat(3, BINARY) Win1.SetFormat(4, S32_BE) Win1.SetFormat(6, S32_LE) Win1.SetFormat(8, S32_BE_BS) Win1.SetFormat(10, S32_LE_BS) Win1.SetFormat(12, U32_BE) Win1.SetFormat(14, U32_LE) Win1.SetFormat(16, U32_BE_BS) Win1.SetFormat(18, U32_LE_BS) Win1.SetFormat(20, S64_BE) Win1.SetFormat(24, S64_LE) Win1.SetFormat(28, S64_BE_BS) Win1.SetFormat(32, S64_LE_BS) Win1.SetFormat(40, U64_BE) Win1.SetFormat(44, U64_LE) Win1.SetFormat(48, U64_BE_BS) Win1.SetFormat(52, U64_LE_BS) Win1.SetFormat(60, FLOAT_BE) Win1.SetFormat(62, FLOAT_LE) Win1.SetFormat(64, FLOAT_BE_BS) Win1.SetFormat(66, FLOAT_LE_BS) Win1.SetFormat(80, DOUBLE_BE) Win1.SetFormat(84, DOUBLE_LE) Win1.SetFormat(88, DOUBLE_BE_BS) Win1.SetFormat(92, DOUBLE_LE_BS) # 为不同格式的数据设置显示名称 Win1.SetName(0, "SIGNED") Win1.SetName(1, "UNSIGNED") Win1.SetName(2, "HEX") Win1.SetName(3, "BINARY") Win1.SetName(4, "S32_BE") Win1.SetName(6, "S32_LE") Win1.SetName(8, "S32_BE_BS") Win1.SetName(10, "S32_LE_BS") Win1.SetName(12, "U32_BE") Win1.SetName(14, "U32_LE") Win1.SetName(16, "U32_BE_BS") Win1.SetName(18, "U32_LE_BS") Win1.SetName(20, "S64_BE") Win1.SetName(24, "S64_LE") Win1.SetName(28, "S64_BE_BS") Win1.SetName(32, "S64_LE_BS") Win1.SetName(40, "U64_BE") Win1.SetName(44, "U64_LE") Win1.SetName(48, "U64_BE_BS") Win1.SetName(52, "U64_LE_BS") Win1.SetName(60, "FLOAT_BE") Win1.SetName(62, "FLOAT_LE") Win1.SetName(64, "FLOAT_BE_BS") Win1.SetName(66, "FLOAT_LE_BS") Win1.SetName(80, "DOUBLE_BE") Win1.SetName(84, "DOUBLE_LE") Win1.SetName(88, "DOUBLE_BE_BS") Win1.SetName(92, "DOUBLE_LE_BS") # 重新启用刷新 Win1.EnableRefresh = True # 调整所有列的大小以适应内容 Win1.ResizeAllColumns() # 调整窗口大小以适应内容 Win1.ResizeWindow() # 保存配置到文件,指定文件路径 result = Win1.Save("C:\\Users\\UserName\\Desktop\\testfile.mbp") # 打印保存结果 print(result) # 打印第二个格式名称,作为示例 print(Win1.GetName(1)) # 等待用户按 Enter 键退出,避免窗口直接关闭 _ = input("Press ENTER to quit:") 连接函数/属性 The following properties and functions do the same as you setup in the connection dialog (F3). 连接 “连接”(Connection) 选择所需的连接。可以选择串行端口或其中一个以太网连接。 属性连接为整数 取值范围 0 = Serial port1 = Modbus TCP/IP2 = Modbus UDP/IP3 = Modbus ASCII/RTU over TCP/IP4 = Modbus ASCII/RTU over UDP/IP 例如 Connection = 0 波特率 仅适用于连接 = 0 属性波特率与长 3006001200240048009600 (默认)1440019200384005600057600115200128000153600230400256000460800921600 例如 BaudRate = 9600 数据位 仅适用于连接 = 0 属性 DataBits 作为整数 取值范围 78 (默认) 例如: DataBits = 8 校验位 仅适用于连接 = 0 作为整数的属性奇偶校验 取值范围 0 = 无1 = 奇数2 = 偶数(默认) 例如: Parity = 2 停止位 仅适用于连接 = 0 属性 StopBits as Integer取值范围 1 (默认)2 例如: StopBits = 1 串行端口 仅适用于连接 = 0 属性 SerialPort as Integer取值范围 1...255 默认值 = 1 例如: SerialPort = 1 模式 仅适用于连接 = 0 属性模式为整数 取值范围 0 = RTU 模式1 = ASCII 模式 例如: Mode = 1 删除Echo 仅适用于 连接 = 0如果您的设备或 RS232/RS485 转换器回显刚刚发送的字符。 属性 RemoveEcho as Integer 取值范围 0(默认)1(删除回声) 例如: RemoveEcho = 1 响应超时 ResponseTimeout 指定 Modbus Poll 在放弃之前应等待来自从设备响应的时间长度(以毫秒为单位)。 属性 ResponseTimeout 作为整数取值范围 50...100000 默认值 = 1000 例如: ResponseTimeout = 1000 DelayBetweenPolls 属性 DelayBetweenPolls 作为整数取值范围 0...1000 默认值 = 20 例如: DelayBetweenPolls = 20 服务器端口 仅适用于 Connection = 1...4 属性 ServerPort as Long取值范围 0...65535 默认值 = 502 例如: ServerPort = 502 15.3.12. ConnectTimeout ConnectTimeout 指定 Modbus Poll 等待 TCP/IP 连接成功的时间长度。 仅适用于 Connection = 1...4 属性 ConnectTimeout as Integer 取值范围 100...30000毫秒 默认值 = 1000ms 例如: ConnectTimeout = 1000 IP版本 仅适用于 Connection = 1...4 属性 IPVersion as Integer 取值范围 4 = IP 版本 4(默认)6 = IP 版本 6 例 IPVersion = 4 开放连接 打开使用 Connection 属性选择的连接。 函数 OpenConnection() 为整数 参数 此函数没有参数。 返回值 对于错误 3-5:请检查您是否拥有最新的串口驱动程序。 错误描述0成功1串行端口不可用3串行端口。无法从端口驱动程序获取当前设置。4串行端口。串行端口驱动程序不接受端口设置。5串行端口。串行端口驱动程序不接受超时设置。12TCP/UDP 连接失败。WSA 启动13TCP/UDP 连接失败。连接错误14TCP/UDP 连接失败。超时15TCP/UDP 连接失败。IOCTL17TCP/UDP 连接失败。套接字错误21TCP/UDP 连接失败。地址信息255连接已打开 Excel 示例如何打开 Modbus TCP/IP 连接 Public app As Object Dim res As Integer ' 创建一个指向 Modbus Poll 的对象 Set app = CreateObject("Mbpoll.Application") ' 选择 Modbus TCP/IP 协议 app.Connection = 1 ' 设置 IP 协议版本为 IPv4 app.IPVersion = 4 ' 设置目标设备的 IP 地址 app.IPAddress = "192.168.1.27" ' 设置服务器端口,默认为 502 app.ServerPort = 502 ' 设置连接超时时间为 1000 毫秒 app.ConnectTimeout = 1000 ' 设置响应超时时间为 1000 毫秒 app.ResponseTimeout = 1000 ' 尝试打开连接,并将结果存储在变量 res 中 res = app.OpenConnection() Python 示例:如何设置串行连接 import win32com.client as win32 # 创建 Modbus Poll 应用程序对象 App = win32.Dispatch('Mbpoll.Application') # 设置为串行连接 App.Connection = 0 # 选择 COM 端口 3 App.SerialPort = 3 # 设置波特率为 9600 App.BaudRate = 9600 # 设置奇偶校验为无 App.Parity = 0 # 设置模式为 RTU App.Mode = 0 # 设置响应超时时间为 1000ms App.ResponseTimeout = 1000 # 设置两次请求之间的最小间隔时间为 20ms App.DelayBetweenPolls = 20 # 打开连接 App.OpenConnection # 创建一个 Modbus 显示窗口对象 Win1 Win1 = win32.Dispatch("Mbpoll.Document") # 从从站ID为1的设备读取10个保持寄存器,地址从0 (40001) 开始,每1000ms读取一次 Win1.ReadHoldingRegisters(1, 0, 10, 1000) # 显示 Modbus 窗口 Win1.ShowWindow() # 设置显示的行数为10 Win1.Rows(0) # 禁用刷新以提高速度 Win1.EnableRefresh = False # 为寄存器设置名称 Win1.SetName(0, "Register 0") # 重新启用刷新 Win1.EnableRefresh = True # 调整所有列的大小以适应内容 Win1.ResizeAllColumns () # 调整窗口大小以适应内容 Win1.ResizeWindow() # 等待用户按 Enter 键退出 _ = input("Press ENTER to quit:") 紧密连接 函数 CloseConnection() 为整数 参数 此函数没有参数。 返回值 如果成功,则为零。如果失败,则值为非零。 ShowCommunicationTraffic 显示通信流量窗口。 函数 ShowCommunicationTraffic() 参数 此函数没有参数。 返回值 没有 CloseCommunicationTraffic 如果显示,则关闭通信流量窗口。 函数 CloseCommunicationTraffic() 参数 此函数没有参数。 返回值 没有 读取函数 以下函数的操作与您在读/写定义对话框 (F8) 中设置的相同。 读取函数与 Modbus Poll 文档相关联。(包含数据的窗口) 例如: ' 首先需要创建一个 Modbus Poll 文档对象 Public doc As Object ' 创建 Modbus Poll 文档对象实例 Set doc = CreateObject("Mbpoll.Document") ' 从从站 ID 为 1 的设备读取 100 个线圈状态,地址从 0 开始,每 1000 毫秒读取一次 res = doc.ReadCoils(1, 0, 100, 1000) ' 读取 100 个线圈每 1000ms 注意:必须先创建 Read,然后才能使用属性获取数据。 读取线圈 ReadCoils Modbus 功能代码 01 函数 ReadCoils(SlaveID 为整数,地址为长,数量为整数,ScanRate 为长)为整数 参数 奴隶ID:从地址 1 到 255地址:数据地址(以 0 为基数)数量:数据数量。1 至 2000扫描速率:0 至 3600000msReturn value True if success. False if not success 读离散输入 ReadDiscreteInputs Modbus 功能码 02 函数 读离散输入(从站ID As 整型, 地址 As 长整型, 数量 As 整型, 扫描率 As 长整型) As 整型 参数 从站ID: 从站地址 1 至 255 地址: 数据地址(基数 0) 数量: 数据数量。1 至 2000 扫描率: 0 至 3600000ms 返回值 成功返回 True。失败返回 False。 读保持寄存器 ReadHoldingRegisters Modbus 功能码 03 函数 读保持寄存器(从站ID As 整型, 地址 As 长整型, 数量 As 整型, 扫描率 As 长整型) As 整型 参数 从站ID: 从站地址 1 至 255 地址: 数据地址(基数 0) 数量: 数据数量。1 至 125 扫描率: 0 至 3600000ms 返回值 成功返回 True。失败返回 False。 读输入寄存器 ReadInputRegisters Modbus 功能码 04 函数 读输入寄存器(从站ID As 整型, 地址 As 长整型, 数量 As 整型, 扫描率 As 长整型) As 整型 参数 从站ID: 从站地址 1 至 255 地址: 数据地址(基数 0) 数量: 数据数量。1 至 125 扫描率: 0 至 3600000ms 返回值 成功返回 True。失败返回 False。 自动化写入函数 写入函数将存储在由属性填充的数组中的值写入。下面的写入函数不创建数据窗口。要创建数据窗口,请使用 Win 函数,例如 WriteMultipleRegistersWin。 写单个线圈 WriteSingleCoil Modbus 功能码 05。写入写数组中的第一个线圈。 函数 写单个线圈(从站ID As 整型, 地址 As 长整型) As 整型 参数 从站ID: 从站地址 0 至 255 地址: 数据地址(基数 0) 返回值 如果写数组准备好且数据已发送,则返回 True。如果数组为空或参数错误,则返回 False。 控制应用程序负责通过回读写入的值来验证写操作。 写单个寄存器 WriteSingleRegister Modbus 功能码 06。写入写数组中的第一个寄存器。 函数 写单个寄存器 (从站ID As 整型, 地址 As 长整型) As 整型 参数 从站ID: 从站地址 0 至 255 地址: 数据地址(基数 0) 返回值 如果写数组准备好且数据已发送,则返回 True。如果数组为空或参数错误,则返回 False。 控制应用程序负责通过回读写入的值来验证写操作。 写多个线圈 WriteMultipleCoils Modbus 功能码 15。写入写数组中存储的线圈。 函数 写多个线圈(从站ID As 整型, 地址 As 长整型, 数量 As 整型) As 整型 参数 从站ID: 从站地址 0 至 255 地址: 数据地址(基数 0) 数量: 数据数量。1 至 1968 返回值 如果写数组准备好且数据已发送,则返回 True。如果数组为空或参数错误,则返回 False。 控制应用程序负责通过回读写入的值来验证写操作。 写多个寄存器 WriteMultipleRegisters Modbus 功能码 16。写入 写数组中存储的寄存器。 函数 写多个寄存器(从站ID As 整型, 地址 As 长整型, 数量 As 整型) As 整型 参数 从站ID: 从站地址 0 至 255 地址: 数据地址(基数 0) 数量: 数据数量。1 至 123 返回值 如果写数组准备好且数据已发送,则返回 True。如果数组为空或参数错误,则返回 False。 控制应用程序负责通过回读写入的值来验证写操作。 Python 示例 展示如何创建一个窗口,从地址 0(40001)读取10个寄存器,然后写入5个寄存器的Python示例。 import sys import time import win32com.client as win32 # 创建Modbus Poll应用程序实例 App = win32.Dispatch('Mbpoll.Application') # 设置连接类型为TCP/IP App.Connection = 1 App.IPAddress = "127.0.0.1" # 设置IP地址 App.ResponseTimeout = 1000 # 设置响应超时时间为1000毫秒 App.DelayBetweenPolls = 20 # 设置请求间最小间隔为20毫秒 App.ConnectTimeout = 500 # 设置连接超时时间为500毫秒 App.ServerPort = 502 # 设置服务器端口为502 result = App.OpenConnection # 尝试打开连接 if result != 0: print("Connection failed. Error: ", result) # 连接失败时输出错误信息 sys.exit() # 退出程序 # 创建一个名为Win1的Modbus显示窗口 Win1 = win32.Dispatch("Mbpoll.Document") # 从从站ID 1的地址0 (40001)开始,每1000ms读取10个保持寄存器 Win1.ReadHoldingRegisters(1, 0, 10, 1000) # 显示Modbus窗口 Win1.ShowWindow() # 显示10行 Win1.Rows(0) # 调整窗口大小以适应网格 Win1.ResizeWindow() time.sleep(1.0) # 等待读取完成 if Win1.ReadResult == 0: # 检查读取结果 print("Modbus register 0 (40001) = ", Win1.SRegisters(0)) else: print("Read failed error: = ", Win1.ReadResult) print ("Tx count = %d, Rx count = %d" % (Win1.GetTxCount, Win1.GetRxCount)) # 在Modbus Poll的内部数组中准备要写入的数据 Win1.SRegisters(0, 1) # 注意,这里的1不是Modbus地址,而是数组的索引 Win1.SRegisters(1, 10) Win1.SRegisters(2, 100) Win1.SRegisters(3, 1000) Win1.SRegisters(4, 10000) # 写入寄存器。这个函数不会在Modbus Poll中创建窗口 # 使用函数 <<WriteMultipleRegistersWin>> 来创建数据窗口 Win1.WriteMultipleRegisters(1, 0, 5) _ = input("Wait for write Press ENTER:") # 等待写入,按回车继续 if Win1.WriteResult == 0: # 检查写入结果 print("Modbus write success") else: print("Write failed error: = ", Win1.WriteResult) _ = input("Press ENTER to quit:") # 按回车退出 15.6. 各种功能 各种功能与 Modbus Poll 文档相关联。(包含数据的窗口) 15.6.1. ShowWindow 默认情况下,Modbus 文档窗口处于隐藏状态。ShowWindow 函数使 Modbus Poll 可见,并显示包含数据内容的文档。 函数 ShowWindow()参数 此函数没有参数。返回值 没有 15.6.2. GetTx计数 获取请求数。 函数 GetTxCount() 只要参数 此函数没有参数。返回值 请求数。 获取接收计数 获取响应数量。 函数 获取接收计数() As 长整型 参数 此函数没有参数。 返回值 响应数量。 获取名称 获取值的名称。 函数 获取名称(索引 As 整型) As 字符串 参数 索引:索引0对应于第一个Modbus地址。 返回值 名称。 设置名称 更改值的名称。函数 设置名称(索引 As 整型, 名称 As 字符串) 参数 索引:索引0对应于第一个Modbus地址。名称:值单元格的名称。 返回值 无 格式化全部 使用选定的格式格式化所有值单元格。 函数 格式化全部(格式 As 整型) 参数 格式:值单元格的格式。 返回值 无 获取格式 获取Modbus值的显示格式。 函数 获取格式(索引 As 整型) As 整型 参数索引:索引0对应于第一个Modbus地址。 返回值 ID格式 (Format)中文解释0Signed有符号1Unsigned无符号2Hex十六进制3Binary二进制4Float little-endian byte swap浮点数小端字节交换5Float big-endian浮点数大端6Double little-endian byte swap双精度小端字节交换7Double big-endian双精度大端832-bit Signed little-endian byte swap32位有符号小端字节交换932-bit Signed big-endian32位有符号大端10Float little-endian浮点数小端11Float big-endian byte swap浮点数大端字节交换12Double little-endian双精度小端13Double big-endian byte swap双精度大端字节交换1432-bit Signed little-endian32位有符号小端1532-bit Signed big-endian byte swap32位有符号大端字节交换1732-bit Unsigned big-endian32位无符号大端1832-bit Unsigned little-endian byte swap32位无符号小端字节交换1932-bit Unsigned big-endian byte swap32位无符号大端字节交换2032-bit Unsigned little-endian32位无符号小端2164-bit Signed big-endian64位有符号大端2264-bit Signed little-endian byte swap64位有符号小端字节交换2364-bit Signed big-endian byte swap64位有符号大端字节交换2464-bit Signed little-endian64位有符号小端2564-bit Unsigned big-endian64位无符号大端2664-bit Unsigned little-endian byte swap64位无符号小端字节交换2764-bit Unsigned big-endian byte swap64位无符号大端字节交换2864-bit Unsigned little-endian64位无符号小端 注意: 此设置仅用于显示。使用 Get/Set 值函数时,仍需要使用 byteOrder 来获取正确的字节序。 15.6.8. SetFormat 更改 Modbus 值的显示格式。请参阅上面的格式值。 函数 SetFormat(索引为整数,格式为整数)参数 指数:索引 0 对应于第一个 Modbus 地址。格式:值单元格的格式。返回值 没有 15.6.9. ResizeWindow 调整打开的窗口大小以适合网格。 函数 ResizeWindow()参数 此函数没有参数。返回值 没有 15.6.10. ResizeAllColumns 调整所有列的大小以适合单元格内的值。 函数 ResizeAllColumns()参数 此函数没有参数。返回值 没有 15.6.11. 行 指定网格中的行数。 函数行 (NumberRows)参数 数字行:网格中的行数。 编号描述010 行(默认)120 行250 行3100 行4适合数量 返回值 没有 读取结果 使用此属性来检查是否成功建立了与读取操作的通信。 属性 读取结果 As 整型 参数 此函数没有参数。 返回值 ErrorDescription0成功 SUCCESS1超时错误 TIMEOUT ERROR2CRC错误 CRC ERROR3响应错误(响应不是预期的从站ID、功能码或地址)RESPONSE ERROR (The response was not the expected slave id, function or address)4写入错误 WRITE ERROR5读取错误 READ ERROR6端口未打开错误 PORT NOT OPEN ERROR10数据未初始化 DATA UNINITIALIZED11接收到的字节不足 INSUFFICIENT BYTES RECEIVED16字节数错误 BYTE COUNT ERROR19事务ID错误 TRANSACTION ID ERROR81h非法功能 ILLEGAL FUNCTION82h非法数据地址 ILLEGAL DATA ADDRESS83h非法数据值 ILLEGAL DATA VALUE84h服务器设备失败 SERVER DEVICE FAILURE85h确认 ACKNOWLEDGE86h服务器设备忙 SERVER DEVICE BUSY87hNAK-负确认 NAK-NEGATIVE ACKNOWLEDGMENT8Ah网关路径不可用 GATEWAY PATH UNAVAILABLE8Bh网关目标设备未响应 GATEWAY TARGET DEVICE FAILED TO RESPOND这个表格列出了Modbus通讯中可能遇到的错误代码及其描述,用于故障诊断和状态反馈。 写入结果 使用此函数来检查写入操作是否成功。在从从站获得结果之前,值为数据未初始化。参见读取结果以获取可能的值列表。 属性 写入结果 As 整型 返回值以整型返回写入结果。 保存 保存当前窗口。函数 保存(路径名 As 字符串) As 布尔型 参数路径名:应保存文件的完全限定路径。 返回值Boolean 布尔型 示例 # 首先需要一个Modbus Poll文档。 Public doc As Object Set doc = CreateObject("Mbpoll.Document") res = doc.ReadCoils(1, 0, 100, 1000) # 每1000毫秒读取100个线圈 res = doc.Save("C:\\Users\\UserName\\Desktop\\testfile.mbp") # 将文档保存到桌面的testfile.mbp文件 自动化数据属性 以下属性用于在Modbus Poll中的内部写/读数组中设置或获取值。使用的索引不是Modbus地址。无论使用的地址如何,索引总是从0开始计数。数据属性与Modbus Poll文档相关联。(带有数据的窗口) 每个数据属性有两个版本: 一个没有后缀,例如SRegisters,用于从内部写/读数组中设置或获取值。 一个带有Win后缀,例如SRegistersWin,用于直接从数据窗口设置或获取值。这在使用数据窗口进行写操作(例如WriteMultipleRegistersWin)时使用。 示例 1: # 假设首先创建了doc。参见Excel示例。 # 在用于稍后写操作的数据数组中,向索引0写入1 doc.SRegisters(0) = 1 doc.SRegisters(1) = 10 doc.SRegisters(2) = 1234 # 将存储在Modbus Poll内部数组的3个寄存器 # 写入Modbus地址100(40101) # 不创建窗口 res = doc.WriteMultipleRegisters(1, 100, 3) # 上述示例不创建数据窗口,只是执行单次Modbus写操作。 示例 2,浮点数值:写入3个浮点数值。 # 假设首先创建了doc。参见Excel示例。 doc.Floats(0) = 1.3 doc.Floats(2) = 10.5 doc.Floats(4) = 1234.12 # 将6个寄存器写入Modbus Poll res = doc.WriteMultipleRegisters(1, 0, 6) # 写入6个寄存器,因为浮点数值是32位宽。 示例 3:创建一个每1000ms写入3个寄存器的窗口。 # 假设首先创建了doc。参见Excel示例。 # 创建一个窗口,该窗口每1000ms写入内容 res = doc.WriteMultipleRegistersWin(1, 100, 3, 1000) # 向数据窗口的第一个单元格写入1 doc.SRegistersWin(0) = 1 doc.SRegistersWin(1) = 10 doc.SRegistersWin(2) = 1234 # 现在每1000ms就将3个寄存器写入从站id 1地址100 在这些代码示例中,doc是Modbus Poll文档的一个实例,用于执行各种Modbus操作,如写入寄存器。示例展示了如何使用不带Win后缀的属性直接操作内部数组,以及如何使用带Win后缀的属性操作与数据窗口关联的值。 线圈, CoilsWin Property Coils(Index As Integer) As IntegerDescription Sets a coil in the write array structure or return a coil from the read array.Syntax Coils(Index) [=newvalue] 短整型寄存器, SRegistersWin Property SRegisters(Index As Integer) As IntegerDescription Sets a register in the write array structure or return a register from the read array.Syntax SRegisters(Index) [=newvalue] 长整型寄存器, URegistersWin 属性 URegisters(Index As Integer) As Long描述 在写数组结构中设置寄存器或从读取数组返回寄存器。语法 URegisters(索引) [=newvalue] 32位整型、Ints_32Win 属性 Ints_32(Index As Integer) As Double描述 在写入数组结构中设置一个 32 位整数,或从读取数组中返回一个整数。语法 Ints_32(索引) [=newvalue] 32位无符号整型、UInts_32Win 属性 UInts_32(index as integer) as double描述 在写入数组结构中设置一个 32 位无符号整数,或从读取数组返回一个无符号整数。语法 UInts_32(索引) [=新值] 64位整型、Ints_64Win 属性 Ints_64(Index As Integer) As Double描述 在写入数组结构中设置一个 64 位整数,或从读取数组返回一个整数。语法 Ints_64(索引) [=新值] 64位无符号整型、UInts_64Win 属性 UInts_64(Index As Integer) As Double描述 在写入数组结构中设置一个 64 位无符号整数,或从读取数组返回一个无符号整数。语法 UInts_64(索引) [=新值] 浮点数,FloatsWin 属性 floats(index as integer) as single描述 在写入数组结构中设置浮点数或从读取数组返回浮点数。语法 浮点数(索引) [=新值] 双精度浮点数,DoublesWin 属性 doubles(index as integer) as double描述 在写入数组结构中设置双精度值,或从读取数组返回双精度值。语法 双打(索引) [=newvalue] 字节顺序 属性 ByteOrder As Integer描述 设置 Ints_32、UInts_32、Ints_64、UInts_64、Floats 和 Doubles 属性使用的字节顺序。Win 版本不使用此属性 ByteOrder。 编号字节序0大端(默认) Big-endian (Default)1小端字节交换 Little-endian byte swap2大端字节交换 Big-endian byte swap3小端 Little-endian Ints_32示例:字节顺序:Big-endian十进制数 123456789 或十六进制 07 5B CD 15 在 Modbus 消息中通过线路排序:07 5B CD 15语法 ByteOrder [=新值] 15.8. 写入函数(创建数据窗口) 以下函数的操作与您在读/写定义对话框 (F8) 中设置的相同。这些函数创建一个数据窗口,并根据扫描速率写入数据窗口中的数据内容。 15.8.1. WriteSingleCoilWin Modbus 功能代码 05。 函数 WriteSingleCoilWin(SlaveID As Integer, Address As Long, ScanRate As Long) As Integer参数 奴隶ID:从地址 1 到 255地址:数据地址(基数 0)扫描速率:0 到 3600000ms返回值 如果成功,则为真。如果不是成功,则为假 15.8.2. WriteSingleRegisterWin Modbus 功能代码 06。 函数 WriteSingleRegisterWin(SlaveID As Integer, Address As Long, ScanRate As Long) As Integer参数 奴隶ID:从地址 1 到 255地址:数据地址(基数 0)扫描速率:0 到 3600000msReturn value True if success. False if not success Python Example how to open a window and write a single register every 1000 ms 15.8.3. WriteMultipleCoilsWin Modbus 功能代码 15. 函数 WriteMultipleCoilsWin(SlaveID 为整数,地址为长,数量为整数,ScanRate 为长)为整数参数 奴隶ID:从地址 1 到 255地址:数据地址(以 0 为基数)数量:数据数量。1 至 1968扫描速率:0 至 3600000ms返回值 如果成功,则为真。如果不是成功,则为假 15.8.4. WriteMultipleRegistersWin Modbus 功能代码 16. 函数 WriteMultipleRegistersWin(SlaveID 为整数,地址为长,数量为整数,ScanRate 为长)为整数参数 奴隶ID:从地址 1 到 255地址:数据地址(以 0 为基数)数量:数据数量。1 至 123扫描速率:0 至 3600000ms返回值 如果成功,则为真。如果不是成功,则为假 16. 异常和错误消息 Modbus 异常和错误消息在 2 中以红色文本显示钕行。 16.1. Modbus异常代码 Modbus 异常是从设备返回的错误。 法典名字意义01非法功能查询中收到的函数代码不是服务器(或从站)允许的操作。这可能是因为函数代码仅适用于较新的设备,并且未在所选单元中实现。它还可能指示服务器(或从属服务器)处于处理此类请求的错误状态,例如,因为它未配置并且被要求返回寄存器值。02非法数据地址查询中收到的数据地址不是 服务器的允许地址。更具体地说,参考编号和传输长度的组合是 无效。对于具有 100 个寄存器的控制器,PDU 将第一个寄存器寻址为 0,最后一个寄存器寻址为 99。如果提交的请求起始寄存器地址为 96,寄存器数量为 4,则此请求将在寄存器 96、97、98、99 上成功运行(至少在地址方面)。如果提交的请求起始寄存器地址为 96,寄存器数量为 5,则此请求将失败,异常代码0x02“非法数据地址”,因为它尝试在寄存器 96、97、98、99 和 100 上运行,并且没有地址为 100 的寄存器。03非法数据价值查询数据字段中包含的值不是服务器(或从站)的允许值。这表示复杂请求的其余部分的结构存在错误,例如隐含长度不正确。具体而言,这并不意味着提交存储在寄存器中的数据项具有超出应用程序预期的值,因为MODBUS协议不知道任何特定寄存器的任何特定值的重要性。04服务器设备故障服务器(或从属设备)尝试执行请求的操作时发生不可恢复的错误。05承认专门与编程命令结合使用。服务器(或从属服务器)已接受请求并正在处理它,但这样做需要很长时间。返回此响应是为了防止客户端(或主站)中发生超时错误。客户端(或主客户端)接下来可以发出“轮询程序完成”消息,以确定处理是否完成。06服务器设备繁忙专门与编程命令结合使用。服务器(或从属服务器)正在处理长时间的程序命令。客户端(或主服务器)应稍后在服务器(或从站)空闲时重新传输消息。0安培网关路径不可用与网关结合使用,表示网关无法分配从输入端口到输出端口的内部通信路径来处理请求。通常表示网关配置错误或过载。0乙网关目标设备无法响应与网关结合使用,表示未从目标设备获得响应。通常表示设备不在网络上。 16.2. Modbus Poll 错误消息 错误信息意义超时错误未在预期时间内收到响应。 检查以下内容:串行连接串行设置,如波特率、奇偶校验、数据位、停止位等。Modbus 模式、RTU 或 ASCII从站 ID响应超时TCP/IP 连接响应超时检查主机和端口是否与从站一致响应错误响应不是预期的响应。不同的从属 ID。CRC错误接收到的响应的 CRC 值不正确。写入错误这是串行驱动程序报告的错误。如果使用 USB/RS232/485 转换器并拔下 USB 电缆,则可能会发生这种情况。有 4 种类型:断裂条件I/O 错误串行连接错误输出缓冲区溢出使用 TCP/IP 连接的写入错误通常是由连接丢失引起的。读取错误这是串行驱动程序报告的错误。有 6 种类型:取景误差字符缓冲区溢出奇偶校验误差输入缓冲区溢出I/O 错误断裂条件使用 TCP/IP 连接的读取错误通常是由连接丢失引起的。接收的字节数不足响应不是预期的长度。字节计数错误响应中的字节计数不正确。与预期相比。事务 ID 错误它用于事务配对,MODBUS服务器在响应中复制请求的事务标识符。 小程序版,免费使用!!! --- ### 396. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口调试助手与Modbus通信集成工具:高效实用的串口通讯软件 在自动化控制和数据通信领域,串口通信仍然扮演着重要的角色。为了提高开发效率和测试的便捷性,一个集成了串口调试和Modbus通讯功能的软件工具显得尤为重要。这篇文章将介绍一个功能强大的串口调试助手,它不仅支持基础的串口操作,还集成了Modbus通讯协议,使其成为一个多功能的通信工具。 串口调试功能 软件的串口调试部分包含了所有标准的串口操作功能,包括: 串口配置:支持动态选择串口号,配置波特率、校验位、数据位、停止位等。 数据接收和发送:可以以文本或十六进制格式显示接收到的数据,并支持手动或自动发送数据。 高级设置:提供DTR、RTS控制信号的设置,以及接收显示的自动换行功能。 数据记录:支持将接收到的数据保存到文件,或从文件加载数据进行发送。 Modbus通讯集成 Modbus部分的集成使得该工具不仅限于基础的串口调试,还能高效地进行Modbus协议的测试和数据处理,其特点包括: 支持多种Modbus功能码:实现了读写线圈(01H、05H)、读离散输入(02H)、读写保持寄存器(03H、06H、10H)等Modbus指令。 数据处理与显示:提供了方便的数据输入和显示界面,支持十六进制和普通数值格式。 自动化测试:可以设置循环读取功能,自动化测试Modbus设备。 用户界面与操作 软件的用户界面友好、操作直观。主界面清晰地分为两个部分:串口调试和Modbus通信,使用户可以轻松切换并使用这两大功能。 用户界面设计 直观的布局:主界面上半部分专注于串口调试功能,下半部分集中展示Modbus通讯功能,使用户可以一目了然地找到所需的功能。 参数配置:串口相关的所有配置参数如端口号、波特率等都可以在界面上直接设置,无需通过复杂的设置进入。 数据显示:接收和发送的数据在专门的文本区域内显示,支持不同格式的显示方式,方便用户根据需要进行选择。 功能操作流程 串口操作:用户可以轻松打开和关闭串口,进行基本的数据发送和接收操作。此外,还可以设置自动发送间隔,实现连续数据传输。 Modbus功能测试:通过简单的输入Modbus地址、寄存器地址和值,用户可以测试不同的Modbus功能码。软件还支持Modbus数据的自动读取,便于长时间的系统测试和监控。 数据记录与管理:接收到的数据可以保存为文件,也可以从文件中加载数据,方便进行数据的长期记录和分析。 应用场景 这款软件的应用场景广泛,适合于工业自动化、测试和维护、教学和研究等领域。尤其对于需要同时进行串口调试和Modbus通信测试的工程师和技术人员来说,这款软件提供了一站式的解决方案。 结论 综上所述,这款集串口调试和Modbus通讯于一体的软件工具,不仅功能全面,操作便捷,而且界面友好,是工业通信领域不可或缺的实用工具。无论是用于设备的日常维护,还是作为教学和研究工具,它都是一个理想的选择。 --- ### 397. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在自动化控制和工业信息化领域,OPC (OLE for Process Control) 和 Modbus TCP 是两种主流的通信协议。它们在工业设备和控制系统之间提供了可靠的数据交换机制。然而,由于这两个系统之间的通信存在诸多挑战,例如OPC的DCOM配置复杂、通讯不稳定等问题,这就给系统集成带来了困难。幸运的是,一个名为OPC2Modbus的软件应用程序应运而生,为这一难题提供了有效的解决方案。 功能一:远程访问OPC服务器的难题解决者OPC2Modbus软件的一个主要功能是解决远程访问OPC服务器时遇到的DCOM配置问题。传统上,远程访问OPC服务器不仅配置繁琐,而且通讯不稳定,不利于维护。安装在运行OPC服务器的电脑上的OPC2Modbus软件,通过读取OPC服务器数据并将其转换为Modbus Server,实现了数据的无缝对接。这样,用户只需通过访问Modbus Server,就可以实现对OPC Server的监控和控制,大大简化了过程并提高了通讯的稳定性。 功能二:跨平台系统集成的桥梁OPC2Modbus软件的另一个重要功能是使Linux平台的设备(例如某些工业触摸屏)或不带操作系统的设备(如PLC)能够通过Modbus协议访问位于PC上的OPC服务器。这意味着,即使是在没有Windows操作系统的控制器上,也能够实现与OPC服务器的有效通讯。这不仅拓宽了OPC技术的应用范围,也为系统集成提供了更多可能性。 实际应用案例考虑到工业自动化领域对数据交换和控制系统的严格要求,OPC2Modbus软件在各种应用场景中发挥着重要作用。无论是需要远程访问Citect、iFIX、RSView、WinCC、组态王、易控等组态软件的OPC服务器,还是需要在Linux平台或特定的硬件设备上实现与OPC服务器的交互,OPC2Modbus软件都提供了一种高效、稳定且易于维护的解决方案。 结论OPC2Modbus软件的推出不仅解决了制造业和自动化领域中的一大难题,也促进了技术的进步和应用的广泛性。它通过创新地整合OPC和Modbus TCP技术,提高了系统的互操作性和可靠性,为工业自动化和信息化提供了强有力的支持。这一软件的开发不仅是技术创新的成果,更是对现有工业通信难题的有效回应,展现了软件在促进工业技术融合中的关键作用。 --- ### 398. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 IoTClient作为一款物联网通讯协议实现客户端,为用户提供了一个强大且灵活的工具,用于处理各种工业通信需求。该软件支持包括PLC通信读取、ModBus协议、Bacnet协议在内的多种通信协议,涵盖了工业自动化领域的主流需求。 基于.NET Standard 2.0开发的IoTClient,不仅可以在Windows系统上运行,还能够适配Linux和树莓派等多种操作系统,这意味着它具有很高的灵活性和可适应性。无论是在传统的工业环境还是在现代的、多样化的应用场景中,IoTClient都能提供稳定可靠的服务。 作为一个终身开源并免费提供的项目,IoTClient采用了MIT协议,这一宽松的开源协议不仅保证了社区的活跃发展,也鼓励了更广泛的技术交流和应用创新。用户可以自由地修改和商用IoTClient,但需要注意的是,在商业应用中,还需进行彻底的评估和测试以确保稳定性。 IoTClient支持多种读写操作,包括但不限于ModBusTcp、ModBusRtu、ModBusAscii以及ModbusRtuOverTcp。对于不同品牌的PLC,如西门子、三菱、欧姆龙和罗克韦尔等,IoTClient提供了专门的客户端实现,使得与这些设备的通信更加便捷和高效。 特别值得一提的是,IoTClient在西门子PLC的支持上做了深入的优化,提供了批量读写操作,极大提高了读写效率。同时,还提供了详细的使用说明和最佳实践,帮助用户更好地理解和应用这些功能。 除了强大的功能,IoTClient还特别注重用户体验。它提供了清晰的文档和使用指南,帮助用户快速上手。通过Visual Studio 2019进行开发,确保了软件的高质量和可靠性。此外,IoTClient还设有一个QQ交流群,为用户提供了一个交流和学习的平台。 总的来说,IoTClient作为一个全面、高效且易于使用的物联网通讯协议客户端,无论是对于工业自动化专业人士还是物联网爱好者,都是一个非常有价值的工具。随着物联网技术的不断发展,IoTClient无疑将在未来扮演更加重要的角色。 --- ### 399. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 通信猫调试软件V313是一款集成了广泛通信接口和多种实用工具的小体积绿色软件。它为专业工程师和技术爱好者提供了一个全面的通信调试平台,支持串口、并口、USB、TCP、UDP、MQTT、蓝牙、WIFI以及摄像头调试。这款软件以其强大的功能、简洁的用户界面和卓越的可扩展性,在通信调试领域中脱颖而出。 核心功能 多种通信接口支持:软件支持串口、并口、USB、TCP和UDP等多种通信协议,使其能夠轻松适应不同的硬件和网络环境。 高级调试功能:包括MQTT协议调试、蓝牙和WIFI通信测试,以及摄像头调试,这些功能极大地扩展了软件的适用场景。 实用工具集成:除了基础的通信功能,软件还集成了如HEX转BIN、虚拟键盘码转换、dbm到mW换算等实用工具。 版本演进亮点 这文章将介绍一款多功能软件的演变和发展历程。我们将从它的最新版本V313开始,一直追溯到它的首个公开发布版本V300。 最新版本:V313 主要特性: 端口监控: 加入了对各种端口(包括串口、并口、USB等)的监控功能。 UDP功能改进: 修正了UDP未启用时仍显示发送成功的问题。 数据发送选项: 新增了在数据发送前后随机添加数据的功能,用于协议的容错性测试。 转换工具升级: 增加了虚拟键盘码转字符和HID码的转换,以及dbm到mW的换算功能。 HID报告解析: 强化了对HID设备报告的解析能力。 文件处理增强: 拖放文件到软件可以进行多种操作,如计算MD5值,生成EXE图标,导出DLL函数,转换HEX文件为BIN等。 LUA脚本引擎: 加入了键盘鼠标模拟操作功能,例如vkey、vmove、vclick等。 窗口信息查看: 增加了spy功能,用于窗口信息查看。 国密SM3 HASH计算: 在转换计算中加入了国密SM3 HASH计算功能。 过往版本亮点 V312 串口断开检测: 增强了对串口连接状态的监控。 蓝牙BLE调试功能: 为Windows 10系统用户提供蓝牙BLE调试功能。 界面优化: 在最大化时保持选项卡的可见性和功能性。 V311 快速导航: 加入了功能快速导航,提升用户体验。 OCR识别: 引入了OCR识别功能,扩展了软件的应用范围。 V310 WebSocket支持: 增加了WebSocket的支持。 多项列表操作: 优化了多项列表的操作逻辑。 蓝牙广播包解析: 增强了对蓝牙广播包的解析能力。 V309 LUA脚本功能: 增加了可编程收发的LUA脚本功能。 MQTT协议支持: 引入了对MQTT协议的支持。 V308 字符串变换增强: 加强了字符串变换功能。 HTTP服务器: 新增了内置HTTP服务器。 V307 文件处理功能: 增加了更多文件处理功能,如随机序列号生成和自增序列号生成。 V306 WIFI热点: 提供了WIFI共享热点功能。 摄像头调试: 引入了摄像头调试功能。 V305 USB HID调试: 增加了USB HID调试功能。 菜单项重组: 对菜单项进行了重新组织,优化用户体验。 V304 多种算法支持: 支持多种CRC算法。 声卡信号发生器: 引入了声卡信号发生器。 V303 BIN保存C数组: 加入了BIN文件保存为C数组的功能。 CRC算法扩展: 增加了CRC8和CRC16的多种算法支持。 V302 接收显示错误修正: 修正了COMA接收到COMB显示的错误。 V301 MQTT协议初步支持: 加入了对MQTT协议的初步支持。 V300 公开发布: 标志着这款软件的正式进入市场。 用户体验 通信猫调试软件V313的用户界面直观而简洁,即使是初学者也能迅速上手。软件的小体积确保了快速的安装和启动,同时它作为绿色软件,不会对用户的系统造成额外负担。软件在保持高度功能性的同时,也注重用户的操作便捷性。 应用场景 硬件开发和测试:对于硬件工程师来说,该软件是测试和调试硬件通信的理想工具。 网络调试:网络工程师可以利用其TCP、UDP和MQTT功能进行网络通信的测试和分析。 教育和研究:学术界可以使用此软件教授和研究通信协议及其实现。 爱好者使用:技术爱好者可以利用其广泛的功能进行个人项目的开发和实验。 结论 通信猫调试软件V313凭借其全面的功能、优秀的用户体验和广泛的适用性,成为了通信调试领域的佼佼者。它不仅满足了专业用户的高级需求,也为普通用户提供了学习和实验的平台,是一个值得信赖和使用的工具。随着技术的不断进步,我们期待它未来能带来更多的创新和改进。 --- ### 400. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 开启高效USB调试之旅 在这个技术日新月异的时代,深蓝推出了其最新力作 —— 深蓝USB总线调试工具2023秋季版。这款针对USB HID总线数据传输专门设计的软件,不仅为专业工程师提供了强大的支持,也为爱好者和学习者打开了一个全新的视界。 核心功能解析 高效数据处理 多模式数据收发:支持文本模式和HEX模式,满足不同的数据处理需求。 智能格式化命令:让数据分析和处理更加便捷。 追加CRC校验码:确保数据传输的准确性。 数据管理与导出 自动和手动数据保存:轻松管理收发数据。 支持导出EXCEL和TXT:方便数据的进一步分析和报告制作。 云数据库和本地数据库支持:数据存储更加灵活。 用户友好设计 丰富的快捷键:提高操作效率。 自动定时发送和新行发送:简化复杂操作。 自动记忆用户设置:个性化您的使用体验。 额外功能 波形发生器:包含正弦波、余弦波、三角波和锯齿波,适用于多种测试场景。 深蓝串口示波器:强化数据可视化。 STM32定时器频率计算器:为微控制器编程提供便利。 完整功能介绍 USB HID数据收发; 智能格式化命令; 支持追加CRC校验码; 自动保存接收数据; 支持手动一键保存数据; 支持查询历史数据; 支持手动保存接收与发送的数据; 具有丰富的快捷键; 自动定时发送; 发送新行(对发送AT指令有用); 支持硬件流控制; 支持数据收发数据量统计; 支持数据保存,可导出为EXCEL文件; 支持数据保存,可导出为TXT文件; 支持数据保存至云数据库(MS SQL SERVER 2008)中; 支持数据保存至本地数据库(MS SQL SERVER 2022)中; 支持GB2132、GBK、ASCII、UTF-7、UTF-8、UTF-16BE、UTF-16LE、UTF-32BE、UTF-32LE等字符(支持WITH BOM、WITHOUT BOM)的接收与发送; 支持多命令独立发送、组合发送、自动循环发送,自动循环组合发送,并支持自设周期; 自动记忆用户设置; 提供正弦波发生器功能; 提供余弦波发生器功能; 提供三角波发生器功能; 提供锯齿波发生器功能; 提供深蓝串口示波器功能,可自定义帧头; 提供智能应答功能; 提供字符串处理功能; 提供毫秒时钟功能; 数据接收与刷屏支持报文模式与数据模式; STM32系列微控制器定时器频率计算器(正推与反推); 自动发现新版本,并询问是否更新; 持续版本升级,提供更好的软件服务。 结语 无论您是专业的工程师还是对USB技术感兴趣的爱好者,深蓝USB总线调试工具2023秋季版都将是您理想的选择。它不仅提供了强大的功能,还拥有简单易用的用户界面,使USB数据处理和分析变得轻而易举。立即下载,开启您的高效USB调试之旅! --- ### 401. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 概述 深蓝串口网络调试工具2023秋季版是一款高效的串口通信和网络测试软件,专为工程师和技术人员设计。它提供了广泛的功能,包括高波特率支持、多种数据传输模式、数据管理以及导出功能,使其成为进行串口通信和网络调试的理想工具。 核心功能 串口通信 支持高达1M的波特率(具体取决于硬件设置)。 串口数据收发。 支持多种波特率设置,从110到1382400。 支持不同校验模式:None、even、odd、space、mark。 数据位长度支持5、6、7、8位。 停止位长度设置为0、1、2、1.5。 自动和手动数据保存功能,包括到EXCEL和TXT格式。 支持追加CRC校验码。 网络功能 TCP/IP服务端和客户端模式。 UDP/IP服务端功能。 支持数据保存到云数据库(MS SQL SERVER 2008)和本地数据库(MS SQL SERVER 2022)。 数据处理与格式化 智能格式化命令。 支持包括GB2132、GBK、ASCII、UTF-7等多种字符编码格式的接收和发送。 多命令发送,包括独立发送、组合发送和自动循环发送。 增强功能 提供正弦波、余弦波、三角波和锯齿波发生器功能。 深蓝串口示波器功能,支持自定义帧头。 智能应答功能。 字符串处理功能。 毫秒时钟功能。 数据接收与刷屏支持报文模式与数据模式。 STM32系列微控制器定时器频率计算器。 用户体验 丰富的快捷键支持。 自动定时发送。 发送新行功能,特别适用于发送AT指令。 支持硬件流控制。 数据收发量统计。 自动记忆用户设置。 自动发现新版本,并询问是否更新。 持续版本升级,以提供更好的软件服务。 结语 深蓝串口网络调试工具2023秋季版是一款功能全面、操作便捷的软件工具,适合各类专业人员在进行串口通信和网络调试时使用。其丰富的功能和友好的用户界面使其成为行业内的优选工具. --- ### 402. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 “ Modbus 工具集”是萧育青工作室根据多年工程实践,在整合了当前相关软件的长处和不足 的基础上自主研发的工具应用软件, 用于 Modbus 设备的通信仿真及调试。 V 5.0.0 更新 用户界面 (UI) 框架提升为最新的 Windows UI 库 (WinUI) 3 ; 目标框架提升为 .NET 7.0; 支持多语言:中文(简体)、英语、法语和德语; 修复了其它缺陷。 近期更新 为满足一次访问不同类型和格式的寄存器数据的场合,提升了数据设置功能。可分别定义数据列表中各数据项的类型、格式和编码; 全面提升了报文收发及校验机制; 以主站/客户端运行时增加了自由协议,用于支持本应用未提供的 Modbus 公共功能码、Modbus 用户自定义功能码和 Modbus 之外的“自由口”通信。 下载链接 为方便不同用户的需求, 提供了“百度网盘”的下载链接;底部进行评论,即 可获得最新版本的下载链接。 1.系统需求 硬件 处理器 1 GHz 内存 512 MB 磁盘空间(最小值)4.5 GB 操作系统 Windows 11 Windows 10 ◼ 目标版本:Windows 10 版本 2004 (内部版本 19041) 或更高版本; ◼ 最低版本:Windows 10 版本 1809 (内部版本 17763) 。 语言 用户界面支持下列语言: 中文(简体) 英语 法语 德语 安装 安装 双击已下载的自解压安装包文件“Modbus_Toolkit_V5.x.x.exe”,解压缩到指定安装文件夹; 在安装文件夹中双击文件“setup.exe”,开始本应用软件的安装。如图 2-1 所示: 图 2 -1. 安装向导 Windows 防火墙设置 首次作为 TCP/UDP 服务器“打开”时,Windows 会提示 “安全中心警报”。如图 2-2 所示: 图 2 -2. Windows 安全中心警报 请将“专用网络”和“公用网络”均勾选后单击“允许访问”。 功能特性 通信协议 支持所有 Modbus 标准协议: ◼ Modbus RTU ◼ Modbus ASCII ◼ Modbus TCP/IP Free / “自由”协议(仅主站/客户端可用):用于支持 Modbus 之外的“自由口”通信和本应用未提供的 Modbus 公共功能码、Modbus 用户自定义功能码。 连接 除 Modbus 标准的连接方式(Serial Port 和 TCP/IP)之外,扩展了 UDP/IP 连接; 对于 TCP/IP 和 UDP/IP 连接,支持上述所有协议; 对于 Serial Port 连接,仅支持 Modbus RTU 、Modbus ASCII 和 Free 协议。 可作为不同的通信角色工作 连接为"Serial Port"时可分别作为主站或从站工作; 连接为"TCP/IP"或"UDP/IP"时时可分别作为客户端或服务器工作。 用户设置记忆功能 自动保存用户所做的设置修改,再次运行时将恢复用户环境; 设有“恢复缺省设置”按钮,用以将所有设置参数恢复为出厂值。 开发者实用工具 Modbus RTU 报文、Modbus ASCII 报文和 Modbus TCP/IP 报文间的相互转换,自动计算校验码 CRC/LRC; “报文地址”和“设备地址”间的相互转换; 不同数据类型的十进制格式与十六进制格式、二进制格式间的相互转换; ASCII 码对照表; 本机 IP 地址; 本机串口设备。 设置参数验证功能 当修改各设置参数时,根据规范对所输入的参数进行合法性验证。 若输入的参数非法,将在该参数上方弹出错误提示; 若输入的参数合法但不安全,仅在顶部状态栏予以警告; 至少有一个参数非法时将禁止“连接”/“启动”。 参数验证示例如图 3-1 所示: 图 3 -1. 参数验证例 个性化界面设置 允许个性化设置应用的界面,并自动保存设置参数。 应用的主题; 应用的界面语言; 应用的窗口尺寸。 页面和导航 本应用采用了基于页面的导航系统, 界面直观清晰。如图 4-1 所示: 其中: ① 导航栏:含有链接到各页面的导航按钮,用于导航至各页面; ②“汉堡包”(Hamburger)按钮,用于展开/折叠导航栏; ③返回按钮,用于返回前一个页面; ④ 信息栏:显示各类报警消息; ⑤ 状态栏:显示当前连接状态及运行状态 连接状态指示: – 已连接, – 未连接; 协议指示:Modbus RTU / Modbus ASCII / Modbus TCP/IP; 运行角色指示: ➢ 对于 Modbus RTU /Modbus ASCII 协议,角色为主站/从站; ➢ 对于 Modbus TCP/IP 协议,角色为客户端/服务器。 通信节点指示: ➢ 对于 Serial Port 连接总是@,通信节点总是本地串口设备; ➢ 对于 TCP/IP 和 UDP/IP 连接,角色为服务器时指示为@,通信节点为本地 网络终结点(IP 地址和端口号);角色为客户端时指示为 ,通信节点为 远程网络终结点(IP 地址和端口号)。 通信节点参数: ➢ 对于 Serial Port 连接指示:[通信端口]波特率-数据位-校验位-停止位。 例如:[COM1]19200-8-偶校验-1; ➢ 对于 TCP/IP 和 UDP/IP 连接指示:连接[IP 地址]:端口号。 例如:TCP/IP [192.168.0.104]:502。 从站地址/单元标识指示,例如:地址:1; 运行状态指示: — 停止; — 启动 ⑥ 通信选项栏(仅当运行角色为主站/客户端时可见):用于设置各通信选项,详见通 信页面章节; ⑦ 操作按钮:详见连接页面/通信页面章节。 当将鼠标置于各按钮处,将自动弹出提示信息。 连接页面 连接页面用于设置连接方式、通信协议、运行角色及连接参数。如图 4-2 所示: 其中: ①(主站或客户端)连接/(从站或服务器)打开按钮; ②(Windows 11)/ (Windows 10):(主站或客户端)断开/(从站或服务器)关闭按钮。 注意:除“时间参数”外,其它各设置栏仅当断开/关闭连接时方可更改! 连接 由下拉菜单选择连接方式。 Serial Port 当运行角色为从站时,同一时刻仅允许一个主站访问!若多个主站同时与同一从站通信可能导致错误! TCP/IP 当运行角色为服务器时,可同时处理的客户端数量由“最大客户端数”(详见“服务器设置”一节)设置; UDP/IP 当运行角色为服务器时,可同时处理的客户端数量不限(仅受系统资源限制)。 运行角色 连接为"Serial Port"时可分别作为主站或从站工作 允许打开多个实例(执行多次本应用程序),分别作为主站或从站同时工作。 连接为"TCP/IP"或"UDP/IP"时时可分别作为客户端或服务器工作 ◼ 允许打开多个实例(多次执行本应用程序),分别作为客户端或服务器同时工 作; ◼ 打开多个实例时,一个客户端可访问多个(本机或网络)服务器,一个服务器 可服务于多个(本机或网络)客户端。 协议 由下拉菜单选择通信协议。 当“连接”为“TCP/IP”或“UDP/IP”时,可选项为: ◼ Modbus RTU; ◼ Modbus ASCII; ◼ Modbus TCP/IP。 当“连接”为“Serial Port”时,可选项为: ◼ Modbus RTU; ◼ Modbus ASCII。 当“运行角色”为“主站” / “客户端”时,可选项增加“Free”(自由协议) ◼ 自由协议用于支持本应用未提供的 Modbus 公共功能码、Modbus 用户自定义 功能码和 Modbus 之外的“自由口”通信; ◼ 自由协议下,用户须手动输入“请求报文”,且本应用不做任何验证; ◼ 自由协议下,仅显示收/发的报文,不做其它处理。 时间参数 本节中各时间参数的单位均为毫秒(ms)。 轮询间隔时间(仅用于客户端/主站) 客户端/主站完成一次查询后距下次发送请求的延时时间。 100 ≤ 轮询时间 ≤ 2147483647。 响应超时(仅用于客户端/主站) 客户端/主站发送请求后等待服务器/从站响应的最大时间。若在此时间内未收到响 应则认为通信故障,提示报警信息。 1000 ≤ 响应超时 ≤ 2147483647。 注意 当客户端/主站查询的参数较多或通信速率(波特率/网速)较低时,可能发生“超时”报警!可适当增大“响应超时”解决,但“响应超时”若过大本应用将无法监测可能的通信故障。 连接超时(仅用于 TCP/IP 连接) ◼ 对于 TCP 客户端:发起连接后等待服务器确认的最大时间。若在此时间内未 收到服务器确认则认为通信故障并提示报警信息。 500 ≤ (客户端)连接超时 ≤ 2147483647。 ◼ 对于 TCP 服务器:客户端连接建立后,将周期性接收客户端发送请求。连接超 时为查询客户端发送请求的周期时间,用以判断客户端的“活动”状态。若等待 客户端发送请求的时间超出连接超时则将该客户端标记为“非活动”。通常,连 接超时应大于客户端的轮询间隔时间。 1000 ≤ (服务器)连接超时 ≤ 2147483647。 串口设置 电脑无串口且需要与串行链路通信时,可连接“USB-RS232/485 转换器”以扩展串口。 电脑无串口需要本机模拟测试时,可使用“虚拟串口”软件以扩展虚拟串口。 串口标识:仅列本地可用串口(自动识别)。 数据位 根据 Modbus 规范,对于 Modbus RTU 协议, 数据位必须为 8; 根据 Modbus 规范,对于 Modbus ASCII 协议, 数据位必须为 7; 对于自由协议(Free),数据位可为 7 或 8。 停止位与校验 对于 Modbus RTU / Modbus ASCII 协议: 当校验为“奇/偶”时,停止位必须为 1; 当校验为“无”时, 停止位必须为 2。 对于自由协议(Free)不做限制: 校验可选 None, Odd, Even, Mark, Space; 停止位可选:无 ,1 , 2 , 1.5。 本地串口设备 提供本地串口(包括硬件串口和虚拟串口)的标识,以方便当装有多个串口设备时选择。注意, 虚拟串口仅用于本地机进程间通信,不可用于与外部设备间的通信。 服务器设置 服务器连接 仅当“协议”为“Modbus TCP/IP”时可见,用于设置服务器的连接方式。 直接连接: 服务器直接连接到网络; 通过网桥或网关连接:服务器连接到串行链路子网,并通过网桥或网关来寻址。 IP 地址支持 IPv4 和 IPv6 寻址模式; 任何地址(作为服务器运行时) 当选中时, 服务器将响应本地所有 IP 地址收到的客户端请求。“任何地址”显示为: [0.0.0.0](IPv4)或 [::](IPv6)。 最大客户端数(仅用于 TCP/IP 连接且运行角色为服务器时) TCP 服务器可同时处理的客户端数量上限 。根据设备类型,该参数的值可以从 1 到 16。当连接数量达到同时连接上限且又收到新的客户端连接请求时: 若存在“非活动”的客户端,则断开最先的“非活动”的客户端并接受新的客户端; 若不存在“ 非活动”的客户端,则拒绝新的客户端连接请求。 远程 IP 地址(作为客户端运行时) 可在下拉菜单“远程 IP 地址”中键入要访问的服务器 IP 地址。新键入的服务器 IP 地址 将被自动记忆, 再次连接该 IP 地址时可直接在下拉菜单“远程 IP 地址”中选择即可, 不必重复键入; 本地 IP 地址(作为服务器运行时) 可在下拉菜单中选择 IP 地址,“本地 IP 地址”为自动识别 。为方便在一台电脑上 同时运行服务器和客户端以测试,列表中附加了本地主机(localhost)的“回送地 址”(IPv4: [127.0.0.1]/ IPv6: [::1])。“回送地址” 为主机 IP堆栈内部的 IP 地址,主 要用于网络软件测试以及本地机进程间通信,不进行任何网络传输。 端口 根据“RFC1122”,允许的端口: 1 ≤ 端口 ≤ 49151; 对于 Modbus TCP/IP 协议, TCP 端口 502 是为 Modbus 通信保留的。在默认状 态下,强制监听此端口。然而,某些市售产品或应用程序可能需要另一个端口专 用于 TCP 上的 MODBUS。鉴于此,本应用也允许指定缺省端口(502)之外的端 口,仅给出警告信息; 对于 Modbus RTU 和 Modbus ASCII 协议,为安全计, 建议 2000 ≤ 端口 ≤ 5000,为了适应某些市售产品或应用的需要,本应用也允许指定此范围之外的端 口,仅给出警告信息。 本地网络适配器 提供本地网络适配器(硬件适配器和虚拟适配器)的标识及 IP 地址(包括“回送地址”)。 注意, 虚拟网络适配器仅用于本地机进程间通信,不可用于与外部设备间的通信。 通信页面 通信页面用于 Modbus 通信参数设置、通信数据的读写及通信报文的显示。 采用了“分割窗口”布局, 通过拖动分割条, 可以改变各分栏的尺寸, 以适应不同的 需求; 可将“数据列表”和“通信”栏弹出到独立窗口,以方便对照观察。 通信页面如图 4-3 和图 4-4 所示: 图 4 -3. 通信页面:服务器/从站 8 6 1 3 24 12 11 10 9 7 5 图 4 -4. 通信页面:客户端/主站其中:① :“单次”复选框,选中时点击启动按钮时仅进行一次查询对话;② : “响应数据”复选框,选中时在“通信”栏输出由响应报文解析得到的数据;③ :“预览”复选框,选中时在“请求报文”显示由“MODBUS 设置”生成的请求报文; ④ :启动按钮 , 当(连接页面) 连接/打开无误时有效,用于启动通信对话;⑤ 0:停止按钮 , 当通信对话已启动时有效,用于终止通信对话; ⑥ :“请求报文”擦除按钮,清除“请求报文”的当前内容;⑦ C:“请求报文”刷新按钮,点击时根据当前“ MODBUS 设置”刷新请求报文; ⑧ :“通信”弹出按钮,将“通信”栏弹出到独立窗口, 弹出窗口如图 4-5 所示; ⑨ :“通信”擦除按钮,清除“通信”的当前内容, 并将报文计数复位;⑩ 横向分割条:拖动其可改变横向分栏的尺寸;⑪ :“数据列表”弹出按钮,将“数据列表”栏弹出到独立窗口, 弹出窗口如图 4-6 所 示;⑫ 纵向分割条:拖动其可改变纵向分栏的尺寸。 图 4 -5. “通信”弹出窗口 图 4 -6. “数据列表”弹出窗口 Modbus 设置 注意:当运行角色为“主站”/“客户端”时,某些参数仅当通信对话未启动时方可更改! 功能 运行角色为“主站”/“客户端”时用于选择“功能”。支持的 Modbus 功能如表 4-1 所示: 功能码描述01 (0x01)读多个线圈(0*)02 (0x02)读多个离散量输入(1*)03 (0x03)读多个保持寄存器(4*)04 (0x04)读多个输入寄存器(3*)05 (0x05)写单个线圈(0*)06 (0x06)写单个保持寄存器(4*)15 (0x0F)写多个线圈(0*)16 (0x10)写多个保持寄存器(4*)表 4-1. 支持的 Modbus 功能 ⚫ 数据块 运行角色为“从站”/“服务器”时用于选择数据块。数据块选项如表 4-2 所示: 数据块描述线圈(0*)Coil离散输入(1*)Discrete Input保持寄存器(4*)Holding Register输入寄存器(3*)Input Register表 4-2. Modbus 标准数据块 表 4-1. 支持的 Modbus 功能 运行角色为“从站”/“服务器”时用于选择数据块 。数据块选项如表 4-2 所示:数据块线圈(0) 离散输入(1)保持寄存器(4) 输入寄存器(3)表 4-2. Modbus 标准数据块 从站地址 当“协议”为“Modbus RTU”或“Modbus ASCII”(通常连接为“Serial Port”) 时,从站地 址用于设置串行链路上从站的标识。 运行角色为“从站”时为本站的唯一标识。从站地址取值范围: 1 ≤(本地)从站地址 ≤ 247; 运行角色为“主站”时用于指定对其发送请求的从站地址: 0 ≤(远程)从站地址 ≤ 247。 其中, 从站地址 0 专用于“广播模式”,即, 主站向所有从站发送请求。从站对 于主站的广播请求没有应答返回,广播请求一般用于写命令。 单元标识 当“协议”为“Modbus TCP/IP”(通常连接为“TCP/IP”)时,单元标识用于在 Modbus+ 或 Modbus 串行线路子网上寻址设备时的路由目的。在这种情况下,单元标识携 带远程设备的 Modbus 从地址 。Modbus TCP/IP 通信结构如图 4-7 所示。 如果 Modbus 服务器连接到 Modbus+或 Modbus 串行链路子网,并通过网桥 或网关来寻址,单元标识对识别连接到网桥或网关后的子网的从站设备是必需 的。单元标识采用有效的 Modbus 从站地址(1 … 247)。目的 IP 地址识别网 桥或网关, 而网桥或网关则使用单元标识将请求转交给相应的从站设备; 对于直接连接到 TCP/IP 或 UDP/IP 网络上的服务器,以“IP 地址”寻址服务器, 因此单元标识是无用的。建议单元标识不要使用有效的 Modbus 从站地址 (1 … 247)。否则, 在自动化系统中重新分配 IP 地址的情况下,使用有效从 站地址可能会由于网关的路由不畅而引起麻烦!应使用无效的从站地址(0 或 248 … 255), 网关将简单地忽略 Modbus PDU,而不引起任何麻烦。建议采用 255(0xFF)或 0(0x00)作为“单元标识”的无效值。 图 4 -7. Modbus TCP/IP 通信结构 起始(报文)地址和起始(设备)地址 数据起始地址支持双格式地址: 报文(协议) 地址和设备地址; 选中“起始报文地址”时,可设置“起始报文地址”,自动同步映射到“起始设备地 址”,“数据列表”按报文地址显示; 选中“起始设备地址”时,可设置“起始设备地址”,自动同步映射到“起始报文地 址”,“数据列表”按设备地址显示; 请求报文中的数据起始地址均为报文(协议) 地址; 报文(协议)地址范围对于所有数据块均为: 0 ~ 65535; 设备地址支持“5 位寻址”(对应报文地址 0~9998)/ “6 位寻址”(对应报文地 址 9999~65535),其范围因数据块不同。 如表 4-3 所示: 当然可以,以下是您提供的数据块及其5位和6位寻址范围所对应的表格: 数据块5 位寻址范围6 位寻址范围线圈(0*)1 ~ 999910000 ~ 65536离散输入(1*)10001 ~ 19999110000 ~ 165536保持寄存器(4*)40001 ~ 49999410000 ~ 465536输入寄存器(3*)30001 ~ 39999310000 ~ 365536表 4-3. 设备地址范围 数据设置 1) 线圈或离散输入数据设置 当选择功能/数据块为线圈(0)或离散输入(1)访问时,数据设置如图 4-8 所示: 图 4 -8. 线圈或离散输入访问的数据设置 数量 查询/响应的线圈或离散输入的数量。 字节数 只读。对于主站/客户端,为实际发送的字节数量;对于从站/服务器,为数据块所 实际占用的字节数量。 2) 保持寄存器或输入寄存器数据设置 当选择功能/数据块为保持寄存器(4)或输入寄存器(3)访问时, 数据设置如图 4-9 所 示: 图 4 -9. 保持寄存器或输入寄存器访问的数据设置 数量 查询/响应“数据 ”的数量。注意对于寄存器读写功能(数据块:3* / 4*),此处所设置的 “数据数量”不同于实际 Modbus 报文中的“寄存器数量 ”!一个数据所占用的寄存器数量因数据类型而不同(详见表 4-5)。 对于主站/客户端,查询的最大(报文)数量因功能而不同,如表 4-4 所示: 当然可以,以下是您提供的Modbus功能码、数据块和最大查询报文数量的表格: 功能码数据块最大查询报文数量01 (0x01)线圈(0*)2000 线圈02 (0x02)离散输入(1*)2000 输入03 (0x03)保持寄存器(4*)125 寄存器04 (0x04)输入寄存器(3*)125 寄存器05 (0x05)线圈(0*)1 线圈06 (0x06)保持寄存器(4*)1 寄存器15 (0x0F)线圈(0*)1968 线圈16(0x10)保持寄存器(4*)123 寄存器表 4-4. 不同功能的最大查询报文数量 对于从站/服务器,数量最大值 = 65535。 注意无论主站/客户端或从站/服务器,均应满足: 起始地址 + 数量 ≤ 地址范围 寄存器 只读。由“数据”的数量和数据类型所决定的实际寄存器数量。 统一的数据类型 所有数据项的数据类型、数据格式和数据编码均相同,由“数据设置”直接统一设置。 独自的数据类型可分别定义数据列表中各数据项的数据类型、数据格式和数据编码。 单击按钮 可弹出寄存器数据设置窗口用于分别设置,如图 4-10 所示。注意,当主站/客户端选择“读寄存器”功能(03/04) 时, 寄存器数据设置窗口中的 “数值”为只读! 图 4 -10. 寄存器数据设置窗口 选择通信交换数据的数据类型。支持的数据类型如表 4-5 所示: 数据类型说明长度,字节占用寄存器Int16带符号 16 位整型21UInt16无符号 16 位整型21Int32带符号 32 位整型42UInt32无符号 32 位整型42Int64带符号 64 位整型84UInt64无符号 64 位整型84Single32 位浮点型42Double64 位浮点型84表 4-5. 支持的数据类型 表 4-5. 支持的数据类型对于“写单个保持寄存器”功能(06),仅允许占用 1 个寄存器(长度为 2 字节) 的数据 类型。 数据格式 选择通信交换数据的显示格式。支持的数据格式如表 4-6 所示: 数据格式说明例子(130, Int16, 大端格式)Decimal十进制130Hex十六进制00 82Binary二进制00000000 10000010表 4-6. 支持的数据格式 数据编码 支持 2 种数据编码  大端格式(Big-endian,首先传送最高有效字节); 小端格式(Little-endian,首先传送最低有效字节)。 根据《基于 Modbus 协议的工业自动化网络规范 GB-T19582.1-2008》,对于 地址和数据,Modbus 使用“大端格式”,即,当传送的数据大于一个字节时, 首先传送最高有效字节; 为了适应某些市售产品或应用的数据编码为“小端格式”的场合, 本应用允许选 择“数据编码”为“小端格式”以正确解析响应数据; 数据编码仅影响寄存器数值的显示, 不影响线圈/离散输入数据、"数量"和"地 址"。 “数据列表”和“响应数据”将按选定的“数据类型” 、“数据格式”和“数据编码”显示。 数据列表 通信交换数据列表, 用于设置输出的数据/显示输入的数据。 项数由“MODBUS 设置”中的“数量”设定; 显示格式: [地址] (如: [40003] )。 其中: [地址]由“MODBUS 设置”中的“起始(报文)地址”/“起始(设备)地址”选项设 定; 的显示由“MODBUS 设置”中的“数据类型”,“数据格式”和“数据编码”设 定。 设置数据: 以鼠标点击 ,即可直接键入。。 作为主站/客户端运行时: 数值 当选择“读”功能(功能码 = 1 ,2,3,4) 时, 数据列表为只读; 当选择“Free”(自由协议) 时,不显示“数据列表”。 通信 用于通信对话(报文、响应数据、通信状态)的显示。 连接信息(仅当连接为 TCP/IP 或 UDP/IP 时有效) ◼ 格式:“Remote:[IP 地址:端口号],Local:[IP 地址:端口号]”; ◼ 对于服务器: ◆ 由于一个服务器可服务于多个客户端,每当接收报文的发送方改变时显示; ◆ 当选中“任何地址”时,IP 地址 = “0.0.0.0”(IPv4)/ “::”(IPv6)。 ◼ 对于客户端:仅当“启动”时显示。 发送的报文格式:“xxxx-Txd: HH HH …”。“xxxx”:对话的计数(序号),“Txd”:发送标识,“HH HH …”:十六进制格式的报文; 接收的报文格式:“xxxx-Rxd: HH HH …”。“xxxx”:对话的计数(序号),“Rxd”:接收标识,“HH HH …”:十六进制格式的报文; 响应数据/发送寄存器数:“xxxx-Val / Qty: DD,DD, …”,“xxxx”:对话的计数(序号),“Val”:响应数据标识,“Qty”:发送寄存器数标识,“DD,DD, …”:十进制格式的响应数据/发送寄存器数; Modbus 异常响应:“xxxx-Err: 异常信息”。异常信息与从站/服务器返回的异常响应报文相关; 点击“通信”擦除按钮可随时清除“通信”的当前内容,并将报文计数复位。 请求报文 当选择“Free”(自由协议)或选中“预览”选项时可见。 选择“Free”(自由协议)时,用于手动输入请求报文(不做任何验证); 选中“预览”选项时,用于“预览”由“Modbus 设置”生成的请求报文; 点击“请求报文”擦除按钮可清除“请求报文”的当前内容; 点击“请求报文”刷新按钮时根据当前“MODBUS 设置”刷新请求报文。 自由协议界面 自由协议用于支持本应用未提供的 Modbus 公共功能码、 Modbus 用户自定义功能码和 Modbus 之外的“自由口”通信。用户须手动输入“请求报文”,除输入格式外本应用不做任何验证。当“运行角色”为“主站”/“客户端”且选择“Free”(自由协议) 时, 不显示“数据列表” 、 “ Modbus设置”和“数据设置”栏。 页面如图 4-11 所示: 图 4 -11. 自由协议界面其中:① :向“请求报文”添加 CRC 校验码按钮。点击此按钮时,将根据当前“请 求报文”自动生成 CRC 校验码并附在“请求报文”末尾。 工具页面 提供了各种开发者实用工具。 报文和地址转换 如图 4-12 所示: 其中:①弹出按钮, 可弹出到独立窗口。 Modbus RTU 报文、Modbus ASCII 报文和 Modbus TCP/IP 报文间的相互转换 每种协议均提供了 2 种格式的报文: ◼ 完整报文(ADU/应用数据单元); ◼ 部分报文:只含地址(单元标识)和协议数据单元(PDU)。自动计算 CRC/LRC 等, 并自动填充首尾字段。 当报文输入完成后必须按 Enter 键以提交。 ◼ 若输入的报文合法,所有其它报文将同步更新; ◼ 若输入的报文非法,将在其上方弹出错误提示。 报文地址和设备地址间的相互转换 下拉菜单“数据块”用于选择数据寻址空间。 ◼ 在“报文地址”中输入地址,若输入的地址合法,“设备地址”将同步更新; ◼ 在“设备地址”中输入地址,若输入的地址合法,“报文地址”将同步更新; ◼ 若输入的地址非法,将在其上方弹出错误提示。 数制转换 不同数据类型数值的十进制格式与十六进制格式、二进制格式间的相互转换 。如图 4-13 所 示: 图 4 -13. 数制转换其中:① 弹出按钮, 可弹出到独立窗口。 数据类型说明长度,字节SByte带符号 8 位整型1Byte无符号 8 位整型1Int16带符号 16 位整型2UInt16无符号 16 位整型2Int32带符号 32 位整型4UInt32无符号 32 位整型4Int64带符号 64 位整型8UInt64无符号 64 位整型8Single32 位浮点型4Double64 位浮点型8表 4-7.支持的数据类型 “十进制”、“十六进制”和“二进制”字段用于输入数值 ◼ 若输入的数值合法,所有其它字段将同步更新; ◼ 若输入的数值非法,将在其上方弹出错误提示。 切换“数据编码”时,所有字段将自动改变。 ASCII 代码表 提供标准 ASCII 码表 。如图 4-14 所示: 其中,① 弹出按钮, 可弹出到独立窗口。 本地网络适配器 提供本地所有网络适配器的标识及 IP 地址。如图 4-15 所示: 其中,① 弹出按钮, 可弹出到独立窗口。 本地串口设备 本地串口(包括虚拟串口)的标识。 如图 4-16 所示: 其中,① 弹出按钮, 可弹出到独立窗口. 设置页面 设置页面用于个性化设置本应用的主题、语言及恢复出厂默认设置参数。如图 4-17 所示: 个性化 “主题”:设置本应用的主题。选中“默认”时,本应用的主题将与操作系统的“Windows设置”/“个性化”/“主题”一致; “语言”:设置本应用的语言。支持的语言:中文(简体)、英语、法语和德语。 个性化示例如图 4-18 所示。 恢复默认设置 单击按钮 可将本应用的所有设置参数恢复为出厂默认设置参数。注意: 仅当连接断开时允许操作。 --- ### 403. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业自动化领域,TCP Modbus通信占据着重要的地位,而现代化的用户界面和强大的功能则是高效调试的关键。本文将深入解析由Mina Andrawos提供的开源TCP Modbus客户端工具——Modbus Examiner,它以其现代UI和丰富功能为工程师提供了便捷的数据读写和调试操作。 工具介绍 Modbus Examiner是一款适用于Windows操作系统的开源TCP Modbus客户端工具。其主要功能包括定期数据提取,使数据保持最新,以及执行从TCP Modbus从设备读取和写入数据的操作。该工具由深夜编码课程的产物,充分利用了WPF、C#和.NET 4.6等现代软件技术,为用户提供了友好的GUI和丰富的功能。 工具特性 1. 现代UI界面 Modbus Examiner以现代UI为基础,提供直观而友好的用户界面,使工程师能够轻松进行配置和操作。各项功能清晰分布在主界面的不同选项卡中。 2. 读取功能 配置简便: 在“读取”选项卡中,用户只需填写Modbus TCP从设备的连接信息,包括主机名/IP地址、端口号、从机ID等,点击“添加”按钮即可快速建立连接。 可视化数据显示: 通过点击“查看数据”按钮,用户可以在新窗口中清晰查看数据,包括寄存器ID、别名、值、类型和采样率等信息。 3. 写入功能 配置选项: 与读取功能类似,写入功能也支持对单个地址进行写入操作。用户可以轻松配置写入的连接信息和数值字段,实现对Modbus设备的值更改。 4. 日志记录 操作记录: 日志选项卡允许用户查看自应用程序启动以来,Modbus Examiner工具执行的所有操作,提供简单而有效的操作记录。 5. 用户定制 外观设置: 通过点击右上角的“设置”选项,用户可以自定义应用程序的外观,选择主题、字体大小和喜好的颜色,提供个性化的用户体验。 如何使用Modbus Examiner? 读取操作: 在“读取”选项卡中配置Modbus TCP从设备的连接信息,点击“添加”按钮建立连接,然后通过“查看数据”按钮查看数据窗口,实时监测数据变化。 写入操作: 在“写入”选项卡中配置写入连接信息和数值字段,执行写入操作,并查看提示消息以确认写入是否成功。 日志记录: 在“日志”选项卡中查看工具执行的操作记录,帮助用户追踪调试过程中的关键信息。 用户定制: 通过“设置”选项进行外观定制,选择合适的主题和字体,调整个性化的颜色设置。 结语 Modbus Examiner工具以其现代化的UI和强大的功能,为工程师提供了一款高效而实用的TCP Modbus调试工具。作者Mina Andrawos免费提供该工具,但用户需注意工具是按原样提供的,作者对使用中可能出现的问题不承担责任。在工业自动化调试中,Modbus Examiner无疑是一项不可或缺的利器,助力工程师更轻松地进行TCP Modbus通信调试。 --- ### 404. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 小程序版本,请微信扫码后使用! 在工业自动化控制和机械设备调试领域,八方汇PLC调试神器中文版崭露头角,成为一款功能齐全的串口调试工具。它的官方版提供了丰富的工具集,包括串口通信调试、TCP(以太网)通信调试、Modbus-RTU调试等多项强大功能,支持多方接口,实现多个接口数据的转换与兼容。以下是对八方汇PLC调试神器中文版主要功能的详细介绍: 1. 串口通信调试功能 波特率支持: 支持常用的 110-115200bps 波特率,满足不同通信需求。 参数设置: 可以设置校验、数据位和停止位,提供灵活的通信配置选项。 数据格式选择: 能以ASCII码或十六进制接收或发送任何数据或字符,满足不同数据格式的需求。 自动发送: 可以任意设定自动发送周期,实现定时发送功能。 其他特性: 支持循环发送、自动数据回复,并能将接收数据保存成文本文件,同时具备关键字查找功能。 2. TCP/UDP 网口调试功能 网络连接: 支持TCP和UDP连接,可作为TCP服务器或客户端配置,实现灵活的网络通信。 自动校验: 具备自动校验功能,可选择不同校验算法以确保数据的完整性。 自动发送: 可以任意设定自动发送周期,支持循环发送和自动数据回复。 3. Modbus-RTU 便捷调试功能 Modbus主从站: 可作为Modbus主站,读写从站寄存器或线圈;也可作为Modbus从站,设定地址自动回复主站命令。 报文生成: 向导自动生成报文,无需校验计算,简化了Modbus-RTU调试的流程。 自动轮询测试: 支持地址自动轮询测试和报文监控,轮询测试返回数据可保存,方便数据分析。 4. Modbus-TCP 便捷调试功能 Modbus-TCP 主从站: 可作为Modbus-TCP主站,读写从站寄存器或线圈;也可作为Modbus-TCP从站,设定地址自动回复主站命令。 TCP报文生成: 向导自动生成TCP报文,数据全程直观显示,支持Modbus寄存器自动组码发送,高低字自由转换。 5. 虚拟串口配置调试功能 虚拟串口: 行业首创,报文调试无需硬件,电脑配置虚拟串口即可。 通信学习: 无需硬件,使通信学习不再抽象,大大简化了调试流程。 6. 电气工程调试功能 计算工具: 包括ASCII码转换计算器、伺服电子齿轮比、步进细分、脉冲距离计算工具。 工程师计算器: 涵盖进制、组合、单位换算等功能,为工程师提供全面支持。 电工选型: 提供色环电阻、导线载荷等查询功能,是电工选型的必备工具。 八方汇PLC调试神器中文版以其强大而全面的功能集成,为工程师们提供了一站式的调试解决方案,极大地提高了工作效率,为工业自动化领域的发展贡献着力量。 分享码:33B8EA898 小程序版本,请微信扫码后使用! --- ### 405. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在数据通信和存储中,循环冗余校验码(Cyclic Redundancy Check,CRC)是一项重要的技术,用于检测和纠正数据传输过程中的错误。而今,我们将聚焦于一款强大的CRC计算工具——格西CRC计算器版本1.1,基于Microsoft .NET Framework 4,提供了通用、灵活、高效的CRC校验功能。 格西CRC计算器 主要特性 多算法支持: 格西CRC计算器支持常用的CRC标准算法,包括CRC8、CRC8/ITU、CRC16、CRC16/MODBUS、CRC32等。这使得它在各种应用场景中都能胜任。 自定义参数: 用户可以根据需求自定义CRC计算的多项式、初始值、数据反转以及结果异或值,使其更加灵活适用于不同的CRC校验需求。 数据源多样化: 无论是HEX数据字符串、普通字符串,还是文件,格西CRC计算器都能轻松应对。这为用户提供了更多选择,方便根据实际需求灵活计算CRC值。 直观用户界面: 软件提供了直观友好的用户界面,使得即便是对CRC计算不够了解的用户也能轻松上手。版本1.1进一步优化了用户体验,确保操作更为便捷。 使用指南 选择CRC算法: 在软件界面中选择所需的CRC算法,可以是CRC8、CRC16、CRC32等。 设置参数: 根据具体需求设置CRC计算的多项式、初始值、数据反转以及结果异或值。这使得软件适用于各种不同的CRC校验环境。 输入数据源: 根据数据源的类型,输入HEX数据字符串、普通字符串,或选择要计算的文件路径。 点击计算: 点击计算按钮,即可得到CRC校验结果。软件会迅速进行计算,并将结果展示在界面上。 总结 格西CRC计算器版本1.1作为一款通用的CRC计算工具,为用户提供了强大的数据完整性保障功能。其支持多种CRC算法,自定义参数,以及对不同数据源的灵活处理,使得它成为数据通信和存储中不可或缺的得力助手。在版本1.1的基础上,它更加注重用户体验,使得使用起来更加便捷。如果你关注数据的准确性和安全性,格西CRC计算器绝对是你值得拥有的工具之一。 --- ### 406. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在当今科技发展迅猛的时代,测量与控制应用已经渗透到了各行各业。为了满足不同领域的测量与控制需求,工程师需要一种快捷、直观、灵活的软件平台,能够帮助他们快速开发自动化测试和控制系统。格西测控大师,一款组态式测试、测量和控制软件开发平台,正是如此一款专为测试、测量和控制应用而设计的系统工程软件。本文将为您介绍格西测控大师的优势、功能和应用领域。 格西测控大师的优势 快捷的系统搭建 格西测控大师采用搭积木的方式构建测控系统,从而简化了复杂序列、数据采集和用户界面的开发。这种方法让开发人员感受到开发效率的飞跃提升,无论是入门级还是专业级的技能需求,都能够轻松应对。 直观的用户界面 软件提供了统一的环境与界面,使得系统开发更加直观。即使是入门级的用户也能够轻松上手,同时满足专业级的工作需求。 灵活的开发框架 格西测控大师提供了统一的脚本编程环境和无限扩展的模板库,为测控系统的开发、管理与执行提供了一个灵活而强大的框架。这意味着开发人员可以根据具体需求自定义系统的功能,使其更适合特定的应用领域。 格西测控大师的功能 格西测控大师提供了丰富的功能,以满足不同领域的测量与控制需求,其中包括: 设备与接口 支持通用型串口、TCP服务端、TCP客户端、UDP接口、混杂模式网口、环回接口。 支持各种应用型设备,如Modbus客户端和服务端、Mqtt客户端和服务端、OPCUA客户端和服务端、IEC101客户端和服务端、IEC104客户端和服务端。 支持NI公司的VISA型串口、TCP设备、GPIB设备、USB设备、PXI设备和DAQmx设备。 支持西门子公司的S7TCP客户端和服务端。 支持创建任意设备和接口组合。 支持同时对不同的设备和接口进行通信。 支持通过插件的方式扩展新的设备和接口,以满足特殊的连接需求。 变量 支持创建各种变量,包括变量数组和变量容器。 支持创建扩展变量,如表达式变量、报警变量、文本文件变量、数据库变量等,以满足各种测控数据传递、呈现和存储需求。 支持多种变量数据类型,如Boolean、SByte、Byte、Int16、UInt16、Int32、UInt32、Int64、UInt64、Float、Double、Decimal、DateTime、String、BitString。 支持变量数据的格式化。 支持变量模板。 执行序列 支持创建执行序列,实现任意逻辑的执行过程,以满足各种测控执行需求。 支持流程控制,如分支语句If、Switch,循环语句For、While,并行语句Parallel。 支持同步控制,如等待(Wait)、通知(Notification)。 支持多种动作步骤,包括数值类型动作步骤、消息类型动作步骤、寄存器类型动作步骤。 支持序列嵌套,支持复杂的层次结构。 支持脚本,脚本可以无缝调用.Net Framework类库,调用第三方托管库来实现执行逻辑。 支持协议模板和步骤模板。 用户界面 支持创建用户界面,利用画面工具箱的控件、形状模版,实现任意用户界面,以满足各种测控界面需求。 支持属性数据绑定,建立画面元素属性和变量的联系。 支持事件脚本,脚本可以无缝调用.Net Framework类库,调用第三方托管库来实现画面逻辑。 支持动态动作,建立画面元素动作(移动、旋转、倾斜、尺寸)与变量的联系。 支持控件模板和形状模版。 权限管理 支持创建用户和角色,以分配操作权限。 通过权限的方式来控制软件界面,有效区分开发者和操作者的用户界面。 常用工具集 支持CS/BCC/LRC计算器。 支持DES/3DES计算器。 支持CRC8/CRC16/CRC32计算器。 支持MD5/SHA1/SHA256/SHA384/SHA 512哈希值计算器。 支持Base64字符串计算器。 支持字符编码转换器。 支持报表设计。 格西测控大师的应用领域 格西测控大师是一款通用的测试、测量和控制应用软件平台,可适用于各种应用领域,包括但不限于: 数据采集和监控 格西测控大师可用于实时数据采集和监控系统,帮助用户快速开发用于监视和记录各种传感器数据的应用,如温度、湿度、压力等。 设备仿真 对于需要模拟特定设备行为的应用,格西测控大师可以创建仿真系统,用于测试其他系统在与真实设备交互时的性能和可靠性。 通信协议监听和分析 格西测控大师可以用于监听和分析各种通信协议,包括Modbus、Mqtt、OPCUA、IEC101、IEC104等,以确保通信系统的正常运行并识别潜在的问题。 通信协议一致性测试 在通信系统中,协议的一致性至关重要。格西测控大师可以用于开发一致性测试系统,以验证不同设备和应用程序是否遵守相同的通信协议。 自动化控制和应用 格西测控大师可以用于自动化控制系统,如电子公告牌、多轴姿态传感器测量软件等。它提供了强大的数据显示、编辑和控制功能,适用于各种自动化应用。 格西测控大师是一款多功能且高度可定制的软件平台,为工程师提供了强大的工具,以满足不同领域的测量与控制需求。它帮助用户快速构建自动化测试和控制系统,减少了开发时间和成本,同时提高了系统的灵活性和性能。无论您是从事数据采集、设备仿真、通信协议分析还是自动化控制,格西测控大师都能够成为您的得力助手,助您实现更多创新和提升生产效率。 --- ### 407. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在现代电子研发和制造中,通信协议的测试和调试是至关重要的一环。为了满足不同通信协议的需求,研发人员需要一种快捷、直观、灵活的工具。格西调试精灵(原格西烽火)正是这样一款多功能的基于串口和网口的通信测试软件,它能够快速定制各种通信规约,解决了电子研发过程中调试和测试软件定制化过多的问题。本文将为您介绍格西调试精灵的优势和功能,以及它在不同领域的应用。 格西调试精灵的优势 快捷的测试激励定制 格西调试精灵采用搭积木方式构建测试程序,使得测试效率大幅提升。即使是入门级的技能需求,也可以轻松完成专业级的工作成果。这种灵活的方法令测试变得更加高效,就像在搭建积木一样简单。 直观的测试数据呈现 格西调试精灵具备强大的数据分类、存储、统计和显示功能,使得测试数据直观呈现。这些功能有助于分析和解释测试结果,提高研发人员对系统性能的理解。 灵活的测试流程控制 这款软件支持多种测试流程控制,包括循环测试和组合测试、支持主动设备和从动设备模拟、支持单工和双工工作模式、支持直接激励和协议激励单独测试或混合测试。这种灵活性使得格西调试精灵适用于各种测试需求。 格西调试精灵的功能 格西调试精灵提供丰富的功能,以满足不同通信协议的测试需求,其中包括: 基本功能 支持以文本或16进制方式接收和显示数据。 支持串口通信,自动寻找系统支持的串口,支持150~256000常见的波特率,支持自定义任意波特率。 支持网络接口,包括UDP、TCP客户端和TCP服务器协议类型。 支持自动保存测试数据。 直接激励功能 支持以16进制、字符串或文件格式发送数据。 支持循环激励,便于测试项目的统一管理和重复使用。 协议激励功能 支持主动设备和从动设备的激励仿真。 支持任意的帧格式定制,最小解析单位为1Bit,可直观地显示任意帧格式。 支持自定义协议类型,支持测试结果分类存储和显示。 支持使用脚本语言(如C#、VB和JScript)控制测试运行,调用第三方DLL完成复杂的计算和测试任务。 支持循环激励和激励统计报告。 常用工具集 支持CS/BCC/LRC计算器。 支持DES/3DES计算器。 支持CRC8/CRC16/CRC32计算器。 支持MD5/SHA1/SHA256/SHA384/SHA512哈希值计算器。 支持字符编码转换器。 格西调试精灵的应用领域 格西调试精灵通过搭积木的方式构建任意通信协议的测试工程,广泛应用于电子研发调试和测试领域中。以下是一些常见的应用领域: 电力电子测试 DL/T645 DL/T698.41/698.42 Q/GDW376.1/376.2 IEC60870-5-101/102/103/104 IEC62056/DLMS 工业控制测试 MODBUS串行链路 MODBUS TCP/IP 嵌入式测试 AT指令 CJ/T188水表协议 BACnet楼宇自动化 任意私有的调试和测试协议 格西调试精灵的出色功能和灵活性使其成为电子研发领域的不可或缺的工具。它帮助工程师们更轻松地应对不同通信协议的测试需求,提高了研发效率,降低了定制化开发的复杂性。无论是电力电子测试、工业控制测试还是嵌入式测试,格西调试精灵都能为研发人员提供强大的支持,让他们更专注于创新和问题解决。 --- ### 408. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 网站:Modbus Slave Emulator - Modbus 从站仿真器 (redisant.cn) 在面对复杂的工业自动化和通信技术场景时,Modbus 从站仿真器不仅是一款工具,更是一场技术的革命。它集结了众多强大功能,帮助工程师、开发者和技术爱好者高效地解决问题。接下来,让我们一同深入探索它的魅力所在。 1. 充分释放GPU的力量 在当今的技术时代,高效的图形处理变得至关重要。Modbus 从站仿真器完美地利用了GPU,从而带来了流畅、清晰的界面渲染。这意味着即使在处理大量数据时,用户也可以获得稳定和迅速的响应,同时,它更进一步地降低了功率消耗,为环保出一份绵薄之力。 2. 通信协议的多样性 该仿真器超越了传统工具的局限性,支持众多Modbus通信协议。无论是基于串行通信的Modbus RTU和Modbus ASCII,还是基于网络的TCP/IP或UDP/IP协议,它都能轻松应对。这一特性使得工程师可以在多种场景中灵活使用,大大提高了工作效率。 3. 数据监视与分析 透过仿真器的眼睛,每一帧在通信链路上流动的数据都无所遁形。用户不仅可以实时监视,还可以将数据导出到文件,方便后续的分析和报告编写。 4. 丰富的数据格式 支持多达28种数据格式,这款仿真器确保了与各种设备和软件的兼容性。无论是Signed、Unsigned、Hex还是Binary等,它都能轻松处理。 5. 功能强大的图表工具 对于工程师而言,有时数字并不如图表来得直观。仿真器提供了实时图表功能,允许用户对任意数量的寄存器数据进行可视化,这样,数据的变化趋势一目了然。 6. 地址转换与管理 面对众多设备和协议,地址的转换和管理显得尤为重要。仿真器提供了Modbus协议地址与PLC地址的相互转换功能,使得调试变得前所未有地简单。 7. 其他核心特性 支持同时创建多个连接网络和大量从站设备。 多标签页设计,确保了在不同设备间的流畅切换。 通过表格形式管理寄存器,提供了高度的定制性。 导出/导入功能,使数据管理更为便捷。 内置的数据校验和转换工具,保证了数据的准确性。 总结,Modbus 从站仿真器不仅仅是一个软件,它是工业通信技术的未来。其强大的功能和用户友好的设计,使它成为了每一个工程师工具箱中的宝贝。如果您还没有尝试,那么现在就是最好的时机。 --- ### 409. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 网站:Modbus Master Emulator - Modbus 主站仿真器 (redisant.cn) 在自动化和工控领域中,Modbus 作为一个经典的通信协议,被广大工程师频繁地应用。为了更好地进行调试和测试,Modbus 主站仿真器的出现成为了一个游戏规则改变者。让我们一同深入探讨这个强大的工具。 1. GPU加速渲染:仿真器的界面渲染通过充分利用GPU来达成,这保证了界面操作的流畅性,并且与传统软件相比,其功率使用更为节省,这意味着更加环保和经济。 2. 支持的通信协议:Modbus 主站仿真器支持多种Modbus协议,如Modbus RTU、Modbus ASCII、Modbus TCP/IP、Modbus UDP/IP等。这确保了与各种设备的兼容性,提供了极大的灵活性。 3. 链路数据监视:用户可以实时监视通信链路上的每一帧数据,进而进行深度分析。更进一步地,它甚至支持数据导出功能,为后续的分析提供了方便。 4. 数据类型的多样性:其支持多达28种数据格式,如Signed、Unsigned、Hex、Binary等。更为出色的是,这款工具还支持寄存器命名和注释,帮助工程师更清晰地管理和了解数据。 5. 实时图表功能:通过此仿真器,用户可以实时监控任意寄存器中的数据变化,以图表形式呈现,确保数据的变化趋势被快速捕获并分析。 6. 地址的灵活转换:它支持Modbus协议地址和PLC地址之间的相互转换,为您的设备调试带来极大的便利性。 7. 测试与诊断:仿真器的测试中心允许用户编写并发送自定义测试字符串,并检查从站返回的结果,支持多达28种数据格式。 8. 功能码的丰富支持:从基本的“读取线圈”到复杂的“读/写多个寄存器”,这款仿真器支持了Modbus中的众多功能码,确保了其与多种设备和场景的完美匹配。 9. 附加工具:除了主要功能外,还内置了字节转换工具、数据校验工具等,为用户提供了全方位的支持。 总之,Modbus 主站仿真器无疑是工控和自动化领域的一款高级工具,为工程师们带来了前所未有的便利。无论您是进行日常测试,还是深入研究,这都将是您不可或缺的助手。 --- ### 410. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 软件概述 ModbusRTU调试助手是一款针对各种智能仪表和智能设备设计的专业调试工具。该软件在物联网设备调试过程中,发挥了至关重要的作用,能够帮助用户快速地定位问题并进行解决。 特色功能 1. 数据类型自定义 ModbusRTU调试助手允许用户根据实际需求自定义数据类型,以满足不同设备和系统的需求。无论是整数、浮点数,还是字符串等数据,您都可以通过此功能轻松设置。 ●16位有符号数:占用1个偏置,2个字节,表示正负整数,数据范围-32768~32767。●16位无符号数:占用1个偏置,2个字节,表示正整数,数据范围0~65535。●32位有符号数:占用2个偏置,4个字节,表示正负整数,数据范围- 2147483648~ 2147483647。●32位无符号数:占用2个偏置,4个字节,表示正整数,数据范文0~ 4294967295。●32位浮点型数:占用2个偏置,4个字节,可表示正数、负数、正数、小数。 ●ASCII字符串 ●UTF-8字符串 2. CRC字节序设置 考虑到不同设备可能存在字节顺序(大端序或小端序)的差异,ModbusRTU调试助手提供了字节顺序的设置。这意味着您可以根据设备的需要,方便快捷地设定使用大端序或小端序,避免因字节顺序差异引发的通信问题。 3. 数据处理 ModbusRTU调试助手内嵌了数据处理算法,可以对接收到的数据进行二次加工。可以进行数据转换$Value / 10.0,$Value * 10,($Value / 100.0).ToString("F2"),可以根据实际修改调整。 应用场景 ModbusRTU调试助手官方版适用于各类物联网设备调试,包括但不限于智能仪表、PLC控制器、传感器、执行器等设备。通过使用该软件,您可以更好地理解设备的通信行为,快速定位问题,并找到合适的解决方案。 总结 ModbusRTU调试助手官方版是一款强大且易用的调试工具,无论你是设备制造商、系统集成商,还是维护人员,都能从中受益。通过它,你可以更方便地进行Modbus RTU通信的测试和调试,提高了工作效率。 --- ### 411. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus Master 7.0.21 这是一个小巧的Modbus Master测试工具,综合了Modbus TCP、Modbus UDP、Modbus RTU、Modbus ASCII 四种工作模式.是现场通讯测试的最佳助手。Modbus RTU、Modbus ASCII可以基于TCP/IP或UDP/IP方式进行通讯模式。适合运行在任何Windows平台下。绿色软件,无需任何运行库。 功能简介: 选定连接方式为 以太网TCP、以太网UDP、串口RTU、串口ASCII、Modbus RTU(TCP通讯)、Modbus RTU(UDP通讯)、Modbus ASCII(TCP通讯)、Modbus ASCII(UDP通讯) 如果是串口RTU、ASCII:设定串口客户端串口及参数,点击打开,可选择不同的寄存器进行读写操作。如果是TCP、UDP、RTU(TCP|UDP)、ASCII(TCP|UDP):设定客户端IP和端口(默认502),点击连接,连接成功后,可选择不同的寄存器进行读写操作。 该软件作为Modbus 主站(即Mdobus 客户端)使用,可以读取线圈寄存器(Output Coil)、离散输入寄存器(Input Relay)、保持寄存器(HoldingRegister)、输入寄存器(Input Register)、扩展寄 存器(Extended Register)的数据,同时可以写入线圈寄存器(Output Coil)、保持寄器(HoldingRegister)、扩展寄存器(Extended Register)数据;数据可以按格式格式进行显示,为测试工作带来便利。 最后更新 v 7.0.21 (Build 2022/11/8) 新增功能码14H--读扩展寄存器(ExtendedRegister) 新增功能码15H--写扩展寄存器(ExtendedRegister) 修改软件图标 新增不标准03H,04H功能码数据长度判断 v 6.2.20 (Build 2022/08/30) 修改读取串口列表的方式,正确读取有效的串口 v 6.2.19 (Build 2022/06/2) 修改读取串口列表的方式,只显示有效的串口 v 6.2.18 (Build 2022/05/11) 修正串口通讯,接收到特定字符断流的bug。 修改地址起始从0开始(原为1开始) v 6.2.17.53(Build 2022/04/01) 修正Modbus ASCII 模式下功能码命令发送错误信息 v 6.1.16.52(Build 2022/03/27) 调整功能码页面,更好的理解modbus命令的组成方法 修改功能码数据显示bug 新增软件置顶功能 v 6.0.15.50(Build 2022/03/25) 调整界面,工作模式采用对话框进行修改 TCP、UDP新增IPv4和IPv6的连接方式选择 新增自动连续读取数据 新增TCP、UDP连接下的RTU、ASCII协议解析选择功能码组成命令功能 新增自动连续发送命令 v 5.2.13.49(Build 2021/12/18) 修改浮点数显示方式,超出精度用科学计数方式显示 数据列可调整宽度 v.5.1.12.46(Build 2020/12/11) 双击快速修改线圈寄存器(Output Coil) 线圈寄存器(Output Coil)添加HEX,BIN格式输入 修改内部线程工作模式 修改程序莫名退出的Bug v.5.0.0.42(Build 2020/12/03) 新增Modbus ASCII 工作模式 新增收发时间显示,及时间格式 新增收发数据显示不同颜色 新增数据保存功能 v.4.1.2.39(Build 2020/12/02) 新增数据显示类型: 21: String 字符(AB) 加大起始地址范围和Modbus地址范围 v.4.0.1.36(Build 2020/11/26) 修改地址超限的bug v.4.0.0.30(Build 2020/09/30) 通过合并 TCP、UDP、RTU通讯方式,修改而来 v.3.1.0.29(Build 2020/09/27) 修订线圈寄存器、离散输入寄存器数据显示 新增0FH功能码功能 完善各功能码反馈提示信息及异常信息 新增本地端口参数 v.3.0.0.26(Build 2020/09/21) 调整界面 升级编译器版本.发布32位和64位程序 修正数据显示的重大Bug Bug Bug!! 完善各种数据换位格式,可选择以下显示方式1: Signed (2 Byte)有符号整数(AB)*2: Signed (2 Byte)有符号整数(BA)3: UnSigned(2 Byte)无符号整数(AB)*4: UnSigned(2 Byte)无符号整数(BA)5: LongWord (4 Byte)无符号整数(AB CD)*6: LongWord (4 Byte)无符号整数(CD AB)7: LongWord (4 Byte)无符号整数(BA DC)8: LongWord (4 Byte)无符号整数(DC BA)9: LongInt (4 Byte)有符号整数(AB CD)*10: LongInt (4 Byte)有符号整数(CD AB)11: LongInt (4 Byte)有符号整数(BA DC)12: LongInt (4 Byte)有符号整数(DC BA)13: Float(4 Byte)单精度浮点(AB CD)*14: Float(4 Byte)单精度浮点(CD AB)15: Float(4 Byte)单精度浮点(BA DC)16: Float(4 Byte)单精度浮点(DC BA)17: Double(8 byte)双精度浮点(AB CD EF GH)*18: Double(8 byte)双精度浮点(GH EF CD AB)19: Double(8 byte)双精度浮点(BA DC FE HG)20: Double(8 byte)双精度浮点(HG FE DC BA) v.2.2.0.18(Build 2020/06/4) 修正了几个BUG. v.2.0.0.16(Build 2018/08/9) 调整界面,并列显示所有数据格式 新增数据显示格式,加入16位有符号整数,Bin,Double 增加小数点位数设定, 增加Float(Swap),Smalint(Swap),Double(Swap) 支持的功能码: 01H--读取线圈寄存器(Output Coil),位操作 02H--读取离散输入寄存器(Input Relay),位操作 03H--读保持寄存器(Holding Register),字节操作 04H--读取输入寄存器(Input Register),字节操作 05H-写单个线圈寄存器(Output Coil),位操作 06H--写单个保持寄存器(Holding Register),字节 0FH--写多个线圈寄存器(Output Coil),字节指令操作,可写多个 10H--写多个保持寄存器(Holding Register),字节指令操作,可写多个 14H--读多个扩展寄存器(Extended Register),字节操作 15H--写多个扩展寄存器(Extended Register),字节操作 软件下载: http://blockke.ysepan.com/ --- ### 412. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Bittly 是一个支持多种通讯方式或通讯协议的通讯调试工具。 支持串口,网络,蓝牙,HTTP,Websocket,MQTT以及Modbus。 支持通过指令绑定快速实现上位机控制面板。支持针对通讯指令进行自动化测试并输出测试报告。 指令调试界面布局 布局说明: 模块:功能模块菜单用于切换当前工作区域的功能内容。 目前该菜单包括指令管理,面板绘制,测试管理,环境变量以及项目管理。 指令目录 :用于管理保存的指令列表,支持文件夹和拖拽管理。点击指令后将会在右侧工作区打开指令详情用于进行调试操作。 打开的指令列表 :显示当前已打开的指令列表,可通过邮件来快速关闭其他指令,也可通过点击 x 图标关闭当前。通过点击Tab标签来进行指令之间的切换操作。 通讯配置 : 通讯配置区域用于配置各种通讯的参数信息,第一个下拉框用于选择通讯方式,例如串口,网络,蓝牙等。 在选择完成通讯方式后,即可配置对应的通讯参数,例如串口号,通讯速率等, 根据通讯方式的不同,所需要配置的通讯参数也不同。 参数构建 :参数构建区域用于构建请求参数,通过上方的单选按钮进行选择参数的构建模式。 HEX模式 :用于快速构建十六进制请求参数内容, 例如 : 01 02 03 AA BB CC 文本模式:用于快速构建文本请求参数内容,例如:how are you 文件模式:用于将一个文件作为请求参数进行发送,支持逐行发送或逐字节发送以及全文发送三种模式。 表单模式:用于快速创建比较复杂的请求参数,通过指定数据类型自动构建请求数据,无需手动进行进制转换或大小端处理。 响应查看 :支持多种方式查看响应内容,便于观察和分析响应数据。 数据流: 数据流模式将会记录每次发送和接收的数据内容,并通过列表的方式显示出来,可点击列表条目查看完整响应内容。 文本:将响应内容解析为文本并显示。 HEX:将响应内容转换为十六进制字符串并显示。 格式化:通过配置数据类型和长度来自动解析和转换接收到的数据。 绘图:将数据通过指定的解析方式进行解析并通过折线图的方式显示。 活跃连接列表 :显示所有当前已经连接的设备或服务,可通过 x 图标断开指定的连接。 控制面板界面布局 布局说明: 面板列表 :每个项目可以创建任意多个控制面板,面板直接可以通过点击的方式进行切换。 面板控制: 显示当前面板名称,以及切换日志,变量列表的显示状态。 或者切换面板的工作模式。 切换到编辑模式可编辑面板组件。 面板组件区域 :面板组件区域用于显示该面板的所有组件,该区域可在编辑模式中通过拖拽的方式自由定义组件以及组件的工作模式。 变量列表 :变量列表用于显示当前面板的所有变量取值,可通过面板控制区域的 变量 按钮来进行切换显示与关闭状态。 指令日志区域 :显示当前面板通讯日志,可通过面板控制区域的 日志 按钮来进行切换显示与关闭状态 Bittly 数据发送可通过新建指令TAB或者从左侧目录中打开一个指令来进行操作。 操作步骤说明: 选择通讯方式, 根据需要选择需要进行通讯的类型,例如串口,网络或其他类型。 通讯方式选择完成后,通讯配置会根据所选择的通讯方式显示出需要配置的参数内容。例如此处选择为 WebSocket 方式,则需要配置连接的服务器地址。 发送请求,当请求参数配置完成后即可点击发送按钮发送数据。如果请求连接没有建立,则会先建立连接然后再进行发送操作。如果连接已经存则会直接发送请求内容。 请求参数构建模式,选择适合的请求参数构建模式,例如,当请求参数比较简单时, 可选择文本或者HEX模式,如果参数比较负责则可以选择表单模式进行快速构建。 请求参数构建,这里以表单模式为例, 根据文档要求的数据类型来进行数据内容构建。名称列用于说明该属性名称,类型用于说明该属性数据类型,取值列用于编辑该属性取值。描述列用于扩展说明该属性,例如取值范围或者其他必要说明。 响应查看模式用于选择合适的响应数据查看方式,例如: 当发送和接收频率比较多,请求内容比较简单时,可使用数据流模式来查看内容交互; 当数据为文本内容时,可使用文本模式查看响应文本; 当数据为二进制数据时,也可以使用HEX模式查看响应数据的十六进制内容; 当数据内容比较复杂,但是属于可解析的结构化数据时,可采用格式化模式自动解析响应内容; 也可以指定或者自定义解析模式来解析数据,并渲染为折线图。 Bittly 数据格式化与解析 当请求内容比较复杂的时候,通过手动创建二进制数据就变得十分棘手,现在我们可以通过 Bittly 来改变这种情况。 请求参数构建 例如,我们以Modbus协议中读取数据为例, 在文档中要求我们传递的参数如下: 则我们我们可以使用表单来进行创建该结构: 名称 :用于标记该属性的名称 类型 :指定该属性的数据类型,支持的数据结构如下:字节(uint8),单字节整型(int8),字符(int8/char), 无符号字符(uint8), 短整型(uint16), 无符号短整型(int16), 整型(int32), 无符号整型(uint32),长整型(int32), 无符号长整型(uint32) , 长长整型(int64), 无符号长长整型(uint64), 单精度浮点型, 双精度浮点型, 字符串, 字节数组, 文件 。 取值:编辑属性取值。 当属性为无符号数据时,可以指定取值格式为 二进制(BIN), 八进制(OCT), 十进制(DEC) 或 十六进制(HEX), 并且在数据发送时自动进行转换操作。 可以使用占位符 {{env.name}} 来使用环境变量中的数据,例如有环境变量 测试=YES, 则在数据发送时 {{env.测试}} 会被替换为 YES。 可以使用占位符 {{name}} 来使用脚本中的变量,例如在脚本中执行 $this.variableSet("变量","HELLO"); 则 {{变量}} 在发送时会被替换为 HELLO 可以使用状态占位符 {{status.name}} 来使用指令状态中的值, 例如存在状态 COUNT=1, 则 {{status.COUNT}} 在发送时会被替换为 1 可以使用{{@func()}} 来执行快速调用的函数,例如上图中 {{@crc16modbus($1,$2,$3,$4)}} 则会在发送时,调用crc16modbus 函数,并将前四个属性作为参数执行该函数,最后讲函数结果作为数据发送出去。 描述 : 用于备注并说明属性。 数据响应解析 当 Bittly 收到响应内容后,我们可以配置响应数据的格式化方式,如下: 这样配置完成后,以后再次执行将会自动进行解析操作。 其中: 名称 : 用于说明响应属性的名称 类型 : 指定响应属性的数据类型, 支持的数据类型如下:字节(uint8),单字节整型(int8),字符(int8/char), 无符号字符(uint8), 短整型(uint16), 无符号短整型(int16), 整型(int32), 无符号整型(uint32),长整型(int32), 无符号长整型(uint32) , 长长整型(int64), 无符号长长整型(uint64), 单精度浮点型, 双精度浮点型, 字符串, 字节数组; 对于不定长数据,例如字符串和字节数组,则需要指定数据长度。 取值 : 用于显示解析后的数据结果,当数据类型为无符号时,可指定其数值进制类型。 描述 : 用于备注属性其他信息。 Bittly 的数据绘图分析 Bittly 支持根据响应数据来绘制折线图,例如: 当前解析方式支持以下几种: [num] [num]CRLF :该解析方式为固定格式,即响应数据为 [num] [num]CRLF 的格式,例如 : 1 2 3rn4 5 6 ,则其中1,2,3为第一个频道, 第二个频道以及第三个频道的第一个数据, 4,5,6为第二个数据。 数据帧 :数据帧格式支持配置帧头,帧尾,数据长度,数据类型,以及频道数量 矩阵 : 矩阵格式是讲所有响应数据作为解析数据,通过指定数据格式和频道数量来进行解析 格式化数据 : 格式化数据是讲已经配置好的格式化解析方式作为模板来进行数据解析,并支持进绘制指定属性的数据。如上图所示。 自定义解析 : 支持自定义解析脚本来进行数据解析。 Bittly 的控制面板 当需要频繁执行多条指令时,来回切换指令TAB就变成了一个比较麻烦的事情,这样我们可以通过讲需要执行的指令绑定到按钮,或者滑动条组件来实现快速的执行多条指令,而省却切换TAB的操作。并且通过面板可以更加方便的实现一个模拟的上位机控制面板。 运行模式 如上图所示,当面板编辑完成时,即可切换到运行模式进行操作。 在运行模式中, 可以点击上方的 日志 按钮来展开该面板运行的过程中的通讯日志,来查看响应的指令执行情况。 点击上方的,变量 按钮来查看当前面板中的变量数据。 编辑模式 编辑模式用于编辑该面板的内容,例如面板中应该包含哪些组件,需要哪些变量等。我们以按钮为例来添加一个组件: 0x01. 拖拽按钮到面板的合适位置 0x02. 绑定指令并解析响应内容到变量,完成后点击确定按钮关闭配置 0x03. 回到运行模式运行 这样就完成了指令绑定以及变量的绑定,其他组件操作与此类似。   Bittly 的自动化测试 单元测试 您可以使用 Bittly 来针对指令进行自动化测试,如上图所示,您可以选中您需要测试的指令,然后在右侧工作区中点击 创建测试用例 按钮来创建一个针对该指令的测试用例。 测试用例通过指定请求参数和期待响应内容来进行工作, 在执行时,测试用例发送配置好的请求参数,在收到响应内容后,与期待响应内容进行对比,如果对比成功,则测试通过,否则该测试失败,其执行流程图如下: --- ### 413. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 名称:卓岚串口调试工具 特点: 接收、发送不丢包。支持直接列出可用串口; 支持十六进制发送、接收;支持定时发送; 支持发送收到的数据; 支持收到帧尾后发送; 可以记忆上次使用的串口参数,省略每次配置的繁琐步骤;绿色软件无需安装。 --- ### 414. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MThings是一款全新的标准化专业MODBUS调测工具,提供主从机一体化操作,可用于MODBUS协议接口的调试测试、Modbus设备运维。它主要解决如下问题: 模拟仿真上位机软件,支持MODBUS主机读写功能。模拟仿真Modbus设备软件,支持Modbus从机被动读写功能。支持多设备、多通道并发运行,无设备个数限制。支持持久化数据配置、无菜单设计,操作友好。支持MODBUS-RTU、MODBUS-ASCII、MODBUS-TCP。支持串口、TCP客户端、TCP服务器(可接入多客户端)、UDP单播。支持全链路报文监控、存储、分析。支持丰富的链路丢包统计方法。支持数据曲线录波,统计数据极值和均值,并可导出所有数据。支持MODBUS数据配置模板导入导出。支持多种变化数据模拟方法。支持数据二次加工,界面呈现原始真实数据。支持良好的非标协议适配。性能优异,支持接入 > 500设备节点,超20K数据点。永久免费,免安装,中文。 2.数据 MODBUS协议是一份相对简单的总线协议,交互流程和报文约定在《Modbus Application Protocol V1_1b3》中可以得到明确的解答。这里对经常引起歧义的数据块和数据定义阐述个人理解。 2.1  数据块 协议中定义4种数据块,基于数据类型可分为两类:BIT数据和寄存器数据,结合读写属性,数据块之间的关系如下图: 2.2  数据 数据是数据块中具体信息的详细定义,不同数据块中的数据定义是相互独立的。一条数据定义可以包含多个连续BIT/REG数据点。 描述数据的属性主要包括: @隶属数据块 @数据名称 @数据地址 @数据量 @数据类型(协议类型) @数据系数(浮点数据被整形传输时涉及) @字节序(寄存器数据涉及) @字序(寄存器数据量≥2Word涉及) @同一数据块中,不同的数据定义的数据地址+数据量不能出现重叠; @任何数据块的数据在从机侧都是可读可写的; @不同数据块中的数据在从机侧可以指向同一数据对象,其拥有两个不同数据块地址,区别在于通过这种差异开放不同的读写权限; @REG数据的数据量最小为1,最大值不得超过上限(输入寄存器:125,保持寄存器123); @BIT数据的数据量固定为1,代表占用1Bit,同时数据系数属性失效; 2.3数据块与数据的关系 @同一数据块中,不同的数据定义的数据地址+数据量不能出现重叠; @任何数据块的数据在从机侧都是可读可写的; @不同数据块中的数据在从机侧可以指向同一数据对象,其拥有两个不同数据块地址,区别在于通过这种差异开放不同的读写权限; @REG数据的数据量最小为1,最大值不得超过上限(输入寄存器:125,保持寄存器123); @BIT数据的数据量固定为1,代表占用1Bit,同时数据系数属性失效; 2.4传输类型与呈现类型 协议数据定义方式主要基于传输设计,其与UI数据之间势必存在相互转换的问题,包括类型、长度、功能差异。 MThings提供友好的数据可视化方法,支持以实际业务格式展示报文数据。 传输类型即MODBUS数据协议中定义的类型,通常以整形居多,但往往并非数据实际格式,使用者为了确认数据的正确性需要重新计算。不够直观的调试数据无疑严重影响调测效率和准确度。 MThings支持用户指定每项数据的传输类型和呈现类型,调试过程中,软件自动按配置转换,界面呈现的数据将是数据的真实内容。 例如,从机上报电压数据10.5V,寄存器传输过程中数据则为0X0069,MThings收到数据后,将整形数据乘以系数0.1,界面呈现还原之后的数据10.5V。 在录入数据配置时,MThings提供的参数包括传输类型、呈现类型、系数、单位四项配置,他们的含义分别是: MThings支持多种协议传输类型和UI数据类型,对应关系如下: 3  功能介绍 3.1  界面分区 1.主菜单:用于切换“主功能页面”。 2.设备列表:辅助“主菜单”,用户通过单击设备名称,可切换当前激活设备,指定新的“主功能页面”所属设备。 3.配置文件:用于新建、导入、另存为、保存配置文件。 4.视图切换:用于控制显示或隐藏“设备列表”和“报文监控”窗口。 5.报文监控:查阅和管理各链接的通信报文。 6.主功能页面:对应“主菜单”,提供主功能操作界面。 3.2  新建工作配置文件 注:开始阶段如果没有加载其他配置文件,可跳过该步骤,程序退出前点击保存也可以创建配置文件。 3.3  创建串口设备 1.勾选新建设备所挂靠的串口(双击表头可全选) 2.选择所创建的设备类型 3.输入设备起始地址 4.输入设备结束地址 注:起始地址 ≤ 结束地址,起始和结束地址相同代表添加一台设备,程序根据指定的起始到结束地址,自动为区间内每个地址创建一个设备。 5.点击“配置”,确认或修改串口参数 6.查看或修改串口参数 7.点击后程序开始添加设备 8.设备添加成功后,可在此处查看到该设备。 注:设备名称默认格式:[M/S]端口名称-地址,用户可双击设备名称单元格自行修改,但是需要保证新名称不与其它设备名称冲突,否则名称修改失败。 注:同一路端口/链接中,不允许添加不同设备类型设备。 3.4  创建网络设备 1.切换端口类型至“网络” 2.点击“新建”按钮,新增一路网络配置 3.确认或修改网络配置后点击“确认”,网络端口表格中对应新增一路链接 4.勾选新建设备所挂靠的网络链接 5.选择所创建的设备类型 6.输入设备起始地址和结束地址 7.点击开始添加设备 8.设备添加成功后,可在此处查看到该设备。 3.5 编辑设备数据配置 1.点击主菜单中的“数据”,切换到设备数据操作界面 2.点击需要数据配置的设备 3.点击“配置数据”按钮使得当前设备进入数据配置态 4.点击“新增数据”按钮新建一条数据配置项,数据表格中同步增加一条默认配置 5.修改数据配置项中各项参数 注:修改过程中程序会自动关联参数变更,请仔细确认各项参数是否正确。 6.点击按钮退出数据配置态 注:退出配置态前程序会校验最终的配置结果是否正确,如果数据地址存在冲突,请按照提示修改,否则无法退出配置态。 3.6 同步数据配置至其它设备 为了简便多设备的数据配置工作,程序支持在不同设备之间进行配置共享。 1.在源设备(数据配置共享)中点击按钮进入数据配置态 2.点击“同步配置” 3.指定配置同步的目标设备 4.点击“确定”按键后开始配置同步 3.7  读数据(主机设备)     读数据有两种方式: 1.长按(>300ms)数值列单元格,程序自动发起一次数据(当前行)的读取请求 2.点击“批量读”,一次发起多个数据的读请求(批量读配置项③已选择),用户也可根据提示发起循环批量读。 3.8 写数据(主机设备) 写数据有两种方式: 1.双击“数值”列数据单元格,发起单个数据的写请求;单个数据写请求分为预置数据 2.或立即下发 3.点击立即下发后,程序立即发起数据写请求,并自动跟随一次数据读请求,如果数据写请求执行成功,单元格中数据即为下发写数据。预置数据操作是为了给批量写操作提前预置目标数据。 4.点击“批量写”,一次发起多个数据的写请求(批量写配置项⑤已选择),用户也可根据提示发起循环批量写。 3.9 配置模拟数据(从机设备) 从机设备的数据主要用来供主机读取,是为模拟数据。 模拟数据修改方法很简单,双击“数值”列数据单元格,输入相应数值即可。 如果需要将设定的模拟数据存储至配置文件,需要单击“配置数据”按钮,进入设备数据配置态后修改数据数值即可。 3.10 退出程序 用户关闭程序前,程序自动检查配置是否在使用过程中出现变更,并给出存储提示,所以请关注程序退出时弹出的提示信息,并给出正确选择。 4 数据配置 数据配置是进行MODBUS读写操作的必经步骤,快速高效准确的完成数据配置是调测工作的前提。 4.1 开始数据配置 进入任一设备的数据界面,单击“配置数据”按钮,当前设备进入数据配置态。进入配置态后,MThings强制显示所有配置数据,包括手动隐藏的配置行,且配置态中不允许隐藏任何配置信息。进入配置态后,MThings自动关闭所有当前设备正在进行后台通信,配置完成后,需要手动恢复。 4.2 新建数据配置 单击“新增数据”按钮,随后弹出的对话框中可指定新增配置的个数。 新建的配置数据默认添加在表尾,用户可通过“上移”或“下移”按钮控制一行或多行配置上下移动。 MThings支持以现有配置为模板来新建配置,单击“新增数据”按钮前,选中参照的数据配置行即可。如果没有选择任何数据配置行,MThings默认选择最后一行为新配置模板。 4.3 修改数据配置 修改数据是最重要的步骤,MThings提供多种自动关联动作和校验功能,辅助用户准确完成数据配置。 通常,根据MODBUS协议点表的数据定义分别录入数据名称、数据区块、数据地址、数据量、单位、范围、系数、显示类型、传输类型、字节序、字序,普通单元格双击编辑即可。 其中,寄存器数据的数据量即为寄存器个数,BIT数据的数据量固定为1。 传输类型为协议定义类型,即报文中原始数据类型。 显示类型为期望数据在MThings界面上被解析的目标类型。 数据传输类型、显示类型等字段会根据其它字段的变化,自动匹配可选择项,非匹配类型将被禁用。 系数用于整形数据(传输类型)和浮点型(显示类型)相互转换,其他情景下,固定为1。举例:系数设置为0.1,原始传输数据为123,则界面显示数据为12.3。 4.4 数据配置项的关联规则 1) BIT类型数据,数据量固定为1,传输类型固定为BIT,数据系数固定为1,字节序、字序禁止为无效; 2) 寄存器类型数据,传输类型禁止为BIT; 3) 输入寄存器数据量不超过125; 4) 保持寄存器数据量不超过123; 5) 传输类型为浮点型时,系数固定为1; 6) 数据量为1时,传输类型禁止浮点型; 7) 数据量不是1、2、4时,传输类型禁止所有整形; 8) 传输类型为整形或浮点型时,字节序和字序可配置,否则禁用; 9) 数据量为2、4时,字序可配置,否则禁用; 10)当前显示类型为字符串(STRING)或码流(BYTES)时,该数据不支持曲线绘制; 4.5 退出配置态 单击“数据配置”按钮,MThings检查所有数据配置是否合法,如果检查通过,当前设备返回到操作态,否则提示配置异常,并给出异常原因。 4.6 如何更高效 使用配置同步功能,编辑一台设备配置后,将当前配置同步给拥有相同点表的其它设备;借用已有数据配置模板添加新数据配置; 注意事项:1、运行电脑的显示器分辨率:800*600或更高,推荐使用分辨率19201080。支持Win7及以上版本,兼容32/64位。   --- ### 415. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 有人串口转网络调试助手:TCP/IP网络调试助手与串口调试助手二合一 设计理念:简单,可靠,简洁,方便;使用条件:绿色,免费。 【软件关键特点】: 1. 有人串口调试助手和网络调试助手合二为一,特别适合调试网络设备。2. 支持中文和英文双语言,再也不用愁找不到合适的串口调试软件给国际客户用了。3. 最小化时停留在右下角,不占用任务栏位置,需要时一键调入。4. 可存储设置的所有参数,端口号,波特率,IP地址等,下次自动载入,节省时间。 【网络调试助手特性】: 1. 支持TCP和UDP协议,支持广播,工作模式TCP Server,TCP Client,UDP2. 支持ASCII/Hex发送,发送和接收的数据可以在16进制和AscII码之间任意转换,支持发送和显示汉字。3. 可以自动发送校验位,支持多种校验格式。4. 支持间隔发送,循环发送,可以接收数据存如文件,也可以从文件导入数据用于发送。5. 支持接收结果自动换行显示 【串口调试助手特性】: 1. 支持常用的110-115200bps波特率,端口号、校验位、数据位和停止位均可设置2. 自动检测本机串口号,支持COM1~COM2563. 能以ASCII码或十六进制接收或发送任何数据或字符(包括中文)4. 可以任意设定自动发送周期循环发送5. 支持追加校验功能,和校验,累加和取反校验,固定值。6. 可以将接收到的数据存入文件,可以通过文件输入数据到发送区。7. 支持接收结果自动换行显示 --- ### 416. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 该软件绿色免费。可稳定用于 Win9X/NT 平台,能提高工作效率,使串口调试能够方便透明的进行。 它可以在线设置各种通讯速率、奇偶校验、通讯口而无需重新启动程序。 发送数据可发送十六进制(HEX)格式和ASCII码,可以设置定时发送的数据以及时间间隔。 可以自动显示接收到的数据,支持HEX或ASCII码显示。 工程技术人员监视、调试串口程序的必备工具。 [wshop_downloads] --- ### 417. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 考拉串口调试助手是一款操作简单的串口调试助手软件,考拉串口调试助手最新版能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送任何数据或字符(包括中文),考拉串口调试助手官方版可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。 1. 串口参数可调; 2. 数据收发; 3. 智能格式化命令; 4. 支持以下波特率:110、300、600、1200、2400、4800、9600、14400、19200、38400、56000、57600、115200、128000、230400、256000、307200、460800、614400、921600、1382400; 5. 支持校验:None、even、odd、space、mark; 6. 支持数据位长度:5,6,7,8; 7. 支持停止位长度:0,1,2,1.5; 8. 支持在发送数据的前面追加前缀发送:回车符( )、换行符( )、制表符( )、空格符(); 9. 支持在发送数据的后面追加后缀发送:回车符( )、换行符( )、制表符( )、空格符(); 10. 支持回车符( )、换行符( )、制表符( )、空格符()接收显示模式切换:原始查获式、明示模式; 11. 支持追加CRC校验码; 12. 自动保存接收数据; 13. 支持手动一键保存数据; 14. 自动删除过期数据文件; 15. 支持查询历史数据; 16. 支持手动保存接收与发送的数据; 17. 具有丰富的快捷键; 18. 自动定时发送; 19. 支持硬件流控制; 20. 支持数据收发统计; 21. 支持数据保存为文本文件; 24. 支持ASCII字符的接收与发送; 29. 支持多命令独立发送、组合发送、自动循环发送,自动循环组合发送,并支持自设周期; 30. 自动记忆用户设置; 31. 支持自设接收区容量; 32. 提供正弦波发生器功能; 33. 持续版本升级,提供更好的软件服务; [wshop_downloads] --- ### 418. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 NetAssist网络调试助手是集TCP/UDP服务端+客户端于一体的网络调试工具,是网络应用开发及调试中常用必备的专业工具,可以帮助网络应用设计、开发、测试人员检查所开发的网络应用软硬件的数据收发状况,提高开发的速度,成为您的TCP/UDP应用的开发助手。NetAssist网络调试助手是绿色免费软件,适用于各版本windows操作系统,只有一个文件,不需要微软dotNet框架支持。 可以作为客户端或服务器端使用:可以在一台PC上同时启动多个网络调试助手,并可设置其中一个作为服务端,其他作为客户端,然后操作客户端去连接开启的服务端。 只要协议、地址及端口设置正确就能成功进行连接通信。 典型应用场合:通过网络调试助手与自行开发的网络程序或者网络设备进行通信联调。 软件支持UDP,TCP协议,集成服务端与客户端,作为服务端时可以管理多个客户端连接;支持单播/广播; 支持ASCII/Hex两种模式的数据收发,发送和接收的数据可以在16进制和AscII码之间任意转换; 可以自动发送校验位,支持多种校验格式; 支持间隔发送,循环发送,批处理发送,输入数据可以从外部文件导入; 待发送输入可以保存成多组预定义的快捷输入(最多保存64组),任何时候都可以通过菜单调入预定的数据进行发送,便于通信联调。 软件界面支持中/英文(可菜单选项选择切换),默认自适应操作系统的语言环境。 [wshop_downloads] --- ### 419. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 NetAssist串口调试助手,也就是串行通信接口调试软件,是串口应用开发及调试中常用且必备的专业工具,广泛应用于单片机控制领域的数据监控、数据采集、数据分析等工作,可以帮助串口应用设计、开发、测试人员检查所开发的串口应用软硬件的数据收发状况,提高开发的速度,成为您的串口应用的开发助手。NetAssist串口调试助手是绿色免费软件,适用于各版本windows操作系统,只有一个文件,不需要dotNetFramework框架支持。 可以在一台PC上同时启动多个串口调试助手(使用不同的COM口)。 典型应用场合:通过串口调试助手与自行开发的串口程序或者串口设备进行通信联调。支持多串口,自动监测枚举本地可用串口; 自由设置串口号、波特率、校验位、数据位和停止位等(支持自定义非标准波特率); 支持对串口DCD、DTR、DSR、RTS等针脚状态位的检测控制。 支持ASCII/Hex两种模式的数据收发,发送和接收的数据可以在16进制和AscII码之间任意转换; 可以自动发送校验位,支持多种校验格式;支持间隔发送,循环发送,批处理发送,输入数据可以从外部文件导入; 待发送输入可以保存成多组预定义的快捷输入(最多保存64组),任何时候都可以通过菜单调入预定的数据进行发送,便于通信联调。 软件界面支持中/英文(通过菜单选项选择切换),默认自适应操作系统的语言环境。 [wshop_downloads] --- ═══════════════════════════════════════════ ## Node-RED ═══════════════════════════════════════════ ### 420. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摩尔信使MThings引领了一种独特的设备接入方式。与传统上位机软件不同,它不再需要针对各种设备(如PLC)提供独立的设备驱动文件。相反,MThings提供了一种通用化的协议数据配置功能,为用户带来前所未有的灵活性,同时实现了设备协议的简易分享和迁移。 设备数据配置简介 设备数据配置可以视为MODBUS数据协议定义与MThings配置之间的桥梁。配置完毕后,用户可以避免繁琐的手动组包和数据换算。仅通过简单的按钮操作,即可轻松发起轮询、批量读写和单个读写。MThings的可视化功能使协议数据信息一目了然,大大加快了调试效率。 如何进行数据配置 新增数据配置 方法一: 单击“数据”菜单。 选择需要配置的设备名称。 单击“新增”按钮。 在弹出的“新增数据配置”页面中,根据需要调整配置条数、区块和起始数据地址。 方法二: 直接拖拽已有的数据配置条目,从“区块”单元格开始。 拖拽结束后,新配置将自动插入。 删除数据配置 单击ID列以选中需要删除的数据配置;双击“ID”表头可全选或取消全选。 单击“删除”按钮进行删除。 重要提醒:删除数据并保存配置文件后,将无法恢复这些数据配置信息,请在操作前确保数据的安全性! --- ### 421. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 物联网和工业4.0的时代,与设备的高效、稳定通信成为了核心需求。摩尔信使MThings为此提供了一个灵活、高度可配置的解决方案,特别是在非标准Modbus场景。 以下是对其数据配置方法的详细解析: 1. 简洁的标准Modbus配置 对于标准的Modbus数据协议,MThings让配置变得异常简单。大部分参数可以保持默认状态,用户只需调整诸如寄存器地址和数量等少量信息。 2. 配置参数详解 为确保用户能够充分利用MThings的配置能力,我们将详细介绍每个参数及其功能: ID与数值:这两者都是不可编辑的。ID是软件按序自动分配的,而数值是在操作态中可以通过双击触发单次读操作的数据展示。 名称与单位:名称是对数据的标识,不能留空。单位则是数据的度量标准,如“米”、“伏特”等。 指令与写:这两项与数据的写操作有关。指令字段允许用户输入写指令数据,而写字段则是触发写指令下发的动作。 范围与区块:范围是数据的有效范围,主要用于辅助调试,而区块是与Modbus标准协议相关的数据区块类型。 地址与数量:这两项确定数据的位置和大小。地址是数据起始的位置,数量则决定数据占用的地址个数。 位偏移与位数:这两项用于细化寄存器数据的使用。例如,如果某个数据仅使用寄存器中的某几位,那么位偏移和位数就可以确定这些位的位置和数量。 系数与偏移:这两项用于寄存器数据的本地转换,允许对接收到的数据进行线性运算。 轮询与批量写:这两项确定数据在模拟主机模式下的读写行为。勾选后,数据会参与批量的读或写操作。 曲线与存储:这两项涉及数据的长期记录和监控。勾选曲线,数据将在曲线监控页面中实时显示。勾选存储,则数据会被周期性地保存。 传输类型与呈现类型:这两项决定数据在Modbus协议中的表现形式以及在软件界面中的呈现方式。 小数位数、字节序与字序:这些配置用于精确表示数据的格式和顺序。 间隔时间、超时时间与重发次数:这三项与数据的传输速度和可靠性密切相关。间隔时间确定两次请求之间的等待时间,超时时间是等待响应的最大时间,而重发次数则决定在超时后是否需要重发请求。 3. 模拟主机与模拟从机的时间参数 在MThings中,模拟主机和模拟从机的时间参数有所不同。例如,间隔时间在模拟主机模式下,是在收到响应后生效的,而在模拟从机模式下,则是在请求和响应之间生效。 图 模拟主机的超时时间和间隔时间示意 图 模拟从机的间隔时间示意 图 位偏移&位数示例 4. 结论 摩尔信使MThings为Modbus场景,无论是标准还是非标准,提供了一个灵活、高效的数据配置方法。通过对每个配置参数的深入理解,用户可以更好地利用MThings,实现与设备的高效、稳定通信。 --- ### 422. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 我们听到了您的声音并采取了行动!现在为您提供了一次全面的软件升级,让您的体验更加顺畅、稳定和安全。立即更新,畅享新功能! 下载地址: http://gulink.cn/download 01. [新增]英文版本。 为了更好地为设备厂商提供服务,我们推出了英文版本软件,该版本覆盖了所有功能。同时,我们还提供了英文用户手册和网页说明,以提供完整的使用体验。 02. [新增]指令按钮、对时控件。 日常更新 03. [优化]组态控件数据刷新机制,支持非轮询数据填充控件。 组态页面中往往需要包含一些仅需临时查看的数据(例如设备特征参数),而如将这些数据加入设备轮询队列,势必增加其它重要数据的刷新周期。 我们在MThings中引入了一种“所见即所得”的数据刷新机制。对于那些仅需临时查阅而非轮询的数据,软件会在控件展现时临时启动数据读取请求,而当页面隐藏时停止请求。 这种方法使得可以向组态页面中添加更多数据,而不会明显影响数据刷新周期。 04. [优化]组态控件参数编辑的交互方式。 新版本中,控件参数不再以对话框形式呈现。现在,用户只需点击任意控件,相应的参数将显示在右侧停靠栏上。用户对参数的任何修改都会实时反映在左侧页面中。 提醒: 1、以上项目仅为主要变更内容,未体现新版本中所有的变化。 2、新版本向前兼容,升级覆盖即可。 --- ### 423. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摩尔信使(MThings) 使用手册 关于本手册 本手册主要针对长念(上海)技术开发有限公司自主研发的 “摩尔信使 (MThings)”软件。 手册使用 在使用本产品前请仔细阅读本手册, 手册内容将不断更新、修正,但难免存在 与使用稍有不符或错误的情况 ,请及时在微信公众号 “ MThings 技术服务”上 留言给我们。 1 软件概述 摩尔信使(MThings)是一款基于 MODBUS 协议簇,面向工业控制现场 运维人员的上位机软件。 2 维护安装 2.1 下载 下载地址: http://gulink.cn/download 2.2 安装 2.2.1 准备 个人电脑或服务器。 显示器分辨率:推荐使用分辨率 1920*1080。 支持 Win7 及以上版本,兼容 32/64 位。 2.2.2 安装 1. 下载软件包 MThings_Pack.exe; 2. 双击开始安装,根据步骤提示依次执行即可; 3. 双击图标即可启动软件。 如安装后,无法正常运行,请进入安装目录,双击“VC_redist.x86.exe” 文件后,再重新打开 MThings。 3 功能详述 3.1 基本概念 3.1.1 设备 设备即通信节点 ,MThings 中包含两类:模拟主机设备、模拟从机设备。 模拟主机设备:MThings 作为主机接入多个从机设备时,用户需要在软件 中给每一个从机设备创建一个对应的模拟主机,不同的模拟主机通过设备地址 区分。 图 1 模拟主机设备示意 模拟从机设备:MThings 作为从机模拟数据时,用户需要在软件中根据不 同的模拟从机地址创建不同的设备。 3.1.2 数据 MODBUS 标准中定义 4 种数据块类型: 表 1 MODBUS 数据定义 数据块 单位长度 访问类型 前导数 读功能码 线圈状态 1 Bit RW 0 0X01 离散输入 1 Bit RO 1 0X02 保持寄存器 2 Bytes RW 4 0X03 输入寄存器 2 Bytes RO 3 0X04 基于数据块的单位长度 ,可将 4 种数据块分为两类: 位(BIT)数据和寄存 器(REG)数据, 结合读写属性,数据块之间的关系如下图: 图 2 不同数据块类型之间的关系 数据是数据块中的具体定义,不同数据块中的数据定义是相互独立的。 一 条数据定义可以包含多个连续 BIT/REG 数据地址。 一条数据的属性包括:隶属数据块、数据名称、数据地址、数据量、数据 类型(协议类型)、数据系数(浮点数据被整形传输时涉及)、字节序(寄存器 数据量为 1、2、4 时涉及)、字序(寄存器数据量为 2、4 时涉及)。 3.1.3 传输类型和呈现类型 MThings 提供友好的数据可视化方法 ,支持以实际业务格式展示报文数 据。 传输类型即 MODBUS 数据协议中定义的类型,通常以整形居多 ,但往往 并非数据实际格式, 使用者为了确认数据的正确性需要重新计算。不够直观的 调试数据无疑严重影响调测效率和准确度。 MThings 支持用户指定每项数据的传输类型和呈现类型,调试过程中,软 件自动按配置转换, 界面呈现的数据将是数据的真实内容。 例如,从机上报电压数据 10.5V,寄存器传输过程中数据则为 0X0069, MThings 收到数据后,将整形数据乘以系数 0.1 ,界面呈现还原之后的数据 10.5V。 图 3 设备数据直观可视化效果示意 在录入数据配置时, MThings 提供的参数包括传输类型、呈现类型、系 数、单位四项配置, 他们的含义分别是: 表 2 数据呈现相关配置参数含义解释 呈现类型 寄存器数据类型 支持数据量1、2、4 浮点型(FLOAT) 整形(10进制)(INT-DEC) 寄存器数据类型 支持数据量1、2、4 整形(16进制)(INT-HEX) 寄存器数据类型 支持数据量2、4 字节流(BYTES) 寄存器数据类型 支持数据量1~125 字符串(STRING) BIT数据类型 支持数据量1 位数据(BIT) 参数 含义 传输类型 有符号整形(INT)、无符号整形(UINT)、浮点型 (FLOAT)、字节流(BYTES)、位数据(BIT) 呈现类型 十进制整形(INT-DEC)、十六进制整形(INT-HEX)、浮点 型(FLOAT)、字节流(BYTES)、字符串(STRING)、纪元 秒(TIME) 系数 如呈现数据类型为浮点型且传输类型为整形,需配合系数使 用,软件自动将收到的数据乘以系数转化为浮点数据来显 示。 单位 辅助数据含义描述, 直接呈现在界面 MThings 支持多种传输类型和呈现类型的转换,对应关系如下: 图 4 传输类型和呈现类型转换 传输类型 有符号整形(INT) 无符号整形(UINT) 浮点型(FLOAT) 字节流(BYTES) 位数据(BIT) 3.1.4 字序/字节序 通信调试中, 字节序是个常见概念,比如本地字节序、网络字节序。 MODBUS 协议中同时存在字序概念。 字节序和字序都代表数据在报文中的存储机制,其分为两种:大端(Big- Endian)和小端(Little-Endian)。 MODBUS 数据帧中对关键字段(例如寄存器地址) 都定义为大端字节 序,但是数据部分在不同厂家的定义方式可能不同, 甚至同一厂家某一型号设 备中,对不同数据的字节序定义也不统一。 基于 MODBUS 报文的字节排序,大端字节序即数据高字节在前,低字节 在后,小端字节序相反。例如: 01 03 04 12 34 56 78 81 07 (读保持寄存器响应报文) 其中,回复数据长度 4Bytes, 如原始数据即为 0X12345678,从报文看, 其字节序即为大端,字序为大端。 但是, MODBUS 寄存器数据在传输 4 字节浮点型数据时,有些设备厂家 同时给出字序要求, 并且明确声明字序为小端,即当原始数据是 0X12345678 时,传输它的报文字节流应该这样: 01 03 04 56 78 12 34 66 D5 MThings 为了支撑更好的适配不同厂家数据协议的定义方式,对字节序和 字序做出如下处理: 每个数据都可以独立配置其字节序和字序。 寄存器数量为 1、2、4 时,支持字节序可配置,涵盖 2、4、8 字节数据。 寄存器数据量为 2、4 时,支持字序可配置,涵盖 4 字节、 8 字节数据。 其他寄存器数据量的数据,字序、字节序默认为大端。 3.2 界面功能分区 图 5 界面功能分区示意 1. 主菜单:用于切换“主功能页面”。 2. 设备列表:辅助“主菜单”,用户通过单击设备名称,可切换当前激 活设备,指定新的“主功能页面”所属设备。 3. 辅助菜单:作为配置文件操作、 通道管理、系统参数、用户管理、授 权管理等功能入口。 4. 视图切换:用于控制显示或隐藏“设备列表”和“报文监控”窗口。 5. 报文监控:查阅和管理各链接的通信报文。 6. 主功能页面:对应“主菜单”,提供主功能操作界面。 3.3 配置文件管理 3.3.1 配置数据内容 配置文件包含完整的 MThings 使用过程配置信息, 主要包括: 链接列 表、链接参数、设备列表、设备高级参数、数据配置。 3.3.2 常用操作 图 6 配置文件常用操作 1. 新建:用于创建一个新的工程配置文件,首次使用可以不用新建配 置, MThings 退出前将提示配置存储。 2. 导入:通过导入功能切换工程配置文件。 3. 另存为:通过另存为操作导出复制当前工程配置,同时当前工程配置 文件切换到新路径。 4. 保存:及时存盘工程配置文件。 当打开多个 MThings 软件并指向同一份配置文件时 ,配置数据将会被重复 覆盖 ,最终的配置文件内容与最近一次保存操作的内容一致。 禁止将配置文件放在软件包路径内 ,避免软件升级时被误删除! 3.4 通道管理 设备 数据配置 高级参数 设备类型 设备地址 MThings 软件支持以串口、TCP 链接、 UDP 单播的方式与目标机建立通 信, 这三种通信方式统称为通道。 通道是设备的关键属性, 通道确定设备通信方式,是创建设备的前提。 图 7 通道与设备的逻辑关系 设备 数据配置 设备类型 高级参数 设备地址 通道 传输模式 通道类型 3.4.1 串口通道 图 8 串口通道操作 通过辅助菜单中的“通道”进入通道管理页面,查看当前 PC 中实际存在的 串口列表。 MThings 启动后,自动更新一次串口列表。如上图所示,串口相关 操作如下: 1. 选择过滤通道列表中所包含的链接类型 ,界面默认为全部类型 ,切换 为“串口通道”后, 列表中仅保留串口通道。 2. 当软件开启后 ,插入 USB 转 RS485 模块 ,单击“刷新”,可将新串口 添加至列表中,如未出现新串口,请检查模块驱动。当链接列表中出 现无效串口(串口不存在且无挂靠设备)时, 单击“刷新”,可将将这 些串口从数据配置中移除。 3. 如需修改串口详细参数 ,单击“配置”按钮进入“串口参数配置”页 面。 4. 查看通道状态 ,通道状态含义如下:已关闭、已连接、故障。 5. 手动打开或关闭串口。添加设备时,无需手动开启。手动模式可用于 批量控制链接上挂靠的所有设备 ,使其启动或停止。 6. 串口参数配置页面。 表 3 串口通道状态定义 通道状态 含义 已关闭 软件未启用该串口或被手动关闭 已连接 软件成功打开并初始化串口 故障 软件打开串口失败,原因可能是串口被其它软件占用或设 置的串口参数不合法 表 4 串口链接参数定义 参数 含义 通道名称 操作系统分配信息, 不可修改 传输模式 用于指定当前串口上运行的传输协议类型,可选择 “ MODBUS-RTU”或“MODBUS-ASCII” 字符类型 当传输模式选择“MODBUS-ASCII”时, 通过该参数指定协议 字符使用大写或小写,默认为标准协议要求的大写方式 波特率 支持 1200、2400、4800、9600、19200、38400、57600、 115200bps ,如设置为其它数值将导致串口打开失败 校验方式 指定串口字节中数据校验方式 数据位 指定串口字节数据中数据位个数。如 MODBUS-ASCII 协议中 要求数据位为 7Bit 时,请修改该参数 停止位 指定串口字节中停止位长度 流控类型 默认无流控 ,根据实际应用按需修改 如使用虚拟串口 ,主从设备软件应使用配对的串口 3.4.2 网络通道 图 9 网络通道操作 通过辅助菜单中的“通道”进入通道管理页面,可查看网络通道列表。首次 使用时,无网络通道,需用户根据需要创建。如上图所示,网络相关操作如 下: 1. 选择过滤通道列表中所包含的通道类型 ,界面默认为全部类型 ,切换 为“网络通道”后, 列表中仅保留网络通道。 2. 单击“新增网络链接”按钮,创建一路新网络通道。 3. 单击“移除网络链接”,删除通道列表中已被勾选的网络通道,该操作 将同步至工程配置文件。 4. 单击“配置”按钮, 修改网络通道参数。 5. 查看通道状态,网络通道状态包括:已关闭、已连接、连接中、故 障。 6. 手动建立通道或关闭通道。添加设备时,无需手动开启。手动模式可 用于批量控制通道上挂靠的所有设备 ,使其启动或停止。 7. 网络通道参数配置页面。 表 5 网络通道状态定义 通道状态 含义 已关闭 软件未启用该链接 链接被对端断开 链接被手动关闭 已连接 网络通道已成功建链 连接中 TCP 客户端:正在连接服务端 TCP 服务器:正在等待接入客户端 故障 TCP 服务端:本地端口被占用 UDP 单播: 本地端口被占用 表 6 网络通道参数定义 参数 含义 通道名称 MThings 统一分配,不可修改 链接模式 选择 MThings 在网络层的链接角色,可选择 TCP 客户端、 TCP 服务端、 UDP 单播 重新建链周 期(秒) 当链接模式选择为“TCP 客户端”,通过设置重新建链周期, 可指示 MThings 按照指定时间间隔重新建链,通过这种方式 可以模拟短链接。默认周期为 0,代表长链接。 链接空闲保 当链接模式选择为“TCP 客户端”或“TCP 服务端”时,链 持时间 接建立后,如果在参数指定时间内无任何数据交互, (秒) MThings 将主动关闭链接。 传输模式 用于指定当前链接上运行的传输协议类型,可选择 “ MODBUS-RTU”、“MODBUS-ASCII”、“MODBUS-TCP (同步)”、“MODBUS-TCP (异步)” 字符类型 当传输模式选择“MODBUS-ASCII”时, 通过该参数指定协 议字符使用大写或小写,默认为标准协议要求的大写方式。 当链接模式选择为“TCP 客户端”或“UDP 单播”,该参数用 户指定本地发起 IP,可不配置, MThings 可自动择优。 本地 IP 当链接模式选择为“TCP 服务端”或“UDP 单播”,需指定绑 定本地端口。 本地端口 当链接模式选择为“TCP 客户端”,该参数为只读数据,用于 呈现已连接状态下的本地发起端口号。 当链接模式选择为“TCP 客户端”,该参数用于指定服务端的 域名或 IP 地址。 目标域名/IP 当链接模式选择为“UDP 单播”,该参数用于指定数据发送对 象的 IP 地址。 当链接模式选择为“TCP 客户端”,该参数用于指定对端(服 务端)绑定端口号。 目标端口 当链接模式选择为“UDP 单播”,该参数用于指定数据发送对 象的接收端口号。 当链接模式选择为“TCP 服务端”,该参数用于指定允许接入 当前服务端的客户端 IP,其它 IP 地址发起的连接请求将被过 滤丢弃。 如不需过滤功能,该参数请设置为“ --”或清空。 客户端 IP 源端口 当链接模式选择为“TCP 服务端”,该参数为只读数据,用于 呈现已连接的客户端发起端口号。 当传输模式选择为“MODBUS-TCP (异步)”,该参数可控制 异步并发规模,调节并发请求个数 最大并发请 求数 图 10 TCP 客户端链接应用方法 TCP服务端 (192.168.0.20, 502) MThings 本机地址: 192.168.0.10 TCP客户端-1 目标IP: 192.168.0.20 目标端口: 502 TCP客户端-2 目标IP: 192.168.0.20 目标端口: 502 TCP客户端-3 目标IP: 192.168.0.30 目标端口: 502 TCP服务端 (192.168.0.30, 502) 图 11 TCP 服务端链接应用方法 本机: 192.168.0.20 TCP客户端- 1 目标地址: 192.168.0.10 目标端口: 502 TCP客户端-2 目标地址: 192.168.0.10 目标端口: 502 本机: 192.168.0.30 TCP客户端-2 目标地址: 192.168.0.10 目标端口: 503 MThings 本机地址: 192.168.0.10 TCP服务端-1 本地端口: 502 客户端IP: 192.168.0.20 TCP服务端-2 本地端口: 502 客户端IP: 192.168.0.20 TCP服务端-3 本地端口: 502 客户端IP: 192.168.0.30 TCP服务端-4 本地端口: 503 客户端IP: 192.168.0.20 TCP客户端-1 目标地址: 192.168.0.10 目标端口: 502 图 12 UDP 单播链接应用方法 本机: 192.168.0.20 UDP单播 -1 本地端口: 502 目标IP: 192.168.0.10 目标端口: 502 本机: 192.168.0.30 UDP单播 - 1 本地端口: 502 目标IP: 192.168.0.10 目标端口: 503 MThings 本机地址: 192.168.0.10 UDP单播 -1 本地端口:502 目标IP: 192.168.0.20 目标端口:502 UDP单播 -2 本地端口:503 目标IP: 192.168.0.30 目标端口:502 3.5 系统参数 系统参数页面提供 MThings 软件全局控制参数, 用户可运行时修改并及时 生效,参数值将保存在本地。 图 13 系统参数页面 表 7 系统参数定义 参数 含义 自启动 功能开关,用于控制 MThings 是否随操作系统自 启动,默认关闭。 历史数据存储间隔 (秒) 历史数据功能辅助参数,用于控制历史刷新存储间 隔时间。 历史数据抬头 历史数据功能辅助参数,用户配置该参数后,抬头 信息将随历史数据报表一同打印输出。 数据页面刷新 功能开关, 为了避免 CPU 算力资源浪费, 当用户 启用“系统”页面进行数据阅览后,可通过该开 关,关闭所有设备“数据”页面的数据更新,但其 并不影响数据的接收、解析、存储。 运行模式 支持桌面或者 PAD 模式,让软件在不同的终端运 行具备更好的展示效果。 3.6 用户管理 用户管理页面提供两种用户类型: 管理员、终端用户 。管理员可以执行 MThings 所提供的所有功能, 终端用户仅允许操作部分功能, 不显示调测功能, 禁止其修改设备数据、告警、系统配置等。 表 8 用户权限分配 页面 管理员 终端用户 系统页面 ✔ ✔ 历史数据页面 ✔ ✔ 告警数据页面 ✔ ✔ 数据页面 ✔ ✔ 自定义页面 ✔ ✘ 统计页面 ✔ ✘ 辅助页面 ✔ ✘ 关于页面 ✔ ✔ 管理员默认为无密码。MThings 首次使用, 默认为无密码管理员,支持管理 员修改自身密码。一旦管理员设置了非空密码, MThings 重启后以终端用户登录。 用户需自行输入管理员密码切换为管理员用户。 图 14 用户管理 3.7 授权管理 针对 MThings 中的商用(付费)功能, 用户需要获得授权后方能使用。用户 购买授权前,需进入授权管理页面生成机器识别码。获得授权证书后,进入授权 管理页面导入授权证书,激活商用功能。 授权证书仅限一台运行 PC 使用,如需扩展多台 PC ,应提前购买多份。 图 15 授权管理 1. 单击后,自动生成唯一机器码, 可用于购买授权证书; 2. 单击后,跳转至授权证书付款页面; 3. 获得授权证书后,单击此按钮导入授权证书。 重装系统、磁盘更换等行为可能使得系统关键标识信息变化, 导致授权失效, 需重新购买授权。 系统关键标识信息无法正常获取的运行操作系统将无法生成机器码,进而无 法获得授权。 3.8 设备管理 设备是通信调试目标设备的本地镜像或服务对象,设备是进行一切 MThings 调试工作的基础。通过这种设备集成方法, MThings 才具备了多设 备、多协议、多通道的调试能力。 3.8.1 添加设备 图 16 添加设备示意 1. 添加设备入口; 2. 选择添加设备所在的通道; 3. 选择添加设备的设备类型; 4. 选择添加设备的地址; 5. 点击“添加”后所配置的设备呈现在【06】。 设备(节点)地址范围为 0~255,起始地址应小于等于结束地址。通过设 置起始地址和结束地址,支持一次添加多个设备,如起始地址等于结束地址代 表仅添加一台设备。 如待添加的设备地址分散在多个区间 ,可以多次点击添加。 6. 单击“添加”按钮。 7. 新增设备将出现在设备列表中。 如新增设备地址在设备列表中已存在,不会重复创建。 如链接中已存在模拟主机 ,不允许再添加模拟从机 ,反之亦然。 3.8.2 移除设备 图 17 移除设备示意 1. 勾选需要移除的设备。 2. 单击“移除”按钮。 移除设备将删除设备下的所有数据配置信息, 请谨慎操作! 如设备被误移除, 请重新加载工程配置,切记不要保存当前配置。 3.8.3 设备信息查看 图 18 设备信息查看示意 1. 单击“>>”按钮,设备列表自动扩展页面,显示设备关键信息:设 备类型、 设备 ID、所属通道、设备地址。 表 9 设备名称状态含义 设备名称状态 含义 蓝色背景 [M]COM1-001 当前设备被激活 字体红色 [M]COM1-001 设备停止运行,所属链接断开或设 备被禁用 以上状态可重叠出现。 图 19 设备状态标识含义解释 厂厂 添加设备后 ,MThings 分配默认名称 ,其格式说明如下: 图 20 默认设备名称格式含义 [M]COM1-001 [设备类型]: 链接名称 设备地址 M:模拟主机 S:模拟从机 3.8.4 设备禁用 如需设备临时停止工作 ,可禁用设备,指示设备停止所有业务和通信。设 备禁用操作常用于暂停模拟从机,可模拟设备掉线。 图 21 设备禁用示意 1. 勾选需要禁用的设备,双击表头“序号”,可全选。 2. 单击“禁止”按钮。设备禁用成功后,设备名称字体颜色变为红色。 设备禁用操作仅用作临时措施 ,如设备禁用期间 ,其所属链接出现断链并重 新恢复 ,设备将自动恢复。 3.8.5 设备恢复 图 22 设备恢复操作示意 1. 勾选需要恢复的设备,双击表头“序号”,可全选。 2. 单击“恢复”按钮。设备恢复成功后,设备名称字体颜色恢复为黑 色。 如需恢复的设备所属链接已关闭 ,单击“恢复”后, 设备名称维持为红色, 其所属链接状态恢复为“已连接”后,设备也将自动恢复。 3.8.6 设备属性修改 针对已创建的设备 ,支持修改设备关键属性 ,包括:设备名称、所属链 接、设备地址。 通过修改设备名称 ,用户可根据自定义需求命名更佳的标记。 通过修改所属链接、设备地址 ,用户可快速适配调试环境的变化。用户可 提前在本地的任意链接上进行设备添加、数据配置和调试,现场调试时,则可 快速切换为实际工作链接。 图 23 设备属性修改示意 1. 双击需要修改的设备行。 2. 弹出“变更设备关键信息”页面,可在数值列修改设备关键属性信 息。 3. 如需将变更后的所属链接信息同步至其它设备 ,单击“同步链接至其 它设备”按钮,选择需要复制新链接信息的设备,软件将自动修改指 定设备的所属链接。 所属链接和设备地址变更后,如设备名称依旧为软件分配的默认名称,软 件将自动替换默认名称中的链接和地址字段,无需手动修改设备名称。 例如,设备原名称为:[M]COM1-001,如所属链接修改为 COM2 ,地址 修改为 2,设备属性修改完成后,设备名称将自动变更为[M]COM2-002。 设备名称不允许为空,同时要保证全局唯一,否则将提示修改失败。 设置的新所属链接如已有其他设备类型,将提示修改失败。 设置的新设备地址如在所属链接上已存在,将提示修改失败。 已添加设备不支持修改设备类型。 如在添加设备时,类型选择错误,同时已经完成大量数据配置, 建议先导出 设备下的数据模板, 删除错误设备,重新添加正确类型的设备, 并导入数据 模板。 3.9 设备数据配置 设备数据配置就是将 MODBUS 数据协议定义转换为 MThings 配置。完 成设备数据配置后, 无需手动组包和数据换算,通过简单的按钮操作即可以快 速发起轮询、批量读写、单个读写。 MThings 支持直观可视化展示协议数据信 息,可快速提升调测效率。 设备数据配置前,请于左侧设备列表确认是否选择了正确的待配置设备。 3.9.1 新增数据配置 方法一: 图 24 新增数据配置示意 1. 单击“数据”菜单。 2. 单击设备名称 ,选择需要数据配置的设备。 3. 单击“新增”按钮。 4. 弹出“新增数据配置”页面,默认每次新增一条数据,起始数据地址 为当前配置中最后一行数据地址+数据量。用户可修改新增的配置条 数、区块和起始数据地址。 该方法新增的数据将直接添加至表尾。 方法二: 可通过拖拽表格中任一已有数据配置的“ 区块”单元格触发新增 ,拖拽的 起始行 ,即为模板行,新配置将插入至拖拽结束位置。 3.9.2 删除数据配置 图 25 删除数据配置示意 1. 单击 ID 列, 选中需要删除的数据配置,双击表头“ID”可全选或取 消全选。 2. 单击“删除”按钮。 删除数据并单击“保存”配置文件后,将丢失这些数据配置信息,请谨慎操 作! 3.9.3 编辑配置项 表 10 配置项操作说明 配置项 用途&配置方法 ID 不可编辑 ,软件按序分配。 名称 数据名称 ,可任意定义 ,不可为空。 数值 不可编辑 ,操作态中 ,双击可触发单次读写操作。 指令 双击后开始编辑,输入待下发的写指令数据,如无背景色,代 表数据不支持下发写指令。 写 操作态时, 双击触发写指令下发。 单位 数据单位 ,可任意定义。 范围 数据值范围 ,用于辅助调试 ,可任意定义 ,不参与校验过程。 区块 双击单元格后选择修改数据区块类型 ,区块定义参考 MODBUS 标准协议 ,修改区块后 ,可能导致其他字段强制修 改。 地址 当前数据项的起始地址 ,无需前导数。 范围:0~65535。 注:结合高级参数中的地址偏移,该地址为协议(界面)地 址,而非传输地址, 如地址偏移为-1 ,则该地址最小值必须大 于 0,否则地址不合法。 数量 当前数据项连续占用的数据地址个数。 如数据项为寄存器数据,单位为字(2 字节)。 如数据项为 BIT 数据,数量强制为 1,不可修改。 不得小于 1。 如数据项为保持寄存器,不得大于 123。 如数据项为输入寄存器 ,不得大于 125。 用于寄存器数据,如数据项仅占用寄存器其中的部分位,该项 配置则用于指定占用位的起始偏移。如数据不涉及寄存器部分 位,该项配置使用默认值即可。 注:位偏移基于已完成的字节序/字序转换数据, 由数据低位 开始 ,最低位为 0。 位偏移 用于寄存器数据,如数据项仅占用寄存器其中的部分位,该项 配置用于指定占用的总位数。如数据不涉及寄存器部分位,该 项配置使用默认值即可。 寄存器的位数默认值 = 数据数量 * 16。 位数 BIT 数据的位数固定为 1。 位数可配置范围 1~64Bit。 用于寄存器数据 ,如传输类型为整形 ,呈现类型为浮点型时, 则:呈现数据 = 协议整形数据 * 系数 + 偏移。 系数 其它类型组合时,系数固定为 1。 系数推荐设置范围:±(0.000001~1)。 偏移 用于寄存器数据 ,如传输类型为整形 ,呈现类型为浮点型时, 则:呈现数据 = 协议整形数据 * 系数 + 偏移。 模拟主机支持该配置项。勾选后 ,该项数据参与批量读,否则 发起批量读请求时, 忽略该数据项。 批量读 模拟主机支持该配置项。勾选后 ,该项数据参与批量写,否则 发起批量写请求时, 忽略该数据项。线圈状态和保持寄存器数 据可勾选,不支持只读数据。 批量写 勾选后 ,数据项添加至曲线监控页面 ,以曲线形式持续记录数 值。 数据的呈现类型为字节流(BYTES)、字符串(STRING)、纪 元秒(TIME)时 ,不支持添加为曲线。 曲线 存储 勾选后,当前数据值将周期存储,可以在历史数据中查看。 注: MThings 重启后生效。 传输类型 双击单元格后选择修改 MODBUS 数据协议中定义的数据类 型,请确认并与协议保持一致。详细说明请参考数据章节。 呈现类型 双击单元格后选择修改软件界面呈现的数据类型,可实现更友 好的数据可视化,与传输类型存在约束关联,详细说明请参考 数据章节。 小数位数 如呈现类型位浮点数,该参数生效,否则强制为 0。 用于控制数值的小数点个数,可设置范围 0~9。 字节序 用于寄存器数据 ,如数据数量为 1、2、4 时,需要指定字节 序。请参考 MODBUS 数据协议要求,如无特殊要求,选择大 端。 其它数据长度时 ,字节序默认为大端。 字序 用于寄存器数据 ,如数据数量为 2、4 时,需要指定字序。请 参考 MODBUS 数据协议要求, 如无特殊要求,选择大端。 其它数据长度时 ,字序默认为大端。 间隔时间 用于控制读写请求之间的间隔时间。 模拟主机模式下,该时间生效于收到响应(超时)之后。 模拟从机模式下 ,该时间生效于请求与响应之间。 如数据项与其它数据项合并为一个请求/响应,间隔时间取其 中最大值。 注:当模拟主机处于 MODBUS-TCP 异步传输模式 ,该参数 不生效。 超时时间 用于模拟主机 ,指示数据读写请求的最大允许响应延时 ,超过 该时间则判为超时 ,继续下一个请求。 如数据项与其它数据项合并为一个请求,超时时间取其中的最 大值。 重发次数 用于模拟主机,指示当数据读写请求超时后,是否需要重发及 其重发次数。默认设置为 0 时, 代表不重发。 图 26 模拟主机的超时时间和间隔时间示意 图 27 模拟从机的间隔时间示意 图 28 位偏移&位数示例 最高位(Bit:63) 最低位(Bit:0) 4 Reg (8 Bytes) 1 Reg 300001 300002 300003 300004 位偏移:11 位数:13 数据配置项中如果勾选过多曲线,同时被勾选数据存在长时间高频刷新,势 必导致电脑内存持续增加,建议谨慎关联过多数据曲线。 3.9.4 批量编辑配置 如需快速编辑数据配置的“名称”、“单位”、“地址”、“数量”、“位偏移”、 “位数”、“系数”、“偏移”、“范围”,MThings 支持用户拷贝多行 Excel 数据, 并粘贴至数据配置表指定位置。 图 29 批量填充配置示例 3.9.5 标记数据背景色 图 30 标记数据背景色示意 1. 长按需要标记背景色的数据“名称”单元格,将会弹出“设置数据名 称背景色”页面。 2. 单击“选择颜色”按钮,选择自定义背景色。 3. 单击“重置颜色”按钮,可将背景还原为初始颜色。 4. 单击“同步至其它数据”按钮, 可将选择的背景色复制给其它数据 行。 3.9.6 手动数据排序 可通过拖拽数据的“地址”单元格,将数据配置行更换位置。 支持向下或向上任意位置拖拽。 数据配置行将添加至拖拽停止行的上一行。 如需拖拽至尾行 ,应将配置行拖拽至表格空白处。 3.9.7 一键数据排序 图 31 一键数据排序示意 1. 双击“排序”按钮, 即完成一键排序功能。 一键排序规则: 排序数据区块,依次为:线圈状态、离散输入、 保持寄存器、输入寄 存器。 相同数据区块内,以“数据起始地址”为参考按由小及大排序。 数据起始地址相同时,以“位偏移”为参考由小及大排序。 位偏移相同时,以“位数”为参考由小及大排序。 3.9.8 高级参数设置 软件提供设备高级参数配置,用于控制设备读写相关的公共功能。 图 32 设备高级参数设置示意 1. 点击 “高级参数配置”图标进入页面。 2. “高级参数配置”页面中修改相应参数。 3. 单击“同步至其它设备”,可将当前设备的所有高级参数拷贝至被选 择的设备。 4. 单击“确定”按钮, 完成并保存高级参数。 表 11 设备数据页面状态定义 参数 用途&配置方法 地址偏移 报文数据地址 = 协议 (界面)数据地址+地址偏移。 默认为 0 ,修改时 ,请仔细确认协议要求。 用于指定数据地址显示格式 ,可选择“十进制”或“十 六进制”。当选择“十六进制”时,地址格式为 地址显示模式 XXXXH ,编辑十六进制地址时 ,可不携带后缀 H ,软件 将自动补齐。 为适配非标协议 ,通过该参数可指定 RTU 报文中 CRC 字节序 ,默认“小端”。 CRC 字节序 (RTU 模式生 效) 线圈/离散量位序 为适配非标协议 ,通过该参数可指定线圈/离散量读写过 程中连续位的打包方式 ,默认“高位在左”。 仅用于模拟主机,该参数指示设备在进行批量读写请求 时对多个相邻地址的数据如何组包。 默认为“逐条”,即每行数据的读写单独一条请求。 “按地址大小排序”即为自动组包,并按寄存器地址由 小及大进行连续地址组包。 “按列表顺序排序”即为自动组包,并按界面表格中的 顺序进行连续地址组包。 读数据组包方式 BIT 数据最大允许 间隔 仅用于模拟主机,该参数指示在进行读 BIT 数据请求组 包时,允许的最大地址间隔。 BIT 数据批量写时 ,不允许存在任何地址间隔。 仅用于模拟主机,该参数指示在进行读寄存器数据请求 组包时,允许的最大地址间隔。 REG 数据批量写时 ,不允许存在任何地址间隔。 REG 数据最大允 许间隔 单寄存器写功能 仅用于模拟主机 ,适配非标设备的特殊要求。 默认按照标准要求使用 0X06 功能码请求单个保持寄存 器的写请求。 单线圈写功能码 仅用于模拟主机 ,适配非标设备的特殊要求。 默认按照标准要求使用 0X05 功能码请求单个线圈状态 的写请求。 广播设备 仅用于模拟主机,用于指示当前设备是否为广播设备, 如选择是,该设备下发的所有请求将不等待响应报文。 注:仅适用于所属链接是串口的模拟主机。 广播地址-1 仅用于模拟从机,用于指示广播地址,默认为 0。 注:当模拟从机的传输模式是 MODBUS-TCP (同步或 异步),广播地址代表所有从机都需要处理该地址请求, 但不需要回复(由广播地址设备回复)。 注:如 MODBUS-TCP 传输模式下需要使用 0 地址,且 不涉及广播需求,建议将参数修改为其它地址。 广播地址-2 同上 启动后立即批量 读 仅用于模拟主机,用于指示当设备链接建立或设备恢复 运行后,是否启动一次或循环批量读操作 启动后立即批量 写 仅用于模拟主机,用于指示当设备链接建立或设备恢复 运行后,是否启动一次或循环批量写操作 设备高级参数可以同步拷贝至其它设备。 3.9.9 拷贝数据配置 当多个设备遵循相同 MODBUS 数据协议时 ,如已完成其中一台设备的数 据配置 ,可通过拷贝操作将当前设备数据配置完整的拷贝给其它选定设备。 图 33 拷贝数据配置示意 1. 单击“将配置复制给其它设备”图标按钮,进入“选择设备”页面。 2. 如设备较多,可单击“类型筛选”按钮,挑选模拟主机或模拟从机。 3. 如设备较多 ,可单击“链接筛选”按钮,筛选部分链接下的设备。 4. 选择需要拷贝数据配置的设备。 模拟主机和模拟从机之间可以相互拷贝数据配置。 拷贝数据配置将覆盖目标设备的已有配置 ,请谨慎操作! 3.9.10 制作并导出数据模板 MODBUS 中的数据配置工作量巨大,为了便于将数据配置进行传递和共 享, MThings 支持导出数据模板功能, 将其独立于具体的调试环境、链接、设 备等差异化因素。被共享者可通过数据模板快速搭建起自己的调试环境,不需 要再次重新配置数据。 图 34 制作并导出数据模板示意 1. 单击“导出”按钮, 进入“导出设备数据配置”页面。 2. 填写数据模板所必要的附加信息。 图 35 导出的数据模板文件示意 3.9.11 导入数据模板 图 36 导入数据模板示意 1. 单击“导入”按钮, 进入“选择设备配置模板文件”页面。 2. 选择数据模板文件。 模拟主机和模拟从机之间可以相互导入另一方的数据模板,但是建议操作之 前谨慎确认两种设备类型的数据配置之间的差异。 3.10 模拟主机设备数据操作 3.10.1 单次读数据 图 37 单次读数据操作示意 1. 双击需要读取数据行的“数值”单元格。 2. 双击“数值”表头, 可实现单次批量读所有行数据。 当设备由于被禁用或链接已关闭 ,将无法成功启动单次读。 单次操作并非仅面向单寄存器 ,如数据由多个连续寄存器组成 ,也支持单次 操作。 3.10.2 批量读(轮询) 数据 图 38 批量读数据操作示意 1. 确认需要批量读数据的勾选范围。 2. 设备列表中勾选所需进行批量读的设备。 3. 点击“启动轮询”按钮即开启轮询,再次点击按钮取消轮询。 如希望设备启动后立即开始批量读,可修改设备高级参数中的“启动后立即 批量读”。 如需改变批量读的数据范围,重新勾选“批量读”的数据组合。 当设备由于被禁用或链接已关闭 ,将无法成功启动批量读。 设备“批量读”相关的参数变化后,需要重启轮询方可生效。 3.10.3 单次写数据 图 39 单次写数据操作示意 1. 双击触发编辑“指令”单元格, 输入下发数据的目标值。 2. 双击写按钮 ,立刻下发写数据指令。 如数值修改是为批量写数据而准备 ,可忽略步骤 2。 仅线圈状态和保持寄存器支持该操作。 当设备由于被禁用或链接已关闭 ,将无法成功启动单次写。 单次操作并非指单寄存器 ,如数据由多个连续寄存器组成 ,同样支持单次操 作。 3.10.4 批量写数据 图 40 批量写操作示意 1. 确认需要批量写数据的勾选范围。 2. 设备列表中勾选所需进行批量写的设备。 3. 点击“启动轮写”按钮即开启轮询,再次点击按钮取消轮写。 仅线圈状态和保持寄存器支持该操作。 如希望设备启动立即开始批量写,可修改设备高级参数中的“启动后立即批 量写”。 当设备由于被禁用或链接已关闭 ,将无法成功启动批量写。 设备“批量写”相关参数变化后,需重启“批量写”方可生效。 3.10.5 查看数据曲线 如数据配置项中勾选了曲线,且数据已进行读操作并持续一段时间,可以 进入“数据曲线展示器”中查看数据数值的变化的情况。 图 41 查看数据曲线示意 1. 确认数据曲线的勾选范围。 2. 单击“曲线”按钮, 打开“数据曲线展示器”。 3. 查看数据曲线。 3.10.6 解析报文 为了便于分析读数据的响应报文和写数据的请求报文 ,MThings 支持基于 现有设备数据配置, 将原始报文中的 BIT、寄存器数据映射到数据表中, 省去用 户逐字节分析计算工作,可以直观查看传输数据内容。 图 42 解析报文操作示意 1. 单击“解析报文”按钮,打开解析报文输入页面。 2. 如原始报文为读数据响应报文 ,需输入起始数据地址 (报文传输地 址,以请求帧内容为准), 否则可不输入。 3. 输入原始报文 PDU ,去除原报文中的头部分 ,从功能码开始。 4. 单击“提交”按钮。 5. 查看解析后的数据。 图 43 PDU 定义 3.10.7 数据查找 当数据配置行数较多 ,用户需要快速定位某个数据行时 ,可通过搜索数据 名称 ,将表格快速滚动到指定位置。 图 44 数据查找操作示意 1. 输入待查找数据名称中的部分关键字 (区分大小写)。 2. 单击搜索按钮。 3. 如有匹配项 ,表格将自动滚动到相应位置 ,数据名称字体标红。 由于每行信息较多,信息查看时需要横向拖动滚动条 ,为了方便信息查看, 可加高数据行 ,操作如下: 图 45 加宽行高操作示意 1. 单击“名称”列单元格,当前行加高。 2. 单击“ID”列单元格,取消当前行高。 如存在多个匹配项 ,用户可多次单击搜索按钮 ,查找功能将持续遍历表格其 它行 ,并标识出匹配项目。 搜索范围仅包含“名称”列。 3.10.8 数据筛选 数据页面提供了多种信息筛选方法 ,便于用户更快更好的聚焦关键信息。 图 46 数据筛选示意图 1. 单击“筛选区块”按钮,可隐藏/显示指定的数据块类型。 2. 单击“筛选行”按钮,可隐藏/显示指定的表格行。 3. 单击“筛选列”按钮,可隐藏/显示指定的表格列。 筛选区块操作仅为临时操作 ,重启软件后 ,所有区块将重新显示。 筛选行和筛选列操作将存储配置文件 ,重启软件后将保持上一次选择的显示 /隐藏状态。 3.11 模拟从机设备数据操作 模拟从机设备数据的回复过程不需要手动触发 ,当接收到主机请求后 ,软 件自动组包回复。模拟从机也支持数据曲线、解析报文,操作方法参考上一章 节。 图 47 预置模拟数据方法示意 1. 双击需要模拟数据的“数值”单元格,打开“选择模拟数据方法”页 面。 2. 配置模拟数据方法前 ,参考不同的曲线说明。 3. 配置模拟数据方法完成后 ,参考示例曲线。 4. 单击“应用”生效模拟数据方法。 可将一行“数值”单元格拖拽至另一行“数值”单元格处,实现模拟数据配 置快速拷贝。 表 12 模拟数据方法参数定义 参数 用途&配置方法 策略 定义模拟方法 ,默认为固定值 刷新间隔时间(ms) 数值更新的间隔时间 ,间隔时间内 ,数值维持不 变。 时间轴起点 定义曲线时间轴的原点位置。 随机区间上下限 基于已有的曲线数值 ,当定义有效随机区间后 ,叠 加范围内的随机数。如上下限相同,代表无随机。 极大值/极小值 基于已有的曲线数值 ,当定义有效极值范围 ,曲线 数值将被约束在此范围 ,一般可用于曲线削峰填 谷。如极大值极小值相同,代表关闭该功能。 表 13 从机寄存器数据策略配置 策略 用途&配置方法 固定值/直线/抛物线 参考软件界面中说明 /正弦曲线/方波 预置数据 每条数据之间通过换行符作为间隔; 支持从 excel 中整列数据拷贝至数据窗口; 当刷新间隔设置为 0 时, 按行循环回复主机 的请求; 当软件重启或者重新开启轮读时,数据回复 也会重置。 关联模式 关联其他模拟主机的任意数据, 用于整合关键信息 转发至北向设备。 3.12 数据曲线展示器 数据曲线展示器是多数据曲线的容器 ,服务于多个重要功能区。一条曲线 即为一个图例,展示器提供图例自定义、数据统计、导出功能。 3.12.1 曲线查看 图 48 曲线查看示意 曲线视图中包含数据曲线(图例)列表、图例显示区。左侧图例列表中包 含处于显示状态的图例 ,背景色与曲线颜色一致。图例显示可同时显示多个图 例。不同图例默认关联于左 Y 轴 ,也可通过配置将部分图例关联至右 Y 轴。 查看操作方法如下: 1. 用户可在图例显示区任意位置 ,长按鼠标左键 ,任意方向拖动图例显 示区域。 2. 用户可在图例显示区任意位置,通过鼠标滚轮控制图例显示区域放大 或缩小。 3. 用户可双击图例显示区任意位置 ,重置显示区域范围为初始状态。 4. 用户可单击曲线中任意位置,显示曲线中数据点的详细信息。 3.12.2 维护图例 图 49 维护图例示意 1. 单击“维护图例”按钮,打开图例编辑页面。 2. 单击勾选可控制曲线图例是否显示。 3. 双击可修改曲线图例的当前颜色。 4. 双击编辑可修改曲线图例的线宽。 5. 单击勾选可将图例关联至右 Y 轴。 6. 不可编辑 ,曲线数据统计结果 ,显示为最大值。 7. 不可编辑 ,曲线数据统计结果 ,显示为最小值。 8. 不可编辑 ,曲线数据统计结果 ,显示为平均值。 3.12.3 坐标轴管理 数据曲线展示器支持多种模式查看数据曲线,包括:普通模式、固定模式、 示波器模式。 普通模式中, 时间轴长度固定,结束时间固定为当前时间,开始时间根据“最 大持续时间”参数自动向前倒推; 固定模式中,时间轴范围由用户指定后保持不变; 示波器模式中,时间轴长度由用户指定,结束时间固定为当前时间。 图 50 坐标轴参数 表 14 坐标轴参数定义 参数 用途&配置方法 更新间隔(ms) 控制曲线展示器数据刷新间隔时间。 时间轴模式 切换时间轴展示模式。 最大持续时间(小时) 控制曲线中所有数据最长保留时间,超过该时间 后,曲线数据将被自动移除。 窗口时长(秒) 时间轴“示波器”模式下生效, 指定时间轴可显示 的长度,该值应小于“最大持续时间”参数。 左 Y 轴自适应 控制左 Y 轴是否伴随曲线数据范围自动调整。 右 Y 轴自适应 控制右 Y 轴是否伴随曲线数据范围自动调整。 左 Y 轴警戒线 1 开关 左 Y 轴警戒值 1 按照设置值虚线显示在曲线展示器上 左 Y 轴警戒线 2 开关 左 Y 轴警戒值 2 按照设置值虚线显示在曲线展示器上 右 Y 轴警戒线 1 开关 右 Y 轴警戒值 1 按照设置值虚线显示在曲线展示器上 右 Y 轴警戒线 2 开关 右 Y 轴警戒值 2 按照设置值虚线显示在曲线展示器上 3.12.4 数据导出 图 51 数据导出示意 1. 单击“导出”按钮, 选择导出数据存储路径后即可完成。 数据导出文件包含所有曲线数据 ,文件格式为 csv ,可直接使用 EXCEL 打 开。 3.12.5 筛选设备 如数据曲线过多 ,为方便查看相同设备下的所有数据曲线 ,可通过筛选设 备功能 ,隐藏暂时不需要查看的数据曲线 (图例)。 图 52 筛选设备示意 1. 单击“筛选”按钮, 打开设备筛选页面。 2. 选择需要呈现的其数据曲线的设备。 3.13 通道报文管理 通道报文作为重要调试信息 ,MThings 提供完整且友好的方法进行报文管 理。 3.13.1 查看通道报文 图 53 查看通道报文示意 1. 软件默认不开启报文浏览窗口 ,需勾选“报文”,则报文窗口将嵌入 软件窗口的下方。 2. 查阅报文窗口。 3. 单击“停靠”按钮, 报文页面将弹出作为独立窗口。一般可用于电脑 多屏场景,调试操作和报文浏览互不影响。 表 15 报文颜色定义 颜色 含义 蓝色 正常发送报文 绿色 正常接收报文 红色 异常报文 紫色 链接状态事件 为便于用户识别,如接收到 MODBUS-TCP 报文 ,报文显示时将 MBAP 中发送序号、协议类型、数据长度共 6 字节作为首部放入一对“[ ]”中。 3.13.2 通道报文控制 图 54 通道报文控制示意 1. 软件默认启动即接收所有链接报文 ,勾选“接收”后,可开始或关闭 报文接收。 2. 报文接收开启后 ,软件默认开启“定时清空”功能, 报文窗口中每满 2000 条记录将自动清空窗口, 防止高速报文占用过多电脑内存。勾 选“定时清空”可开启或关闭定时清空功能。 3. 基于可视化 ,软件针对 MODBUS-ASCII、MODBUS-TCP 进行部分 加工转换 ,如调试过程中需要 ,可勾选“原始字节流”查看原始二进 制字节流报文。 4. 报文接收后默认不存盘 ,如需存储 ,可勾选“存储”,软件立即开始 创建报文文件,并开始数据存盘(周期 10 秒更新)。 5. 报文存储默认路径是当前用户桌面 ,如需修改 ,单击“存储路径”按 钮,选择新的报文文件路径。 6. 单击“立即清空”按钮,可清空报文窗口中所有报文。 7. 单击“筛选链接”按钮,指定部分链接,可将暂不关心的链接报文过 滤。 筛选链接后,被过滤的报文将不会存盘。 定时清空或手动清空不会影响存盘数据。 3.13.3 串口抓包 如需进行串口抓包, 在目标串口链接中创建任意一个模拟主机设备即可, 无需设备数据配置, 进入链接报文窗口即可查看被监听串口收到的所有数据。 不推荐使用 MThings 进行串口抓包,建议选择通用串口工具。 3.14 系统数据 系统数据页面提供组态功能,支持用户基于已有的设备数据进行灵活而直观 的数据展示和操作 ,该功能需获得授权后使用。 图 55 系统数据页面示意 3.14.1 进入组态编辑 图 56 进入组态编辑示意 3.14.2 退出组态编辑 再次双击系统数据画布眉头,退出组态编辑。 3.14.3 页面总体参数 进入组态编辑后,将自动弹出“页面参数设置”对话框,用户可修改页面总 体参数。 表 16 页面总体参数定义 参数 用途&配置方法 标题 控制画布眉头居中位置显示标题内容。 背景色 如画布无底图,可双击该参数, 填充统一的背景色。 画布宽度 控制画布的显示区域宽度,数值与分辨率单位相同。 画布高度 控制画布的显示区域高度,数值与分辨率单位相同。 画布底图 设置一张用户自定义的大底图, 双击参数区域后,选择底 图路径, 图片应为.png 图片格式。 建议底图分辨率与画布宽度、高度一致。 3.14.4 添加图形控件 图 57 添加图形控件 图形控件的添加过程需完成 4 步配置: 第一步, 从左侧菜单栏中选择图形控件类型后, 拖入画布中; 第二步,设置“基本参数”,其中包括控件所属页面、位置、大小、数据更 新周期; 第三步,设置“扩展参数”,不同控件类型的扩展参数不同; 第四步,添加“内容数据”,即将该控件关联一个或多个设备数据,部分控 件无需关联设备数据。 3.14.5 修改图形控件 进入组态编辑后,已存在的图形控件点击后将出现蓝色线框,用户可通过 鼠标拖动的方式,快速修改图形控件的大小。 用户可通下图方式,快速调节图形的大小、位置、对齐方式等。 图 58 修改图形控件 1. 调整选中控件上对齐 2. 调整选中控件下对齐 3. 调整选中控件左对齐 4. 调整选中控件右对齐 5. 调整选中控件横向居中 6. 调整选中控件纵向居中 7. 调整选中控件横向分布 8. 调整选中控件纵向分布 9. 调整选中控件设置宽向相同 10. 调整选中控件设置窄向相同 11. 调整选中控件设置控件相同的高 度宽度 12. 将选中的控件图层置于顶层 13. 将选中的控件图层置于底层 14. 选择画布中的控件, 点击复制会 出现相同的控件 15. 选择画布中的控件进行删除 3.14.6 控件说明 名称 效果图 功能说明 数据标签 显示数据名称、数值、单位; 双击后,编辑数值并下发指令; 支持多种名称和数值布局方式。 静态文本 标注信息 显示静态文本信息; 可设置字体大小和颜色。 多行表格 展示多条不同设备的数据。 日间时期 展示本地时间。 页面标签 通过点击不同的页面标签可以切换不 同的界面信息展示。 滑块 以滑块方式快捷调整数值参数; 支持浮点指令; 可自定义控件背景和数值颜色。 设备状态 关联设备列表中设备进行通讯状态展 示。 开关 直观展示状态量; 用户可手动触发下发开关状态; 支持自定义状态值(非 0/1)。 分割线 辅助控件分类展示的分割线。 流动线 基于底图管道, 追加动态流向效果; 支持调整线条颜色、宽度; 支持多个折点; 支持关联设备数据触发流动或静止。 电量 展示剩余电量数据; 支持定义数据范围、刷新步长; 支持定义警戒值,自动匹配警戒色。 图形开关 直观展示状态量; 多种开关样式; 用户可手动触发下发开关状态; 支持自定义状态值(非 0/1)。 仪表盘 直观展示数值名称、数值、单位; 支持调整范围、显示精度、单位; 支持修改数值颜色。 速度仪 直观展示数值名称、数值、单位; 支持调整范围、单位; 支持修改数值颜色; LCD 码呈现整形数据。 进度盘 1 直观展示数据绝对值及其百分比; 支持调整实际数据范围。 进度盘 2 直观展示数据相对范围百分比; 支持调整实际数据范围。 指南针 直观展示角度数据(0~360); 支持浮点数据。 温度计 直观展示温度数据; 支持自定义范围; 支持负数温度; 支持浮点数; 支持修改刻度颜色。 底图 用于局部增加图片展示; 支持导入本地任意路径中的图片; 支持常用的图片文件格式。 实时曲线 同时展示最多 3 组数据的曲线; 支持修改展示时间范围; 最大可展示 24H 数据; 支持修改曲线、坐标轴颜色。 历史曲线 展示一条历史数据曲线; 支持修改展示时间范围; 最大可展示 180 天数据; 支持修改曲线、坐标轴颜色。 报警简表 窗口展示所有活动告警; 支持动态变化显示。 报警统计 展示活动告警关键统计数据; 自动关联告警功能。 3.15 历史数据 历史数据页面提供设备数据持久化存储、展示、打印、导出功能,支持按 日生成独立的数据文件,统计数据概要信息。该功能需获得授权后使用。 图 59 关联设备数据存储示意 历史数据的操作与设备数据强关联,用户需先行在“数据”页面中,将待 存储的数据项勾选“存储”。 为避免用户配置过程中的反复操作,历史数据存储配置后, 重启 MThings 方能生效。 避免频繁修改存储配置,建议数据配置调试稳定后再启用历史数据存储功 能。 历史数据相关配置的变化都需要重启软件! 图 60 历史数据功能示意 1. 刷新历史数据显示表,后台历史数据不会主动更新页面中的表格,如 长时间停留在当前页面,需要手动点击“刷新”按钮查看最新的历史 数据记录。 2. 切换历史数据刷新的日期, 为避免同时加载的数据过多,历史数据显 示表中每次仅加载一天内数据。 3. 筛选时间段,筛选结果将影响“数据概要”、“报表打印”、“数据导 出”的数据范围。 4. 筛选需要呈现的数据列。 5. 计算已加载的各项历史数据“最大值”、“最小值”、“平均值”。 6. 打印已加载的历史数据,用户可选择打印数据列、纸张类型等信息。 7. 导出已加载的历史数据,导出数据格式为 csv。 8. 显示历史数据抬头, 如系统参数中设置为空,则不显示。 9. 历史数据显示表翻页、跳转功能。 3.16 数据网关 数据网关功能提供协议转换和数据汇聚功能,可实现不同的通道类型、协 议类型、 设备地址、寄存器地址、数据块、数据类型、数据长度的双向转换。 该功能需获得授权后使用。 摩尔信使 MThings 支持两种模式实现数据网关功能,分别是: 透传模式和 缓存模式。 透传模式配置简单, 但相比全流程时延大,北向受制于南向。缓存模式利 用模拟主机自身的轮询功能, 直接响应北向请求,可将南北向设施解耦,北向 远程监控软件可实现更加高效的异步通信。 借助模拟从机数据中的“关联模式”,可实现将多个南向设备数据汇聚到一 个北向模拟从机中, 可以大幅减少北向远程监控软件的请求次数,提升轮询效 率。 该种模式下可以实现更加广泛的数据转换能力。 配置说明参考: 3.11 章 节。 两种模式下的数据流示意图如下: 图 61 透传模式数据流示意 图 62 缓存模式数据流示意 3.16.1 透传模式应用 摩尔信使 MThings 支持通过透传模式关联两个不同设备(模拟从机和模拟 主机),以实现通道、协议、设备地址转换功能。 准备工作: 1) MThings 中创建模拟主机,接入南向的串口设备; 2) MThings 中新建一路网络链接, 用于与北向软件连接; 3) MThings 中基于新增的网络链接,新增模拟从机; 图 63 透传模式的设备配置 1. 双击新建的从机设备。 2. 双击绑定模式后选择透传模式。 3. 双击绑定设备。 4. 选择绑定的设备。 经过设备关联和建链后,北向“远程监控软件”即可使用以太网通过 MThings 访问南向的串口设备。 透传模式下的从机可不配置设备数据。 3.16.2 缓存模式应用 摩尔信使 MThings 支持通过缓存模式关联两个不同设备(模拟从机和模拟 主机),以实现通道、协议、设备地址转换功能。 准备工作: 1) MThings 中创建模拟主机,接入南向的串口设备; 2) MThings 中新建一路网络链接, 用于与北向软件连接; 3) MThings 中基于新增的网络链接,新增模拟从机; 图 64 缓存模式配置及设备绑定 1. 双击从机设备。 2. 双击绑定模式。 3. 选择缓存模式并保存。 4. 绑定需要对外转发数据的设备。 缓存模式下的从机可不配置设备数据,但其关联的模拟主机应配置有效数 据,并发起轮询。 缓存模式下,若北向设备的请求数据多于南向设备的配置将自动补 0。 3.17 告警数据 告警数据页面提供设备告警生成、存储、配置、展示、导出功能、语音提 示,支持多条件、跨设备生成告警信息,参照标准:《IEC 62682:2014》、 《GB/T 41261-2022 过程工业报警系统管理》。该功能需获得授权后使用。 图 65 告警数据功能示意 1. 切换告警记录类型, 活动告警分为“需确认”、“无需确认”两类,需 确认的活动告警记录需已恢复且已被确认才会转换为历史告警。 2. 维护告警配置入口。 3. 一键清空所有告警记录。 4. 一键确认所有需确认的活动告警。 5. 导出所有告警记录, 数据格式为 csv。 6. 双击后,确认某一条活动告警记录。 7. 告警数据显示表翻页、跳转功能。 图 66 告警配置功能示意 1. 新增一条告警配置。 2. 移除选中的告警配置。 3. 编辑告警类型,用于分类不同的告警配置。 4. 告警配置记录表。 5. 告警条件配置对话框。 表 17 告警信息配置表参数定义 参数 用途&配置方法 名称 指定告警名称。 类型 根据预先配置的告警类型表,选择当前配置所属类型。 级别 可选:重要、次要、提示。 语音提示 勾选选项后会根据故障级别发出不同语音提示 人工确认 指定当前告警配置是否需要用户确认。 生成延时(秒) 防止告警抖动,设置告警生成延时,告警条件持续在该时 间段内成立后方能生成活动告警记录。 恢复延时(秒) 防止告警抖动,设置告警恢复延时,告警条件持续在该时 间段内不成立后方能将活动告警标记为已恢复。 条件 1 告警触发条件 1 关系 告警触发条件 1 和 2 之间的逻辑关系 条件 2 告警触发条件 2 关系 告警触发条件 2 和 3 之间的逻辑关系 条件 3 告警触发条件 3 表 18 告警条件配置表参数定义 参数 用途&配置方法 启用 启用该触发条件后, 打开此开关。 设备 选择关联的设备。 数据 选择关联的设备数据。 触发方式 选择触发类型,可选:大于、大于等于、等于、不等于、 小于等于、小于、介于、不介于。 阈值 1 与触发方式配套的条件判断阈值。 回差 1 条件不成立时的回差幅度。 “等于”“不等于”触发方式下不生效。 阈值 2 仅作用于“介于”、“不介于”触发方式。 回差 2 仅作用于“介于”、“不介于”触发方式。 3.18 自定义请求 MThings 支持用户基于创建的模拟主机设备发送自定义报文,报文需遵循 MODBUS 协议要求。 用户只需填入报文 PDU 部分 ,MThings 自动适应设备所使用的协议类 型,添加报文首尾, 最终发送完整报文。 MThings 自定义功能支持统计报文请求延迟时间,支持持续曲线监控延迟 时间,可用于观察从机的性能和可靠性。 自定义请求功能仅服务于模拟主机,可使用标准功能码或自定义功能码。 自定义请求操作前,请于左侧设备列表确认当前设备是否正确。 图 67 自定义请求操作示意 1. 单击“自定义”主菜单,进入自定义请求页面。 2. 单击“新增”按钮, 新建一条自定义请求信息行。 3. 单击“移除”按钮, 删除被勾选的自定义请求信息行。 4. 单击“曲线”按钮, 打开“数据曲线展示器”,可查看延时时间曲线 数据。 5. 单击“发送”按钮, 发送被勾选的自定义请求信息。 6. 如果需要循环发送 ,勾选“循环发送”。 7. 用于输入自定义报文 PDU。 8. 显示自定义请求与响应之间的延迟时间 ,不可编辑。 9. 可配置当前行的自定义请求的超时时间,即最大允许回复的时间范 围。超过该时间,即判请求超时。 10. 可配置当前行的自定义请求&响应结束后的间隔等待时间,该间隔时 间结束后,才能发起下一个请求。 11. 选择后 ,软件将该行自定义请求的延迟时间作为数据曲线长期监视。 3.19 报文统计 MThings 支持模拟主机设备和模拟从机设备在通信交互过程中同步统计报 文交互数据。 1. 通过判别各种收发情形,准确统计丢包率,细分异常类型。 2. 支持对丢包数持续曲线监控,供用户识别丢包规律。 3. 支持以链接和设备两个不同维度进行统计 ,可同时查看链接下总数 据 ,也可以查看各自设备的统计数据。 图 68 统计操作示意 1. 单击“统计”主菜单,进入统计页面。 2. 软件启动时 ,默认关闭统计功能 ,需单击“启动”按钮开始统计功 能。 3. 用于切换统计结果的维度 ,分为设备和链接。选择设备时,统计数据 列表中包含所有通信设备的统计结果。选择链接时, 统计数据列表中 包含所有通信链接的统计结果。 4. 单击“重置”按钮, 所有统计数据归 0,开始重新计数。 5. 单击“曲线”按钮, 打开“数据曲线展示器”,可查看丢包数曲线。 6. 勾选“自动刷新”,表格中数据持续刷新,否则,表格中数据暂停刷 新。 7. 选择需要持续曲线监视丢包数的对象。 表 19 统计数据项定义 数据 含义 发送正常 已成功发送至链接 接收正常 接收到正常主机请求或从机回复数据 丢包率 仅适用于模拟主机 丢包率(%) = (发送正常 – 接收正常 – 响应异常) / 发送正常 发送失败 由于链接异常,导致数据无法发出 响应异常 从机回复异常帧(请求功能码 + 0X80) 响应超时 未收到从机正常响应帧 帧长异常 接收到的数据无法正常解析 校验异常 接收到的报文出现如下校验错误: CRC、LRC、帧序号、协议类型 统计过程中必须有设备通信报文 ,不支持抓包过程统计。 如链接中出现异常报文 ,无法识别其所属设备地址 ,该类异常报文将被归为 “其它”设备中。 建议统计过程中同步存储原始报文,便于问题分析。 3.20 辅助小工具 MThings 作为常用 MODBUS 调测工具,同时提供多项辅助工具,有助于 进阶报文数据分析。 图 69 辅助小工具操作示意 1. 单击“辅助”主菜单,进入辅助页面。 2. 纪元秒与标准时间(UTC)的换算 ,支持各自修改 ,自动同步。 3. 不同类型的数值换算,支持各自修改,自动同步。 4. 字节流处理功能 ,输入待分析的字节流或字符串。 5. 字节流处理功能 ,单击“字符串”按钮,可将输入的码流转换为字符 串格式。例如可将码流“31 32 33 34 35 36 37 38 39 30”转换为 “ 1234567890”。 6. 字节流处理功能 ,单击“码流”按钮,可将输入的字符串转换为码 流。例如可将字符串“1234567890”转换为“31 32 33 34 35 36 37 38 39 30”。 7. 字节流处理功能 ,单击“CRC/Size”按钮,可统计计算码流数据的 CRC16 和字节个数,其结果展示于下方。 8. 展示码流和导入文件的二进制计算结果。 9. 文件分析功能,单击“导入”按钮,可导入一份二进制文件 ,软件将 分析出文件的字节长度、文件总 CRC16,其结果展示于上方。 10. 文件分析功能,单击“导出”按钮,软件将导入的二进制源文件转换 为码流文本文件。 --- ### 424. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是工控领域中最常见的通讯协议之一,因此在PLC中也是常用的协议之一。许多PLC都支持Modbus协议,并且可以通过Modbus协议与其他设备进行通信。Modbus协议可以在串行通信和以太网通信中使用,使其成为一个非常灵活和广泛应用的协议。因此,可以说Modbus在PLC中并不是小众。 本文引用https://blog.csdn.net/w181108233/article/details/124734830,介绍21款常见PLC设备的寄存器配置实例,并附摩尔信使MThings数据配置截图。 1、三菱FX3G-40MR/ES-A:1 X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   2、西门子S7-200 CPU226 I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。   3、欧姆龙CP1H-X40DR-A CIO0元件支持Modbus之02功能码; CIO100元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   4、松下AFPX-C40R X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; DT元件支持Modbus之03、06、16功能码。   5、台达DVP-12SA2 X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   6、信捷XC5-48 X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   7、永宏FBs-40MC X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   8、产电XBC-DR40S P0元件支持Modbus之02功能码; P40元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   9、汇川H2u-2416MT-XP X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   10、英威腾IVC2H-1616MAT6 X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   11、基恩士KV-N40AR R0元件支持Modbus之02功能码; R500元件支持Modbus之01、05、15功能码; DM元件支持Modbus之03、06、16功能码。   12、施耐德TM218LDAE40DRPHN 更新固件后支持01、02、15功能码 I元件支持Modbus之02功能码; Q元件支持Modbus之01、15功能码; M元件支持Modbus之03、06、16功能码。   13、海为H40S2R X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   14、维控LX3V1212MT X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   15、和利时LE5109 I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; M元件支持Modbus之03、06、16功能码。   16、台安AP-340BR-A X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。   17、罗克韦尔1766-L32BWA I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; N元件支持Modbus之03、06、16功能码。   18、合信CTH200 CPU H226L I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。   19、富士SPENW0P40R-31 X元件支持Modbus之02功能码; Y元件支持Modbus之01、15功能码; D元件支持Modbus之03、16功能码。   20、步科K508-40AR I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。   21、西门子S7-1200 I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。   --- ### 425. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 最近有读者通过博客向我咨询,在自定义node-red节点时,如何编写该节点的配置页面,就是我们通常见到的,双节节点打开的信息弹窗。如下图: 上面两张图,展示了inject节点与mqtt in 节点的配置弹窗。在弹窗中,除了上面的删除,取消,完成,和下面的失效按钮。中间部分都是需要开发者自己编写的。你需要什么按钮,需要哪些输入框,还有文本域。 节点配置弹窗是用户配置,修改节点配置数据的主要方式。 下面就教大家如何编写这部分的页面配置弹窗是编写在 节点的html 文件里 并且写在 <script type="text/html" data-template-name="node-type"> <!-- edit dialog content --> </script> 注意script标签的 type属性 必须配置为 text/html,这能够帮助编辑器高亮识别js语法。标签还应该包含data-template-name 属性,表面该脚本是应用于那个节点类型。你可以在这里编写html,如下: <div class="form-row"> <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> 以上是一个用于输入名字的输入框。有些class是可以直接使用官方的,比如form-row ,该class会帮你创建一个块级元素,将信息展示一行一行地展示。 除了开发者自己编写css 和 html,node-red官方也提供了一些标准的组件供大家使用。使用他们编写节点配置弹窗,会更美观,简约,也会很符合node-red的整体风格。下面一起来看一下。 按钮 由于按钮经常被用到,所有官方提供了一套标准的按钮组件。你可以这样使用 <button type="button" class="red-ui-button">Button</button> <button type="button" class="red-ui-button red-ui-button-small">Button</button> <span class="button-group"> <button type="button" class="red-ui-button toggle selected my-button-group">b1</button><button type="button" class="red-ui-button toggle my-button-group">b2</button><button type="button" class="red-ui-button toggle my-button-group">b3</button> </span> 以上代码的显示按钮 输入框 如果你要使用输入框的话,可以看看官方提供的案例 Plain HTML Input <input type="text" id="node-input-name"> TypedInput String/Number/Boolean <input type="text" id="node-input-example1"> <input type="hidden" id="node-input-example1-type"> TypedInput JSON <input type="text" id="node-input-example2"> TypedInput msg/flow/global <input type="text" id="node-input-example3"> <input type="hidden" id="node-input-example3-type"> 如果你要使用选择框 <input type="text" id="node-input-example5"> $("#node-input-example5").typedInput({ types: [ { value: "fruit", multiple: "true", options: [ { value: "apple", label: "Apple"}, { value: "banana", label: "Banana"}, { value: "cherry", label: "Cherry"}, ] } ] }) 它就会表现成这样子。 多行文本域 在node-red中多行文本域其实都是 使用的代码编辑器,使用monaco或者ace你可以这样使用 <div style="height: 250px; min-height:150px;" class="node-text-editor" id="node-input-example-editor"></div> // 使用RED.editor.createEditor 方法创建编辑器, this.editor = RED.editor.createEditor({ id: 'node-input-example-editor', mode: 'ace/mode/text', value: this.exampleText }); // 在保存或取消时,销毁无用的对象,释放资源 oneditsave: function() { this.exampleText = this.editor.getValue(); this.editor.destroy(); delete this.editor; }, oneditcancel: function() { this.editor.destroy(); delete this.editor; }, 编辑器效果 总结 node-red提供的自定义节点功能,让我们可以自由地制作各种各样的节点来满足自己的需要。之前有个读者说他们要在node-red中做直播会议系统,非常佩服这些人的创造力。要想更快,更好地开发出好用的节点,需要把基本功打好,万丈大楼先把地基打好。你学会啦吗? Markdown 2920 字数 130 行数 当前行 129, 当前列 36 文章已保存18:18:05 --- ### 426. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 在之前的文章中,我们介绍了如何在monaco中为某一个方法增加注释,可以通过codelen 也可以通过Marker来显示某个变量,常量,或方法的文档。但这种方法不太适合大规模的库,比如一个js库有上百个方法,作为一名懒惰的程序员不可能将每一个方法都添加到monaco中。那么本篇文章就来给大家介绍一种借助typescript的类型声明文件,来增强编辑器的体验。不仅仅能够显示某个方法的详细文档,还有该方法的自动完成。 核心方法只有一个 addExtraLib() addExtraLib 由于monaco不像vscode接入来 LSP(语言服务协议),所有要大批量地实现自动完成,方法注释比较麻烦,但是monaco增加了addExtraLib 这个方法,这个方法可以传人一个类型声明的字符串。如下面这样的内容 declare class Facts { /** * Returns the next fact */ static next(): string } 将这段文本使用addExtraLib 添加到monaoc语言服务中,那么在用户在编写Facts.next()时,就能够自动完成,并且在next方法显示该方法的注释。如下图 如果你使用ts类型声明内容创建了一个语言模型,那么你就可以在该方法上查看具体的声明,如下图: 这种场景有非常多的好处,特别对于不熟悉某个方法的编程小白。可以直接鼠标悬浮在方法名上,查看文档。非常友好,方便。 当你在使用lodash 或jquery 这些js库时,有时会忘记某个方法的完整名称,或者不记得某个方法的参数顺序。这种就需要方法文档了。 下面我就以lodash和jquery库为例,将其两个库添加到monaco中。 将loadash库集成到monaco编辑器中 首先我们先获取lodash的ts声明文件。经过简单的搜索,我找到了这个git仓库,https://github.com/DefinitelyTyped/DefinitelyTyped这个仓库里存放了非常多的我们常用的库的ts声明。我们知道lodash的ts声明。在此处可以获取https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/lodash/v3/index.d.ts注意有些库的index.d.ts 只是一个外壳,实质内容都是分散在各个子文件中的。我们将上面链接的内容保存到lodash.d.ts文件中 然后html中使用fetch获取该文件的具体内容,核心代码如下 const monacoTypesUrl = './lodash.d.ts' const libSource = await (await fetch(monacoTypesUrl)).text(); console.log(libSource) var libUri = "ts:filename/lodash.d.ts"; monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri); // When resolving definitions and references, the editor will try to use created models. // Creating a model for the library allows "peek definition/references" commands to work with the library. monaco.editor.createModel(libSource, "typescript", monaco.Uri.parse(libUri)); 这样集成后,看看在编辑器中的表现,当我们打出lodash的命名空间_ 时 然后我们调用 它的 cloneDeep 方法,表现如下图: 是不是非常的棒? 下面再来看一下jquery库的集成 将jquery库集成到monaco编辑器中 遵循其上的步骤,我们先要获取jqueyr的ts声明文件。从下面的链接,你可以拿到jquery v2版本的 ts声明。https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jquery/v2/index.d.ts 文件内容拷贝出来,放到本地文件jquery.d.ts中修改 monacoTypesUrl 变量为 './jquery.d.ts' 我们在来看一下调用jquery ajax的自动完成。 查看ajax的方法参考 这就是在monaco中集成额外库的优秀体验。能够极大地提升编辑器的用户体验。 除此之外,你还可以同时注入多个ts声明库,也可以自己编写ts声明库来完成自动提示,自动完成。 总结 编辑器是一个非常复杂的软件产品,任何一个可以提升用户体验的功能都需要重视。开发体验直接决定了该产品能否成功。 --- ### 427. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 最近在使用gitlab的web ide时发现当编写一个 vue组件时,文件的后缀名为.vue。在编辑器的右上角会显示当前的编程语言时vue,并且高亮语法或标签,格式化,折叠都表现很优秀。但是其实monaco是不支持vuejs的,作为一名前端开发者,我们有时需要在monaco编辑器中编写vue组件,所以我就利用业余时间尝试 在讲vuejs集成到monaco中。确切说vuejs并不是一个编程语言,它和html很类似,但也有很多差异,这里就不展开讲了。本文主要我是如何探索,实践将vuejs集成到monaco中的。 探索 我们先来看一下,一个vue组件在gitlab 的webide中的表现。以下是两个简单的vue组件代码在webide中的表现。 可以看到,无论是html的标签,属性,还是js的关键词,变量, 都能够合适地着色。不能说没有缺点但已经很优秀了。(一个缺点是 script标签无法折叠) 要实现这样的效果,一共分为两个部分,第一不是是为monaco注册一个的vue语言,并配置该语言相应的属性。第二就是设置一个比较好看的主题。本文主要讨论第一步,即为monaco注册添加vue编程语言。 确定了研究方向后,我搜索了很多资料,但找到都是如何在vue中集成monaco的文章和答案。 唯一有相关的就是这个问题 将vue js语言支持添加到monaco editor 由于多次搜索无果,这个在monaco中添加vue语言支持的问题搁置了一段时间,最近又想挑战一下。其实这个研究课题,真正的作用并不是很大,在编辑器中编写vue组件是无法直接显示,使用的。除了一些大型的web ide平台需要这种功能,个人,小企业基本不能用到。应该还有其他我不知道的用途,我所不知道的。但其实对我来说,并不是刚需,只是一个兴趣点,小的研究课题。 其实这个问题有一个最简单的解决办法,就是扒gitlab的 webide 代码。没错,就是在浩瀚的gitlab源代码找到他们是如何将vue语言注册到monaco中的,配置文件是哪些。简单却耗时。不信的同学可以先别往下看自己去找找。 由于知道了要想摘取果实所要走的路,所以我就义无反顾地踏上了征程。开始浅浅地研究gitlab的webide 相关的源码,说研究都是在夸自己,其实就是一段 ctrl + f ctrl + shift +f 。一顿搜,一顿搜,一顿搜。 实践 说是一段搜,其实也要找对关键词,搜索的关键词 决定了你寻找的效率。我用的关键词是,第一步 我用的是 register,因为要往monaco中添加一个编程语言,必须要用到这个方法languages.register()。看了一遍我该用关键词 registerLanguages 。 一下子就搜到了自己想要的。 其实这里搜索还牵扯到一个monaco版本的问题,因为gitlab使用monaco比较早,如果没有更新够它的版本的话,那么版本应该会很低,这种情况很容易导致 文档,api对不上。无法搜到自己想要的东西,或者即使搜到也无法直接使用。 gitlab 使用的monaco版本为"monaco-editor": "^0.25.2", 这里贴出注册语言涉及到的几个文件app/assets/javascripts/editor/source_editor.js使用registerLanguages 方法将自定义语言统统注册进去 app/assets/javascripts/ide/lib/languages/vue.js 定义vue编程语言高亮,标签等属性的文件 app/assets/javascripts/ide/lib/editor.js设置主题,注册语言 app/assets/javascripts/ide/utils.js 该文件中有一个registerLanguages 方法,使用的参数就是vue.js中定义的属性。 由于我是在使用纯html来集成monaco,所以要使用vue.js 还需要稍微改造。 可以查看文末的完整代码。 其实就是去除了import export 和 替换了languages 的枚举值。 修改好 vue.js后,在调用三个函数就能将vue集成到monaco中了核心代码为 const languageId = vueLan.id; monaco.languages.register(vueLan); monaco.languages.setMonarchTokensProvider(languageId, vueLan.language); monaco.languages.setLanguageConfiguration(languageId, vueLan.conf); 完整效果 完整代码 <!DOCTYPE html> <html> <head> <title>Vue 组件高亮 Hello World @CSDN拿我格子衫来 Monaco Editor</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> </head> <body> <h2>Hello World CSDN@拿我格子衫来 Monaco Editor</h2> <h2>集成vue语言 CSDN@拿我格子衫来 Monaco Editor</h2> <div id="container" style="width: 800px; height: 600px; border: 1px solid grey"></div> <script src="./monaco-editor/package/min/vs/loader.js"></script> <script src="./vue.js"></script> <script> require.config({ paths: { vs: './monaco-editor/package/min/vs' } }); let editor require(['vs/editor/editor.main'], function () { const languageId = vueLan.id; monaco.languages.register(vueLan); monaco.languages.setMonarchTokensProvider(languageId, vueLan.language); monaco.languages.setLanguageConfiguration(languageId, vueLan.conf); editor = monaco.editor.create(document.getElementById('container'), { value: vueCom, language: 'vue', }); }); </script> </body> </html> --- ### 428. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 很多人知道前端代码编辑monaco editor 与vscode 有关系,但却不清楚其中的细节,本篇文章就带大家了解一下两者的关系和异同点。 表面对比 首先,这两个项目都是来自微软,其中vscode 项目Github 144K star,是基于CS架构,客户端-服务端架构。主要的技术栈是elector,ts。 而monaco editor则是33.4k star,是一个bs架构,浏览器-服务端架构,主要的技术栈是typescript。 深层关系 以上信息对于使用过二者的同学基本都知道。 那么说点比较深入的,请看下面这张图。这张图来自官方。地址为 https://github.com/microsoft/monaco-editor/blob/main/CONTRIBUTING.md 这张图很清楚地描述了monaco-editor 与vscode两个库的关系。 首先在vscode这个git仓库中,会构建出一个monaco-editor-core,这是编辑器的核心库,该库是比较底层的。不关心上层是浏览器还是客户端。它说实现的功能就是,我们编辑中常使用的position,overwieget,overweiget,minmap,range,monaco-editor 就是基于这个库来开发出来的。值得一提的是,monaco的文档是由一个ts文件生成的,而该文件是在vscode中有多个文件拼接而成。所有如果你要想给monaco贡献文档,那么你需要在vscode中提PR。monaco的案例代码除外。 由于该库没有包含语言特性,所以你能够在monaco-editor中找到很多定义语言高亮的文件,就在basic-languages目录中。这些文件中定义了某一种语言的需要着色的分词,如何区分方法名,如何区分变量,以及如何表示代码块,并能够折叠,这一套底层是使用的monarch语法, 语法高亮,自动完成对比 你可以在monaco官网上找到它的文档,以及他是如何描述语言的语法的。https://microsoft.github.io/monaco-editor/monarch.html Monarch:使用JSON创建声明性语法高亮。 官方文档描述了如何使用Monarch库创建语法高亮显示。这个库允许开发者使用声明性词法规范(编写为JSON值)指定高效的语法高亮显示。该规范具有足够的表达能力,可以指定具有复杂状态转换、动态大括号匹配、自动完成、其他语言嵌入等功能的复杂荧光笔,如本文档的“高级”主题部分所示。第一次阅读时,可以安全地跳过标记为(高级)的任何部分或段落,因为大多数语言定义中很少使用许多高级功能。 该库定义的属性有很多,如果后面有机会,我可以给大家讲解一些常用的属性。 到这里我们已经知道了,monaco中的语法高亮是使用monarch,那么vscode中那?也是使用monarch吗?并不是的,客户端软件可以使用的资源要比浏览器端多的多。vscode使用的页面上最流行的LSP语言协议。 有关LSP可以查看官方文档https://microsoft.github.io/language-server-protocol/LSP 就是Language Server Protocol的缩写,一种通用的语言服务协议。 为编程语言添加自动完成、转到定义或悬停文档等功能需要花费大量精力。传统上,这项工作必须对每个开发工具重复进行,因为每个工具都为实现相同的功能提供了不同的API。 语言服务器旨在提供特定于语言的智能,并通过实现进程间通信的协议与开发工具进行通信。 语言服务器协议(LSP)背后的想法是标准化此类服务器和开发工具如何通信的协议。这样,单个语言服务器可以在多个开发工具中重复使用,而这些工具又可以以最小的努力支持多种语言。 LSP对语言提供商和工具供应商来说都是一个胜利! 下图就是使用LSP实现的带有文档注释的自动完成。 其实网上也有一些大佬为了提升monaco的用户体验,也尝试集成LSP协议,我的朋友就是其中一名。但整个过程是比较繁琐,复杂的。需要找到指定语言的LSP协议,当作服务端,为monaco提供服务。后面有机会我会给大家讲解一下。 总结 优秀的产品 周边也都优秀。正所谓强将手下无弱兵。我们进入一个优秀的团队,接触一些优秀的人,对我们的人生规划 大有裨益。 强行胡扯-_- --- ### 429. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 VS Code作为开发者的代码开发利器,越来越受开发者的喜爱。像我身边的前端,每天80%的开发工作都是在VS Code上完成的。随着人们对它的使用,不再满足简单的优雅,舒服写代码这一基本需求。有些人利用它进行摸鱼,看小说,查股票,看文章,下五子棋。当你在VS Code的插件市场输入摸鱼二个字时,会有20多个插件供你选择。 本篇文章就来概述一下 VS Code的能力,并帮你快速建立插件文档的索引。 插件功能 插件能够实现以下功能 自定义各类文件的图标和主题颜色 添加自定义组件和UI 使用html创建功能丰富的webview 支持新的编程语言 支持特殊的调试手段 组件的各大模块 案例大集合 插件的官方案例大集合 https://github.com/microsoft/vscode-extension-samples 看了这里提供的案例,能够了解大部分场景的开发范式。 每个插件的目录大致是相同的,这也是官方约定的标准插件目录。 案例 UI组件 vscode提供了很标准的UI,在制作插件时要严格按照要求,比如图标的大小16*16的svg文件。 以下是官方的UI区域划分 命令行工具 yo 与 generator-code 按照 # 安装依赖 npm install -g yo generator-code yo code # 新建项目 按钮位置 你可以利用插件在vscode中注入很多的自定义按钮,各个位置。vscode支持的位置包括这些 https://code.visualstudio.com/api/references/contribution-points#contributes.menus 本地开发组件步骤 本地开发的步骤很简单 # 安装依赖 npm install -g yo generator-code yo code # 新建项目 案例2 安装依赖后,按下F5键就会打开一个新的窗口,这是用于调试的。 修改代码后,重新reload 就能生效。 发布 https://code.visualstudio.com/api/working-with-extensions/publishing-extension npm install -g @vscode/vsce vsce package vsce login <publisher name> vsce publish When 条件 在注入按钮时有时需要一些条件判断, 比如,当前打开的是某类文件时,才会显示某个按钮。 这些判断条件的编写应该遵循以下这个文档 https://code.visualstudio.com/api/references/when-clause-contexts 插件的概览 指导 https://code.visualstudio.com/api/extension-guides/overview 编写组件的业务逻辑能够使用的VS code api https://code.visualstudio.com/api/references/vscode-api#tasks.registerTaskProvider --- ### 430. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 农业大棚作为农业生产的重要场所,需要对其进行有效的监控和管理,以确保农产品的质量和安全。通过大棚监控解决方案,可以实现对大棚内环境、作物生长情况、病虫害等情况的实时监测和预警,提高农业生产的效率和质量。同时,也可以减少人工管理的成本和风险,提高农业生产的可持续性。 农业大棚的日常运维需涉及摄像头、传感器、控制器等设备。除视频监控外,摩尔信使(MThings)可以提供其它所有设备的接入和管理。 农业大棚监控运维的功能主要有以下几个方面: 环境监测:安装温度、湿度、光照、CO2浓度、PH值、水体温度等传感器,实时监测大棚内外部和土壤环境参数,对作物生长环境进行调整和优化。这些采集到的传感器数据可上传到远程服务器,进行分析和处理,实现远程监测。 智能控制:利用智能控制系统对大棚内部的水、肥、温度、湿度、CO2、光照等进行自动化控制,通过数据分析和决策支持系统,根据作物的生长状况和需求进行决策和控制,提高作物产量和质量。 报警预警:设置异常报警和预警系统,当前出现突发环境异常等情况时,能够及时发出声光报警信息和短信提醒,帮助农户及时采取措施,保证作物生产的安全和稳定。 数据分析:系统可以采集并长期存储大棚运营数据,并通过数据分析,给出季节性总结参数(如日补光平均时间、喷灌时长),帮助农民提高作物种植水平,降低成本开销。 下图是结合摩尔信使(MThings)构建的一种典型解决方案: 其中,摩尔信使(MThings)不仅适用远程运维,也提供本地移动运维终端(触摸屏/PAD);通过接入各类传感器设备采集现场数据,通过集成I/O控制器,低成本串联现场控制设备;通过定制控制算法,方案中无需PLC设备。 摩尔信使(MThings)远程监控运行界面: 摩尔信使(MThings)移动运维终端: --- ### 431. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 添加模版设置 在FlowForge中,每个项目都是从模板创建的。模板为项目定义了一组预配置的选项。这包括运行时设置- 比较常见就是 Node-RED settings.js文件中设置的值。 模板还定义了项目可以自定义哪些选项。 本篇文章就来解释一下如何向模板对象中添加新的Node-RED运行时选项,以便开发者可以为单个实例进行自定义,并传递到底层Node-RED settings.js文件。 对于简单的布尔/字符串/数字类型来说,可以直接定义。对于其他类型(对象/数组),就变得稍微复杂,目前官方也没有好的例子。 对于一般的情况,可以按照以下步骤来设置模版: 更新前端 为设置选择一个名称,将其添加到已知设置和所需的任何验证逻辑列表中 将其添加到适当的模板部分 更新运行时 将其添加到已知的设置列表和任何额外的验证逻辑中 更新启动器 使用新属性更新用于生成settings.js的模板 更新前端 前端中有一组视图用于显示和编辑模板。它们以两种不同的方式使用: 创建/编辑模板时。所有选项都可用,有一个下拉列表,允许用户在设置上设置策略(控制项目是否允许覆盖设置)编辑项目设置时。显示所有选项,但仅允许用户修改模板策略允许更改的选项。这种对视图的重用节省了大量代码重复,在实现时会造成一些复杂性。 为设置选择一个名称 该名称应尝试在Node-RED settings.js文件中匹配其相应的属性。 编辑frontend/src/pages/admin/Template/utils.js将新属性名称添加到templateFields和defaultTemplateValues对象中。请注意,这些名称是扁平字符串,_用作层次,分隔符…。如果值需要任何形式的验证,请将其添加到同一文件中的templateValidators中。 1.2 - 将其添加到适当的模板部分 目前支持自定义的配置有: 编辑调色板环境-不太可能添加其他选项的特殊情况这些都存在于自己的文件下 frontendfrontend/src/pages/admin/Template/sections/。 选择要添加的设置(即复选框或文本输入)最匹配的现有设置,并将其条目复制到适当的位置。 确保将复制的属性名称的所有引用更新为新属性名称。 更新运行时 将其添加到已知列表中 编辑forge/db/controllers/ProjectTemplate.js,将新属性添加到已知设置列表中。 在同一文件中,使用所需的任何额外验证或数据清理来更新validateSettings函数。 更新nr-launcher 在 flowforge-nr-launcher 项目里 编辑lib/runtimeSettings.js,将新的设置包含在生成settings.js文件中。请注意,你必须处理新设置不存在的情况-要么使用合理的默认值,要么省略该值。 --- ### 432. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 最近产品中使用到一款SQLTools的VS Code插件。该插件可以在VS Code中实现数据库管理,而且支持非常多的数据源类型,官方的数据源类型有CockroachDB,MariaDB,MySQL,PostgreSQL,SQLite,Microsoft SQL Server/Azure ,另外还有很多社区的数据源驱动。而我们使用管理的数据源类型是Trino,图标是一个小兔子。使用到的组件是Trino Driver但在使用这个插件时,存在两个问题。 问题 问题1是,Trino Driver不支持Https的链接,来链接Trino数据源 (一开始只有这一个问题,解决后,又发现二个。?)问题2是,不支持表记录的预览问题3是,切换schema时,无法预览表记录 而我的任务就是解决这两个问题。 组件关系梳理 在我查看过SQLTools与Trino Driver的组件文档后,才发现后者依赖前者。SQLTools充当一个平台,提供了UI和基础的对接接口。而Trino Driver是一个专为Trino数据源做的一个适配器。其他的数据源类型支持也是如此。而Trino Driver 这种插件是基于trino-client该项目而开发的,trino-client基于trino的http协议,使用axios实现了trino数据源的连接,sql执行。 所以这就是他们的关系,SQLTools 包含 Trino DriverTrino Driver 包含 trino-clienttrino-client 包含 axios,和trino HTTP API 调试,问题解决 要实现https连接数据源,还要看trino-client这个库支不支持。在我调试时,最新正式版的trino-client(v0.2.0)是不支持的,但最新分支main是支持的。(目前作者已发布v0.2.1。支持HTTPS的方式)于是我基于main分支,构建出一个库,替换Trino Driver中的。这样就支持的HTTPS。但Trino Driver连接数据源时也需要多一个参数。verifySSLCert: false 这样第一个问题就解决啦。这种问题解决方式,本质是不校验证书,而不是真正意义上的支持HTTPS 要实现真正的HTTPS方式连接数据源,还需要改造Trino Driver库,增加上传文件的表单项,并调试好axios使用证书的姿势。 第二个问题,是在连接了Trino数据源后出现的,(使用量少的插件问题都被我遇到了,不活跃的社区维护并不可靠啊。) 第二个问题就是在预览表记录数时,报了一个 OFFSET的问题。这个问题很像是SQL写的有问题。 遇到复杂组件,嵌套插件的问题,首先要找到是那个插件的问题,通过对比发现其他数据源插件没有这个问题,只在Trino数据源出现,于是 问题就出现在Trino Driver插件上。没办法该呗。 一段疯狂全局搜索,找到了有OFFSET的SQL代码。凭借着自己井底之蛙的SQL知识,发现了问题所在。该库中写的分页查询sql是这样的。 SELECT * FROM ${(p) => p.table.label || p.table} LIMIT ${(p) => p.limit || 50} OFFSET ${(p) => p.offset || 0}; 而在百度查询后得到的结果是,Trino的查询SQL,OFFSET一般放在LIMIT 之前,并且去掉末尾的;分号。 修改后,再调试一下。哈哈哈。。。竟然可以了。 正当我洋洋得意把插件构建出来发给测试后,过了二个小时,测试反馈说有发现了一个新的bug。我的第一反应是,不管这个问题是什么,都绝壁是原作者写的,不可能我的。 最后的一个问题是由于链接数据源后,会有很多schema,表是存放在schema下的,当切换schema,查看表记录时会报错。 出现这样的问题,发布插件时真的有人测试吗?还是说,你们只有一个schema? 没办法,这种小众的数据源和插件 很少有人去关注,你如果非要用,那你只能去尝试改改,改不了,就去和作者直接对线吧。 这个问题直接说结论吧, Trino Driver插件在接受到SQLTools传过来的参数后,在查询sql中并没有使用schema参数。以下是作者写的二段sql SELECT * FROM ${(p) => p.table.label || p.table} OFFSET ${(p) => p.offset || 0} LIMIT ${(p) => p.limit || 50} SELECT count(1) AS total FROM ${(p) => p.table.label || p.table}; 我改后 SELECT * FROM ${(p) => p.table.schema+'.'+p.table.label} OFFSET ${(p) => p.offset || 0} LIMIT ${(p) => p.limit || 50} SELECT count(1) AS total FROM ${(p) => p.table.schema+'.'+p.table.label} 修改后,重新构建新插件,使用新插件就可以啦。要想用正式版,还需要去催催作者,赶快review我的PR。 相关代码的PR:https://github.com/regadas/sqltools-trino-driver/pulls?q=+author%3APmcFizz+ 总结 重要的不是写了多少行代码,而是这些代码带来的价值,时刻思考着自己的价值。 成长是遇河搭桥,逢山开路。 --- ### 433. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 FlowForge中的设备 FlowForge平台除了可以创建多个Node-RED实例,还可以用来管理远程设备。只需要在设备上安装官方提供的工具包,它可以用来链接到平台,并接受平台的指令。 本篇文章就来介绍一下如何管理远程设备 安装设备代理工具包 官方提供的设备代理工具包是一个公开的npm仓库,@flowforge/flowforge-device-agent。 为了方便使用,你可以将它全局安装在远程设备上。安装命令 sudo npm install -g @flowforge/flowforge-device-agent 如果你想要使用Docker容器,而不是一个npm包,那么在运行容器是,需要挂载device.yaml文件,以此可以存取注册的设备数据。使用Docker来安装设备代理工具的命令如下 docker run --mount /path/to/device.yml:/opt/flowforge/device.yaml -p 1880:1880 flowforge/device-agent:latest 配置 工作目录 设备代理工具默认的工作目录是/opt/flowforge-device.如果你想要覆盖它可以使用-d/--dir参数来覆盖。 注意,指定的目录必须存在,并且对当前用户有权限运行代理工具。 创建工作目录的命令和赋权限的命令。 sudo mkdir /opt/flowforge-device sudo chown -R $USER /opt/flowforge-device 监听端口 Node-RED 实例默认是使用1880端口,在代理设备工具中你可以修改这一配置,通过使用参数-p/--port来指定一个端口号。这对于自定义防火墙规则很有用,当一个设备上有很多实例时也很有用。 指定端口的命令 flowforge-device-agent --port=1881 注册设备 为了让一个设备链接到FF平台,你需要为设备设置一个证书。在FF平台有两种类型的整数 设备证书,用于单个设备链接到平台 预配证书,用于设置一个或多个设备批量注册到FF平台。 设备证书可以在设备管理页面进行生成。预配证书可以在团队的设置页面,设备Tab下生成。 连接设备 使用设备证书来链接FF平台,需要将设备证书的内容拷贝到device.yml中,该文件一般是存放在/opt/flowforge-device。然后运行以下命令 flowforge-device-agent 然后你就可以看到设备已经链接到FF平台啦。 如果你使用的是预配证书,那么你也需要将预配证书复制到device.yml文件中。然后运行和上面相同的指令。预配证书使用过后,就不能再使用啦,将被新的设备证书覆盖。 在无法访问 npmjs.org 的情况下运行 默认情况下,设备代理将尝试下载正确版本的 Node-RED 和 运行分配在设备上运行的项目快照所需的任何节点。 如果设备在脱机网络上运行,或者安全策略阻止 设备代理从连接到 npmjs.org 然后可以配置为使用预缓存 模块集。 你可以通过添加到添加到文件的命令行来启用此模式。这将导致设备代理从设备代理配置目录中的目录加载模块,如上所述。 默认情况下,这将为 。-mmoduleCache: truedevice.ymlmodule_cache/opt/flowforge-device/module_cache 创建模块缓存 要创建合适的模块缓存,您需要在本地设备上安装 访问 npmjs.org,确保您使用与目标相同的操作系统和架构 设备,然后将模块复制到设备上。 在“项目快照”页面中,选择要部署的快照,然后选择下载其文件的选项。package.json 将此文件放在本地设备上的空目录中。 运行npm install安装模块。这将创建一个目录。node_modules 在目标设备上,创建在设备代理配置目录中调用的目录。module_cache 将目录从本地设备复制到目标设备,使其位于该目录下。node_modulesmodule_cache --- ### 434. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 本篇文章结合FF的操作来给大家解释一下,FF在团队管理上都与那些资源可以操作。 团队创建 使用超管第一次登录FF平台,默认什么资源都没有,你只能先去创建一个团队才能继续往下操作。在FF平台上,团队就代表一个租户,也是一种资源隔离的手段。创建团队可以通过右上角按钮,超管也可以选择切换到某一个团队下查看相应的资源。如果要删除团队,需要进入团队内容,在团队设置页面。 如果你要查看系统中所有的团队状态,需要在右上角,个人头像下下的 Admin Settings 。 在FF平台上,有很多菜单。 给超管看的Admin Settings菜单上面的截图就是Admin Settings菜单,包含了 概览 用户 组员 项目类型 堆栈 模板 活动 设置 进入某个团队的,团队资源菜单菜单截图团队菜单,包含了 概览 项目 设备 组员 审核日志 团队设置 进入团队项目中,项目菜单项目菜单包含了以下子菜单 概览 实例 快照 审核日志 Node-RED日志 设置 这三种菜单,超管都是可以进入,查看,管理的(废话,如果超管都进入不了,那就是对所欲人都不可见啦)。其中管理员设置页面,只有超管才能看。其他两种菜单,只有具备特定角色的人才能进入。 超管功能使用 本篇我们先来看一看 超管页面有哪些功能。访问页面是 http://127.0.0.1:3000/admin/overview。根据概览页面展示的情况,我们可以看到部署的FF平台的状态。我们部署的是社区版,最多只能150个人使用,创建的团队不能超过50个,项目最多50个,设备最多50个。版本信息:Forge Application v1.4.0NodeJS v16.18.1 超管用户管理 超管可以在用户列表页面管理用户,新增,邀请用户,编辑用户所有信息,或删除用户。创建用户时并不能直接将其加入某个团队,但可以为新建的用户,创建一个个人团队。创建用户,也可以指定该用户是否是超管。 超管团队管理 超管角色下,http://127.0.0.1:3000/admin/teams。会列出系统中所有团队。在该列表中,并没有能操作团队的按钮,用户需要点击团队名,进入团队内部才能操作团队资源。 超管 项目类型 在项目类型管理里,超管可以看到每一个项目类型下有多少个项目,使用了多少个栈。创建项目类型,项目类型可以和stack绑定。 超管 实例栈 之前有说过,这里提到的栈,就是指Node-RED实例的版本及分配的内存,这在创建栈时也说明了这一点。但个人感觉,这里的填写node-red版本 是很不好的体验,应该拉取已经 发布的官方node-red版本列表,供用户选择。选择题要比简答题好做很多。 超管 模板 在模板管理页面, 超管可以创建模板,在这些模板里,用户可以预设一些示例名称,权限管控,ui路径,以及能否安装节点。和环境变量。 但目前和Node-RED的配置相比,明显少很多, 创建好的模板,并不能直接使用,你还需要设置为active。 注意,只能有一个活跃的模板,在创建项目时,都会使用这个活跃模板来创建。个人感觉这里设计的有些奇怪。既然你可以创建多个模板,为什么不在创建项目时,选择使用那个模板那?或者说,这是一个付费版的功能?但我并没有看到专业版有这样的描述。 超管活动 超管在http://127.0.0.1:3000/admin/audit-log 页面,可以看到系统中发生的一切活动,谁登录了系统,退出了系统,创建了什么。等等。对于审计监控比较方便。 超管设置 在超管设置页面,管理员可以设置,一些系统基本的操作,比如注册一个用户后,是否自动为新用户创建一个团队,是否允许新用户邀请其他人。是否开启注册功能。以及 总结 今天的文章就写到这里,总体来说,FF还有很多优化的空间,比如国际化,比如UI的调整,比如Node-RED版本输入框改为下拉框。 --- ### 435. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 FlowForge 概念 FlowForge(以下简称FF)能够使创建和管理Node-RED实例变得非常简单。为了实现这一点,FlowForge引入了很多概念,本篇文章就来简单聊一聊这些概念,他们是FF的重要组成部分,了解他们能够帮助我们理解整个产品的组成架构。 项目 类型 栈 模板 快照 部署 团队 设备 项目 在FF中,每一个Node-RED实例就代表一个项目。在FF应用中,你可以创建创建,启动,停止一个项目,也可以查看它的日志。 每一个项目都代表一个Node-RED实例,但在集成这些实例时,可以使用不同的自定义配置。 在Docker和Kubernetes中启动的FF实例,开发者可以通过项目名作为hostname来进入一个项目。这意味着项目名必须符合DNS安全。即a-z,0-9,-。并且不能以数字开始。 项目类型 当你创建一个项目时,你可以从管理员设置的类型列表中选择一个类型。例如,每一个类型能够提供不同数量的内存和CPU。在未来,在类型上还会有更多的特性可以设置。 如果你用的是专业版,每一个类型都有不同的月供(哈哈…)。 项目堆栈 项目的堆栈,可以简单理解为项目运行时的属性。包括以下属性:Node-RED的版本,内存,CPU分配。这些特殊的细节是依赖于FF是如何运行的,以及运行在哪里。项目堆栈可以被平台管理员来创建,当一个用户要创建新的项目时,他们就可以通过选择项目类型 来选择选自己需要的堆栈。 项目模板 项目模板描述的是Node-RED实例自己的属性,这些属性很多都与Node-RED的配置文件类似。但它也支持在设置一些预安装的节点。提供一组默认流并更改编辑器的外观。 除了以上特性,项目模板总也可以使用一些环境变量。你可以指定某一个环境在项目中是否只读,但你无法禁用它。(官方备注:并不是所有的特性目前都已实现。 歪头笑) 项目快照 项目快照就是项目某一个时间点的备份,它包含了流,证书,和运行时设置。 快照能够在FF的面板中创建和删除。在面板中,你也可以项目回滚到一个较新的快照。 项目部署 每个FlowForge项目都部署了Node-RED,由FlowForge托管,在相同的域。对于一个FlowForge项目,有两种类型的部署: 托管在FF上目前,这种类型的部署包括节点RED的单个实例 托管在与FlowForge相同的域中,并通过项目设置进行配置。 远程部署远程的部署通过使用 FlowForge Device Agent来进行创建和管理。你可以绑定已经存在的设备到项目中,并且对这些设备设置一个目标快照,FF将自动地将快照部署到项目下的任何设备。 团队 每一个项目都属于一个团队,只有该团队的成员才有权限进去到Node-RED的编辑器中。成员可以有不同的角色。使用团队来限制权限,隔离项目,这就满足了多租户使用场景。 设备 FF平台可以管理运行在远程设备上的项目。为了实现这一目的,FF提供了设备代理这一工具。用户必须在远程设备上安装它,通过它,远程设备与FF平台建立联系,接受更新。 设备被注册到一个团队里,并且被指派到这个团队的项目中。用户可以创建一个项目快照,并将它应用在设备上。FF平台将部署快照到该项目下的所有设备上。 为了进一步简化设备注册,可以创建Provisioning Tokens以允许设备自动连接到团队,而无需先手动注册。令牌还可以配置为将设备直接分配给团队中的项目。 总结 以上就是FlowForge的几个核心概念。只看概念,不去操作是无法真正体会的每个功能的作用。后面博主会针对每一个概念,都做一下实战讲解。 --- ### 436. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 前面两章都介绍了flowforge的起源和特性,并没有将如何使用它,本章节开始,将开始介绍它的使用。本篇主要讲解在windows系统上如何安装flowforge。 预备环境 在windows系统上安装flowforge需要Nodejs的版本在16及以上,并且Windows版本为 10 或 11。 安装 安装步骤第一步:在c盘下创建flowforge目录,第二步:下载最新版本的资源压缩包,https://github.com/flowforge/installer/releases/latest/download/flowforge-installer.zip 第三步:解压压缩包,将压缩包的内容复制到第一步创建的flowforge目录中。复制后,内容如下,目前最新版本为1.4.0。第四步:双击运行flowforge目录下的install.bat,进行安装所有的项目依赖,过程可能会有点久,喝杯咖啡慢慢等。第五步:安装完成后双击运行 c:flowforgebinflowforge.bat 文件。 如果前面前面一切正常,那么运行后,你将会看到 如下图: 到了这一步,服务就正常启动了。为了windows用户安装方便,官方人员已将将项目安装,启动封装在二个bat文件里。可以说非常地贴心。 除此之外,flowforge还至此docker,linux,macos,k8s安装。 根据控制台的打印,我们可以看到 flowforge服务访问地址 为 http://127.0.0.1:3000 后面的文章会详细讲解启动的配置参数。 初始化设置 flowforge服务启动后,使用浏览器访问 http://127.0.0.1:3000 就可以看到flowforge的页面。第一次访问会到这样的一个页面,应用系统设置。 点击按钮开始进行 管理员账号的设置。 填写完整后,点击下一步 如果你买了商业版的证书可以在这里激活 点击使用 社区版 一切设置完毕,登录系统你看到这一的页面。说明系统初始化,登录成功。 总结 总体第一次的安装,注册,是很顺畅的。就像当初自己玩node-red那样顺畅。后面讲解更多功能。欢迎关注。 --- ### 437. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 上一篇文章,我们简单了解了一下flowforge这个平台,它是用来弥补node-red的不足,一个社区的多租户,devops平台。并且介绍了为什么要使用flowforge。那么本篇文章就来讲解一下这个平台的特性。 特性 首先flowforge是一个开源的平台,仓库地址 https://github.com/flowforge/flowforge其次它有一个sass平台,不是在共有云上,用户可以注册,付费使用。另外它的版本也分社区版和企业版。以下是它的几大特性 支持大规模 易于实例管理,易于暂停和删除项目。FlowForge让跟踪多个Node RED项目变得轻而易举。FlowForge还提供单点登录,以确保增加规模,同时提供可信的安全性。 部署方便,远程部署 一键部署到数千台设备。轻松地将流远程升级到边缘设备,并了解设备的运行状况和连接情况。 高级协作 FlowForge提供直观的工具来帮助控制对Node RED项目的访问,并在不担心开发冲突的情况下帮助团队的发展。包含开发者自己的流和节点的团队库, 可以方便地在Node RED项目中与团队共享代码。 无摩擦业务流程 FlowForge消除了管理多个Node RED实例的麻烦。FlowForge继续发展并获得进一步增强,以帮助您实现IT和OT集成。 标准化环境 项目模板通过配置Node RED版本和预安装的第三方节点,加快了新流程的启动。FlowForge提供堆栈,以便在Node RED可用时轻松升级到最新版本。 减少运营开销 在跨平台的一致安全性的支持下,FlowForge使托管、部署和管理变得容易。FlowForge还提供集中审计日志记录,为生产环境带来安心和合规性。 社区版和商业版 flowforge提供了两个版本,大多开源产品都是这个玩法。社区版和商业版。与tb一致。社区版需要自行安装,功能有限,而商业版,包括官方提供的flowforge云和自部署。 开源版本与专业版本的功能对比,左开源版本,右专业版。带有时钟的图标,代表正在实现中。(哈哈哈。。。。) 社区版与专业版 功能对比 https://flowforge.com/pricing/ 总结 以上的特性不排除有夸大的宣传,但至少给我们一个希望。平台的发展方向是在努力完善或实现这些特性而开展的。 flowforge的cto knolleary Nick O’Leary是node-red项目的创建者,从IBM出来单干啦? 在2022年11月,flowforge公司融资了750万美元。 --- ### 438. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 使用过node-red 的朋友都很清楚,node-red有很多的优点,编写极少代码就能实现业务,丰富的节点让它可以满足大部分的业务场景,不用重启应用就可以重新部署的新的流.。。。。。。等等特点都让开发者对其爱不释手。但说到它的缺点,那也是有的。不支持多租户,多用户数据未做隔离,数据没有持久化到数据库。随着node-red的迭代,官方人员也意识到,在面对更加复杂的业务场景时,node-red的短板就显的尤为突出,这已经限制了node-red进入更大的市场,比如pass平台。于是官方开始思考开发一个node-red的devops平台,能够管理node-red的多实例,这个平台就是FlowForge。@CSDN 拿我格衫来 FlowForge 介绍 在node-red的文档页面有flowforge的连接。https://nodered.org/docs/getting-started/ 在底部。 在这里它别node-red官方介绍为一种可以运行多个租户的node-red解决方案。 FlowForge提供了一个在Node RED项目上进行协作的平台,可以安装在公有云,也可以安装在个人服务器或本地机器上。@CSDN 拿我格衫来有多种方式运行FlowForge;本地、基于docker或Kubernetes。在评估FlowForge是否适合你时,建议从本地安装开始。 flowforge的官方地址是这个 https://flowforge.com/ 它被描述为一个node-red的devops平台,FlowForge允许组织以连续、协作和安全的方式可靠地交付Node RED应用程序。 为什么使用flowforge 协同开发 FlowForge为Node RED添加了团队协作,允许多个开发人员在单个实例上协同工作。使用FlowForge,开发人员可以轻松共享项目、实时协作并简化工作流,以加快开发和部署。 管理远程部署 许多组织将节点RED实例部署到远程服务器或边缘设备。FlowForge通过在可部署到多个远程目标的节点RED实例上创建快照来自动化此过程。它还允许在某些事情可能不正确的情况下回滚。 简化应用程序交付 FlowForge简化了Node RED应用程序的软件开发生命周期。你可以设置DevOps交付管道,以支持Node RED应用程序交付的开发、测试和生产环境。 灵活的FlowForge部署 你可以轻松使用FlowForge,官方提供了一套FlowForge云、托管云服务或自托管解决方案。使用这套方案,就将服务器运维交给了官方。你可以自由选择最适合您的组织的部署方法。 对节点RED部署的专业支持 FlowForge是为基于Node RED的业务关键型应用程序提供专业支持的值得信赖的合作伙伴。官方的专家可以帮助开发者应对任何挑战,确保Node RED应用程序平稳、安全地运行。为系统提供最新版本的Node RED和安全更新,确保操作连续性。 以上五个理由是官方给出的,个人认为前3个理由是大多数选择FlowForge的充分理由。 总结 本篇文章是为了让你对FlowForge有个大致的认识,总的来说,这个平台是21年7月份开源的,虽然说不上多成熟,但核心功能是已经有啦。所以后面我会写一个系列来讲解FlowForge的各个方面。敬请关注。 --- ### 439. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 本篇文章介绍一种比较复杂的排版方式,是一种树形组件集成了表格组件,树的每一个节点都具有一行配置。对比产品页面如下: 需求分析 看个这个页面,我们首先想到的是,一个树组件,和一个表格组件。如果要把右侧当成表格组件坐起来是比较复制的。因为涉及到树节点的折叠,对应的行也要折叠。所以最简单的办法是,模拟右侧的表格,将每一行写到树节点中。这样,折叠节点时,对应的行也相应被折叠。 代码实现 顶部的表头是一个单独的div实现,向右偏移。 <div class="top-header"> <div class="col-item"> Row count </div> <div class="col-item"> Column count </div> <div class="col-item"> Custom SQL </div> <div class="col-item"> Freshness </div> <div class="col-item"> Cardinality </div> <div class="col-item"> Uniqueness </div> <div class="col-item"> Nullness </div> <div class="col-item"> Distribution </div> </div> 左侧的树使用element-plus的树组件来展示。每一个节点应该使用插槽来写,这样可以单独处理很多逻辑,比如为不同层级使用不同的icon。每个节点的单元格数量 可以单独设置。单元格数量使用css的类来实现,无法点击的单元格,背景色设置为透明,或与底色设置为一致。每一个单元格显示与否,显示什么颜色, 都与节点的数据和单元格类型有关。所以在获取单元格的css类时,使用单元格类型1和node两个参数。如下<div :class="showCell(1, node)" class="node-rules-cell" /> 特别需要注意的是:树有不同的级别,每一级向右缩进的距离不一样。为了达到书节点的宽度不影响后面单元格的排版。我们需要将树节点的结尾处对齐,所有不同级节点的宽度是不一样的。我们可以这样写。 @levMargin: 16px; .node-info { width: 340px; margin-right: 12px; &.node-lev2{ width: calc(340px - @levMargin) ; } &.node-lev3{ width: calc(340px - @levMargin * 2) ; } &.node-lev4{ width: calc(340px - @levMargin * 3) ; } } 第一级节点的宽度为340px,第二级为340-16,第三级节点的宽度为340 - 16 * 2。以此类推。 一些细节处理就是我们需要为节点的hover,focus 时做一些优化。 .el-tree-node__content:hover .node-rules{ background-color: #fff; } .el-tree-node:focus>.el-tree-node__content .node-rules{ background-color: #fff; } 演示效果 --- ### 440. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 上篇文章 我们讲解了Node-RED中的editor-api模块。它主要是用于提供给前端接口。本篇我们一起看一下Node-RED中的editor-client模块。该模块是前端代码,它决定了我们看到的界面。如果你要修改Node-RED的界面,那么你需要仔细研究它。下面让我们一起来看看吧。 editor-client 在packages/node_modeles/editor-client目录中。主要是四个核心目录 locales 界面上国际化的翻译,如果你要修改某个文本,应该在这里找一下。 public 该目录存放的由编译生成的文件。一般不会修改。 src 流编辑器的核心文件,存放了编辑器所有的业务代码,组件,资源。 templates 程序入口,一个mst文件。editor-client下的第一级目录就是这样子的。 在locales目录下,存放了各个语言版本的翻译。zh-CN为中文简体zh-TW 为中文繁体en-US 英语 先我们着重看一下src目录 src目录 从下往下,目录分别是 ace 存放ace代码编辑器的资源 images 所有的图片资源 js 编辑器代码 至关重要 sass 编辑器样式文件 tours 预设流,用于展示的demo,或版本特性介绍 types ts的声明类型 vendor 外部依赖库,如ace,jquery,monaco,d3,font-awesome 如果你要修改Node-RED页面上的某个图片,图标,可以在images里找一下,然后使用同名的图片文件替换它。 目前Node-RED的版本是3.x。该版本默认的代码编辑器是monaco,但是作为过渡,代码中依然保留了ace编辑器的代码,用户可以切换配置,继续使用ace编辑器。 sass目录存放的是页面上所有的css样式,其中比较重要的是variables.scss 文件。该文件定义了node-red使用的css样式变量,更改这些变量就能一次性修改很多地方的样式。具体每个变量使用的地方,还需要细细琢磨。 在src下,核心的目录是js目录。该目录的入口是main.js。并且所有的方法,变量都是定义在RED对象下的。比如一些事件的订阅,分发events,操作堆栈history,钩子hooks插件plugins,设置,登录用户的UI和逻辑,如果你觉得登录弹窗比较丑,那你可以在user.js中修改修改。 在对Node-RED做二次界面开发时,让人感觉不太舒服的地方是 他的大部分dom结构都是使用jquery拼接起来的。所以在node-red中你基本找不到大串的html代码。比如登录页的弹窗 var dialog = $('<div id="node-dialog-login" class="hide" style="display: flex; align-items: flex-end;">'+ '<div style="width: 250px; flex-grow: 0;"><img id="node-dialog-login-image" src=""/></div>'+ '<div style="flex-grow: 1;">'+ '<form id="node-dialog-login-fields" class="form-horizontal" style="margin-bottom: 0px; margin-left:20px;"></form>'+ '</div>'+ '</div>'); dialog.dialog({ autoOpen: false, classes: { "ui-dialog": "red-ui-editor-dialog", "ui-dialog-titlebar-close": "hide", "ui-widget-overlay": "red-ui-editor-dialog" }, modal: true, closeOnEscape: !!opts.cancelable, width: 600, resizable: false, draggable: false, close: function( event, ui ) { $("#node-dialog-login").dialog('destroy').remove(); RED.keyboard.enable() } }); 虽然UI部分的页面不太好找,但所幸node-red对ui做了一个很好的分类。编辑器绝大部分的UI存放在js/ui目录。如部署按钮,事件日志,按键,通知,粘贴。。。等等 总结 就像很多电器上会贴上“内有高压,非专业人士勿拆”。修改Node-RED也是一样,迁一发而动全身。如果需要定制,请找专业人士。 --- ### 441. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 背景 最近总有读者来向我询问如何定制开发Node-RED,他们想基于自己的项目做一些定制开发。比如调整Node-RED的布局,主题色,增加一些按钮。或者将一些其他功能集成进去。接下来的几篇文章我们就来分析一下NODE-RED的源码。 NODE-RED的核心代码主要在packages/node_modules/@node-red 该目录下。根据最新版,该目录下有6个子目录,分别是: editor-api 编辑器后端代码 editor-client 编辑器前端代码 nodes 默认安装的节点 registry 插件,库,节点的注册管理 runtime 运行时入口,也是node-red的入口 util 辅助工具 本篇首先讲解一下editor-api该目录的作用 及重要源码。方便开发人员开发时能够快速理解,并找到对应的文件。 editor-api 该目录存放的是用于支撑editor-client功能的后端api服务。它是使用express启动的一个应用。依赖@node-red/util和@node-red/editor-client。该模块的入口是./lib/index.js 应用初始化代码 function init(settings,_server,storage,runtimeAPI) { server = _server; if (settings.httpAdminRoot !== false) { adminApp = express(); var cors = require('cors'); var corsHandler = cors({ origin: "*", methods: "GET,PUT,POST,DELETE" }); adminApp.use(corsHandler); if (settings.httpAdminMiddleware) { if (typeof settings.httpAdminMiddleware === "function" || Array.isArray(settings.httpAdminMiddleware)) { adminApp.use(settings.httpAdminMiddleware); } } var defaultServerSettings = { "x-powered-by": false } var serverSettings = Object.assign({},defaultServerSettings,settings.httpServerOptions||{}); for (var eOption in serverSettings) { adminApp.set(eOption, serverSettings[eOption]); } auth.init(settings,storage); var maxApiRequestSize = settings.apiMaxLength || '5mb'; adminApp.use(bodyParser.json({limit:maxApiRequestSize})); adminApp.use(bodyParser.urlencoded({limit:maxApiRequestSize,extended:true})); adminApp.get("/auth/login",auth.login,apiUtil.errorHandler); if (settings.adminAuth) { if (settings.adminAuth.type === "strategy") { auth.genericStrategy(adminApp,settings.adminAuth.strategy); } else if (settings.adminAuth.type === "credentials") { adminApp.use(passport.initialize()); adminApp.post("/auth/token", auth.ensureClientSecret, auth.authenticateClient, auth.getToken, auth.errorHandler ); } else if (settings.adminAuth.tokens) { adminApp.use(passport.initialize()); } adminApp.post("/auth/revoke",auth.needsPermission(""),auth.revoke,apiUtil.errorHandler); } // Editor if (!settings.disableEditor) { editor = require("./editor"); var editorApp = editor.init(server, settings, runtimeAPI); adminApp.use(editorApp); } if (settings.httpAdminCors) { var corsHandler = cors(settings.httpAdminCors); adminApp.use(corsHandler); } var adminApiApp = require("./admin").init(settings, runtimeAPI); adminApp.use(adminApiApp); } else { adminApp = null; } } 在lib下,存在三个目录,分别是admin,auth,editor。三个目录下都有一个index.js 文件,该文件定义接口路由,接口所需要的权限,以及对应的处理函数。 编辑器的登录逻辑,鉴权等都是在该模块处理。登录鉴权在editor-api/lib/auth/index.js 该模块下提供的编辑器相关接口存放在editor-api/lib/editor目录下。比如国际化,证书,主题,设置, editor-api中的接口底层是要调用运行时的接口。比如admin/context中的删除函数。就是调用了 runtimeAPI runtimeAPI.context.delete(opts).then(function(result) { res.status(204).end(); }).catch(function(err) { apiUtils.rejectHandler(req,res,err); }) 看到这里相信大家都已经明白,用户点击编辑器中的某个按钮,请求接口,用户的请求首先到底editor-api该模块中,有些逻辑是在该模块下直接处理,返回给客户端。而有些是又调用了runtime中的函数,经过运行时的处理。最终返回给用户的客户端。 比如打开node-red的编辑器会请求一个flows的接口,http://127.0.0.1:1880/flows?_=1676345536746 在admin/index.js中可以找到adminApp.get("/flows",needsPermission("flows.read"),flows.get,apiUtil.errorHandler);如下图定义路由入口 定义处理函数 这就是路由/flows对应的处理函数flows.get。 注入此类,你在浏览器中看到的每一个请求都可以在editor-api中找到对应的路由配置。当然有些是使用的通配符。走的静态资源加载。 总结 要想改造NODE-RED 就必须懂得,如何根据看到的页面,接口来找到对应的代码。有时候代码只需要修改一行,但找到这行代码的位置却需要半天。 --- ### 442. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 在前面的章节中我介绍了如何在Node-RED中处理json与xml格式的数据。但随后又有读者向我询问,在node-red中如何处理yaml格式的数据,以及csv格式的数据。yaml格式的数据是随着这几年云原生而大行其道的数据格式。因为不需要中括号,格式优雅,而收到开发人员的喜爱。云原生中的资源定义都可以使用yaml文件来定义。CSV格式是实施分隔的文本文件。可以与excel中的数据互相转化。 YAML格式的数据处理 处理yaml格式数据主要使用的是yaml节点。该节点可以实现 在YAML格式的字符串及其JavaScript对象即json数据格式之间相互转换。 输入:payload object | 字符串JavaScript 对象或YAML字符串。 输出:payload object | 字符串● 如果输入是YAML字符串,它将尝试将其解析为JavaScript对象。● 如果输入是JavaScript对象,它将创建一个YAML字符串。 以下是一个示例:可以将yaml的字符串转换为json对象 如字符串变量 {"a":1, "b":[1,2,3]} 转换成yaml 就变成了 a: 1 b: - 1 - 2 - 3 完整的数据流 [{"id":"f231967.0251a68","type":"inject","z":"64133d39.bb0394","name":"YAML String","topic":"","payload":"{\"a\":1}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":320,"wires":[["a0110756.ecfa48"]]}, {"id":"8f8f31b7.1f916","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":320,"wires":[]}, {"id":"5138ba3.c972444","type":"inject","z":"64133d39.bb0394","name":"Object","topic":"","payload":"{\"a\":1, \"b\":[1,2,3]}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":360,"wires":[["2fa653cc.60d3dc"]]}, {"id":"50f2f4c.4a6e60c","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":360,"wires":[]}, {"id":"a0110756.ecfa48","type":"template","z":"64133d39.bb0394","name":"","field":"payload","fieldType":"msg","format":"yaml","syntax":"plain","template":"a: 1\nb:\n - 1\n - 2\n - 3","output":"str","x":280,"y":320,"wires":[["104b80e2.51068f"]]}, {"id":"2fa653cc.60d3dc","type":"yaml","z":"64133d39.bb0394","property":"payload","name":"","x":250,"y":360,"wires":[["50f2f4c.4a6e60c"]]}, {"id":"104b80e2.51068f","type":"yaml","z":"64133d39.bb0394","property":"payload","name":"","x":430,"y":320,"wires":[["8f8f31b7.1f916"]]}] CSV格式的数据处理 对于CSV格式,一种是要输出CSV格式的数据,如,每行以逗号隔开。CSV格式的数据处理离不开node-red自带的csv节点。 在CSV格式的字符串及其JavaScript对象表示形式之间进行相互转换。 输入: payload object | 数组 | 字符串 JavaScript对象,数组或CSV字符串。 输出: payload object | 数组 | 字符串 如果输入是字符串,它将尝试将其解析为CSV,并为每行创建键/值对的JavaScript对象。然后该节点将为每行发送一条消息,或者发送一条包含对象数组的消息。 如果输入是JavaScript对象,它将尝试构建CSV字符串。 如果输入是简单值的数组,则将构建单行CSV字符串。 如果输入是数组数组或对象数组,则会创建多行CSV字符串。 列模板可以包含列名称的有序列表。将CSV转换为对象时,列名将用作属性名称。或者也可以从CSV的第一行中获取列名称。 转换为CSV时,列模板用于标识从对象中提取的属性以及提取的顺序。 如果输入是数组,则列模板仅用于有选择地生成一行列标题。 只要正确设置parts属性,该节点就可以接受多部分输入。 如果输出多个消息,则将设置其parts属性并形成完整的消息序列。 注意:列模板必须用逗号分隔,即使数据中已有了其他分隔符。 CSV 节点的配置页面 csv节点可以将json数据格式,转为为字符串。如 { a: 10, b: 20, c: 30 } 通过CSV可以转化为"10,20,30\n"你也可以通过它来转化数组如下面的数组, [ { a: 80, b: 18, c: 2}, { a: 52, b: 36, c: 10}, { a: 91, b: 18, c: 61}, { a: 32, b: 47, c: 65}, ] 通过CSV可以转化为 a,b,c 80,18,2 52,36,10 91,18,61 32,47,65 完整的例子流代码 [{"id":"457d9ad6.b737b4","type":"inject","z":"64133d39.bb0394","name":"single","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":640,"wires":[["1e05fafd.887b05"]]},{"id":"1e05fafd.887b05","type":"change","z":"64133d39.bb0394","name":"Generate single payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{ \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":640,"wires":[["e9546682.b39898"]]}, {"id":"e9546682.b39898","type":"csv","z":"64133d39.bb0394","name":"","sep":",","hdrin":"","hdrout":false,"multi":"one","ret":"\\n","temp":"a,b,c","skip":"0","x":450,"y":640,"wires":[["f83ad3b0.78d32"]]}, {"id":"f83ad3b0.78d32","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":640,"wires":[]}, {"id":"ae242f2c.d1c8a","type":"inject","z":"64133d39.bb0394","name":"array","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":700,"wires":[["7535f521.4a88bc"]]}, {"id":"7535f521.4a88bc","type":"change","z":"64133d39.bb0394","name":"Generate array payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"[\t { \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())},\t { \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())},\t { \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())},\t { \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())}\t]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":700,"wires":[["f4e0465f.ef0338"]]}, {"id":"f4e0465f.ef0338","type":"csv","z":"64133d39.bb0394","name":"","sep":",","hdrin":"","hdrout":true,"multi":"one","ret":"\\n","temp":"a,b,c","skip":"0","x":450,"y":700,"wires":[["6eb67fdf.58626"]]}, {"id":"6eb67fdf.58626","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":700,"wires":[]}] csv转json 除此之外CSV节点还可以将CSV格式的数据 进行转化,转成成JSON数据。这是一个CSV格式的数据 a,b,c 80,18,2 52,36,10 91,18,61 32,47,65 通过CSV节点,它可以转化为标准的JSON格式 [ { a: 80, b: 18, c: 2}, { a: 52, b: 36, c: 10}, { a: 91, b: 18, c: 61}, { a: 32, b: 47, c: 65}, ] --- ### 443. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 背景 作为一名研究Node-RED的博主,经常会有读者留言向我询问一些问题的解决方案。本篇文章就谈一谈最近遇到的两个问题,比较典型。拿出来分析一下,大家可以学习学习。一共有二个问题:1:在node-red中如何实现调用系统音频播放动态文本?2:如何实现dashboard中的3个tab循环显示? 问题描述 第一个问题是要使用调用系统的音频硬件来播放动态内容,这种场景很常见,比如检测到一个设备的温度过高,在Node-RED接收到设备的告警后,会播放设备的报警音频。比如“设备A温度过高,请及时处理。”通过音频播放来传递信息,要比一直盯着电脑屏幕来的实在。这个问题如果是音频文件的话倒不难解决,在html中我们使用audio来播放音频,只要你的电脑有播放设备,就能发出声音。但这里说的是要播放一段文本。一个字符串或数字变量。这就需要查一下资料啦。 第二个问题,我们在使用dashboard制作大屏显示时。有时会涉及多个Tab用来内容的分类显示,且页面同一时间只能显示一个Tab。这就需要一种循环显示每个Tab的机制,来让观光查看的用户获取完整信息。 比如每隔5秒钟,就切换到下一个Tab页。该问题比较难的是,在node-red中无法控制tab的切换,dashboard节点没有暴露出相关的配置,告诉我们当前显示的是那个tab,如何跳转到某个具体的tab。 如下图 一个dashboard中存在多个Tab。 实现思路 第一个问题,需要使用的是JavaScript API是speechSynthesis与SpeechSynthesisUtterance 网页语音API的SpeechSynthesis 接口是语音服务的控制接口;它可以用于获取设备上关于可用的合成声音的信息,开始、暂停语音,或除此之外的其他命令。 创建合成声音需要SpeechSynthesisUtterance这个对象。利用它你可以创建一个合成的声音,可以使用变量来控制合成剩余的速度,语言,音量等属性。下面是一个非常简单的示例 const synth = window.speechSynthesis const u = new SpeechSynthesisUtterance() u.lang = 'zh-CN' u.rate = 1 u.text = '桂花香' synth.speak(u) 这就是第一个问题的答案,如果要播放动态内容的话,内容是从哪个上游传递下来的,我们可以使用template监听上游的msg,在回调函数中播放动态内容。如下 <script> (function(scope) { scope.$watch('msg', function(msg) { if (msg) { const synth = window.speechSynthesis const u = new SpeechSynthesisUtterance() u.lang = 'zh-CN' u.rate = 1 u.text = 'msg.payload' synth.speak(u) } }); })(scope); </script> 第二个问题,经过查询资料dashboard确实没有相关资料,但在切换tab时我发现页面的url中有一部分改变了,确切说是hash那部分,随着切换tab而改变。这意味着我们重定向当前页面,改变url,就能显示我们想要的Tab 在tab中的template节点中我们只需要定时跳转到下一个tab,就能形成一个循环如下 <script> setTimeout(()=> { location.href = './#!/1' }, 2000) </script> 完整代码 [{"id":"a3cac8fa89348ff4","type":"tab","label":"流程 1","disabled":false,"info":""},{"id":"ea401302bd11e20a","type":"inject","z":"a3cac8fa89348ff4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":200,"y":120,"wires":[["1ed565c47e882d78","05df5da79857332c","96fef40df595e471"]]},{"id":"1ed565c47e882d78","type":"ui_template","z":"a3cac8fa89348ff4","group":"cbb46b0d06d43956","name":"Tab1","order":2,"width":0,"height":0,"format":"tab1n<script>n (function(scope) {n scope.$watch('msg', function(msg) {n if (msg) {n const synth = window.speechSynthesisn const u = new SpeechSynthesisUtterance()n u.lang = 'zh-CN'n u.rate = 1n u.text = 'msg.payload'n synth.speak(u)n }n });n})(scope);n setTimeout(()=> {n location.href = './#!/1'n }, 2000)n</script>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":410,"y":120,"wires":[[]]},{"id":"05df5da79857332c","type":"ui_template","z":"a3cac8fa89348ff4","group":"13f004c6b59bc839","name":"Tab2","order":0,"width":0,"height":0,"format":"tab2n<script>n setTimeout(()=> {n location.href = './#!/2'n }, 2000)n</script>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":410,"y":220,"wires":[[]]},{"id":"96fef40df595e471","type":"ui_template","z":"a3cac8fa89348ff4","group":"f8c018c8eb60cd75","name":"Tab3","order":1,"width":0,"height":0,"format":"tab3n<script>n setTimeout(()=> {n location.href = './#!/0'n }, 2000)n</script>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":410,"y":320,"wires":[[]]},{"id":"cbb46b0d06d43956","type":"ui_group","name":"g1","tab":"d00f486ab56bd2ee","order":1,"disp":true,"width":"6","collapse":false},{"id":"13f004c6b59bc839","type":"ui_group","name":"g2","tab":"84ef8f9a5d83da7d","order":1,"disp":true,"width":"6","collapse":false},{"id":"f8c018c8eb60cd75","type":"ui_group","name":"Default","tab":"d2e2e3a672a99ef1","order":1,"disp":true,"width":"6","collapse":false},{"id":"d00f486ab56bd2ee","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false},{"id":"84ef8f9a5d83da7d","type":"ui_tab","name":"Home2","icon":"dashboard","disabled":false,"hidden":false},{"id":"d2e2e3a672a99ef1","type":"ui_tab","name":"Home3","icon":"dashboard","disabled":false,"hidden":false}] 总结 遇到问题要善于查阅文档,优先查官方文档,官方没有的话,就要好好利用搜索引擎,最后要加上敏锐的观察,了解事物之间的联系,方能达到无惑境界。 相关链接 SpeechSynthesis SpeechSynthesisUtterance --- ### 444. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 在node-red中,如果你想要请求外部资源,比如获取当地天气,这个时候就可以使用http request节点,这个节点可以让你的node-red应用集成各种接口,数据。不受跨域的限制,可以访问大部分的http接口。支持的请求方法也比较全,GET,PUT,POST,PATCH或DELETE都是可以的。并且支持自定义头部,cookie,请求地址模板化,上传文件,请求超时。等各种强大的功能。本篇文件就来详细介绍一下他的各种用法,帮助大家快速地掌握起来,提升工作效率。 节点配置概述 该节点 有输入,有输出输入的配置项有这些 url 如果未在节点中配置,则此可选属性设置请求的url。method 如果未在节点中配置,则此可选属性设置请求的HTTP方法。必须是GET,PUT,POST,PATCH或DELETE之一。headers 设置请求的HTTP头。cookies 如果设置,则可用于发送带有请求的cookie。payload 发送为请求的正文。rejectUnauthorized 如果设置为false,则允许对使用自签名证书的https站点进行请求。followRedirects 如果设置为false,则阻止遵循重定向(HTTP 301)。默认情况下为truerequestTimeout 如果设置为正数毫秒,将覆盖全局设置的httpRequestTimeout参数。 输出的参数 payload 响应的正文。可以将节点配置为以字符串形式返回主体,尝试将其解析为JSON字符串或将其保留为二进制buffer。statusCode 响应的状态码,如果请求无法完成,则返回错误码。headers 包含响应头的对象。responseUrl 如果在处理请求时发生任何重定向,则此属性为最终重定向的URL。否则则为原始请求的URL。responseCookies 如果响应包含cookie,则此属性是每个cookie的‘名称/值’键值对的对象。redirectList 如果请求被重定向了一次或多次,则累积的信息将被添加到此属性。“location”是下一个重定向目标。cookie是从重定向源返回的cookie。 以上是翻译的官方英文文档。下面我们看一下具体的特殊用法。 使用代码来配置http request节点 该节点的输入参数,可以在配置面板里,配置, 但同时也可以在流中设置。比如你要用GET方法请求https://fizzz.blog.csdn.net/地址。 除了在面板里配置外,你还可以这样在http request接口前使用function节点这样请求参数 msg.method = 'GET' msg.url = 'https://fizzz.blog.csdn.net/' 除此之外,你还可以设置多个自定义的Headers如例 msg.method = 'GET' msg.url = 'https://fizzz.blog.csdn.net/?name=fizz&age=18' msg.headers = {} msg.headers['X-Auth-User'] = 'fizz' msg.headers['X-Auth-Key'] = 'fizz-key' 在配置http request 节点的配置参数中,你可以使用模板来引用msg中的变量如下,将url配置成这样https://{{domin}}.blog.csdn.net/ 变量domin在上游注入到msg中msg.domin。 当你使用的是POST请求时,参数应该这样设置 msg.method = 'POST' msg.url = 'https://fizzz.blog.csdn.net/?name=fizz&age=18' msg.payload = {} msg.payload.name = 'fizz' msg.payload.key = 'fizz-key' 表单数据,文件上传 如果请数据为表单数据,应将msg.headers[“content-type”]设置为application/x-www-form-urlencoded。 对于上传文件的场景,需要特殊设置一下http request节点 要执行文件上传,应将msg.headers[“content-type”]设置为multipart/form-data和msg.payload传递给节点的必须是具有以下结构的对象: { "KEY": { "value": FILE_CONTENTS, "options": { "filename": "FILENAME" } } } KEY,FILE_CONTENTS和FILENAME的值应设置为适当的值。 --- ### 445. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 在node-red中如果你没有找到自己需要的节点时,那么你可以自定义一个节点来满足自己的需求。之前的文章中,我有简单介绍过如何创建一个节点,并以转换大小写来举例。例子虽然简单,但可以让大家了解创建自定义节点的步骤以及一个节点的组成部分。那么本篇将会聚焦在自定义节点的js文件中。详细讲解其中的api,及其他配置项。通过之前的文章我们知道,节点的js文件是一个节点的核心文件,用于收取配置参数,处理业务逻辑,并向下游发送数据。下面让我们一起看看吧。 自定义节点JavaScript 文件 节点构建器 所有的节点都是由一个构建器来生成的函数,是创建的一个新的实例。这个函数被注册到运行时中,这个函数通过设置一个配置对象来存在于流编辑器中。在该函数中,第一件事就是调用RED.nodes.createNode函数,来序列化特性,被其他节点共享。在这之后 就可以编写业务代码啦。如下 接受信息 节点通过注册一个input事件来接受上游节点下发的信息在整个流中。注册事件时,在事件的回调函数里,会有msg和send两个参数,msg就是上游传递过来的数据。send是要下发到下游的一个函数。第三个函数 done 是节点完成业务逻辑处理后调用的函数。示例 function SampleNode(config) { RED.nodes.createNode(this,config); // node-specific code goes here } RED.nodes.registerType("sample",SampleNode); 接受信息 节点通过注册一个input事件来接受上游节点下发的信息在整个流中。注册事件时,在事件的回调函数里,会有msg和send两个参数,msg就是上游传递过来的数据。send是要下发到下游的一个函数。第三个函数 done 是节点完成业务逻辑处理后调用的函数。示例 this.on('input', function(msg, send, done) { // do something with 'msg' // Once finished, call 'done'. // This call is wrapped in a check that 'done' exists // so the node will work in earlier versions of Node-RED (<1.0) if (done) { done(); } }); 下发信息 在自定义节点中向下游发送信息非常的简单只需要使用send函数即可,如下 var msg = { payload:"hi" } this.send(msg); 如果节点想要在input事件中向下游发送信息,可以这样做 let node = this; this.on('input', function(msg, send, done) { // For maximum backwards compatibility, check that send exists. // If this node is installed in Node-RED 0.x, it will need to // fallback to using `node.send` send = send || function() { node.send.apply(node,arguments) } msg.payload = "hi"; send(msg); if (done) { done(); } }); 在input事件的回调函数中,有三个参数,第一个是接受到的信息,第二个是send函数,第三个是done函数。分别有不同的使用场景。 如果要向下游输入多个参数可以这样写 this.send([ msg1 , msg2 ]); this.send([ [msgA1 , msgA2 , msgA3] , msg2 ]); 日记事件 在自定义节点中打印日志,只需在this下调用log,warn等方法即可。日志会在控制台中打印出来。 this.log("Something happened"); this.warn("Something happened you should know about"); this.error("Oh no, something bad happened"); // Since Node-RED 0.17 this.trace("Log some internal detail not needed for normal operation"); this.debug("Log something more details for debugging the node's behaviour"); 设置状态 有些节点为了表明已经配置成功,或配置有误,会有一个状态显示。该状态也是在js文件中设置的,只需要调用status即可。如下 this.status({fill:"red",shape:"ring",text:"disconnected"}); fill 状态的颜色shape 状态的图标text 状态的文本 自定义节点设置 如果你在制作节点时,想要将节点的一个属性配置到setting文件中,那么可以这样做。假如你的节点类型为,fizz-node,并将其中的color 放到setting文件中,那么在setting文件中你需要这样配置fizzNodeColor。在使用时,使用RED.settings.fizzNodeColor来访问。 --- ### 446. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 默认地,node-red编辑器可以被任何访问的用户操作,包括修改节点,流数据,重新部署流。这种默认的部署方式只适用于运行在可靠的网络中。下面我就给大家介绍一下,在公网上部署node-red后,如何对其进行安全加固和权限验证。主要分为三部分 开启https权限 保护编辑器和admin api 保护http节点和node-red的仪表盘 开启https node-red默认是使用http来进行访问,如果要配置https访问,你需要在node-red的配置文件setting文件中配置一下https部分的内容在配置文件中 https配置项可以是一个json静态数据,也可以是一个函数。完整的配置参数事nodejs中http模块的配置 点击链接可以查看到完整的配置 在该配置项中,至少要有二项需要返回或配置。 key PEM格式化后的密钥,类型可以是String 或Buffer cert PEM格式化后的 Cert chain,类型可以是String 或Buffer 配置的例子 https: { key: require("fs").readFileSync('privkey.pem'), cert: require("fs").readFileSync('cert.pem') }, 如果你要配置成一个function的话,请记得将key与cert放到promise中,如下 https: function() { return new Promise((resolve, reject) => { var key, cert; // Do some work to obtain valid certificates // ... resolve({ key: key cert: cert }) }); } 如果你要在配置https后,自动刷新证书,并且不用重启node-red,node-red也是能做到的,需要nodejs在11之上,并且https必须配置成function,接着设置 httpsRefreshInterval,类型为一个数字,表示几小时内循环自动刷新。 编辑器与Admin API的鉴权 node-red的编辑器与Admin api支持两种类型的鉴权 使用用户名 密码证书来进行鉴权 使用任何OAuth/OpenID提供商来进行鉴权,如Twitter活GitHub。 基于用户名和密码的鉴权只需要在setting配置文件中配置即可如下是一个配置示例 adminAuth: { type: "credentials", users: [ { username: "admin", password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.", permissions: "*" }, { username: "george", password: "$2b$08$wuAqPiKJlVN27eF5qJp.RuQYuy6ZYONW7a/UWYxDTtwKFCdB8F19y", permissions: "read" } ] } 管理员可以配置多个用户。这些用户的登录及权限数据都是写死的。包括登录的账号,密码,和权限。其中密码是使用bcrypt 算法工具进行hash加密。生成hash密码可以使用 node-red admin hash-pw(在node-red 1.1.0 之后) 使用OAuth/OpenID来进行授权 dminAuth: { type:"strategy", strategy: { name: "twitter", label: 'Sign in with Twitter', icon:"fa-twitter", strategy: require("passport-twitter").Strategy, options: { consumerKey: TWITTER_APP_CONSUMER_KEY, consumerSecret: TWITTER_APP_CONSUMER_SECRET, callbackURL: "http://example.com/auth/strategy/callback", verify: function(token, tokenSecret, profile, done) { done(null, profile); } }, }, users: [ { username: "knolleary",permissions: ["*"]} ] } 配置项详解:name: 策略名称lable/icon:在登录页显示的信息strategy:需要使用到的库options:根据strategy来进行配置,需要使用的参数verify:验证函数,最后使用done函数将用户资料向下传递 设置默认用户 如果你想要限定没有登录时,node-red的一些权限,可以使用设置默认用户的方式来实现配置一个默认用户,并配置其对于的权限。权限可以是全部,也可以是只读。如下是一个例子 adminAuth: { type: "credentials", users: [ /* list of users */ ], default: { permissions: "read" } } 除来 * 和 read 两种大模块的权限限定外,管理员还可以配置Admin API例如为了获取当前流的信息,用户将会要求 flow.read权限。如果要更新流信息,他们需要使用flows.write权限。 自定义用户鉴权 目前介绍的用户鉴权都是硬编码的鉴权,写死用户数据及对于的权限。这种方式不方便扩展,所以node-red又提供了另一种方式,自定义用户鉴权。以下是实现步骤创建 <node-red>/user-authentication.js 按照以下模版编写授权代码 module.exports = { type: "credentials", users: function(username) { return new Promise(function(resolve) { // Do whatever work is needed to check username is a valid // user. if (valid) { // Resolve with the user object. It must contain // properties 'username' and 'permissions' var user = { username: "admin", permissions: "*" }; resolve(user); } else { // Resolve with null to indicate this user does not exist resolve(null); } }); }, authenticate: function(username,password) { return new Promise(function(resolve) { // Do whatever work is needed to validate the username/password // combination. if (valid) { // Resolve with the user object. Equivalent to having // called users(username); var user = { username: "admin", permissions: "*" }; resolve(user); } else { // Resolve with null to indicate the username/password pair // were not valid. resolve(null); } }); }, default: function() { return new Promise(function(resolve) { // Resolve with the user object for the default user. // If no default user exists, resolve with null. resolve({anonymous: true, permissions:"read"}); }); } } 最后在setting文件的adminAuth中配置adminAuth: require("./user-authentication") 结语 以上就是本篇的全部内容,这些内容对于想要精细化控制node-red的权限尤为重要,特别是要将其改造为一个多租户系统时。 谢谢观看。 --- ### 447. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 在使用node-red处理各种业务场景时,我们时常会遇到各种各样的数据格式,最常见的是json数据格式,其次还有xml,yaml,以及csv格式的数据格式。这些都是需要我们对其数据格式有一点解析和转化的能力,今天这篇文章我就来教大家如何处理json 和 xml数据格式。 node-red中json格式的转换 在node-red中处理json数据格式是最简单的。最主要的原因是node-red本身就是使用javascript语言来编写的。而javascript中最常用的就是json数据格式。声明一个json数据格式很简单。 # json 数据的声明 const person = {name: 'fizzz', age:12} # 打印数据 console.log(person.name) # 重新赋值 person.name = 'tom' json 数据格式的操作就是这样的简单。 下面是一个json转换的流,大家可以从这个流中体验的对json数据的操作。 [{"id":"634256b7.2d6818","type":"inject","z":"64133d39.bb0394","name":"JSON String","topic":"","payload":"{"a":1}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":80,"wires":[["a2fe0fc8.095e1"]]},{"id":"a2fe0fc8.095e1","type":"json","z":"64133d39.bb0394","name":"","property":"payload","action":"","pretty":false,"x":270,"y":80,"wires":[["9a4ce2b8.47698"]]},{"id":"9a4ce2b8.47698","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":80,"wires":[]},{"id":"80032e2.7c92cd","type":"inject","z":"64133d39.bb0394","name":"Object","topic":"","payload":"{"a":1}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":120,"wires":[["cd40a0f4.4f5ac"]]},{"id":"cd40a0f4.4f5ac","type":"json","z":"64133d39.bb0394","name":"","property":"payload","action":"","pretty":false,"x":270,"y":120,"wires":[["478b4106.4fd7c"]]},{"id":"478b4106.4fd7c","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":120,"wires":[]}] 效果图如下:json 数据的处理主要是借助来json核心节点,它可以将字符串与json数据互转。 非常方便。如果转换失败就会报错。json 节点的详细配置如下: 输入参数:payload:object | 字符串JavaScript对象或JSON字符串。schema:object可选的JSON Schema对象用于验证有效负载。在将msg发送到下一个节点之前,将删除该属性。 输出参数:payload:object | 字符串如果输入是JSON字符串,它将尝试将其解析为JavaScript对象。如果输入是JavaScript对象,它将创建一个JSON字符串。并可以选择对此JSON字符串进行整形。schema:Error数组如果JSON模式验证失败,则catch节点将具有包含错误数组的schemaError属性。 node-red中处理 xml格式的数据 在ndoe-red中处理xml的数据,主要场景是 json数据转换为xml数据,或者xml格式的数据转换为json数据格式。其中主要借助的是xml核心节点,其底层是使用了xml2json这个库。 xml这个节点的需要的输入有二个参数 payload : object | 字符串设置为JavaScript对象或XML字符串。 options:object可以将选项传递给内部使用的XML转换库。请参见 xml2js文档 来获取更多信息。 输出结果是payload : object | 字符串如果输入是字符串,它将尝试将其解析为XML并创建一个JavaScript对象。如果输入是JavaScript对象,它将尝试构建XML字符串。 另外在XML和对象之间进行转换时,默认情况下XML属性会添加到名为$的属性中。将文本内容添加到名为_的属性中。这些属性名称可以在节点设置中更改。 下面是一个例子,大家可以从这个例子感受到node-red对xml数据与json数据格式的转换 [{"id":"1b546d47.9474e3","type":"inject","z":"64133d39.bb0394","name":"XML String","topic":"","payload":"{"a":1}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":260,"wires":[["d72b2bfd.77d068"]]},{"id":"1adf407d.6c4fe","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":260,"wires":[]},{"id":"46638890.8ae758","type":"inject","z":"64133d39.bb0394","name":"Object","topic":"","payload":"{"note":{"$":{"priority":"high"},"to":["Nick"],"from":["Dave"],"heading":["Reminder"],"body":["Update the website"]}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":300,"wires":[["dae1d291.de0d2"]]},{"id":"6fefca67.3669e4","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":300,"wires":[]},{"id":"d72b2bfd.77d068","type":"template","z":"64133d39.bb0394","name":"","field":"payload","fieldType":"msg","format":"text","syntax":"plain","template":"<note priority="high">n <to>Nick</to>n <from>Dave</from>n <heading>Reminder</heading>n <body>Update the website</body>n</note>","output":"str","x":280,"y":260,"wires":[["1746464a.87aa4a"]]},{"id":"1746464a.87aa4a","type":"xml","z":"64133d39.bb0394","name":"","property":"payload","attr":"","chr":"","x":430,"y":260,"wires":[["1adf407d.6c4fe"]]},{"id":"dae1d291.de0d2","type":"xml","z":"64133d39.bb0394","name":"","property":"payload","attr":"","chr":"","x":250,"y":300,"wires":[["6fefca67.3669e4"]]}] 流示意图 --- ### 448. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前言 最近给我的树莓派上的Node-RED(以下简称NR)做了一下升级,从2.x升级到得了3.0。这是一个比较大的版本升级,在用户体验方面,NR有了有很大的提升。下面让我们一起来看一如何升级以及,3.0新增了那些特性 升级3.0 由于之前的NR是直接使用npm来进行安装的,所以此处升级也比较简答,运行以下命令即可 sudo npm install -g --unsafe-perm node-red npm 是一个nodejs 包管理器。当不指定版本时,会下载最新的版本到版本。 需要注意的是,如何是你在Windows上更新3.0,不需要添加sudo。 此外,要使用NR3.0 nodejs的版本也是有一定要求的,必须是14.x或者以上。 在浏览器支持方面,3.0已经放弃了IE。你将不能使用IE浏览器来访问NR的页面。 在升级时,会有三个选项, 是否启用停止流的功能, 是否要禁用运行时诊断功能, 以及是否要切换为Monaoc的编辑器。 以上就是升级3.0需要注意的地方。下面看一下3.0的一些特性。 3.0新增的特性 在编辑器内,引入了一个右键上下文的的菜单,这可以让用户更快地访问内置操作。 另外一个特性就是,我们可以给节点之间的线,打一个“节”。这会让我们的线看起来更加整齐,美观。以下是效果图 交汇点在选项板或流轮廓中不显示为常规节点,但可以通过快速添加对话框(在工作区中按住 Ctrl 单击)或新的上下文菜单添加。这次更新也增强了对于调试的体验,在调试面板里,可以显示打印日志的流,节点路径。 从3.0开始,默认的代码编辑器将从原来的ACE改为Monaco。这对于开发体验是质的提升,因为Monaco正是VSCode的核心编辑器。此外还可以配置多个静态文件夹运行时长期支持提供静态内容文件夹的功能 作为其 HTTP 处理的一部分。用于向网页提供静态资源 等等。在3.0版本中,你现在可以指定要从中服务的多个文件夹,以及更多重要的是,要指定应从中提供每个文件夹的 HTTP 路径。 除了以上比较重大的特性,还有就是,拖动节点到工作区域,有了默认节点的名称,可以进行连续搜索,记住光标的位置,编辑已停止的流。这里就不一一讲解了。大家赶快用起来吧。 若有收获,就点个赞吧 --- ### 449. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Bittly 是一个支持多种通讯方式或通讯协议的通讯调试工具。 支持串口,网络,蓝牙,HTTP,Websocket,MQTT以及Modbus。 支持通过指令绑定快速实现上位机控制面板。支持针对通讯指令进行自动化测试并输出测试报告。 指令调试界面布局 布局说明: 模块:功能模块菜单用于切换当前工作区域的功能内容。 目前该菜单包括指令管理,面板绘制,测试管理,环境变量以及项目管理。 指令目录 :用于管理保存的指令列表,支持文件夹和拖拽管理。点击指令后将会在右侧工作区打开指令详情用于进行调试操作。 打开的指令列表 :显示当前已打开的指令列表,可通过邮件来快速关闭其他指令,也可通过点击 x 图标关闭当前。通过点击Tab标签来进行指令之间的切换操作。 通讯配置 : 通讯配置区域用于配置各种通讯的参数信息,第一个下拉框用于选择通讯方式,例如串口,网络,蓝牙等。 在选择完成通讯方式后,即可配置对应的通讯参数,例如串口号,通讯速率等, 根据通讯方式的不同,所需要配置的通讯参数也不同。 参数构建 :参数构建区域用于构建请求参数,通过上方的单选按钮进行选择参数的构建模式。 HEX模式 :用于快速构建十六进制请求参数内容, 例如 : 01 02 03 AA BB CC 文本模式:用于快速构建文本请求参数内容,例如:how are you 文件模式:用于将一个文件作为请求参数进行发送,支持逐行发送或逐字节发送以及全文发送三种模式。 表单模式:用于快速创建比较复杂的请求参数,通过指定数据类型自动构建请求数据,无需手动进行进制转换或大小端处理。 响应查看 :支持多种方式查看响应内容,便于观察和分析响应数据。 数据流: 数据流模式将会记录每次发送和接收的数据内容,并通过列表的方式显示出来,可点击列表条目查看完整响应内容。 文本:将响应内容解析为文本并显示。 HEX:将响应内容转换为十六进制字符串并显示。 格式化:通过配置数据类型和长度来自动解析和转换接收到的数据。 绘图:将数据通过指定的解析方式进行解析并通过折线图的方式显示。 活跃连接列表 :显示所有当前已经连接的设备或服务,可通过 x 图标断开指定的连接。 控制面板界面布局 布局说明: 面板列表 :每个项目可以创建任意多个控制面板,面板直接可以通过点击的方式进行切换。 面板控制: 显示当前面板名称,以及切换日志,变量列表的显示状态。 或者切换面板的工作模式。 切换到编辑模式可编辑面板组件。 面板组件区域 :面板组件区域用于显示该面板的所有组件,该区域可在编辑模式中通过拖拽的方式自由定义组件以及组件的工作模式。 变量列表 :变量列表用于显示当前面板的所有变量取值,可通过面板控制区域的 变量 按钮来进行切换显示与关闭状态。 指令日志区域 :显示当前面板通讯日志,可通过面板控制区域的 日志 按钮来进行切换显示与关闭状态 Bittly 数据发送可通过新建指令TAB或者从左侧目录中打开一个指令来进行操作。 操作步骤说明: 选择通讯方式, 根据需要选择需要进行通讯的类型,例如串口,网络或其他类型。 通讯方式选择完成后,通讯配置会根据所选择的通讯方式显示出需要配置的参数内容。例如此处选择为 WebSocket 方式,则需要配置连接的服务器地址。 发送请求,当请求参数配置完成后即可点击发送按钮发送数据。如果请求连接没有建立,则会先建立连接然后再进行发送操作。如果连接已经存则会直接发送请求内容。 请求参数构建模式,选择适合的请求参数构建模式,例如,当请求参数比较简单时, 可选择文本或者HEX模式,如果参数比较负责则可以选择表单模式进行快速构建。 请求参数构建,这里以表单模式为例, 根据文档要求的数据类型来进行数据内容构建。名称列用于说明该属性名称,类型用于说明该属性数据类型,取值列用于编辑该属性取值。描述列用于扩展说明该属性,例如取值范围或者其他必要说明。 响应查看模式用于选择合适的响应数据查看方式,例如: 当发送和接收频率比较多,请求内容比较简单时,可使用数据流模式来查看内容交互; 当数据为文本内容时,可使用文本模式查看响应文本; 当数据为二进制数据时,也可以使用HEX模式查看响应数据的十六进制内容; 当数据内容比较复杂,但是属于可解析的结构化数据时,可采用格式化模式自动解析响应内容; 也可以指定或者自定义解析模式来解析数据,并渲染为折线图。 Bittly 数据格式化与解析 当请求内容比较复杂的时候,通过手动创建二进制数据就变得十分棘手,现在我们可以通过 Bittly 来改变这种情况。 请求参数构建 例如,我们以Modbus协议中读取数据为例, 在文档中要求我们传递的参数如下: 则我们我们可以使用表单来进行创建该结构: 名称 :用于标记该属性的名称 类型 :指定该属性的数据类型,支持的数据结构如下:字节(uint8),单字节整型(int8),字符(int8/char), 无符号字符(uint8), 短整型(uint16), 无符号短整型(int16), 整型(int32), 无符号整型(uint32),长整型(int32), 无符号长整型(uint32) , 长长整型(int64), 无符号长长整型(uint64), 单精度浮点型, 双精度浮点型, 字符串, 字节数组, 文件 。 取值:编辑属性取值。 当属性为无符号数据时,可以指定取值格式为 二进制(BIN), 八进制(OCT), 十进制(DEC) 或 十六进制(HEX), 并且在数据发送时自动进行转换操作。 可以使用占位符 {{env.name}} 来使用环境变量中的数据,例如有环境变量 测试=YES, 则在数据发送时 {{env.测试}} 会被替换为 YES。 可以使用占位符 {{name}} 来使用脚本中的变量,例如在脚本中执行 $this.variableSet("变量","HELLO"); 则 {{变量}} 在发送时会被替换为 HELLO 可以使用状态占位符 {{status.name}} 来使用指令状态中的值, 例如存在状态 COUNT=1, 则 {{status.COUNT}} 在发送时会被替换为 1 可以使用{{@func()}} 来执行快速调用的函数,例如上图中 {{@crc16modbus($1,$2,$3,$4)}} 则会在发送时,调用crc16modbus 函数,并将前四个属性作为参数执行该函数,最后讲函数结果作为数据发送出去。 描述 : 用于备注并说明属性。 数据响应解析 当 Bittly 收到响应内容后,我们可以配置响应数据的格式化方式,如下: 这样配置完成后,以后再次执行将会自动进行解析操作。 其中: 名称 : 用于说明响应属性的名称 类型 : 指定响应属性的数据类型, 支持的数据类型如下:字节(uint8),单字节整型(int8),字符(int8/char), 无符号字符(uint8), 短整型(uint16), 无符号短整型(int16), 整型(int32), 无符号整型(uint32),长整型(int32), 无符号长整型(uint32) , 长长整型(int64), 无符号长长整型(uint64), 单精度浮点型, 双精度浮点型, 字符串, 字节数组; 对于不定长数据,例如字符串和字节数组,则需要指定数据长度。 取值 : 用于显示解析后的数据结果,当数据类型为无符号时,可指定其数值进制类型。 描述 : 用于备注属性其他信息。 Bittly 的数据绘图分析 Bittly 支持根据响应数据来绘制折线图,例如: 当前解析方式支持以下几种: [num] [num]CRLF :该解析方式为固定格式,即响应数据为 [num] [num]CRLF 的格式,例如 : 1 2 3rn4 5 6 ,则其中1,2,3为第一个频道, 第二个频道以及第三个频道的第一个数据, 4,5,6为第二个数据。 数据帧 :数据帧格式支持配置帧头,帧尾,数据长度,数据类型,以及频道数量 矩阵 : 矩阵格式是讲所有响应数据作为解析数据,通过指定数据格式和频道数量来进行解析 格式化数据 : 格式化数据是讲已经配置好的格式化解析方式作为模板来进行数据解析,并支持进绘制指定属性的数据。如上图所示。 自定义解析 : 支持自定义解析脚本来进行数据解析。 Bittly 的控制面板 当需要频繁执行多条指令时,来回切换指令TAB就变成了一个比较麻烦的事情,这样我们可以通过讲需要执行的指令绑定到按钮,或者滑动条组件来实现快速的执行多条指令,而省却切换TAB的操作。并且通过面板可以更加方便的实现一个模拟的上位机控制面板。 运行模式 如上图所示,当面板编辑完成时,即可切换到运行模式进行操作。 在运行模式中, 可以点击上方的 日志 按钮来展开该面板运行的过程中的通讯日志,来查看响应的指令执行情况。 点击上方的,变量 按钮来查看当前面板中的变量数据。 编辑模式 编辑模式用于编辑该面板的内容,例如面板中应该包含哪些组件,需要哪些变量等。我们以按钮为例来添加一个组件: 0x01. 拖拽按钮到面板的合适位置 0x02. 绑定指令并解析响应内容到变量,完成后点击确定按钮关闭配置 0x03. 回到运行模式运行 这样就完成了指令绑定以及变量的绑定,其他组件操作与此类似。   Bittly 的自动化测试 单元测试 您可以使用 Bittly 来针对指令进行自动化测试,如上图所示,您可以选中您需要测试的指令,然后在右侧工作区中点击 创建测试用例 按钮来创建一个针对该指令的测试用例。 测试用例通过指定请求参数和期待响应内容来进行工作, 在执行时,测试用例发送配置好的请求参数,在收到响应内容后,与期待响应内容进行对比,如果对比成功,则测试通过,否则该测试失败,其执行流程图如下: --- ### 450. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MThings是一款全新的标准化专业MODBUS调测工具,提供主从机一体化操作,可用于MODBUS协议接口的调试测试、Modbus设备运维。它主要解决如下问题: 模拟仿真上位机软件,支持MODBUS主机读写功能。模拟仿真Modbus设备软件,支持Modbus从机被动读写功能。支持多设备、多通道并发运行,无设备个数限制。支持持久化数据配置、无菜单设计,操作友好。支持MODBUS-RTU、MODBUS-ASCII、MODBUS-TCP。支持串口、TCP客户端、TCP服务器(可接入多客户端)、UDP单播。支持全链路报文监控、存储、分析。支持丰富的链路丢包统计方法。支持数据曲线录波,统计数据极值和均值,并可导出所有数据。支持MODBUS数据配置模板导入导出。支持多种变化数据模拟方法。支持数据二次加工,界面呈现原始真实数据。支持良好的非标协议适配。性能优异,支持接入 > 500设备节点,超20K数据点。永久免费,免安装,中文。 2.数据 MODBUS协议是一份相对简单的总线协议,交互流程和报文约定在《Modbus Application Protocol V1_1b3》中可以得到明确的解答。这里对经常引起歧义的数据块和数据定义阐述个人理解。 2.1  数据块 协议中定义4种数据块,基于数据类型可分为两类:BIT数据和寄存器数据,结合读写属性,数据块之间的关系如下图: 2.2  数据 数据是数据块中具体信息的详细定义,不同数据块中的数据定义是相互独立的。一条数据定义可以包含多个连续BIT/REG数据点。 描述数据的属性主要包括: @隶属数据块 @数据名称 @数据地址 @数据量 @数据类型(协议类型) @数据系数(浮点数据被整形传输时涉及) @字节序(寄存器数据涉及) @字序(寄存器数据量≥2Word涉及) @同一数据块中,不同的数据定义的数据地址+数据量不能出现重叠; @任何数据块的数据在从机侧都是可读可写的; @不同数据块中的数据在从机侧可以指向同一数据对象,其拥有两个不同数据块地址,区别在于通过这种差异开放不同的读写权限; @REG数据的数据量最小为1,最大值不得超过上限(输入寄存器:125,保持寄存器123); @BIT数据的数据量固定为1,代表占用1Bit,同时数据系数属性失效; 2.3数据块与数据的关系 @同一数据块中,不同的数据定义的数据地址+数据量不能出现重叠; @任何数据块的数据在从机侧都是可读可写的; @不同数据块中的数据在从机侧可以指向同一数据对象,其拥有两个不同数据块地址,区别在于通过这种差异开放不同的读写权限; @REG数据的数据量最小为1,最大值不得超过上限(输入寄存器:125,保持寄存器123); @BIT数据的数据量固定为1,代表占用1Bit,同时数据系数属性失效; 2.4传输类型与呈现类型 协议数据定义方式主要基于传输设计,其与UI数据之间势必存在相互转换的问题,包括类型、长度、功能差异。 MThings提供友好的数据可视化方法,支持以实际业务格式展示报文数据。 传输类型即MODBUS数据协议中定义的类型,通常以整形居多,但往往并非数据实际格式,使用者为了确认数据的正确性需要重新计算。不够直观的调试数据无疑严重影响调测效率和准确度。 MThings支持用户指定每项数据的传输类型和呈现类型,调试过程中,软件自动按配置转换,界面呈现的数据将是数据的真实内容。 例如,从机上报电压数据10.5V,寄存器传输过程中数据则为0X0069,MThings收到数据后,将整形数据乘以系数0.1,界面呈现还原之后的数据10.5V。 在录入数据配置时,MThings提供的参数包括传输类型、呈现类型、系数、单位四项配置,他们的含义分别是: MThings支持多种协议传输类型和UI数据类型,对应关系如下: 3  功能介绍 3.1  界面分区 1.主菜单:用于切换“主功能页面”。 2.设备列表:辅助“主菜单”,用户通过单击设备名称,可切换当前激活设备,指定新的“主功能页面”所属设备。 3.配置文件:用于新建、导入、另存为、保存配置文件。 4.视图切换:用于控制显示或隐藏“设备列表”和“报文监控”窗口。 5.报文监控:查阅和管理各链接的通信报文。 6.主功能页面:对应“主菜单”,提供主功能操作界面。 3.2  新建工作配置文件 注:开始阶段如果没有加载其他配置文件,可跳过该步骤,程序退出前点击保存也可以创建配置文件。 3.3  创建串口设备 1.勾选新建设备所挂靠的串口(双击表头可全选) 2.选择所创建的设备类型 3.输入设备起始地址 4.输入设备结束地址 注:起始地址 ≤ 结束地址,起始和结束地址相同代表添加一台设备,程序根据指定的起始到结束地址,自动为区间内每个地址创建一个设备。 5.点击“配置”,确认或修改串口参数 6.查看或修改串口参数 7.点击后程序开始添加设备 8.设备添加成功后,可在此处查看到该设备。 注:设备名称默认格式:[M/S]端口名称-地址,用户可双击设备名称单元格自行修改,但是需要保证新名称不与其它设备名称冲突,否则名称修改失败。 注:同一路端口/链接中,不允许添加不同设备类型设备。 3.4  创建网络设备 1.切换端口类型至“网络” 2.点击“新建”按钮,新增一路网络配置 3.确认或修改网络配置后点击“确认”,网络端口表格中对应新增一路链接 4.勾选新建设备所挂靠的网络链接 5.选择所创建的设备类型 6.输入设备起始地址和结束地址 7.点击开始添加设备 8.设备添加成功后,可在此处查看到该设备。 3.5 编辑设备数据配置 1.点击主菜单中的“数据”,切换到设备数据操作界面 2.点击需要数据配置的设备 3.点击“配置数据”按钮使得当前设备进入数据配置态 4.点击“新增数据”按钮新建一条数据配置项,数据表格中同步增加一条默认配置 5.修改数据配置项中各项参数 注:修改过程中程序会自动关联参数变更,请仔细确认各项参数是否正确。 6.点击按钮退出数据配置态 注:退出配置态前程序会校验最终的配置结果是否正确,如果数据地址存在冲突,请按照提示修改,否则无法退出配置态。 3.6 同步数据配置至其它设备 为了简便多设备的数据配置工作,程序支持在不同设备之间进行配置共享。 1.在源设备(数据配置共享)中点击按钮进入数据配置态 2.点击“同步配置” 3.指定配置同步的目标设备 4.点击“确定”按键后开始配置同步 3.7  读数据(主机设备)     读数据有两种方式: 1.长按(>300ms)数值列单元格,程序自动发起一次数据(当前行)的读取请求 2.点击“批量读”,一次发起多个数据的读请求(批量读配置项③已选择),用户也可根据提示发起循环批量读。 3.8 写数据(主机设备) 写数据有两种方式: 1.双击“数值”列数据单元格,发起单个数据的写请求;单个数据写请求分为预置数据 2.或立即下发 3.点击立即下发后,程序立即发起数据写请求,并自动跟随一次数据读请求,如果数据写请求执行成功,单元格中数据即为下发写数据。预置数据操作是为了给批量写操作提前预置目标数据。 4.点击“批量写”,一次发起多个数据的写请求(批量写配置项⑤已选择),用户也可根据提示发起循环批量写。 3.9 配置模拟数据(从机设备) 从机设备的数据主要用来供主机读取,是为模拟数据。 模拟数据修改方法很简单,双击“数值”列数据单元格,输入相应数值即可。 如果需要将设定的模拟数据存储至配置文件,需要单击“配置数据”按钮,进入设备数据配置态后修改数据数值即可。 3.10 退出程序 用户关闭程序前,程序自动检查配置是否在使用过程中出现变更,并给出存储提示,所以请关注程序退出时弹出的提示信息,并给出正确选择。 4 数据配置 数据配置是进行MODBUS读写操作的必经步骤,快速高效准确的完成数据配置是调测工作的前提。 4.1 开始数据配置 进入任一设备的数据界面,单击“配置数据”按钮,当前设备进入数据配置态。进入配置态后,MThings强制显示所有配置数据,包括手动隐藏的配置行,且配置态中不允许隐藏任何配置信息。进入配置态后,MThings自动关闭所有当前设备正在进行后台通信,配置完成后,需要手动恢复。 4.2 新建数据配置 单击“新增数据”按钮,随后弹出的对话框中可指定新增配置的个数。 新建的配置数据默认添加在表尾,用户可通过“上移”或“下移”按钮控制一行或多行配置上下移动。 MThings支持以现有配置为模板来新建配置,单击“新增数据”按钮前,选中参照的数据配置行即可。如果没有选择任何数据配置行,MThings默认选择最后一行为新配置模板。 4.3 修改数据配置 修改数据是最重要的步骤,MThings提供多种自动关联动作和校验功能,辅助用户准确完成数据配置。 通常,根据MODBUS协议点表的数据定义分别录入数据名称、数据区块、数据地址、数据量、单位、范围、系数、显示类型、传输类型、字节序、字序,普通单元格双击编辑即可。 其中,寄存器数据的数据量即为寄存器个数,BIT数据的数据量固定为1。 传输类型为协议定义类型,即报文中原始数据类型。 显示类型为期望数据在MThings界面上被解析的目标类型。 数据传输类型、显示类型等字段会根据其它字段的变化,自动匹配可选择项,非匹配类型将被禁用。 系数用于整形数据(传输类型)和浮点型(显示类型)相互转换,其他情景下,固定为1。举例:系数设置为0.1,原始传输数据为123,则界面显示数据为12.3。 4.4 数据配置项的关联规则 1) BIT类型数据,数据量固定为1,传输类型固定为BIT,数据系数固定为1,字节序、字序禁止为无效; 2) 寄存器类型数据,传输类型禁止为BIT; 3) 输入寄存器数据量不超过125; 4) 保持寄存器数据量不超过123; 5) 传输类型为浮点型时,系数固定为1; 6) 数据量为1时,传输类型禁止浮点型; 7) 数据量不是1、2、4时,传输类型禁止所有整形; 8) 传输类型为整形或浮点型时,字节序和字序可配置,否则禁用; 9) 数据量为2、4时,字序可配置,否则禁用; 10)当前显示类型为字符串(STRING)或码流(BYTES)时,该数据不支持曲线绘制; 4.5 退出配置态 单击“数据配置”按钮,MThings检查所有数据配置是否合法,如果检查通过,当前设备返回到操作态,否则提示配置异常,并给出异常原因。 4.6 如何更高效 使用配置同步功能,编辑一台设备配置后,将当前配置同步给拥有相同点表的其它设备;借用已有数据配置模板添加新数据配置; 注意事项:1、运行电脑的显示器分辨率:800*600或更高,推荐使用分辨率19201080。支持Win7及以上版本,兼容32/64位。   --- ═══════════════════════════════════════════ ## PLC 工程包 ═══════════════════════════════════════════ ### 451. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 西门子 S7-1200 恒压供水 PID 闭环控制程序(TIA Portal 工程)· 完整逆向分析与手算 PID 详解 写在前面:为什么这篇逆向分析值得你读 网上讲「恒压供水」的文章很多,但大多数停留在「原理图 + 一张截图」,给不了你能直接照着抄、照着改的工程。 这份工程不同——它是一个真实的、源码完整、变量全中文的 S7-1200 恒压供水 PID 闭环程序。硬件组态、OB/FB/DB 结构、PID 控制器的每一个中间变量(设定值、反馈值、比例、积分、当前误差、上次误差、死区、上下限……)都清清楚楚。本文带你逐文件拆解:它用什么 PLC?PID 是怎么手算的?模拟量怎么标度变换?I/O 怎么接?参数怎么整定? 读完你将拿到一套可直接复用的恒压供水 PID 控制思路,以及一份「变量地图」。如果你想做小区供水、楼宇供水、工厂恒压补水、冷却循环水,这套程序都能直接借鉴。 一、先说清工程真实形态(避免被标题误导) 下载这类工程最容易「货不对板」。基于逐文件核验,先把事实摆清楚: #文件夹 / 宣传说法实际读到的情况影响1「S7-1200 实现恒压供水」工程内部为 TIA Portal 项目(.ap14 + System/PEData.plf),CPU 实测为 S7-1200 CPU 1214C DC/DC/DC(6ES7 214-1AG40-0XB0,固件 V4.1)需用 TIA Portal(博途) 打开;不能用 STEP 7 V5.x2「含完整工程文件」含完整硬件组态、OB1、FB「PID_1」、DB1/DB2,PID 用 SCL 手写、变量全中文可编译、可下载、可运行,属「完整工程」3「PID 闭环控制」PID 不是用现成的 PID_Compact 指令,而是在 FB「PID_1」里用 SCL 手写的增量式 PID(含比例/积分/误差/死区/上下限)逻辑透明、可改、可学,比黑盒指令更适合教学与二次开发 一句话:这是一套 S7-1200 + TIA Portal 的恒压供水 PID 工程,PID 手写、注释/变量全中文。标题若只写「S7-1200 恒压供水例程」不够准确,故本文以真实形态命名。 二、硬件与系统架构(一张图看懂) 2.1 控制器与信号板 CPU:CPU 1214C DC/DC/DC(6ES7 214-1AG40-0XB0,固件 V4.1)—— 14 点数字量输入、10 点数字量输出(晶体管)、2 路板载模拟量输入(0–10 V,10 位)。 信号板 SB:SB1232(6ES7 232-4HA30-0XB0)—— 安装在 CPU 上方的 1 路模拟量输出(12 位),用来给变频器发频率命令。 工程名:PID闭环运算恒压供水;原始版本 TIA Portal V14(STEP 7 Basic 14.00.01.00),于 2018-10 升级到 V15。 2.2 现场仪表与执行机构 设备接口作用压力变送器(4–20 mA / 0–10 V)CPU 板载模拟量输入 %IW64检测供水管网压力 → PID 反馈值变频器(VFD)×1(可扩展为 2)信号板模拟量输出 %QW80(及代码中引用的 %QW200)接收 0–10 V / 4–20 mA 频率命令,调节水泵转速水泵电机变频器拖动的电机执行机构,转速决定出水流量与压力(可选)HMI / 触摸屏以太网(CPU 自带 PROFINET 口)设定目标压力、显示实时压力、手动/自动切换 系统架构一览: 压力变送器(4-20mA) │ %IW64 ▼ ┌──────────────────────┐ │ S7-1200 CPU 1214C │ │ OB1 主循环 │ │ └─调用 FB「PID_1」 │ ← 增量式 PID(SCL 手写) │ 设定值 - 反馈值 │ │ → 比例+积分+死区 │ │ → 限幅[下限,上限] │ └──────────┬───────────┘ │ %QW80 (SB1232 AO) ▼ 变频器(VFD) ──► 水泵电机 │ 供水管网压力 ◄── 闭环反馈到压力变送器 工程要点:这是一个典型的「单压力传感器 + 单/双变频器 + PID 调速」恒压供水结构。PID 输出驱动变频器频率,变频器调水泵转速,转速改变流量,流量改变管网压力,压力再反馈给 PID——形成闭环。 三、程序结构全貌:OB / FB / DB 3.1 组织块 OB(扫描调度) OB类型在本工程中的作用(据块结构推断)OB1主循环(Main Program Sweep / Cycle)读取压力模拟量、做标度变换、给 FB「PID_1」喂设定值与反馈值、把 PID 输出标度后写到模拟量输出;是整机的「主心骨」(启动类 OB 如 OB100 未在此精简工程中 evident)—该例程为聚焦 PID 闭环的最小可用工程,主逻辑集中在 OB1 3.2 功能块 FB「PID_1」—— 本工程最值钱的部分 从工程数据库中完整提取出 FB「PID_1」的接口变量(全部中文命名),这就是手写 PID 控制器的「零件清单」: 变量(中文)含义在 PID 公式中的角色设定值目标压力(如 0.40 MPa)PID 的给定值 r(k)反馈值实际压力(来自压力变送器标度后的值)PID 的过程值 / 反馈 y(k)p值比例增益 Kp比例项系数积分积分项累加值消除稳态偏差当前误差e(k) = 设定值 − 反馈值本周期偏差上次误差e(k−1)上一周期偏差(增量式 PID 必需)计算当前输出值u(k)本周期控制器输出计算上次输出值u(k−1)上周期输出(增量式累加用)反馈过程值临时存储 / 输出过程值临时存储中间缓冲标度/滤波的中间量输出控制值 / PID输出最终送给变频器的控制量限幅后的执行量PID死区死区带宽偏差小于死区时保持输出,防抖动PID上限 / PID下限输出限幅把频率命令限制在 0–100% / 0–10 V 区间 结论:变量命名直接暴露了算法形态——带「当前误差 / 上次误差」「计算当前输出值 / 计算上次输出值」,是典型的 增量式(速度式)PID;同时保留「积分」项与「死区」「上下限」,是工业现场最稳妥、最防抖的写法。 3.3 数据块 DB DB1:FB「PID_1」的背景数据块(Instance DB),保存上述所有静态变量。 DB2:数据 DB,存放设定值、比例/积分参数、上下限、死区等「配方/参数」,方便 HMI 修改与整定。 四、核心算法:手写增量式 PID(逐变量拆解) 以下逻辑均来自 FB「PID_1」的变量命名与结构,非推测。下面给出与这些变量一一对应的标准增量式 PID 写法(SCL 思路),你抄进博途即可用。 4.1 增量式 PID 公式 误差: e(k) = 设定值 - 反馈值 // 当前误差 上次误差: e(k-1) = 当前误差(上一周期) // 上次误差 比例项: P = p值 × ( e(k) - e(k-1) ) 积分项: 积分 = 积分 + Ki × e(k) // 积分 累加(消除静差) 增量输出: Δu(k) = P + 积分 // (如需微分可加 Kd 项) 本次输出: u(k) = u(k-1) + Δu(k) // 计算当前输出值 = 计算上次输出值 + 增量 死区处理:IF ABS(e(k)) &lt; PID死区 THEN Δu(k) = 0(偏差太小就不调,防止水泵在设定点附近频繁抖动)。 限幅:u(k) := LIMIT(PID下限, u(k), PID上限)(把频率命令锁在 0–100% / 0–10 V 范围内,保护设备)。 滚动存储:把 e(k) 存入「上次误差」、u(k) 存入「计算上次输出值」,供下一周期使用。 4.2 为什么用增量式而不是位置式? 增量式只算「变化量」:即使计算机/PLC 偶发重启,u(k-1) 从背景 DB 恢复,输出不会跳变到满量程,对水泵更安全。 天然限幅友好:输出被钳在 [下限, 上限],不会出现位置式那种「积分饱和」导致的超大超调。 手写的优势:比西门子自带的 PID_Compact 指令更透明、更好改——你想加前馈、加泵切换、加休眠逻辑,都在自己手里。 顺带一提:S7-1200 自带 PID_Compact 工艺对象(本工程类型库里也有其结构),适合「不想自己写算法、要自整定」的场景;而本工程选择手写 PID,正是为了教学与二次开发的可读性。两种路线都正确,按需选择。 五、I/O 与模拟量映射(关键地址一览) 地址类型含义标度说明%IW64模拟量输入压力变送器反馈板载 AI0(0–10 V / 4–20 mA),NORM_X → 工程量(如 0.00–1.00 MPa)%QW80模拟量输出变频器频率命令(主泵)SB1232 AO(12 位),SCALE_X 把 0–100% 映射成 0–27648 / 0–10 V%QW200模拟量输出第二路频率命令(备泵/扩展)代码中引用,对应「一拖二 / 双泵」扩展接线%MD20 / MD24 / MD28 / MD32 / MD36 / MD40全局内存PID 中间量(误差、积分、输出暂存等)用于标度变换与跨周期暂存 模拟量标度变换(博途标准做法): // 读入: pressure_raw := "压力变送器"(%IW64); // 归一化: norm := NORM_X(MIN:=0, MAX:=27648, VALUE:=pressure_raw); // 0..1 // 工程量: 反馈值 := SCALE_X(MIN:=0.0, MAX:=1.0, VALUE:=norm); // 0.00..1.00 MPa // 输出: out_norm := NORM_X(MIN:=0.0, MAX:=100.0, VALUE:=PID输出); // 0..100% // 写出: "变频器"(%QW80) := SCALE_X(MIN:=0, MAX:=27648, VALUE:=out_norm); // 0..27648 要点:S7-1200 的模拟量输入是 0–27648(含 4–20 mA 的 5530–27648),输出 0–27648 对应 0–10 V / 4–20 mA。所有「工程量」都要经过 NORM_X / SCALE_X 这一对函数做标度,否则压力数值和频率百分比都对不上。 六、恒压供水控制原理(闭环框图 + 工作流程) 6.1 闭环控制框图 ┌─────────┐ 设定值 ┌──────────────┐ PID输出 ┌────────┐ 频率 ┌──────┐ 流量 │ HMI │───────────►│ │────────────► │ 变频 │─────────►│ 水泵 │────┐ └─────────┘ │ FB「PID_1」 │ │ 器 │ └──────┘ │ │ (增量式PID) │ └────────┘ │ 反馈值 ◄───────────────│ │◄────────────── 管网压力 ◄─────────────────┘ └─ 压力变送器(%IW64) ◄─┘ 误差=设-反 ┘ 6.2 一个完整工作周期(OB1 里发生的事) 1. 采样:读 %IW64 → NORM_X/SCALE_X → 得到「反馈值」(实际管网压力)。 2. 比较:当前误差 = 设定值 − 反馈值。 3. 运算:FB「PID_1」算增量、累加积分、加死区、限幅 → 得到「PID输出 / 输出控制值」。 4. 执行:PID输出 → NORM_X/SCALE_X → 写 %QW80 → 变频器调水泵转速。 5. 闭环:用水量大 → 压力掉 → 误差变大 → PID 升频 → 流量增 → 压力回稳;用水量小 → 反之降频。 6. 滚动:把本周期误差/输出存入「上次误差 / 计算上次输出值」,进入下一周期。 这就是「恒压」的本质:不是让水泵一直满速,而是让管网压力恒定在设定值附近,用水量变化时自动调速。既保证供水,又比工频直启省电 20%–50%,还能软启软停、延长水泵寿命。 七、工程亮点:7 条可复用的实战经验 1. PID 手写、变量全中文:设定值/反馈值/比例/积分/误差/死区/上下限一目了然,二次开发零门槛。 2. 增量式 PID + 限幅:防积分饱和、防重启跳变,对水泵最安全。 3. 死区设计:偏差小于死区时保持输出,避免水泵在设定点附近频繁启停/抖动。 4. 参数放 DB2:Kp、积分、上下限、死区都在数据块里,HMI 直接改,整定不用动程序。 5. 模拟量全程标度:NORM_X/SCALE_X 把通道值转工程量,压力/频率显示直观。 6. 双输出预留:%QW80 + %QW200 两路模拟量,天然支持「一拖二 / 主备泵」扩展。 7. 结构极简聚焦:OB1 + FB「PID_1」+ DB1/DB2,没有冗余块,新手也能一眼看懂。 八、怎么打开、运行、整定 PID 1. 软件:TIA Portal(博途)V14 或更高(本工程由 V14 升级到 V15,用 V15/V16/V17 均可打开,会自动迁移)。 2. 打开:博途 → 打开项目 → 选 PID闭环运算恒压供水.ap14。 3. 硬件确认:CPU 选 6ES7 214-1AG40-0XB0(或同系列),信号板挂 SB1232(6ES7 232-4HA30-0XB0);若你的硬件型号不同,改订货号后重新编译即可。 4. 接线:压力变送器 4–20 mA 接 CPU 板载 AI0(地址 %IW64);SB1232 AO(%QW80)接变频器模拟量频率输入。 5. 下载:先下硬件组态,再下 OB1 / FB「PID_1」/ DB1 / DB2,PLC 切 RUN。 6. PID 整定(现场口诀): 先把 积分 = 0、死区设小,只投 比例 p值,从小到大加,到「压力快速贴近设定值但不剧烈振荡」; 再加 积分,消除稳态偏差(压力老是差一点上不去就加大积分); 调 PID死区 消除临近设定点时的小幅抖动; 最后设 PID上限 / 下限(如 0–100%),防止频率越限。 7. 扩展一拖二:把备泵接 %QW200,在主泵到 50 Hz 还压力不足时切/投第二泵(切换逻辑可在 OB1 里加简单比较实现)。 九、给工程师的两点提醒 别被「例程」二字轻视:这个例程的 PID 是手写增量式,比很多「拖个 PID_Compact 就完事」的工程更适合学习和改。想做前馈、泵切换、休眠,全在自己代码里。 模拟量一定要标度:新手最常踩的坑是「读出来是 0–27648 直接当压力用」「输出没乘系数变频器不转」。务必用 NORM_X/SCALE_X 串好工程量。 注意 4–20 mA 断线:压力变送器若断线,AI 会掉到 < 5530 甚至 0,PID 会误判「压力为 0」而满频输出。实际工程要加断线检测 + 故障限频/停泵保护(本精简例程未包含,上线前务必补)。 十、常见问题 FAQ Q1:S7-1200 恒压供水程序用什么软件打开? A:用 TIA Portal(博途) 打开 .ap14 项目(V14 及以上版本均可,会自动迁移)。这是 TIA 工程,不能用 STEP 7 V5.x。 Q2:恒压供水的 PID 是怎么控制的? A:压力变送器测管网压力(反馈值),与设定值比较得误差;FB「PID_1」用增量式 PID 算控制量,经模拟量输出给变频器调水泵转速,使压力恒定在设定值附近。用水量变化 → 自动调速。 Q3:S7-1200 怎么接压力变送器(4–20 mA)? A:变送器接到 CPU 板载模拟量输入(本工程 %IW64),在程序里用 NORM_X/SCALE_X 把 5530–27648 映射到工程量压力(如 0.00–1.00 MPa)。 Q4:PID_Compact 和手写 PID 该选哪个? A:PID_Compact 是西门子自带工艺对象,带自整定、省事;手写 PID(如本工程 FB「PID_1」)更透明、可定制、好教学。学习/二次开发选手写 PID,赶进度用 PID_Compact。 Q5:压力老是稳不住 / 一直抖怎么办? A:先调比例 p值(太大易振荡,太小响应慢),再加积分消静差,最后用 PID死区 消除设定点附近抖动;输出务必限幅。 Q6:想做「一拖二」双泵恒压供水能改吗? A:能。本工程已预留第二路模拟量输出 %QW200,在主泵到 50 Hz 仍压力不足时投备泵即可,切换逻辑在 OB1 里加比较实现。 十一、结语 + 资源 这套 S7-1200 恒压供水 PID 工程,是一份难得的、变量全中文、PID 手写的透明样本:它用增量式 PID 做闭环、用死区+限幅保安全、用数据块存参数方便整定、用双模拟量输出预留扩展,对做小区/楼宇/工厂恒压供水、冷却循环水、恒压补水的工程师非常有借鉴价值。 *本文所有结论均来自对工程文件(.ap14 项目元数据 + System/PEData.plf 内部数据库)的逐文件解析,硬件型号、块结构、FB「PID_1」接口变量与 I/O 地址均直接提取,未做任何外部臆测。 --- ═══════════════════════════════════════════ ## 串口屏/HMI 开发 ═══════════════════════════════════════════ ### 452. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 记录类控件(数据记录/操作记录/告警)导出 CSV 时,精确指定时间范围 + 自定义文件名。HMI&M&DX + USB 接口 + 定制固件。 1. API 与寄存器 项目说明set_export_name(name)导出文件名,UTF-8 字符串,须手动加 .csv 扩展名0x0192导出开始时间戳(UINT32)0x0194导出结束时间戳(UINT32)时间段内无记录则不导出文件。 导出两个坑:①set_export_name 的文件名必须自己带 .csv,不然导出的文件打不开;②时间段内一条记录都没有,系统不会生成文件(不是空文件,是根本没有)。时间范围用 0x0192/0x0194 两个 UINT32 时间戳控制。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「自定义时间段与文件名导出」,版权归大彩科技所有。 --- ### 453. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 USB Host + 定制固件,直接接 HID 条码扫描枪,扫码内容经 on_key(key) 回调进 Lua。工业仓储、产线追溯用得着。HMI&M&DX 系列 + USB 接口 + 定制固件。 1. API:on_key(key) key 为 16 位无符号整数:低 8 位 = USB HID Usage ID(扫描码),高 8 位 = Shift 状态(非 0 表示 Shift 按下,区分大小写)。低 8 位 == 0x28(Enter)表示条码结束,此时提交字符串并清空缓冲。 2. Lua:HID 扫描码转 ASCII 用查表把 Usage ID 映射成字符(含 Shift 大写态),遇到 0x28 结束符写 LW2000:_barCode = "" usbScanGun = { [0x04] = {"a","A"}, [0x05] = {"b","B"}, ... [0x1D] = {"z","Z"}, [0x1E] = {"1","!"}, [0x1F] = {"2","@"}, ... [0x27] = {"0",")"}, [0x2C] = {" "," "}, [0x28] = {"n","n"} -- Enter } function on_key(key) local usage = key & 0xFF local shift = (key >> 8) & 0xFF if usage == 0x28 then -- 结束符 set_string(VT_LW, 0x2000, _barCode) _barCode = "" return end local ch = usbScanGun[usage] if ch then _barCode = _barCode .. (shift ~= 0 and ch[2] or ch[1]) end end 扫码枪本质是键盘模拟:HID 上报的是扫描码不是 ASCII,得自己查表转。Shift 状态在 key 高 8 位,大小写靠它区分。0x28 是回车结束符——收到就提交,别等超时。定制固件专属。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「USB HID扫码枪」,版权归大彩科技所有。 --- ### 454. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 运行期整体旋转 UI(0°/90°/180°/270°),手持器、竖装机柜都适用。一套 Lua 适配所有姿态,DX 系列专属。 1. Lua 控制旋转 set_lcd_rotate(angle) -- angle: 0~3 (0=0°,1=90°,2=180°,3=270°) function on_init() local angle = get_uint16(VT_RW, 0x0001) -- 从Flash读旋转方向 angle = (angle < 0 or angle > 3) and 0 or angle set_lcd_rotate(angle) set_uint16(VT_LW, 0x8888, angle) end function on_update(slave,vtype,addr) if vtype == VT_LW and addr == 0x8888 then local val = get_uint16(VT_LW, 0x8888) set_uint16(VT_RW, 0x0001, val) -- 存旋转方向 set_lcd_rotate(val) end end 2. 生成多方向文件 横屏工程(0°/180°)编译两次:0° 保留默认 image.bin/project.bin;180° 重命名为 image180.bin/project180.bin 放进 private。竖屏工程(90°/270°)同理生成 image90/image270 放入 private。private 目录最终含 8 个核心文件,启动时默认加载 0°,运行时切方向自动加载对应 bin。 屏幕旋转注意:横屏和竖屏的 Lua 脚本逻辑完全一致,差异只在编译出的 bin 文件(imageXXX.bin/projectXXX.bin)。开发者只维护一套工程,按方向编译四次命名好丢进 private 即可。DX 系列专属。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「屏幕旋转」,版权归大彩科技所有。 --- ### 455. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 动态特效:给任意控件加平滑过渡动画(位置/尺寸/透明度),内置缓动(线性/缓入缓出/弹性/回弹),不用逐帧画。DX 系列专属。 1. 支持属性 位置:X/Y 坐标平滑移动尺寸:宽/高/整体缩放透明度:完全透明 ↔ 不透明渐变动画时长可精确配(200ms、500ms…)。 动态特效是 DX 系列专属,M 系列老屏别指望。动画时长别配太长(>500ms 会显得拖沓),工业界面讲究即时反馈。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「动态特效」,版权归大彩科技所有。 --- ### 456. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 让用户主板(而非电脑)给 HMI 升级工程:主板发串口指令,HMI 进下载模式、收文件、存成 private。量产、远程维护都靠它。 1. 进入下载模式 主板发 $cfgenter#,HMI 应答 $ok# 后进下载模式(此时不响应原 Modbus 等协议)。 2. 创建文件 $file,[pathname],[size],[block],[baudrate]#参数说明pathname内部存储路径,如 3:/bin/image.bin(3: 等同 private:)size文件字节大小block每包数据大小,推荐 512+4 / 1024+4 / 2048+4baudrate传输波特率,0=用当前波特率例:$file,3:/bin/image.bin,12345,2052,921600#。HMI 应答 $ok# 或 $err#。 3. 下载数据 分包发文件数据(每包含 block 大小的有效数据 + 4 字节头尾)。改波特率前务必确认串口缓冲数据发完(简单起见延时 10ms)。 串口升级三道坎:①进下载模式后 HMI 不再响应原协议,别在这期间发业务指令;②改波特率前延时确保缓冲清空,否则丢字节整包废;③block 用 512+4 起步,大文件用 2048+4 提速度。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「串口升级Private」,版权归大彩科技所有。 --- ### 457. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 控件权限:满足条件才显示/可触控,最多两个条件组合(AND/OR)。比逐个画面叠控件干净得多。 1. 属性 字段说明条件地址判断用寄存器比较==、!=、<=、>=、<、>、IN(范围内含边界)、OUT(范围外不含边界)值比较值;IN/OUT 时需填下限+上限附加条件AND / OR,第二个条件无权限时隐藏控件 / 禁止触控 2. 单/双条件 单条件:LW1000==1 显示。双条件 AND:LW1000==1 且 LW1001==1 显示;双条件 OR:LW1000==1 或 LW1002==1 可触控。 3. 多条件(>2 个) 权限最多 2 个条件,3 个以上用 Lua 把多条件算成 1 个结果写回某寄存器,控件权限判这个寄存器:function on_run() local v1 = get_uint16(VT_RW, 0x1000) local v2 = get_uint16(VT_RW, 0x1001) local v3 = get_uint16(VT_RW, 0x1002) if v1 == 1 and v2 == 1 and v3 == 1 then set_uint16(VT_RW, 0x1100, 1) else set_uint16(VT_RW, 0x1100, 0) end end 控件权限最多 2 条件——别想着在界面里配 3 个 AND。超过就用 Lua 在 on_run 里算好写回一个寄存器,控件权限判那一个。注意 on_run 是周期回调,逻辑要轻。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「控件权限」,版权归大彩科技所有。 --- ### 458. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 安全登录:给界面控件分级授权,不同等级用户看/操作不同东西。支持 1~8 级(0 为游客),密码可配、可 Lua 改、可超时自动退出。 1. 配置 工程 → 工程设置 → 安全等级:设等级数、各级密码、保持登录、超时退出(秒)、返回画面、键盘位置(默认/居中)、用户名称。 2. 超时退出登录 功能按钮切换画面时勾选「用户等级 → 最低要求等级」,等级不够弹键盘输密码。空闲超时自动退登录(保持登录启用才生效)。 3. 密码修改(LUA) set_pwd(level, pwd, len):level 0~7 对应密码等级 1~8,pwd 数字密码,len 选填(前导零填充,如 len=5 则 123 存为 00123)。密码不支持读取,初始化/修改时同步镜像到 RW 区:function on_init() local _val = get_uint16(VT_RW, 0x2000) if _val ~= 0x0055 then set_uint32(VT_RW, 0x0000, 111111) set_uint32(VT_RW, 0x0002, 222222) set_uint32(VT_RW, 0x0004, 333333) set_uint32(VT_RW, 0x0006, 444444) set_uint32(VT_RW, 0x0008, 555555) set_pwd(0, 111111, 6); set_pwd(1, 222222, 6) set_pwd(2, 333333, 6); set_pwd(3, 444444, 6) set_pwd(4, 555555, 6) set_uint16(VT_RW, 0x2000, 0x0055) flash_sync() else set_pwd(0, get_uint32(VT_RW, 0x0000), 6) set_pwd(1, get_uint32(VT_RW, 0x0002), 6) -- ... 其余等级 end end 安全登录密码和分期密码一样只写不读,必须自己镜像到 RW 区。前导零是个坑:若用前导零(len=6 则 66 存为 000066),所有等级密码都得统一用前导零,否则匹配不上。改完 flash_sync() 保存。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「安全登录」,版权归大彩科技所有。 --- ### 459. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 系统分期是「到期前锁定」,自定义分期是「到期才锁」——更贴合真实租赁场景。这篇用 Lua 元表封装,实现时间精准触发 + 动态密码(算法外置,不预存静态密码)。 1. 两种方案区别 维度系统方案(前置锁定)自定义方案(到期锁定)触发时机配置后即生效当前时间 ≥ 截止时间才锁用户感知提前被锁刚好到期被锁 2. 设计要点 动态密码:由外部函数 password_func(date) 实时算(如年+月+日),不预存,防逆向超级密码:单一 uint32,一键全局解锁,现场运维兜底自校验热更新:启动检测日期变更,配置修改后自动重写存储状态持久化:时间/开关/解锁进度存 VT_RW 非易失区,掉电不丢 3. 实例化(main.lua) Stage.new(base_addr, stage_dates, password_func, super_password):-- base_addr: VT_RW 起始地址,连续存储所有配置 -- stage_dates: 3期截止日期列表,必须递增 -- password_func: 密码计算函数 -- super_password: 超级密码 dofile("stage.lua") g_stage = Stage.new(0x1000, {{2023,11,1},{2023,12,1},{2024,1,1}}, function(d) return d[1]+d[2]+d[3] end, 123456)模块用闭包 + 元表 OO 实现,支持 1~10 期、状态全存 RW 区。核心判定 get_eligible_stage() 严格比对系统时间与截止日,now ≥ deadline 才锁屏。 自定义分期比系统分期灵活,代价是要自己写 Lua 模块(stage.lua)。最关键的动态密码不预存——密码算出来即弃,即使被人 dump 出 RW 区也只看到某期的结果,逆向不出算法。状态必须落 RW 区,否则重启丢失解锁进度。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「分期应用(RW-自定义)」,版权归大彩科技所有。 --- ### 460. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 分期(租赁锁机):到约定时间自动锁屏,输密码才解锁。适合设备试用、分期付款。系统方案是「到期前锁定」,自定义方案(见 04)是「到期才锁」。 1. 配置 工程 → 工程设置 → 分期使用:启用分期、分期数(最大10)、到期锁定画面 ID、每期到期日和密码。 2. 锁定界面与系统寄存器 锁定画面放两个数值控件:密码输入绑定 $SysStageEnterPwd(LW0205,UINT32)、当前期号绑定 $SysStageTimeLevel(LW0204,UINT16,缩放1偏移1)。 3. 分期时间掉电存储(LUA) 改分期时间需写系统寄存器 SysCfgCtrl(0x011A)/SysCfgOption(0x011B):function on_update(slave,vtype,addr) if vtype == VT_LW then if addr >= 0x0210 and addr <= 0x0218 then -- 5个分期时间地址 set_uint16(VT_LW, 0x011B, (1<<5)) -- 选择分期密码 set_uint16(VT_LW, 0x011A, 0x5501) -- 保存 end end end 4. 分期密码(不读只写) set_stage_pwd(level, pwd):level 0~9 对应分期1~10,pwd 为数字密码。首次使用把密码写入 RW 区(检测标识位 0x0055 防重复初始化):function on_init() local _val = get_uint16(VT_RW, 0x2000) if _val ~= 0x0055 then set_uint32(VT_RW, 0x0000, 1111) set_uint32(VT_RW, 0x0002, 2222) set_uint32(VT_RW, 0x0004, 3333) set_uint32(VT_RW, 0x0006, 4444) set_uint32(VT_RW, 0x0007, 5555) set_uint16(VT_RW, 0x2000, 0x0055) end set_uint16(VT_LW, 0x011B, (1<<5)) set_uint16(VT_LW, 0x011A, 0x5502) -- 从set_stage_pwd后的密码加载 end 5. 恢复与开关 恢复分期写 SysCfgCtrl=0x5503;动态开关通过写 LW0200(分期数 0 或 1)+ 保存实现。所有涉及分期的写 RW/系统寄存器操作都要配合 SysCfgCtrl/SysCfgOption 保存。 分期密码是只写不读的:你想让用户改密码或初始化,得自己在 RW 区镜像一份,再用 set_stage_pwd 同步。每次改完记着调 SysCfgCtrl(0x011A)/SysCfgOption(0x011B) 保存,否则掉电丢。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「分期应用(系统)」,版权归大彩科技所有。 --- ### 461. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 配方:一套产品参数(温度、时间、转速…)打包成一条记录,切换产品时一键加载,免得逐个手动改。最多 10 个配方、每条 1000 组、成分 2000 个,覆盖绝大多数产线换型场景。 1. 配方设置 工程 → 配方设置,核心字段:字段说明配方名称备注,可不填配方成分数参数个数,最大 2000数据类型UINT16/INT16/UINT32/INT32/UINT64/INT64/FLOAT/DOUBLE配方记录数记录条数,最大 1000配方记录名称关联标签,分号分隔,如「配方1;配方2;配方3」名称长度N 字节每配方占用配方索引地址控制地址,索引值后面紧跟各成分数据配方写 PLC 地址目标设备起始地址,索引变化时连续下发配方控制地址写 1=写入PLC / 2=修改并保存 / 3=保存文件 / 4=删除选中行 / 5=修改不保存复位 2. 应用:配方选择与切换 文本控件绑定「配方索引地址 + 1」显示名称(GBK 编码、高低字节互换);两个字设置按钮做索引递增/递减(步长1、循环、0~5 范围)。切换索引时底层自动从配方文件加载对应数据刷新控件。 3. 边改边存 修改参数后写「配方控制地址=2」保存。LUA 里判断成分寄存器触发即自动存:function on_update(slave,vtype,addr) if vtype == VT_LW then if addr >= 0x1201 and addr <= 0x1206 then -- 配方数据寄存器 set_uint16(VT_LW, 0x1300, 2) -- 配方控制地址写2 update_system() -- 立刻写入系统参数 end end end 4. 下发 PLC 与文件显示 写「配方控制地址=1」把 LW1201~1206 下发到 PLC 的 LW1400~1405。配方文件也能直接进数据记录控件表格显示、编辑(数据源选「配方数据」、索引选对应配方)。 配方三个易错点:①成分寄存器是从「索引地址+1」开始连续排的,不是从索引地址本身;②想在 LUA 里边改边存,记地址区间判断;③PLC 地址不连续时不能靠自动下发,得 LUA 读配方值单独写。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「配方应用」,版权归大彩科技所有。 --- ### 462. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 把任意视频文件转成 HMI 能播放的 MP4,格式不对屏幕直接黑屏或报错。这一步做不好,后面视频播放控件全白搭。 1. 格式要求(硬指标) 项要求容器MP4(.mp4)视频编码H.264音频流MP3 或 AAC最大分辨率< 1280×768最大帧率< 30 fps最大码率< 1400 Kbps官方推荐 Freemake Video Converter(自行搜索下载,从网络获取,版权问题自担)。 转码三件套:①分辨率别超 1280×768;②编码必须 H.264(不是 H.265/VP9);③码率压到 1400 以下。源文件是 4K 的先缩到 720P 再转,否则屏带不动。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「视频文件转换说明」,版权归大彩科技所有。 --- ### 463. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 简易数据库(定制固件专属)是一个轻量级、无文件系统的嵌入式数据库:在 Flash 里划一块连续区域,按固定长度记录存结构化数据(参数配置、事件日志、运行记录),掉电不丢,支持运行时按需初始化。数据记录控件用「自定义」数据源模式对接,实现增删改查全流程。 1. ⚠️ Flash 地址规划(不看会变砖)简易数据库直接操作 Flash,没有文件系统隔离机制,flashaddr 起始地址必须严格避开四类高风险区域:工程资源存储区资料采样块存储区操作记录块存储区OTA 升级备份区域总占用空间 = dataRowSize × maxCount,规划地址时把这段空间算进去,别和别的功能打架。 2. API 总表函数参数说明easydb_open(flashaddr, createIfNotExist, dataRowSize, maxCount)flashaddr Flash 起始地址;createIfNotExist 0=仅打开/1=不存在则创建;dataRowSize ≥1;maxCount 最大条数打开或创建数据库,返回句柄(非 0 成功,0 失败)easydb_close(db)句柄关闭数据库,释放资源easydb_get_count(db)句柄当前有效记录数easydb_get(db, idx)idx 从 0 开始读指定索引记录,成功返回字符串,失败 nileasydb_add(db, dataset)字符串数据末尾追加一条记录easydb_update(db, idx, dataset)idx + 新内容更新指定记录,dataset 长度必须严格等于 dataRowSizeeasydb_del(db, idx)idx删除指定记录easydb_clear(db)句柄清空所有记录 3. 数据记录控件「自定义」模式数据来源设为自定义时,系统不知道有多少行数据,必须由两个回调提供:记录数量回调 on_get_record_count(screen_id, control_id):返回总行数,内部调 easydb_get_count(g_db_handle)记录内容回调 on_get_record_row(screen_id, control_id, row):返回第 row 行的字符串内容function on_get_record_count(screen_id, control_id) if screen_id == 0 and control_id == 1 then return db.getCnt(g_db_handle) end end function on_get_record_row(screen_id, control_id, row) local ret, msg = db.get(g_db_handle, row) if ret == 0 then return msg end end控件配置:数据来源=自定义、字符编码=UTF8、翻页控制√、控制地址 LW4000、选中行通知√(LW4004,UINT32)——选中某行时索引写进 LW4004,增删改都靠它定位。 4. 应用:db.lua 句柄封装 + 增删改查4.1 初始化(on_init)function on_init() dofile("db.lua") _EN_ON_UPDATA_API_ = 0 -- 10MB 起始、不存在则创建、单条1000字节、最多1000条 g_db_handle = db.open(10*1024*1024, 1, 1000, 1000) if g_db_handle == 0 then print("ERROR: 无法打开数据库!") return end db.clear(g_db_handle) -- 清空旧数据(可选) db.add(g_db_handle, "Alice;Engineer;30") db.add(g_db_handle, "Bob;Technician;25") db.add(g_db_handle, "Charlie;Manager;40") db.add(g_db_handle, "Harden;Basketball players;36") _EN_ON_UPDATA_API_ = 1 end记录格式「姓名;职业;年龄」,英文分号分隔,和表格控件解析规则一致,直接映射多列。4.2 增删改(LW5000 按键分发)function on_update(slave, vtype, addr) if addr == 0x4004 then -- 选中行通知 local idx = get_uint32(VT_LW, addr) local ret, msg = db.get(g_db_handle, idx) if ret == 0 then local parts = my_split(msg, ";") if parts ~= nil then set_uint16(VT_LW, 0x4530, idx) -- 记录当前选中索引 set_string(VT_LW, 0x4500, (parts[1] == nil) and "--" or parts[1]) set_string(VT_LW, 0x4510, (parts[2] == nil) and "--" or parts[2]) set_string(VT_LW, 0x4520, (parts[3] == nil) and "--" or parts[3]) end show_dialog(1, 232, 33, 50) -- 弹窗显示详情 end elseif addr == 0x5000 then local key = get_uint16(VT_LW, addr) if key == 0 then -- 添加 local name = get_string(VT_LW, 0x5010) local position = get_string(VT_LW, 0x5020) local age = get_string(VT_LW, 0x5030) db.add(g_db_handle, name..";"..position..";"..age..";") elseif key == 1 then -- 修改(改选中行) local name = get_string(VT_LW, 0x4500) local position = get_string(VT_LW, 0x4510) local age = get_string(VT_LW, 0x4520) local idx = get_uint16(VT_LW, 0x4530) db.modify(g_db_handle, idx, name..";"..position..";"..age..";") elseif key == 2 then -- 删除(删选中行) local idx = get_uint16(VT_LW, 0x4530) db.del(g_db_handle, idx) end end enddb.lua 封装层每个函数都做句柄校验 + 索引越界检查(idx = count 返回 -2),这是句柄驱动设计的标准姿势:不合法就直接返回错误码,绝不往下传。 四个坑:①flashaddr 必须避开工程资源/资料采样/操作记录/OTA 备份四区,直接操作 Flash 无隔离,选错地址数据互相覆盖甚至变砖;②easydb_update 的 dataset 长度必须严格等于创建时的 dataRowSize,长了短了都会失败;③记录用英文分号 ; 分隔,和表格控件解析规则对齐,别用中文分号;④句柄是全局生命周期资源,on_init 里开一次全程持有,操作前先校验句柄非 0、索引在范围内。定制固件才有这套 API,普通固件没有。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「简易数据库」,版权归大彩科技所有。 --- ### 464. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 自由串口协议(主动)是上一篇「被动」的进阶:HMI 不只接收设备主动发的数据,还能主动向设备发查询帧、读响应,HMI 当总线主。核心 API 是 uart_recv(),配合协程+元表搭一个非阻塞通信框架,对接 XGUS 私有协议。适用 HMI&M 系列&Dx 系列。 1. 新增 API(相对被动模式)函数参数说明uart_rxsize(ch)ch 串口号,通常 0查询接收缓冲区待读字节数。返回 N 表示有 N 字节,0 表示无新数据uart_recv(ch, size)size 期望读取字节数,必须 ≥1主动从接收缓冲区读指定数量字节。返回下标从 1 的字节表,如 {0xAA,0x55,0x01,0x02}uart_rxclear(ch)ch 串口号清空接收缓冲区。通信初始化/错误恢复/协议同步时清残留calc_crc16(data)data 字节表,下标从 1Modbus CRC-16 校验计算,返回 0~65535,低字节在前(符合 Modbus 小端序)另外 uart_send(ch, packet) 和被动模式一样:向指定串口通道发字节数组,packet 下标从 1 开始,每元素 0~255。ch=0 主串口,1/2…副串口(依硬件型号)。通道必须处于自由协议模式(未被 Modbus/XGUS 等系统协议占用)。 2. ⚠️ 关键前置:禁用接收回调主动读串口必须先在工程属性里:串口设置 → 接收回调 → 禁用(新版软件有这个选项)。不禁用的话,uart_recv() 和 on_uart_recv 回调会抢数据,帧全乱。 3. 案例:XGUS 协议映射到系统寄存器目标:把 XGUS 协议中地址 ≥0x1000 的读写,映射到 HMI 系统寄存器 LW1000~LWFFFF。外部设备用 XGUS 帧读写 HMI 内部变量,HMI 也主动给设备发读写请求。3.1 XGUS 帧格式字段长度说明帧头2 字节0x5AA5长度1 字节指令+数据+校验的字节数指令1 字节0x82 写 / 0x83 读(0x80/0x81 另有用)数据最大 249 字节地址(2字节) + 数据内容(n字节),长度 = n+2CRC2 字节(可选)CRC-16 (x16+x15+x2+1)例:向变量地址 0x1000 写入数值 2(不启用 CRC):5A A5 05 82 10 00 00 02——05 是长度(指令1+地址2+数据2),按字写入。 3.2 初始化:加载 XGUS.lua官方提供了基于协程+元表的 XGUS.lua 框架。main.lua 里创建实例:function on_init() dofile("XGUS.lua") xgus = XGUS:new(0, 0x55AA, true, true) -- 参数:串口号, 帧头, 开启CRC, 开启写应答 end -- on_run 里跑协程,非阻塞轮询 _EN_SET_DATA_ = false function on_run(screen) _EN_SET_DATA_ = true xgus:run() _EN_SET_DATA_ = false endXGUS:run() 用协程实现:检查串口数据 → 凑够「帧头+指令+长度+地址」6 字节 → 解析 → 按长度收剩余数据 → CRC 校验 → 处理。协程可以打断/恢复任务,不阻塞 on_run 主循环,适合耗时流程。 3.3 指令解析:地址分流function XGUS:processMsg() local func = self.func if func == XGUSFunction.write then -- 写指令 if self.addr >= 0x1000 then -- 用户寄存器区:解析数据写入 LW local datas = {} for i = 1, write_count do datas[i] = self.req[5+i*2]<>8), (self.head&0xFF), 0x03, 0x82, 0x4F, 0x4B}) end elseif func == XGUSFunction.read then -- 读指令 if self.addr >= 0x1000 then -- 组应答帧:读 LW 值回发 local datas = {(self.head>>8), (self.head&0xFF), 4+self.req[7]*2, 0x83, (self.addr>>8), (self.addr&0xFF), (self.req[7]*2)&0xFF} for i = 1, self.req[7] do local num = get_uint16(VT_LW, self.addr+(i-1)) datas[6+i*2] = (num>>8) & 0xFF datas[7+i*2] = num & 0xFF end self:sendMsg(datas) else on_cmd_resp_xgus(self.addr, self.req[7], func, {}) end end end -- 系统寄存器区读写回调(main.lua 里定义) function on_cmd_resp_xgus(addr, count, wr, data) if wr == 0x82 then print("write addr num : "..count) elseif wr == 0x83 then print("read addr num : "..count) end end 3.4 主动发送:XGUS:dataSend(addr, data)主动向设备发写指令,data 可以是 number 或 table:-- 写单个值 xgus:dataSend(0x1000, 1234) -- 写一组值(table) xgus:dataSend(0x2000, {0x12, 0x34, 0x56}) -- 内部 send():开 CRC 时自动补 2 字节校验再 uart_send function XGUS:send(resp) if self.crc == true then resp[3] = resp[3] + 2 -- 长度加 CRC 2 字节 local crc_buff = {} for i = 4, #resp do crc_buff[i-3] = resp[i] end local crc_check = calc_crc16(crc_buff) resp[#resp+1] = (crc_check>>0) & 0xFF resp[#resp+1] = (crc_check>>8) & 0xFF end uart_send(self.port, resp) end 四个坑:①不禁用接收回调就 uart_recv,帧必乱——工程属性→串口设置→接收回调→禁用;②calc_crc16 低字节在前,组帧时先发低 8 位再发高 8 位;③主动读要防设备无响应——XGUS:wait() 有超时机制(内部 get_tick_count 差值判断),自己写协议务必加超时,不然 on_run 卡死;④地址 ≥0x1000 才走 LW 映射,小于 0x1000 走 on_cmd_resp_xgus 回调自己处理。副串口用之前必须 uart_setup 初始化。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「自由串口协议(主动)」,版权归大彩科技所有。 --- ### 465. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 自定义协议(被动):VisualHMI 内置 DCBUS、XGUS、Modbus(RTU/TCP 主从)、三菱 FX2N、台达 DVP、西门子 PPI 等协议,但实际现场总有私有协议要接。走 LUA 对串口做底层控制,实现自定义帧的收发解析。本篇是被动模式:收到数据触发回调,你只管解析。 1. API 总表函数说明uart_setup(ch, baudrate, databits, stopbit, parity)配置串口:stopbit 0=1位/1=1.5位;parity 0=无/1=奇/2=偶。副串口必须调用才启用,主串口(ch=0)仅配数据on_uart_recv(ch, packet)被动接收回调,packet 为下标从 1 的字节表。可能分包/粘包,必须自己缓冲解析uart_send(ch, packet)发送字节表set_free_protocol(en)1=主串口交脚本接管(自由协议);0=恢复工程配置的原始协议主串口(ch=0)触发 on_uart_recv 的条件:工程配置协议设「自定义」,或脚本里 set_free_protocol(1)。主串口被 Modbus 等内置协议占用时,on_uart_recv 不会被调用。DCBUS/XGUS 串口参数固定:1 位停止位、无校验。 2. 协议举例:LED 灯控帧结构:方向帧头(1B)长度(1B)功能码(2B)数据(nB)帧尾(2B)设备→屏幕0x5A功能码到帧尾的字节数0x0001~0xFFFF可变0xFC 0xFF屏幕→设备0xA9同上同上可变0xFC 0xFF长度 = 功能码 2B + 数据 nB + 帧尾 2B = n+4,大端。功能码:0x0001=开关、0x0002=亮度、0x0003=改名称。 3. 状态机解析(处理分包/粘包)recvBuf = {} -- 接收缓冲 STATE_IDLE, STATE_LENGTH, STATE_DATA = 0, 1, 2 state = STATE_IDLE frameLen = 0 function on_uart_recv(ch, packet) for i = 1, #packet do local b = packet[i] if state == STATE_IDLE then if b == 0x5A then state = STATE_LENGTH recvBuf = {} end elseif state == STATE_LENGTH then frameLen = b -- 第2字节:长度 state = STATE_DATA recvBuf = {b} elseif state == STATE_DATA then table.insert(recvBuf, b) if #recvBuf >= frameLen then -- 收满一帧,解析 parse_frame(recvBuf) state = STATE_IDLE end end end end function parse_frame(buf) local func = (buf[2] <> 8) & 0xFF, func & 0xFF} for i = 1, #payload do table.insert(pkt, payload[i]) end table.insert(pkt, 0xFC); table.insert(pkt, 0xFF) uart_send(0, pkt) end回调是系统任务轮询触发,不是硬件中断——别在回调里做耗时操作(字符串大拼接、文件读写),会拖慢系统。 四个坑:①副串口不调 uart_setup 就是关闭的,on_init 里初始化所有要用的副串口;②packet 不保证是一整帧——分包粘包必须自己缓冲状态机解析,这是被动协议 90% 的 bug 来源;③主串口被内置协议占用时收不到回调,要么工程里设「自定义」要么 set_free_protocol(1);④长度字段算清楚(本例=功能码2+数据n+帧尾2),算错一帧都解不出来。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「自定义协议-被动接收」,版权归大彩科技所有。 --- ### 466. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 文字颜色控制(定制固件专属)提供全局文字颜色批量设置接口:一个回调函数,动态改画面所有文本类控件的文字前景色,不用逐个配置。典型场景是白天/夜间模式切换——亮色背景配深色文字,暗色背景配浅色文字,一个变量控制全局主题。 1. 支持批量设置的控件不是所有控件都能被这个接口着色,只有带可编程文字颜色/前景色属性的控件才参与:控件类型说明静态文本最直接的作用对象位状态指示灯 / 多状态指示灯文字部分随主题变色位设置按钮 / 字设置按钮 / 功能按钮按钮文字下拉选择框 / 滚轮选择器选项文字RTC时间显示 2. 前置配置(两步,缺一不可)第一步:全局启用控件分组功能。路径:工程属性 → 控件分组 → 启用。不启用的话,运行时所有控件都忽略分组相关属性——就算你配了分组 ID 也没用。第二步:给控件分配有效分组标识。对要纳入颜色管理的每个控件,在控件属性面板里设置控件 ID,必须 ≠ 0(0 是默认无效值,表示「未分组」)。on_wgt_text_color 回调里就是靠这个 ID 区分控件。 3. API:on_wgt_text_color(screen, control)控件文字颜色动态回调。系统在刷新控件时调用它,取返回值作为该控件的文字颜色。参数类型说明screennumber当前画面 ID,用于区分多页面中的同名控件controlnumber目标控件 ID。仅当 control ≠ 0 时触发回调返回值:color(number),RGB565 格式的 16 位颜色值。整个颜色主题逻辑都在这一个函数里。 4. 应用案例:多状态灯切换主题画面布局:一个多状态指示灯做颜色切换开关(状态 0~4 对应 5 种主题色),画面 ID 设为 0;下面放一批支持文字着色的控件(文本、按钮、指示灯、下拉框、滚轮、RTC),统一设置控件 ID 为 5。Lua 在回调里读寄存器 LW3000 的值作为颜色索引,返回对应 RGB565 色值:function on_wgt_text_color(screen, control) local color = 0x001f -- 默认蓝色 if screen == 0 then if control == 5 then local val = get_uint16(VT_LW, 0x3000) -- 颜色索引 if val == 0 then color = 0x00FF -- 蓝 elseif val == 1 then color = 0x0562 -- 绿 elseif val == 2 then color = 0x0429 -- 深绿 elseif val == 3 then color = 0x0177 -- 青 elseif val == 4 then color = 0xF800 -- 红 end end end print(string.format("on_wgt_text_color(%d,%d,%04X)", screen, control, color)) return color end运行虚拟屏,点颜色切换控件,所有控件 ID 为 5 的 UI 元素文字颜色同步更新——这就是「一键主题切换」的效果。 三个坑:①控件分组必须在工程属性里启用,否则配了 ID 也不生效;②控件 ID 不能为 0,0 = 未分组不参与回调;③返回的是 RGB565 色值(高5位R/中6位G/低5位B),和 set_pen_color、文字颜色属性同一套色域,直接抄画图那套颜色常量就行。定制固件才有这个接口,普通固件没有。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「文字颜色控制」,版权归大彩科技所有。 --- ### 467. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 OTA 升级 API:HMI 的升级逻辑与通信协议、数据来源完全解耦——不管升级数据来自主板串口、以太网、Wi-Fi 还是 4G,不管上位机用自定义协议、Modbus 还是 HTTP,HMI 只负责通过标准 API 把收到的数据写进指定 Flash 区,校验解压成功后自动重启升级。适用 HMI&M 系列&Dx 系列。 1. ⚠️ Flash 规划(升级失败/变砖的根源)以 HMI80480M070 为例(标准品 128Mbit = 16MB):项目大小Flash 总容量16 MB系统固件(OS+驱动,M 系列)1 MB(DH 系列 2 MB)当前工程(private)4.38 MB已用合计5.38 MB,剩 ≈10.62 MBOTA 起始地址要求必须 ≥ 8 MB(Flash 总量一半)两条铁律:①OTA 起始地址必须从 Flash 后半部分开始(哪怕剩余 10.62MB 也要从 ≥8MB 起),避免新旧工程交叉覆盖,升级过程中当前系统才能继续跑;②OTA 写入区必须连续且空闲——如果你用「块地址」功能占了高地址区(比如 10~12MB),或者升级包超过 Flash 一半(≈10.62MB 的包),都不可升级。 2. API 总表函数参数说明ota_init(md5, filesize, addr)md5 固定 "0123456789abcdef";filesize 与 .bin 实际大小严格一致;addr ≥ Flash 一半配置升级目标,准备接收固件数据ota_write(writeTb)字节表,≤2048,不足自动补 0x00分块写固件到 Flash 区ota_check_upgrade(state)必须传 1触发完整性校验 + 解压 + 升级ota_destory()-擦除已写的 OTA 残留数据(升级前清场)on_ota_progress(status, value)见下表校验/解压进度与结果回调on_ota_progress 的 status/value 组合:status含义value1校验过程开始固定 02校验结果0=失败(固件损坏/MD5 不匹配)/1=成功3解压进度0~100 百分比4解压结果0=失败/1=成功 → 即将重启 3. 应用:SD 卡本地升级3.1 升级包准备工程编译后选择量产下载,生成的文件里有 ota.bin。使用前把 ota.bin 改名为 a.bin 放到 SD 卡根目录。 3.2 检测盘符 + 找 a.binota_filename = "a.bin" ota_addr_start = 8 * 1024 * 1024 -- OTA 起始地址(至少 Flash 一半) flashsize = 16 * 1024 * 1024 -- Flash 总大小 function on_update(slave, vtype, addr) if vtype == VT_LW and addr == useraddr.ota_swich then if sd_dir ~= 0 then list_dir(sd_dir) -- 先看 SD 卡 elseif usb_dir ~= 0 then list_dir(usb_dir) -- 再看 U 盘 else set_string(VT_LW, useraddr.text, "检测不到SD卡和USB,无法OTA升级!!!") end end end function on_list_dir(path, filename, type, fsize) if type == 1 then if filename == ota_filename then set_string(VT_LW, useraddr.text, "文件:"..ota_filename.." 已检测到") if (fsize + ota_addr_start) > flashsize then set_string(VT_LW, useraddr.text, "ota.bin 文件大小超过,无法升级!!!") else set_string(VT_LW, useraddr.text, "开始升级!!!") set_uint32(VT_LW, useraddr.ota_data, fsize) ota.set_upgrade(path.."/"..ota_filename) end end end end3.3 核心升级流程(ota.lua)function ota.set_upgrade(path) local TransferSize = 0 local size = 0 if file_open(path, 0) == true then size = file_size() if size < (flashsize - ota_addr_start) then ota_destroy() -- 消除残留 OTA 数据 local sdota_addr = ota_init("0123456789abcdef", size, ota_addr_start) -- 计算尾包补零长度 local size_complement = 0 if size % 2048 ~= 0 then size_complement = 2048 - (size % 2048) end while true do local rddata = file_read(2048) -- 流式读 2048 if #(rddata) < 2048 then -- 尾包补 0x00 for i = (#(rddata) + 1), 2048 do rddata[i] = 0x00 end end TransferSize = TransferSize + #(rddata) local prg = string.format("%.1f", (TransferSize * 100) / (size + size_complement)) set_uint16(VT_LW, useraddr.progress, math.modf((TransferSize * 1000) / size)) set_string(VT_LW, useraddr.text, "下载进度 : "..prg.." %") refresh_screen() ota_write(rddata) -- 写入 Flash,不足补零 if size <= TransferSize then break end end file_close() ota_check_upgrade(1) -- 校验、解压 end end end function on_ota_progress(status, value) if status == 1 and value == 0 then set_string(VT_LW, useraddr.text, "校验开始") elseif status == 2 then if value == 0 then set_string(VT_LW, useraddr.text, "校验失败") elseif value == 1 then set_string(VT_LW, useraddr.text, "校验成功") end elseif status == 3 then set_uint16(VT_LW, useraddr.progress, value * 10) set_string(VT_LW, useraddr.text, "解压进度 : "..value.." %") refresh_screen() elseif status == 4 then if value == 0 then set_string(VT_LW, useraddr.text, "解压失败") elseif value == 1 then set_string(VT_LW, useraddr.text, "解压成功") end end end关键点:ota_init 的 filesize 必须和 .bin 实际大小严格一致;写数据全程流式(每次 ≤2048,尾包补 0x00);ota_check_upgrade(1) 之后校验失败会停在回调里给你机会处理,解压成功就自动重启进升级。 四个坑:①md5 参数是固定串「0123456789abcdef」,不是文件的真实 MD5,别自作聪明去算文件哈希;②addr 必须 ≥ Flash 一半且区域连续空闲,块地址占了高地址区就升不了;③升级包不能超过 Flash 一半,10.62MB 的剩余空间不等于能放 10.62MB 的包;④升级前先 ota_destroy() 清残留,ota_write 的尾包不足 2048 会自动补零,你不需要自己处理对齐。升级中断电 = 变砖,量产前务必反复验证升级流程。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「OTA升级」,版权归大彩科技所有。 --- ### 468. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 HMI 系列支持 MP4 视频播放,用 LUA API 指定播放文件、控制播放区域。本例程做完整的视频播放器:SD 卡遍历 .mp4 → 列表翻页 → 上一首/下一首 → 播放/暂停/继续 → 播完自动下一首 → 进度和时间显示。适用 HMI&M 系列&DH 系列。 1. 视频格式硬指标(超了播放不了或卡顿)项目要求文件格式MP4(.mp4)视频编码H.264音频编码MP3 或 AAC最大分辨率1280 × 768最大帧率30 fps最大码率1400 kbps 2. 画面控件地址表控件类型地址用途字状态按钮LW1000→0 / 1视频列表向左/右翻页(LW1005=0 时不允许点击)字状态按钮LW1001→0 / 1上一首 / 下一首(LW1005=0 时不允许点击)位状态指示灯LW10020-暂停,1-继续播放(LW1005=0 时不允许点击)数值LW1003视频列表当前页数值LW1004视频列表总页数位状态指示灯LW10051=SD 根目录有视频文本LW1100~1200(128 字节)显示视频名称(每行 0x40 间隔)文本LW1240播放当前时间(LW1005=0 隐藏)文本LW1250播放总时间(LW1005=0 隐藏)播放进度条LW1006进度条数值 3. API函数参数说明play_video(file,left,top,width,height)file 绝对路径;left/top 显示区域左上角;width/height 显示尺寸在指定区域播放视频。操作引导、产品演示、安全须知场景pause_video()-暂停当前视频resume_video()-从暂停的精确帧继续播放,必须与 pause_video 配套stop_video()-立即停止播放,释放解码资源,清除画面on_video_notify(msg,v1,v2)msg 1=播放中(周期通知)/0=播放完毕(仅一次);v1 已播秒数;v2 总秒数播放状态回调,驱动进度条和时间显示 4. Lua 实现4.1 遍历 SD 卡 MP4插卡触发 on_sd_inserted → list_dir 遍历 → on_list_dir 回调里筛 .mp4 存进 video.NameTb:function on_list_dir(path, filename, type, fsize) if type == 1 then -- 文件 local cur_file_type = get_extension(filename) if cur_file_type == "mp4" then video.allCnt = video.allCnt + 1 video.NameTb[video.allCnt] = path.."/"..filename end end end function on_sd_inserted(dir) sd_dir = dir list_dir(sd_dir) if video.allCnt > 0 then video.allPage = math.modf(video.allCnt / 5) if video.allCnt % 5 > 0 then video.allPage = video.allPage + 1 end set_uint16(VT_LW, 0x1003, 1) -- 当前页 set_uint16(VT_LW, 0x1004, video.allPage) set_uint16(VT_LW, 0x1005, 1) -- 有视频标志 set_string(VT_LW, 0x1240, "00:00") set_string(VT_LW, 0x1250, "00:00") updatVideoList(video.curPage) updatVideoPlayName(0) end end function on_sd_removed() video.NameTb = {}; video.allCnt = 0 video.curPage = 1; video.allPage = 1; video.playIndex = 0 set_uint16(VT_LW, 0x1003, 0) set_uint16(VT_LW, 0x1004, 0) set_uint16(VT_LW, 0x1005, 0) for i = 1, 5 do set_string(VT_LW, 0x1100 + (i-1)*0x40, "") set_uint16(VT_LW, 0x1500 + (i-1), 0) end end 4.2 播放控制(on_update 分发)function on_update(slave, vtype, addr) if VT_LW == vtype then if addr == 0x1000 then -- 列表翻页 local val = get_uint16(VT_LW, 0x1000) local cur_page = get_uint16(VT_LW, 0x1003) local all_page = get_uint16(VT_LW, 0x1004) if val == 0 then -- 上一页 cur_page = cur_page - 1 if cur_page all_page then cur_page = all_page end end set_uint16(VT_LW, 0x1003, cur_page) updatVideoList(cur_page) elseif addr == 0x1001 then -- 上下首 local val = get_uint16(VT_LW, 0x1001) set_uint16(VT_LW, 0x1002, 1) if val == 0 then -- 上一首,到头回绕到最后一首 video.playIndex = video.playIndex - 1 if video.playIndex video.allCnt then video.playIndex = 1 end end local cur_play_page = math.modf(video.playIndex / 5) if video.playIndex % 5 > 0 then cur_play_page = cur_play_page + 1 end set_uint16(VT_LW, 0x1003, cur_play_page) stop_video() play_video(video.NameTb[video.playIndex], play.x, play.y, play.w, play.h) updatVideoList(cur_play_page) updatVideoPlayName(video.playIndex) elseif addr == 0x1002 then -- 播放/暂停按钮 local val = get_uint16(VT_LW, 0x1002) if val == 0 then pause_video() elseif val == 1 then resume_video() end elseif addr == 0x1505 then -- 点击列表某一项播放 local val = get_uint16(VT_LW, 0x1505) local cur_page = get_uint16(VT_LW, 0x1003) local temp = video.playIndex video.playIndex = (cur_page - 1) * 5 + val if video.playIndex 0 then updatVideoPlayName(video.playIndex) stop_video() play_video(video.NameTb[video.playIndex], play.x, play.y, play.w, play.h) end else video.playIndex = temp end end end end 4.3 播完自动下一首 + 进度显示function on_video_notify(msg, v1, v2) local SysSndState = msg -- 播放状态 local SysSndPlayTime = v1 -- 当前已播秒数 local SysSndTotalTime = v2 -- 总秒数 if SysSndState == 0x01 then -- 播放中(周期通知) set_uint16(VT_LW, 0x1006, (v1*100)//v2) -- 进度条 0~100 set_string(VT_LW, 0x1240, string.format("%02d", SysSndPlayTime//60)..":".. string.format("%02d", SysSndPlayTime%60)) set_string(VT_LW, 0x1250, string.format("%02d", SysSndTotalTime//60)..":".. string.format("%02d", SysSndTotalTime%60)) elseif SysSndState == 0x00 then -- 播放完毕(仅一次) video.playIndex = video.playIndex + 1 if video.playIndex > video.allCnt then video.playIndex = 1 end local cur_play_page = math.modf(video.playIndex / 5) if video.playIndex % 5 > 0 then cur_play_page = cur_play_page + 1 end local cur_page = get_uint16(VT_LW, 0x1003) if cur_play_page == cur_page then updatVideoPlayName(video.playIndex) else updatVideoPlayName(0) end stop_video() play_video(video.NameTb[video.playIndex], play.x, play.y, play.w, play.h) end redraw() end 四个坑:①视频必须转成 H.264/MP3 或 AAC 的 MP4,超过 1280×768 或 1400kbps 会播放不了或严重卡顿——工程资源里转码这步省不得;②播放前先 stop_video() 再 play_video(),直接换文件可能残留解码器状态;③进度条算的是 (v1*100)//v2,用整除避免浮点,v2 为 0 时别除;④SD 卡拔出必须清空 NameTb 和所有列表控件,不然拔卡后点列表会越界。虚拟屏测不了视频,必须实体屏 + SD 卡。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「视频播放」,版权归大彩科技所有。 --- ### 469. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 音频播放 API:播放 SD/U 盘里的音乐文件,配合播放器控件做完整的音乐播放器(播放/暂停/上下首/进度条/音量)。 1. API 总表函数说明play_sound(filename)播放音频,绝对路径(如 "1:/music/xx.mp3")stop_sound()停止播放pause_sound()暂停resume_sound()继续播放 2. 播放器控件地址表地址用途LW1000左右翻页LW1001上一首/下一首LW1002播放/暂停(位状态指示灯:0-暂停/1-继续)LW1003当前页LW1004总页数LW1005SD 根目录是否有歌(位状态)LW1100~1200歌名文本列表LW1240播放当前时间LW1250总时间LW1006播放进度条LW0140音量 3. 遍历 SD 卡歌曲musicNameListTb = {} -- 歌名列表缓存 curPlayIndex = 1 function on_sd_inserted(dir) list_dir(dir) -- 列 SD 卡根目录 end function on_list_dir(path, filename, type, fsize) if type == 1 then local ext = string.sub(filename, -4) if ext == ".mp3" or ext == ".wav" then table.insert(musicNameListTb, filename) set_uint16(VT_LW, 0x1005, 1) -- 有歌标志 end end end 4. 播放控制逻辑function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1002 then local v = get_uint16(VT_LW, 0x1002) if v == 1 then play_sound("1:/music/"..musicNameListTb[curPlayIndex]) else pause_sound() end elseif addr == 0x1001 then -- 上一首/下一首:切换 curPlayIndex 后重新播放 local v = get_uint16(VT_LW, 0x1001) if v == 1 and curPlayIndex > 1 then curPlayIndex = curPlayIndex - 1 elseif v == 2 and curPlayIndex < #musicNameListTb then curPlayIndex = curPlayIndex + 1 end play_sound("1:/music/"..musicNameListTb[curPlayIndex]) end end end function on_run(screen) updatMisPlayState() -- 检测播放状态,播完自动下一首 end 三个坑:①路径必须带设备前缀(M 系列 1:=SD/2:=U盘/3:=内部Flash),「1:/music/a.mp3」对、「1:music/a.mp3」错;②播放完不会自动切下一首,要自己在 on_run 里轮询播放状态(on_video_notify 类似机制);③音频格式按固件支持列表来,不支持的格式会静默失败——先拿一个已知能播的文件试。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「音频播放」,版权归大彩科技所有。 --- ### 470. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 文件读写 API 全套:读 txt/csv/bin、写文件、遍历目录、拷贝/删除。核心思想就一条——流式处理,永远不要让内存里同时存在超过 2KB 的缓冲区。HMI 内存极小,违反这条看门狗直接复位,设备无预警重启。 1. 存储设备标识(M 系列 vs DH 系列)设备M 系列DH 系列SD 卡1:/1.txt/sdcard/1.txtU 盘2:/1.txt/udisk/1.txt内部 Flash3:/1.txt/data/1.txt路径分隔符必须用 /。 2. 文件 API 总表函数参数说明dofile(name)lua 文件路径加载执行 .lua 模块,大型工程拆模块list_dir(path)目录路径异步扫描目录,结果逐项回调 on_list_diron_list_dir(path,filename,type,fsize)type 0=文件夹/1=文件;fsize 字节遍历结果回调,每发现一个条目调一次file_open(path,mode)mode 0=FA_READ 只读/1=FA_WRITE 覆盖写/2=FA_WRITE_ADD 追加写打开文件,返回布尔file_close()-关闭文件,写入后必须调,防丢数据file_size()-当前打开文件的总字节数file_seek(offset)字节偏移,0=文件开头定位读写位置file_read(count)1 ≤ count ≤ 2048读字节数组(table,下标从 1),失败返回 nilfile_write(data)字节 table,1 ≤ #data ≤ 2048写字节数组,返回布尔file_delete(path)完整路径删除文件,不可恢复file_copy(src,dst)源/目标完整路径复制文件,进度回调 on_copy_file_processon_copy_file_process(status,filesize,transfersize)status 0失败/1进行中/2成功拷贝进度回调,transfersize 已复制字节mkdir(dir)完整目录路径同步创建文件夹 3. 🔴 内存安全铁律(不看必翻车)严禁把多次读取的数据累积存进全局变量或长生命周期缓冲区。典型错误:第一次读 2KB 存全局 table,后面每次读再追加——处理大文件时内存持续增长,直接触发看门狗复位。正确姿势:流式处理——每次 file_read(2048) 后立即解析/校验/写入/显示,处理完就释放,任何时刻内存里只有一块 ≤2KB 的临时缓冲。写文件同理:每次只准备 ≤2048 字节的块立即 file_write,不要先拼一个几 MB 的大 table 再分段写(数据准备阶段就内存溢出了)。 4. 读文件:流式分块 + 回调官方封装了 file.read_stream(filepath, on_chunk):打开 → 取大小 → 循环 seek+read(≤2048) → 每块调 on_chunk(chunk, offset, is_last) → 关文件。回调返回 false 可提前终止,大文件循环里调 feed_dog() 喂狗。4.1 读 txt 逐行显示if addr == 0x1501 then local idx = get_uint16(vtype, addr) if idx == 0 then return end local path = (idx == 1) and "1:/test1.txt" or "1:/test2.txt" record_clear(0) g_line_buffer = "" -- 行缓冲 file.read_stream(path, function(chunk, offset, is_last) local str = "" for _, b in ipairs(chunk) do str = str .. string.char(b) end g_line_buffer = g_line_buffer .. str local lines = my_split(g_line_buffer, "n") -- 按行分割 g_line_buffer = lines[#lines] -- 保留不完整行(可能跨块) for i = 1, #lines - 1 do if #lines[i] > 0 then record_write_string(0, lines[i]) end end return true end) if string.len(g_line_buffer) > 0 then -- 最后一行 record_write_string(0, g_line_buffer) end end注意跨块行缓冲:换行符可能正好落在两块之间,所以要维护 g_line_buffer 把不完整行留到下一块。4.2 读 bin 按 16 字节一行elseif addr == 0x1502 then local idx = get_uint16(vtype, addr) if idx == 0 then return end local path = (idx == 1) and "1:/test1.bin" or "1:/test2.bin" record_clear(1) g_byte_buffer = {} file.read_stream(path, function(chunk, offset, is_last) for _, b in ipairs(chunk) do table.insert(g_byte_buffer, b) if #g_byte_buffer >= 16 then -- 每满 16 字节提交一行 local line = {} for i = 1, 16 do line[i] = g_byte_buffer[i] end record_write_data(1, line) for i = 1, 16 do table.remove(g_byte_buffer, 1) end end end return true end) if #g_byte_buffer > 0 then -- 末尾不足 16 字节补 0 while #g_byte_buffer < 16 do table.insert(g_byte_buffer, 0) end record_write_data(1, g_byte_buffer) end 5. 写文件封装 file.write_chunk(filepath, data, mode),mode 1=覆盖写、2=追加写,data 支持 string 或字节 table(≤2048)。function file.write_chunk(filepath, data, mode) if mode ~= file.mode.create and mode ~= file.mode.append then return false end local t = type(data) local len = (t == "string" or t == "table") and #data or -1 if len CHUNK_SIZE then return false end -- 防内存溢出 local ok = file_open(filepath, mode) if not ok then return false end if mode == file.mode.append then -- 追加模式必须手动定位! local size = file_size() if not file_seek(size) then file_close(); return false end end local buf = {} if t == "string" then for i = 1, len do buf[i] = string.byte(data, i) end else for i = 1, len do buf[i] = data[i] end end local ret = file_write(buf) file_close() return ret end -- 场景1:新建写 local name = get_string(VT_LW, 0x1510) local msg = get_string(VT_LW, 0x1520) if not name or #name == 0 or not msg then return end file.write_chunk("1:/"..name..".txt", msg.."n", 1) -- 场景2:追加写 file.write_chunk("1:/"..name..".txt", msg.."n", 2)⚠️ 追加写必须显式 file_seek(file_size())。HMI 的 file_open(mode=2) 不等于 POSIX 的 O_APPEND,不会自动定位到末尾——不 seek 就从偏移 0 开始写,把原文件开头覆盖掉。 6. 遍历 + 拷贝删除6.1 遍历 SD 根目录显示到数据记录控件function get_extension(filename) local dot = string.find(filename, ".", 1, true) if dot then return string.sub(filename, 1, dot-1), string.sub(filename, dot+1):lower() end return filename, "未知" end function on_list_dir(path, filename, type, fsize) local msg if type == 0 then msg = filename..";文件夹;;" else local sz if fsize >= 1024^3 then sz = string.format("%.2fG", fsize/1024^3) elseif fsize >= 1024^2 then sz = string.format("%.2fM", fsize/1024^2) elseif fsize >= 1024 then sz = string.format("%.2fKB", fsize/1024) else sz = fsize.."byte" end local name, ext = get_extension(filename) msg = name..";"..ext..";"..sz..";" end record_write_string(2, msg) end -- 刷新按钮 LW1504=1 function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1504 and get_uint16(vtype, addr) == 1 then record_clear(2) list_dir("1:") -- 遍历 SD 根目录 end end end6.2 复制 + 删除(带进度条)function on_copy_file_process(status, filesize, transfersize) if status == 0 then set_uint16(VT_LW, 0x1507, 3) -- 失败 elseif status == 1 then local p = math.floor(transfersize * 100 / filesize) set_uint16(VT_LW, 0x1506, p) -- 进度条 refresh_screen() elseif status == 2 then set_uint16(VT_LW, 0x1506, 100) set_uint16(VT_LW, 0x1507, 2) -- 成功 refresh_screen() end end function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1505 then local mode = get_uint16(vtype, addr) if mode == 1 then -- 复制 if file.exists("1:/1.txt") then file_copy("1:/1.txt", "1:/1_copy.txt") else set_uint16(VT_LW, 0x1507, 1) end mkdir("1:/test") elseif mode == 2 then -- 删除 file_delete("1:/test") if file.exists("1:/1_copy.txt") then file_delete("1:/1_copy.txt") if not file.exists("1:/1_copy.txt") then set_uint16(VT_LW, 0x1507, 4) else set_uint16(VT_LW, 0x1507, 5) end else set_uint16(VT_LW, 0x1507, 1) end end refresh_screen() end end 五个必踩的坑:①内存铁律——严禁全局累积大缓冲,一次只留 ≤2KB 块,否则看门狗复位;②追加写必须 file_seek(file_size()),HMI 的 append 不是 O_APPEND;③路径必须带设备前缀和 /——「1:/config.txt」对、「1:config.txt」错;④大文件读取循环里要 feed_dog(),回调里别干耗时的事;⑤写文件后立即 file_close(),断电会损坏文件或部分写入。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「文件读写」,版权归大彩科技所有。 --- ### 471. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警过滤回调 on_filter_warning(warning_id)(定制固件专属):决定某条告警显示还是不显示。返回 0 不显示、1 显示。典型场景:一台 HMI 管理两台设备,设备 1 的告警(ID 1~100)在画面 0 看,设备 2 的告警(ID 101~200)在画面 2 看——不靠过滤就得建两套告警。 1. 启用过滤on_init 里置位启用:function on_init() set_uint16(VT_LW, 0x0115, 1) -- 启用告警过滤 end function on_filter_warning(warning_id) local cur = get_uint16(VT_LW, 0x0114) -- 当前画面/设备号 if cur == 0 then return (warning_id >= 1 and warning_id = 101 and warning_id <= 200) and 1 or 0 end return 1 end 2. 结合 warning_set 分发多从机场景:告警数据从 Modbus 读回来,用 warning_set 批量触发,过滤回调只放行当前设备相关的:-- 读回告警后逐个触发 function on_cmd_resp(slave, vtype, addr, count, ret, wr) ... for j = 0, 15 do local bitv = (val >> j) & 0x01 warning_set(idx + slave * 100, bitv, 1) -- 设备号编码进告警ID end end -- 过滤:只显示当前选中设备的告警 function on_filter_warning(warning_id) local dev = get_uint16(VT_LW, 0x0114) -- 当前设备号 local wdev = math.floor(warning_id / 100) -- 告警所属设备 return (wdev == dev) and 1 or 0 end刷新显示:切换设备后往 0x0114 写 0x0022 触发告警列表刷新(不同版本刷新机制看固件手册)。 两个坑:①on_filter_warning 返回 0 是隐藏、1 是显示,别写反;②过滤和告警控件是联动关系——过滤只影响显示,告警数据本身还在,切换条件后要主动刷新列表才能看到变化。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警过滤」,版权归大彩科技所有。 --- ### 472. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警选择回调 on_select_warning(screen_id, control_id, warning_id, starttime, stoptime, warning_text)(定制固件专属):用户在告警列表里选中某条告警时触发,把告警 ID、起止时间、文本都给你,脚本可以做处置建议、详情展示。 1. 前置条件告警控件控件 ID ≠ 0(和自绘控件一样,0 号控件不触发)告警控件勾选容许选中√ 2. 回调参数参数说明screen_id画面 IDcontrol_id控件 IDwarning_id告警 IDstarttime告警开始时间(时间戳)stoptime告警结束时间(时间戳)warning_text告警文本 3. 应用:按告警 ID 给处置建议g_Solution = { [1] = "检查压缩机排气压力", [2] = "检查冷凝器散热", [3] = "检查制冷剂是否泄漏", [100] = "检查水泵运行状态", } function make_datetime(ts) -- 时间戳格式化,按需实现 return os.date("%Y-%m-%d %H:%M:%S", ts) end function on_select_warning(screen_id, control_id, warning_id, starttime, stoptime, warning_text) local sol = g_Solution[warning_id] or "暂无处置建议" set_string(VT_LW, 0x1100, "告警ID:"..warning_id) set_string(VT_LW, 0x1101, make_datetime(starttime)) set_string(VT_LW, 0x1102, sol) -- 处置建议显示到 LW1102 end典型场景:运维人员点开一条告警,屏幕直接显示「这条告警该怎么处理」——比翻手册快得多。 两个坑:①定制固件才有此 API,普通固件没有;②必须 控件ID≠0 + 容许选中√ 同时满足,否则选中动作不触发回调。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警选择」,版权归大彩科技所有。 --- ### 473. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警参数回调 on_get_warning_param(warning_id) 解决一个问题:告警内容里要带实时数值。比如「温度过高:当前 85.5℃」——告警文本是模板,数字是运行时的。回调返回最多 4 个参数(data0~data3),填入告警设置里的 {#N:num1.num2} 占位符。 1. 占位符格式 {#data:num1.num2}在告警设置里,告警内容可以写成:温度过高:{#0:2.2} ℃字段含义data参数 ID,从 0 开始,最多 4 个(data0~data3)num1整数位前置空格数(对齐用)num2小数位补零数例:{#0:2.2} 表示 data0 显示 2 位整数(不足前补空格)+ 2 位小数(不足补零)。 2. 回调实现function on_get_warning_param(warning_id) -- 返回最多 4 个参数 local data0 = get_uint16(VT_LW, 0x1001) / 100 -- 缩小100倍:85.5 存的是 8550 local data1 = get_uint16(VT_LW, 0x1002) local data2 = get_uint16(VT_LW, 0x1003) local data3 = get_uint16(VT_LW, 0x1004) return data0, data1, data2, data3 end温度 85.5℃ 在寄存器里存 8550(放大 100 倍),回调里 /100 还原,再按 {#0:2.2} 格式化成「85.50」显示。 3. 与 on_parse_warning 的区别on_get_warning_param 只负责返回数值参数,文本模板在告警设置里配;而 on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3) 是完全接管告警文本生成——返回 (字符串, 编码),编码 1=GBK(中文屏推荐)/0=UTF-8。两者互斥,用参数填充就别用全接管。 三个坑:①回调只对设置了 {#N:...} 占位符的告警生效,没占位符的告警不会调它;②参数最多 4 个(data0~data3),超了不显示;③缩放注意单位——寄存器存的是放大值,回调里必须还原,否则显示 8550 而不是 85.50。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警参数」,版权归大彩科技所有。 --- ### 474. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警参数让告警文本能嵌入实时寄存器值——比如「1#压缩机电流过高:当前 12.5A」这种动态告警,而不是死板的固定文本。系统支持最多 4 个独立参数字段,每个字段可单独配显示格式(整数位前置空格、小数位补零),告警内容自动拼接。适用 HMI&M 系列&Dx 系列。 1. API:on_get_warning_param(warning_id)工程告警设置里启用了「告警参数」后,系统在显示告警详情时自动调用此回调。参数 warning_id 是告警唯一标识符,按 ID 区分业务逻辑,返回最多 4 个数值/状态参数:返回值必填用途data0否填充告警设置里的 {#0:num1.num2},或 on_parse_warning 的 p0data1否填充 {#1:num1.num2},或 on_parse_warning 的 p1data2否填充 {#2:num1.num2},或 on_parse_warning 的 p2data3否填充 {#3:num1.num2},或 on_parse_warning 的 p3 2. 告警内容格式:{#data:num1.num2}在告警设置里写告警内容时,参数占位符要遵循这个格式:字段含义示例data告警参数 ID,最多 4 个,从 0 开始{#0:2.2} 用 data0num1整数位前置空格个数num1=2:值 12.5 显示成「 12.5」(2 个前导空格)num2小数位个数,显示补零num2=2:值 12.5 显示成「12.50」例:告警内容写「1#压缩机电流过高:{#0:2.2}A」,data0 返回 12.5,显示为「1#压缩机电流过高: 12.50A」。 3. 应用案例:电流/温度告警带参数3.1 画面配置告警显示控件:告警模式=历史告警、时间顺序、显示日期和时间、时间在前、列宽比例 20;100;20;20、每页 5 行、滚动条√。两个位状态指示灯触发/解除告警:读取地址 LW1000.0 和 LW1000.1,切换开关类型。四个数值控件模拟告警参数:读取地址 LW1001~LW1004,启用输入。3.2 Lua:按告警 ID 返回参数告警内容里 {#0:2.2} 的意思是 data0 要缩小 100 倍显示(寄存器存的是放大 100 倍的值),所以回调里除 100:function on_get_warning_param(warning_id) if warning_id == 0 or warning_id == 1 then -- 告警ID 0 或 1 local data0, data1, data2, data3 = 0, 0, 0, 0 data0 = get_uint16(VT_LW, 0x1001) / 100 -- 放大100倍存储,除以100还原 data1 = get_uint16(VT_LW, 0x1002) / 100 data2 = get_uint16(VT_LW, 0x1003) / 100 data3 = get_uint16(VT_LW, 0x1004) -- 这个不缩 return data0, data1, data2, data3 end end运行虚拟屏,键盘给 LW1001 输入 1250,触发告警 0,告警内容里的 {#0:2.2} 显示 12.50——比例换算全在回调里做,显示端不用再处理。 三个要点:①占位符格式必须是 {#data:num1.num2},data 从 0 开始最多 4 个,写错格式参数不显示;②num1 是整数位前置空格不是整数位数——想右对齐才用,不需要就写 0;③num2 是小数位补零,寄存器里放大 10/100 倍存的工程值,记得在回调里除回去。这个回调和 on_parse_warning 是两套机制:on_get_warning_param 只填数值参数,on_parse_warning 是自定义整个告警文本。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警参数」,版权归大彩科技所有。 --- ### 475. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警集中管理:warning_set(warning_id, value, count) 批量触发告警 + on_parse_warning 自定义告警文本。典型场景:HMI 从 Modbus 读回从机的故障位,逐位映射成告警——8 台从机、每台 96 个告警,一条命令全触发。 1. API 总表函数说明warning_set_mode(en)全局使能:1=开/0=关warning_set(warning_id, value, count)位掩码批量触发:value 的低 count 位对应从 warning_id 起的告警(bit0→warning_id,count 1~16)on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3)自定义告警文本回调,返回 (字符串, encode),encode 1=UTF-8/0=GBK 2. 8 从机 × 96 告警案例架构:8 台从机,每台读 Modbus 4x1000 起连续 6 个寄存器(16bit×6=96 位告警)。on_init 里 create_resp_que,on_cmd_resp 中逐从机逐寄存器逐位调用 warning_set。_warningTb = {} -- 0x1000~0x1005 各 bit 的告警名 function on_init() set_auto_read(0) create_resp_que() -- 告警设置里预配 768 条(8 台 × 96) end function on_cmd_resp(slave, vtype, addr, count, ret, wr) if ret == 0 and wr == 0 then -- slave 从机,addr 起始,读回 count 个寄存器 for i = 0, 5 do local val = get_uint16(vtype, addr + i) for j = 0, 15 do local bitv = (val >> j) & 0x01 local wid = (addr - 0x1000) * 16 + j + slave * 100 warning_set(wid, bitv, 1) -- 单 bit 触发 end end end end function on_parse_warning(id, text, screen_id, control_id, p0, p1, p2, p3) local slave_no = math.floor(id / 96) + 1 -- 从机号 local msg_id = id % 96 -- 消息 ID local name = _warningTb[0x1000 + math.floor(msg_id / 16)] or "未知告警" local msg = "从机"..slave_no.." : "..name return msg, 1 -- 1=UTF-8 end告警 ID 编码约定:从机号×100 + 位序号,解析时反推。告警设置需预配全部 768 条,文本用 on_parse_warning 动态生成(按从机号前缀),比静态配 768 条文本省事得多。 三个坑:①warning_set 的 value 低 count 位对应从 warning_id 起的告警,bit0→warning_id、bit1→warning_id+1,批量触发一条命令搞定;②count 范围 1~16,超过拆多次;③on_parse_warning 的返回值第一个是文本、第二个是编码(1=UTF-8/0=GBK),中文屏别用错编码。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「告警集中管理」,版权归大彩科技所有。 --- ### 476. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 LUA 画图 API 全套:直线、矩形、半透矩形、圆、椭圆、文字、图片、屏内/外部图片(SD/U 盘)、截图。核心机制是 on_draw(screen, control) 控件级自绘回调——所有 draw_xxx 指令必须在 on_draw 里调用才生效。适用 HMI&M 系列&Dx 系列。 1. 绘图 API 总表函数参数说明set_pen_color(color)RGB565 颜色设置画笔前景色,作用于线条/边框/轮廓/文本描边draw_line(x0,y0,x1,y1,width)width 1~10画直线,颜色取当前画笔draw_rect(x0,y0,x1,y1,fill)fill 1=填充/0=边框矩形,x0,y0 左上角,x1,y1 右下角draw_rect_alpha(x0,y0,x1,y1,alpha)alpha 0~255半透明实心矩形,0=全透/255=不透明,做遮罩层draw_circle(x,y,r,fill)fill 0=实心/非0=空心(值为线宽)画圆,x,y 圆心,r 半径draw_ellipse(x0,y0,x1,y1,fill)外接矩形两角,fill 同上画内切于矩形的椭圆draw_image(image_id,frame_id,dstx,dsty,w,h,srcx,srcy)image_id 查 build/image.xml;frame_id 动画帧画工程图片资源,支持缩放和裁剪draw_text(text,x,y,w,h,font_id,size,color,align,charcode)align 0左/1中/2右;charcode 0=UTF-8/1=GBK区域内画文字load_surface(filename)JPEG/PNG 路径加载外部图片返回句柄(不走 image.bin)draw_surface(surface,dstx,dsty,w,h,srcx,srcy)surface 句柄画已加载的外部图片,支持裁剪缩放,必须在 on_draw 里调destroy_surface(surface)句柄释放单个图层资源destroy_all_surface()-批量释放所有已加载图层get_surface_size(surface)句柄获取图层原始像素宽高clear_image_buffer()-释放内部图片资源缓存screen_shoot(filepath)完整路径含扩展名当前画面存为 JPEG 2. on_draw 触发机制(必须先懂)on_draw(screen_id, control_id) 是系统回调,用户不得直接调用。control_id 必须 ≠ 0,否则自绘功能无效。触发条件:画面含动画、视频、RTC 等动态元素刷新用户触摸/操作屏幕控件脚本 set_xxx 更新控件属性串口/LUA 改寄存器导致控件状态变化主动调用 redraw()多图层机制:HMI 用控件 Z 轴顺序(编辑器里控件叠放顺序)当图层管理。on_draw 对每个可重绘控件独立触发,按 control_id 判断往哪个图层画。示例:蓝色矩形 ID=10 在下层画「水果」,黄色矩形 ID=11 在上层画「小岛」,黄色会盖住蓝色部分。function on_draw(screen_id, control_id) if screen_id == 0 and control_id == 1 then draw_surface(surface[1], 293, 88, 222, 353, 0, 0) -- 裁剪显示 elseif screen_id == 0 and control_id == 2 then draw_surface(surface[2], 314, 158, 180, 250, 0, 0) end end 3. 颜色:RGB565所有颜色参数都是 16 位 RGB565:高 5 位 Red(0~31)、中 6 位 Green(0~63)、低 5 位 Blue(0~31),范围 0x0000~0xFFFF。颜色RGB(888)RGB565Lua 常量建议红(255,0,0)0xF800COLOR_RED = 0xF800绿(0,255,0)0x07E0COLOR_GREEN = 0x07E0蓝(0,0,255)0x001FCOLOR_BLUE = 0x001F白(255,255,255)0xFFFFCOLOR_WHITE = 0xFFFF黑(0,0,0)0x0000COLOR_BLACK = 0x0000 4. 应用案例:15 种绘制类型开关4.1 工程配置15 个字设置按钮全关联 LW6101,常量值 1~15 依次对应:直线/矩形/半透矩形/圆/椭圆/图片ID/文字/屏内图片/销毁图片/销毁所有图片/获取图大小/视频窗口截图/屏幕截图/画SD图/画U盘图片。15 个位状态指示灯关联 LW6100 切画笔颜色。4.2 框架:mode 表 + switch 分发penColor = {0xF800, 0x001F} -- 红、蓝 CUR_COLOR = 0xF800 -- 初始颜色 draw_type = 0 -- 当前绘制类型 mode = { -- 绘制类型表 line = 1, rect = 2, rect_alpha = 3, circle = 4, ellipse = 5, imageId = 6, text = 7, surface_path3 = 8, destroyOne = 9, destroyAll = 10, getSurface = 11, videoShoot = 12, screenShoot = 13, surface_pathsd = 14, surface_pathusb = 15 } function on_update(slave, vtype, addr) if addr == 0x6100 then CUR_COLOR = penColor[get_uint16(VT_LW, addr) + 1] -- 切画笔 elseif addr == 0x6101 then draw_type = get_uint16(VT_LW, addr) -- 切绘制类型 end redraw() -- 触发重绘 end function on_draw(screen_id, control_id) set_pen_color(CUR_COLOR) local switch = { [mode.line] = function(control) -- 键值1 draw_line(225, 253, 405, 253) -- 默认宽度1 draw_line(508, 128, 508, 378, 5) -- 宽度5 end, [mode.rect] = function(control) -- 键值2 draw_rect(225, 128, 225+180, 128+250, 0) -- 不填充 draw_rect(418, 163, 418+180, 128+180, 1) -- 填充 end, [mode.rect_alpha] = function(control) -- 键值3 draw_rect_alpha(225, 128, 225+180, 128+250, 200) -- 透明度200 draw_rect_alpha(418, 163, 418+180, 128+180, 230) -- 透明度230 end, [mode.circle] = function(control) -- 键值4 draw_circle(300, 253, 100, 0) -- 实心 draw_circle(450, 253, 150, 1) -- 空心(线宽1) end, [mode.ellipse] = function(control) -- 键值5 draw_ellipse(225, 128, 225+180, 128+250, 0) -- 实心 draw_ellipse(418, 163, 418+180, 128+180, 1) -- 空心 end, [mode.text] = function(control) -- 键值7 draw_text("VisualHMI", 100, 300, 200, 40, 0, 24, CUR_COLOR, 1, 0) -- 居中 UTF-8 end, } if switch[draw_type] then switch[draw_type](control) end end 5. 外部图片(SD/U 盘)与截图-- 加载 SD 卡图片(load_surface 支持 JPEG/PNG) if draw_type == mode.surface_pathsd then surface[1] = load_surface("1:/pic.png") redraw() end -- on_draw 里绘制 if draw_type == mode.surface_pathsd then if surface[1] then draw_surface(surface[1], 225, 128, 180, 250, 0, 0) end end -- 截图到 SD 卡 if draw_type == mode.screenShoot then screen_shoot("1:/shot.jpg") end用 load_surface 加载的外部图片不进工程 image.bin,是运行期从文件系统读。用完必须 destroy_surface 释放,否则内存泄漏;大图或带透明通道的 PNG 特别吃内存。 五个坑:①draw_xxx 必须在 on_draw 回调里调用才生效,在 on_update 里画什么都没反应;②控件 ID ≠ 0,0 号控件不触发自绘;③draw_circle/draw_ellipse 的 fill 语义和 draw_rect 相反——圆和椭圆 0=实心、非0=空心,矩形 1=填充/0=边框,别记混;④draw_image 的 image_id 查工程 build/image.xml,不是文件名;⑤外部图片用完就 destroy_surface,HMI 内存小,泄漏多了直接崩。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「画图」,版权归大彩科技所有。 --- ### 477. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数据记录控件 + record_* API:在 HMI 上维护历史数据表——数值型(如电压曲线数据)和字符串型(如操作日志)都能存,配表格控件显示、翻页、时间戳定位。sn 是资料采样通道索引,范围 0~19 共 20 通道,控件数据来源选「资料采集」的哪个通道,API 就操作哪个。 1. record_* API 总表函数说明record_get_count(sn)通道已存记录总条数record_write_data(sn, data)追加一条记录,data 为字数组(索引从 1 开始)record_read_data(sn, index)读一条,返回 data(索引从 1)和 timestamp(32 位 Unix 秒)record_modify_data(sn, index, data)改一条,index 从 0 开始,须 < record_get_count(sn)record_write_string(sn, strings)追加字符串记录,字段用分号 ; 分隔record_read_string(sn, index)读字符串记录,返回 strings 和 timestamprecord_modify_string(sn, index, strings)改字符串记录record_clear(sn)清空通道所有记录(数值/字符串都行)⚠️ 若采样已启用块地址存储模式,记录不可篡改——modify 会失败。 2. 数值表格案例(添加/修改/读取/清除/查条数)资料采集配置:触发采样、记录条数 100、数据地址 LW2000、UINT16、数据个数 10、控制地址 LW1001、采样控制地址 LW1002、启动模式 OFF→ON。数据记录控件:数据来源「[0]数值数组」、时间逆序、通道数 10、每页 5 行、翻页控制 LW1004、允许翻页 LW1005(只读)、时间戳定位 LW1006(UINT32)、选中行通知 LW1008(UINT32)。5 个按钮写 LW1000,常量 1=添加/2=修改/3=读取/4=清除/5=读条数。addByteRatio = 0 -- 累加器,让每次添加的数据不同 function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1100 then -- 操作按钮 local key = get_uint16(VT_LW, 0x1100) local dataTb = {} if key == 1 then -- 添加 addByteRatio = addByteRatio + 1 for i = 1, 10 do dataTb[i] = i * addByteRatio -- 第一次 1..10,第二次 2..20 end record_write_data(0, dataTb) elseif key == 2 then -- 修改选中行 local cnt = record_get_count(0) local line = cnt - get_uint32(VT_LW, 0x1105) - 1 -- 逆序表格行映射 for i = 1, 10 do dataTb[i] = 12345 end record_modify_data(0, line, dataTb) elseif key == 3 then -- 读取选中行 local cnt = record_get_count(0) local line = cnt - get_uint32(VT_LW, 0x1105) - 1 local data, timeUnix = record_read_data(0, line) local msg = "时间:"..timeUnix.." 数据:" for i = 1, 10 do msg = msg..data[i].." " end set_string(VT_LW, 0x1160, msg) elseif key == 4 then record_clear(0) -- 清除 elseif key == 5 then set_string(VT_LW, 0x1160, "条数:"..record_get_count(0)) end end end end逆序表格的行映射:控件时间逆序显示,第 0 行是最新记录。选中行通知给的是显示位置,换算公式 line = cnt - select - 1。 3. 字符串表格案例资料采集:触发采样、记录条数 100、数据地址 LW3000、STRING、数据个数 50、控制地址 LW1501、采样控制地址 LW1502、启动模式 OFF→ON。控件:数据来源「[1]字符串」、字符串表格√、GB CODE、时间顺序(注意和数值案例的逆序不同)、通道数 10、每页 5 行、翻页 LW1201、允许翻页 LW1202、时间戳定位 LW1203、选中行通知 LW1205。5 个按钮写 LW1200。addStr = 0 function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1200 then local key = get_uint16(VT_LW, 0x1200) if key == 1 then -- 添加 local cnt = record_get_count(1) local line = get_uint32(VT_LW, 0x1205) -- 顺序表格不反转 if cnt < line - 1 then return end addStr = addStr + 10 local dataStr = "" for i = 1, 10 do dataStr = dataStr.."第"..(addStr - 10 + i).."个;" end record_write_string(1, dataStr) -- "第1个;...第10个;" elseif key == 2 then -- 修改 local line = get_uint32(VT_LW, 0x1205) record_modify_string(1, line, "change;change;change;change;change;change;change;change;change;change;") elseif key == 3 then -- 读取 local line = get_uint32(VT_LW, 0x1205) local dataStr, timeUnix = record_read_string(1, line) set_string(VT_LW, 0x1260, timeUnix..dataStr) elseif key == 4 then record_clear(1) elseif key == 5 then set_string(VT_LW, 0x1260, "条数:"..record_get_count(1)) end end end字符串记录用分号 ; 分隔字段,和表格控件解析规则一致。顺序表格选中行不用反转,直接拿 LW1205。 四个坑:①sn 通道号必须和控件数据来源选的资料采集索引对上;②数值记录 data 是下标从 1 的数组,别按 C 习惯从 0 开始;③逆序表格行映射要反转(line = cnt - select - 1),顺序表格不用;④块地址存储模式下记录不可 modify,要改数据别开掉电存储。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「数据记录」,版权归大彩科技所有。 --- ### 478. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 VisualHMI 的 Lua 支持 32 个软件定时器(索引 0~31)。启动后超时触发 on_timer(timer_id) 回调,做周期性任务、延时操作、状态轮询。⚠️ 这是应用层软件定时器,精度受系统负载影响,不适用于硬实时控制。 1. API 总表函数参数说明start_timer(timer_id, timeout, countdown, repeat)timeout 毫秒(最小约 10~20ms);countdown 0=顺计时/1=倒计时;repeat 0=无限重复/N=触发 N 次后自动停启动定时器stop_timer(timer_id)定时器 ID立即停止on_timer(timer_id)超时回调统一入口用 timer_id 区分并发定时器get_timer_value(timer_id)定时器 ID获取当前计时值(ms),支持顺/倒计时countdown 参数只影响内部计时显示/调试,不改 on_timer 的触发行为——顺计时到 timeout 触发,倒计时从 timeout 减到 0 触发,回调都是同一个。 2. 基础用法function on_init() start_timer(0, 1000, 0, 0) -- 1秒周期,无限重复 start_timer(1, 5000, 1, 1) -- 5秒倒计时,只触发1次 end function on_timer(timer_id) if timer_id == 0 then -- 每秒做一次:状态轮询 elseif timer_id == 1 then -- 5秒后执行一次 end end 3. 应用:倒计时完成后给 PLC 发指令需求:设定时/分后倒计时,倒计时结束复位按钮并给主板发指令。控件布局:位状态指示灯 LW1002(切换开关)控制启停;滚轮控件 LW1000(时,0~23)、LW1001(分)设时长;文本控件 LW1010 显示倒计时。_TIMER_REPEAT_ = 0 -- 总时长(秒) _TIMER_CNT_ = 0 -- 已触发次数 function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1002 then if get_uint16(VT_LW, 0x1002) == 1 and _TIMER_REPEAT_ > 0 then stop_timer(0) start_timer(0, 1000, 0, _TIMER_REPEAT_) -- 每秒一次,共 repeat 次 else stop_timer(0) end end end function on_timer(timer_id) if timer_id == 0 then _TIMER_CNT_ = _TIMER_CNT_ + 1 local remain = _TIMER_REPEAT_ - _TIMER_CNT_ -- 显示剩余时间 mm:ss set_string(VT_LW, 0x1010, string.format("%02d:%02d", math.floor(remain / 60), remain % 60)) if remain == 0 then set_uint16(VT_LW, 0x1002, 0x00) -- 复位启停按钮 set_uint16(VT_LW, 0x1003, 0x01) -- 发指令给主板 end end end要点:_TIMER_REPEAT_ 在用户设定时长时计算(hour*3600 + min*60);start_timer 的 repeat 传总次数,on_timer 每次累加 _TIMER_CNT_,相等即结束。set_notify(0/1) 控制定时器期间是否发出指令通知,需要下发时置 1。 三个坑:①软件定时器精度受系统负载影响,做硬实时控制会翻车;②timeout 最小约 10~20ms,别传 1ms 期望准;③repeat=N 触发 N 次后自动停,要无限循环传 0;多个定时器并发时用 timer_id 区分,on_timer 是统一入口。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「定时器」,版权归大彩科技所有。 --- ### 479. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus 一主多从:HMI 作为 Modbus 主机,通过 start_read 后台轮询多个从机的寄存器。核心函数 start_read 建任务、get_xxx 读缓存、on_cmd_resp 收结果——不阻塞脚本。 1. start_read 参数start_read(index, vtype, addr, quantity, cycle, cycle_run, mode)参数说明index任务索引 0~127,stop_read(index) 用vtype寄存器类型(VT_0x/VT_3x/VT_4x 等)addr起始地址quantity读取数量 1~120 个寄存器cycle选填,轮询周期倍数(默认 0=每周期都读)cycle_run选填,周期内第几次执行(0-based,须 < cycle)mode选填,0=持续周期读(默认)/1=仅读一次(需先 create_resp_que()) 2. 基本用法function on_init() -- 每周期都读从机0的 4x1000~1009(10个寄存器) start_read(0, VT_4x, 0x1000, 10) -- 每 3 个周期读一次从机1的 4x2000~2009,且在周期内第3次执行 start_read(1, VT_4x, 0x2000, 10, 3, 2) end function on_run(screen) -- 读数据直接拿缓存,零通信开销 local v = get_uint16(VT_4x, 0x1000) local f = get_float(VT_4x, 0x2000) endstart_read 只建任务,实际数据靠 get_xxx 从本地缓存读——和寄存器操作篇同一个机制。要拿读完成通知,用 on_cmd_resp 回调(需 create_resp_que 配合)。 3. 多从机轮询调度-- 8 台从机,每台读 20 个寄存器,错开周期避免总线拥堵 function on_init() for i = 0, 7 do start_read(i, VT_4x, 0x0000, 20, 8, i) -- 8周期轮一遍,每周期读一台 end end function on_cmd_resp(slave, vtype, addr, count, ret, wr) if ret == 0 then -- 第 slave 台从机读取成功,处理数据 else -- 通信异常,标记从机离线 end end从机多了总线带宽有限,用 cycle/cycle_run 错峰读;异常在 on_cmd_resp 里 ret 非 0 判断,做离线标记。 三个坑:①quantity 最大 120,超过要分多次 start_read;②cycle_run 必须小于 cycle,且 cycle_run 从 0 计数;③stop_read 停止任务后缓存保留最后值——不会清零,判断离线要靠 on_cmd_resp 的 ret。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「Modbus一主多从」,版权归大彩科技所有。 --- ### 480. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 这是 VisualHMI 平台 Lua 脚本的完整 API 手册:10 个系统回调 + 32 个读写寄存器函数 + 10 个绘图函数,共 52 个接口。写脚本前先翻这篇,比逐个翻教程快。平台基于 Lua 5.3。 0. 基础:自动生成的 main.lua 菜单 工程→脚本编程 默认生成 main.lua,自动带协议对应的数据类型定义:ENCRYPT_ = 0 -- LUA脚本加密开关 -- 数据类型定义(随协议变化,以下为 Modbus) VT_LW = 1 -- 内部变量 VT_RW = 2 -- FLASH掉电存储 VT_0x = 10 -- 线圈 VT_1x = 11 -- 输入点(离散输入) VT_3x = 12 -- 输入寄存器 VT_4x = 13 -- 保持寄存器 function on_init() end function on_run(screen) end function on_update(slave,vtype,addr) end function on_draw(screen_id,control_id) endFX3U 协议下还会有 VT_M(内部继电器)、VT_D(D寄存器)等类型。on_update 里的 vtype、get/set 函数第一个参数都用这些常量。 1. 常用回调函数(10 个) 回调触发时机要点on_init()系统加载 LUA 后立即执行一次初始化、dofile 加载其他 lua、写初值on_run(screen)每个主循环周期自动调用核心周期调度。禁止 delay_ms/长循环/网络同步/内部 set_run_cycle();Modbus 主站时别高频写从机(总线堵塞)on_update(slave,vtype,addr)寄存器/变量值变化时触发数据驱动不轮询。串口/Modbus 主站写入、on_update 内 set_xxx 不触发(防递归);可用全局 EN_ON_UPDATE_API_CB 控制开关on_screen_change(screen)画面切换完成后初始化/状态同步/资源加载on_press(state,x,y)触摸状态变化,每 100ms 最多一次state: 0抬起/1按下/2长按(按下只触发一次);底层坐标,点空白也触发on_usb_inserted(driver)U 盘插入识别driver 为盘符,M 系列是 "2:",用全局变量记录on_usb_removed()U 盘拔出清盘符全局变量on_sd_inserted(dir)SD 卡插入识别dir 盘符,M 系列是 "1:"on_sd_removed()SD 卡拔出清盘符全局变量on_parse_timestamp(screen,control,timestamp)告警/数据/操作记录表格时间字段格式化control 必须≠0;配 make_datetime(timestamp) 返回自定义时间串 2. 读写寄存器函数(32 个) 2.0 先说两个关键机制(所有 set/get 通用)机制一:get_xxx() 是零通信开销的。get 系列全部从 HMI 本地缓存(内存镜像)读,不产生串口帧。HMI 后台任务按工程配置的轮询周期自动从 PLC 读通信变量(如 Modbus 的 VT_3x/VT_4x)并缓存。画面控件绑定了某地址,该地址就自动进轮询列表;脚本要读没被工程引用的地址,用 start_read 显式请求同步。机制二:set_xxx() 不一定发串口帧。只有两个条件同时满足才主动发报文:①HMI 是主机模式(Modbus Master/DCBUS/XGUS);②串口通知没被 set_notify(0) 禁止。从机模式下 set 只更新本地镜像。 2.1 通信控制函数参数说明set_notify(enable)0禁止/1使能(默认)全局串口发送通知开关。set_notify(0) 后 set_xxx 不发串口指令,改完恢复 set_notify(1)select_slave(slave_id)从机索引 0 起多从机模式下切换后续 get/set 访问的从机。slave_id 是工程从机列表数组下标,不是 Modbus 站号set_endian(en)0大端(默认)/1小端多字节数据(uint16/32/float)与从机交换时的字节序。仅通信协议涉及多字节时生效start_read(index,vtype,addr,quantity,cycle,cycle_run,mode)index 0~127;quantity 1~120;cycle 轮询倍数(默认0=每周期);cycle_run 周期内第几次(0-based);mode 0持续/1仅一次主机模式后台自动轮询。无返回值,数据用 get_xxx 读缓存。mode=1 需先 create_resp_que()stop_read(index)任务索引停止指定后台读取任务,缓存保留最后值stop_all_read()-停掉所有脚本启动的读取任务set_auto_read(en)1启用(默认)/0禁止画面绑定变量自动轮询的总开关。0 后完全由 start_read 接管create_resp_que()-创建响应队列,配合 start_read(mode=1) 做单次按需读取on_cmd_resp(slave,vtype,addr,count,ret,wr)ret 0成功/1异常;wr 0读/1写主机模式通信结果异步回调,收到响应或超时触发。判断单次读写成败set_slave_site(idx,slave_id)idx 从机索引;slave_id 新站号(Modbus 1~247)运行时动态改从机站号,适应现场组网 2.2 位操作函数参数说明set_bit(vtype,addr,value,count)value 16位无符号,低 count 位对应目标位(bit0→addr,bit1→addr+1…);count 选填 1~16批量位写入。Modbus 线圈、FX3U 的 X/Y/S/M 都行。一次通信写多个开关get_bit(vtype,addr)-读单一位,返回 0/1。从本地缓存读,零通信开销 2.3 数值读写(16/32/64 位)函数数值范围地址跨度set/get_uint16(vtype,addr,value)0~65535,超出截断 & 0xFFFF1 个寄存器set/get_int16(vtype,addr,value)-32768~+32767,超出截断 & 0xFFFF1 个寄存器set/get_uint32(vtype,addr,value)0~4294967295,截断 & 0xFFFFFFFF2 个寄存器set/get_int32(vtype,addr,value)-2^31~2^31-12 个寄存器set/get_uint64(vtype,addr,value)0~2^64-14 个寄存器set/get_int64(vtype,addr,value)-2^63~2^63-14 个寄存器set/get_float(vtype,addr,value)IEEE 754 单精度2 个寄存器set/get_double(vtype,addr,value)IEEE 754 双精度4 个寄存器所有 get 系列读本地缓存;set 系列通信触发看「机制二」。 2.4 字符串与批量函数参数说明set_string(vtype,addr,str)str 最大 2K 字节,UTF-8 或 GBK写字符串到地址序列get_string(vtype,addr,len)len 选填,默认 128 字节,最大 2048读字符串,自动在 截断set_uint16_ex(vtype,addr,value1,...,valueN)最多 120 个值可变参数批量写连续寄存器,适合固定参数集set_array(vtype,addr,buff)buff 为 Lua table(word 数组),最多 120 字table 批量写,适合程序化生成/动态数据。与 set_uint16_ex 区别在传参方式 3. 绘图函数(10 个) 全部 draw_xxx 必须在 on_draw(screen_id,control_id) 回调里调用才生效,控件 ID 必须 ≠ 0。图层按控件 Z 轴(编辑器叠放顺序)管理,靠判断 control_id 分层绘制。主动刷新调 redraw()。函数参数说明set_pen_color(color)RGB565:高5位R(0~31)/中6位G(0~63)/低5位B(0~31)设置画笔(前景)颜色。红 0xF800、绿 0x07E0、蓝 0x001F、白 0xFFFF、黑 0x0000draw_line(x0,y0,x1,y1,width)width 1~10画直线,颜色取当前画笔draw_rect(x0,y0,x1,y1,fill)fill 1填充/0边框左上角+右下角坐标draw_rect_alpha(x0,y0,x1,y1,alpha)alpha 0~255(0透明/255不透明)半透明实心矩形,遮罩层常用draw_circle(x,y,r,fill)fill 0实心/非0空心(值作线厚)圆心+半径draw_ellipse(x0,y0,x1,y1,fill)fill 0实心/非0空心外接矩形定义椭圆draw_image(image_id,frame_id,dstx,dsty,width,height,srcx,srcy)image_id 查 build/image.xml;frame_id 动画帧(非动画=0)绘制图片,支持缩放+裁剪。image_id 在工程 build 目录 image.xml 里查draw_text(text,x,y,w,h,font_id,size,color,align,charcode)align 0左/1中/2右;charcode 0=UTF-8(默认)/1=GBK区域文字绘制,支持多字节字符draw_surface(surface,x,y,w,h,srcx,srcy)surface 为画面/画布资源画面裁剪显示,多图层合成用 4. 绘图实例:switch 表驱动源文所有绘图示例都是一个套路:on_update 读按钮键值 → redraw() → on_draw 里按键值查 switch 表选绘制函数。以画线+画圆为例:draw_type = 0 mode = { line = 1, rect = 2, rect_alpha = 3, circle = 4, ellipse = 5, imageId = 6, text = 7 } function on_update(slave,vtype,addr) if addr == 0x1000 then draw_type = get_uint16(VT_LW, addr) -- 字设置按钮键值 redraw() end end function on_draw(screen_id, control_id) local switch = { [mode.line] = function(control) if screen_id == 0 and control == 1 then set_pen_color(0xFFE0) -- 黄色 draw_line(225, 253, 405, 253) set_pen_color(0xF800) -- 红色 draw_line(508, 128, 508, 378, 5) end end, [mode.circle] = function(control) if screen_id == 0 and control == 1 then draw_circle(300, 253, 100, 0) -- 实心圆 draw_circle(450, 253, 150, 1) -- 空心圆,线厚1 end end, } if switch[draw_type] then switch[draw_type](control_id) end end 三个最容易翻车的点:①get_xxx 读的是缓存不是实时值——要读没绑控件的地址,先 start_read 同步;②set_xxx 在从机模式下不发串口帧——MCU 收不到是正常的,别查半天波特率;③on_run 里严禁 set_run_cycle() 和 delay_ms,调度器会死锁。画图必须放 on_draw 里,控件 ID 非 0。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「Lua 脚本API函数接口」,版权归大彩科技所有。 --- ### 481. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 寄存器操作 API 是 LUA 读写数据的全部家当:set/get 系列覆盖所有数据类型,set_bit 处理位,set_array 批量写。核心机制先记住:get_xxx 全部从 HMI 本地缓存(内存镜像)读,不发串口帧——零通信开销。 1. 读取机制(重要)get_xxx() 系列函数不会实时向 PLC 发串口请求。HMI 后台任务按工程配置的轮询周期自动从 PLC 读通信变量(Modbus 的 3x/4x 等)并缓存,脚本只读缓存。好处是避免脚本逻辑造成通信风暴——你 get 一万次也不会把总线打爆。 2. API 总表函数范围/说明地址跨度set_bit(vtype,addr,value,count)批量位写,value 低 count 位对应 addr 起连续位(count 1~16);get_bit 返回 0/11set/get_uint160~65535,超范围截断 & 0xFFFF1set/get_int16-32768~+327671set/get_uint320~4294967295+2set/get_int32-2^31~2^31-1+2set/get_uint640~2^64-1+4set/get_int64-2^63~2^63-1+4set/get_floatIEEE 754 单精度+2set/get_doubleIEEE 754 双精度+4set_string(vtype,addr,str)最大 2K 字节,UTF-8/GBK;get_string 默认 128 字节最大 2048, 截断按长度set_uint16_ex(vtype,addr,v1,...,vN)批量写,最多 120 个寄存器Nset_array(vtype,addr,buff)接收 Lua table(word 数组),最多 120 字N 3. vtype 取值(随协议变化)常量含义VT_0x线圈VT_1x输入VT_MFX3U 内部继电器VT_3x输入寄存器VT_4x保持寄存器VT_DFX3U D 寄存器VT_LW内部变量(掉电不保存)VT_RW掉电保存区 4. 数据复制案例(12 组模式通用套路)最常见的需求:外部给 LW 写数据,脚本搬到另一个地址或转换格式。套路是 on_update 里判断 vtype==VT_LW 和源地址,用 get 读、set 写目标:function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1000 then set_uint16(VT_LW, 0x1001, get_uint16(VT_LW, 0x1000)) -- uint16 复制 elseif addr == 0x1004 then set_uint32(VT_LW, 0x1006, get_uint32(VT_LW, 0x1004)) -- uint32(跨度+2) elseif addr == 0x101C then set_float(VT_LW, 0x101E, get_float(VT_LW, 0x101C)) -- float(跨度+2) elseif addr == 0x1030 then set_string(VT_LW, 0x1040, get_string(VT_LW, 0x1030, 16)) -- string(跨度16) end end end -- 批量写:addr==0x1050 且值为偶数时写 10 个寄存器 function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1050 then local v = get_uint16(VT_LW, 0x1050) if v % 2 == 0 then set_uint16_ex(VT_LW, 0x1060, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) -- 或 set_array(VT_LW, 0x1060, {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}) end end end 三个坑:①32 位以上数据类型有地址跨度——uint32/float 占 2 个寄存器、uint64/double 占 4 个,连续读写别把地址搞重叠;②set 超范围自动截断(& 0xFFFF 之类),不会报错也不会进位,数值错了你可能不知道;③get_string 默认读 128 字节,要更长显式传 len(最大 2048),字符串在 处截断。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「寄存器操作」,版权归大彩科技所有。 --- ### 482. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 系统回调是 LUA 和 HMI 内核之间的事件接口:内核在特定时机自动调你的函数,你不用轮询、不用自己触发。搞懂每个回调的触发时机和限制,是写出稳定脚本的前提。 1. 回调总表回调触发时机用途on_init()上电加载后执行一次dofile 加载模块、初始化参数/PLC/驱动板on_run(screen)周期执行(set_run_cycle 设定周期)核心调度入口,周期性任务on_press(state,x,y)触摸事件,100ms 最多一次按键处理、空闲待机on_update(slave,vtype,addr)变量值变化数据驱动逻辑(推荐优先用)on_screen_change(screen)画面切换后画面初始化、状态同步 2. on_run:周期调度(注意别卡死)on_run 是周期回调,里面干活的时长必须远小于周期。三个禁忌:Modbus RTU Master 高频写入易总线堵塞——on_run 里别每秒狂发写帧不可用 delay_ms、长循环、网络同步——阻塞主循环,画面全卡严禁 set_run_cycle 死锁——回调里改周期可能造成永不触发function on_init() set_run_cycle(1000) -- 设定 1 秒周期 end function on_run(screen) -- 每秒做一次的事情:状态轮询、超时判断 end 3. on_press:触摸回调与空闲待机on_press(state, x, y),state:0=抬起、1=按下、2=长按。每 100ms 最多触发一次。典型用途是空闲待机节能:一段时间没触摸自动熄屏/跳主页。_IDLE_TIMEOUT = 300000 -- 5分钟无操作 _idle_tick = 0 function on_press(state, x, y) _idle_tick = 0 -- 有触摸就重置计时 end function on_run(screen) _idle_tick = _idle_tick + 1000 -- 假设周期1s if _idle_tick >= _IDLE_TIMEOUT then set_screen(0) -- 跳回主画面 _idle_tick = 0 end end 4. on_update:数据驱动(优先用这个)on_update(slave, vtype, addr) 在变量值变化时触发,是数据驱动模式——比 on_run 轮询省资源。三个特性必须知道:外部串口/Modbus 主站写入不触发——只对 HMI 内部变量变化生效on_update 内调 set_xxx 被屏蔽——防无限递归,改值不会再次触发全局变量 _EN_ON_UPDATA_API_ 控制开关——置 0 可临时禁用,批量初始化时用_EN_ON_UPDATA_API_ = 0 -- 初始化期间关回调 -- ... 批量写寄存器 ... _EN_ON_UPDATA_API_ = 1 -- 开回回调 function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0x1000 then -- LW1000 变化了,处理业务 end end end 5. on_screen_change:画面切换后初始化画面切换完成后触发,做该画面的初始化、状态同步、资源加载——比在切屏前处理更稳。 四个坑:①on_run 里严禁 delay_ms/长循环,会卡死主循环;②Modbus 主站别在 on_run 高频写,总线堵塞没商量;③on_update 里 set_xxx 不会再次触发回调,别指望链式触发;④批量初始化寄存器前把 _EN_ON_UPDATA_API_ 置 0,防回调风暴。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「系统回调」,版权归大彩科技所有。 --- ### 483. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 RW 区是 HMI 的掉电保存寄存器:地址 0x0000~0x7FFF 共 64KB(32768×2 字节),基于 Flash 存储,上电默认值 0xFFFF。参数、配方、运行状态这类「断电不能丢」的数据放这里。但它有寿命和坑,用不好会毁固件。 1. RW 区特性项目值地址范围0x0000 ~ 0x7FFF(32768 字)存储介质Flash(掉电保存)默认值0xFFFFFlash 寿命约 10 万次擦写写入机制内部 4KB 写缓存队列,约每 400 次写入触发一次擦写 2. ⚠️ 致命风险:过度擦写会毁固件RW 区和固件区物理相邻。反复擦写 RW 如果扩散到固件区,设备直接损坏:黑屏、no firmware 蓝屏。这是硬伤,不是吓唬人。另外 Flash 按扇区顺序落盘(低地址先写),跨扇区的标志位有一致性风险——一个标志的两个字节落在不同扇区,写一半断电可能半新半旧。 3. 正确使用姿势地址连续分配:参数集中放一段,别到处撒set_array 批量写:一次写一组,别一个一个 set控制写入频率:只有值变化才写,别周期刷标志位放同扇区:需要原子性的标志放一起启动做边界值检查:上电读 RW 校验合法性(0x55AA 魔数)function on_init() -- 上电检查 RW 是否已初始化(魔数 0x55AA) if get_uint16(VT_RW, 0x2000) ~= 0x55AA then -- 首次上电,写入默认参数 set_uint16(VT_RW, 0x2000, 0x55AA) -- 魔数 set_uint16(VT_RW, 0x2001, 50) -- 温度上限默认值 set_uint16(VT_RW, 0x2002, 4800) -- 波特率默认值 else -- 已初始化,检查参数边界 local t = get_uint16(VT_RW, 0x2001) if t 100 then set_uint16(VT_RW, 0x2001, 50) -- 越界恢复默认 end end end推荐「同扇区标志 + 参数边界检查」双重策略:魔数确认初始化过,边界检查防脏数据。 三个铁律:①严禁高频实时数据存 RW——曲线、计数、实时值放 LW,只有掉电要留的参数才进 RW;②写前先判断值是否变化,没变就别写,10 万次寿命经不起周期刷;③上电必须做初始化检查,用 0x55AA 魔数 + 边界校验,否则首次上电读到 0xFFFF 全乱。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「RW存储」,版权归大彩科技所有。 --- ### 484. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 LUA 是 VisualHMI 的脚本语言,负责把 HMI 从「显示终端」变成「能干活的主机」:协议解析、逻辑判断、数据运算、文件操作全在脚本里。先搞懂 main.lua 的程序结构和系统回调,后面所有 API 才有地方放。 1. main.lua 基本结构_ENCRYPT_ = 0 -- LUA 脚本加密开关(量产加密置1) -- 数据类型定义(随协议变化,Modbus 常用这些) VT_LW = 1 -- 内部变量(掉电不保存) VT_RW = 2 -- Flash 掉电保存区 VT_0x = 10 -- 线圈 VT_1x = 11 -- 输入 VT_3x = 12 -- 输入寄存器 VT_4x = 13 -- 保持寄存器 -- 系统回调函数(自动被调用,不用自己调) function on_init() end -- 上电加载后执行一次 function on_run(screen) end -- 周期执行 function on_update(slave,vtype,addr) end -- 变量变化 function on_draw(screen,control) end -- 自绘 main.lua 是入口文件,工程编译时一并打包。大工程建议分模块:在 on_init 里 dofile("xxx.lua") 拆开,好维护。 2. 编辑工具与编码官方推荐 NotePad++、Lua editor、VS Code 编辑脚本。编码必须注意:文件编码和 HMI 工程设置要一致(UTF-8 或 GB2312),编码不对中文会乱码,字符串比较也全错。 3. 查错方法(LUA 没有断点调试)LUA 是解释性语言,不能断点单步。虚拟屏调试常见三类异常:nil 值错误:访问了未定义的变量/表元素——先检查变量初始化类型错误:number 当 table 用、string 拼接 nil——print 打印类型确认内存溢出重启:全局累积数据不释放——查循环里是不是一直 table.insert实体屏调试用 TTL 调试串口 J2,波特率 115200 8N1,print 输出走这个口。 4. dofile 分模块管理function on_init() dofile("config.lua") -- 参数配置 dofile("protocol.lua") -- 协议解析 dofile("ui.lua") -- 界面逻辑 end模块之间共享全局变量,注意命名别冲突(习惯加前缀,如 g_、m_)。 三个坑:①_ENCRYPT_ 置 1 后脚本被加密,改脚本要重新编译下载,调试期保持 0;②文件编码必须和工程一致,UTF-8/GB2312 混用中文全乱;③print 输出走调试串口 J2(115200 8N1),实体屏看日志接 USB-TTL。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「什么是LUA」,版权归大彩科技所有。 --- ### 485. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 操作记录控件记录用户点击屏幕的操作,表格显示:操作时间、用户等级、操作描述、寄存器地址、寄存器内容变化。适合审计谁在什么时候动了什么参数。 1. 操作记录设置(工程→操作记录设置) 属性说明启用数据操作功能勾选后控件的"安全设置"出现"操作记录"选项最大记录条数1~65535存满后循环覆盖 / 停止存储存储于内存 RAM(掉电不保存)/ 闪存 FLASH(掉电保存)存储块地址存储起始地址;占用块数系统自动算(每 128 条 3 块) Flash 计算同前:16M、块 4K、默认块地址 2048(8M 起)。128 条 → 3 块 12K。工程 10.1M 时从 11M 存,块地址 = (11×1024)/4 = 2816。 系统操作日志控制:往 LW0188 写 0x0001 导出全部记录到 SD 卡;写 0x0055 清空。 ⚠️ 频繁写 Flash 影响芯片寿命(擦写 10 万次),可能造成屏幕不正常工作。操作记录量大时用 RAM 存储或循环覆盖,别无限写 Flash。 2. 属性介绍 2.1 基本设置时间排序(顺/逆序)、对齐方式(默认/指定)、显示序号、宽度占比、显示时间(格式+宽度)、显示用户(等级名称+宽度)、显示描述(+宽度)、显示地址(+宽度)、显示参数(+宽度)、每页行数、显示滚动条、手势滑动、翻页控制(控制地址)。 2.2 外观设置字体/大小/颜色;显示标题(时间/用户/描述/地址/参数标题名称);显示网格(网格/边框颜色);显示背景(标题/内容背景颜色);奇偶分行(背景颜色2)。 3. 应用(3 步) 开启:工程→操作记录设置,启用数据操作功能,最大 128 条,循环覆盖,RAM 存储配置控件:操作记录控件,时间逆序、显示时间、每页 5 行、滚动条+翻页控制 LW1100填写记录:可触控件属性栏启用"操作记录"(支持位/字按钮等可触控件) 翻页示例:4 个字按钮绑 LW1100(常量 1/2/3/4),权限条件 LW1100.1/.2==1 控制显示隐藏(还有没有上一页/下一页),勾选操作记录 + 操作描述"上一页/下一页/首页/尾页"。清除按钮绑 LW0188 写 85。 支持操作记录的控件是可触控类(按钮、开关等),在控件属性「安全设置」里勾选「操作记录」后,每次操作自动记一条。操作描述可以自定义,方便审计时一眼看懂。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「操作记录」,版权归大彩科技所有。 --- ### 486. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警系统支持自定义触发条件与内容词条:实时监测寄存器值变化,满足预设逻辑就触发多维度响应(蜂鸣器、背光亮起)。告警记录掉电持久化,可追溯审计。 1. 核心功能 触发条件:基于寄存器值(4x1000、M200)设布尔/数值条件:==、!=、>、<、>=、<=、位状态(LW100.3==1)多模态提示:蜂鸣器鸣叫(音调/时长可配)、屏幕背光闪烁/全屏高亮掉电存储:告警事件(含时间、内容)自动存储,断电重启保留 系统寄存器:标签地址说明SysWarnCfg0x0112告警设置:bit0 激活背光;bit1~2 蜂鸣器(0 不控制/1 滴滴叫/2 长鸣)SysWarnStatus0x0113告警状态:1=有告警SysWarnCtrl0x0114历史告警控制:写 0x0001 导出 SD 卡/U盘;写 0x0055 清除SysExportStatus0x0190导出状态:0 空闲/1 导出中/2 成功/3 失败SysExportProg0x0191导出进度 0~100 2. 告警设置(工程→工程设置→告警设置) 告警条数:最大 10000 条,点更新自动编序号(告警 ID)。默认 32 条(ID 0~31)背光:告警触发时点亮背光(SysWarnCfg bit0),一般搭配自动待机用蜂鸣器:关闭/滴滴声/长鸣,时间 ms(SysWarnCfg bit1~2)最大记录数:10000 条存储方式:内部 RAM(掉电丢失)/ 专用 Flash(2000 条)/ 指定 Flash(受剩余空间限制)。Flash 16M、块 4K、默认块地址 2048(8M 起) 告警内容配置:触发条件:>、=、<=、==、!=、IN(a<=x<=b)、OUT;. 引用位(LW1000.1),~ 位区间(LW1000.4~6)告警等级:0~15 级,用 SysWarnLevel(LW0115)bit0~15 筛选(如看等级1+2:SysWarnLevel = (1<<1)|(1<<2))告警内容:条件成立显示;多语言时各语言独立编辑 清除导出:SysWarnCtrl(LW0114)写 0x0055 清空、0x0001 导出。告警内容可导入导出 CSV(告警条件,语言1..N,等级)。 ⚠️ 频繁写 Flash 影响芯片寿命(擦写 10 万次)。告警存储选型:临时提示用 RAM,长期审计用专用 Flash(2000 条),别什么都往指定 Flash 写。位引用:. 单 bit、~ bit 区间,别搞混。 3. 告警条 / 告警显示控件 3.1 告警条(跑马灯)所有当前告警从左往右滚动显示。属性:告警排序(时间顺/逆序)、告警时间(不显示/时间/日期/时间+日期,默认只显示内容)、移动速度(ms)。 3.2 告警显示(表格)告警模式:当前告警(解除后不显示,不支持掉电存储)/ 历史告警(解除后保留,支持掉电存储)。时间排序、显示序号、发生时间/解除时间(不显示/时间/日期/时间+日期)、时间在前、列宽比例、每页行数、滚动条、手势滑动、翻页控制(Addr+0 翻页、Addr+1 可行性)。 4. 应用案例 4.1 告警设置示例告警ID0:LW1001==1,等级1,内容"告警1";ID1:LW1002.0==1,等级2,"告警2";ID2:LW1003.0~3==15,等级3,"告警3"。 4.2 告警条 + 告警显示 + 翻页 + 清除导出告警条:时间顺序、显示日期+时间、速度 100。告警显示:历史告警、时间顺序、发生/解除时间都显示、时间在前、列宽 20;50;100;100、每页 5 行、滚动条+翻页控制 LW1100。翻页按钮绑 LW1100(1/2/3/4)+ 权限 LW1100.1/.2;清除/导出按钮绑 LW1100 写 85/1。 4.3 告警等级筛选 + 告警提示下拉菜单绑 $SysWarnLevel:文字"全部;等级1;等级2;等级3",数值转换 14;2;4;8(对应 bit0~3 掩码)。告警提示:位状态灯(告警触发背光亮起,配自动待机)+ 下拉菜单绑 $SysWarnCfg.1~2 选蜂鸣器"关闭;滴滴响;长鸣"。 告警等级筛选的数值转换是位掩码:全部=14(bit1+2+3)、等级1=2(bit1)、等级2=4(bit2)、等级3=8(bit3)。不是 1/2/3 直接写。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「告警记录」,版权归大彩科技所有。 --- ### 487. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数据记录控件把同一时间戳下多个寄存器值组合成一行,动态追加到表格——类似数据库日志。最多 1000 个通道(列),掉电不丢,支持翻页、清除、CSV 导出。 1. 核心能力 多通道同步记录:单条记录最多 1000 通道,每通道绑一个寄存器时间对齐采样:所有通道同一时刻读取实时表格:新记录自动追加,滚动查看持久化:存 Flash,掉电不丢;支持翻页/清除/CSV 导出 2. 属性介绍 2.1 基本设置属性说明数据来源资料采集(同一寄存器不同时刻)/ 配方数据(配方内容显示)字符串表格资料采集类型为 STRING 时勾选,按字符串显示时间排序时间顺序 / 逆序日期/时间显示时间 / 日期 / 时间和日期配方数据索引/直接编辑选配方集;勾选后点击表格参数直接改通道数量数据通道数表格设置标题、文本宽度;自动列宽(按比例)或固定像素固定列无(全可滚动)/ 1列(序号固定)/ 2列(序号+时间固定)每页行数 / 滚动条 / 手势滑动分页显示;垂直滚动条;手势滑动 翻页控制(Addr 起):Addr+0 翻页(1上/2下/3首页/4尾页);Addr+1 读取可行性(BIT1~4);Addr+2~3 时间戳定位(UINT32,配下拉按天定位);Addr+4~5 选中行通知(UINT32,选中行号从 0 开始)。 2.2 外观设置字体/大小/颜色/对齐、标题(含标题文字颜色)、网格(网格/边框颜色)、背景(标题背景/内容背景)、奇偶分行(背景颜色2)。 3. 应用案例 3.1 数据采集(100 通道)资料采集:描述"历史数据",定时采样,2000 条,周期 1 秒,数据地址 LW1010,UINT16,数据个数 100,控制地址 LW1001,采样控制 LW1000 OFF→ON。数据记录控件:数据来源资料采集(索引[0]),通道 100,时间逆序,固定列 2,每页 5 行,滚动条+手势滑动,翻页控制 LW1004、允许翻页 LW1005、时间戳 LW1006、选中行 LW1008。 采样使能:位状态灯绑 LW1000(ON 开始/OFF 停止);清除/导出:字按钮绑 LW1001 写 85(清除)/1(导出);翻页:4 个按钮绑 LW1004 1/2/3/4 + 权限 LW1005.1/.2。 时间戳定位:下拉菜单绑 0xA000,选项内容=历史数据日期(资料取样索引[0]),选某天定位到该天第一条记录。 3.2 特殊应用:地址不连续/类型不同(字符串表格 + LUA)当寄存器地址不连续、数据类型不一致(如电压 4x0000 UINT32、电流 4x0007 UINT32、负载率 4x0015 UINT16、谐波 4x0021 INT16、功因 4x0026 UINT32…)时,用字符串表格方案:资料采集数据地址 LW2000、类型 STRING、个数 100;LUA 在 on_run 里读各寄存器拼接字符串写入 LW2000,每列用分号 ; 分隔:function on_init() set_run_cycle(1000) start_read(0, VT_4x, 0, 80) -- 读从站1保持寄存器 0x0000~0x0050 end function on_run(screen) if (get_uint16(VT_LW, 0x01A3) & 0x0001) == 0x01 then -- 从机在线 select_slave(0) local vol = get_uint32(VT_4x, 0x0000) -- 电压 local cur = get_uint32(VT_4x, 0x0007) -- 电流 -- ... 读其它寄存器 local rcrd = string.format("%0.2f", vol/100)..";".. string.format("%0.2f", cur/100)..";".. -- ... 拼接所有列 set_string(VT_LW, 0x2000, rcrd) -- 写到 LW2000 end end 资料采样要求寄存器地址连续、数据类型一致。地址不连续/类型混杂时别硬采——用字符串表格方案:LUA 读值→拼接字符串(分号分隔)→写到资料采样地址,控件勾选字符串表格按列显示。字符串编码用 GB CODE。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「数据记录」,版权归大彩科技所有。 --- ### 488. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 历史曲线记录"变量随时间变化的趋势",最多 16 条独立通道,采样数据存 Flash 掉电不丢,支持翻页、缩放、清除、CSV 导出。监控、能效评估的主视图。 1. 两种数据来源 模式定义用途资料采样单个寄存器在不同时间点的值,周期采集形成时间序列曲线观察单参数历史趋势连续采样同一时刻读取连续 N 个寄存器,N 个值作为一组画到同一条曲线空间分布/批量数据快照 连续地址属性:数据点数 1~40000、数据地址(起始)、数据类型(UINT16~DOUBLE)、数值转换(实际值=传输值×缩放+偏移)。 连续采样注意通道分布:数据地址 0x4000、点数 50、通道 2 → 通道1 用 LW4000、LW4002、LW4004…(偶数地址),通道2 用 LW4001、LW4003…(奇数地址)。 2. 曲线设置 曲线粗细:1 或 2 像素;曲线通道:最多 16 条;通道颜色:每通道颜色控制地址(Addr 起):偏移作用Addr+0通道显示隐藏:bit0~15 对应通道1~15,0=显示、1=隐藏Addr+1翻页控制:1-上一页、2-下一页、3-首页(最新)、4-尾页(最旧)Addr+2读取翻页可行性:BIT1 上一页、BIT2 下一页、BIT3 首页、BIT4 尾页,1=可执行Addr+3~4时间戳定位(UINT32),配下拉菜单按天定位Addr+5时间宽度控制:一屏显示点数(控件宽 400、值 100 → 4 像素/点) 3. X 轴(时间)/ Y 轴(值) X 轴:时间宽度(一页采样点数,如 100,第 101 个数据满屏后曲线左移);刻度数 2~10;显示刻度(无/分割线/刻度线)Y 轴:最大值/最小值(可 LUA 动态改,wgt_set_param 0x31=最小值、0x32=最大值);越界不显示;刻度数 2~11;显示数值;显示刻度 外观:字体/大小/颜色、边框、背景、分割线颜色、滚动条、触摸标识(触摸曲线显示采样时间和值)。 4. 应用案例(资料采样) 4.1 资料采样配置描述"历史曲线",定时采样,记录 2000 条,周期 100ms,数据地址 LW1010,UINT16,数据个数 3,控制地址 LW1001,采样控制地址 LW1000,启动模式 OFF→ON。 4.2 曲线控件配置数据来源=资料采集(索引[0]历史数据),通道数 3,控制地址 0x1003(隐藏控制)、0x1004(翻页)、0x1005(允许翻页,只读)、0x1006(时间戳 UINT32)、0x1008(时间宽度)。显示滚动条+触摸标识。 4.3 采样使能 + 清除 + 通道显示位状态指示灯绑 LW1000(设为ON=开始采集/设为OFF=停止);字按钮绑 LW1001 写 85 清除;3 个位按钮绑 LW1003.0/.1/.2 切换开关控制通道显示隐藏;4 个翻页按钮绑 LW1004(1/2/3/4)+ 权限条件 LW1005.1/.2==1。 4.4 X 轴 / Y 轴缩放X 轴:数值控件绑 LW1008 输入 200→一屏 200 点,输入 50→50 点。Y 轴:曲线控件 ID 设 100(不为 0),LUA 里 wgt_set_param 改最大值/最小值:function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0xA000 then wgt_set_param(__page._hisgraph1, 100, 0x31, get_uint16(VT_LW, 0xA000)) -- Y最小值 elseif addr == 0xA001 then wgt_set_param(__page._hisgraph1, 100, 0x32, get_uint16(VT_LW, 0xA001)) -- Y最大值 end end end Y 轴缩放必须配合 LUA 的 wgt_set_param:0x31=Y 轴最小值、0x32=Y 轴最大值,且曲线控件 ID 不能为 0。不加 LUA 只配数值控件,Y 轴不会动。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「历史曲线」,版权归大彩科技所有。 --- ### 489. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 资料采样是整个"记录类功能"的地基:历史曲线、数据记录、下拉选日期,全都依赖它先采集数据。它在【工程】→【资料采样】里配置,把采到的数据按曲线或表格显示。 1. 采样模式 1.1 定时采样以固定时间采集一次数据。采样周期 + 周期单位(秒/毫秒)。 ⚠️ 周期单位选毫秒时不支持掉电存储——频繁写 Flash 影响芯片寿命(Flash 擦写寿命 10 万次),可能导致屏幕不正常工作。能用秒就别用毫秒。 1.2 触发采样由某个寄存器值变化触发采集:触发地址:触发寄存器的地址模式:OFF→ON 上升沿触发(值 0→1);ON→OFF 下降沿(1→0);ON<->OFF 双边沿复位:自动覆盖该寄存器值 2. 记录条数 最多记录的条数,记录满了自动覆盖。支持 10~10000000 条。 3. 数据地址 数据类型:UINT16、INT16、UINT32、INT32、FLOAT、DOUBLE、STRING数据个数:该笔资料采集的数量(连续地址),范围 1~2000小数位数:统一 或 单独("0.1;0.2;0.3"分号分割)。传输值 100、小数位 1 → 显示 10显示无效零:勾选后传输值 100、小数位 1 → 显示 10.0 例:数据地址 = LW1001,UINT16,通道数 10 → 采集 LW1001~LW100A 范围。 4. 控制地址 / 采样控制地址 地址作用控制地址写 0x0001=导出数据到 SD 卡/U盘;写 0x0055=清除数据采样控制地址控制采样使能总开关;启动模式 OFF→ON/ON→OFF;启动模式地址+1:采样率(10ms 单位,UINT16) 导出标题:导出 CSV 时第一行表头,用文字标签,逗号分割,如"序号,时间,电压1,电压2,...,电压10"。 5. 掉电存储 数据存到 Flash 块地址。M 系列彩屏 Flash 默认 16M,一个块 4K,默认存储块地址 2048(从 8M 位置开始)。占用块数系统自动计算:如最大条数 1000、200 个 UINT16 数据 → 102 块、408K。实际应用要结合工程编译大小:编译资源包 10.1M,存储地址要与下载文件隔开——从 11M 开始存,块地址 = (11×1024)/4 = 2816,剩余 102 块不超出 16M。 掉电存储的块地址要避开工程下载文件的区域:先看编译资源包多大,再往高处留余量。算错会覆盖固件/工程导致屏变砖。公式:块地址 = (起始M × 1024) / 4。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「资料采样」,版权归大彩科技所有。 --- ### 490. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 M 系列串口屏支持视频播放:开机 logo 用视频、画面里嵌视频、受控播放。注意格式要求严格,转码工具建议 Freemake Video Converter。 1. 视频格式要求 项目要求文件格式MP4,H264 编码音频流MP3 或 AAC最大分辨率<1280×768最大帧率<30fps最大码率<1400kbps 视频格式不达标的表现:播放卡顿、无声、黑屏。分辨率、帧率、码率三个都要压到要求内。转换步骤见「视频转换说明」,需要注册码自行网上找。 2. 属性介绍 属性说明视频文件添加视频文件,自动加载到工程 video 目录播放模式自动(进画面自动播、退出停止)/ 受控(控制地址)控制地址(受控)Addr+0:0-停止、1-播放、2-暂停播放完毕处理停止播放(只播1次)/ 重新播放(循环)/ 切换画面 3. 应用案例 3.1 开机 Logo 视频视频文件 0.mp4,播放模式自动,播放完毕处理=切换画面,目标画面=主画面。上电播 0.mp4,播完自动进主画面。 3.2 受控播放视频文件 1.mp4,播放模式受控,受控地址 LW1000,播放完毕处理=重新播放(循环)。配字设置按钮写 LW1000=1 播放;图片控件(权限 LW1000==0)显示未选中效果。 运行:实体屏测试,点播放/停止/暂停按钮控制视频。 视频和音频文件命名用数字(0.mp4、1.mp4),受控播放的控制地址也按「0停/1播/2暂停」约定。开机 logo 用自动模式+切画面,产品演示用受控+循环。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「视频播放」,版权归大彩科技所有。 --- ### 491. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摄像头控件让 HMI 直接显示摄像头画面:M 系列和 DH 系列支持两路 AV 输入,DH 系列还支持 USB 摄像头。注意:需要实体屏测试。 1. 摄像头参数要求 项目CVBS(M系列)DVP(DH系列)UVC(DH系列)最大分辨率≤1280×720≤1280×720≤1280×720信号制式PAL / NTSCCVBS_NTSC/PAL、HDA720P_25/30FPS、HDA1080P_25/30FPS、TVI720P_30FPS、TVI1080P_30FPSYUY2 / MJPEG 2. 属性介绍 2.1 功能设置属性说明播放模式自动(接入即显示,断开关闭)/ 受控(控制地址控制)控制地址(受控)Addr+0:0-停止、1-播放、2-暂停;Addr+1:0-通道1、1-通道2旋转0°/90°/180°/270°(仅 DH 系列)左右/上下翻转镜像翻转(仅 DH 系列)稳定信号勾选后等信号稳定再显示摄像头类型CVBS / DVP / UVC。M 系列只支持 CVBS;DH 系列带 AV 接口选 DVP,USB 选 UVC 2.2 过滤色(M 系列专属)M 系列的 AV 图像一直显示在最上层,叠加控件会被覆盖。需要控件显示在图像上层时,用底层 API:function on_init() -- 过滤 0x00BFBFBF~0x00C8C8C8 范围的灰白色(24位RGB) -- Match 6位比较规则: 101010(0x2A), 10-R/10-G/10-B set_color_key(0x00BFBFBF, 0x00C8C8C8, 0x0000002A) end必须放 on_init() 里。DH 系列摄像头控件支持图层层级,直接在控件上方放控件即可,不需要过滤色。 M 系列叠控件必须用 set_color_key 过滤色,把图像里接近某个颜色的区域「挖空」露出下层控件。颜色范围取巧:用纯色背景(如灰白)做摄像区域,过滤掉这个颜色。DH 系列没这问题。 3. 应用案例 摄像头控件:播放模式受控,控制地址 LW1000,旋转 0°,稳定信号勾选,类型 CVBS。配字设置按钮(写 LW1000=1 播放)+ 2 个位状态指示灯(LW1001 切换通道1/2)+ 图片控件(权限控制 LW1000==1 显示选中效果)。 运行:编译下载到实体屏,接 AV 摄像头,点播放、切通道,实时显示画面。 受控模式地址记住:Addr+0 控制播放(0停/1播/2暂停),Addr+1 切通道(0/1)。控制按钮的写入地址必须和摄像头控制地址一致,否则按了没反应。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「摄像头」,版权归大彩科技所有。 --- ### 492. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 嵌入画面是超屏内容浏览容器:物理屏 800×480,但画面逻辑尺寸可以做到 10000×10000。在视窗里手指拖动浏览,像"手机看长图"或"地图漫游"。适合产品介绍、大尺寸工艺图。 1. 属性介绍 属性说明初始画面控件显示的初始画面触摸滑动禁止 / 上下 / 左右滑动通知触摸滑动时是否上传事件通知显示滑动条是否显示滚动条读取地址LW=目标画面;LW+1=偏移位置(滚动条位置) 2. 应用案例 嵌入画面控件:初始画面 1_关于,触摸滑动上下,显示滑动条,读取 LW1001。配字设置按钮+多状态指示灯做按钮互斥切换目标画面(关于=写1、设置=写2):关于-字设置按钮:写入地址 LW1001,写入常量 1;多状态指示灯:状态数 2,转换表 0;1"关于"画面逻辑尺寸 700×1200(放多个文字控件介绍软件);"设置"画面 700×1213(放系统参数控件) 运行:嵌入画面关联"关于"页,滑动看完整内容;点设置按钮切到"设置"页。 嵌入画面的子画面尺寸可以超过物理屏(如 700×1200),但目标画面也要配对应的画面尺寸。画面里放不下的大图/长文,用嵌入画面是最省事的方案,不用缩图。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「嵌入画面」,版权归大彩科技所有。 --- ### 493. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 滑动画面是容器型控件:在主画面定义一个矩形视窗,手指左右/上下滑动切换一组预设画面,像手机桌面分页。支持固定范围、动态范围、任意画面集合三种。 1. 三种滑动范围 模式说明地址布局固定固定范围内滑动(开始画面~结束画面)addr=当前画面ID,addr+1=开始,addr+2=结束动态连续画面范围可运行时改(如 5~7、8~11)同上(开始/结束可改)任意任意画面集合(如 {13,16,15,14})addr=当前ID,addr+1=数量N,addr+2~addr+N=各画面ID 其他属性:滑动方向(左右/上下)、循环滑动(到尾可回开头)、滑行时间(松开后自动滑行 ms)。 ⚠️ 设计时不要把有滑动操作的控件(如滑块)布局在滑动窗口范围内——滑块滑动方向和页面滑动方向一致时,优先响应控件操作,不执行页面滑动。另外开始画面必须在滑动集合内,集合内画面 ID 不能重复。 2. 应用案例 2.1 固定范围 + 导航点滑动范围固定(2_固定范围1 ~ 4_固定范围3),方向左右,读写地址 LW8000。配多状态指示灯做导航点:读取 LW8000,状态数 3,转换表 2;3;4(对应画面 2~4)。滑动时导航点跟随。 2.2 动态范围(LUA 改范围)滑动范围动态,开始 5_动态范围1、结束 7_动态范围3,方向上下,循环,读写 LW8100(8100=当前、8101=开始、8102=结束)。位状态指示灯(LWF000)切换两套范围,LUA on_update 里改寄存器:if key == 0 then set_uint16(VT_LW, 0x8100, 5) -- 当前页 set_uint16(VT_LW, 0x8101, 5) -- 开始 set_uint16(VT_LW, 0x8102, 7) -- 结束 elseif key == 1 then set_uint16(VT_LW, 0x8100, 8) set_uint16(VT_LW, 0x8101, 8) set_uint16(VT_LW, 0x8102, 11) end两个导航多状态指示灯按 LWF000 值条件显示(==0 显示范围1导航,==1 显示范围2导航)。 2.3 任意画面集合滑动范围任意,画面集合 13;16;15;14,方向上下,循环,读写 LW8200(8200=当前、8201=数量、8202+ =各画面ID)。LUA 用 set_array 改集合:set_uint16(VT_LW, 0x8200, 13) set_array(VT_LW, 0x8201, {4, 13, 16, 15, 14}) -- 数量4 + 各画面ID 动态/任意范围改集合时,导航多状态指示灯要配控件权限(条件地址 + 比较)按模式显示对应导航,否则两套导航同时亮。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「滑动画面」,版权归大彩科技所有。 --- ### 494. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 时间控件支持两种形态:RTC 数值格式(YYYY-MM-DD HH:MM:SS)和钟表(时针/分针/秒针)。支持 MCU 同步校准、用户点击编辑。 1. 时间同步机制 MCU 同步:主控通过读写 HMI 的专用寄存器(年/月/日/时/分/秒)校准时间用户编辑:可编辑模式下点击弹键盘/日期选择器,改后写回寄存器 实体屏断电后时间仍准,需要 PCB 有 RTC 电路+电池电量足;虚拟屏时间=电脑当前时间,不支持修改。现场「时间老是复位」先查电池。 2. RTC 控件属性 2.1 显示属性属性说明日期YYYY/MM/DD、MM/DD/YYYY、DD/MM/YYYY 或不显示星期显示或不显示时间HH:MM 或 HH:MM:SS12小时制勾选后下午从 1 点开始(显示 AM/PM)设置时间长按 3S 进入 / 点击进入 / 禁止模式时间和日期 / 时间 / 日期键盘画面/位置默认 100_digit320&240;点击处或自定义启用多语言星期等文字多语言使用时间戳不勾选=系统 RTC 时间;勾选=时间戳变量地址(4 字节时间戳) 2.2 字体属性字体/字号/颜色/水平对齐(左/居中/右)。 3. 钟表控件属性 指针:时针/分针/秒针指针图库:指针图片旋转中心 X/Y:指针旋转位置,X 一般为图片宽度一半、Y 为高度 4. 应用案例 4.1 RTC 12/24 小时切换3 个 RTC:年月日+星期(长按3S编辑,中文星期);12小时制(HH:MM:SS,显示AM右侧,条件 LW1001==1);24小时制(条件 LW1001==0)。加位状态指示灯(切换开关,LW1001)控制显示哪个。 4.2 钟表3 个钟表控件(时针/分针/秒针),各关联指针图库,旋转中心按图片尺寸设(秒针图 X=2、Y=130)。运行后和电脑时间一致。 钟表的旋转中心:X 一般取图片宽度一半,Y 取图片高度——指针绕底部中心转。X/Y 设错,指针会在表盘上「漂」。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「时间」,版权归大彩科技所有。 --- ### 495. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 艺术字显示带特殊效果、自定义字体的文字:立体/3D、渐变填充、描边。相比矢量/点阵字库,界面更有质感。适合品牌展示、装饰性数字。 ⚠️ 艺术字控件不支持弹出键盘输入,纯显示控件。 1. 属性介绍 1.1 功能设置属性说明读取地址绑定的变量地址数据类型UINT16/INT16/UINT32/INT32/UINT64/INT64/FLOAT/DOUBLE整数位数整数部分个数,可前补零小数位数整数类型表达小数(1234 设 2 位显示 12.34);浮点保留小数位;可显示无效零(100 设 2 位显示 1.00) 1.2 外观设置对齐:左/右/居中图片:艺术字的图片,严格按照 "0123456789-." 顺序排列(图库里按数字顺序放帧) 2. 应用案例 读写 LW1000(INT16),整数位数自动、小数位数 1(后补零),对齐居中,图片关联图库(按 0123456789-. 顺序)。PLC 写值,艺术字按位显示。 艺术字图片必须严格按 0-9、-、. 的顺序排帧,控件按字符值取对应帧。顺序排错,显示的数字全乱。做「大屏数字」(产量、温度)时比矢量字库更有冲击力。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「艺术字」,版权归大彩科技所有。 --- ### 496. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 动态绘图控件让你在 HMI 上创建和修改图形元素(点、线、圆、矩形、封闭图形、图片裁剪),像一个绘图板。核心机制:通过一段连续寄存器写入绘图命令——PLC 或 LUA 都能画。 1. 属性介绍 属性说明数据地址绘图命令写入地址线条粗细线段宽度像素 1~4命令模式单条(单次写一个命令)/ 多条(单次写多个命令)绘图模式重绘(新指令先刷新旧图)/ 叠加(在画面上继续添加)画布颜色RGB 颜色完成通知绘图完成后指令清零并通知 连续寄存器格式:LW CMD 绘制图形类型 LW+1 Draw_Cnt 数据包数量(一个矩形=1个包) LW+2 DATA N 个字节数据段 LW+1+N END 结束字段,固定 0xFF00 2. 图形命令列表 命令数据段格式示例画点(0x0001)X,Y,颜色AA55 00 0F F1 2000 0001 0001 01F4 00F0 F800 FF00 CCCC(红点 500,240)端点连线(0x0002)数量,各点X,Y(连成线),颜色列表AA55 00 1D F1 2000 0002 0003 FFFF 012C 012C 01F4 012C 01F4 0064 02BC 0064 FF00 CCCC矩形(0x0003)左上X,Y,右下X,Y,颜色(每矩形)AA55 00 1F F1 2000 0003 0002 011E 00AA 01AA 010A 471A 0258 0064 02BC 012C 2C4A FF00 CCCC(两个矩形)矩形填充(0x0004)同上AA55 00 1F F1 2000 0004 0002 ... FF00 CCCC圆形(0x0005)圆心X,Y,半径,颜色AA55 00 13 F1 2000 0005 0001 01F4 00FA 0096 FEA0 FF00 CCCC圆形填充(命令码同为 0x0005,源文未区分标志位)同上AA55 00 13 F1 2000 0005 0001 0200 0100 0085 FEAA FF00 CCCC图片(0x0007)PIC ID,裁剪左上X,Y,右下X,Y,目标X,YAA55 00 19 F1 2000 0007 0001 0000 0021 0027 00A3 0040 0168 0168 FF00 CCCC封闭区域填充(0x0008)X,Y,颜色AA 55 00 11 F1 1001 0008 0001 01A4 00F6 F800 FF00 CCCC频谱(0x0009)数量,颜色,Xn,Yn 对AA55 00 33 F1 2000 0009 0005 F800 0168 0064 0064 ... FF00 CCCC(5 条垂线)线段(0x000A)数量,颜色,XnS,YnS,XnE,YnEAA55 00 33 F1 2000 000A 0004 ... FF00 CCCC矩形反色(0x000D)左上,右下,颜色(反色=0xFFFF-颜色)AA55 00 15 F1 2000 000D 0001 0168 00E6 0190 010E 49F1 FF00 CCCC PIC ID 查看:编译后 private 资源包里有 image.bin;PIC ID 对照打开工程目录下 build/image.xml(id=0 对应画面0背景图)。 封闭区域填充的坑:要两个动态绘图控件——一个画封闭图形(如 0x2000),一个设填充色(如 0x1001,CMD=0x0008),且设填充色的控件必须层叠在画封闭图形的控件上层;画面背景必须纯色,否则无法正常填充。 3. LUA 绘图(set_array) LUA 里用 set_array() 写连续寄存器实现绘图。以 on_update 触发为例(字设置按钮写 0xF000 的值 1~13 切换图形):baseGraphCmd = { opint=0x0001, Connection=0x0002, rect=0x0003, rectFill=0x0004, circle=0x0005, PIC=0x0006, ICON=0x0007, fill=0x0008, Spectrum=0x0009, line=0x000A, rectFillOr=0x000D } -- 画点: 命令, 点数, X, Y, 颜色, 结束 local data = {baseGraphCmd.opint, 0x0003, 0x01F4, 0x00F0, 0xF800, 0x01F5, 0x00F1, 0xF800, 0x01F6, 0x00F3, 0xF800, 0xFF00} set_array(VT_LW, 0x2000, data) -- 单条模式地址 0x2000多条模式把多个图形命令按顺序放进一个数组一次写入(地址 0x3000);叠加模式不清屏直接追加(地址 0x4000)。 三种模式选型:单条=一次画一个图形(重绘),多条=一次画多个图形(重绘),叠加=不清屏连续画。做趋势/频谱这种动态刷新用重绘,做流程示意图这种累积显示用叠加。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「动态绘图」,版权归大彩科技所有。 --- ### 497. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 二维码控件在 HMI 界面上动态生成标准 QR Code,内容运行时更新。支付、运维、售后场景常用——屏上直接出二维码,手机一扫访问。 1. 属性介绍 1.1 基本设置属性说明读取地址绑定的变量地址文本长度显示内容的字符串最大长度,默认 16。内容存连续寄存器,一个地址 2 字节(非字符,有些字符占 2 字节如 %、℃),最多 512 字节(错误纠正最低 7% 时) 例:内容 "https://www.baidu.com/",寄存器 0x1001 起,16 个寄存器(0x1001~0x1008)分配:寄存器0x10010x10020x1003…0x1008寄存器值(hex)0x68 0x740x74 0x700x73 0x3A…0x69 0x64字符https:…id 1.2 外观属性错误纠正:最高(30%) / 较高(25%) / 中等(15%) / 最低(7%)——容错能力,局部污损仍可识别颜色:二维码前景颜色 2. 应用案例 画面加二维码控件:读取 LW1001,文本长度 32,错误纠正最高(30%),颜色黑。再加一个文本控件(同样绑 LW1001,长度 32)显示二维码内容。 运行:PLC 写 LW1001 内容,二维码实时刷新。设置 "https://www.baidu.com/",手机扫码直接访问。 二维码内容按 ASCII 顺序逐字节存入连续寄存器,一个寄存器 2 字节。中文字符占 2 字节(UTF-8 中文占 3 字节),文本长度要按字节数算够,否则内容被截断。现场环境脏污选高纠错。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「二维码」,版权归大彩科技所有。 --- ### 498. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 流动块用来模拟流体(液体/气体)在管道、风道中的流动:色块/图片在指定区块位移,直观显示设备工作状态和运动特性。泵、风机、循环系统画面里的"活"元素。 1. 属性介绍 1.1 功能设置属性说明流动速度每秒移动像素动态速度勾选后速度由监视地址决定:值为 0 不流动;动态速度 = 流动速度 × 监视值 1.2 外观设置流动方向:从左到右/从右到左/从上到下/从下到上流动块数:纯色效果时的块数;间隔:块间空白长度比例显示效果:纯色(流动块颜色)/ 图片(图库)显示边框/显示背景:边框开关及颜色;纯色时背景开关及颜色(默认白) 2. 应用案例 流动速度 20,动态速度勾选(监视 LW1001),方向从左到右,块数 4,间隔 20,贴图效果。配字设置按钮控制速度:LW1001=2 慢速、=5 快速、=0 停止。 运行:改 LW1001 值,流动速度随之变化,0 时静止。 动态速度 = 流动速度 × 监视值:监视值就是倍率。想用「速度档位」(0停/1慢/2快),把流动速度设成基础速度、监视值存档位即可。0 值自动停,不用额外控制。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「流动块」,版权归大彩科技所有。 --- ### 499. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 仪表指针模拟传统机械仪表盘,通过旋转指针在刻度盘上的位置动态反映过程变量。工业现场"指针表"的既视感,操作员最容易接受。 1. 属性介绍 1.1 功能设置属性说明读取地址值就是指针的旋转角度数据类型UINT16/INT16/UINT32/INT32/UINT64/INT64/FLOAT/DOUBLE起始值/终止值指针范围 1.2 外观设置(重点)指针方向:12点↑ / 3点→ / 6点↓ / 9点←(设计 UI 建议按此方向,方便算角度)起始角度/终止角度:无论旋转方向配"顺时针/逆时针",角度计算都是顺时针方向。12点↑=0°、3点=90°、6点=180°、9点=270°;顺时针时起始 225、终止 135旋转中心 X/Y:指针绕该点旋转,坐标相对图片左上角。如 19x91 的指针图,旋转点 X=10、Y=81硬件加速:Dx 系列支持 设计指针 UI 时强烈建议按 12点↑/3点→/6点↓/9点← 方向画,软件有辅助提示(红箭头=开始角度、蓝扇形=旋转范围),填角度时选中控件就能看到。旋转中心 X/Y 算不准,指针会绕着错误的位置转。 2. 应用案例 读取 LW1001(INT16),0~240,指针方向 12点↑,起始角度 225、终止角度 135、旋转方向顺时针,旋转中心 X=10、Y=81。配 2 个字设置按钮递增/递减(步长 10、范围 0~240、长按 500/100ms)调节数值。 运行:点 +/- 指针实时刷新,数值限制 0~240,指针在刻度盘范围内偏移。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「仪表指针」,版权归大彩科技所有。 --- ### 500. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 圆形进度条把数值/单位嵌进环内,形成"图形+数据"一体化视图,天然契合电量、完成度、阈值预警这类循环型数据。 1. 核心优势 中心聚焦:数值/单位在环内,减少视觉跳转循环语义:电量/完成度/周期数据表达更直观动态反馈:颜色渐变(贴图绿→黄→红阈值警示) 典型场景:电池电量/SOC、任务完成进度(中心显示百分比)、工艺参数监控(压力/温度模拟仪表)。 2. 属性介绍 2.1 功能设置属性说明监视地址值就是进度条的旋转角度;只在起始值~终止值范围内才响应数据类型UINT16/INT16/UINT32/INT32/UINT64/INT64/FLOAT/DOUBLE起始值/终止值角度对应范围滑动调节可触摸调节角度;触控区域(滑块/进度条);松开时通知滑块图库/大小滑块样式;显示大小 2.2 外观设置厚度:进度条粗细起始角度/终止角度:钟表 3 点方向为 0°,顺时针递增(6 点=90°);完整圆要 135 到 495显示效果:纯色 或 图片;纯色可配圆形端点 3. 应用案例 读取 LW1001(INT16),0~100,滑动调节+触控区域=进度条,滑块图库 lamp.xico/36 大小 32,厚度 20,起始角度 135、终止角度 45(完整圆),纯色前景黄色+圆形端点。 运行:默认 LW1001=0 对应 135°;滑动滑块数值实时刷新;PLC 设 50 显示半圈效果。 角度是3 点钟=0°、顺时针递增。要完整圆,起始 135° 结束 495°(转满一圈)。「起始值」和「起始角度」别搞混——起始值对应角度范围下限。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「圆形进度条」,版权归大彩科技所有。 --- ### 501. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 进度条是经典可视化元素:精确量化工作进程,可水平/垂直显示。支持纯色、渐变、贴图三种效果,带范围报警。 1. 属性介绍 1.1 功能设置属性说明读取地址绑定的地址数据类型UINT16/INT16/UINT32/INT32/UINT64/INT64/FLOAT/DOUBLE数值范围固定范围(最小/最大值,必须整数)/ 可变范围(最小/最大值地址) 1.2 外观设置显示方向:从左往右/从右往左/从下往上/从上往下显示效果:纯色(前景颜色+圆形端点+显示背景色)/ 渐变色(开始颜色+结束颜色)/ 贴图(进度图库+背景图库)范围报警:固定/可变范围,设报警上下限进度条颜色 2. 应用案例 2.1 固定范围读取 LW1001(INT16),固定范围 0~100,方向从左到右,贴图效果(进度 progress.xico/17、背景 progress.xico/5)。配字设置按钮 + / - 调节,数值限制 0~100。 2.2 可变范围读取 LW1002(INT16),下限地址 LW1003、上限地址 LW1004。设最大 1000、最小 100,拖动滑动条数值实时变。 进度条和滑动条长得像但分工不同:进度条是显示(只读),滑动条是调节(可写)。要看百分比用进度条,要改设定值用滑动条。范围报警的上下限颜色可以做成「绿色正常/黄色警告/红色报警」三段。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「进度条」,版权归大彩科技所有。 --- ### 502. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 动画控件播放多帧序列图(图库文件),实现设备状态动态呈现或引导反馈。支持自动播放、条件控制、循环播放,还能在播完后切画面或写寄存器。 1. 属性介绍 1.1 功能设置属性说明播放控制自动播放(进画面即播)/ 条件控制(满足条件才播)读取地址+比较+值条件控制的判断:==、!=、=、、IN(范围内含边界)、OUT(范围外)播放速度帧间隔时间(毫秒)播放次数无限 或 指定次数结束处理指定次数播完后:切换画面 或 写入指定寄存器(执行1次,与播放次数无关)停止播放时显示第一帧 / 隐藏动画 / 暂停动画 1.2 外观设置图库:选择控件显示的图标库。 2. 应用案例 2.1 自动播放播放控制=自动播放,速度 500ms,次数无限,停止时显示第一帧。进画面就循环播。 2.2 条件控制(启停动画)播放控制=条件控制,读取 LW1001 == 1 时播,速度 500ms 无限次。配一个位状态指示灯(切换开关)控制 LW1001:点开=1 播放,点关=0 停止(暂停动画)。 2.3 播完发通知播放控制=条件控制(LW1002==1),指定次数 1 次,结束处理=写入寄存器:LW2000 写 1。动画播完写 LW2000 通知 PLC。 2.4 播完切画面播放控制=条件控制(LW1003==1),1 次后切换画面到主画面,停止时隐藏动画。适合开机动画。 扩展用法:需要动态改 GIF 播放速度时,Lua 调 wgt_set_param(screen, control, 0x33, value)——0x33 固定表示 GIF 速度,value 单位 ms(100=100ms 一帧)。前提是 GIF 控件 ID 不为 0。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「动画控件」,版权归大彩科技所有。 --- ### 503. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 旋钮编码器是物理硬件控件:靠旋转(A/B 相正交脉冲)和按压(确认/切换)操作,用于无级微调、快速参数设定(温度、频率、偏移量)。标准产品如 DC40400DB016 支持旋转编码器接口,编码器型号 EC11。 1. 属性介绍 属性说明编码器编码序号 0~3,目前只支持 0写入地址编码器值自动累加输出到该地址数据类型UINT16/INT16/UINT32/INT32下限值/上限值编码器值范围 2. 关键行为 旋转动作:系统自初始化后自动把 A/B 正交脉冲转为数值——逆时针递增(步长1)、顺时针递减;到上下限钳位,不循环重置(工业安全设计)按下动作:完全由用户层 Lua 脚本处理(系统无内置回调),通过 GPIO 接口检测——以 DC40400DB016 为例按键低电平有效(按下=0,释放=1) 3. LUA 脚本(必须初始化) 使用旋钮编码器必须在 on_init 里初始化:function on_init() dofile("bspButtonV2.lua") -- 加载按键库 btn_manager = ButtonManager:new() btn_manager:add("key1", Knob.pinKey, { active_level = Knob.pinKeyActive, -- 0=低电平有效 long_press_time = Knob.pinKeyLongTime,-- 300ms 长按阈值 enable_repeat = true, -- 长按连续触发 enable_double_click = true, -- 双击检测 debug = false }) btn_manager:get("key1") :on(Button.EVENT.SHORT_PRESS, KnobKey_Press) :on(Button.EVENT.SHORT_RELEASE, KnobKey_Release) :on(Button.EVENT.LONG_PRESS, KnobKey_LongPress) :on(Button.EVENT.LONG_RELEASE, KnobKey_LongRelease) :on(Button.EVENT.CLICK, KnobKey_Click) :on(Button.EVENT.DOUBLE_CLICK, KnobKey_Double) :on(Button.EVENT.REPEAT, KnobKey_Repeat) set_rotate_decoder(0, Knob.pinA, Knob.pinB, Knob.ktype) -- 编码器初始化 start_rotate_decoder() -- 启动编码器 set_run_cycle(10) -- 主循环 10ms end引脚定义:GPIO 的 16 进制高 8 位=IO 组、低 8 位=引脚,PD0=0x0300、PD2=0x0302、PD3=0x0303。旋转动作启动后由内核异步更新绑定寄存器(如 LW1000),无需脚本轮询;按下动作靠 on_run 里 btn_manager:update_all() 每 10ms 检测。 旋钮编码器必须实体屏测试(虚拟屏没有真实 IO)。上电时建议加一个单次定时器把绑定地址清 0——避免编码器抖动导致初值不为 0。另注意:旋钮到上下限是钳位不是循环,和画面里控件的循环调节是两码事。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「旋转编码器」,版权归大彩科技所有。 --- ### 504. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 图片轮选控件通过左右滑动在有限空间循环展示一组图片。它有两种模式——基础轮播和动态图标映射——本质是两种完全不同的数据架构,用错模式会绕大弯。 1. 两种模式(核心区别) 1.1 基础轮播模式(未勾选「选取图标」)图库帧数 = 选项总数:图库 10 帧 → 自动识别为 10 个选项(索引 0~9)单地址驱动:监视地址直接存当前选中项索引,值变化即切帧静态映射:选项 i 永久绑定图库帧 i 1.2 动态图标映射模式(勾选「选取图标」)双层解耦:选项层 + 图标层。监视地址=选中项;监视地址+1=总选项数;监视地址+1+N=各选项的图标帧索引动态帧池:图库 36 帧分 3 组(每组 12 帧),选项0用 LW1003 指向帧0~11、选项1用 LW1004 指向帧12~23…双维度控制:滑动切选项改索引;改 LW1003+N 更新该选项的图标状态 维度基础轮播动态图标映射数据架构单层:帧=选项双层:选项+动态图标帧寄存器占用1 个(当前索引)1+1+N 个(索引+总数+各选项帧)运行时灵活性仅能切换选项可独立更新任一选项视觉状态典型应用静态内容展示多状态设备监控、工艺阶段指示 2. 属性介绍 属性说明监视地址绑定的变量地址选取图标勾选=动态图标映射模式候选项3 项或 5 项触摸滑动 / 滑行惯性 / 对齐 / 点击切换滑动切换开关;惯性;对齐;点击直接选中自动跟踪 / 跟踪时间图片动态跟踪数值变化;跟踪滚动时间(秒)图库 / 方向轮选图片;滚动方向宽度比例 / 缩放比例 / 偏移比例选项图片宽长比 20~80;两端缩放 20~100;两端高度偏移 -100~100 3. 应用案例 3.1 基础轮播监视 LW1000,候选项 3,滑动+惯性+对齐+点击切换+自动跟踪,图库方向左右,宽度比例 40、缩放 50。滑动切换索引,LW1000 值跟随变化。 3.2 动态图标映射(LUA 初始化)监视 LW1001,勾选选取图标,候选项 3。地址布局:LW1001=选中项、LW1002=总选项数、LW1003~LW1005=各选项图标帧。on_init 初始化:function on_init() set_uint16(VT_LW, 0x1002, 3) -- 总选项数 3 set_uint16(VT_LW, 0x1003, 0*12) -- 选项1 图标起始帧 0 set_uint16(VT_LW, 0x1004, 1*12) -- 选项2 图标起始帧 12 set_uint16(VT_LW, 0x1005, 2*12) -- 选项3 图标起始帧 24 end运行时:滑动切选项改 LW1001;设备状态变了,PLC/LUA 改 LW1003~LW1005(写 0~11、12~23、24~35)更新对应选项的图标帧。 动态图标映射的地址规则要记牢:监视地址+1 = 总选项数;监视地址+1+N = 第 N 个选项的图标帧。忘了初始化这几个地址,控件可能空白或错乱——on_init 里必须写。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「图片轮选」,版权归大彩科技所有。 --- ### 505. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 滚轮控件是手势滑动选值组件:上下/左右滚动从预设选项中选值,模拟机械拨盘。时间/日期设定(定时启停、计划任务)是典型场景,直观、低误触。 1. 属性介绍 1.1 功能设置属性说明监视地址绑定的变量地址总项数滚轮滚动选择的总项数候选项默认显示项数:3 项或 5 项惯性滑动松开后有惯性滚动效果对齐 / 循环选项内容是否对齐;是否循环滚动选项内容静态(固定文字,可用标签)/ 动态(变量地址+最大长度,UTF-8,分号分隔) 1.2 外观设置字体/字体大小中间颜色:正中间选中项文字颜色;两端颜色:两端选项文字颜色两端缩小:两端选项文字缩放比例 2. 应用案例 2.1 静态内容监视 LW1001,5 项、候选项 3、惯性+循环,文字 1;10;100;1000;10000。滑动滚轮,索引值写入 LW1001,配数值控件观察。 2.2 动态内容监视 LW1002,选项动态,变量地址 LW1050,最大长度 256。LUA set_string 写入选项(UTF-8,分号分隔)后滚轮显示。 滚轮和下拉选择都能选值,区别:滚轮适合连续快速浏览(时间、档位),下拉适合选项多的精确选择。候选项 3 还是 5 看屏幕空间——5 项更有「拨盘感」,3 项更紧凑。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「滚轮」,版权归大彩科技所有。 --- ### 506. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 下拉选择控件用于从预定义选项集中单选:点开下拉列表选一项,自动同步到关联变量。选项可以是静态内容、动态内容(LUA 写入)或历史数据日期。 1. 属性介绍 1.1 功能设置属性说明显示模式下拉 或 列表监视地址绑定的变量地址数据类型UINT16/INT16/UINT32/INT32总项数 / 列表项数总选项数;列表显示项数(小于总项数时滚动条拖动)菜单方向自动 / 向下 / 向上选项内容静态(固定文字)/ 动态(变量地址+最大长度,UTF-8,分号;分隔)/ 历史数据日期(数据记录控件的时间,配资料取样索引+日期格式+排序)数值转换转换表:每项对应值,如选项 Item0~Item4 对应值 1;10;100;1000;10000 1.2 外观设置字体/大小/对齐/文字颜色;背景颜色/选中背景颜色(背景贴图未启用时生效)重设下拉菜单:菜单项高度(控件高度百分比)、菜单项字体(百分比)背景贴图:主显示区图库 + 列表区图库 2. 应用案例 2.1 静态列表 + 数值转换监视 LW1001(UINT16),5 项、列表 3 项,文字 Item0~Item4,数值转换 1;10;100;1000;10000。选 Item1 → LW1001=10;选 Item2 → 100。注意:转换表是「选项内容→寄存器值」的映射。 2.2 动态列表(LUA 写入)监视 LW1002,选项内容动态,变量地址 LW1050,最大长度 256 字节。LUA 用 set_string 写入「ac;!?;你好」(UTF-8,分号分隔),下拉即显示这三项。 2.3 历史数据日期监视 LW2002,选项内容=历史数据日期,资料取样索引 [0],日期格式 YYYY/MM/DD。注意:下拉控件绑定的变量地址 = 数据记录控件控制地址 + 2(LW2000+2=LW2002)。配数据记录控件(数据来源=资料采样、通道1、控制地址 LW2000、时间戳定位)。选日志日期,资料采集表格定位到当天最早一条。 动态选项三个必须:①LUA 写入的字符串必须 UTF-8 编码;②选项间用英文分号 ; 分隔;③必须先写入选项内容控件才显示——没写内容时下拉是空的,别以为控件坏了。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「下拉选择」,版权归大彩科技所有。 --- ### 507. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 滑动条是连续值调节控件:拖动滑块或点轨道调参数。音量、屏幕亮度、目标温度/速度/压力设定都靠它。 1. 属性介绍 1.1 功能设置属性说明读写地址绑定的变量地址数据类型UINT16/INT16/UINT32/INT32/UINT64/INT64/FLOAT/DOUBLE滑动调节拖动进度条调节数值;松开时通知可勾选与读取相同写入地址是否与读取相同刻度数控件的总可读数量范围限制无 / 固定范围(固定上下限)/ 可变范围(上下限地址动态调) 1.2 外观设置方向:从左到右/从右到左/从上到下/从下到上滑块图库:滑块图片;宽度/高度:滑块尺寸 2. 应用案例 2.1 固定范围读写 LW1001(UINT16),滑动调节+松开时通知,固定范围 0~100,方向从左到右。配数值控件显示滑块值。拖动时数值实时变,且限制在 0~100。 2.2 可变范围读写 LW1002(UINT16),刻度数 100,可变范围:下限 LW1003、上限 LW1004。配 3 个数值控件分别显示滑块值/下限/上限。运行时改 LW1003=100、LW1004=1000,滑块范围动态变。 可变范围的精髓:上下限存在寄存器里,PLC 或 LUA 随时改。比如温度设定范围随季节变(冬天 10~30、夏天 16~28),不用改画面,改上限地址值就行。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「滑动条」,版权归大彩科技所有。 --- ### 508. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 文本控件用于字符串型变量的显示与键盘输入:设备状态提示、参数配置、用户注释。支持 GBK/UTF-8/UNICODE 编码,最大 2KB 存储。 1. 核心特性 输入:HMI 内置键盘输入,支持 GBK、UTF-8 编码PLC 通信编码:GBK(中文内码,兼容 GB2312)、UTF-8、UNICODE——须与 PLC 协议定义一致长度限制:最大 2KB(2048 字节);GBK 约 1024 个中文(2字节/字),UTF-8 中文约 682 字符(3字节/字)、英文 2048 字符 2. 属性介绍 2.1 功能设置属性说明启动输入是否允许键盘输入键盘类型/画面/位置/初始值弹出键盘/外接键盘;键盘画面;弹出位置;是否显示初始值提示信息关联文字标签,键盘画面控件关联 $SysKBTipInfo 显示读取/写入地址可相同或不同最大长度文本输入的最大字节数编码键盘输入:GBK/UTF-8;显示:GBK/UTF-8/UNICODE密码显示内容以 * 显示高低字节互换字符串高低字节交换(配合特定 PLC 存储顺序) 2.2 外观设置字体/大小/对齐:左/居中/右不拆分单词:多行显示时不在行末拆断单词(英文/德语等)行间距/字距离:行距是字体大小倍数;字距是像素闪烁/跑马灯:闪烁频率;跑马灯方向(左/右/上/下移动)+ 速度(像素/秒)控制地址:同数值控件——+0 字体(高8字库/低8字号)、+1 前景色 RGB565、+2 背景色 RGB565 3. 应用案例 3.1 UTF-8 编码输入读取 LW1001,编码 UTF-8,键盘画面 101_full800*480,提示信息关联标签。输入"你好",DCBUS 下发的帧是 AA 55 00 0E F2 10 01 04 E4 BD A0 E5 A5 BD 00 00 CC CC——注意 UTF-8 中文每字 3 字节(E4 BD A0 = 你)。 3.2 GBK 编码读取 LW1020,编码 GBK。输入"你好"下发 AA 55 00 0C F2 10 20 03 C4 E3 BA C3 00 00 CC CC——GBK 中文每字 2 字节(C4 E3 = 你)。和 UTF-8 的帧对比,能直观看出编码差异。 3.3 高低字节互换 + 控制地址读取 LW1040,编码 GBK,勾选高低字节互换,控制地址 LW8000。输入"AB"下发 ... 42 41 ...(高低互换后 B A 传输);PLC 发 31 32 33 34 显示为 2143。控制地址 LW8000=0x0132 显示字库1/50号字,LW8001 前景、LW8002 背景。 3.4 UNICODE + 跑马灯读取 LW1060,编码 UNICODE,跑马灯左移动速度 10。输入"你好,VisualHMI",文字从右往左滚动显示。 编码三连坑:①键盘编码和 PLC 侧必须一致,GBK 输进去 UTF-8 读出来就是乱码;②UNICODE 编码下中文字符占 2 字节但 UTF-8 占 3 字节,寄存器数量要算对;③高低字节互换勾了没——很多国产 PLC 字符串存储是高字节在前,不勾就显示反了。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「文本控件」,版权归大彩科技所有。 --- ### 509. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数值控件是 HMI 里最核心的输入/显示控件:显示寄存器数值、弹键盘输入、工程量换算、越限告警。这篇把数据类型、缩放、范围限制、警示色、密码显示讲透。 1. 核心能力 数据类型:UINT16/UINT32/UINT64、INT16/INT32/INT64、FLOAT(32位IEEE754)/DOUBLE(64位)输入与显示:屏幕键盘直接改值;线性缩放 y=ax+b 做工程量转换;无效值处理(0 时可显示空白/—)越限告警:数值超出范围自动变色/闪烁,支持多级阈值(警告区/报警区) 2. 功能设置 2.1 输入与键盘属性说明启用输入是否可以通过键盘输入键盘类型/画面弹出键盘;键盘所在画面键盘位置元件上/下/左/右侧、屏幕上/下/左/右边、居中、自定义坐标键盘初始值键盘是否有初始值提示信息关联文字标签,键盘画面控件关联 $SysKBTipInfo 即可显示提示 2.2 地址与数据类型读取地址 / 写入地址:可相同(读写同一地址)或不同(读A写B)整数位数:整数部分个数,可前补零小数位数:整数类型用于表达小数(原值 1234 设 2 位小数显示 12.34);浮点类型保留小数位(123.4 设 1 位显示 123.4)特殊转换:实际值 = 原值×缩放 + 偏移附加单位:值后加单位,最多 4 字节,可无空格紧凑显示密码显示:数字以 * 显示 ⚠️ 特殊转换只设缩放(如 0.01)不设小数位数时,显示会四舍五入成整数——原值 456 缩放后 4.56 显示成 5。要显示小数必须同时配「小数位数」为 2,才显示 4.56。缩小倍数务必搭配小数位数用。 2.3 范围限制与警示色属性说明范围限制无 / 固定范围(下限值+上限值)/ 可变范围(下限地址+上限地址,运行时动态改)警示色颜色用于文字或背景;下限颜色/闪烁(数值<下限);上限颜色/闪烁(数值>上限)越界数值显示正常显示 / #### / * / ---- / 空白键盘输入越界禁止设置 / 设为边界值 / 取消设置 2.4 控制地址(运行时动态改样式)通过连续地址动态设置字体、前景色、背景色:控制地址+0(如 LW1000):高8位=字体编号,低8位=字体大小控制地址+1(LW1001):前景色,16位 RGB565控制地址+2(LW1002):背景色,16位 RGB565 3. 应用案例 3.1 固定范围 + 警示色读取 LW1001(UINT16),范围 0~1000,警示色用于背景:下限黄(255;255;0)闪烁、上限红(255;0;0)闪烁,越界显示正常,键盘越界禁止设置。PLC 传值出范围,背景立刻变黄/红。 3.2 可变范围读取 LW1002(INT16),下限地址 LW2000、上限地址 LW2001(键盘输入改边界)。上限设 1、下限设 -100:值出范围文字变橙(<-100)/红(>1),键盘越界「取消设置」保留原值。 3.3 小数显示(32位整形)读取 LW1003(UINT32),小数位数 2。PLC 传 3660(0x0D20) 显示 36.6;键盘输入 12.3,回写 0x04CE(1230) 给 PLC。 3.4 控制地址改样式控制地址 LW2002:LW2002=0x0132(306) 表示 1 号字库 50 号大小;LW2003=0xF800(63488) 红色前景;LW2004=0xFFE0(65504) 黄色背景。PLC 改这三个地址即可动态换样式。 3.5 特殊转换 + 单位读取 LW1021(UINT16),缩放 0.1、偏移 0、小数位数 2、单位 V。原值 123 → 12.3,显示 12.30V。 3.6 密码显示读取 LW1022,勾选密码显示。键盘输入或 PLC 传值都显示为 **,个数取决于字符个数。 数值控件调不通三连查:①数据类型对不对(PLC 是 INT16 你选 UINT16,负值直接错);②小数位数和缩放搭配了没;③范围限制和警示色是不是把正常值判成越界了。尤其「显示 -1 变 65535」这种,99% 是符号类型选错。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「数值控件」,版权归大彩科技所有。 --- ### 510. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能按钮是 HMI 里的「万能按钮」:切画面、弹对话框、开菜单、条件执行、发通知、虚拟按键,全靠它。这篇把每种用途讲清楚。 1. 按钮用途(5 种) 用途说明切换画面跳转目标画面,可配动画效果(从左到右/从右到左/从上到下/从下到上)和动画范围(整个画面/指定范围四边距)打开对话框弹目标画面为对话框,背景蒙版 0~100(0 透明),弹出位置可指定坐标(默认居中)关闭对话框配合打开对话框,按下返回原画面虚拟按键配置键盘功能(见键盘篇)打开菜单打开菜单画面,背景蒙版/弹出位置可配,菜单返回地址:选中项数值写入该地址关闭菜单配合打开菜单使用 2. 条件触发 + 通知 条件触发:按钮动作绑定逻辑表达式,条件满足才执行。触发地址 + 比较(>、=、<=、==、!=、IN 范围内、OUT 范围外)+ 值通知:执行动作时给 PLC 地址写值。通知地址 + 值 3. 应用案例 3.1 全屏/指定范围切换画面主页放功能按钮(切换画面→1_切换画面,动画从上到下,整个画面);子页放返回按钮(动画从左到右,指定范围:左60/右60/上185/下195)——只动画切换中间区域。 3.2 条件触发切换功能按钮(切换画面,条件地址 LW1000 == 1)+ 一个层叠其上的字设置按钮(写 LW1000=1)。点字设置按钮→条件成立→切到目标画面。常用于注销登录等级这类「值变化才执行」的场景。 3.3 对话框(确认操作)主页功能按钮(打开对话框→3_对话框,背景蒙版 50)。对话框画面放 YES/NO 两个功能按钮(关闭对话框 + 通知:LW1001 写 1)。点确定→关对话框+发通知;点取消→直接返回。适合「是否停机?」这类确认。 3.4 菜单(弹出选择)主页功能按钮(打开菜单→4_菜单,蒙版50,位置X300/Y85,菜单返回地址 LW1002,通知 0x0F00 写 65535 复位)。菜单画面 5 个功能按钮(自动/制冷/制热/送风/除湿/睡眠),每个写入对应值。选中后数值写入 LW1002,多状态指示灯显示模式。 对话框和菜单的背景蒙版很实用:0 全透明、100 不透明,遮住后面画面防止误操作。蒙版设 50 左右既能看到底层又有「模态」感。另外「菜单返回地址」必须和菜单画面里控件的写入地址一致,否则选了不生效。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「功能按钮」,版权归大彩科技所有。 --- ### 511. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 动态按钮是带视觉滑动反馈的开关控件:点击翻转 ON/OFF,滑块从左往右(或反向)滑动,模拟物理开关。设备启停、使能/禁用这类「开关感」很强的操作用它最直观。 1. 属性介绍 1.1 功能设置属性说明读写地址绑定的寄存器地址圆圈滑块圆圈的颜色未选时关闭状态的颜色选中时打开状态的颜色禁止时权限不足且禁止触控时显示的颜色 2. 应用案例 画面添加动态按钮,读写地址 LW1000;圆圈白(255;255;255)、未选灰(150;150;150)、选中蓝(32;150;240)、禁止红(255;0;0);权限控制:LW1001=0 时禁止触控。 运行:点击 0→1,滑块从左往右滑动变蓝;PLC 改寄存器同样有动态效果。权限不足时按钮红色禁止触控,但指令设置的状态仍会动态显示。 动态按钮的「禁止色」是权限联动的:不满足权限条件时按钮变红且禁触,但寄存器值变化带来的滑块动画仍然显示——别把「按钮变红」当成故障,那是权限提示。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「动态按钮」,版权归大彩科技所有。 --- ### 512. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 字设置按钮是只写控件,专用于向寄存器写入预定义数值:参数设定、模式切换、命令下发。支持写入常量、递增/递减、按下写A松开写B(脉冲式)。 1. 核心功能 常量写入:点击写入固定值(如写入 100 = 目标温度 100℃)递增/递减:每次点击 +1 或 -1,配步长/最小/最大/循环,实现频率 ±1Hz 微调按钮互斥:多个字设置按钮绑同一寄存器 + 多状态指示灯,实现模式互斥选择瞬动交互:无状态保持,松开恢复默认外观;脉冲写入:按下写 A 值、松开写 B 值(如启动=1、停止=0) 2. 属性介绍 2.1 功能设置属性说明写入地址绑定的寄存器地址递减/递增步长:每次变化量;最小值/最大值:上下限;循环调节:越界后循环;长按调节:迟滞时间(ms)+间隔时间(ms)实现长按连续调写入常量点击写入固定值点动设置按下值:按下时写入;松开值:松开时写入数据类型UINT16、INT16、UINT32、INT32执行时机 / 播放声音寄存器设置时机;点击声音 2.2 状态设置使用图库:松开时/按下时图库,可裁剪使用文字:字体/大小/行间距/标签;选择状态:各状态文字内容、颜色、对齐、闪烁、跑马灯 3. 应用案例 3.1 递增/递减(带长按)2 个字设置按钮(递增/递减)+ 数值控件。写入地址 LW1000,步长 1,范围 0~100,长按调节:迟滞 500ms、间隔 100ms——按住连续跳数,松开停。 3.2 写入常量 + 点动设置4 个按钮:写 100、写 200、写 300(写入常量),1 个按下 400/松开 0(点动设置)。绑定 LW1001,数值控件观察:点 100 显示 100;点 400 的按钮,按下显示 400,松开回 0。 3.3 按钮互斥(模式选择)经典场景:0-就餐、1-回家、2-离家、3-观影…8 个模式按钮互斥。做法:8 个字设置按钮(写入常量 0~7,绑 LW1002)+ 8 个多状态指示灯(状态转换表 1;0;,值匹配才显示图标)。点哪个按钮,对应灯亮,其他灯不显示(露出背景未选中图)。 互斥应用的关键:多状态指示灯转换表 1;0; 表示「寄存器值=1 显示第0帧(选中),值=0 显示第1帧(未选中)」,寄存器值不等于表里任何值时控件不显示、露出背景——这就是「未选中」效果。背景图要预先放好未选中态图片。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「字设置按钮」,版权归大彩科技所有。 --- ### 513. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 位设置按钮是只写控件:不读当前状态,每次点击向目标地址写 ON(1) 或 OFF(0)。适合触发瞬时动作——复位、启动、确认。和位状态指示灯的区别:灯是「看状态」,按钮是「发指令」。 1. 能绑什么地址 原生 Boolean(Modbus):线圈 0x0000~0xFFFF(可读写);离散输入 1x0000~1xFFFF(只读,不可写,仅参考)。位设置按钮通常绑线圈做远程启停位寻址寄存器(DCBUS/XGUS):这些协议没有原生布尔,用 . 访问字内位:LW1000.0=bit0(最低位),LW1000.15=bit15(最高位) 交互行为:瞬动式——按下触发动作,松开立即恢复未按下外观,不保持。 2. 属性介绍 2.1 功能设置属性说明写入地址绑定的寄存器地址开关类型设为ON / 设为OFF执行时机设置寄存器的时机播放声音点击时播放指定声音 2.2 状态设置使用图库:松开时图库/按下时图库,可裁剪使用文字:字体/大小/行间距/标签;选择状态:各状态文字内容、颜色、对齐、闪烁、跑马灯 3. 应用案例 3.1 设为 ON/OFF2 个位设置按钮(设为ON、设为OFF)+ 1 个数值控件。写入地址 LW1000.0。点 ON 写 1,点 OFF 写 0,数值控件实时显示。 3.2 切换开关1 个位设置按钮(开关类型=切换开关,绑定 LW1000.1)+ 数值控件。点一下 OFF→ON,再点 ON→OFF。 3.3 点动开关1 个位设置按钮(开关类型=点动,绑定 LW1000.2)+ 数值控件。按下 ON,松开自动回 OFF。 位设置按钮是只写的——它不显示当前状态。画面上要看到状态,旁边必须配一个位状态指示灯或数值控件。别指望按钮自己「亮起来」告诉你设备在不在运行。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「位设置按钮」,版权归大彩科技所有。 --- ### 514. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 位状态指示灯只能显示 0/1,多状态指示灯就不一样了——它按寄存器的具体数值映射到多个预定义状态,每个状态可以配独立的图标、颜色、文字。模式识别、流程阶段、档位显示这类场景就是它的主场。 1. 核心能力 多状态映射:预设多个状态项,每项关联一个特定数值或数值范围。如 0=停机(灰)、1=自动运行(绿)、2=手动调试(黄)、3=故障锁定(红)可交互:允许写入的寄存器上,点击控件循环切换状态(递增 0→1→2→0…)非连续值映射:支持状态转换表,把 0、5、10、99 这种离散编码一一对应到状态,不要求连续递增 工业上状态字常是非连续编码(兼容性/预留位/历史原因),比如 0=停机、5=自动运行、10=手动模式、99=严重故障——状态转换表就是干这个的。 2. 属性介绍 2.1 功能设置属性说明读取地址绑定的寄存器地址切换开关勾选后允许触控写操作写入地址勾选切换开关后,可设写入地址是否与读取相同操作模式递增:每次点击值+1;递减:每次点击值-1循环调节如状态数8,当前为7(末状态)时再点回到1执行时机设置寄存器的时机数据类型UINT16、INT16、UINT32、INT32播放声音点击时播放指定声音 2.2 状态设置状态数:1~256 个状态转换状态:按状态数填写值映射,如「0;200;300;400;8;88;888;8888」——寄存器值 0 显示第0帧、200 显示第1帧…使用图库:状态0图库/状态1图库,裁剪;使用文字:各状态不同文字,可配字体/大小/行间距/标签;选择状态:单独设每个状态的文字内容、颜色、对齐、闪烁、跑马灯 ⚠️ 寄存器值不在状态数范围时,多状态图标不显示。例:状态数 8 只认 0~7,寄存器值写成 8,控件直接空白。转换状态表也一样——表中没有的值,控件不显示。排查「灯不亮」先查这个。 3. 应用案例 3.1 递增模式(循环调节)智能家居场景:2 个多状态指示灯(图库版+文字版)+ 1 个数值控件。读取 LW1000,UINT16,状态数 8,循环调节勾选,文字状态 S0-回家、S1-离家、S2-就餐…S7-自动。点击切换,状态和数值实时变。 3.2 递减 + 状态转换表读取 LW1001,状态数 8,转换状态「0;200;300;400;8;88;888」(非连续编码),操作模式递减。配合数值控件手动改值,观察状态跟随。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「多状态指示灯」,版权归大彩科技所有。 --- ### 515. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 位状态指示灯是 HMI 画面里用得最多的控件——专门显示一个开关量(布尔值):设备启停、报警确认、IO 状态,都是它。核心就一句话:寄存器为 1 亮一种状态,为 0 亮另一种状态。 1. 能绑什么变量 原生 Boolean 变量:Modbus 线圈(如 0x0001)、离散输入(如 1x0001)。值 1=激活(绿色亮起),0=非激活(灰色熄灭)位寻址:非布尔寄存器(4x 保持寄存器、3x 输入寄存器)用 . 引用特定位——4x1000.1 表示 4x1000 的 bit1,3x0200.7 表示 bit7。一个 16 位寄存器能承载 16 个独立状态,通信效率高 2. 属性介绍 2.1 功能设置属性说明读取地址控件绑定的变量地址切换开关勾选后允许触控(写操作),不勾选=纯显示写入地址勾选切换开关后,可设置写入地址与读取地址是否相同开关类型设为ON:按下写1,松开保持;设为OFF:按下写0,松开保持;切换开关:按下翻转(带锁);点动开关:按下写1、松开写0(自动弹起)执行时机设置寄存器的时机播放声音点击时播放指定声音(wav/mp3) 2.2 状态设置使用图库:状态0图库(弹起/非激活)、状态1图库(按下/激活),可裁剪使用文字:状态0/1 分别显示文字,可设字体、大小、行间距;用标签则显示标签内容选择状态:单独设置每个状态文字的内容、颜色、对齐、闪烁、跑马灯 3. 应用案例 3.1 设为 ON/OFF(写 1 / 写 0)画面放 2 个可读写位状态指示灯(设为ON/设为OFF,读地址 LW1000.0)+ 1 个只读的(文字显示 关/开)+ 1 个数值控件显示 bit 值。 3.2 切换开关(翻转)开关类型选「切换开关」,绑定 LW1000.1:点一下 ON,再点一下 OFF,类似带锁开关。配一个只读文字指示灯和数值控件观察。 3.3 点动开关(瞬动)开关类型选「点动开关」,绑定 LW1000.2:按下为 1,松开自动回 0。适合启动按钮、自复位按钮场景。 选开关类型先想清楚业务:保持型(启停状态)用切换开关,瞬时型(启动/复位按钮)用点动开关。用错类型会出现「按了没反应」或「松手就跳回去」的现场事故。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「位状态指示灯」,版权归大彩科技所有。 --- ### 516. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 地址标签 = 给寄存器地址起名字。LW1000 写成「临时_温度」,4x0021 写成 Current01——画面里到处引用的地址就都好认了。支持批量导入导出,工程大了必备。 1. 两类地址标签 菜单【工程】→【地址标签】打开:系统参数标签:LW 地址小于 0x1000,不可修改、不可导入导出(系统保留区)用户自定义标签:自己定义的,可增删改、导入导出 标签不区分数据类型(UINT16/INT16/UINT32/String...),标签只表示变量的起始地址,具体类型由控件属性决定。例:数值控件关联 「Current01(4x0021)」:数据类型 UINT16 → 地址范围 4x0021;UINT32 → 4x0021~4x0022。 2. 添加标签 2.1 LW 地址标签(HMI 本机)地址位于:HMI本机;数据类型:LW;16进制地址:1000(内存变量必须 >= 1000 十六进制)。标签名默认 Addx,改成有意义的如「临时_温度」。 2.2 Modbus 保持寄存器某一位用 . 引用非位寄存器的具体一位:给 4x1000 的 bit1 设标签 → 地址填 1000.1。 2.3 Modbus 保持寄存器连续位用 .~ 引用连续位:给 4x1000 的 bit0~bit3 设标签 → 地址填 1000.0~3。 3. 删除 / 导出 / 导入 删除:选行删除,或【清空】全部清除导出:导出为 xml 或 csv 修改导入 csv:第1列标签名称、第2列变量地址、第3列描述说明(WPS 打开编辑)导入 xml:NAME 为名称、ADDR 为地址、TIP 为描述 4. 控件里使用地址标签 控件属性栏 → 地址选择 → 选【标签】→ 用户标签 → 选择对应地址标签,确定即可。以后控件就显示标签名,好认好维护。 工程做大了,强烈建议把 PLC 侧所有用到的寄存器都建成标签:一是画面里不再是一堆裸地址,二是批量导出 CSV 后可以交给电气工程师核对点位,三是换寄存器地址时只改标签一处。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)资源介绍「地址标签」,版权归大彩科技所有。 --- ### 517. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 HMI 支持 wav、mp3 音频,能做出开机音乐、触摸伴音、按钮声音,还能用系统寄存器控制播放。这篇把音频应用和播放控制讲清楚。 1. 音频文件管理 【工程】→【资源】→【音频文件】,可添加、删除音频文件。编译后音频文件生成到资源包里。 2. 音频的四种应用 2.1 开机音乐固定文件名 welcome.mp3,【工程】→【工程属性】→【开机音乐】→ 启用。 2.2 触摸伴音固定文件名 beep.mp3,操作控件时播放。在【工程属性】→【触摸伴音】→【音频】配置。 ⚠️ 配置了触摸伴音后:如果当前正播放 1.mp3,操作控件会停止 1.mp3、播放触摸伴音。想要不打断背景音乐就别配触摸伴音。 2.3 按钮声音按钮执行动作时播放指定音频文件(数字、字母命名)。支持按钮声音的控件(位状态指示灯等)在按钮属性里选择音频。 2.4 音频控制(系统寄存器)控制播放的文件必须数字命名(如 1.mp3、2.mp3)。相关寄存器:寄存器作用sysSndVol喇叭音量(0~100)SysSndPlay播放指定音频 ID(只能放数字命名的文件)SysSndState播放状态:0=空闲,1=开始播放,2=暂停,3=停止,0x80=播放中SysSndPlayTime当前播放进度(秒)SysSndTotalTime当前播放时长(秒) ⚠️ 切换播放的坑:暂停当前歌曲后,选择新音频 ID 播放前,应该先停止。正确顺序:播放ID1 → 暂停 → 停止 → 选择ID2 → 播放;或 播放ID1 → 停止 → 选择ID2 → 播放。直接换 ID 可能不生效。 实时显示播放进度,需要当前画面有控件「刷新变化」——加一个 RTC 控件或 Lua 脚本 redraw(),否则进度条不更新。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)资源介绍「声音」,版权归大彩科技所有。 --- ### 518. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数值、文本、密码输入都会弹键盘。VisualHMI 的键盘是可编程的画面——键盘上的键是「虚拟按键」控件,背后靠几个系统寄存器驱动。这篇把键盘管理和系统寄存器讲清楚,懂了这个,自定义键盘就不难。 1. 默认键盘 新建工程默认生成两个键盘:全键盘和数字键盘。文本输入支持 GBK、UTF8 编码。 不同型号、不同旋转角度,默认生成的键盘布局不一样。2.4寸、2.8寸小尺寸屏幕默认只生成数字键盘。切换型号/角度后,在【工程】→【键盘】里点【恢复默认键盘】重新生成。 2. 键盘管理 HMI 最多支持 10 个键盘,在【工程】→【键盘】设置:启用:勾选后可用键盘画面:启用后选择对应画面作为键盘画面;键盘画面可以复用(如数字键盘和密码键盘共用一个画面)恢复默认键盘:按屏幕分辨率恢复默认键盘画面 100_digitxxxxxx、101_digitxxxxxx ⚠️ 如果把密码键盘删除,安全等级下将无法输入密码。删键盘前想清楚。 3. 键盘系统寄存器(自定义键盘的核心) 寄存器作用SysKBMax / SysKBMin数字键盘显示范围的最大值/最小值(跟随数值控件配置的范围)SysKBSelect键盘模式:0=英文,1=数字符号,2=中文SysKBPinyin / SysKBHanzi中文输入的拼音、预选汉字显示SysKBText显示键盘录入的数据 3.1 SysKBMax/Min:范围限制显示数值控件配置了范围(如 0~100),弹出数字键盘会显示限定的最大/最小值。键盘画面上用两个数值控件显示 SysKBMin/SysKBMax,用 SysKBStatus.1 控制显示/隐藏(1=配置了范围限定)。 3.2 SysKBSelect:模式切换0=英文(a~z、A~Z)、1=数字符号(!?#123)、2=中文。键盘上放递增/递减按钮写 SysKBSelect(0~2 循环),配 3 个多状态指示灯显示当前模式。 3.3 SysKBPinyin/SysKBHanzi:中文输入输入 「guang」,SysKBHanzi 预选汉字显示「光 广 逛 咣...」。键盘画面加两个文本控件分别关联这两个寄存器。 3.4 SysKBText:录入数据显示显示键盘录入的内容,键盘画面加一个文本控件关联它。 4. 虚拟按键(键盘的「键」) 功能按钮的用途设为虚拟按键,就变成键盘上的键。支持的按键类型:类型说明类型说明字符0~9、a~z、可视化字符等Left预选汉字向左翻页切换键盘切换到目标键盘Right预选汉字向右翻页Enter回车Shitf字符切换(大小写/符号)Space空格ESC退出Clear删除所有输入Delete删除单个字符 字符键最多填 4 个字符,多字符切换靠 Shitf 或 SysKBSelect:填入 "q1":SysKBSelect=0(字母)时键码为 q;SysKBSelect=1(字符)时键码为 1填入 "a~^":字母模式下 Shitf=0 录 a、Shitf=1 录 A;字符模式下 Shitf=0 录 ~、Shitf=1 录 ^ 还有 图库状态(关联弹起/按下图库)、裁剪、使用文字(把字符栏内容直接显示出来)等属性。 5. 中文输入:Left/Right 翻页 中文键盘输入 「da」,预选汉字显示「大 打 达 答 搭...」。键盘画面上加两个功能按钮(虚拟按键→Left/Right)在预选汉字左右翻页。 6. 键盘切换 键盘画面可以用虚拟按键(类型=切换键盘)互相切换。例程中建 3 个画面 「105_abc」、「106_number」、「107_char」,用切换按键在各键盘间跳转。 自定义键盘调试顺序:先确认系统寄存器值对不对(模式/范围/录入),再查虚拟按键类型和字符栏——90% 的键盘问题出在「键的类型选错」或「字符栏填错」。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)资源介绍「键盘」,版权归大彩科技所有。 --- ### 519. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 VisualHMI 的多语言方案很省事:一套 UI,多语言词条,一个寄存器切换。不用给每种语言做一套画面。这篇把字库、文字标签、字符串 ID 维护讲透——最后那节"字符串 ID 维护"是设备出货后最容易踩的坑,务必看完。 1. 多语言怎么工作 核心思路:UI 上的文字不放死,用控件引用语言词条;工程属性里配置语言数(最大 30 种);运行时设置多语言系统寄存器,一键切换所有词条。 多语言功能取决于字库(*.ttf 矢量字库)里是否含有该字符。字库不含这个字,切换到该语言就显示方块/空白。系统自带的字库都是免费字库,自己添加字库时注意版权。 2. 字库管理 2.1 系统自带字库软件自带 5 个字库:字库内容DroidSans.ttf只含字母数字DS-DIGIB.ttf数码管风格,大写字母、数字fangsong_GB2312.ttf仿宋,支持中英文songti_GB2312.ttf宋体,支持中英文wqyMicroHeiMono.ttf文泉默认字库,支持中/繁/英/俄/法/日/韩/葡/西/德/意,多语言首选 2.2 添加字库字库设置里点【添加】→ 选 ttf 文件。新字库会在工程目录下新建 font 文件夹并放入该文件。 添加的字库文件命名:字母、数字、-、_ 组成,长度不超过 32 个字符。 2.3 替换字库控件显示的字库和索引关联。把 Arabic.ttf 替换成 wqyMicroHeiMono:把 Arabic 索引改为 0,取消勾选 wqy 即可。 新加的字库替换原字库后,需要保存工程、重新打开,编辑界面才会刷新显示。 2.4 删除字库系统自带字库不支持删除;用户添加的字库可以删。 2.5 裁剪字库(省 Flash 空间)VisualHMI 集成字库裁剪工具:【工程】→【字库裁剪】。选择要裁剪的字库 → 加载需要保留的字符集合(txt 必须 UTF-8 编码)→ 开始裁剪,生成 xxx_cut.ttf。 新版还支持工程字符裁剪:编译生成下载文件时自动裁剪,有四种模式:模式效果禁用不裁剪,保留完整字库工程字符只保留工程用到的字符工程字符+GB2312工程字符 + GB2312 编码全部字符工程字符+GBK工程字符 + GBK 编码全部字符 ⚠️ 裁剪的坑:串口动态接收的文本、LUA 脚本运行时设置的字符串,不在裁剪字符集里,不会被自动纳入裁剪后的字库,运行时可能显示乱码/方块。用裁剪功能前,把所有可能动态显示的字符显式加进保留字符集。 3. 文字标签(多语言的正确打开方式) 文字标签 = 一个词条容器,含所有语言的译文。控件引用同一个文字标签,改一处、全语言生效,不用重复写文字。 菜单栏【文字标签】打开管理窗口,支持新增、修改、删除、导出、导入。 3.1 增加文字标签点【新增】,默认名 text1,可改成有含义的名字(如"温度设定"),把各语言译文填到对应语言列。 3.2 EXCEL 编辑点【EXCEL 编辑】,标签以表格形式打开,直接编辑,保存关闭后回到文字标签窗口确认即可。 3.3 导出 / 导入支持导出 xml、csv、xlsx 修改,再导入。适合批量翻译和多人协作。 4. 字符串 ID 维护(出货后最重要,必看) 编译时生成一张最终字符串表。字符串来源:文字标签表里的文字:用户主动维护,每条有固定 ID,用 $ 引用(如 $温度设定)直接填写的文字:控件里直接写的文字,编译时自动加入字符串表末尾(无固定 ID)告警配置的字符串:告警内容,用 $ 引用则用固定 ID,直接填写则自动追加 关键:历史记录不保存文字,只保存字符串 ID:历史记录 = 时间 + 字符串ID 操作记录 = 时间 + 操作字符串ID + 值变化 告警记录 = 告警时间 + 告警字符串ID 显示历史时,设备用保存的 ID 到当前版本的字符串表里查文字。所以字符串表是历史数据的解释字典——一旦发布,ID 的含义不能变。 ⚠️ 例子:原版本「150 = 设定温度修改」,设备记录一条操作记录「2026-05-11 10:20:30 设定温度修改 20 -> 25」。如果后续工程把 150 改成「风机模式修改」,同一条记录会显示成「风机模式修改 20 -> 25」——含义全错。 5. 字符串 ID 维护规则(照做不翻车) 会被设备保存的文字必须用固定文字标签 ID:操作记录内容、参数描述、历史记录引用的文字、告警内容已发布使用过的 ID 不能删除:即使这条以后不用了,也要保留原 ID已发布的 ID 不能复用:旧 ID 不能分配给新的内容已发布的 ID 不能改含义:可修正错别字、补翻译,但不能把"设定温度修改"改成"风机模式修改"不再使用的 ID 保留占位:标记为废弃/Reserved/Deprecated,但不要删除新增内容只用新 ID:从没用过的 ID 往后追加不要依赖自动追加的字符串 ID:直接填写的文字只适合当前版本界面显示,不适合作为历史记录引用依据升级前检查字符串表兼容性:对比新旧版本,确认已发布 ID 含义没变建立字符串 ID 维护表:记录每个 ID 的用途、中英文、启用状态、首次使用版本 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)资源介绍「多语言(字库、文字标签)」,版权归大彩科技所有。 --- ### 520. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 图库是 VisualHMI 里所有控件图片的总仓库。位状态灯、多状态指示灯、动画控件、按钮这些要换图标,都在图库里管。这篇把图库管理和"多帧图标"的概念讲清楚——多帧是 HMI 和普通组态软件最大的不同点之一。 1. 图库是什么 VisualHMI 所有控件使用的图片都在菜单【工程】→【图库】中管理,分两类:工程图库:用户自定义的图片,随工程保存系统图库:系统自带的常用按钮、开关、进度条、键盘等图片 图库支持 bmp、svg、png、jpg 四种格式。 图库界面分四个区域:区域1:添加、删除图标索引区域2:图标索引列表(每个索引可以含多帧)区域3:预览选中索引的每一帧区域4:编辑帧——插入、删除、导出、修改(替换)、复制、移动 目前支持添加图库的控件共 15 种,具体图片属性在控件属性栏查看。 2. 关键概念:图标索引 与 帧 图标索引是一个"图标的容器",一个索引里可以装多帧图片。多帧图标常用于:多状态指示灯:不同状态显示不同帧(如运行=绿色、停止=灰色、故障=红色)动画控件:按顺序循环播放帧,形成动画 显示格式如"1-帧数(8)":1 是索引号,8 是该索引下 8 帧。 3. 创建图标 3.1 添加多帧图标点【+】生成一个"0-帧数(0)"的图标索引 → 点【添加帧】→ 选择图片文件。如添加 8 张图,索引 0 就有 8 帧。 3.2 批量添加(单帧图标)点【批量添加】→ 选择多个 UI 图片文件 → 每个文件生成一个独立索引(1~8)。适合一批按钮图标一次性导入。 4. 帧的编辑操作 添加帧:选中索引 → 新增帧数 → 选图,新帧追加在末尾插入帧:选中某一帧 → 新增帧数,新帧插在该帧后面修改/替换帧:选中帧 → 修改 → 选新文件,原位替换删除帧:删除单帧,或全部删除复制帧:选中帧 → 复制 → 粘贴,生成相同帧移动帧:选中帧 → 上移/下移,调整顺序(影响动画/多状态的显示顺序)导出帧:选中帧 → 导出,保存为图片文件 删除所有帧后,图标显示为「x-帧数(0)」。不要强制删除空帧图标——图标库顺序会乱、显示错位。用不到的空索引留着或按正常流程删。 5. 多帧图标的调试提示 多状态指示灯的状态数和帧数要对上:3 个状态就准备 3 帧,帧不够状态会显示空白动画控件的播放顺序 = 帧顺序,想倒放就把帧顺序倒过来替换帧后如果画面没刷新,重新编译一次 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)资源介绍「图库」,版权归大彩科技所有。 --- ### 521. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 联调出问题,先看版本——屏固件版本、VisualHMI 软件版本、屏型号。版本不匹配是「功能没反应」「控件异常」这类玄学问题的头号原因。技术客服问你的第一句往往就是「你固件几版的」,答不上来排查就没法往下走。 1. 查看 VisualHMI 软件版本 菜单【工程】→【帮助】→【关于】,弹窗显示 IDE 版本号。和厂商确认问题时,软件版本号 + 屏固件版本号要一起报。 2. 查看屏固件版本(三条路径) 方式操作适用场景背面标签看实体屏背面标签,型号和固件版本印在上面(如 V127)屏还没装机/能摸到屏联机获取屏串口设 8N1,VisualHMI 联机成功后右下角显示版本号电脑能连屏寄存器查看数值控件关联 SysFWVer(LW0155),编译下载到屏上显示屏已装机,通过屏 UI 看 LW0155 是系统固件版本寄存器。系统区(LW 地址小于 0x1000)不要乱改,但只读显示没问题——这比拆屏看标签方便,尤其屏已经装进设备里的时候。 3. 为什么必须核对版本 不同版本的 VisualHMI 软件编出来的工程,对屏固件有最低版本要求。固件太老,工程里的新特性(某些控件、LUA 接口)根本跑不起来——表现就是「明明配了却不生效」「控件显示异常」。遇到这类怪问题,按顺序排查:屏固件版本是否 ≥ 工程要求版本(不够就去升固件,见「SD卡升级固件」)VisualHMI 软件版本与固件是否匹配(软件太老也可能不支持新固件特性)工程配置本身(协议、地址、机型)是否正确 4. 版本相关的典型现象对照 控件加了但屏上不显示 → 先查固件版本,再看控件属性LUA 脚本报错但语法没错 → 接口可能要求新固件软件里选不到屏型号 → 软件版本太旧,升级 VisualHMI 一句话:版本排查顺序是 固件 → 软件 → 配置。很多「bug」其实是固件版本没到,升一下就好,别在配置上瞎折腾半天。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「查看版本」,版权归大彩科技所有。 --- ### 522. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 虚拟屏是 VisualHMI 的招牌功能:不接真机,在电脑上把 UI 跑起来,再用虚拟串口和真实 PLC / Modbus 仿真软件联调。这篇把三种联调玩法讲透——尤其是做 Modbus 开发最常用的那套。 1. 先装虚拟串口对(VSPD) 虚拟屏和 VisualHMI 软件通过一对虚拟串口通信。用 VSPD(Virtual Serial Port Driver)创建一对关联串口(如 COM8 ↔ COM9),虚拟屏和软件各占一头。 虚拟串口不关心波特率/数据位/停止位/校验,只要是成对的一对就能通。编号别和实体串口冲突,尽量在 10 以内,否则会打架。 2. VisualHMI 和虚拟屏互调(DCBUS / XGUS) 这套玩法适合 DCBUS、XGUS 原生协议,步骤:运行虚拟屏,选虚拟串口 COM8,打开串口VisualHMI 软件选虚拟串口 COM9,点联机打开指令助手,协议选 DCBUS,配帧头 0xAA55、开 CRC、站号 0写变量:地址 1000、数据 0003;系统寄存器 0x0100 切画面写 0001 → 虚拟屏切到画面 1 XGUSII 模式切画面的系统寄存器是 0084(不是 DCBUS 的 0100);XGUS 帧头是 0x5AA5。两个协议的帧头/切画寄存器不一样,按你工程实际协议填。 3. 虚拟屏 + 第三方 PLC 模拟器(Modbus 最常用) 做 Modbus 项目,这套是你日常 80% 的调试姿势:屏当主机:用 Modbus Slave(模拟从机)连虚拟串口另一头,屏去读 4x0000 保持寄存器,Slave 里改值,屏上实时变屏当从机:用 Modbus Poll(模拟主机)去轮询屏,验证屏回的帧对不对 屏当主站、站号 1、读写 4x0000 的验证流程:Modbus Slave 里设好 4x0000 = 某值 → 虚拟屏挂上去 → 数值控件绑 4x0000 → 不用一根线就能看到「PLC」数据上屏。比接真 PLC 快十倍。 4. 虚拟屏 + 真实 PLC 设备 把 PLC 串口接到电脑(RS232 用 USB 转 232、RS485 用 USB 转 485、TTL 用 USB 转 TTL),虚拟屏选对应的物理串口和波特率,打开串口即可直接和 PLC 数据交互。少了反复下载屏幕程序的环节,调试效率明显提升。 三种场景怎么选:只调 UI/协议 → 虚拟屏+虚拟串口;调 Modbus 逻辑 → 虚拟屏+Modbus Slave/Poll;真机联调 → 虚拟屏+物理串口接 PLC。前两种不碰硬件,先把逻辑跑通。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「虚拟屏调试」,版权归大彩科技所有。 --- ### 523. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 固件是屏幕的底层系统,大彩会不断迭代优化、增加新功能。固件太旧会导致:工程里用了新特性却跑不起来、某些控件异常、LUA 新接口不可用。这篇讲怎么升级,以及最容易踩的命名坑。 1. 什么情况需要升级固件 工程里使用了较新的控件/LUA 接口,编译提示"固件版本过低"或运行异常屏出现已知 bug,厂商发布修复固件M 系列屏出厂默认不支持 VisualHMI,需要先升固件才能用 VisualHMI 开发 2. 获取固件并改名 屏固件比较旧时,联系大彩销售或技术人员获取新固件。只下载升级一次即可(固件升级是整体替换,不像工程要反复下)。以 HMI80480M070_1111_0C 为例,固件原文件名可能是 HMI80480M070_HMI.zlib。必须改名为 firmware.zlib,然后拷贝到 SD 卡根目录。 ⚠️ 不要命名为 “firmware.zlib.zlib”。多套一层后缀,屏识别不到固件,升级会失败。这是最常见的低级错误,改完名检查一遍后缀。 3. 下载流程 下载流程和下载工程完全一致:把 firmware.zlib 放到 SD 卡根目录屏幕断电,插入 SD 卡上电,屏幕自动进入升级界面,等待完成提示完成后自动加载,拔卡 4. 固件和工程一起下载 固件可以和工程一起下载:都放在 SD 卡根目录(firmware.zlib + private 文件夹),上电后一起更新,一次搞定。 5. 升级后的注意事项 升完固件,之前编的工程建议重新编译下载一次,避免新旧版本不兼容确认新固件和你用的 VisualHMI 软件版本匹配(看版本方法见「查看版本」篇)固件升级过程中不要断电,变砖风险主要来自中途断电 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「SD卡升级固件」,版权归大彩科技所有。 --- ### 524. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口下载适合单台调试:电脑用串口线直连屏,不拔卡、不插卡,点几下就烧录完。相比 SD 卡下载,串口下载不用准备 SD 卡,改完就下,适合开发阶段反复烧。前提是屏的串口参数满足联机条件——必须是 8N1。 0. 串口下载 vs SD 卡下载,怎么选 对比项串口下载SD 卡下载需要硬件串口线(USB转232/485)SD 卡联机条件屏串口必须是 8N1无(断电插卡上电)适用场景开发调试、单台升级量产、现场无电脑速度受波特率影响SD 卡读写,较快 简单说:自己调试用串口,给客户/量产用 SD 卡。 1. 联机 【工程】→【串口调试】,选择屏幕连接电脑对应的物理串口,点【联机】。联机成功后才能编译和下载。 实体屏串口设置必须是 8N1(8 数据位、无校验、1 停止位)才支持 VisualHMI 联机升级。屏上如果不是 8N1,先改屏的串口参数再联机。联机失败先查:串口号选对了吗?线是交叉线还是直连线?屏是 8N1 吗? 2. 编译 联机后点【工程】→【编译】,编译结果正常再进行下载。有错误先修,编译不通过不会进入下载。 3. 下载 编译通过后,【工程】→【量产向导】,弹出对话框下拉选择提升比特率,点【串口下载】。 波特率选择建议:RS485 建议 19200,RS232 建议 115200。速率越高下载越快,但要保证线路质量,现场干扰大就降一档。 ⚠️ 升级过程中屏幕会锁死:不能点击、也不能和 PLC 串口业务通讯。升级完成后自动恢复,别在中途断电拔线。另外,用户主板也支持升级屏幕——相关升级协议见「串口升级工程协议」文档。 4. 串口下载常见问题排查 联机失败:串口号不对 / 屏不是 8N1 / USB 转串口驱动没装好 / 波特率选错下载卡住不动:中途拔过线?重新断电上电再试;线路干扰换低波特率下载成功但屏黑屏:工程里选了错误的机型(分辨率和实体屏不一致)下载成功但通讯不上 PLC:屏的协议/波特率和 PLC 不一致,回【工程属性】核对 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「串口下载工程」,版权归大彩科技所有。 --- ### 525. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 SD 卡下载是量产和现场升级最常用的方式:不用电脑连着屏,把资源包拷进 SD 卡,插卡上电自动烧录。这篇把全流程和「增量升级」讲清楚。 1. 编辑 / 编译 在工程里改好画面和逻辑,点【工程】→【编译】。编译结果正常会显示成功提示;有错误的话编辑区会列出错误信息,先修完再继续。 2. 生成资源包(量产向导) 编译通过后,菜单【工程】→【量产向导】,弹出对话框点【SD卡下载】,生成下载资源包。 生成的结果里:private:真正的下载资源包,需要拷到 SD 卡两个 TXT 文件(《!!!Copy [private] directory to the root directory of SD Card.txt》《!!!直接复制private文件夹到SD卡根目录.txt》):纯提示用,没有实际意义,不影响升级ota.bin:OTA 打包文件,需要配合脚本做 OTA 升级时才用(见 LUA 教程「OTA 升级」) 把 private 文件夹整个拷到 SD 卡根目录,不能嵌套子文件夹。拷成 SD/private 而不是 SD/xxx/private,否则屏找不到包。 3. 下载(插卡上电) 屏幕断电 → 插入含资源包的 SD 卡 → 上电,屏幕自动进入升级界面,显示下载进度。显示「updata finished!」表示下载完成,屏会自动加载工程进入 UI 画面,此时可以拔掉 SD 卡。 不同工程下载显示的信息不一样:比如工程里有 1.mp3 音频,下载过程会显示 “write 3:/sound/1.mp3 (100%) ...”,这是正常的,别以为卡住了。 4. 增量升级(只更新改动的部分) 上面生成的是全量下载(整个工程重新烧)。调试阶段每次都全量太慢,VisualHMI 支持增量升级——只下载修改的部分。点【量产向导】,按你改了什么勾选:改了工程配置(如挪动控件位置、改工程属性)→ 勾选工程配置改了 LUA 脚本 → 勾选脚本文件 点【SD卡生成包】,这次会多出一个 noformat.txt 文件——它的作用是告诉屏「不要格式化,只替换 private 里打包的文件」。这个文件要一并复制到 SD 卡根目录,下载流程和全量一致。 增量升级三连问:勾对了选项吗?(改配置勾工程配置,改脚本勾脚本文件);noformat.txt 拷了吗?(漏拷会变成全量格式化,虽不影响功能但慢);SD 卡根目录吗?(嵌套路径不识别)。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「SD卡下载工程」,版权归大彩科技所有。 --- ### 526. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 这篇完整走一遍:从新建工程到虚拟屏预览、再到下载。跟着做一遍,你对 VisualHMI 的整个开发流程就有底了。以 HMI80480M070、Modbus RTU 与 PLC 通讯为例。 1. 创建项目 菜单【工程】→【新建】(或 Ctrl+N)。选择工程存储路径;根据实体屏选对应的分辨率和尺寸——实体屏是 HMI80480M070,就选 800×480 7寸。 VisualHMI 最大支持 999 个画面。新建工程默认自带两个键盘画面:全键盘画面101(800×480)和小键盘画面100(320×240)。 不同型号生成的键盘样式不一样;键盘也可自定义(见「自定义键盘」教程)。新建工程先别删默认键盘画面,后续输入控件要用。 2. 协议配置 【工程】→【工程属性】,右侧配置串口和协议。默认是 DCBUS 协议。假设 PLC 串口为 115200 波特率、7 数据位、偶校验、1 停止位、Modbus-RTU,屏幕为主机模式,按下图配置。 注意:如果走 Modbus,要确认 PLC 侧串口参数和屏完全一致;如果走 DCBUS/XGUS,只支持无校验+1停止位。 3. 新建画面 画面区右键画面 ID → 新建,默认生成纯色画面。右侧【画面属性】里背景可配置为:纯色、图片、透明、画面。配图片就选一张背景图。 4. 布局控件(绑定 PLC 寄存器) 以显示 Modbus 保持寄存器 0x0000 的值为例:添加【数值】控件到画面控件属性栏点"读取地址"——可以手动输入 4x0000,也可以选地址标签位置选:PLC 设备;数据类型选:4x(保持寄存器);16进制地址填:0000 这样控件就绑定到 PLC 保持寄存器 4x0000,屏会自动轮询读取并显示。 5. 虚拟屏预览 点击【工程】→【运行】(编译运行),VisualHMI 会先编译再弹出虚拟屏。虚拟屏的指令窗口会实时显示发出的指令——比如访问 4x0000 寄存器的读帧,可以直接验证协议对不对。 虚拟屏指令窗口是调试利器:能看到屏实际发出的每一帧,比对帧格式能快速定位协议配置错误(地址、功能码、CRC)。 6. 下载到实体屏 先编译通过,再【工程】→【量产向导】:串口下载(联机条件:屏串口 8N1,RS485 建议 19200 / RS232 建议 115200)或 SD 卡下载(生成资源包拷 SD 卡根目录)。 两种下载的详细步骤分别见「SD 卡下载工程」和「串口下载工程」两篇。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「创建工程」,版权归大彩科技所有。 --- ### 527. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 VisualHMI 是大彩自主开发的串口屏开发软件,内嵌"虚拟串口屏"(可以在电脑上模拟实体屏运行)。这篇把界面各区域、工程设置、地址范围讲透——地址范围是后面所有开发的基础,务必看懂。 1. 软件安装 按提示选择安装目录,一路 Next 完成安装。安装包通常随开发资料提供,也可在官网下载。 2. 打开软件界面 安装完成后打开已有出厂工程,界面如下。整体分:顶部菜单栏、左侧工程/资源区、中间设计区、右侧属性/画面区、底部调试区。 3. 工程区域 【工程】菜单负责项目管理:新建、打开、保存、另存为等。新建工程时要选分辨率和尺寸(对应实体屏型号)。 4. 工程设置(重点) 【工程】→【工程属性】打开系统设置面板,核心项如下: 设置项说明HMI 机型选择你的屏型号(如 HMI80480M070)Flash 大小默认 128Mbit,一般不用改启动画面上电自动加载的第一个画面屏幕旋转0°/90°/180°/270°;800×480 的屏 0°180° 出 800×480,90°270° 出 480×800多语言项数最大支持 30 种语言自动待机无触摸空闲到设定时间后自动节能波特率9600~921600bps,数据位 7~8,校验 奇/偶/无,停止位 1/2协议DCBUS、XGUS、Modbus(主/从)、FX2N、FX3U、台达、信捷、西门子 PPI 等安全登录配置权限管理,见「安全登录」教程 DCBUS / XGUS 协议只支持无校验 + 1 个停止位。如果你的 PLC 是 7 数据位/偶校验,要么用 Modbus,要么改 PLC 串口参数——这是现场最容易卡住的地方。 5. 地址范围(重中之重) VisualHMI 里有两套地址体系:HMI 本机变量和 PLC 设备地址。很多新手把两套混在一起,导致控件不刷新,先分清: HMI 本机(LW / RW 变量)类型地址范围(16进制)说明系统变量LW0100 ~ LW0FFF系统定义,如 SysFWVer=LW0155;其余保留勿用用户变量LW1000 ~ LWFFFF用户自由使用,可批量导入导出、加地址标签掉电存储变量RW0000 ~ RW7FFF断电不丢失,存参数/配方 PLC 设备(以 Modbus 为例)类型地址范围(16进制)对应 Modbus 区线圈0x0000 ~ 0xFFFF0x 线圈(可读写位)离散1x0000 ~ 1xFFFF1x 离散输入(只读位)输入3x0000 ~ 3xFFFF3x 输入寄存器(只读字)保持4x0000 ~ 4xFFFF4x 保持寄存器(可读写字) 控件里"读取地址"的写法就是 4x0000 这种:4x 表示 Modbus 保持寄存器区,0000 是 16 进制地址。选好 PLC 设备位置、数据类型、地址,控件就绑定了。 6. 编译 / 下载区 编译:检查工程错误,有错在编辑区显示错误信息编译运行:弹出虚拟屏,1:1 还原实体屏效果,可配合虚拟串口和软件联调量产向导:生成下载资源包,支持 SD 卡 / U 盘 / 串口三种方式升级 7. 资源区(图库/字库/键盘/声音/标签) 图库:除画面背景外所有图片资源都放这里字库:矢量字体任意大小无锯齿;多语言依赖字库是否含对应字符键盘:自定义键盘,最大 10 个声音:支持 wav/mp3,可做按键音、开机音乐、提示音文字标签:把多语言词条集中管理,控件引用标签即可,改词条一处生效地址标签:给 LW/RW/PLC 地址起有意义的名字(如"温度设定"),批量导入导出 8. 其它功能区 资料采样:同一时刻把不同寄存器数据形成一条记录,供数据记录控件/曲线显示告警设置:寄存器数值变化触发异常提示,支持告警/历史告警/告警条操作记录:用户操作控件的行为记录成表格配方设置:不同产品/不同工序用不同参数组,一键切换分期设置:设备分期付款场景,到期弹密码画面,输入当期密码才能继续用调试区:选串口与实体屏或虚拟屏联机调试、下载工具区:LUA 脚本编程、字库裁剪入口控件区:30+ 种组态控件(位状态灯、数值、文本、滑动条、仪表、二维码、视频等)布局区:控件对齐、间距、层叠、锁定、多语言预览视图区:缩放画面、显示控件地址/注释/ID/触控画面区:右侧,最多 999 个画面;新建工程默认含全键盘画面101(800×480)和小键盘画面100(320×240) 新手最容易忽略的:画面 100/101 是系统键盘,别删;地址标签用起来能省一大半调试时间;工程属性里的协议和波特率必须和设备实际一致,否则联机黑屏。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「软件界面」,版权归大彩科技所有。 --- ### 528. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 拿到一块大彩串口屏,第一件事是分清它属于哪个开发平台、哪个系列——这直接决定你能不能直接用 VisualHMI 开发、固件要不要先升级。这篇把型号怎么认讲清楚。 1. 支持 VisualHMI 的平台:HMI 系列 与 M 系列(医用级) 目前支持 VisualHMI 平台开发的系列有两类:HMI 系列和 M 系列(医用级)。医用级不是"更高级",而是指认证和用料面向医疗设备场景(电气安全、EMC 等级更高),开发方式一样。 2. M 系列必须先升级固件(重点坑) M 系列出厂默认不支持 VisualHMI,需要先升级固件才能用 VisualHMI 开发。也就是说,你手里如果是 M 系列屏,别急着建工程——先找业务或技术人员要对应固件升上去,否则软件里可能选不到型号或联机异常。 买屏之前先确认:你的屏是 HMI 系列还是 M 系列?固件版本够不够?M 系列默认不带 VisualHMI 支持,升固件要联系厂商,别等到工程做完才发现屏不认。 3. 型号命名怎么看(以 HMI80480M070 为例)注:以下拆解按大彩常见命名规律解读,具体以产品规格书为准。 型号本身就把关键信息写全了,拆开读: 型号段含义本例HMI开发平台HMI 平台80480分辨率800×480M系列M 系列(医用级)070屏幕尺寸7.0 英寸 所以 HMI80480M070 = HMI 平台、800×480、M 系列、7 寸屏。后缀如 _1111_0C 一般是批次/版本号,开发时按主型号选机型即可。 4. 选型时顺便确认的几件事 分辨率与画面方向:如 7 寸 800×480,屏幕支持 0°/90°/180°/270° 旋转,0°和 180° 出 800×480,90°和 270° 出 480×800——UI 要按实际使用方向出图串口电平:RS232 / RS485 / TTL 版本不同,接线和下载方式不一样固件版本:M 系列默认不支持 VisualHMI,确认是否需要升级 一句话总结:HMI 系列到手就能用 VisualHMI;M 系列先升固件。拿不准就拍屏背面标签给厂商确认。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「型号认识」,版权归大彩科技所有。 --- ### 529. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 前面讲了屏在工程里配 Modbus 主从,但碰到"一主多从 + 复杂逻辑"(比如读两个从机的电量求和、按条件写寄存器、批量写线圈),光靠画面绑变量不够,得用 LUA 脚本接管通信。这篇把 Modbus 相关的 LUA API 讲透,代码都是大彩文档里的真实例程,我加了工程师视角的注解和踩坑提示。 ⚠️ 适用范围: HMI&M&Dx 系列。示例是 Modbus 两个从站,站号 10 和 20,逻辑对 FX2N/FX3U 主从同样适用。 一、核心通信 API 1.1 start_read —— 后台自动轮询(最常用) 主机模式下周期性读从机寄存器的调度函数。调用后系统把它加进通信队列,每个周期自动发请求,返回数据写进 HMI 内存镜像,你用 get_uint16/get_float 直接读缓存,没有通信延迟。 start_read(index, vtype, addr, quantity, cycle, cycle_run, mode) 参数类型说明 indexnumber任务索引 0~127,stop_read 时用 vtypenumber数据类型 VT_3x / VT_4x 等 addrnumber寄存器地址 quantitynumber读取数量 1~120 cyclenumber轮询周期倍数,0=每周期都读 cycle_runnumber周期内第几次执行(0-based,需 < cycle) modenumber0=持续读(默认) / 1=仅读一次 💡 调度精髓: cycle/cycle_run 用来分高低频。高频变量(速度、温度)cycle=0 每周期读;低频变量(累计量、状态字)cycle=5, cycle_run=4 每 5 周期读一次,降总线负载。例: start_read(0, VT_4x, 0x1000, 10) → 每周期读 4x1000~1009 start_read(1, VT_4x, 0x2000, 10, 3, 2) → 每 3 周期、第 3 个周期读 4x2000~2009 1.2 其它管理函数 stop_read(index):停单个轮询任务,缓存保留最后一次值 stop_all_read():一键停全部,适合复位/急停 set_auto_read(en):1=启用画面绑定变量自动读(默认),0=只靠脚本 start_read 接管,适合高带宽场景去冗余 1.3 select_slave —— 切换从站(关键) 多从机下,select_slave(slave_id) 临时指定后续 get_xxx/set_xxx 访问哪个从机。注意 slave_id 是从机列表下标,不是 Modbus 站号! 术语含义示例 从机索引 slave_idHMI 内部列表下标 0,1,20 = 第一个从机 Modbus 站号设备物理地址10, 33 ⚠️ 最容易错的点: slave_id=0 对应站号 10,slave_id=1 对应站号 33,这个映射在工程配置里定。脚本里填错下标就读到别的从机去了,查半天以为是协议问题。 二、LUA 读寄存器(带在线判断) 读之前两件事不能省:判断从机在线 + 选对从站。在线状态存在系统变量 VT_LW 0x01A3 的对应位。 -- 读保持寄存器 4x function mb_read_reg_03(slave, addr) local onlineState = get_uint16(VT_LW, 0x01A3) -- 从机在线状态字 if ((onlineState >> slave) & 0x01) == 0x01 then -- 该从机在线 select_slave(slave) -- 切到这个从机 return get_uint16(VT_4x, addr) -- 读缓存 else return false end end -- 读两个从机电量求和,写回 LW 区 function on_run(screen) local Energy1 = mb_read_reg_03(0, 0x0000) local Energy2 = mb_read_reg_03(1, 0x0000) if Energy1 ~= false and Energy2 ~= false then set_uint16(VT_LW, 0x1000, Energy1 + Energy2) end end 三、LUA 写寄存器 -- 写单个保持寄存器 0x06 function mb_write_reg_06(slave, addr, value) local onlineState = get_uint16(VT_LW, 0x01A3) if ((onlineState >> slave) & 0x01) == 0x01 then feed_dog() -- 喂狗,防脚本卡死看门狗复位 select_slave(slave) set_uint16(VT_4x, addr, value) return true else return false end end ⚠️ 重点:写之前务必 feed_dog()。 LUA 脚本跑在屏的实时任务里,长时间不喂狗会被看门狗当死循环干掉,屏重启。凡是循环或耗时逻辑,间隔里加 feed_dog。 一个称重校准的实例(三种校准模式),展示 on_update 回调里根据 LW 变量做分支写: function on_update(slave, vtype, addr) if vtype == VT_LW and addr == 0x1004 then local mode = get_uint16(VT_LW, 0x1003) if mode == 0 then mb_write_reg_06(0, 0x1002, 57) -- 零点校准 elseif mode == 1 then local w = get_uint16(VT_LW, 0x1005) -- 砝码校准 mb_write_reg_06(0, 0x1002, w) elseif mode == 2 then local c = get_uint16(VT_LW, 0x1006) -- 实物校准 local s = get_uint16(VT_LW, 0x1007) if c > 0 and s > 0 then mb_write_reg_06(0, 0x1002, (s*w)//c) end end end end 四、批量写线圈(0x0F 封装) VisualHMI 批量写线圈最小单位是 16 位对齐。下面这个函数是大彩封装的(非系统 API,自己写的),演示如何把 14 个线圈值合并写入: mb_write_coil_15(slave_id, addr, coilsTb) -- slave_id: 从站索引; addr: 起始地址; coilsTb: 线圈值表 调试提示: 联机验证用 Modbus Slave 软件 + 虚拟串口对,让屏当主机、电脑当从机,实时看总电压/总电量变化。比直接上真机快得多。 本文整理自 广州大彩科技 VisualHMI 开发文档 LUA 教程「Modbus 应用」章节,代码与 API 均按原文保真,版权归大彩科技所有,此处加工程师注解与重点标注,仅供学习参考。 --- ### 530. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 这篇把 VisualHMI 支持的协议挨个过一遍,重点放在Modbus RTU 主从模式和帧格式上——因为这是和 modbus.cn 读者最贴的部分,也是调试时最容易踩坑的地方。其他 PLC 协议(FX2N/台达/信捷/永宏)配置项大同小异,文末一并列了。 ⚠️ 铁律:同一路串口只能跑一种协议。 你不能在 UART1 上既挂 Modbus 又挂 DCBUS。多协议需求得靠硬件多路串口。 一、DCBUS 协议(大彩组态协议) DCBUS 是屏和自有主板对接常用的组态协议,帧结构如下: 字段长度说明 帧头2 byte默认 0xAA55,可自定义 站号1 byte默认 0,255 为广播 长度1 byte功能码+数据+校验的总字节数 功能码1 byte0xF1 写 / 0xF2 读 地址2 byte用户区 0x0100~0xFFFF,系统区 <0x1000 数据n byte寄存器值 校验2 byteCRC16 或预留 0xCCCC CRC16 算法(大彩给的 C 参考,Modbus 同款查表法): uint16 MB_calc_crc16(uint8 *buffer, uint32 n){ uint16 crc = 0xffff; for(i = 0; i < n; i++){ crc = crc ^ buffer[i]; for(j = 0; j > 1; if(carry_flag == 1) crc = crc ^ 0xa001; } } return crc; } 写变量(0xF1)示例,向 0x1000 写 100、站号 0、不开 CRC: AA55 00 07 F1 1000 0064 CCCC ↑帧头 ↑站 ↑长度 ↑写 ↑地址 ↑值 ↑预留 站号设为 1 且开 CRC 时:AA55 01 07 F1 1000 0064 7289,屏应答 AA55 01 03 F1 E174。 读变量(0xF2)示例,读 0x1000(假设值 100): 主板请求: AA55 00 06 F2 1000 01 CCCC 屏返回: AA55 00 08 F2 1000 01 0064 CCCC 💡 调试提示: 开启"自动上传"后,你在屏上点按钮改了寄存器,屏会主动发 0xF2 帧上报给主板,不用主板去轮询。这点和 Modbus 从机主动上报不一样,DCBUS 的上报是屏→主板方向。 二、XGUS 协议 XGUS 帧头默认 0x5AA5,结构:帧头(2) + 长度(1) + 功能码(1) + 地址(2) + 数据(n) + CRC16。切换画面两种模式: 模式1: 5AA5 03 80 03 XX // XX=画面ID 模式2: 5AA5 07 82 0084 5A01 XXXX // XXXX=画面ID 三、Modbus RTU(重点) 屏支持标准 Modbus-RTU,可设主机(Master)或从机(Slave)。 3.1 主机模式 ModbusMaster 屏当主机去轮询下挂的从机(仪表、变频器、PLC)。关键配置项: 配置项含义 最多读取数单条指令读取的最大字节数 读取间隔数地址间隔小于此值可合并成一条读指令 写重试次数写失败后最大重试 超时时间等从机应答的毫秒数 间隔时间收到应答后延时多久发下一条 写寄存器命令自动(0x06 单写/0x10 多写)或全用 0x10 离线优化读取勾选后离线的从机不再发请求 从站数目默认 1,RS485 多从站界面最多配 10 个,更多用 LUA 预设字节序默认大端,浮点/长整型可重指定 支持功能码:0x01 0x02 0x03 0x04 0x05 0x06 0x0F 0x10。 ⚠️ 重点:字节序坑最多。 默认大端(AB CD),但很多设备是"大端字节序 + 大端字序"(CD AB)或反之。浮点显示错乱先查字节序,不是协议问题。用 Modbus RTU 教程 里的字节序对照表对照设。 3.2 从机模式 ModbusSlave 屏自己当一条 Modbus 从站,等上位机(PLC、网关、你的调试软件)来读。配置项: 配置项含义 从机站号本屏的 Modbus 地址 字符间隔超过该 ms 认为断帧 延时应答收到请求后延时再应答 同样支持 0x01~0x10 全套功能码。从机模式下"画面写入地址/画面取自地址"可实现屏和 PLC 画面联动。 四、PLC 协议(FX2N/FX3U/台达/信捷/永宏) 这些配置项高度一致,列核心差异: 协议寄存器寻址特点 FX2N标准模式指令短(如 02 30 31 30 30 30 30 32 03 35 36),扩展模式指令长、地址范围大 FX3U同 FX2N,标准/扩展两模式 DELTA DVPASCII 模式:STX+地址+指令+数据+LRC 校验+CR LF 信捷 XC/XD标准信捷 PLC 协议 永宏 FB标准永宏协议 所有 PLC 协议都有"与 PLC 同步画面"选项:画面变化写到指定 PLC 地址,或 PLC 某地址变值时切换画面(0xFFFF 为自动)。 本文整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)协议说明章节,帧格式与寄存器配置均按原文保真,版权归大彩科技所有,此处做重点标注重排。 --- ### 531. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 你在做设备人机界面的时候,大概率碰到过这几种情况:单片机跑不出来好看的界面、上位机触摸屏太贵、或者 PLC 自带的 HMI 不够灵活。串口屏就是为这种场景生的——一块带 MCU 和屏的模组,你只管把变量地址绑定到控件上,屏自己搞定显示和触摸,剩下的通信它底层处理。 VisualHMI 是广州大彩科技(Dacai)推出的组态式串口屏开发平台。它和市面上那种"拖几个按钮就完事"的屏不一样,核心卖点是变量驱动 + UI 与控制逻辑彻底分离:你在 PC 软件上画界面、绑变量,屏固件负责解析报文、刷新控件,你写业务只碰变量地址,不用管屏幕怎么描点。 一、它解决了什么实际问题 说人话就是:原来你要用 MCU 直接驱动 LCD,光一个曲线图、一个中文输入法就能耗掉半个月。用 VisualHMI,这些变成控件拖拽 + 几行 LUA。对工期紧的项目,这是质的差别。 痛点VisualHMI 怎么解 MCU 驱动屏,开发量大组态控件 30+ 种,拖拽即用,100% 预览还原 多语言切换麻烦一键切换,最多 30 种语言 要和 Modbus/PLC 通信原生集成 Modbus 主/从、FX2N、台达、信捷、西门子 PPI 等 要做数据记录/曲线内置历史曲线、数据记录、告警记录、操作记录 复杂逻辑下不来LUA 脚本,寄存器操作/定时器/自定义协议都能写 ⚠️ 重点:协议是分路独占的。 同一路串口(比如屏背后的 UART1)同一时间只能用一种协议。你选了 Modbus 就不能同时跑 DCBUS。多协议要上多路串口硬件。 二、支持的通信协议一览 VisualHMI 固件直接跑在 M 系列硬件上,协议栈是内置的,你只要在工程里勾选: DCBUS:大彩自家组态协议,帧头默认 0xAA55,适合和自有主板对接 XGUS:另一种组态协议,帧头默认 0x5AA5 Modbus RTU:标准协议,可设主机(Master)或从机(Slave)——这是和 modbus.cn 读者最相关的部分 FX2N / FX3U:三菱 PLC 协议 DELTA DVP:台达 PLC 信捷 XC / XD:信捷 PLC 永宏 FATEK FB:永宏 PLC ⚠️ 重点:Modbus 主从是核心。 设成主机时,屏主动轮询下挂的从机(仪表、变频器、PLC);设成从机时,屏自己就是一条 Modbus 从站,等上位机来读。一主多从(RS485 总线挂多个从站)也支持,最多 10 个从站界面可配,更多得靠 LUA。工程资料库里有真实设备的 Modbus 协议手册,配合看更顺。 三、开发流程长什么样 典型的开发链路是这样: PC 上装 VisualHMI 组态软件,新建工程、选屏型号 画画面、拖控件、把控件绑到变量地址(LW 用户区 / 系统区) 工程属性里配通信协议(比如 Modbus Master,设波特率、从站号) 写 LUA 处理复杂逻辑(读从机、算总电量、报警判断等) SD 卡或串口下载到屏 虚拟屏联机调试,用 Modbus Slave 软件模拟从机验证 后面这个专栏会按"快速入门 → 资源 → 组态控件 → 数据记录 → LUA → 其他 → FAQ"的顺序,把每一块拆开讲清楚,偏实战、少废话。下一篇先讲协议细节,尤其是 Modbus 主从那块怎么配、帧怎么组。 本文整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com),版权归大彩科技所有,此处做工程师视角重排,仅供技术学习参考。 --- ═══════════════════════════════════════════ ## 云平台接入指南 ═══════════════════════════════════════════ ### 532. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一.选择产品   1.PLC:H1u-1614MT-XP   2.卓岚串口服务器ZLAN5143 二.设置PLC通讯信息   串口:COM1   协议:MODBUS-RTU从站   波特率:115200   数据位:8位   校验位:无   停止位:1位   从站地址:1 三.PLC编程   简单例程:控制继电器次数累积 四:配置串口服务器   波特率:115200   校验位:无   数据位:8位   停止位:1位   注册包:(平台获取)   心跳包:(平台获取)   空闲:60 服务器地址(新版):iot.modbus.cn 服务器地址(旧版):cloud.modbus.cn   端口:50001 打开 卓岚 虚拟串口&设备管理器 配置软件,连上网口或串口,只需要填写以下几个部分: 第一步: 工作模式:TCP 客户端 目的IP或域名(新版):iot.modbus.cn 目的IP或域名(旧版):cloud.modbus.cn 目的端口:50001 修改配置(保存)如下图: 第二步: 点击“固件与配置” C盘新建一个"web"空文件夹,选择这个文件夹,然后点击“注册包” 注册包和心跳包"ASCII"格式都先打钩,然后填入云平台生成的设备号,心跳包间隔输入“60”秒,点击确定进行保存。 跳转页面后,点击“下载”即可。 五.配置 Modbus物联网平台读写命令 MODBUS 物联网平台 上的准备工作 在实践中,我们通常将 串口服务器 作为透传网关,用于在 Modbus 子设备和云平台之间起到消息转发作用。这里我们使用 串口服务器 的 TCP客户端 模式,准备工作只需要以下几步: 创建项目(项目管理→新增项目)。 创建设备(设备管理→设备信息→新增设备) 填写设备名称,随机生成或者手动填写设备号,在设备协议中选择ModBus RTU,定位设备所在经纬度,保存即可。(设备号复制保存备用) 具体的步骤请浏览:Modbus入门 ,通常几分钟就可以完成。   在Modbus物联网平台 点击设备管理,选择一个项目,在设备列表中选择“添加从机”,新增从设备节点: 五.配置读写指令   登陆 cloud.modbus.cn,先创建设备,之后进行读写指令的配置,配置需参考PLC寄存器列表:   读写指令配置如下; --- ### 533. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 本案例中 PLC 和 串口服务器 通讯利用的是的“透传模式”,PLC 和平台之间利用的是 MODBUS-RTU 协议进行通讯。 S7-200 通过以下两种方式支持 MODBUS-RTU 通信协议:   (1): S7-200 CPU 上的通信口 0(port0)通过指令库支持 Modbus RTU 从站模式。   (2): S7-200 CPU 上的通信口 0 和 1(port0 和 port1)通过指令库支持 Modbus RTU 主站 模式。 (注:指令库可在西门子提供的相关网站进行下载) .   本案例中用到的是第一种方式,S7-200 用作从站和 Modbus物联网平台通信。 一.选择产品:   1.PLC:S7-200CN   2.卓岚串口服务器ZLAN5143 二.设置PLC通讯信息 S7-200 通讯的举例程序如下图所示:(本页有例程下载)。   Mode:启动/停止 Modbus,1=on;0=off   Addr: Modbus 从站地址,取值 1-247   Baud:波特率,可选 1200,2400,4800,9600,19200,38400,57600,115200   Parity:奇偶校验位,0=无校验;1=奇校验;2=偶校验   Delay: 延时,附加字符间延时,缺省值为 0   MaxIQ:最大 IO 点数,一般可设置为 128.   MaxAI:最大 AI 通道数,视 PLC 的具体情况而定,一般可设置为 16 或 32.   Maxhold:最大保持寄存器区.   Holdstart:保持寄存器起始区,以&VBx 指定.   Done(网络 1 中):初始化完成标志,成功初始化后置 1.   Error(网络 1 中):初始化错误代码,0 为无错误.   Done(网络 2 中):通信时置 1,无 Modbus 通信时为 0.   Error(网络 2 中):通信错误代码,0 为无错误. Holdstart 和 MaxHold 规定的是保持寄存器的区域,保持寄存器区域的范围一定不能和 程序存储区的范围冲突,否则无法通信。 上图中指定的保持寄存器起始区的值为 1000,也 可以不指定 1000.只要设置好程序存储的区域就能成功通信,程序存储区的设定如下图所示:  在程序块中,程序储存区分配的为 1050 至 1829.因为 Holdstart 和 Maxhold 规定的区域 是 1000 至 1040(Maxhold 规定的是 VW 的个数,所以变成 VB需要乘以 2)所以程序储存 区分配为 VB1050 至 VB1829. 三.编写控制程序   写好通信程序,分配好存储区之后便可以作为从站和主站进行通信了。为了更好的展示 效果,这里编写了一些额外的控制程序,控制程序如下图所示: 四:配置串口服务器 ZLAN5143串口服务器的配置 打开 卓岚 虚拟串口&设备管理器 配置软件,连上网口或串口,只需要填写以下几个部分: 第一步: 工作模式:TCP 客户端 目的IP或域名:cloud.modbus.cn 47.104.68.157 (备用) www.wulianwang.net.cn (备用) 目的端口:50001 修改配置(保存)如下图: 第二步: 点击“固件与配置” C盘新建一个"web"空文件夹,选择这个文件夹,然后点击“注册包” 注册包和心跳包"ASCII"格式都先打钩,然后填入云平台生成的设备号,心跳包间隔输入“60”秒,点击确定进行保存。 跳转页面后,点击“下载”即可。 五.配置 Modbus物联网平台读写命令 MODBUS 物联网平台 上的准备工作 在实践中,我们通常将 串口服务器 作为透传网关,用于在 Modbus 子设备和云平台之间起到消息转发作用。这里我们使用 串口服务器 的 TCP客户端 模式,准备工作只需要以下几步: 创建项目(项目管理→新增项目)。 创建设备(设备管理→设备信息→新增设备) 填写设备名称,随机生成或者手动填写设备号,在设备协议中选择ModBus RTU,定位设备所在经纬度,保存即可。(设备号复制保存备用) 具体的步骤请浏览:Modbus入门 ,通常几分钟就可以完成。   在Modbus物联网平台 点击设备管理,选择一个项目,在设备列表中选择“添加从机”,新增从设备节点:   PLC 各个区域对应的 Modbus 地址如下:    ·00001-09999:数字量输出(线圈,可读可写    ·10001-19999:数字量输入(触点,只可读)    ·30001-39999:输入数据寄存器(通常为模拟量输入,只可读)    ·40001-49999:数据保持寄存器(可读写) 上述程序中写入寄存器的值对应的地址为 40001 和 40002,对应平台中的 03 功能码(可读写)寄存器对应为 1 和 2 数据格式依据实际情况可填写为 16 位无符号或有符号数。 --- ### 534. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、教程案例简介 本案例将通过配置NA111串口服务器接入ModBus物联网平台,使得ModBus物联网平台能采集MA01-AXCX4020设备的DI状态和控制DO输出。 二、关系图 接入ModBus物联网平台的NA111串口服务器和MA01-AXCX4020关系图: 三、串口服务器设备准备 NA111串口服务器一台; MA01-AXCX4020串口IO联网模块一台; 网线一根; RS485通讯电缆若干; 12V开关电源两个; 四、ModBus物联网平台 1、创建一个项目,在新增项目里填写相应信息后进行保存,如图所示: 2、创建设备,点击设备管理中的设备列表,进行新增设备,如图所示: 3、填写设备名称,手动填写(自定义)或者随机生成设备号SN(设备号SN进行复制备用),在设备协议中选择ModBus TCP,其他可不进行填写,然后保存即可,如图所示: 4、添加连接RS-485的MA01-AXCX4020设备,在设备列表中找到刚刚创建的串口服务器设备,然后在属性设置处,点击添加从机,如图所示: 5、弹出对话框后,点击新增从设备节点,如图所示: 6、增加一路DI,从节点名称:DI1,从设备地址:1(对应MA01-AXCX4020的设备地址),寄存器:1(对应MA01-AXCX4020的DI1的寄存器地址),从设备节点类型选择:状态类型,单位选择:打开/关闭,最后点击参数配置的图标,如图所示: 注:查询MA01-AXCX4020设备各硬件寄存器地址,在亿佰特官网(https://www.ebyte.com)的产品详情下载用户手册查询寄存器地址。 7、在弹出的参数配置的对话框中,属性种类选择:ModBus,功能码选择:02,然后点击保存,如图所示: 8、最后点击保存,这样就配置好了一路DI,如图所示: 保存之后,如图所示: 9、依次添加4路DI,只需要修改寄存器地址,如图所示: 10、增加一路DO,从节点名称:DO1,从设备地址:1(对应MA01-AXCX4020的设备地址),寄存器:1(对应MA01-AXCX4020的DO1的寄存器地址),从设备节点类型选择:开关类型,单位选择:打开/关闭,最后点击参数配置的图标,如图所示: 11、在弹出的参数配置的对话框中,属性种类选择:ModBus,功能码选择:01/05,读写方式选择:读写,然后点击保存,如图所示: 12、依次添加2路DO,只需要修改寄存器地址,如图所示: 13、这样我们就完成了MA01-AXCX4020所有数据点的配置。 五、NA111串口服务器配置 1、打开NA111串口服务器的上位机(可在亿佰特官网相应位置下载),进行网络参数配置,将网络工作模式改为:TCP客户端,目标IP/域名:cloud.ModBus.cn,目标端口:50001(ModBus物联网平台的连接参数),如图所示: 2、点击串口参数,将串口参数配置为:9600-8N1(与MA01-AXCX4020串口参数配置成一致,后面就不再讲述如何配置MA01-AXCX4020的串口参数了),如图所示: 3、点击高级参数,将心跳包模式配置为:网络心跳包,心跳周期:60秒,心跳包的自定义数据填写在云平台备份的设备号SN:5331323030373453;将注册包模式配置为:连接发送自定义注册包,注册包的自定义数据填写在云平台备份的设备号SN:5331323030373453,如图所示: 4、点击ModBus参数,将ModBus网关的简单协议转换功能打开,将TCP转RTU开启,如图所示: 5、完成所有配置后,点击保存配置,保存完成后重启设备,如图所示: 六、功能演示 1、采集DI状态:变化MA01-AXCX4020设备DI1的状态,ModBus物联网平台会通过NA111串口服务器采集到MA01-AXCX4020设备DI1的状态,如图所示: 2、控制DO输出:ModBus物联网平台下发打开指令,通过NA111串口服务器控制MA01-AXCX4020设备DO1的状态,如图所示: 自此便实现了ModBus物联网平台通过串口服务器采集MA01-AXCX4020设备的DI状态和控制DO输出。 文章出自:https://baijiahao.baidu.com/s?id=1757064560035187477&wfr=spider&for=pc --- ### 535. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工业物联网是将具有感知、监控能力的各类采集或控制传感或控制器以及泛在技术、移动通信、智能分析等技术不断融入到工业生产过程各个环节,从而大幅提高制造效率,改善产品质量,降低产品成本和资源消耗,最终实现将传统工业提升到智能化的新阶段。从应用形式上,工业物联网的应用具有实时性、自动化、嵌入式(软件)、安全性、和信息互通互联性等特点。 功能介绍 对基于PLC的工业设备,提供云端接入物联网。设备接入之后,就赋能了物联网的能力: 1,实时数据监控, 2,历史曲线监控,数据分析, 3,支持PC端,手机端APP。 4,支持启停控制,修改参数。 使用场景: 机械设备:PLC远程监控,非标机械设备,例如空压机,工业锅炉,中央空调等 水处理:水源井,加压泵站,水厂 污水:污水泵站,排水泵站 电力:变电站 环保:排污口数据 环境:冷库,药厂,实验室 农业:农业大棚 客户价值 1.不但可以远程实时查看设备数据,还可以随时下发命令,例如启停设备,修改设备参数。 2.支持PC WEB端,支持安卓苹果APP。多账号,多设备,多项目有效管理。 3.采集并存储了设备历史数据,炫目的历史数据报表,不但支持PC端,手机端也可以用。数据趋势,对比,一目了然。更有差分,聚集(最大,最小,均值,方差等),时间窗等数据分析功能。 4.对有开发能力的客户,在现有系统上,支持MQ+API进行的二次行业应用开发。例如农业,车间,水厂,地铁综合管理系统。 5.支持集成海康威视萤石云的摄像头视频到WEB端,APP端。在一个APP中同时查看设备实时数据和实时视频图像。用户自行采购海康威视的摄像头产品和萤石云费用。 新的系统和解决方案的采用有助于跟上瞬息万变的市场,并应对颠覆性技术所带来的冲击。不仅如此,工业物联网的企业在安全性、效率和利润方面都取得了重大进步。 --- ### 536. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MThings简介 MThings是一款很优秀的Modbus工具类软件,几乎囊括市面上所有对Modbus协议的需求:主从站模拟、串口、网络、曲线画面、自定义数据类型等等,可以说是解决了诸多实际痛点。不管是对电气工程师还是软件开发人员都起到很大的帮助作用,它主要解决如下问题: 模拟仿真上位机软件,支持MODBUS主机读写功能。模拟仿真Modbus设备软件,支持Modbus从机被动读写功能。支持多设备、多通道并发运行,无设备个数限制。支持持久化数据配置、无菜单设计,操作友好。支持MODBUS-RTU、MODBUS-ASCII、MODBUS-TCP。支持串口、TCP客户端、TCP服务器(可接入多客户端)、UDP单播。支持全链路报文监控、存储、分析。支持丰富的链路丢包统计方法。支持数据曲线录波,统计数据极值和均值,并可导出所有数据。支持MODBUS数据配置模板导入导出。支持多种变化数据模拟方法。支持数据二次加工,界面呈现原始真实数据。支持良好的非标协议适配。性能优异,支持接入 > 500设备节点,超20K数据点。永久免费,免安装,中文。 MThings连接Modbus物联网平台 1.准备工作 下载MThings 地址:https://wwp.lanzouy.com/mthings Modbus物联网平台上的准备工作 网址:http://cloud.modbus.cn 创建项目(项目管理→新增项目) 创建设备(设备管理→设备列表→新增设备) 填写设备名称,随机生成或者手动填写设备号,在设备协议中选择ModBus RTU,定位设备所在经纬度,保存即可。(设备号SN码复制保存备用) MThings 软件上的配置 1.新增网络链接 填写链接信息 目标域名/IP: cloud.modbus.cn 目标端口: 50001 会话秘钥: 填写创建设备时生成的设备号SN码 设备操作,添加→模拟从机→确定 (设备起始地址和设备结束地址就是从机地址,根据实际需要调整) 配置完成后我们发现连接状态已经变成“已连接”此时与Modbus云平台连接已经成功,接下来添加模拟线圈设备。 添加线圈(示例1) 例如增加4个线圈设备,数据地址0-4 点击“确定”,自动添加的4条线圈设备,如下图: Modbus物联网平台端操作 添加从机设备 添加一个线圈 配置Modbus参数 依次类推,把4个线圈全部添加 然后,在Modbus云平台上操作添加的线圈,试试状态同步和数据是否同步响应 至此已经完成了MThings连接Modbus物联网平台的线圈添加过程,数值类设备模拟是同样的道理,后续我会在这里完善一下教程,模拟设备接入云平台之后,就可以利用Modbus云平台控制设备,小度音响声控设备,公众号控制设备,查看设备状态,生成设备曲线,组态大屏,历史数据,自动化联控等功能,对于想尽快了解物联网的同学,不妨是一次很好的学习和尝试机会。 需要技术支持请联系我们!!! --- ### 537. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口服务器是用于将工业设备的串口数据转换成以太网数据的一个转换器。串口服务器可以轻松的将PLC、仪表和传感器等基于RS-232、RS-485和TTL协议的串口设备连接至以太网中,便于接入云平台,也可以让您的软件在任何地方都能通过本地局域网或互联网访问串口设备。 串口服务器在需要采集传感器数据和远程控制的场景中广泛使用,MODBUS 物联网平台的用户有相当一部分在使用 串口服务器 接入设备,通常 串口服务器 使用较多的是通过 RS485/232/422 端口连接 Modbus 从机设备,例如:开关继电器、温湿度传感器、各类气体传感器、电能表、水表、PLC、电机控制器等。 这一次我们介绍的是来自汉枫公司的 串口服务器Elfin-EE1X,它支持通过TCP、UDP方式 接入 MODBUS 物联网平台,在很多用户的物联网项目中运行非常稳定。 我们以这台 Elfin-EE1X 为例,介绍接入 MODBUS 物联网平台 的步骤。对于塔石公司的其它 串口服务器 产品,也可以用同样的方式接入。 MODBUS 物联网平台 上的准备工作 在实践中,我们通常将 串口服务器 作为透传网关,用于在 Modbus 子设备和云平台之间起到消息转发作用。这里我们使用 串口服务器 的 TCP客户端 模式,准备工作只需要以下几步: 创建项目(项目管理→新增项目)。创建设备(设备管理→设备信息→新增设备)填写设备名称,随机生成或者手动填写设备号,在设备协议中选择ModBus RTU,定位设备所在经纬度,保存即可。(设备号复制保存备用) 具体的步骤请浏览:Modbus入门 ,通常几分钟就可以完成。 Elfin-EE1X 串口服务器的配置 打开有人设备管理器 配置软件,连上网口或串口,只需要填写以下几个部分: 第一步: 工作模式:TCP Client远程服务器地址:cloud.modbus.cn (推荐)www.wulianwang.net.cn (备用)47.104.68.157 (备用) 远程端口:50001保存设置(保存)如下图: 第二步: 设置完成后,别忘了保存 连接 RS485 Modbus 继电器 这里以8路继电器为例: 点击属性设置 点击“新增传感器”,增加1路继电器控制 参数配置: 依次添加8路继电器,只需修改寄存器号即可。 8路继电器全部添加后如下图 Modbus批量读配置 点击“配置参数” 这一篇我们介绍了汉枫科技串口服务器Elfin-EE1X 通过 TCP 透传方式接入 MODBUS 物联网平台 的详细步骤,将8路继电器模块上传到云平台,并生成自定义看板和 App。这些步骤也适用于其它厂商的支持 TCP 透传的 串口服务器产品。 --- ### 538. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus云平台简介(cloud.modbus.cn) Modbus云平台支持市场上99%以上Modbus设备接入,比如工业仪器仪表,串口继电器,工业传感器,Modbus PLC设备等。用户可以通过串口服务器、4G DTU、PLC工业路由器等传输设备简单配置即可上云。用户可以在任何地方远程访问任何地方的Modbus设备,并对远程设备的数据进行实时采集监控、远程控制、诊断、通讯及调试等。 启用“跳动符号Modbus云平台”技能,您可以方便地通过小度智能音箱和小度智能屏,语音控制Modbus云平台上添加的Modbus通断开关类设备,比如:继电器,PLC,Modbus智能空开、通断电表等。 使用方法 1.、注册并登录“Modbus云平台”控制台,按照网站上提示添加设备,添加从设备节点。(详见网站"使用文档") 2、技能的账号授权。具体操作方法:登录小度APP,点击首页右上角的添加设备(+),搜索并进入“跳动符号Modbus云平台”技能,点击界面最下方的账号授权,在新界面中输入第2步中“Modbus云平台”网站的账号、密码登录,完成授权。 3、授权成功后,“Modbus云平台”网站中添加的设备将会出现在您的设备列表中,您可以通过语音来控制。你也可以对您的小度系列设备说“同步设备”来同步您的设备。 修改设备名称、按键设置、设备位置、设备类型,然后叫“小度小度,打开客厅灯”试试吧 --- ### 539. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 4G DTU是一种广泛用于工业物联网数据传输的终端设备,各类传感器串口原始数据通过RS485/232传输到DTU转4G网络,双向透明传输,支持Modbus RTU转TCP/MQTT。广泛应用于远程电力监控、水文水资源监测、山洪地质灾害监测预警、环保污染监测、气象数据采集、森林防火监控等领域。 这一次我们介绍的是来自有人公司的 4G DTU产品USR-DR15X,它支持通过TCP、UDP方式 接入 MODBUS 物联网平台,在很多用户的物联网项目中运行非常稳定。 USR-DR15X 是有人公司推出的超小体积导轨式 DTU 系列,该系列产品具备高速率、低延迟、小体积、使用简单等特点,并开创性的采用了芯片板载的设计方案。USR-DR15X 系列支持国内三大运营商 Cat-1 网络接入,具有双卡单待功能,产品内置一张贴片卡(出厂免费赠送流量,可续费),外部预留 SIM 卡槽供用户使用。该 系 列 产 品 采 用 工 业 级 设 计 标 准 , 支 持 宽 电 压 端 子 供 电 , RS232/RS485 通 信 方 式 支 持 波 特 率1200~230400bps,TTL 电平通信方式支持波特率 1200~921600bps;支持 FOTA 远程自升级及 FTP 他升级协议。支持微信小程序进行参数配置,使用简单方便,适用性更强;产品自带导轨(C45 国标)卡扣,安装方便快捷。 我们以这台 USR-DR15X 为例,介绍接入 MODBUS 物联网平台 的步骤。对于塔石公司的其它 串口服务器 产品,也可以用同样的方式接入。 MODBUS 物联网平台 上的准备工作 在实践中,我们通常将 串口服务器 作为透传网关,用于在 Modbus 子设备和云平台之间起到消息转发作用。这里我们使用 串口服务器 的 TCP客户端 模式,准备工作只需要以下几步: 创建项目(项目管理→新增项目)。创建设备(设备管理→设备信息→新增设备)填写设备名称,随机生成或者手动填写设备号,在设备协议中选择ModBus RTU,定位设备所在经纬度,保存即可。(设备号复制保存备用) 具体的步骤请浏览:Modbus入门 ,通常几分钟就可以完成。 USR-DR15X系列4G DTU的配置 打开有人设备管理器 配置软件,连上网口或串口,只需要填写以下几个部分: 第一步: 工作模式:TCP Client远程服务器地址:cloud.modbus.cn (推荐)www.wulianwang.net.cn (备用)47.104.68.157 (备用) 远程端口:50001保存设置(保存) 打开手机蓝牙功能,同时给微信的蓝牙权限打开,使用微信扫一扫功能扫描 USR-DR15X 正面的二维码,即进入微信小程序“联博士配置工具”;注:华为等安卓手机需要打开位置服务(设置--隐私--位置服务),若扫描页面卡住,请尝试点击页面右上角的“三个小点”,点击“重新进入小程序”。 2) 微信小程序“联博士配置工具”自动扫描手机旁边的 USR-DR15X 设备,其中每一台设备都有不同的蓝牙名称,该蓝牙名称为“USR-DR15X-设备 IMEI 号后六位”,便于用户可以正常识别该配置哪一台 USR-DR15X设备。3) 点击微信小程序“联博士配置工具”中扫描到的 USR-DR15X 设备名称,若第一次连接,则会弹出弹框,需输入连接密码进行验证,连接密码初始值为“usr_cn”,密码可以在进入微信小程序后重新进行设定(长度为 1~10 位)。第一次连接成功后,设备可自动记录连接验证状态。再次连接时, “联博士配置工具”会自动进入主界面。4) 微信小程序“联博士配置工具”的主界面如下图所示: 1) 进入微信小程序“联博士配置工具”主界面,点击参数设置选项,进入参数配置界面。界面如下图所示,小程序会自动获取当前 USR-DR15X 的设置参数然后显示在微信小程序界面上,用户可以非常直观的查看设备所配置的值。用户可以修改参数值,并点击设置按键进行设置保存,便于适配用户的不同应用。 连接 RS485 Modbus 继电器 这里以8路继电器为例: 点击属性设置 点击“新增传感器”,增加1路继电器控制 参数配置: 依次添加8路继电器,只需修改寄存器号即可。 8路继电器全部添加后如下图 Modbus批量读配置 点击“配置参数” 这一篇我们介绍了有人科技4G DTU 通过 TCP 透传方式接入 MODBUS 物联网平台 的详细步骤,将8路继电器模块上传到云平台,并生成自定义看板和 App。这些步骤也适用于其它厂商的支持 TCP 透传的 4G DTU产品。 --- ### 540. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口服务器是为RS-232/RS-485/RS-422终端到TCP/IP之间完成数据转换的通讯接口协议转换器。提供RS-232终端与TCP/IP网络的数据双向透明传输,提供串口转TCP/IP功能,RS-232/RS-485/RS-422转TCP/IP的解决方案。可以让RS-232/RS-485/RS-422串口设备立即联接网络。 串口通讯服务器其实就是串口服务器,也叫终端服务器,串口通讯服务器能让串口设备立即具备联网能力,可以把分散的串行设备、主机等通过网络集中管理,简易、方便。支持TCP、UDP、ARP、ICMP、HTTP、DNS和DHCP协议,支持Windows Native COM和网络中断自动恢复连接功能。 串口服务器在需要采集传感器数据和远程控制的场景中广泛使用,MODBUS 物联网平台的用户有相当一部分在使用 串口服务器 接入设备,通常 串口服务器 使用较多的是通过 RS485/232/422 端口连接 Modbus 从机设备,例如:开关继电器、温湿度传感器、各类气体传感器、电能表、水表、PLC、电机控制器等。接入 MODBUS 物联网平台的串口服务器 和子设备关系,通常如下图: 这一次我们介绍的是来自塔石公司的 串口服务器TAS-LAN-461,它支持通过TCP、UDP方式 接入 MODBUS 物联网平台,在很多用户的物联网项目中运行非常稳定。 我们以这台 TAS-LAN-461 为例,介绍接入 MODBUS 物联网平台 的步骤。对于塔石公司的其它 串口服务器 产品,也可以用同样的方式接入。 MODBUS 物联网平台 上的准备工作 在实践中,我们通常将 串口服务器 作为透传网关,用于在 Modbus 子设备和云平台之间起到消息转发作用。这里我们使用 串口服务器 的 TCP客户端 模式,准备工作只需要以下几步: 创建项目(项目管理→新增项目)。创建设备(设备管理→设备信息→新增设备)填写设备名称,随机生成或者手动填写设备号,在设备协议中选择ModBus RTU,定位设备所在经纬度,保存即可。(设备号复制保存备用) 具体的步骤请浏览:Modbus入门 ,通常几分钟就可以完成。 TAS-LAN-461串口服务器的配置 打开有人设备管理器 配置软件,连上网口或串口,只需要填写以下几个部分: 第一步: 工作模式:TCP Client远程服务器地址:cloud.modbus.cn (推荐)www.wulianwang.net.cn (备用)47.104.68.157 (备用) 远程端口:50001保存设置(保存)如下图: 连接 RS485 Modbus 继电器 这里以8路继电器为例: 点击属性设置 点击“新增传感器”,增加1路继电器控制 参数配置: 依次添加8路继电器,只需修改寄存器号即可。 8路继电器全部添加后如下图 Modbus批量读配置 点击“配置参数” 这一篇我们介绍了塔石科技串口服务器TAS-LAN-461 通过 TCP 透传方式接入 MODBUS 物联网平台 的详细步骤,将8路继电器模块上传到云平台,并生成自定义看板和 App。这些步骤也适用于其它厂商的支持 TCP 透传的 串口服务器产品。 --- ### 541. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口服务器是为RS-232/RS-485/RS-422终端到TCP/IP之间完成数据转换的通讯接口协议转换器。提供RS-232终端与TCP/IP网络的数据双向透明传输,提供串口转TCP/IP功能,RS-232/RS-485/RS-422转TCP/IP的解决方案。可以让RS-232/RS-485/RS-422串口设备立即联接网络。 串口通讯服务器其实就是串口服务器,也叫终端服务器,串口通讯服务器能让串口设备立即具备联网能力,可以把分散的串行设备、主机等通过网络集中管理,简易、方便。支持TCP、UDP、ARP、ICMP、HTTP、DNS和DHCP协议,支持Windows Native COM和网络中断自动恢复连接功能。 串口服务器在需要采集传感器数据和远程控制的场景中广泛使用,MODBUS 物联网平台的用户有相当一部分在使用 串口服务器 接入设备,通常 串口服务器 使用较多的是通过 RS485/232/422 端口连接 Modbus 从机设备,例如:开关继电器、温湿度传感器、各类气体传感器、电能表、水表、PLC、电机控制器等。接入 MODBUS 物联网平台的串口服务器 和子设备关系,通常如下图: 这一次我们介绍的是来自有人科技公司的 串口服务器USR-TCP232-410S,它支持通过TCP、UDP方式 接入 MODBUS 物联网平台,在很多用户的物联网项目中运行非常稳定。 我们以这台 USR-TCP232-410S 为例,介绍接入 MODBUS 物联网平台 的步骤。对于卓岚公司的其它 串口服务器 产品,也可以用同样的方式接入。 MODBUS 物联网平台 上的准备工作 在实践中,我们通常将 串口服务器 作为透传网关,用于在 Modbus 子设备和云平台之间起到消息转发作用。这里我们使用 串口服务器 的 TCP客户端 模式,准备工作只需要以下几步: 创建项目(项目管理→新增项目)。创建设备(设备管理→设备信息→新增设备)填写设备名称,随机生成或者手动填写设备号,在设备协议中选择ModBus RTU,定位设备所在经纬度,保存即可。(设备号复制保存备用) 具体的步骤请浏览:Modbus入门 ,通常几分钟就可以完成。 USR-TCP232-410S串口服务器的配置 打开 卓岚 虚拟串口&设备管理器 配置软件,连上网口或串口,只需要填写以下几个部分: 第一步: 工作模式:TCP Server远程服务器地址:cloud.modbus.cn (推荐)47.104.68.157 (备用)www.wulianwang.net.cn (备用)远程端口号:50001保存设置(保存)如下图: 连接 RS485 Modbus 继电器 这里以8路继电器为例: 点击属性设置 点击“新增传感器”,增加1路继电器控制 参数配置: 依次添加8路继电器,只需修改寄存器号即可。 8路继电器全部添加后如下图 Modbus批量读配置 点击“配置参数” 这一篇我们介绍了有人科技串口服务器USR-TCP232-410S 通过 TCP 透传方式接入 MODBUS 物联网平台 的详细步骤,将8路继电器模块上传到云平台,并生成自定义看板和 App。这些步骤也适用于其它厂商的支持 TCP 透传的 串口服务器产品。 --- ### 542. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口服务器是为RS-232/RS-485/RS-422终端到TCP/IP之间完成数据转换的通讯接口协议转换器。提供RS-232终端与TCP/IP网络的数据双向透明传输,提供串口转TCP/IP功能,RS-232/RS-485/RS-422转TCP/IP的解决方案。可以让RS-232/RS-485/RS-422串口设备立即联接网络。 串口通讯服务器其实就是串口服务器,也叫终端服务器,串口通讯服务器能让串口设备立即具备联网能力,可以把分散的串行设备、主机等通过网络集中管理,简易、方便。支持TCP、UDP、ARP、ICMP、HTTP、DNS和DHCP协议,支持Windows Native COM和网络中断自动恢复连接功能。 串口服务器在需要采集传感器数据和远程控制的场景中广泛使用,MODBUS 物联网平台的用户有相当一部分在使用 串口服务器 接入设备,通常 串口服务器 使用较多的是通过 RS485/232/422 端口连接 Modbus 从机设备,例如:开关继电器、温湿度传感器、各类气体传感器、电能表、水表、PLC、电机控制器等。接入 MODBUS 物联网平台的串口服务器 和子设备关系,通常如下图: 这一次我们介绍的是来自卓岚公司的 串口服务器ZLAN5143,它支持通过TCP、UDP方式 接入 MODBUS 物联网平台,在很多用户的物联网项目中运行非常稳定。 我们以这台 ZLAN5143 为例,介绍接入 MODBUS 物联网平台 的步骤。对于卓岚公司的其它 串口服务器 产品,也可以用同样的方式接入。 MODBUS 物联网平台 上的准备工作 在实践中,我们通常将 串口服务器 作为透传网关,用于在 Modbus 子设备和云平台之间起到消息转发作用。这里我们使用 串口服务器 的 TCP客户端 模式,准备工作只需要以下几步: 创建项目(项目管理→新增项目)。创建设备(设备管理→设备信息→新增设备)填写设备名称,随机生成或者手动填写设备号,在设备协议中选择ModBus RTU,定位设备所在经纬度,保存即可。(设备号复制保存备用) 具体的步骤请浏览:Modbus入门 ,通常几分钟就可以完成。 ZLAN5143串口服务器的配置 打开 卓岚 虚拟串口&设备管理器 配置软件,连上网口或串口,只需要填写以下几个部分: 第一步: 工作模式:TCP 客户端目的IP或域名:cloud.modbus.cn47.104.68.157 (备用)www.wulianwang.net.cn (备用)目的端口:50001修改配置(保存)如下图: 第二步: 点击“固件与配置” C盘新建一个"web"空文件夹,选择这个文件夹,然后点击“注册包” 注册包和心跳包"ASCII"格式都先打钩,然后填入云平台生成的设备号,心跳包间隔输入“60”秒,点击确定进行保存。 跳转页面后,点击“下载”即可。 连接 RS485 Modbus 继电器 这里以8路继电器为例: 点击属性设置 点击“新增传感器”,增加1路继电器控制 参数配置: 依次添加8路继电器,只需修改寄存器号即可。 8路继电器全部添加后如下图 Modbus批量读配置 点击“配置参数” 这一篇我们介绍了卓岚串口服务器ZLAN5143 通过 TCP 透传方式接入 MODBUS 物联网平台 的详细步骤,将8路继电器模块上传到云平台,并生成自定义看板和 App。这些步骤也适用于其它厂商的支持 TCP 透传的 串口服务器产品。 --- ### 543. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1 系统概念 1.1 协议概念 日常使用中,我们所谈论的协议主要分为两种,一为通讯协议,这个是网络传输层的概念,目前市面上用的到普遍有TCP、MQTT、DUP和HTTP等,另一种为设备协议,设备协议所指设备发送数据格式的规约(如ModbusRTU),目前通讯协议是统一一致的,设备协议存在多样性,目前市面存在各种各样的设备协议,modbus算当中用的比较多一些的。 1.2设备号 设备号[device_code]它是指的负责连接网络的设备唯一SN号,区分不同设备连接上来。如下图:它可以自动生成,也可以手动填入,格式可以为数字也可以为字符串; 图a系统中设备号位置 1.3地址号和寄存器号 地址号[sensor_device_id]和寄存器号[port_id],它的作用主要是用来区分设备传输的数据。它支持一台网关设备下传输多个不同地址传感器,也可以为一台网关设备下传输多种传感器数据。地址号主要用来区分不同传感器设备的,寄存器号是用来标注同一台传感器设备不同的数据类型的。 图b添加传感点中地址号和寄存器号 2 TCP连接协议 2.1MLINK协议 MLINK 协议(小名协议)是使用字符流格式的数据协议,目前数据协议包含登录包、心跳包、数据上传、控制下发、控制返回,配置下发、配置返回等数据指令。 ●登录包(设备 - > 服务器)【首次建立 TCP 连接发送】 [device_code] 例子:1u76yshydtdhh ,其中 1u76yshydtdhh 为设备 SN 号; 设备返回: loginok 登录成功 ●心跳包(设备 - > 服务器)维持 TCP 连接,设备偏好发送 Q 固定格式 ●上传传感点数据(设备 - > 服务器) S[sensor_device_id]:[port_id]*[value],[sensor_device_id]:[port_id]*[value]E 例子:S1:0*12.5,1:1*-0.05,1:2*1,1:3*119.5107+31.64459E sensor_device_id 地址号 port_id 寄存器号 value 数值 单经纬度上传: S1:3*119.5107+31.64459E 备注:其中 GPS 经纬度数值,用+连接在一起; 服务器收到数据成功后,返回 rok 。 ●服务器下发 控制/配置 命令(服务器 - > 设备) S[sensor_device_id]:[port_id]*[value]E 例子:S1:0*0E 备注:按钮开关命令,0 为关,1 为开; ●设备接收命令返回(设备 -> 服务器) S[sensor_device_id]:[port_id]*[value]E 例子:S1:0*0E 2.2 Modbus RTU 协议(标准) 系统兼容标准的 modbus RTU 协议。DTU 配置时,需要配置成透传模式,并且设置自定义注册包,注册包为设备的 SN 即可;连接地址: cloud.modbus.cn(或者对应 IP)端口:50001 2.3 Modbus TCP 协议(标准) 系统兼容标准的 modbus TCP 协议。DTU 配置时,需要配置成透传模式,并且设置自定义注册包,注册包为设备的 SN 即可;DTU 需设置 modbus 模式连接地址: cloud.modbus.cn(或者对应 IP)端口:50001 2.4 环境 212 标准 系统支持 GB-HJ212 协议。连接地址: cloud.modbus.cn(或者对应 IP)端口:50001数据配置格式如下,地址号填写类型,寄存器号默认为 0 3 MQTT 连接协议 3.1 MLINK MQTT Broker Address:cloud.modbus.cn Broker Port:1883 Client ID:[device_code] [设备号] User Name:modbus Password:modbus ●客户端 -> 服务器 客户端发布到下方主题数据 Topic:/dev/coo/[device_code] 数据格式: [{"sensor_device_id":0,"port_id":0,"sdata":1.0}, {"sensor_device_id":1,"port_id":1,"sdata":18.3}] sensor_device_id 地址号 port_id 寄存器号 Sdata 数据数值 ●服务器 -> 客户端 客户端关注下方主题,服务器推送数据 Topic:/server/coo/[device_code] 数据格式: {"sensor_device_id":0,"port_id":0,"sdata":0.0} sensor_device_id 地址号 port_id 寄存器号 Sdata 传感器数值 备注:如果是继电器开关的话,则 0 关闭,1 打开; 3.2 ZLAN MQTT Broker Address:cloud.modbus.cn Broker Port:1883 Client ID:[device_code] [设备号] User Name:modbus Password:modbus ●客户端 -> 服务器 客户端发布到下方主题数据 Topic:/dev/coo/[device_code] 数据格式: { "[sensor_device_id]-[port_id]": sdata, "[sensor_device_id]-[port_id]": sdata } 如: { “1-0”: 1 , “1-1”:34.6 } sensor_device_id 地址号 port_id 寄存器号 Sdata 数据数值  服务器 -> 客户端 客户端关注下方主题,服务器推送数据 Topic:/server/coo/[device_code] 数据格式: { "[sensor_device_id]-[port_id]": sdata } 如: { “1-0”: 1 } sensor_device_id 地址号 port_id 寄存器号 Sdata 传感器数值 备注:如果是继电器开关的话,则 0 关闭,1 打开; --- ### 544. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 --- ### 545. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 --- ### 546. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 --- ### 547. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 最佳实践 · IPCSUN 4G DTU 接入 MODBUS 物联网平台 --- ### 548. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 最佳实践 · 亿佰特 4G DTU 接入 MODBUS 物联网平台 --- ### 549. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 最佳实践 · 智嵌物联 4G DTU 接入 MODBUS 物联网平台 --- ### 550. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 最佳实践 · 康耐德 4G DTU 接入 MODBUS 物联网平台 --- ### 551. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 最佳实践 · 汉枫 4G DTU 接入 MODBUS 物联网平台 --- ### 552. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 DTU (Data Transfer Unit)是一种常见的的物联网通信终端产品,起到网关的作用,它一边通过串口或无线技术连接各种传感器、控制器、执行器等,另一边通过 WiFi 、Ethernet、2G/3G/4G/5G、NB-IoT 等方式连接互联网,接入云端服务。 DTU 是开箱即用的产品,和很多传感器产品配合使用,不需要硬件开发能力,像配置家庭宽带路由器一样简单。 DTU 在需要采集传感器数据和远程控制的场景中广泛使用,MODBUS 物联网平台的用户有相当一部分在使用 DTU 接入设备,通常 DTU 使用较多的是通过 RS485/232/422 端口连接 Modbus 从机设备,例如:开关继电器、温湿度传感器、各类气体传感器、电能表、水表、PLC、电机控制器等,另外在要求覆盖面广、低功耗、无线传输的场景也普遍适用 LoRa DTU。接入 MODBUS 物联网平台 的 DTU 和子设备关系,通常如下图: 如果您的物联网项目不是使用 DTU,而是自主开发单面机或嵌入式硬件产品,接入 MODBUS 物联网平台 也完全适用,详情请浏览 设备接入。 --- ### 553. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 DTU (Data Transfer Unit)是一种常见的的物联网通信终端产品,起到网关的作用,它一边通过串口或无线技术连接各种传感器、控制器、执行器等,另一边通过 WiFi 、Ethernet、2G/3G/4G/5G、NB-IoT 等方式连接互联网,接入云端服务。 DTU 是开箱即用的产品,和很多传感器产品配合使用,不需要硬件开发能力,像配置家庭宽带路由器一样简单。 DTU 在需要采集传感器数据和远程控制的场景中广泛使用,ThingsCloud 物联网平台的用户有相当一部分在使用 DTU 接入设备,通常 DTU 使用较多的是通过 RS485/232/422 端口连接 Modbus 从机设备,例如:开关继电器、温湿度传感器、各类气体传感器、电能表、水表、PLC、电机控制器等,另外在要求覆盖面广、低功耗、无线传输的场景也普遍适用 LoRa DTU。接入 ThingsCloud 的 DTU 和子设备关系,通常如下图: --- ### 554. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 DTU (Data Transfer Unit)是一种常见的的物联网通信终端产品,起到网关的作用,它一边通过串口或无线技术连接各种传感器、控制器、执行器等,另一边通过 WiFi 、Ethernet、2G/3G/4G/5G、NB-IoT 等方式连接互联网,接入云端服务。 DTU 是开箱即用的产品,和很多传感器产品配合使用,不需要硬件开发能力,像配置家庭宽带路由器一样简单。 DTU 在需要采集传感器数据和远程控制的场景中广泛使用,ThingsCloud 物联网平台的用户有相当一部分在使用 DTU 接入设备,通常 DTU 使用较多的是通过 RS485/232/422 端口连接 Modbus 从机设备,例如:开关继电器、温湿度传感器、各类气体传感器、电能表、水表、PLC、电机控制器等,另外在要求覆盖面广、低功耗、无线传输的场景也普遍适用 LoRa DTU。接入 ThingsCloud 的 DTU 和子设备关系,通常如下图: --- ═══════════════════════════════════════════ ## 产品说明书 ═══════════════════════════════════════════ ### 555. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 8路IO转485模块 使用说明 配套软件:字符串跳动 1. 产品概述 本产品为8路开关量IO转RS485通信模块,可用于检测8路开关量输入状态,并通过RS485总线向上位机主动上报或接收控制命令。配套PC端配置软件为字符串跳动(工程文件后缀为.xk3)。 主要用途: 开关量输入检测与状态变化上报 根据输入事件自动发送自定义16进制报文 通过RS485与PLC、触摸屏、上位机软件对接 2. 硬件接线(通用参考) 端子说明电源按模块标识接入DC电源,V=12V+,G=12V-RS485 A/B接入RS485总线,A接A、B接B,不要接反输入1~输入8开关量输入,干接点输入公共端/COM公共端 远距离或干扰较大时,建议使用屏蔽双绞线并单端接地。 3. 软件主界面 启动字符串跳动后,界面主要包含: 菜单栏:文件、编辑、设置、工具、通信、帮助 工具栏:打开、保存、另存、设置、添加指令、删除 通信区:COM口选择、模块地址选择、读取、写入 规则列表区:显示已配置的“如果... -> ...”规则 状态栏:显示当前连接状态与程序大小(字节数) 4. 通信设置 点击工具栏“设置”打开“端口设置”对话框。 4.1 串口连接 串口号:选择PC与模块连接的COM口 波特率:默认9600,需与模块实际波特率一致 自动打开串口:勾选后启动软件时自动打开串口 5. 规则配置 本软件采用事件驱动逻辑,基本形式为: 如果 [输入条件] 成立,则执行 [输出结果] 5.1 添加规则 点击工具栏“添加指令”,打开“编辑命令”对话框。 先选择“输入条件”页签,配置触发条件。 再选择“输出结果”页签,配置执行动作。 点击“确认”保存本条规则。 5.2 输入条件 参数说明类型选择“外部输入”(或其他可用类型)参数1选择输入通道,如“输入1”~“输入8”参数2选择触发方式,见下表与上条逻辑或勾选后,本条条件与上一条条件为“或”关系 触发方式说明(按软件下拉顺序): 触发方式含义断开到闭合上升沿,输入从断开变为闭合时触发一次断开输入持续处于断开状态闭合输入持续处于闭合状态闭合到断开下降沿,输入从闭合变为断开时触发一次状态翻转输入状态发生任意变化时触发单击单次短按后触发双击连续两次短按后触发长按按住超过设定时间后触发连续按下多次连续按压多次后触发,内部变量1记录次数 参数3在部分触发方式下用于设置阈值或次数,具体以软件提示为准。 5.3 输出结果 参数说明类型选择“发送16进制数据”(或其他可用输出类型)参数1选择数据口,如“数据口2”(通常对应RS485串口)参数2选择数据来源,如“发送参数3内容”参数3填写要发送的16进制数据,多个字节用空格分隔条件不满足输出勾选后,当输入条件不成立时执行本输出 16进制数据格式示例: 11 22 33 表示连续发送3个字节:0x11、0x22、0x33。 6. 示例:输入状态变化触发发送报文 图中所示示例实现了以下逻辑: 规则1:如果 输入1 断开到闭合 → 数据口2 发送16进制数据 11 22 33 规则2:如果 输入1 闭合到断开 → 数据口2 发送16进制数据 22 33 44 配置步骤 点击“添加指令”。 选择“输入条件”:类型=外部输入,参数1=输入1,参数2=断开到闭合。 选择“输出结果”:类型=发送16进制数据,参数1=数据口2,参数2=发送参数3内容,参数3=11 22 33。 点击“确认”。 再次添加一条指令,输入条件选择“输入1、闭合到断开”,输出参数3填写22 33 44。 点击工具栏“写入”,将规则下载到模块。(默认地址:01或者00) 7. 下载与读取 按钮功能读取从模块读取当前已保存的规则到软件写入将当前编辑的规则编译后下发到模块保存/另存将工程保存为.xk3文件打开载入已有的.xk3工程文件 修改规则后必须点击“写入”才能生效,仅保存工程文件不会更新模块内部程序。 8. 调试技巧 用串口助手或Modbus调试工具连接模块,观察触发时发送的报文是否正确。 如果输入无响应,先检查输入通道号、触发方式(电平/边沿)是否选择正确。 如果收到的报文乱码或超时,检查波特率、数据位、停止位、校验位是否与接收端一致。 程序大小显示当前规则编译后的字节数,注意不要超过模块存储容量。 多规则同时存在时,注意“与上条逻辑或”的组合逻辑,避免条件冲突。 9. 注意事项 配置前确认PC与模块通信正常,串口或网口参数匹配。 RS485总线A、B线不要接反,多个模块并联时注意终端电阻。 涉及继电器输出时,负载电流、电压不要超过模块额定值。 修改完成后及时保存工程文件并写入模块。 具体功能码、寄存器地址、通信协议细节请以厂家文档为准。 10. 快速参考 常用触发方式选择 检测按钮按下:断开到闭合 检测按钮释放:闭合到断开 检测开关状态:闭合 / 断开 检测任意变化:状态翻转 --- ### 556. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS 颜色识别传感器是一款基于RGB三色分析原理的工业级颜色检测传感器,通过内置白色LED光源发射光线,经物体表面反射后由接收器捕获,对反射光中的红(R)、绿(G)、蓝(B)分量进行分析,精确识别目标物体的颜色。支持RS485 Modbus RTU协议,可接入Home Assistant智能家居系统或PLC工业控制系统,广泛应用于工业分拣、品质检测、颜色定位等场景。 工作原理 打光:传感器内部白色LED光源发射白光,照射到被检测物体表面接收:物体表面反射光线被传感器的高精度接收器捕获分析:内置处理器分析反射光的RGB分量,输出颜色编码值和匹配结果输出:通过RS485 Modbus总线传输RGB值和颜色判定结果 核心参数 检测原理:RGB三色光谱分析光源:内置白色LED通信方式:RS485 Modbus RTU供电:DC 12-24V响应时间:<10ms检测距离:10-50mm(根据目标物表面反射率) HA集成应用通过Modbus协议将颜色传感器接入HA,可实现对流水线上产品颜色的实时监控和统计,颜色异常时触发自动分拣或告警。提供完整Modbus协议表和演示视频。 典型场景工业分拣线:按颜色自动分拣产品,识别RGB值触发气缸或机械臂品质检测:检测产品颜色是否符合标准,不合格品自动剔除包装验证:确认包装盒/标签颜色正确,防止混装事故智能家居:检测衣物颜色→自动设置洗衣机洗涤模式🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 557. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS R116是一款1路智能插座控制模块,通过RS485总线Modbus协议实现对普通插座的智能化改造——将传统不可控的墙面插座变为可被中控系统、手机APP或HA定时/场景/远程控制的智能插座。模块内置20A大功率继电器,适用于各种负载范围内的强电电路通断控制。 核心功能 总线通断控制:通过Modbus RTU指令控制插座的通电/断电状态回读:实时查询当前插座通断状态定时任务:配合HA或中控主机实现定时开关场景联动:离家场景自动切断非必要电器电源过载保护:继电器自带保险设计 重要提醒:带载能力 负载类型最大电流举例 阻性负载10A白炽灯、电热水器、电暖器 感性负载5ALED灯具、电机、空调、冰箱压缩机 ⚠️ 继电器标称20A,但实际带载需根据负载类型降额使用。大功率设备(>10A)建议采用"继电器+交流接触器"方案。 Modbus控制使用功能码05(写单线圈)控制通断,功能码01(读线圈)回读状态。提供完整Modbus协议表(C-33)。 适用场景鱼缸/水族:定时控制水泵、灯光、加热棒充电桩:远程控制电动车充电插座通断,充满自停热水器:定时开启,回家前预热,离家后关闭节能🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 558. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS UF600是一款升级款壁挂式超声波流量计,采用中外夹式(非接触式)超声波探头安装在管道外壁,无需切割管道即可实时测量管道内液体的流速和累积流量。配备壁挂式主机,LCD屏实时显示瞬时流量、累积流量、流速等参数,通过RS485 Modbus RTU输出数据至Home Assistant、PLC或SCADA系统。 中外夹探头的优势 不破坏管道:探头夹在管道外壁,不接触液体,安装无需停产无压损:管道内无阻碍物,不影响流体压力免维护:无机械可动部件,不磨损,不受液体杂质影响广泛适用:适用于各种塑料管、金属管,管径范围宽 技术参数 测量原理:超声波时差法探头类型:中外夹式适用管径:DN15-DN6000精度:±1%显示:壁挂式主机LCD屏输出:RS485 Modbus RTU通信参数:波特率9600,8N1 HA集成通过RS485转USB或RS485转WiFi模块接入HA,在HA仪表盘实时查看管道流量和累积用水量。配合自动化实现:用水量超标告警、漏水检测(夜间微流量报警)、水泵运行状态监测。 应用场景楼宇供水:监测总管及各支管水流量工业循环水:冷却水循环流量监测灌溉系统:精准测量灌溉用水量能源审计:空调冷冻水/冷却水流量数据采集🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 559. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS SLS20是一款投入式静压液位变送器,将传感器探头直接投入液体底部,通过测量液体静压力来精确计算液位高度。量程可选定1-5米,采用防腐蚀耐高温设计,适用于水塔、水箱、水池、污水井等场景的液位监测。通过RS485 Modbus RTU协议将液位数据上传至Home Assistant或工业控制系统。 测量原理 投入式液位计基于"液体静压力=液体密度×重力加速度×液位高度"原理。探头内置高精度压力传感器,将液体静压力转换为4-20mA或RS485数字信号,即可线性推算出液位高度。 核心参数 量程:1米/2米/3米/5米可选精度:0.5%FS探头材质:316不锈钢(防腐蚀)电缆材质:聚氨酯(PU)通气电缆(耐油、耐酸碱)防护等级:IP68(完全防水,可长期浸没)工作温度:-20~80°C输出信号:RS485 Modbus RTU HA自动化场景 水塔自动补水:液位90%→停止补水低水位告警:液位<10%→推送告警"水塔即将空水"溢水防护:液位>95%持续5分钟→紧急关阀+告警用水量统计:每日液位变化量→估算家庭用水量 适用场景家庭水塔:别墅/农村自来水水塔液位监控消防水池:确保消防水池水位始终达标污水池:泵站集水井液位监测,自动启停排污泵农业灌溉池:蓄水池液位监测+灌溉泵联动🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 560. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS NGS02是一款负氧离子(Negative Oxygen Ion)浓度检测传感器,用于测量空气中负离子的数量密度(个/cm³)。负氧离子被称为"空气维生素",浓度越高代表空气质量越好。传感器通过RS485 Modbus RTU将数据传送到Home Assistant,可用于环境监测、健康评估、景区空气展示等场景。 负氧离子浓度意义 浓度范围(个/cm³)空气质量评价健康影响 <100较差(城市室内)易诱发头痛、疲劳 100-500一般(城市室外)基本维持健康 500-1000良好(公园绿地)增强免疫力 1000-5000优秀(森林/海边)具有疗养作用 >5000极佳(瀑布/雨后山林)治疗级,调节生理机能 核心参数 测量范围:0-500万个/cm³精度:±10%响应时间:<60秒通信:RS485 Modbus RTU供电:DC 12-24V工作环境:-20~60°C,0-95%RH(无凝结) HA应用在HA仪表盘展示室内外负离子浓度实时数据;结合新风系统实现"负离子浓度偏低→自动开启负离子发生器";记录长期趋势分析室内空气质量变化。🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 561. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS NS01是一款工业级噪声/噪音传感器,测量范围30-120dB,符合国际标准IEC 61672。内置高精度电容式麦克风,支持A/C频率计权,通过RS485 Modbus RTU协议输出实时声压级数据。可接入Home Assistant实现环境噪声监测、噪声超标告警、安静时间管理等功能。 分贝对照表 分贝(dB)典型环境感受 20-30深夜卧室/录音棚极其安静 40-50安静办公室/图书馆安静舒适 60-70正常交谈/办公室正常 80-90繁忙街道/工厂车间较吵,长时间有害 100-120电锯/摇滚音乐会痛苦阈值,听力损伤 技术规格 测量范围:30-120dB频率范围:20Hz-12.5kHz计权方式:A计权(模拟人耳)精度:±1.5dB输出:RS485 Modbus RTU供电:DC 12-24V HA联动场景 噪音超标告警:夜间>50dB→推送"邻居噪音提醒"婴儿房监控:检测到哭声(>70dB)→手机通知父母会议室状态:会议室>60dB→状态显示"使用中"办公室静音时间:>55dB连续10分钟→提醒保持安静🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 562. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS 8路NTC温度采集模块是一款可同时接入8个NTC10K热敏电阻探头的温度数据采集器。每个通道独立采集,通过RS485 Modbus RTU一次性读取全部8路温度值,大幅简化多点温度监控系统的布线和数据采集。广泛应用于数据中心机柜温控、冷链物流、工业烘干、粮仓测温等需要多点同步测温的场景。 为什么要8路?传统方案:每个测温点配一个传感器+一个变送器+一个ADC通道→8个点需要8路模拟量输入。MODBUS方案:8个NTC探头→1个模块→1路RS485→全部8路温度数据。接线从16根缩减到4根(DC+-、A、B)。 核心参数 输入通道:8路独立NTC10K(B=3950)测温范围:-40~125°C精度:±0.5°C(-20~80°C),±1°C(全量程)分辨率:0.1°C通信:RS485 Modbus RTU供电:DC 12-24V安装:DIN导轨 HA集成通过Modbus集成直接将8路温度映射为8个sensor实体,在HA仪表盘显示8个温度曲线。典型应用:数据中心8个机柜进/出风温度同时监控;冷库8个货位温度独立监测和记录。🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 563. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS DTU439S(HADTU439S)是一款功能强大的工业级网络串口互转模块,同时提供RS485和RS232接口,支持将串口数据并行转换到TCP、MQTT、UDP、HTTP四种网络协议。内置Modbus RTU↔Modbus TCP透明网关功能,是连接传统Modbus设备与Home Assistant、物联网云平台的核心桥梁。 四通道并行架构 通道协议适用场景 TCP Server/ClientTCP/IP串口设备接入以太网,上位机软件直连 MQTTMQTT v3.1.1接入物联网平台(HA/AWS IoT/阿里云IoT) UDPUDP低延迟广播通信 HTTP ClientHTTP GET/POST触发Webhook或REST API调用 核心功能 双串口:1路RS485 + 1路RS232,可同时工作Modbus网关:Modbus RTU ↔ Modbus TCP双向透明转换,HA Modbus TCP集成直接使用MQTT桥接:串口数据自动发布到MQTT主题,HA通过MQTT集成接收RST复位:短按重启设备,长按恢复出厂设置(方便调试)网页配置:内置Web配置页面,浏览器直接设置参数 HA集成推荐方案:Modbus RTU设备→DTU439S(TCP模式)→HA中Modbus TCP集成。只需在HA configuration.yaml中添加Modbus TCP配置,指向DTU439S的IP+端口即可。 技术规格 供电:DC 5-36V宽电压网络:RJ45 10/100M串口参数:波特率2400-460800,数据位/校验/停止位可设工作温度:-40~85°C安装:DIN导轨🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 564. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS MBS51是一款基于60GHz毫米波雷达技术的人体计数存在传感器,能够精准统计检测区域内的人数、判断各分区内是否有人存在(静止/微动/运动),以及每个人的运动轨迹。相比传统PIR红外传感器只能判断"有人/无人",MBS51向上提供了"有几个人、分别在哪个分区"的精细数据。通过RS485 Modbus RTU输出,集成到Home Assistant或智慧园区管理平台。 60GHz毫米波优势 高分辨率:可区分0.5米间距的两个人穿透性:不受光线、温度、烟雾影响隐私安全:非摄像头方案,不采集人脸图像探测范围:最大覆盖6×6米区域分区输出:支持将探测范围划分为4个子区域,分别输出人数 输出数据类型 总人数:当前检测区域内的总人数静止人数:静止不动的人数运动人数:正在走动的人数各分区人数:每个子区域分别的人数存在状态:各分区是否有人(用于触发自动化) HA集成应用 智慧办公室:统计每个会议室/开放区人数,在门口屏幕显示占用状态零售店铺:统计进店人数和热区停留人数,分析客流图书馆自习室:显示各区域空位数量智慧园区:多台MBS51联网→整个楼层人流量热力图🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 565. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS ATS03是一款高精度三轴倾角传感器,基于MEMS三轴陀螺仪+加速度计,采用卡尔曼滤波算法实现数据的稳定可靠输出。可测量物体相对于水平面的X轴和Y轴倾角(±90°范围),通过RS485 Modbus RTU输出角度数据。IP65防护等级,-40°C~80°C宽温工作,适用于户外杆塔倾斜监测、工程机械姿态控制、桥梁隧道形变监测等严苛场景。 卡尔曼滤波传统的倾角传感器在振动环境下读数跳动剧烈。ATS03内置卡尔曼滤波器,融合陀螺仪的动态响应和加速度计的静态精度,在振动、冲击、温度变化下仍能输出稳定的角度值。 核心参数 测量轴:X轴(俯仰) + Y轴(横滚),双轴±90°分辨率:0.01°精度:±0.1°(静态),±0.5°(动态)通信:RS485 Modbus RTU防护:IP65工作温度:-40~80°C供电:DC 5-36V HA安全监测场景 铁塔/电杆倾斜:安装在输电铁塔上,倾斜超阈值→告警"XX号铁塔倾斜XX度"太阳能板跟踪:安装在太阳能跟踪支架上,反馈面板俯仰角桥梁健康监测:多台ATS03分布在桥墩和桥面,监测桥梁挠度和倾斜塔吊安全:监测塔吊塔身倾斜度,超标紧急停机地质灾害预警:安装在山体边坡,监测滑坡体倾斜变化趋势🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 566. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS HAPS03是一款高精度压力变送器,量程0-1MPa(0-10bar/0-145psi),采用扩散硅压力传感器芯片和不锈钢隔离膜片结构,精度高、稳定性好。标准螺纹接口(G1/4或M20×1.5),可直接拧入管道测压口。通过RS485 Modbus RTU数字输出或4-20mA模拟输出,接入Home Assistant或PLC采集压力数据。 技术规格 量程:0-1MPa(0-10bar/0-145psi)精度:0.25%FS / 0.5%FS可选过载能力:150%FS输出:RS485 Modbus RTU + 4-20mA(双输出)供电:DC 12-36V接口:G1/4螺纹(标准),M20×1.5可选膜片材质:316L不锈钢防护:IP65 HA恒压供水方案HAPS03安装在供水管道上→数据通过RS485送HA→HA中编写自动化:1. 用水阀门打开→管道压力下降→HA监测到压力<设定值→提升水泵变频器频率→压力恢复2. 用水阀门关闭→压力升高→HA降低变频器频率→压力稳定3. 管道压力>高压设定值持续→可能爆管→紧急停泵+告警 更多应用空压机系统:储气罐压力监测,自动启停压缩机暖通空调:冷冻水管、冷却水管压力监测液压系统:液压站油压持续监测和记录🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 567. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS AO1012(HAAO1012)是一款12路独立0-10V模拟量输出模块,每路可输出0-10V电压信号,精度±1%。12个通道完全独立,互不干扰,一台模块即可同时驱动最多12路0-10V LED调光驱动、12台EC风机调速器或12个比例调节阀。采用RS485 Modbus RTU通信,通过Home Assistant或PLC集中控制。内置过流/过压/防反接/防雷击浪涌保护,工业级可靠性。 为什么选12路?商业照明工程中,一个大型空间可能划分12个调光区;农业设施中,12个风机需要独立调速。传统方案需要12个独立的调光模块,接线复杂度和管理难度极高。AO1012将12路集成在一个DIN模组内,RS485一根总线(Zigzag连线)即可控制全部12路。 核心参数 输出:12路独立0-10V,精度±1%分辨率:12位DAC,4096级(每通道0.0024V步进)保护:过流/过压/防反接/防雷击浪涌通信:RS485 Modbus RTU供电:DC 12-24V安装:DIN导轨 Modbus控制12路电压值映射到12个连续保持寄存器(0x0000-0x000B),范围0x0000-0x0FFF(0-4095对应0-10V)。使用功能码16(写多个寄存器)一次性写入全部12路的电压值,毫秒级响应。 应用场景展厅照明:12个展区的灯光分区独立调光农业温室:12台循环风机独立调速楼宇暖通:12个比例调节阀同步或独立控制🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 568. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS M24162是一款高密度24回路智能继电器模组,采用16A自保持继电器——只在切换瞬间通电,保持状态不耗电,不发热、不粘连,待机功耗极低。配备液晶触摸显示器,可本地查看和控制每个回路的状态。同时具备DI数字输入通道和传感器接入功能,可选择RS485/RS232/TCP/MQTT等多种通信接口,是大型智能楼宇和工业控制项目的理想集中控制单元。 六大核心特性 24回路:一个模组控制24路灯/插座/设备,节省配电柜空间16A自保持继电器:切换瞬间耗电(约100ms),保持状态几乎不耗电。持续通电条件下不发热,不会因发热导致粘连液晶触摸显示:本地监控每个回路的开关状态、电流、温度,支持触摸操作DI输入通道:可接入门磁、接近开关、浮球开关等干接点传感器信号传感器接入:可接入温湿度、电流互感器等模组本身所需传感器多通信接口:RS485 / RS232 / TCP / MQTT任选,灵活对接各类上级系统 自保持 vs 普通继电器的功耗对比 普通继电器(24个)自保持继电器(24个) 闭合保持功耗24×0.4W=9.6W(持续)≈0W(仅切换瞬间耗电) 一天发热量9.6Wh(持续发热)<0.1Wh(几乎无热) 一年电费约84度电/年<1度电/年 HA集成通过Modbus TCP/RTU将24个继电器+DI输入全部接入HA,在Lovelace仪表盘显示24路灯控面板。配合DI输入实现:门磁开→自动开灯;浮球高→停泵。提供完整Modbus协议表(C-136)。 适用场景商业楼宇照明:24个公共区域灯光集中控制工厂配电:24个设备回路的集中通断和监控酒店客房:每层一个M24162控制24间客房的受控插座电源🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 569. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS PRT01是一款温度+压差二合一传感器,同时测量环境温度和气体微压差(正压/负压)。采用高灵敏度压差传感器,快速响应压力变化,性能稳定可靠。在工业生产中管道压力频繁波动、养殖车间或负压病房环境易受外界因素干扰的情况下,PRT01可及时准确地反映压力信息。通过RS485 Modbus RTU协议接入Home Assistant或楼宇控制系统。 压差测量的意义 压差(ΔP),即两个空间之间的空气压力差值: 正压(P1>P2):室内气压>室外→空气向外流动→阻止外部污染物进入(手术室、电子洁净车间)负压(P1<P2</strong):室内气压<室外→空气向内流动→防止内部污染物扩散(负压隔离病房、生物安全实验室) 核心参数 压差范围:±500Pa / ±1000Pa / ±2000Pa可选压差精度:±0.5%FS温度范围:-20~80°C温度精度:±0.3°C响应时间:<1秒通信:RS485 Modbus RTU供电:DC 12-24V HA监控场景 洁净车间:PRT01安装在不同洁净等级区域之间→HA实时监测压差→<15Pa触发报警(洁净度不达标)负压病房:确认病房相对走廊始终保持负压→压差异常反转立即告警养殖车间:排风扇运行状态通过压差确认(有压差=排风正常)过滤器堵塞:过滤器两端压差逐步升高→HA判断"滤网需更换"🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 570. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS SOIL05是一款八合一RS485土壤综合传感器,可同时检测土壤的温度、湿度、电导率(EC)、pH值、氮(N)、磷(P)、钾(K)、盐分八项关键参数。采用316不锈钢探针,IP68完全防水,可长期埋入土壤工作。通过RS485 Modbus RTU协议输出数据,接入Home Assistant实现智慧农业的精准施肥灌溉决策。 八项参数详解 参数意义推荐范围 土壤温度影响根系活性和微生物活动15-30°C 土壤湿度植物可利用水分60-80%田间持水量 电导率(EC)土壤盐分总量0.5-2.0 mS/cm pH值土壤酸碱度5.5-7.5(多数作物) 氮(N)叶片生长必需30-50 mg/kg 磷(P)根系+花果发育10-30 mg/kg 钾(K)抗逆+品质80-150 mg/kg HA智慧农业自动化 智能灌溉:土壤湿度75%→停止施肥建议:土壤NPK低于阈值→HA通知"需要追肥,建议N:XX P:XX K:XX"pH调控:pH持续<5.0→通知施石灰改良酸性土壤盐碱预警:EC持续升高→通知大水淋洗脱盐 技术规格 通信:RS485 Modbus RTU供电:DC 5-30V探针:316不锈钢防护:IP68线长:2米标配(可定制)🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 571. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS WTS500是一款基于新一代非接触式红外测温技术的智能温度探头,具有高精度、快速响应、工业级可靠性和灵活的RS485 Modbus通信集成能力,为工业自动化和过程控制提供卓越的非接触温度测量解决方案。 红外测温原理任何温度高于绝对零度(-273°C)的物体都会向外辐射红外能量。WTS500通过光学系统收集目标物体的红外辐射,聚焦到红外探测器上,将辐射能量转换为电信号,经信号处理和温度补偿算法后输出目标温度值。整个过程无需接触被测物体,不干扰被测对象温度场。 核心参数 测温范围:-70~380°C(标准),最高可测约600-700°C精度:±1°C或±1%取大值响应时间:150ms(可配置)光学分辨率:D:S=12:1(在120mm距离测10mm物体)最小目标:11mm通信:RS485 Modbus RTU供电:DC 12-24V防护:IP65 ⚠️ 使用限制 适用于检测非金属或黑色金属——反光的亮金属或烧红的金属测不准建议测温上限不超过600-700°C,超过此范围精度下降最小可测物体尺寸11mm镜头需保持清洁,油烟/粉尘污染会影响精度 HA应用场景 配电柜温度巡检:多台WTS500安装在配电柜内,非接触监测母排/断路器触点温度→温度异常升高(接触不良)→提前告警避免火灾电机轴承监测:红外探头对准电机轴承外壳→温度>80°C→轴承可能缺油或损坏烘干线温度控制:监测传送带上物料表面温度,反馈控制加热功率🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-18801054468 📧 邮箱:iot@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 572. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS ZK108 是一款集成度极高的多功能智能控制旋钮,将空调控制、新风控制、地暖控制、灯光调光、窗帘控制、场景切换等八种功能融合在一个精致的旋钮面板中。产品采用金属CNC工艺,旋钮手感丝滑,配备高清显示屏,可通过RS485总线或WiFi接入Home Assistant智能家居系统。 八大核心功能 功能模式控制内容 空调控制模式切换(制冷/制热/送风/除湿)、设定温度、风速调节、定时开关 新风控制新风开关、风量调节、内循环/外循环切换 地暖控制各回路开关、分区温度设定、防冻模式 灯光调光亮度0-100%无极调节、色温冷暖切换、场景预设 窗帘控制开/关/停、百分比位置控制 场景按键三个场景自定义按键,支持5种场景模式(离家/回家/睡眠/观影/会客) HA传感器实体内置温度传感器,作为HA温度实体接入系统 HA接入演示 ZK108 通过 RS485 Modbus 或 WiFi 接入 Home Assistant,在HA中自动注册为空调实体(climate)、灯光实体(light)、窗帘实体(cover)等多种实体类型,无需编写YAML配置,即插即用。 适用场景 客厅主控:一面墙装一台ZK108,全屋空调+灯光+窗帘一手掌控酒店客房:替代传统温控器+灯光开关+窗帘开关三合一面板办公室:集成空调+新风+照明的集中控制点🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 573. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS AIR7C 是一款七要素空气质量综合检测仪,同时监测温度、湿度、二氧化碳(CO2)、甲醛(HCHO)、TVOC、PM2.5、PM10七项空气指标。检测数据通过Modbus RTU总线协议输出,可接入Home Assistant、莫德巴斯中控主机或第三方楼宇控制系统,用于空气质量展示、新风联动、超标报警等自动化场景。 七项检测参数 检测项范围精度 温度-40~125°C±0.3°C 湿度0~100%RH±2%RH CO2400~5000ppm±50ppm 甲醛(HCHO)0~5mg/m³±5% TVOC0~60000ppb±15% PM2.50~1000μg/m³±10μg PM100~1000μg/m³±10μg 通信与集成 Modbus RTU协议(RS485接口),波特率9600,标准Modbus寄存器地址映射,提供完整协议表。在Home Assistant中通过Modbus集成添加实体,也可通过莫德巴斯总线系统直接接入中控。 使用注意事项 首次上电需预热5分钟以上安装位置应高于地面15-20cm,避免地面沙尘污染风扇避免安装在强空气对流环境中不要长时间暴露在高浓度有机气体中 典型应用 新风联动:CO2超标→自动开启新风系统→CO2恢复正常后关闭甲醛监测:新房入住前持续监测甲醛浓度,数据上传HA记录空气质量看板:在HA仪表盘实时显示七项数据,历史曲线分析🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 574. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS PD102 是一款两路0-10V模拟电压输出的调光调速模块,配合0-10V LED调光驱动或0-10V风机调速器使用,实现灯光的无极调光或风机的无级调速。模块支持RS485总线控制、WiFi无线控制、Apple HomeKit三种控制方式,可灵活部署在分布式调光系统或集中式调光系统中。 三种控制方式 控制方式通信协议适用场景 RS485总线Modbus RTU接入莫德巴斯中控或第三方总线系统 WiFi控制TCP/HTTP直接通过手机APP或HA控制 Apple HomeKitHAP协议苹果家庭APP直接控制,支持Siri语音 核心参数 输出通道:2路独立0-10V模拟量输出电压精度:±1%供电:DC 12-24V安装方式:DIN导轨安装(背卡选配)保护功能:过流/过压/防反接/防雷击浪涌 Modbus控制指令 使用功能码03/06/10读写寄存器,典型操作:读当前亮度值(03 00 00 00 02 CRCH/CRCL)、设置通道1亮度50%(06 00 00 00 7F CRCH/CRCL)。提供完整Modbus协议表文档。 应用场景 0-10V LED调光:配合0-10V LED驱动电源,实现平滑调光风机调速:控制EC风机转速电动阀门控制:输出0-10V信号控制比例积分阀🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 575. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS EFR32MG21 是一款基于Silicon Labs EFR32MG21芯片的ZigBee 3.0 USB无线通信模块,作为Home Assistant的Zigbee协调器(Coordinator)使用。插入HA主机的USB口,配合Zigbee2MQTT或ZHA(Zigbee Home Automation)集成,即可组建Zigbee网络,接入和管理各类Zigbee智能设备。 Zigbee 3.0标准 Zigbee 3.0是Zigbee联盟的统一标准,向下兼容Zigbee Home Automation(ZHA)、Zigbee Light Link(ZLL)等旧标准。EFR32MG21芯片支持Zigbee 3.0的所有特性: 网络组建:自动创建和管理Zigbee Mesh网络设备入网:支持Touchlink、Find & Bind等入网方式低功耗:休眠终端设备(Sleepy End Device)支持安全加密:AES-128网络层加密 HA集成方式 两种主流集成方案: Zigbee2MQTT:功能最强大,支持设备最多,社区活跃。USB模块刷入Zigbee2MQTT固件后使用ZHA(内置集成):HA官方内置,即插即用,无需额外安装。适合不想折腾的用户 支持设备类型 兼容市面上绝大多数Zigbee 3.0设备:智能开关/插座、人体传感器、门磁、温湿度传感器、烟雾报警器、智能门锁、电动窗帘电机、LED灯泡/灯带、场景开关等。 技术规格 芯片:Silicon Labs EFR32MG21(ARM Cortex-M33)协议:Zigbee 3.0 / Zigbee PRO频率:2.4GHz接口:USB 2.0 Type-A传输距离:室内30-50米(视障碍物情况)最大子设备:200+个(取决于路由节点数量)🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 576. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS AIR04 是一款集成光照度、温度、湿度、露点温度四合一检测的Modbus传感器模块。通过RS485总线输出检测数据,可接入Home Assistant、楼宇控制系统或工业PLC。产品安装简单,精度可靠,特别适合需要同时监测环境光照和温湿度场景的智能楼宇和农业物联网项目。 四合一检测参数 参数量程精度典型应用 光照度(Lux)0-65535 Lux±5%联动窗帘、调光、补光灯 温度-40~85°C±0.3°C空调联动、温度监控 湿度0-100%RH±2%RH除湿机联动、环境监控 露点温度计算值—防结露预警、恒温恒湿控制 露点温度应用价值 露点温度是AIR04的差异化功能——当环境温度降低到露点以下时,空气中的水蒸气会凝结成液态水(结露)。在数据中心、配电柜、冷库、恒温恒湿仓库等场景中,监测露点温度至关重要:当温度接近露点时提前启动除湿或升温设备,防止设备结露短路或物资受潮。 Modbus通信 RS485接口,标准Modbus RTU协议,波特率9600(8N1)。提供完整寄存器映射表,包括光照值(Lux)、温度(°C ×10)、湿度(%RH ×10)、露点(°C ×10),使用功能码03读取。 适用场景 智能温室:光照+温湿度联合控制遮阳帘和通风系统配电房监控:温度和露点监测,防止结露导致设备故障高档会议室:光照联动电动窗帘,保持舒适光照环境🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 577. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS PROV3 是一款高颜值的触摸式自保持智能开关面板,采用CNC铝合金加工工艺,配备屏蔽板隔离和导光板导光设计,触摸灵敏度和观感均达到行业顶级水准。内置16A自保持继电器——不发热、不粘连,待机功耗极低,支持RS485总线控制和WiFi无线控制,完美接入Home Assistant智能家居系统。 六大核心卖点 特性说明 CNC铝合金面板整块铝合金经CNC精密加工,非注塑廉价感 触摸灵敏度电容触摸+屏蔽板隔离干扰+导光板导光,触摸精准不误触 16A自保持继电器不发热(线圈不持续通电保持)、不粘连、工作功耗低 双电源供电支持DC和AC双电源冗余供电,任一电源故障不影响开关控制 RS485总线标准Modbus RTU协议,HA直连,也支持"只开/只关/翻转"等多种控制模式 公共端(C)设计设置公共端可自由选择控制强电或弱电,取决于C端接入的线路类型 Modbus控制方式 开关控制:功能码05写单线圈,FF00=开、0000=关只开/只关模式:可配置为只接受ON或只接受OFF指令(互锁应用)状态回读:功能码01读线圈状态,确认开关实际位置 多键位可选 提供1键、2键、3键、4键版本,适配不同控制需求。每个按键均可独立配置Modbus线圈地址,多键版本互不影响。 适用场景 客厅主灯控制:搭配铝合金面板,提升装修档次酒店客房:高档触摸面板+总线控制,集中管理办公室照明:多个开关通过总线组网,实现区域照明控制🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 578. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS MBS10 是一款双鉴微动探测存在传感器,能够精准检测区域内静态人体的存在——区别于普通PIR红外传感器只能检测移动人体,MBS0102可以捕捉人体的微小动作(呼吸导致的胸口起伏、打字时的手指活动等),从而判断区域内是否有人存在。检测结果通过干接点和RS485总线双通道输出,完美接入Home Assistant系统。 传统PIR vs 双鉴存在传感器 对比项传统PIR红外MBS10 双鉴存在 检测原理热释电红外(移动+温差)微波多普勒+微动分析 静态人体❌ 无法检测(人静止不动时判断为无人)✅ 精确检测(捕捉呼吸波动和微小动作) 穿透能力不可穿透非透明物体可穿透薄墙、玻璃、木板 误报率较高(阳光、热风、宠物)低(双鉴交叉验证+算法过滤) 适用场景走廊、门口办公室、卧室、书房——人长时间静坐的区域 核心应用场景 智能办公室:检测到工位有人→保持空调和灯光;长时间无人→自动关闭老人看护:长者长时间在某个位置静止不动→可能摔倒或身体不适→触发报警酒店客房:检测到房间有人→保持供电;检测到无人→进入节能模式书房/影音室:人坐在沙发上看书观影时,传统PIR会判断为无人房间→自动关灯。MBS10不会 安装要点 安装角度和数量配合至关重要——单台MBS10的有效检测区域为锥形范围,大型房间建议安装2-3台,交叉覆盖。产品提供详细的安装部署指南和Modbus协议表。🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 579. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS PD25B 是一款五路独立0-10V模拟信号输出的专业调光调速模块,每路独立受控,可以同时驱动5路0-10V LED调光驱动或5台0-10V风机调速器。支持RS485总线(Modbus RTU)、WiFi无线、Apple HomeKit三种控制方式,适用于需要多通道独立调光的商业照明、展厅灯光、植物工厂等场景。 五路独立控制 通道1-5独立调光:每路0-10V输出0-100%独立可调,互不影响批量控制:支持多通道同时设置到相同值或不同值调光曲线:支持线性、对数(人眼感知)两种调光曲线 控制方式对比 方式协议延迟适用 RS485总线Modbus RTU<10ms中控系统集成 WiFiHTTP/TCP<50msAPP/HA直连 HomeKitHAP<100ms苹果家庭/Siri Modbus寄存器映射 通道1-5的亮度值分别映射到保持寄存器0x0000-0x0004,范围0x0000-0x00FF(0-255对应0-100%)。支持功能码03(读取)和06/10(写入)。 安装与接线 DIN导轨安装,可选配背卡用于机柜安装供电DC 12-24V5路0-10V输出端子(每路Vout+、GND)RS485 A/B端子建议0-10V信号线使用屏蔽双绞线,长度不超过50米🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 580. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS MD25 是一款五路0-10V调光调速模组,与PD25B功能相近,但定位更偏向商业工程和集中式照明控制。支持5路独立的0-10V模拟量输出,每路可驱动多台0-10V LED驱动器或EC风机,通过RS485总线(Modbus RTU)接受集中控制指令,是大面积商业照明调光和风机群控的理想选择。 工程级特性 五路完全独立:每路0-10V通道电气隔离,互不干扰驱动能力强:单路0-10V输出可并联驱动多台LED驱动器(取决于驱动器的输入阻抗)DIN导轨标准:35mm DIN导轨安装,适合放入配电箱或控制柜工业级可靠性:宽温工作-20~70°C,适合配电箱等恶劣环境 Modbus通信 标准Modbus RTU协议,地址1-247可设,波特率9600(8N1)。每路通道亮度值对应1个保持寄存器(0-255对应0-100%),使用功能码03/06/16读/写。 典型工程项目 商业展厅:5个展区的灯光独立调光,通过中控触屏或时间表自动切换氛围办公照明:5个办公区域的LED面板灯按日光补偿策略自动调光植物工厂:5个种植区的LED补光灯按作物需求独立设定光照强度🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 581. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS ND06 是一款数字式集成电流互感器(Digital Integrated Current Transformer),将传统电流互感器(CT)的信号采集、模数转换、数字通信集成在一个紧凑的模块内。通过RS485 Modbus通信,直接输出数字化的电流测量值,无需PLC的模拟量输入模块(ADC),大幅简化电力监测系统的布线和配置。 传统CT vs 数字CT 对比传统CTND06数字CT 输出信号0-1A或0-5A交流电流RS485数字信号,直接输出电流值(A) 接线复杂度需要ADC模块+变送器仅需2根RS485线+供电 精度保持受长线传输衰减影响数字信号无损传输 数据采集需要PLC/数据采集器ADC通道任何Modbus主站设备直接读取 技术规格 工作频率:50-400Hz(支持变频器输出测量)额定输入:1A-800A(多规格可选)测量范围:10%In - 130%In精度:比差≤±0.1%,角差≤±10分绝缘:2.5kV/1mA/1min外壳:ABS阻燃材料(UL94-V0级)内核:镍钢或纳米晶磁芯通信:RS485 Modbus RTU 适用场景 配电柜电力监测:每个馈线回路装一台ND06,集中采集各回路电流数据电机运行监控:监测电机运行电流,异常偏高即触发报警能效分析:配合HA或能源管理系统统计各设备用电情况🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 582. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS IJ01 是一款专为精准农业和智能灌溉设计的多参数土壤传感器,可以同时检测土壤的湿度、pH值、电导率(EC)、氮含量(N)、磷含量(P)、钾含量(K)和温度七项关键指标。通过RS485 Modbus通信,将土壤数据实时传送至Home Assistant、农业物联网平台或PLC控制系统。 七大检测参数 参数意义自动化建议 土壤湿度土壤含水量低于阈值→自动开启灌溉 pH值土壤酸碱度过酸→提醒施加石灰 电导率(EC)土壤盐分浓度过高→提醒淋洗脱盐 氮(N)植物生长必需元素不足→提醒追施氮肥 磷(P)根系发育关键不足→提醒补施磷肥 钾(K)抗逆性关键不足→提醒补施钾肥 土壤温度影响根系活性过高/过低→记录并预警 技术规格 供电:DC 3.3-24V(宽电压)通信:RS485 Modbus RTU探头材质:316不锈钢(防腐蚀)防护等级:IP68(完全防水,可长期埋入土壤)线缆长度:标配2米(可定制) 应用场景 智能农业大棚:多台IJ01分布在棚内不同区域,实时监测土壤状态城市绿化:公园、路段绿化带的土壤状态监控科研实验:农业科研中的土壤参数持续记录🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 583. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS EA02 是一款超声波液位计(Ultrasonic Liquid Level Gauge),采用非接触式超声波测距原理,无需接触液体即可测量液位高度。产品具备防腐防爆设计,适用于化工储罐、污水池、油罐、水塔等各类液体的液位监测。支持4-20mA模拟量输出和RS485 Modbus数字输出两种方式,可接入PLC、DCS或Home Assistant系统。 超声波测量原理 探头向液面发射超声波脉冲→碰到液面反射回波→探头接收回波→根据声波往返时间×声速÷2=距离。非接触式测量无磨损、无污染、不受液体腐蚀性影响。 核心参数 参数标准型号说明 量程5m / 10m可选,根据储罐深度 精度0.5% / 0.3%可选更高精度版本 分辨率1mm / 0.1%取最大值 显示中英文LCD现场直接读数 模拟输出4-20mA二线制直接接PLC模拟量输入 数字输出RS485 Modbus接入HA/SCADA系统 防爆防腐特性 探头材质耐酸碱腐蚀,适用于化工厂、电镀厂等腐蚀性环境。防爆认证确保在油气、化工等易燃易爆场所安全使用。 HA集成 通过RS485 Modbus RTU接入Home Assistant,在HA中创建液位实体(sensor),实时显示液位高度和百分比。配合自动化规则实现:液位低于下限→自动启动补水泵;液位高于上限→停止补水并报警。🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 584. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS WI01 是一款Modbus红外转发模块,通过接收RS485 Modbus指令,发射对应的红外遥控信号,实现对各类红外遥控设备(空调、电视、投影仪、机顶盒、音响等)的集中控制。模块采用360°全向红外发射设计,一台设备可覆盖整个房间的红外设备。支持微信小程序配网和红外码库管理。 工作原理 HA/中控主机 → Modbus RTU指令 → WI01模块 → 红外信号发射 → 目标设备(空调等)。逆向流程:WI01也可以通过红外学习功能,将原厂遥控器的红外码学习并存储,后续通过Modbus指令调用。 核心特性 360°全向发射:直径82mm圆形设计,环装红外LED阵列,确保房间各个方向都能收到信号安装灵活:分布式放置安装或吸顶安装,3-8米有效发射距离小程序配网:微信小程序一键配置Modbus地址和波特率,无需电脑红外码库:支持学习红外码并存储,支持通过Modbus指令调用不同码库多设备控制:一台WI01可存储多个设备的红外码,按Modbus指令切换目标设备 Modbus协议 波特率:默认9600(可修改),8N1供电:DC 12-24V指令格式:功能码06写单个寄存器,寄存器地址对应不同的红外码库编号 典型应用 酒店客房:通过客房中控系统统一控制每个房间的空调和电视家庭影院:HA场景"观影模式"→自动打开投影仪+功放+播放器会议室:通过触控面板一键控制投影仪、幕布、空调🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 585. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus RTU智能无线传感器网关协议说明书 一、产品概述 本产品是一款支持标准 Modbus RTU 协议的智能无线传感器网关设备,具备多节点传感器数据采集、通信参数配置和设备管理功能。通过 RS485 接口与上位机(PLC、触摸屏、SCADA系统等)通信,支持完整的寄存器读写操作,可广泛应用于工业自动化、环境监测、智慧农业、畜牧养殖、楼宇安防等领域。 该网关作为无线传感器网络的核心枢纽,能够同时管理多达 64 个无线传感器节点,将各传感器的数据统一转换为标准的 Modbus RTU 协议格式,方便上位机系统集成。 二、核心功能体系总览(从协议推算) 基于本协议文档的寄存器定义、操作案例及数据结构,可完整推算出产品的以下功能模块: 序号功能模块功能描述对应寄存器/依据 1Modbus RTU 从站通信标准 Modbus RTU 从站模式,RS485 物理接口,支持功能码 03/06/10第2章、第3章 2多节点传感器管理最多支持 64 个无线传感器节点同时在线,每个节点独立寻址0002H 寄存器(范围 0~63)、传感器数据区分配规则 37 种传感器类型支持温湿度、耳标(畜牧)、烟感、雷达、红外、遥控器、通用 1527 设备Index 寄存器低 8 位类型编码定义 4双数据上报模式主动上报模式(传感器自动推送)+ 查询上报模式(主机轮询读取)0005H 寄存器 5传感器绑定配对系统软件指令绑定 + 硬件按键绑定(长按 5 秒),LED 指示灯状态反馈0006H 寄存器、第6章绑定管理说明 6全参数寄存器配置从站地址(1~247)、波特率(5 档)、上报模式均可通过寄存器修改0003H~0005H 寄存器 7传感器生命周期管理添加节点、读取数据、删除单个节点、一键清除全部绑定写多个寄存器(0x10) 操作 + 0007H 寄存器 8多维度数据采集温度/湿度/震动/烟雾浓度/人体存在检测/电量/子设备类型等多类数据Data1/Data2/Battery 字段定义 9电池电量监控每个无线传感器节点的实时电池容量监测(0%~100%)Battery 寄存器(+5 偏移) 10固件版本查询读取设备固件版本号,便于版本管理和维护确认0001H 只读寄存器 11广播地址支持支持 Modbus 广播地址 0xFF(255),可对所有从站下发命令地址范围说明 12CRC16 校验机制采用 CRC-16/MODBUS 多项式 0xA001 校验,保证数据传输完整性第2章校验方式 + 附录 C 语言算法 三、支持的传感器类型详解 根据协议中 Index 寄存器的低 8 位(传感器类型字段)编码定义,网关支持以下 7 种传感器类型,并可扩展更多: 3.1 传感器类型编码总表 类型编码传感器名称主要数据字段Data1 含义Data2 含义典型应用场景 00H通用 1527 编码设备子设备类型 + 状态数据空闲子设备类型编码通用无线遥控/门磁/门窗传感器 01H温湿度传感器温度 + 湿度 + 电量温度值(0.1°C)湿度值(0.1%)温室大棚、仓库、机房、实验室 02H耳标传感器(畜牧专用)温度 + 震动计数 + 电量温度值(0.1°C)震动次数(次)牲畜体温监测、发情/健康预警 03H烟感/烟雾传感器烟雾浓度 + 电量空闲烟雾浓度(ppm)仓库防火、厨房安防、工厂消防 04H雷达人体存在传感器存在状态 + 电量空闲存在状态(0=无人/1=有人)智能照明、会议室、卫生间联动 05H红外 PIR 传感器存在状态 + 电量空闲存在状态(0=无人/1=有人)入侵报警、走廊感应、安防监控 06H无线遥控器按键状态 + 子设备类型空闲按键状态数据远程控制、灯光控制、设备开关 07H+预留扩展待定义(XXXX)待定义待定义未来新传感器类型的扩展位 3.2 各传感器数据格式详细说明 ① 温湿度传感器(Type=01H) 字节位置字段名数据类型单位取值范围示例 +0~+1 (Byte0~1)IndexUINT16-高8位=编号(0~63),低8位=类型(0x01)0x0001 表示 1 号温湿度传感器 +2~+5 (Byte2~5)设备地址 AddrUINT32-32 位唯一标识0x12345678 +6~+7 (Byte6~7)温度 Data1INT160.1°C-3276.8 ~ 3276.7°C0x00FB = 25.1°C;0xFFEC = -2.0°C +8~+9 (Byte8~9)湿度 Data2UINT160.1%0 ~ 100%0x028B = 65.1%;0x01F4 = 50.0% +10~+11 (Byte10~11)电池 BatteryUINT161%0% ~ 100%0x0064 = 100%;0x0032 = 50% ② 耳标传感器 — 畜牧养殖专用(Type=02H) 专为牛羊猪等牲畜设计的无线耳标式传感器,是本产品的一大特色功能: 字节位置字段名数据类型单位取值范围业务含义 +0~+1IndexUINT16-低8位=0x02标识为耳标类型 +2~+5设备地址 AddrUINT32-唯一标识每头牲畜的唯一 ID +6~+7温度 Data1INT160.1°C体温范围牲畜体温(如 38.5°C = 正常牛体温) +8~+9震动 Data2UINT16次0 ~ 65535活动量/震动次数,用于判断牲畜活跃度或异常行为 +10~+11电池 BatteryUINT161%0% ~ 100%耳标电池剩余电量 典型应用场景:规模化养猪/养牛场,通过监测每头牲畜的体温和活动量,实现疾病早期预警(发烧识别)、发情期检测(活动量突增)、走失告警等功能。 ③ 烟雾/烟感传感器(Type=03H) 字节位置字段名数据类型单位取值范围备注 +6~+7Data1——空闲保留未用 +8~+9烟雾浓度 Data2UINT16ppm0 ~ 5000 ppm0x1388 = 5000 ppm(高浓度报警阈值) +10~+11电池 BatteryUINT161%0% ~ 100%传感器电池电量 ④ 雷达人体存在传感器(Type=04H)& 红外 PIR 传感器(Type=05H) 两种传感器均用于人体存在检测,但技术原理不同: 对比项雷达传感器(Type=04H)红外 PIR 传感器(Type=05H) 检测原理毫米波雷达多普勒效应热释电红外线检测 Data2 取值0x0000 = 无人;0x0001 = 有人0x0000 = 无人;0x0001 = 有人 优点可穿透塑料/玻璃,不受温度影响,可检测微小动作(如呼吸),适合"人在即亮"成本低,功耗极低,适合移动检测 缺点成本较高无法检测静止人体,受环境温度影响 适用场景智能办公室/会议室/卫生间(精准存在检测)走廊/过道/入口(移动侦测) ⑤ 无线遥控器(Type=06H)& 通用 1527 编码设备(Type=00H) 字段无线遥控器(06H)通用 1527 设备(00H) Data1空闲空闲 Data2按键状态数据(具体编码取决于遥控器型号)子设备类型编码(绑定后由主机更新设置) 备注用于接收 433MHz 遥控器按键信号兼容市面上大多数 EV1527 编码的无线发射设备(门磁、水浸、振动等) 四、通信参数与帧格式规范 4.1 基础通信参数 参数项默认值可选值/范围配置方式 通信协议Modbus RTU—固定 物理接口RS485—固定 数据格式8N1(8 数据位,无校验,1 停止位)可配置默认 8N1 从站地址11 ~ 247写入 0003H 寄存器 广播地址255(0xFF)仅 255向所有从站发送命令 波特率9600 bps9600 / 19200 / 38400 / 57600 / 115200写入 0004H 寄存器 校验方式CRC16多项式 0xA001(MODBUS 标准)固定 最大传感器数量—64 个硬件限制 帧间隔时间≥ 3.5 字符时间@9600bps ≈ 3.6ms;@115200bps ≈ 0.3msRTU 协议要求 4.2 波特率配置对照表(0004H 寄存器) 写入值实际波特率单字符时间3.5 字符间隔适用场景 09600 bps≈ 1.04 ms≈ 3.6 ms默认推荐,稳定可靠 119200 bps≈ 0.52 ms≈ 1.8 ms中等速度需求 238400 bps≈ 0.26 ms≈ 0.9 ms较快速度 357600 bps≈ 0.17 ms≈ 0.6 ms高速传输 4115200 bps≈ 0.087 ms≈ 0.3 ms最高速,需确保线路质量 4.3 支持的功能码 功能码名称方向用途 0x03读保持寄存器主站→从站读取版本号、节点数、传感器数据等 0x06写单个寄存器主站→从站设置地址、波特率、模式、启动绑定等 0x10写多个寄存器主站→从站添加传感器、删除节点、批量写入数据等 五、完整寄存器映射表 5.1 系统控制寄存器区(0001H ~ 000FH) 寄存器地址寄存器名称读写权限数据格式取值范围/说明 0001H版本号只读UINT16设备固件版本号,如 0x0102 表示 V1.2 0002H当前在线节点数目只读UINT16当前已注册绑定的传感器节点数量(0 ~ 63) 0003HRS485 地址读写UINT16Modbus 从站地址,默认 1,范围 1 ~ 247 0004H串口波特率读写UINT160=9600, 1=19200, 2=38400, 3=57600, 4=115200 0005H主动上报模式设置读写UINT160=主动上报使能(默认);1=查询上报使能 0006H启动绑定配对功能只写UINT16写入 1 启动绑定(指示灯闪烁,20 秒超时自动退出) 0007H清除所有绑定数据只写UINT16清除所有已绑定的传感器数据,需重新绑定 0008H ~ 000FH保留——预留未来扩展使用 5.2 传感器数据寄存器区(0010H 起) 每个传感器占用 6 个连续寄存器(12 字节),最多支持 64 个传感器: 传感器编号寄存器地址范围+0 Index+1 Addr_H+2 Addr_L+3 Data1+4 Data2+5 Battery 传感器 10010H ~ 0015H编号+类型地址高 16 位地址低 16 位数据 1数据 2电池电量 传感器 20016H ~ 001BH同上同上同上同上同上同上 传感器 3001CH ~ 0021H同上同上同上同上同上同上 传感器 40022H ~ 0027H同上同上同上同上同上同上 ...按 +6 递增.................. 传感器 N0010H+(N-1)*6 ~ 0015H+(N-1)*6同上同上同上同上同上同上 传感器 64012AH ~ 012FH同上同上同上同上同上同上 地址计算公式:传感器 N 的起始寄存器地址 = 0010H + (N-1) × 6 六、工作模式详解 6.1 双数据上报模式 网关支持两种数据上报模式,通过 0005H 寄存器切换: 模式 0:主动上报模式(默认) 无线传感器检测到数据变化后,自动将数据上传至网关 网关收到后立即更新内部寄存器缓存 上位机可通过 0x03 功能码随时轮询读取最新数据 优点:实时性好,传感器端主动推送,数据更新及时 适用场景:需要实时监控的场景(如温度超限告警、人员闯入检测等) 模式 1:查询上报模式 无线传感器仅在收到网关查询命令时才返回数据 上位机发起读取请求 → 网关向传感器查询 → 返回数据 优点:省电,传感器大部分时间处于休眠状态 适用场景:电池供电传感器、低功耗优先的场景(如农业远程监测) 6.2 绑定配对流程 新增无线传感器到网关前,必须先完成绑定配对操作。支持两种触发方式: 方式一:软件指令绑定(通过 Modbus 写入 0006H) 上位机向 0006H 寄存器写入数值 1:发送 01 06 00 06 00 01 A8 0B 网关进入绑定模式,指示灯开始闪烁 让目标无线传感器发送一次数据(或触发其发射信号) 网关接收并识别传感器信号,自动分配一个空闲存储槽,记录传感器地址 绑定成功:指示灯停止闪烁,网关返回响应 01 06 00 06 00 01 A8 0B(成功代码 1) 若 20 秒内未收到任何传感器信号,返回超时响应 01 06 00 06 00 02 E8 0A(超时代码 2),退出绑定模式 方式二:硬件按键绑定 长按网关面板上的配对按键 5 秒 进入绑定模式(与软件指令效果完全相同) 后续步骤与方式一相同 提示:无论哪种方式,每次绑定操作只能添加 1 个传感器。如需添加多个传感器,需重复执行绑定流程。 七、完整操作案例(10 个实例含逐字节解析) 以下提供覆盖全部功能的完整操作示例,包含十六进制请求/响应帧及逐字段解析。 7.1 系统寄存器操作(6 例) 案例 1:读取设备固件版本号(读取 0001H) 项目内容 操作类型读保持寄存器(功能码 0x03) 请求帧(十六进制)01 03 00 01 00 01 D5 CA 请求解析[地址=01] [功能码=03] [起始地址=0001H] [寄存器数=1] [CRC=D5CA] 响应帧(十六进制)01 03 02 01 02 B8 44 响应解析[地址=01] [功能码=03] [字节数=2] [数据=0102] → V1.2 版本 [CRC=B844] 案例 2:读取当前在线传感器节点数(读取 0002H) 项目内容 请求帧01 03 00 02 00 01 25 CA 响应帧01 03 02 00 08 B9 82 结果解读当前有 8 个传感器节点在线 案例 3:修改设备 RS485 从站地址(写入 0003H → 新地址 = 2) 项目内容 操作类型写单个寄存器(功能码 0x06) 请求帧01 06 00 03 00 02 F8 0B 请求解析[地址=01] [功能码=06] [寄存器=0003H] [数据=0002 → 地址改为 2] [CRC=F80B] 响应帧01 06 00 03 00 02 F8 0B(回显请求帧,表示写入成功) 注意修改后需使用新地址(0x02)进行后续通信 案例 4:修改串口波特率为 19200(写入 0004H → 值 = 1) 项目内容 请求帧01 06 00 04 00 01 09 CB 请求解析[地址=01] [功能码=06] [寄存器=0004H] [数据=0001 → 波特率选项 1] [CRC=09CB] 响应帧01 06 00 04 00 01 09 CB(成功) 注意修改后需切换上位机串口的波特率为 19200 才能继续通信 案例 5:切换为查询上报模式(写入 0005H → 值 = 1) 项目内容 请求帧01 06 00 05 00 01 58 0B 请求解析[地址=01] [功能码=06] [寄存器=0005H] [数据=0001 → 查询模式] [CRC=580B] 响应帧01 06 00 05 00 01 58 0B(成功切换为查询上报模式) 案例 6:启动传感器绑定配对(写入 0006H → 值 = 1) 项目内容 请求帧01 06 00 06 00 01 A8 0B 请求解析[地址=01] [功能码=06] [寄存器=0006H] [数据=0001 → 启动绑定] [CRC=A80B] 响应帧(成功)01 06 00 06 00 01 A8 0B(代码 1 = 命令执行成功,等待传感器入网) 响应帧(超时)01 06 00 06 00 02 E8 0A(代码 2 = 20 秒内无传感器入网,超时退出) 7.2 传感器数据寄存器操作(4 例) 案例 7:手动添加传感器 1 到系统(写入地址 0x12345678) 当已知传感器设备的 32 位地址时,可直接通过寄存器写入将其添加到系统: 项目内容 操作类型写多个寄存器(功能码 0x10) 目标地址传感器 1 数据区的起始地址 0010H,连续写入 3 个寄存器(Index + Addr_H + Addr_L) 请求帧01 10 00 10 00 03 06 00 01 12 34 56 78 A1 E1 逐字节解析[01=地址] [10=功能码] [00 10=起始地址0010H] [00 03=写3个寄存器][06=共6字节数据] [00 01=1号+温湿度类型] [12 34=地址高16位] [56 78=地址低16位] [A1 E1=CRC] 响应帧01 10 00 10 00 03 81 CD(确认从 0010H 开始写入 3 个寄存器) 案例 8:读取传感器 1 的全部数据(6 个寄存器 = 12 字节) 项目内容 请求帧01 03 00 10 00 06 C4 0D 请求解析[01=地址] [03=功能码] [00 10=起始地址0010H] [00 06=读6个寄存器] [CRC=C40D] 响应帧01 03 0C 00 01 12 34 56 78 00 FA 01 F4 00 64 B5 F2 逐字节解析[01=地址] [03=功能码] [0C=12字节数据][00 01 → 1号传感器 + 温湿度类型(01H)][12 34 56 78 → 32位设备地址 0x12345678][00 FA → 温度 25.0°C(250×0.1)][01 F4 → 湿度 50.0%(500×0.1)][00 64 → 电池 100%][B5 F2 = CRC] 案例 9:删除传感器 1(清零地址寄存器) 删除传感器的方法是将对应的地址寄存器全部清零: 项目内容 请求帧01 10 00 10 00 03 06 00 00 00 00 00 00 E7 15 请求解析[01=地址] [10=功能码] [00 10=起始地址] [00 03=3个寄存器][06=6字节数据] [00 00 00 00 00 00 = 全部清零] [E7 15=CRC] 响应帧01 10 00 10 00 03 81 CD(删除成功) 效果传感器 1 的地址被清零,系统不再接收该传感器的数据,存储槽释放 案例 10:直接写入传感器 1 的温度和湿度数据 项目内容 请求帧01 10 00 13 00 02 04 01 2C 02 58 72 19 请求解析[01=地址] [10=功能码] [00 13=起始地址0013H(Data1)] [00 02=写2个寄存器][04=4字节数据] [01 2C → 温度 30.0°C(300×0.1)] [02 58 → 湿度 60.0%(600×0.1)] [72 19=CRC] 响应帧01 10 00 13 00 02 B0 0D(写入成功) 八、异常处理与错误码 8.1 Modbus 异常响应格式 当从站检测到非法操作时,返回异常响应: 正常功能码最高位变为 1(如 0x03 → 0x83,0x06 → 0x86,0x10 → 0x90) 后面跟随 1 字节的异常码 异常码含义常见原因解决方法 01非法功能码使用了不支持的功能码仅使用 0x03/0x06/0x10 02非法数据地址寄存器地址超出有效范围检查地址是否在 0001H~012FH 范围内 03非法数据值写入的数据值超出允许范围检查取值范围(如地址应在 1~247) 8.2 绑定功能返回码(0006H 寄存器) 返回码含义说明 1命令执行成功绑定指令已接收,网关进入配对模式等待传感器入网 2绑定超时20 秒内未收到传感器信号,自动退出绑定模式 8.3 故障诊断速查表 问题现象可能原因解决方案 通信超时,无响应RS485 地址不匹配或波特率不一致检查 0003H 地址寄存器和 0004H 波特率寄存器配置 传感器数据读出全为零传感器节点未注册/绑定,或地址写入错误检查 0010H 起始的地址寄存器是否正确写入非零值 无法写入寄存器功能码使用错误或权限不足确认使用正确的功能码:单个写入用 0x06,多个写入用 0x10;注意 0001H/0002H 为只读 CRC 校验错误数据传输过程中出现误码检查 RS485 线路连接(A+/B- 是否接反、终端电阻是否缺失),重新计算 CRC 绑定失败(反复超时)传感器不在通信范围内或电池耗尽缩短传感器与网关距离,更换传感器电池 部分传感器数据不更新该传感器超出无线信号覆盖范围调整网关天线方向,或增加中继器 九、注意事项与最佳实践 9.1 关键注意事项 帧间隔时间:RTU 模式下,相邻两帧之间必须保持至少 3.5 个字符时间的静默间隔。不同波特率下的最短帧间隔: 9600 bps:约 3.6 ms 115200 bps:约 0.3 ms 大端字节序:使用功能码 0x10 写多个寄存器时,数据必须按大端模式(Big-Endian)组织,高字节在前,低字节在后。 广播操作无响应:向广播地址 0xFF 发送命令时,所有从站执行操作但不会返回响应帧。 传感器添加规则:添加传感器时,地址寄存器(Addr_H + Addr_L)必须写入非零值;写入全零等同于删除该节点。 操作间隔:传感器数据更新后,需等待至少 100ms再进行下一次寄存器操作。 清除绑定的风险:写入 0007H 寄存器会一次性清除所有已绑定的传感器数据,操作前请确认无需保留现有配置,清除后需逐一重新绑定。 9.2 推荐操作流程 首次上电:读取 0001H 确认固件版本,读取 0002H 确认初始状态 配置通信参数:根据需要修改 0003H(地址)、0004H(波特率)、0005H(上报模式) 绑定传感器:通过 0006H 或物理按键逐一添加传感器 验证绑定:读取 0002H 确认节点数,读取对应传感器数据区确认数据正常 日常运维:定期读取传感器 Battery 字段监控电量,及时更换低电量传感器电池 十、CRC16 算法实现 本协议采用 MODBUS 标准 CRC16校验算法,多项式为 0xA001(即 0x8005 的位反转形式)。以下是完整的 C 语言参考实现: #include <stdint.h> /** * MODBUS CRC16 计算 * @param data 待计算的数据缓冲区指针 * @param len 数据长度(字节) * @return 16 位 CRC 校验值(低字节在前) * * 多项式:0xA001(MODBUS 标准) * 初始值:0xFFFF */ uint16_t calc_crc(uint8_t *data, uint16_t len) { uint16_t crc = 0xFFFF; // 初始值 for (uint16_t i = 0; i < len; i++) { crc ^= data[i]; // 与当前字节异或 for (uint8_t j = 0; j < 8; j++) // 逐位处理 { if (crc & 0x0001) // 最低位为 1 { crc >>= 1; // 右移一位 crc ^= 0xA001; // 与多项式异或 } else { crc >>= 1; // 仅右移 } } } return crc; } /* 使用示例: * uint8_t frame[] = {0x01, 0x03, 0x00, 0x01, 0x00, 0x01}; * uint16_t crc = calc_crc(frame, 6); * 结果:crc = 0xCAD5(低字节 0xD5 在前,高字节 0xCA 在后) */ 十一、资料下载与技术支持 本文档版本:V1.3(2025-10-03 更新) 协议遵循标准:Modbus 工业标准协议规范 具体寄存器定义以设备实际固件为准 如需技术支持,请联系制造商获取最新寄存器映射表及协议文档 版本迭代历史 版本号发布日期主要变更内容 V1.12025-09-01基础版本,采用标准 Modbus-RTU 协议作为主节点通信协议 V1.22025-09-21增加软件指令启动绑定功能;增加硬件按键启动绑定功能 V1.3(当前)2025-10-03修正最大支持传感器数目为 64 个;增加传感器类型数据字段;增加传感器数据段格式详细说明;修正绑定超时时间为 20 秒;增加 0007H 寄存器(一键清除全部绑定) 十二、典型应用场景 场景一:智慧农业 — 大棚环境监控系统 在温室大棚内部署温湿度传感器(Type=01H),通过本网关将数据汇聚后经 Modbus RTU 上传至 PLC 或触摸屏控制系统。可联动通风机、喷淋系统、遮阳帘等设备,实现恒温恒湿自动调节。支持最多 64 个传感器点,满足大型连栋温室的多点位监测需求。 场景二:智慧畜牧 — 牲畜健康管理 为每头牛/羊佩戴无线耳标传感器(Type=02H),网关集中收集牲畜体温和活动量数据。当某头牲畜体温超过设定阈值时自动告警(疾病预警),或活动量异常变化时判断发情/健康状况。64 节点容量足以覆盖中小型养殖场的牲畜管理需求。 场景三:消防安全 — 仓库/机房烟火监测 部署烟雾传感器(Type=03H),实时监测仓库、机房等重点区域的烟雾浓度。当浓度超过阈值时,通过 Modbus 上位机触发声光报警器、排风系统或通知消防联动平台。配合温湿度传感器还可实现综合环境安全监测。 场景四:智能建筑 — 人体存在感知与照明联动 在办公室、会议室、卫生间安装雷达传感器(Type=04H)或红外 PIR 传感器(Type=05H),实现精准的人员存在检测。雷达方案可探测微动(甚至呼吸),实现真正的"人在即亮"智能照明控制,大幅节约能源。传感器数据通过网关接入楼宇自控系统(BAS)或 KNX/Modbus 总线。 场景五:安防报警 — 入侵检测与无线遥控 结合红外传感器(Type=05H)实现周界入侵检测,搭配无线遥控器(Type=06H)用于布防/撤防操作。通用 1527 设备(Type=00H)可兼容门磁、玻璃破碎、水浸等各类无线探测器,构建完整的无线安防系统,所有数据统一通过 Modbus RTU 接入报警主机或 SCADA 平台。 --- ### 586. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介 USR-N668是济南有人物联网技术有限公司推出的8路串口服务器,是一款实现RJ45网口与RS232 / RS485 / RS422接口之间数据透明传输的工业级设备。该设备搭载ARM处理器,具有功耗低、速度快、稳定性高的特点。 N668内部集成了完整的TCP/IP协议栈,用户利用它可以轻松完成嵌入式设备的网络化改造,节省开发时间与人力成本。本系列产品已在银行、公路监控、大型企业网络、视频监控系统以及光纤转以太网等复杂网络环境中得到成功应用。 二、核心功能特点 功能 详细说明 2路以太网口 10/100Mbps自适应,支持AUTO-MDIX交叉直连自动切换 8路串口 每路串口支持RS232 / RS485 / RS422三种模式可切换 IP获取方式 DHCP / 静态IP两种方式 工作模式 TCP Server、TCP Client、UDP Client、UDP Server、Httpd Client、SSL Client共6种 双Socket功能 每路均支持双Socket,做Client时可向两个不同服务器发送数据 TCP Server连接数 最多支持16个Client同时连接 心跳包 & 注册包 自定义心跳包和注册包,保证连接真实可靠,杜绝死连接 ModbusTCP转RTU 支持ModbusTCP协议自动转换为ModbusRTU协议 超时重启/重连 无数据超时重启与超时重连,时间可自定义 MAC地址修改 MAC地址可修改,出厂烧写全球唯一MAC地址 DNS域名解析 支持DNS域名解析,DNS服务器地址可自定义设置 远程管理 支持远程监控、远程固件升级 DDNS动态域名 支持花生壳等DDNS动态域名解析功能 时间同步 支持网络时间同步+内建RTC实时时钟 计划任务 用户可自定义定时执行设备相关指令 配置方式 网页配置、设置软件配置、AT指令配置三种方式 虚拟串口 配套USR-VCOM虚拟串口软件 VPN-PPTP 支持PPTP协议VPN链接 GRE隧道 支持GRE隧道协议 恢复出厂 同时支持软件和硬件恢复出厂设置 三、技术参数 3.1 电气参数 分类 参数名称 数值 硬件参数 工作电压 AC 85~265V,50/60Hz 功耗 1.6W 网口规格 RJ45、10/100Mbps、交叉直连自适应 网口数量 2路 串口参数 串口规格 RJ45 串口数量 8路 × RS232/RS485/RS422 波特率范围 300~115200 bps 默认参数 None/8/1 软件参数 网络协议 IP、TCP/UDP、ARP、ICMP、IPv4、HTTP、SSL IP获取方式 静态IP / DHCP 域名解析 支持,可自定义DNS服务器地址 透传方式 TCP Server/TCP Client/UDP Server/UDP Client/Httpd Client/SSL Client 网络缓存 10KB,串口缓存10KB 3.2 其他参数 参数 数值 外壳防护等级 IP30 外形尺寸 482 × 185 × 45 mm(机架式) 工作温度 -40℃ ~ +85℃ 存储温度 -40℃ ~ +105℃ 工作湿度 5% ~ 95% RH(无凝露) 静电等级(EN61000-4-2) 等级4 脉冲群等级(EN61000-4-4) 等级4 浪涌等级(EN61000-4-5) 等级3 平均传输延时 ≥50ms 打包机制 50ms打包时间,1472字节打包长度 四、硬件介绍 4.1 拨码开关(串口模式切换) 设备背面有拨码开关设置窗口,需要使用十字花螺丝刀拆下螺丝才可以看到。共有16个拨码(8路串口 × 2个/路)。一次设置好后永久使用。 串口模式对应拨码设置 通信方式 拨码1(从左向右) 拨码2(从左向右) RS232 0(下) 0(下) RS485 1(上) 1(上) RS422 1(上) 0(下) 注意:以丝印为准,拨到上面代表1,拨到下面代表0;出厂默认均为RS485模式(11) 4.2 串口引脚定义(RJ45接口) 序号 名称 功能说明 1 232_TX / 422_Z / 485_B1 232发送;422信号Z;485信号B 2 232_RX / 422_A1 232接收;422信号A 3 422_Y / 485_A1 422信号Y;485信号A 4 422_B1 422信号B 5 NC 空脚 6 GND 232信号地 7 NC 空脚 8 NC 空脚 注意:RS232/RS485/RS422三选一,同一时刻只能一种方式工作;需要正确的拨码开关配合;使用8芯网线+水晶头制作通信线缆 4.3 指示灯说明 指示灯名称 标识 颜色 状态描述 电源指示 PWR 红色 上电后常亮 工作指示 WORK 绿色 启动完成后循环闪烁(500ms亮/500ms灭) 状态指示 STATE 红色 功能未定义(预留) 就绪指示 READY 绿色 设备正常工作常亮;未工作长灭 串口发送×8 TXN 红色 串口N发送指示,有数据时闪烁 串口接收×8 RXN 绿色 串口N接收指示,有数据时闪烁 五、默认参数 项目 默认值 用户名 admin 密码 admin IP地址 192.168.0.7 子网掩码 255.255.255.0 默认网关 192.168.0.1 工作模式 TCP Server 目标端口 20001 ~ 20008(第1~8路) 本地端口 20001 ~ 20008(第1~8路) 目标IP 192.168.0.201 串口波特率 115200 串口参数 None/8/1 六、工作模式详解 6.1 TCP Client 工作方式 主动发起连接:作为客户端主动向服务器发起连接请求并建立连接 KeepAlive保活:首次在60s无数据等待后发送探查包,检测异常断开(公式: 60+5*3=75秒检测周期) 适用场景:设备与服务器的数据交互,最常用的联网通信方式 本地端口建议:设为0,使用随机端口号避免被屏蔽 跨公网要求:服务器需有公网IP或域名 6.2 TCP Server 工作方式 被动监听:主动监听设置的本地端口,响应连接请求 最大连接数:最多接受16个Client同时连接(本地端口不可设为0) 广播机制:串口收到数据后同时发送给所有已连接的Client 适用场景:局域网内多台电脑/手机同时访问设备 跨公网:需在路由器做端口映射 6.3 UDP Client 工作方式 无连接传输:无需建立连接,只需指定IP和端口即可发送数据 定向通信:只与目标IP的目标端口通讯 广播支持:目标设255.255.255.255实现全网段广播(固件4015+支持xxx.xxx.xxx.255网段广播) 不支持组播 6.4 UDP Server 工作方式 不验证来源IP:收到UDP数据后将目标改为来源IP/端口 最近通信:发送数据发给最近通讯的那个IP和端口 适用场景:多台网络设备高速通信且不想用TCP的场景 6.5 Httpd Client 工作方式 串口转HTTP:通过串口发送请求数据到指定HTTP服务器 自动添加头信息:URL和包头信息由668自动添加 返回数据处理:可选择是否去掉包头后发至串口 6.6 SSL Client 工作方式 加密传输:支持在TCP连接上的SSL加密 免选加密方式:无需手动选择加密参数 七、特色功能详解 7.1 SocketB 双通道功能 除主Socket透传外,还有一路SocketB功能。串口收到的数据同时发向SocketA与SocketB,反之亦然。可用于数据备用链路,工作机制与SocketA一致。 7.2 心跳包功能 参数 说明 心跳方向 可向网络端发送或向串口端发送(不同时运行) 自定义内容 最长40字节 默认间隔 30秒(范围1~65535秒) 生效模式 TCP Client和UDP Client模式 7.3 注册包功能 类型 说明 连接注册包 连接建立后立即发送,用于识别设备来源或授权验证 数据携带注册包 在数据最前端接入注册包,用于协议传输 全注册 以上两种都执行 MAC注册包 连接建立时发送6字节MAC地址 自定义注册包最长40字节,支持十六进制输入 7.4 ModbusTCP 转 ModbusRTU 适用于串口侧为ModbusRTU协议、网络侧为ModbusTCP协议的数据转换场景。默认关闭,可通过网页开启。在高频数据采集中性能良好。 7.5 VPN-PPTP 与 GRE 隧道 PPTP:支持MPPE/MPPE-128加密;PAP/CHAP/MSCHAP/MSCHAPv2身份验证;LCP间隔默认300秒;MTU默认1500 GRE:设置远端地址、本地地址、远端隧道地址、本地隧道地址四个参数 八、AT指令配置 8.1 进入AT命令模式 在UART上输入"+++",模块返回确认码"a" 在UART上输入确认码"a",模块返回"+OK",进入命令模式 注意:输入"+++"和"a"没有回显;T1需大于串口打包间隔;T2/T3小于300ms;T5小于3秒 8.2 常用AT指令 指令 功能描述 AT+WANN 设置和查询IP获取方式、IP/子网掩码/网关参数 AT+DNS 设置和查询DNS服务器地址 AT+SOCK 设置Socket工作方式/目标IP/目标端口 AT+RELD 恢复出厂设置 AT+ENTM 退出命令模式回到透传模式 8.3 错误码列表 错误码 说明 -1 无效的命令格式 -2 无效的命令 -3 无效的操作符 -4 无效的参数 -5 操作不允许 九、恢复出厂设置方法 硬件按键:按下Reload按键5s~15s之间即可恢复出厂(小于5s或超过15s不执行) 设置软件:通过设置软件的恢复出厂功能 AT指令:进入AT指令模式,输入 AT+RELD 网页登录:点击网页的恢复出厂按钮 十、快速入门指南 10.1 硬件准备清单 USR-N668 设备 × 1 AC220V 电源线 × 1 母对母串口线 × 1 DB9-M转RJ45 × 1 网线 × 2 电脑一台(自带RS232口或USB转232转换器) 10.2 连接步骤 将N668串口通过串口线与计算机连接 用网线将668网口和PC网口连接 确认硬件连接无误后接入电源适配器供电 通过背面拨码窗口确认当前串口模式(出厂默认RS485) 10.3 网络环境检查 关闭电脑防火墙和杀毒软件 关闭无关网卡,只保留一个本地连接 如直连PC,需设置静态IP与668在同一网段(如192.168.0.201) 10.4 默认测试流程 打开"USR-TCP232-Test.exe"调试助手 网络区选择TCP Client模式,目标IP: 192.168.0.7,端口: 20001 串口设置为115200, None/8/1,打开串口 在串口和网络间双向收发数据进行透传测试 十一、资料下载 产品型号:USR-N668 V1.0.5 说明书文件:USR-N668_V1.0.5.pdf 官方网址:www.usr.cn(济南有人物联网技术有限公司) 用户支持中心:http://h.usr.cn 技术热线:4000-255-652 / 0531-88826739 邮箱:sales@usr.cn 十二、应用场景 银行系统网络终端接入 高速公路ETC/收费系统串口设备联网 大型企业网络中的PLC/仪表/传感器联网 视频监控系统串口控制设备网络化 光纤转以太网的复杂网络环境 工厂自动化生产线串口设备远程监控 智能楼宇/门禁/考勤系统联网 医疗设备串口数据采集上传 --- ### 587. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 HA 温度压差二合一传感器PRT01 快速响应压力变化,且性能稳定。在工业生产中管道压力频繁波动,或养殖车间、负压病房环境易受外界因素干扰的情况下,可及时准确地反馈压力信息。 资料下载 请点击页面下部资源地址按钮,获取下载链接! 请根据文件路径找到自己需要的资料。 文件路径 /请点开我/2-后期资料/A、软件·协议·接线/ C-134 Mdobus协议表 特别注意事项 无 相关视频 温度压差2合一传感器PRT01介绍 产品图片 --- ### 588. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介 梦幻电动窗帘是一款支持窗帘叶片角度调节,同时支持开合控制的高品质电动窗帘产品。采用RS485总线通讯方式,支持软起动功能,配备433MHz无线遥控器。 适用场景:智能家居、办公室、酒店客房、阳光房等对遮光和调光有较高要求的场所。建议对电动窗帘品质需求较高的用户选用该型号。 二、核心特点 双电机独立驱动——开合调节与叶片角度调节分别由两个独立电机驱动,互不干扰,运行更稳定 电机轨道分离设计——电机与轨道采用分离式结构,安装维护更加便捷,更换电机无需拆卸整根轨道 磁吸中间对接——轨道拼接处采用磁吸式中间对接件,多段轨道连接稳固可靠 170°大范围调光——叶片左右调节角度可达170°,从完全闭合到全开,精准控制室内光线 多种通讯方式——同时支持RS485总线通讯、433MHz无线遥控、有线控制,灵活接入各种智能系统 软起动保护——电机启动时采用软起动算法,减少机械冲击,延长使用寿命 三、技术参数 参数项目参数值参数项目参数值 产品名称梦幻电动窗帘无线频率433MHz 通讯方式总线 / 无线 / 有线资料索引C-66 发布日期2024年7月左右调节角度170° 工作电压220V AC软起动支持 材质硬质铝合金 四、全套配件清单(以3米为例) 电机和轨道——1套(含内置双电机) 墙壁插座——1个(86型面板插座) 三相插头——1个(220V电源接头) 8芯水晶头线——1根(RS485总线通讯线) 遥控器——1个(433MHz无线遥控,注:批次外观可能略有差异,以实物为准) 提示:不同长度的窗帘配置略有差异,具体以实际发货为准。 五、接线说明 梦幻电动窗帘采用8P水晶座(RJ45接口)进行接线,引脚定义如下: 引脚编号功能定义 天线无线天线接口 指示灯状态指示灯(用于配对时观察状态) 对码键遥控器对码按钮 5公共线 6485A+(RS485信号正极) 7485B-(RS485信号负极) 8公共线 注意:公共线5和公共线8的功能相同,接其中任意一条即可,不需要同时接两根。 六、RS485总线控制协议 6.1 基本通信参数 波特率:9600 bps 停止位:1位 数据位:8位 奇偶校验:无 6.2 地址修改 默认设备地址为 0xFEFE(即0XFEFE)。修改设备地址的指令格式如下: 方向起始码设备地址功能数据地址数据长度数据CRC16 主机发送55000002000212(ID_L)34(ID_H)507F 设备返回55起始码设备地址功能数据地址数据长度CRC16 5512340200029A2C 重要说明: ID_H 不能设置为 0x00 或 0xFF;ID_L 也不能设置为 0x00 或 0xFF 执行写设备地址前,先按住电机设置键5秒,等蜂鸣鸣两次后松开按键,成功后电机会转动提示 操作不成功时设备地址保持原地址不变 恢复出厂设置的默认地址为 0xFEFE 6.3 控制协议指令集 (1) 控制协议 — 打开窗帘 方向起始码设备地址功能数据地址CRC16 主机发送5512 340301AD 8A 设备返回5512 340301AD 8A (2) 控制协议 — 暂停 方向起始码设备地址功能数据地址CRC16 主机发送5512 340301AD 8A 设备返回5512 340301AD 8A (3) 控制协议 — 关闭窗帘 方向起始码设备地址功能数据地址CRC16 主机发送5512 3403032C 4B 设备返回5512 3403032C 4B (4) 控制协议 — 百分比控制 方向起始码设备地址功能数据地址CRC16 主机发送5512 340302ED 8B 设备返回5512 340302ED 8B (5) 控制协议 — 删除行程 方向起始码设备地址功能数据地址数据信息CRC16 主机发送5512 3403041EC8 E5 设备返回5512 3403041E / FF*08 AD *当设备没有设置行程时,返回 0xFF,电机不动作。 (6) 控制协议 — 恢复出厂模式 方向起始码设备地址功能数据地址CRC16 主机发送5512 3403086D 8C 设备返回5512 3403086D 8C *恢复出厂设置后,电机所有设置都恢复为默认状态,所有保存数据会被清除。设备地址恢复为 0xFEFE,行程删除。 七、手机APP添加使用 梦幻电动窗帘支持通过手机APP进行远程控制和自动化管理,添加步骤如下: 首先添加梦幻帘常用按键到主机按钮 然后进入APP添加智能遥控器设备 在"添加设备"界面选择:环境设备 → 窗帘设备 → 智能遥控 填写设备名称(如"梦幻窗帘") 可以选择添加摄像头,集成一个页面统一管理 遥控器按键可自定义选择梦幻帘的控制按钮(左调光、右调光、停止等) 点击保存完成添加 添加完成后即可通过APP实现远程开合、调光控制。 八、开合方式选择 梦幻电动窗帘支持两种开合模式,下单前请根据窗户位置确认: 8.1 单开模式 控制器在左 / 向左靠拢——窗帘从右向左收拢(叶片向左叠合),适用于控制器安装在左侧的情况 控制器在右 / 向右靠拢——窗帘从左向右收拢(叶片向右叠合),适用于控制器安装在右侧的情况 8.2 双开模式 控制器在左端——单支轨道从中间向两侧对称打开(叶片向两侧展开) 控制器在右端——单支轨道从中间向两侧对称打开(叶片向两侧展开) 备注:双开解释指帘布从轨道正中间像窗户两侧打开或闭合,是常规窗帘开合设计方案。单开解释指帘布从一个向另外一侧闭合或打开,适用于单面窗户宽度小于1.5米的窗帘。 九、安装方法(详细图文教程) 以下为梦幻电动窗帘的标准安装流程,共10个步骤: 第一阶段:固定安装码 测量并标记安装打码位置——用卷尺测量天花板或墙面,标记安装码最大间距500mm,需保证直线平齐 用电钻打孔并放置尼龙膨胀钉——水泥墙面使用膨胀钉,木板墙面可省略此步骤 用螺丝固定安装码——根据安装需求可选择墙装(侧装)或顶装方式,将弹性安装码用螺丝固定到位 将垂直帘轨道推入卡住——将轨道沿一侧顶部边槽卡入安装码内勾槽,确认卡紧 用力往里推到底——用手将轨道往里推并将朝人一侧用力往上抬,直至听到"啪嗒"一声,表示已卡牢 确认所有安装码都已卡住——逐一检查每个安装码是否完全咬合到位 第二阶段:挂布与接线 将面料逐片挂上走珠——按顺序将梦幻帘面料片逐片挂载到轨道走珠上 接线——危险动作!需要专业电工操作,请按照第五节接线说明连接电源线和RS485通讯线 接通电源——将电源插头插入预留插座 调试遥控——使用遥控器测试开合和调光功能,确认一切正常后安装完成 十、遥控器使用方法 10.1 遥控器按键说明 梦幻电动窗帘配备专用无线遥控器,各按键功能如下: 液晶屏——显示当前状态信息 旋转停止键——旋转调节叶片角度,按下立即停止当前动作 帘片旋转键——单独控制帘片(叶片)翻转角度 开合停止键——控制窗帘开合运动,再次按下停止 窗帘开合键——一键全开或全合 选码键——用于选择遥控器频道(配合对码使用) 对码键(背面)——与电机配对绑定 设置键(背面)——进入设置模式(行程设置、速度调整等) 10.2 遥控器配对步骤 按住电机设置键约5秒,听到蜂鸣声后指示灯亮起,然后松开按键 按遥控器"选码键"之一,选择合适的遥控器频道。遥控器频道确认后,点按遥控器背面的对码键,此时电机指示灯熄灭,表示对码成功 读码后按遥控器,电机将自动运行定位 10.3 取消配对步骤 如需解除遥控器与电机的绑定关系: 按住电机设置键约5秒,指示灯亮起后松开 再按住电机设置键约7秒,电机指示灯熄灭,表示已清除遥控记忆 10.4 切换运行方向 如果窗帘开合方向与预期相反: 长按电机设置键3~5秒,电机指示灯亮起 不要松手,继续按住直到电机指示灯闪烁一次 松手后电机换向完成 10.5 调光行程设置 对码完成后,按以下步骤设置叶片调光(翻转)行程: 先按遥控器窗帘开合键将窗帘关闭 长按遥控器开合停止键3~5秒左右,电机来回运行一次后松手 再长按遥控器左旋转键3~5秒左右,电机来回运行后松手 最后短按一下遥控器左旋转键,电机开始自动进行调光行程设置 电机调光至180°后回到90°,调光行程设置完成 10.6 清除行程 长按遥控器背面右侧的设置键3~5秒,电机来回抖动一次,清除行程成功。 10.7 翻片速度和开合速度调节 电机翻片/开合速度各分为3个档位: 1档——最慢速 2档——中等速度 3档——最快速度(根据轨道长度来选择合适档位,速度越快则表示电机气力越大) 电机出厂设置默认翻片/开合速度为1档。调速步骤如下: 轨道组装完成后,将电机扣入传动箱通电 遥控器选择合适的频道对码,对码完成后选择电机与遥控器相对应的频道 长按遥控器背后的学码键3~5秒,电机指示灯长亮,然后松手 注意:按遥控器翻片停止键是调翻片速度,按遥控器开合停止键是调开合速度,两者不能同时进行,需要单独调试 短按一次遥控器的翻片停止键(或开合停止键),电机指示灯闪烁一次,则切换至2档 再短按一次电机指示灯闪烁一次,则切换至3档 1、2、3档位循环选择,选定合适的档位后,长按遥控器背后的学码键3~5秒,电机指示灯闪烁表示调速成功 (开合调速同理,两者需要单独进行) 十一、注意事项 提前预留好电源窗帘宽度安装长度小于6米留一个电源(左侧或者右侧都可以);窗户宽度安装长度大于6米留2个或更多电源,左右两端各预留一个电源(具体按实际情况确定)电源位置需预留在轨道端头安装位置的20cm范围内 窗帘盒要求——建议安装窗帘盒,窗帘盒宽度大于18cm以上 最佳窗宽——安装以宽度大于3米以上窗型效果更佳 轨道分单开和双开两种开合方式• 双开解释:帘布从轨道正中间像窗户两侧打开或闭合(常规窗帘开合设计方案)• 单开解释:帘布从一个向另外一侧闭合或打开(适用于单面窗户宽度小于1.5米的窗帘) 搬运提醒:单开轨道只能做整根轨道,做超过3米的单开轨道要考虑是否方便轨道拿上楼(电梯宽度和楼道宽度是否足够),可采用吊机吊上楼 尺寸参考:轨道至走珠的高度可按 7.5cm 扣减计算 窗帘盒预留尺寸:单轨预留30cm窗帘盒深度,双轨预留50cm窗帘盒深度 定制产品:由于窗帘布和轨道都属于定制产品,还请提前准确测量好尺寸 十二、资料下载 请点击页面下部资源地址按钮,获取下载链接!请根据文件路径找到自己需要的资料。 文件路径:/请点开我/2-后期资料/A、软件·协议·接线/C-全部协议/C-66 梦幻窗帘代码 十三、相关视频教程 梦幻帘教程之调节垂直帘走珠方向 梦幻帘之垂直帘中分组装教程 梦幻帘之现场安装教程 梦幻帘之485调试讲解视频 梦幻帘之遥控器对码 梦幻帘布料样品册展示 十四、产品图片展示 梦幻电动窗帘产品主图展示 梦幻电动窗帘功能背景介绍 产品参数规格表 四大功能优点说明 3米全套配件清单 8P水晶座接线示意图 总线控制地址修改方法 RS485控制协议完整指令帧 APP添加智能遥控器教程 梦幻帘纱质面料垂顺效果实景 梦幻帘半透明纱质纹理近景 客厅落地窗安装全景效果 铝合金轨道三种调光状态 电机隐藏式设计与安装码支架 单开双开四种开合方式选择 安装步骤1-4打孔固定轨道 安装步骤5-10挂布接线通电 遥控器按键说明与配对操作 取消配对切换方向调光行程设置 翻片调速与注意事项 --- ### 589. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 NeoSerial:现代化串口通信工具的全面指南 引言 在工业控制、嵌入式开发和设备调试领域,串口通信一直是不可或缺的基础技术。尽管网络通信技术快速发展,但串口通信因其简单、可靠、成本低的特性,在特定场景下仍然具有不可替代的地位。NeoSerial作为新一代串口通信工具,将传统串口通信与现代软件工程理念相结合,为开发者提供了全新的串口通信体验。 NeoSerial的设计理念 1. 用户友好性优先 NeoSerial彻底改变了传统串口工具的复杂操作: - 直观的界面设计:所有功能一目了然,无需记忆复杂命令 - 智能配置向导:根据设备类型自动推荐最佳配置 - 实时状态反馈:通信状态、数据流量、错误信息实时显示 2. 功能全面性 多协议支持:支持RS-232、RS-422、RS-485等多种串口标准 多数据格式:ASCII、HEX、DECIMAL、BINARY等多种数据显示格式 多编码支持:UTF-8、GBK、BIG5等多种字符编码 核心功能详解 1. 串口管理 自动检测:自动检测系统所有可用串口 参数配置:波特率、数据位、停止位、校验位等参数可视化配置 历史配置:保存常用设备配置,一键切换 2. 数据通信 实时收发:双向数据实时显示 数据过滤:支持正则表达式过滤显示数据 数据高亮:不同类型数据不同颜色高亮显示 时间戳:每条数据附带精确时间戳 3. 数据分析 数据统计:收发数据量、速率等统计信息 波形显示:数据波形实时显示 协议解析:常见协议自动解析(Modbus、NMEA等) 数据导出:支持CSV、TXT、Excel等多种格式导出 技术架构创新 1. 高性能通信引擎 ```c++ // NeoSerial通信引擎核心架构 class SerialEngine { public: // 异步非阻塞通信 bool open(const SerialConfig& config); void readAsync(DataCallback callback); void writeAsync(const ByteArray& data); <pre><code>// 流量控制 void setFlowControl(FlowControlType type); // 错误处理 ErrorCode lastError() const; </code></pre> }; <pre><code><br />### 2. 插件化架构 - **协议插件**:可扩展支持新协议 - **设备插件**:特定设备专用插件 - **分析插件**:自定义数据分析插件 - **导出插件**:自定义数据导出格式 ### 3. 跨平台支持 - **Windows**:完整支持COM端口 - **Linux**:支持ttyUSB、ttyS等设备 - **macOS**:支持cu.*、tty.*设备 - **嵌入式**:支持ARM平台交叉编译 ## 安装与配置 ### 系统要求 - **操作系统**:Windows 7+/Linux 2.6+/macOS 10.12+ - **内存**:最低512MB,推荐1GB - **存储空间**:100MB可用空间 ### 快速安装 ```bash # Windows安装 NeoSerial_Setup.exe /SILENT # Linux安装 sudo apt-get install neoserial # 或 sudo yum install neoserial # macOS安装 brew install neoserial 首次配置 启动NeoSerial 选择串口:从列表中选择要使用的串口 配置参数:设置波特率等通信参数 测试连接:发送测试数据验证连接 使用场景 1. 嵌入式开发调试 # Python脚本示例 import neoserial # 创建串口对象 ser = neoserial.Serial('/dev/ttyUSB0', 115200) # 发送AT命令 ser.write('AT+CGMR\r\n') # 读取响应 response = ser.read(timeout=1000) print(f"设备响应: {response}") # 自动解析响应 if ser.parse_response(response): print("命令执行成功") else: print("命令执行失败") 2. 工业设备监控 PLC通信:与PLC设备进行数据交换 传感器采集:采集温度、压力等传感器数据 设备控制:发送控制指令到执行机构 3. 物联网设备管理 设备配置:配置物联网设备参数 固件升级:通过串口升级设备固件 日志收集:收集设备运行日志 4. 教学与实验 通信原理教学:直观展示串口通信过程 协议分析实验:分析各种通信协议 故障排查练习:模拟各种通信故障 高级功能 1. 脚本自动化 // JavaScript自动化脚本 const neo = require('neoserial'); // 自动化测试脚本 async function runTest() { const port = await neo.openPort('COM3', { baudRate: 9600, dataBits: 8, stopBits: 1, parity: 'none' }); // 发送测试序列 const tests = [ {command: 'AT', expected: 'OK'}, {command: 'AT+CSQ', expected: /\+CSQ:/}, {command: 'AT+CGSN', expected: /\d+/} ]; for (const test of tests) { const response = await port.sendCommand(test.command); if (test.expected.test(response)) { console.log(`✓ ${test.command} 测试通过`); } else { console.log(`✗ ${test.command} 测试失败`); } } await port.close(); } 2. 数据记录与回放 会话记录:完整记录通信会话 数据回放:回放记录的通信过程 比较分析:比较不同会话的数据差异 3. 远程访问 Web界面:通过浏览器远程访问 API接口:RESTful API控制串口 团队协作:多人同时监控同一串口 性能优化 1. 内存优化 零拷贝技术:减少数据复制开销 内存池:预分配内存,减少动态分配 数据压缩:大容量数据实时压缩 2. CPU优化 事件驱动:基于事件的高效处理 多核利用:充分利用多核CPU性能 异步IO:非阻塞IO操作 3. 网络优化 数据缓冲:智能数据缓冲策略 流量控制:自适应流量控制算法 错误恢复:快速错误检测与恢复 安全特性 1. 访问控制 权限管理:多级用户权限控制 操作审计:完整记录所有操作 会话加密:敏感会话数据加密 2. 数据安全 数据加密:支持AES加密传输 完整性校验:数据完整性验证 防篡改:防止数据被恶意篡改 3. 系统安全 沙箱运行:插件在沙箱中运行 资源限制:限制插件资源使用 安全更新:自动安全更新机制 实际应用案例 案例1:智能家居网关调试 某智能家居公司使用NeoSerial调试Zigbee网关: - 调试效率:调试时间从2天缩短到2小时 - 问题发现:提前发现硬件兼容性问题 - 成本节约:减少30%的售后支持成本 案例2:工业机器人通信 某机器人制造商使用NeoSerial调试机器人控制器: - 通信稳定性:通信成功率从95%提升到99.9% - 调试精度:精确到毫秒级的时序调试 - 生产效率:生产线调试时间减少50% 案例3:医疗设备维护 某医院使用NeoSerial维护医疗设备: - 设备可用性:设备正常运行时间提升20% - 维护效率:故障排查时间减少70% - 安全性:确保医疗设备通信安全 与传统工具对比 特性 传统串口工具 NeoSerial 优势 用户界面 命令行/简单GUI 现代化GUI +300% 协议支持 基本协议 扩展协议支持 +200% 数据分析 基本显示 高级分析功能 +400% 自动化 有限脚本 完整脚本支持 +500% 跨平台 平台特定 真正跨平台 +100% 性能 一般 优化性能 +150% 未来发展方向 1. 人工智能集成 智能故障诊断:AI自动诊断通信问题 预测性维护:预测设备通信故障 自适应优化:根据使用习惯自动优化配置 2. 云端协同 云端配置同步:多设备配置云端同步 远程协作:专家远程协助调试 知识库共享:故障解决方案共享 3. 生态扩展 更多硬件支持:支持更多串口硬件 行业解决方案:特定行业定制版本 教育版本:针对教学场景优化 总结 NeoSerial代表了串口通信工具的发展方向——在保持传统串口通信可靠性的基础上,通过现代化软件工程方法大幅提升用户体验和功能丰富度。它不仅是一个工具,更是一个完整的串口通信解决方案平台。 对于嵌入式开发者、工业自动化工程师、物联网开发者等专业人士来说,NeoSerial能够显著提升工作效率,降低工作复杂度,是现代串口通信工作的理想选择。 随着物联网和工业4.0的深入发展,串口通信技术将继续发挥重要作用,而NeoSerial将持续演进,为用户提供更加强大、智能、易用的串口通信体验。 关键词:NeoSerial, 串口通信, 串口工具, 设备调试, 嵌入式开发, 工业自动化 分类:技术文章 标签:NeoSerial, 串口通信, 调试工具, 嵌入式, 物联网, 自动化 --- ### 590. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 NeoModbus:新一代工业物联网通信工具全面解析 引言 在工业自动化领域,Modbus协议作为最广泛应用的通信标准,已经服务了工业界数十年。然而,随着工业物联网(IIoT)的快速发展,传统Modbus工具在功能、性能和用户体验方面逐渐显现出局限性。NeoModbus应运而生,作为新一代Modbus通信工具,它重新定义了工业设备通信的标准。 NeoModbus的核心特性 1. 现代化用户界面 NeoModbus摒弃了传统工具的复杂命令行界面,采用了直观的图形化操作界面: - 拖拽式设备配置:通过简单的拖拽操作完成设备连接配置 - 实时数据可视化:数据以图表形式实时展示,支持多种图表类型 - 多窗口管理:支持同时监控多个设备,界面布局可自定义 2. 增强的协议支持 除了标准的Modbus RTU/TCP协议外,NeoModbus还支持: - Modbus ASCII:兼容传统ASCII格式通信 - Modbus Plus:支持高速工业网络 - 自定义协议扩展:用户可自定义协议解析规则 3. 智能化功能 自动设备发现:自动扫描网络中的Modbus设备 智能寄存器映射:自动识别寄存器类型和数据类型 异常检测与报警:实时监控通信状态,异常时自动报警 技术架构创新 1. 高性能通信引擎 NeoModbus采用异步非阻塞通信架构: - 多线程并发处理:支持同时与数百个设备通信 - 通信优化算法:智能调度通信请求,减少网络延迟 - 断线重连机制:网络异常时自动重连,保证通信连续性 2. 数据持久化存储 历史数据记录:完整记录所有通信数据 数据压缩存储:采用高效压缩算法,节省存储空间 快速数据检索:支持按时间、设备、寄存器等多维度查询 3. 安全增强 通信加密:支持TLS/SSL加密通信 访问控制:多级权限管理,确保操作安全 操作审计:完整记录所有操作日志 应用场景 1. 设备调试与维护 快速设备测试:一键测试设备通信状态 寄存器读写测试:方便调试寄存器配置 批量设备管理:同时管理多个同类设备 2. 数据采集与监控 实时数据采集:高频率采集设备数据 数据趋势分析:分析设备运行趋势 异常预警:提前发现设备异常 3. 系统集成 API接口:提供RESTful API,方便系统集成 数据导出:支持CSV、Excel、JSON等多种格式 第三方集成:与SCADA、MES等系统无缝集成 安装与配置 系统要求 操作系统:Windows 10/11, Linux, macOS 内存:最低4GB,推荐8GB 存储空间:500MB可用空间 安装步骤 下载安装包:从官网下载对应系统版本的安装包 运行安装程序:按照向导完成安装 首次配置:启动后配置基本参数 添加设备:通过设备发现或手动添加设备 快速开始 # 启动NeoModbus ./neomodbus start # 扫描网络设备 ./neomodbus scan --network 192.168.1.0/24 # 连接设备 ./neomodbus connect --device 192.168.1.100 --port 502 使用案例 案例1:工厂设备监控 某制造企业使用NeoModbus监控生产线上的100台PLC设备: - 实施前:需要3名工程师手动监控,响应延迟大 - 实施后:1名工程师即可监控所有设备,实时报警 - 效果:设备故障响应时间从2小时缩短到10分钟 案例2:能源管理系统 某商业建筑使用NeoModbus采集能源数据: - 采集点:电表、水表、空调系统等200个采集点 - 数据频率:每5分钟采集一次 - 节能效果:通过数据分析,实现15%的能源节约 案例3:实验室设备集成 某研究机构使用NeoModbus集成多种实验设备: - 设备类型:温度控制器、压力传感器、流量计等 - 数据整合:统一数据格式,便于分析 - 研究效率:数据采集效率提升300% 高级功能 1. 脚本自动化 NeoModbus支持Python脚本自动化: from neomodbus import Client # 创建客户端 client = Client('192.168.1.100', 502) # 读取寄存器 data = client.read_holding_registers(0, 10) # 写入寄存器 client.write_single_register(0, 100) # 批量操作 client.batch_operation([ {'type': 'read', 'address': 0, 'count': 5}, {'type': 'write', 'address': 10, 'value': 50} ]) 2. 插件系统 自定义协议插件:开发特定设备的通信插件 数据分析插件:扩展数据分析功能 报表生成插件:定制化报表输出 3. 云端同步 数据云端备份:自动同步数据到云端 远程访问:通过Web界面远程访问 团队协作:多人协同操作同一项目 性能对比 功能 传统工具 NeoModbus 提升幅度 最大连接数 50 500 900% 数据采集频率 1秒 100毫秒 900% 内存占用 200MB 50MB -75% 启动时间 10秒 2秒 -80% 学习曲线 陡峭 平缓 -70% 未来发展方向 1. AI增强 智能故障预测:基于机器学习预测设备故障 自动优化建议:根据运行数据提供优化建议 自适应通信:根据网络状况自动调整通信策略 2. 边缘计算 边缘数据处理:在设备端进行初步数据处理 本地决策:减少云端依赖,提高响应速度 离线运行:网络异常时仍可正常运行 3. 生态扩展 更多协议支持:扩展支持OPC UA、MQTT等协议 硬件适配:支持更多硬件平台 行业解决方案:针对特定行业的定制化方案 总结 NeoModbus作为新一代工业物联网通信工具,不仅在性能上大幅超越传统工具,更重要的是在用户体验、功能扩展和系统集成方面实现了质的飞跃。它代表了工业通信工具的发展方向——更加智能、更加易用、更加强大。 对于工业自动化领域的从业者来说,NeoModbus不仅是一个工具,更是一个生产力平台。它能够显著提升工作效率,降低运维成本,为工业物联网的发展提供坚实的技术支撑。 随着工业4.0和智能制造的深入推进,NeoModbus将继续演进,为工业自动化领域带来更多创新和价值。 关键词:NeoModbus, 工业物联网, Modbus工具, 设备通信, 数据采集, 工业自动化 分类:技术文章 标签:NeoModbus, 工业物联网, Modbus, 通信工具, 自动化 --- ### 591. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 新S1控制器是基于S2最新版进行深度修改的全新产品,与旧版S1在功能和设计上并无直接关联。它继承了S2新版程序的大部分功能,如缓启缓停等,但移除了WIFI模块及其相关联网功能。新S1控制器在电压范围、接口功能、通讯能力等方面进行了全面升级,旨在满足更广泛的工业自动化控制需求。 二、产品特点 (一)电气性能升级 电压范围:新S1控制器支持的电压范围为10V-48V,相比旧版产品,其适用场景更加广泛,能够兼容更多类型的电源设备。同时,相关器件的耐压值也进行了升级,确保在高电压环境下稳定运行。 电流承载能力:控制器的最大电流承载能力为10A,可满足较高功率电机的驱动需求,适用于中等负载的电机控制场景。 (二)功能优化与调整 移除WIFI模块:新S1控制器移除了易微联WIFI模块,因此不再具备联网功能。原WIFI配对键和WIFI指示灯分别改为遥控配对键和433学习指示灯,以适应新的功能需求。 433接收模块调整:433接收模块的位置从原位置移动至原易微联WIFI模块的位置,其功能保持不变,但指示灯逻辑与433接收板上的灯保持一致,便于用户直观判断模块工作状态。 新增485串口通讯功能:新S1控制器新增了RS485串口通讯功能,通过寄存器指令实现对电机状态、限位、PWM占空比等参数的查询和设置。具体寄存器功能如下: 寄存器0:查询电机状态(1表示停止,2表示正转,4表示反转)。 寄存器1:运行指令(1表示停止,2表示正转,4表示反转)。 寄存器2:查询IN3限位状态(0表示限位已生效,1表示限位未生效)。 寄存器3:查询IN4限位状态(0表示限位已生效,1表示限位未生效)。 寄存器4:查询/修改设备号(范围为1-255)。 寄存器5:读取/设置反转PWM占空比(范围为20-93,用于调压)。 寄存器6:读取/设置正转PWM占空比(范围为20-93,用于调压)。 寄存器7:设置正反转PWM占空比(范围为20-93,用于调压)。 寄存器8:查询电机当前电流值(单位为mA)。 新增485终端电阻:板子上预留了120Ω终端电阻,用户可以通过短接预留空焊盘启用终端电阻,以优化RS485通讯链路的信号完整性。 新增接口:新增了一个3P-2.54-排母接口,用于RS485的A+、B-、GND信号连接。其余接口与S2一致,包括DC母座、M+、M-、IN5、VCC(12V 300mA)、IN1(正转)、IN2(反转)、IN3(反转限位)、IN4(正转限位)。 (三)通讯协议 新S1控制器采用Modbus协议进行RS485通讯。以下是部分典型指令的格式和说明: 查询电机状态: 发送报文:01 03 00 00 00 01 84 0A 响应报文: 停止:01 03 02 00 01 79 84 正转:01 03 02 00 02 39 85 反转:01 03 02 00 04 B9 87 写入停止指令: 发送报文:01 06 00 01 00 01 19 CA 响应报文:01 06 00 01 00 01 19 CA 查询IN3限位: 发送报文:01 03 00 02 00 01 25 CA 响应报文: 限位已生效:01 03 02 00 00 B8 44 限位未生效:01 03 02 00 01 79 84 查询IN4限位: 发送报文:01 03 00 03 00 01 74 0A 响应报文: 限位已生效:01 03 02 00 00 B8 44 限位未生效:01 03 02 00 01 79 84 查询设备号: 发送报文:01 03 00 04 00 01 C5 CB 响应报文:01 03 02 00 01 79 84 写入设备号: 发送报文:01 06 00 04 00 02 49 CA 响应报文:01 03 02 00 02 39 85 查询反转PWM占空比: 发送报文:01 03 00 05 00 01 94 0B 响应报文:01 03 02 00 5D 79 BD(表示93%占空比) 写入反转PWM占空比: 发送报文:01 06 00 05 00 5D 58 32 响应报文:01 06 00 05 00 5D 58 32 查询正转PWM占空比: 发送报文:01 03 00 06 00 01 64 0B 响应报文:01 03 02 00 5D 79 BD 写入正转PWM占空比: 发送报文:01 06 00 06 00 5D A8 32 响应报文:01 06 00 06 00 5D A8 32 写入正反转PWM占空比: 发送报文:01 06 00 07 00 5D F9 F2 响应报文:01 06 00 07 00 5D F9 F2 查询电机当前电流值: 发送报文:01 03 00 08 00 01 05 C8 响应报文:01 03 02 00 00 B8 44 三、安装与调试 (一)硬件安装 电源连接:将电源线连接至DC母座,确保输入电压在10V-48V范围内。 电机连接:将电机的正转和反转控制线分别连接至IN1和IN2接口,限位信号线连接至IN3和IN4接口。 RS485通讯连接:使用3P-2.54-排母接口连接RS485通讯线,确保A+、B-、GND信号正确连接。如果需要启用终端电阻,短接预留空焊盘。 遥控配对:按下遥控配对键,完成遥控器与控制器的配对操作。 (二)软件调试 设备号设置:通过RS485通讯,使用Modbus协议写入指令设置设备号(寄存器4),确保每个控制器在通讯链路上具有唯一的设备号。 PWM占空比设置:根据实际需求,通过写入指令设置反转PWM占空比(寄存器5)、正转PWM占空比(寄存器6)和正反转PWM占空比(寄存器7),以实现电机调压控制。 功能测试:发送运行指令(寄存器1)控制电机正转、反转和停止,查询电机状态(寄存器0)、限位状态(寄存器2和寄存器3)以及电流值(寄存器8),验证控制器功能是否正常。 四、注意事项 电源电压:请确保输入电源电压在10V-48V范围内,避免因电压过高或过低导致控制器损坏。 RS485通讯:在RS485通讯链路中,确保终端电阻正确启用,以避免信号反射和通讯干扰。 遥控配对:遥控配对键仅用于遥控器与控制器的配对操作,配对完成后,该按键无其他功能。 限位功能:在使用限位功能时,确保限位信号线连接正确,并通过查询限位状态(寄存器2和寄存器3)验证限位功能是否正常工作。 PWM占空比范围:设置PWM占空比时,请确保值在20-93范围内,超出该范围可能导致电机控制异常。 五、售后服务 如在使用过程中遇到任何问题,请及时联系我们的售后服务中心。我们将为您提供专业的技术支持和售后服务,确保您的设备正常运行。 --- ### 592. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品简介与技术规格 核心功能 支持MODBUS RTU通信协议,便于集成至智能系统 双传感技术:红外+雷达检测,检测更精准 寄存器可读写,实现ID、延时、感应方式等灵活配置 安装简单,适合工程批量部署 通信参数 波特率:9600bps 数据位:8位 停止位:1位 校验位:无 指令间隔:≥100ms 安装与使用说明 通电自检 设备通电后自动进行10秒自检,若线路正确,发送一串数据码(示例:02 03 02 00 FC 44),前两位为当前ID地址。 获取ID地址 重新上电后,自发送数据的前两位即为当前ID。例如数据开头为“02”,则ID=2。 参数配置与寄存器说明 以下为感应器支持的关键参数及其寄存器地址(HEX格式): 寄存器地址参数名称属性说明取值范围0001感应器IDR/W设备地址,默认11-2550002有人保持时间R/W感应到人后保持时间,默认3秒1-255秒0003感应方式R/W0=或(OR),1=与(AND)0或10004LED状态R/W0=灭,1=亮0或10005发送方式R/W0=查询,1=主动0或10006红外状态R0=无人,1=有人-0007雷达状态R0=无人,1=有人-0008存在状态R0=无人,1=有人-0009感应范围R/W值越大范围越小,默认21-10 操作命令: 03H:读取寄存器数据 06H:写入单个寄存器数据 ID修改方法(简易操作) 按键方式 长按S1或ON/OFF键约3秒,LED进入快闪状态 通过485串口助手发送设定指令(示例): ID 2 改为 1:B4 C4 05 00 01 00 01 55 ID 2 改为 3:B4 C4 05 00 03 00 03 55 ID 2 改为 5:B4 C4 05 00 05 00 05 55 指令方式(MODBUS) 使用06H命令码,例如将ID2改为5: 发送:02 06 00 01 00 05 CHL CHH 返回:02 06 00 01 00 05 CHL CHH (CHL/CHH为CRC校验码,设备成功设定后LED闪烁5秒) 实际应用示例 查询感应状态(默认ID=2) 主机发送:02 03 00 06 00 01 64 38 有人回码:02 03 02 00 01 3D 84 无人回码:02 03 02 00 00 FC 44 修改有人保持时间 从3秒改为9秒: 发送:02 06 00 04 00 09 08 3E 切换发送方式 改为主动发送:02 06 00 05 00 01 58 38 改为查询模式:02 06 00 05 00 00 99 F8 常见问题(FAQ) Q1:如何恢复出厂ID?​ A1:使用简易ID修改方法,将ID设为2。 Q2:感应器无响应怎么办?​ A2:检查485接线、波特率设置,确认指令格式和校验码正确。 Q3:感应范围如何调节?​ A3:通过寄存器0009设置,数值越大,感应范围越小。 七、结语 24G毫米波雷达人体存在感应器是一款功能丰富、通信稳定的智能感应设备。支持MODBUS RTU协议,兼容多数工控与物联网系统,适用于多种自动化场景。如需技术支持,请联系泽泰智能客服。 --- ### 593. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 目录 协议说明 帧格式简介 寄存器定义 3.1 电参量 3.2 电能数据 3.3 电度结算日(月冻结) 3.4 合闸状态 3.5 重合闸事件 3.6 设备编号 & 通讯流量 3.7 基础配置 3.8 时区和费率配置 3.9 网络参数 3.10 告警阀值 3.11 远程控制 3.12 硬件故障状态 3.13 定时控制配置(阿德云专用定时) 3.14 定时控制配置(阿里云专用定时) 1. 协议说明 本通信规约是智能控制重合闸Modbus协议,便于用户采用Modbus指令读写设备参数和重合闸状态。本协议中,通讯的发送及返回值均为16进制数。 2. 帧格式简介 2.1 地址码 占1个字节;一个设备终端对应一个地址码,地址范围为 (1 \sim 247)((0x01 \sim 0xF7))。 2.2 功能码 占1个字节;根据标准Modbus协议的功能码定义,选用其中三个常用的基本功能码作为本协议的读写功能码。 2.3 数据域 功能码作用0x03读保持寄存器0x06写单个寄存器0x10写多个寄存器 数据域的格式由功能码决定。读寄存器(0x03)时,需要知道读取寄存器的起始地址和长度,因此数据域由寄存器的起始地址和寄存器数量组成;返回响应帧的数据域为对应范围寄存器中的字节数量和数据。一次读取寄存器数量不能超过80个。 2.3.1 0x03读寄存器帧格式 帧格式值/范围字节数地址码0~2471功能码0x031寄存器起始地址0~0xFFFF2寄存器数量N1~1252CRC 校验-2 2.3.2 0x06写单个寄存器帧格式 帧格式值/范围字节数地址码0~2471功能码0x061寄存器地址0~0xFFFF2寄存器值0~0xFFFF2CRC 校验-2 2.3.3 0x10写多个寄存器帧格式 帧格式值/范围字节数地址码0~2471功能码0x101寄存器起始地址0~0xFFFF2寄存器数量N1~1202数据长度2*N1寄存器值0~0xFFFF2*NCRC 校验-2 2.4 校验码 校验码采用CRC-16(生成多项式为A001)计算获得,低字节在前,高字节在后。 2.5 MODBUS异常响应帧 当设备接收到主站的请求帧,并成功执行请求帧的数据处理,则设备返回正常响应帧给主站;当设备未能成功接收到主站的请求帧,则不执行任何操作,也无返回,主站可以设定超时时间,作为设备故障的判断依据;当设备接收到主站的请求帧,但是请求帧的功能码或寄存器不符合数据定义要求时,设备无法执行请求帧的数据处理,则设备必须返回异常响应帧给主站,异常响应帧格式如下: 异常响应帧值/范围字节大小地址码0~2471功能码0x80 + 请求功能码1异常码01/02/031CRC 校验-2 异常码定义如下: 异常码名称含义01非法功能码请求帧的功能码未定义02非法寄存器请求帧的寄存器地址未定义03非法寄存器值请求帧的寄存器值或寄存器长度不符合定义的格式 3. 寄存器定义 3.1 电参量 读写属性字节长度16进制地址数据项数值范围数据类型单位Rword20000负载性质0-阻性,1-感性,2-容性-Rword20001电压不对称度-0.01%Rword20002电流不对称度-0.01%Rword20003电网频率4500~65000.01HzRword20004A相电压V10~655350.1VRword20005B相电压V20~655350.1VRword20006C相电压V30~655350.1VRword20007AB相电压V120~655350.1VRword20008BC相电压V230~655350.1VRword20009CA相电压V310~655350.1VRword2000AA相(线)电流I10~655350.01ARword2000BB相(线)电流I20~655350.01ARword2000CC相(线)电流I30~655350.01ARword2000D零线电流0~655350.01ARinteger2000E总有功功率Psum-32768~327680.01kWRinteger2000FA相有功功率P1-32768~327680.01kWRinteger20010B相有功功率P2-32768~327680.01kWRinteger20011C相有功功率P3-32768~327680.01kWRinteger20012总无功功率Qsum-32768~327680.01KVarRinteger20013A相无功功率Q1-32768~327680.01KVarRinteger20014B相无功功率Q2-32768~327680.01KVarRinteger20015C相无功功率Q3-32768~327680.01KVarRword20016总视在功率Ssum0~655350.01KVARword20017A相视在功率S10~655350.01KVARword20018B相视在功率S20~655350.01KVARword20019C相视在功率S30~655350.01KVARinteger2001A总功率因素PF-1000~10000.001Rinteger2001BA相功率因素PF1-1000~10000.001Rinteger2001CB相功率因素PF2-1000~10000.001Rinteger2001DC相功率因素PF3-1000~10000.001Rinteger2001E设备温度-32768~327680.1°Rword2001F剩余电流值0~655350.01mARinteger20020A相温度-32768~327680.1°Rinteger20021B相温度-32768~327680.1°Rinteger20022C相温度-32768~327680.1°Rinteger20023D相温度-32768~327680.1° 3.2 电能数据 读写属性字节长度16进制地址数据项数值范围数据类型单位RDword41000总有功电度Ep-total0-9999999990.01kWhRDword41002费率1-总有功电度Ep-total0-9999999990.01kWhRDword41004费率2-总有功电度Ep-total0-9999999990.01kWhRDword41006费率3-总有功电度Ep-total0-9999999990.01kWhRDword41008费率4-总有功电度Ep-total0-9999999990.01kWhRDword4100A净有功电度Ep-net0-9999999990.01kWhRDword4100C费率1-净有功电度Ep-net0-9999999990.01kWhRDword4100E费率2-净有功电度Ep-net0-9999999990.01kWhRDword41010费率3-净有功电度Ep-net0-9999999990.01kWhRDword41012费率4-净有功电度Ep-net0-9999999990.01kWhRDword41014消耗有功电度Ep-imp0-9999999990.01kWhRDword41016费率1-消耗有功电度Ep-imp0-9999999990.01kWhRDword41018费率2-消耗有功电度Ep-imp0-9999999990.01kWhRDword4101A费率3-消耗有功电度Ep-imp0-9999999990.01kWhRDword4101C费率4-消耗有功电度Ep-imp0-9999999990.01kWhRDword4101E释放有功电度Ep-exp0-9999999990.01kWhRDword41020费率1-释放有功电度Ep-exp0-9999999990.01kWhRDword41022费率2-释放有功电度Ep-exp0-9999999990.01kWhRDword41024费率3-释放有功电度Ep-exp0-9999999990.01kWhRDword41026费率4-释放有功电度Ep-exp0-9999999990.01kWhRDword41028总无功电度Eq-total0-9999999990.01KVarhRDword4102A费率1-总无功电度Eq-total0-9999999990.01KVarhRDword4102C费率2-总无功电度Eq-total0-9999999990.01KVarhRDword4102E费率3-总无功电度Eq-total0-9999999990.01KVarhRDword41030费率4-总无功电度Eq-total0-9999999990.01KVarhRDword41032净无功电度Eq-net0-9999999990.01KVarhRDword41034费率1-净无功电度Eq-net0-9999999990.01KVarhRDword41036费率2-净无功电度Eq-net0-9999999990.01KVarhRDword41038费率3-净无功电度Eq-net0-9999999990.01KVarhRDword4103A费率4-净无功电度Eq-net0-9999999990.01KVarhRDword4103C感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword4103E费率1-感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41040费率2-感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41042费率3-感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41044费率4-感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41046容性释放无功电度Eq-exp0-9999999990.01KVarhRDword41048费率1-容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4104A费率2-容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4104C费率3-容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4104E费率4-容性释放无功电度Eq-exp0-9999999990.01KVarhRDword41050A相总有功电度Ep-total0-9999999990.01kWhRDword41052费率1-A相总有功电度Ep-total0-9999999990.01kWhRDword41054费率2-A相总有功电度Ep-total0-9999999990.01kWhRDword41056费率3-A相总有功电度Ep-total0-9999999990.01kWhRDword41058费率4-A相总有功电度Ep-total0-9999999990.01kWhRDword4105AA相净有功电度Ep-net0-9999999990.01kWhRDword4105C费率1-A相净有功电度Ep-net0-9999999990.01kWhRDword4105E费率2-A相净有功电度Ep-net0-9999999990.01kWhRDword41060费率3-A相净有功电度Ep-net0-9999999990.01kWhRDword41062费率4-A相净有功电度Ep-net0-9999999990.01kWhRDword41064A相消耗有功电度Ep-imp0-9999999990.01kWhRDword41066费率1-A相消耗有功电度Ep-imp0-9999999990.01kWhRDword41068费率2-A相消耗有功电度Ep-imp0-9999999990.01kWhRDword4106A费率3-A相消耗有功电度Ep-imp0-9999999990.01kWhRDword4106C费率4-A相消耗有功电度Ep-imp0-9999999990.01kWhRDword4106EA相释放有功电度Ep-exp0-9999999990.01kWhRDword41070费率1-A相释放有功电度Ep-exp0-9999999990.01kWhRDword41072费率2-A相释放有功电度Ep-exp0-9999999990.01kWhRDword41074费率3-A相释放有功电度Ep-exp0-9999999990.01kWhRDword41076费率4-A相释放有功电度Ep-exp0-9999999990.01kWhRDword41078A总无功电度Ep-total0-9999999990.01KVarhRDword4107A费率1-A总无功电度Ep-total0-9999999990.01KVarhRDword4107C费率2-A总无功电度Ep-total0-9999999990.01KVarhRDword4107E费率3-A总无功电度Ep-total0-9999999990.01KVarhRDword41080费率4-A总无功电度Ep-total0-9999999990.01KVarhRDword41082A相净无功电度Eq-net0-9999999990.01KVarhRDword41084费率1-A相净无功电度Eq-net0-9999999990.01KVarhRDword41086费率2-A相净无功电度Eq-net0-9999999990.01KVarhRDword41088费率3-A相净无功电度Eq-net0-9999999990.01KVarhRDword4108A费率4-A相净无功电度Eq-net0-9999999990.01KVarhRDword4108CA相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword4108E费率1-A相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41090费率2-A相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41092费率3-A相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41094费率4-A相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41096A相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword41098费率1-A相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4109A费率2-A相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4109C费率3-A相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4109E费率4-A相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword410A0B相总有功电度Ep-total0-9999999990.01kWhRDword410A2费率1-B相总有功电度Ep-total0-9999999990.01kWhRDword410A4费率2-B相总有功电度Ep-total0-9999999990.01kWhRDword410A6费率3-B相总有功电度Ep-total0-9999999990.01kWhRDword410A8费率4-B相总有功电度Ep-total0-9999999990.01kWhRDword410AAB相净有功电度Ep-net0-9999999990.01kWhRDword410AC费率1-B相净有功电度Ep-net0-9999999990.01kWhRDword410AE费率2-B相净有功电度Ep-net0-9999999990.01kWhRDword410B0费率3-B相净有功电度Ep-net0-9999999990.01kWhRDword410B2费率4-B相净有功电度Ep-net0-9999999990.01kWhRDword410B4B相消耗有功电度Ep-imp0-9999999990.01kWhRDword410B6费率1-B相消耗有功电度Ep-imp0-9999999990.01kWhRDword410B8费率2-B相消耗有功电度Ep-imp0-9999999990.01kWhRDword410BA费率3-B相消耗有功电度Ep-imp0-9999999990.01kWhRDword410BC费率4-B相消耗有功电度Ep-imp0-9999999990.01kWhRDword410BEB相释放有功电度Ep-exp0-9999999990.01kWhRDword410C0费率1-B相释放有功电度Ep-exp0-9999999990.01kWhRDword410C2费率2-B相释放有功电度Ep-exp0-9999999990.01kWhRDword410C4费率3-B相释放有功电度Ep-exp0-9999999990.01kWhRDword410C6费率4-B相释放有功电度Ep-exp0-9999999990.01kWhRDword410C8B总无功电度Ep-total0-9999999990.01KVarhRDword410CA费率1-B总无功电度Ep-total0-9999999990.01KVarhRDword410CC费率2-B总无功电度Ep-total0-9999999990.01KVarhRDword410CE费率3-B总无功电度Ep-total0-9999999990.01KVarhRDword410D0费率4-B总无功电度Ep-total0-9999999990.01KVarhRDword410D2B相净无功电度Eq-net0-9999999990.01KVarhRDword410D4费率1-B相净无功电度Eq-net0-9999999990.01KVarhRDword410D6费率2-B相净无功电度Eq-net0-9999999990.01KVarhRDword410D8费率3-B相净无功电度Eq-net0-9999999990.01KVarhRDword410DA费率4-B相净无功电度Eq-net0-9999999990.01KVarhRDword410DCB相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword410DE费率1-B相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword410E0费率2-B相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword410E2费率3-B相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword410E4费率4-B相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword410E6B相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword410E8费率1-B相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword410EA费率2-B相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword410EC费率3-B相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword410EE费率4-B相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword410F0C相总有功电度Ep-total0-9999999990.01kWhRDword410F2费率1-C相总有功电度Ep-total0-9999999990.01kWhRDword410F4费率2-C相总有功电度Ep-total0-9999999990.01kWhRDword410F6费率3-C相总有功电度Ep-total0-9999999990.01kWhRDword410F8费率4-C相总有功电度Ep-total0-9999999990.01kWhRDword410FAC相净有功电度Ep-net0-9999999990.01kWhRDword410FC费率1-C相净有功电度Ep-net0-9999999990.01kWhRDword410FE费率2-C相净有功电度Ep-net0-9999999990.01kWhRDword41100费率3-C相净有功电度Ep-net0-9999999990.01kWhRDword41102费率4-C相净有功电度Ep-net0-9999999990.01kWhRDword41104C相消耗有功电度Ep-imp0-9999999990.01kWhRDword41106费率1-C相消耗有功电度Ep-imp0-9999999990.01kWhRDword41108费率2-C相消耗有功电度Ep-imp0-9999999990.01kWhRDword4110A费率3-C相消耗有功电度Ep-imp0-9999999990.01kWhRDword4110C费率4-C相消耗有功电度Ep-imp0-9999999990.01kWhRDword4110EC相释放有功电度Ep-exp0-9999999990.01kWhRDword41110费率1-C相释放有功电度Ep-exp0-9999999990.01kWhRDword41112费率2-C相释放有功电度Ep-exp0-9999999990.01kWhRDword41114费率3-C相释放有功电度Ep-exp0-9999999990.01kWhRDword41116费率4-C相释放有功电度Ep-exp0-9999999990.01kWhRDword41118C总无功电度Ep-total0-9999999990.01KVarhRDword4111A费率1-C总无功电度Ep-total0-9999999990.01KVarhRDword4111C费率2-C总无功电度Ep-total0-9999999990.01KVarhRDword4111E费率3-C总无功电度Ep-total0-9999999990.01KVarhRDword41120费率4-C总无功电度Ep-total0-9999999990.01KVarhRDword41122C相净无功电度Eq-net0-9999999990.01KVarhRDword41124费率1-C相净无功电度Eq-net0-9999999990.01KVarhRDword41126费率2-C相净无功电度Eq-net0-9999999990.01KVarhRDword41128费率3-C相净无功电度Eq-net0-9999999990.01KVarhRDword4112A费率4-C相净无功电度Eq-net0-9999999990.01KVarhRDword4112CC相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword4112E费率1-C相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41130费率2-C相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41132费率3-C相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41134费率4-C相感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword41136C相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword41138费率1-C相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4113A费率2-C相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4113C费率3-C相容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4113E费率4-C相容性释放无功电度Eq-exp0-9999999990.01KVarh 3.3 电度结算日(月冻结) 读写属性字节长度16进制地址数据项数值范围数据类型单位Rword22000结算时刻YYMM--Rword22001结算时刻DDhh--Rword22002结算时刻mmss--RDword42003总有功电度Ep-total0-9999999990.01kWhRDword42005费率1-总有功电度Ep-total0-9999999990.01kWhRDword42007费率2-总有功电度Ep-total0-9999999990.01kWhRDword42009费率3-总有功电度Ep-total0-9999999990.01kWhRDword4200B费率4-总有功电度Ep-total0-9999999990.01kWhRDword4200D净有功电度Ep-net0-9999999990.01kWhRDword4200F费率1-净有功电度Ep-net0-9999999990.01kWhRDword42011费率2-净有功电度Ep-net0-9999999990.01kWhRDword42013费率3-净有功电度Ep-net0-9999999990.01kWhRDword42015费率4-净有功电度Ep-net0-9999999990.01kWhRDword42017消耗有功电度Ep-imp0-9999999990.01kWhRDword42019费率1-消耗有功电度Ep-imp0-9999999990.01kWhRDword4201B费率2-消耗有功电度Ep-imp0-9999999990.01kWhRDword4201D费率3-消耗有功电度Ep-imp0-9999999990.01kWhRDword4201F费率4-消耗有功电度Ep-imp0-9999999990.01kWhRDword42021释放有功电度Ep-exp0-9999999990.01kWhRDword42023费率1-释放有功电度Ep-exp0-9999999990.01kWhRDword42025费率2-释放有功电度Ep-exp0-9999999990.01kWhRDword42027费率3-释放有功电度Ep-exp0-9999999990.01kWhRDword42029费率4-释放有功电度Ep-exp0-9999999990.01kWhRDword4202B总无功电度Ep-total0-9999999990.01KVarhRDword4202D费率1-总无功电度Ep-total0-9999999990.01KVarhRDword4202F费率2-总无功电度Ep-total0-9999999990.01KVarhRDword42031费率3-总无功电度Ep-total0-9999999990.01KVarhRDword42033费率4-总无功电度Ep-total0-9999999990.01KVarhRDword42035净无功电度Eq-net0-9999999990.01KVarhRDword42037费率1-净无功电度Eq-net0-9999999990.01KVarhRDword42039费率2-净无功电度Eq-net0-9999999990.01KVarhRDword4203B费率3-净无功电度Eq-net0-9999999990.01KVarhRDword4203D费率4-净无功电度Eq-net0-9999999990.01KVarhRDword4203F感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword42041费率1-感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword42043费率2-感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword42045费率3-感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword42047费率4-感性消耗无功电度Eq-imp0-9999999990.01KVarhRDword42049容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4204B费率1-容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4204D费率2-容性释放无功电度Eq-exp0-9999999990.01KVarhRDword4204F费率3-容性释放无功电度Eq-exp0-9999999990.01KVarhRDword42051费率4-容性释放无功电度Eq-exp0-9999999990.01KVarh 3.4 合闸状态 16进制地址数据项读写属性数值范围数据类型字节长度单位5000分合闸状态R0-12word2-5001总分闸次数R-word2次5002总合闸次数R-word2次5003故障状态查询R-word2-5004温度告警R-word2-5005漏电告警R0:无告警,1:有告警word2-5006短路告警R0:无告警,1:有告警word2-5007本地锁定状态R0:未锁,1:锁定word2- 3.5 重合闸事件 16进制地址数据项读写属性数值范围数据类型字节长度单位5300故障时间(年月)R-word2YYMM5301故障时间(日时)R-word2DDhh5302故障时间(分秒)R-word2mmss5303故障原因R0-5word2-5304故障前A相电压R0-65535word20.1V5305故障前B相电压R0-65535word20.1V5306故障前C相电压R0-65535word20.1V5307故障前A相(线)电流R0-65535word20.01A5308故障前B相(线)电流R0-65535word20.01A5309故障前C相(线)电流R0-65535word20.01A530A故障前总有功功率R-32768-32767integer20.01kW530B故障前A相有功功率R-32768-32767integer20.01kW530C故障前B相有功功率R-32768-32767integer20.01kW530D故障前C相有功功率R-32768-32767integer20.01kW 3.6 设备编号 & 通讯流量 16进制地址数据项读写属性数值范围数据类型字节长度单位5500设备IMEI号R-ASCII22-550B通讯流量R-word40.01KB550DSIM卡号R-ASCII20- 3.7 基础配置 16进制地址数据项读写属性数值范围默认值数据类型字节长度6000通讯地址R/W1-2471word26001通讯波特率R/W0-32word26004校验位R/W0-22word26005背光点亮时间R/W0-9999300sword26006保护密码R/W-1000word26007电压变比PTR/W1-655351word26008电流变比CTR/W1-655351word26009总使能开关R/W000F-word2600A电度月结算方式选择R/W0-10word2600B每月第一结算日R/WFFFFFFFFword2600C每月第二结算日R/WFFFFFFFFword2600D每月第三结算日R/WFFFFFFFFword2600E日冻结设置时间R/W1:001:00word2600F电压上报颗粒度R/W1~100-word26010电压上报判断时间R/W1~100-word26011电流上报判断时间R/W1~100-word26012电流上报判断时间R/W1~100-word26100当前时间YYMMR/W--word26101当前时间DDhhR/W--word26102当前时间mmssR/W--word2 3.8 时区和费率配置 16进制地址数据项读写属性数值范围默认值数据类型字节长度6200第1时区使能R/W0:不启用,1:启用1word26201第1时区起始时间(月日)R/W--word26202第1时区起始时间(时分)R/W--word26203第1时区终止时间(月日)R/W--word26204第1时区终止时间(时分)R/W--word26205第1时区第1时段使能R/W0:不启用,1:启用1word26206第1时区1时段起始时间(时分)R/W--word26207第1时区1时段终止时间(时分)R/W--word26208第1时区1时段所属费率R/W0-31word26209第1时区第2时段使能R/W0:不启用,1:启用1word2620A第1时区2时段起始时间(时分)R/W--word2620B第1时区2时段终止时间(时分)R/W--word2620C第1时区2时段所属费率R/W0-32word2620D第1时区第3时段使能R/W0:不启用,1:启用1word2620E第1时区3时段起始时间(时分)R/W--word2620F第1时区3时段终止时间(时分)R/W--word26210第1时区3时段所属费率R/W0-32word26211第1时区第4时段使能R/W0:不启用,1:启用1word26212第1时区4时段起始时间(时分)R/W--word26213第1时区4时段终止时间(时分)R/W--word26214第1时区4时段所属费率R/W0-33word26215第1时区第5时段使能R/W0:不启用,1:启用1word26216第1时区5时段起始时间(时分)R/W--word26217第1时区5时段终止时间(时分)R/W--word26218第1时区5时段所属费率R/W0-33word26219第1时区第6时段使能R/W0:不启用,1:启用1word2621A第1时区6时段起始时间(时分)R/W--word2621B第1时区6时段终止时间(时分)R/W--word2621C第1时区6时段所属费率R/W0-33word2621D第1时区第7时段使能R/W0:不启用,1:启用1word2621E第1时区7时段起始时间(时分)R/W--word2621F第1时区7时段终止时间(时分)R/W--word26220第1时区7时段所属费率R/W0-33word26221第1时区第8时段使能R/W0:不启用,1:启用1word26222第1时区8时段起始时间(时分)R/W--word26223第1时区8时段终止时间(时分)R/W--word26224第1时区8时段所属费率R/W0-33word26225第2时区设定R/W--word26226第2时区起始时间(月日)R/W--word26227第2时区起始时间(时分)R/W--word26228第2时区终止时间(月日)R/W--word26229第2时区终止时间(时分)R/W--word2622A第2时区第1时段使能R/W0:不启用,1:启用1word2622B第2时区1时段起始时间(时分)R/W--word2622C第2时区1时段终止时间(时分)R/W--word2622D第2时区1时段所属费率R/W0-31word2622E第2时区第2时段使能R/W0:不启用,1:启用1word2622F第2时区2时段起始时间(时分)R/W--word26230第2时区2时段终止时间(时分)R/W--word26231第2时区2时段所属费率R/W0-32word26232第2时区第3时段使能R/W0:不启用,1:启用1word26233第2时区3时段起始时间(时分)R/W--word26234第2时区3时段终止时间(时分)R/W--word26235第2时区3时段所属费率R/W0-32word26236第2时区第4时段使能R/W0:不启用,1:启用1word26237第2时区4时段起始时间(时分)R/W--word26238第2时区4时段终止时间(时分)R/W--word26239第2时区4时段所属费率R/W0-33word2623A第2时区第5时段使能R/W0:不启用,1:启用1word2623B第2时区5时段起始时间(时分)R/W--word2623C第2时区5时段终止时间(时分)R/W--word2623D第2时区5时段所属费率R/W0-33word2623E第2时区第6时段使能R/W0:不启用,1:启用1word2623F第2时区6时段起始时间(时分)R/W--word26240第2时区6时段终止时间(时分)R/W--word26241第2时区6时段所属费率R/W0-33word26242第2时区第7时段使能R/W0:不启用,1:启用1word26243第2时区7时段起始时间(时分)R/W--word26244第2时区7时段终止时间(时分)R/W--word26245第2时区7时段所属费率R/W0-33word26246第2时区第8时段使能R/W0:不启用,1:启用1word26247第2时区8时段起始时间(时分)R/W--word26248第2时区8时段终止时间(时分)R/W--word26249第2时区8时段所属费率R/W0-33word2624A第3时区设定R/W--word2624B第3时区起始时间(月日)R/W--word2624C第3时区起始时间(时分)R/W--word2624D第3时区终止时间(月日)R/W--word2624E第3时区终止时间(时分)R/W--word2624F第3时区第1时段使能R/W0:不启用,1:启用1word26250第3时区1时段起始时间(时分)R/W--word26251第3时区1时段终止时间(时分)R/W--word26252第3时区1时段所属费率R/W0-31word26253第3时区第2时段使能R/W0:不启用,1:启用1word26254第3时区2时段起始时间(时分)R/W--word26255第3时区2时段终止时间(时分)R/W--word26256第3时区2时段所属费率R/W0-32word26257第3时区第3时段使能R/W0:不启用,1:启用1word26258第3时区3时段起始时间(时分)R/W--word26259第3时区3时段终止时间(时分)R/W--word2625A第3时区3时段所属费率R/W0-32word2625B第3时区第4时段使能R/W0:不启用,1:启用1word2625C第3时区4时段起始时间(时分)R/W--word2625D第3时区4时段终止时间(时分)R/W--word2625E第3时区4时段所属费率R/W0-33word2625F第3时区第5时段使能R/W0:不启用,1:启用1word26260第3时区5时段起始时间(时分)R/W--word26261第3时区5时段终止时间(时分)R/W--word26262第3时区5时段所属费率R/W0-33word26263第3时区第6时段使能R/W0:不启用,1:启用1word26264第3时区6时段起始时间(时分)R/W--word26265第3时区6时段终止时间(时分)R/W--word26266第3时区6时段所属费率R/W0-33word26267第3时区第7时段使能R/W0:不启用,1:启用1word26268第3时区7时段起始时间(时分)R/W--word26269第3时区7时段终止时间(时分)R/W--word2626A第3时区7时段所属费率R/W0-33word2626B第3时区第8时段使能R/W0:不启用,1:启用1word2626C第3时区8时段起始时间(时分)R/W--word2626D第3时区8时段终止时间(时分)R/W--word2626E第3时区8时段所属费率R/W0-33word2626F第4时区设定R/W--word26270第4时区起始时间(月日)R/W--word26271第4时区起始时间(时分)R/W--word26272第4时区终止时间(月日)R/W--word26273第4时区终止时间(时分)R/W--word26274第4时区第1时段使能R/W0:不启用,1:启用1word26275第4时区1时段起始时间(时分)R/W--word26276第4时区1时段终止时间(时分)R/W--word26277第4时区1时段所属费率R/W0-31word26278第4时区第2时段使能R/W0:不启用,1:启用1word26279第4时区2时段起始时间(时分)R/W--word2627A第4时区2时段终止时间(时分)R/W--word2627B第4时区2时段所属费率R/W0-32word2627C第4时区第3时段使能R/W0:不启用,1:启用1word2627D第4时区3时段起始时间(时分)R/W--word2627E第4时区3时段终止时间(时分)R/W--word2627F第4时区3时段所属费率R/W0-32word26280第4时区第4时段使能R/W0:不启用,1:启用1word26281第4时区4时段起始时间(时分)R/W--word26282第4时区4时段终止时间(时分)R/W--word26283第4时区4时段所属费率R/W0-33word26284第4时区第5时段使能R/W0:不启用,1:启用1word26285第4时区5时段起始时间(时分)R/W--word26286第4时区5时段终止时间(时分)R/W--word26287第4时区5时段所属费率R/W0-33word26288第4时区第6时段使能R/W0:不启用,1:启用1word26289第4时区6时段起始时间(时分)R/W--word2628A第4时区6时段终止时间(时分)R/W--word2628B第4时区6时段所属费率R/W0-33word2628C第4时区第7时段使能R/W0:不启用,1:启用1word2628D第4时区7时段起始时间(时分)R/W--word2628E第4时区7时段终止时间(时分)R/W--word2628F第4时区7时段所属费率R/W0-33word26290第4时区第8时段使能R/W0:不启用,1:启用1word26291第4时区8时段起始时间(时分)R/W--word26292第4时区8时段终止时间(时分)R/W--word26293第4时区8时段所属费率R/W0-33word2 3.9 网络参数 16进制地址数据项读写属性数值范围默认值数据类型字节长度6400资产管理编码R/W--string22640B客户编号R/W--string4640D厂家代号R/W--string4640FMQTT用户名和密码有效R/W0:关闭,1:开启1word26410MQTT用户名R/W--string326420MQTT密码R/W--password326430MQTT主题前缀R/W--string326440采集器工作模式R/W01:网络模式,02:无线模式2word26441主站1使能R/W0:关闭,1:开启1word26442主站1网络协议R/W01:TCP,02:UDP1word26443主站1服务器类型R/W01:IP,02:domain1word26444主站1 IP地址R/W-47.94.229.186word46446主站1端口号R/W-18050word26447主站1域名地址R/W--string326457主站2使能R/W0:关闭,1:开启1word26458主站2网络协议R/W01:TCP,02:UDP1word26459主站2服务器类型R/W01:IP,02:domain1word2645A主站2 IP地址R/W--word4645C主站2端口号R/W--word2645D主站2域名地址R/W--string32646D主站3使能R/W0:关闭,1:开启1word2646E主站3网络协议R/W01:TCP,02:UDP1word2646F主站3服务器类型R/W01:IP,02:domain1word26470主站3 IP地址R/W--word46472主站3端口号R/W--word26473主站3域名地址R/W--string32648B用户接入点APNR/W-cmnetstring40649A接入点用户名R/W--string4064AE接入点密码R/W--string4064C7主动上报周期R/W1-1400min30minword264C8网络开关R/W0:关闭,1:开启1word2 3.10 告警阀值 16进制地址数据项读写属性数值范围默认值数据类型字节长度单位6600过压故障R/W--word2-6601过压值R/W1000-45002800word20.1V6602过压恢复值R/W1000-45002750word20.1V6603过压判断时间R/W5-60060word2s6604过压恢复稳定时间R/W5-60060word2s6605欠压故障R/W--word2-6606欠压值R/W50-40001150word20.1V6607欠压恢复值R/W50-40001200word20.1V6608欠压判断时间R/W5-60060word2s6609欠压恢复判断时间R/W5-60060word2s660A过流故障R/W--word2-660B过流值R/W1-1200010000word20.01A660C过流判断时间R/W0-6005word2s660D合闸后稳定判断时间R/W5-60060word2s660E循环1:自动重合次数R/W1-103word2-660F循环1:自动重合间隔时间R/W60-360060word2s6610循环2:自动重合次数R/W1-103word2-6611循环2:自动重合间隔时间R/W60-360090word2s6612循环3:自动重合次数R/W1-103word2-6613循环3:自动重合间隔时间R/W60-36001800word2s6614循环4:自动重合次数R/W1-103word2-6615循环4:自动重合间隔时间R/W60-36002700word2s6616循环5:自动重合次数R/W1-103word2-6617循环5:自动重合间隔时间R/W60-36003600word2s6618过功率故障R/W--word2-6619过功率值R/W1-50002200integer20.01kW661A过功率判断时间R/W0-6005word2s661B合闸后稳定判断时间R/W5-60060word2s661C循环1:自动重合次数R/W1-103word2-661D循环1:自动重合间隔时间R/W60-360060word2s661E循环2:自动重合次数R/W1-103word2-661F循环2:自动重合间隔时间R/W60-360090word2s6620循环3:自动重合次数R/W1-103word2-6621循环3:自动重合间隔时间R/W60-36001800word2s6622循环4:自动重合次数R/W1-103word2-6623循环4:自动重合间隔时间R/W60-36002700word2s6624循环5:自动重合次数R/W1-103word2-6625循环5:自动重合间隔时间R/W60-36003600word2s6626缺相故障R/W--word2-6627缺相判断电压R/W0-100020word20.1V6628缺相判断时间R/W5-60060word2s6629缺相恢复判断时间R/W5-60060word2s662A相间不平衡故障R/W--word2-662B电压相间不平衡判断值R/W1-1000200word2%662C电压相间不平衡恢复值R/W1-1000200word2%662D电压相间不平衡判断时间R/W5-60060word2s662E电压相间不平衡恢复判断时间R/W5-60060word2s662F过温故障R/W--word2-6630过温阀值R/W800-word20.1℃6631过温恢复值R/W750-word20.1℃6632过温判定时间R/W5-20030word2s6633漏电故障R/W--word2-6634漏电阀值R/W预留-无效-word2-6635短路故障R/W--word2- 3.11 远程控制 16进制地址数据项读写属性数值范围默认值数据类型字节长度6801自动重合闸开关R/W0:关闭,1:使能0word26802远程分合闸指令W0x03:分闸锁死,0x13:分闸不锁死,0x23:分闸解锁,0x33:合闸-word26804远程锁定R/W0:正常,1:锁定0word2 3.12 硬件故障状态 16进制地址数据项读写属性数值范围默认值数据类型字节长度6900故障状态查询R--word2 3.13 定时控制配置(阿德云专用定时) 16进制地址数据项读写属性数值范围数据类型字节长度6D00定时控制开关R/W0:关闭,1:使能word26D01定时操作时间1R/W高字节-时0~23,低字节-分0~59word26D02定时操作时间2R/W高字节-时0~23,低字节-分0~59word26D03定时操作时间3R/W高字节-时0~23,低字节-分0~59word26D04定时操作时间4R/W高字节-时0~23,低字节-分0~59word26D05定时操作时间5R/W高字节-时0~23,低字节-分0~59word26D06定时操作时间6R/W高字节-时0~23,低字节-分0~59word26D07定时操作时间7R/W高字节-时0~23,低字节-分0~59word26D08定时操作时间8R/W高字节-时0~23,低字节-分0~59word26D09定时操作1R/W0:无操作,1:定时分闸,2:定时合闸word26D0A定时操作2R/W0:无操作,1:定时分闸,2:定时合闸word26D0B定时操作3R/W0:无操作,1:定时分闸,2:定时合闸word26D0C定时操作4R/W0:无操作,1:定时分闸,2:定时合闸word26D0D定时操作5R/W0:无操作,1:定时分闸,2:定时合闸word26D0E定时操作6R/W0:无操作,1:定时分闸,2:定时合闸word26D0F定时操作7R/W0:无操作,1:定时分闸,2:定时合闸word26D10定时操作8R/W0:无操作,1:定时分闸,2:定时合闸word26E00经度R/W-string166E08纬度R/W-string166E10设备型号R/W-string16 3.14 定时控制配置(阿里云专用定时) 16进制地址数据项读写属性数值范围数据类型字节长度6F00定时1任务是否有效R/W0:无效,1:有效word26F01定时1使能开关R/W0:无效,1:有效word26F02定时1操作时间R/W高字节-时0~23,低字节-分0~59word26F03定时1星期日执行开关R/W0:不执行,1:执行,2:只执行一次word26F04定时1星期一执行开关R/W0:不执行,1:执行,2:只执行一次word26F05定时1星期二执行开关R/W0:不执行,1:执行,2:只执行一次word26F06定时1星期三执行开关R/W0:不执行,1:执行,2:只执行一次word26F07定时1星期四执行开关R/W0:不执行,1:执行,2:只执行一次word26F08定时1星期五执行开关R/W0:不执行,1:执行,2:只执行一次word26F09定时1星期六执行开关R/W0:不执行,1:执行,2:只执行一次word26F0A定时1操作R/W0:分闸,1:合闸word26F0B定时2任务是否有效R/W0:无效,1:有效word26F0C定时2使能开关R/W0:无效,1:有效word26F0D定时2操作时间R/W高字节-时0~23,低字节-分0~59word26F0E定时2星期日执行开关R/W0:不执行,1:执行,2:只执行一次word26F0F定时2星期一执行开关R/W0:不执行,1:执行,2:只执行一次word26F10定时2星期二执行开关R/W0:不执行,1:执行,2:只执行一次word26F11定时2星期三执行开关R/W0:不执行,1:执行,2:只执行一次word26F12定时2星期四执行开关R/W0:不执行,1:执行,2:只执行一次word26F13定时2星期五执行开关R/W0:不执行,1:执行,2:只执行一次word26F14定时2星期六执行开关R/W0:不执行,1:执行,2:只执行一次word26F15定时2操作R/W0:分闸,1:合闸word26F16定时3任务是否有效R/W0:无效,1:有效word26F17定时3使能开关R/W0:无效,1:有效word26F18定时3操作时间R/W高字节-时0~23,低字节-分0~59word26F19定时3星期日执行开关R/W0:不执行,1:执行,2:只执行一次word26F1A定时3星期一执行开关R/W0:不执行,1:执行,2:只执行一次word26F1B定时3星期二执行开关R/W0:不执行,1:执行,2:只执行一次word26F1C定时3星期三执行开关R/W0:不执行,1:执行,2:只执行一次word26F1D定时3星期四执行开关R/W0:不执行,1:执行,2:只执行一次word26F1E定时3星期五执行开关R/W0:不执行,1:执行,2:只执行一次word26F1F定时3星期六执行开关R/W0:不执行,1:执行,2:只执行一次word26F20定时3操作R/W0:分闸,1:合闸word26F21定时4任务是否有效R/W0:无效,1:有效word26F22定时4使能开关R/W0:无效,1:有效word26F23定时4操作时间R/W高字节-时0~23,低字节-分0~59word26F24定时4星期日执行开关R/W0:不执行,1:执行,2:只执行一次word26F25定时4星期一执行开关R/W0:不执行,1:执行,2:只执行一次word26F26定时4星期二执行开关R/W0:不执行,1:执行,2:只执行一次word26F27定时4星期三执行开关R/W0:不执行,1:执行,2:只执行一次word26F28定时4星期四执行开关R/W0:不执行,1:执行,2:只执行一次word26F29定时4星期五执行开关R/W0:不执行,1:执行,2:只执行一次word26F2A定时4星期六执行开关R/W0:不执行,1:执行,2:只执行一次word26F2B定时4操作R/W0:分闸,1:合闸word26F2C定时5任务是否有效R/W0:无效,1:有效word26F2D定时5使能开关R/W0:无效,1:有效word26F2E定时5操作时间R/W高字节-时0~23,低字节-分0~59word26F2F定时5星期日执行开关R/W0:不执行,1:执行,2:只执行一次word26F30定时5星期一执行开关R/W0:不执行,1:执行,2:只执行一次word26F31定时5星期二执行开关R/W0:不执行,1:执行,2:只执行一次word26F32定时5星期三执行开关R/W0:不执行,1:执行,2:只执行一次word26F33定时5星期四执行开关R/W0:不执行,1:执行,2:只执行一次word26F34定时5星期五执行开关R/W0:不执行,1:执行,2:只执行一次word26F35定时5星期六执行开关R/W0:不执行,1:执行,2:只执行一次word26F36定时5操作R/W0:分闸,1:合闸word2 特殊寄存器(仅内部使用) 16进制地址数据项读写属性数值范围默认值数据类型字节长度F000读校正状态R--word2F001有功脉冲常数R/W1-65535-word2F002无功脉冲常数R/W1-65535-word2F003生产日期年R/W2000-2099-word2F004生产日期月R/W1-12-word2F005生产日期日R/W1-31-word2F006有功准确度等级R/W1级-word2F007无功准确度等级R/W2级-word2F008电表型号R/W--string16F010额定电压R/W0-65535220Vword2F011额定电流R/W0-6553580Aword2F012软件版本号R--word2F014硬件版本号R/W--word2F016厂家代号R/W预留-word4F018客户编号R/W预留-word4F100单三相切换开关R/W0:单相,1:三相0word2F101合闸延时时间msR/W0-100ms20word2F102分闸延时时间msR/W0-100ms10word2F103校表参数A相电压R/W0-655352200word2F104校表参数B相电压R/W0-655352200word2F105校表参数C相电压R/W0-655352200word2F106校表参数A相电流R/W0-655354000word2F107校表参数B相电流R/W0-655354000word2F108校表参数C相电流R/W0-655354000word2F109校表参数A相角度R/W0-655356000word2F10A校表参数B相角度R/W0-655356000word2F10B校表参数C相角度R/W0-655356000word2F10C校表参数-高频脉冲常数R/W0-65535270word2F10D校表参数-比例系数R/W0-655356word2F10E校表参数-屏蔽电流R/W0-65535-word2F200工厂模式开关W写入0x12345678开启,写其他值关闭工厂模式-dword4F202分合闸次数清零W写入0x1234-word2F203事件记录清零W写入0x5678-word2F204电度清零含费率W写入0x0041-word2F205恢复出厂设置W写入0x0309校表值恢复出厂-word2F206设备重启W写入0x0043-word2F207写开始校正W写入0x0044-word2F208温度校正W写入0x0045-word2F300远程升级W0x3901:开始远程升级,0x3902:远程升级数据,0x3903:结束远程升级-word2F301升级-数据包编号W--word2F302升级-数据长度W--word2F303升级数据包1W--word2F304升级数据包2W--word2…………………F382升级数据包128W--word2 --- ### 594. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 网络视频字符叠加器是我司专为市面通用标准 ModBus-RTU 通讯模式 485设备研发的一款适用于高清网络摄像机的设备。用户可根据实际需求将此产品连接 485 设备,简单配置叠加器后,高清网络摄像机视频画面上会叠加显示相应字符信息。设备采用标准 ModBus-RTU 通信模式,匹配市面所有标准 ModBus-RTU 设备,可用于传感器叠加字符信息、 机房监控、智能农业、气象监测等场所。 字符叠加器可同时支持多台摄像机的叠加使用。每台字符叠加器最多可同时支持 4 台摄像机处理、16 台标准 ModBus-RTU 通讯模式 485 设备。配置软件简单方便,支持多种数据类型设置,寄存器地址可偏移读取。摄像头底层协议对接,不影响原有视频信号,叠加信息位置可调节。 设备外形小巧美观, 占用空间小,安装方式简单便捷。 功能特点 ■产品采用标准 ModBus-RTU 通信,匹配所有标准 ModBus-RTU 通信设备 ■产品可同时处理多台摄像机字符信息,最多可同时支持4 台摄像机叠加 ■产品可接入多台485 设备,最多可接入 16 台 485 设备 ■独立软件配置,功能强大,界面简洁,操作简单 ■摄像头底层协议对接,不影响原有视频信号 ■字符显示位置全显示屏可调 ■支持任意中文、英文、标点显示,(显示数量与摄像头有关) ■摄像头实时显示监视现场的数据变化 ■支持 DC10~30V 宽电压输入 主要技术指标 供电电源10~30V DC功耗1.5W(DC12V)输入信号485(ModBus-RTU)输出信号RJ45 网口变送器元件耐温及湿度-20℃~+70℃ , 0%RH~95%RH   非凝露数据更新时间3s供电范围DC10~30V波特率2400~ 115200bps 适用摄像头海康、宇视、大华、中维世纪、同为、华为、芯睿视、天地伟业、雄迈等网络摄像头所有型号(其他摄像头需定制) 设备安装说明 设备清单 ■网络视频字符叠加器一台 ■合格证、保修卡等 ■网线一根 安装方式 1. 设备可采用标准 35 导轨进行安装 2. 设备还可采用壁挂式安装 接线示例 1.  配置时连接摄像头、字符叠加器、电脑。 2.  使用时,将字符叠加器与摄像头置于同一局域网内。 配置软件安装及使用  网络参数读取与设置 将电脑与字符叠加器连接在同一局域网内。 安装配置软件后双击打开配置软件,点击搜索,软件将会搜索同一局域网内的所有字符叠加器设备,双击搜索到的设备。设备网络信息展现在右侧栏中。右侧栏中可根据用户需求修改获得 IP 的方式。注意:修改为固态 IP 时,请将 IP 设置在与电脑、摄像头同一网段下, IP 地址不可冲突。 参数的获取与设置 1.选择摄像头,编号代表需要配置的摄像头参数,最多可配置四台摄像机。 2.摄像头地址栏填写需添加的摄像头 IP ,摄像头端口根据实际状况填写,海康默认 80,宇视默认 1026 ,中维世纪默认 34567 ,大华默认 80 ,同为默认 80 ,华为默认 80 ,芯睿视默认 80 ,天地伟业默认 80 ,雄迈头默认 8899 。填写摄像机的用户名和密码(华为摄像头部分型号须填写北向用户名和密码;芯睿视摄像头必须设定密码。)。选择叠加的行数,可以根据摄像头的实际状况选择,如果设备摄像头为单行叠加摄像头,需选择行数为 1 。摄像机品牌选择相应的品牌。源端口默认为 0 ,无需修改。 注意: 1)    大华和华为的摄像头仅能叠加一台,且需配置于摄像头一。 2)    海康摄像头需要叠加八行时,需选择“海康威视(长字节)”, 且只能叠加一台摄像头。 3)    雄迈和天地伟业摄像头由于摄像头本身限制仅支持叠加一行,且雄迈摄像头叠加在通道名称位置。 4)    华为 O 摄像头仅支持叠加 5 行,如果设置叠加内容超过 5 行,摄像头会将第 6 行及其之后内容覆盖到前 5 行,不推荐客户自行使用。 3.下方为 8 行的叠加信息(若为单通道摄像头,只需要填写第一行的信息即可),默认内容填写后为摄像头固定显示的内容,当收到 485 设备上传的内容后,此内容不再显示。例如:摄像头编号 1 的区域 1 默认内容填写“aaa ”,若字符叠加器的 RS485 接收端没有接收到 485 设备发送的内容,摄像头区域一位置会一直显示“aaa ”,若字符叠加器 RS485 端接收到 485 设备发送的内容为“温度:18℃ ”,摄像头 1 区域一显示“温度:18℃ ”, “aaa ”将不再显示。(注意:大华的摄像头第一行为固定显示只能填写数字或字母,汉字无效,如需叠加固定信息或 485 上传内容,需从通道二开始叠加) 4.显示区域位置可调,可修改坐标 XY 的值进行修改,修改完成后点击“下载 ”。左下角“信息提示区 ”会显示下载成功(注意:此功能作用于海康摄像头;宇视摄像头位置需在摄像头配置中自行设置;大华摄像头第一行显示区域不可调,第一行需在摄像头配置中自行设置,其他行可调;中维世纪摄像头位置需在摄像头配置中自行设置;同为摄像头第二行跟随第一行,第四行跟随第三行,以此类推。华为摄像头若需显示时间,第一行默认内容填写引号内“${time@sys: YYYY-MM-DD} ”冒号后面有英文空格,其余信息从第二行开始叠加。)默认内容最多支持 32 个汉字(部分摄像头不支持)。 3.3 485 参数设置 1.点击“485 参数 ”然后点击读取,页面显示设备上传的 485 参数,用户可在此界面根据需求填写读取 485 设备的参数,用户修改完成点击下载,信息提示区显示下载成功,修改完成。 2.485 通信参数设置 485 口通讯协议:字符叠加器有两种通信协议可选择,若用户使用产品为仁科定制扬尘设备选择内部规约,其他产品选择标准 ModBus 规约。 485 轮询间隔:设备轮询间隔。设置范围:100~65535 ms 485 超时时间:设备超时时间设置,当时间超限后, 自动询问下一台设备。设置范围: 100~65535 ms 485 通信容错次数:通讯次数超限后,字符叠加器判断 485 设备离线。设置范围:1~65535 485 通讯波特率:485 设备通信率设置。2400~ 115200 可选择奇偶校验:选择奇偶校验模式。 3.设备参数上传设置 485 槽位编号:为 485 设备需读取的寄存器进行槽位编号。 485 槽位启用:每个槽位需勾选后才能被启用,若未勾选启用,则槽位设置的参数不启用视频通道显示位置:摄像头最多显示 4 个通道,在此位置中选择将设备上传的信息显示在几号通道。每个通道最多显示 44 个字节(注意:一个通道显示多个槽位信息时,每个槽位间间隔一个字节,当最后一个槽位信息超出 64 个字节后,则最后的槽位信息将不再显示) 从站地址:填写设备地址。范围:1~255。 功能码:选择设备可使用的读取功能码。 起始寄存器地址:填写需上传数据的寄存器地址。 寄存器数量:填写上传数据寄存器的长度。 数据寄存器偏移:当设备只允许读取固定命令时,读取的起始寄存器将从偏移数值后的寄存器读取。 数据类型:选择设备上传数据的类型。大端表示高位在前低位在后,小端相反。 输出=A*X+B:数据上传至摄像头前的数据处理。A 为系数 B 为常数。 数据位数:485 数据的位数包含整数、小数和小数点,小数点算 1 位。在数据更新时,叠加数据有闪烁,可设置要叠加数据的最大位数。当数据超过设定的位数时,数据更新依旧会闪烁;当数据低于设备的位数时,数据最前端回补充空格以满足设定的数据位数。此项设定只针对海康的新版摄像头。 数据小数点位数:选择上传数据显示的小数点位置。 485 槽位名称:填写槽位名称,名称将会按照填写内容显示至摄像头,最多填写 10 个汉字, 20 个英文字母。 485 槽位单位:填写槽位单位,单位将会按照填写显示至摄像头,最多填写 3 个汉字 6 个英文字母。 开关量报警数值:当数据类型选择开关量时,上传处理后的数值等于当前“开关量报警数值 ”填写的数据,摄像头显示内容为报警内容。 报警显示内容:此栏填写报警时显示的内容。最多填写 4 个汉字 8 个英文字母。 正常显示内容:此栏填写正常运行时显示的内容。最多填写 4 个汉字 8 个英文字母。 遥调参数设置:当数据类型选择遥调时,点击遥调参数设置,上传处理后的数值与当前填写的数值相同时,摄像头会按照填写的显示内容显示,当不等于任何填写的数值时,摄像头会按照其他数值的显示内容显示。 3.4 设备通道详解 字符叠加器内部工作框图由以下几个部分组成:数据采集层、通道层、通信上传层组成。设备上送至摄像头的是通道 1~通道 4 的数据;通道 1~通道 4 的数据是根据通道来源从数据采集层获取,数据采集层从 ModBus 槽位原始数值。 3.5 摄像头配置 3.5.1  海康威视摄像头配置 1.  使用IE 浏览器登录摄像头地址,填写用户名与密码。 2.点击“配置 ” 3.点击配置,将进入到摄像头的配置页面。点击系统中的安全管理。用户根据需求选择 WEB 认证的方式。建议选择 digest/basic 模式。 4.点击图像→ 点击 OSD 设置。用户根据需求勾选是否需要显示名称以及日期,修改 OSD颜色为黑白自动,当字体与图像颜色一致时,将自动反色便于确认,对齐方式选择自定义。更改完成后点击“保存 ”。 3.5.2 华为摄像头配置 此说明以华为 D3040-01-LI 为例。 1.  使用IE 浏览器或谷歌游览器登录摄像头地址,填写用户名与密码。 2.登入相机web 管理界面,在高级配置> 网络>平台对接参数>第二协议参数> RESTful,参数如下图所示,可进行如下修改:RESTful 传输协议类型:HTTP/HTTPS;RESTful 鉴权方式:Digest_MD5 摄像头版本 10.0 及以上版本界面如下: 3.华为摄像头北向用户名密码默认为:ApiAdmin/HuaWei123 ,设备配置软件中摄像头的用户名密码按此填写。 华为摄像头的北向用户名固定为:ApiAdmin ,密码可修改,修改途径如下。 摄像头版本 900 相机北向接口密码即为设备所需配置的密码,可在相机图示位置进行修改: 4. 内部规约 通讯基本参数 编 码8 位二进制转 16 进制数据位8 位奇偶校验位无停止位1 位错误校验CRC(冗余循环码)波特率2400~ 115200 可设,出厂默认为 9600bit/s 5.常见问题及解决方法 摄像头未显示叠加字符信息: 1.   检查 485 设备 AB 线是否接反 2.   查看网络视频字符叠加器 IP 、摄像头 IP 、PC 端 IP 是否在同一网段下 3.   检查视频字符叠加器供电是否正常 4.   检查摄像头供电是否正常 5.   检查配置软件中的摄像头 IP 与目标端口设置是否正确 6.   检查配置中波特率设置是否正确 7.   多通道摄像头是否勾选成单通道摄像头 8.   叠加编号是否勾选使能 9.   485 通讯协议是否选择错误 10. 对应槽位编号是否未启用 11. 地址以及数据类型的是否选择正确 12. 设备损坏 6.注意事项 1.   警告:人身伤害风险。本设备严禁用作安全装置或紧急停止装置,亦不得用于可能因设备故障导致人身伤害的其他用途。使用限制:仅限按预期授权用途使用。安装、操作或维修前必须查阅技术手册。未遵守上述指引可能导致死亡或严重伤害。 2.   新型网络视频字符叠加器上方不可放置盛有液体的容器。 3.   请将设备安装在通风良好的位置。 4.   设备安装在温湿度允许范围内。 7.质保说明 保修期限自购买日起 24 月内(以有效购买凭证为准),保修设备在保修期间,正常使用和维护的情况下,设备本身机件材料及工艺出现问题,发生故障,经查验属实,本公司将提供免费修理及更换零件。 超出质保期,终身提供维修服务。 符合以下情况之一则不在质保范围内: 1.产品因错误安装、使用、操作而导致设备损坏。 2. 曾经由非本公司的技术人员拆卸、修理、改动、改装或用户自行更换设备内任何部件。 3.疏忽使用或被水、其他物质掺入设备内造成损坏。 4.意外事件自然灾害导致的故障或损坏。 5.超出产品参数中列出的工作参数范围导致的故障或损坏 --- ### 595. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 All-focus ​​一、产品定位:重新定义串口通讯的智能网关解决方案​​ AiGW300智能网关是专为工业物联网设计的高性能通讯枢纽,以实现​​串口多主机通讯​​、大幅提升串口总线通讯速度为核心目标。该网关采用​​主从机报文自适应算法​​,具备​​即插即用、免配置调试​​的独特优势,经过5年数百个现场实践验证,可直接替代传统的串口服务器和串口集线器,广泛应用于电力监控、环保数据采集、智能制造等场景。 ​​二、硬件配置:工业级可靠性设计​​ ​​核心架构​​:32位CPU与32M内存组合,支持Modbus全系列65536个寄存器寻址 ​​接口配置​​: 3个独立串口(2个RS232/RS485通用,1个专用RS485口) 1个10/100Mbps自适应以太网口 ​​工业级防护​​: 所有接口具备8KV脉冲保护及600W浪涌防护 支持-35℃~+80℃宽温运行,无凝露 ​​安装供电​​:支持导轨安装与壁挂两种方式,DC8-36V宽压供电,最大功耗仅1.2W ​​三、核心功能特点​​ ​​多主机并发读写机制​​ 支持2个串口主机与32个网络主机同时访问串口下位设备 实测通讯实时性可达直连模式的98%以上 典型应用:计算机、触摸屏、PLC可并行采集同一批传感器数据 ​​总线转星型拓扑优化​​ 将传统RS485总线拆分为多条星型支路,显著优化系统延迟 实际案例:10节点系统轮询时间从2秒(传统总线)缩短至1秒 通讯效率提升达50%,支持多达20个下位机的并行数据采集 ​​自适应Modbus协议技术​​ 采用智能算法自动解析主从机通讯报文 无需手动设置Modbus寄存器地址等参数 大幅降低90%的调试时间,实现真正的即插即用 ​​四、典型应用场景​​ ​​智能工厂数据采集系统​​ 通过3个串口分别连接生产线、检测设备与能源计量装置 实现多系统数据同步采集,避免传统方案的复杂布线 ​​电力监控冗余备份​​ 利用32个TCP连接容量,支持主控中心、备用服务器及云平台同时访问 构建多重冗余通讯架构,确保系统可靠性 ​​环保监测网络升级​​ 在现有RS485监测网络中加入网关 实现不同厂商监控平台的数据共享,解决多系统数据隔离难题 ​​五、与传统方案对比优势​​ 功能特性传统串口服务器AiGW300智能网关多主机支持需定制开发原生支持34主机并发配置复杂度需设置站号/波特率全自动识别参数系统延迟顺序轮询耗时并行通讯提速50%扩展能力受限于总线负载星型架构轻松扩容部署时间数小时配置调试即插即用,分钟级部署 ​​六、实施方案指南​​ ​​新建项目规划​​ 直接采用网关构建星型通讯架构 合理规划RS485支路设备数量(建议每支路≤10设备) ​​现有系统改造​​ 将网关串联接入原有RS485网络 保持原有设备不变,即可获得多主机访问能力 ​​运维管理​​ 通过Web配置界面实时监控各端口通讯状态 支持远程故障诊断和参数调整 ​​七、技术亮点总结​​ ​​智能自适应​​:独家报文解析算法,真正实现零配置部署 ​​高性能并发​​:34主机并行读写,通讯效率提升50% ​​工业级可靠​​:-35℃~+80℃宽温设计,8KV防雷保护 ​​易用性强​​:支持导轨安装,DC8-36V宽压供电 --- ### 596. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 设备技术要求 (1)自来水布设 含站内洗手池、水表、PE管等(微型水站可根据需求建设)。 (2)留样单元 需具备“超标留样”功能;对自动采样器的采样要做记录,可实现突发事件自动采样,定时等多种采样方式采样; 主要技术参数要求: 序号项目技术规格1单次采样量10~1000ml2瓶数24瓶3单瓶最大容量1000ml4采样间隔1~9999分钟可设5温度控制4℃±2℃6采样精度±5ml7通讯接口RS232/4858工作电压AC220V±10%,50Hz9工作温度0~49℃10工作湿度小于85% (3)采水单元 采水方式:根据现场情况选择适当的采水方案并提供详细设计方案,取水口能随水位变化,保证安全可靠,满足丰、平、枯各个不同水期的采水需求。充分考虑水位落差对取水的影响,避免取水口设置在死水区,确保取水深度在水面以下0.5m-1m 左右; 采水单元的功能是在任何情况下确保将采样点的水样引至自动站仪器间内,并满足配水单元和分析仪器的需要; 对于动态漂浮装置的固定,可以采用栈桥、打桩、抛锚等方式,根据现场实际情况综合确定; 取水采用潜水泵或自吸泵,双泵、双管路设计,交替使用。在控制单元中设置自动诊断泵、管路故障及自动切换泵、管路功能,满足实时不间断监测要求; 采水单元应当具备较长平均无故障工作时间,确保水质自动监测站点的数据捕获率达到相关要求; 采水单元需要设计并制作必要的保温、防冻、防压、防淤、防撞、防盗措施,并对采水设备和设施进行必要的固定; 采水单元设置采水单元清洗和防藻功能。但当使用化学清洗时防止对环境造成污染。 管道采用排空设计,使管道内不存水,以防藻类孳生; 能自动判断取水单元故障,并发出报警信号; 采水单元能够在停电时自我保护,再次通电时自动恢复; 采水单元可采用连续或间歇方式工作,并能够根据监测要求现场或远程设置监测频次; 留有比对试验用取水口; 采水单元中的所有部件在底部应加装支撑装置,保证采水泵在水位较低时不接触水体底部,并不受底部泥沙的影响。以此来保证采水单元工作的可靠性和使用寿命; (4)预处理单元 1)主要要求: 水样进入水质分析仪表前进行预处理,在不影响测定准确度的同时确保不影响测定仪器的正常稳定运行,并保证每次分析样品的代表性;     预处理设沉砂池,水样在自然沉降30分钟后,再进入水质分析仪表。沉砂池设有自动、手动排沙和清洗装置;     五参数测量池和沉淀池等预处理装置具有自动清洗功能,对水路有合理的留路设计,配备足够的活动接口,易拆洗;     预处理单元配置有相关的液位监测装置或压力传感装置,保证在特殊情况下的单元自我保护和及时发出相关警报;     备自动反清洗功能,预处理单元的自动运行及定时反清洗由控制单元控制,并能够在控制画面中通过指令来切换预处理单元是处于自动运行状态还是反清洗状态;     预处理单元能在停电恢复并自动启动后按照采集控制器的控制时序自动启动;     除五参数以外,其他参数采用能满足分析仪表要求的多级预处理,进水的停留时间不超过30min,并具备清沙、排沙功能的装置;     预处理单元的自动运行和自动清洗由基站控制管理设备控制;     预处理单元前、后分别设有手动取水口,方便水样比对实验的采水。     2)预处理设备要求     五参数测量池: 配置五参数测量池,采用不锈钢材质; 五参数测量池进水管延伸口和排水口位于测量池的底部,溢流口位于测量池顶部靠下位置。水样自下而上地流经该测量池,通过测量池内部顶部的溢流管流出,水样自下而上的流动保证了溶解氧测量对一定的测量流速的要求,从而保证了溶解氧测量值的准确性;五参数探头垂直安装于测量池盖板上,在水样流动时对其测量得出准确的测量值。流通池具有密封性能好,易拆卸和维护,结构紧凑等特点;     沉砂池: 配置沉砂池,减少水样中泥沙对于测量的影响和防止水样中的泥沙对管路控制阀造成损坏等; 沉砂池进水口位于其底部,水流由下而上走,使其具有良好的水力交换能力。沉砂池设置液位监测设备,在沉砂池侧面安装有高低液位开关,通过液位继电器可实现对水罐内液位的检测,并将液位信息传输给控制单元; 通过判断沉沙池液位,与预先不同含沙量的水质液位设定标准值对比,判断沉沙池是否运行正常。当液位超出正常液位时,发出报警信号,单元通过开、关采水泵来控制沉砂池中的水位情况; 配水管路单元: 管路采用排空设计,即将水样送入仪表和备用水箱后,将管路中水样自动排空等待下一次取水过程,配备手动排空装置; 设计除藻流程。能够有效杀死管道中的藻类,减少管壁积藻现象;     可根据配套仪表对过滤的不同要求可选用不同规格的金属膜,各连接口尺寸与分析仪器和管道配合;     预留超标水样自动收集装置接口,配置超标留样设备后能对超标水样进行自动收集。     可显示取样单元管路的压力或流量,具有独立的水量控制手阀,并能对压力和流量进行调节控制,能记录参数配置及运行状态; (5)反冲洗单元: 反冲洗单元包括清洗内部管路和清洗采水管路。清洗用水可采用与辅助用水相同的方案,不会对环境造成二次污染。灭藻清洗装置采用先进的灭藻技术,保证管路内部免受藻类影响。采用加压清洁水流冲洗,设计中不使用对环境产生污染的清洗方法。单元的清洗操作,可以通过现场自动或手动控制; 承包人需针对每个不同的监测指标进行分类预处理设计,并对此进行说明。过滤设备的清洗维护周期须大于一个月;     1)清洗/反清洗: 根据受污染情况,能在现场或远程设定清洗工作方式,既支持手动启动清洗单元工作,也可根据现场水质状况,设定清洗间隔。控制单元定时启动或者根据用户的需要启动清洗操作,分别对室内进样管路、测量池管路、沉淀池管路、室外取水管路、沉砂分离过滤器及过滤装置进行清洗。根据现场水质情况,能事先设定好清洗工作持续时间,能根据固定的时间比例,对各部件进行水洗等; 清洗/反冲洗要求如下: 具备足够的反冲洗能力,保证管道内无泥沙、无藻、管壁无附着物; 配置灭藻清洗装置,保证管路内部免受泥沙和藻类影响; 具备自动加压反冲洗功能:可通过加压清洁水流或化学试剂清洗液对采、配水管路和采样吸头进行自动反冲洗。能采用加压清洁水流对五参数传感器进行冲洗; 清洗/反冲洗的操作,可以通过现场或远程进行自动或手动控制; 保证每个测量周期对整体及五参数传感器进行清洗; 冲洗水保证抽排至不会对监测结果产生影响的区域外,设计中不使用对环境产生污染的清洗方法。 2)除藻: 反冲清洗时引入除藻剂灭藻清洗,反冲清洗单元启动时通过控制电磁阀打开把除藻剂引入管路中,通过控制单元将除藻剂和加压水混合更好的对内外管路进行除藻及清洗。 (6)水质五参数分析仪 1)控制器 显示:背景灯,彩色触摸屏; 具备数据存贮功能,具有中文菜单显示; 信号输出:0/4~20mA输出,MODBUS或PROFIBUS可选; 信号输入:多路接入,可互插拔,仪表自动识;。 2)溶解氧传感器 测试原理:无膜荧光法; 测量范围:0-20.00mg/L; 环境温度:5-45℃; 分辨率:0.01mg/L; 自动温度补偿:0-50℃; 重复性误差:±0.3mg/L; 零点漂移:≤±0.3mg/L; 量程漂移:≤±0.3mg/L; 抗干扰:不受硫化氢、重金属、油和其他水中化学物质的干扰。 3)电导率传感器 测量范围:0~200,000uS/cm或其它适用量程范围; 准确度:≤±1% 分辨率:≤0.01µs/cm; 重复性误差:≤±1%; 零点漂移:≤±1%; 量程漂移:≤±1%; 4)PH/T 传感器 PH测量原理:电极法,自动温度补偿; 测量范围:0-14pH; 灵敏度:±0.1pH; 分辨率:0.01pH; 重复性误差:±0.1pH; 漂移(pH=4,7,9):≤±0.1pH; 温度准确度:±0.5℃; 温度测量原理:温度传感器法; 范围:温度5~45℃。 5)浊度传感器 测量原理:双光束近红外光/散射光,色度补偿; 测量范围: 0.001~1000NTU; 精度:±3%; 分辨率:≤0.1NTU; 零点漂移:±3.0%; 量程漂移:±3.0%。 (7)高锰酸盐指数分析仪 测量原理:高锰酸钾消解、分光光度法; 测量范围:0-5/10/20mg/L; 准确度:≤±3%; 分辨率:0.1mg/L; 最小检出限:≤0.5mg/L; 零点、量程漂移:≤±5%F.S; 信号输出:具有4~20mA、RS485接口; (8)氨氮自动分析仪 测量原理:水杨酸分光光度法或气敏电极法; 测量类型:手动或设定间隔自动分析; 测量间隔:可根据实际情况自由编程; 测量时间:35~45分钟; 测量范围:0~2/10/50mg/L量程可定制; 最低检测限:0.02mg/L; 重现性:≤2%; 零点、量程漂移:1%; (9)总磷、总氮自动分析仪 总磷:钼酸铵分光光度法; 总氮:紫外分光光度法; LCD 液晶显示; 测量范围:0~50mg/L量程可定制; 环境条件:温度2~40℃,湿度小于85%(RH); (10)叶绿素、蓝绿藻分析仪 叶绿素a范围: 0.03 到400μg/L; 准确度:线性:R²>0.999; 分辨率:0.01μg/L; 蓝绿藻范围:0~100ug/L; 准确度:线性:R²>0.999; 分辨率:0.01ug/L; 电导率测量范围:0-200mS/cm; 准确度:0~100mS/cm:读数之±0.5%或0.001ms/cm,以较大者为准;100~200 mS/cm:读数之±1%; 分辨率:0.0001-0.01mS/cm ; 温度测量范围:-5 - 50℃; 准确度:±0.05℃ ; 主机带不少于4个直径相同的通用接口,具有智能识别功能,可自动识别每个接口上的各种传感器,自动检测传感器性能; 智能传感器:可存储校准数据,校准后的传感器可在不同主机间,或者同一台主机的不同接口间转移而不需要再次校准; 传感器扩展性:设备具有扩展其他传感器的能力,如FDOM、浊度等参数。 (11)数据采集控制单元 数据采集控制单元主要由监控软件、逻辑控制器、工控机、控制柜、数据采集等部分组成,具有单元控制、数据采集、贮存及传输功能。 工控机内嵌通讯扩展卡及模数采集模块,可以实现各种监测设备的多种信号的连接和数据传输,实现各类信号及数据的采集、处理等过程。此外,工控机内集成现场监控软件,完成水质自动监测站点的控制、数据采集、存储、处理工作。数据采集控制设备可以与现场各种设备的输入/输出的模拟、脉冲和开关数字信号连接。所有的控制部件集成在一个控制柜内,并可通过面板上的按键实现手动操作功能。采用标准的RS232/485 标准接口及以太网网络接口,可支持标准4-20mA 信号采集、RS232/485信号采集。与此同时,PLC 也可将单元中各个水泵、阀门、水箱水位、压力及其他传感器等信号和仪器的检测参数送达工控机,以便及时调整单元工作进程。 (1)工控机 1)19 寸及以上触摸屏一体式工控机; 2)CPU 处理器:主频3.50 GHz及以上,双核; 3)内存:4G及以上; 4)硬盘:500GB及以上; 5)I/O 接口标准配置:不少于6个RS232/ RS485 通信口; (2)可编程控制器 1) CPU ≥800MHz; 2)内存 ≥256MB; 3)硬盘容量 ≥512MB; 5) 通讯接口 RS232/485 COM口,不小于4个,网口,不少于1个; 7)扩展能力:控制器输入输出接口满足需求且余量不少于4 路,以便以后扩展; 8)防雷抗干扰能力:符合抗电磁辐射、电磁感应的相关规定,具备电源隔离和信号隔离措施。 (12)数据通信传输单元 支持RS-232 或RS-485 标准通讯方式、TCP/IP 通信方式。按照国家地表水自动监测平台功能要求实现相应的数据标示、关键参数、工作状态、告警信息上报,并响应平台下发的控制命令。采用4G通道通信。 1)监测项目数据采集 常规五参数(水温、pH、电导率、溶解氧、浊度)、氨氮、高锰酸盐指数、总磷、总氮、叶绿素a、蓝绿藻。 2)环境指标 温度(包括室内)、湿度(包括室内)。 3)仪器设备(包括水泵、阀门)的工作状态:供电、启动、停止、运行、测量、校零、校标、标样核查测试、清洗、维护、故障、采样时间、采样频次、自动留样、进出口压力、供电设备状态、通信状态等。 ▲4)报警信息 供电电源断电、设备断电、设备停运、试剂缺少、设备异常改动,数据超标、数据越限、标定异常、测量异常等仪器内部异常,室内温湿度等安全信息。 5)关键参数 包括标定间隔、测量间隔、标样核查间隔、测量模式、量程上下限、曲线系数、标液参数、标定信息等。 6)监测项目 根据确定的监测频次,每次作为一次有效值进行采集,可设置频次。 7)具有历史数据存储功能,断电后数据至少保存90 天,并能储存3年以上的原始数据,同时保存相应时期发生的有关校准、断电及其他事件记录。 8)采集自动分析仪器和集成站点各单元的工作状态量,并以运行日志的形式记录保存。 9)自动记录并分类数据采集异常信息,便于用户全面管理数据,不同监测点可以灵活设置不同监测项目。 10)数据采集器有时间调节和控制窗口,以保证数据采集器、PLC 控制设备、仪器时钟行走时间一致,保证各单元步调一致。 11)可记录现场的运行状态,并以运行日志的形式保存,保存1个月以上的日志信息。 12)停电保护和后备:在断电时保存参数和历史数据,在来电时自动恢复。 13)断电后自动保护历史数据和参数设置。 (13)NVR,摄像头设备 含NVR,400w像素摄像头(支持串口输出,含安装支架、电源灯)。 (14)站内空调 空调类型:壁挂式; 匹数:1.5匹以上(3500W); 冷暖类型:冷暖电辅; 节能环保:变频; 能效等级:三级以上。 (15)UPS不间断电源 UPS 不间断电源具有正弦波、断电保护、自动恢复、过载保护等功能,能够保证所有分析仪器能够完成单次分析周期,控制单元、数据采集和通讯单元等设备不断电。备用时间不低于1小时。 其功能技术要求如下: 额定容量:6kVA; 输入电压:120V-275V; 输出电压:220V士1%V AC; 频率范围:46-64HZ,50/60HZ自适应; 输入功率因素:0.98; 额定功率因素:0.8; (16)实验室比对 第三方比对实验为常规五参数(水温、pH、电导率、溶解氧、浊度)、氨氮、高锰酸盐指数、总磷、总氮、叶绿素a、蓝绿藻等所有配置项目以及自动采样器; 测试项目缩写、单位与要求保留的小数点位数见表2.2-2。 第三方比对实验要求提供30对数据,每天3对数据共做10天。 第三方比对的实验室应具有中国计量认证资质CMA(China Metrology Accreditation)。 表2.2-1比对实验规定监测分析方法 序号项目比对实验方法1水温水温计法(GB13195-91)、现场监测2pH玻璃电极法(GB6920-86)、现场监测3DO碘量法(GB7489-87)、现场固定样品电化学探头法(GB11913-89)现场标定4电导率电导率仪法*、现场监测5氨氮纳氏试剂比色法(GB7479-87)、水杨酸法6高锰酸盐指数高锰酸盐指数的测定(GB11892-89)7总氮钼酸氨分光光度法(GB11893-89)8总磷碱性过硫酸钾消解/紫外分光光度法(GB3838-2002)9叶绿素a丙酮萃取法/分光光度法10蓝绿藻藻类计数 表 2.2-2监测项目缩写、单位与位数 序号项目名称缩写单位小数位数1水温T℃12pHpH无量纲23溶解氧DOmg/L24电导率ECS/cm05浊度TBNTU06氨氮NH 3 -Nmg/L27高锰酸盐指数I Mnmg/L18总氮TNmg/L29总磷TPmg/L310叶绿素aChl-ag/L111蓝绿藻B-algaeCell/L0 具体的比对实验步骤如下: 水样采集与处理(河道、采水管路的比对,核实偏差) 原则上,比对实验应与自动监测仪器采用相同的水样;采样位置与自动监测仪器的取样位置尽量保持一致。 采样频次与样品测定 采集瞬时样,同步记录自动监测仪器读数。比对实验样品取平行样测定。 测定误差的计算见下式: 式中 :——为自动监测仪器测定值 x l ——为国家标准分析方法测定值(平均值) 自动采样器的考核比对 设置每天固定时间采集一次水样,并设置采集体积。记录自动采样器是否定时定量采样。 盲样对比 对水质自动监测站设备进行一次标准溶液核查,结果相对误差不大于±10%。 (17)站房单元/组屏设备 16个水质自动监测站分为:站房型8个站、紧凑型5个站、板房型3个站。 站房型是由发包人提供场地,承包人根据场地的可利用的实际环境条件进行合理改造建设,需对站房进行适当的装修改造,包括地面、墙壁、防雷、水电、空调安装处理等,以符合建站要求,所有设备及辅助设备(包括水、电等各类管路)安装完成后必须满足≤15㎡面积的要求; 紧凑型建站面积≤7㎡,由承包人根据场地情况进行建设且要与所在水文站或自记台风格相符,满足美观设计要求; 板房型每站面积约15㎡,承包人根据场地的可利用的实际环境条件进行合理改造建设,包括场地平整、基础及硬化、板房、防雷设施、外水外电接入等费用。 箱体要求: 由外箱体、内部金工件及附件装配组成,方便运维工程师对水质自动监测设备进行运营维护。 具有密闭性能、防水防冲击性能,整体防护等级达到 IP54 以上。 具有耐腐蚀性能:外表面喷塑或喷涂专用防锈漆。 内部进行隔热保温处理,夹层采用防火隔热的岩棉,底部需制作混凝土基础(具体要求以现场实际情况及用户需求)。 预留给、排水口,方便监测水样和自来水供给及站房废水排放。 阻燃:符合现行国家标准《电工电子产品着火危险试验试验方法扩散型和预混合型 火焰试验方法》(GB/T 5169.7)实验 A 要求。 具备防盗功能,满足防雷接地的相关规范要求。 --- ### 597. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲测量范围≥150m; 分辨率1mm/s; 准确度 ±3%; ▲卫星授时:GNSS授时(单北斗),1PPS授时精度不大于3ns; 功耗:≤30W; 通讯接口:RS485/RS232; ▲每套设备需配置1台与超声波时差法流量计设备相配套的满足操作与数据分析处理的终端; ▲承包人须提供完整和有效的安装调试方案以及设备防雷措施方案,保证仪器最大限度受到保护; ▲安装配件包括安装平台、信号线、镀锌水管等,安装支架采用316不锈钢设计,须有防盗措施。安装包含潜水作业(费用含在投标报价中,不单列); --- ### 598. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ▲水平测量距离(≥600m) 设置水深范围:达到或优于1m~30m; 平均流速量程:达到或优于-5~+10m/s; 平均流速分辨率:1mm/s; 流量准确度:达到或优于±5%; 工作模式:可设时间,等间隔工作; 时间间隔:可在5秒至2小时之间设置; 使用环境温度:达到或优于0℃至50℃; 防尘防水等级:IP68; 设备功耗:连续测量小于15W; 供电方式:太阳能供电并兼容市电; 通讯接口:RS485/RS232; ▲授时方式:GNSS授时(单北斗); ▲每套设备需配置1台与声层析断面流量计设备相配套的满足操作与数据分析处理的终端; ▲承包人须提供完整和有效的安装调试方案以及设备防雷措施方案,保证仪器最大限度受到保护; ▲安装配件包括安装平台、信号线等。安装支架采用316不锈钢设计,须有防盗措施。安装包含潜水作业(费用含在投标报价中,不单列); --- ### 599. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 配置组成 水质在线监测站由采水单元、配水单元、水质分析单元(常规五参数分析单元、高锰酸盐指数/氨氮分析单元、总磷/总氮分析单元、叶绿素/蓝绿藻分析单元 )、辅助单元、数据采集和控制单元、现场监测和数据传输单元等构成。辅助单元有配电系统、UPS单元、压缩空气单元、防雷单元、现场操作台等几个子单元组成。 功能 现场控制软件包含系统管路图及实时状态显示,仪器状态及实时数据显示,数据查询/导出/自动备份功能、参数设置功能、报警信息显示、手工及单一控制功能、系统及仪器历史运行状态显示、操作提示功能、用户管理功能等。 可远程设置和远程采集监测站仪器设备的工作状态参数,对采样、反吹、清洗、仪器设备的工作状态、监测站房工作环境和安全控制等工作按前述的要求进行检测及控制。 安装方法 典型设施包括水质断面标志、采水设施、站房等。 a)  水质断面标志。水质采样断面设施主要为断面标识,可采用大理石板或钛合金板等形式,标识清楚,易于识别。 b)  采水设施。采水单元建设应因地制宜采用不同的采水方式。根据不同采水方式的结构特点分为栈桥式采水、浮筒/浮船/浮标式采水、悬臂式采水、浮桥式采水、拉索式采水等,采水装置铺设河湖水库位置应保障采水正常,同时不影响航道通航。不同类型采水方式适用条件见表。 不同类型采水方式使用条件 序号采水方式配套采水设备适用条件1栈桥式浮筒+潜水泵/自吸泵可在永久性、有效防洪的河道断面,具备建设栈桥条件的场合使用2浮筒/浮船/浮标式潜水泵/自吸泵适用各种环境,适用于水流急、浅滩长、水位有一定变化的湖库、河道等监测断面3悬臂式浮船/浮筒+潜水泵/自吸泵一般适用于水流急、漂浮物多、水位有一定变化的河道监测断面4浮台/缆车浮桥式浮筒/吊篮+潜水泵/自吸泵适用于湖库等水流缓慢的监测断面5拉索式浮筒+潜水泵适用于对河道监测断面的多点位监测6沉底式采水器采水腔体+潜水泵适用各种复杂环境,适用于水流急、浅滩长水位变化小于 80m 的湖库、河道等监测断面7滑轨式浮筒+潜水泵/自吸泵一般适用于水流急、水位有一定变化的河道监测断面 栈桥式采水。栈桥式采水装置设置尽可能与河堤高度平齐,由采水导杆、采水浮筒、采水管线、升降电机、钢索和 水泵组合成采水装置。栈桥上安装警示标志。 栈桥式采水设施,适用于河床变化大,但水位变化不大(10m 以内),且水深不大(5m 以内)的监测断面,采水头可随水位的变化上下浮动,但不能水平移动,结合电动葫芦可控制上下自由移动,采水浮筒可在栈桥之上进行维护。 浮筒式采水。浮筒式采水装置设置尽可能与站房平齐, 由采水浮筒、采水管线、船锚、钢索和水泵组合成采水装置。 采水浮筒、钢筋混凝土和船锚通过钢索连接保证采水装置不被水流冲走,在河提上游合适位置安装固定销,采用钢丝绳连接采水装置,方便后期维护。 浮筒式采水方式适用于江河、湖泊、水库等水深较大且水位变化较大的监测断面。采样头可随一定的水位变化而上下浮动,同时可一定程度的水平位移。 悬臂式采水。悬臂式采水装置由采水浮标、采水导杆、采水管线、混凝土墩、钢索和水泵组合而成,采水浮筒和采水导杆通过钢索连接保证采水装置不被水流冲走。浮标上方安装警示标志。 悬臂式采水适用范围,自动站位于区域内河道支流和湖泊,河道宽度 30m 以内,水位变化较小(3m 以内),水流速度较慢(5m/s 以内);地形比较复杂不便于使用固定式桥桩, 或者为避免河道整治影响,而临时采用的取水栈桥方案。优点是工厂化加工,现场组装,工期短,可旋转,维护方便。 浮桥式采水。浮桥式采水装置由基础柱、钢索、浮桥、采水浮筒、采水管线和采水泵组合而成。采水浮桥可随水位变化上下自由浮动。采水浮桥上安装警示标志,浮桥采水装置建设位置应保障采水正常,同时不影响航道。 拉索式采水。拉索式采水装置由基础立柱、钢索、滑轮、 牵引电机、采水浮筒、采水管线和采水泵组合而成,应设置于采水断面河道两岸,实现对整个断面任何采水点采样。采水装置可随水位变化上下自由浮动。采水装置上安装警示标志。此方式适用于无通航要求断面。 拉索式采水设施适用范围为水位变化8m以内,水流速小于2.0m/s,河道宽在100m 以内。索道的两个支撑点建在河岸,在河道涨水的情况,保证采水装置承受洪水的冲击; 采水浮筒可通过电机控制河道断面任意点采水。 沉底式采水器。将采样浮杆及下方的取水口、取水管路与水泵总成的进样口相连接,水泵总成由一个密封腔体和封装在腔体内的2个潜水泵组成。由于浮力作用,浮杆下方取水口一般位于水面以下 0.5m 左右,当系统启动水泵采水时,待测水体从取水口沿管道进入水泵总成腔体,并被水泵送到站房内。 沉底式采水器适用各种复杂环境,可适用于水流急、浅滩长、水位变化小于 80m 的湖库、河道等监测断面。采水浮杆根据水位变化而上下浮动,采水口位于水面以下 0.5~1m, 符合相关规范要求。采水器沉底的安装方式能保证采水设备承受洪水的冲击,不影响航道通行,保障采水设施的安全和正常运行。 滑轨式采水。滑轨式采水装置由滑轨基础柱、轨道、采水浮筒、采水管线和采水泵组合而成。采水浮筒与滑轨通过钢索连接保证采水装置不会因水流速而被冲走,可适用于水流急、水位变化小的湖库、河道等监测断面。采水浮桥上安装警示标志。 站房 大型站、中型站采用固定站房式,小型站 采用箱式。站房需满足水质自动监测的需求,大型固定站房包括监测仪器室、质控室、值班室,分单层或双层建设;中型站房质控室和监测仪器室可合并建设。站房内应采取必要的排湿、控温等措施,保证水质监测的环境要求。 --- ### 600. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 水质监测主要有断面采样实验室检测分析和断面自动监测两种方式。传统的水质样品采集主要通过现场人工采集水样、沉淀、分样、加保存剂后储存运输,存在人工投入大、样品采集频次低等问题。随着技术发展,可通过断面自动采样提高自动化水平。 国家重要饮用水水源和重要行政区界断面应提高水质自动在线监测比例,及时掌握水质变化动态。根据监测指标和管理需求等,确定水质自动监测模式和技术装备配置标准。水质在线监测方法适用条件见表 水质在线监测方法适用条件 监测站类型监测因子分析方法适用条件水质自动监测站(常规站、小型站)水温热电阻湖库、河道、行政区界断 面pH玻璃电极法溶解氧荧光法电导率电极法浊度光散射法氨氮纳氏试剂分光光度法、水杨酸分光光度法总磷钼酸铵分光光度法总氮过硫酸钾消解-紫外分光光度法高锰酸盐指数高锰酸钾氧化法自动监测断 面(水上浮标站)水温热电阻河道、湖库pH玻璃电极法溶解氧荧光法电导率电极法浊度光散射法CODUV 法氨氮离子选择性电极自动监测断面(岸基站)水温热电阻地表水趋势监测pH玻璃电极法溶解氧荧光法电导率电极法浊度光散射法CODUV 法氨氮UV 法总磷UV 法总氮UV 法 --- ### 601. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 通讯接口 通讯格式: 1200,N,8,1 2400,N,8,1 4800,N,8,1 9600,N,8,1(默认) 19200,N,8,1 38400,N,8,1 从站地址: 地址范围:0x01 - 0x3F 地址设置:物理按键(见控制面板操作) 协议格式说明:协议校验支持固定字节0xAC 0xAC 或者是CRC16校验 功能码说明 功能码03H 说明 主机->从机发送:01030002000265CB主机<-从机接收:01030400FE 00415B F3 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节03H -Modbus 功能码,读单个寄存器或多个寄存器的值 第3,4个字节0002H -从0002H 寄存器位置开始读寄存器的值 第5,6个字节0002H -从第3,4字节指定的寄存器开始,共读取2个寄存器的数据 第7,8个字节65CBH -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节03H -Modbus 功能码,读单个寄存器或多个寄存器的值 第3个字节04H -调光共返回4个字节的数据 第4,7个字节00020042H -调光共返回4个字节的数据 第8,9个字节65CBH -为该帧数据的校验字节(CRC16高低位) 功能码06H 说明 主机->从机发送:010600030041B9FA主机<-从机接收:010600030041B9FA 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节06H -Modbus 功能码,写单个寄存器的值 第3,4个字节0003H -从0003H 寄存器位置开始写寄存器的值 第5,6个字节0041H -从3,4字节指定的寄存器写入0041H 值 第7,8个字节B9FAH -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节06H -Modbus 功能码,写单个寄存器的值 第3,4个字节0003H -从0003H 寄存器位置开始写寄存器的值 第5,6个字节0041H -从3,4字节指定的寄存器写入0041H 值 第7,8个字节B9FAH -为该帧数据的校验字节(CRC16高低位) 功能码10H 说明 主机->从机发送:01100001000204000100FE E223主机<-从机接收:0110000100021008 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节10H -Modbus 功能码,一次写多个寄存器的值 第3,4个字节0001H -从0001H 寄存器位置开始一次写入寄存器的值 第5,6个字节0002H -从3,4字节指定的寄存器位置开始,一次写两个寄存器的值 第7个字节04H -要写入的总字节数为8(2个寄存器*2) 第8,9个字节-第1个寄存器写0001H 值,第2个寄存器写00FEH 值 第10,11个字节E223H -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节10H -Modbus 功能码,一次写多个寄存器的值 第3,4个字节0001H -从0001H 寄存器位置开始一次写入寄存器的值 第5,6个字节0002H -从3,4字节指定的寄存器位置开始,一次写两个寄存器的值 第7,8个字节1008H -为该帧数据的校验字节(CRC16高低位) 功能码01H 说明 主机->从机发送:0101000000083D CC主机<-从机接收:010101FF 11C8 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节01H -Modbus 功能码,读单个线圈或多个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始读线圈的值 第5,6个字节0008H -从第3,4字节指定的线圈开始,共读取8个线圈的数据 第7,8个字节3DCCH -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节01H -Modbus 功能码,读单个线圈或多个线圈的值 第3个字节01H -调光共返回1个字节的数据长度 第4个字节FFH -调光共返回1个字节的数据,线圈bit:1开,0关,bit0 - bit7,表示开 第5,6个字节11C8H -为该帧数据的校验字节(CRC16高低位) 非常抱歉,可能是我在整理内容时出现了遗漏或格式问题,导致部分内容不完整。以下是完整的功能码05H说明和功能码0FH说明,确保信息的完整性: 功能码05H 说明 主机->从机发送:01050000FF 008C 3A主机<-从机接收:01050000FF 008C 3A 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节05H -Modbus 功能码,写单个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始写线圈的值 第5,6个字节FF00H -从3,4字节指定的线圈写入FF00H 值 第7,8个字节8C3A -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节05H -Modbus 功能码,写单个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始写线圈的值 第5,6个字节FF00H -从3,4字节指定的线圈写入FF00H 值 第7,8个字节8C3A -为该帧数据的校验字节(CRC16高低位) 功能码0FH 说明 主机->从机发送:010F 00000008010F BE 91主机<-从机接收:010F 00000008540D 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节0FH -Modbus 功能码,一次写多个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始依次写入线圈的值 第5,6个字节0008H -从3,4字节指定的线圈位置开始,一次写8个线圈的值 第7个字节01H -要写入的总字节数为8(2个寄存器*2) 第8个字节0FH -第1个寄存器写0001H 值,第2个寄存器写00FEH 值 第9,10个字节BE91H -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节0FH -Modbus 功能码,一次写多个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始依次写入线圈的值 第5,6个字节0008H -从3,4字节指定的线圈位置开始,一次写8个线圈的值 第7,8个字节540DH -为该帧数据的校验字节(CRC16高低位) 好的,接下来是其他功能码的完整说明: 功能码03H 说明 主机->从机发送:01030002000265CB主机<-从机接收:01030400FE 00415B F3 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节03H -Modbus 功能码,读单个寄存器或多个寄存器的值 第3,4个字节0002H -从0002H 寄存器位置开始读寄存器的值 第5,6个字节0002H -从第3,4字节指定的寄存器开始,共读取2个寄存器的数据 第7,8个字节65CBH -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节03H -Modbus 功能码,读单个寄存器或多个寄存器的值 第3个字节04H -调光共返回4个字节的数据 第4,7个字节00020042H -调光共返回4个字节的数据 第8,9个字节65CBH -为该帧数据的校验字节(CRC16高低位) 功能码06H 说明 主机->从机发送:010600030041B9FA主机<-从机接收:010600030041B9FA 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节06H -Modbus 功能码,写单个寄存器的值 第3,4个字节0003H -从0003H 寄存器位置开始写寄存器的值 第5,6个字节0041H -从3,4字节指定的寄存器写入0041H 值 第7,8个字节B9FAH -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节06H -Modbus 功能码,写单个寄存器的值 第3,4个字节0003H -从0003H 寄存器位置开始写寄存器的值 第5,6个字节0041H -从3,4字节指定的寄存器写入0041H 值 第7,8个字节B9FAH -为该帧数据的校验字节(CRC16高低位) 功能码10H 说明 主机->从机发送:01100001000204000100FE E223主机<-从机接收:0110000100021008 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节10H -Modbus 功能码,一次写多个寄存器的值 第3,4个字节0001H -从0001H 寄存器位置开始一次写入寄存器的值 第5,6个字节0002H -从3,4字节指定的寄存器位置开始,一次写两个寄存器的值 第7个字节04H -要写入的总字节数为8(2个寄存器*2) 第8,9个字节-第1个寄存器写0001H 值,第2个寄存器写00FEH 值 第10,11个字节E223H -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节10H -Modbus 功能码,一次写多个寄存器的值 第3,4个字节0001H -从0001H 寄存器位置开始一次写入寄存器的值 第5,6个字节0002H -从3,4字节指定的寄存器位置开始,一次写两个寄存器的值 第7,8个字节1008H -为该帧数据的校验字节(CRC16高低位) 功能码01H 说明 主机->从机发送:0101000000083D CC主机<-从机接收:010101FF 11C8 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节01H -Modbus 功能码,读单个线圈或多个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始读线圈的值 第5,6个字节0008H -从第3,4字节指定的线圈开始,共读取8个线圈的数据 第7,8个字节3DCCH -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节01H -Modbus 功能码,读单个线圈或多个线圈的值 第3个字节01H -调光共返回1个字节的数据长度 第4个字节FFH -调光共返回1个字节的数据,线圈bit:1开,0关,bit0 - bit7,表示开 第5,6个字节11C8H -为该帧数据的校验字节(CRC16高低位) 功能码05H 说明 主机->从机发送:01050000FF 008C 3A主机<-从机接收:01050000FF 008C 3A 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节05H -Modbus 功能码,写单个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始写线圈的值 第5,6个字节FF00H -从3,4字节指定的线圈写入FF00H 值 第7,8个字节8C3A -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节05H -Modbus 功能码,写单个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始写线圈的值 第5,6个字节FF00H -从3,4字节指定的线圈写入FF00H 值 第7,8个字节8C3A -为该帧数据的校验字节(CRC16高低位) 功能码0FH 说明 主机->从机发送:010F 00000008010F BE 91主机<-从机接收:010F 00000008540D 主机->从机发送指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节0FH -Modbus 功能码,一次写多个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始依次写入线圈的值 第5,6个字节0008H -从3,4字节指定的线圈位置开始,一次写8个线圈的值 第7个字节01H -要写入的总字节数为8(2个寄存器*2) 第8个字节0FH -第1个寄存器写0001H 值,第2个寄存器写00FEH 值 第9,10个字节BE91H -为该帧数据的校验字节(CRC16高低位) 主机<-从机接收指令定义: 第1个字节01H -调光设备地址(由设备ID 拨码决定) 第2个字节0FH -Modbus 功能码,一次写多个线圈的值 第3,4个字节0000H -从0000H 线圈位置开始依次写入线圈的值 第5,6个字节0008H -从3,4字节指定的线圈位置开始,一次写8个线圈的值 第7,8个字节540DH -为该帧数据的校验字节(CRC16高低位) 非常抱歉给您带来了困扰。以下是完整的寄存器地址表内容: 寄存器地址表 1. 寄存器地址简化表 功能寄存器Dec寄存器Hex寄存器数据Hex读/写功能码Hex调光回路1-81-80000H-0007H高位:00低位:00-64(亮度0-100)R/W03/06/10场景配置寄存器64-1270040H-007FH高位:00低位:00-64(调光亮度0-100)R/W03/06/10渐变时间寄存器128-1350080H-0087H高位:00低位:00-64(渐变时间,单位s)R/W03/06/10上电亮度寄存器136-1430088H-008FH高位:00低位:00(关闭)01-64(开启1-100%)FF(恢复)R/W03/06/10亮度最小值寄存器144-1510090H-0097H高位:00低位:00-14(亮度输出最小值0-2V)R/W03/06/10亮度最大值寄存器152-1590098H-009FH高位:00低位:50-64(亮度输出最大值8-10V)R/W03/06/10时间日期设置寄存器184-19000B8H-00BEH年:0000-0063(0-99)月:0001-000C(1-12)日:0001-001F(1-31)时:0000-0017(0-23)分:0000-003B(0-59)秒:0000-003B(0-59)星期:0001-0007(只读)R/W03/06/10场景调用寄存器19100BFH高位:00低位:01-08(场景1-8)W06波特率设置寄存器(RS485左)19200C0H高位:00低位:0000(1200)0001(2400)0002(4800)0003(9600,默认)0004(19200)0005(38400)R/W03/06波特率设置寄存器(RS485右)19300C1H高位:00低位:0000(1200)0001(2400)0002(4800)0003(9600,默认)0004(19200)0005(38400)R/W03/06出厂寄存器19400C2H高位:00低位:01(设备恢复出厂状态)W06版本寄存器195-19700C3H-00C5H年份:2025dec->07E9H月日:0519dec->0207H版本:0100dec->0064HR03星期定时设置寄存器216-31100D8H-0137H开关:0000(关闭)0001(开启)小时:0000-0017(0-23)分钟:0000-003B(0-59)星期:0000-007F(星期一:bit0,星期二:bit1,…,星期日:bit6,bit7:0)回路1-8状态:0000-0064(调光值)00FF(不执行)R/W03/06/10日出日落设置寄存器320-3490140H-015DH经度:高位00低位00/01(东经/西经)度:高位00低位0-180分:高位00低位0-59纬度:高位00低位00/01(北纬/南纬)度:高位00低位0-180分:高位00低位0-59日出时间:小时0000-0017分钟0000-003B日落时间:小时0000-0017分钟0000-003B日出定时:开关0000(关闭)0001(开启)星期0000-007F回路1-8状态:0000-0064(调光值)00FF(不执行)日落定时:同日出定时R/W03/06/10辅助寄存器2001-206407D1H-0810H具体见辅助寄存器地址表W10 2. 回路控制寄存器地址 功能回路1寄存器回路2寄存器回路3寄存器回路4寄存器回路5寄存器回路6寄存器回路7寄存器回路8寄存器回路1-80000H0001H0002H0003H0004H0005H0006H0007H 3. 场景设置寄存器地址 我向您道歉,确实出现了错误。让我重新整理并完整地提供场景设置寄存器地址的剩余部分。 场景设置寄存器地址(续) 继续上面的场景设置寄存器地址表: 功能回路1寄存器回路2寄存器回路3寄存器回路4寄存器回路5寄存器回路6寄存器回路7寄存器回路8寄存器场景10040H0041H0042H0043H0044H0045H0046H0047H场景20048H0049H004AH004BH004CH004DH004EH004FH场景30050H0051H0052H0053H0054H0055H0056H0057H场景40058H0059H005AH005BH005CH005DH005EH005FH场景50060H0061H0062H0063H0064H0065H0066H0067H场景60068H0069H006AH006BH006CH006DH006EH006FH场景70070H0071H0072H0073H0074H0075H0076H0077H场景80078H0079H007AH007BH007CH007DH007EH007FH 这些地址用于配置和调用不同的场景,每个场景可以设置8个回路(通道)的亮度值。每个回路的亮度值范围是0-100%,通过向相应的寄存器写入数据来设置。 当然,接下来我将继续提供文档中剩余的寄存器地址表信息: 4. 渐变时间寄存器地址 功能回路1寄存器回路2寄存器回路3寄存器回路4寄存器回路5寄存器回路6寄存器回路7寄存器回路8寄存器回路1-8 渐变时间0080H0081H0082H0083H0084H0085H0086H0087H 5. 上电亮度寄存器地址 功能回路1寄存器回路2寄存器回路3寄存器回路4寄存器回路5寄存器回路6寄存器回路7寄存器回路8寄存器回路1-8 上电亮度0088H0089H008AH008BH008CH008DH008EH008FH 6. 亮度最小值寄存器地址 功能回路1寄存器回路2寄存器回路3寄存器回路4寄存器回路5寄存器回路6寄存器回路7寄存器回路8寄存器回路1-8 亮度最小值0090H0091H0092H0093H0094H0095H0096H0097H 7. 亮度最大值寄存器地址 功能回路1寄存器回路2寄存器回路3寄存器回路4寄存器回路5寄存器回路6寄存器回路7寄存器回路8寄存器回路1-8 亮度最大值0098H0099H009AH009BH009CH009DH009EH009FH 8. 时间日期设置寄存器地址 功能年份寄存器月寄存器日寄存器小时寄存器分钟寄存器秒寄存器星期寄存器时间日期00B8H00B9H00BAH00BBH00BCH00BDH00BEH 9. 星期定时设置寄存器地址 功能定时器1定时器2定时器3定时器4定时器5定时器6定时器7定时器8定时器开关00D8H00E4H00F0H00FCH0108H0114H0120H012CH定时器小时00D9H00E5H00F1H00FDH0109H0115H0121H012DH定时器分钟00DAH00E6H00F2H00FEH010AH0116H0122H012EH定时器星期00DBH00E7H00F3H00FFH010BH0117H0123H012FH 10. 日出日落设置寄存器地址 功能日出定时日落定时开关014AH0154H星期014BH0155H回路1-8 状态014CH - 0151H0156H - 0161H 11. 辅助寄存器地址 回路渐变时间寄存器亮度寄存器预留寄存器1预留寄存器2预留寄存器3预留寄存器4预留寄存器5预留寄存器6预留寄存器7预留寄存器8307E1H07E2H07E3H07E4H07E5H07E6H07E7H07E8H407E9H07EAH07EBH07ECH07EDH07EEH07EFH07F0H507F1H07F2H07F3H07F4H07F5H07F6H07F7H07F8H607F9H07FAH07FBH07FCH07FDH07FEH07FFH0800H70801H0802H0803H0804H0805H0806H0807H0808H80809H080AH080BH080CH080DH080EH080FH0810H 这些辅助寄存器提供了额外的灵活性,允许用户存储和操作更多的自定义数据。例如,渐变时间寄存器和亮度寄存器可以用来控制灯光的渐变效果和亮度级别,而预留的寄存器则为未来的功能扩展或特定应用提供了空间。 协议例程 文档中还提供了一些协议例程,这些例程展示了如何使用Modbus协议与调光模块进行通信。以下是一些示例: 写单路开关指令寄存器(05H 功能码) 指令:01 05 00 00 FF 00 8C 3A 反馈:01 05 00 00 FF 00 8C 3A 注释:回路1开启 写单路调光指令寄存器(06H 功能码) 指令:01 06 00 00 00 64 88 21 反馈:01 06 00 00 00 64 88 21 注释:回路1亮度调节至100% 写多路开关指令寄存器(0FH 功能码) 指令:01 0F 00 00 00 08 01 FF BE D5 反馈:01 0F 00 00 00 08 54 0D 注释:回路1-8开启 写多路调光指令寄存器(10H 功能码) 指令:01 10 00 00 08 10 64 00 64 00 64 00 64 00 64 00 64 00 64 97 0B 反馈:01 10 00 00 08 C1 CF 注释:回路1-8亮度调节至100% 继续提供文档中关于协议例程的详细信息: 读开关状态指令寄存器(01H 功能码) 指令:01 01 00 00 00 08 3D CC 反馈:01 01 01 FF 11 C8 注释:读1-8路,回路1-8开启 读调光状态指令寄存器(03H 功能码) 指令:01 03 00 00 00 01 84 0A 反馈:01 03 02 00 64 B9 AF 注释:读单路,回路1亮度100% 写单路调光渐变时间指令寄存器(06H 功能码) 指令:01 06 00 80 00 03 C8 23 反馈:01 06 00 80 00 03 C8 23 注释:回路1渐变时间3s 写多路路调光渐变时间指令寄存器(10H 功能码) 指令:01 10 00 80 08 10 03 03 03 03 03 03 03 03 03 03 03 9C 64 反馈:01 10 00 80 08 C0 27 注释:回路1-8渐变时间5s 调用场景指令寄存器(06H 功能码) 指令:01 06 00 BF 00 01 79 EE 反馈:01 06 00 BF 00 01 79 EE 注释:调用场景1 场景配置指令寄存器(10H 功能码) 指令:01 10 00 40 08 10 64 00 64 00 64 00 64 00 64 00 64 00 64 99 C4 反馈:01 10 00 40 08 C0 1B 注释:配置场景1状态,回路1-8开 上电状态指令寄存器(10H 功能码) 指令:01 10 00 88 08 10 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 11 6C 反馈:01 10 00 88 08 41 E5 注释:1-8回路上电状态为断电恢复 时间日期读写指令寄存器(03H/10H 功能码) 指令:01 10 00 B8 06 0C 00 19 00 06 00 03 00 D0 00 32 00 09 65 反馈:01 10 00 B8 06 C0 2E 注释:设置2025年6月3日13时45分 日出日落定时设置指令寄存器(10H 寄存器) 指令:01 10 14 A0 0A 14 00 01 00 7F 00 00 00 00 00 00 00 00 00 00 65 84 反馈:01 10 14 A0 0A 60 24 注释:开启日出定时,每天执行,回路1-8,亮度执行0% 星期定时设置指令寄存器(03/10H 功能码) 指令:01 10 00 D8 0C 18 00 01 00 08 00 00 1F 00 00 00 00 00 00 00 00 00 16 3C 反馈:01 10 00 D8 0C 40 37 注释:开启定时1,周一至周五早上8:00执行,回路1-8亮度执行0% 恢复出厂设置指令寄存器(06功能码) 指令:01 06 00 C2 00 01 E9 F6 反馈:01 06 00 C2 00 01 E9 F6 注释:设备所有参数恢复出厂状态 波特率设置指令寄存器(03H/06H 功能码) 指令:01 06 00 C0 00 03 C9 F7 反馈:01 06 00 C0 00 03 C9 F7 注释:左串口波特率设置为9600 设备版本读取指令寄存器(03功能码) 指令:01 03 00 C3 00 03 F5 F7 反馈:01 03 06 07 E9 02 07 06 4C C8 注释:当前版本是:20250519V1.0 好的,我将继续提供文档中剩余的协议例程信息: 协议例程(续) 调用场景指令寄存器(06H 功能码) 指令:01 06 00 BF 00 02 39 EF 反馈:0106 00BF 0002 39 EF 注释:调用场景2 调用场景指令寄存器(06H 功能码) 指令:01 06 00 BF 00 03 F8 2F 反馈:010600 BF00 03 F8 2F 注释:调用场景3 调用场景指令寄存器(06H 功能码) 指令:01 06 00 BF 00 04 B9 ED 反馈:01 06 00 BF 00 04 B9 ED 注释:调用场景4 调用场景指令寄存器(06H 功能码) 指令:01 06 00 BF 00 05 78 2D 反馈:0106 00 BF 00 05 78 2D 注释:调用场景5 调用场景指令寄存器(06H 功能码) 指令:010600BF0006382C 反馈:010600BF0006382C 注释:调用场景6 调用场景指令寄存器(06H 功能码) 指令:010600BF00 07F9 EC 反馈:010600 BF0007F9 EC 注释:调用场景7 调用场景指令寄存器(06H 功能码) 指令:010600BF0008B9E8 反馈:010600 BF0008 B9 E8 注释:调用场景8 场景配置指令寄存器(10H 功能码) 指令:0110004000.081000.6400.640064.00 6400 64 00 64 00 64 00 64 99 C4 反馈:011000400008C01B 注释:配置场景1状态,回路1-8开 场景配置指令寄存器(10H 功能码) 指令:0110004800081000000000000 000000000000000000F64B 反馈:01100048000841D9 注释:配置场景2状态,回路1-8关 上电状态指令寄存器(10H 功能码) 指令:011000 8800081000FF00 FF00 FF00 FF 00 FF 00 FF 00 FF 00 FF 11 6C 反馈:01100088000841 E5 注释:1-8回路上电状态为断电恢复 上电状态指令寄存器(10H 功能码) 指令:0110008800081000000000000 000000000000000000E75A 反馈:01100088000841E5 注释:1-8回路上电状态为关闭 上电状态指令寄存器(10H 功能码) 指令:0110008800081000640064006400 640064006400640064699C 反馈:01100088000841E5 注释:1-8回路上电状态为100% 时间日期读写指令寄存器(03H/10H 功能码) 指令:010300B80007842D 反馈:01030E001900060003000D 003800090002EAF2 注释:当前时间是:2025年6月3日13时26分9秒,星期二 这些协议例程涵盖了调光模块的多种操作,包括场景调用、场景配置、上电状态设置以及时间日期的读写。这些操作通过Modbus RTU协议实现,允许用户通过发送特定的指令来控制和监测调光模块的状态。 继续提供文档中剩余的协议例程信息: 日出日落定时设置指令寄存器(10H 功能码) 指令:01 10 01 4A 00 0A 14 00 01 00 7F 00 00 00 00 00 00 00 00 00 65 84 反馈:01 10 01 4A 00 0A 60 24 注释:开启日出定时,每天执行,回路1-8,亮度执行0% 日出日落定时设置指令寄存器(10H 功能码) 指令:01 10 01 54 00 0A 14 00 01 6400 64 00 64 00 64 00 64 00 64 00 64 82 反馈:01 10 01 54 00 0A 00 22 注释:开启日落定时,每天执行,回路1-8,亮度执行100% 读取日出状态指令寄存器(10H 功能码) 指令:01 03 01 4A 00 0A E5 E7 反馈:01 03 14 00 01 00 7F 00 00 00 00 00 00 00 00 00 00 00 8E B3 注释:读取日出状态,开启日出定时,每天执行,回路1-8,亮度执行0% 读取日落状态指令寄存器(10H 功能码) 指令:01 03 01 54 00 0A 85 E1 反馈:01 03 14 00 01 7F 00 64 00 64 00 64 00 64 00 64 00 64 75 注释:读取日落状态,开启日落定时,每天执行,回路1-8,亮度执行100% 星期定时设置指令寄存器(03/10H 功能码) 指令:01 10 00 D8 00 0C 18 00 01 00 08 00 00 1F 00 00 00 00 00 00 00 00 00 16 3C 反馈:01 10 00 D8 00 0C 40 37 注释:开启定时1,周一至周五早上8:00执行,回路1-8亮度执行0% 星期定时设置指令寄存器(03/10H 功能码) 指令:01 10 00 E4 00 0C 18 00 01 00 12 00 00 1F 6400 64 00 64 00 64 00 64 4C C1 反馈:01 10 00 E4 00 0C 80 3B 注释:开启定时2,周一至周五晚上18:00执行,回路1-8亮度执行100% 读取定时1的状态指令寄存器(03/10H 功能码) 指令:01 03 00 D8 00 0C C5 F4 反馈:01 03 18 00 01 00 08 00 00 1F 00 00 00 00 00 00 00 00 00 10 16 注释:读取定时1的状态,开启定时,周一至周五早上8:00执行,回路1-8亮度执行0% 读取定时2的状态指令寄存器(03/10H 功能码) 指令:01 03 00 E4 00 0C 05 F8 反馈:01 03 18 00 01 00 12 00 00 1F 00 64 00 64 00 64 00 64 00 64 26 EB 注释:读取定时2的状态,开启定时,周一至周五晚上18:00执行,回路1-8亮度执行100% 恢复出厂设置指令寄存器(06功能码) 指令:01 06 00 C2 00 01 E9 F6 反馈:01 06 00 C2 00 01 E9 F6 注释:设备所有参数恢复出厂状态 波特率设置指令寄存器(03H/06H 功能码) 指令:01 06 00 C0 00 03 C9 F7 反馈:01 06 00 C0 00 03 C9 F7 注释:左串口波特率设置为9600 波特率设置指令寄存器(03H/06H 功能码) 指令:01 06 00 C1 00 05 51 35 反馈:01 06 00 C1 00 05 51 35 注释:右串口波特率设置为38400 读取左串口当前波特率指令寄存器(03H 功能码) 指令:01 03 00 C0 00 01 84 36 反馈:01 03 02 00 03 F8 45 注释:左串口当前波特率为9600 读取右串口当前波特率指令寄存器(03H 功能码) 指令:01 03 00 C1 00 01 D5 F6 反馈:01 03 02 00 05 78 47 注释:右串口当前波特率为38400 设备版本读取指令寄存器(03功能码) 指令:01 03 00 C3 00 03 F5 F7 反馈:01 03 06 07 E9 02 07 06 4C C8 注释:当前版本是:20250519V1.0 这些协议例程提供了详细的指令和反馈信息,帮助用户理解和使用Modbus协议与调光模块进行通信。如果您有任何疑问或需要进一步的帮助,请随时告诉我。 32.波特率设置指令寄存器(06H 功能码) 指令:010600C10005 518357 反馈:010600C10005 518357 注释:右串口波特率设置为38400 33.设备版本读取指令寄存器(03功能码) 指令:010300C30003F5F7 反馈:0103060702E902070064CC87 以上是文档中提供的协议例程的完整列表。这些例程展示了如何通过Modbus RTU协议与8路0-10V调光模块进行通信,包括设置和读取各种参数,如场景配置、时间日期、日出日落定时、星期定时、波特率设置以及设备版本信息等。 我注意到您提供的截图中包含了场景设置寄存器地址的具体信息,这可能是您需要了解的内容。以下是根据截图内容整理的场景设置寄存器地址的详细信息: 场景设置寄存器地址 场景1 回路1寄存器:0040H 回路2寄存器:0041H 回路3寄存器:0042H 回路4寄存器:0043H 回路5寄存器:0044H 回路6寄存器:0045H 回路7寄存器:0046H 回路8寄存器:0047H 场景2 回路1寄存器:0048H 回路2寄存器:0049H 回路3寄存器:004AH 回路4寄存器:004BH 回路5寄存器:004CH 回路6寄存器:004DH 回路7寄存器:004EH 回路8寄存器:004FH 场景3 回路1寄存器:0050H 回路2寄存器:0051H 回路3寄存器:0052H 回路4寄存器:0053H 回路5寄存器:0054H 回路6寄存器:0055H 回路7寄存器:0056H 回路8寄存器:0057H 这些地址用于设置和调用不同的场景,每个场景可以配置8个回路(通道)的亮度值。通过向相应的寄存器写入数据,可以实现对灯光亮度的精确控制。 基于您提供的截图内容,我将继续补充和完善场景设置寄存器地址的详细信息: 场景设置寄存器地址(续) 场景4 回路1寄存器:0058H 回路2寄存器:0059H 回路3寄存器:005AH 回路4寄存器:005BH 回路5寄存器:005CH 回路6寄存器:005DH 回路7寄存器:005EH 回路8寄存器:005FH 场景5 回路1寄存器:0060H 回路2寄存器:0061H 回路3寄存器:0062H 回路4寄存器:0063H 回路5寄存器:0064H 回路6寄存器:0065H 回路7寄存器:0066H 回路8寄存器:0067H 场景6 回路1寄存器:0068H 回路2寄存器:0069H 回路3寄存器:006AH 回路4寄存器:006BH 回路5寄存器:006CH 回路6寄存器:006DH 回路7寄存器:006EH 回路8寄存器:006FH 场景7 回路1寄存器:0070H 回路2寄存器:0071H 回路3寄存器:0072H 回路4寄存器:0073H 回路5寄存器:0074H 回路6寄存器:0075H 回路7寄存器:0076H 回路8寄存器:0077H 场景8 回路1寄存器:0078H 回路2寄存器:0079H 回路3寄存器:007AH 回路4寄存器:007BH 回路5寄存器:007CH 回路6寄存器:007DH 回路7寄存器:007EH 回路8寄存器:007FH 这些寄存器地址允许用户为每个回路配置不同的亮度级别,从而创建多种照明场景。通过Modbus协议,用户可以向这些寄存器写入数据,以设置或更改场景配置。 使用场景配置指令寄存器(10H 功能码) 例如,要配置场景1的状态,使回路1-8全部开启,可以使用以下指令: 指令:01100040000810006400640064 006400640064 006400640064 006400640064 99C4 反馈:011000400008C01B 这个指令使用10H功能码,一次写入多个寄存器的值。在这个例子中,它设置了场景1的所有回路(1-8)的亮度值为100%(64H)。 基于您提供的截图内容,我将继续补充和完善场景设置寄存器地址的详细信息: 场景设置寄存器地址(续) 场景4 回路1寄存器:0058H 回路2寄存器:0059H 回路3寄存器:005AH 回路4寄存器:005BH 回路5寄存器:005CH 回路6寄存器:005DH 回路7寄存器:005EH 回路8寄存器:005FH 场景5 回路1寄存器:0060H 回路2寄存器:0061H 回路3寄存器:0062H 回路4寄存器:0063H 回路5寄存器:0064H 回路6寄存器:0065H 回路7寄存器:0066H 回路8寄存器:0067H 场景6 回路1寄存器:0068H 回路2寄存器:0069H 回路3寄存器:006AH 回路4寄存器:006BH 回路5寄存器:006CH 回路6寄存器:006DH 回路7寄存器:006EH 回路8寄存器:006FH 场景7 回路1寄存器:0070H 回路2寄存器:0071H 回路3寄存器:0072H 回路4寄存器:0073H 回路5寄存器:0074H 回路6寄存器:0075H 回路7寄存器:0076H 回路8寄存器:0077H 场景8 回路1寄存器:0078H 回路2寄存器:0079H 回路3寄存器:007AH 回路4寄存器:007BH 回路5寄存器:007CH 回路6寄存器:007DH 回路7寄存器:007EH 回路8寄存器:007FH 这些寄存器地址允许用户为每个回路配置不同的亮度级别,从而创建多种照明场景。通过Modbus协议,用户可以向这些寄存器写入数据,以设置或更改场景配置。 使用场景配置指令寄存器(10H 功能码) 例如,要配置场景1的状态,使回路1-8全部开启,可以使用以下指令: 指令:01100040000810006400640064 006400640064 006400640064 006400640064 99C4 反馈:011000400008C01B 这个指令使用10H功能码,一次写入多个寄存器的值。在这个例子中,它设置了场景1的所有回路(1-8)的亮度值为100%(64H)。 协议例程 恢复出厂设置指令寄存器(06功能码) 指令:010600C20001E9 F6 反馈:010600C20001E9F6 注释:设备所有参数恢复出厂状态 波特率设置指令寄存器(03H/06H 功能码) 指令:01 06 00 C0 00 03 C9 F7 反馈:010600C00003C9 F7 注释:左串口波特率设置为9600 指令:010600C1000518357 反馈:010600C1000518357 注释:右串口波特率设置为38400 指令:01 03 00 C0 00 01 84 36 反馈:0103020003F845 注释:左串口当前波特率为9600 指令:01 03 00 C1 00 01 D5 F6 反馈:01030200057847 注释:右串口当前波特率为38400 设备版本读取指令寄存器(03功能码) 指令:010300C30003F5F7 反馈:01030607E902070064CC87 注释:当前版本是:20250519V1.0 当然,以下是文档结尾部分的提取内容: 六、控制面板 1. 按键功能 图标含义备注左键右键上键下键返回ON/LEFT全开键/左移键OFF/RIGHT全关键/右移键OK确定键 2. 菜单定义 序号菜单功能数码管显示1数码管显示21P0开机页&待机页,显示当前时分13:5313:53 3. 功能设置 3.1. 地址设置 序号页面功能数码管显示数码管状态位1P1地址设置地址状态显示:ID01千位和百位显示固定ID字符,十位和个位显示从站地址01-63,出厂默认ID01 3.2. 日期设置 序号页面功能数码管显示数码管状态位1P2日期设置年份菜单:2025千位和百位固定20,十位和个位调节年份25-99 3.3. 波特率设置 序号页面功能数码管显示数码管状态位1P3波特率设置RS485 菜单:0101 0201千位显示串口号:01:R485(左) 02:R485(右) 十位个位显示波特率:00:(1200,N,8,1) 01:(2400,N,8,1) 02:(4800,N,8,1) 03:(9600,N,8,1,左右RS485默认) 04:(19200,N,8,1) 05: (38400,N,8,1) 六、消防接口 有源信号 有源信号DC12V 接入,1-8通道全开,解除消防模式时,亮度状态去到消防前状态 无源信号 无源常开接入,NO 和GND 短接,1-8通道全开,解除消防模式时,亮度状态去到消防前状态 注:在消防模式时,软件和手动按键无法对设备进行操作 --- ### 602. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 ​产品概述​​ HQ100系列智能照明时控模块是一款集智能化、自动化与安全性于一身的高性能照明控制系统核心设备。旨在为各类商业、工业及公共设施提供高效、节能、便捷的照明管理解决方案。该产品通过先进的控制算法和丰富的功能集成,实现对照明回路的精确自动化控制,从而达到节约能源、降低运维成本、提升管理效率及保障应急安全的目的。 ​​二、 功能亮点​​ 本产品具备以下九大核心功能,全面满足多样化照明控制需求: 手动控制​​:支持现场手动操作,方便调试与应急处理。 时间控制​​:可自由设置开关时间,每回路可设置多组定时,支持以“星期”为周期的自动循环。 场景控制​​:可预设多种照明场景(如白天、夜晚、深夜模式),一键切换。 消防反馈​​:接收消防系统反馈信号,实时监测消防状态。 消防联动​​:紧急情况下,接收消防系统24V信号,可强制点亮所有应急回路,保障生命通道畅通。 RS485通讯​​:支持标准RS485总线通讯,可轻松接入楼宇自控系统,实现集中管理。 经纬度控制​​:内置精准的经纬度算法,可根据所在地理位置自动计算日出日落时间,实现“日出而息,日落而作”的全自动控制,无需人工调整季节时间。 光感控制​​:外接光敏传感器,根据环境光照度自动控制。天黑(低于设定阈值)自动开灯,天亮(高于设定阈值)自动关灯。 50A大功率​​:单回路最大承载电流达50A,驱动能力强,能满足大功率照明负载需求。 ​​三、 详细技术参数​​ ​​产品型号​​HQ100-SK8/50, HQ100-SK16/50 等(支持4/6/8/10/12/16回路)​​工作电压​​AC220V ±10%​​工作电流​​50A​​功耗​​≤ 8W​​控制动作时间​​≤ 0.5s​​通讯方式​​RS485 总线​​外观尺寸​​8回路:137*116*91mm;16回路:256*116*91mm​​安装方式​​35mm 标准导轨安装​​环境温度​​-20℃ ~ +60℃​​显示类型​​数显款 / 液晶款(带背光液晶屏,显示时间、日期、日出日落信息) 四、 主要功能应用详解​​ 智能定时控制​​ •​​功能​​:用户可自由为每个照明回路设置多达多组的开/关时间点。 •​​应用案例​​:大型商场、办公大楼。可设定工作日、周末不同的开关灯策略,如晚上18:00开灯,午夜02:00关闭部分灯光,早上06:00全部关闭。 经纬度控制(天文时钟)​​ •​​功能​​:输入所在地的经纬度信息,设备即可自动根据天文数据调整每日的开关灯时间,实现与日出日落同步。 •​​优势​​:无需因季节变化而频繁修改时间表,实现真正意义上的“全年无人值守”。 •​​示例​​:夏季(如6月1日)19:56日落开灯,次日06:05日出关灯;冬季(如12月1日)17:06日落开灯,次日06:25日出关灯。 光感控制​​ •​​功能​​:通过外接的光控探头检测环境亮度,作为开关灯的触发条件。 •​​应用​​:在阴雨天气等光线昏暗的白天,能自动开启灯光,弥补纯时间控制或经纬度控制的不足,更加智能和人性化。 消防联动​​ •​​功能​​:当接收到消防中心发出的24V无源联动信号时,模块会强制点亮所有预设的应急照明回路,确保疏散通道照明充足。 •​​安全价值​​:此功能是消防安全的关键一环,符合安全规范,在紧急情况下为人员疏散提供照明保障。 ​​五、 广泛应用场景​​ 本系统适用于几乎所有需要智能化照明管理的场合,包括但不限于: •​​商业空间​​:大型购物中心、星级酒店 •​​公共建筑​​:学校、医院、办公楼 •​​文旅地产​​:主题公园、别墅区 •​​基础设施​​:地下停车场、城市道路照明、园区景观照明 ​​六、 产品外观与接口说明(基于液晶款)​​ •​​液晶显示屏​​:显示当前时间、日期、日出日落时间、运行状态等。 •​​控制按键(K1-K4)​​:用于参数设置、模式切换、数据移位、确认等操作。 •​​指示灯区​​:显示“运行”、“通讯”、“故障”等状态。 •​​接线端子​​:包括火线输入、负载输出、DC12V电源输入、RS485通讯接口、消防联动/反馈接口、光控探头接口等。 ​​七、 总结​​ HQ100系列智能照明时控模块以其强大的功能、稳定的性能和便捷的管理,成为现代智能照明系统的理想选择。它能显著提升照明管理的智能化水平,实现高效的节能效果,并确保紧急情况下的消防安全,是构建绿色、智能、安全建筑的优选控制组件。 接线示意图 通讯协议 1、ModBus 基本规则 所有 RS485 通信回路都应遵照主、从方式。依照这种方式,数据可以在一个主站(如: PC)和 128 个子站之间传递。 任何一次通信都不能从子站开始。 在 RS485 回路上的所有通信都以“信息帧”方式传递。 如果主站或子站接收到含有未知命令的信息帧,则不予响应。 2、数据帧格式 通信传输为异步方式,并以字节(数据帧)为单位。在主站和子站之间传递的每一个 数据帧都是以 11 位的串行数据流。 数据帧格式 起始位1位数据位8位奇偶校验位可选奇、偶或无效验停止位无效验2位,有效验1位波特率2400 、4800、9600bps 3、通信规约 当通信命令发送至模块时,符合相应的地址码的模块接收通信命令,并除去地址码, 读取信息,如果没有出错,则执行相应的任务,然后把执行结果返送给发送者。返送的信 息中包括地址码、执行动作的功能码、执行动作后的数据以及错误校验码(CRC )。如果出 错则返回错误信息。 信息帧格式 初始结构地址码功能码数据区错误校验结束结构延时(相当于3.5 个字节的时间)1字节 8位1字节 8位N字节 N*8 位2字节16位延时(相当于3.5个字节 的时间) 地址码(ADDRESS):单个模块的地址范围是1-247。 功能码(FUNCTION CODE):功能码是每次通信传送的第二个数据。如果子机返回的功能码   的最高位是1(功能码>127),则表明子机响应或数据出错。下表列出功能码具体的含义及操作。 功能码定义操作01H读取线圈读取单个或多个回路输出状态05H写单个线圈控制单个回路输出0FH写多个线圈控制多个回路输出03H读寄存器读单个或多个寄存器06H写单个寄存器写单个寄存器数据10H写多个寄存器写多个寄存器数据 4、CRC-16码的计算步骤 a)    置16位CRC寄存器为十六进制FFFF ; b)    把一个8位数据与CRC寄存器的低8位相异或,把结果放于CRC寄存器; c)    把CRC寄存器的内容右移一位,用0填补最高位,检查移出位; d)    如果最低位为0:重复第3步(再次移位) ; e)    如果最低位为1:CRC寄存器与十六进制数A001进行异或; f)     重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; g)    重复步骤2到5,进行下一个数据处理; h)    最后得到的CRC寄存器值即为CRC码,传送时将低8位先发送,高8位最后发送; 注:CRC码的计算从<子机地址>开始,除<CRC码>的所有字节。 5、信息帧格式举例 5.1 功能码01H 5.1 功能码01H:读线圈状态(读回路开关状态)​​ •​​主站请求报文格式:​​地址码功能码起始地址高起始地址低线圈数量高线圈数量低CRC低CRC高1字节01H1字节1字节1字节1字节1字节1字节 •​​从站应答报文格式:​​地址码功能码数据字节数数据1 (回路1-8状态)...数据nCRC低CRC高1字节01H1字节1字节...1字节1字节1字节注:MSB表示双字节数的高字节;LSB表示双字节数的低字节(下同)。 ​​5.2 功能码05H:写单个线圈(强制单回路开关)​​ •​​主站请求报文格式:​​地址码功能码输出地址高输出地址低输出值高输出值低CRC低CRC高1字节05H1字节1字节1字节1字节1字节1字节 •​​从站应答报文格式:​​地址码功能码输出地址高输出地址低输出值高输出值低CRC低CRC高1字节05H1字节1字节1字节1字节1字节1字节(从站将原请求报文回送作为应答) ​​5.3 功能码0FH:写多个线圈(强制多回路开关)​​ •​​主站请求报文格式:​​地址码功能码起始地址高起始地址低线圈数量高线圈数量低数据字节数数据1...数据nCRC低CRC高1字节0FH1字节1字节1字节1字节1字节1字节...1字节1字节1字节注:数据n不够8位时,字节高位填充0。 •​​从站应答报文格式:​​地址码功能码起始地址高起始地址低线圈数量高线圈数量低CRC低CRC高1字节0FH1字节1字节1字节1字节1字节1字节 ​​5.4 功能码03H:读保持寄存器​​ •​​主站请求报文格式:​​地址码功能码起始地址高起始地址低寄存器数量高寄存器数量低CRC低CRC高1字节03H1字节1字节1字节1字节1字节1字节 •​​从站应答报文格式:​​地址码功能码数据字节数数据1高数据1低...数据n高数据n低CRC低CRC高1字节03H1字节1字节1字节...1字节1字节1字节1字节 ​​5.5 功能码06H:写单个寄存器​​ •​​主站请求报文格式:​​地址码功能码寄存器地址高寄存器地址低数据高数据低CRC低CRC高1字节06H1字节1字节1字节1字节1字节1字节 •​​从站应答报文格式:​​地址码功能码寄存器地址高寄存器地址低数据高数据低CRC低CRC高1字节06H1字节1字节1字节1字节1字节1字节(从站将原请求报文回送作为应答) ​​5.6 功能码10H:写多个寄存器​​ •​​主站请求报文格式:​​地址码功能码起始地址高起始地址低寄存器数量高寄存器数量低数据字节数数据1高数据1低...数据n高数据n低CRC低CRC高1字节10H1字节1字节1字节1字节1字节1字节1字节...1字节1字节1字节1字节 •​​从站应答报文格式:​​地址码功能码起始地址高起始地址低寄存器数量高寄存器数量低CRC低CRC高1字节10H1字节1字节1字节1字节1字节1字节 ​​四、 错误代码处理​​ 如果主站发出的数据地址错误或数据值错误,则从站回送错误信息。​​返回的功能码最高位为1​​(即在原功能码上加128)。​​从机返回错误帧格式:​​ 地址码功能码 (原功能码+80H)错误码CRC低CRC高1字节1字节1字节1字节1字节 ​​错误码定义:​​ •​​01:​​ 非法的功能码。接收到的功能码非有效。 •​​02:​​ 非法的数据地址。接收到的数据地址超出允许的地址范围。 •​​03:​​ 非法数据值。接收到的数据值超出相应地址的数据范围。 ​​五、 寄存器地址及功能描述​​ ​​7.1 模块各回路输出状态​​ •​​说明:​​ 该组寄存器映射了物理回路的开关状态。 •​​操作:​​ 可使用01H指令读取,也可以使用05H(单路)或0FH(多路)指令写入。 •​​注意:​​ 可使用广播地址(0x00)加05H或0FH指令对所有模块批量写入。 ​​7.2 模块状态寄存器​​ •​​说明:​​ 用于读取模块的各种运行状态信息。 ​​7.3 模块实时时钟信息寄存器​​ •​​说明:​​ 用于读取或设置模块内部的实时时钟(年、月、日、时、分、秒、星期)。 ​​7.4 模块安装位置信息寄存器​​ •​​说明:​​ 可写入描述模块安装位置的文本信息,便于识别。 ​​7.5 定时控制寄存器​​ •​​说明:​​ 将一天分为96个时段(每15分钟一段)。每个时段控制数据占用4个寄存器共8个字节,定义该时段的控制动作。 •​​重要操作限制:​​ •对定时控制寄存器组读取或写入数量及地址必须为​​4或4的倍数​​(即一次操作至少一个完整时段)。 •一次读写操作最多只能读写​​30段​​数据(即120个寄存器)。操作全部96段数据需要分多次进行。 ​​7.6 时段对象假日控制寄存器​​ •​​说明:​​ 用于设置基于时段的假日特殊控制策略。 ​​7.7 回路对象假日控制寄存器​​ •​​说明:​​ 用于设置基于回路的假日特殊控制策略。 ​​7.8 远程控制寄存器​​ •​​地址:​​ 0x0E00 •​​操作:​​ 使用​​06H​​功能码向此寄存器写入特定参数,可立即控制回路开关。 •​​数据格式:​​ •​​高8位:​​ 0xFF表示“开”,0x00表示“关”。 •​​低8位:​​ 用0x01-0x10表示具体回路(1-16),用0xFF表示全部回路。 •​​控制举例:​​ •向0x0E00单元写入 0xFFFF为​​全开​​,写入 0x00FF为​​全关​​。 •向0x0E00单元写入 0xFF01为​​第1回路开​​,写入 0x0001为​​第1回路关​​。 •向0x0E00单元写入 0xFF10为​​第16回路开​​,写入 0x0010为​​第16回路关​​。 通讯协议示例 01功能码01 01 00 00 00 01 FD CA读01路状态01 01 00 01 00 01 AC 0A读02路状态01 01 00 02 00 01 5C 0A读03路状态01 01 00 03 00 01 0D CA读04路状态01 01 00 04 00 01 BC 0B读05路状态01 01 00 05 00 01 ED CB读06路状态01 01 00 06 00 01 1D CB读07路状态01 01 00 07 00 01 4C 0B读08路状态01 01 00 08 00 01 7C 08读09路状态01 01 00 09 00 01 2D C8读10路状态01 01 00 0A 00 01 DD C8读11路状态01 01 00 0B 00 01 8C 08读12路状态01 01 00 0C 00 01 3D C9读13路状态01 01 00 0D 00 01 6C 09读14路状态01 01 00 0E 00 01 9C 09读15路状态01 01 00 0F 00 01 CD C9读16路状态01 01 00 02 00 03 DD CB读02路开始3个回路状态01 01 00 00 00 08 3D CC读全部8个回路状态01 01 00 00 00 09 FC 0C读全部9个回路状态01 01 00 00 00 10 3D C6读全部16个回路状态 03功能码01 03 0A 00 00 01 87 D2读状态信息数据01 03 0A 01 00 01 D6 12读端口状态数据01 03 0A 00 00 0D 87 D7读状态、时钟以及位置信息数据01 03 0A 02 00 06 67 D0读实时时钟数据01 03 0A 07 00 01 36 13读秒01 03 0B 00 00 04 46 2D读时段1参数01 03 0B 04 00 04 07 EC读时段2参数01 03 0B 00 00 78 47 CC读时段1~30参数01 03 0F 00 00 04 47 1D读时段1参数01 03 0F 04 00 04 06 DC读时段2参数01 03 0F 00 00 78 46 FC读时段1~30参数01 03 0F 78 00 78 C6 E5读时段31~60参数01 03 0F F0 00 78 46 CF读时段61~90参数01 03 10 68 00 18 C0 DC读时段90~96参数 05功能码01 05 00 00 FF 00 8C 3A开01路01 05 00 00 00 00 CD CA关01路01 05 00 01 FF 00 DD FA开02路01 05 00 01 00 00 9C 0A关02路01 05 00 02 FF 00 2D FA开03路01 05 00 02 00 00 6C 0A关03路01 05 00 0B FF 00 FD F8开12路01 05 00 0B 00 00 BC 08关12路01 05 00 0F FF 00 BC 39开16路01 05 00 0F 00 00 FD C9关16路 06功能码01 06 0A 02 07 E9 E8 6C修改日期为2025年01 06 0A 03 00 0C 7A 17修改日期为12月01 06 0A 04 00 0C CB D6修改日期为12日01 06 0A 05 00 00 9A 13修改时间为0点01 06 0A 06 00 00 6A 13修改时间为0分01 06 0A 07 00 00 3B D3修改时间为0秒01 06 0A 08 00 01 CA 10修改时间为星期一01 06 0A 09 00 00 5A 10修改时间校准值为0S01 06 0A 0A 00 00 AA 10修改经度为001 06 0A 0B 00 00 FB D0修改纬度为001 06 0C 00 00 40 8B 6A修改1时段的星期日为假日01 06 0C 5F 00 40 BB 78修改96时段的星期日为假日01 06 0D 00 00 40 8A 96修改1回路的星期日为假日01 06 0E 00 FF FF 8A 92远程控制全开01 06 0E 00 00 FF CB 62远程控制全关01 06 0E 00 FF 01 0B 12远程控制开1路01 06 0E 00 00 01 4A E2远程控制关1路 0F功能码01 0F 00 00 00 10 02 FF FF E3 90全开16路01 0F 00 00 00 10 02 00 00 E2 20全关16路01 0F 00 00 00 08 01 FF BE D5全开1~8路01 0F 00 00 00 08 01 00 FE 95全关1~8路01 0F 00 04 00 08 01 FF 4F 15全开5~12路01 0F 00 04 00 08 01 00 0F 55全关5~12路01 0F 00 00 00 10 02 AA AA 1C FF奇数关偶数开16路01 0F 00 00 00 10 02 55 55 1D 4F偶数关奇数开16路 10功能码01 10 0A 02 00 07 0E 07 E6 00 08 00 17 00 0C 00 00 00 00 00 02 C2 3F修改时钟为2022年8月23日12点0分0秒星期二01 10 0A 02 00 0B 16 07 E6 00 08 00 17 00 0C 00 00 00 00 00 02 00 03 2F 3F 0A FD 03 20 CE 85修改时钟为2022年8月23日12点0分0秒星期2 校准值+3 经度120.95 纬度28.13 时区8.0001 10 0B 00 00 04 08 FF 00 0C 01 0C 02 01 04 7C 3A修改时段01为 12:01开 12:02关  对象01-0401 10 0B 74 00 04 08 FF 00 0C 03 0C 04 03 00 55 E8修改时段30为 12:03开 12:04关  对象0301 10 0D 00 00 04 08 00 40 00 40 00 40 00 40 E5 18修改回路01-04的星期日为假日01 10 0C 00 00 1E 3C 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 78 A9修改时段01-30的星期日为假日 常用开/关控制协议地址1-9举例 模块地址:001全开01 06 0E 00 FF FF 8A 92全关01 06 0E 00 00 FF CB 62开01路01 06 0E 00 FF 01 0B 12关01路01 06 0E 00 00 01 4A E2开02路01 06 0E 00 FF 02 4B 13关02路01 06 0E 00 00 02 0A E3开03路01 06 0E 00 FF 03 8A D3关03路01 06 0E 00 00 03 CB 23开04路01 06 0E 00 FF 04 CB 11关04路01 06 0E 00 00 04 8A E1开05路01 06 0E 00 FF 05 0A D1关05路01 06 0E 00 00 05 4B 21开06路01 06 0E 00 FF 06 4A D0关06路01 06 0E 00 00 06 0B 20开07路01 06 0E 00 FF 07 8B 10关07路01 06 0E 00 00 07 CA E0开08路01 06 0E 00 FF 08 CB 14关08路01 06 0E 00 00 08 8A E4开09路01 06 0E 00 FF 09 0A D4关09路01 06 0E 00 00 09 4B 24开10路01 06 0E 00 FF 0A 4A D5关10路01 06 0E 00 00 0A 0B 25开11路01 06 0E 00 FF 0B 8B 15关11路01 06 0E 00 00 0B CA E5开12路01 06 0E 00 FF 0C CA D7关12路01 06 0E 00 00 0C 8B 27开13路01 06 0E 00 FF 0D 0B 17关13路01 06 0E 00 00 0D 4A E7开14路01 06 0E 00 FF 0E 4B 16关14路01 06 0E 00 00 0E 0A E6开15路01 06 0E 00 FF 0F 8A D6关15路01 06 0E 00 00 0F CB 26开16路01 06 0E 00 FF 10 CB 1E关16路01 06 0E 00 00 10 8A EE 模块地址:002全开02 06 0E 00 FF FF 8A A1全关02 06 0E 00 00 FF CB 51开01路02 06 0E 00 FF 01 0B 21关01路02 06 0E 00 00 01 4A D1开02路02 06 0E 00 FF 02 4B 20关02路02 06 0E 00 00 02 0A D0开03路02 06 0E 00 FF 03 8A E0关03路02 06 0E 00 00 03 CB 10开04路02 06 0E 00 FF 04 CB 22关04路02 06 0E 00 00 04 8A D2开05路02 06 0E 00 FF 05 0A E2关05路02 06 0E 00 00 05 4B 12开06路02 06 0E 00 FF 06 4A E3关06路02 06 0E 00 00 06 0B 13开07路02 06 0E 00 FF 07 8B 23关07路02 06 0E 00 00 07 CA D3开08路02 06 0E 00 FF 08 CB 27关08路02 06 0E 00 00 08 8A D7开09路02 06 0E 00 FF 09 0A E7关09路02 06 0E 00 00 09 4B 17开10路02 06 0E 00 FF 0A 4A E6关10路02 06 0E 00 00 0A 0B 16开11路02 06 0E 00 FF 0B 8B 26关11路02 06 0E 00 00 0B CA D6开12路02 06 0E 00 FF 0C CA E4关12路02 06 0E 00 00 0C 8B 14开13路02 06 0E 00 FF 0D 0B 24关13路02 06 0E 00 00 0D 4A D4开14路02 06 0E 00 FF 0E 4B 25关14路02 06 0E 00 00 0E 0A D5开15路02 06 0E 00 FF 0F 8A E5关15路02 06 0E 00 00 0F CB 15开16路02 06 0E 00 FF 10 CB 2D关16路02 06 0E 00 00 10 8A DD 模块地址:003全开03 06 0E 00 FF FF 8B 70全关03 06 0E 00 00 FF CA 80开01路03 06 0E 00 FF 01 0A F0关01路03 06 0E 00 00 01 4B 00开02路03 06 0E 00 FF 02 4A F1关02路03 06 0E 00 00 02 0B 01开03路03 06 0E 00 FF 03 8B 31关03路03 06 0E 00 00 03 CA C1开04路03 06 0E 00 FF 04 CA F3关04路03 06 0E 00 00 04 8B 03开05路03 06 0E 00 FF 05 0B 33关05路03 06 0E 00 00 05 4A C3开06路03 06 0E 00 FF 06 4B 32关06路03 06 0E 00 00 06 0A C2开07路03 06 0E 00 FF 07 8A F2关07路03 06 0E 00 00 07 CB 02开08路03 06 0E 00 FF 08 CA F6关08路03 06 0E 00 00 08 8B 06开09路03 06 0E 00 FF 09 0B 36关09路03 06 0E 00 00 09 4A C6开10路03 06 0E 00 FF 0A 4B 37关10路03 06 0E 00 00 0A 0A C7开11路03 06 0E 00 FF 0B 8A F7关11路03 06 0E 00 00 0B CB 07开12路03 06 0E 00 FF 0C CB 35关12路03 06 0E 00 00 0C 8A C5开13路03 06 0E 00 FF 0D 0A F5关13路03 06 0E 00 00 0D 4B 05开14路03 06 0E 00 FF 0E 4A F4关14路03 06 0E 00 00 0E 0B 04开15路03 06 0E 00 FF 0F 8B 34关15路03 06 0E 00 00 0F CA C4开16路03 06 0E 00 FF 10 CA FC关16路03 06 0E 00 00 10 8B 0C 模块地址:004全开04 06 0E 00 FF FF 8A C7全关04 06 0E 00 00 FF CB 37开01路04 06 0E 00 FF 01 0B 47关01路04 06 0E 00 00 01 4A B7开02路04 06 0E 00 FF 02 4B 46关02路04 06 0E 00 00 02 0A B6开03路04 06 0E 00 FF 03 8A 86关03路04 06 0E 00 00 03 CB 76开04路04 06 0E 00 FF 04 CB 44关04路04 06 0E 00 00 04 8A B4开05路04 06 0E 00 FF 05 0A 84关05路04 06 0E 00 00 05 4B 74开06路04 06 0E 00 FF 06 4A 85关06路04 06 0E 00 00 06 0B 75开07路04 06 0E 00 FF 07 8B 45关07路04 06 0E 00 00 07 CA B5开08路04 06 0E 00 FF 08 CB 41关08路04 06 0E 00 00 08 8A B1开09路04 06 0E 00 FF 09 0A 81关09路04 06 0E 00 00 09 4B 71开10路04 06 0E 00 FF 0A 4A 80关10路04 06 0E 00 00 0A 0B 70开11路04 06 0E 00 FF 0B 8B 40关11路04 06 0E 00 00 0B CA B0开12路04 06 0E 00 FF 0C CA 82关12路04 06 0E 00 00 0C 8B 72开13路04 06 0E 00 FF 0D 0B 42关13路04 06 0E 00 00 0D 4A B2开14路04 06 0E 00 FF 0E 4B 43关14路04 06 0E 00 00 0E 0A B3开15路04 06 0E 00 FF 0F 8A 83关15路04 06 0E 00 00 0F CB 73开16路04 06 0E 00 FF 10 CB 4B关16路04 06 0E 00 00 10 8A BB 模块地址:005全开05 06 0E 00 FF FF 8B 16全关05 06 0E 00 00 FF CA E6开01路05 06 0E 00 FF 01 0A 96关01路05 06 0E 00 00 01 4B 66开02路05 06 0E 00 FF 02 4A 97关02路05 06 0E 00 00 02 0B 67开03路05 06 0E 00 FF 03 8B 57关03路05 06 0E 00 00 03 CA A7开04路05 06 0E 00 FF 04 CA 95关04路05 06 0E 00 00 04 8B 65开05路05 06 0E 00 FF 05 0B 55关05路05 06 0E 00 00 05 4A A5开06路05 06 0E 00 FF 06 4B 54关06路05 06 0E 00 00 06 0A A4开07路05 06 0E 00 FF 07 8A 94关07路05 06 0E 00 00 07 CB 64开08路05 06 0E 00 FF 08 CA 90关08路05 06 0E 00 00 08 8B 60开09路05 06 0E 00 FF 09 0B 50关09路05 06 0E 00 00 09 4A A0开10路05 06 0E 00 FF 0A 4B 51关10路05 06 0E 00 00 0A 0A A1开11路05 06 0E 00 FF 0B 8A 91关11路05 06 0E 00 00 0B CB 61开12路05 06 0E 00 FF 0C CB 53关12路05 06 0E 00 00 0C 8A A3开13路05 06 0E 00 FF 0D 0A 93关13路05 06 0E 00 00 0D 4B 63开14路05 06 0E 00 FF 0E 4A 92关14路05 06 0E 00 00 0E 0B 62开15路05 06 0E 00 FF 0F 8B 52关15路05 06 0E 00 00 0F CA A2开16路05 06 0E 00 FF 10 CA 9A关16路05 06 0E 00 00 10 8B 6A 模块地址:006全开06 06 0E 00 FF FF 8B 25全关06 06 0E 00 00 FF CA D5开01路06 06 0E 00 FF 01 0A A5关01路06 06 0E 00 00 01 4B 55开02路06 06 0E 00 FF 02 4A A4关02路06 06 0E 00 00 02 0B 54开03路06 06 0E 00 FF 03 8B 64关03路06 06 0E 00 00 03 CA 94开04路06 06 0E 00 FF 04 CA A6关04路06 06 0E 00 00 04 8B 56开05路06 06 0E 00 FF 05 0B 66关05路06 06 0E 00 00 05 4A 96开06路06 06 0E 00 FF 06 4B 67关06路06 06 0E 00 00 06 0A 97开07路06 06 0E 00 FF 07 8A A7关07路06 06 0E 00 00 07 CB 57开08路06 06 0E 00 FF 08 CA A3关08路06 06 0E 00 00 08 8B 53开09路06 06 0E 00 FF 09 0B 63关09路06 06 0E 00 00 09 4A 93开10路06 06 0E 00 FF 0A 4B 62关10路06 06 0E 00 00 0A 0A 92开11路06 06 0E 00 FF 0B 8A A2关11路06 06 0E 00 00 0B CB 52开12路06 06 0E 00 FF 0C CB 60关12路06 06 0E 00 00 0C 8A 90开13路06 06 0E 00 FF 0D 0A A0关13路06 06 0E 00 00 0D 4B 50开14路06 06 0E 00 FF 0E 4A A1关14路06 06 0E 00 00 0E 0B 51开15路06 06 0E 00 FF 0F 8B 61关15路06 06 0E 00 00 0F CA 91开16路06 06 0E 00 FF 10 CA A9关16路06 06 0E 00 00 10 8B 59 模块地址:007全开07 06 0E 00 FF FF 8A F4全关07 06 0E 00 00 FF CB 04开01路07 06 0E 00 FF 01 0B 74关01路07 06 0E 00 00 01 4A 84开02路07 06 0E 00 FF 02 4B 75关02路07 06 0E 00 00 02 0A 85开03路07 06 0E 00 FF 03 8A B5关03路07 06 0E 00 00 03 CB 45开04路07 06 0E 00 FF 04 CB 77关04路07 06 0E 00 00 04 8A 87开05路07 06 0E 00 FF 05 0A B7关05路07 06 0E 00 00 05 4B 47开06路07 06 0E 00 FF 06 4A B6关06路07 06 0E 00 00 06 0B 46开07路07 06 0E 00 FF 07 8B 76关07路07 06 0E 00 00 07 CA 86开08路07 06 0E 00 FF 08 CB 72关08路07 06 0E 00 00 08 8A 82开09路07 06 0E 00 FF 09 0A B2关09路07 06 0E 00 00 09 4B 42开10路07 06 0E 00 FF 0A 4A B3关10路07 06 0E 00 00 0A 0B 43开11路07 06 0E 00 FF 0B 8B 73关11路07 06 0E 00 00 0B CA 83开12路07 06 0E 00 FF 0C CA B1关12路07 06 0E 00 00 0C 8B 41开13路07 06 0E 00 FF 0D 0B 71关13路07 06 0E 00 00 0D 4A 81开14路07 06 0E 00 FF 0E 4B 70关14路07 06 0E 00 00 0E 0A 80开15路07 06 0E 00 FF 0F 8A B0关15路07 06 0E 00 00 0F CB 40开16路07 06 0E 00 FF 10 CB 78关16路07 06 0E 00 00 10 8A 88 模块地址:008全开08 06 0E 00 FF FF 8A 0B全关08 06 0E 00 00 FF CB FB开01路08 06 0E 00 FF 01 0B 8B关01路08 06 0E 00 00 01 4A 7B开02路08 06 0E 00 FF 02 4B 8A关02路08 06 0E 00 00 02 0A 7A开03路08 06 0E 00 FF 03 8A 4A关03路08 06 0E 00 00 03 CB BA开04路08 06 0E 00 FF 04 CB 88关04路08 06 0E 00 00 04 8A 78开05路08 06 0E 00 FF 05 0A 48关05路08 06 0E 00 00 05 4B B8开06路08 06 0E 00 FF 06 4A 49关06路08 06 0E 00 00 06 0B B9开07路08 06 0E 00 FF 07 8B 89关07路08 06 0E 00 00 07 CA 79开08路08 06 0E 00 FF 08 CB 8D关08路08 06 0E 00 00 08 8A 7D开09路08 06 0E 00 FF 09 0A 4D关09路08 06 0E 00 00 09 4B BD开10路08 06 0E 00 FF 0A 4A 4C关10路08 06 0E 00 00 0A 0B BC开11路08 06 0E 00 FF 0B 8B 8C关11路08 06 0E 00 00 0B CA 7C开12路08 06 0E 00 FF 0C CA 4E关12路08 06 0E 00 00 0C 8B BE开13路08 06 0E 00 FF 0D 0B 8E关13路08 06 0E 00 00 0D 4A 7E开14路08 06 0E 00 FF 0E 4B 8F关14路08 06 0E 00 00 0E 0A 7F开15路08 06 0E 00 FF 0F 8A 4F关15路08 06 0E 00 00 0F CB BF开16路08 06 0E 00 FF 10 CB 87关16路08 06 0E 00 00 10 8A 77 模块地址:009全开09 06 0E 00 FF FF 8B DA全关09 06 0E 00 00 FF CA 2A开01路09 06 0E 00 FF 01 0A 5A关01路09 06 0E 00 00 01 4B AA开02路09 06 0E 00 FF 02 4A 5B关02路09 06 0E 00 00 02 0B AB开03路09 06 0E 00 FF 03 8B 9B关03路09 06 0E 00 00 03 CA 6B开04路09 06 0E 00 FF 04 CA 59关04路09 06 0E 00 00 04 8B A9开05路09 06 0E 00 FF 05 0B 99关05路09 06 0E 00 00 05 4A 69开06路09 06 0E 00 FF 06 4B 98关06路09 06 0E 00 00 06 0A 68开07路09 06 0E 00 FF 07 8A 58关07路09 06 0E 00 00 07 CB A8开08路09 06 0E 00 FF 08 CA 5C关08路09 06 0E 00 00 08 8B AC开09路09 06 0E 00 FF 09 0B 9C关09路09 06 0E 00 00 09 4A 6C开10路09 06 0E 00 FF 0A 4B 9D关10路09 06 0E 00 00 0A 0A 6D开11路09 06 0E 00 FF 0B 8A 5D关11路09 06 0E 00 00 0B CB AD开12路09 06 0E 00 FF 0C CB 9F关12路09 06 0E 00 00 0C 8A 6F开13路09 06 0E 00 FF 0D 0A 5F关13路09 06 0E 00 00 0D 4B AF开14路09 06 0E 00 FF 0E 4A 5E关14路09 06 0E 00 00 0E 0B AE开15路09 06 0E 00 FF 0F 8B 9E关15路09 06 0E 00 00 0F CA 6E开16路09 06 0E 00 FF 10 CA 56关16路09 06 0E 00 00 10 8B A6 --- ### 603. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简述 一款基于Modbus协议可以探测影响空气质量气体浓度的传感器。传感器采用多层厚膜制造工艺,在微型 Al203陶瓷基片的两面分别制作加热器和金属氧化物半导体气敏层,封装在金属壳体内。当环境空气中有被检测气体存在时传感器电导率发生变化,该气体的浓度越高,传感器的电导率就越高。再通过转换电路将其转换为Modbus协议可以采集的数字量。 选型建议 广泛适用于家庭,办公楼,酒店,银行,医院,学校,机场,博物馆,实验室工厂等需要检测影响空气质量气体的场景,也适用于弱电集成商,智能家居方案工程师等专业人士使用。 参数 功能 1、在较宽的浓度范围内对异丁烷、影响空气质量气体等有良好的灵敏度。 2、直接输出PPM浓度数值,能直观的感知空气质量好坏。3、DC12-24V宽电压供电。4、支持Modbus协议,快速接入各种工控系统5、吸顶安装,尺寸小巧。 Modbus通讯协议 地址修改 --- ### 604. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 该产品是一款采用MEMS工艺的微型气体传感器;可以精准检测出当前环境下的空气质量情况,可以检测TVOC/烟雾/CO2/温湿度五个环境要素,可以用来作为净化器的联动驱动检测。 功能简述 该产品是一款采用MEMS工艺的微型气体传感器;可以精准检测出当前环境下的空气质量情况,可以检测TVOC/烟雾/C02/温湿度五个环境要素,可以用来作为净化器的联动驱动检测。 选型建议 广泛适用于家庭,办公楼,酒店,银行,医院,学校,机场,博物馆,实验室工厂等需要环境探测的场景,也适用于弱电集成商,智能家居方案工程师等专业人士使用。 参数 功能 1、五合一测量,同步检测TVOC、烟雾、CO2、湿度、温度、集成度高。2、精度高、寿命长、耐低温,响应速度快,开机立即响应,回零快。3、抗中毒性良好,优良的精度、可重复性、线性、一致性。4、抗电磁干扰能力强。5、支持标准Modbus Rtu协议,快速接入各种工控系统。6、DC12-24V宽电压供电。7、吸顶安装,尺寸小巧。 Modbus协议 --- ### 605. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 JF04迷你存在传感器采用 24GHz 毫米波雷达和FMCW雷达检测和算法通过测量发射信号与反射信号之间的频率差来检测动态情况。能够识别和确定人在呼吸时胸部和腹部的动态变化,从而实现精准的人体存在检测。JF05迷你高空微动传感器利用高顶雷达芯片发射和接收高频雷达信号通过算法处理,即使在2到12米的高度,也能灵敏地检测到人体小幅度动作和运动状态。这包括但不限于点头、摇头、挥手、举手、小幅度身体动作、使用智能手机、翻书等小动作,以及行走、快走、跳跃、旋转和奔跑等运动状态。 功能简述 采用 24GHz 毫米波雷达和FMCW雷达检测和算法,通过测量发射信号与反射信号之间的频率差来检测动态情况。 选型建议 广泛适用于家庭,办公楼,酒店,银行,医院,学校,机场,博物馆,实验室工厂等需要人体探测的场景,也适用于弱电集成商,智能家居方案工程师等专业人士使用。 JF04参数 JF05参数 功能 1、传感器为当前最小的嵌入式传感器,2、做工细节不错磨砂面,默认嵌入吊顶安装。3、12-30V宽电压供电。4、可以通过Modbus协议或者主动发送协议接入主机5、有壁装和吊顶隐藏安装配件,满足多种安装需求6、自带小夜灯模式。7、高空版本适合8米挑高的安装场合8、自带光照传感器可以输出光照值。 Modbus通讯协议 产品图片 --- ### 606. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简述 智能防爆传感器EXAIR5S是一款具备三防特性的工业级设备,支持探测C0、02和 CH4气体,同时监测环境温度与湿度。它具备现场声光报警、彩色液晶显示触摸屏配置以及本地数据记录功能。通过SD卡存储,确保数据安全。Modbus协议支持,便于集成与远程监控。 选型建议 EXAIR5S适用于需要防爆和环境监测的工业场景,如石油化工、煤矿、天然气处理等。其本地联动和智能处理能力使其在紧急情况下能独立操作,保障安全同时,支持无线通讯选配,使其能够与现场大型显示器无缝对接,适用于需要远程监控和数据展示的应用。 产品功能 1、防爆壳体,传感器均三防处理,2、现场声光报警提醒。3、彩色液晶显示实时显示传感器数值。4、可以开盖后通过触摸屏现场调节报警阀值和联动参数,5、传感器数值本地记录,数据曲线展示,SD卡存储,避免数据丢失,6、标准Modbus对接协议,支持波特率和地址修改。 独有特点 1、探测气体元素支持任意选配2、本地智能处理,平台掉线也可以本地联动应急设备3、内嵌DDC处理器,2DI,1DO。4、支持触摸屏配置本地联动逻辑。5、传感器数值本地记录,数据曲线展示,SD卡存储,避免数据丢失, 6、支持选配Loramesh无线通讯版本,和485接口独立互不影响。7、可以通过Loarmesh无线的方式本地外接现场大型显示器展示传感器数值。 界面展示 通讯协议 --- ### 607. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简介 一款集中控制模组,支持总线无线有线干接点控制,与继电器分离式设计,显著降低维护成本。组地址功能,一条指令批量执行多场景控制,轻松实现单点、多点、区域、群组控制等预设场景。 建议使用 广泛适用于家庭,办公楼,酒店,医院,学校,车站,体育馆,博物馆,会展中心工厂,农业,商场等有集中控制需求的用户。 产品特点 支持RS485,无线,有线,干接点多种控制方式出众的反应速度,抗干扰能力和稳定性。可快速对接带主动发送功能,波特率为9600的总线面板。支持反馈,接收自定义控制指令的同时还可反馈标准状态协议,既兼容第三方面板也兼容第三方总线控制系统。集中控制主控板和继电器分离式设计,最大限度保障设备可靠运行,显著降低后期维护成本。(需搭配继电器模组使用)组地址功能,一条指令批量执行场景控制,轻松实现单点、多点、区域、群组控制等场景预设,降低总线占用。例如1条指令可以让一栋楼上百回路灯光处于不同场景状态。搭配多款智能配件,实现场景个性化控制。远程控制,随时控制(需搭配智能控制系统使用)。无惧断网,无网络状态下也能控制。支持脱离主机运行,发送自定义场景指令。支持接入三方总线控制系统,并实现双向通讯。支持输入控制协议和输出控制协议全自定义。支持1-255s之间延时关闭,延时打开。支持按键锁定,防止误触。支持定时开关机(需搭配智能控制系统使用)。支持语音控制(需搭配智能控制系统,或者离线语音控制模块使用)。上电状态配置协议,可以自定义任意输出路数的上电开启还是关闭状态。自定义楼梯协议,可以自定义继电器之间的延时和开启关闭顺序。 接口示意图 RS485协议使用方法 ​​1、地址修改方法​​ 设备上电后会自动反馈5字节地址(例如地址为1A 13 24 56 91后文用XX XX XX XX XX替代)​​ 发送 XX XX XX XX XX(旧地址)F8 E7 D6(固定)XX XX XX XX XX(新地址)​​​​ 示例​​: 1A 13 24 56 91 F8 E7 D6 2A 33 57 26 81将旧地址1A 13 24 56 91改为新地址2A 33 57 26 81 ​​2、分组群控地址​​ ​​地址通配符:FF ​​​​广播地址:FF FF FF FF FF ​​FF可以在XX XX XX XX XX五字节地址的任意位置。 修改地址分路,通过地址与通配符的配置,达到群控效果和情景控制。​​ 示例​​: •发送XX XX XX XX FF:可以控制XX XX XX XX 00-XX XX XX XX FE共254个地址的模块 •发送XX FF FF XX XX:可以控制XX 00 00 XX XX-XX FE FE XX XX共254 * 254个地址的模块 •发送FF FF XX FF XX:可以控制00 00 XX 00 XX-FE FE XX FE XX共254 * 254 * 254个地址的模块 •发送FF FF FF FF XX:可以控制00 00 00 00 XX-FE FE FE FE XX共254 * 254 * 254 * 254个地址的模块 •发送FF FF FF FF FF:可以控制所有模块 ​​3、单路控制指令​​ ​​XX XX XX XX XX (地址) 00 (固定) 00 (路数) 02 (功能) 0F​​​​ 路数​​:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 分别对应第1-16路​​ 功能​​:02开/关,01开,00关,03点动​​ 示例​​:XX XX XX XX XX 00 00 02 0F 第1路开关翻转 ​​4、多路整体操作指令​​ •01-08路全开/全关:​​XX XX XX XX XX (地址) 01 (01全开/02全关) 77 88 0F​​ •09-16路全开/全关:​​XX XX XX XX XX (地址) 10 (10全开/20全关) 77 88 0F​​ •01-16路全开/全关:​​XX XX XX XX XX (地址) 30 (30全开/40全关) 77 88 0F​​ ​​示例​​:XX XX XX XX XX 10 77 88 0F路数9-16开关全开 ​​5、复合操作指令(1条指令控制16路继电器)​​ ​​XX XX XX XX XX (地址) CA (固定) 00 (路数) 02 (功能) 01 (路数) 02 (功能) ......0F (路数) 02 (功能) OF​​​​路数​​:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 分别对应第1-16路 ​​功能​​:02开/关,01开,00关,03点动,04保持原状态 ​​示例​​:XX XX XX XX XX CA 00 01 01 01 02 01 03 00 04 00 05 00 06 02 07 02 08 02 09 03 0A 03 03 0C 04 0D 04 0E 04 0F 04 0F 第1路开,第2路开,第3路开,第4路关,第5路关,第6路关,第7路翻转,第8路翻转,第9路翻转,第10路点动,第11路点动,第12路点动,第13路保持原状态,第14路保持原状态,第15路保持原状态,第16路保持原状态。 ​​6、状态查询指令​​ 发送​​XX XX XX XX XX (地址) 86 86 86 0F ​​反馈​​XX XX XX XX XX (地址) 00 00 00 01 00 01 00 01 01 01 01 01 00 01 00 01 0F (00关01开)​​​​ 示例​​:发送XX XX XX XX XX 86 86 86 0F 反馈XX XX XX XX XX 00 00 00 01 01 01 00 00 01 01 00 01 00 01 0F表示路数1-16状态为关关关开开开关关开开关开关关开 ​​7、楼梯协议指令​​ ​​XX XX XX XX XX(地址) CB(功能) 00 03(依次打开的时间间隔) 00 04(保持全部打开状态的时间) 00 05(依次关闭的时间间隔) 0F​​ •依次打开的时间间隔,范围00 00-FF FF,时间单位为0.1秒 •保持全部打开状态的时间,范围00 00-FF FF,时间单位为0.1秒 •依次关闭的时间间隔,范围00 00-FF FF,时间单位为0.1秒 ​​功能​​: CB 1-16路正向开启; CC 1-16路依次反向开启; CD 1-8路依次正向开启; CE 1-8路开关依次反向开启; CF 9-16路依次正向开启; CO 9-16路依次反向开启;​​ 示例​​: XX XX XX XX XX CB 00 03 00 04 00 05 0F开关和背光灯依次正向开启,依次打开时间间隔为0.3秒;保持全部打开状态的时间为0.4秒;依次关闭的时间间隔为0.5秒 ​​8、自定义楼梯指令​​ ​​XX XX XX XX XX(地址) D3(固定) 00 01(延时时间间隔) 01(01开/00关/02翻转) 01(01正向/11反向) 01(01前8路/11后8路/02整体) 0F​​ •延时时间间隔,范围00 00-FF FF,时间单位为0.1秒 ​​示例​​: XX XX XX XX XX D3 00 05 01 01 11 0F背光灯正向依次打开,打开延时时间间隔0.5秒 ​​9、配置按键与输出的对应关系(输入控制输出)​​ •单开关单输出: ​​XX XX XX XX XX(地址) BB 00(固定) 00(路数) F1 (F1长按/F2单击/F3双击) CA(固定) 02(输出路数) 02(输出状态00关/01开/02开关/03点动) 0F​​​​示例​​: XX XX XX XX XX BB 00 03 F1 CA 04 02 0F (按键4长按对输出开关5进行开关操作) •单开关多输出: ​​XX XX XX XX XX(地址) BB 00(固定) 00(路数) F1 (F1长按/F2单击/F3双击) CA(固定) 00(输出路数1) 02(开关) 01(输出路数2) 01(只开) 02(输出路数3) 03(点动) 0F​​​​示例​​: XX XX XX XX XX BB 00 00 F1 CA 00 02 01 02 02 02 0F (按键1与输出开关1,2,3进行开关操作) •删除配置: ​​XX XX XX XX XX(地址) BB 00(固定) 00(路数) F1/F2/F3 EE 0F​​​​示例​​: XX XX XX XX XX BB 00 02 F1 EE 0F (删除按键3 F1的配置) ​​路数​​: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F对应按键1-16​​ 输出​​: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F对应输出1-16 ​​10、按键发送自定义总线数据指令​​ •配置:​​XX XX XX XX XX(地址) BB 00(固定) 00(路数) E1(E1继电器接通/E2继电器断开/E3单击/E4双击/E5长按) 01(存储) YY YY YY YY YY YY YY YY YY YY YY YY YY YY YY(自定义总线数据hex) 0F​​该自定义协议可以用于控制总线被控设备,当按键输入状态为接通/断开的时候,发送自定义总线数据YY YY YY YY YY YY YY YY YY YY YY YY YY YY YY​​ 路数​​:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F对应按键1-16​​ 存储​​:01-06代表第1-6条存储,共支持储存6条指令​​ 示例1​​:XX XX XX XX XX BB 00 02 E3 01 55 12 35 03 01 FC 4A 0F 存储1:按键3单击时,发送窗帘总线数据12 35 03 01 FC 4A 0F,打开窗帘​​ 示例2​​:XX XX XX XX XX BB 00 02 E4 02 55 12 35 03 01 FC 4A 0F 存储2:按键3双击时,发送窗帘总线数据12 35 03 01 FC 4A 0F,打开窗帘 •配置总线数据发送间隔时间:​​XX XX XX XX XX(地址) BB D1(固定) 00 08(间隔时间) 0F​​根据被控产品性能设置总线数据发送间隔时间,范围00 00-FF FF,单位:50毫秒,间隔时间为8 * 50=400毫秒​​ 示例​​:XX XX XX XX XX BB D1 00 02 0F发送每条总线数据的间隔时间为100毫秒 •删除配置:​​XX XX XX XX XX(地址) BB 00(固定) 00 (路数) E1/E2/E3/E4/E5 EE 0F​​​​ 路数​​:00 01 02 03 04 05 对应按键1-6​​ 示例​​:XX XX XX XX XX BB 00 03 E1 EE 0F删除按键4的配置 ​​11、删除所有输入配置数据​​ ​​XX XX XX XX XX (地址) BB EE EE EE EE 0F​​删除16路的所有数据 ​​12、锁定按键指令​​ •锁定按键,开关全开: ​​XX XX XX XX XX(地址) EC 00 FF FF 0F​​ •锁定按键,开关全关: ​​XX XX XX XX XX(地址) EC 00 00 00 0F​​ ​​13、解锁按键指令​​ •解锁按键,开关全开: ​​XX XX XX XX XX(地址) EC 01 FF FF 0F​​ •解锁按键,开关全关: ​​XX XX XX XX XX(地址) EC 01 00 00 0F​​ ​​14、开关延时配置(该模式需要将按键配置为点动模式)​​ ​​XX XX XX XX XX (地址) 9F (固定) 01 (路数) 01 (时间) 0F​​​​ 路数​​: 00-0F分别对应第1-16路​​ 时间​​: 01-FF对应1-255秒 ​​示例​​: XX XX XX XX XX 9F 08 06 0F第9路延时6秒 ​​15、上电初始状态配置指令​​ ​​XX XX XX XX XX (地址) EA (固定) 00 (路数) 01 (01开/00关) 01 (路数) 00 (01开/00关) 02 (路数) 01 (01开/00关) 02 (01开/00关) 01 (01开/00关) 01 (01开/00关) 0F ​​​​路数​​: 00-0F分别对应第1-16路 每2个字节为1组,设定上电的初始状态,01开/00关 上电初始状态默认为关闭​​ 示例​​: XX XX XX XX XX EA 00 01 01 00 02 01 0A 01 0B 00 0C 00 0F初始上电时,第1路开,第2路关,第3路开,第11路开,第12路关,第13路关。 ​​16、反馈模式配置协议​​ ​​XX XX XX XX XX (地址) BB D2 00 (固定) 00 (00打开标准主动反馈/01打开自定义主动反馈/03关闭主动反馈) 0F​​反馈分为标准反馈和自定义反馈 •标准主动反馈:反馈​​XX XX XX XX XX (地址) 16字节开关状态(0关/1开) 0F​​ •自定义主动反馈:反馈在输入发送自定义总线数据指令中配置的自定义总线数据 ​​示例​​: XX XX XX XX XX BB D2 00 00 00 OF打开标准主动反馈 发送XX XX XX XX XX 86 86 86 0F 反馈XX XX XX XX XX 00 00 00 01 01 01 00 00 01 01 00 01 01 00 01 01 0F表示路数1-16状态为关关关开开开关关开关开关开关开 --- ### 608. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 杜亚窗帘命令生成器/蓝牙调试助手,请微信扫描! 1. 功能简介​​ 本文档定义了适用于开合帘电机的通用RS485通信协议。协议采用主从式结构,规定了主机与电机控制器之间的数据帧格式、寄存器映射、控制指令及所有通信细节,是实现对电机状态查询、参数配置及运动控制的根本依据。 ​​2. 协议总则​​ ​​2.1 通信参数​​ •​​物理接口:​​ RS485,半双工。 •​​波特率:​​ 9600 bps (默认)。 •​​数据格式:​​ 8位数据位,1位停止位,无奇偶校验位。 •​​寻址范围:​​ 0x01~ 0xFE。0x00为广播地址,0xFE为出厂默认地址。 ​​2.2 通用数据帧格式​​所有通信数据包均采用统一的帧结构。 字段起始码设备地址功能码数据地址数据长度数据内容CRC16​​长度(字节)​​12111N2​​描述​​固定0x55目标设备地址指令类型寄存器地址数据字节数参数或数据循环冗余校验​​示例​​0x550x12, 0x340x030x010x01...0xAD, 0x8A •​​CRC16校验:​​ 校验范围涵盖从“设备地址”到“数据内容”的所有字节。算法需与示例匹配。 ​​2.3 功能码定义​​ •0x01: ​​读​​寄存器。主机请求读取从机数据。 •0x02: ​​写​​寄存器。主机请求写入从机数据。 •0x03: ​​控制​​命令。主机发送运动控制指令。 •0x04: ​​从机请求​​。从机主动上报信息(如请求分配地址)。 ​​3. 寄存器映射说明​​ 下表列出了所有可访问的寄存器地址及其功能。 数据地址描述数据格式与范围读写属性版本备注​​0x00​​​​设备地址低字节 (ID_L)​​0x01~0xFE可写与0x01共同构成设备地址。​​0x01​​​​设备地址高字节 (ID_H)​​0x01~0xFE可写同上。​​0x02​​​​当前位置(百分比)​​0x00~0x64(0-100%)0xFF:未设置行程只读开(UP)到行程点100%,关(DOWN)到行程点0%。​​0x03​​​​电机默认方向​​0x00:默认方向0x01:反方向可读写用于校正电机的正反转逻辑。​​0x04​​​​手拉启动使能​​0x00:开启手拉功能0x01:关闭手拉功能可读写禁用后,手动拉动无法启动电机。​​0x05​​​​电机运行状态​​0x00:STOP(停止)0x01:OPEN(正在打开)0x02:CLOSE(正在关闭)0x03:SETTING(行程设置中)只读A3版及以上​​0x27​​​​无源外接开关类型​​0x01:默认双反弹开关0x02:双不反弹开关0x03:DC246电子开关0x04:单键循环开关可读写A1版​​0x28​​​​强电外接开关类型​​0x00:强电双键不反弹模式(默认)0x01:酒店模式(插卡取电开关)0x02:强电双键可反弹模式可读写仅EV型电机​​0xE0-0xEF​​​​用户信息区​​16字节自定义数据可读写供主机存储信息。​​0xF0​​​​设备类型​​0x01:开合帘只读-​​0xF1​​​​模块通道数​​1-15只读-​​0xFD​​​​软件版本​​0-255只读-​​0xFE​​​​协议版本​​0xA4只读A1版 ​​4. 控制指令说明​​ 控制指令通过功能码 0x03触发。 指令描述指令参数版本备注​​0x01​​​​打开命令​​无-​​0x02​​​​关闭命令​​无-​​0x03​​​​停止命令​​无-​​0x04​​​​百分比命令​​0~100(百分比)-​​0x07​​​​删除行程​​无(全删)-​​0x08​​​​恢复出厂设置​​无A1版​​0x09​​​​设置情景模式​​情景模式号A2版​​0x0A​​​​运行情景模式​​情景模式号A2版​​0x0B​​​​删除情景模式​​情景模式号A2版​​0x0F​​​​取反命令​​无A4版 ​​5. 通信举例说明​​ ​​5.1 控制命令(功能码: 0x03)​​ ​​5.1.1 打开命令​​ •​​主机发送:​​ 55 12 34 03 01 AD 8A •​​设备返回:​​ 55 12 34 03 01 AD 8A(确认帧) ​​5.1.2 关闭命令​​ •​​主机发送:​​ 55 12 34 03 02 ED 8B •​​设备返回:​​ 55 12 34 03 02 ED 8B(确认帧) ​​5.1.3 停止命令​​ •​​主机发送:​​ 55 12 34 03 03 2C 4B •​​设备返回:​​ 55 12 34 03 03 2C 4B(确认帧) ​​5.1.4 百分比命令(运行到30%位置)​​ •​​主机发送:​​ 55 12 34 03 04 1E C8 E5(数据域: 0x1E= 30) •​​设备返回(成功):​​ 55 12 34 03 04 1E C8 E5(确认帧) •​​设备返回(失败,无行程):​​ 55 12 34 03 04 FF 08 AD(返回0xFF) ​​5.1.5 删除行程命令​​ •​​主机发送:​​ 55 12 34 03 07 2D 88 •​​设备返回:​​ 55 12 34 03 07 2D 88(确认帧) ​​5.1.6 恢复出厂设置命令​​ •​​主机发送:​​ 55 12 34 03 08 6D 8C •​​设备返回:​​ 55 12 34 03 08 6D 8C(确认帧) •​​注意:​​ 恢复后地址变为 0xFEFE,行程被删除。 ​​5.1.7 设置情景模式(设置1号情景)​​ •​​主机发送:​​ 55 12 34 03 09 01 8D BD •​​设备返回(成功):​​ 55 12 34 03 09 01 8D BD(确认帧) •​​设备返回(失败,无行程):​​ 55 12 34 03 09 FF 0C 3D(返回0xFF) ​​5.1.8 运行情景模式(运行1号情景)​​ •​​主机发送:​​ 55 12 34 03 0A 01 8D 4D •​​设备返回(成功):​​ 55 12 34 03 0A 01 8D 4D(确认帧) •​​设备返回(失败):​​ 55 12 34 03 0A FF 0C CD(返回0xFF) ​​5.1.9 删除情景模式(删除1号情景)​​ •​​主机发送:​​ 55 12 34 03 0B 01 8C DD •​​设备返回:​​ 55 12 34 03 0B 01 8C DD(确认帧) ​​5.1.10 广播控制命令举例(地址0x0000)​​ •​​广播打开:​​ 55 00 00 03 01 E9 3C(所有电机执行打开,无设备返回) •​​广播关闭:​​ 55 00 00 03 02 A9 3D(所有电机执行关闭,无设备返回) •​​广播百分比:​​ 55 00 00 03 04 1E 7E D6(所有电机运行至30%,无设备返回) ​​5.2 读命令(功能码: 0x01)​​ ​​5.2.1 读取当前位置(地址0x02)​​ •​​主机发送:​​ 55 12 34 01 02 01 2B 4D •​​设备返回(有行程):​​ 55 12 34 01 01 1E 6A 75(数据域: 0x1E= 30%) •​​设备返回(无行程):​​ 55 12 34 01 01 FF AA 3D(数据域: 0xFF) ​​5.2.2 读取电机方向(地址0x03)​​ •​​主机发送:​​ 55 12 34 01 03 01 2A DD •​​设备返回:​​ 55 12 34 01 01 00 EA 7D(数据域: 0x00= 默认方向) ​​5.2.3 读取手拉状态(地址0x04)​​ •​​主机发送:​​ 55 12 34 01 04 01 28 ED •​​设备返回:​​ 55 12 34 01 01 00 EA 7D(数据域: 0x00= 手拉使能) ​​5.2.4 读取电机状态(地址0x05)​​ •​​主机发送:​​ 55 12 34 01 05 01 29 7D •​​设备返回:​​ 55 12 34 01 01 00 EA 7D(数据域: 0x00= 停止) ​​5.2.5 读取弱电开关类型(地址0x27)​​ •​​主机发送:​​ 55 12 34 01 27 01 31 DD •​​设备返回:​​ 55 12 34 01 01 01 2B BD(数据域: 0x01= 双反弹开关) ​​5.2.6 读取强电开关类型(地址0x28)​​ •​​主机发送:​​ 55 12 34 01 28 01 34 2D •​​设备返回:​​ 55 12 34 01 01 00 EA 7D(数据域: 0x00= 强电双键不反弹) ​​5.2.7 读取协议版本(地址0xFE)​​ •​​主机发送:​​ 55 12 34 01 FE 01 6A 4D •​​设备返回:​​ 55 12 34 01 01 A3 AA 04(数据域: 0xA3) ​​5.3 写命令(功能码: 0x02)​​ ​​5.3.1 写设备地址(地址0x00, 0x01)​​ •​​前提:​​ 按住电机设置键5秒,待LED闪烁两次后松开。 •​​主机发送:​​ 55 00 00 02 00 02 12 34 50 7F(将地址改为0x1234) •​​设备返回:​​ 55 12 34 02 00 02 9A 2C(确认帧) •​​成功指示:​​ LED连续闪烁5次。 ​​5.3.2 设置电机方向(地址0x03)​​ •​​主机发送:​​ 55 12 34 02 03 01 01 9D 5B(写入0x01,设置为反方向) •​​设备返回:​​ 55 12 34 02 03 01 DA DD(确认帧) ​​5.3.3 设置手拉使能(地址0x04)​​ •​​主机发送:​​ 55 12 34 02 04 01 01 2C 9A(写入0x01,禁用手拉) •​​设备返回:​​ 55 12 34 02 04 01 D8 ED(确认帧) ​​5.3.4 设置弱电开关类型(地址0x27)​​ •​​主机发送:​​ 55 12 34 02 27 01 02 9D 51(写入0x02,设为双不反弹模式) •​​设备返回:​​ 55 12 34 02 27 01 C1 DD(确认帧) ​​5.3.5 设置强电开关类型(地址0x28)​​ •​​主机发送:​​ 55 12 34 02 28 01 01 ED 53(写入0x01,设为酒店模式) •​​设备返回:​​ 55 12 34 02 28 01 C4 2D(确认帧) ​​5.4 从机请求命令(功能码: 0x04)​​ •​​触发条件:​​ 电机通电状态下,按住设置键5秒(LED闪两下)后松开。 •​​从机发送:​​ 55 FE FE 04 01 BB 14(从机广播请求分配地址) •​​主机响应(10秒内):​​ 55 00 00 02 00 02 12 34 50 7F(主机写入新地址0x1234) •​​从机确认:​​ 55 12 34 02 00 02 9A 2C(地址更改成功) ​​6. 其他说明​​ 1.​​行程的重要性:​​ 未设置行程时(0xFF),百分比控制、情景模式等相关指令均无法执行。需先通过“打开”或“关闭”命令让电机运行至限位,自动记录行程。 2.​​版本兼容性:​​ 部分指令和寄存器功能因硬件版本(A1, A2, A3, A4)而异,使用时需注意对应关系。 3.​​错误处理:​​ 若设备无法执行指令(如无行程时执行百分比命令),会在返回帧的数据域中返回 0xFF作为错误标识。 4.​​广播命令:​​ 向地址 0x0000发送命令可控制总线上的所有电机,但设备不会响应广播命令。 常用指令整理: 设备地址: 01 01 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 01 9D 58 •​​打开窗帘:​​ 55 01 01 03 01 B9 00 •​​关闭窗帘:​​ 55 01 01 03 02 F9 01 •​​暂停窗帘:​​ 55 01 01 03 03 38 C1 •​​打开30%:​​ 55 01 01 03 04 1E 42 EA •​​打开50%:​​ 55 01 01 03 04 32 43 37 •​​打开70%:​​ 55 01 01 03 04 46 43 10 ​​设备地址: 01 02 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 02 DD 59 •​​打开窗帘:​​ 55 01 02 03 01 49 00 •​​关闭窗帘:​​ 55 01 02 03 02 09 01 •​​暂停窗帘:​​ 55 01 02 03 03 C8 C1 •​​打开30%:​​ 55 01 02 03 04 1E 42 AE •​​打开50%:​​ 55 01 02 03 04 32 43 73 •​​打开70%:​​ 55 01 02 03 04 46 43 54 ​​设备地址: 01 03 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 03 1C 99 •​​打开窗帘:​​ 55 01 03 03 01 18 C0 •​​关闭窗帘:​​ 55 01 03 03 02 58 C1 •​​暂停窗帘:​​ 55 01 03 03 03 99 01 •​​打开30%:​​ 55 01 03 03 04 1E 43 52 •​​打开50%:​​ 55 01 03 03 04 32 42 8F •​​打开70%:​​ 55 01 03 03 04 46 42 A8 ​​设备地址: 01 04 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 04 5D 5B •​​打开窗帘:​​ 55 01 04 03 01 A9 01 •​​关闭窗帘:​​ 55 01 04 03 02 E9 00 •​​暂停窗帘:​​ 55 01 04 03 03 28 C0 •​​打开30%:​​ 55 01 04 03 04 1E 42 26 •​​打开50%:​​ 55 01 04 03 04 32 43 FB •​​打开70%:​​ 55 01 04 03 04 46 43 DC ​​设备地址: 01 05 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 05 9C 9B •​​打开窗帘:​​ 55 01 05 03 01 F8 C1 •​​关闭窗帘:​​ 55 01 05 03 02 B8 C0 •​​暂停窗帘:​​ 55 01 05 03 03 79 00 •​​打开30%:​​ 55 01 05 03 04 1E 43 DA •​​打开50%:​​ 55 01 05 03 04 32 42 07 •​​打开70%:​​ 55 01 05 03 04 46 42 20 ​​设备地址: 01 06 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 06 DC 9A •​​打开窗帘:​​ 55 01 06 03 01 08 C1 •​​关闭窗帘:​​ 55 01 06 03 02 48 C0 •​​暂停窗帘:​​ 55 01 06 03 03 89 00 •​​打开30%:​​ 55 01 06 03 04 1E 43 9E •​​打开50%:​​ 55 01 06 03 04 32 42 43 •​​打开70%:​​ 55 01 06 03 04 46 42 64 ​​设备地址: 01 07 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 07 1D 5A •​​打开窗帘:​​ 55 01 07 03 01 59 01 •​​关闭窗帘:​​ 55 01 07 03 02 19 00 •​​暂停窗帘:​​ 55 01 07 03 03 D8 C0 •​​打开30%:​​ 55 01 07 03 04 1E 42 62 •​​打开50%:​​ 55 01 07 03 04 32 43 BF •​​打开70%:​​ 55 01 07 03 04 46 43 98 ​​设备地址: 01 08 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 08 5D 5E •​​打开窗帘:​​ 55 01 08 03 01 69 02 •​​关闭窗帘:​​ 55 01 08 03 02 29 03 •​​暂停窗帘:​​ 55 01 08 03 03 E8 C3 •​​打开30%:​​ 55 01 08 03 04 1E 41 76 •​​打开50%:​​ 55 01 08 03 04 32 40 AB •​​打开70%:​​ 55 01 08 03 04 46 40 8C ​​设备地址: 01 09 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 01 09 9C 9E •​​打开窗帘:​​ 55 01 09 03 01 38 C2 •​​关闭窗帘:​​ 55 01 09 03 02 78 C3 •​​暂停窗帘:​​ 55 01 09 03 03 B9 03 •​​打开30%:​​ 55 01 09 03 04 1E 40 8A •​​打开50%:​​ 55 01 09 03 04 32 41 57 •​​打开70%:​​ 55 01 09 03 04 46 41 70 ​​设备地址: 02 01 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 01 9D A8 •​​打开窗帘:​​ 55 02 01 03 01 B9 44 •​​关闭窗帘:​​ 55 02 01 03 02 F9 45 •​​暂停窗帘:​​ 55 02 01 03 03 38 85 •​​打开30%:​​ 55 02 01 03 04 1E 06 EA •​​打开50%:​​ 55 02 01 03 04 32 07 37 •​​打开70%:​​ 55 02 01 03 04 46 07 10 ​​设备地址: 02 02 ​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 02 DD A9 •​​打开窗帘:​​ 55 02 02 03 01 49 44 •​​关闭窗帘:​​ 55 02 02 03 02 09 45 •​​暂停窗帘:​​ 55 02 02 03 03 C8 85 •​​打开30%:​​ 55 02 02 03 04 1E 06 AE •​​打开50%:​​ 55 02 02 03 04 32 07 73 •​​打开70%:​​ 55 02 02 03 04 46 07 54 ​​设备地址: 02 03​​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 03 1C 69 •​​打开窗帘:​​ 55 02 03 03 01 18 84 •​​关闭窗帘:​​ 55 02 03 03 02 58 85 •​​暂停窗帘:​​ 55 02 03 03 03 99 45 •​​打开30%:​​ 55 02 03 03 04 1E 07 52 •​​打开50%:​​ 55 02 03 03 04 32 06 8F •​​打开70%:​​ 55 02 03 03 04 46 06 A8 ​​设备地址: 02 04​​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 04 5D AB •​​打开窗帘:​​ 55 02 04 03 01 A9 45 •​​关闭窗帘:​​ 55 02 04 03 02 E9 44 •​​暂停窗帘:​​ 55 02 04 03 03 28 84 •​​打开30%:​​ 55 02 04 03 04 1E 06 26 •​​打开50%:​​ 55 02 04 03 04 32 07 FB •​​打开70%:​​ 55 02 04 03 04 46 07 DC ​​设备地址: 02 05​​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 05 9C 6B •​​打开窗帘:​​ 55 02 05 03 01 F8 85 •​​关闭窗帘:​​ 55 02 05 03 02 B8 84 •​​暂停窗帘:​​ 55 02 05 03 03 79 44 •​​打开30%:​​ 55 02 05 03 04 1E 07 DA •​​打开50%:​​ 55 02 05 03 04 32 06 07 •​​打开70%:​​ 55 02 05 03 04 46 06 20 ​​设备地址: 02 06​​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 06 DC 6A •​​打开窗帘:​​ 55 02 06 03 01 08 85 •​​关闭窗帘:​​ 55 02 06 03 02 48 84 •​​暂停窗帘:​​ 55 02 06 03 03 89 44 •​​打开30%:​​ 55 02 06 03 04 1E 07 9E •​​打开50%:​​ 55 02 06 03 04 32 06 43 •​​打开70%:​​ 55 02 06 03 04 46 06 64 ​​设备地址: 02 07​​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 07 1D AA •​​打开窗帘:​​ 55 02 07 03 01 59 45 •​​关闭窗帘:​​ 55 02 07 03 02 19 44 •​​暂停窗帘:​​ 55 02 07 03 03 D8 84 •​​打开30%:​​ 55 02 07 03 04 1E 06 62 •​​打开50%:​​ 55 02 07 03 04 32 07 BF •​​打开70%:​​ 55 02 07 03 04 46 07 98 ​​设备地址: 02 08​​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 08 5D AE •​​打开窗帘:​​ 55 02 08 03 01 69 46 •​​关闭窗帘:​​ 55 02 08 03 02 29 47 •​​暂停窗帘:​​ 55 02 08 03 03 E8 87 •​​打开30%:​​ 55 02 08 03 04 1E 05 76 •​​打开50%:​​ 55 02 08 03 04 32 04 AB •​​打开70%:​​ 55 02 08 03 04 46 04 8C ​​设备地址: 02 09​​ •​​设置地址指令:​​ 55 00 00 02 00 02 02 09 9C 6E •​​打开窗帘:​​ 55 02 09 03 01 38 86 •​​关闭窗帘:​​ 55 02 09 03 02 78 87 •​​暂停窗帘:​​ 55 02 09 03 03 B9 47 •​​打开30%:​​ 55 02 09 03 04 1E 04 8A •​​打开50%:​​ 55 02 09 03 04 32 05 57 •​​打开70%:​​ 55 02 09 03 04 46 05 70 接线示意图 杜亚窗帘命令生成器/蓝牙调试助手,请微信扫描! --- ### 609. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 适用型号LBE-LEI-M-00、LBE-LES-M-00、LBE-LES-M-01、LBE-LEC-M-00、LBE-LEE-M-00LBE-KEI-M-00、LBE-KES-M-00、LBE-KES-M-01、LBE-KEC-M-00、LBE-KEE-M-00 DateVersionDescription2024/10/280.1协议重新整理2025/03/120.2增加以太网协议2025/03/200.4修复文档描述错误2025/06/270.5修复部分文档描述错误 系统介绍 系统定义 停止播放 播放 0 号文件夹,即可停止当前播放。 文件夹数量 系统最多支持 256 个文件夹 [0,255]。 文件夹定义 0 号文件夹为系统保留文件夹,是静音文件夹;当用户需要静音或中断当前播放时,直接切换到 0 号文件夹即可。 0 号文件夹默认隐藏,不可编辑。 1~255 号文件夹为用户文件夹,可自由导入音频文件。 单个文件夹导入的歌曲数量在容量允许的情况下没有数量限制。 播放系统只能指定文件夹,不能指定播放哪个文件;如需指定文件,该文件夹仅放一个音频文件即可。 当播放系统指定播放某个文件夹时,系统会根据“播放模式”和“选择模式”决定播放策略:循环或单次,顺序或随机,详见下一小节“模式定义”。 支持文件格式 音频文件格式支持 .mp3 和 .wav。 支持接口 目前播放器支持 4 种控制接口: 接口备注串口RS232 / RS485CANCAN2.0BInput12 V~36 V NPN 或 PNP以太网Ethernet 模式定义 音量模式 模式取值范围描述100 等分[0,100]此模式下音量被分成 100 等份,当音量为 100 时音量最大。28 等分[0,28]此模式下音量被分成 28 等份,当音量为 28 时音量最大。 播放状态 PlaybackState 状态值描述停止0x01播放器在停止状态播放中0x02播放器在播放状态 语音播放模式 PlaybackMode 模式值描述循环模式0x00文件夹内文件依次播放,一直循环。单次模式0x01文件夹内文件依次播放,播放完最后一个文件后播放器停止。 选择模式 SelectMode 模式值描述顺序模式0x00按照文件夹内文件名排序,从小到大依次选择文件。随机模式0x01随机选择指定文件夹内的文件;当处于随机模式时,文件将一直随机循环播放。 允许忽略播放指令 IgnorePlayCmd 是否开启值描述关闭0x00 (false)系统将无条件实时响应播放指令;若再次收到相同文件夹播放指令,会停止当前播放并重新开始。开启0x01 (true)若当前正在播放某文件夹,再次收到相同文件夹播放指令时将忽略,维持原播放。 以太网 协议:LD-NET2 协议说明 基于 TCP/IP;TCP 断开与连接请至少保持 50 ms 间隔:TCP 断开 → 延时 50 ms → TCP 连接。 协议由 7 个字节组成: head function param1 param2 param3 xor tail 头码 功能码 参数1 参数2 参数3 xor校验 尾码 头码:0x01 尾码:0x02 xor 校验:由前 5 个字节异或得到:xor = header ^ function ^ param1 ^ param2 ^ param3 指令间隔:每条指令发送间隔请保持 200 ms 以上。 协议指令的构成与解析请参考“LD-SP2”章节。 协议:Modbus-TCP 协议说明 支持指令: 读保持寄存器(0x03) 写单个保持寄存器(0x06) 写多个保持寄存器(0x10) 指令间隔:200 ms 以上。 相关寄存器 寄存器地址功能说明取值范围只读0x03播放寄存器[0,255]否0x04音量寄存器[0,100] 或 [0,28]否0x05播放模式寄存器[0,1]否0x06选择模式寄存器[0,1]否0x07忽略播放指令寄存器[0,1]否0x08播放状态寄存器[1,2]是 协议指令 写单个寄存器指令 发送格式: 事务处理标识协议标识符长度单元标识符功能码寄存器地址寄存器值2 Byte2 Byte2 Byte1 Byte1 Byte2 Byte2 Byte 事务标识符:报文编号,一般自增。 协议标识符:默认 0x0000。 长度:后续字节长度,写单个寄存器固定 0x06。 单元标识符:默认 0x01。 功能码:0x06。 回复格式:与发送一致。 示例 1:播放 1 号文件夹(写 0x03 为 1)控制器→播放器(HEX):00 01 00 00 00 06 01 06 00 03 00 01播放器→控制器(HEX):00 01 00 00 00 06 01 06 00 03 00 01 示例 2:停止播放(写 0x03 为 0)控制器→播放器(HEX):00 02 00 00 00 06 01 06 00 03 00 00播放器→控制器(HEX):00 02 00 00 00 06 01 06 00 03 00 00 示例 3:音量设为 100%(写 0x04 为 100=0x64)控制器→播放器(HEX):00 03 00 00 00 06 01 06 00 04 00 64播放器→控制器(HEX):00 03 00 00 00 06 01 06 00 04 00 64 读寄存器指令 发送格式: 事务处理标识协议标识符长度单元标识符功能码起始寄存器地址寄存器数量2 Byte2 Byte2 Byte1 Byte1 Byte2 Byte2 Byte 回复格式: 事务处理标识协议标识符长度单元标识符功能码字节数寄存器值2 Byte2 Byte2 Byte1 Byte1 Byte1 Byte2 Byte 示例:读取播放状态(读 0x08)控制器→播放器(HEX):00 04 00 00 00 06 01 03 00 08 00 01播放器→控制器(HEX):00 04 00 00 00 05 01 03 02 00 02→ 当前播放状态为 2(播放中)。 协议:HTTP-GET 协议说明 基于 HTTP,播放器内置 HTTP 服务。 指令间隔:500 ms 以上。 协议指令 播放指令 URL:http://{IP}:{port}/control/play?id={dir}http://{IP}:{port}/control/play?id={dir}&volume={vol} 参数: 参数说明是否必须IPHTTP 服务器 IP 地址必须portHTTP 服务器端口必须dir需要播放的文件夹编号必须vol音量(0-100 或 0-28)可选 回复:{"Code":0,"Msg":"ok"} 示例 1:以 100% 音量播放 1 号文件夹(默认 IP/端口)控制器→播放器:http://192.168.168.254:7890/control/play?id=1&volume=100播放器→控制器:{"Code":0,"Msg":"ok"} 示例 2:停止播放(id=0)http://192.168.168.254:7890/control/play?id=0&volume=100回复同上。 示例 3:播放 2 号文件夹(不带音量)http://192.168.168.254:7890/control/play?id=2回复同上。 设置音量 URL:http://{IP}:{port}/control/set?volume={value} 示例:设为 90%http://192.168.168.254:7890/control/set?volume=90回复:{"Code":0,"Msg":"ok"} 设置播放模式 URL:http://{IP}:{port}/control/set?loopmode={value}value:0=循环,1=单次 示例:设为循环http://192.168.168.254:7890/control/set?loopmode=0 设置选中模式 URL:http://{IP}:{port}/control/set?selectmode={value}value:0=顺序,1=随机 示例:设为顺序http://192.168.168.254:7890/control/set?selectmode=0 设置是否允许忽略播放指令 URL:http://{IP}:{port}/control/set?ignorecmd={value}value:0=不允许,1=允许 示例:允许忽略http://192.168.168.254:7890/control/set?ignorecmd=1 查询播放器状态 URL:http://{IP}:{port}/control/get 回复示例:{"Volume":100,"SelectMode":0,"LoopMode":0,"IsIgnorePlayCmd":1,"State":2,"GroupId":2,"FileIndex":0,"Code":0} 字段说明: 字段名说明Volume当前音量SelectMode当前选中模式(0顺序 1随机)LoopMode当前播放模式(0循环 1单次)IsIgnorePlayCmd是否允许忽略相同播放指令(0否 1是)State当前播放状态(1停止 2播放中)GroupId当前播放文件夹FileIndex当前文件索引(保留)Code异常码,默认 0 串口 协议:LD-SP2 协议说明 帧格式:7 Byte head function param1 param2 param3 xor tail 头码 功能码 参数1 参数2 参数3 xor校验 尾码 头码:0x01 尾码:0x02 xor 校验:前 5 Byte 异或 指令间隔:200 ms 以上。 协议指令 播放指令 请求:01 51 dir 00 volume xor 02回复:01 52 dir 00 volume xor 02 示例:以 96% 音量播放 2 号文件夹控制器→播放器(HEX):01 51 02 00 60 32 02播放器→控制器(HEX):01 52 02 00 60 31 02 设置音量指令 请求:01 41 00 00 volume xor 02回复:01 42 00 00 volume xor 02 示例 1:设为 10001 41 00 00 64 24 02回复:01 42 00 00 64 27 02 示例 2:设为 2801 41 00 00 1C 5C 02回复:01 42 00 00 1C 5F 02 设置播放模式指令 请求:01 43 00 00 playback_mode xor 02回复:01 44 00 00 playback_mode xor 02 示例:设为循环01 43 00 00 00 42 02回复:01 44 00 00 00 45 02 设置选中模式指令 请求:01 45 00 00 select_mode xor 02回复:01 46 00 00 select_mode xor 02 示例:设为随机01 45 00 00 01 45 02回复:01 46 00 00 01 46 02 设置忽略播放指令 请求:01 47 00 00 ignore_play_cmd xor 02回复:01 48 00 00 ignore_play_cmd xor 02 示例:启用忽略01 47 00 00 01 47 02回复:01 48 00 00 01 48 02 查询状态指令 1 请求:01 53 00 00 00 52 02回复:01 54 00 playback_state volume xor 02 示例:控制器→播放器:01 53 00 00 00 52 02播放器→控制器:01 54 00 02 5A 37 02→ 状态:播放中;音量:90 查询状态指令 2 请求:01 55 00 00 00 54 02回复:01 56 playback_mode select_mode ignore_play_cmd xor 02 示例:控制器→播放器:01 55 00 00 00 54 02播放器→控制器:01 56 00 01 01 57 02→ 播放模式:循环;选中模式:随机;忽略相同指令:是 查询状态指令 3 请求:01 57 00 00 00 56 02回复:01 58 dir 00 00 xor 02 示例:控制器→播放器:01 57 00 00 00 56 02播放器→控制器:01 58 02 00 00 5B 02→ 当前播放文件夹:2 协议:Modbus-RTU (略,与 Modbus-TCP 寄存器定义完全一致,仅链路层改为 RTU,示例见原文) CAN 协议:LD-CAN1 帧格式:8 Byte header function param1 param2 param3 param4 xor tail 头码 功能码 参数1 参数2 参数3 参数4 xor 尾码 头码:0x01;尾码:0x02;xor:前 6 Byte 异或。 帧 ID 可上位机修改,出厂默认请求 0x200,回复 0x201。 指令间隔:100 ms 以上。 (各指令帧格式与 LD-SP2 对应指令参数完全一致,仅增加 param4 占位,详见原文示例) 协议:LD-CAN2 帧格式:8 Byte,无尾码、无 xor,头码 0x01,其余保留 0x00。 帧 ID 默认:请求 0x200,回复 0x201。 指令间隔:100 ms 以上。 (各指令与 LD-CAN1 相同,仅去掉 xor 与尾码,详见原文示例) IO 输入 LD-INPUT1 触发条件:保持对应输入口触发状态。 输入类型:NPN/PNP 可接线选择。 8 位输入口状态决定文件夹编号(二进制加权,支持 0~255,0 为停止)。 示例表格及计算过程见原文。 LD-INPUT4 触发条件:至少 100 ms 脉冲信号。 其余规则与 LD-INPUT1 相同,仅触发方式改为脉冲。 示例表格及计算过程见原文。 --- ### 610. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1、产品介绍: 分体式空调即一拖一空调系统,一台外机控制一台内机组成 产品为控制分体式空调网关。安装于每台内机对应的信号端子。 1.1 产品概述(因空调品牌的不同,分两种型号) AF11可控制美的、海尔、格        IRACC-AFD 控制大金力、 日立、三菱重工AFD控制大金 1.2 产品基本规格及电气参数 产品名称分体式空调智能控制网关适用品牌大金、东芝、 日立、三菱重工、三菱电机、海尔、美的、格力、三菱重工海尔等产品型号AFD11(仅大金)     AF11(其它)通讯接口RS485、无线(订制,提供内置无线模组)产品尺寸(mm:长*宽*高)56*56*17.5传输模式半双工起始位及停止位1数据位 / 检验位8    无  NONE功耗40mA-300mA,2/3W电源自供电 5V(空调内机对应端子直接供电)波特率9600bps安装位置空调室内机线材要求DATA 接线采用 2 芯屏蔽线 2*1.0 或者 2*1.5(不可用网线代替) 2、安装要求及接线示意图 安装条件:安装于室内机 内外机最大限制:仅限于每内机安装一个网关。 智能家居对接图 3、产品展示 标准产品为 485 无线产品订制,可订制,提供相关内置模组。 端子及指示灯说明如下图: 3.1 大金分体机风管机控制网关—— 型号 AFD11 1-3:指示信号灯说明如下表格: 指示灯名称功能1接线端子V+ V-接 DC5V 内机端子AC1 AC2 接HomeBus 为空调信号线接线端子,接大 金内机 P1P22备用端口A2 B2备用485 接口3485 接口 A1 B1标准 485 接口,常用 4-6:指示信号灯说明如下表格: 指示灯熄灭闪烁常亮再次闪烁4---备用---备用---备用---备用5设备异常搜索空调中搜索完成空调被控制6通讯异常485 通讯中未工作中控主机与网关通讯 3.2  (非大金)分体机风管机控制网关—— 型号 AF11 1-3:指示信号灯说明如下表格: 指示灯名称功能1接线端子与空调信号端子直连,不同品牌空调端子不同,见 下文表格所示2备用端口A2 B2备用485 接口3485 接口 A1 B1标准 485 接口,常用 4-6:指示信号灯说明如下表格: 指示灯熄灭闪烁常亮再次闪烁4---备用---备用---备用---备用5设备异常搜索空调中搜索完成空调被控制6通讯异常485 通讯中未工作中控主机与网关通讯 4、网关与空调内机对应端口 一拖一分体式空调内机与网关对接端口如下(连接线为产品标配): 美的内机:五针红色插口 海尔内机:四针红色插口 可控制空调品牌型号网关端口空调端口配线网关供电RS485A1 B1 口大金IRACC-AFD11AC1 AC2P1 P2标配配线自供电接智能主机东芝IRACC-AF11ACA B标配配线自供电接智能主机日立IRACC-AF11ACA B/CN2标配配线自供电接智能主机海信IRACC-AF11ACA B/WIRED标配配线自供电接智能主机美的IRACC-AF11ACCN40标配配线自供电接智能主机格力IRACC-AF11ACcom3/wifi/com bms标配配线自供电接智能主机海尔IRACC-AF11ACWIFI标配配线自供电接智能主机三菱电机IRACC-AF11ACCN105标配配线自供电接智能主机三菱重工IRACC-AF11ACX Y标配配线自供电接智能主机三菱重工海尔IRACC-AF11ACX Y标配配线自供电接智能主机 5、安装接线示意图(以海尔一拖一风管机为例) 6、上电测试: (1)通电:网关接内机后自供电,信号灯“5 ”亮 (2)485 通讯线接智能中控,通讯后信号灯“6 ”亮 (3)中控主机能够正常监测和控制空调内机,则完成调试。 7、网关地址拨码方法(寄存器地址),网关出帮地址默认“01 ” IRACC 模块拨码实例(码位为 1-2-3-4-5-6) 1 号从机拨码 000010: 2 号从机拨码 000100: 3 号从机拨码 000110: IRACC 分体机网关拨码地址表:“ 1 ”示意为往上拨至 ON 地址12345678拨码000010000100000110001000001010001100001110010000地址910111213141516拨码010010010100010110011000011010011100011110100000地址1718192021222324拨码100010100100100110101000101010101100101110110000地址2526272829303132拨码110010110100110110111000111010111100111110000001地址3334353637383940拨码000011000101000111001001001011001101001111010001地址4142434445464748拨码010011010101010111011001011011011101011111100001地址4950515253545556拨码100011100101100111101001101011101101101111110001地址57585960616263主机拨码110011110101110111111001111011111101111111000000 Modbus通讯协议 监控运转/停止 室内机的运转/停止状态运转模式 制冷,制热,送风,除湿(取决于室内机的性能) 设定温度室内机的设定温度室内温度 室内机的吸气温度风量 LL,·L,·M,·H,·HH-(取决于室内机的性能)强制停止状态 强制停止室内机的状态 异常 故障、警告的异常代码 控制运转/停止 控制室内机的运转/停止运转模式 制冷,制热,送风,除湿 (取决于室内机的性能) 设定温度 制冷/制热的设定温度风量 LL,·L,·M,·H,·HH-(取决于室内机的性能) 检索系统信息通讯状态室内机连接 多少台室内机已连接,并且每台室内机的网络地址 网关的 Modbus 通信参数 485 通信参数波特率 9600bps 数据位 8 停止位 1 奇偶校验位 NONE 功能代码: 本网关支持以下功能代码。如果本网关接收到此表中以外的功能代码,则此功能 代码将会被视为非法的功能代码,并且本网关会反馈异常响应。功能代码 信息 广播0x04(04) 读 输 入 寄 存 器 (Read-Input-Register)0x06(06) 预 置 单 个 寄 存 器 (Preset-Single-Register)0x10(16) 预置多个寄存器 (Preset-Multiple-Registers) 功能格式:读输入寄存器(Read Input Register)(0x04) [功能]读取输入寄存器中的值。其地址和输入寄存器的内容请参照“3.Modbus 寄存器”。 [查询] 查询信息列举了寄存器的起始地址及寄存器的数量。 寄存器寻址起始地址为 0:寄存器 30001 的地址是 0x0000。 此功能在一次查询中最多可读取 4 台 VRV 室内 机信息。预置单个保持寄存器(Preset single register)(0x06) [功能] 写入一个值到保持寄存器中。在广播的情况下,此值被写入到所的保持寄存器中。其地址和保持寄存器的内容请参照“3.Modbus 寄存器”。 [查询] 查询信息列举了寄存器的起始地址和一个值。 寄存器寻址起始地 40001 的地址是 0x0000。预置多个保持寄存器(Preset multiple register)(0x10) [功能] 写入多个值到保持寄存器中。在广播的情况下,此值被写入到所有从机的相同类型的保持寄存器中。其地址和保持寄存器中的局部参数请参照“3.Modbus 寄存器”。 [查询] 查询信息列举了寄存器的起始地址、数据大小和多个值。寄存器寻址起始地址为 0:寄存器 40001 的地址是 0x0000。此功能在一次查询中最多可写入 1 台 VRV 室 内机信息。 Modbus 寄存器 4.1 0x04(04)读输入寄存器 (Read -Input -Register) (输入寄存器(Input register) 3-1.)4.2 适配器状态地址 室内机连接状态地址内容30001室内机连接状态地址30002室内机连接状态(1-00 ~ 1-15)30003室内机连接状态(2-00 ~ 2-15)30004室内机连接状态(3-00 ~ 3-15)30005室内机连接状态(4-00 ~ 4-15) 适配器状态例: 查询 01 04 00 00 00 01 31 CA响应 01 04 02 00 01 78 F0 其中查询 01 04 00 00 00 01 31 CA01 从机地址 01~1504 功能代码 04 查询 00 00 寄存器 30001 的地址是 0x000000 01 查询 1 个寄存器31 CA 校验 CRC16 响应 01 04 02 00 01 78 F001 从机地址 01~1504 功能代码 04 查询02 长度 01 适配器状态 00:未准备好;01:准备好78 F0 校验 CRC16 改变从机地址见附 2 4.3 室内机连接状态: 查询 01 04 00 01 00 04 A0 09 响应 01 04 08 FF FF FF 3F 3F FF 00 00 58 28 04 功能代码 04 查询 0001寄存器 30002 的地址是 0x00010004查询 4 个寄存器A009校验 CRC16 响应: 01 04 08 FF FF FF 3F 3F FF 00 00 58 28 01从机地址01~1504功能代码04 查询08长度FFFF FF 3F3F FF 00 00 共 64 台空调内机。0:未连接;1:连接 58 28 校验 CRC16 4.4 室内机的状态信息 4.4.1 适配器地址根据您提供的图片内容,以下是完整的室内机状态信息查询地址映射表: 室内机状态信息查询地址映射表 地址范围室内机地址地址范围室内机地址32001-320061-0032193-321983-0032007-320121-0132199-322043-0132013-320181-0232205-322103-0232019-320241-0332211-322163-0332025-320301-0432217-322223-0432031-320361-0532223-322283-0532037-320421-0632229-322343-0632043-320481-0732235-322403-0732049-320541-0832241-322463-0832055-320601-0932247-322523-0932061-320661-1032253-322583-1032067-320721-1132259-322643-1132073-320781-1232265-322703-1232079-320841-1332271-322763-1332085-320901-1432277-322823-1432091-320961-1532283-322883-1532097-321022-0032289-322944-0032103-321082-0132295-323004-0132109-321142-0232301-323064-0232115-321202-0332307-323124-0332121-321262-0432313-323184-0432127-321322-0532319-323244-0532133-321382-0632325-323304-0632139-321442-0732331-323364-0732145-321502-0832337-323424-0832151-321562-0932343-323484-0932157-321622-1032349-323544-1032163-321682-1132355-323604-1132169-321742-1232361-323664-1232175-321802-1332367-323724-1332181-321862-1432373-323784-1432187-321922-1532379-323844-15 说明: 每个室内机占用6个连续的寄存器地址 地址格式为"组号-序号",如"1-00"表示第1组第00号室内机 总共支持4组,每组16台室内机,最大支持64台室内机 使用功能码0x04读取这些寄存器获取室内机状态信息 此表格用于查询室内机的运行状态,包括开关状态、风速、运行模式、设定温度、室内温度、故障代码等信息。 4.4.2 查询室内机的状态:查询 01 04 07 D0 00 06 70 85响应 01 04 0C 50 00 42 02 01 18 00 00 01 0A 80 00 F6 FA 其中查询: 01 04 07 D0 00 06 70 8501 从机地址 01~1504 功能代码 04 查询07 D0 寄存器 32001 的地址是 0x07d000 06 查询 6 个寄存器70 85 校验 CRC16 6 个寄存器存贮一台空洞室内机的状态。寄存器 32001(第 1 台空洞室内机的起始地址是 0x07d0,寄存器 32007(第 2 台空洞室内机的起始地址是 0x07d6,寄存器 32013(第 3 台空洞室内机的起始地址是 0x07dc,……… 响应: 01 04 0C 50 00 42 02 01 18 00 00 01 0A 80 00 F6 FA01 从机地址 01~1504 功能代码 04 查询0C 长度50 风量/风向 hh 风量 = 0x50&0xf0 10=1, 20=II, 30=m, 40=h, 50=hh, A0=自动 摆风此寄存器 BIT2-BIT0 位为风向 0-1-2-3-4-5-6-7(0-水平方向, 4 垂直方向 5,6 保留, 7 摆风)此寄存器 BIT3 表示室内机风向自动的状态 (0—OFF 无风向, 1—ON 有风向) 00 开关 off 开关=0x00&0x01 1=开 0=关 42 过虑网清洗标志02 制冷模式 模式=0x02&0x0f0=送风, 1=制热, 2=制冷, 7=除湿01 18 设置温度 28 设置温度=(0x01100+0x18)/10; 00 故障代码 附后 01 0A 室内温度 26.6 室内温度=(0x01100+0x0a)/10;08 00 温度传感器状态 0x0800 正常 0x0001 异常 F6 FA 校验 CRC16 查询室内机的状态可以查询单个寄存器,也可以多个寄存器一起查询。 例010407D000013147查询室内机1 的开关和风量010407D700018086查询室内机2 的模式010407D6000C1083查询室内机2,3 室内机的状态 4.5 0x06(06) 预置单个寄存器(Preset -Single -Register) 4.5.1. 适配器地址 地址内容 40001 DIII网络地址 地址室内机地址地址室内机地址42001-420031-0042097-420993-0042004-420061-0142100-421023-0142007-420091-0242103-421053-0242010-420121-0342106-421083-0342013-420151-0442109-421113-0442016-420181-0542112-421143-0542019-420211-0642115-421173-0642022-420241-0742118-421203-0742025-420271-0842121-421233-0842028-420301-0942124-421263-0942031-420331-1042127-421293-1042034-420361-1142130-421323-1142037-420391-1242133-421353-1242040-420421-1342136-421383-1342043-420451-1442139-421413-1442046-420481-1542142-421443-1542049-420512-0042145-421474-0042052-420542-0142148-421504-0142055-420572-0242151-421534-0242058-420602-0342154-421564-0342061-420632-0442157-421594-0442064-420662-0542160-421624-0542067-420692-0642163-421654-0642070-420722-0742166-421684-0742073-420752-0842169-421714-0842076-420782-0942172-421744-0942079-420812-1042175-421774-1042082-420842-1142178-421804-1142085-420872-1242181-421834-1242088-420902-1342184-421864-13 42091-420932-1442187-421894-1442094-420962-1542190-421924-15群控地址42193-421955-00 4.6 控制室内机: 4.6.1 开关及风速设定 控制 01 06 07 D0 10 60 84 AF响应 01 06 07 D0 10 60 84 AF其中控制例: 01 06 07 D0 10 60 84 AF01 从机地址 01~15 06 功能代码 06 控制 07D0 寄存器 42001 的地址是 0x0740 10 (BIT7-BIT4) 10 风速 120 风速 130 风速 m 40 风速 h 50 风速 hh A0=自动(BIT2-BIT0)(0-1-2-3-4-5-6-7)(0-水平方向,4 垂直方向 5,6 保留,7 摆风) 60 关机 61 开机 特别提示: FF 60 表示不进行风量控制操作 仅关机 FF 61 表示不进行风量控制操作 仅开机 20 FF 风量 1 不进行开关机操作50 FF 风量 hh 不进行开关机操作84 AF 校验 CRC16 4.6.2 模式设定 控制 01 06 07 D4 00 02 49 47响应 01 06 07 D4 00 02 49 47其中控制例: 01 06 07 D0 10 60 84 AF 00 A0 16 摄氏度0B 52 校验 CRC16 01 从机地址 07D0寄存器 42005的地址是 0x07440002制冷模式0000通风模式, 0001 制热模式,0002制冷模式, 0007 除湿模式0003自动模式 4947校验 CRC16 4.6.3 温度设定 控制 01 06 07 D2 00 A0 28 FF响应 01 06 07 D2 00 A0 28 FF 其中控制例: 01 06 07 D2 00 A0 28 FF01 从机地址 01~1506 功能代码 06 控制 07 D2 寄存器 42003 的地址是 0x07d2 00 A0 00 A0 16 摄氏度,00 AA 17 摄氏度,……… 28 FF 校验 CRC16 3 个寄存器存贮一台空调室内机的控制信息, 寄存器 42001(第 1 台空调室内机的起始地址是 0x07d0, 寄存器 42004(第 2 台空调室内机的起始地址是 0x07d3, 寄存器 42007(第 3 台空调室内机的起始地址是 0x07d6, 4.7 0x10(16) 预置多个寄存器 (Preset: Multiple-Registers) 控制室内机: 控制 01 10 07 D9 00 03 06 10 60 00 02 00 A0 0B 52响应 01 10 07 D9 00 03 50 87 其中控制例: 01 10 07 D9 00 03 06 10 60 00 02 00 A0 C2 A501 从机地址 01~1510 功能代码 10 控制 07 D9 寄存器 42010 的地址是 0x07d9(第 4 台空调室内机) 00 03 预置 3 个寄存器 06 数据大小(bytes) 10 60 10 风速 11 60 关机 00 02 制冷模式 响应: 01 10 07 D9 00 03 50 8701 从机地址 01~1510 功能代码 10 控制 07 D9 寄存器 42010 的地址是 0x07d9(第 4 台空调室内机) 00 03 预置 3 个寄存器50 87 校验 CRC16预置多个寄存器仅支持单台室内机一次写入所有控制参数! 4.8 查询设置空调类型 0X05 查询/设置空调型号 查询:01 05 00 00 00 00 CD CA 01 从机地址05 功能码 00 00 寄存器地址默认 00 0000 00 填充字节 默认 00 00 CD CA 校验 CRC16 返回:01 05 00 00 01 00 CC 5A00 从机地址05 功能码 00 00 寄存器地址默认 00 0000 00 空调类型。具体见下表: CC 5A 校验 CRC16 设置:01 05 00 01 01 00 9D DA01 从机地址05 功能码 00 01 寄存器地址 01 00 空调类型 01 00 代表大金9D DA 校验 CRC16 返回:01 05 00 01 01 00 9D DA00 从机地址05 功能码 00 01 寄存器地址 01 00 空调类型。具体见下表: 9D DA 校验 CRC165、新风:读取和控制都是 00 附 1大金异常代码映射表: 值 2代码值 1代码00001A112C223E334H445F556J667L778P889U9910910A11811H12712C13613J14514E15415F16317218119G20K21M22N23R24T25V26W27X28Y29Z30*31 例如: 值 1 = 4 值 2 = 9 异常代码 = U4 附 2 代码故障说明代码故障说明01室内机保护装置动作31室内外机容量组合异常02外机保护装置动作(室外机风扇保护跳开)32正常内机掉线03通讯故障35外机或者内机编号重复内外机机型不匹配04外机主板与变频板通讯36外机主板与风扇变频板通讯05电源相序38室外机保护电路动作06功率模块欠电压(室内机电压过低商用分体)风扇控制模块电压异常39定速压机过电流或者零电流07排气过热度低3a室外机容量错误08压缩机顶部温度高3b室外机与子机组合错误,电源设定错误09室外风扇内置温感检测温度过高3d室外机主机与子机通讯异常0A室外机模块间通讯异常41制冷过负荷保护0b室外机子模块设定错误42制热过负荷保护0c室外机主模块设定错误43压比过低0d水温异常(水热源)44低压过高11Ti温度传感器开路或者短路45排气压力高12To温度传感器开路或者短路46排气压力低13Tl温度传感器开路或者短路47低压压力低14Tg温度传感器开路或者短路48变频器过电流保护动作15Ta环境温度传感器异常(全热交换器)51压缩机变频器检测到零电流16新风远传温度传感器开路或者短路52压缩机变频器检测到过电流17线控器内置传感器异常53压缩机变频器检测到异常18室内风扇电机温度传感器异常54压缩机变频器温感过热19室内风扇电机保护装置动作55变频器不动作20压机顶部温感异常56风扇位置检测异常21高压传感器异常57风扇控制基板保护动作22外气温感异常58风扇控制异常23压缩机顶部温感异常59室外机风扇斩波器电流异常24冷却器温感异常5a风扇控制基板温度上升保护25冷却器温感异常5b风扇控制基板过电流保护29低压传感器异常5c风扇控制基板电流传感器异常 2A水温传感器异常(水热源)96 KPI房间温度传感器异常(FSN)30接线错误(FSN)CH 装置连接错误(FSXNQ)97 KPI室外温度传感器异常(FSN)EE压缩机保护 附 3表格:类型代码对应表 空调类型类型代码大金01 00东芝02 00三菱重工03 00三菱重工海尔04 00三菱电机05 00日立06 00海信日立07 00松下08 00海尔09 00约克0A 00博世0B 00美的0C 00格力0D 00开利0E 00三星0F 00LG10 00 从机地址出厂默认为 01 改变方法为向网关发送 01 06 AA ** CRC16 设备回复与发送一致即为成功 例: 01 06 AA 03 DF 78 将从机地址改为 03 --- ### 611. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、技术参数 ​​工作温度​​:-20 - 60℃ ​​ 工作电压​​:DC12V - DC24V ​​ 输出电流​​:16A(每个回路) ​​ 额定功率​​:12V:<500W 24V:<1000W ​​ 输出回路​​:红(R)、绿(G)、蓝(B)三个通道 ​​ 输出颜色​​:16777216(256 * 256 * 256)种 ​​ 输出连接​​:共阳 ​​ 静态功耗​​:<0.3W ​​ 外形尺寸​​:88mm * 54mm * 59mm(长宽高) ​​ 通信方式​​:RS485 ​​ 波特率​​:4800 9600 19200 38400 57600 115200 ​​ 通信协议​​:自有协议、MODBUS-RTU协议、自定义协议 二、功能特点 ​​多种场景​​: 颜色控制、无极自动调光 定时开关、全彩爆闪、7色呼吸 ​​灵活的指令​​: 自定义指令关联控制 自带IO控制、远程IO控制 双色筒灯调色温专用指令 单回路、多回路定时开关控制 RGB灯色彩控制(多达1600万色) 可配置波特率、上电记忆功能、回复使能 ​​丰富的输入输出功能​​: 2个可编程输入IO 6个可编程自动场景 延时控制、延时输入技术(方便对接人体感应) ​​多种负载对接能力​​: 标准共阳RGB灯带/灯具 独立的单色灯带、双色温筒灯 三、无缝多协议 本司自定协议(推荐采用) 工业级标准MODBUS协议系统 多达6条用户可自定义协议(需要配合本司自定协议使用) 四、可靠的安全性能 RS485通信控制 55A原装进口MOS 防电源反接功能,宽电压7-28V供电 强干扰环境的应用,可选择高速隔离通信版 全部使用大厂原装器件,高性价比。工业级进口MCU抗干扰能力强 五、接线端说明 V+:模块供电正极(宽电压7-26V供电) V-:模块供电负极 A:RS485的A端 B:RS485的B端 V+:共阳RGB灯正极(与供电的V+相通) R:LED红色(负极) G:LED绿色(负极) B:LED蓝色(负极) 六、控制器选项表 型号通信接口通信隔离负载能力单回路负载能力供电电源WE102RS485无15A5A-WE102ARS485无20A5A-WE102BRS485有15A5A-WE102CRS485有20A5A-WE102DRS485无6A2A-WE102ERS485无8A2A-WE102FRS485无6A2A- ​​说明​​: 控制器是低压直流控制器,默认的供电电压是DC:7-28V。建议12V或24V。当应用在供电电压大于28V时,需要提前联系客服人员进行定制。 控制器的输出端口是大功率MOS管,严禁负载(输出与V+)短路。为了防止负载短路,请选择与负载功率合适的保险管进行保护。 控制器的负载电压与供电电压要一致。 七、通信协议说明 自有协议 本协议用于配置设备的 RS485 通信参数。所有命令均以 0xA5开头,以 0x5A结尾。​​校验和​​是从 ​​长度字节​​ 开始,到 ​​校验和字节之前​​ 的所有字节的累加和(通常取低8位)。 1. 设置通信地址 (0xB0) ​​功能:​​ 更改设备的通信地址。 ​​重要提示:​​ o如果设备上有 ​​地址拨码开关​​,此命令​​无效​​,会返回失败 (0xB3)。必须使用拨码开关设置地址。 o​​拨码开关操作:​​ 出厂默认:所有开关在非数字侧 (1),地址为 0xFF。 设置地址:将开关拨到数字侧表示该位为 0,否则为 1。 ​​必须断电操作!​​ 带电操作可能损坏控制器。 拨码开关设置后,​​重新通电​​生效。 o使用此命令设置地址:​​无需断电,立即生效​​,新地址会保存。 ​​发送命令 (主机 -> 设备):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此命令数据部分长度 (旧地址 + 命令字 + 新地址 = 3字节)3旧地址0xXX​​当前​​与设备通信使用的地址 (0x00-0xFF)4命令字0xB0地址设置命令5新地址0xXX要设置的​​新地址​​ (0x00-0xFF)6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​新地址​​ 的累加和 (SUM(0x04, 旧地址, 0xB0, 新地址))7结束码0x5A固定结束符 · ​​接收响应 (设备 -> 主机):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x03此响应数据部分长度 (新地址 + 命令字 = 2字节)3新地址0xXX设备当前使用的地址 (即设置后的地址)4命令字0xB2 / 0xB3​​0xB2 = 设置成功​​​​0xB3 = 设置失败​​ (通常因拨码开关存在导致)5校验和0xXX从 ​​长度 (0x03)​​ 到 ​​命令字​​ 的累加和 (SUM(0x03, 新地址, 命令字))6结束码0x5A固定结束符 · 2. 查询通信地址 (0xB1) ·​​功能:​​ 查询设备当前的通信地址。 ·​​发送命令 (主机 -> 设备):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x03此命令数据部分长度 (地址 + 命令字 = 2字节)3地址0xXX / 0xFF​​本机地址​​ (单台查询) 或 ​​0xFF​​ (广播查询,所有设备都会响应地址)4命令字0xB1地址查询命令5校验和0xXX从 ​​长度 (0x03)​​ 到 ​​命令字 (0xB1)​​ 的累加和 (SUM(0x03, 地址, 0xB1))6结束码0x5A固定结束符 · ·​​接收响应 (设备 -> 主机):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x03此响应数据部分长度 (地址 + 命令字 = 2字节)3地址0xXX设备​​当前​​的通信地址4命令字0xB2地址查询回复命令 (固定为成功回复)5校验和0xXX从 ​​长度 (0x03)​​ 到 ​​命令字 (0xB2)​​ 的累加和 (SUM(0x03, 地址, 0xB2))6结束码0x5A固定结束符 · 3. 设置通信波特率 (0xB4) ​​功能:​​ 更改设备的 RS485 通信波特率。 ​​发送命令 (主机 -> 设备):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此命令数据部分长度 (地址 + 命令字 + 波特率 = 3字节)3地址0xXX​​当前​​与设备通信使用的地址 (0x00-0xFF)4命令字0xB4波特率设置命令5波特率0x01-0x05​​1=4800, 2=19200, 3=38400, 4=57600, 5=115200, 其他=9600​​6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​波特率​​ 的累加和 (SUM(0x04, 地址, 0xB4, 波特率))7结束码0x5A固定结束符 · ​​接收响应 (设备 -> 主机):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此响应数据部分长度 (地址 + 命令字 + 波特率 = 3字节)3地址0xXX设备地址4命令字0xB6 / 0xB7​​0xB6 = 设置成功​​​​0xB7 = 设置失败​​5波特率0x01-0x05​​设备当前使用的波特率​​ (1=4800, 2=19200, 3=38400, 4=57600, 5=115200, 其他=9600)6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​波特率​​ 的累加和 (SUM(0x04, 地址, 命令字, 波特率))7结束码0x5A固定结束符 · 4. 查询通信波特率 (0xB5) ·​​功能:​​ 查询设备当前的 RS485 通信波特率。 ·​​发送命令 (主机 -> 设备):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x03此命令数据部分长度 (地址 + 命令字 = 2字节)3地址0xXX / 0xFF​​本机地址​​ (单台查询) 或 ​​0xFF​​ (广播查询)4命令字0xB5波特率查询命令5校验和0xXX从 ​​长度 (0x03)​​ 到 ​​命令字 (0xB5)​​ 的累加和 (SUM(0x03, 地址, 0xB5))6结束码0x5A固定结束符 · ·​​接收响应 (设备 -> 主机):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此响应数据部分长度 (地址 + 命令字 + 波特率 = 3字节)3地址0xXX设备地址4命令字0xB6 / 0xB7​​0xB6 = 查询成功​​​​0xB7 = 查询失败​​ (不常见)5波特率0x01-0x03​​设备当前使用的波特率​​ (​​1=19200, 2=57600, 3=115200, 其他=9600​​)6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​波特率​​ 的累加和 (SUM(0x04, 地址, 命令字, 波特率))7结束码0x5A固定结束符 · o​​注意:​​ 查询响应中的波特率数值定义 (1=19200, 2=57600, 3=115200) 与设置命令 (1=4800, 2=19200, 3=38400...) ​​不同​​,且范围更小。其他=9600是相同的。 5. 设置是否回复 ACK (0xB8) ·​​功能:​​ 设置设备在收到命令后是否回复确认 (ACK)。 o0x00(默认): ​​回复​​ ACK。 o0x01: ​​不回复​​ ACK。 ·​​发送命令 (主机 -> 设备):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此命令数据部分长度 (地址 + 命令字 + 回复关闭 = 3字节)3地址0xXX​​当前​​与设备通信使用的地址 (0x00-0xFF)4命令字0xB8ACK 回复设置命令5回复关闭0x00 / 0x01​​0 = 回复ACK (默认)​​​​1 = 不回复ACK​​6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​回复关闭​​ 的累加和 (SUM(0x04, 地址, 0xB8, 回复关闭))7结束码0x5A固定结束符 · ·​​接收响应 (设备 -> 主机):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此响应数据部分长度 (地址 + 命令字 + 回复关闭 = 3字节)3地址0xXX设备地址4命令字0xBA / 0xBB​​0xBA = 设置成功​​​​0xBB = 设置失败​​5回复关闭0x00 / 0x01​​设备当前的ACK回复状态​​ (0=回复, 1=不回复)6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​回复关闭​​ 的累加和 (SUM(0x04, 地址, 命令字, 回复关闭))7结束码0x5A固定结束符 · 6. 查询是否回复 ACK (0xB9) ​​功能:​​ 查询设备当前是否回复 ACK。 ​​重要提示:​​ 如果设备已设置为不回复 ACK (0x01),发送此查询命令后,设备​​不会回复​​任何数据(通信灯可能会闪,但串口无输出)。 ​​发送命令 (主机 -> 设备):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x03此命令数据部分长度 (地址 + 命令字 = 2字节)3地址0xXX / 0xFF​​本机地址​​ (单台查询) 或 ​​0xFF​​ (广播查询)4命令字0xB9ACK 回复查询命令5校验和0xXX从 ​​长度 (0x03)​​ 到 ​​命令字 (0xB9)​​ 的累加和 (SUM(0x03, 地址, 0xB9))6结束码0x5A固定结束符 · ​​接收响应 (设备 -> 主机):​​ (仅当设备设置为回复 ACK 时才会收到)  字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此响应数据部分长度 (地址 + 命令字 + 回复关闭 = 3字节)3地址0xXX设备地址4命令字0xBA / 0xBB​​0xBA = 查询成功​​​​0xBB = 查询失败​​ (不常见)5回复关闭0x00 / 0x01​​设备当前的ACK回复状态​​ (0=回复, 1=不回复)6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​回复关闭​​ 的累加和 (SUM(0x04, 地址, 命令字, 回复关闭))7结束码0x5A固定结束符 · 7. 设置断电输出状态记忆功能 (0xBC) ​​功能:​​ 控制设备断电后是否记忆并恢复断电前的输出状态。 o0x00(默认): ​​不记忆​​。下次上电输出为默认状态。 o0x01: ​​记忆​​。下次上电恢复断电前的输出状态。 ​​说明:​​ 开启记忆功能 (0x01) 后,设备会在​​下一次收到有效的输出控制命令并执行后​​,将​​当时的输出状态​​保存下来。断电后,下次上电即恢复该状态。 ​​发送命令 (主机 -> 设备):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此命令数据部分长度 (地址 + 命令字 + 记忆功能 = 3字节)3地址0xXX​​当前​​与设备通信使用的地址 (0x00-0xFF)4命令字0xBC记忆功能设置命令5记忆功能0x00 / 0x01​​0 = 不记忆 (默认)​​​​1 = 记忆​​6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​记忆功能​​ 的累加和 (SUM(0x04, 地址, 0xBC, 记忆功能))7结束码0x5A固定结束符 · ​​接收响应 (设备 -> 主机):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此响应数据部分长度 (地址 + 命令字 + 记忆功能 = 3字节)3地址0xXX设备地址4命令字0xBE / 0xBF​​0xBE = 设置成功​​​​0xBF = 设置失败​​5记忆功能0x00 / 0x01​​设备当前的记忆功能状态​​ (0=不记忆, 1=记忆)6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​记忆功能​​ 的累加和 (SUM(0x04, 地址, 命令字, 记忆功能))7结束码0x5A固定结束符 · 8. 查询断电输出状态记忆功能 (0xBD) ​​功能:​​ 查询设备当前的断电输出状态记忆功能状态。 ​​发送命令 (主机 -> 设备):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x03此命令数据部分长度 (地址 + 命令字 = 2字节)3地址0xXX / 0xFF​​本机地址​​ (单台查询) 或 ​​0xFF​​ (广播查询)4命令字0xBD记忆功能查询命令5校验和0xXX从 ​​长度 (0x03)​​ 到 ​​命令字 (0xBD)​​ 的累加和 (SUM(0x03, 地址, 0xBD))6结束码0x5A固定结束符 · ​​接收响应 (设备 -> 主机):​​ 字节位置字段值 (十六进制)说明1起始码0xA5固定起始符2长度0x04此响应数据部分长度 (地址 + 命令字 + 记忆功能 = 3字节)3地址0xXX设备地址4命令字0xBE / 0xBF​​0xBE = 查询成功​​​​0xBF = 查询失败​​ (不常见)5记忆功能0x00 / 0x01​​设备当前的记忆功能状态​​ (0=不记忆, 1=记忆)6校验和0xXX从 ​​长度 (0x04)​​ 到 ​​记忆功能​​ 的累加和 (SUM(0x04, 地址, 命令字, 记忆功能))7结束码0x5A固定结束符 · ​​总结关键点:​​ ​​起始/结束码:​​ 所有命令都以 0xA5开始,以 0x5A结束。 ​​长度:​​ 指从 ​​长度字节之后​​ 到 ​​校验和字节之前​​ 的数据字节数。 ​​校验和:​​ 计算范围是从 ​​长度字节​​ 开始,到 ​​校验和字节之前​​ 的所有字节。务必正确计算。 ​​地址:​​ 设置/查询特定设备时使用其 ​​当前地址​​。 广播地址 0xFF可用于查询命令(地址、波特率、ACK状态、记忆功能),所有设备都会响应(注意冲突)。 ​​拨码开关:​​ 存在时,地址设置命令无效且危险(需断电操作)。 ​​ACK 回复:​​ 如果设备设置为不回复 ACK (0x01),发送查询 ACK 状态命令 (0xB9) 将​​不会收到任何响应​​。 ​​记忆功能:​​ 开启后,需发送​​一次有效的输出控制命令​​,设备才会保存​​当时的输出状态​​用于断电恢复。 WE-10x系列 LED控制器通信协议完整文档 1. 概述 WE-10x系列LED控制器主要用于对低压RGB灯具、单双色灯具的颜色和亮度进行控制。支持标准的RS485通信接口,数据交换采用16进制协议。在具体的命令格式中,各部分以字节为单位。可以通过软件配置其它的波特率。配置后会按最新波特率应答命令。 出厂默认参数 ​​通信波特率​​:9600bps ​​数据位​​:8位 ​​停止位​​:1位 ​​校验位​​:无 ​​设备地址​​:0x00-0xFE(广播地址0xFF) 2. 指令格式说明 基本指令格式 [起始码] [长度] [地址] [命令字] [有效数据] [校验和] [结束码] 各字段说明 字段说明值备注起始码数据帧开始标志0xA5固定值长度起始码、长度、结束码除外的所有通信内容的字节之和0xXX从"地址"到"校验和"的字节长度和地址控制器地址0x00-0xFE广播地址0xFF不应答命令字命令的功能码0xA0-0xA1详见各指令协议有效数据通信中的有效数据-各指令的数据内容定义详见各指令协议校验和长度、地址、命令字、有效数据的算术累加和0xXX溢出部分忽略,取低8位;可使用0xEE替换(不校验)结束码数据帧结束标志0x5A固定值 3. 具体指令说明 3.1 设置RGB(RGBW)值 ​​功能​​:依据三基色原理设置RGB的值,W值为可选的亮度值。 发送指令格式 A5 [长度] [地址] A0 [R值] [G值] [B值] [W值] [校验和] 5A ​​长度说明​​: RGB类型控制器:0x06(6字节) RGBW类型控制器:0x07(7字节) ​​参数范围​​: R值:0x00-0xFF(红色输出值) G值:0x00-0xFF(绿色输出值) B值:0x00-0xFF(蓝色输出值) W值:0x00-0xFF(白色输出值,仅RGBW类型有效) 接收指令格式 A5 [长度] [地址] A2 [R值] [G值] [B值] [W值] [校验和] 5A ​​长度说明​​: RGB类型控制器:0x06(6字节) RGBW类型控制器:0x07(7字节) 示例 ​​RGBW类型控制器,红灯和白灯亮​​: 发送:A5 07 FF A0 FF 00 00 FF EE 5A 接收:A5 06 00 A2 FF 00 00 A7 5A 3.2 查询RGB(RGBW)值 ​​功能​​:查询控制器当前的RGB(W)输出值。 发送指令格式 A5 03 [地址] A0 [校验和] 5A 接收指令格式 A5 [长度] [地址] A2 [R值] [G值] [B值] [W值] [校验和] 5A 示例 发送:A5 03 FF A0 EE 5A 接收:A5 06 00 A2 FF 00 00 A7 5A 3.3 控制器场景功能设置 ​​功能​​:设置各种场景效果,包括呼吸、暴闪、调光、单步调光、开关等。 发送指令格式 A5 [长度] [地址] A1 [场景码] [功能码] [场景内容] [校验和] 5A ​​参数说明​​: 场景码:0x01(呼吸灯)、0x02(暴闪)、0x03(调光)、0x04(单步调光)、0x05(开关) 功能码:详见相应的场景命令表 场景内容:详见相应的场景命令表 接收指令格式 同3.1的接收命令格式。 3.3.1 呼吸灯场景内容表 ​​功能码​​:0x01 ​​场景内容格式​​: [颜色码] [速度] [亮度] ​​颜色码说明​​: 0x01:红灯呼吸 0x02:绿灯呼吸 0x03:蓝灯呼吸 0x04:白灯呼吸(RGB型时是RGB合成白色呼吸,RGBW型时是W输出呼吸) 0x05:RGB呼吸 0x06:黄灯呼吸 0x07:紫灯呼吸 示例 ​​红灯呼吸​​:A5 08 FF A1 01 01 01 00 FF EE 5A ​​绿灯呼吸​​:A5 08 FF A1 01 02 01 00 FF EE 5A ​​蓝灯呼吸​​:A5 08 FF A1 01 03 01 00 FF EE 5A ​​白灯呼吸​​:A5 08 FF A1 01 04 01 00 FF EE 5A ​​RGB呼吸​​:A5 08 FF A1 01 05 01 00 FF EE 5A ​​黄灯呼吸​​:A5 08 FF A1 01 06 01 00 FF EE 5A ​​紫灯呼吸​​:A5 08 FF A1 01 07 01 00 FF EE 5A 3.3.2 暴闪场景内容表 ​​功能码​​:0x02 ​​场景内容格式​​: [颜色码] [速度] [亮度] [其他参数] 示例 ​​红灯爆闪​​:A5 08 FF A1 02 01 01 02 FF EE 5A ​​绿灯爆闪​​:A5 08 FF A1 02 02 01 02 FF EE 5A ​​蓝灯爆闪​​:A5 08 FF A1 02 03 01 02 FF EE 5A ​​白灯爆闪​​:A5 08 FF A1 02 04 01 02 FF EE 5A ​​7色爆闪​​:A5 0B FF A1 02 06 01 02 FF FF FF FF EE 5A ​​黄灯爆闪​​:A5 0B FF A1 02 07 01 02 FF FF FF EE 5A ​​紫灯爆闪​​:A5 0B FF A1 02 08 01 02 FF FF FF FF EE 5A 3.3.3 调光场景内容表 ​​功能码​​:0x03 ​​场景内容格式​​: [颜色码] [目标亮度] [速度] 示例 ​​红灯调光​​:A5 07 FF A1 03 01 FF 01 EE 5A ​​绿灯调光​​:A5 07 FF A1 03 02 FF 01 EE 5A ​​蓝灯调光​​:A5 07 FF A1 03 03 FF 01 EE 5A ​​白灯调光​​:A5 07 FF A1 03 04 FF 01 EE 5A(只对RGBW输出型号有效) ​​同步调光(全亮)​​:A5 0A FF A1 03 05 FF FF FF FF 01 EE 5A ​​同步调光(全关)​​:A5 0A FF A1 03 05 00 00 00 00 01 EE 5A 3.3.4 单步调光场景内容表 ​​功能码​​:0x04 ​​场景内容格式​​: [操作码] ​​操作码说明​​: 0x01:红灯亮度加1 0x81:红灯亮度减1 0x02:绿灯亮度加1 0x82:绿灯亮度减1 0x03:蓝灯亮度加1 0x83:蓝灯亮度减1 0x04:白灯亮度加1(RGBW有效) 0x84:白灯亮度减1(RGBW有效) 0x05:RGBW亮度加1(RGBW有效) 0x85:RGBW亮度减1(RGBW有效) 示例 ​​红灯亮度加1​​:A5 05 FF A1 04 01 EE 5A ​​红灯亮度减1​​:A5 05 FF A1 04 81 EE 5A ​​绿灯亮度加1​​:A5 05 FF A1 04 02 EE 5A ​​绿灯亮度减1​​:A5 05 FF A1 04 82 EE 5A ​​蓝灯亮度加1​​:A5 05 FF A1 04 03 EE 5A ​​蓝灯亮度减1​​:A5 05 FF A1 04 83 EE 5A ​​白灯亮度加1​​:A5 05 FF A1 04 04 EE 5A ​​白灯亮度减1​​:A5 05 FF A1 04 84 EE 5A ​​RGBW亮度加1​​:A5 05 FF A1 04 05 EE 5A ​​RGBW亮度减1​​:A5 05 FF A1 04 85 EE 5A 3.3.5 开关场景内容表 ​​功能码​​:0x05 ​​场景内容格式​​: [颜色码] [延时] [操作类型] [状态值] ​​操作类型说明​​: 0x01:单通道控制 0x05:RGBW同时控制 ​​状态值说明​​: 0x01:开 0x00:关 0x02:开关切换(发送一次为开,下一次为关,循环) 示例 ​​红灯开​​:A5 08 FF A1 05 01 00 01 01 EE 5A ​​红灯关​​:A5 08 FF A1 05 01 00 01 00 EE 5A ​​红灯开关切换​​:A5 08 FF A1 05 01 00 01 02 EE 5A ​​白灯开​​:A5 08 FF A1 05 04 00 01 01 EE 5A ​​白灯关​​:A5 08 FF A1 05 04 00 01 00 EE 5A ​​白灯开关切换​​:A5 08 FF A1 05 04 00 01 02 EE 5A ​​RGBW开​​:A5 0B FF A1 05 05 00 01 01 01 01 01 EE 5A ​​RGBW关​​:A5 0B FF A1 05 05 00 01 00 00 00 00 EE 5A ​​RGBW开关切换​​:A5 0B FF A1 05 05 00 01 02 02 02 02 EE 5A 4. 注意事项 广播地址0xFF用于向所有设备发送命令,但设备不会响应广播命令 校验和计算:从"长度"字节开始到"校验和"前一个字节的累加和,取低8位 使用0xEE作为校验和可以跳过校验计算 RGB类型控制器忽略W值参数 场景功能中的白色效果在RGB型和RGBW型控制器上的实现方式不同 LED控制器 MODBUS协议完整文档 1. 概述 WE-10x系列LED控制器主要用于对低压RGB灯具、单双色灯具的颜色和亮度进行控制,支持标准的RS485通信接口,数据交换采用标准的MODBUS RTU协议。有关详细的指令生成与解析方式,可根据本文中的寄存器表结合参考《MODBUS协议中文版》即可。 1.1 寄存器地址表 ​​注:​​ 保持寄存器1相应的寻址地址是0x0000,保持寄存器2相应的寻址地址是0x0001,依次类推。 寄存器名称寻址地址功能说明值范围访问权限备注输出值R0x0000红色通道输出值0x0000-0x00FF读写RGB值范围0-255输出值G0x0001绿色通道输出值0x0000-0x00FF读写RGB值范围0-255输出值B0x0002蓝色通道输出值0x0000-0x00FF读写RGB值范围0-255输出值W0x0003白色通道输出值0x0000-0x00FF读写W值范围0-255设备地址0x0004设备通信地址0x0001-0x00FF读写1-255波特率0x0005通信波特率0-5读写见波特率说明禁止应答0x0006是否禁止应答0-1读写0:允许,1:禁止断电记忆0x0007断电状态记忆0-1读写0:不记忆,1:记忆场景功能0x0008场景功能设置-读写见场景功能说明 ​​波特率设置值说明:​​ 0: 4800bps 1: 9600bps(默认值) 2: 19200bps 3: 38400bps 4: 57600bps 5: 115200bps 2. 指令列表 2.1 控制器参数设置 ​​功能码:​​ 0x06(写单个寄存器) 控制器参数包括设备地址、波特率、禁止应答、断电记忆等参数。当不清楚设备地址时,可通过广播地址进行参数设置。 ​​指令格式:​​ [设备地址] [功能码0x06] [寄存器地址高8位] [寄存器地址低8位] [数据高8位] [数据低8位] [CRC校验低8位] [CRC校验高8位] 示例:控制器原地址为0x01,更改地址为0x03 ​​发送命令:​​ 01 06 00 04 00 03 88 0A ​​接收响应:​​ 01 06 00 04 00 03 88 0A ​​说明:​​ 地址设置时,返回命令的从机地址同接收的命令一致,都是0x01 新从机地址将在下一次通信时有效,设置完成后请使用新从机地址0x03 使用广播地址0x00可以进行设备地址初始化设置 2.2 控制器参数查询 ​​功能码:​​ 0x03(读保持寄存器) ​​注意:​​ 当设置了"禁止应答"功能有效后,查询无返回。 ​​指令格式:​​ [设备地址] [功能码0x03] [起始地址高8位] [起始地址低8位] [寄存器数量高8位] [寄存器数量低8位] [CRC校验低8位] [CRC校验高8位] 示例:查询控制器地址 ​​发送命令:​​ 01 03 00 04 00 01 C5 CB ​​接收响应:​​ 01 03 02 00 01 79 84 ​​响应说明:​​ 01:设备地址 03:功能码 02:返回数据字节数 00 01:查询到的参数值(此处为设备地址0x0001) 79 84:CRC校验 2.3 控制器输出值设置 ​​功能码:​​ 0x10(写多个寄存器) 设置4个输出回路的值,当负载是RGB灯具时可以显示对应的颜色,当负载是单色灯具时,将对应每个输出的亮度值。本命令为RGBW格式设置,当控制器为"无W输出型号"时,W值将被控制器忽略。 ​​指令格式:​​ [设备地址] [功能码0x10] [起始地址高8位] [起始地址低8位] [寄存器数量高8位] [寄存器数量低8位] [数据字节数] [数据1高8位] [数据1低8位] ... [CRC校验低8位] [CRC校验高8位] 示例1:设置R回路输出为0xFF ​​发送命令:​​ 01 10 00 00 00 04 08 00 FF 00 00 00 00 00 00 B9 75 ​​接收响应:​​ 01 10 00 00 00 04 C1 CA 示例2:设置G回路输出为0xFF ​​发送命令:​​ 01 10 00 00 00 04 08 00 00 00 FF 00 00 00 00 A2 6E ​​接收响应:​​ 01 10 00 00 00 04 C1 CA 示例3:设置B回路输出为0xFF ​​发送命令:​​ 01 10 00 00 00 04 08 00 00 00 00 00 FF 00 00 86 4A ​​接收响应:​​ 01 10 00 00 00 04 C极 CA 示例4:设置W回路输出为0xFF ​​发送命令:​​ 01 10 00 00 00 04 08 00 00 00 00 00 00 00 FF F6 3A ​​接收响应:​​ 01 10 00 极 00 00 04 C1 CA 示例5:设置全部回路输出为0xFF ​​发送命令:​​ 01 10 00 00 00 04 08 00 FF 00 FF 00 FF 00 FF DD 11 ​​接收响应:​​ 01 10 00 00 00 04 C1 CA 示例6:设置全部回路输出为0x00 ​​发送命令:​​ 01 10 00 00 00 04 08 00 00 00 00 00 00 00 00 B6 7A ​​接收响应:​​ 01 10 00 00 00 04 C1 CA 2.4 控制器输出值查询 ​​功能码:​​ 0x03(读保持寄存器) 示例:查询控制器地址为0x01的输出值 ​​发送命令:​​ 01 03 00 00 00 04 44 09 ​​接收响应:​​ 01 03 08 00 FF 00 FF 00 FF 00 00 BE FC ​​响应说明:​​ 按照RGBW的顺序返回 上述示例返回值:R=0x00FF, G=0x00FF, B=0x00FF, W=0x0000 每个通道值占用2个字节(16位),但有效值为低8位 2.5 控制器场景功能设置 ​​功能码:​​ 0x10(写多个寄存器) 包括呼吸、暴闪、调光、独立开关等功能。 ​​注:​​ 当是"RGB输出的型号"时,只要是白色功能都是合成的,比如灯带是RGB合成白色呼吸;当是"RGBW型号"时,灯带直接从W输出呼吸灯。 呼吸灯功能写入内容表 功能写入值说明红灯呼吸0x0001红色呼吸效果绿灯呼吸0x0002绿色呼吸效果蓝灯呼吸0x0003蓝色呼吸效果白灯呼吸0x0004白色呼吸效果紫灯呼吸0x0005紫色呼吸效果黄灯呼吸0x极6黄色呼吸效果青灯呼吸0x0007青色呼吸效果七彩呼吸0x0008七彩呼吸效果 爆闪功能写入内容表 功能写入值说明红灯爆闪0x0001红色爆闪效果绿灯爆闪0x0002绿色爆闪效果蓝灯爆闪0x0003蓝色爆闪效果白灯爆闪0x0004白色爆闪效果7色爆闪0x00057色循环爆闪 调光功能写入内容表 参数地址偏移说明功能选择0x0000调光功能标识(0x0003)R亮度值0x0001红色亮度(0x00-0xFF)G亮度值0x0002绿色亮度(0x00-0xFF)B亮度值0x0003蓝色亮度(0x00-0xFF)W亮度值0x0004白色亮度(0x00-0xFF)调光速度0x0005调光速度值 开关功能写入内容表 功能写入值说明红灯开关0x0001红色开关切换绿灯开关0x0002绿色开关切换蓝灯开关0x0003蓝色开关切换白灯开关0x0004白色开关切换全部开关0x0005全部通道开关 示例1:设置控制器为紫灯呼吸 ​​发送命令:​​ 01 10 00 08 00 05 0A 00 01 00 00 00 00 00 00 00 00 00 00 81 C8 ​​接收响应:​​ 01 10 00 08 00 05 81 C8 示例2:7色爆闪 ​​发送命令:​​ 01 10 00 08 00 08 10 00 02 01 00 02 00 FF FF FF 00 5B 4C ​​接收响应:​​ 01 10 00 08 00 08 40 0D 示例3:红灯亮度调到0x0F、绿灯亮度调到0xFF、蓝灯亮度调到0x80、白灯亮度调到0xA0 ​​发送命令:​​ 01 10 00 08 00 07 0E 00 03 极 05 00 0F 00 FF 00 80 00 A0 00 01 1D C1 ​​接收响应:​​ 01 10 00 08 00 07 00 09 示例4:控制器红灯开关转换(发送本命令一次为开,下一次为关,循环) ​​发送命令:​​ 01 10 00 08 00 05 0A 00 05 00 01 00 00 00 00 00 02 A6 61 ​​接收响应:​​ 01 10 00 08 00 05 81 C8 示例5:RGBW全部延时1秒开关转换 ​​发送命令:​​ 01 10 00 08 00 08 10 00 05 00 05 00 00 00 01 00 02 00 02 00 02 00 02 46 13 ​​接收响应:​​ 01 10 00 08 00 08 40 0D 3. 通信参数默认值 ​​设备地址:​​ 0x01(默认) ​​波特率:​​ 9600bps(8位数据位,1位停止位,无校验) ​​禁止应答:​​ 0(允许应答) ​​断电记忆:​​ 0(不记忆输出状态) 4. 注意事项 使用广播地址0x00时,所有设备都会响应,可能导致通信冲突 设置"禁止应答"功能后,设备将不响应任何查询命令 RGBW输出值范围为0x0000-0x00FF,实际有效值为低8位 场景功能设置时,请根据控制器型号(RGB或RGBW)选择合适的功能 --- ### 612. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1. 产品简介 本控制器采用标准 Modbus-RTU 协议(RS-485),内置 24 种常用灯光模式,支持单色、渐变、流水、呼吸、闪烁、多帧播放等效果,可通过串口或外部 IO 实时控制,也可脱机运行。用户无需编写代码,仅需修改寄存器参数即可实现所需动画。控制器支持 5 V~24 V 宽电压供电,最大可控 1200 颗灯珠(以 5 V 单点计),兼容市面主流单线归零码 IC。 2. 技术参数 项目规格工作电压5 V~24 V ±5 %整机功耗< 1 W通信接口RS-485(A/B)默认波特率9600 bps(4800~460800 可选)数据格式8N1(可设奇偶校验)可控点数≤ 1200 点(5 V 单点)灯带端口1 路数据输出(DO)开关量输入6 路(IN0~IN5,低电平有效)频率输入1 路(FI0,1 Hz~10 kHz)工作温度–25 ℃~+75 ℃存储温度–40 ℃~+85 ℃相对湿度< 75 % RH外形尺寸68.5 mm × 66.4 mm × 20 mm 3. 接口定义 3.1 电源/信号端子(右侧) 端子说明VCC电源正(5 V~24 V)GND电源地(与灯带共地)DO数据输出(接灯带 DIN)NC空脚IN0~IN5开关量输入(对地闭合触发)FI0频率信号输入(对地脉冲) 3.2 通信端子(左侧) 端子说明ARS-485 ABRS-485 BGND通信地(可选) 4. 支持灯带类型 通过寄存器 2000 选择 IC 型号,已内置以下协议:WS2812B / WS2811 / WS2813 / WS2815 / WS2818 / SK6812 / UCS1903 / TM1903 / FW1903 / FW1935 / TM1934 / SM16703 / MT1815 及自定义脉宽模式。(若使用 12 V 或 24 V 灯带,请确认一颗 IC 所带灯珠数,并在“灯带点数”参数中按 IC 数量填写。) 5. 快速接线图 交流市电 → 开关电源(5 V/12 V/24 V) → 控制器 VCC/GND 控制器 DO → 灯带 DIN 控制器 GND → 灯带 GND(必须共地) RS-485 转换器 A/B → 控制器 A/B USB-485 转换器 → PC 注意 灯带有方向,DIN 必须接控制器 DO。 长距离供电请每 2 m 并一组电源线,避免压降。 通信线采用双绞屏蔽线,屏蔽层单端接地。 控制器与灯带若使用独立电源,需把两地相连。 6. 状态指示灯 指示灯含义处理绿灯 0.5 Hz 闪烁正常运行—绿灯呼吸暂停中—绿灯 0.25 Hz 闪烁停止中—红灯 1 Hz 闪烁参数错误或 Flash 故障断电重启,重新配置黄灯连闪 3 次Modbus 参数超限检查寄存器范围黄灯连闪 6 次正在恢复出厂2 min 内勿断电 7. 寄存器总览(Modbus 地址表) 地址均为十进制(PLC 基址=1),主机下发时请减 1。 功能区地址范围说明设备参数1000–1014地址、波特率、上电行为等灯带参数2000–2009IC 类型、RGB 顺序、脉宽线圈触发1000–1014启动/暂停/停止/灭灯等离散输入1000–1015运行状态、IO 电平输入寄存器1000–1019版本、当前效果、错误码模式配置2100–214924 种模板参数节目存储2200–2229128 个节目槽列表配置4000–40596 类列表(循环/并行/触发)BUF 数据5001–98001200 点 ×4 字节 RGBW硬件接口3000–3269IO 功能映射Flash 操作4900–49152 M 字节图片存储亮度控制2400–2410实时亮度叠加 8. 常用模式速查 模式号效果关键参数举例1004整体单色2125~2128 设置 RGBW1014双色渐变循环2125/2129 颜色 1/2,2133 步数1015三色渐变循环2125~2136 三段颜色1017呼吸灯2125 颜色,2130/2131 步数1013BUF 流水2129 起始,2130 长度1022BUF 多帧播放2125 起始,2126 帧数1023Flash 多帧播放2125~2127 图片地址 9. 典型配置流程(以“整体红渐变到蓝”为例) 上电,连接 PC,打开调试软件,选择串口,点击“连接”。 【灯带参数】选择 IC 类型、RGB 顺序。 【模式信息】地址 2100 写 1014(双色渐变)。 双击 2125/2129 调出取色器,分别设红 (255,0,0) 和蓝 (0,0,255)。 地址 2133 写 100(渐变步数)。 【节目信息】地址 2200 写 2000,确认 2202=1 后,地址 2228 写 1 保存为节目 2000。 断开串口,重新上电,灯带即自动运行该效果。 10. 外部 IO 控制(示例) 目标:按一次按键,灯带在“红→蓝渐变”与“绿色呼吸”间切换。步骤: 【硬件接口】开启总开关 3000=1,3010=1。 IN0 映射到【节目】区,地址 3020=3,3022=2200,3023=3(下降沿计数)。 3025/3026 设 0/1,3027=1,3004=1 保存。 存储两个节目:2000=红蓝渐变,2001=绿色呼吸。 把 2000、2001 加入歌单列表 3060,并设 4007=2。 每次按下按键,列表顺序切换,实现两种效果轮换。 11. 亮度实时调节 地址 2400=1 开启亮度控制。 地址 2406=50 当前亮度 50 %(0 灭,100 原亮度,>100 增亮)。 可通过 2409/2410 触发“+/-”按钮,或以 IO/频率映射方式实时改变。 注意:亮度调节会降低帧率,建议最终效果确定后回到模式参数里固化亮度。 12. Flash 图片上传(仅特殊需求) 停止灯效,4912=1 开启 Flash 操作。 4910/4911 设起始页(必须是 4096 的倍数)。 通过“加载图片到 BUF”把 BMP 转为 RGBW,填满 4096 字节后 4914=1 写入。 重复直至所有图片写完,4912=2 关闭。 模式 1023 调用时,填好总帧数、起始地址、运行方向即可。 13. 故障排除 现象可能原因解决办法上电无反应电源反接/电压不符检查极性、电压通信失败地址/波特率错误、AB 反接断电重上电查看串口提示灯带乱闪共地不良、线过长缩短信号线、两端加 100 Ω 电阻效果不保存未执行存储触发2228/4057/4914 写 1重叠区花屏并行列表区域重叠各节目起始位置+长度错开 14. 安全与维护 通电前确认电压匹配,反接将烧毁设备。 带电勿拔插螺丝端子,避免火花损坏触点。 每月检查端子松紧,清除灰尘。 长期不用请断电存放,避免潮湿。 15. 装箱清单 控制器 ×1 可插拔端子 ×3 说明书 ×1 16. 责任声明 因接线错误、超压、擅自改装导致的损坏不在保修范围;用户自行上传的图片、数据须确保版权合法。 --- ### 613. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 第一章 产品概述 本设备是一款工业级通讯协议转换器,实现DL/T645-1997/2007协议电表与Modbus-TCP/RTU主站系统之间的数据互通。设备通过RS485接口采集电表数据,缓存处理后,支持通过以太网(Modbus-TCP)或串口(Modbus-RTU)对外提供标准Modbus寄存器访问接口。 第二章 功能特点 支持DL/T645-1997与DL/T645-2007双协议自动识别; 最多支持20只电表并发采集; 支持Modbus-TCP(网口)与Modbus-RTU(RS485)双通道输出; 内置数据缓存机制,支持断点续传与离线缓存; 支持32位IEEE-754浮点数格式输出; 支持分表读取与集中读取两种寄存器映射模式; 支持通讯保护机制,异常自动清零数据; 支持透传模式,可用于现场调试; 工业级设计,金属外壳,宽温运行(-40℃~+85℃); 支持导轨安装与螺丝固定两种方式; 全隔离设计,电源隔离、信号隔离、防雷防静电。 第三章 技术参数 项目参数说明工作电压DC 12–30V(反接保护)工作电流≥80mA(@24V)串口协议DL/T645-1997、DL/T645-2007、Modbus-RTU网络协议Modbus-TCP(Server模式)串口数量2路隔离RS485(1路接主站,1路接电表)网口规格10/100M自适应,带变压器隔离默认IP地址192.168.2.88默认Modbus端口502串口波特率1200–19200bps(默认9600)数据位8位校验位无/奇/偶可选停止位1或2位可选最大通讯距离RS485:1200米;以太网:100米(可经交换机扩展)防雷等级600W浪涌保护,±15kV ESD安装方式标准35mm导轨或螺丝固定尺寸112.5 × 88.5 × 26 mm净重240g工作温度-40℃ ~ +85℃相对湿度5%–95%无凝露 第四章 接口定义 4.1 电源接口 端子标识定义说明1V+电源正极DC 12–30V2V-电源负极GND3PE地线接大地 4.2 RS485接口 端子标识定义说明1A1485+主站通讯口2B1485-主站通讯口3G1信号地主站参考地4A2485+电表通讯口5B2485-电表通讯口6G2信号地电表参考地 第五章 指示灯说明 标识颜色功能说明PWR红常亮:设备已上电DLT645绿闪烁:正在读取电表数据ERR红闪烁:读取电表失败Modbus绿闪烁:Modbus主站正在访问设备 第六章 拨码开关功能 拨码位功能说明SETON:进入配置模式(绿灯亮)D_IPON:强制IP为192.168.2.88(需与SET同时ON) 第七章 配置方式 7.1 串口配置(RS485) 使用USB转RS485转换器连接主站接口; 拨码SET=ON,绿灯亮; 打开配置软件,选择串口号; 设置波特率、电表地址、协议版本、采集项; 点击“应用配置”写入设备; 拨码SET=OFF,重启生效。 7.2 网口配置(TCP) 电脑IP设为192.168.2.x; 网线直连设备; 拨码SET=ON + D_IP=ON; 配置软件选择“网口连接”; 输入IP与端口(默认192.168.2.88:502); 连接成功后配置参数并写入; 拨码复位,重启生效。 第八章 采集项配置(DL/T645) 支持以下数据项(部分列举): 正向有功总电量 反向有功总电量 各相电压、电流、功率、功率因数 有功/无功/视在功率(瞬时/总) 电网频率 各象限无功电能 分相/总有功/无功/视在电能 支持自定义勾选采集项,最多可配置20只电表,每只电表最多110个寄存器。 第九章 读取模式说明 模式说明分表读取每只电表占用固定寄存器地址段,便于单独访问集中读取所有电表数据按采集项顺序合并,寄存器地址连续,减少主站访问次数 第十章 通讯保护机制 可设置“错误次数上限”; 若某电表连续读取失败超过设定次数,该电表数据自动清零; 防止主站读取陈旧或错误数据; 可启用/禁用,默认禁用。 第十一章 数据类型与浮点顺序 支持以下四种32位浮点数格式: ABCD(标准顺序) BADC CDAB DCBA 适用于不同主站系统对浮点字节序的兼容性要求。 第十二章 透传模式 仅对RS485接口进行波特率转换; 不解析协议内容; 可用于现场调试电表原始通讯; 上电后拨码复位即可退出。 第十三章 配置导入/导出 支持将当前配置导出为CSV文件; 支持从CSV文件导入配置; 可用于批量部署、快速恢复、项目备份; 网口模式下不支持导入功能。 第十四章 RS485布线规范 采用手拉手拓扑,禁止星型; 使用屏蔽双绞线,屏蔽层接大地; 总线两端加120Ω终端电阻; 总线长度≤1200米,波特率越高距离越短; 通信线远离强电,平行间距≥0.5米; 所有设备共地,避免共模干扰。 第十五章 线材选型推荐 距离范围推荐线材<200米2×0.5mm²屏蔽双绞线200–500米2×0.75mm²屏蔽双绞线>500米2×1.0mm²屏蔽双绞线 第十六章 故障排除 故障现象可能原因与解决方法指示灯不亮检查电源极性、电压是否正常(12–30V)无法通讯检查RS485 A/B是否接反,波特率、地址、协议版本是否匹配红灯绿灯同时闪通讯参数设置错误,检查串口参数与电表是否一致读取数据为0电表地址错误、协议版本不匹配、通讯保护触发、线路中断Modbus无法连接检查IP地址、端口、网线连接、是否在同一网段 第十七章 固件升级 支持通过网口升级; 升级文件为.bin格式; 升级过程中严禁断电; 升级失败可强制恢复出厂; 升级工具由厂家提供,非授权人员禁止操作。 第十八章 法规与认证 符合DL/T645-1997/2007国家标准; 符合IEC 61000-6-2工业抗扰度标准; 符合RoHS 2.0环保要求; 通过CE认证、FCC Part 15测试; 符合GB/T 17626电磁兼容系列标准。 第十九章 注意事项与维护 禁止带电插拔RS485接口; 禁止将电源接入信号端子; 每12个月检查一次接线与接地; 每24个月清理设备表面灰尘; 长期不用请断电存放,避免高温高湿; 非专业人员禁止打开外壳; 维修需返厂,禁止用户自行拆解。 附录A:默认寄存器映射表(示例) 寄存器地址数据项数据类型单位40001电表1正向有功总电量FloatkWh40003电表1A相电压FloatV40005电表1A相电流FloatA…………………… --- ### 614. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 本产品是一款集成语音合成、远程控制与状态反馈功能的智能播报终端。支持文本转语音(TTS)、远程指令播报、本地触发播报、继电器控制等功能,适用于工业现场、仓储物流、安防系统、智能建筑等多种场景。 二、主要功能 支持中英文文本转语音播报 支持网络通信(TCP/IP) 支持本地开关量触发播报 支持继电器输出控制 支持音量、语速、语调调节 支持远程参数配置与状态读取 支持多种协议:私有协议、标准网络协议、MQTT(选配) 三、技术参数 项目参数说明工作电压DC 9V–26V工作温度-40℃ 至 +70℃网络接口10/100M 自适应以太网音频输出3.5mm耳机接口 / 无源喇叭(≤30W)通讯协议TCP/IP、UDP、HTTP、MQTT(选配)输入接口2路开关量输入输出接口2路继电器输出安装方式导轨安装或螺丝固定尺寸108mm × 72mm × 59mm 四、接口定义 1. 电源接口 红色:正极(+) 黑色:负极(−) 2. 通信接口 绿色:RS485 A 蓝色:RS485 B 3. 音频输出 3.5mm 耳机孔:可接有源音箱 接线端子:可接无源喇叭(≤30W) 4. 开关量输入 IN1 / IN2:触发输入 COM+ / COM−:公共端 5. 继电器输出 DO1 / DO2:继电器输出端口 支持常开/常闭切换 五、使用说明 1. 安装步骤 固定设备于安装位置 接入电源(注意极性) 接入网络或串口通信线 接入喇叭或耳机 上电,等待系统初始化完成(约6秒) 2. 网络配置 默认支持自动获取IP(DHCP) 可手动设置为静态IP(通过配置软件或指令) 支持TCP服务端/客户端模式切换 3. 语音播报方式 远程播报:通过网络发送文本内容,设备自动合成语音并播报 本地触发播报:通过开关量输入触发预设语音内容 循环播报:可设置循环内容与间隔时间 4. 继电器控制 支持远程指令控制继电器开关 支持点动输出(延时自动关闭) 支持语音播报时联动继电器输出 六、协议说明(简要) 1. 私有协议(字符串) 格式:#播报内容 示例:#欢迎光临 2. 继电器控制(十六进制) 开启继电器:CC DD A1 03 01 FF FF 关闭继电器:CC DD A1 02 01 FF FF 3. 状态读取(十六进制) 读取继电器状态:CC DD A1 01 FF FF 读取输入状态:CC DD A1 04 FF FF 七、注意事项 请勿在带电状态下插拔接口 请确保电源电压在额定范围内 避免设备长时间暴露于高温、高湿、强电磁干扰环境 请勿私自拆卸设备,避免损坏内部元件 使用无源喇叭时,请注意功率匹配,避免过载 八、常见故障与处理 故障现象可能原因处理方法无法播报网络未连接 / 内容格式错误检查网络连接 / 确认协议格式播报无声喇叭未接好 / 音量设为0检查音频接口 / 设置音量继电器不动作控制指令错误 / 电源异常检查指令格式 / 检查供电无法连接网络IP设置错误 / 网络不通检查IP配置 / 检查路由与网线 九、附录 1. 标识符说明(部分) [v5]:设置音量为5(范围:1–10) [s5]:设置语速为5 [t5]:设置语调为5 示例:[v5]您好,欢迎光临 2. 提示音调用 支持15种内置提示音 调用方式:#ring_1、#ring_2 等 注意:提示音名称前后需有空格或标点符号 --- ### 615. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介CY-SW0820A 8路20A开关模块是专为智能照明控制系统设计的核心执行单元,集成8路独立磁保持继电器,每路支持20A高负载通断控制(单路最大负载4400W),可实现对灯光、插座、电动窗帘、空调等多类设备的精准开关管理,采用35mm标准导轨式安装。 功能说明: 内置电源,无需外接电源模组 具备8个功能键,用于开关状态、设置波特率、从站地址、时间日期等功能 支持天文时钟定时,可根据日出日落时间和星期状态执行自定义场景 支持8个星期定时,可根据时分和星期状态执行自定义场景 模块内置8路20A继电器开关,单路最大4400W 具备RS485控制串口,支持Modbus RTU通讯协议,在9600波特率时最远支持1200米通讯,便于调试控制 自带1个LED数码管,设备工作状态一目了然 自带消防接口,支持无源和有源12V信号接入,实现消防联动 采用35mm导轨式安装 技术参数 项目参数产品型号CY-SW0820T产品名称8路20A时控开关模块输入电压110~230VAC±10%输入频率50/60Hz开关输出8路(单路20A)RS485控制串口2个,9600,N,8,1,支持Modbus RTU协议支持波特率1200/2400/4800/9600/19200/38400,N,8,1星期定时8组天文时钟1组(支持日出和日落定时)自定义场景8个功能按键8个显示数码管1个从机地址范围1-63工作温度-5℃~45℃工作相对湿度≤90%存储温度-20℃~60℃存储相对湿度≤93%外形尺寸114mm98mm72mm防护等级IP20产品净重558g/pcs安装方式35mm导轨式安装 1.产品接口示意图(文字描述) 左侧:供电输入 AC110~230V 中部:8组继电器输出端子 WL1-WL8(每路20A) 右侧: MODBUS1接口:A、B、G(RS485) MODBUS2接口:A、B、G(RS485) 消防接口: 无源:1-2短接 → 1-8通道全开 有源:DC12V接2-3 → 1-8通道全开 数码管及8个功能按键(ON/LEFT、OFF/RIGHT、OK等) 2.产品尺寸图(文字描述)144mm(长)×98mm(宽)×72mm(高),35mm导轨卡扣位于背面。 3.单系统示意图(文字描述)AC IN → 模块 → 8路负载(每路≤4400W)RS485总线:PC/PLC → 模块(最多63个串联,首-末≤300m) 4.多系统示意图(文字描述)多个电箱(NAL1、NAL2…)通过RS485手拉手连接,最终接入PC组态软件,最多63个模块。 二、通讯接口1.通讯格式 通讯格式(波特率,数据位,停止位,校验)备注1200,N,8,1可选2400,N,8,1可选4800,N,8,1可选9600,N,8,1出厂默认19200,N,8,1可选38400,N,8,1可选 2.从站地址 地址范围:0x01-0x3F(十进制1-63) 地址设置:通过模块面板物理按键设置(见控制面板章节) 3.协议格式说明 支持Modbus RTU协议 校验方式可选: 固定两字节0xAC 0xAC 或标准CRC16(低字节在前,高字节在后) 三、功能码说明(完整) 1.功能码03H:读保持寄存器主机→从机:01 03 00 02 00 02 65 CB 01:从站地址 03:功能码 00 02:起始寄存器地址0002H 00 02:读取寄存器数量2个 65 CB:CRC16校验 从机→主机:01 03 04 00 FE 00 41 5B F3 01:从站地址 03:功能码 04:返回字节数4 00 FE:寄存器0002H值 00 41:寄存器0003H值 5B F3:CRC16校验 2.功能码06H:写单个寄存器主机→从机:01 06 00 03 00 41 B9 FA 01:从站地址 06:功能码 00 03:寄存器地址0003H 00 41:写入值0041H(十进制65) B9 FA:CRC16校验 从机→主机:返回与主机请求完全相同 3.功能码10H:写多个寄存器主机→从机:01 10 00 01 00 02 04 00 01 00 FE E2 23 01:从站地址 10:功能码 00 01:起始寄存器地址0001H 00 02:写入寄存器数量2个 04:写入字节数4 00 01:寄存器0001H值 00 FE:寄存器0002H值 E2 23:CRC16校验 从机→主机:01 10 00 01 00 02 10 08 10 08:CRC16校验 4.功能码01H:读线圈状态(开关状态)主机→从机:01 01 00 00 00 08 3D CC 01:从站地址 01:功能码 00 00:起始线圈地址0000H 00 08:读取线圈数量8个 3D CC:CRC16校验 从机→主机:01 01 01 FF 11 C8 01:返回字节数1 FF:bit0-bit7对应线圈1-8状态(1开0关) 11 C8:CRC16校验 5.功能码05H:写单线圈(单路开关)主机→从机:01 05 00 00 FF 00 8C 3A 01:从站地址 05:功能码 00 00:线圈地址0000H(回路1) FF 00:写入“开” 8C 3A:CRC16校验 从机→主机:返回与主机请求完全相同 6.功能码0FH:写多线圈(多路开关)主机→从机:01 0F 00 00 00 08 01 0F BE 91 01:从站地址 0F:功能码 00 00:起始线圈地址0000H 00 08:写入线圈数量8个 01:写入字节数1 0F:写入值00001111B(回路1-4开,5-8关) BE 91:CRC16校验 从机→主机:01 0F 00 00 00 08 54 0D 四、寄存器地址表1.寄存器地址简化表(完整) 功能寄存器Dec寄存器Hex数据范围Hex读写功能码备注调光回路1-80-70000H-0007H高位00 低位00-64(0-100%)R/W03/06/10用10H写多路时低位=FFH不执行场景配置寄存器64-710040H-0047H高位00 低位00-01(默认FF)R/W06/108个场景,每场景8寄存器72-790048H-004FH同上同上同上场景280-870050H-0057H同上同上同上场景388-950058H-005FH同上同上同上场景496-1030060H-0067H同上同上同上场景5104-1110068H-006FH同上同上同上场景6112-1190070H-0077H同上同上同上场景7120-1270078H-007FH同上同上同上场景8上电亮度寄存器136-1430088H-008FH高位00 低位00=关 01=开 FF=断电恢复R/W03/06/10回路1-8对应时间日期设置184-19000B8H-00BEH年0000-0063(0-99) 月0001-000C(1-12) 日0001-001F(1-31) 时0000-0017(0-23) 分0000-003B(0-59) 秒0000-003B(0-59) 星期0001-0007(只读)R/W03/06/10寄存器依次B8-BE场景调用寄存器19100BFH高位00 低位01-08(场景1-8) 高位FF=关闭场景W06写即调用波特率设置19200C0H高位00 低位0000-0005对应1200-38400R/W03/06左RS48519300C1H同上同上同上右RS485出厂寄存器19400C2H高位00 低位01=恢复出厂W06写01后模块全部恢复默认版本寄存器195-19700C3H-00C5H只读,依次:年(2025=07E9H) 月日(0519=0207H) 版本(0100=0064H)R03实际以出厂为准星期定时(每定时器12寄存器)216-22700D8H-00E3H开关0000/0001 小时0000-0017 分钟0000-003B 星期0000-007F(bit0-6对应周一-日) 回路1-8状态0000/0001或00FF不执行R/W03/06/10定时器1228-23900E4H-00EFH同上同上同上定时器2240-25100F0H-00FBH同上同上同上定时器3252-26300FCH-0107H同上同上同上定时器4264-2750108H-0113H同上同上同上定时器5276-2870114H-011FH同上同上同上定时器6288-2990120H-012BH同上同上同上定时器7300-311012CH-0137H同上同上同上定时器8经纬度320-3220140H-0142H东经/西经(低位00/01) 度0-180 分0-59R/W03/06/10默认广州纬度323-3250143H-0145H北纬/南纬(低位00/01) 度0-180 分0-59同上同上默认广州日出时间326-3270146H-0147H只读,小时0000-0017 分钟0000-003BR03计算结果日落时间328-3290148H-0149H同上同上同上同上日出定时330-339014AH-0153H开关0000/0001 星期0000-007F 回路1-8状态0000/0001或00FF不执行R/W03/06/10同上日落定时340-3490154H-015DH同上同上同上同上辅助寄存器2001-206407D1H-0810H仅写,10H功能码,8寄存器/组,目前仅用开关位,其余预留;若渐变时间或亮度为FFH则跳过该路W10详见辅助表 2.回路控制寄存器地址(完整) 功能回路1回路2回路3回路4回路5回路6回路7回路8寄存器Hex0000H0001H0002H0003H0004H0005H0006H0007H 3.场景设置寄存器地址(完整) 场景回路1回路2回路3回路4回路5回路6回路7回路810040H0041H0042H0043H0044H0045H0046H0047H20048H0049H004AH004BH004CH004DH004EH004FH30050H0051H0052H0053H0054H0055H0056H0057H40058H0059H005AH005BH005CH005DH005EH005FH50060H0061H0062H0063H0064H0065H0066H0067H60068H0069H006AH006BH006CH006DH006EH006FH70070H0071H0072H0073H0074H0075H0076H0077H80078H0079H007AH007BH007CH007DH007EH007FH 4.上电状态寄存器地址(完整) 功能回路1回路2回路3回路4回路5回路6回路7回路8寄存器Hex0088H0089H008AH008BH008CH008DH008EH008FH 5.时间日期寄存器地址(完整) 功能年月日时分秒星期寄存器Hex00B8H00B9H00BAH00BBH00BCH00BDH00BEH 6.星期定时寄存器地址(完整,每定时器12寄存器) 定时器开关小时分钟星期回路1-8状态100D8H00D9H00DAH00DBH00DCH-00E3H200E4H00E5H00E6H00E7H00E8H-00EFH300F0H00F1H00F2H00F3H00F4H-00FBH400FCH00FDH00FEH00FFH0100H-0107H50108H0109H010AH010BH010CH-0113H60114H0115H0116H0117H0118H-011FH70120H0121H0122H0123H0124H-012BH8012CH012DH012EH012FH0130H-0137H 7.日出日落设置寄存器地址(完整) 功能开关星期回路1-8状态日出定时014AH014BH014CH-0153H日落定时0154H0155H0156H-015DH 8.辅助寄存器地址(完整,8路×8寄存器) 回路寄存器1寄存器2寄存器3寄存器4寄存器5寄存器6寄存器7寄存器8107D1H07D2H07D3H07D4H07D5H07D6H07D7H07D8H207D9H07DAH07DBH07DCH07DDH07DEH07DFH07E0H307E1H07E2H07E3H07E4H07E5H07E6H07E7H07E8H407E9H07EAH07EBH07ECH07EDH07EEH07EFH07F0H507F1H07F2H07F3H07F4H07F5H07F6H07F7H07F8H607F9H07FAH07FBH07FCH07FDH07FEH07FFH0800H70801H0802H0803H0804H0805H0806H0807H0808H80809H080AH080BH080CH080DH080EH080FH0810H 五、协议例程1.写单路开关指令寄存器(功能码05H) 序号指令(CRC16可固定AC AC)反馈注释101 05 00 00 FF 00 8C 3A01 05 00 00 FF 00 8C 3A回路1开启201 05 00 01 FF 00 DD FA01 05 00 01 FF 00 DD FA回路2开启301 05 00 02 FF 00 2D FA01 05 00 02 FF 00 2D FA回路3开启401 05 00 03 FF 00 7C 3A01 05 00 03 FF 00 7C 3A回路4开启501 05 00 04 FF 00 CD FB01 05 00 04 FF 00 CD FB回路5开启601 05 00 05 FF 00 9C 3B01 05 00 05 FF 00 9C 3B回路6开启701 05 00 06 FF 00 6C 3B01 05 00 06 FF 00 6C 3B回路7开启801 05 00 07 FF 00 3D FB01 05 00 07 FF 00 3D FB回路8开启901 05 00 00 00 00 CD CA01 05 00 00 00 00 CD CA回路1关闭1001 05 00 01 00 00 9C 0A01 05 00 01 00 00 9C 0A回路2关闭1101 05 00 02 00 00 6C 0A01 05 00 02 00 00 6C 0A回路3关闭1201 05 00 03 00 00 3D CA01 05 00 03 00 00 3D CA回路4关闭1301 05 00 04 00 00 8C 0B01 05 00 04 00 00 8C 0B回路5关闭1401 05 00 05 00 00 DD CB01 05 00 05 00 00 DD CB回路6关闭1501 05 00 06 00 00 2D CB01 05 00 06 00 00 2D CB回路7关闭1601 05 00 07 00 00 7C 0B01 05 00 07 00 00 7C 0B回路8关闭 2.写单路调光指令寄存器(功能码06H) 序号指令(CRC16可固定AC AC)反馈注释101 06 00 00 00 64 88 2101 06 00 00 00 64 88 21回路1亮度100%201 06 00 01 00 64 D9 E101 06 00 01 00 64 D9 E1回路2亮度100%301 06 00 02 00 64 29 E101 06 00 02 00 64 29 E1回路3亮度100%401 06 00 03 00 64 78 2101 06 00 03 00 64 78 21回路4亮度100%501 06 00 04 00 64 C9 E001 06 00 04 00 64 C9 E0回路5亮度100%601 06 00 05 00 64 98 2001 06 00 05 00 64 98 20回路6亮度100%701 06 00 06 00 64 68 2001 06 00 06 00 64 68 20回路7亮度100%801 06 00 07 00 64 39 E001 06 00 07 00 64 39 E0回路8亮度100%901 06 00 00 00 00 89 CA01 06 00 00 00 00 89 CA回路1亮度0%1001 06 00 01 00 00 D8 0A01 06 00 01 00 00 D8 0A回路2亮度0%1101 06 00 02 00 00 28 0A01 06 00 02 00 00 28 0A回路3亮度0%1201 06 00 03 00 00 79 CA01 06 00 03 00 00 79 CA回路4亮度0%1301 06 00 04 00 00 C8 0B01 06 00 04 00 00 C8 0B回路5亮度0%1401 06 00 05 00 00 99 CB01 06 00 05 00 00 99 CB回路6亮度0%1501 06 00 06 00 00 69 CB01 06 00 06 00 00 69 CB回路7亮度0%1601 06 00 07 00 00 38 0B01 06 00 07 00 00 38 0B回路8亮度0% 3.写多路开关指令寄存器(功能码0FH) 序号指令(CRC16可固定AC AC)反馈注释101 0F 00 00 00 08 01 FF BE D501 0F 00 00 00 08 54 0D回路1-8全开201 0F 00 00 00 08 01 00 FE 9501 0F 00 00 00 08 54 0D回路1-8全关301 0F 00 00 00 08 01 0F BE 9101 0F 00 00 00 08 54 0D回路1-4开,5-8关401 0F 00 00 00 08 01 F0 FE D101 0F 00 00 00 08 54 0D回路1-4关,5-8开 4.写多路调光指令寄存器(功能码10H) 序号指令(CRC16可固定AC AC)反馈注释101 10 00 00 00 08 10 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 97 0B01 10 00 00 00 08 C1 CF回路1-8亮度100%201 10 00 00 00 08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 19 CD01 10 00 00 00 08 C1 CF回路1-8亮度0%301 10 00 00 00 08 10 00 64 00 64 00 64 00 64 00 00 00 00 00 00 00 00 00 83 3101 10 00 00 00 08 C1 CF回路1-4亮度100%,5-8亮度0%401 10 00 00 00 08 10 00 00 00 00 00 00 00 00 00 64 00 64 00 64 00 64 0D F701 10 00 00 00 08 C1 CF回路1-4亮度0%,5-8亮度100% 5.读开关状态指令寄存器(功能码01H) 序号指令(CRC16可固定AC AC)反馈注释101 01 00 00 00 01 FD CA01 01 01 01 90 48读单路,回路1开201 01 00 01 00 01 AC 0A01 01 01 01 90 48读单路,回路2开301 01 00 02 00 01 5C 0A01 01 01 01 90 48读单路,回路3开401 01 00 03 00 01 0D CA01 01 01 01 90 48读单路,回路4开501 01 00 04 00 01 BC 0B01 01 01 01 90 48读单路,回路5开601 01 00 05 00 01 ED CB01 01 01 01 90 48读单路,回路6开701 01 00 06 00 01 1D CB01 01 01 01 90 48读单路,回路7开801 01 00 07 00 01 4C 0B01 01 01 01 90 48读单路,回路8开901 01 00 00 00 08 3D CC01 01 01 FF 11 C8读1-8路,全部开启 6.读调光状态指令寄存器(功能码03H) 序号指令(CRC16可固定AC AC)反馈注释101 03 00 00 00 01 84 0A01 03 02 00 64 B9 AF读单路,回路1亮度100%201 03 00 01 00 01 D5 CA01 03 02 00 64 B9 AF读单路,回路2亮度100%301 03 00 02 00 01 25 CA01 03 02 00 64 B9 AF读单路,回路3亮度100%401 03 00 03 00 01 74 0A01 03 02 00 64 B9 AF读单路,回路4亮度100%501 03 00 04 00 01 C5 CB01 03 02 00 64 B9 AF读单路,回路5亮度100%601 03 00 05 00 01 94 0B01 03 02 00 64 B9 AF读单路,回路6亮度100%701 03 00 06 00 01 64 0B01 03 02 00 64 B9 AF读单路,回路7亮度100%801 03 00 07 00 01 35 CB01 03 02 00 64 B9 AF读单路,回路8亮度100%901 03 00 00 00 08 44 0C01 03 10 00 64 00 64 00 64 00 64 00 64 00 64 00 64 6A 9F读1-8路,全部亮度100% 7.写单路调光渐变时间指令寄存器(功能码06H) 序号指令(CRC16可固定AC AC)反馈注释101 06 00 80 00 03 C8 2301 06 00 80 00 03 C8 23回路1渐变时间3 s201 06 00 81 00 03 99 E301 06 00 80 00 03 C8 23回路2渐变时间3 s301 06 00 82 00 03 69 E301 06 00 80 00 03 C8 23回路3渐变时间3 s401 06 00 83 00 03 18 2301 06 00 80 00 03 C8 23回路4渐变时间3 s501 06 00 84 00 03 89 E201 06 00 80 00 03 C8 23回路5渐变时间3 s601 06 00 85 00 03 D8 2201 06 00 80 00 03 C8 23回路6渐变时间3 s701 06 00 86 00 03 28 2201 06 00 80 00 03 C8 23回路7渐变时间3 s801 06 00 87 00 03 79 E201 06 00 80 00 03 C8 23回路8渐变时间3 s 8.写多路调光渐变时间指令寄存器(功能码10H) 序号指令(CRC16可固定AC AC)反馈注释101 10 00 80 00 08 10 00 03 00 03 00 03 00 03 00 03 00 03 00 03 00 03 9C 6401 10 00 80 00 08 C0 27回路1-8渐变时间5 s201 10 00 80 00 08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 1301 10 00 80 00 08 C0 27回路1-8渐变时间0 s(立即) 9.调用场景指令寄存器(功能码06H) 序号指令(CRC16可固定AC AC)反馈注释101 06 00 BF 00 01 79 EE01 06 00 BF 00 01 79 EE调用场景1201 06 00 BF 00 02 39 EF01 06 00 BF 00 02 39 EF调用场景2301 06 00 BF 00 03 F8 2F01 06 00 BF 00 03 F8 2F调用场景3401 06 00 BF 00 04 B9 ED01 06 00 BF 00 04 B9 ED调用场景4501 06 00 BF 00 05 78 2D01 06 00 BF 00 05 78 2D调用场景5601 06 00 BF 00 06 38 2C01 06 00 BF 00 06 38 2C调用场景6701 06 00 BF 00 07 F9 EC01 06 00 BF 00 07 F9 EC调用场景7801 06 00 BF 00 08 B9 E801 06 00 BF 00 08 B9 E8调用场景8 10.场景配置指令寄存器(功能码10H) 序号指令(CRC16可固定AC AC)反馈注释101 10 00 40 00 08 10 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 99 C401 10 00 40 00 08 C0 1B配置场景1:回路1-8开201 10 00 48 00 08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F6 4B01 10 00 48 00 08 41 D9配置场景2:回路1-8关 11.上电状态指令寄存器(功能码10H) 序号指令(CRC16可固定AC AC)反馈注释101 10 00 88 00 08 10 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 11 6C01 10 00 88 00 08 41 E5上电恢复断电前状态201 10 00 88 00 08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E7 5A01 10 00 88 00 08 41 E5上电全关301 10 00 88 00 08 10 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 69 9C01 10 00 88 00 08 41 E5上电全开100% 12.时间日期读写指令寄存器(功能码03H/10H) 序号指令(CRC16可固定AC AC)反馈注释101 10 00 B8 00 06 0C 00 19 00 06 00 03 00 0D 00 32 00 00 96 5701 10 00 B8 00 06 C0 2E设置2025-06-03 13:45:00201 03 00 B8 00 07 84 2D01 03 0E 00 19 00 06 00 03 00 0D 00 38 00 09 00 02 EA F2读取返回:2025-06-03 13:38:09 星期二 13.日出日落定时设置指令寄存器(功能码10H) 序号指令(CRC16可固定AC AC)反馈注释101 10 01 4A 00 0A 14 00 01 00 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 8401 10 01 4A 00 0A 60 24开启日出定时,每天执行,回路1-8亮度0%201 10 01 54 00 0A 14 00 01 00 7F 00 64 00 64 00 64 00 64 00 64 00 64 00 64 0A 8201 10 01 54 00 0A 00 22开启日落定时,每天执行,回路1-8亮度100%301 03 01 4A 00 0A E5 E701 03 14 00 01 00 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8E B3读取日出定时状态:开启,每天,回路1-8亮度0%401 03 01 54 00 0A 85 E101 03 14 00 01 00 7F 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 75读取日落定时状态:开启,每天,回路1-8亮度100% 14.星期定时设置指令寄存器(功能码03H/10H) 序号指令(CRC16可固定AC AC)反馈注释101 10 00 D8 00 0C 18 00 01 00 08 00 00 00 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 16 3C01 10 00 D8 00 0C 40 37开启定时1:周一至周五08:00,回路1-8亮度0%201 10 00 E4 00 0C 18 00 01 00 12 00 00 00 1F 00 64 00 64 00 64 00 64 00 64 00 64 00 64 4C C101 10 00 E4 00 0C 80 3B开启定时2:周一至周五18:00,回路1-8亮度100%301 03 00 D8 00 0C C5 F401 03 18 00 01 00 08 00 00 00 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 16读取定时1状态:同上401 03 00 E4 00 0C 05 F801 03 18 00 01 00 12 00 00 00 1F 00 64 00 64 00 64 00 64 00 64 00 64 00 64 26 EB读取定时2状态:同上 15.恢复出厂设置指令寄存器(功能码06H) 序号指令(CRC16可固定AC AC)反馈注释101 06 00 C2 00 01 E9 F601 06 00 C2 00 01 E9 F6设备所有参数恢复出厂默认 16.波特率设置指令寄存器(功能码03H/06H) 序号指令(CRC16可固定AC AC)反馈注释101 06 00 C0 00 03 C9 F701 06 00 C0 00 03 C9 F7左RS485波特率设为9600201 06 00 C1 00 05 18 3501 06 00 C0 00 03 C9 F7右RS485波特率设为38400301 03 00 C0 00 01 84 3601 03 02 00 03 F8 45读取左RS485波特率:9600401 03 00 C1 00 01 D5 F601 03 02 00 05 78 47读取右RS485波特率:38400 17.设备版本读取指令寄存器(功能码03H) 序号指令(CRC16可固定AC AC)反馈注释101 03 00 C3 00 03 F5 F701 03 06 07 E9 02 07 00 64 CC 87版本:2025-05-19 V1.0 六、控制面板 按键功能与排列(文字描述)物理排列(从左到右,自上而下):ON/LEFT、OFF/RIGHT、↑、↓、←、→、OK、ESC 图标键名功能说明ON/LEFT全开/左移键短按:1-8路全部打开;菜单模式下为左移光标OFF/RIGHT全关/右移键短按:1-8路全部关闭;菜单模式下为右移光标↑上键菜单项向上/数值加1/亮度增加↓下键菜单项向下/数值减1/亮度减少←返回键返回上级菜单(同ESC)→无图标预留OK确定键进入菜单/保存当前设置ESC返回键同← 1.1 数码管状态位定义(完整) 序号数码管显示英文释义中文释义1NONO当前状态无效2YEYES确定3FLFULL亮度100%4ONON打开5OFOFF关闭6OSOFIRE消防状态(特殊符号,数码管显示“OSO”) 菜单定义(完整)主菜单层级:P0 → P1 → P2 → P3(P0为根,P1-P3为子菜单) 2.1 开机/待机页面 页面数码管显示说明P0HH:MM(实时时分)常亮,180 s无操作自动返回此页;按任意键(除ESC/OK)进入主菜单 2.2 主菜单页面 页面数码管显示按键功能P001ON~08ON 或 01OF~08OF左右键选回路;↑键开;↓键关;ON/LEFT全开;OFF/RIGHT全关;ESC返回待机;渐变时间取自寄存器 2.3 子菜单定义 序号菜单页面数码管显示按键功能1地址设置P1IDxx(xx=01-63)↑↓改数值;LEFT/RIGHT移动光标;OK保存;ESC返回主菜单2日期设置P2年份:20yy 月日:MMDD 时间:HHMMLEFT/RIGHT选字段;↑↓改数值;OK保存;ESC返回主菜单3波特率设置P301xx(左RS485) 02xx(右RS485) xx=00-05对应1200-38400LEFT/RIGHT选串口或速率;↑↓改速率;OK保存;ESC返回主菜单 功能设置详细流程(文字描述,与PDF逐字对应)3.1 地址设置 进入P1后数码管显示“IDxx”,xx闪烁 LEFT/RIGHT选择十位或个位 ↑↓调节0-9 OK停止闪烁并保存 ESC返回主菜单(不保存) 3.2 日期设置 进入P2后依次循环:① 年份:20yy(yy闪烁,范围25-99)② 月日:MMDD(MM闪烁01-12,DD闪烁01-31)③ 时分:HHMM(HH闪烁00-23,MM闪烁00-59) LEFT/RIGHT选择位 ↑↓调节数值 OK保存并跳到下一字段,第三次OK返回主菜单 ESC随时返回主菜单(不保存) 3.3 波特率设置 进入P3后显示“01xx”或“02xx” 01=左RS485 02=右RS485 xx=波特率代码(00-05) LEFT/RIGHT切换01/02 ↑↓切换00-05 OK保存并停止闪烁 ESC返回主菜单(不保存) 数码管闪烁规则 凡处于可编辑状态的位均以1 Hz频率闪烁 OK确认后停止闪烁并保存 ESC放弃编辑并退出 按键长按功能 在主菜单P0页面,长按OK(≥5 s)直接进入P1地址设置 任何子菜单下无操作180 s自动返回P0待机页面 七、消防接口(以下文字与PDF逐字对应,无省略) 有源信号1.1 接线方式 消防有源DC12V信号接入端子:2(+)、3(−) 当DC12V有效时,模块1-8路立即全部打开(亮度100%) 解除消防信号后,设备自动恢复到消防前的状态(断电记忆) 1.2 注意事项 消防模式下,所有软件命令(Modbus)与手动按键均失效 数码管显示“OSO”特殊符号,表示进入消防状态 若需手动退出,必须断开DC12V并等待≥1 s 无源信号2.1 接线方式 消防无源常干接点接入端子:1(COM)、2(NO) 短接1-2时,模块1-8路立即全部打开(亮度100%) 断开1-2后,设备自动恢复到消防前的状态 2.2 注意事项 同1.2:消防模式下禁止任何本地或远程操作 短接状态需保持到火警解除,否则可能误退出 电气参数 有源输入电压范围:DC10V-15V 有源输入电流:≤20 mA 无源触点耐压:AC250V/2A 无源触点最小闭合电阻:≤1 Ω 响应时间(有源/无源):≤100 ms 接线示意图(文字描述) 三位端子排:1-COM,2-NO,3-DC12V- 有源:消防正→2,消防负→3 无源:消防常开触点→1与2 端子与内部电路采用光耦隔离,隔离电压≥2 kV 使用限制 严禁将AC220V接入消防端子 严禁同时接入有源与无源信号 消防功能优先级最高,任何场景/定时/手动命令均被屏蔽 消防解除后,模块自动回到原状态,不触发任何场景调用 故障指示 若消防端子持续>30 s存在>15V电压,数码管闪烁“OSO”+“ER” 若需取消故障指示,必须断电重启并移除过压源 八、辅助寄存器地址表(完整 8 路 × 8 寄存器,十六进制) 回路寄存器1寄存器2寄存器3寄存器4寄存器5寄存器6寄存器7寄存器8107D1H07D2H07D3H07D4H07D5H07D6H07D7H07D8H207D9H07DAH07DBH07DCH07DDH07DEH07DFH07E0H307E1H07E2H07E3H07E4H07E5H07E6H07E7H07E8H407E9H07EAH07EBH07ECH07EDH07EEH07EFH07F0H507F1H07F2H07F3H07F4H07F5H07F6H07F7H07F8H607F9H07FAH07FBH07FCH07FDH07FEH07FFH0800H70801H0802H0803H0804H0805H0806H0807H0808H80809H080AH080BH080CH080DH080EH080FH0810H 使用规则(与PDF逐字一致): 仅支持功能码 10H(写多寄存器),每路 8 寄存器为一组。 当前固件仅使用“寄存器3”作为开关值(0000H=关,0001H=开,00FFH=不执行)。 其余寄存器预留,可写任意值,若未来扩展渐变时间/亮度,任一寄存器=FFH 则本路不执行。 一次写入必须连续 8 个寄存器,起始地址=07D1H+(n-1)×8,n=1~8。 九、多系统接线示意图(文字描述,与PDF完全对应) 单系统(文字图)AC220V进线 → 断路器 → CY-SW0820A模块L/N → 8路负载(每路≤4400W)RS485:PC/PLC 485+ → A,485- → B,GND → G手牵手总线,首-末≤300 m,波特率9600,最多63台。 多系统(文字图)楼层配电箱NAL1、NAL2…NALn每箱内若干CY-SW0820A模块,箱内RS485并联后通过屏蔽双绞线(2×1.5 mm²)手拉手到中控室PC。总线两端加120 Ω终端电阻,首-末最远距离≤300 m,最大63台。通讯线远离强电,交叉处垂直走线,接地单点。 十、产品尺寸与安装(文字描述,与PDF完全对应) 外形尺寸:144 mm(长)× 98 mm(宽)× 72 mm(高) 安装方式:35 mm标准 DIN导轨(TH35-7.5或TH35-15)卡扣固定,拆装免工具。 安装步骤:a. 将模块背面卡扣上端先挂到导轨上缘;b. 下端向内压紧,听到“咔”声即锁定;c. 拆卸时一字螺丝刀向下压卡扣下端,向外拉出。 接线要求: 电源线:≥1.5 mm²,拧紧扭矩0.5 N·m 负载线:≥2.5 mm²,拧紧扭矩0.8 N·m RS485线:屏蔽双绞线,线径≥0.5 mm²,屏蔽层单端接地 消防线:≥0.5 mm²,线头镀锡,插入端子后轻拉确认无松动 通风与散热:模块上下各留≥50 mm空间,垂直安装时负载电流降额80%使用。 端子定义(文字排布) 电源:L、N(左侧,2P) 负载:WL1-WL8,每路COM+NO(中间,16P) RS485:A、B、G(右侧,4P,双口) 消防:1-COM,2-NO,3-DC12V-(右侧,3P) 十一、辅助信息(与PDF完全一致) 端子材质:铜合金+镀镍,阻燃UL94-V0 防护等级:IP20(安装于配电箱内) 重量:558 g ±10 g 环保:符合RoHS 2.0 认证:CE、FCC、SRRC(申请中) 出厂默认: 地址:01 波特率:9600,N,8,1 上电状态:断电恢复(FFH) 所有定时器:关闭 所有场景:关闭 消防:无源模式,未接入 --- ### 616. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 1.1 用途RS-CFSFX-N01-3D 是一款无机械转动部件的三维超声波风速风向传感器,可实时测量: 三维瞬时风速(X/Y/Z 轴) 合成总风速 水平风向(0~359°,正北为 0°) 垂直风向(-90°~+90°) 声速、声温 适用于气象、海洋、机场、港口、风机、桥梁、隧道、环保及科研等领域。 1.2 功能特点 零启动风速,360° 无死角 无机械磨损,免维护、免现场校准 金属外壳,耐腐蚀,防护等级 IP66 标准 RS-485 接口,Modbus-RTU 协议,最大总线长度 2000 m 宽电压供电 10~30 VDC,最大功耗 0.2 W 响应时间 1 s,抗风强度 75 m/s 二、技术参数 项目量程分辨率精度合成风速0~60 m/s0.01 m/s±0.2 m/s(≤5 m/s)或 ±2 %FS(>5 m/s)水平风向0~359°0.1°±2°垂直风向-90°~+90°0.1°±2°声速300~370 m/s0.01 m/s±0.5 %声温-40~+70 ℃0.01 ℃±0.5 ℃ 工作环境:-40~+60 ℃,0~100 %RH防护等级:IP66抗风强度:75 m/s输出信号:RS-485(Modbus-RTU)默认波特率:4800 bps(可设 2400~115200 bps)默认地址:0x01 三、工作原理 利用 6 个超声波探头在三维空间内循环发射/接收声波,通过正反方向传播时间差计算三维风速分量,再矢量合成总风速与风向。无机械转动部件,属于“无惯性”测量,可真实捕捉阵风脉动。 四、产品选型 RS- CFSFX- N01- 3D① ② ③ ④① 公司代号② 超声波风速风向系列③ 485 通信(Modbus-RTU)④ 三维壳体 五、机械尺寸与安装 5.1 整机尺寸高 268 mm × 宽 482 mm(见手册图示)安装立柱:Ø50~60 mm 圆杆或等效矩形杆 5.2 安装步骤 将传感器套入立杆,使壳体箭头“N”正对正北。 用扳手拧紧底部 4 颗不锈钢螺栓,确保设备水平无倾斜。 推荐安装高度:距地面 1.5~10 m(按应用标准)。 做好防雷、接地与防水处理。 5.3 接线定义(5 芯护套线,线长默认 3 m) 线色定义备注棕色电源正10~30 VDC黑色电源地GND绿色485-A接主机 485-A蓝色485-B接主机 485-B屏蔽层大地接机壳/防雷地 5.4 总线要求 手拉手布线,避免星型 首末端加 120 Ω 终端电阻 长度 >500 m 时,在总线 1/3 处加 485 中继器 多台设备必须设置不同地址 六、配置软件使用 6.1 软件获取资料包→“调试软件”→“485 参数配置软件”→免安装,直接运行。 6.2 快速配置 用 USB→485 转换器将传感器连接电脑。 打开软件,选择对应 COM 口。 点击“测试波特率”,软件自动识别地址与波特率。 修改地址(1~247)、波特率(2400~115200)→点击“下发”。 切换到“实时数据”页面,可查看/保存/曲线显示所有变量。 高级参数:输出模式、平均时间、合理性检验、X/Y/Z 轴系数等,可在此页面读写。 七、Modbus-RTU 通信协议 7.1 串口参数8N1,无校验,CRC16,默认 4800 bps 7.2 数据帧格式主机问询:地址 功能码 寄存器起始地址 寄存器数量 CRC低 CRC高从机应答:地址 功能码 字节数 数据区… CRC低 CRC高 7.3 寄存器一览(16 进制) 寄存器地址内容类型读/写0000~0001H合成总风速FloatR0002~0003H水平风向UINT16R0004~0005H垂直风向INT16R0006~0007HX 轴风速FloatR0008~0009HY 轴风速FloatR000A~000BHZ 轴风速FloatR000C~000DH声温FloatR000E~000FH声速FloatR0010H输出模式UINT16R/W0011H平均时间UINT16R/W0012H合理性检验UINT16R/W0013H风力等级UINT16R0014~0017HX/Y/Z/总 最大风速UINT16R0020~002BHX/Y/Z 轴系数 A/BFloatR/W07D0HModbus 地址UINT8R/W07D1H波特率代码UINT8R/W07D5H软件版本UINT16R07D6H硬件版本UINT16R 7.4 读取示例(读 0x01 地址合成风速)主机发送:01 03 00 00 00 02 85 CA从机返回:01 03 04 41 70 28 F6 71 92解析:41 70 28 F6 → Float ≈ 15.01 m/s 八、常见问题与排除 现象可能原因处理办法电脑找不到设备COM 口错/驱动未装在“设备管理器”确认 COM 号并重装驱动通讯失败地址、波特率错误用“测试波特率”重新搜索数据全为 0接线反/电源不足测电源电压≥12 V,检查 485-A/B 是否接反数据跳变巨大合理性检验开启关闭或调大平均时间长距离无通讯无终端电阻/线径细首末端加 120 Ω,使用双绞屏蔽线 0.5 mm² 以上 九、维护保养 外壳表面每 6 个月清水或中性洗涤剂擦拭,禁止用酸性/碱性溶剂。 检查电缆护套、接头防水胶垫是否老化,必要时重新缠绕防水胶带。 遇台风、冰雹后目视检查探头有无裂纹,发现损坏立即停机更换。 长期停用请断电并拆除存放于干燥库房。 十、包装清单 RS-CFSFX-N01-3D 主机 ×1 合格证/保修卡 ×1 安装抱箍及螺栓套件 ×1 套 3 m 线缆(默认长度)×1 USB→485 转换器(选配)×1 十一、质保与售后 整机质保 12 个月,以出厂标签日期为准。 人为损坏、雷击、进水、私自拆机不在保修范围。 返修请附故障描述及联系人信息,寄回运费由用户承担,寄出运费由厂家承担。 --- ### 617. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 YX276多功能音柱产品手册(V2.2) 1、简介 YX276是本公司推出的大功率防水音柱,采用电子智能MP3音乐播放芯片为处理核心,FLASH芯片为存储器开发的语音播放器材,具有最多5路开关量控制和RS485串口通信,Modbus RTU协议,可以通过简单的串口指令完成播放指定的语音,以及如何播放语音等功能,无需繁琐的底层操作,使用方便,稳定可靠,功能可定制。 外放采用全频大喇叭,声音音质好、音量大等特点。外壳为铝镁合金材质,坚固耐用,外形美观,安装方便。可抵挡长期的风吹雨淋,日晒霜雪。适合户外全天候使用,如学校、广场、公园、车站、批发市场等公共场所的室内外场所使用。安装主要采用壁挂式安装,安装方便稳定。 2、产品参数 项目参数说明产品型号YX276音柱供电电压DC 9V–24V工作电流≤2000mA(输入:DC24V)工作温度-40℃ ~ 80℃输出功率20W(12V)/ 30W(24V)文件格式Mp3格式(比特率≤192Kbps)外形尺寸148×100×276(mm)触发方式RS485串口通信(Modbus RTU协议)存储容量默认内置8M闪存,支持TF卡/U盘扩展(最大32G) 3、功能简介 3.1 控制面板说明 接口名称功能说明供电输入口支持DC9~24V输入,可外接AC220V转DC12V电源适配器触发控制端5路开关量控制,低触发/高触发可选,可接开关或传感器RS485接线端A+/B-,用于串口通信U盘接口外接U盘扩展内存,最大支持32GTF卡座支持TF卡扩展内存,最大支持32G音量调节旋钮实时调节播放音量Micro USB接口连接电脑更换语音文件及配置文件 3.2 更换语音文件 使用Micro USB连接电脑,设备会被识别为U盘; 支持文件夹命名:01~99; 支持文件名命名:001xxx.mp3 ~ 255xxx.mp3; 播放顺序按文件拷贝时间排序,非文件名顺序; 文件需为MP3格式,支持采样率:8/11.025/12/16/22.05/24/32/44.1/48KHz; 更换前请先断电,完成后断开连接再通电。 3.3 配置文件说明(config.txt) 必须放在根目录,文件名必须为config.txt; 格式为5位数字,例如:03001 第1位:播放模式(0~7) 第2~3位:音量(1~30) 第4~5位:设备地址(0~99) 4、串口说明 4.1 通讯格式 协议:Modbus RTU 波特率:9600(默认) 数据位:8,停止位:1,校验:CRC16 地址范围:0x01~0xFE(1~254) 4.2 串口调试指令表(节选) 5、串口指令详解 5.1 控制指令(节选) 0x0F:指定文件夹文件名播放 0x03:指定曲目播放(物理顺序) 0x06:设置音量(0~30) 0x0B:设置波特率 0x17:指定文件夹循环播放 0x19:当前曲目循环播放 0x10:指定文件夹文件名循环播放 0xC0:设置设备地址(1~254) 5.2 查询指令(节选) 0x3F:查询在线设备 0x42:查询播放状态 0x43:查询音量 0x47~0x49:查询U盘/TF卡/Flash总文件数 0x4B~0x4D:查询当前播放曲目 6、安装指导 6.1 接线说明 支持DC 9–24V供电,建议使用≥2A电源; RS485总线支持多台设备并联,传输距离≤500米; 支持AC220V转DC12V/24V适配器供电。 6.2 安装方式 壁挂式安装,配支架与螺丝; 支持角度调节; 请确保安装牢固,避免震动或跌落。 6.3 功能测试与调试 使用USB转485模块连接电脑; 软件:sscom5.13.1(可联系客服获取); 安装驱动(CH340G),选择正确COM口; 打开串口,供电后可收到设备返回数据; 可发送指令测试播放、音量、状态等功能。 6.4 常见问题 问题描述可能原因与解决方法供电后无反应检查电源、指示灯、电压是否≥9V无声音检查音量旋钮、文件格式、是否识别存储器播放顺序错误文件按拷贝时间排序,非文件名;建议格式化后重拷更换语音后无法播放检查是否为MP3格式,采样率是否匹配电脑无法识别设备更换数据线,确保支持数据传输U盘/TF卡无法识别格式必须为FAT32,非NTFS --- ### 618. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 VC500 是一款高性能、高扩展性的离线语音控制模组,专为智能家居、商业空间及工业场景设计。无需联网即可实现本地语音识别与控制,兼顾隐私安全与极速响应。升级至 500 条离线指令(为前代 VC140 的 3.5 倍),覆盖更复杂的使用需求,升级不加价! 二、核心优势 隐私安全:本地存储数据,无需云端联网,杜绝隐私泄露风险。 极速响应:毫秒级唤醒与识别,98% 识别准确率,抗噪能力强。 全场景适配:支持普通话、英语、日语、韩语,多音色/语速可调。 零门槛定制:可视化编辑唤醒词、指令、反馈语音,无需编程技能。 三、功能亮点 功能细节说明语音控制500 条离线指令,支持免唤醒词(如“离家模式”)。按键交互自定义按键触发场景指令(如一键开启影院模式)。协议转换接收/输出协议可自由转换,无缝对接第三方设备。无线扩展选配 LoRa Mesh 或 bt-zgb Mesh 无线通讯,改装项目友好。强电支持可选 220V 供电版本,直接控制灯具、电器等强电设备。二次开发开放烧录接口,支持二次开发(需绝缘未使用接口)。 四、技术参数 尺寸/重量:86×86mm / 140g 电源:12-24V DC(可选 220V AC 强电版) 通讯:RS485 总线,波特率 9600(无线版无需接线) 识别距离:1-5 米,360° 拾音 环境适应:-10℃~50℃ 稳定运行 颜色:活力橙/月光银/香槟金/象牙白/石墨黑/中国红/祖母绿/天空蓝/素雅灰/宝石蓝 五、接线与使用 ① 有线接线(RS485 总线) 智能配线箱 → VC500 模组 → 智能控制主机(详见文件 5 实物图)。 ② 无线接线(Mesh 版本) 主机需为 V5.7(内置 Mesh 二代芯片)或外接 Mesh 模块。 通电后自动组网,通过智能控制中心“语音”协议快速配置(文件 8)。 ③ 语音交互 唤醒词(7 选 1):“你好小莱” / “小度小度” / “小爱同学” / “天猫精灵” / “叮咚叮咚” 等。 免唤醒指令:“离家模式” / “增大音量” / “减小音量”。 六、典型应用场景 智能家居:灯光、窗帘、空调语音控制。 商业空间:会议室场景切换、酒店客房控制。 工业场景:设备免接触操作(洁净车间/实验室)。 视频及调试软件视频链接https://www.bilibili.com/video/BV11KtozXEH1/ --- ### 619. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 本产品是一款将干接点信号转换为自定义总线数据的智能转换模块,支持通过干接点开关的断开、闭合、断开到闭合、闭合到断开、状态翻转、单击、双击、长按、连续按下多次动作发送多组自定义指令,控制第三方设备(如照明、传感器、风机、阀门等),实现个性化场景联动。适用于家装、工装、市政、工业、农业等场景,支持RS485总线通讯及多种扩展协议(需搭配转换模块)。 二、产品特点 紧凑设计:尺寸46×57mm,可嵌入86底盒。 稳定可靠:每路输入光耦隔离,抗干扰强,支持300米网线弱电信号传输。 灵活配置: 支持地址修改、波特率(1200-115200bps)自定义。 每路开关支持发送4组自定义数据(开/关/单击/双击)。 支持0.1-399秒延时控制。 双向通讯:可查询接口状态,断网仍可本地控制。 安全防护:支持按键锁定(单路或全局),防止误触。 扩展性强:可接入KNX、CAN、LoRa、WiFi等协议(需转换模块)。 波特率:可配置 奇偶效验:可配置 数据位:可配置 停止位:可配置 多条报文顺序延时下发:支持 三、技术参数 项目参数产品型号8路IO转485模块电源输入DC 12V工作温度-10°C ~ 50°C通讯接口RS485(默认)、干接点波特率1200-115200bps(默认9600 8 N 1)外壳材质铝合金尺寸46×57mm重量55g 四、安装与接线 电源接入:连接DC 12-24V电源(注意正负极)。 干接点输入:将外部开关信号接入模块的1-8路输入端子。 RS485输出:A/B端子接入总线网络(需终端电阻匹配)。 接地保护:确保设备接地良好,避免干扰。 五、功能配置与指令说明 默认波特率:9600 8 n 1 数据口:数据口2 (固定) 设备默认地址:1 六、软件及使用教程 使用教程 七、注意事项 电源电压勿超12V,避免损坏模块。 RS485总线需采用屏蔽双绞线,终端设备加120Ω电阻。 长距离传输时建议测试信号稳定性。 修改地址时确保总线无冲突。 锁定功能启用后,需发送解锁指令方可恢复操作。 八、售后服务 质保期:1年(非人为损坏)。 技术支持:18801054468 --- ### 620. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、背景 我们收集所有消费者评价,好产品再造,全力升级新品更适合消费者。今天给大家分享涂鸦总线双向网关 TYG01,该网关实现了我们和涂鸦的双向打通,具有以下刚需功能。 软件下载 三、视频教程 四、产品参数 产品型号:TYG01 产品名称:涂鸦总线双向网关 产品尺寸:358844 mm 产品重量:100g 产品颜色:黑色 外壳材质:塑料 PC 输入电压:DC12V 通讯方式:WIFI/ZIGBEE/485 平台:智能生活 / 涂鸦 虚拟开关设备:64 个 虚拟窗帘设备:64 个 虚拟场景:32 个 自定义指令:≤40 字节 安装方式:有供电和 wifi 信号的地方任意摆放安装,也支持 DN35 导轨安装 五、功能特点 涂鸦端支持 64 个虚拟设备开关 / 窗帘任意组合控制总线开关。涂鸦 -> 总线 涂鸦端支持 32 场景模式供总线驱动调用。总线 -> 涂鸦 体积小巧,重量轻。 六、产品接线图 七、使用方法 将设备连接 USB 转 485,然后进行通电; 将 USB 转 485 插入电脑,打开软件,根据实际情况填写端口号和波特率,再点击启动,即可将软件与设备建立通讯。 配置参数:设置 “自定义模式”,配置 “开关数量” 和 “窗帘数量”。右边的按钮就是设置按钮,设置成功后反馈栏里会进行反馈。 长按配网模式按键 10S,边上 L1 指示灯闪烁一次松手后,模块进入配网模式。 点进涂鸦 APP → 点进涂鸦网关(非 TYG01 转换网关)→ 点击添加设备 - 添加新设备 → 等待网关识别设置的设备(此过程可能会有几分钟)→ 成功添加 返回 PC 端的设置软件 → 在对应功能区选择第 X 路设备 → 根据实际需求设置自定义协议 → 设置完后点击 “本页写入模块”,即可将自定义协议写入对应虚拟设备。 点击涂鸦 APP 上对应虚拟设备(比如第一路开关开),串口就能收到你自定义的协议了;在串口发送自定义数据,APP 上的对应按钮也能亮起(实测当一个按钮设置多条自定义协议时,只需要发送其中一条自定义协议,就能使 APP 上的对应按钮亮起)。 APP 上执行场景(示例): 添加场景; 根据需求创建场景; 选择执行设备; 选择控制单个设备; 选择场景; 选择 “模式” 下的对应模式; 添加完成; 点击执行对应场景(或根据设定场景逻辑执行对应场景 窗帘和场景设置方法同理。 开关区可自定义数据条数:41X4=164 条 窗帘区可自定义数据条数:41X2=82 条 场景学可自定义数据条数:41 条 --- ### 621. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 核心功能:通过本地AI视频分析实时检测人体存在并统计人数(最多10人),无需联网,保障隐私安全。技术特性: 离线处理:嵌入式AI芯片本地计算,不存储/传输图像 双协议兼容:支持标准Modbus RTU及自定义通信协议 多维度输出:人体状态信号、实时人数统计、可编程语音播报、干接点控制(可选) 二、技术规格 类别参数物理尺寸80×80×25mm(含可调云台)探测性能5米有效距离,100°广角视场人数容量最大10人(需完整露出头肩部)电源要求DC 12-24V宽电压输入(待机电流≤100mA@12V)通信接口RS485(Type-C物理接口)协议支持Modbus RTU / 自定义二进制协议波特率范围4800/9600/19200/57600/115200(可配置)安装方式侧壁安装(支持±45°俯仰调节)适用场景室内封闭空间 三、核心功能详解 人体检测 基于计算机视觉算法识别人体轮廓,输出存在状态(0=无人/1=有人)及精确人数。 精度限制:头部遮挡可能导致漏检;多人需保持头肩部无重叠。 语音播报系统 触发逻辑 语音库 典型场景 有人检测 9种预设 迎宾提示、安防警告、区域提醒等 无人检测 5种预设 离岗提醒、安全确认、岗位值守等 播报模式 4种可选 单次/循环播报(支持状态组合触发) 可视化指示 三色LED状态灯: 红色:未检测到人体 绿色:检测到人体 蓝色:配置模式激活 控制信号输出 干接点输出(定制版): 保持模式:有人闭合/无人断开 脉冲模式:宽度可设(0.1-25.5秒) 数字信号输出:通过RS485实时上传JSON格式数据包 四、安装配置指 电气连接 电源+ ──► 12-24V DC 电源- ──► GND 信号+ ──► RS485 A线 信号- ──► RS485 B线 安全规范: 操作前必须切断电源! 使用非接触式电压检测仪验证断电 严禁在潮湿环境操作 无线配置流程 激活配置模式:5秒内连续触发遥控器设置键5次(三灯全亮) 关键参数设置: 探测延时:1-7200秒(影响无人状态判定) 设备地址:1-254(多设备组网时唯一标识) 语音策略:独立设置有人/无人播报内容 保存机制: 成功:绿灯闪烁1次 失败:红灯闪烁1次 快捷指令: 设备巡检:单按查询键获取地址 紧急重启:5秒内连按5次设置键 恢复出厂:10秒内连按10次设置键 五、通信协议架构 Modbus寄存器映射表 地址(HEX)类型功能数据定义0x0000RO人体存在状态0x0000(无)/0x0001(有)0x0001RO实时人数0-10(整型)0x0002RW状态保持延时1-7200(秒)0x0006RW播报音量0(静音)-10(最大)0x00FFWO恢复出厂写入0xFFFF 通信实例 读取人体状态(设备地址0x01) TX: 01 03 00 00 00 01 84 0A RX: 01 03 02 00 01 79 84 // 00 01表示检测到人体 设置10秒延时 TX: 01 06 00 02 00 0A 28 0F RX: 01 06 00 02 00 0A 28 0F // 回声验证 六、典型应用场景 智能照明控制:根据人数动态调节灯光强度 安防监控系统:危险区域语音警告(如“禁止进入”播报) 能源管理系统:无人区域自动关闭空调/设备电源 空间利用率分析:商业场所人流量统计 七、技术支持 物理包装: 单盒内容:传感器×1、说明书、保修卡 运输规格:50件/箱(净重10kg,尺寸45×45×25cm) 质量保证:12个月有限保修(非人为损坏) --- ### 622. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Product Detail 呼吸心率睡眠传感器 HB01 在安装、维修或拆卸模块之前,请阅读并遵循所有安全预防措施,包括以下内容: 警告:有触电或火灾的危险。关闭断路器或保险丝处的电源。使用非接触式电压测试仪确保电源已关闭。 智能开关的安装和使用必须符合国家电气规程或当地电气规程。如果您不熟悉这些规范和要求,或对安装感到困难,请咨询专业电工。 模块需要稳定的 DC12V-24V 电源,请使用专业电源! 请严格按照说明书接线,检查无误之后再接通电源,避免造成不必要的损失! 请勿湿手或站在潮湿或潮湿表面上安装模块! # 功能概述 一款采用雷达波技术,非接触探测人体呼吸和心跳频率的传感器,基于一发三收天线形式:宽波束雷达模块主要适用于置顶安装模式,通过算法控制一定角度范围,精准扫描人体全身的动作层析;实现人体动静态时的睡眠探测和不同姿态的呼吸心率采集功能。 # 购买建议 广泛适用于家庭,酒店,医院,养老院,等有区域人体检测,病人看护,高端养老护理,人员睡眠呼吸检测需求的人员使用。 # 参数 产品名称:呼吸心率睡眠多功能传感器 产品型号:HB01 外观尺寸:Φ66*H75MM 产品重量:120g 通讯方式:RS485 输入电压:DC12V-24V 通讯协议:Modbus 波特率:9600 8N1(默认) 安装方式:吸顶挂墙 外壳材质:金属外壳 睡眠探测(胸腔):0.4-2.5M 呼吸心跳(胸腔):0.4-1.5M 呼吸测量精度:90% 呼吸测量范围:10-25 次/分 心跳测量精度:95% 心跳测量范围:60-100 次/分 刷新时间:3-30 秒 建立探测时间:60 秒 工作频率:60GHz 发射功率:6dbm # 雷达范围 雷达覆盖范围为水平 40°、俯仰 40° 的立体扇形区域。 受雷达波束特性影响,雷达在天线面法线方向作用距离比较远,但是偏离天线法线方向作用距离会变短。当雷达倾斜安装时,受雷达波束范围及有效辐射空间影响,雷达作用范围会减小,需要在使用时注意。 # 功能特点 运动检测幅度,在雷达探测范围内,可检测到运动信息输出,例如:走动,小幅度手晃动,都能被雷达检测到并触发有人状态。 呼吸探测功能,在雷达检测范围内,当人保持静止不动的状态下,呼吸引起的胸腔起伏等微小运动,都能被雷达检测到并时刻保持有人状态。 呼吸心率频率采集功能,在雷达检测范围内,当人保持静止不动的状态下,呼吸心跳引起的胸腔起伏等微小运动能被雷达检测到并进行统计,进而输出人员每分钟呼吸心跳数值。 睡眠检测功能,a. 睡眠质量评估:清醒 / 浅睡 / 深睡,b. 睡眠时间记录:睡眠质量相关时长的数据输出,c. 在床状态:入床 / 离床 基于 FMCW 调频连续波信号实现雷达探测。 实现对人体呼吸及心率的同步感知。 实现对人体睡眠质量的历史记录。 人体睡眠质量监测探测最大距离:≤1.5 米。 人体呼吸心率探测最大距离:≤1.5 米。 雷达模组输出功率 0.5 瓦以内。 不受温度、湿度、噪声、气流、尘埃、光照等环境的影响。 产品支持二次开发,提供开放协议。 标准 Modbus 工控协议,方便各种系统对接。 # 产品图片 # 接线图 # Modbus 协议 # 产品安装 本雷达产品建议倾斜安装,并且平行于扫描面的距离≤1.5 米。针对睡眠呼吸心跳探测需求,雷达需要采用倾斜安装方式,雷达要求安装在床头正上方 1m 高度,向下倾斜 45° 对着床中间,控制雷达与胸腔的距离为 1.5m 范围内,确保雷达正常进行呼吸心跳以及睡眠相关参数探测。雷达法线方向对准主要探测位置,保证雷达天线主波束覆盖人体睡眠探测区域。 受雷达天线波束范围限制,偏离雷达法线方向位置,有效作用距离会降低。毫米波频段电磁波对于非金属物质有一定穿透特性,可以穿透常见玻璃、木板、屏风及薄的隔墙,可以检测到遮挡物后面的运动物体;但对于较厚的承重墙、金属门等不能穿透。 # 注意事项 启动时间,在初始上电开始工作时,需要对内部电路完全复位,并对环境噪声进行充分评估,才能保证设备正常工作。因此设备初始上电工作时,需要开机稳定时间≥60s,才能保证后续输出参数的有效性。 呼吸心跳探测场景限制,雷达为非接触式设备,对于目标的呼吸心跳探测需要先对目标的位置进行锁定,继而对该目标的呼吸心跳强度和数值进行采集计算。因此要求探测目标在合理探测范围内,保持静息状态进行探测,避免持续运动影响雷达对目标的锁定,从而影响对呼吸心跳的探测。 有效探测距离,雷达设备的探测距离与目标、环境因素关联较大,有效探测距离可能随着环境及目标改变而变化,本设备暂时不具备测距功能,因此有效探测距离在一定范围波动属于正常现象。 雷达生物探测性能,由于人体生物特征属于超低频、弱反射特征信号,雷达处理中需要相对长时间累积处理,在累积过程中,可能诸多因素影响雷达参数,因此偶发性的探测失效是正常现象。 --- ### 623. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 本 485 通信模块采用 MODBUS RTU 从机模式,主要用于实现上位机对遥控器按键值的读取,具备稳定可靠的通信性能,适用于多种工业控制场景。 二、技术参数 工作电压 :DC12 - 24V。 静态电流 :在 12V 时为 8.5mA。 工作电流 :在 12V 时为 45mA。 通讯协议 :MODBUS RTU 从机模式,支持 MODBUS RTU 功能码 “03”(读数据寄存器),上位机可通过该功能码读取 4 个字节的键值寄存器。 三、通信配置 波特率 :115200。 校验位 :无。 数据位 :8 位。 停止位 :1 位。 通信说明书: 四、模块应答数据帧格式 地址 :一个字节,固定为 08,不可改变。 功能码 :一个字节,只支持功能码 03。 读数据寄存器数据字节个数 :四个字节。 数据 :四个字节(34 个位),对应遥控器 34 个按键的值。 校验 :62 CF。 以上内容为 485 通信模块的完整产品说明书,详细介绍了模块的技术参数、通信配置、数据帧格式等关键信息,以便用户更好地了解和使用该模块。 --- ### 624. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 型号:RK-DALIUSB-V3 网关 通讯端口: USB:连接电脑,配合上位机软件(DALIController)实现DALI设备配置。 RS485:与主控设备通讯(单工双向),支持发送DALI命令、查询设备状态。 DALI:控制DALI照明设备(仅1个端口,端口号固定为 1)。 二、通讯参数 参数值波特率9600 bps数据位8 bit停止位1校验位无指令间隔≥100 ms 三、协议帧格式 字段字节位置长度说明包头1-22固定值 0x1A 0xCC网关地址31范围 1-254(默认 0x01),255 为广播地址DALI端口41值 1(仅1个端口)或 255(所有端口)DALI地址51- 短地址:0x00(地址0)~0x7E(地址63)- 组地址:0x80(组0)~0x9E(组15)- 广播地址:0xFE/0xFF功能码6-n可变控制/查询指令(详见下文)包尾n+11固定值 0x0F 四、指令详解 1. 修改网关485地址 发送指令:1A CC XX FF FF F8 E7 D6 1A CC YY FF FF 0F XX:原地址(如 0x01) YY:目标地址(如 0x02)成功响应:BC BC 示例(修改地址 0x01 → 0x02):1A CC 01 FF FF F8 E7 D6 1A CC 02 FF FF 0F 2. 控制指令 通用格式:1A CC [网关地址] [DALI端口] [DALI地址] [功能组1] [功能组2] 0F 功能组:由 功能码 + 输出值 + 状态 组成(每3字节为一组)。 状态位:0x01(启用)、0x00(无效)。 功能功能组1配置功能组2配置说明调光+调色温FF [亮度值] 01FF [色温值] 01亮度值 0x00(关)~0xFE(100%)色温值 0x00(2700K)~0xFF(6500K*)单独调光FF [亮度值] 01FF 00 00仅调节亮度单独调色温FF 00 00FF [色温值] 01仅调节色温关灯 (OFF)00 00 01FF 00 00立即关灯最大亮度01 00 01FF 00 00立即切换至最大亮度调亮 (UP)03 00 01FF 00 00渐变调亮(约200ms)调暗 (DOWN)04 00 01FF 00 00渐变调暗(约200ms)调用场景05 [场景号] 01FF 00 00场景号 0x00~0x0F(场景0-15) 示例(网关地址 0x01,DALI地址 0x04,亮度100%+色温3000K):1A CC 01 01 04 FF FE 01 FF 0A 01 0F 3. 查询状态指令 发送指令:1A CC [网关地址] [DALI端口] [DALI地址] 86 86 86 0F返回格式:1A CC [地址] [亮度组] [色温组] 0F 亮度组:00 [亮度百分比] 01(状态0x01有效) 色温组:00 [色温值] 01(支持DTS色温时)或 00 00 00(不支持) 亮度百分比转换:返回值 0x00~0x64 对应亮度 0%~100%。 地址对应关系 渐变时间对应关系 APP添加控制独立地址 以上截图是网关地址为01的DALI设备 APP添加控制组地址 以下截图以控制分组1的灯光为例 五、关键参数说明 色温计算公式:( \text{Tc} = 2700\text{K} + 29 \times \text{Value} ) 例:Value=0x49(73)→ ( 2700 + 29 \times 73 \approx 6500\text{K} ) DALI调光曲线: 亮度值 0x00~0xFE 对应 DALI对数调光等级(0.1%~100%),详见协议附录表1。 渐变时间: UP/DOWN指令默认渐变时间约 200ms,实际步进受DALI驱动参数影响。 六、注意事项 广播地址(0xFF)可同时控制所有DALI设备。 指令间隔需 ≥100ms,否则可能导致通讯失败。 色温功能需DALI驱动支持 DTS协议,否则状态返回 0x00。 七、软件使用说明 1 、PC 软件安装 在我司官网下载页面下载最新的上位机软件,DALI Controller 软 件,最新版本 DALI Controller 。  支 持  Windows   7 、Windows   10  和  Windows   11   系统,安装时需要安装 Microsoft  .NET Framework 4.6.1 插件(若电脑没有安装时)。 2 、设备连接 将 DALI 主机通过 USB 线跟电脑连接,并在 DALI 主机的输入端接上 24V 的电源适配器。打开软件 DALIController,如下图。 DALIController 支持 USB 热插拔,点击操作时自动连接。若连接成  功,主页面左下角的状态栏会显示”DALI 主机 : 已连接”;若连接失败, 会显示”DALI 主机 : 未连接”,需检查是否已经将 USB 线连接好。 3 、DALI 地址搜索、分配、删除、修改 在“操作控制”主页面的”地址分配”进行地址搜索、分配、删除和修改: (1) 搜索有地址设备:搜索设备,搜索并显示已分配地址的设备,原 有地址不变。适用于每次重新打开 DALI Controller 软件时搜索 设备列表。 (2) 全新分配地址:删除 DALI 总线上所有 DALI 电源的地址,并对所有 DALI 电源重新随机分配新地址。该方式适用于安装灯后第一次分 配地址使用。 (3) 扩展分配地址:扩展分配地址,先搜索已分配地址的 DALI 电源并  显示列表,原有地址保持不变,然后对没有地址的 DALI 电源重新  分配新地址;若多个 DALI 电源地址出现重复,也会自动重新分配  重复地址的 DALI 电源。适用于 DALI 总线扩展安装 DALI 电源使用。 (4) 删除地址:选中设备列表的短地址, 点击”Delete addresses”按 钮,将删除该设备的地址。 (5) 修改地址:选中设备列表的短地址,并在 Address 输入框中输入 0-63 的短地址,点击”Chang”,则将选中的设备修改地址。 (6) 重置:将 DALI 电源参数重置到默认状态,但不删除短地址。 4 、设备列表 该列表分 Group 和 Device 两部分。当选中”DALI  USB(0001)”、”组 (0xFF))”或”设备(广播 0xff)”时,表示广播控制。当选中组栏的组 00-组 15 时,表示组控制。当选中设备栏的 A00-A63 时,表示单地址控 制。 设备类型定义(详细见附录 A): 设备类型 DT6 显示”LED(Axx)”。 设备类型 DT8 显示”Color(Axx)”。 同时支持多个设备协议如 DT6&DT8,对应”Multi(Axx)”。 设备类型未知,则显示”Unknow(Axx)”。 地址重复时显示”Error(Axx)”。 5 、“操作控制”页面操作说明 “操作控制”页面可以实现开/关,亮度调节,开启场景等操作。 “最暗” :开启最小值。 “最亮”:开启最大值。 “关灯”:关闭。 “调亮”:向上,调亮 200ms,步进由渐变速率 Fade  rate 决定。 “调暗”:向下,调暗 200ms,步进由渐变速率 Fade  rate 决定。 0%,1%,25%,50%,80%,100%为亮度值,直接功率等级输出,若渐变时间 Fade Time 参数设置为非 0 数值时,则带渐变输出。 调光滑动条,直接功率等级输出, 0%-100%,若渐变时间 Fade Time 参数设置为 非 0 数值时,则带渐变输出。 场景 0-场景 15:场景调用,若渐变时间 Fade Time 参数设置为非 0 数值时,则 带渐变输出。 Linear 对应于线性调光曲线的设备,如果 DALI 电源的调光曲线 Dimming curve 设定的是  1(线性调光曲线),选中可以把滑动条调光百分比值转为线性百分比 值,否为对数调光曲线百分比值,同时 0%,5%、25%,50%,80%,100%也相应转换。 DALI2 控制: “连续调亮”(DALI2.1 之后的协议增加的功能)表示以渐变速率 Fade Rate 来渐变到最大功率等级; “连续调暗”(DALI2.1 之后的协议增加的功能)表示以渐变速率 Fade Rate 来 渐变到最小功率等级;“调到关灯前亮度”(DALI2.0 之后的协议增加的功能)表 示调用软件关灯前的亮度; “灯具识别”(DALI2.0 之后的协议增加的功能)表示闪烁灯 10S,用来找地址对 应的灯。 6 、“参数设置”参数页面操作说明 参数表中包括标准 DALI 协议的所以参数,与标准协议的参数名称一致,如下图。 “上电亮度值”:DALI  电源上电时的开启亮度值,(注:如果设置为  255,则上 电时亮度为上一次掉电前的亮度)。 “系统故障值”:当 DALI 电源中检测到总线故障时,开启的亮度值(注:如果设 置为  255,则不作变化)。 “最小亮度值”:DALI 电源可以调节到最小的亮度值。 “最大亮度值”:DALI 电源可以调节至的最大亮度值。 “渐变速率” :上调和下调亮度的速度,分 16 个等级,具体看下面附录 D; “渐变时间” : 直接电弧功率和场景变换时的渐变时间,分 16 个等级,具体看 下面附录 D。 “调光曲线”:0 表示对数调光曲线(见附录 B), 1 表示线性调光曲线。当调光 曲线改变时,物理最小功率等级会做相应的切换,但需要手动把最小功率等级 MinLevel 设置为对应的物理最小功率等级并保存到 DALI 电源内。 “快速渐变时间”:当 Fade Time 设置为 0 时,Fast fade time 参数有效,0-675ms, 渐变速度处于 Fade time 的等级 1 之内,具体见附录 E。 DALI2:“扩展渐变时间基数”和“扩展渐变时间乘数”为 DALI2 之后协议增加的 扩展渐变时间扩展渐变时间的参数,当渐变时间和快速渐变时间都为0 时,将启 用扩展渐变时间,范围为 0-16 分钟。扩展渐变时间 = 扩展渐变时间基数 x 扩展 渐变时间乘数。扩展渐变时间基数的等级为 0-15,对应的 Value 值为 1-16;  扩 展渐变时间乘数的范围为 0-4,对应 0ms、100ms、1s、10s 和 1min。见附录 F 和附录 G。 操作步聚 : 请在左边选择到要操作的地址. “读取” : 读取 DALI 电源中的保存的参数表 ; “保存”: 把上面的参数表保存到 DALI 电源(注:软件不作参数保存,所有参数保 存在 DALI 电源中, 掉电不丢失)。 7 、“分组设置”组页面操作说明 分组设置可以把选中的设置设置和删除所属的组。标准 DALI 具有 16 组,一台设 置可以属于  16 组中的多个组,上图勾选的表示属于该组,否表示删除该组.只有 属于该组的设备才会影响组控制命令. 操作步聚 : 请在左边选择到要操作的地址。 “读取” : 读取 DALI 电源中的保存的组号。 “保存”: 把上面的组号保存到 DALI 电源(注:软件不作参数保存,所有参数保存 在 DALI 电源中,掉电不丢失)。 8 、“场景设置”场景页面操作说明 界面显示的场景与标准 DALI 协议中定义了 16 个场景一致。 MASK->表示屏蔽该场景,即开启该场景时,该设备不受影响 ; 0% ~100% ->表示亮度值.即开启该场景时,会自动调出该亮度值 ; 操作步聚 : 请在左边选择到要操作的地址。 “读取” : 读取 DALI 电源中的保存的场景值。 “保存” : 把上面的场景值保存到 DALI 电源中(注:软件不作参数保存, 所 有参数保存在 DALI 电源中,掉电不丢失)。 Linear 对应于线性调光曲线的设备,如果 DALI 电源是线性调光曲线,选中 可以把滑动条调光百分比值转为线性百分比值,否为对数调光曲线百分比值。 9 、“色温控制”色温页面操作说明 色温控制页面用于 DALI DT8 色温控制和设置,包含 Color Temperature Control 色温控制页面、Color Scene 色温场景页面和 Color Temperature Limit Setting 色温极值页面。 (1) 色温控制页面 “亮度控制”:滑动条用于亮度调节。 “色温控制”:滑动条用于色温控制,色温范围为 2500K-7000K。 2500K、2700K、3000K、3500K、4000K、4200K、4500K、5000K、5700K、 6000K、6500K 和 7000K 为预设好的色温调用。 “上电亮度值”:上电亮度和上电色温的设定和读取。 “系统故障值:系统故障亮度和色温的设定和读取。 当前亮度值、当前颜色类型、当前色温值和颜色状态的读取。 (2) 色温场景页面 界面显示的场景与标准 DALIDT8 协议中定义了 16 个场景一致,增加了 颜色类型和颜色值,此版本仅支持色温颜色类型和色温值的设置。 MASK->表示屏蔽该场景,即开启该场景时,该设备不受影响 ; 0% ~100% ->表示亮度值,即开启该场景时,会自动调出该亮度值 ; 2500K-7000K 表示色温值,开启该场景是,会调用的色温值,此版本 固定颜色类型为色温。 操作步聚 : 请在左边选择到要操作的地址。 “读取” : 读取 DALI 电源中的保存的场景值。 “保存” : 把上面的场景值保存到 DALI 电源中(注:软件不作参数保 存, 所有参数保存在 DALI 电源中,掉电不丢失)。 Linear 对应于线性调光曲线的设备,如果 DALI 电源是线性调光曲线, 选中可以把滑动条调光百分比值转为线性百分比值,否为对数调光曲线百  分比值。 (3) 色温极值设置页面 此页面用作最暖色温、最冷色温、物理最暖色温和物理最冷色温的读 取和设置。 “物理最暖色温”:物理最暖色温,需小于或等于最暖色温、最冷色 温和物理最冷色温。重置指令不影响此参数。 “最暖色温”:最暖色温,需大于或等于物理最暖色温,并小于或等  于最冷色温和物理最冷色温。重置指令时,最暖色温保存为物理最暖色温。 “最冷色温”:最冷色温,需大于或等于物理最暖色温和最暖色温,  并小于或等于物理最冷色温。重置指令时,最冷色温保存为物理最冷色温。 “物理最冷色温”:物理最冷色温,需大于或等于物理最暖色温、最 暖色温和最冷色温。重置指令不影响此参数。 操作步聚 : “读取” : 读取参数。 “保存” : 把上面的值保存到 DALI 电源中(注:软件不作参数保存, 所有参数保存在 DALI 电源中,掉电不丢失)。 10 、“指令调试”指令发送页面操作说明 此页面用于单条 DALI 指令的发送和回复,支持 DALI2 指令的发送。 五、 DALI 主机接线图 六、 附录 附录 A:  设备类型对应表 附录 B:  对数调光曲线 附录 C:  参数表 附录 D:  渐变速率和渐变时间表 附录 E:  快速渐变时间表 附录 F: Extended Fade Time- Base Value 表 附录 G: Extended Fade Time- Multiuplier 表 --- ### 625. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 485工业无线遥控器系统 专业无线控制解决方案,支持ModBus通讯与定制化功能 一、系统组成 组件类型与功能说明发射器手持式(多按键)或背负式(带摇杆调速)接收器型号:485通讯型- 输出方式:继电器输出(总停信号) + ModBus-RTU RS485- 安装方式:柜内导轨安装- 尺寸:115mm × 90mm × 40mm- 电源:AC/DC 24V(不区分正负极)天线外接延长天线,增强信号稳定性配置存储专用E卡(存储序列号、信道、按键功能等配置) 二、核心功能 通讯协议 支持 ModBus-RTU RS485 通讯,兼容PLC/上位机。 波特率:9600/38400/57600/115200bps(通过拨码开关设置)。 从站地址:1~4(通过拨码开关设置)。 拨码开关设置(接收器内部红色4位开关) 开关位 功能 设置说明 1+2 波特率 ON+ON:9600 → ON+OFF:57600OFF+ON:38400 → OFF+OFF:115200 3+4 通讯地址 ON+ON:1 → ON+OFF:2OFF+ON:3 → OFF+OFF:4 按键功能配置 最多支持24个按键,功能通过E卡存储(如启停、调速、自定义逻辑)。 支持节能设置、开机方式、停机时间等参数配置。 定制化扩展可提供特殊功能定制:✅ 连锁逻辑 ✅ 模拟量控制 ✅ 反馈显示✅ CAN通讯 ✅ TCP通讯 ✅ RS485整合 三、ModBus寄存器映射表 数据地址定义(以12键遥控器为例): 起始寄存器:4x0001(字模式)或 Byte0(字节模式) 按键状态映射关系:按键功能 字模式位地址 字节模式位地址按键1 Word0.bit13 Byte1.bit5按键2 Word0.bit12 Byte1.bit4… … …按键16 Word2.bit15 Byte3.bit7 关键说明:每个寄存器(如40001)包含16个位(bit0~bit15),对应16个按键状态。位值=1:按键按下;位值=0:按键释放。四、快速使用指南 1: 2. PLC通讯示例信捷PLC指令:REGR K3 K0 K100 D100 K2(含义:从站地址3,读寄存器40001~40002到D100~D101)西门子PLC:需解析Byte0~Byte3的位状态(参考映射表)。 五、技术参数 项目 参数 工作电压 AC/DC 24V ±10% 无线协议 LORA/GFSK/2.4G/5G 信道数 255个独立信道 序列号容量 40亿组(防干扰) 防护等级 IP65(工业防尘防水) 六、服务支持定制需求:提供逻辑控制、通讯协议整合、显示反馈等深度定制。技术支持:联系厂商获取配置工具及寄存器完整定义表。提示:完整配置需参考随机的RMK-AB-16S按键地址定义图(见说明书页5)。 本说明简化了技术细节,聚焦核心功能与操作流程。如需完整寄存器映射表或定制方案,建议联系瑞莫肯技术团队获取专属支持。 --- ### 626. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 485智能面板是一款基于RS485总线的工业级控制终端,支持弱电(DC12/24V)与强电(AC220V)双版本,适用于智能家居、工业自动化、楼宇控制等场景。核心功能包括: 按键自定义指令:支持ASCII字符串/十六进制指令、多动作触发(按下/松开/长按)、两组指令循环发送。 灵活控制:独立管理背光灯、按键指示灯、4路继电器。 双协议支持:兼容标准Modbus RTU及厂家自定义协议。 远程管理:通过配置软件修改参数、升级固件、调试设备。 二、产品规格 1. 硬件类型 项目弱电面板强电面板供电DC12/24VAC220V继电器无(需外接执行器)4路独立继电器输出接线端子VCC, A, B, GNDL/N(供电), A/B(485), L1-L4(继电器)通信接口RS485(A/B线)RS485(A/B线) 2. 技术参数 项目参数地址范围1~42(0x01~0x2A),广播地址0xFF串口默认参数波特率9600、8数据位、1停止位、无校验自定义存储NR-X9P:256字节;NR-SWRS系列:512字节指令延时统一延时(全局)或独立延时(每条指令) 三、安装与接线 1. 弱电面板接线 端子定义:VCC(电源正极)、GND(电源地)、A(RS485 A线)、B(RS485 B线)。 接线步骤: VCC/GND 接 DC12/24V 电源。 A/B 接入 RS485 总线。 2. 强电面板接线 端子定义: L/N:接AC220V火线/零线。 A/B:接RS485总线。 L1-L4:4路继电器输出(接负载)。 接线步骤: L/N 接AC220V电源。 A/B 接入RS485总线。 L1-L4 接负载设备(如灯具、电机)。 四、功能配置 1. 地址设置 软件修改: 用USB转485线连接面板与电脑。 打开“智能面板”软件,选择串口号并启动。 输入当前地址 → 点击“修改” → 输入新地址 → 保存。 注:地址未知时,可通过广播地址0xFF修改。 手动修改: 长按设置键5秒进入设置模式(指示灯闪烁)。 点按设置键增加地址值(每次点按自动保存)。 5秒无操作自动退出。 恢复默认:在设置模式下,再次长按设置键5秒恢复地址为0x01。 2. 工作模式设置 通过寄存器0x1003配置: 位功能说明Bit9协议选择0:厂家协议;1:标准Modbus RTUBit8按键发送协议0:Modbus格式;1:自定义数据Bit5松开按键主动发送1:使能;0:禁止Bit3背光延时熄灭1:10秒无操作熄灭;0:常亮Bit2按下按键主动发送1:使能;0:禁止(主机轮询)Bit0演示模式1:按键控制背光/继电器;0:正常模式 配置示例: 正常模式+主动发送+背光延时熄灭 → 01 06 10 03 02 14 7C 65 五、核心功能详解 1. 按键自定义指令 支持4种动作触发指令:按下、短按松开、长按按下、长按松开。 指令类型: ASCII字符串(如"开灯\n",\n为回车符)。 十六进制(如01 06 10 31 00 01 1D 05)。 高级功能: 循环发送:两组指令轮流触发(首次按发组1,再次按发组2)。 延时控制: 统一延时:所有指令间隔相同(全局设置)。 独立延时:每条指令后独立设置延时(如50ms→100ms→150ms)。 超长指令:单动作可跨多个存储空间(最大512字节)。 配置步骤: 打开“参数配置.exe”软件,连接面板。 选择按键 → 勾选动作类型 → 输入指令内容 → 设置延时 → 保存。 2. 背光与指示灯控制 统一控制寄存器(0x1008):同时控制背光灯+8个按键灯。 所有背光亮+按键1灯亮 → 01 06 10 08 01 01 CC 98 独立控制: 背光灯:寄存器0x1020(1点亮,0熄灭)。 按键灯:寄存器0x1021~0x1028(按键1~8,支持2翻转状态)。 3. 继电器控制 统一控制寄存器(0x100A):同时控制4路继电器(Bit0~Bit3对应继电器1~4)。 继电器1导通 → 01 06 10 0A 00 01 6C C8 独立控制:寄存器0x1031~0x1034(继电器1~4,支持2翻转状态)。 六、协议对接 1. 标准Modbus RTU协议 主机读按键状态: 发送:01 03 13 10 00 08 41 4D 返回:01 03 10 00 00 00 00 00 ...(16字节状态数据) 按键主动上报(使能Bit2/Bit5): 按键按下:01 03 00 02 02 02 64 AB // 绝对键值=(地址-1)*6+按键号 2. 厂家协议 数据长度字段为2字节(标准Modbus为1字节),其余格式相同。 七、调试与维护 1. 实时调试 通过配置软件: 监控按键状态(主动/被动模式)。 手动控制背光灯/继电器。 发送自定义指令测试。 2. 串口参数设置 仅NR-SWRS系列支持: 波特率:300~115200 校验位:无/奇/偶校验 配置方法:软件中选择参数 → 点击“写入”。 3. 固件升级 点击“设备搜索” → 选择目标面板。 点击“固件升级” → 选择.bin固件文件。 勾选“恢复默认参数”(可选)→ 启动升级。 注:升级失败需重试,成功后建议恢复出厂设置。 4. 恢复出厂设置 软件操作:点击“恢复出厂设置” → 设备自动重启。 效果:地址、参数、协议均恢复默认值。 八、附录 1. 版本更新记录 版本日期更新内容V1.02023-08-22初版发布V1.12024-01-311. 增加按键自定义发送2. 支持标准Modbus3. 固件升级功能V1.22024-12-141. 指令延时设置2. 两组指令循环发送3. 超长指令支持4. 串口参数设置 --- ### 627. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介 本产品属于4.2寸彩屏控制器系列,具备多种尺寸规格,适用于家用、商用及工业设备的可视化人机交互场景。全系列产品采用高规格真彩色LCD显示屏,搭配电容式触摸屏,外观简约时尚,符合现代审美与使用习惯。 该4.2寸彩屏控制器适用于工业/商业电器控制、彩屏交互、人机交互、新风系统、空调系统及高端仪器等应用场合。内置4.2寸高分辨率全彩显示与电容式触摸玻璃面板,操作顺滑简单。搭载ARM Cortex™-A7双核1.2GHz处理器,处理性能强劲,满足各类运算需求。同时配备RS485、RS232、RJ45以及802.11b/g/n WIFI接口,满足智能电器与控制的硬件连接需求。机器后背采用磁吸式金属挂架滑扣式安装设计,安装简单且牢固可靠。高档CNC铝面板外壳,可融入家居环境。 产品手册下载: 10 寸中控屏产品手册下载 二、产品规格 (一)硬件规格 项目说明CPU与存储CPUARM Cortex™-A7双核1.2GHz芯片平台SSD20X内存64MByte闪存128MByte屏幕尺寸4.2英寸分辨率高清720×672 IPS屏型号P4.2发色数24位全彩色(16.7M色)触摸全贴合电容式触摸屏外设与接口串口RS485数量1串口RS232(选配)数量1USB OTGMicro USB OTG数量1扩展存储TF卡槽(兼容SDHC标准)数量1按键隐藏式复位按键数量1以太网10M/100M全双工自适应RJ45以太网口(选配)数量1音频内置蜂鸣器数量1RTC时钟电池供电数量1指示灯电源指示灯数量1尺寸与重量整机尺寸86×86×8.0mm(墙外)匹配底盒86底盒(86×86mm)包装尺寸100×100×65mm整机重量见装箱清单包装重量见装箱清单工作环境电源输入DC 12V 500mA最大功率6W工作温度-20℃~70℃工作湿度RH10%~RH90%(不结露)存储环境储存温度-40℃~85℃储存湿度≤95%RH (二)软件规格 项目说明操作系统Linux 4.9.84 (三)尺寸规格 详见装箱清单。 (四)装箱清单 名称数量图例控制器主机1-安装支架1-固定螺钉2-安装说明-- 三、注意事项 安装前,请仔细阅读本产品手册并按手册内容操作,否则可能存在触电或火灾风险。 危险操作可能威胁人身安全,请谨慎操作。 本产品禁止未成年人安装与使用,以免造成人身伤害。 安装时应聘请专业资质人员或服务商。 确保布线符合当地及本手册标准,并由专业人员完成。 非专业人员安装可能导致产品故障、触电及火灾风险。 本产品禁止安装在易燃气体泄漏区域。 本产品禁止安装在盐雾大的环境。 本产品禁止进水。 本产品接线不能产生拉力,以免线断漏电。 本产品应安装在0℃~39℃室内环境,避免阳光直射。 禁止将电源线接到通讯线接口。 若安装在医院等环境,确保本产品不与其他产品相互干扰。 本产品应安装在能承受其重量的墙体上。 安装完成后,禁止移动或拆卸本产品。 禁止在潮湿环境下使用本产品。 确保本产品接入电源在额定输入范围内。 本产品为永久式连接设备,安装时应在外部装标准断开装置。 长期不使用时,请关闭电源。 核对接口输入线,防止连接错误损坏产品。 确认所有接线正确后再打开电源。 禁止自行改装、维修本产品。 若本机死机,可按复位键重新开机。 本产品带有存储功能。 本产品仅适用于海拔2000米及以下地区,仅适用于非热带气候条件。 串口屏GVSUI 配置 PC 软件功能说明书 0 GUI配置PC软件功能说明_V1.0下载 说明书链接:https://www.modbus.cn/category/gvsui 系统参数设置 软件及说明书下载 工程模版下载 视频教程 01、基础背景,按钮替换视频教程 02、按钮发送自定义协议教程 03、按钮发送自定义场景和延时指令视频教程 05、系统变量调用视频教程 06、协议解析展示视频 07、进度条发送自定义变动协议 08、带运算逻辑的变量发送 09、通过输入框改变变量 10、CRC校验发送协议 11、互锁按钮功能实现 12、更改开机LOGO导出升级 13、滑屏效果的实现方法 14、协议转换功能使用教程 15、色盘XRGB调光使用教程 16、定时发送指令教程 17、密码控件的使用和显示大小调整技巧 18、如何再页面上显示星期 19、如何实现弹框选择按钮教程 20、如何通过中文输入键盘改变文字显示 21、和校验设备的控制例如LS电动窗帘 22、根据自定义数据改变显示页面或者弹框 23、如何通过自定义协议改变按钮状态 24、如何通过自定义协议锁定屏幕和解锁 产品购买:https://item.taobao.com/item.htm?ft=t&id=821880658361 --- ### 628. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 DDC808 模块是一款功能集成度高、灵活性强、易于操作的工业控制模块,具备多种输入输出模组配置,可广泛应用于工业自动化、楼宇控制、环境监测等领域。该模块拥有两个物理端口,端口一支持选 Modbus RTU 通讯;端口二支持选择 Modbus RTU(标配)或 Loramesh(选配)通讯方式。 模块标配 8 个 DI(数字输入)和 8 个 DO(数字输出)模组,并支持选配 8 个可插拔模组,包括多种类型的 AI(模拟输入)模组(如 0 - 10V、4 - 20mA、NTC10K、PT1000)和 AO(模拟输出)模组(如 0 - 10V、4 - 20mA)。其设计不仅能够读取 AIAO 的原始 AD 模拟量(范围为 0 - 1024),还能通过搭配屏幕实现用户可读的计算转换过程,大大增强了模块的实用性和易用性。 二、模块读写 通过 Modbus poll 工具读写设备,提供了 5 个 Modbus poll 文件,支持 Modbus RTU 和 Modbus TCP 进行读写操作。各文件功能如下: CONFIG :用于设置模块地址(1 - 254),支持通用地址 255;可配置端口一和端口二的波特率(范围 1200 - 115200)。需注意,标注为 “nochange” 的值不可修改,否则会导致系统崩溃。 DI1 - 8 :用于读取 8 路数字输入的状态,0 表示关闭,1 表示接通。 DO1 - 8 :用于读写 8 路数字输出的状态,0 表示关闭,1 表示接通。 AIAO(原始 AD 值) :当插入 AI 或 AO 模组时,可读取对应的 AI1 - 8 或 AO1 - 8 的模拟量 AD 值(范围 0 - 1024)。 AIAO 中转寄存器(计算后的值) :当插入 AI 或 AO 模组时,可读取计算转换后的 AI1 - 8 或 AO1 - 8 的值。屏幕读取 AI 模组的模拟量 AD 值并计算转换后,将结果存储于该寄存器,若屏幕失效,此文件寄存器显示值为 0。 三、屏幕界面 模块配备直观易用的屏幕界面,方便用户进行操作和设置,主要包含以下界面: (一)Homepage(首页) 首页设有三个主要控件: Dispay :点击进入 DI/DO/AI/AO 界面,用于查看和控制各输入输出模块的状态。 Setting :点击进入系统设置界面,可对屏幕背光、蜂鸣器等进行配置。 总开关按钮 :控制设备的自动计算转换功能。按钮弹起呈灰色时,校准功能失效,屏幕仅能进行 DI/DO 的读取控制以及 AI/AO 的手动校准;按钮呈蓝色时,设备的自动计算转换功能生效,支持远程修改时间、日程管理里的定时生效等功能。 (二)Dispay(DI/DO/AI/AO 显示界面) DI/DO 界面 :左边展示 DI1 - 8 的状态,右边按钮用于展示和控制 DO1 - 8 模块,灰色表示关闭,白色表示接通。 AI08 界面 :点击文字控件可进入 AI 模块设置界面。AI 模块支持四种类型(0 - 10V、4 - 20mA、NTC10K、PT1000),需根据实际情况选择模块类型并进行校准。校准范围因模块类型而异,如 0 - 10V 模块校准范围分为 1V、3V、5V、7V、9V、10V 六个值,通过手动输入对应 AD 值完成校准。 AO08 界面 :点击相应控件可输入数字控制 AO 模块的输出,也可进入 AO 模块设置界面。AO 模块支持两种类型(0 - 10V、4 - 20mA),需根据实际情况选择并进行校准,如 0 - 10V 模块校准范围分为 1V、3V、5V、7V、9V、10V 六个值,通过输入对应值并调整输出完成校准。 (三)Setting(设置界面) 主要包含三个控件: Backlight :通过拖动进度条调整屏幕背光,默认为 100%。 Buzzer :控制蜂鸣器,默认按下打开,弹起为灰色表示关闭。 RTC :长按可通过屏幕修改时间,但该屏幕无 RTC 功能,时间掉电后不会继续走。 四、免责声明 DDC808 模块所提供的所有服务内容旨在协助客户加速产品研发进度。在服务过程中或其他渠道所提供的例程程序、技术文档、CAD 图等资料和信息仅供参考,客户有权选择是否使用或自行参考修改。公司不对这些资料和信息提供完整性、可靠性等保证,若客户在使用过程中因任何原因造成特别的、偶然的或间接的损失,公司不承担任何责任。 --- ### 629. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、版本信息 产品类别:60GHz 人体占位感应器(RS485 版) 产品型号:MSA300D 485 产品版本:V1.0 二、型号说明 MSA300D 485 是一款基于多阵列高增益的 60GHz 雷达感应器,其感应天线可实现 -30°到 30°的无极调节,实现感应天线精准覆盖目标场景。同时其天线增益高,感应波束角窄,特别适用于极小区域的人体存在信息探测,如工位/厕位检测。结合独特的软件算法,它可以精准探测人在工位/厕位的占空状态,进而为当下基于人体存在的智慧办公和智能卫生间提供快速且精准的前端传感输入。 产品购买:https://www.modbus.cn/product/31216.html 三、产品特点 活体呼吸存在静止探测 精准输出有人/无人信号 精准探测极小范围人体存在信息 支持 RS485 有线通讯 支持感应天线 -30°到 30°调节 采用 60GHz 毫米波雷达技术 存在感知最大范围:直径 1-3 米 微动感知最大范围:直径 1-3 米 移动感知最大范围:直径 1-3 米 呼吸存在,微动感知,移动感知范围高度重合 圆型辐射图形,有效实现工位/厕位空间探测覆盖 无人到有人状态切换时间:0.5 秒内 有人到无人状态切换时间:大于 10 秒 支持吸顶内嵌安装 通过 RS485 协议设置感应参数 超低射频功率输出,对人体健康无害 不受温度、湿度、噪声、气流、灰尘、光照等环境影响 四、外观特性 尺寸:φ80×43.5mm 接口:4 位弹片升降端子 五、参数特性 (一)输入/输出 电压范围:12-24V DC 额定电压:12V/24V DC 工作电流:300mA max 工作功耗:≤1W @24V DC 通讯方式:RS485 (二)感应参数 射频工作频率:60GHz-64GHz 发射功率:5mW Max 感应范围(Detection Area):可通过 RS485 协议设置为 0%-100% 延时设置(Hold Time):可通过 RS485 协议设置为 1s-7200s 环境光测量范围:5-1200Lux(产品安装在 3m 高,采集产品正下方地面的光照度值) (三)探测范围(100%灵敏度,半径) 移动/微动/存在(3m 高):0.5-1.5m (四)其他参数 遥控功能:支持 安装高度:2-3.5m 3dB 波束角: XZ 平面:30° YZ 平面:30° (五)使用环境 内嵌安装开孔尺寸:Φ70mm 工作环境温度:0℃~+50℃ 储存温度:-25℃~+80℃ (六)认证标准 符合认证:FCC/RED 环保要求:符合欧盟 RoHS 要求 防护等级:IP20 六、尺寸及功能示意图 [此处应有尺寸及功能示意图] 七、接线图及接线建议 (一)接线建议 RS485 布线方式建议手拉手一线到底,不建议星型或树形布线以保证信号传输的稳定性 RS485 布线线材推荐 0.5 平的 4 芯屏蔽线或者 6 类网线,总线布线长度建议不超过 300 米,并且一条总线接的感应器数量建议不超过 12 个 本感应器不带终端电阻,接入总线系统请注意阻抗匹配,一般推荐采用 2 个 120 欧电阻作为 485 总线的终端匹配电阻 八、启动过程与初始化 初次通电指示灯闪烁 10 秒后关闭,初始化期间不探测外界移动感应信号,指示灯可以通过 RS485 将指示灯关闭和打开,延时时间、探测范围(感应距离)可以通过 RS485 来设置 九、出厂设置 感应范围(Detection Area):100% 延时时间(Hold Time):30S 指示灯(Indicator light):open 十、感应辐射图 MSA300D 485 毫米波雷达传感器典型安装建议为吸顶安装,吸顶安装时其辐射范围如下: 十一、信号探测说明 本毫米波雷达传感器检测人体移动、微动、存在信号,实现睡眠状态下人体存在(有人/无人)的探测,具体说明如下: 移动信号:检测到人体在探测区域内进行大幅移动(行走)信号。 微动信号:检测到人体在探测区域内微小幅度动作信号,比如:身体前倾、后倾、肢体摆动、摇头、打字、玩手机等一些微小幅度行为动作。 存在信号:检测到人体呼吸生命体征引起(腹腔、胸腔扩张行为动作),没有检测大幅移动信号和微动信号。 十二、通讯参数格式及协议 (一)基本参数 串口通讯的波特率:9600 数据位:8 停止位:1 (二)数据帧格式 DATA0:帧头 DATA1:ID 高位 DATA2:ID 低位 DATA3:长度 DATA4:功能 DATA5/DATA6/DATA7:数值(如果无 DATA7,则 DATA6 为校验位;如果无 DATA8,则 DATA7 为校验位) DATA8:校验位 (三)通讯数据要求 通讯数据类型:HEX 格式发送和接收 每条设置命令间隔时间需大于 150ms,并监控返回数据是否与发送一样,若未收到则应重发,不超过 3 次 (四)示例 示例 1 项目帧头ID 高位ID 低位长度功能数值校验和DATA0DATA1DATA2DATA3DATA4DATA5DATA6DATA751FFFF060564BE校验和计算:51+FF+FF+06+05+64= 2BE,取后两位 BE 示例 2 项目帧头ID 高位ID 低位长度功能数值校验和DATA0DATA1DATA2DATA3DATA4DATA5DATA6DATA751FFFF08070927C0校验和计算:51+FF+FF+08+07+09+27+C0=34E,取后两位 4E 十三、Merrytek 微波感应器标准通讯命令功能对应表 DATA4 命令功能名称数据范围读写默认值0x00读取功能数据 Read Function dataww0x03工作状态 Work state1-2w/r0x05感应范围 Detection area0-4w/r40x07阻塞时间 Blocking time0-FFFFFFw00x08LED 指示 LED Indicator0-1w/r10x09光照度值 Light sensor0-800luxr0x0A光照度差值 Difference Value10-100w/r10Lux0x0D延时时间 Hold Time2-7200w/r30s0x17固件版本 Firmware version0.0.0-100.0.0r当前版本号0x18设备地址 Device ID0x0000-0xFFFFw/r0xFFFF0x20光照度倍值 Daylight Level Compensation(multiple)0x01-0x64w/r0xA0x21编辑 ID Edit ID0-1w0x000x22上报/查询切换 Submit a report/Enquire about0-1w/r10x23翻转状态 Status filp1w10x25光感阀值 Daylight sensor0-800lux,65535w/r655350x26传感器使能 Mition detection on/off0-1w/r00x28存在检测使能 Presence detection on/off0-1w/r10X29设置安装高度 Installation height setting0-2w/r2 (一)命令操作说明 1. 读取功能数据 该功能一般作为查询感应器参数,将根据功能命令序号返回相应功能数据。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Format (DATA4)Function (DATA5)CRC (DATA6)查询工作状态0x510xFFFF0x060x000x03data0+…+data5查询感应范围0x510xFFFF0x060x000x05data0+…+data5查询 LED 状态0x510xFFFF0x060x000x08data0+…+data5查询光照度值0x510xFFFF0x060x000x09data0+…+data5查询光照度差值0x510xFFFF0x060x000x0Adata0+…+data5查询延时时间0x510xFFFF0x060x000x0Ddata0+…+data5查询固件版本0x510xFFFF0x060x000x17data0+…+data5查询设备地址0x510xFFFF0x060x000x18data0+…+data5查询是否允许主动上报0x510xFFFF0x060x000x22data0+…+data5查询光感阀值0x510xFFFF0x060x000x25data0+…+data5查询传感器使能0x510xFFFF0x060x000x26data0+…+data5查询存在检测使能0x510xFFFF0x060x000x28data0+…+data5查询安装高度0x510xFFFF0x060x000x29data0+…+data5 2. 工作状态 该功能自动上报感应器工作状态。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)无人状态0x510xFFFF0x060x030x01data0+…+data5有人状态0x510xFFFF0x060x030x02data0+…+data5 状态上报说明: 无人状态切换至有人状态时,则立即上报。 有人状态不重复上报(可查询工作状态)。 3. 感应范围 该功能可设置感应器的探测范围,可根据空间大小调节相应档位。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)Min:10x510xFFFF0x060x050x01data0+…+data5Max:40x510xFFFF0x060x050x04data0+…+data5 4. LED 指示灯 该功能可设置 LED 指示灯开启或关闭。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Functio (DATA4)Value (DATA5)CRC (DATA6)Disable0x510xFFFF0x060x080x00data0+…+data5Enable0x510xFFFF0x060x080x01data0+…+data5 5. 阻塞时间 Block Sensor,该功能可设置感应器封锁时间,最小时间单位为:1s,封锁时间内感应器不输出任何触发状态和模式,等待设置的时间倒计时完成后自动允许感应器触发。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5-DATA7)CRC (DATA8)Min:1s0x510xFFFF0x080x070x000001data0+…+data7Max:167772125s0x510xFFFF0x080x070xFFFFFFdata0+…+data7 6. 光照度值 该功能可以获取当前环境照度值,并且当环境照度变化量满足预设的光照度差值时,传感器立马上报环境的照度值。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5-DATA6)CRC (DATA7)Min:0Lux0x510xFFFF0x070x090x0000data0+…+data6Max:800Lux0x510xFFFF0x070x090x0320data0+…+data6 7. 延时时间 该功能可设置延时时间,感应器进入无人的延时时间。应用时间建议设置 30S 到 3min。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5-DATA6)CRC (DATA7)Min:2s0x510xFFFF0x070x0D0x0002data0+…+data6Max:7200s0x510xFFFF0x070x0D0x1C20data0+…+data6 8. 固件版本 该功能可查看感应器固件版本号。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5- DATA6)CRC (DATA7)Min:v0.0.00x510xFFFF0x070x170x0000data0+…+data6Max:v100.0.00x510xFFFF0x070x170x2710data0+…+data6 9. 设备 ID 该功能可设置设备 ID 地址,用于区分感应器设备唯一 ID。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5-DATA6)CRC (DATA7)Min:0x00000x510xFFFF0x070x180x0000data0+…+data6Max:0xFFFF0x510xFFFF0x070x180xFFFFdata0+…+data6 相关说明: 编辑 ID 方法:上电自检 20s 后,短按按键一次进入 ID 编程模式(串口出现 51 FF FF 06 21 01 77),指示灯快速闪烁,一分钟内可设置 ID,成功后指示灯停止闪烁。(进入后再次短按一次按键退出编程模式指示灯停止闪烁) 设备 ID 默认值:0xFFFF 恢复出厂设置方法:长按按键 3s 恢复出厂设置,设备 ID 不恢复,主动上报和被动查询不恢复。 出厂设置参数:安装高度 3m,灵敏度:4 档,延时时间:30s,指示灯:打开。 备注:一条 485 总线上,只能一个感应器处于编辑 ID 模式!不能多个同时进行以免造成地址出错! 10. 光感差值 指环境光照度值变化量的设定值,(即当环境照度值变化量超过设定值时立马上报光照度值) 数值功能HEAD (DATA0)ID (DATA1- DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)Min:10Lux0x510xFFFF0x060x0A0x0Adata0+…+data5Max:100Lux0x510xFFFF0x060x0A0x64data0+…+data5 11. 光感补偿系数 设置光感值倍数,用于校准光感值 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)Min:0x010x510xFFFF0x060x200x01data0+…+data5Max:0x640x510xFFFF0x060x200x64data0+…+data5 12. ID 编辑状态 用于查看 ID 是否允许编辑。0:不可以更改,1:可以更改 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)Disable0x510xFFFF0x060x210x00data0+…+data5Enable0x510xFFFF0x060x210x01data0+…+data5 13. 上报/查询切换 用于设置是否主动上报。00:查询模式 01:主动上报 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)Disable0x510xFFFF0x060x220x00data0+…+data5Enable0x510xFFFF0x060x220x01data0+…+data5 14. 翻转状态 用于翻转状态。(感应器处于有人状态时接收到指令则切换状态并回复无人,感应器处于无人状态时接收到指令则切换状态并回复有人) 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)Enable0x510xFFFF0x060x230x01data0+…+data5 15. 光感阀值 设备检测到的 Lux 值低于该值则允许感应,如果进入设备进入无人状态后,检测到的 Lux 大于该值,则禁止感应;光感阀值是 0xFFFF 时,才会上报 Lux 值 即 命令(0x09); 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5-DATA6)CRC (DATA7)Min:0Lux0x510xFFFF0x070x250x0000data0+…+data6Max:800Lux0x510xFFFF0x070x250x0320data0+…+data665535(表示无光感阀值功能)0x510xFFFF0X070X250xFFFFdata0+…+data6 16. 感应器使能 如果传感器使能打开,设备禁止感应;如果传感器使能关闭,则 10s 后允许设备感应。 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)使能打开0x510xFFFF0x060x260x01data0+…+data5使能关闭0x510xFFFF0x060x260x00data0+…+data5 17. 存在检测使能 该功能可设置存在检测功能开启或关闭 01 开启 00 关闭 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)使能打开0x510xFFFF0x060x280x01data0+…+data5使能关闭0x510xFFFF0x060x280x00data0+…+data5 18. 设置安装高度 0x00 对应高度 220cm、0x01 对应高度 260cm、0x02 对应 300cm 数值功能HEAD (DATA0)ID (DATA1-DATA2)LEN (DATA3)Function (DATA4)Value (DATA5)CRC (DATA6)设置安装高度 220cm0x510xFFFF0x060x290x00data0+…+data5设置安装高度 260cm0x510xFFFF0x060x290x01data0+…+data5设置安装高度 300cm0x510xFFFF0x060x290x02data0+…+data5 备注:如果设置数据范围出错则返回:51XXXX06FF02XX;如果没有上述功能项或命令发错则没有任何回复。 十四、免责申明 基于产品的技术复杂度与应用环境的差异性,难以保证完全准确或完善的描述,故此资料仅作用户参考使用。我方将保留在不通知用户的情况下,对产品规格书进行更改的权利,并不做任何法律意义上的承诺和担保。同时我司鼓励用户在试用我方产品后,对我们规格书内容进行补充或更改的建议。 --- ### 630. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品简述 M24162是一款采用16A自保持继电器,带液晶触摸显示器的多功能24回路智能继电器模组,具备DI输入功能和传感器接入功能,两个485端口,端口2可以选择多种通讯接(RS485/RS232/LORAMESH/4GCAT1/NET)进行对外通讯支持标准Modbus Rtu/Modbus Tcp通讯协议。 产品购买:https://www.modbus.cn/product/31033.html 选型建议 广泛适用于家庭,办公楼,酒店,银行,医院,学校,机场,博物馆,实验室工厂等各种开关功率不够大的场景。也可作为楼宇集成商,智能家居方案工程师等专业人士的常用备件,解决现场突发问题。 产品参数 产品名称:24路继电器模组 产品型号:M24162 感性负载:5A 阻性负载:10A 外壳材质: 钣金喷塑金属外壳 2.4寸屏:分辨率:240*320 继电器:16A自保持不发热 产品尺寸:228*85*57mm 产品重量:1.15kg 输入电压:DC12V 通讯协议:Modbus RTU 波特率:默认9600 8N1(可修改) 输入回路:24路DI(光耦隔离) 安装方式:DN35导轨安装 端口1:485 端口2:标配485,可选配RS232/LORA MESH/4GCAT1/NET 传感器:支持选配一氧化碳/温湿度/入体计数/光照 产品功能 1、采用宏发高品质16A自保持不发热继电器 2、24路DI输入全部采用光耦隔离输入电路 3、外观侧面与标准空开外形保持一致,导轨安装。 4、带彩色触摸液晶屏,现场操作配置轻松简单 5、端口1标配485,端口2可选/RS232/LORA MESH/4G CAT1/NET进行通讯。 6、IO均支持双寄存器读取,支持01/02/05线圈读写功能码,也支持03/06/10功能码读写。 7、支持多种通讯波特率,并可以通过触摸屏直接修改。 8、自带4个传感器(一氧化碳,温湿度,人体计数,光照)联动接入,联动继电器输出可以通过触摸屏配置。 9、钣金喷塑金属外壳,和5.08大端子独立接线柱。 10、触摸屏支持中英多语言,标准Modbus协议。 屏幕操作 ①本地彩屏智能处理:设备自带的2.4寸屏可实时展示24回路的输入输出状态,可通过屏幕设置输入输出的联动。②外接传感器:支持外接人体计数传感器/温湿度传感器/光照传感器/一氧化碳传感器的接入,通过彩屏的自动化系统,实现传感器数据的实时采集与智能响应。③多语言切换:系统语言支持中英文切换, ④波特率修改:通过本地彩屏直接修改两个485端口的波特率,操作更加方便。 ⑤设备地址修改:通过本地彩屏修改设备地址,操作更加方便。*24回路独立大功率16A继电器,支持24路数字信号输入检测,通过本地彩色触控屏实现实时数据显示、参数配置,无需依赖云端,直接通过屏幕设置值、延时动作、联动策略,适合智能电房管理,生产线设备控制,楼宇自动化等应用场景。 ①INPUT/输入状态:点击可进入“24路输入状态展示页面” ②OUTPUT/输出状态:点击可进入“24路输出状态展示页面” ③SENSOR/传感器:点击可进入“传感器状态/数值展示页面” ④Settings/系统设置:点击可进入系统设置。 设置指南 1、INPUT/输入状态 ①此页面展示24个DI的状态,DI接通时,对应图标外圈显示为黄色;DI断开时对应图标外圈显示为黑色。 ②点击对应图标,输入密码后进入DI联动设置页面。滑动选择联动的继电器左边圆圈勾选后,此逻辑自动生效,不勾选左边圆圈,不执行此自动逻辑。 2、OUTPUT/输出状态 ①此页面展示24个继电器D0的状态,继电器接通时,对应图标外圈显示为黄色继电器断开时,对应图标外圈显示为黑色, 通讯协议 寄存器地址Memory-Mappe功能码FUNCTION寄存器名字NAME读/写R/W寄存器地址十进制Register Add(DEC)寄存器地址十六进制Register Add(HEX)值Value值含义Value meaning备注Remarks03Read Holding Registers (4x)____________06Write single register地址address读/写  00000x000000 01地址范围01-FEAddress range 01-FEPort2 -波特率 读/写  00010x000100 0600——115200  Baud01——76800  Baud02——57600  Baud03——38400 Baud04——19200  Baud05——14400  Baud06——9600 Baud07——4800 Baud08——2400 Baud09——1200 BaudINTER(no change)读/写  00020x0002no changeno changeno changePort1-波特率 读/写  00030x000300 0600——115200  Baud01——76800  Baud02——57600  Baud03——38400 Baud04——19200  Baud05——14400  Baud06——9600 Baud07——4800 Baud08——2400 Baud09——1200 Baud03Read Holding Registers (4x)____________06Write single registerOUTPUT1R/W00160x001000 0100:close01:OPenOUTPUT2R/W00170x001100 0100:close01:OPenOUTPUT3R/W00180x001200 0100:close01:OPenOUTPUT4R/W00190x001300 0100:close01:OPenOUTPUT5R/W00200x001400 0100:close01:OPenOUTPUT6R/W00210x001500 0100:close01:OPenOUTPUT7R/W00220x001600 0100:close01:OPenOUTPUT8R/W00230x001700 0100:close01:OPenOUTPUT9R/W00240x001800 0100:close01:OPenOUTPUT10R/W00250x001900 0100:close01:OPenOUTPUT11R/W00260x001A00 0100:close01:OPenOUTPUT12R/W00270x001B00 0100:close01:OPenOUTPUT13R/W00280x001C00 0100:close01:OPenOUTPUT14R/W00290x001D00 0100:close01:OPenOUTPUT15R/W00300x001E00 0100:close01:OPenOUTPUT16R/W00310x001F00 0100:close01:OPenOUTPUT17R/W00320x002000 0100:close01:OPenOUTPUT18R/W00330x002100 0100:close01:OPenOUTPUT19R/W00340x002200 0100:close01:OPenOUTPUT20R/W00350x002300 0100:close01:OPenOUTPUT21R/W00360x002400 0100:close01:OPenOUTPUT22R/W00370x002500 0100:close01:OPenOUTPUT23R/W00380x002600 0100:close01:OPenOUTPUT24R/W00390x002700 0100:close01:OPen03Read Holding Registers (4x)Input1R00410x002900 0000:close01:OPenInput2R00420x002A00 0000:close01:OPenInput3R00430x002B00 0000:close01:OPenInput4R00440x002C00 0000:close01:OPenInput5R00450x002D00 0000:close01:OPenInput6R00460x002E00 0000:close01:OPenInput7R00470x002F00 0000:close01:OPenInput8R00480x003000 0000:close01:OPenInput9R00490x003100 0000:close01:OPenInput10R00500x003200 0000:close01:OPenInput11R00510x003300 0000:close01:OPenInput12R00520x003400 0000:close01:OPenInput13R00530x003500 0000:close01:OPenInput14R00540x003600 0000:close01:OPenInput15R00550x003700 0000:close01:OPenInput16R00560x003800 0000:close01:OPenInput17R00570x003900 0000:close01:OPenInput18R00580x003A00 0000:close01:OPenInput19R00590x003B00 0000:close01:OPenInput20R00600x003C00 0000:close01:OPenInput21R00610x003D00 0000:close01:OPenInput22R00620x003E00 0000:close01:OPenInput23R00630x003F00 0000:close01:OPenInput24R00640x004000 0000:close01:OPen03Read Holding Registers (4x)TEMPR01000x006400 00温度设备地址固定为01range:-20~60℃HUMIR01010x006500 00湿度设备地址固定为01range:0~95%COR01020x006600 00CO浓度设备地址固定为02range:0-1000PPMLUX-HIR01030x006700 00LUX-HI:高位寄存器LUX-Lo:低位寄存器光照强度计算公式:Lux= (照度数据Hl*65536+照度数据Lo) /100则:Lux=(0*65536 + 6960)/ 1 00=69.6(lux)设备地址固定为03range:0~250000luxLUX-Lo01040x006800 00Human existenceR01050x006900 0000:nobady01:somebody设备地址固定为04人体存在Human Body CountR01060x006A00 00检测到的人体数量设备地址固定为04检测到的人体数量01Read Coils (0x)——————05Write Single CoilOUTPUT1R/W00000x000000 0000:close01:OPenOUTPUT2R/W00010x000100 0000:close01:OPenOUTPUT3R/W00020x000200 0000:close01:OPenOUTPUT4R/W00030x000300 0000:close01:OPenOUTPUT5R/W00040x000400 0000:close01:OPenOUTPUT6R/W00050x000500 0000:close01:OPenOUTPUT7R/W00060x000600 0000:close01:OPenOUTPUT8R/W00070x000700 0000:close01:OPenOUTPUT9R/W00080x000800 0000:close01:OPenOUTPUT10R/W00090x000900 0000:close01:OPenOUTPUT11R/W00100x000A00 0000:close01:OPenOUTPUT12R/W00110x000B00 0000:close01:OPenOUTPUT13R/W00120x000C00 0000:close01:OPenOUTPUT14R/W00130x000D00 0000:close01:OPenOUTPUT15R/W00140x000E00 0000:close01:OPenOUTPUT16R/W00150x000F00 0000:close01:OPenOUTPUT17R/W00160x001000 0000:close01:OPenOUTPUT18R/W00170x001100 0000:close01:OPenOUTPUT19R/W00180x001200 0000:close01:OPenOUTPUT20R/W00190x001300 0000:close01:OPenOUTPUT21R/W00200x001400 0000:close01:OPenOUTPUT22R/W00210x001500 0000:close01:OPenOUTPUT23R/W00220x001600 0000:close01:OPenOUTPUT24R/W00230x001700 0000:close01:OPen02Read Discrete Inputs (1x)Input1R00000x000000 0000:close01:OPenInput2R00010x000100 0000:close01:OPenInput3R00020x000200 0000:close01:OPenInput4R00030x000300 0000:close01:OPenInput5R00040x000400 0000:close01:OPenInput6R00050x000500 0000:close01:OPenInput7R00060x000600 0000:close01:OPenInput8R00070x000700 0000:close01:OPenInput9R00080x000800 0000:close01:OPenInput10R00090x000900 0000:close01:OPenInput11R00100x000A00 0000:close01:OPenInput12R00110x000B00 0000:close01:OPenInput13R00120x000C00 0000:close01:OPenInput14R00130x000D00 0000:close01:OPenInput15R00140x000E00 0000:close01:OPenInput16R00150x000F00 0000:close01:OPenInput17R00160x001000 0000:close01:OPenInput18R00170x001100 0000:close01:OPenInput19R00180x001200 0000:close01:OPenInput20R00190x001300 0000:close01:OPenInput21R00200x001400 0000:close01:OPenInput22R00210x001500 0000:close01:OPenInput23R00220x001600 0000:close01:OPenInput24R00230x001700 0000:close01:OPen --- ### 631. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 1.1 简介 KIR01 控制器是一款万能型红外遥控学习控制器,支持普通 NEC 编码的红外遥控器的学习,也支持空调的长码编码的学习。之后根据指令重新将学习的键码发送出去,以实现遥控器的复制或者集成到智能设备中。具有多种控制方式,串口简码或者 485+MODBUS,并配合提供的上位机软件,能轻松的实现产品的开发,大大的降低了新产品的开发难度。 说明书下载 万能红外遥控学习控制器KIR01使用说明下载 1.2 基本参数 供电方式:DC 7-24V 100mA(静态电流<10mA,发射电流 600mA) 遥控距离:单向发射头 8 米距离,4 向发射头半径 6 米。另外可选配更远距离的发射头,最远可达 20 米 通信方式:485 通信,MODBUS 协议+简码通信协议,8 位数据,1 位停止位,无奇偶校验位 控制方式:485 的 MODBUS 控制、电脑端控制、板内扩展 TTL 串口控制 波特率:2400、4800、9600(出厂默认)、19200、115200 编码方式:支持 NEC、空调码、RC-5、RC-6、PWM、PPM 等等绝大部分红外遥控器 载波频率:38KHz 键值数量:可学习并储存 48 个键值 1.3 接口描述 485 接口:用于 485 通信控制的接口,2 线。接线时需要注意线序,A 接 A,B 接 B,线序不对会造成无法通信。 电源接口:用于给设备供电的接口,2 个脚,可以不分正负极,直流或者交流,7-24V 电源(最高输入电压不得超过 26V),电流不小于 400mA。 地址拨码:MODBUS 通信控制时用到的通信地址=拨码地址+软件设置地址。软件设置地址默认是 1。 红外接收头:进行遥控器学习时,需要用遥控器对准接收头,距离 1 米远按遥控器,进行遥控按键学习。 工作指示灯:控制器通电的时候闪一下,学习遥控器的时候常亮,学习成功就熄灭,发射红外信号会闪一下。 发射头接口:需要注意接线的正负极,线序接错了会造成无法发射红外信号。如果连接发射头,红线接+,黑线接-;如果连接发射管,长脚接+,短脚接-。红外光信号人眼无法看到,但是手机摄像头可以看到微弱的紫色光,所以有时候需要确认发射头是否能发射红外信号,可以用手机摄像头观察。 1.4 产品应用场景 智能家居产品:如多功能遥控器魔方、万能遥控器等。此应用场景推荐使用单片机+控制器,采用串口简码通信协议。 工业控制产品:如空调控制器,温湿度机控制器,恒温恒湿控制器。 万能遥控器:如将多款设备集合到一个遥控器里面。 工控管理:如档案管理室,远程的 ERP 控制设备;学校宿舍统一管理空调。 1.5 控制器功能简单说明 连接上位机:通过串口链接上位机软件,可以实现参数配置、键值学习、键值测试、通信协议调试、红外码库的导出、导入。方便批量的配置控制器工作参数和导入红外学习码库数据。控制器和上位机软件都支持 2 种通信协议。 通信协议:通过串口控制设备的时候串口数据类型支持 2 种通信协议,由短路点决定。 简码通信协议:55 AA 03 01 03(发射键值 01)通信协议比较简单,带有校验位,简单可靠,适合单片机控制。 MODBUS 协议:采用标准的工业控制 MODBUS-RTU 协议,方便直接将产品应用到工业领域,无需过多开发。 学习遥控键值:进入红外学习后,将遥控器对准红外接收头,距离 1 米,轻点需要学习的按键即可。 测试遥控键值:对应的键值学习成功之后,可以通过上位机或者按钮测试对应的键值,将红外发射头对准设备,然后测试发射。 测试按键:控制器上面有个按键,长按按键进入键值 0 的学习状态,短按按键则发射键值 0(前提是键值 0 已经学习成功)。 485 地址:这个是 MODBUS 协议下有效,通信地址=软件配置的地址偏移量+拨码地址+1(地址有效范围 1-250)。 1.6 上位机简介 “红外遥控学习管理器”是一款 windows 系统 PC 端的一款软件,方便用户更快速的上手使用红外学习控制器而研发的。通过该软件可以非常方便的测试,和配置红外学习控制器,还能很方便的批量下载红外学习码库,以实现高效率研发、生产产品。 二、应用场景 2.1 简述 由于控制器支持的接口多,可以应用于多种场景,不同的场景使用的方式不同,下面根据对应的场景进行说明。 2.2 场景一:直接电脑端上位机调试测试 此应用场景通常用于控制器初期开发测试,需要自备一个 USB 转串口工具,推荐使用 CH340 相关工具,并进行接线。其中 CFG 引脚是用于选择通信协议方式的引脚,控制器支持 2 种通信协议,简码通信协议比较简单可靠,能通过单片机串口发送简单的指令就能有效控制;MODBUS 协议则是工业领域应用广泛的一种协议,但编程稍微复杂,可以根据需要选择合适自己的一套通信协议,并且需要修改上位机软件所处的协议状态。 CFG 低电平:选择简码协议 CFG 高电平:选择 MODBUS 协议 接线接好之后,将串口工具插上电脑 USB 口,并且安装好串口工具的驱动,选择对应的 COM 口和波特率,点击“打开串口”按钮,再点击“读取信息”按钮,如果能读取设备信息,则代表设备连接成功,不能读取则检查接线、驱动、参数相关是否有误。 在上位机软件界面,最底下有对应操作的串口指令首发具体数据内容: 示例一:modbus 协议发送键值 0 电脑发送: 0x00 地址 00 设备(00 地址是广播地址) 0x06 操作码 06,写保持寄存器 0x00,0xC8 寄存器 200,对应的是发射红外信号键值 0 0x00,0x01 数据内容 01 0xC8,0x25 CRC-16-Modbus-Rtu 检验数据 控制器针对电脑发送: 0x05 地址 05 设备 0x06 操作码 06,写保持寄存器 0x00,0xC8 寄存器 200,对应的是发射红外信号键值 0 0x00,0x01 数据内容 01 0xC8,0x70 CRC-16-Modbus-Rtu 检验数据 示例二:简码协议发送键值 0 电脑发送: 0x55,0xAA 固定的数据头 0x03 操作码 03,发送红外键值 0x00 键值 0 0x02 累加和校验,0X55+0XAA+0X03+0x00=0x102,只保留一字节就是 0x02 控制器针对电脑发送: 0x55,0xAA 固定的数据头 0x03 操作码 03,发送红外键值 0x01 结果值:1 发送成功,0 发送失败 0x02 累加和校验,0X55+0XAA+0X03+0x01=0x103,只保留一字节就是 0x03 2.3 场景二:控制器+RS485 电路用于工业领域 此场景常用于工控领域,比如远程控制空调、加湿机针对档案管理室、变电站、机房进行恒温恒湿控制。无需额外加单片机,不需要开发单片机代码,直接加电源电路、RS485 电路即可。 2.4 场景三:控制器+单片机实现复杂的功能 此应用场景常用于智能家居、工控领域,通过单片机挂载其他的传感器可以轻松实现复杂的功能。比如单片机挂载语音识别模块,再挂载控制器,则可实现语音控制空调,台灯,风扇……。 此模式下建议短接短路点,采用简码通信协议,开发简单。 接工控主机,或者电脑端的 USB 转 485 设备。 三、上位机使用说明 使用 USB 转 485 工具进行连接,将 USB 插上电脑,打开资料包里面有驱动,安装完驱动之后打开上位机软件,选择对应的串口号,设置出厂默认的波特率 9600,点击打开按钮,之后点击读取信息,显示设备连接成功。 3.1 键值学习和测试 点击开始学习按钮,则控制器会进入红外学习的状态,此时指示灯亮,需要在 20 秒内将被学习的遥控器对准控制器的接收头,距离 1 米,轻点遥控器按键,学习成功之后控制器指示灯熄灭。之后将控制器的发射头对准被测试的设备,点击测试键值,如果设备有相应的反应,则代表学习成功,若学习失败,请重试学习步骤,重新学习。 在上位机的最下方有串口通信数据收发信息显示(下面仅以简码协议做说明,Modbus 类似): 发:[0x55,0xAA 数据头]+[0x02 命令(进入红外学习)]+[0x04 键值 4]+[0x05 校验] 收:[0x55,0xAA 数据头]+[0x02 命令(进入红外学习)]+[0x01 操作结果有效]+[0x02 校验] 发:[0x55,0xAA 数据头]+[0x03 命令(发射红外信号)]+[0x04 键值 4]+[0x06 校验] 收:[0x55,0xAA 数据头]+[0x03 命令(发射红外信号)]+[0x01 操作结果有效]+[0x03 校验] 3.2 键值学习状态查询 点击“读取学习状态”按钮,可查询 48 个键值的学习状态,打钩的代表已经学习。 在下方会有收发信息,55 AA 为数据头,01 是指令码,代表查询学习状态,后面 8 字节数据转换成 8 个 8 位,一共 64 位二进制数,代表:键值 63、键值 62、键值 61、键值 60……键值 2、键值 1、键值 0 共 64 个键值的学习状态。1 为学习成功,0 代表没有学习,因为 IR02 只有 48 个键,所以 8 字节数据只有低位的 6 个字节有效。 TX:55 AA 01 00 RX:55 AA 01 00 00 80 00 00 00 01 03 84 上图 8 个数据:00 00 80 00 00 00 01 03,取右边 6 字节 80 00 00 00 01 03 表示 48 键学习状态,转换成 2 进制是: 1000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0000 0011 代表键值 0、1、8、47 键值已经学习成功。 3.3 键值改名 为了方便使用红外控制器,上位机软件上面的键值名称可以被修改并保存。 3.4 导出导入红外学习码库文件 为了方便批量生产产品,免除反复的进行遥控学习,通过上位机的红外学习码库管理,可以轻松地批量下载码库文件。首先取一个控制器,将需要学习的键值全部学习并测试通过,之后点击“从设备导出所有的学习码库”按钮,等待导出完成,之后点击保存按钮,文件会以当前日期时间命名并且保存到软件所在的目录位置,之后可以自行修改文件名称,存档备用。然后可以更换成其他的控制器,再点击“导入学习码库到设备”按钮,进行其他控制器的快速配置。码库导入导出的时候可以将波特率设置最高,以加快速度,导完了之后改为低波特率。 四、简码通信协议 当焊接了短路点时,通信协议运行于简码协议。 4.1 通信协议格式 协定一套通信协议,为的是更可靠的将红外学习控制器与 MCU 控制器进行通信,协议码由:起始码(2 字节)+指令码(1 字节)+数据码(n 字节)+校验码(1 字节)组成。并且一条指令,需要在 100mS 内发送完成,超时未发送完的,视为无效指令。 起始码:0x55, 0xAA 指令码: 0x01:查询红外学习键值 TX:0x55,0xAA,0x01,0x00 RX:0x55,0xAA,0x01,【0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF】,0xFD 0x02:指定键值进入学习状态 TX:0x55,0xAA,0x02,0x05,0x06 RX:0x55,0xAA,0x02,【0x01】,0x02 0x03:指定键值发射红外信号 TX:0x55,0xAA,0x03,0x05,0x07 RX:0x55,0xAA,0x03,【0x01】,0x08 0x04:设置通信波特率 TX:0x55,0xAA,0x04,0x02,0x05 RX:0x55,0xAA,0x04,【0x01】,0x06 数据码:不同的指令后面的数据码数量不同 校验码:校验码指的是从起始码开始,到最后一个数据码的 8 位累加和溢出值作为校验码。例如:0x55+0xAA+0x04+0x02+0x01 = 0x106,只取 8 位,就是 0x06 4.2 通信协议,命令详述 命令说明MCU/上位机 发送控制器回码1查询红外学习结果0x55,0xAA,0x01,0x00无数据位0x55,0xAA,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x138 字节数据位,转换成 64 位的二进制数,就代表着 64 个键值的学习状态(IR02 有 48 个键),1 已学习,0 未学习。从最右边的数据 0 位开始,至最左边的数据 63 位,分别代表键值 0……键值 63。0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13 表示键值 0、1、4 已学习,其他的键值未学习2指定对应的键值开始学习红外0x55,0xAA,0x02,0x05,0x061 字节的数据位,取值范围 0……470x55,0xAA,0x02,0x01,0x021 字节的数据位,若是 0 代表操作无效(可能没有这个键值),1 代表操作有效(不代表学习成功了)。进入学习状态需要在 20 秒内进行键值学习,超时视为学习失败。3发射键值0x55,0xAA,0x03,0x05,0x071 字节数据位,数据取值范围 0……470x55,0xAA,0x03,0x01,0x031 字节的数据位,若是 0 代表操作无效(可能没有这个键值或没有学习),1 代表操作有效4设置通信波特率0x55,0xAA,0x04,0x02,0x051 字节数据位0:24001:48002:9600(出厂默认)3:192004:1152000x55,0xAA,0x04,0x01,0x041 字节数据位,若是 1 表示成功,若是 0 表示修改失败修改波特率之后,断电重启都是以新的波特率在工作 五、MODBUS 通信协议 控制器默认没焊接短路点,通信协议运行于 Modbus-RTU 协议。 5.1 通信协议简述 采用标准 MODBUS-RTU 通信协议,能很方便的对接市面上大部分的工业设备,或者对接组态软件,甚至对接 PLC 设备。 寄存器地址PLC地址操作码说明04000103/06485 通信地址偏移量14000203/06485 通信波特率1004010106键值 0 进入红外学习1014010206键值 2 进入红外学习……………………1474024806键值 47 进入红外学习2004020106键值 0 发射红外信号2014020206键值 2 发射红外信号……………………2474024806键值 47 发射红外信号3004030103键值 15……0 学习状态参数3014030203键值 31……16 学习状态参数3024030303键值 47……32 学习状态参数3034030403键值 63……48 学习状态参数 六、尺寸图 七、附件 7.1 简码协议的校验计算方法,累加和校验 u8 UartCrc(u8 *buf, u8 lenth) { u8 temp = 0; u8 i; for (i = 0; i < lenth; i++) { temp += buf[i]; } return temp; } Uart1_Tx_Dat[0] = 0x55; Uart1_Tx_Dat[1] = 0xAA; Uart1_Tx_Dat[2] = 0x01; Uart1_Tx_Dat[3] = UartCrc(Uart1_Tx_Dat, 3); Uart_Sendstr_lenth(Uart1_Tx_Dat,4); 八、版本历史 V1.0:2022.07.09 修订 V1.1:2022.08.03 完善部分细节描述,更换部分图片,新增板载短路点焊接描述,新增简码通信协议的描述 V1.2:2023.02.18 新增控制器板载的串口 TTL 描述 --- ### 632. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1.模块概述 M-220 是一款 DMX512 与 RS485 信号转换模块,支持多种工作模式,适用于舞台灯光、LED 灯带控制等场景。 主要功能: DMX512 信号转 RS485/232 信号 RS485/232 信号转 DMX512 信号 DMX512 信号转 SPI 信号(控制灯带) 自定义 RS485 指令(最多 30 组) 应用场景: 舞台灯光控制 LED 灯带控制 投影幕布控制 其他需要 DMX512 或 RS485 信号的设备 2.技术参数 供电:DC 9V--24V,电流 > 0.5A(推荐使用 12V/1A 适配器) 接口: DMX512 信号接口 RS485 信号接口 USB-5V--DC1.35 插座 工作模式: d2U:DMX 转 RS485(内置固定命令) r2d:RS485 转 DMX d2r:DMX 转 RS485(批量定时源) SPI:DMX 转 SPI(控制灯带) d2C:DMX 转自定义 RS485 指令 波特率:默认 9600,可设置为 19200、115200、250000、256000、512000 通道数:最大支持 512 个 DMX 通道 3. 模块设置 3.1 菜单操作方法 进入菜单: 模块通电后,同时按下“+”与“-”键 3 秒,显示“SET”字样时松开。 菜单选项: Adr:设置 DMX 地址(长按“+”键进入设置)。 -SP:设置 SPI 模式速率(800K 或 400K)。 run:设置工作模式(d2U、r2d、d2r、SPI、d2C)。 保存设置: 长按“+”键 3 秒,显示“ooo”字样后松开。 3.2 恢复出厂设置 断电。 同时按下“+”与“-”键。 再上电,保持按键 8 秒以上,显示“cL_”。 显示“rES”时松开按键,恢复出厂设置。 说明手册下载: M-220串口转DMX模块 功能说明-通道表-V1.5下载 M-220_RS485转DMX512-通道例子图示下载 RS232-DMX512盒子协议命令表(M-220-M-228)_V18_A下载 4. 工作模式详解 4.1 DMX 转 RS485 模式(d2U) 功能:输入 DMX512 信号,触发内置固定 RS485 指令。 设置方法: 进入菜单,选择“run”。 长按“+”键 3 秒,选择“d2U”。 再长按“+”键 3 秒保存。 通道表: 4.2 RS485 转 DMX512 模式(r2d) 功能:输入 RS485 指令,转为 DMX512 信号。 设置方法: 进入菜单,选择“run”。 长按“+”键 3 秒,选择“r2d”。 再长按“+”键 3 秒保存。 示例指令: 例 1:在第 1 个通道地址(计算机用 00 开始)开始,发 15 个通道 1---15 的数 C8 00 0F C7 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 例 2:在第 466(466-1=465,十六进制是 01D1)地址开始,发 15 个通道 1---15 的数 C8 00 0F C7 00 00 01 D1 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 例 3:在第 467(467-1=466,十六进制是 01D2)地址开始,发 6 个通道 01---06 的数 C8 00 06 C7 00 00 01 D2 01 02 03 04 05 06 例 4:简易速发指令 a) 所有通道值为 0x7F: C8 00 01 C0 01 00 00 7F 7F b) 所有通道值为 0x00: C8 00 01 C0 01 00 00 00 00 c) 所有通道值为 0xFF: C8 00 01 C0 01 00 00 FF FF 4.3 DMX 转 RS485 批量定时源模式(d2r) 功能:输入 DMX512 信号,转为 RS485/232 通道值按顺序输出,在模块上设置 run 模式为:d2r 设置方法: 进入菜单,选择“run”。 长按“+”键 3 秒,选择“d2r”。 再长按“+”键 3 秒保存。 波特率设置: a).此模式默认波特率为 115200, 如果输出通道较多时,请用指令把波特率改高为 256000。以确保传输实时性。 更改串口波特率, 批量发送数据时必须要用高速!设置好先返回值马上生效。确认返回值后用户要马上切换 对应的波特率.断电后下次上电会恢复 9600,以免用户连不上。 D0=00:9600 D0=01:19200 D0=02:115200 D0=03:250000 D0=04:256000 D0=05:512000 例 1、设置波特率为 115200, d0=02 即 115200, C8 00 01 CB 00 00 00 00 02 例 2、设置波特率为 250000, d0=03 即 250000, C8 00 01 CB 00 00 00 00 03 b).上电默认是发送 32 个通道到串口 485 中的,发多少个通道可以自已用指令定义的。 例 1、DMX 数据从 00 01 地址码开始,共 0F 个数: C8 00 01 D2 00 00 00 00 0F 例 2、DMX 数据从 00 09 地址码开始,共 1F 个数: C8 00 09 D2 00 01 00 00 1F 停止自动向 RS485 发送:C8 00 01 D0 00 00 00 00 00 4.4 DMX 转 SPI 模式(控灯带) 功能:输入 DMX512 信号,控制灯带(如 WS2812、WS2811)。 设置方法: 进入菜单,选择“run”。 长按“+”键 3 秒,选择“SPI”。 再长按“+”键 3 秒保存。 设置: 常用的单线灯带信号如: 显示:400, 低速 400K 速率的 WS2811/ ucs16703/TM1804 等兼容灯带信号, 每个像素点单独控; 显示:800, 高速 800K 速率的 WS2812/2815/2813 等兼容灯带信号, 每个像素点单独控;; 显示:814, 输出为 TM1814 的专用灯带信号; 显示: Auu, 800k 速率,用 1 个通道值控制所有像素点调光,即相当于白光。 显示: A-3, 800k 速率,用 3 个通道值控制所有像素点 RGB 调光,即相当 3 个通道控制所有像素。 显示: A-4, 800k 速率,用 4 个通道值控制所有像素点 RGBW 调光,即相当 4 个通道控制所有像素。 按顺序输出 512 个通,即 512/3=170 点像素的 RGB, DMX 接收的起始地址码可调。 在模块上设置 run 模式为:SPI。 保存后,断电重启生效。 出厂默认为 WS2812 灯带信号 4.5 DMX 触发自定义 RS485 模式(d2C) 功能:输入 DMX512 信号,触发自定义 RS485 指令(最多 30 组)。 设置方法: 进入菜单,选择“run”。 长按“+”键 3 秒,选择“d2C”。 再长按“+”键 3 秒保存。 自定义命令格式: C8 00 Len CD 00 Pos 00 00 d0 d1 .......dn Len:指令长度(1--15 字节) Pos:存储位置(1--30) d0-dn:自定义数据 5. 附录 5.1 通道表(d2U 模式) 序号 | DMX 值范围 | RS485 输出数据(十六进制) | 备注 0 | 0--7 | 不动作,不发指令 1 | 8--15 | 01 06 00 0B 00 00 F8 08 2 | 16--23 | 01 06 00 0B 00 C8 F9 9E 3 | 24--31 | 01 06 00 0B 01 2C F8 45 4 | 32--39 | 01 06 00 0B 01 90 F9 F4 5 | 40--47 | 01 06 00 0B 01 F4 F8 1F ... 30 | 240--247 | 发送 8CH-DMX 通道【CH2--9】 31 | 248--255 | 不动作 5.2 自定义命令格式(d2C 模式) C8 00 Len CD 00 Pos 00 00 d0 d1 .......dn Len:指令长度(1--15 字节) Pos:存储位置(1--30) d0-dn:自定义数据 5.3 波特率设置表 D0=00:9600 D0=01:19200 D0=02:115200 D0=03:250000 D0=04:256000 D0=05:512000 视频教程 DMX批量转RS485信号-演示 DMX512触发固定485指令 r2d模式-485转DMX发送指令控灯-讲解 6通道Par灯RS485转DMX信号 d2C下载自定义RS485指令 6. 常见问题解答 Q1:如何恢复出厂设置? 断电,同时按下“+”与“-”键,再上电,保持按键 8 秒以上,显示“cL_”后松开。 Q2:如何进入自定义命令下载模式? 按住“+”键不放,再给模块通电,显示“_ _ ”,等待 10 秒左右显示“cd”字样后松开。 Q3:如何保存自定义命令? 下载指令后,发送保存指令:C8 EF AA CD 00 55 F0 A5。 Q4:模块上电后显示什么? 模块上电时显示当前工作模式(如“d2U”、“r2d”等)。 --- ### 633. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 智能红外控制器是一款集红外遥控、状态监测与智能通信于一体的工业级控制设备。采用进口元件与专利技术设计,支持RS485、BLE5.1双模通信,兼容Modbus-RTU协议,可通过微信小程序或PLC组态实现远程控制。内置万能红外码库与64路学习通道,广泛应用于智慧酒店、工业节能、智能楼宇等场景,提供高可靠性的红外设备集成控制解决方案。 二、技术参数 类别参数详情电源输入DC 8V-28V宽电压,支持工业级电源适配通信接口RS485(A/B端子) + BLE5.1双模通信协议支持Modbus-RTU、蓝牙BLE5.1协议红外发射板载大功率红外管(无障碍距离>5米),支持外接延长线存储容量64通道红外学习存储,支持批量配置控制精度支持NEC/RC-5标准红外码,空调状态实时反馈环境适应性工业级防护,导轨式安装,-20℃~70℃工作温度 三、核心功能亮点 全能控制 内置空调/电视/机顶盒红外码库,免学习直接控制 支持空调温度、模式、风速等精细化调节 智能互联 双通道通信:RS485(Modbus-RTU)对接PLC/组态系统,BLE5.1直连微信小程序 微信小程序一键配网,手机端实时调试与发码测试 高效部署 64通道红外波形学习,支持投影仪、风扇等非标设备控制 批量读取/配置功能,适用于多房间快速复制部署 工业级设计 宽电压输入(12V-24V),适应复杂电力环境 四、安装与接线说明 安装步骤 机械固定 圆形设计安装,确保设备水平固定 电源连接 接入DC 12V-24V电源至DC IN端子(红线+V,黑线-GND) 通信接线 RS485通信:连接A+/B-至控制器总线(建议使用屏蔽双绞线) 注意事项 ⚠️ 接线前务必断电操作⚠️ RS485总线需终端匹配120Ω电阻(长距离通信时) 五、通讯协议及调试工具 一、通信协议帧 1. 通讯方式: UART 波特率:9600 数据位:8 停止位:1 校验位:无 流控:无  符合 Modbus-RTU 协议格式标准,地址范围 1-255。 2. Modbus-RTU 协议概述 2.1 读取多个寄存器命令,适用于功能码-03H 主机发送命令: 地址功能码起始寄存器地址读取寄存器个数校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高8位 从机返回信息: 地址功能码返回数据字节长度数据 1数据 2数据 N校验码(CRC16)1Byte1Byte1Byte1Byte1Byte1 Byte1 ByteN Byte1Byte1Byte设备地址功能码值N高 8 位低 8 位高 8 位低 8 位.....低 8 位高 8 位 2.2 写单个寄存器,适用于功能码-06H 主机发送命令: 地址功能码寄存器地址写入数据校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 从机返回信息: 地址功能码寄存器地址写入数据校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 2.3 写多个寄存器,适用于功能码-10H 主机发送命令: 地址功能码起始寄存器地址写入数据个数写入字节长度数据 1数据 2...数据 N校验码(CRC16)1Byte1 Byte1 Byte1 Byte1 Byte1 Byte1 Byte2 Byte2 Byte...2 Byte1 Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位1-255高低高低...高低低 8 位高 8 位 从机返回信息: 地址功能码起始寄存器地址写入寄存器个数校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 2.4 蓝牙通信协议 起始符数据长度选项字段报文序列号用户数据段 校验码(CRC16)结束符2 Byte2 Byte1 Byte4 ByteN Byte1 Byte1 Byte2 ByteFF55HLenOPTSqueDataCRC_HCRC_LFFAAH固定  0xFF55协议数据 总长度, 高 8 位在 前 ,低 8 位在后08H-代表需要从设备回复应答 00H-代表蓝牙发送的数据芯片 无需回复应答04H-代表芯片主动发起的数据 上报,需要芯片自己增加唯一 序列号上报18H-代表蓝牙与串口数据透传唯一报文序列号填充 Modbus-RTU 数 据,参照 Modbus-RTU 数 据协议高8位低 8 位固定  0xFFAA1. 蓝牙控制指令案例:关闭空调数据测试协议蓝牙发送:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 蓝牙返回:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 2. 透传例程案例:参考寄存器 3000H串口上报数据:A5 10 30 00 00 01 02 11 22 D0 DD蓝牙收到数据:FF 55 00 0F 18 00 00 00 63 11 22 B4 82 FF AA 串口上报数据:A5 10 30 00 00 01 04 11 22 33 44 01 5A蓝牙收到数据:FF 55 00 11 18 00 00 00 02 11 22 33 44 BC A9 FF AA 蓝牙下发透传数据:FF 55 00 15 18 01 02 03 04 A5 06 00 25 00 00 81 25 0C 6B FF AA 芯片串 口输出数据:A5 06 00 25 00 00 81 25 蓝牙下发透传数据:FF 55 00 11 18 00 00 00 02 11 22 33 44 BC A9 FF AA 芯片串口输出数据:11 22 33 44 3. 功能码寄存器表(适配功能码 03H、06H、10H) 寄存器内容寄存器地址数据类型读/写类型寄存器值说明固件版本号0000H无符号短整型只读-芯片固件版本号。芯片 ID0001H无符号短整型只读-芯片唯一标识符。设备地址0002H无符号短整型可读写1~255RS485 设备地址。通信波特率0003H无符号短整型可读写0-24001-48002-96003-144004-192005-384006-560007-576008-1152009-12800010-23040011-15600012-46080013-50000014-51200015-60000016-75000017-92160018-100000019-150000020-2000000串口通信波特率(默认 9600)。MAC 地址0004H-0006H无符号短整型只读-6 字节 MAC 地址,占用 3 个寄存器空间。保留0007H-0008H无符号短整型保留-保留寄存器,不建议使用。芯片复位0009H无符号短整型可写-写入特定值以复位芯片。保留000AH-000FH无符号短整型保留-保留寄存器,不建议使用。空调匹配0010H无符号短整型可写-空调一键匹配控制寄存器。电视匹配0011H无符号短整型暂不支持-暂不支持。机顶盒匹配0012H无符号短整型暂不支持-暂不支持。风扇匹配0013H无符号短整型暂不支持-暂不支持。投影仪匹配0014H无符号短整型暂不支持-暂不支持。其他设备匹配0015H无符号短整型暂不支持-暂不支持。启动红外学习0016H无符号短整型可写-启动红外学习模式,可录制 64 通道红外波形。退出红外学习0017H无符号短整型可写-退出红外学习模式。测试红外学习0018H无符号短整型可写-测试学习到的红外波形。遥控 NEC 发码0019H-001AH无符号整型可写-发送 NEC 格式红外遥控码波形。遥控 RC-5 发码001BH-001CH无符号短整型可写-发送 RC-5 格式红外遥控码波形。蓝牙房间编号001DH无符号短整型可写-设置蓝牙广播名称中的房间编号。AD 管脚配置001EH无符号短整型可写-配置 ADIN/RS485 管脚功能。AD 采集电源阈值配置001FH无符号短整型可写-设置 AD 采集电源阈值,单位为 10mV。空调码库代号0020H无符号短整型可读写-空调匹配的码库代号。电视码库代号0021H无符号短整型可读写-电视匹配的码库代号。机顶盒码库代号0022H无符号短整型可读写-机顶盒匹配的码库代号。保留0023H-0024H无符号短整型保留-保留寄存器,不建议使用。空调电源状态0025H无符号短整型可读写0-关闭1-开启空调电源状态。空调温度状态0026H无符号短整型可读写0-16℃1-17℃...E-30℃空调温度状态寄存器。空调模式状态0027H无符号短整型可读写0-自动1-制冷2-除湿3-送风4-制热空调模式状态寄存器。空调风速状态0028H无符号短整型可读写0-自动风速1-一档风2-二档风3-三档风空调风速状态寄存器。空调灯光状态0029H无符号短整型可读写0-关灯1-开灯空调灯光状态寄存器。空调组合状态(下面提供具体说明)002AH-002CH无符号短整型可读写-空调组合状态控制寄存器。电视电源控制002DH无符号短整型可读写00H-关闭01H-开启电视电源键发码。电视音量002EH无符号短整型可读写0-音量减1-音量加电视音量控制寄存器。电视频道002FH无符号短整型可读写0-频道减1-频道加电视频道控制寄存器。电视信号源0030H无符号短整型可读写0-不切换1-切换频道电视信号源切换寄存器。电视返回按键0031H无符号短整型可读写0-不执行1-执行返回电视返回按键切换寄存器。机顶盒组合状态0032H-0034H无符号短整型暂不支持-机顶盒组合状态,暂不支持。机顶盒电源0035H无符号短整型可读写00H-关闭01H-开启机顶盒电源状态。机顶盒音量0036H无符号短整型可读写0-音量减1-音量加机顶盒音量控制寄存器。机顶盒频道0037H无符号短整型可读写0-频道减1-频道加机顶盒频道控制寄存器。机顶盒信号源0038H无符号短整型可读写0-不切换1-切换频道机顶盒信号源切换寄存器。机顶盒返回0039H无符号短整型可读写0-不执行1-执行返回机顶盒返回按键切换寄存器。互感器设备开关状态003AH无符号短整型只读0-关机1-开机外接互感器设备检测设备开关机状态。ADC 采集值003BH无符号短整型只读-读取 ADC 采样的值(代表电压值:10mV 为单位)。保留003CH-003FH无符号短整型保留-保留寄存器,不建议使用。空调本地代号0040H无符号短整型可读写-本地码库代号寄存器。空调控制代号0041H无符号短整型可读写-指令控制代号寄存器。空调电源状态0042H无符号短整型可读写0-关闭1-开启空调单一电源状态。空调温度状态0043H无符号短整型可读写16-31℃空调温度状态寄存器。空调模式状态0044H无符号短整型可读写0-自动1-制冷2-除湿3-送风4-制热空调模式状态寄存器。空调风速状态0045H无符号短整型可读写0-自动风速1-一档风2-二档风3-三档风空调风速状态寄存器。空调灯光状态0046H无符号短整型可读写0-关灯1-开灯空调灯光状态寄存器。保留0047H-0531H无符号短整型保留-保留寄存器,不建议使用。红外学习通道 1~620532H-114DH无符号短整型可读写-每个通道分配 100 个字节空间。红外学习通道 63114EH-1180H无符号短整型可读写-每个红外录制波形占用 100 个字节,占用 50 个寄存器。蓝牙透传数据寄存器3000H无符号短整型可读写-串口上报蓝牙数据透传格式。 CRC16校验工具下载: 本工具用于快速求出MODBUS通信中CRC16校验值。在输入框输入十六进制数据包(每两个字符表示一个字节,字符数必须是偶数),每个字节之间用空格隔开。点击计算后,本计算器可求出输入数据包的长度的16进制校验码。 协议示例: 协议说明 本协议默认地址为 A5。用户需要先将地址设置为 A5 进行测试。 1. 设置从设备地址 发送:FF 06 00 02 00 A5 FD AF 返回:FF 06 00 02 00 A5 FD AF 2. 固件版本号 发送:FF 03 00 00 00 01 91 D4 返回:FF 03 02 00 01 90 53 说明:固件版本号为 0x0001。 3. 芯片ID号 发送:FF 03 00 01 00 01 C0 14 返回:FF 03 02 50 56 2D AE 说明:芯片ID为 0x5056。 4. 设备从地址寄存器 设置地址: 发送:FF 06 00 02 00 A5 FD AF 返回:FF 06 00 02 00 A5 FD AF 获取地址: 发送:FF 03 00 02 00 01 30 14 返回:FF 03 02 00 A5 51 EB 说明:设备地址为 0xA5。 5. 串口通信波特率设置寄存器 波特率映射表: 值波特率024001480029600314400419200538400656000757600811520091280001023040011156000124608001350000014512000156000001675000017921600181000000191500000202000000 获取波特率: 发送:A5 03 00 03 00 01 6D 2E 返回:A5 03 02 00 02 48 5C 说明:波特率为 9600。 6. 空调匹配控制寄存器 匹配空调: 发送:A5 06 00 10 00 01 50 EB 超时返回:A5 06 00 10 80 03 B0 EA 匹配失败:A5 06 00 10 80 03 B0 EA 匹配成功:A5 06 00 10 00 4F D0 DF 说明:匹配到代码号 0x004F。 7. 启动红外学习模式 学习通道: 发送:A5 06 00 16 00 3F 31 3A 返回:A5 06 00 16 00 3F 31 3A 学习完成:A5 06 00 16 80 02 91 2B 学习超时:A5 06 00 16 80 03 50 EB 示例: 发送:A5 06 00 16 00 00 71 2A 返回:A5 06 00 16 80 02 91 2B 8. 退出红外学习模式 发送:A5 06 00 17 00 3F 60 FA 返回:A5 06 00 17 00 3F 60 FA 9. 测试红外学习波形 发送:A5 06 00 18 00 3F 50 F9 返回:A5 06 00 18 00 3F 50 F9 示例: 发送:A5 06 00 18 00 00 10 E9 10. 发送指定数据的NEC码红外波形 发送:A5 10 00 19 00 02 04 00 FF 01 FE 95 DB 返回:A5 10 00 19 00 02 89 2B 说明:发射NEC波形:00 FF 01 FE。 11. 空调码库代号 设置代码号: 发送:A5 06 00 20 02 E4 90 0F 返回:A5 06 00 20 02 E4 90 0F 获取代码号: 发送:A5 03 00 20 00 01 9C E4 返回:A5 03 02 02 E4 C8 B6 说明:空调代码号为 740。 12. 电视码库代号 设置代码号: 发送:A5 06 00 21 00 03 80 E5 返回:A5 06 00 21 00 03 80 E5 获取代码号: 发送:A5 03 00 21 00 01 CD 24 返回:A5 03 02 00 03 89 9C 说明:电视代码号为 3。 13. 机顶盒码库代号 设置代码号: 发送:A5 06 00 22 00 0B 71 23 返回:A5 06 00 22 00 0B 71 23 获取代码号: 发送:A5 03 00 22 00 01 3D 24 返回:A5 03 02 00 0B 88 5A 说明:机顶盒代码号为 11。 14. 空调状态寄存器 - 组合状态 发送:A5 10 00 2A 00 03 06 02 E4 AA 10 00 00 18 06 返回:A5 10 00 2A 00 03 B8 E4 002A寄存器:空调代码号,高位在前 002B寄存器:高位相当于红外协议状态码1 低位相当于红外协议的状态码2 002C寄存器:高位相当于红外协议的按键码 低位参数为0使用指令中的代码号 参数为1使用本地代码号 返回:A5 10 00 2A 00 03 B8 E4 15. 空调状态寄存器 - 电源状态 控制空调开关: 发送:A5 06 00 25 00 01 40 E5 返回:A5 06 00 25 00 01 40 E5 说明:空调开启。 关闭空调: 发送:A5 06 00 25 00 00 81 25 返回:A5 06 00 25 00 00 81 25 获取空调电源状态: 发送:A5 03 00 25 00 01 8C E5 返回:A5 03 02 00 00 C9 9D 说明:空调为关机状态。 16. 空调状态寄存器 - 温度状态 控制空调温度: 发送:A5 06 00 26 00 0E F0 E1 返回:A5 06 00 26 00 0E F0 E1 说明:空调温度设置为 30°C。 获取空调温度状态: 发送:A5 03 00 26 00 01 7C E5 返回:A5 03 02 00 0E 48 59 说明:空调温度为 30°C。 17. 空调状态寄存器 - 模式状态 控制空调模式: 发送:A5 06 00 27 00 04 21 26 返回:A5 06 00 27 00 04 21 26 说明:空调模式设置为 制热。 获取空调模式状态: 发送:A5 03 00 27 00 01 2D 25 返回:A5 03 02 00 04 C8 5E 说明:空调模式为 制热。 控制空调模式(0:自动 1:制冷 2:除湿 3:送风 4:制热) 18. 空调状态寄存器 - 风速状态 控制空调风速: 发送:A5 06 00 28 00 03 50 E7 返回:A5 06 00 28 00 03 50 E7 说明:空调风速设置为 三级。 获取空调风速状态: 发送:A5 03 00 28 00 01 2D 25 返回:A5 03 02 00 03 89 9C 说明:空调风速为 三级。 控制空调风速(0:自动 1:一级 2:二级 3:三级) 19. 空调状态寄存器 - 灯光状态 控制空调屏显: 发送:A5 06 00 29 00 01 80 E6 返回:A5 06 00 29 00 01 80 E6 说明:空调屏显开启。 获取空调屏显状态: 发送:A5 03 00 29 00 01 4C E6 返回:A5 03 02 00 01 08 5D 说明:空调屏显为 开启。 20. 电视状态寄存器 - 电源状态 发送:A5 06 00 2D 00 01 C1 27 返回:A5 06 00 2D 00 01 C1 27 21. 电视状态寄存器 - 音量状态 发送:A5 06 00 2E 00 01 31 27 返回:A5 06 00 2E 00 01 31 27 发电视音量码(1:音量加 0:音量减) 22. 电视状态寄存器 - 频道状态 发送:A5 06 00 2F 00 01 60 E7 返回:A5 06 00 2F 00 01 60 E7 发电视频道码(1:频道加 0:频道减) 23. 电视状态寄存器 - 信号源状态 发送:A5 06 00 30 00 01 51 21 返回:A5 06 00 30 00 01 51 21 24. 电视状态寄存器 - 返回状态 发送:A5 06 00 31 00 01 00 E1 返回:A5 06 00 31 00 01 00 E1 25. 机顶盒状态寄存器 - 电源状态 发送:A5 06 00 35 00 01 41 20 返回:A5 06 00 35 00 01 41 20 26. 机顶盒状态寄存器 - 音量状态 发送:A5 06 00 36 00 01 B1 20 返回:A5 06 00 36 00 01 B1 20 发机顶盒音量码(1:音量加 0:音量减) 27. 机顶盒状态寄存器 - 频道状态 发送:A5 06 00 37 00 01 E0 E0 返回:A5 06 00 37 00 01 E0 E0 发机顶盒频道码(1:频道加 0:频道减) 28. 机顶盒状态寄存器 - 信号源状态 发送:A5 06 00 38 00 01 D0 E3 返回:A5 86 01 C2 43 说明:机顶盒无信号源数据。 29. 机顶盒状态寄存器 - 返回状态 发送:A5 06 00 39 00 01 81 23 返回:A5 06 00 39 00 01 81 23 30. 下载空调dp数据1 (0x0100-0x04bf) 数据帧示例: 第一帧:A5 10 01 00 00 78 F0 03 45 29 2D 13 43 42 36 02 15 01 04 A2 AC A7 B5 B0 B1 B2 AD FF 05 A1 AE FF 07 A1 AE FF 06 A6 FF 08 A3 FF 03 AB B3 FF 02 A8 FF 00 A8 FF 01 8D 9D FF 00 FF FF 02 01 00 00 01 00 02 00 00 02 01 00 00 02 00 00 00 00 02 00 00 03 00 01 01 03 00 02 03 00 00 04 01 05 03 04 00 00 04 00 00 00 01 06 00 01 FF 02 00 FF 02 01 FF 02 31 FF 07 32 33 34 35 36 37 FF 06 B2 4D 00 00 00 00 06 B5 4A F5 00 00 00 06 B2 4D 7B 84 E0 1F 06 B2 4D 0F F0 E0 1F 06 B2 4D 6B 94 E0 1F 0C B2 4D E0 1F 03 FC B2 4D 00 00 00 00 12 B3 88 9A AA AA D7 B4 AA FF 40 66 FD B2 4D BF 40 D0 2F 00 00 11 11 30 1B 23 1B 6B A2 00 80 13 00 25 9D C0 FF FF FF FF FF 00 00 11 11 30 1B 23 1B 6B E0 00 80 13 00 25 9D C0 FF FF FF FF FF 00 00 11 11 30 1B 23 1B 6B 80 00 00 FF 98 1A 第二帧:A5 10 01 78 00 78 F0 02 25 9D C0 FF FF FF FF FF 01 FF 0C 40 0B FF 06 C0 00 05 06 00 01 FF FF 0C 00 0B FF 04 C0 00 03 04 00 01 FF FF 0C 40 0B FF 0C C0 00 0B 0C 00 01 FF FF 0C 00 0B FF 0A C0 00 09 0A 00 01 FF FF 01 FF 01 FF FF 1E 20 03 FF BF 21 03 FF 9F 22 03 FF 5F 23 03 FF 3F 10 03 FF 1F 12 03 FF 1F 10 05 0C 08 12 05 0C 04 14 05 0C 0C 52 05 F0 10 53 05 F0 30 54 05 F0 20 55 05 F0 60 56 05 F0 70 57 05 F0 50 58 05 F0 40 59 05 F0 C0 5A 05 F0 D0 5B 05 F0 90 5C 05 F0 80 5D 05 F0 A0 5E 05 F0 B0 13 05 FC E4 20 08 FF 66 21 08 FF 28 22 08 FF 3C 23 08 FF 50 10 08 FF 65 12 08 FF 65 09 09 80 80 46 80 06 7F 00 81 06 7F 03 82 06 7F 07 83 06 7F 0B 84 06 7F 0F 85 06 7F 13 86 06 7F 17 87 06 7F 1B 88 06 7F 1F 89 06 7F 2B 8A 06 7F 27 8B 06 7F 2B 8C 06 D0 25 第三帧:A5 10 01 F0 00 78 F0 7F 2F 99 05 03 01 9A 05 03 01 9B 05 03 01 9C 05 03 01 90 03 1F 00 91 03 1F 03 92 03 1F 07 93 03 1F 0B 94 03 1F 0F 95 03 1F 13 96 03 1F 17 97 03 1F 1B 98 03 1F 1F 99 03 1F 03 9A 03 1F 07 9B 03 1F 0B 9C 03 1F 0F 9D 06 7F 7F 8D 05 03 03 20 03 E0 A0 21 03 E0 80 22 03 E0 40 23 03 E0 20 10 03 E0 00 12 03 E0 00 10 05 0C 08 11 05 0C 00 12 05 0C 04 13 05 0C 00 14 05 0C 0C 50 05 F0 00 51 05 F0 00 52 05 F0 10 53 05 F0 30 54 05 F0 20 55 05 F0 60 56 05 F0 70 57 05 F0 50 58 05 F0 40 59 05 F0 C0 5A 05 F0 D0 5B 05 F0 90 5C 05 F0 80 5D 05 F0 A0 5E 05 F0 B0 5A 06 80 80 5B 06 80 80 5C 06 80 80 5D 06 80 80 5E 06 80 80 20 08 FF 66 21 08 FF 28 22 08 FF 3C 23 08 FF 50 10 08 FF 65 12 08 FF 65 09 09 80 80 08 B0 05 FF A9 B1 05 FF A9 AD BF 65 第四帧:A5 10 02 68 00 3B 76 05 FF A5 A7 05 FF AA B5 05 FF A3 A2 05 FF A2 AC 05 FF A2 B2 05 FF 86 17 20 09 FF BF 21 09 FF 9F 22 09 FF 5F 23 09 FF 3F 10 09 FF 1F 12 09 FF 1F 10 0B 0C 08 12 0B 0C 04 14 0B 0C 0C 52 0B F0 10 53 0B F0 30 54 0B F0 20 55 0B F0 60 56 0B F0 70 57 0B F0 50 58 0B F0 40 59 0B F0 C0 5A 0B F0 D0 5B 0B F0 90 5C 0B F0 80 5D 0B F0 A0 5E 0B F0 B0 12 0B FC E4 01 00 DF A2 结束帧:A5 10 04 48 00 02 04 00 00 00 00 D3 CB 30.1下载空调dp数据2(0x2100-0x24bf) 第一帧:A5 10 21 00 00 78 F0 01 E2 17 05 02 15 16 14 01 79 01 00 A0 A1 AE B0 B1 A2 A3 A4 A5 A6 A8 A9 AC AD B2 B4 AA AB AF B3 FF FF 00 00 00 00 00 01 FF 14 A6 00 00 00 00 00 00 00 00 00 00 00 00 00 B5 00 00 00 00 00 BB BB BB 11 10 22 22 22 67 80 00 00 FF 00 33 00 C0 FF FF FF FF FF 09 40 0B FF 14 C0 00 0F 13 FF 09 00 0B FF 0E C0 00 01 0D FF 5E 20 06 E0 A0 21 06 E0 60 22 06 E0 40 23 06 E0 20 11 08 E0 20 12 08 E0 40 13 08 E0 C0 14 08 E0 80 01 05 40 40 07 05 80 80 51 02 F0 10 52 02 F0 20 53 02 F0 30 54 02 F0 40 55 02 F0 50 56 02 F0 60 57 02 F0 70 58 02 F0 80 59 02 F0 90 5A 02 F0 A0 5B 02 F0 B0 5C 02 F0 C0 5D 02 F0 D0 5E 02 F0 E0 31 02 0F 0C 32 02 0F 02 33 02 0F 04 34 02 0F 06 35 02 0F 08 36 02 0F 0A 37 02 0F 0F 41 03 F0 E0 42 03 F0 20 43 03 F0 05 F2 第二帧:A5 10 21 78 00 78 F0 40 44 03 F0 60 45 03 F0 80 46 03 F0 A0 47 03 F0 C0 61 04 02 02 05 07 40 40 0F 07 80 80 03 09 80 80 0D 09 40 40 09 0B 08 08 8D 04 40 40 9D 04 20 20 6F 04 20 20 81 08 1F 01 82 08 1F 02 83 08 1F 03 84 08 1F 04 85 08 1F 05 86 08 1F 06 87 08 1F 07 88 08 1F 08 89 08 1F 09 8A 08 1F 0A 8B 08 1F 0B 8C 08 1F 0C 91 06 1F 01 92 06 1F 02 93 06 1F 03 94 06 1F 04 95 06 1F 05 96 06 1F 06 97 06 1F 07 98 06 1F 08 99 06 1F 09 9A 06 1F 0A 9B 06 1F 0B 9C 06 1F 0C A9 0D 7F 04 A1 0D 7F 02 AE 0D 7F 02 B0 0D 7F 03 B1 0D 7F 03 A7 0D 7F 19 A5 0D 7F 01 A6 0D 7F 09 A8 0D 7F 05 A0 0D 7F 06 A3 0D 7F 0B A2 0D 7F 08 B2 0D 7F 08 AC 0D 7F 16 AD 0D 7F 15 B4 0D 7F 07 AA 0D 7F 10 AB 0D 7F 0D AF 0D 7F 10 B3 0D 7F 0D 21 11 F0 C0 22 11 F0 80 23 11 F0 A1 30 第三帧:A5 10 21 F0 00 01 02 40 01 B9 65 结束帧:A5 10 24 48 00 02 04 00 00 00 00 4A 0A 测试指令: A5 10 00 2A 00 03 06 FF 02 AA 10 00 00 04 3D 31. 房号(蓝牙名称) 设置房号: 发送:A5 06 00 1D 03 E9 C1 96 返回:A5 06 00 1D 03 E9 C1 96 获取房号: 发送:A5 03 00 1D 00 01 24 1B 返回:A5 03 02 03 E9 08 E3 说明:房号为 1001。 32. 读写学习数据 读取通道63学习数据: 发送:A5 03 11 4E 00 32 B8 10 返回:A5 03 64 FA 56 67 00 4C E0 0C 00 00 71 0F 2B 39 98 04 69 09 8B 13 00 00 40 80 41 81 06 41 82 18 41 C1 40 83 41 C2 40 83 41 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC 00 07 00 00 00 00 00 00 00 00 57 BA 写入通道63学习数据: 发送:A5 10 11 4E 00 32 64 B4 56 67 50 00 71 0D 00 00 71 2B 0E 00 77 04 92 09 00 20 00 00 40 80 41 81 41 82 1E 41 C1 40 80 01 41 C2 40 80 01 41 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B B4 2F 2D 00 00 00 00 00 00 00 FC 12 返回:A5 10 11 4E 00 32 3D D3 33. 配置PB1功能 设置PB1为AD检测: 发送:A5 06 00 1E 00 00 F0 E8 返回:A5 06 00 1E 00 00 F0 E8 获取PB1功能: 发送:A5 03 00 1E 00 01 FD 28 返回:A5 03 02 00 00 C9 9D 说明:功能为 0。 34. 配对AD电压(精度10mV) 设置AD电压为2V: 发送:A5 06 00 1F 00 C8 A0 BE 返回:A5 06 00 1F 00 C8 A0 BE 获取设置的AD电压: 发送:A5 03 00 1F 00 01 AC E8 返回:A5 03 02 00 C8 C8 0B 说明:电压为 2V。 35. 获取开关状态 发送:A5 03 00 3A 00 01 BD 23 返回:A5 03 02 00 01 08 5D 说明:开关状态为 开。 36. 获取PB1电压 发送:A5 03 00 3B 00 01 EC E3 返回:A5 03 02 00 E5 08 16 说明:PB1电压为 2.29V。 37. 获取MAC地址 发送:A5 03 00 04 00 03 5D 2E 返回:A5 03 06 D8 2F E6 59 E8 7E 05 D7 说明:MAC地址为 D8:2F:E6:59:E8:7E。 38. 蓝牙控制数据测试 关闭空调数据测试协议: 蓝牙发送:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 蓝牙接收:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 39. 蓝牙透传数据测试 串口上报数据: 发送:A5 10 30 00 00 01 02 11 22 D0 DD 蓝牙接收:FF 55 00 0F 18 00 00 00 63 11 22 B4 82 FF AA 蓝牙下发透传数据: 发送:FF 55 00 15 18 01 02 03 04 A5 06 00 25 00 00 81 25 0C 6B FF AA 芯片串口输出:A5 06 00 25 00 00 81 25 空调码库列表 Acsom296Akira(爱家乐)650073Alpin134366Amico652073Aqua036Az(5in1)184639640641141Blue Star(蓝星)307097024725Carrier778Carrier(开利)365366097078108109110277276284282280275279283281285278272274273062086064730031Cheblo004146Colrolla651Consul036407Crown(王冠)651Delonghi(德龙)651Dotels779Elco264Electer264652653654Elgin252Fedders(菲达士)274068Ferrolit655First656For.m.mg073Funiki312Gchv008General271Glbal086Glee275Grneral224Helton396Hemilton162Honeywell630Huawei029Ifb004Inverter291Johnso264Kelcinator709Kingshan645Klimatair402650657660073Kris623Kt02_d001653Kt02_d002068Kty001090Kty002069Kty003013Kty004222Kty005332Leader034Lg086087088089090091092093094095642780Loren-sebo660Mabe031Mitsuka658Nikko215Niso265Nokia755Norca659Nuni-air660Onida280643185006074Opal661Original239711Pereg366Philco303304Pilot662Rhoss663Saijo Denk664280149398070Sansui645000252Saowa(首华)396Saporo(沙普罗)651Sensor391Sogo070Sova(索华)687688Speed653Staright-aircon113Sunburg(森宝)178Superen024Tadiair068135134056073281366657Tadiran135134056264Tcl000002001004003005315628629727769Tcl通001000810015264652002812813653811646645643070Teco674068Tornado745Toyo777Toyo(东洋)068154650004349069333Trane(特灵)280366665Uni-air660Unionaire709Videocon305185000Vitron308Voltas301298300299074006252024071048752Ynovik289York296295297395706064027114733047667076734735048736325237791792艾、爱德龙(aidelong)651405650177357326069010154艾普顿396爱特(aite)004239349666154奥克斯015016018017350351019020404021022023024025026027760800奥力(oli)284062奥林巴斯(olympus)667奥特斯177澳柯玛024316214215216217103714澳科(aoke)405112668349154白雪(baixue)349135154阪神(banshen)671坂田000399北京京电(jdc)650068倍科177宾维空调001波尔卡288波乐(bole)337056167069波士高(boshigao)121182650349068154博士(boshi)135068博世398069彩星154349长风(changfeng)174长府(长谷)304029长虹246247112188248249250251177252253254702732766长岭(changling)657239266349690069401402403400诚远/维修版(chengyuan)669川岩(chuanyan)651创华(chuanghua)322670650028349069154265405创维338339335337336627729804春兰106334357107693694695696697698699700701达可(dake)651大金211225226227228229319318317358359360361691707724726741750751738297771772773805785大金星(dajinxing)154349069大拇指(damuzhi)316大松重工628大宇(daewoo)671672349069015稻田(inada)306330650349069154帝智646074399东宝(tobo)673674675018068154405188178406350东新宝(dongxinbao)650东芝097284320703048761049东芝(toshiba)284冬夏(donxia)056304107069154盾安(dunan)676226286069飞歌(phigco)286304飞利浦801飞鹿(feilu)351349069407富士通218219220221222223224268270269271362363364高路华(conrowa)405650392028349250069010333154高士达090歌林(kolin)287068格尔(geer)407134650200069154格兰仕066067068069070071072353354355356格力073074075635636076077637078079638333326340341342343715650740768729古桥210408冠远306光大(guangda)171677028204069154333国美004001628629338627海尔028029030258259036033037038039327040041042043314257347348349325260031032673757803海林013海信738802124128722海信科龙111112113114115116117118119120121122123124125411410126127128129130131132133134135136137138722723142737747748817海芝000韩电空调645和而泰704红麟079399022646001红旗079399022646001虹立146鸿怡(hongyi)405华宝114华高069159华科(huake)678华凌096060097098321099100101102103104105328华美(huamei)386409黄河210回力(huili)135068汇丰101184185013332333265154惠而浦139140141025142143075007145010146177085323144324716121128201124756786佳乐613江南空调(jiangnan)679将军(ogeneral)224杰士达(justice)650184185金北京614金鸿盛646074399金三洋(jensany)001金松(jinsong)650288350金正010金挚001177256锦尚705卡萨帝空调040康拜恩069114康佳(konka)349650101184013068645000256177808康丽(kangli)348279蓝波186367615368616369371370乐华rowa266267利凯尔(likaier)085141330184185154凉宇264麟酷764056龙禾(longhe)651罗兰斯宝(luolansibao)657麦克维(mcquay)068296387667680665631297282麦克维尔759美博(mbo)256006290150027177008美博空调783美的044045046047048049050051052053054055056057058059060061062063064065328344345346097美歌(meico)304177美菱(meiling)665366280名亿154265明星波音(mingxing,boyin)397内田354355356621619617618620317宁波惠康(ningbohuikang)366332纽圣空调机739诺维184欧伦024欧特斯(outes)775普奕(puyi)396七星(sevenstars)292645青林187穹胜(qiongsheng)264151日本日立794795796797798日彩(ricai)650056101184日江(rijiang)154405252271668650297101069185日立235236237238239240241242243244245717718728807日索(risuo)265257荣事达705645赛久电机(saijiudianji)664073三菱025147148149150004151152153154155156103157158159160331330332333385386377378379380381382383372373375376374384649719309099012三星161162163164165166167168169170171三洋230231232233188234322175387388389390391392393112三叶(sanye)396三钻(sanzuan)255沙美(shamei)357229山星(shanxing)294上菱(s-lin)681004348682001申花074绅宝(shenbao)405650185154胜风(shengfeng)407350250盛风飞鹿(shengfengfeilu)350068帅康(shuaikang)650239101069185双凤(twinswan)001双菱(shining)650184185双鹿184185松林夏(songlinxia)396松下088193194195196197198199200201202203204205206207208209210211212213352753755754767806784319松星(piezstar)068083苏宁极物632索伊(soyea)687068太亚(taiya)396天加(tica)758770282001120天津空调(tianjin)683天元(tianyuan)684685349216185154通用电气(ge)036统帅036万宝(wanbao)681650349184185王子(prince)651威力(weili)279650349114155265333379383381378380377382353331373374330348622184185623威特力(weiteli)185无品牌013241090000163166073097224268644006101645708709710069711712713720721738009749036299763079056765776775276774707781782790779787789788雾峰(wufeng)137151405203101184154西格玛029西冷(serene)193407357夏宝646078000001074399夏立646074399夏普287286394744743742746夏普/sharp286仙麟079399022646001先科311现代010小米302177647762小天鹅310178小雪人313小鸭265新飞188189190191192153121新科080081082083084085新科通085080145311131134814815083099新乐(xinle)183178351021401新凌(sinro)154新世纪好孩子731星和(xinghe)121650286185154兄弟396熊猫(panda)650349184185154332雪菲特083扬子184292293294309004耀马(yaoma)650263350184185伊莱克斯172173174071175176177178179180181155182183141001264060255305069074048286051146073101809629006移动(yidong)686樱花255256175252177迎燕(yingyan)068154305263028349405004668689赢松/国松078影逸(ineasy)123优尼爱尔(youniaier)348玉兔(tuetu)376624407185101184625250626月兔157072262261099101001珍宝271222268218270362郑州金达(zhengzhoujinda)350志高006007008009010011329012154013014150177中松(pascmio)177000252184024399074064001中意(zhongyi)333363佐丹(zuodan)154172待更新品牌165281待更新品牌265282 电视机码库列表 Jvc82228221Lg90590790489720781881581882209051025813010301780890589990590510251019102590510327780890510447201201Pptv912909Tcl2758648598578578618414864867851841484208488420842078037803860822784208426842082168215812981288127812684468578420842184208121842084201026481268420811578318558667786858Thtf7499067547539067774748777411147789108410807774百视通bestv913长虹changhong810460660010382205103828718114103821035284418436843681081038281061035281041035281028102871809980998436810880958094809480958095844180898088808780868858084808380828081809580796608078103828077841807680758075102381118111511121038210382706105911121057105710551038210531112818565869383710380827103682271079102658408407692466608154832194213214714977010431042104110531039111811187178158创佳821982188132821982198219创维1016101587187887887187110382881216878815887110238102383319191023810238871871102388102244941869252869871102381023893087333187687110238846181588158915102388691023886981638788693332762438158111222021981583318158331219822981938193819382128211821011128204819381913328187818682098698718169816886981588163195815887181588157815681558162815581528150814981488147845182481638711023879868158815881458158797481587972815879707827782633170633110238101787177617829796986979678158816379648163796297669766795982297972795679557954243820482048163820481638698698162869816279317930春兰81617984817979827981鼎科868东芝307110229223940307192810229240278930719669102043071307182268182818078113071飞利浦210210110577937790210福日1011781658164798710119高路华8173799079897988冠捷876706海尔haier949104499398096832883069280273238281281104410442818179817881798175817481728405817097710442802802808006800580048003800228880008172220079977996799579942808445799181747816781578148174781285580239611044281104480107757104810471079952104410029353海普3077海信801121125021121110124968258221779730691003211285211964211306826182088207820621182038202820182008200817181908189211818125825510129479971012997991306798681722578030781078017800779977982118029818980278189802580242878022802182028019801880178017101228014801380128011779777802270豪杰3063恒晨hcn1113华宇7499449439427766279805804803802惠科7785佳的美11061101金星819781968032803178077807780779911033103210291026819677887787金正780478037802京东方95697495693532172876康佳957994957969962994804880479948048707781995798039803980382179803957777777779579571062782470780518050804980488047805180478044804380448041804080398445777280369579577818957106195795787687677771046957994106977795795798039803酷开995984乐华8677367311977803乐视1123理想9353联想7762美乐7227803牡丹844580538052奇美1977763日立657733805477841095荣事达1120三星samsung70774977727677667652801103931039372570795770170727977727071039370710443777270770779037077077783707707707707707707707707707707725103937772777284451072三洋sanyo7941068106973884926946598056110210661065994106310668492106870673470470970277210791073106910681068上广电819580358196803380358033819610961094松下735776677661098776677667766109277661071索佳93539353935377732319索尼sony1042110421104211038710421251222222104408131042110421104218449789678931042110421104211042110421977710440306521579777统帅9799521044961万利达8361099109310891088108710861099未知3788878897886788578847885788478807879西湖3073231180642305夏华764夏普8428297802062062801776584297939793851877657765842842978977657765778197899789842842夏新7803厦华80648063806280618060805980588057805810521031805810288453307384461036厦新8065先锋893现代9803小米9864新科11002141熊猫8201011571667480738446807184518446806884511112111785567383810791079838683志高809 机顶盒码库列表 Abs10636Africa1120811206Avit1060010598Blackpcs9758D3mini11202D-box4151Dctv11203Edision11197111941119611192Evpad11190Fastway1019210177Funtv11195Fzmedia11191Humax443Idc11187Ikan100683004Illusion9752Imaqliq11183Inext9751Intelvision111939748Io11186Lg898Lumax11184Motorola531Netfor11181Nyatel11177Scvhd11174Sitidisital11172Sunny10637Suri11208Tcl110984154Tvnation11170U2c9758U互动1136511101604Vislonnet97579757Xcruiser9754爱华1521062510622安广网络112286969安广无线传媒3763安陆有线353安庆有线300安丘有线414安阳广电448鞍山有线678白银广电572百视通bestv118包头有线689保定有线10054790743577北川有线数字电视4172北方广电402310710433北京数字10067北仑数字489812北镇有线90本溪广电7864015滨州有线9646341兵团有线10045亳州有线69博罗有线128博尚10403博远10415沧州有线79010137苍南数字337317昌邑有线10191长葛有线109长虹98234174长江电讯772796269627长沙国安广电508312长泰传媒115455长垣有线100531005210051长治数字957296609679常熟有线10138常州有线146朝阳有线664郴州有线91094171陈店数字1122711226成都兴网10607106061125112224178成都有线41744170承德广通474577城阳广电1839866池州数字4191池州有线184滁州广电407869滁州有线69楚天金纬411楚天视讯148148楚天网络4031楚雄广电107创维1107918659910268294慈溪数字95521804达州广电469大华98269824大连有线10432大秦铁路109大庆油田数字567812大石桥9658大同有线150大显daxian1062110616大冶有线423岱山数字11341133丹东有线81290丹江口广电148丹阳互动563当涂广电69德清数字544德州数字45010616灯塔数字电视97东方广视81213803东方有线1380113802东风tv112148东台数字339东莞广电1061010344东莞有线1798东阳数字557东营有线412洞头广电5721805独山子345鄂广网络1161恩施广电148186番禺有线7728范县广电148飞利浦485封丘有线359烽火fiberhome9830凤城数字5619809凤泉有线10405凤阳无线546奉化数字107107佛山数字电视9847136615佛山有线1107611075浮山广电97福建广电11094110931109340331858116811681157167584107582581福州广电11093585587586抚顺数字40219511抚顺县数字电视8121164抚州有线359阜康广电544阜蒙县数字561阜宁数字3004阜新有线743阜阳有线69盖州数字9658甘肃有线189赣州有线359高密有线297高台有线10049高邮广电3004歌华有线510广电网络11225113152113广东iptv52311074广东广电103442729570广东有线130广容网络9208广铁数字123广西广电网络11224696贵州广电698哈尔滨有线电视87哈飞有线186哈密无线38海尔10641海丰有线96149613海南民视9383海南有线13797海信1064110641海盐数字289359汉川广电407910407航天有线812好而易1061910601合肥有线13791和平有线116576575河北广电110729844608608河津广电1041310412河南有线3739河源广电10867菏泽广电450鹤山广电30893088黑河广电566145黑龙江广电537536恒仁广电10402虹企传媒186湖北广电网络9858985798564031湖北有线9536148521湖南地面数字电视96789678湖南有线112232874420湖州数字2907726葫芦岛有线107152户户通504花都广播电视168华数106031041810189华为1062610601118789443427131滑县广电20414淮北有线69淮南有线131桓仁广电1125黄岛广电150黄山有线69417黄石有线4463772黄岩有线3741辉县数字电视9841鸡矿集团数字电视1149吉安有线359吉林广电102529832吉视传媒10521299即墨广电159济南广电494济宁有线355嘉善数字107建衡科技110891061811095江都有线146江门广电77303087江山数字483482江苏有线1108030049666江西有线3593593004江阴广电3004920胶南广电4013胶州有线3750揭东广电5699831揭阳有线10251金华数字553金坛有线3004金网通kingvon443锦州有线664晋城广电346晋煤数字417晋中广电1005荆州广电40113773荆州视信网络11景德镇有线359九江有线359九联科技104139841九台广电1122211222九洲106111042661416130042782756175莒县有线146173巨鹰科技10064691434喀左有线90812开发区数字电视541开平有线113613761康佳10609康金10071康特集团75810413克拉玛依有线3332宽甸数字1030640204019昆广网络90864028昆山有线154莱钢数字4501447莱芜有线984798469845莱州有线10068883710418兰溪数字电视10351兰州广电1868593644浪潮inspur10135乐清广电551乐视4444雷州广电113291132810194101939513历城广电34210413451丽江数字186利川广电9546溧阳有线10300146连南广电39963760涟水广电3004莲都数字553辽河油田数字5623997辽宁有线74492辽阳有线40014000399910268聊城中广数字559林芝数字1137临汾有线98415374临海数字1707临朐有线349临沂广电947394679465946494609459灵宝数字148灵石无线9430凌源有线90812浏阳国安广电517516515六安数字1134169龙江网络5379657536龙岩广电11093546113621陆丰有线1108761路桥数字3741潞安集团477麻城广电10409马钢有线1170梅州有线11096魔百盒51148牡丹江数字9711511150内蒙古广电137921122111220南昌广电41709666南昌县广电359南充广电112221146122南京有线3004南平数字11085南铁有线553南雄电视台1153南阳广电301宁波数字电视11350113445211134611348113481134938040313821526162宁德广电11093186宁海数字4974961109511095宁夏广电5314031农垦有线1109010522盘锦数字电视102689850磐安数字553平度有线313平湖数字3779631平江广电96319655平阳广电1798萍乡有线359394莆田广电98235465049濮阳有线304303浦江数字553302普宁有线11084齐齐哈尔数字电视788蕲春广电9680353杞县广电10408秦皇岛有线186沁阳有线10091青岛有线3750青海广电10599541青田数字电视494494493青州有线348清新广电604137清原广电812清远广电137曲阜有线355衢州数字107泉州广电113401133511336113371133811339167185饶平有线1108211259403任丘有线790日喀则广电3749619日照有线146450559如皋有线1148689汝州数字电视81290瑞安数字314三门数字3741553三门峡有线681三明广电54611093三星105489617山东有线35511219103026186896499618102山西广电网络9611961087738772113103104101陕西广电1124911248397412455456457458460汕头广电2880商丘有线8972429上饶有线359538韶关广电1153深圳广电9377神州电子39810620沈阳传媒9658141声屏无线3004470晟视讯159嵊州数字3438971十堰广电13798石河子广电网络10060寿光数字347沭阳数字30044009顺德有线3989838舜达传媒297朔州数字97斯达康utstarcom1006310062四川广电112479663143441751434四会有线11081675泗洪有线9847泗县广电69松原广电4078苏州数字11356宿迁有线30044192宿松广电10136宿州有线69睢宁有线3004遂溪广电10417462台前有线97台湾数字4151台州广电3741太仓数字411太和有线69太原有线107泰安广电4076泰达数字电视11103泰顺广电18051804泰州有线30041798汤坑有线1110246110456汤姆逊10639唐山广联8868唐山无线数字电视9430唐山有线1005510643天柏10641天诚10640天地网1379361天光有线9654天津广电549112291043410434天门广电538549天水广电6111095天威10620549甜果时光10624同洲1109598251125443桐乡广电2785377501铜冠信息科技51铜陵有线69354团风广电356355威海有线290150威科姆10406潍坊广电150未知11261125吴川广电604519吴江有线677五家渠电视台38武汉东泰数字10623190武进有线4009武穴有线445西藏广电11225398398西宁数字661西平有线357西双版纳广电789浠水有线11078峡山数字9599厦华1041610416咸宁有线4079香港有线133湘潭国安数字508507湘阴数字291297431襄樊有线142响水广电4025项城有线96621753747孝昌有线1061210413孝感有线1112忻州有线665新大陆546100709824546新疆广电网络13794113664189新疆机场集团3852新密有线9647新邱数字5613738新乡数字7726546546新余广电352新郑无线10410岫岩数字电视1019093盱眙广电315180徐州有线3004许昌广电429617484宣城有线69盐城有线3004兖矿数字电视11218560兖州有线10057扬州数字4024684阳煤电视10056阳泉数字503阳新有线411一汽通信11104伊春有线97宜春有线359移动魔百盒532义乌广电595益阳国安广电508513翼城数字650银河41710059银视数字电视984353鄞州数字107应城广电10407鹰潭有线757营口有线139148永嘉有线314永康数字11071553余姚数字314玉环数字3741403111095439438豫广网络812岳阳县有线9601云梦有线633云南广电11332113316074028402735311332113313731133411333运城有线41935327726枣庄有线378115增城广电166湛江有线9836张家港有线3004张掖广电100499830161彰武数字电视94漳州广电772677261188577镇海数字98629591郑州有线1008910088直播星10617407中广有线11364115115100723785611795923113109612中国电信11852316110627524135118118132135161165132165138135375404405161中国联通524105195242849285652952452852952459896259830919995635249574958495859589中国移动112165325324664674789677531532964347853252453211216965196609545中牟有线1861139中兴1041410139616中星10642963296429644钟祥有线4449651重庆有线96562904139139523407舟山数字1025410048686株洲县无线469139珠海广电11374531珠江数码113549861134诸暨数字7726308庄广有线5717613910050准东电视台536淄博长虹291139淄博有线68遵义广电448537 微信小程序调试 扫描设备二维码绑定→蓝牙直连→实时发送红外指令/读取设备状态 六、故障排除与维护 故障现象解决方案通信无响应检查RS485接线极性,确认波特率/地址匹配红外控制失效1. 检查发射管对准 2. 重新学习红外码小程序连接超时重启蓝牙模块,确保手机定位权限开启电源指示灯不亮测量输入电压是否在8V-28V范围内 七、售后服务与支持 质保期:1.5年有限保修(非人为损坏) 技术支持:18801054468 配件获取:官方商城提供红外延长线、互感器等配件购买链接 附录:应用场景示例 智慧酒店 集中控制客房空调/电视,联动入住状态自动调节温度 通信机房 远程重启故障设备,实时监测空调运行状态 智能教室 一键切换投影仪/幕布/音响设备,支持课表定时控制 --- ### 634. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1. 产品介绍 1.1 产品概述 路面状况传感器,也称为路面状况检测器或遥感式路面传感器,是一种利用先进遥感技术对路面状况进行实时监测的关键设备。它采用非接触式的检测模式,通过发射光线并接收路面反射回来的光谱信息,实现对路面状态如结冰、积雪、积水及其厚度的精准测量。 路面状况传感器的工作原理主要基于光谱分析技术。传感器内置发射光源,发射单一波长的单色光线,经过透镜聚焦后照射到路面上。由于路面材质和状态的不同,反射回来的光线强度和光谱特征也会有所差异。传感器内的光谱接收装置能够准确测量反射光的强度和波长,并通过内部处理单元对光谱数据进行分析和解释,最终输出路面状况的分析结果,如干燥、湿滑、结冰等状态。 广泛应用于各种交通场景,包括高速公路、城市道路、机场跑道、桥梁隧道等。 购买产品:https://www.modbus.cn/product/31017.html 1.2 功能特点 多参数测量:传感器能够测量多种路面参数,包括路面温度、状态(干燥、潮、湿、积水等)、水膜高度、冰层厚度、雪厚度等。 结构简单、稳定性好、可靠性高、能耗低、使用维护方便。 激光光源,增加激光设计、抗光源干扰。 设备表面进行防腐处理,抗雨水腐蚀。 实时监测路面状况,及时反馈信息,以便采取相应的措施。 非接触式检测原理,通过遥感技术远距离获取道路信息,无需直接接触路面,从而避免了对道路的破坏。 直流供电电路具有防反接和自恢复保险双重设计。 设备自带镜头加热,能有效防止冬季镜头结霜。 1.3 主要技术指标 供电11~28V DC测量距离与测量直径2-10m,25cm传感器与垂直立柱夹角范围0~60°路面状态干燥、潮、湿、积水、结冰、雪(选配)积水厚度0.00~2.00mm结冰厚度0.00~2.00mm(可定制)积雪厚度(选配)50mm~2500mm路面温度-30℃~60℃湿滑程度¹0.00~1.00(危险~干燥)更新间隔20s变送器元件耐温-40~80℃工作相对湿度不大于95%(30℃)功耗1.5W(加热功率13W)输出方式4G / RS485 ¹仅供参考,数值代表路面和轮胎的摩擦能力。 以上陈述的性能数据是在使用我公司测试系统及软件的测试条件下获取的。为了持续改进产品,我公司保留更改设计功能和规格的权利,恕不另行通知。 1.4 设备尺寸 单位:mm 2. 产品选型 注意:配套托片请另行购买。 RS-路面状况传感器LMK-4G 上传/RS485N011 型 3. 设备安装说明 3.1 设备安装前检查 ■ 路面状况传感器 1 台■ 横臂 1 个■ 抱箍 1 个■ 安装螺丝(M5*55 外六角螺钉*3,M5 螺母*3,M8*70 外六角螺钉*3,M8 螺母*3) 3.2 安装说明及注意事项 (1)将仪器从包装箱内取出,对照使用说明书的装箱单仔细清点、检查设备附件是否齐全。 (2)认真阅读产品使用说明书、产品合格证。(3)选择合适地点安装设备,设备提供横臂和安装抱箍,首先将设备安装到横臂上。 然后将横臂利用抱箍将设备安装到 75mm 立杆上。 每个安装地点的测量距离不同,需据此路面状况传感器。调整安装高度或设备与安装支架间的角度,可以调整测量的位置,角度调整时可以手机配置 APP 实时数据中查看设备的安装角度数值,建议范围在 10~40°之间。 注:根据安装角度和高度,计算测量距离 c 和测量位置的大致范围 d,测量测量距离b = 安装高度a * tan安装角度 α,如位置不理想,可调整传感器安装角度和高度。 3.3 设备接线 宽电压电源输入10~30V均可。 线色说明棕色电源正黑色电源负黄色485-A蓝色485-B 4. 设备配置说明 4.1 设备配置 1)设备支持蓝牙配置,需要手机下载配置软件“多功能参数配置 app”,可扫描二维码下载即可。 2)下载完成后,打开蓝牙,打开 APP 软件界面如下点击连接设备,设备名称 LMK 加设备地址,例设备地址为 12345678,选择 LMZK12345678 即可(默认密码 12345678)。3)可在 APP 内进行查看终端地址、目标地址端口设置、目标地址设置等操作。 4.2 设备标定说明 4.2.1 路面状态标定 当设备初次安装或更改安装位置时需对设备进行重新标定,设备标定时需保持路面干燥,且无遮挡。在“设备调试”界面,点击“初始化设备”,这时设备开始自动标定,设备初始化状态显示“执行中”,且设备镜头正对的路面出现一个红点,红点直径 25cm 范围内为标定区域,设备标定大概持续 5 分钟左右,当地面红点消失时,设备标定完成。 4.2.2 雪深标定 若选配雪深要素,需在路面状态标定完成后进行雪深标定,设备标定时需保持路面干燥,且无遮挡。在“设备调试”界面,点击“雪深校零”,这时设备开始自动标定,标定时设备镜头正对的路面出现一个红点,红点即为标定点,设备标定大概持续 10S 左右,当地面红点消失时,设备标定完成。 4.3 设备字典及实时数据选项说明 4.3.1 设备字典 GPRS 数据帧间隔(秒):设备主动上传数据的间隔时间,本时间即为数据采集器更新时间。若用户对数据的更新时间要求较高,则可将此时间设短;若用户想减少网络负荷,则可将本时间设长,范围是 1~60000s。一般用户可设置为 30s,即设备每隔 30s 上送一次数据。(默认:30s) GPRS 目标地址 URL:填写温湿度监控平台所在服务器的公网 IP 地址,若平台启用了域名解析服务,可填写对应的服务器域名。 GPRS 目标端口:监控平台的网络监听端口,需与平台端口一致。(默认:8030) 主机 ModBus 从站地址:4G 选型设备请忽略此项,仅 485 选型设备生效。 波特率:4G 选型设备请忽略此项,仅 485 选型设备生效。 奇偶校验方式:4G 选型设备请忽略此项,仅 485 选型设备生效。 ICCID 号:设备内 SIM 卡的 ICCID 号码。 设备的 8 位地址:为设备唯一地址,软件监控平台根据此地址区分不同设备。(不可修改) 校准使能:安装完成后,此栏位写入 1,设备自动开始标定(需路面干燥无遮挡)。标定完成后由 1 变为 0,耗时约 5 分钟。 零点校准:安装完成后,此栏位写入 1,设备自动标定雪深零点(需路面干燥无遮挡)。标定完成后由 1 变为 0,耗时约 10 秒。 注:未说明部分菜单均已在出厂时设置完成,请勿进行修改! 4.3.2 实时数据 ●节点0-5:节点对应数据如下表 节点说明数据类型0路面状态32 位无符号整形0:错误1:干燥2:潮3:湿4:积水7:结冰1积水深度浮点型2结冰厚度浮点型3雪深(选配)浮点型4路面温度浮点型5安装角度浮点型 5. PC 端配置软件安装及使用 5.1 软件选择 如若需要修改设备的地址和波特率,需要使用该配置软件进行设置。打开资料包,选择“调试软件”---“485 参数配置软件”,找到打开即可。 注意:在使用该配置软件时,必须要接入单台设备!设备的接线 5.2 参数设置 选择正确的 COM 口(“我的电脑—属性—设备管理器—端口”里面查看 COM 端口),下图列举出几种不同的 485 转换器的驱动名称。 单独只接一台设备并上电,点击软件的测试波特率,软件会测试出当前设备的波特率以及地址,默认波特率为 4800bit/s,默认地址为 0x01。 根据使用需要修改地址以及波特率,同时可查询设备的当前功能状态。 如果测试不成功,请重新检查设备接线及485驱动安装情况。 5.3 设备校准说明 在气象分类中选择路面状况设备,可以查看设备的实时数据,同时当设备初次安装或更改安装位置时交易对设备进行重新标定,设备标定时需保持路面干燥,且无遮挡。在“设备调试”界面,点击“初始化设备”,这时设备开始自动标定,设备初始化状态,显示执行中,且设备镜头正对的路面出现一个红点,红点直径 25cm 范围内为标定区域,设备标定大概持 续 5 分钟左右,当地面红点消失时,设备标定完成。 若选配雪深要素,需在路面状态标定完进行雪深标定,设备标定时需保持路面干燥,且无遮挡。在“设备调试”界面,点击“雪深校零”,这时设备开始自动标定,标定时且设备镜头正对的路面出现一个红点,红点即为标定点,设备标定大概持续 10S 左右,当地面红点消失时,设备标定完成。 6. 通信协议 6.1 通讯基本参数 项目参数编码8 位二进制数据位8 位奇偶校验位无停止位1 位错误校验CRC(冗余循环码)波特率1200bit/s、2400bit/s、4800bit/s、9600bit/s、19200bit/s、38400bit/s、57600bit/s、115200bit/s 可设,出厂默认为 4800bit/s 6.2 数据帧格式定义 采用ModBus-RTU 通讯规约,格式如下: 初始结构 ≥4 字节的时间 地址码 = 1 字节 功能码 = 1 字节 数据区 = N 字节 错误校验 = 16 位CRC 码 结束结构 ≥4 字节的时间 地址码:为变送器的地址,在通讯网络中是唯一的(出厂默认0x01)。 功能码:主机所发指令功能指示,本变送器用到功能码0x03(读取寄存器数据)0x06(写入单个寄存器)0x10(写入多个寄存器)。 数据区:数据区是具体通讯数据,注意16bits数据高字节在前! CRC码:二字节的校验码。 主机问询帧结构: 地址码功能码寄存器起始地址寄存器长度校验码低位校验码高位1 字节1 字节2 字节2 字节1 字节1 字节 从机应答帧结构: 地址码功能码返回有效字节数数据一区第二数据区第 N 数据区校验码1 字节1 字节1 字节2 字节2 字节2 字节2 字节 6.3 寄存器地址 寄存器地址(16 进制)PLC 或组态地址(10 进制)内容操作0000 H40001路面状态0:错误1:干燥2:潮3:湿4:积水7:结冰030001 H40001路面状态0:错误1:干燥2:潮3:湿4:积水7:结冰030002 H40003积水厚度浮点型高位030003 H40003积水厚度浮点型低位030004 H40005结冰厚度浮点型高位030005 H40006结冰厚度浮点型低位030006 H40007积雪深度浮点型高位030007 H40008积雪深度浮点型低位030008 H40009路面温度浮点型高位030009 H40010路面温度浮点型低位03000A H40011设备安装角度浮点型高位03000B H40012设备安装角度浮点型低位03000C H40013湿滑程度浮点型高位03000D H40014湿滑程度浮点型低位030013 H40020定位使能0:关闭激光束1:开启激光束03/06/100015 H40022路面校准使能写入 1 自动标定03/06/100056 H40087积水厚度校准值16 位无符号,扩大 100 倍03/06/100057 H40088结冰厚度校准值16 位无符号,扩大 100 倍03/06/100058 H40089结冰厚度校准值16 位无符号,扩大 100 倍03/06/100061 H40098激光雪深校准写入 1 自动标定零点03/06/1007D0 H42001设备地址1~25403/06/1007D1 H42002波特率0 代表 24001 代表 48002 代表 96003 代表 192004 代表 384005 代表 576006 代表 1152007 代表 120003/06/10 6.4 通讯协议示例以及解释 读取设备地址 0x01 的路面状态 问询帧(16 进制): 地址码 功能码 起始地址 数据长度 校验码低位 校验码高位 0x01 0x03 0x00 0x00 0x00 0x01 0x84 0x0A 应答帧(16 进制):(例如读到路面状态为干燥) 地址码 功能码 返回有效字节数 路面状态 校验码低位 校验码高位 0x01 0x03 0x02 0x00 0x01 0x79 0x84 能见度计算:0001 H(十六进制)=1 => 路面状态 =干燥 读取设备地址 0x01 的积水厚度 问询帧(16 进制): 地址码 功能码 起始地址 数据长度 校验码低位 校验码高位 0x01 0x03 0x00 0x01 0x00 0x02 0x95 0xCB 应答帧(16 进制):(例如读到积水厚度为 0.5mm) 地址码 功能码 返回有效字节数 积水厚度高位 积水厚度低位 校验码低位 校验码高位 0x01 0x03 0x04 0x3F 0x00 0x00 0x00 0xF6 0x27 积水厚度计算:3F00 0000 H(十六进制)=0.5 => 积水厚度 =0.5mm 修改当前地址 问询帧:(假如当前地址为 01,,需修改地址为 02) 地址码 功能码 起始地址 修改数值 校验码低位 校验码高位 0x01 0x06 0x07 0xD0 0x00 0x02 0x08 0x86 应答帧: 地址码 功能码 起始地址 修改数值 校验码低位 校验码高位 0x01 0x06 0x07 0xD0 0x00 0x02 0x08 0x86 修改当前波特率 问询帧:(假如当前波特率为 4800 修改为 9600) 地址码 功能码 起始地址 修改数值 校验码低位 校验码高位 0x01 0x06 0x07 0xD1 0x00 0x02 0x59 0x46 应答帧: 地址码 功能码 起始地址 修改数值 校验码低位 校验码高位 0x01 0x06 0x07 0xD1 0x00 0x02 0x59 0x46 查询地址 问询帧: 地址码 功能码 起始地址 数据长度 校验码低位 校验码高位 0xFF 0x03 0x07 0xD0 0x00 0x01 0x91 0x59 应答帧 地址码 功能码 返回有效字节数 地址 校验码低位 校验码高位 0xFF 0x03 0x02 0x00 0x01 0x50 0x50 读取到的地址码即为设备的真实地址:01 7. 常见问题及解决办法 设备无法连接到 PLC 或电脑 可能的原因: 电脑有多个 COM 口,选择的口不正确。 设备地址错误,或者存在地址重复的设备(出厂默认全部为 1)。 波特率,校验方式,数据位,停止位错误。 主机轮询间隔和等待应答时间太短,需要都设置在 200ms 以上。 485 总线有断开,或者 A、B 线接反。 设备数量过多或布线太长,应就近供电,加 485 增强器,同时增加 120Ω终端电阻。 USB 转 485 驱动未安装或者损坏。 设备损坏。 --- ### 635. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 开关电源是一种高效、稳定的电源设备,采用进口芯片,确保输出稳定,具备抗干扰能力强、高效散热、多重保护等特点。广泛应用于工业自动化、LED照明、通讯设备、安防监控等领域。 二、产品特点 抗干扰能力强:优质内部元件,运行稳定可靠。 高效散热:双重风扇散热设计,满负荷不烧机。 多重保护:过载、过压、过温保护,确保设备安全。 纯铜变压器:足功率输出,保障设备性能。 适用范围广:工业自动化、LED照明、通讯设备、水泵、电机、安防监控、数码产品等。 三、产品参数 参数TX3000-12TX3000-24TX3000-48直流电压12V24V48V额定电流200A125A62.5A电流范围0~200A0~125A0~62.5A额定功率2400W3000W3000W纹波与噪声150mVp-p150mVp-p200mVp-p电压调整范围0~13.8V0~28V0~56V电压精度±1.0%±1.0%±1.0%输入参数电压范围85~132VAC / 170~264VAC / 240~370VDC频率范围47~63Hz功率因数0.95@230VAC(满载)效率85%(12V)85%(24V)86%(48V)保护功能过载保护恒流限制或延迟5秒关闭输出,重启恢复过压保护13.8~16.8V(12V)28.8~33.6V(24V)57.6~67.2V(48V)过温保护关断输出,温度下降后自动恢复环境参数工作温度-20~+70℃(参考减额曲线)工作湿度20~90% RH(无冷凝)存储温度/湿度-40~+85℃ / 10~95% RH耐振动10~500Hz, 2G(X/Y/Z轴各60分钟) 四、通讯协议(MODBUS RTU) 0.通信地址拨码 拨码开关共有4个位,1、2、3、4,每个位代表一个数值,推到ON的位置为0,拨到下面依次代表 1. 通讯参数 波特率:9600 起始位:1 数据位:8 校验位:无 停止位:1 2.寄存器地址 序号名称说明范围小数点位数读写寄存器地址1Set-V电源的电压设定值0-10241r/w10002Set-I电源的电流设定值0-10241r/w10013U电源的电压显示值0-10241r10024I电源的电流显示值0-10241r10035Run-Stop电源输出/停止设定0,10r/w10066保留    10087保留    10048保留    1005 3. 帧结构 字段长度说明开始3.5字符时间帧起始标志,消息间隔需≥3.5字符时间地址域1字节从机地址(1~15),0为广播地址功能域1字节功能码(03读寄存器,06写单路寄存器)数据域N字节寄存器地址、数据内容等CRC校验2字节低字节在前,高字节在后结束3.5字符时间帧结束标志 4. 功能码说明 功能码03:读多路寄存器 示例1:读取地址为01的从机,起始地址1002(电压显示值),读取1个寄存器。 主机发送:01 03 03 EA 00 01 [CRC] 地址:01(0x01) 功能码:03(0x03) 起始地址:1002(0x03EA) 寄存器数量:1(0x0001) 从机响应:01 03 02 03 E8 [CRC] 地址:01(0x01) 功能码:03(0x03) 数据长度:2字节(0x02) 数据:100.0V(0x03E8) 功能码06:写单路寄存器 示例2:向地址为01的从机,寄存器地址1000(电压设定值)写入48.0V。 主机发送:01 06 03 E8 01 E0 [CRC] 地址:01(0x01) 功能码:06(0x06) 寄存器地址:1000(0x03E8) 数据:480(0x01E0,对应48.0V) 从机响应:01 06 03 E8 01 E0 [CRC](与发送报文一致) 5. CRC校验计算 预置16位寄存器为0xFFFF。 逐字节与寄存器低8位异或,结果存入寄存器。 右移寄存器,检查移出位: 若为0,继续右移; 若为1,与多项式0xA001异或。 重复右移8次,处理所有字节。 交换高/低字节,得到最终CRC码。 五、接口定义 电源接口: 接地线(G)、零线(L)、火线(N) 输出正极(+V)、输出负极(-V) 调节接口: 电压调节(V-ADJ)、电流调节(A-ADJ) 通讯接口:RS485/RS232 六、应用场景 工业自动化(PLC控制、自动化设备) LED照明(广告灯箱、显示屏) 通讯设备(交换机、基站) 安防监控(摄像头、NVR) 数码产品(音响、电子仪器) 七、安装与使用 安装:确保通风良好,避免高温潮湿环境。 接线:按接口定义正确连接电源线与通讯线。 调试:通过MODBUS协议验证通讯功能,使用示例报文测试读写操作。 八、注意事项 禁止在易燃、潮湿环境中使用。 定期清理散热风扇,确保正常运行。 技术支持请联系制造商。 --- ### 636. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 智能红外空调控制器是一款集远程控制、自动调节和节能管理于一体的智能化设备。通过内置电流互感器和蓝牙技术,用户可以随时随地监控和管理空调运行状态,实现高效、节能、舒适的环境控制。 功能特点 内置电流互感器 实时监测空调运行状态,无需额外布线,安装便捷。 采用空调接设备+设备接市电的方式,将电流互感器置于设备内部,即可实现空调状态的监测(通过APP可查看当前空调电流值大小和空调状态),也可解决额外布线的问题,让安全更有保障。 多种控制模式 远程控制:支持通过RS485接口连接PLC、单片机控制系统、力控、组态王、昆仑通态等组态软件,实现对柜式空调和壁挂式空调的远程温度控制。 自动控制:设备会通过设定的温度上限和下限值与当前的温度值进行比较,自动发送开机制冷、制热或关机指令。 定时控制:支持用户自定义时间段,实现空调的自动启停,既节省了能源,又保证了室内环境的舒适度。 蓝牙配置 通过蓝牙与手机APP连接,用户可以轻松配置和管理控制器,随时随地查看空调状态。 操作步骤:点击搜索蓝牙设备 → 开始扫描 → 选择对应设备并输入连接密码。 红外学习功能 支持红外学习,可兼容多种品牌和型号的空调,实现统一的远程控制。 可学习多达55组命令,适用于更多小众机型。 学习方式:将空调遥控器的红外线发射口对准控制器上的红外接收窗口,按下遥控器上的按键,控制器即可自动学习并保存遥控器的控制命令。 断电保护 具备断电自启功能,来电后自动恢复空调运行状态,确保设备长期稳定运行。 适用需要长期开空调的场所:服务器机房、无人基站、户外LED大屏、电梯机房、银行ATM、配电房、实验室等。 灵活安装 支持壁挂安装,外挂红外探头设计,适用于空间较大的环境,保证精准调控。 红外发射延长线可达5米,确保对空调的准确控制。 实时数据监控 用户可通过手机APP实时查看环境温度、湿度及空调运行状态,方便调整空调运行模式。 支持远程采集空调控制器所在地的温度信息,用户可以随时了解室内温度的变化情况。 技术参数 参数说明供电DC 9-30V功耗0.1W工作环境-40℃~+80℃,0%RH~95%RH(非结露)载波频率接收:37kHz~39kHz,发射:38kHz电流互感器量程0-20A温度量程-40~80℃,精度:±0.5℃(25℃)湿度量程0~100%RH,精度:±3%RH(60%RH, 25℃)通信接口标准ModBus协议的485输出配置接口蓝牙 安装方式 钻孔:用钻头在墙壁上钻孔。 固定膨胀螺丝:将膨胀螺丝置入孔中固定。 安装设备:将设备背面的孔槽挂到膨胀螺丝上进行固定。 安装发射头:将发射头卡扣固定,并调整方向对准空调。 应用场景 学校教室:保持教室温度适宜,提升学习环境舒适度。 工厂:确保生产环境温度稳定,提高生产效率。 机房:精确调控机房温度,保障设备正常运行。 办公室:自动调节办公室温度,提升工作效率。 商场:远程管理商场空调,优化购物环境。 空调远程管理:适用于需要长期开空调的场所,如服务器机房、无人基站、户外LED大屏、电梯机房、银行ATM、配电房、实验室等。 产品优势 智能高效:支持远程采集温度信息,实时监控空调状态。 节能管理:通过自定义时间段自动控制空调启停,节省能源。 兼容性强:支持多种品牌和型号的空调,红外学习功能强大。 安装便捷:无需额外布线,灵活安装,适合各种场景。 断电保护:来电后自动恢复空调运行状态,确保设备长期稳定运行。 灵活布点:外挂红外探头设计,适用于空间较大的环境,保证精准调控。 总结 智能红外空调控制器是一款智能化、高效节能的空调管理设备,能够显著提升空调使用体验,适用于多种场景。选择我们的产品,享受智能、高效、舒适的空调控制解决方案! --- ### 637. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 本次推出的双鉴微动探测器结合了红外探测人体和微波多普勒效应探测物体移动技术,显著提高了传感器对人体探测的准确性。该产品能够精准探测区域内静态人体的存在,通过捕捉人体微小动作来判断人体是否存在,并将检测结果数据通过干接点或总线协议输出。 二、功能简述 本传感器是一款能精准探测区域内静态人体存在的设备,通过捕捉人体微小动作,判断人体存在与否,检测结果数据可通过干接点或总线协议输出。 三、选型建议 广泛适用于家庭、办公楼、酒店、银行、医院、学校、机场、博物馆、实验室、工厂、农业等有人体存在探测需求的用户,也适用于设备制造、机器人制造、安防制造等专业人士使用。 四、产品参数 产品名称 :微动人体存在传感器 产品型号 :MBS10 外观尺寸 :75*25mm 通讯方式 :无源干接点和总线 RS485 红外遥控配置 :支持 输入电压 :DC12-36V 工作电流 :<90mA 探测距离 :动态(肢体运动)<5 米,静态(设备对准人体胸部位置呼吸动作)<2 米 探测角度 :80*75 FOV 工作温度 :-10-50℃ 安装方式 :吸顶安装/侧墙安装/机器设备侧面安装 输出模式 :自定义 485 指令或 Modbus 协议 波特率 :默认 9600 8N1,支持修改 19200 57600 115200 设备接线 :供电:红黑线;干接点输出:黄黄线,无源干接点;总线绿 A 白 B 拓展通讯(需搭配转换模块) :KNX、CAN、LORA、WIFI、ZIGBEE、BLUETOOTH、4G、CAT1 五、产品特点 采用热释电红外 PIR 传感器、微波传感器双鉴传感器,识别精度高,误判率低。 搭配多款智能配件,实现场景个性化控制。 支持设置指示灯开关、光照强度、灵敏度、检测时间周期等。 远程控制,随时开关(需搭配智能控制系统使用)。 支持防拆功能,断电发送总线指令(需搭配通断电检测 X166 使用)。 支持定时开关机(需搭配智能控制系统使用)。 支持语音控制(需搭配智能控制系统,或者离线语音控制模块使用)。 断网不影响总线范围内的控制及展示。 支持遥控器和总线协议配置。 采用超宽谱雷达技术、生物医学工程于一体的传感器,精准探测区域内静态人体的状态。 以脉冲形式微波束照射人体检测人体生命参数,由于人体生命活动肢体运动、呼吸、心跳等的存在,使的被人体反射后的回拨脉冲序列的重复周期发生变化。经对人体反射后的回波脉冲序列进行解调、积分、放大、滤波等处理并输入微电脑系统进行数据处理分析,得到被测人体存在的数据参数。 当人体完全静止呼吸时,人体腹部表面会跟随呼吸的动作起伏变化,微波传感器可捕捉到人体胸部及腹部的位置呼吸的动作,精确识别出该微小动作。 人体完全静止时微波探测最灵敏度的位置为胸腹部。对静止的人体进行微小动作探测时若未对准胸腹部位置会降低探测距离。 微波传感器对准人体胸部位置可探测 2 米内静止人体呼吸的微小动作,5 米内人体肢体运动的动作。 六、总线控制使用方法 (一)地址修改 设备上电后会自动反馈 5 字节地址(例如地址为 1A 13 24 56 91 后文用 XX XX XX XX XX 替代)。 发送:XX XX XX XX XX(旧地址)F8 E7 D6(固定)XX XX XX XX XX(新地址)。 反馈:操作成功反馈 BC BC。 示例:1A 13 24 56 91 F8 E7 D6 2A 33 57 26 81 将旧地址 1A 13 24 56 91 改为新地址 2A 33 57 26 81。 (二)传感器开关协议 发送:XX XX XX XX XX(地址)00 00(固定)00(00 关闭 / 01 开启)0F。 反馈:操作成功反馈 BC BC。 示例:XX XX XX XX XX 00 00 01 0F 打开传感器。 (三)状态查询指令 发送:XX XX XX XX XX(地址)86 86 86 0F。 反馈:XX XX XX XX XX(地址)00(人体信号)00(工作模式)00 00(计数次数)0F(结束)。 人体信号:00 无人 / 01 有人。 工作模式:1,2,3 对应传感器工作模式。 计数次数:00 00-FF FF 探测到人的次数。 示例:发送 XX XX XX XX XX 86 86 86 0F 反馈:XX XX XX XX XX 01 01 00 05 0F 表示传感器已打开并检测到人体存在,工作模式 01,已经检测到 5 次(断电后检测次数清零)。 (四)检测时间周期 发送:XX XX XX XX XX(地址)9E(固定)00 08(检测时间)0F(结束)。 检测时间周期:00 05-03 E7 分别对应 5-9999 秒,默认为 30 秒。 反馈:操作成功反馈 BC BC。 示例:XX XX XX XX XX 9E 00 08 0F 检测 8 秒时间范围内是否有人体存在。 (五)光照度调节协议 发送:XX XX XX XX XX(地址)9D(固定)00 XX(感光强度)0F。 感光强度:00 不受光线控制。 00-00-00 09 分别对应 光照度最弱 - 光照度最强。 00 00 对应的照度值约 200lux,00 09 对应的照度值约 20lux。 反馈:操作成功反馈 BC BC。 示例:XX XX XX XX XX 9D 00 00 0F 调节为不感光,识别不受光线控制。 (六)灵敏度调节协议 发送:XX XX XX XX XX(地址)9F(固定)00 XX(灵敏度)0F。 灵敏度:01 不灵敏。 00 01-00 64 分别对应 不灵敏到最灵敏。 反馈:操作成功反馈 BC BC。 示例:XX XX XX XX XX 9F 00 64 0F 调节传感器灵敏度最高。 (七)参数查询指令 发送:XX XX XX XX XX(地址)86 86 87 0F。 反馈:XX XX XX XX XX(地址)00 12(检测时间区间)64(灵敏度)00(感光强度)0F。 检测时间区间:00 12 对应 18 秒。 灵敏度:64 非常灵敏。 感光强度:00 不受光线控制。 01-09 分别对应 光照度最弱 - 光照度最强。 (八)指示灯开关协议 发送:XX XX XX XX XX(地址)9C 00(固定)00(00 关闭 / 01 开启)0F。 反馈:操作成功反馈 BC BC。 示例:XX XX XX XX XX 9C 00 00 0F 关闭传感器上的指示灯。 (九)传感器模式设置 发送:XX XX XX XX XX(地址)9A(固定)00 01(模式)0F。 反馈:操作成功反馈 BC BC。 模式:01 模式 1;02 模式 2;03 模式 3。 模式 1:常规模式探测,PIR 和多普勒或逻辑关系判断(出厂默认)。 模式 2:PIR 先探测后,再启动多普勒探测,适合防玻璃穿透环境使用。 模式 3:仅多普勒工作,适合空气流动较大环境使用。 示例:XX XX XX XX XX 9A 00 01 0F 启用模式二。 (十)自定义总线数据指令 发送:XX XX XX XX XX(地址)56 56 56 0F 发送 A1 00(固定)00(00 无人 / 01 有人)YY YY YY YY YY YY YY YY YY YY YY YY(自定义总线数据)0F 关闭配置:XX XX XX XX XX(地址)46 46 46 0F 清除配置:XX XX XX XX XX(地址)EE EE EE 0F 反馈:操作成功反馈 BC BC 示例:XX XX XX XX XX 56 56 56 0F 开启配置。 A1 00 00 12 35 03 01 FC 4A 0F 设置无人状态发送窗帘带总线数据 12 35 03 01 FC 4A 0F,打开窗帘。 A1 00 01 12 35 03 02 BC 4B 0F 设置有人状态发送窗帘带总线数据 12 35 03 02 BC 4B 0F,关闭窗帘。 XX XX XX XX XX 46 46 46 0F 关闭配置。 (十一)自定义总线数据发送次数 发送:XX XX XX XX XX(地址)98 00 02(总线指令重复发送次数)0F。 总线指令重复发送次数:范围 00-FD。 反馈:操作成功反馈 BC BC。 示例:XX XX XX XX XX 98 00 02 0F 配置自定义总线指令发送次数为 2 次。 (十二)自定义总线数据发送时间间隔配置协议 发送:XX XX XX XX XX(地址)97 00 04(自定义总线指令发送时间间隔单位 0.1S)0F。 自定义总线指令发送时间间隔:单位 0.1S 范围 01-FD。 反馈:操作成功反馈 BC BC。 示例:XX XX XX XX XX 97 00 04 0F 配置自定义指令发送时间间隔为 0.4 秒。 (十三)波特率配置协议 发送:XX XX XX XX XX(地址)99 00 09(波特率)0F。 波特率:00 13 对应 19200;00 09 对应 9600;00 39 对应 57600;00 73 对应 115200。 反馈:操作成功反馈 BC BC,立即生效。 示例:XX XX XX XX XX 99 00 09 0F 配置设备的总线波特率为 9600。 (十四)恢复出厂设置 发送:XX XX XX XX XX(地址)EE EE EE(固定)0F。 反馈:操作成功反馈 BC BC。 示例:XX XX XX XX XX EE EE EE 0F 恢复出厂设置。 (十五)Modbus 协议切换 FF 1F 01(Modbus 地址)09 01 FF 切换为 Modbus 协议。 FF 1F 01(Modbus 地址)09 02 FF 切换为自定义协议。 反馈:操作成功重新上传地址。 七、Modbus 协议 (一)寄存器地址及功能描述 00 00 :只读,人体信号,0. 无人,1 有人。 00 01 :读写,工作模式,模式 1:常规模式探测,PIR 和多普勒或逻辑关系判断(出厂默认);模式 2:PIR 先探测后,再启动多普勒探测,适合防玻璃穿透环境使用;模式 3:仅多普勒工作,适合空气流动较大环境使用。 00 02 :读写,延时时间,1-7200S 人体离开后判断为无人关闭输出的时间。 00 03 :读写,光照度等级,0-9 级,0 为不启动光照度功能(默认)。 00 04 :读写,灵敏度设置,1-100 级灵敏度,100 位最灵敏(默认),1 位最迟钝。 00 05 :读写,指示灯开关,状态指示灯开 / 关,0 关闭,1 开启。 00 06 :读写,主动上传模式,0. 关闭自动上传;1. 信号发生变化的时候主动上传一次;2. 信号发生变化后主动上传(最大上传 10 次,每次间隔 3 秒,主机应答之后结束上传(最大上传 10 次,每次间隔 3 秒,主机返回的内容为传感器上传的内容,收到主机返回的数据后停止本次主动上传);3. 信号发生变化的时候主动上传自定义数据格式。 00 07 :读写,开关次数统计,最大统计到 65535,可通过 06 功能码清零。 00 08 :读写,强制输出模式,0 强制关闭,1 强制开启,2 自动感应模式。 00 09 :读写,运动幅度,人体在传感器范围内运动幅度。 00 0A :只读,供给电源电压,设备供给电源电压(单位:mV)。 00 FA :只读,故障信号,0 无异常,1 电源异常,2 传感器异常。 00 FB :只写,修改地址,在总线上修改已知设备地址的新地址。 00 FC :只写,修改波特率,在总线上修改已知设备地址的波特率。 00 FD :只写,重启设备,设置参数 FF FF 重启设备。 00 FE :只写,恢复出厂设置,设置参数 FF FF 恢复出厂设置。 (二)Modbus 主动上传协议格式 地址:01 功能码:46 长度:02 人体状态:00 01 校验码:6C 88 (三)Modbus 协议示例 示例 1 :读取设备地址 0x01 的人体存在信号值。 问询帧(16 进制):01 03 00 00 00 01 84 0A 应答帧(16 进制):01 03 02 00 01 B9 84 示例 2 :设置设备地址 0x01 的延时时间值为 5 秒。 设置帧(16 进制):01 06 00 02 00 05 E8 09 应答帧(16 进制):01 06 00 02 00 05 E8 09 示例 3 :设置设备的新地址及波特率。 设置帧(16 进制):FF 1F 0A 73 00 FF 写入码:0xff 固定码:0x1f 新的地址:0x0a 新的波特率:0x73 缺省:0x00 固定:0xff 八、安装注意事项 不能在室外使用。 请勿安装在通风口及动荡不稳定的物体上。 减少检测范围内的移动物体,提高人体识别的准确度。 正确输入稳定的额定电压。 不能工作在潮湿、高温的环境下。 不能拆开外壳触摸探头。 --- ### 638. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介 RGB灯带调光器是一款低压高精度分级的数字式线性调光调色驱动器,支持五路恒压输出,低纹波无频闪,支持输出电流0-100%可调,支持连续变光变色模式。该产品广泛应用于家居、商业场所等需要调节灯光氛围的场景。 二、产品参数 名称:RS-485无极调光控制器 输入:DC12V~24V 输出:DC12V/24V/120W 支持协议:RJ-45、Modnus私有协议(可定制其他协议) 调光等级:RGB/CW/0-100% 尺寸:96.5*50*32MM 最大功率:单模块120W(可扩展) 工作温度:-10~50℃ 其他功能:模式预设 三、功能特点 无极调光调色 无极调亮度:支持0%-100%的亮度调节,满足不同场景的亮度需求。 无极调色温:色温调节范围为3000K-6500K,可实现从暖光到冷光的平滑过渡。 无极调颜色:支持RGB全彩调节,可通过控制红、绿、蓝三色的亮度来实现任意颜色的混合。 控制方式 RS-485接口:支持通过RS-485接口进行集中控制,方便与智能家居系统集成。 Modnus私有协议:支持通过Modnus协议进行设备通信和控制,确保数据传输的稳定性和安全性。 设备兼容性 单色灯带:支持单色灯带的亮度调节和冷暖光切换。 RGB彩色灯带:支持RGB灯带的颜色切换和亮度调节,可根据项目需求预设颜色。 四、应用场景 RGB灯带调光器适用于多种场景,包括但不限于: 家居照明:实现全屋灯光的调光调色,营造温馨或明亮的氛围。 商业场所:如餐厅、酒店、商场等,可根据不同时间段和活动需求调整灯光效果。 娱乐场所:如酒吧、KTV、电影院等,通过动态调整灯光颜色和亮度,增强氛围体验。 五、安装指南 硬件安装 电源连接:将调光器的输入端连接到DC12V~24V电源。 灯带连接:将RGB灯带的输出端连接到调光器的对应输出端子。 通信连接:使用RJ-45网线将调光器的RS-485接口连接到控制主机。 软件配置 设备识别:通过控制主机识别调光器的设备ID。 参数设置:根据需要设置调光器的通信参数(如波特率、校验位等)。 场景预设:在控制主机上预设不同的灯光场景,如“浪漫模式”、“工作模式”等。 六、使用方法 基本操作 开关控制:通过发送控制命令打开或关闭灯光。 亮度调节:通过调整亮度值(0-100%)来改变灯光亮度。 色温调节:通过调整色温值(3000K-6500K)来改变灯光色温。 颜色调节:通过调整RGB值(0-255)来改变灯光颜色。 高级功能 模式切换:切换不同的灯光模式,如“浪漫模式”、“报警模式”等。 数据保存:设置是否保存配置数据,以便在设备重启后恢复之前的设置。 七、协议说明 Modnus协议表(RGB-Modbus RTU V1.2) 序号功能码寄存器地址值功能描述备注160x0000任意重启23或60x00011~254设备ID默认1,强制设置新ID号用0号ID33或60x00020~10: 不回复数据1: 回复数据默认1460x00030~3RS485参数设置:0: RS485: 8, n, 11: RS485: 8, n, 22: RS485: 8, odd, 13: RS485: 8, even, 1默认0,重启生效560x00041200~65535RS485波特率设置:其中65535代表的是115200,其他数值则就是该值的波特率默认9600,重启生效63或60x00050~10: 不保存设置数据1: 保存设置数据默认0,重启生效73或60x01001~3控制设备类型:1: 单色灯2: 双色灯3: 三色灯83或160x01010~n灯光模式:0: 无模式1: 浪漫模式(三色灯)2: 报警模式1-红蓝爆闪(三色灯)注意:1. 使用功能码16时,0x0100~0x0108这9个寄存器的值必须使用1条命令一次性设置完成。93或160x01020~10: 关闭灯光1: 打开灯光103或160x01030~100亮度(单色灯、双色灯、三色灯)113或160x01040~100色温(双色灯)123或160x01060~255R(三色灯)133或160x01070~255G(三色灯)143或160x01080~255B(三色灯) 通信指令示例 1. 重启 (功能码 6, 地址 0x0000)​​ •​​示例1 (重启设备)​​:01 06 00 00 00 00 89 CA •01:设备地址 •06:功能码 6 •00 00:重启寄存器地址 •00 00:任意值 (此处为0) •89 CA:CRC16 (低字节在前) •​​示例2 (带非零值重启)​​:01 06 00 00 12 34 84 BD •12 34:任意值 (0x1234) •84 BD:CRC16 ​​2. 设置设备ID (功能码 6, 地址 0x0001)​​ •​​示例1 (设置ID为10)​​:01 06 00 01 00 0A 58 0D •00 0A:新ID值 (10) •58 0D:CRC16 •​​示例2 (强制设置ID为100)​​:00 06 00 01 00 64 D9 E1 •00:广播地址 (强制设置) •00 64:新ID值 (100) •D9 E1:CRC16 ​​3. 设置回复数据模式 (功能码 6, 地址 0x0002)​​ •​​示例1 (关闭回复)​​:01 06 00 02 00 00 28 0A •00 00:值=0 (不回复) •28 0A:CRC16 •​​示例2 (开启回复)​​:01 06 00 02 00 01 E9 CA •00 01:值=1 (回复数据) •E9 CA:CRC16 ​​4. 设置RS485参数 (功能码 6, 地址 0x0003)​​ •​​示例1 (8, odd, 1)​​:01 06 00 03 00 02 F8 0B •00 02:值=2 (8, odd, 1) •F8 0B:CRC16 •​​示例2 (8, n, 2)​​:01 06 00 03 00 01 B8 0A •00 01:值=1 (8, n, 2) •B8 0A:CRC16 ​​5. 设置RS485波特率 (功能码 6, 地址 0x0004)​​ •​​示例1 (57600波特率)​​:01 06 00 04 E1 00 5F 0D •E1 00:值=57600 (0xE100) •5F 0D:CRC16 •​​示例2 (38400波特率)​​:01 06 00 04 96 00 9F 8A •96 00:值=38400 (0x9600) •9F 8A:CRC16 ​​6. 设置保存数据模式 (功能码 6, 地址 0x0005)​​ •​​示例1 (不保存设置)​​:01 06 00 05 00 00 A8 0B •00 00:值=0 (不保存) •A8 0B:CRC16 •​​示例2 (保存设置)​​:01 06 00 05 00 01 E8 0A •00 01:值=1 (保存) •E8 0A:CRC16 ​​7. 设置设备类型 (功能码 6, 地址 0x0100)​​ •​​示例1 (单色灯)​​:01 06 01 00 00 01 89 CA •00 01:值=1 (单色灯) •89 CA:CRC16 •​​示例2 (双色灯)​​:01 06 01 00 00 02 C8 0A •00 02:值=2 (双色灯) •C8 0A:CRC16 ​​灯光控制参数 (功能码 16, 地址 0x0100-0x0108)​​ 示例1:三色灯 - 报警模式 复制01 10 01 00 00 09 12 00 03 00 02 00 01 00 64 00 00 00 00 FF 00 00 FF 00 3F 8A •01 10:地址+功能码16 •01 00:起始地址 0x0100 •00 09:9个寄存器 •12:18字节数据 •​​数据​​: •00 03:设备类型=3 (三色灯) •00 02:模式=2 (报警模式) •00 01:开关=1 (开灯) •00 64:亮度=100% •00 00:色温=0 (忽略) •00 00:保留=0 •FF 00:R=255 •00 00:G=0 •FF 00:B=255 (红蓝爆闪) •3F 8A:CRC16 示例2:双色灯 - 自定义设置 复制01 10 01 00 00 09 12 00 02 00 00 00 01 00 50 00 64 00 00 00 00 00 00 00 00 1F 89 •​​数据​​: •00 02:设备类型=2 (双色灯) •00 00:模式=0 (无模式) •00 01:开关=1 (开灯) •00 50:亮度=80% •00 64:色温=100% (暖光) •00 00:保留=0 •00 00:R=0 (忽略) •00 00:G=0 (忽略) •00 00:B=0 (忽略) •1F 89:CRC16 ​​单独控制示例 (功能码 6)​​ 灯光开关控制 (地址 0x0102) •​​开灯​​:01 06 01 02 00 01 68 0B •01 02:地址 0x0102 •00 01:值=1 (开灯) •68 0B:CRC16 •​​关灯​​:01 06 01 02 00 00 29 CB •00 00:值=0 (关灯) •29 CB:CRC16 亮度控制 (地址 0x0103) •​​亮度30%​​:01 06 01 03 00 1E 89 CC •00 1E:值=30 (30%) •89 CC:CRC16 •​​亮度100%​​:01 06 01 03 00 64 48 0D •00 64:值=100 (100%) •48 0D:CRC16 色温控制 (双色灯)(地址 0x0104) •​​色温30%​​:01 06 01 04 00 1E 89 CC •00 1E:值=30 (30%) •89 CC:CRC16 •​​色温100%​​:01 06 01 04 00 64 48 0D •00 64:值=100 (100%) •48 0D:CRC16 RGB控制 (三色灯专用) •​​设置红色​​:01 06 01 06 00 FF 08 0C •01 06:地址 0x0106 (R) •00 FF:值=255 (最大红色) •08 0C:CRC16 •​​设置绿色​​:01 06 01 07 00 80 49 CD •01 07:地址 0x0107 (G) •00 80:值=128 (50%绿色) •49 CD:CRC16 •​​设置蓝色​​:01 06 01 08 00 00 28 0D •01 08:地址 0x0108 (B) •00 00:值=0 (无蓝色-关) •28 0D:CRC16 使用注意事项 1.​​设备地址设置​​:广播地址为0,用于向所有设备发送指令 2.​​数据保存​​:修改配置参数后需发送保存指令才能断电记忆 3.​​过渡时间​​:单位为毫秒,影响亮度变化的平滑程度 4.​​模式切换​​:切换工作模式会覆盖当前的手动亮度设置 5.​​CRC校验​​:所有指令必须包含正确的CRC校验码 八、故障排除 灯光不亮:检查电源连接是否正常,确认调光器是否收到控制命令。 颜色异常:检查RGB值设置是否正确,确认灯带连接是否松动。 通信失败:检查RS-485通信线是否连接正确,确认波特率和校验位设置是否匹配。 九、保修信息 保修期限:自购买之日起12个月内。 保修范围:产品在正常使用情况下出现的故障或性能问题。 保修条件:需提供购买凭证,人为损坏或不当使用不在保修范围内。 --- ### 639. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 本烟雾传感器是一款高性能的室内烟雾探测设备,专为实现快速烟雾报警而设计。产品基于通过 3C 认证的传感器,并增加了 Modbus 通讯模组,能够快速接入各种监控和报警系统。传感器采用光电感烟技术,通过特殊设计的检测暗室和高灵敏度的光敏元件,实现对烟雾粒子的精准探测。当烟雾浓度超过设定阈值时,传感器会立即发出火灾报警信号,确保及时响应火灾风险。 二、功能特点 (一)核心功能 烟雾探测与报警 :传感器通过检测暗室内的光散射效应,精准感应烟雾粒子浓度。当烟雾浓度超过设定阈值(0.5dB/m 至 1dB/m)时,立即触发声光报警,报警声音≥80 分贝,确保在复杂环境中也能清晰听到。 Modbus 通讯集成 :支持标准 Modbus RTU 协议,可通过 RS485 通讯接口快速接入各种监控系统、消防系统和智能家居平台,实现数据的实时传输和远程监控。 (二)产品优势 高效探测性能 :采用光电感烟技术,检测暗室设计为特殊 “迷宫” 结构,有效屏蔽外部光线干扰,确保只有烟雾粒子能进入并引发光散射效应,提高探测的准确性和灵敏度。 广覆盖探测面积 :单个传感器的探测面积可达 40 平方米,适用于家庭、办公室、酒店等多种场景,减少设备部署数量和成本。 防虫设计 :传感器探测罩采用防虫结构,避免昆虫进入影响探测性能,确保设备长期稳定运行。 报警状态记忆 :具备报警状态记忆功能,即使断电重启,也能记录之前的烟雾报警状态,方便后续排查和处理。 远程控制与组网 :支持远程消音按键控制,可通过按键远程停止报警声音。选配 Loramesh 无线通讯模块,可实现快速无线组网,灵活适应不同安装环境。 三、应用场景 本烟雾传感器广泛适用于以下场景: 家庭 :安装在客厅、卧室、厨房等区域,实时监测烟雾情况,保障家庭成员的生命财产安全。 办公楼 :部署在办公室、走廊、会议室等场所,与楼宇自动化系统集成,实现集中监控和管理。 酒店 :应用于客房、走廊、餐厅等区域,满足酒店消防安全要求,提供可靠的烟雾报警解决方案。 银行、医院、学校 :在营业厅、病房、教室等人员密集场所安装,确保及时发现火灾隐患,保障公共安全。 机场、博物馆、实验室 :针对高价值设备和物品的保护,提供精准的烟雾探测和报警功能,防止火灾造成重大损失。 工厂 :在生产车间、仓库等区域安装,与工厂消防系统联动,实现快速响应火灾事故,减少生产中断和财产损失。 此外,本产品也适用于弱电集成商、智能家居方案工程师等专业人士,用于构建智能化、自动化的消防报警系统。 四、产品规格 (一)基本参数 产品名称 :烟雾传感器 型号 :IE01 产品重量 :100g 外观尺寸 :Φ101*H50MM 输入电压 :DC12V 安装方式 :吸顶安装 报警浓度 :II 级烟感报警器,烟雾浓度 > 0.5dB/m、< 1dB/m 报警 (二)技术规格 通讯方式 :RS485 Modbus RTU 执行标准 :GB20517-2006 静态电流 :≤10uA 报警电流 :≤80mA 声压级 :≥80db(正前方 3 米) 工作温度 :-10℃~50℃ 相对湿度 :≤95%RH(40℃±2℃) 五、安装与调试 (一)安装环境 空间要求 :报警器适用于空间高度在 6m 以下的场所,保护面积为 40 平方米。建议安装在天花板的中央位置,确保烟雾、热量和燃烧产物能够快速上升并被探测到。 距离要求 :与灯具或装饰物保持至少 30 厘米的距离,与墙壁和角落保持至少 15 厘米的距离,避免遮挡和干扰。 大厅安装 :如果大厅长度超过 12 米,建议在大厅两端各安装一个报警器,以确保全面覆盖。 (二)安装步骤 打孔 :在天花板上相距 50mm-68mm 打两个安装孔。 固定底座 :使用膨胀塞和自攻螺丝钉将报警器的底座固定在天花板上,确保安装牢固。 连接电源 :将 DC12V 电源连接到报警器的输入端口,确保极性正确。 自检测试 :长按自检按键,报警器指示灯应点亮并发出报警声音,表示设备工作正常。如果指示灯不亮或无报警声音,请检查安装和连接是否正确。 (三)调试与配置 地址设置 :通过修改寄存器地址(0000),可以设置设备的通讯地址。地址范围为 01-FE,FF 为广播地址。 波特率调整 :根据实际通讯需求,可通过寄存器 0003 修改 485 波特率。支持的波特率包括 115200、76800、57600、38400、19200、14400、9600、4800、2400、1200。 无线通讯配置 :选配 Loramesh 无线通讯模块后,可通过寄存器 0004 设置无线波特率,配置方法与 485 波特率相同。 报警状态记忆 :默认不记忆报警状态,如需开启记忆功能,可将寄存器 0010 设置为 00 01。 主动上报功能 :通过寄存器 0016 和 0017 可以开启或关闭主动上报功能,并进行消音和测试操作。 六、功能寄存器地址 (一)Read Holding Registers(4x) 功能码寄存器名字读 / 写寄存器地址 10 进制寄存器地址 16 进制值值含义备注03地址读 / 写0000000000 01地址范围 01-FEFF 为广播地址NRNR0001000100 01NRNRNRNR0002000200 01NRNR485 波特率读 / 写0003000300 0100 对应 115200 01 对应 76800 02 对应 57600 03 对应 38400 04 对应 19200 05 对应 14400 06 对应 9600 07 对应 4800 08 对应 2400 09 对应 1200修改成功会以当前波特率回复,回复后切换为新的波特率无线 Loramesh 波特率读 / 写0004000400 0100 对应 115200 01 对应 76800 02 对应 57600 03 对应 38400 04 对应 19200 05 对应 14400 06 对应 9600 07 对应 4800 08 对应 2400 09 对应 1200修改成功会以当前波特率回复,回复后切换为新的波特率 (二)Write Single Register 功能码寄存器名字读 / 写寄存器地址 10 进制寄存器地址 16 进制值值含义备注06烟雾报警状态断电是否记忆读 / 写0010000A00 000 表示不记忆;1 表示记忆默认不记忆烟雾报警状态位读 / 写0016001000 010:手动写入 0,置位此状态寄存器 1:发生烟雾报警时会把此寄存器置为 1,蜂鸣器结束报警后不会自动重置此寄存器,需要手动写入 0 置位此状态寄存器应用场景举例:达到报警器阈值后,设备报警,此状态为自动变为 1,第三方读取到此状态位知道现在处于报警了,派人处理,处理完后手动将此寄存器写为 0,表示处理完毕;如果不手动处理,此寄存器将会一直为 1消音 / 测试按键读 / 写0017001100 010:松开 1:按下手动将此寄存器置为 1,也会让 “烟雾报警状态位” 以为是报警器按变为 1;此寄存器不读取消音 / 测试按键的 DI 状态,只表示一个同等控制位;置为 1 后除非断电或者手动置为 0,否则不会主动从 1 变回 0蜂鸣器实时状态读 / 写0041002900 010 报警(0 表示蜂鸣器在响) 1 正常(1 表示蜂鸣器没有响)- 七、自有通讯协议 (一)数据帧格式 自定义数据发送 :1A 24 12 02 01 BB 00 00 E3 01 XX XX XX XX XX XX (最多 24 字节) 0F 示例 :报警时发送自定义数据 11 22 33 44 55 66 77 88 发送帧 :1A 24 12 02 01 BB 00 00 E3 01 11 22 33 44 55 66 77 88 0F 配置成功反馈 :BC BC 开启主动数据上报功能 :1A 24 12 02 BC 01 00 E3 0F 关闭主动数据上报功能 :1A 24 12 02 BC 00 00 E3 0F 修改设备地址 :1A 24 12 02 01 F8 E7 D6 1A 24 12 02 02 返回帧 :1A 24 12 02 02 BC BC(新地址 + BC BC) (二)协议说明 帧头与帧尾 :每帧数据以 1A 开头,以 0F 结尾,确保数据的完整性和可识别性。 地址与命令 :帧中包含设备地址和命令字节,用于标识目标设备和操作类型。 数据字段 :根据具体功能,数据字段可包含自定义数据、配置参数等信息。 校验与反馈 :通过 BC BC 反馈确认配置成功,确保通讯的可靠性和稳定性。 八、维护与保养 (一)日常维护 清洁表面 :定期使用干净的软布擦拭传感器表面,避免灰尘和污垢积累影响探测性能。 检查安装 :确保传感器安装牢固,无松动或移位现象,如有异常应及时重新固定。 测试功能 :每月进行一次自检测试,长按自检按键检查报警声音和指示灯是否正常工作。 (二)定期保养 性能测试 :每季度进行一次全面性能测试,检查传感器的探测灵敏度、报警准确性等指标是否符合要求。 电气检查 :检查电源连接是否牢固,电压是否稳定,确保设备正常供电。 通讯测试 :通过监控系统或调试软件,检查传感器与上位机的通讯是否正常,数据传输是否稳定。 (三)故障处理 无报警声音 :检查电源连接是否正确,报警器是否正常供电;检查扬声器是否损坏,如有需要及时更换。 频繁误报 :检查安装环境是否存在干扰源,如强光、高温、蒸汽等;检查探测罩是否被遮挡或污染,进行清洁和调整。 通讯异常 :检查 RS485 通讯线路是否连接正确,有无断线或短路现象;通过调试软件检查通讯参数设置是否正确,重新配置如有必要。 九、常见问题解答 (一)报警器不工作 可能原因 :电源未接通、电源电压异常、设备损坏。 解决方法 :检查电源连接是否正确,使用万用表测量电源电压是否在 DC12V 范围内。如电源正常但设备仍不工作,请联系售后服务进行检测和维修。 (二)报警器频繁误报 可能原因 :安装环境存在干扰源、探测罩被污染、灵敏度过高。 解决方法 :检查安装位置是否符合要求,避免靠近灯具、空调出风口等干扰源。清洁探测罩表面,确保无灰尘和污垢。如仍存在误报,可通过调试软件适当降低灵敏度设置。 (三)报警器无法与上位机通讯 可能原因 :通讯线路故障、通讯参数设置错误、设备地址冲突。 解决方法 :检查 RS485 通讯线路是否连接正确,有无断线、短路或接触不良现象。确认通讯参数(波特率、数据位、校验位)与上位机设置一致。检查设备地址是否唯一,如有冲突请重新设置地址。 十、附录 (一)技术规格表 参数名称规格产品名称烟雾传感器型号IE01产品重量100g外观尺寸Φ101*H50MM输入电压DC12V安装方式吸顶安装报警浓度II 级烟感报警器,烟雾浓度 > 0.5dB/m、< 1dB/m 报警通讯方式RS485 Modbus RTU执行标准GB20517-2006静态电流≤10uA报警电流≤80mA声压级≥80db(正前方 3 米)工作温度-10℃~50℃相对湿度≤95%RH(40℃±2℃) (二)故障代码表 故障码故障描述解决方法01电源故障检查电源连接,确保电压稳定在 DC12V 范围内02通讯故障检查通讯线路连接,确认通讯参数设置正确03探测性能下降清洁探测罩,检查安装环境是否存在干扰源04报警状态异常检查报警状态位设置,确认是否为误报 (三)安装工具清单 工具名称用途螺丝刀固定底座螺丝电钻打安装孔膨胀塞固定底座万用表测量电源电压清洁布清洁传感器表面 --- ### 640. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 CC01压差温度二合一传感器是一款高精度工业级测量设备,采用铝合金高防护等级外壳,具有防尘防水特性,专为恶劣工业环境设计。本产品集压差测量和温度测量于一体,精度可达0.2%FS,能快速响应压力变化,在管道压力监测、负压病房环境控制、除尘系统监控等对测量精度要求高的场景中提供可靠数据支持。 产品规格 基本参数 产品型号:CC01 测量类型:压差+温度二合一 产品重量:0.1kg 外观尺寸:102.9mm×60mm×27.5mm 外壳材质:铝合金 防护等级:IP67(防尘防水) 宝塔接头规格:M10×1螺纹,外径8mm 高宝塔头:接室内负压环境 低宝塔头:接室外常压环境 技术参数 压差测量范围:-100Pa~+100Pa(可定制) 温度测量范围:-20℃~80℃ 测量精度:0.2%FS(压差) 响应时间:<100ms 工作电压:DC12V-24V 输出信号:Modbus RTU 默认通信参数:9600bps,8数据位,无校验,1停止位(8N1) 产品特点 高精度测量:0.2%FS精度,可精确测量微小压差变化 快速响应:<100ms的快速响应时间,实时反馈压力变化 坚固耐用:铝合金外壳,IP67防护等级,适应恶劣工业环境 紧凑设计:小巧尺寸便于在空间受限的设备和管道上安装 双参数测量:同时测量压差和温度,减少设备配置复杂度 长期稳定:严格老化测试和质量控制,漂移小,使用寿命长 Modbus通信协议详解 1. 基本通信参数 协议类型:Modbus RTU 默认从站地址:0x01(可修改范围0x01-0xFE) 默认波特率:9600bps(可修改为2400/4800/14400/19200/38400/56000/57600/115200) 数据格式:8位数据位,无校验,1位停止位(8N1) 2. 寄存器映射表 十进制地址十六进制地址参数名称读/写数据类型值范围说明16 (0x0010)0x10设备地址R/W16位无符1-254设备Modbus地址,FF为通用地址17 (0x0011)0x11波特率R/W16位无符0-80:9600,1:2400,2:4800,3:14400,4:19200,5:38400,6:56000,7:57600,8:1152003 (0x0003)0x03温度值R16位有符-200~800实际温度=寄存器值/10(单位℃)4 (0x0004)0x04当前压差R32位浮点-100.0~100.0Big-endian格式(单位Pa) 3. 功能码说明 功能码03H:读保持寄存器 请求格式: [从站地址][03][起始地址高][起始地址低][寄存器数高][寄存器数低][CRC低][CRC高] 响应格式: [从站地址][03][字节数][数据1高][数据1低]...[数据N高][数据N低][CRC低][CRC高] 功能码06H:写单个寄存器 请求格式: [从站地址][06][寄存器地址高][寄存器地址低][数据高][数据低][CRC低][CRC高] 响应格式:与请求相同 功能码10H:写多个寄存器 请求格式: [从站地址][10][起始地址高][起始地址低][寄存器数高][寄存器数低][字节数][数据1高][数据1低]...[CRC低][CRC高] 响应格式: [从站地址][10][起始地址高][起始地址低][寄存器数高][寄存器数低][CRC低][CRC高] 4. 通信示例 示例1:读取温度值(地址0x0003) 请求: 01 03 00 03 00 01 74 09 从站地址:0x01 功能码:0x03 起始地址:0x0003 寄存器数量:0x0001 CRC16:0x0974 响应(假设温度为25.6℃): 01 03 02 01 00 79 84 从站地址:0x01 功能码:0x03 字节数:0x02 数据:0x0100(256) → 256/10=25.6℃ CRC16:0x8479 示例2:读取压差值(地址0x0004,32位浮点) 请求: 01 03 00 04 00 02 44 09 从站地址:0x01 功能码:0x03 起始地址:0x0004 寄存器数量:0x0002(32位浮点占2个寄存器) CRC16:0x0944 响应(假设压差为-5.2Pa): 01 03 04 C0 A6 66 66 3F 23 从站地址:0x01 功能码:0x03 字节数:0x04 数据:0xC0A66666(32位浮点,-5.2) CRC16:0x233F 示例3:修改设备地址为0x02 请求: 01 06 00 10 00 02 89 CF 从站地址:0x01 功能码:0x06 寄存器地址:0x0010 数据:0x0002 CRC16:0xCF89 响应:与请求相同 安装与接线说明 1. 机械安装 选择测量点位置,确保无强烈振动和电磁干扰 使用M10×1螺纹将传感器固定在测量位置 高宝塔头连接室内/负压侧,低宝塔头连接室外/常压侧 确保密封良好,防止漏气影响测量精度 2. 电气接线 电源接线: 正极:+12V~+24V DC 负极:GND 通信接线: RS485-A:数据+ RS485-B:数据- 建议使用双绞屏蔽线,总线两端接120Ω终端电阻 3. 接线图 [电源+] ---- +12V-24V DC [电源-] ---- GND [RS485-A] -- 数据+ [RS485-B] -- 数据- [高宝塔头] -- 接负压侧 [低宝塔头] -- 接常压侧 安全注意事项 电气安全: 操作前必须切断所有相关电源 使用非接触式电压测试仪确认断电 严格遵守国家电气安全规程 电源要求: 仅使用DC12V-24V电源 确保电源稳定,波动不超过±10% 安装环境: 避免潮湿、高温、强电磁干扰环境 确保工作区域干燥清洁 个人防护: 操作时佩戴绝缘手套和安全眼镜 准备灭火器等应急设备 接线检查: 通电前仔细检查所有接线 确保无短路或错误连接 维护保养: 定期检查传感器状态 清洁宝塔接头,确保气路畅通 避免机械冲击和振动 应用场景 医疗环境:负压病房、手术室压差监控 工业控制:管道压力监测、除尘系统监控 HVAC系统:洁净室压差控制、通风系统平衡 农业养殖:养殖车间环境调控 实验室:生物安全柜、通风柜压差监测 故障排除 现象可能原因解决方法无通信电源未接通/地址错误检查电源/确认设备地址数据异常接线错误/干扰检查接线/增加屏蔽测量不准气路堵塞/传感器故障清洁气路/联系售后显示值漂移环境温度变化大进行零点校准 商品链接:https://item.taobao.com/item.htm?ft=t&id=901845026903 --- ### 641. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 协作机器人是一款集成了实时控制系统的高性能工业机器人。它融合了柔性、安全性、易用性和灵活性等特性,同时具备工业级精度和稳定性。这款机器人专为满足现代工业自动化需求而设计,能够广泛应用于多个行业,提供高效、可靠的自动化解决方案。 二、功能特点 (一)实时控制系统 协作机器人采用先进的实时控制系统,确保了运动的精确性和稳定性。该系统能够快速响应外部指令,实现精准的定位和运动控制。 (二)柔性与安全性 机器人具备卓越的柔性,能够适应不同的工作环境和任务需求。其安全性设计符合国际标准,包括紧急停止、碰撞检测等功能,确保操作人员和设备的安全。 (三)易用性与灵活性 协作机器人采用图形化编程界面,零力示教和丝滑拖拽功能,使得操作和编程变得简单直观。多轴联动设计进一步增强了机器人的灵活性,能够轻松应对复杂的任务。 (四)工业级精度与稳定性 机器人具备±0.02mm的重复定位精度,符合ISO 9283标准。模块化设计确保了系统的稳定性和可维护性。 三、主要特点 (一)安全稳定可靠 协作机器人具备高精度的重复定位能力,重复定位精度达到±0.02mm。模块化设计确保了系统的稳定性和可扩展性。 (二)部署灵活 机器人采用图形化编程,零力示教和丝滑拖拽功能,使得部署变得简单快捷。多轴联动设计进一步增强了机器人的适应性。 (三)高效防护 机器人具备高效的防护机制,能够适应各种复杂的工作环境。防护等级达到IP54(可选IP66),确保设备在恶劣环境下的正常运行。 (四)生态完善 支持ROS二次开发,满足更多样化的需求。支持多种通讯协议方式,为设备商和集成商提供便利。 (五)应用广泛 协作机器人适用于组装、取放、扭螺丝、点胶、监控、餐饮、艾灸、医疗等多个行业。全国范围内的上门教学服务确保项目顺利落地。 四、应用领域 协作机器人广泛适用于家庭、办公楼、酒店、银行、医院、学校、机场、博物馆、实验室、工厂、农业等有电动机械臂需求的用户。同时,也适用于设备制造、机器人制造、安防制造等专业人士使用。 五、机械臂基本参数 (一)产品参数 产品类型 :电动机械臂 型号 :UD01 有效负载 :5kg 工作半径 :922mm 自由度 :6 个旋转关节 人机交互 :10.1 英寸示教器或 webserver 防护等级 :IP54(IP66 可选) 噪音 :< 65db 安装方向 :任何方向 I/O 端口 :数字输入(DI)2;数字输出(DO)2;模拟输入(AI)2;模拟输出(AO)2;高速脉冲输入 2 工具 I/O 电源 :24V/1.5A 底座直径 :149mm 整机重量 :≈22kg(不含线) 工作温度 :0-45℃ 工作湿度 :90%RH(non-condensing) 设备材料 :铝、钢 六、机械臂运动特征 (一)精度 重复定位精度 :±0.02mm 符合 ISO 9283 的位姿可重复性 :±0.03mm (二)移动轴 移动轴工作范围最大速度基座±175°±180°/s肩部+ 85°/- 265°±180°/s肘部±160°±180°/s腕部 1+ 85°/- 265°±180°/s腕部 2±175°±180°/s腕部 3±175°±180°/s典型 TCP 速度1m/s- 七、Mini 控制箱 2kw (一)设备参数 设备重量 :2.5kg(不含线) 设备材料 :镀锌板 尺寸参数 :24518044.5mm(不含凸出物) 防护等级 :IP54 工作温度 :0-45℃ 工作湿度 :90%RH(non-condensing) I/O 端口 :数字输入(DI)16;数字输出(DO)16;模拟输入(AI)2;模拟输出(AO)2;高速脉冲输入 2 I/O 电源 :24V/1.5A 通讯 :I/O、TCP/IP、Modbus_TCP/RTU 开发环境 :C#/C++/Python/java/ROS 八、按钮盒 (一)设备参数 设备重量 :490g(带线重量) 设备材料 :ABS 尺寸参数 :1306066mm(不含凸出物) 防护等级 :IP54 线缆长度 :5m 按键次数 :≥20 万次 协议类型 :TCP/IP 网络传输速率 :100M 按钮功能 :手动/自动、拖动、点记录、是否配合按钮盒、开始/停止、关机 供电 :standard POE 九、示教器(选配) (一)设备参数 设备重量 :1.6kg(wire weight) 设备材料 :ABS、PP 尺寸参数 :26821088mm 防护等级 :IP54 工作湿度 :90%RH(非冷凝) 线缆长度 :5m 显示分辨率 :1280*800 pixels 十、通讯参数 通讯参数为 9600 8 N 1,确保了数据传输的稳定性和可靠性。 十一、功能寄存器地址 (一)Read Coils(0x) 功能码寄存器名字读 / 写寄存器地址 10 进制寄存器地址 16 进制值值含义备注01DI1读 / 写0100006400 001:开始运动 0:停止运动后台预设运动轨迹DI2读 / 写0101006500 001:开始运动 0:停止运动后台预设运动轨迹DI3读 / 写0102006600 001:开始运动 0:停止运动后台预设运动轨迹DI4读 / 写0103006700 001:开始运动 0:停止运动后台预设运动轨迹DI5读 / 写0104006800 001:开始运动 0:停止运动后台预设运动轨迹DI6读 / 写0105006900 001:开始运动 0:停止运动后台预设运动轨迹DI7读 / 写0106006A00 001:开始运动 0:停止运动后台预设运动轨迹DI8读 / 写0107006B00 001:开始运动 0:停止运动后台预设运动轨迹DI9读 / 写0108006C00 001:开始运动 0:停止运动后台预设运动轨迹DI10读 / 写0109006D00 001:开始运动 0:停止运动后台预设运动轨迹暂停写050001 F400 00点动信号,先发 1,一秒内需要再发 0,才能让他处于该状态-启动写050101 F500 00点动信号,先发 1,一秒内需要再发 0,才能让他处于该状态-恢复写050201 F600 00点动信号,先发 1,一秒内需要再发 0,才能让他处于该状态-停止写050301 F700 00点动信号,先发 1,一秒内需要再发 0,才能让他处于该状态-移动到原点写050401 F800 00点动信号,先发 1,一秒内需要再发 0,才能让他处于该状态-手动自动模式切换写050501 F900 00点动信号,先发 1,一秒内需要再发 0,才能让他处于该状态-启动主程序写050601 FA00 00点动信号,先发 1,一秒内需要再发 0,才能让他处于该状态- (二)Read Discrete Input(1X) 功能码寄存器名字读 / 写寄存器地址 10 进制寄存器地址 16 进制值值含义备注02开始运动读0100006400 00--完成动作读0101006500 00--DO2读0102006600 00--DO3读0103006700 00--DO4读0104006800 00--DO5读0105006900 00--DO6读0106006A00 00--DO7读0107006B00 00--DO8读0108006C00 00--DO9读0109006D00 00-- (三)Read Input Registers(3X) 功能码寄存器名字读 / 写寄存器地址 10 进制寄存器地址 16 进制值值含义备注04使能状态读031001 3600 001:处于使能状态 0:没有处于使能状态-模式读031101 3700 001:手动 0:自动-状态读031201 3800 001:停止 2:运行 3:暂停 4:拖动-工件号 NR读031301 3900 00--工件号 NR读031401 3A00 00--急停状态读031501 3B00 000:运行 1:急停是否处于急停主故障码读031601 3C00 00--子故障码读031701 3D00 00--碰撞状态读031801 3E00 001:撞碰 0:无碰撞-运动到位置读031901 3F00 001:运动到位置 0:没有运动到位置-安全停止信号 S10读032001 4000 001:机械臂处于停止状态 0:没有处于停止状态-安全停止信号 S11读032101 4100 00-- 十二、安装与调试 (一)安装环境 协作机器人应安装在稳定、干燥、无腐蚀性气体的环境中。安装时需确保周围有足够的空间,以便于操作和维护。 (二)电气连接 机器人需连接到稳定的电源,确保电压和频率符合设备要求。所有电气连接应由专业人员进行,避免因连接不当导致设备损坏或安全事故。 (三)调试步骤 开机检查 :接通电源后,检查机器人各部件是否正常运行,包括关节运动、控制系统响应等。 参数设置 :根据实际应用需求,设置机器人的工作参数,如负载、速度、精度等。 示教编程 :使用示教器或编程软件,对机器人进行示教编程,设定工作轨迹和动作序列。 安全测试 :在正式运行前,进行安全测试,确保机器人的紧急停止、碰撞检测等功能正常工作。 十三、维护与保养 (一)日常维护 清洁 :定期清洁机器人表面,避免灰尘和污垢积累影响设备性能。 检查连接 :检查各部件的连接是否牢固,确保电气连接和机械连接的安全性。 润滑 :对机器人关节和运动部件进行定期润滑,减少磨损,延长设备使用寿命。 (二)定期保养 性能测试 :定期进行性能测试,检查机器人的精度、速度和稳定性是否符合要求。 部件更换 :根据设备使用情况,及时更换磨损的部件,如密封件、轴承等。 系统更新 :定期更新控制系统的软件,确保设备具备最新的功能和性能优化。 十四、常见问题解答 (一)机器人无法启动 可能原因 :电源连接不当、控制系统故障、紧急停止按钮被触发。 解决方法 :检查电源连接是否正确,重启控制系统,检查紧急停止按钮是否被触发并复位。 (二)机器人运动精度下降 可能原因 :关节磨损、润滑不足、控制系统参数漂移。 解决方法 :检查关节磨损情况并进行保养,补充润滑剂,重新校准控制系统参数。 (三)机器人出现故障报警 可能原因 :过载、碰撞、电气故障。 解决方法 :检查负载是否超出机器人额定负载,查看碰撞检测记录并排除碰撞因素,检查电气连接和控制系统状态。 十五、附录 (一)技术规格表 产品型号UD01有效负载5kg工作半径922mm自由度6 个旋转关节重复定位精度±0.02mm工作温度0-45℃工作湿度90%RH(non-condensing)防护等级IP54(IP66 可选)整机重量≈22kg(不含线) (二)通讯协议规范 通讯参数9600 8 N 1协议类型TCP/IP、Modbus_TCP/RTU (三)故障代码表 故障码故障描述解决方法01过载减少负载,检查机械部件02碰撞检查碰撞原因,复位系统03电气故障检查电气连接,重启控制系统04编程错误检查程序逻辑,重新上传程序 --- ### 642. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MD03 0-10V调光模块是一款输出0-10V纯电压模拟信号的智能控制设备,可通过Modbus RTU协议精确控制5路0-10V输出信号,实现高品质的调光氛围照明。本产品广泛应用于家庭、办公楼、酒店、医院、学校等各种需要智能灯光控制的场所。 产品规格 基本参数 型号:MD03 输出路数:5路0-10V调光输出 产品重量:0.35kg 外观尺寸:69×57×87mm 外壳材质:金属 安装方式:分布式摆放安装或DN35导轨安装 技术规格 通讯协议:Modbus RTU 波特率:默认9600(可修改),8数据位,无校验,1停止位(8N1) 工作温度:-10℃~50℃ 供电电压:DC 12-60V 驱动能力:≤50mA/路 输出电压范围:0-10V 调光精度:255级数字无极调光 产品特点 多设备驱动:可在电流范围内连接多个0-10V调光驱动同时工作 平滑调光:255级数字无极调光,亮度转变平滑自然 群组控制:支持分路群控,快速实现个性化情景控制 调光曲线:支持25段调光曲线,适配多种灯具特性 工业标准:支持Modbus RTU工业控制协议,易于系统集成 Modbus通信协议详解 1. 基本通信参数 协议类型:Modbus RTU 默认从站地址:103(可修改) 默认波特率:9600bps(可修改为4800/9600/19200/38400/57600/115200) 数据格式:8位数据位,无校验,1位停止位(8N1) 2. 寄存器映射表 寄存器地址名称数据类型取值范围说明0x0001设备地址AD16位无符1-247设备Modbus地址0x0002波特率BAUD16位无符1-61:4800,2:9600,3:19200,4:38400,5:57600,6:1152000x0003上电状态1R16位无符0-1通道1上电状态(0:关,1:开)0x0004上电状态2G16位无符0-1通道2上电状态0x0005上电状态3B16位无符0-1通道3上电状态0x0006上电状态416位无符0-1通道4上电状态0x0007上电状态516位无符0-1通道5上电状态0x0008输出亮度1R16位无符0-255通道1亮度值(0-255对应0-10V)0x0009输出亮度2G16位无符0-255通道2亮度值0x000A输出亮度3B16位无符0-255通道3亮度值0x000B输出亮度416位无符0-255通道4亮度值0x000C输出亮度516位无符0-255通道5亮度值 3. 功能码说明 功能码03H:读保持寄存器 请求格式: 从站地址 | 功能码(0x03) | 起始地址高字节 | 起始地址低字节 | 寄存器数量高字节 | 寄存器数量低字节 | CRC16低字节 | CRC16高字节 响应格式: 从站地址 | 功能码(0x03) | 字节数 | 数据1高字节 | 数据1低字节 | ... | CRC16低字节 | CRC16高字节 功能码06H:写单个寄存器 请求格式: 从站地址 | 功能码(0x06) | 寄存器地址高字节 | 寄存器地址低字节 | 数据高字节 | 数据低字节 | CRC16低字节 | CRC16高字节 响应格式:与请求相同 功能码10H:写多个寄存器 请求格式: 从站地址 | 功能码(0x10) | 起始地址高字节 | 起始地址低字节 | 寄存器数量高字节 | 寄存器数量低字节 | 字节数 | 数据1高字节 | 数据1低字节 | ... | CRC16低字节 | CRC16高字节 响应格式: 从站地址 | 功能码(0x10) | 起始地址高字节 | 起始地址低字节 | 寄存器数量高字节 | 寄存器数量低字节 | CRC16低字节 | CRC16高字节 4. 通信示例 示例1:读取通道1-5的亮度值 请求: 67 03 00 08 00 05 1D C9 从站地址:0x67(103) 功能码:0x03(读保持寄存器) 起始地址:0x0008 寄存器数量:0x0005 CRC16:0xC91D 响应: 67 03 0A FF 00 FF 00 FF 00 FF 00 00 00 XX XX 从站地址:0x67 功能码:0x03 字节数:0x0A(10字节) 数据:通道1=255(0x00FF), 通道2=0(0x0000), 通道3=255, 通道4=0, 通道5=0 CRC16:XX XX 示例2:设置通道1亮度为128 请求: 67 06 00 08 00 80 1C 3A 从站地址:0x67 功能码:0x06(写单个寄存器) 寄存器地址:0x0008 数据:0x0080(128) CRC16:0x3A1C 响应:与请求相同 接线说明 电源接线: 供电电源:DC 12-60V 连接至模块的电源输入端子 0-10V输出接线: 5路0-10V输出端子分别连接至调光驱动的控制输入端 每路最大驱动能力50mA 通信接线: RS485接口:A(+)、B(-) 建议使用双绞屏蔽线,总线两端接120Ω终端电阻 典型接线图: [VGA]---[调光驱动1]---[灯具1] [B]-----[调光驱动2]---[灯具2] [IR]----[调光驱动3]---[灯具3] [2G]----[调光驱动4]---[灯具4] [3B]----[调光驱动5]---[灯具5] 应用场景 智能家居:实现全屋灯光情景控制 商业照明:商场、酒店、办公楼等场所的智能调光 工业照明:工厂、仓库等大面积照明控制 专业场所:博物馆、画廊、剧院等需要精确光控制的场所 商品链接:https://item.taobao.com/item.htm?ft=t&id=903183289960 --- ### 643. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 购买语音模块后你会有一个平台激活码和GTID 从语音模块标签处获取登录用户名,密码,及语音账号登录密码。 二、配置控制命令 1.登录语音模块网页后台,http://192.168.x.xxx:6521 设备联网后,过几分钟会自动播报IP地址,IP地址+:6521 即可登录后台  (默认账号:admin 默认密码:admin) 2.点击“天猫精灵”增加设备,选择天猫精灵支持的设备,给设备选择一个别名,选 择设备所在的房间,点击增加。 3.选择增加控制命令 *精灵语音指令:选择语音控制设备打开或者关闭设备.* *选择分类数据:1,主机资源 2,自定义数据。(开发版数据填写在这里)* (写入后可以点击 测试 按键测试是否正常控制)* TCP端口发送 // SOCKET HEX 协议配置 { "ip": "192.168.1.189", "port": "4198", "type": "sockethex", "data": "ddccbbaacc00b30001" } // SOCKET ASCII 协议配置(中文需使用UTF-8编码) { "ip": "192.168.1.11", "port": "8585", "type": "socketascii", "data": "这是要发送的内容,你可以任意编辑" } // HTTP 协议配置(建议密码进行URL编码) { "type": "http", "url": "http://192.168.1.200/uartw.cgidata=DDCCBBAACC000200018&type=1&pswd123asadmin:admin=" } 注意事项: SOCKET HEX data 字段为十六进制字符串,实际传输时需转换为二进制字节流。 SOCKET ASCII 中文字符建议明确编码格式(如UTF-8),避免接收端解码错误。 HTTP 协议 修正了URL参数分隔符(原内容缺少 ? 和 & 符号)。 密码字段 pswd 和用户名 user 建议通过URL编码处理(示例中明文仅作演示,实际应加密)。 参数 data 的值 DDCCBBAACC000200018 需确保符合服务端解析规则。 三、和天猫精灵建立连接 1、在天猫精灵智能家居中找到“STMRTE智能”技能,在登录页面输入所注册的账号、密码,完成账号绑定过程。 2、账号绑定后您在语音对接模块中所添加的控制设备将出现在STMRTE智能技能的设备列表中。 3、此时您就可以用天猫精灵来语音控制的设备。 其他音响同理! --- ### 644. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、概述 本说明书详细介绍了风机盘管控制器的通讯协议,包括物理接口、通讯参数、支持的功能码、寄存器映射表以及异常处理机制等内容,旨在为开发人员和维护人员提供完整的协议参考,确保设备间的稳定通信和正确控制。 二、通讯协议 2.1 物理接口 RS485 2.2 通讯协议类型 ModBus-RTU 2.3 通讯参数 波特率:9600 数据位:8 停止位:1 校验位:无 2.4 支持的功能码 0x03、0x06 和 0x10 2.5 协议更新时间 2021-06-18 2.6 通讯地址 广播地址为 0,仅支持功能码 0x06 和 0x10 温控器可设定地址为 1-247 三、寄存器映射表 序号寄存器地址变量名称单位默认值字节数取值范围描述读写允许掉电是否保存数据10x0000开关机---0x000020x0001 开机,0x0000 关机R/W是20x0001设定温度0.1℃0x010420x0104 表示 26.0 度,设定温度范围:5.0-35.0R/W是30x0002模式---0x000020x0000 制冷,0x0001 制热,0x0002 通风R/W是40x0003风速---0x00002自动 0x0000,低速 0x0001,中速 0x0002,高速 0x0003R/W是50x0004按键锁定---0x00002不锁定 0x0000,锁定 0x0001R/W是60x0005风机是否受控---0x00012风机不受控 0x0000,风机受控 0x0001R/W是70x0006室内温度0.1℃0x000120x0104 表示 26.0 度R否80x0007阀门状态---0x00012关闭 0x0000,开启 0x0001R否90x0008调试状态---0x00012调试状态 0x0000,正常状态 0x0001R/W是100x0009制冷风机运行高档位小时---0x00012范围 0~65535R/W是110x000A制冷风机运行高档位分钟---0x00012范围 0~59R/W是120x000B制冷风机运行高档位秒---0x00012范围 0~59R/W是130x000C制冷风机运行中档位小时---0x00012同上R/W是140x000D制冷风机运行中档位分钟---0x00012同上R/W是150x000E制冷风机运行中档位秒---0x00012同上R/W是160x000F制冷风机运行低档位小时---0x00012同上R/W是170x0010制冷风机运行低档位分钟---0x00012同上R/W是180x0011制冷风机运行低档位秒---0x00012同上R/W是190x0012制热风机运行高档位小时---0x00012同上R/W是200x0013制热风机运行高档位分钟---0x00012同上R/W是210x0014制热风机运行高档位秒---0x00012同上R/W是220x0015制热风机运行中档位小时---0x00012同上R/W是230x0016制热风机运行中档位分钟---0x00012同上R/W是240x0017制热风机运行中档位秒---0x00012同上R/W是250x0018制热风机运行低档位小时---0x00012同上R/W是260x0019制热风机运行低档位分钟---0x00012同上R/W是270x001A制热风机运行低档位秒---0x00012同上R/W是280x001B当前时间-分钟---0x000130~59R/W否290x001C当前时间-小时---0x000140~23R/W否300x001D当前时间-星期---0x000151~7R/W否 四、异常处理 当出现异常应答时,将功能号的最高位置 1。例如,主机请求功能号是 0x03,则从机返回的功能号对应项为 0x83。 错误类型码: 0x01:功能码非法(设备不支持接收到的功能号) 0x02:数据位置非法(主机指定的数据位置超出了设备的范围) 0x03:数据值非法(主机发送的数据值超出了设备对应的数据范围) 五、操作说明 5.1 地址设置 设备开机状态下,长按“模式”和“风速”按键,进入地址设置模式。通过按“模式”键来切换地址位数,按“风速”按键退出设置模式。 5.2 读取数据 使用功能码 0x03 读取寄存器数据。发送数据包格式如下: 设备地址 功能码 起始地址高位 起始地址低位 数据字长高位 数据字长低位 CRC码高位 CRC码低位 5.3 写入数据 使用功能码 0x06 或 0x10 写入寄存器数据。发送数据包格式如下: 功能码 0x06: 设备地址 功能码 寄存器地址高位 寄存器地址低位 写入数据高位 写入数据低位 CRC码高位 CRC码低位 功能码 0x10: 设备地址 功能码 寄存器地址高位 寄存器地址低位 数据字长高位 数据字长低位 数据字节长度 写入数据高位 写入数据低位 CRC码高位 CRC码低位 六、例程 6.1 读取寄存器 发送数据包:01 03 00 00 00 01 84 0A 发送解析: 01:设备地址 03:读取功能码 00 00:寄存器开始地址 00 01:寄存器结束地址 84 0A:CRC 校验码 返回数据包:01 03 02 00 01 79 84 返回解析: 01:设备地址 03:读取功能码 02:返回数据字节数 00 01:开关机状态(0x0001 表示开机) 79 84:CRC 校验码 6.2 写入寄存器 发送数据包:01 06 00 00 00 01 48 0A 发送解析: 01:设备地址 06:写入功能码 00 00:寄存器地址 00 01:写入数据(0x0001 表示开机) 48 0A:CRC 校验码 返回数据包:01 06 00 00 00 01 48 0A 6.3 设置温度 发送数据包:01 06 00 01 00 DC D9 93 发送解析: 01:设备地址 06:写入功能码 00 01:寄存器地址(设定温度) 00 DC:写入数据(0x00DC 表示 22.0 度) D9 93:CRC 校验码 返回数据包:01 06 00 01 00 DC D9 93 6.4 设置模式 发送数据包:01 06 00 02 00 01 E9 CA 发送解析: 01:设备地址 06:写入功能码 00 02:寄存器地址(模式) 00 01:写入数据(0x0001 表示制热) E9 CA:CRC 校验码 返回数据包:01 06 00 02 00 01 E9 CA 6.5 设置风速 发送数据包:01 06 00 03 00 01 B8 0A 发送解析: 01:设备地址 06:写入功能码 00 03:寄存器地址(风速) 00 01:写入数据(0x0001 表示低速) B8 0A:CRC 校验码 返回数据包:01 06 00 03 00 01 B8 0A 6.6 锁定按键 发送数据包:01 06 00 04 00 01 09 CB 发送解析: 01:设备地址 06:写入功能码 00 04:寄存器地址(按键锁定) 00 01:写入数据(0x0001 表示锁定) 09 CB:CRC 校验码 返回数据包:01 06 00 04 00 01 09 CB 6.7 设置风机受控 发送数据包:01 06 00 05 00 01 58 0B 发送解析: 01:设备地址 06:写入功能码 00 05:寄存器地址(风机是否受控) 00 01:写入数据(0x0001 表示受控) 58 0B:CRC 校验码 返回数据包:01 06 00 05 00 01 58 0B 6.8 设置调试模式 发送数据包:01 06 0008 0001 C9 C8 发送解析: 01:设备地址 06:写入功能码 0008:寄存器地址(调试状态) 0001:写入数据(0x0001 表示开启调试模式) C9 C8:CRC 校验码 返回数据包:01 06 0008 0001 C9 C8 6.9 设置当前时间 发送数据包:01 10 001B 0003 06 000A 0010 0003 4F 35 发送解析: 01:设备地址 10:写入功能码 001B:寄存器地址(当前时间-分钟) 0003:数据字长(3 个寄存器) 06:数据字节长度(6 字节) 000A:分钟(10) 0010:小时(16) 0003:星期(3) 4F 35:CRC 校验码 返回数据包:01 10 001B 0003 06 000A 0010 0003 4F 35 七、备注 广播地址为 0,广播地址仅支持功能码 0x06 和 0x10,温控器可设定地址为 1-247。 风机不受控:风机独立运行,当温度到达时,阀门关闭,风机不关闭,也就是说只要温控器开机,风机就一定会开,跟温度无关。 风机受控:只有阀门打开,风机才运行开,阀门关闭风机必须关闭。 调试模式:LCD 上面永久显示 485 地址,方便调试,调试完成请关闭此功能。 起始地址 + 查询个数不得大于 33。 --- ### 645. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、联网拓扑 本设备采用集中联网控制方式,确保设备间稳定高效通信。 二、地址设置 进入设置:设备开机状态下,长按“模式”和“风速”按键,进入地址设置模式。 切换位数:通过按“模式”键来切换地址位数。 退出设置:按“风速”按键退出地址设置模式。 三、通信协议 3.1 协议简介 本设备采用国际通用的 MODBUS-RTU 通信协议,进行 RS485 半双工通信。主机读数据功能号为 0x03,写功能号为 0x10 或 0x06,采用 16 位 CRC 校验,若校验错误则不回应。 3.2 通信参数 波特率:9600 数据格式: 起始位:1位 数据位:8位 停止位:1位 校验位:无 设备地址范围:0x01~0xFE 3.3 通信异常处理 异常应答:当出现异常应答时,将功能号的最高位置 1。例如,主机请求功能号为 0x03,则从机返回的功能号对应项为 0x83。 错误类型码: 0x01:功能码非法(设备不支持接收到的功能号) 0x02:数据位置非法(主机指定的数据位置超出了设备的范围) 0x03:数据值非法(主机发送的数据值超出了设备对应的数据范围) 示例:若主机请求功能码为 0x04,从机异常应答数据包为 0x01 0x84 0x01 0x82 0xc0。 3.4 通信功能码 设备地址默认值:0x01 3.4.1 读单/多寄存器 主机发送(读多寄存器示例): 字节位置内容描述示例值(十六进制)1设备地址0x012功能码0x033起始地址高位0x004起始地址低位0x005数据字长高位0x006数据字长低位0x107CRC 码高位0x448CRC 码低位0x06 从机正常应答: 字节位置内容描述示例值(十六进制)1设备地址0x012功能码0x033数据字节数0x104-5数据 1 高低位0x00 0x006-7数据 2 高低位0x00 0x128-9数据 3 高低位0x00 0x0d10-11数据 4 高低位0x00 0x0212-13数据 5 高低位0x00 0x0014-15数据 6 高低位0x00 0x0016-17数据 7 高低位0x00 0x0018-19数据 8 高低位0x00 0x0020-21数据 9 高低位0x00 0x0022-23数据 10 高低位0x00 0x0024CRC 码高位0x6f25CRC 码低位0xc5 3.4.2 写单路寄存器 主机发送: 字节位置内容描述示例值(十六进制)1设备地址0x012功能码0x063寄存器地址高位0x004寄存器地址低位0x025写入数据高位0x006写入数据低位0x197CRC 码高位0xE98CRC 码低位0xC0 从机应答: 字节位置内容描述示例值(十六进制)1设备地址0x012功能码0x063寄存器地址高位0x004寄存器地址低位0x025写入数据高位0x006写入数据低位0x197CRC 码高位0xE98CRC 码低位0xC0 3.4.3 写多路寄存器 主机发送: 字节位置内容描述示例值(十六进制)1设备地址0x012功能码0x103寄存器地址高位0x004寄存器地址低位0x005数据字长高位0x006数据字长低位0x017数据字节长度0x028写入数据高位0x009写入数据低位0x5510CRC 码高位0x6611CRC 码低位0x6f 从机应答: 字节位置内容描述示例值(十六进制)1设备地址0x012功能码0x103寄存器地址高位0x004寄存器地址低位0x005数据字长高位0x006数据字长低位0x017CRC 码高位0x918CRC 码低位0xc5 3.4.4 寄存器地址映像表 序号寄存器地址变量名称默认值字节数取值范围描述读写允许10x0000开关机0x000020x0001 开机,0x0000 关机R/W20x0001当前温度0x0000210 进制格式,0-51(0x0012 表示 18 度)R30x0002设定温度0x0014210 进制格式,以温度设定允许值为限(0x0012 表示 18 度)R/W40x0003模式0x000020x0000 制冷,0x0001 采暖,0x0002 通风R/W50x0004风速0x00002自动 0x0000,低速 0x0001,中速 0x0002,高速 0x0003R/W60x0005制冷阀门状态(二管制阀)0x00002关闭 0x0000,开启 0x0001R70x0006采暖阀门状态0x00002关闭 0x0000,开启 0x0001R80x0007锁键状态0x00002关闭 0x0000,开启 0x0001(开启时按键无效)R/W90x0008温度设定最低允许值0x000a210 进制格式,0-15(0x0012 表示 18 度)R/W100x0009温度设定最高允许值0x001e210 进制格式,20-30(0x0012 表示 18 度)R/W 备注:CRC 仅供参考,以 MODSCAN32 通信为准。 四、例程 4.1 串口工具测试 4.1.1 读取寄存器 发送数据包:01 03 00 00 00 05 85 C9 发送解析: 01:设备地址 03:读取功能码 00 00:寄存器开始地址 00 05:寄存器结束地址 85 C9:CRC 校验码 返回数据包:01 03 0A 00 01 00 1E 00 19 00 00 00 03 8A E4 返回解析: 01:设备地址 03:读取功能码 0A:10 个数据 00 01:开机状态 00 1E:当前温度(0x1e=30 摄氏度) 00 19:设置温度(0x19=25 摄氏度) 00 00:制冷模式 00 03:风速高速 8A E4:CRC 校验码 4.1.2 写设置温度寄存器 发送数据包:01 06 00 02 00 19 E9 C0 发送解析: 01:设备地址 06:写入功能码 00 02:寄存器地址 2(当前温度) 00 19:当前温度值(0x19=25 摄氏度) E9 C0:CRC 校验码 返回数据包:01 06 00 02 00 19 E9 C0 4.1.3 读取锁寄存器 发送数据包:01 03 00 07 00 01 01 发送解析: 01:设备地址 03:读取功能码 00 07:开始寄存器地址 00 01:读取寄存器数量 返回数据包:01 03 02 00 01 79 84 返回解析: 01:设备地址 03:读取功能码 02:返回数据数量 00 01:锁状态(0x00 关闭,0x01 开启) 79 84:CRC 校验码 4.1.4 写锁寄存器 发送数据包:01 06 00 07 00 00 发送解析: 01:设备地址 06:写入功能码 00 07:按键锁寄存器地址 00 00:关闭锁(00),01 为锁 返回数据包:01 06 00 07 00 00 38 0B 商品链接:https://item.taobao.com/item.htm?ft=t&id=902596793260 --- ### 646. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 一款支持 RS485 通信模式的智能调光设备,可直接通过按键开关控制对应设备,并能通过连接第三方网关实现场景模式,满足多样化的调光需求。 二、产品特性 支持 RS485 通信方式 直接通过按键开关控制对应设备 可连接第三方网关实现场景模式 待机功耗低,仅为 1W 工作环境温度范围广,从-10℃到+45℃ 工作环境湿度可达 95%RH(非冷凝) 三、技术参数 输入电压、频率范围:100-242V~, 50/60Hz 待机功耗:≤1W 存储温度:-25℃~+70℃ 工作环境温度:-10℃~+45℃ 工作环境湿度:≤95RH(非冷凝) 输出控制方法:通过按键和旋钮进行亮度、色温调节及场景切换 四、接口定义与功能说明 接口定义 零线(N) 火线(L) 空(C) A+、B(用于 RS485 通信) GND(调光地线) 调光、色温相关接口 功能说明 开关机键:在关机状态下,按下该键可开机;在开机状态下,按下该键可关机。 旋钮键:在无按键操作时,直接旋转旋钮可调整亮度,向右旋转增加亮度,向左旋转降低亮度,可进行 1-18 个档位调整。 色温键:按下该键后,K+、K- 和百分比符号同时闪烁,此时通过旋钮向左旋转降低色温,向右旋转提高色温,调整范围为 5%-99%,以 5% 递增,调整完成后可等待 5 秒或按下色温键保存色温值。 调光场景键:可快速切换预设的调光场景,出厂默认 3 种场景,分别为 C1=30%(色温和亮度均为 30%)、C2=50%(色温和亮度均为 50%)、C3=70%(色温和亮度均为 70%)。 场景键:用户可根据需求配置场景功能,配合其他 485 开关实现场景控制。 恢复出厂设置:在关机状态下,同时按下色温键和调光场景键 5 秒,屏幕点亮,恢复出厂设置成功。 通讯地址设置:在关机状态下,同时按下调光场景键和场景键 5 秒,进入地址设置,通过旋转旋钮可调整所需地址,设置范围为 1-99。 五、安装步骤 用手将轻触开关上面的按键全部抠下来(图一)。 用安装螺丝将轻触开关主体部分与底盒固定好(图二)。 把第一步抠下来的按键安装回去(图三)。注:禁止带电安装。 六、调光场景配置方法 长按调光场景键 5 秒,亮度值和色温值图标同时闪烁,此时通过旋转旋钮进行亮度调整,亮度值图标闪烁,调整完成后按下色温键,色温值图标闪烁,再通过旋转旋钮进行色温值调整,当设置完成后按下调光场景键保存并退出。如想取消操作,不按下调光场景键,等待图标闪烁完后停止,则退出操作不保存。设置完色温值后,如需返回调整亮度值,可按下色温键进行亮度值和色温值的切换。 七、尺寸规格 长度:86mm 宽度:86mm 高度:60mm 厚度:41.5mm 其他相关尺寸:31.7mm (此处可根据实际情况补充其他相关尺寸信息) 八、注意事项 本说明书内容如有更新,恕不另行通知。 若您使用的产品功能与说明书不一致时,请以产品为准。 如有疑问,请与我们联系。 商品链接:https://item.taobao.com/item.htm?ft=t&id=869041982548 --- ### 647. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1. 产品概述 一款集成Modbus通信协议的智能断路器,适用于交流50/60Hz、额定电压230/400V、电流63A及以下的配电系统。支持远程控制、过欠压保护、自动重合闸等功能,可广泛应用于智能电网、工业自动化及楼宇配电场景。 产品购买:https://www.modbus.cn/product/30887.html 2. 功能特性 核心功能 过欠压保护:阈值可配置,支持自动分合闸与恢复机制。 漏电保护(选配):30mA/100mA/300mA分级跳闸,响应时间<100ms。 多模式控制:本地手动、远程指令、干湿接点(选配)、定时操作(选配)。 自动重合闸:5级循环间隔(60s~3600s可调),稳定时间配置。 通信能力 Modbus-RTU协议:支持读/写操作,地址范围1~247,广播地址0(仅读)。 多协议兼容:RS485(默认)、WiFi(涂鸦平台)、ZigBee。 状态指示 指示灯: 绿灯(合闸)、红灯(分闸/故障)、橙灯(手动模式)。 闪烁频率区分故障类型(如100ms快闪为机构故障,500ms为过压分闸)。 故障类型:过压、欠压、过流、漏电、硬件故障(EEPROM/时钟芯片等)。 3. 技术参数 项目参数值电气参数额定电压AC230V/400V额定电流16A/25A/32A/40A/63A分断能力6000A (Ics)最小工作电压≥70VAC通信参数通信接口RS485(双绞屏蔽线)波特率2400/4800/9600(默认9600)校验方式奇校验/偶校验/无校验机械参数安装方式35.5×7.5mm标准导轨机械寿命10,000次接线截面积≤25mm² 4. 安装与接线 安装要求 垂直安装于干燥、通风环境,避免高温(>40℃)与凝露。 使用M5螺钉固定导轨,确保机械锁扣牢固。 接线规范 电源线:零火线严禁接反,线缆截面积≤25mm²。 通信线:双绞屏蔽线(2×0.5mm²),屏蔽层单端接地,总线长度≤1200m。 5. Modbus通信协议全解析 5.3 寄存器定义(完整分类) 5.3.2 状态监控寄存器 1. 分合闸状态编码表(地址 0x5000) 状态码含义说明0手动分闸本地手动操作分闸1指令分闸远程指令触发分闸2故障分闸(过压)电压超过过压阈值触发分闸3故障分闸(欠压)电压低于欠压阈值触发分闸4手动合闸本地手动操作合闸5指令合闸远程指令触发合闸6自动合闸自动重合闸功能触发合闸7指令锁死远程锁死状态,需解锁后才能合闸8故障(初始化/设备故障)设备初始化失败或硬件故障9机构挂锁机械挂锁锁定,禁止合闸10定时分闸定时功能触发分闸11定时合闸定时功能触发合闸14干接点分闸干接点信号触发分闸15干接点合闸干接点信号触发合闸16手动模式分闸手动模式下分闸17手动模式合闸手动模式下合闸 2. 故障状态Bit位映射表(地址 0x5003) Bit位告警类型说明(Bit=1表示告警触发)0A相过压告警A相电压超过过压阈值1B相过压告警B相电压超过过压阈值2C相过压告警C相电压超过过压阈值3A相欠压告警A相电压低于欠压阈值4B相欠压告警B相电压低于欠压阈值5C相欠压告警C相电压低于欠压阈值6A相过流告警A相电流超过额定值7B相过流告警B相电流超过额定值8C相过流告警C相电流超过额定值9A相过功率告警A相功率超过设定阈值10B相过功率告警B相功率超过设定阈值11C相过功率告警C相功率超过设定阈值12电压不平衡告警三相电压差值超过允许范围13漏电保护触发漏电电流超过设定值(仅RCD款)14电机复位失败自动合闸时电机复位异常15通信模块故障RS485/WiFi/ZigBee通信异常 5.3.3 其他关键寄存器补充 1. 重合闸事件记录(地址 0x5300~0x5303) 地址(Hex)数据项读写属性数值范围/说明5300故障时间(年月)R高字节:年(00~99),低字节:月(01~12)5301故障时间(日时)R高字节:日(01~31),低字节:时(00~23)5302故障时间(分秒)R高字节:分(00~59),低字节:秒(00~59)5303故障原因R0=过压,1=欠压,2=过流,3=过功率 2. 定时控制配置(地址 0x6D00~0x6D0E) 地址(Hex)数据项读写属性数值范围/说明6D00定时开关R/W0=关闭,1=使能6D01~6D08定时操作时间1~8R/W高字节:时(0~23),低字节:分(0~59)6D09~6D0E定时操作1~6R/W0=无操作,1=分闸,2=合闸 3. 特殊功能寄存器(地址 0xF205~0xF380) 地址(Hex)数据项读写属性写入值/说明F205恢复出厂设置W写入0x0042(触发恢复)F206设备重启W写入0x0043(触发重启)F300远程升级命令W0x3901=开始升级,0x3903=结束升级F303~F380升级包数据W按包编号顺序写入升级数据 6. 操作示例与数据解析(含完整CRC) 示例1:读取分合闸状态(地址0x5000) 请求帧(设备地址1): 01 03 50 00 00 01 85 C8 CRC计算:0x85C8(通过CRC-16/A001计算)。 响应帧(状态码=3,故障分闸): 01 03 02 00 03 35 29 数据解析:00 03 → 状态码3(故障分闸)。 示例2:设置过压阈值为300.0V(地址0x6601) 请求帧(设备地址1): 01 06 66 01 0B B8 1A 7F 数据解析:0B B8 = 3000 → 300.0V,CRC=0x1A7F。 7. 注意事项与安全警告 寄存器写入限制: 只读寄存器(如电参量、故障状态)禁止写入,否则触发异常码0x03。 字符串寄存器(如经纬度)需按低字节在前拆分(示例:"123.56" → 31 32 33 2E 35 36)。 定时功能配置: 定时操作时间需按实际需求设置,避免冲突。 --- ### 648. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、通信协议概述 1. 默认通信参数 波特率:9600 数据位:8 校验位:无 停止位:1(即 9600/8/N/1) 默认设备地址:0x01 响应时间:< 100ms 2. CRC 校验 算法:CRC-16/Modbus(多项式 0x8005) 校验码格式:2 字节,高位在前(如 CRC_H CRC_L)。 计算工具:参考 CRCTool 或规格书第 IX 章代码。 二、协议功能详解 1. 读取设备地址和固件版本 功能:获取当前设备地址和固件版本号。 请求格式(主机→传感器) 字节位置数据说明00xFE广播地址(所有设备响应)10x11功能码(读取地址)2-50x00固定填充6-7CRCCRC 校验码 示例命令: FE 11 00 00 00 01 28 06 响应格式(传感器→主机) 字节位置数据说明00x01设备地址10x11功能码20x02数据长度(2 字节)30x12固件版本(如 0x12=V1.2)40x01当前地址5-6CRCCRC 校验码 示例响应: 01 11 02 12 01 70 5C 解析: 固件版本:V1.2 设备地址:0x01 2. 修改设备地址 功能:更改设备 Modbus 地址(范围 1~247)。 请求格式(主机→传感器) 字节位置数据说明0当前地址原地址(如 0x01)10x06功能码(修改地址)2-40x00固定填充5新地址目标地址(如 0x02)6-7CRCCRC 校验码 示例命令(修改地址为 0x02): 01 06 00 00 00 02 08 0B 响应格式(传感器→主机) 与请求格式一致,返回修改后的地址确认。 示例响应: 01 06 00 00 00 02 08 0B 说明:响应数据与请求相同表示修改成功。 3. 读取传感器数据 功能:读取指定寄存器的传感器数据(支持单次读取多个传感器)。 请求格式(主机→传感器) 字节位置数据说明0设备地址如 0x0110x03功能码(读取数据)2-3起始地址寄存器起始地址(高位在前)4-5寄存器数量需读取的寄存器数量6-7CRCCRC 校验码 示例命令(读取全部 11 个传感器数据): 01 03 00 00 00 0B C5 CD 响应格式(传感器→主机) 字节位置数据说明0设备地址如 0x0110x03功能码2数据长度字节数(寄存器数量 × 2)3~N传感器数据每个寄存器 2 字节(高位在前)N+1~N+2CRCCRC 校验码 示例响应(部分数据): 01 03 16 00 96 00 64 00 32 00 30 00 28 00 1E 01 2C 00 0A 00 14 70 5C 解析: 00 96 → eCO₂ = 150 ppm 00 64 → TVOC = 100 ppb 00 32 → CH₂O = 50 μg/m³ 温湿度数据: 湿度:0x012C → 300 → 300/100 = 30.0%RH 温度:0x000A → 10 → 10/100 = 0.10℃ 4. 系统参数配置(高级功能) 4.1 读取/设置波特率 寄存器地址:0x0103(波特率代码见附录表)。 读取波特率请求: 01 03 01 03 00 01 CRC 设置波特率请求(设为 115200): 01 06 01 03 00 07 CRC 4.2 校准传感器数据 寄存器地址: 温度校准:0x011D 湿度校准:0x011C 示例命令(温度校准 +2.5℃): 01 06 01 1D 00 FA 98 73 说明: 00 FA → 250(即 250/100 = 2.5℃) 负值需转换为补码(如 0xFF9C → -100 → -1.00℃)。 三、数据解析方法 1. 计算公式 传感器类型公式示例eCO₂CO₂ = (CO₂_H << 8) + CO₂_L0x0096 → 150 ppm温度温度 = 有符号值 / 1000xFF9C → -100 → -1.00℃光照度Lux = (Lux_H << 8) + Lux_L0x01F4 → 500 Lux 2. 有符号数处理 方法 1:直接转为有符号整数(如 0xFF9C → -100)。 方法 2:若值 > 32767,则 真实值 = (原始值 - 65536) / 100。 四、注意事项 预热时间:VOC 模块需预热 ≥3 分钟,其他传感器上电即用。 安装要求: 安装高度 ≥15cm,避免地面尘埃污染。 避免高粉尘(>300 μg/m³)、油烟或高湿度环境。 校准警告: 高级功能需谨慎操作,误修改可能导致数据异常。 校准值需按实际环境调整,建议记录出厂默认值。 CRC 校验:所有命令必须包含正确 CRC,否则设备无响应。 五、附录 1. 传感器寄存器地址表 寄存器地址传感器类型数据格式0x0000eCO₂2 字节无符号整数(ppm)0x0001TVOC2 字节无符号整数(ppb)0x0002CH₂O2 字节无符号整数(μg/m³)0x0003PM2.52 字节无符号整数(μg/m³)0x0004湿度2 字节(真实值 × 100)0x0005温度2 字节(真实值 × 100)0x0006PM102 字节无符号整数(μg/m³)0x0007PM1.02 字节无符号整数(μg/m³)0x0008光照度2 字节无符号整数(Lux)0x0009MCU 温度2 字节(真实值 × 100)0x000A噪声2 字节无符号整数(dB) 2. 波特率代码表 代码波特率012001240024800396004192005384006576007115200 3. CRC 计算代码(C 语言示例) uint16_t CRC16_Check(const uint8_t *pushMsg, uint8_t usDataLen) { uint8_t uchCRCHi = 0xFF, uchCRCLo = 0xFF; uint8_t uIndex; while (usDataLen--) { uIndex = uchCRCLo ^ *pushMsg++; uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex]; uchCRCHi = auchCRCLo[uIndex]; } return (uint16_t)(uchCRCHi << 8 | uchCRCLo); } 产品购买:https://item.taobao.com/item.htm?ft=t&id=675637355531 --- ### 649. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 注意事项: 安装位置: 本产品室内外均可安装,建议安装在智能家居控制箱或其附近。 接线操作: 不同控制方式的输入端子接线端子不同,请根据需求选择对应的接口。 LAN端口的电缆长度请控制在80米以内。 安全安装: 安装前请仔细阅读安全注意事项,确保正确安装。 请经销商或专业人员进行安装,切勿自行安装,以免造成触电或火灾。 使用指定的附件和零件,确保安装牢固。 安装作业时务必断电。 请勿拆解、改装或修理本装置。 线路安全: 所有线路必须安全,使用指定电线,确保外力不影响端子板和电线。 接触不良或安装不牢可能导致火灾。 安装材料: 选择安装材料时,必须遵照国家标准或国际标准,考虑地震情况。 电源线路: 电源线路容量不足或安装不当可能导致触电或,火灾必须安装漏电断路器。 儿童安全: 请勿让儿童玩弄本设备。 信号线布置: 所有信号线电缆请不要与电源线以及其它信号线并排走线,可能会引起干扰而产生误动作。如果需要并排走线,应保持与空调通讯的接线距离15cm,与其他接线距离30cm以上,或使用铁制保护管并将保护管一端接地。机箱必须进行D种接地。 电源线连接: 错误地将电源线连接到信号端子的情况下,保险丝会烧断以保护印刷电路板。此时,请联系厂家,严禁私自拆卸维修。 产品维修: 私自严禁拆卸维修产品,厂家不售后。 设备版本号: ALL/20210304 产品清单: 一台网关 一张合格证 一份产品规格书 产品介绍:本产品为多合一网关,兼容多个品牌的中央空调,只需手动拨码即可实现一机控制多品牌中央空调的智能网关。它可将多联系统空调接入到多家智能家居系统中,第三方可通过网关MODBUS协议控制多联式中央空调的开关、温度调节、模式切换、风速调节等功能。 产品购买:https://www.modbus.cn/product/30788.html 产品基本规格及电气参数: 产品名称: 中央空调多合一智能控制网关 产品型号: TDFH-DUX/YC 通讯接口: RS485/网口 产品尺寸: 80*87*39mm(长宽高) 传输模式: 半双工 起始位及停止位: 1 数据位/检验位: 8 无 NONE 1 外部接口: RS485网口(TCP/IP) 功耗: 40mv-300mv,2/3W 电源: 12V-24V 波特率: 9600bps 安装位置: 空调室内机或室外机(格力、美的、松下建议安装于室外机,多外机情况下每台外机安装一个网关) 线材要求: DATA接线采用2芯屏蔽线21.0或者21.5(不可用网线代替) 产品展示:标准产品为485及网口接线方式。无线产品可定制,内置产品需需方提供相关模组。 端子及指示灯说明: 上端8P端子为空调信号线接线端子,具体定义见表格1。 指示灯VRV:空调通讯接线端子。常亮表示待机,闪烁表示网关与空调有通讯。 指示灯485:与485或者蓝牙通讯。常亮表示待机,闪烁表示网关与主机有通讯。 指示灯STA:电源灯。常亮表示正常,闪烁表示网关在工作通讯中。 NET为网口接线端。 DC12V±电源端口(插拔口)。 P1P2(VV+)也是电源口,用做插线。 RS485端口为485通讯方式的接线端口。 安装条件及内机最大限制: 安装条件: 室内外机均可,格力、美的、松下建议安装于室外机,多外机情况下每台外机安装一个网关。 内外机最大限制: 三菱电机最大内机数量上限50台,其余可控制品牌最大内机数量上限64台。 安装步骤: 将网关背面拨码至对应的空调品牌(见表格1)。 将网关对应端口与空调内机或外机对应端口接线(必需使用RVVP2*0.75或以上的两芯屏蔽线。按品牌特定端口,见表格1)。例如:大金中央空调内机红圈所示F1F2,与网关端口AC1AC2连接。 根据主机接口通过485通讯端口、网口接智能中控主机。例如:中控主机是485通讯端口,接线方式如下图: 网关P1,P2及DC12V±口都能通电(请使用12-24V电源适配器)。 空调温控器拨地址码。分配方法:大金,东芝单系统及多系统均在原厂温控器上手动分配,其余可控品牌单系统在接上空调信号线后自动分配地址,多系统在内外机手动拨码分配。具体墙面温控器拨码方式请联系相关工作人员。 安装完毕后空调及网关断电重启。 多联机接线示意图: 单系统:内外机均可连接。 多系统:每个品牌室外机同样连接相应的信号端口,端口代码不变。以大金为例:设备安装于内外机均可,多外机情况外的F1F2串联即可。安装于任意一台内机,也可安装于外机。 产品拨码方式及对应端口名称(见下面表格1)优势:本地直接拨码至所需品牌空调,无需云端下载加载相关品牌。在正式使用本产品之前,应按照本节要求完成产品拨码以及通讯线的接入。拨码及通讯线的接入主要根据中央空调的品牌进行确定,详细要求见下表。 说明:0为OFF不用拨;1为ON,向上拨码。出厂状态为全0。 表格1: 空调品牌拨码方式空调信号端口对应网关接线端口1. 大金0 0 0 0 0 0 0 0 0 0F1-F2AC1-AC22. 日立1 0 0 0 0 0 0 0 1 11-2AC1-AC23. 东芝0 1 0 0 0 0 0 0 0 0U1-U2AC1-AC24. 三菱电机1 1 0 0 0 0 0 0 0 0M1-M2AC1-AC25. 三菱重工0 0 1 0 0 0 0 0 0 0A-BA-B6. 美的1 0 1 0 0 0 0 0 0 0X-YA-B小部分美的1 0 1 0 0 0 0 0 0 0P-QA-B7. 单系统格力0 1 1 0 0 0 1 0 0 0D1-D2H-L8. 多系统格力0 1 1 0 0 0 1 0 0 0G1-G2H-L9. 海信1 1 1 0 0 0 0 0 1 11-2AC1-AC210. 重工海尔0 0 1 0 0 0 0 0 0 0A-BA-B11. 松下1 0 0 1 0 0 0 0 0 0U1-U2AC1-AC212. 海尔0 1 0 1 0 0 0 0 0 0P-QAC1-AC213. 博世1 1 0 1 0 0 0 0 0 0X-YA-B14. 三星0 1 1 1 0 0 0 0 0 0F1-F2A-B15. 开利0 0 1 1 0 0 0 0 0 0X-YA-B16. 特灵1 0 1 1 0 0 0 0 0 0X-YA-B17. 约克1 1 1 1 0 0 0 0 1 11-2AC1-AC2 升级功能:使用专用升级软件升级网关即可。网关相关查询故障软件,升级软件,优化固件包,均由我司提供。 通讯协议 通信参数 (一)485 通信参数 波特率:9600bps 数据位:8 停止位:1 奇偶校验位:NONE (二)功能代码 本网关支持以下功能代码,若收到表中以外的功能代码,将反馈异常响应: 0x04(04):读输入寄存器(Read Input Register) 0x06(06):预置单个寄存器(Preset Single Register) 0x10(16):预置多个寄存器(Preset Multiple Registers) 功能 (一)监控功能 运转/停止状态:实时监测室内机是处于运转状态还是停止状态。 运转模式:识别室内机当前的运转模式,包括制冷、制热、送风、除湿等模式(具体取决于室内机的性能)。 温度设定:获取室内机的设定温度值。 室内温度:读取室内机所处环境的实际温度。 吸气温度:监测室内机的吸气温度。 风量:了解室内机的风量设置,如 LL、L、M、H、HH 等级别(具体取决于室内机的性能)。 强制停止状态:判断室内机是否处于强制停止状态。 异常代码:当室内机出现故障或警告时,获取相应的异常代码。 (二)控制功能 运转/停止控制:能够远程控制室内机的启动与停止。 运转模式设定:可以设定室内机的运转模式为制冷、制热、送风、除湿等模式(具体取决于室内机的性能)。 温度设定:远程调整室内机的制冷或制热设定温度。 风量设定:修改室内机的风量设置,如 LL、L、M、H、HH 等级别(具体取决于室内机的性能)。 (三)检索系统信息功能 通讯状态:查看网关与室内机之间的通讯是否正常。 室内机连接信息:获取已连接的室内机数量以及每台室内机的网络地址。 协议内容 (一)读取状态 1. 读取适配器状态 功能码:0x04(04) 寄存器地址:30001(0x0000) 功能:读取适配器状态 响应数据:00(未准备好)或 01(准备好) 示例: 查询:01 04 00 00 00 01 31 CA 响应:01 04 02 00 01 78 F0 2. 读取室内机连接状态 功能码:0x04(04) 寄存器地址范围:30002(0x0001)~ 30005(0x0004) 功能:读取室内机连接状态,每组寄存器对应 16 台室内机的连接情况 响应数据:每个寄存器的值为 16 位二进制数,每一位表示对应室内机的连接状态(0:未连接;1:连接) 示例: 查询:01 04 00 01 00 04 A0 09 响应:01 04 08 FF FF FF 3F 3F FF 00 00 58 28 3. 查询室内机的状态 功能码:0x04(04) 寄存器地址范围:32001(0x07d0)~ 32384(0x07e8) 功能:查询单个或多个室内机的状态,包括风量、开关、模式、设定温度、故障代码、室内温度、温度传感器状态等 查询格式:需指定寄存器的起始地址和查询的寄存器数量。每个室内机的状态信息占用 6 个寄存器,寄存器地址从 32001 开始,每隔 6 个寄存器为下一台室内机的起始地址。 响应数据解析: 风量/风向:寄存器值的高 4 位表示风量(0x10=LL,0x20=L,0x30=M,0x40=H,0x50=HH,0xA0=自动),低 3 位表示风向(0-7,0=水平方向,4=垂直方向,7=摆风)。 开关:寄存器值的最低位表示开关状态(1=开,0=关)。 模式:寄存器值的低 4 位表示模式(0=送风,1=制热,2=制冷,7=除湿)。 设定温度:寄存器值的高字节和低字节组合后除以 10 得到设定温度。 故障代码:寄存器值对应故障代码,具体参照故障代码映射表。 室内温度:寄存器值的高字节和低字节组合后除以 10 得到室内温度。 温度传感器状态:寄存器值为 0x0800 表示正常,0x0001 表示异常。 示例: 查询:01 04 07 D0 00 06 70 85 响应:01 04 0C 50 00 42 02 01 18 00 00 01 0A 80 00 F6 FA 4.4 室内机的状态信息 4.4.1 适配器地址 寄存器地址范围室内机地址32001-320061-0032007-320121-0132013-320181-0232019-320241-0332025-320301-0432031-320361-0532037-320421-0632043-320481-0732049-320541-0832055-320601-0932061-320661-1032067-320721-1132073-320781-1232079-320841-1332085-320901-1432091-320961-1532097-321022-0032103-321082-0132109-321142-0232115-321202-0332121-321262-0432127-321322-0532133-321382-0632139-321442-0732145-321502-0832151-321562-0932157-321622-1032163-321682-1132169-321742-1232175-321802-1332181-321862-1432187-321922-1532193-321983-0032199-322043-0132205-322103-0232211-322163-0332217-322223-0432223-322283-0532229-322343-0632235-322403-0732241-322463-0832247-322523-0932253-322583-1032259-322643-1132265-322703-1232271-322763-1332277-322823-1432283-322883-1532289-322944-0032295-323004-0132301-323064-0232307-323124-0332313-323184-0432319-323244-0532325-323304-0632331-323364-0732337-323424-0832343-323484-0932349-323544-1032355-323604-1132361-323664-1232367-323724-1332373-323784-1432379-323844-15 4.5 预置单个寄存器 4.5.1 适配器地址 寄存器地址范围室内机地址40001-400031-0040004-400061-0140007-400091-0240010-400121-0340013-400151-0440016-400181-0540019-400211-0640022-400241-0740025-400271-0840028-400301-0940031-400331-1040034-400361-1140037-400391-1240040-400421-1340043-400451-1440046-400481-1540049-400512-0040052-400542-0140055-400572-0240058-400602-0340061-400632-0440064-400662-0540067-400692-0640070-400722-0740073-400752-0840076-400782-0940079-400812-1040082-400842-1140085-400872-1240088-400902-1340091-400932-1440094-400962-1540097-400993-0040100-401023-0140103-401053-0240106-401083-0340109-401113-0440112-401143-0540115-401173-0640118-401203-0740121-401233-0840124-401263-0940127-401293-1040130-401323-1140133-401353-1240136-401383-1340139-401413-1440142-401443-1540145-401474-0040148-401504-0140151-401534-0240154-401564-0340157-401594-0440160-401624-0540163-401654-0640166-401684-0740169-401714-0840172-401744-0940175-401774-1040178-401804-1140181-401834-1240184-401864-1340187-401894-1440190-401924-15 (二)控制功能 1. 开关及风速设定 功能码:0x06(06) 寄存器地址范围:42001(0x07d0)~ 42192(0x07e8) 功能:控制室内机的开关状态及风速设置 写入数据格式: 风速:高 4 位表示风速(0x10=LL,0x20=L,0x30=M,0x40=H,0x50=HH,0xA0=自动) 风向:低 3 位表示风向(0-7,0=水平方向,4=垂直方向,7=摆风) 开关:单独一个字节,60=关机,61=开机 示例: 查询:01 06 07 D0 10 60 84 AF 响应:01 06 07 D0 10 60 84 AF 2. 模式设定 功能码:0x06(06) 寄存器地址范围:42001(0x07d0)~ 42192(0x07e8) 功能:设定室内机的运转模式 写入数据格式: 模式:00 00=通风模式,00 01=制热模式,00 02=制冷模式,00 07=除湿模式,00 03=自动模式 示例: 查询:01 06 07 D4 00 02 49 47 响应:01 06 07 D4 00 02 49 47 3. 温度设定 功能码:0x06(06) 寄存器地址范围:42001(0x07d0)~ 42192(0x07e8) 功能:设定室内机的制冷或制热温度 写入数据格式: 温度:高字节和低字节组合后表示温度值,如 00 A0 表示 16 摄氏度,00 AA 表示 17 摄氏度等 示例: 查询:01 06 07 D2 00 A0 28 FF 响应:01 06 07 D2 00 A0 28 FF (三)其他功能 1. 控制室内机 功能码:0x10(16) 寄存器地址范围:42001(0x07d0)~ 42192(0x07e8) 功能:一次写入多个控制参数到室内机 写入数据格式: 每个室内机的控制信息占用 3 个寄存器,分别用于存储开关及风速、模式、温度等信息 示例: 查询:01 10 07 D9 00 03 06 10 60 00 02 00 A0 C2 A5 响应:01 10 07 D9 00 03 50 87 01:从机地址,表示要与地址为 01 的从机设备进行通信。 10:功能码,表示要执行的操作是预置多个寄存器(Preset Multiple Registers)。 07 D9:寄存器地址,表示要写入数据的起始寄存器地址是 07 D9(十六进制),对应的是第 4 台空调室内机的控制寄存器。 00 03:寄存器数量,表示要写入数据的寄存器数量是 3 个。 06:字节长度,表示要写入的数据总共有 6 个字节。 10 60 00 02 00 A0:写入的数据,依次表示风速、开关、模式、温度等控制信息。 C2 A5:CRC 校验码,用于保证数据传输的完整性。 数据解析 风速及开关控制:10 60 风速:高 4 位 10 表示风速为 LL(低速)。 开关:低 4 位 60 表示关机操作。 模式设定:00 02 模式值 02 表示设定为制冷模式。 温度设定:00 A0 温度值 A0 表示设定温度为 16 摄氏度。 2. 查询/设置空调类型 功能码:0x05 寄存器地址:00 00(查询默认值)或 00 01(设置值) 功能:查询或设置空调类型 查询格式: 查询:01 05 00 00 00 00 CD CA 响应:01 05 00 00 01 00 CC 5A 设置格式: 查询:01 05 00 01 01 00 9D DA 响应:01 05 00 01 01 00 9D DA 3. 修改从机地址 功能码:0x06(06) 寄存器地址:AA 功能:修改从机地址 写入数据格式: 新地址:一个字节,表示新的从机地址 示例:将从机地址改为 03: 查询:01 06 AA 03 DF 78 响应:01 06 AA 03 DF 78 二、附录 (一)大金异常代码映射表 值 2代码值 1代码00001A112C223E334H445F556J667L778P889U9910910A11811H12712C13613J14514E15415F16317218119G20K21M22N23R24T25V26W27X28Y29Z30*31 示例:值 1 = 4,值 2 = 9,异常代码 = U4。 (二)日立异常代码映射表 代码故障说明代码故障说明01室内机保护装置动作31室内外机容量组合异常02外机保护装置动作(室外机风扇保护跳开)32正常内机掉线03通讯故障35外机或者内机编号重复36内外机机型不匹配04外机主板与变频板通讯外机主板与风扇变频板通讯05电源相序38室外机保护电路动作06功率模块欠电压(室内机电压过低商用分体)风扇控制模块电压异常39定速压机过电流或者零电流07排气过热度低3a室外机容量错误08压缩机顶部温度高3b室外机与子机组合错误,电源设定错误09室外风扇内置温感检测温度过高3d室外机主机与子机通讯异常0A室外机模块间通讯异常41制冷过负荷保护0b室外机子模块设定错误42制热过负荷保护0c室外机主模块设定错误43压比过低0d水温异常(水热源)44低压过高11Ti 温度传感器开路或者短路45排气压力高12To 温度传感器开路或者短路46排气压力低13Tl 温度传感器开路或者短路47低压压力低14Tg 温度传感器开路或者短路48变频器过电流保护动作15Ta 环境温度传感器异常(全热交换器)51压缩机变频器检测到零电流16新风远传温度传感器开路或者短路52压缩机变频器检测到过电流17线控器内置传感器异常53压缩机变频器检测到异常18室内风扇电机温度传感器异常54压缩机变频器温感过热19室内风扇电机保护装置动作55变频器不动作20压机顶部温感异常56风扇位置检测异常21高压传感器异常57风扇控制基板保护动作22外气温感异常58风扇控制异常23压缩机顶部温感异常59室外机风扇斩波器电流异常24冷却器温感异常5a风扇控制基板温度上升保护25冷却器温感异常5b风扇控制基板过电流保护29低压传感器异常5c风扇控制基板电流传感器异常2A水温传感器异常(水热源)96KPI 房间温度传感器异常(FSN)30接线错误(FSN)CH装置连接错误(FSXNQ)EE压缩机保护 --- ### 650. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简介: ETS 配置界面。 KNX 总线直接供电。 支持 KNX <-> MODBUS 主机或者从机模式相互转换,最大支持 500 个寄存器。支持任意 bit 长度取值转换(最长 16bit)。支持同时配置多个相同寄存器。仅支持 0x03,0x04,0x06,0x10 指令。 支持 KNX <-> RS485 任意指令(最长 24byte)相互转换,转换值可以固定,也可以是跟随 485 指令内数据。最大支持 100 个指令。 支持 KNX <-> RS232 任意指令(最长 24byte)相互转换,转换值可以固定,也可以是跟随 232 指令内数据。最大支持 100 个指令。 支持 100 组逻辑输入输出,功能包括,延迟和 2-point 逻辑控制输出。 产品购买:https://www.modbus.cn/product/30791.html MODBUS 配置 1.Modbus 通讯参数配置 ①.Bps for modbus(设置波特率):支持 2400、9600、19200、38400、56000、115200、128000、256000。 ②.Modbus 主从模式选择:Slave mode:从机模式,Host mode:主机模式。 ③.Modbus 地址(十进制):modbus 从机模式下本机的地址设置。 ④.(仅主机)主机模式读写超时(*100ms):主机模式下,读取从机设备时候,等待从机回复的超时时间设定,设置 5 代表 500ms,最小不能小于 200ms,推荐 500ms 以上,默认 500ms。 ⑤.使能 modbus 寄存器的个数:打开寄存器的配置。 2.Modbus 寄存器配置 ①.配置注意事项:寄存器地址尽量按照升序排序配置,主机模式下,同一个设备的所有寄存器放在一起,并按照升序排列,这样配置,网关在读取从机寄存器的时候,会一次读完,而不用一个个寄存器读取,效率大大提高。 ② Enable reg: 激活表示启用,不激活表示不启用。 ③ 备注名称: 可以根据需求,标注寄存器对应的是什么。 ④ 从机地址(仅主机): 设置需要读取的从机的地址(10进制)。 ⑤ Modbus 寄存器地址: 10进制。 ⑥ 数据类型(dpt): KNX 对象的数据类型。 ⑦ Modbus 寄存器类型: 保持型寄存器-modbus 主机可以读写,输入型寄存器-modbus 主机只能读取,线圈状态-modbus主机可以读写。 ⑧ 时间间隔(仅主机): 主机模式下读取每个寄存器的时间间隔,默认设置 0。 ⑨ 指令选择(仅主机):读取寄存器的指令选择,0X03H/0X04H/0X06H/0X10H/0X01H/0X02H/0X05H/0X0FH ⑩ 寄存器个数(仅主机):可以选择1、2 两个寄存器一起读取,合并起来转发给 KNX。 ① 数据格式(仅主机):可以选择高 byte 在前和高 Byte 在后的模式,根据具体数据格式进行设置。 ② 每变化多少值 则发送一次:设置0表示不管变化多少都转发,设置1表示值变化1的时候转发(适合开关量),设置10表示在当前值的上下变化210的时候才转发。 ③ 需要转换的 bit:就是取寄存器中的哪几个 bit 的值,转发给 KNX,同样KNX转给 modbus 寄存器也是值改变配置的 bit,其他的 bit 值不变。如下图,设置了1,代表十六进制 0x0001,即转发最低位的数据,如寄存器的值为 0x1231,KNX则转发1,如寄存器的值为0x1230,KNX则转发0.该值默认是 65535,即 0xFFFF,转发所有16bit 的值。 ④ KNX 到 modbus 的数据转换:这个是用于处理数据转换的倍数,如:假设设置的值是2,KNX端接收到数据是5,modbus寄存器的数据是10;负数代表多少份之一,如-2,接收到 KNX发过来的值是10,那么modbus寄存器的数据为5。应用场景如,温度转换,modbus 大部分温度值精确到小数点后一位,但是 KNX 是精确到小数点后两位的,那么他们之间就差了10倍,可以设置-10,纠正温度值。该值默认是1,原数据转发。 RS485 配置 RS485 通讯参数配置 ①.Bps for RS485:设置 RS485 总线的波特率。 ②.Stop bit for RS485:停止位设置,仅支持 1bit 和 2bit。 ③.Data bit for RS485:数据位设定,仅支持 8bit 和 9bit。 ④.Check bit for RS485:校验位设置,只支持奇校验和偶校验或者不校验。 ⑤.Crc 校验(0 - 无校验):提供多找标准的 CRC 校验算法,并提供选择 CRC 校验源数据的长度选择。 ⑥.从第几个 BYTE 开始计算 CRC:设置 CRC 的起始位置。 ⑦.倒数第几 BYTE 截止结算 CRC:设置 CRC 的结束位置。 ⑧.报文接收超时时间(N 个字符时间):RS485 总线识别一帧结束的时间,一个字符的时间 *N。 ⑨.RS485 总线发送报文间隔(.ms):本设备往总线发送一帧报文的最小时间间隔。 ⑩.RS485 通道数使能。 RS485 指令配置 ①.备注名称:可以根据需求,标注本指令对应的是什么。 ②.KNX 的数据格式(dpt):KNX 对象的数据类型。 ③.KNX 接收到报文后是否发送到 RS485。 ④.RS485 接收到报文后是否转发到 KNX。 ⑤.转发方式:接收到 RS485 总线正确指令后,转发到 KNX 的值的选择。转发接收值,则转发指令中使用 XX 替代的位置的数据;转发固定值,KNX 上发送设定好的值。 ⑥.数据转发设置:参考 Modbus 寄存器配置的第七点。 ⑦.指令内容:指令是以十六进制输入,每个 byte 之间使用空格隔开,使用字母 XX 表示需要转换到 KNX 的数据,所有的指令内容都不区分大小写。 RS232 配置 RS232 的配置跟 RS485 一样。 Functions 配置 全局配置 通道数量:最大 100 个。 Fun 参数配置 ①使能当前的 function 功能。 ②功能选择:Delay 功能提供延迟发送的功能,2-point logic 功能提供简单的 2 点控制逻辑(高于设定点 A 触发一个操作,低于设定点 B 触发另一个操作)。 ③对象 dpt:配置需要的数据类型。 ④(Delay)延迟(秒):0 代表不延迟,0 ~ 255。 ⑤(Delay)延迟(毫秒):0 代表不延迟,0 - 255。 ⑥(2-point)高阈值设定:当输入值高于该设定值时候,延迟设定的时间后,发送高于高阈值时发送的值参数设定的值。 ⑦(2-point)低阈值设定:当输入值高于该设定值时候,延迟设定的时间后,发送低于低阈值时发送的值参数设定的值。 ⑧(2-point)Out.对象 dpt:控制输出对象的数据格式: ⑨(2-point)高于高阈值时发送的值: ⑩(2-point)低于低阈值时发送的值: (2-point)延迟时间(.min):延迟输出的时间设定,单位分钟。 (2-point)延迟时间(.sec):延迟输出的时间设定,单位秒。 注意:当输入值高于高阈值的时候,在延迟时间内再次收到低于高阈值的值,则会取消发送。低于低阈值的时候功能一样。 例子演示 RS485/RS232 转 KNX。 (1)设置十六进制指令 0x12345678,转换器接收到 RS485/RS232 发过来的报文为 0x12345678 时候,KNX 端群组地址 1/0/4 发送 50 的值。 也可以是转发接收到的其中一个值,使用 xx 来表示需要转发的值。转换器接收到 RS485/RS232 发过来的报文为 0xabcdef0812 时候,knx 端对应的地址 1/0/5,会把 xx 位置的 08 转发过来。 视频教程 基本参数与安装 2.1 电气参数 项目说明供电方式直接插在 KNX 总线上(21V–31V)耗电量比手机充电器还小(<0.5W)工作温度-5℃~45℃(普通室内环境即可) 2.2 安装步骤 固定设备:卡在标准的35mm导轨上(类似电表箱的安装方式)。 接线: KNX:用双绞线(类似网线)连接总线。 RS485/RS232:用屏蔽双绞线(防干扰)连接设备。 指示灯: 绿灯常亮:供电正常。 红灯闪烁:正在配置中。 实际应用场景举例 场景1:智能楼宇照明 设备:KNX 灯光系统 + MODBUS 人体传感器。 逻辑: 传感器检测无人 → 发送信号到网关。 网关延迟30秒 → 通过KNX关灯。 场景2:工业温控 设备:RS485 温度传感器 + KNX 空调控制器。 逻辑: 传感器上报28℃ → 网关转发到KNX。 KNX 判断 >25℃ → 发送“开空调”指令。 常见问题与解答 Q1:指示灯不亮怎么办? 检查KNX总线供电是否正常(21V–31V)。 确认接线是否松动。 Q2:数据转发不成功? 检查波特率、校验位是否与设备一致。 确认指令中的 XX 位置是否正确。 Q3:逻辑规则不触发? 检查阈值是否设置合理(如“>30”误写为“<30”)。 确认输出对象的地址是否正确。 技术参数总表 项目参数供电电压21–31V DC(KNX总线直接供电)最大功耗<0.5W(超省电)支持协议KNX、MODBUS、RS485、RS232逻辑通道数100组(满足复杂自动化需求) --- ### 651. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介 本产品属于7寸彩屏控制器系列,具备多种尺寸规格,适用于家用、商用及工业设备的可视化人机交互场景。全系列产品采用高规格真彩色LCD显示屏,搭配电容式触摸屏,外观简约时尚,符合现代审美与使用习惯。 该7寸彩屏控制器适用于工业/商业电器控制、彩屏交互、人机交互、新风系统、空调系统及高端仪器等应用场合。内置7寸高分辨率全彩显示与电容式触摸玻璃面板,操作顺滑简单。搭载ARM Cortex™-A7双核1.2GHz处理器,处理性能强劲,满足各类运算需求。配备KNX接口,满足智能电器与控制的硬件连接需求。机器后背采用磁吸式金属挂架滑扣式安装设计,安装简单且牢固可靠。高档CNC铝面板外壳,可融入家居环境。 从外部发到中控屏的命令 读组地址(0x00) 作用:从KNX总线读取指定组地址的数据。 协议格式:00 + 数据长度(03) + 组地址高字节(Add_H) + 组地址中字节(Add_M) + 组地址低字节(Add_L) + 校验(XOR8)。 举例:假设要读取组地址1/2/3的数据,报文为:00 03 01 02 03 03。其中,0x00是命令类型,0x01是组地址的高字节,0x02是中字节,0x03是低字节,校验值为0x03。发送该报文后,核心板会从KNX总线读取组地址1/2/3的数据,并可能返回结果。 写组地址(0x01) 作用:向KNX总线写入数据到指定组地址。 协议格式:01 + 数据长度(L_data) + 组地址高字节(Add_H) + 组地址中字节(Add_M) + 组地址低字节(Add_L) + 值长度(L_value) + 数据值(V1...Vn) + 校验(XOR8)。 举例:向组地址1/2/3写入开关量1,报文为:01 05 01 02 03 01 01 04。这里,0x01是命令类型,0x05是数据长度(包含后面的5个字节),组地址为1/2/3,值长度为1 bit,数据值是0x01(表示开关量1),校验值为0x04。发送该报文后,核心板会在KNX总线写入开关量1到组地址1/2/3。 读通讯对象(0x02) 作用:读取核心板内部通讯对象的值。 协议格式:02 + 数据长度(01) + 通讯对象号(ObjNum) + 校验(XOR8)。 举例:要读取通讯对象08的值,报文为:02 01 08 0B。0x02是命令类型,数据长度为0x01(1字节),通讯对象号为0x08,校验值为0x0B。发送此报文后,核心板会回通讯对象08的值。 写通讯对象(0x03) 作用:向核心板内部通讯对象写入值。 协议格式:03 + 数据长度(L_data) + 通讯对象号(ObjNum) + 值长度(L_obj) + 数据值(V1...Vn) + 校验(XOR8)。 举例:向通讯对象6写入开关量1,报文为:03 03 06 01 01 06。0x03是命令类型,数据长度0x03(3字节),通讯对象号为0x06,值长度为1 bit(0x01),数据值为0x01(开关量1),校验值为0x06。发送后,通讯对象6的值变为1,核心板可能会在KNX总线上发送写组地址报文。 发原始数据(0x04) 作用:向KNX总线直接发送原始数据。 协议格式:04 + 数据长度(L_data) + 数据内容(D1...Dn) + 校验(XOR8)。 举例:发送一个完整的KNX报文,如:04 05 70 70 83 74 6F 99。0x04是命令类型,数据长度为0x05(5字节),后面的数据是想要发送的原始KNX报文,校验值为0x99。此命令可用于发送用户自定义的KNX报文。 获取参数(0x05) 作用:获取核心板内部的参数。 协议格式:05 + 数据长度(04) + 首地址高字节(AddStart_H) + 首地址低字节(AddStart_L) + 尾地址高字节(AddEnd_H) + 尾地址低字节(AddEnd_L) + 校验(XOR8)。 举例:要获取从地址0x3B00到0x3C00的参数,报文为:05 04 3B 00 3C 00 + 校验。发送后,核心板会返回指定地址范围内的参数数据。 串口波特率(0x06) 作用:设置触摸屏串口的波特率。 协议格式:06 + 数据长度(01) + 波特率代码(D1) + 校验(XOR8)。 举例:设置波特率为115200,报文为:06 01 02 + 校验。其中,0x02表示波特率为115200,默认值。 物理地址(0x07) 作用:设置或读取核心板的物理地址。 协议格式:写物理地址时,07 + 数据长度(03) + 地址高字节(Add_H) + 中字节(Add_M) + 低字节(Add_L) + 校验;读取时,可发送非法地址(如三个字节都为0xFF)。 举例:设置物理地址为1.2.3,报文为:07 03 01 02 03 + 校验。三个字节分别表示地址的高、中、低字节。 制造商ID(0x08) 作用:设置或读取制造商ID。 协议格式:写时,08 + 数据长度(02) + ID高字节(ID_H) + 低字节(ID_L) + 校验;读时,发送ID_H和ID_L都为0x00。 举例:设置制造商ID为0x1234,报文为:08 02 12 34 + 校验。 激活(0x09) 作用:激活核心板(出厂已激活,一般不需要用户操作)。 协议格式:09 + 数据长度(08) + 激活码(A1...A8) + 校验。 举例:09 08 A1 A2 A3 A4 A5 A6 A7 A8 + 校验。 发送间隔(0x0A) 作用:设置串口发送数据的最小间隔。 协议格式:0A + 数据长度(02) + 时间高字节(Th) + 时间低字节(Tl) + 校验。 举例:设置发送间隔为20ms,报文为:0A 02 00 14 + 校验(0x0014=20ms)。 重发设置(0x0B) 作用:设置重发次数和超时时间。 协议格式:0B + 数据长度(02) + 重发次数(Re) + 超时时间(To) + 校验。 举例:设置重发次数为3次,超时时间为10ms,报文为:0B 02 03 0A + 校验。 重启核心板(0x0C) 作用:重启核心板。 协议格式:0C + 数据长度(05) + 特定字节(70 70 83 74 6F) + 校验。 举例:发送重启报文:0C 05 70 70 83 74 6F 91。 编程状态(0x0D) 作用:进入或退出编程状态。 协议格式:0D + 数据长度(01) + 状态(Data) + 校验。 举例:进入编程状态,报文为:0D 01 01 + 校验;退出编程状态,报文为:0D 01 00 + 校验。 卸载(0x0E) 作用:卸载应用或应用和物理地址。 协议格式:0E + 数据长度(01) + 类型(Type) + 校验。 举例:卸载应用,报文为:0E 01 01 + 校验;卸载应用和物理地址,报文为:0E 01 02 + 校验。 内部更新对象(0x0F) 作用:更新核心板内部对象而不发送到总线。 协议格式:0F + 数据长度(L_data) + 对象号1(ObjNum1) + 值长度1(L_obj1) + 值1 + ... + 校验。 举例:更新对象1为值0x01:0F 03 01 01 01 + 校验。 内部更新连续对象(0x10) 作用:更新连续的对象而不发送到总线。 协议格式:10 + 数据长度(L_data) + 起始对象号(ObjNum) + 值1 + 值2 + ... + 校验。 举例:更新对象5和6的值:10 04 05 01 02 + 校验(起始对象号5,两个值分别为0x01和0x02)。 从中控屏发到外部的命令 读组地址回复(0x80) 作用:回复读组地址请求,包含组地址和值。 协议格式:80 + 数据长度(L_data) + 组地址高字节(Add_H) + 中字节(Add_M) + 低字节(Add_L) + 值长度(L_value) + 值(V1...Vn) + 校验(XOR8)。 举例:回复组地址1/2/3的值为0x01(开关量1),报文为:80 05 01 02 03 01 01 + 校验。 写组地址(0x81) 作用:通知外部写组地址操作,包含组地址和值。 协议格式:与读组地址回复类似,但命令类型为0x81。例如:81 05 01 02 03 01 01 + 校验。 通讯对象值更新(0x82) 作用:通知外部通讯对象值更新。 协议格式:82 + 数据长度(L_data) + 通讯对象号(ObjNum) + 值长度(L_obj) + 值(V1...Vn) + 校验。 举例:通讯对象6的值更新为1,报文为:82 03 06 01 01 + 校验。 原始数据(0x84) 作用:转发KNX总线上的原始数据。 协议格式:84 + 数据长度(L_data) + 数据内容(D1...Dn) + 校验。 举例:转发原始KNX数据,报文为:84 05 70 70 83 74 6F + 校验。 参数(0x85) 作用:返回参数数据。 协议格式:85 + 数据长度(22) + 首地址高字节(AhAl) + 数据内容(D1...D32) + 校验。 举例:返回参数数据,报文为:85 22 AhAl D1 D2 ... D32 + 校验。 物理地址(0x87) 作用:返回核心板的物理地址。 协议格式:87 + 数据长度(03) + 地址高字节(Add_H) + 中字节(Add_M) + 低字节(Add_L) + 校验。 举例:返回物理地址1.2.3,报文为:87 03 01 02 03 + 校验。 制造商ID(0x88) 作用:返回制造商ID。 协议格式:88 + 数据长度(02) + ID高字节(ID_H) + ID低字节(ID_L) + 校验。 举例:返回ID为0x1234,报文为:88 02 12 34 + 校验。 核心板重启(0x8C) 作用:通知外部核心板重启。 协议格式:8C + 数据长度(11) + 特定字节 + 校验。 举例:重启时发送:8C 11 70 70 83 74 6F + S1...S7 + VhVl + FUN + AT + 校验。 编程状态(0x8D) 作用:通知编程状态变化。 协议格式:8D + 数据长度(01) + 状态(D1) + 校验。 举例:进入编程状态,报文为:8D 01 01 + 校验。 --- ### 652. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介 本产品属于7寸彩屏控制器系列,具备多种尺寸规格,适用于家用、商用及工业设备的可视化人机交互场景。全系列产品采用高规格真彩色LCD显示屏,搭配电容式触摸屏,外观简约时尚,符合现代审美与使用习惯。 该10寸彩屏控制器适用于工业/商业电器控制、彩屏交互、人机交互、新风系统、空调系统及高端仪器等应用场合。内置10寸高分辨率全彩显示与电容式触摸玻璃面板,操作顺滑简单。搭载ARM Cortex™-A7双核1.2GHz处理器,处理性能强劲,满足各类运算需求。同时配备RS485、RS232、RJ45以及802.11b/g/n WIFI接口,满足智能电器与控制的硬件连接需求。机器后背采用磁吸式金属挂架滑扣式安装设计,安装简单且牢固可靠。高档CNC铝面板外壳,可融入家居环境。 产品手册下载: 7寸彩屏控制器说明书(1)下载 二、产品规格 (一)硬件规格 项目说明CPU与存储CPUARM Cortex™-A7双核1.2GHz芯片平台SSD20X内存64MByte闪存128MByte屏幕尺寸7英寸分辨率高清1024*600 IPS屏型号P07-POE发色数24位全彩色(16.7M色)触摸全贴合电容式触摸屏外设与接口串口RS485数量1串口RS232数量1USB OTGMicro USB OTG数量1扩展存储TF卡槽(兼容SDHC标准)数量1按键隐藏式复位按键数量1以太网10M/100M全双工自适应RJ45以太网口数量1音频内置蜂鸣器数量1RTC时钟电池供电数量1指示灯电源指示灯数量1尺寸与重量整机尺寸173.8*111.2*8.0(墙外)匹配底盒86底盒(86×86mm)包装尺寸220*14*65mm整机重量见装箱清单包装重量见装箱清单工作环境电源输入DC 12V 500mA /POE最大功率6W工作温度-20℃~70℃工作湿度RH10%~RH90%(不结露)存储环境储存温度-40℃~85℃储存湿度≤95%RH (二)软件规格 项目说明操作系统Linux 4.9.84 (三)尺寸规格 详见装箱清单。 (四)装箱清单 名称数量图例控制器主机1-安装支架1-固定螺钉2-安装说明-- 三、注意事项 安装前,请仔细阅读本产品手册并按手册内容操作,否则可能存在触电或火灾风险。 危险操作可能威胁人身安全,请谨慎操作。 本产品禁止未成年人安装与使用,以免造成人身伤害。 安装时应聘请专业资质人员或服务商。 确保布线符合当地及本手册标准,并由专业人员完成。 非专业人员安装可能导致产品故障、触电及火灾风险。 本产品禁止安装在易燃气体泄漏区域。 本产品禁止安装在盐雾大的环境。 本产品禁止进水。 本产品接线不能产生拉力,以免线断漏电。 本产品应安装在0℃~39℃室内环境,避免阳光直射。 禁止将电源线接到通讯线接口。 若安装在医院等环境,确保本产品不与其他产品相互干扰。 本产品应安装在能承受其重量的墙体上。 安装完成后,禁止移动或拆卸本产品。 禁止在潮湿环境下使用本产品。 确保本产品接入电源在额定输入范围内。 本产品为永久式连接设备,安装时应在外部装标准断开装置。 长期不使用时,请关闭电源。 核对接口输入线,防止连接错误损坏产品。 确认所有接线正确后再打开电源。 禁止自行改装、维修本产品。 若本机死机,可按复位键重新开机。 本产品带有存储功能。 本产品仅适用于海拔2000米及以下地区,仅适用于非热带气候条件。 串口屏GVSUI 配置 PC 软件功能说明书 0 GUI配置PC软件功能说明_V1.0下载 说明书链接:https://www.modbus.cn/category/gvsui 系统参数设置 软件及说明书下载 工程模版下载 逻辑运算配置软件下载 产品购买:https://item.taobao.com/item.htm?ft=t&id=550748019211 --- ### 653. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品简介 CY-DALI64A是一款支持DT6和DT8协议的单路DALI网关模块,可控制16组64个驱动,具备调试串口和控制串口,支持多种驱动类型DIM/CW/RGB/RGBW/RGBWA,采用35mm导轨式安装。 功能说明: 内置DALI总线电源,为DALI总线提供16V电压,最大250mA的供电电流 具备2个LED指示灯,可直接判断网关设备的工作状态 具备1个手动DALI驱动设备安装测试按键,可手动测试测试设备的开关状态 具备RS485控制串口,支持Modbus RTU To DALI通讯协议 具备RS485调试串口,可连接到PC并通过DALI上位机调试软件对DALI系统进行调试和配置 调试和控制串口通讯速率为9600波特率,最远支持1200米,方便调试控制 产品型号CY-DALI64A产品名称单路DALI网关模块输入电压110~230VAC±10%输入频率50/60HzDALI总线电源DALI总线电源空载输出电压:16V±5%DALI总线电源最大输出电流:250mADALI总线电源保证输出电流:200mA支持组控制16组支持单驱动控制64个支持DALI协议DT6 和 DT8RS485调试串口1个 用于调试软件配置DALI 驱动RS485控制串口1个 9600,N,8,1 支持Modbus RTU协议,用于对接中控或组态软件DALI接口1对:DA1+ DA2- 共4个端子测试按键1个ON/OFF按键(所有驱动器)单击-最大功率等级;再次点击-关闭指示灯LED1:电源指示灯  LED2:DALI信号指示灯从机地址范围1-63 拨码盘设置支持驱动类型CW\DIM\RGB\RGBW\RGBWA工作温度-5℃~45℃工作相对温度≤90%存储温度-20℃~60℃存储相对湿度≤93%外型尺寸 长*宽*高)114mm*98mm*72mm防护等级IP20产品净重xxxg/pcs安装方式35mm导轨式安装 1.产品接口示意图 2.产品尺寸图 3.单系统示意图 4.多系统示意图 DALI网关接线教程 DALI网关软件操作说明 通讯协议格式 1.通讯格式说明 9600,N,8,1(固定不可更改) 帧间隔时间≥150ms(数据长度越长响应越慢) 从站地址范围:01H-3FH(通过拨码盘设置) 标准Modbus RTU协议 支持组地址控制、支持短地址控制、支持短地址在线状和故障状态查询 组地址寄存器地址范围:0001H-0080H 短地址寄存器地址范围:0081H-0280H 短地址在线状态寄存器地址范围:0281H-0284H 短地址故障状态寄存器地址范围:0285H-0288H 场景调用寄存器地址:028AH(只支持06功能码) 一次性最多读125个寄存器 8个寄存器地址为1个组或1个短地址分别是(渐变、亮度、色温、R、G、B、W、A) 支持03H\06H\10H功能码 注:DALI设备上电启动需要30s左右的时间。注:短地址和驱动是相同意思注:用0x10功能码写多寄存器(RGB类型)时,渐变时间+亮度+色温(0xFF)+R+G+B+W+A,需要8个寄存器连续写 2.寄存器定义说明 调光渐变时间定义:DALI渐变时间共16个级别 级别数值时间级别数值时间级别数值时间000H立即606H4s120CH32s101H0.7s707H5.7s130DH45.3s202H1s808H8s140EH64s303H1.4s909H11.3s150FH90.5s404H2s100AH16s   505H2.8s110BH22.6s   寄存器地址类型数值范围 寄存器类型数值范围调光渐变时间00H-0FH 渐变调光渐变时间定义亮度00H-FEH(0-254)色温19H-41H(25-65)2500K-6500KR红色00H-FEH(0-254)G绿色00H-FEH(0-254)B蓝色00H-FEH(0-254)W白色00H-FEH(0-254)A琥珀色00H-FEH(0-254)场景号00H-10H(1-16) 3.功能码03H/06H/10H说明 3.1 功能码03H说明 主机->从机 发送:01 03 00 02 00 02 65 CB主机<-从机 接收:01 03 04 00 FE 00 41 5B F3 主机->从机 发送指令定义:第1个字节 01H -DALI网关设备地址(由设备ID拨码决定)第2个字节 03H -Modbus功能码,读单个寄存器或多个寄存器的值第3,4个字节 0003H -从0003H寄存器位置开始读寄存器的值第5,6个字节 0002H -从第3,4字节指定的寄存器开始,共读取2个寄存器的数据第7,8个字节 65CBH -为该帧数据的校验字节 (CRC16高低位) 主机<-从机 接收指令定义:第1个字节 01H -DALI网关设备地址(由设备ID拨码决定)第2个字节 03H -Modbus功能码,读单个寄存器或多个寄存器的值第3个字节 04H -DALI网关共返回4个字节的数据第4,7个字节 00020042H -DALI网关共返回4个字节的数据第8,9个字节 65CBH -为该帧数据的校验字节 (CRC16高低位) 3.2 功能码06H说明 主机->从机 发送:01 06 00 03 00 41 B9 FA主机<-从机 接收:01 06 00 03 00 41 B9 FA 主机->从机 发送指令定义:第1个字节 01H -DALI网关设备地址(由设备ID拨码决定)第2个字节 06H -Modbus功能码,写单个寄存器的值第3,4个字节 0003H -从0003H寄存器位置开始写寄存器的值第5,6个字节 0041H -从3,4字节指定的寄存器写入0041H值第7,8个字节 B9FAH -为该帧数据的校验字节 (CRC16高低位) 主机<-从机 接收指令定义:第1个字节 01H -DALI网关设备地址(由设备ID拨码决定)第2个字节 06H -Modbus功能码,写单个寄存器的值第3,4个字节 0003H -从0003H寄存器位置开始写寄存器的值第5,6个字节 0041H -从3,4字节指定的寄存器写入0041H值第7,8个字节 B9FAH -为该帧数据的校验字节 (CRC16高低位) 3.3 功能码10H说明 主机->从机 发送:01 10 00 01 00 02 04 00 01 00 FE E2 23主机<-从机 接收:01 10 00 01 00 02 10 08 主机->从机 发送指令定义:第1个字节 01H -DALI网关设备地址(由设备ID拨码决定)第2个字节 10H -Modbus功能码,一次写多个寄存器的值第3,4个字节 0001H -从0001H寄存器位置开始一次写个寄存器的值第5,6个字节 0002H -从3,4字节指定的寄存器位置开始,一次写两个寄存器的值第7个字节 04H -要写入的总字节数为8(2个寄存器*2)第8,9个字节-第1个寄存器写0001H值,第2个寄存器写00FEH值第10,11个字节 E223H -为该帧数据的校验字节 (CRC16高低位) 主机<-从机 接收指令定义:第1个字节 01H -DALI网关设备地址(由设备ID拨码决定)第2个字节 10H -Modbus功能码,一次写多个寄存器的值第3,4个字节 0001H -从0001H寄存器位置开始一次写个寄存器的值第5,6个字节 0002H -从3,4字节指定的寄存器位置开始,一次写两个寄存器的值第7,8个字节 1008H -为该帧数据的校验字节 (CRC16高低位) 4.组地址寄存器地址表 组地址号地址范围DEC渐变时间寄存器亮度寄存器色温寄存器R寄存器 G寄存器B寄存器W寄存器A寄存器11-80001H0002H0003H0004H0005H0006H0007H0008H29-160009H000AH000BH000CH000DH000EH000FH0010H317-240011H0012H0013H0014H0015H0016H0017H0018H425-320019H001AH001BH001CH001DH001EH001FH0020H533-400021H0022H0023H0024H0025H0026H0027H0028H641-480029H002AH002BH002CH002DH002EH002FH0030H749-560031H0032H0033H0034H0035H0036H0037H0038H857-640039H003AH003BH003CH003DH003EH003FH0040H965-720041H0042H0043H0044H0045H0046H0047H0048H1073-800049H004AH004BH004CH004DH004EH004FH0050H1181-880051H0052H0053H0054H0055H0056H0057H0058H1289-960059H005AH005BH005CH005DH005EH005FH0060H1397-1040061H0062H0063H0064H0065H0066H0067H0068H14105-1120069H006AH006BH006CH006DH006EH006FH0070H15113-1200071H0072H0073H0074H0075H0076H0077H0078H16121-1280079H007AH007BH007CH007DH007EH007FH0080H 4.1 写组地址渐变时间和亮度寄存器指令(10H功能码) 序号指令应答注释101 10 00 01 00 02 04 00 01 00 FE E2 2301 10 00 01 00 02 10 08组地址1亮度0.7s调到254201 10 00 09 00 02 04 00 01 00 FE E3 8501 10 00 09 00 02 91 CA组地址2亮度0.7s调到254301 10 00 11 00 02 04 00 01 00 FE E3 2F01 10 00 11 00 02 11 CD组地址3亮度0.7s调到254401 10 00 19 00 02 04 00 01 00 FE E2 8901 10 00 19 00 02 90 0F组地址4亮度0.7s调到254501 10 00 21 00 02 04 00 01 00 FE E0 3B01 10 00 21 00 02 11 C2组地址5亮度0.7s调到254601 10 00 29 00 02 04 00 01 00 FE E1 9D01 10 00 29 00 02 90 00组地址6亮度0.7s调到254701 10 00 31 00 02 04 00 01 00 FE E1 3701 10 00 31 00 02 10 07组地址7亮度0.7s调到254801 10 00 39 00 02 04 00 01 00 FE E0 9101 10 00 39 00 02 91 C5组地址8亮度0.7s调到254901 10 00 41 00 02 04 00 01 00 FE E6 1301 10 00 41 00 02 11 DC组地址9亮度0.7s调到2541001 10 00 49 00 02 04 00 01 00 FE E7 B501 10 00 49 00 02 90 1E组地址10亮度0.7s调到2541101 10 00 51 00 02 04 00 01 00 FE E7 1F01 10 00 51 00 02 10 19组地址11亮度0.7s调到2541201 10 00 59 00 02 04 00 01 00 FE E6 B901 10 00 59 00 02 91 DB组地址12亮度0.7s调到2541301 10 00 61 00 02 04 00 01 00 FE E4 0B01 10 00 61 00 02 10 16组地址13亮度0.7s调到2541401 10 00 69 00 02 04 00 01 00 FE E5 AD01 10 00 69 00 02 91 D4组地址14亮度0.7s调到2541501 10 00 71 00 02 04 00 01 00 FE E5 0701 10 00 71 00 02 11 D3组地址15亮度0.7s调到2541601 10 00 79 00 02 04 00 01 00 FE E4 A101 10 00 79 00 02 90 11组地址16亮度0.7s调到254 4.2写组地址渐变时间和亮度+色温寄存器指令(10H功能码) 序号指令应答注释101 10 00 01 00 03 06 00 01 00 FE 00 41 2B 4501 10 00 01 00 03 D1 C8组地址1亮度0.7s调到254,色温调到6500K201 10 00 09 00 03 06 00 01 00 FE 00 41 AA AF01 10 00 09 00 03 50 0A组地址2亮度0.7s调到254,色温调到6500K301 10 00 11 00 03 06 00 01 00 FE 00 41 2A D001 10 00 11 00 03 D0 0D组地址3亮度0.7s调到254,色温调到6500K401 10 00 19 00 03 06 00 01 00 FE 00 41 AB 3A01 10 00 19 00 03 51 CF组地址4亮度0.7s调到254,色温调到6500K501 10 00 21 00 03 06 00 01 00 FE 00 41 2A 2F01 10 00 21 00 03 D0 02组地址5亮度0.7s调到254,色温调到6500K601 10 00 29 00 03 06 00 01 00 FE 00 41 AB C501 10 00 29 00 03 51 C0组地址6亮度0.7s调到254,色温调到6500K701 10 00 31 00 03 06 00 01 00 FE 00 41 2B BA01 10 00 31 00 03 D1 C7组地址7亮度0.7s调到254,色温调到6500K801 10 00 39 00 03 06 00 01 00 FE 00 41 AA 5001 10 00 39 00 03 50 05组地址8亮度0.7s调到254,色温调到6500K901 10 00 41 00 03 06 00 01 00 FE 00 41 29 9101 10 00 41 00 03 D0 1C组地址9亮度0.7s调到254,色温调到6500K1001 10 00 49 00 03 06 00 01 00 FE 00 41 A8 7B01 10 00 49 00 03 51 DE组地址10亮度0.7s调到254,色温调到6500K1101 10 00 51 00 03 06 00 01 00 FE 00 41 28 0401 10 00 51 00 03 D1 D9组地址11亮度0.7s调到254,色温调到6500K1201 10 00 59 00 03 06 00 01 00 FE 00 41 A9 EE01 10 00 59 00 03 50 1B组地址12亮度0.7s调到254,色温调到6500K1301 10 00 61 00 03 06 00 01 00 FE 00 41 28 FB01 10 00 61 00 03 D1 D6组地址13亮度0.7s调到254,色温调到6500K1401 10 00 69 00 03 06 00 01 00 FE 00 41 A9 1101 10 00 69 00 03 50 14组地址14亮度0.7s调到254,色温调到6500K1501 10 00 71 00 03 06 00 01 00 FE 00 41 29 6E01 10 00 71 00 03 D0 13组地址15亮度0.7s调到254,色温调到6500K1601 10 00 79 00 03 06 00 01 00 FE 00 41 A8 8401 10 00 79 00 03 51 D1组地址16亮度0.7s调到254,色温调到6500K 4.3写组地址色温寄存器指令(功能码06H) 序号指令应答注释101 06 00 03 00 41 B9 FA01 06 00 03 00 41 B9 FA组地址1色温调到6500K201 06 00 0B 00 41 38 3801 06 00 0B 00 41 38 38组地址2色温调到6500K301 06 00 13 00 41 B8 3F01 06 00 13 00 41 B8 3F组地址3色温调到6500K401 06 00 1B 00 41 39 FD01 06 00 1B 00 41 39 FD组地址4色温调到6500K501 06 00 23 00 41 B8 3001 06 00 23 00 41 B8 30组地址5色温调到6500K601 06 00 2B 00 41 39 F201 06 00 2B 00 41 39 F2组地址6色温调到6500K701 06 00 33 00 41 B9 F501 06 00 33 00 41 B9 F5组地址7色温调到6500K801 06 00 3B 00 41 38 3701 06 00 3B 00 41 38 37组地址8色温调到6500K901 06 00 43 00 41 B8 2E01 06 00 43 00 41 B8 2E组地址9色温调到6500K1001 06 00 4B 00 41 39 EC01 06 00 4B 00 41 39 EC组地址10色温调到6500K1101 06 00 53 00 41 B9 EB01 06 00 53 00 41 B9 EB组地址11色温调到6500K1201 06 00 5B 00 41 38 2901 06 00 5B 00 41 38 29组地址12色温调到6500K1301 06 00 63 00 41 B9 E401 06 00 63 00 41 B9 E4组地址13色温调到6500K1401 06 00 6B 00 41 38 2601 06 00 6B 00 41 38 26组地址14色温调到6500K1501 06 00 73 00 41 B8 2101 06 00 73 00 41 B8 21组地址15色温调到6500K1601 06 00 7B 00 41 39 E301 06 00 7B 00 41 39 E3组地址16色温调到6500K 4.4 读组地址亮度色温寄存器状态(功能码03H) 序号指令反馈状态注释101 03 00 02 00 02 65 CB01 03 04 00 FE 00 41 5B F3组地址1亮度254,色温6500K201 03 00 0A 00 02 E4 0901 03 04 00 FE 00 41 5B F3组地址2亮度254,色温6500K301 03 00 12 00 02 64 0E01 03 04 00 FE 00 41 5B F3组地址3亮度254,色温6500K401 03 00 1A 00 02 E5 CC01 03 04 00 FE 00 41 5B F3组地址4亮度254,色温6500K501 03 00 22 00 02 64 0101 03 04 00 FE 00 41 5B F3组地址5亮度254,色温6500K601 03 00 2A 00 02 E5 C301 03 04 00 FE 00 41 5B F3组地址6亮度254,色温6500K701 03 00 32 00 02 65 C401 03 04 00 FE 00 41 5B F3组地址7亮度254,色温6500K801 03 00 3A 00 02 E4 0601 03 04 00 FE 00 41 5B F3组地址8亮度254,色温6500K901 03 00 42 00 02 64 1F01 03 04 00 FE 00 41 5B F3组地址9亮度254,色温6500K1001 03 00 4A 00 02 E5 DD01 03 04 00 FE 00 41 5B F3组地址10亮度254,色温6500K1101 03 00 52 00 02 65 DA01 03 04 00 FE 00 41 5B F3组地址11亮度254,色温6500K1201 03 00 5A 00 02 E4 1801 03 04 00 FE 00 41 5B F3组地址12亮度254,色温6500K1301 03 00 62 00 02 65 D501 03 04 00 FE 00 41 5B F3组地址13亮度254,色温6500K1401 03 00 6A 00 02 E4 1701 03 04 00 FE 00 41 5B F3组地址14亮度254,色温6500K1501 03 00 72 00 02 64 1001 03 04 00 FE 00 41 5B F3组地址15亮度254,色温6500K1601 03 00 7A 00 02 E5 D201 03 04 00 FE 00 41 5B F3组地址16亮度254,色温6500K 5.单灯(短地址号)寄存器地址表 组地址号地址范围DEC渐变时间寄存器亮度寄存器色温寄存器R寄存器 G寄存器B寄存器W寄存器A寄存器1129-1360081H0082H0083H0084H0085H0086H0087H0088H2137-1440089H008AH008BH008CH008DH008EH008FH0090H3145-1520091H0092H0093H0094H0095H0096H0097H0098H4153-1600099H009AH009BH009CH009DH009EH009FH00A0H5161-16800A1H00A2H00A3H00A4H00A5H00A6H00A7H00A8H6169-17600A9H00AAH00ABH00ACH00ADH00AEH00AFH00B0H7177-18400B1H00B2H00B3H00B4H00B5H00B6H00B7H00B8H8185-19200B9H00BAH00BBH00BCH00BDH00BEH00BFH00C0H9193-20000C1H00C2H00C3H00C4H00C5H00C6H00C7H00C8H10201-20800C9H00CAH00CBH00CCH00CDH00CEH00CFH00D0H11209-21600D1H00D2H00D3H00D4H00D5H00D6H00D7H00D8H12217-22400D9H00DAH00DBH00DCH00DDH00DEH00DFH00E0H13225-23200E1H00E2H00E3H00E4H00E5H00E6H00E7H00E8H14233-24000E9H00EAH00EBH00ECH00EDH00EEH00EFH00F0H15241-24800F1H00F2H00F3H00F4H00F5H00F6H00F7H00F8H16249-25600F9H00FAH00FBH00FCH00FDH00FEH00FFH0100H17257-2640101H0102H0103H0104H0105H0106H0107H0108H18265-2720109H010AH010BH010CH010DH010EH010FH0110H19273-2800111H0112H0113H0114H0115H0116H0117H0118H20281-2880119H011AH011BH011CH011DH011EH011FH0120H21289-2960121H0122H0123H0124H0125H0126H0127H0128H22297-3040129H012AH012BH012CH012DH012EH012FH0130H23305-3120131H0132H0133H0134H0135H0136H0137H0138H24313-3200139H013AH013BH013CH013DH013EH013FH0140H25321-3280141H0142H0143H0144H0145H0146H0147H0148H26329-3360149H014AH014BH014CH014DH014EH014FH0150H27337-3440151H0152H0153H0154H0155H0156H0157H0158H28345-3520159H015AH015BH015CH015DH015EH015FH0160H29353-3600161H0162H0163H0164H0165H0166H0167H0168H30361-3680169H016AH016BH016CH016DH016EH016FH0170H31369-3760171H0172H0173H0174H0175H0176H0177H0178H32377-3840179H017AH017BH017CH017DH017EH017FH0180H33385-3920181H0182H0183H0184H0185H0186H0187H0188H34393-4000189H018AH018BH018CH018DH018EH018FH0190H35401-4080191H0192H0193H0194H0195H0196H0197H0198H36409-4160199H019AH019BH019CH019DH019EH019FH01A0H37417-42401A1H01A2H01A3H01A4H01A5H01A6H01A7H01A8H38425-43201A9H01AAH01ABH01ACH01ADH01AEH01AFH01B0H39433-44001B1H01B2H01B3H01B4H01B5H01B6H01B7H01B8H40441-44801B9H01BAH01BBH01BCH01BDH01BEH01BFH01C0H41449-45601C1H01C2H01C3H01C4H01C5H01C6H01C7H01C8H42457-46401C9H01CAH01CBH01CCH01CDH01CEH01CFH01D0H43465-47201D1H01D2H01D3H01D4H01D5H01D6H01D7H01D8H44473-48001D9H01DAH01DBH01DCH01DDH01DEH01DFH01E0H45481-48801E1H01E2H01E3H01E4H01E5H01E6H01E7H01E8H46489-49601E9H01EAH01EBH01ECH01EDH01EEH01EFH01F0H47497-50401F1H01F2H01F3H01F4H01F5H01F6H01F7H01F8H48505-51201F9H01FAH01FBH01FCH01FDH01FEH01FFH0200H49513-5200201H0202H0203H0204H0205H0206H0207H0208H50521-5280209H020AH020BH020CH020DH020EH020FH0210H51529-5360211H0212H0213H0214H0215H0216H0217H0218H52537-5440219H021AH021BH021CH021DH021EH021FH0220H53545-5520221H0222H0223H0224H0225H0226H0227H0228H54553-5600229H022AH022BH022CH022DH022EH022FH0230H55561-5680231H0232H0233H0234H0235H0236H0237H0238H56569-5760239H023AH023BH023CH023DH023EH023FH0240H57577-5840241H0242H0243H0244H0245H0246H0247H0248H58585-5920249H024AH024BH024CH024DH024EH024FH0250H59593-6000251H0252H0253H0254H0255H0256H0257H0258H60601-6080259H025AH025BH025CH025DH025EH025FH0260H61609-6160261H0262H0263H0264H0265H0266H0267H0268H62617-6240269H026AH026BH026CH026DH026EH026FH0270H63625-6320271H0272H0273H0274H0275H0276H0277H0278H64633-6400279H027AH027BH027CH027DH027EH027FH0280H 5.1写短地址渐变时间和亮度寄存器指令(10H功能码) 序号指令应答注释101 10 00 81 00 02 04 00 01 00 FE EA 4301 10 00 81 00 02 11 E0短地址1亮度0.7s调到254201 10 00 89 00 02 04 00 01 00 FE EB E501 10 00 89 00 02 90 22短地址2亮度0.7s调到254301 10 00 91 00 02 04 00 01 00 FE EB 4F01 10 00 91 00 02 10 25短地址3亮度0.7s调到254401 10 00 99 00 02 04 00 01 00 FE EA E901 10 00 99 00 02 91 E7短地址4亮度0.7s调到254501 10 00 A1 00 02 04 00 01 00 FE E8 5B01 10 00 A1 00 02 10 2A短地址5亮度0.7s调到254601 10 00 A9 00 02 04 00 01 00 FE E9 FD01 10 00 A9 00 02 91 E8短地址6亮度0.7s调到254701 10 00 B1 00 02 04 00 01 00 FE E9 5701 10 00 B1 00 02 11 EF短地址7亮度0.7s调到254801 10 00 B9 00 02 04 00 01 00 FE E8 F101 10 00 B9 00 02 90 2D短地址8亮度0.7s调到254901 10 00 C1 00 02 04 00 01 00 FE EE 7301 10 00 C1 00 02 10 34短地址9亮度0.7s调到2541001 10 00 C9 00 02 04 00 01 00 FE EF D501 10 00 C9 00 02 91 F6短地址10亮度0.7s调到2541101 10 00 D1 00 02 04 00 01 00 FE EF 7F01 10 00 D1 00 02 11 F1短地址11亮度0.7s调到2541201 10 00 D9 00 02 04 00 01 00 FE EE D901 10 00 D9 00 02 90 33短地址12亮度0.7s调到2541301 10 00 E1 00 02 04 00 01 00 FE EC 6B01 10 00 E1 00 02 11 FE短地址13亮度0.7s调到2541401 10 00 E9 00 02 04 00 01 00 FE ED CD01 10 00 E9 00 02 90 3C短地址14亮度0.7s调到2541501 10 00 F1 00 02 04 00 01 00 FE ED 6701 10 00 F1 00 02 10 3B短地址15亮度0.7s调到2541601 10 00 F9 00 02 04 00 01 00 FE EC C101 10 00 F9 00 02 91 F9短地址16亮度0.7s调到2541701 10 01 01 00 02 04 00 01 00 FE EF B301 10 01 01 00 02 11 F4短地址17亮度0.7s调到2541801 10 01 09 00 02 04 00 01 00 FE EE 1501 10 01 09 00 02 90 36短地址18亮度0.7s调到2541901 10 01 11 00 02 04 00 01 00 FE EE BF01 10 01 11 00 02 10 31短地址19亮度0.7s调到2542001 10 01 19 00 02 04 00 01 00 FE EF 1901 10 01 19 00 02 91 F3短地址20亮度0.7s调到2542101 10 01 21 00 02 04 00 01 00 FE ED AB01 10 01 21 00 02 10 3E短地址21亮度0.7s调到2542201 10 01 29 00 02 04 00 01 00 FE EC 0D01 10 01 29 00 02 91 FC短地址22亮度0.7s调到2542301 10 01 31 00 02 04 00 01 00 FE EC A701 10 01 31 00 02 11 FB短地址23亮度0.7s调到2542401 10 01 39 00 02 04 00 01 00 FE ED 0101 10 01 39 00 02 90 39短地址24亮度0.7s调到2542501 10 01 41 00 02 04 00 01 00 FE EB 8301 10 01 41 00 02 10 20短地址25亮度0.7s调到2542601 10 01 49 00 02 04 00 01 00 FE EA 2501 10 01 49 00 02 91 E2短地址26亮度0.7s调到2542701 10 01 51 00 02 04 00 01 00 FE EA 8F01 10 01 51 00 02 11 E5短地址27亮度0.7s调到2542801 10 01 59 00 02 04 00 01 00 FE EB 2901 10 01 59 00 02 90 27短地址28亮度0.7s调到2542901 10 01 61 00 02 04 00 01 00 FE E9 9B01 10 01 61 00 02 11 EA短地址29亮度0.7s调到2543001 10 01 69 00 02 04 00 01 00 FE E8 3D01 10 01 69 00 02 90 28短地址30亮度0.7s调到2543101 10 01 71 00 02 04 00 01 00 FE E8 9701 10 01 71 00 02 10 2F短地址31亮度0.7s调到2543201 10 01 79 00 02 04 00 01 00 FE E9 3101 10 01 79 00 02 91 ED短地址32亮度0.7s调到2543301 10 01 81 00 02 04 00 01 00 FE E7 D301 10 01 81 00 02 10 1C短地址33亮度0.7s调到2543401 10 01 89 00 02 04 00 01 00 FE E6 7501 10 01 89 00 02 91 DE短地址34亮度0.7s调到2543501 10 01 91 00 02 04 00 01 00 FE E6 DF01 10 01 91 00 02 11 D9短地址35亮度0.7s调到2543601 10 01 99 00 02 04 00 01 00 FE E7 7901 10 01 99 00 02 90 1B短地址36亮度0.7s调到2543701 10 01 A1 00 02 04 00 01 00 FE E5 CB01 10 01 A1 00 02 11 D6短地址37亮度0.7s调到2543801 10 01 A9 00 02 04 00 01 00 FE E4 6D01 10 01 A9 00 02 90 14短地址38亮度0.7s调到2543901 10 01 B1 00 02 04 00 01 00 FE E4 C701 10 01 B1 00 02 10 13短地址39亮度0.7s调到2544001 10 01 B9 00 02 04 00 01 00 FE E5 6101 10 01 B9 00 02 91 D1短地址40亮度0.7s调到2544101 10 01 C1 00 02 04 00 01 00 FE E3 E301 10 01 C1 00 02 11 C8短地址41亮度0.7s调到2544201 10 01 C9 00 02 04 00 01 00 FE E2 4501 10 01 C9 00 02 90 0A短地址42亮度0.7s调到2544301 10 01 D1 00 02 04 00 01 00 FE E2 EF01 10 01 D1 00 02 10 0D短地址43亮度0.7s调到2544401 10 01 D9 00 02 04 00 01 00 FE E3 4901 10 01 D9 00 02 91 CF短地址44亮度0.7s调到2544501 10 01 E1 00 02 04 00 01 00 FE E1 FB01 10 01 E1 00 02 10 02短地址45亮度0.7s调到2544601 10 01 E9 00 02 04 00 01 00 FE E0 5D01 10 01 E9 00 02 91 C0短地址46亮度0.7s调到2544701 10 01 F1 00 02 04 00 01 00 FE E0 F701 10 01 F1 00 02 11 C7短地址47亮度0.7s调到2544801 10 01 F9 00 02 04 00 01 00 FE E1 5101 10 01 F9 00 02 90 05短地址48亮度0.7s调到2544901 10 02 01 00 02 04 00 01 00 FE FB 4301 10 02 01 00 02 11 B0短地址49亮度0.7s调到2545001 10 02 09 00 02 04 00 01 00 FE FA E501 10 02 09 00 02 90 72短地址50亮度0.7s调到2545101 10 02 11 00 02 04 00 01 00 FE FA 4F01 10 02 11 00 02 10 75短地址51亮度0.7s调到2545201 10 02 19 00 02 04 00 01 00 FE FB E901 10 02 19 00 02 91 B7短地址52亮度0.7s调到2545301 10 02 21 00 02 04 00 01 00 FE F9 5B01 10 02 21 00 02 10 7A短地址53亮度0.7s调到2545401 10 02 29 00 02 04 00 01 00 FE F8 FD01 10 02 29 00 02 91 B8短地址54亮度0.7s调到2545501 10 02 31 00 02 04 00 01 00 FE F8 5701 10 02 31 00 02 11 BF短地址55亮度0.7s调到2545601 10 02 39 00 02 04 00 01 00 FE F9 F101 10 02 39 00 02 90 7D短地址56亮度0.7s调到2545701 10 02 41 00 02 04 00 01 00 FE FF 7301 10 02 41 00 02 10 64短地址57亮度0.7s调到2545801 10 02 49 00 02 04 00 01 00 FE FE D501 10 02 49 00 02 91 A6短地址58亮度0.7s调到2545901 10 02 51 00 02 04 00 01 00 FE FE 7F01 10 02 51 00 02 11 A1短地址59亮度0.7s调到2546001 10 02 59 00 02 04 00 01 00 FE FF D901 10 02 59 00 02 90 63短地址60亮度0.7s调到2546101 10 02 61 00 02 04 00 01 00 FE FD 6B01 10 02 61 00 02 11 AE短地址61亮度0.7s调到2546201 10 02 69 00 02 04 00 01 00 FE FC CD01 10 02 69 00 02 90 6C短地址62亮度0.7s调到2546301 10 02 71 00 02 04 00 01 00 FE FC 6701 10 02 71 00 02 10 6B短地址63亮度0.7s调到2546401 10 02 79 00 02 04 00 01 00 FE FD C101 10 02 79 00 02 91 A9短地址64亮度0.7s调到254 5.2写短地址渐变时间和亮度+色温寄存器指令(10H功能码) 序号指令应答注释101 10 00 81 00 03 06 00 01 00 FE 00 41 2C AD01 10 00 81 00 03 D0 20短地址1亮度0.7s调到254,色温调到6500K2 01 10 00 89 00 03 06 00 01 00 FE 00 41 AD 4701 10 00 89 00 03 51 E2短地址2亮度0.7s调到254,色温调到6500K3 01 10 00 91 00 03 06 00 01 00 FE 00 41 2D 3801 10 00 91 00 03 D1 E5短地址3亮度0.7s调到254,色温调到6500K4 01 10 00 99 00 03 06 00 01 00 FE 00 41 AC D201 10 00 99 00 03 50 27短地址4亮度0.7s调到254,色温调到6500K5 01 10 00 A1 00 03 06 00 01 00 FE 00 41 2D C701 10 00 A1 00 03 D1 EA短地址5亮度0.7s调到254,色温调到6500K6 01 10 00 A9 00 03 06 00 01 00 FE 00 41 AC 2D01 10 00 A9 00 03 50 28短地址6亮度0.7s调到254,色温调到6500K7 01 10 00 B1 00 03 06 00 01 00 FE 00 41 2C 5201 10 00 B1 00 03 D0 2F短地址7亮度0.7s调到254,色温调到6500K8 01 10 00 B9 00 03 06 00 01 00 FE 00 41 AD B801 10 00 B9 00 03 51 ED短地址8亮度0.7s调到254,色温调到6500K9 01 10 00 C1 00 03 06 00 01 00 FE 00 41 2E 79 01 10 00 C1 00 03 D1 F4短地址9亮度0.7s调到254,色温调到6500K10 01 10 00 C9 00 03 06 00 01 00 FE 00 41 AF 93 01 10 00 C9 00 03 50 36短地址10亮度0.7s调到254,色温调到6500K11 01 10 00 D1 00 03 06 00 01 00 FE 00 41 2F EC 01 10 00 D1 00 03 D0 31短地址11亮度0.7s调到254,色温调到6500K12 01 10 00 D9 00 03 06 00 01 00 FE 00 41 AE 06 01 10 00 D9 00 03 51 F3短地址12亮度0.7s调到254,色温调到6500K13 01 10 00 E1 00 03 06 00 01 00 FE 00 41 2F 13 01 10 00 E1 00 03 D0 3E短地址13亮度0.7s调到254,色温调到6500K14 01 10 00 E9 00 03 06 00 01 00 FE 00 41 AE F9 01 10 00 E9 00 03 51 FC短地址14亮度0.7s调到254,色温调到6500K15 01 10 00 F1 00 03 06 00 01 00 FE 00 41 2E 86 01 10 00 F1 00 03 D1 FB短地址15亮度0.7s调到254,色温调到6500K16 01 10 00 F9 00 03 06 00 01 00 FE 00 41 AF 6C 01 10 00 F9 00 03 50 39短地址16亮度0.7s调到254,色温调到6500K17 01 10 01 01 00 03 06 00 01 00 FE 00 41 2F B9 01 10 01 01 00 03 D0 34短地址17亮度0.7s调到254,色温调到6500K18 01 10 01 09 00 03 06 00 01 00 FE 00 41 AE 53 01 10 01 09 00 03 51 F6短地址18亮度0.7s调到254,色温调到6500K19 01 10 01 11 00 03 06 00 01 00 FE 00 41 2E 2C 01 10 01 11 00 03 D1 F1短地址19亮度0.7s调到254,色温调到6500K20 01 10 01 19 00 03 06 00 01 00 FE 00 41 AF C6 01 10 01 19 00 03 50 33短地址20亮度0.7s调到254,色温调到6500K21 01 10 01 21 00 03 06 00 01 00 FE 00 41 2E D3 01 10 01 21 00 03 D1 FE短地址21亮度0.7s调到254,色温调到6500K22 01 10 01 29 00 03 06 00 01 00 FE 00 41 AF 39 01 10 01 29 00 03 50 3C短地址22亮度0.7s调到254,色温调到6500K23 01 10 01 31 00 03 06 00 01 00 FE 00 41 2F 46 01 10 01 31 00 03 D0 3B短地址23亮度0.7s调到254,色温调到6500K24 01 10 01 39 00 03 06 00 01 00 FE 00 41 AE AC 01 10 01 39 00 03 51 F9短地址24亮度0.7s调到254,色温调到6500K25 01 10 01 41 00 03 06 00 01 00 FE 00 41 2D 6D 01 10 01 41 00 03 D1 E0短地址25亮度0.7s调到254,色温调到6500K26 01 10 01 49 00 03 06 00 01 00 FE 00 41 AC 87 01 10 01 49 00 03 50 22短地址26亮度0.7s调到254,色温调到6500K27 01 10 01 51 00 03 06 00 01 00 FE 00 41 2C F8 01 10 01 51 00 03 D0 25短地址27亮度0.7s调到254,色温调到6500K28 01 10 01 59 00 03 06 00 01 00 FE 00 41 AD 12 01 10 01 59 00 03 51 E7短地址28亮度0.7s调到254,色温调到6500K29 01 10 01 61 00 03 06 00 01 00 FE 00 41 2C 07 01 10 01 61 00 03 D0 2A短地址29亮度0.7s调到254,色温调到6500K30 01 10 01 69 00 03 06 00 01 00 FE 00 41 AD ED 01 10 01 69 00 03 51 E8短地址30亮度0.7s调到254,色温调到6500K31 01 10 01 71 00 03 06 00 01 00 FE 00 41 2D 92 01 10 01 71 00 03 D1 EF短地址31亮度0.7s调到254,色温调到6500K32 01 10 01 79 00 03 06 00 01 00 FE 00 41 AC 78 01 10 01 79 00 03 50 2D短地址32亮度0.7s调到254,色温调到6500K33 01 10 01 81 00 03 06 00 01 00 FE 00 41 28 51 01 10 01 81 00 03 D1 DC短地址33亮度0.7s调到254,色温调到6500K34 01 10 01 89 00 03 06 00 01 00 FE 00 41 A9 BB 01 10 01 89 00 03 50 1E短地址34亮度0.7s调到254,色温调到6500K35 01 10 01 91 00 03 06 00 01 00 FE 00 41 29 C4 01 10 01 91 00 03 D0 19短地址35亮度0.7s调到254,色温调到6500K36 01 10 01 99 00 03 06 00 01 00 FE 00 41 A8 2E 01 10 01 99 00 03 51 DB短地址36亮度0.7s调到254,色温调到6500K37 01 10 01 A1 00 03 06 00 01 00 FE 00 41 29 3B 01 10 01 A1 00 03 D0 16短地址37亮度0.7s调到254,色温调到6500K38 01 10 01 A9 00 03 06 00 01 00 FE 00 41 A8 D1 01 10 01 A9 00 03 51 D4短地址38亮度0.7s调到254,色温调到6500K39 01 10 01 B1 00 03 06 00 01 00 FE 00 41 28 AE 01 10 01 B1 00 03 D1 D3短地址39亮度0.7s调到254,色温调到6500K40 01 10 01 B9 00 03 06 00 01 00 FE 00 41 A9 44 01 10 01 B9 00 03 50 11短地址40亮度0.7s调到254,色温调到6500K41 01 10 01 C1 00 03 06 00 01 00 FE 00 41 2A 85 01 10 01 C1 00 03 D0 08短地址41亮度0.7s调到254,色温调到6500K42 01 10 01 C9 00 03 06 00 01 00 FE 00 41 AB 6F 01 10 01 C9 00 03 51 CA短地址42亮度0.7s调到254,色温调到6500K43 01 10 01 D1 00 03 06 00 01 00 FE 00 41 2B 10 01 10 01 D1 00 03 D1 CD短地址43亮度0.7s调到254,色温调到6500K44 01 10 01 D9 00 03 06 00 01 00 FE 00 41 AA FA 01 10 01 D9 00 03 50 0F短地址44亮度0.7s调到254,色温调到6500K45 01 10 01 E1 00 03 06 00 01 00 FE 00 41 2B EF 01 10 01 E1 00 03 D1 C2短地址45亮度0.7s调到254,色温调到6500K46 01 10 01 E9 00 03 06 00 01 00 FE 00 41 AA 05 01 10 01 E9 00 03 50 00短地址46亮度0.7s调到254,色温调到6500K47 01 10 01 F1 00 03 06 00 01 00 FE 00 41 2A 7A 01 10 01 F1 00 03 D0 07短地址47亮度0.7s调到254,色温调到6500K48 01 10 01 F9 00 03 06 00 01 00 FE 00 41 AB 90 01 10 01 F9 00 03 51 C5短地址48亮度0.7s调到254,色温调到6500K49 01 10 02 01 00 03 06 00 01 00 FE 00 41 20 FD 01 10 02 01 00 03 D0 70短地址49亮度0.7s调到254,色温调到6500K50 01 10 02 09 00 03 06 00 01 00 FE 00 41 A1 17 01 10 02 09 00 03 51 B2短地址50亮度0.7s调到254,色温调到6500K51 01 10 02 11 00 03 06 00 01 00 FE 00 41 21 68 01 10 02 11 00 03 D1 B5短地址51亮度0.7s调到254,色温调到6500K52 01 10 02 19 00 03 06 00 01 00 FE 00 41 A0 82 01 10 02 19 00 03 50 77短地址52亮度0.7s调到254,色温调到6500K53 01 10 02 21 00 03 06 00 01 00 FE 00 41 21 97 01 10 02 21 00 03 D1 BA短地址53亮度0.7s调到254,色温调到6500K54 01 10 02 29 00 03 06 00 01 00 FE 00 41 A0 7D 01 10 02 29 00 03 50 78短地址54亮度0.7s调到254,色温调到6500K55 01 10 02 31 00 03 06 00 01 00 FE 00 41 20 02 01 10 02 31 00 03 D0 7F短地址55亮度0.7s调到254,色温调到6500K56 01 10 02 39 00 03 06 00 01 00 FE 00 41 A1 E8 01 10 02 39 00 03 51 BD短地址56亮度0.7s调到254,色温调到6500K57 01 10 02 41 00 03 06 00 01 00 FE 00 41 22 29 01 10 02 41 00 03 D1 A4短地址57亮度0.7s调到254,色温调到6500K58 01 10 02 49 00 03 06 00 01 00 FE 00 41 A3 C3 01 10 02 49 00 03 50 66短地址58亮度0.7s调到254,色温调到6500K59 01 10 02 51 00 03 06 00 01 00 FE 00 41 23 BC 01 10 02 51 00 03 D0 61短地址59亮度0.7s调到254,色温调到6500K60 01 10 02 59 00 03 06 00 01 00 FE 00 41 A2 56 01 10 02 59 00 03 51 A3短地址60亮度0.7s调到254,色温调到6500K61 01 10 02 61 00 03 06 00 01 00 FE 00 41 23 43 01 10 02 61 00 03 D0 6E短地址61亮度0.7s调到254,色温调到6500K62 01 10 02 69 00 03 06 00 01 00 FE 00 41 A2 A9 01 10 02 69 00 03 51 AC短地址62亮度0.7s调到254,色温调到6500K63 01 10 02 71 00 03 06 00 01 00 FE 00 41 22 D6 01 10 02 71 00 03 D1 AB短地址63亮度0.7s调到254,色温调到6500K64 01 10 02 79 00 03 06 00 01 00 FE 00 41 A3 3C 01 10 02 79 00 03 50 69短地址64亮度0.7s调到254,色温调到6500K 5.2写短地址色温寄存器指令(06H功能码) 序号指令应答注释101 06 00 83 00 41 B8 1201 06 00 83 00 41 B8 12短地址1色温调到6500K201 06 00 8B 00 41 39 D001 06 00 8B 00 41 39 D0短地址2色温调到6500K301 06 00 93 00 41 B9 D701 06 00 93 00 41 B9 D7短地址3色温调到6500K401 06 00 9B 00 41 38 1501 06 00 9B 00 41 38 15短地址4色温调到6500K501 06 00 A3 00 41 B9 D801 06 00 A3 00 41 B9 D8短地址5色温调到6500K601 06 00 AB 00 41 38 1A01 06 00 AB 00 41 38 1A短地址6色温调到6500K701 06 00 B3 00 41 B8 1D01 06 00 B3 00 41 B8 1D短地址7色温调到6500K801 06 00 BB 00 41 39 DF01 06 00 BB 00 41 39 DF短地址8色温调到6500K901 06 00 C3 00 41 B9 C601 06 00 C3 00 41 B9 C6短地址9色温调到6500K1001 06 00 CB 00 41 38 0401 06 00 CB 00 41 38 04短地址10色温调到6500K1101 06 00 D3 00 41 B8 0301 06 00 D3 00 41 B8 03短地址11色温调到6500K1201 06 00 DB 00 41 39 C101 06 00 DB 00 41 39 C1短地址12色温调到6500K1301 06 00 E3 00 41 B8 0C01 06 00 E3 00 41 B8 0C短地址13色温调到6500K1401 06 00 EB 00 41 39 CE01 06 00 EB 00 41 39 CE短地址14色温调到6500K1501 06 00 F3 00 41 B9 C901 06 00 F3 00 41 B9 C9短地址15色温调到6500K1601 06 00 FB 00 41 38 0B01 06 00 FB 00 41 38 0B短地址16色温调到6500K1701 06 01 03 00 41 B8 0601 06 01 03 00 41 B8 06短地址17色温调到6500K1801 06 01 0B 00 41 39 C401 06 01 0B 00 41 39 C4短地址18色温调到6500K1901 06 01 13 00 41 B9 C301 06 01 13 00 41 B9 C3短地址19色温调到6500K2001 06 01 1B 00 41 38 0101 06 01 1B 00 41 38 01短地址20色温调到6500K2101 06 01 23 00 41 B9 CC01 06 01 23 00 41 B9 CC短地址21色温调到6500K2201 06 01 2B 00 41 38 0E01 06 01 2B 00 41 38 0E短地址22色温调到6500K2301 06 01 33 00 41 B8 0901 06 01 33 00 41 B8 09短地址23色温调到6500K2401 06 01 3B 00 41 39 CB01 06 01 3B 00 41 39 CB短地址24色温调到6500K2501 06 01 43 00 41 B9 D201 06 01 43 00 41 B9 D2短地址25色温调到6500K2601 06 01 4B 00 41 38 1001 06 01 4B 00 41 38 10短地址26色温调到6500K2701 06 01 53 00 41 B8 1701 06 01 53 00 41 B8 17短地址27色温调到6500K2801 06 01 5B 00 41 39 D501 06 01 5B 00 41 39 D5短地址28色温调到6500K2901 06 01 63 00 41 B8 1801 06 01 63 00 41 B8 18短地址29色温调到6500K3001 06 01 6B 00 41 39 DA01 06 01 6B 00 41 39 DA短地址30色温调到6500K3101 06 01 73 00 41 B9 DD01 06 01 73 00 41 B9 DD短地址31色温调到6500K3201 06 01 7B 00 41 38 1F01 06 01 7B 00 41 38 1F短地址32色温调到6500K3301 06 01 83 00 41 B9 EE01 06 01 83 00 41 B9 EE短地址33色温调到6500K3401 06 01 8B 00 41 38 2C01 06 01 8B 00 41 38 2C短地址34色温调到6500K3501 06 01 93 00 41 B8 2B01 06 01 93 00 41 B8 2B短地址35色温调到6500K3601 06 01 9B 00 41 39 E901 06 01 9B 00 41 39 E9短地址36色温调到6500K3701 06 01 A3 00 41 B8 2401 06 01 A3 00 41 B8 24短地址37色温调到6500K3801 06 01 AB 00 41 39 E601 06 01 AB 00 41 39 E6短地址38色温调到6500K3901 06 01 B3 00 41 B9 E101 06 01 B3 00 41 B9 E1短地址39色温调到6500K4001 06 01 BB 00 41 38 2301 06 01 BB 00 41 38 23短地址40色温调到6500K4101 06 01 C3 00 41 B8 3A01 06 01 C3 00 41 B8 3A短地址41色温调到6500K4201 06 01 CB 00 41 39 F801 06 01 CB 00 41 39 F8短地址42色温调到6500K4301 06 01 D3 00 41 B9 FF01 06 01 D3 00 41 B9 FF短地址43色温调到6500K4401 06 01 DB 00 41 38 3D01 06 01 DB 00 41 38 3D短地址44色温调到6500K4501 06 01 E3 00 41 B9 F001 06 01 E3 00 41 B9 F0短地址45色温调到6500K4601 06 01 EB 00 41 38 3201 06 01 EB 00 41 38 32短地址46色温调到6500K4701 06 01 F3 00 41 B8 3501 06 01 F3 00 41 B8 35短地址47色温调到6500K4801 06 01 FB 00 41 39 F701 06 01 FB 00 41 39 F7短地址48色温调到6500K4901 06 02 03 00 41 B8 4201 06 02 03 00 41 B8 42短地址49色温调到6500K5001 06 02 0B 00 41 39 8001 06 02 0B 00 41 39 80短地址50色温调到6500K5101 06 02 13 00 41 B9 8701 06 02 13 00 41 B9 87短地址51色温调到6500K5201 06 02 1B 00 41 38 4501 06 02 1B 00 41 38 45短地址52色温调到6500K5301 06 02 23 00 41 B9 8801 06 02 23 00 41 B9 88短地址53色温调到6500K5401 06 02 2B 00 41 38 4A01 06 02 2B 00 41 38 4A短地址54色温调到6500K5501 06 02 33 00 41 B8 4D01 06 02 33 00 41 B8 4D短地址55色温调到6500K5601 06 02 3B 00 41 39 8F01 06 02 3B 00 41 39 8F短地址56色温调到6500K5701 06 02 43 00 41 B9 9601 06 02 43 00 41 B9 96短地址57色温调到6500K5801 06 02 4B 00 41 38 5401 06 02 4B 00 41 38 54短地址58色温调到6500K5901 06 02 53 00 41 B8 5301 06 02 53 00 41 B8 53短地址59色温调到6500K6001 06 02 5B 00 41 39 9101 06 02 5B 00 41 39 91短地址60色温调到6500K6101 06 02 63 00 41 B8 5C01 06 02 63 00 41 B8 5C短地址61色温调到6500K6201 06 02 6B 00 41 39 9E01 06 02 6B 00 41 39 9E短地址62色温调到6500K6301 06 02 73 00 41 B9 9901 06 02 73 00 41 B9 99短地址63色温调到6500K6401 06 02 7B 00 41 38 5B01 06 02 7B 00 41 38 5B短地址64色温调到6500K 5.3 读短地址亮度色温寄存器状态(03H功能码) 序号指令反馈状态注释101 03 00 82 00 02 64 2301 03 04 00 FE 00 41 5B F3短地址1亮度254,色温6500K201 03 00 8A 00 02 E5 E101 03 04 00 FE 00 41 5B F3短地址2亮度254,色温6500K301 03 00 92 00 02 65 E601 03 04 00 FE 00 41 5B F3短地址3亮度254,色温6500K401 03 00 9A 00 02 E4 2401 03 04 00 FE 00 41 5B F3短地址4亮度254,色温6500K501 03 00 A2 00 02 65 E901 03 04 00 FE 00 41 5B F3短地址5亮度254,色温6500K601 03 00 AA 00 02 E4 2B01 03 04 00 FE 00 41 5B F3短地址6亮度254,色温6500K701 03 00 B2 00 02 64 2C01 03 04 00 FE 00 41 5B F3短地址7亮度254,色温6500K801 03 00 BA 00 02 E5 EE01 03 04 00 FE 00 41 5B F3短地址8亮度254,色温6500K901 03 00 C2 00 02 65 F701 03 04 00 FE 00 41 5B F3短地址9亮度254,色温6500K1001 03 00 CA 00 02 E4 3501 03 04 00 FE 00 41 5B F3短地址10亮度254,色温6500K1101 03 00 D2 00 02 64 3201 03 04 00 FE 00 41 5B F3短地址11亮度254,色温6500K1201 03 00 DA 00 02 E5 F001 03 04 00 FE 00 41 5B F3短地址12亮度254,色温6500K1301 03 00 E2 00 02 64 3D01 03 04 00 FE 00 41 5B F3短地址13亮度254,色温6500K1401 03 00 EA 00 02 E5 FF01 03 04 00 FE 00 41 5B F3短地址14亮度254,色温6500K1501 03 00 F2 00 02 65 F801 03 04 00 FE 00 41 5B F3短地址15亮度254,色温6500K1601 03 00 FA 00 02 E4 3A01 03 04 00 FE 00 41 5B F3短地址16亮度254,色温6500K1701 03 01 02 00 02 64 3701 03 04 00 FE 00 41 5B F3短地址17亮度254,色温6500K1801 03 01 0A 00 02 E5 F501 03 04 00 FE 00 41 5B F3短地址18亮度254,色温6500K1901 03 01 12 00 02 65 F201 03 04 00 FE 00 41 5B F3短地址19亮度254,色温6500K2001 03 01 1A 00 02 E4 3001 03 04 00 FE 00 41 5B F3短地址20亮度254,色温6500K2101 03 01 22 00 02 65 FD01 03 04 00 FE 00 41 5B F3短地址21亮度254,色温6500K2201 03 01 2A 00 02 E4 3F01 03 04 00 FE 00 41 5B F3短地址22亮度254,色温6500K2301 03 01 32 00 02 64 3801 03 04 00 FE 00 41 5B F3短地址23亮度254,色温6500K2401 03 01 3A 00 02 E5 FA01 03 04 00 FE 00 41 5B F3短地址24亮度254,色温6500K2501 03 01 42 00 02 65 E301 03 04 00 FE 00 41 5B F3短地址25亮度254,色温6500K2601 03 01 4A 00 02 E4 2101 03 04 00 FE 00 41 5B F3短地址26亮度254,色温6500K2701 03 01 52 00 02 64 2601 03 04 00 FE 00 41 5B F3短地址27亮度254,色温6500K2801 03 01 5A 00 02 E5 E401 03 04 00 FE 00 41 5B F3短地址28亮度254,色温6500K2901 03 01 62 00 02 64 2901 03 04 00 FE 00 41 5B F3短地址29亮度254,色温6500K3001 03 01 6A 00 02 E5 EB01 03 04 00 FE 00 41 5B F3短地址30亮度254,色温6500K3101 03 01 72 00 02 65 EC01 03 04 00 FE 00 41 5B F3短地址31亮度254,色温6500K3201 03 01 7A 00 02 E4 2E01 03 04 00 FE 00 41 5B F3短地址32亮度254,色温6500K3301 03 01 82 00 02 65 DF01 03 04 00 FE 00 41 5B F3短地址33亮度254,色温6500K3401 03 01 8A 00 02 E4 1D01 03 04 00 FE 00 41 5B F3短地址34亮度254,色温6500K3501 03 01 92 00 02 64 1A01 03 04 00 FE 00 41 5B F3短地址35亮度254,色温6500K3601 03 01 9A 00 02 E5 D801 03 04 00 FE 00 41 5B F3短地址36亮度254,色温6500K3701 03 01 A2 00 02 64 1501 03 04 00 FE 00 41 5B F3短地址37亮度254,色温6500K3801 03 01 AA 00 02 E5 D701 03 04 00 FE 00 41 5B F3短地址38亮度254,色温6500K3901 03 01 B2 00 02 65 D001 03 04 00 FE 00 41 5B F3短地址39亮度254,色温6500K4001 03 01 BA 00 02 E4 1201 03 04 00 FE 00 41 5B F3短地址40亮度254,色温6500K4101 03 01 C2 00 02 64 0B01 03 04 00 FE 00 41 5B F3短地址41亮度254,色温6500K4201 03 01 CA 00 02 E5 C901 03 04 00 FE 00 41 5B F3短地址42亮度254,色温6500K4301 03 01 D2 00 02 65 CE01 03 04 00 FE 00 41 5B F3短地址43亮度254,色温6500K4401 03 01 DA 00 02 E4 0C01 03 04 00 FE 00 41 5B F3短地址44亮度254,色温6500K4501 03 01 E2 00 02 65 C101 03 04 00 FE 00 41 5B F3短地址45亮度254,色温6500K4601 03 01 EA 00 02 E4 0301 03 04 00 FE 00 41 5B F3短地址46亮度254,色温6500K4701 03 01 F2 00 02 64 0401 03 04 00 FE 00 41 5B F3短地址47亮度254,色温6500K4801 03 01 FA 00 02 E5 C601 03 04 00 FE 00 41 5B F3短地址48亮度254,色温6500K4901 03 02 02 00 02 64 7301 03 04 00 FE 00 41 5B F3短地址49亮度254,色温6500K5001 03 02 0A 00 02 E5 B101 03 04 00 FE 00 41 5B F3短地址50亮度254,色温6500K5101 03 02 12 00 02 65 B601 03 04 00 FE 00 41 5B F3短地址51亮度254,色温6500K5201 03 02 1A 00 02 E4 7401 03 04 00 FE 00 41 5B F3短地址52亮度254,色温6500K5301 03 02 22 00 02 65 B901 03 04 00 FE 00 41 5B F3短地址53亮度254,色温6500K5401 03 02 2A 00 02 E4 7B01 03 04 00 FE 00 41 5B F3短地址54亮度254,色温6500K5501 03 02 32 00 02 64 7C01 03 04 00 FE 00 41 5B F3短地址55亮度254,色温6500K5601 03 02 3A 00 02 E5 BE01 03 04 00 FE 00 41 5B F3短地址56亮度254,色温6500K5701 03 02 42 00 02 65 A701 03 04 00 FE 00 41 5B F3短地址57亮度254,色温6500K5801 03 02 4A 00 02 E4 6501 03 04 00 FE 00 41 5B F3短地址58亮度254,色温6500K5901 03 02 52 00 02 64 6201 03 04 00 FE 00 41 5B F3短地址59亮度254,色温6500K6001 03 02 5A 00 02 E5 A001 03 04 00 FE 00 41 5B F3短地址60亮度254,色温6500K6101 03 02 62 00 02 64 6D01 03 04 00 FE 00 41 5B F3短地址61亮度254,色温6500K6201 03 02 6A 00 02 E5 AF01 03 04 00 FE 00 41 5B F3短地址62亮度254,色温6500K6301 03 02 72 00 02 65 A801 03 04 00 FE 00 41 5B F3短地址63亮度254,色温6500K6401 03 02 7A 00 02 E4 6A01 03 04 00 FE 00 41 5B F3短地址64亮度254,色温6500K 在线状态寄存器地址表 DALI的在线状态同步功能主要通过以下两种方式实现: (1)即时状态同步‌在搜索或配置DALI驱动时,系统会立即进行一次在线状态同步。这一过程中,DALI网关会发送状态查询命令到指定的DALI设备(即驱动),并将接收到的设备在线状态同步至相应的寄存器地址。这种方式确保了当设备被添加或配置时,其在线状态能够被即时更新和记录。(2)周期性状态扫描‌系统还会以每10分钟为一个周期,自动扫描64个短地址范围内的DALI设备的在线状态。在这一周期内,DALI网关会依次向这些地址发送状态查询命令,并收集每个设备的回复。随后,网关会将收集到的在线状态信息同步至相应的寄存器地址。这种方式确保了系统能够定期监控和更新所有DALI设备的在线状态,从而维护一个准确的在线状态表‌。‌在线状态表的维护‌值得注意的是,DALI协议本身并没有定义特定的状态码来表示设备的在线状态。相反,这一功能是由DALI网关自身来实现的。网关会维护一张在线状态表,用于记录和管理每个DALI设备的在线状态。这张表会根据即时状态同步和周期性状态扫描的结果进行更新,以确保其准确性和实时性‌ 寄存器地址:0281H (在线状态1-16)Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8驱动16状态驱动15状态驱动14状态驱动13状态驱动12状态驱动11状态驱动10状态驱动9状态Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0驱动8状态驱动7状态驱动6状态驱动5状态驱动4状态驱动3状态驱动2状态驱动1状态寄存器地址:0282H (在线状态17-32)Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8驱动32状态驱动31状态驱动30状态驱动29状态驱动28状态驱动27状态驱动26状态驱动25状态Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0驱动24状态驱动23状态驱动22状态驱动21状态驱动20状态驱动19状态驱动18状态驱动17状态寄存器地址:0283H (在线状态33-48)Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8驱动48状态驱动47状态驱动46状态驱动45状态驱动44状态驱动43状态驱动42状态驱动41状态Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0驱动40状态驱动39状态驱动38状态驱动37状态驱动36状态驱动35状态驱动34状态驱动33状态寄存器地址:0284H (在线状态49-64)Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8驱动64状态驱动63状态驱动62状态驱动61状态驱动60状态驱动59状态驱动58状态驱动57状态Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0驱动56状态驱动55状态驱动54状态驱动53状态驱动52状态驱动51状态驱动50状态驱动49状态0 为离线,1 为在线 读在线状态寄存器状态(功能码03H) 功能指令反馈状态注释驱动1-64的在线状态01 03 02 81 00 04 15 99 01 03 08 00 00 00 00 00 00 00 00 95 D7\ 故障状态寄存器地址表 描述:DALI协议中并没有一个特定的码直接代表灯具故障状态,但协议支持查询灯具状态的功能,包括可能的故障情况‌。DALI协议是一种数字化的可寻址照明控制协议,它允许对照明设备进行配置和状态查询。通过DALI协议,系统可以发送命令来读取灯具或驱动器的状态信息,这些状态信息可能包括灯具的当前亮度、色温、功率水平等,同时也可能包括灯具是否处于故障状态。然而,DALI协议本身并没有定义一个专门的码来直接表示灯具故障。相反,它提供了一种机制,使得系统可以通过发送状态查询命令并接收响应来判断灯具的状态。如果灯具没有按预期响应命令,或者响应的数据表明其工作状态异常(例如,输出光照远低于设定值,或者驱动器报告内部错误等),则系统可以判断灯具可能存在故障。因此,在DALI系统中判断灯具故障状态通常是通过综合分析灯具的响应数据和其他相关信息来实现的,而不是依赖于一个特定的故障码。‌ 寄存器地址:0285H (故障状态1-16)Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8驱动16状态驱动15状态驱动14状态驱动13状态驱动12状态驱动11状态驱动10状态驱动9状态Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0驱动8状态驱动7状态驱动6状态驱动5状态驱动4状态驱动3状态驱动2状态驱动1状态寄存器地址:0286H (故障状态17-32)Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8驱动32状态驱动31状态驱动30状态驱动29状态驱动28状态驱动27状态驱动26状态驱动25状态Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0驱动24状态驱动23状态驱动22状态驱动21状态驱动20状态驱动19状态驱动18状态驱动17状态寄存器地址:0287H (故障状态33-48)Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8驱动48状态驱动47状态驱动46状态驱动45状态驱动44状态驱动43状态驱动42状态驱动41状态Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0驱动40状态驱动39状态驱动38状态驱动37状态驱动36状态驱动35状态驱动34状态驱动33状态寄存器地址:0288H (故障状态49-64)Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8驱动64状态驱动63状态驱动62状态驱动61状态驱动60状态驱动59状态驱动58状态驱动57状态Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0驱动56状态驱动55状态驱动54状态驱动53状态驱动52状态驱动51状态驱动50状态驱动49状态0 为正常,1 为故障 读故障状态寄存器状态(功能码03H) 功能指令反馈状态注释驱动1-64的故障状态01 03 02 85 00 04 54 58 01 03 08 00 00 00 00 00 00 00 00 95 D7\ 8.场景调用寄存器地址表注:数据高位为FF时不下发渐变时间,只调用场景。 场景号场景寄存器数据高位(渐变时间),详细说明见调光渐变时间定义数据低位(场景号)1028AH00H   (立即)01H2028AH01H   (0.7s)02H3028AH02H   (1s)03H4028AH03H   (1.4s)04H5028AH04H   (2s)05H6028AH05H   (2.8s)06H7028AH06H   (4s)07H8028AH07H   (5.7s)08H9028AH08H   (8s)09H10028AH09H   (11.3s)0AH11028AH0AH   (16s)0BH12028AH0BH   (22.6s)0CH13028AH0CH   (32s)0DH14028AH0DH   (45.3)0EH15028AH0EH   (64s)0FH16028AH0FH   (90.5s)10H 8.1写场景调用(06H功能码) 序号指令应答注释1 01 06 02 8A 00 01 68 58 01 06 02 8A 00 01 68 58调用场景1渐变时间立即2 01 06 02 8A 01 02 29 C9 01 06 02 8A 01 02 29 C9调用场景2渐变时间0.7s3 01 06 02 8A 02 03 E8 F9 01 06 02 8A 02 03 E8 F9调用场景3渐变时间1s4 01 06 02 8A 03 04 A8 AB 01 06 02 8A 03 04 A8 AB调用场景4渐变时间1.4s5 01 06 02 8A 04 05 6B 5B 01 06 02 8A 04 05 6B 5B调用场景5渐变时间2s6 01 06 02 8A 05 06 2A CA 01 06 02 8A 05 06 2A CA调用场景6渐变时间2.8s7 01 06 02 8A 06 07 EB FA 01 06 02 8A 06 07 EB FA调用场景7渐变时间4s8 01 06 02 8A 07 08 AA 6E 01 06 02 8A 07 08 AA 6E调用场景8渐变时间5.7s9 01 06 02 8A 08 09 6E 5E 01 06 02 8A 08 09 6E 5E调用场景9渐变时间8s10 01 06 02 8A 09 0A 2F CF 01 06 02 8A 09 0A 2F CF调用场景10渐变时间11.3s11 01 06 02 8A 0A 0B EE FF 01 06 02 8A 0A 0B EE FF调用场景11渐变时间16s12 01 06 02 8A 0B 0C AE AD 01 06 02 8A 0B 0C AE AD调用场景12渐变时间22.6s13 01 06 02 8A 0C 0D 6D 5D 01 06 02 8A 0C 0D 6D 5D调用场景13渐变时间32s14 01 06 02 8A 0D 0E 2C CC 01 06 02 8A 0D 0E 2C CC调用场景14渐变时间45.315 01 06 02 8A 0E 0F ED FC 01 06 02 8A 0E 0F ED FC调用场景15渐变时间64s16 01 06 02 8A 0F 10 AD A4 01 06 02 8A 0F 10 AD A4调用场景16渐变时间90.5s 注:调用场景时,渐变时间下发时,会把当前场景下的短地址的渐变时间改变。渐变时间是存储在驱动里面的。如果渐变时间为FF(数据高位),调用场景则不下发渐变时间,只触发场景。 产品购买:https://item.taobao.com/item.htm?ft=t&id=844733977694 --- ### 654. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品简介 本产品是一款红外空调控制模块,能够在多种控制方式下实现对红外空调的控制,包括WIFI网络、RS485总线以及苹果家庭控制等。它适用于各种智能系统,如总线智能系统和网络智能系统,特别适合苹果用户。广泛应用于家庭、办公楼、酒店、医院、学校、车站、博物馆、会展中心、工厂、农业等场所,满足不同用户的红外空调智能控制需求。 产品特点 大功率红外发射:3W大功率红外发射,遥控距离可达3-15米。 苹果HomeKit直连:支持Siri控制,方便快捷。 总线控制:可直接连接到智能系统中。 Modbus协议支持:兼容中央空调网关协议,便于集成。 Wifi直连平台:实现对红外空调的批量管理。 APP控制:无需修改APP,即可直接添加使用。 统一协议控制:一套协议即可控制所有红外空调。 外观设计:全磨砂红外透光外壳,美观大方。 广泛适配:支持95%的红外空调,包括大金、东芝、日立、三菱等品牌。 TYPE-C接口:通用接口,通电即可使用。 网页控制:通过网页即可控制空调。 分组群控:支持简单协议地址通配符功能,实现分组控制。 产品参数 产品型号:HKTIR02-C 产品重量:50g 工作温度:-10℃-50℃ 外观尺寸:直径82mm,高29mm 输入电压:DC 5-24V 通讯方式:网络通信(TCP客户端)、WIFI、RS485 总线波特率:9600 8N1 Modbus协议支持:是 支持的空调品牌: 支持的空调品牌,如美的、格力、海尔、三星、松下等,以及更多品牌的支持信息。 WIFI配网方法 模块配网方法1: 1.通过RS485总线发送ASC编码指令: WiFi广播名(SSID):HUAWEI WiFi密码:123456789 2.发送WiFi广播名(SSID): 指令格式:HKTWFSSID:<字符数量>(16进制表示)<SSID> 示例: HKTWFSSID:06HUAWEI 解释: HKTWFSSID:指令头,表示要设置WiFi广播名。 06:表示后面跟着的字符数量,06是16进制,表示6个字符(HUAWEI的长度)。 HUAWEI:实际的WiFi广播名。 3.模块回复: 回复格式:HKTWFSSID:<字符数量>(16进制表示)<SSID> head:HKTWFSSID realData:<SSID> 示例: HKTWFSSID:06HUAWEI head:HKTWFSSID realData:HUAWEI 解释: HKTWFSSID:指令头,表示回复的是WiFi广播名设置。 06:表示后面跟着的字符数量,06是16进制,表示6个字符。 HUAWEI:实际的WiFi广播名。 head:表示指令头。 realData:表示实际的数据内容。 4.发送WiFi密码: 指令格式:HKTWFPSD:<字符数量>(16进制表示)<密码> 示例: HKTWFPSD:09123456789 解释: HKTWFPSD:指令头,表示要设置WiFi密码。 09:表示后面跟着的字符数量,09是16进制,表示9个字符(123456789的长度)。 123456789:实际的WiFi密码。 5.模块回复: 回复格式:HKTWFPSD:<字符数量>(16进制表示)<密码> head:HKTWFPSD realData:<密码> 示例: HKTWFPSD:09 123456789 head:HKTWFPSD realData:123456789 解释: HKTWFPSD:指令头,表示回复的是WiFi密码设置。 09:表示后面跟着的字符数量,09是16进制,表示9个字符。 123456789:实际的WiFi密码。 head:表示指令头。 realData:表示实际的数据内容。 6.完成配置: 操作:重新通断电模块。 结果:WiFi连接成功后,模块会输出其IP地址。 模块配网方法2: 1、手机连入局域网WIFI,同时通过485串口助手,选择ASCII编码发送以下指令HKTREST:011,进入配网模式指示灯熄灭。2、搜索关注公众号安信可科技,点击微信配网 3、输入当前WiFi的密码,提示配网成功,配置成功恢复到1s频率或者1s灭 5s亮注:苹果手机可能会出现微信配网提示失败的情况,请使用安卓手机进行配网 指示灯含义 A、上电指示灯1s的频率闪,连接服务器成功,1s灭,5s亮B、进入配网模式指示灯熄灭。配置成功恢复到1s频率或者1s灭 5s亮。C、红外发射的时候闪烁。D、红外学习识别的时候常亮,学习识别完毕熄灭。 WIFI联网控制: 确保电脑和模块在同一局域网: 操作:确保您的电脑和空调控制模块连接到同一个局域网内。 目的:确保电脑能够与模块进行通信。 连接USB转485设备: 操作:使用USB转485转换器连接电脑和模块。 设置:在串口调试助手中设置波特率为9600,数据位为8,校验位为None,停止位为1。 目的:确保电脑能够通过串口与模块通信。 发送配置指令: 配置IP地址:指令格式:HKTIP:<字符数量>(16进制表示)<IP地址>示例:HKTIP:0D192.168.1.200 解释: HKTIP:指令头,表示要设置IP地址。 0D:表示后面跟着的字符数量,0D是16进制,表示13个字符(192.168.1.200的长度)。 192.168.1.200:实际的IP地址。 配置端口号:指令格式:HKTPORT:<字符数量>(16进制表示)<端口号>示例:HKTPORT:044198 解释: HKTPORT:指令头,表示要设置端口号。 04:表示后面跟着的字符数量,04是16进制,表示4个字符(4198的长度)。 4198:实际的端口号。 配置注册包: 指令格式:HKTREG:<字符数量>(16进制表示)<注册包> 示例:HKTREG:0811223344 解释: HKTREG:指令头,表示要设置注册包。 08:表示后面跟着的字符数量,08是16进制,表示8个字符(11223344的长度)。 11223344:实际的注册包内容。 完成配置: 操作:发送上述指令后,模块会连接到指定的IP地址和端口。 验证:可以通过串口调试助手查看模块的连接状态,确保连接成功。 空调匹配方法 后台配置页面: 访问页面:模块配网成功后,路由器会分配一个IP地址,打开该IP地址对应的网址(确保电脑与模块处于同一网络下),进入后台配置页面。 设置空调型号: 选择协议:在“协议”中选择家中空调的品牌(部分品牌可能有多种遥控码,如不成功可尝试其他协议)。 发送红外:点击“发送红外”,查看是否可以控制空调。 协议识别:如无法控制,可进入“协议识别”页面,按照提示进行操作,让模块自动识别空调协议。 空调型号协议参考: 提供了常见品牌的空调型号及其对应的协议,方便用户快速找到适配的协议。 5. 协议说明 控制协议格式: 发送指令:5字节地址+ BB 功能码+开关+模式+温度+风速+摆风+0F 结尾。 协议示例 1. 控制协议示例 示例: 1A 23 80 55 11 BB 01 02 18 02 00 0F 分解说明: 字段数据值含义地址1A 23 80 55 115字节的设备地址,用于标识具体的空调控制模块。功能码BB固定功能码,表示这是一个控制指令。开关状态01开关功能键,01表示开机,00表示关机。模式02空调模式,02表示制热模式。温度18温度设置,十六进制表示,18转换为十进制为24度。风速02风速设置,02表示中速。摆风00摆风设置,00表示停止摆风。结尾0F固定结尾,表示指令结束。 2. 查询协议示例 发送查询指令: 5字节地址 + 86 86 86 + 0F 示例: 1A 23 80 55 11 86 86 86 0F 分解说明: 字段数据值含义地址1A 23 80 55 115字节的设备地址,用于标识具体的空调控制模块。查询码86 86 86固定查询码,表示这是一个查询指令。结尾0F固定结尾,表示指令结束。 查询反馈示例: 1A 23 80 55 11 CC 01 02 18 02 00 0F 分解说明: 字段数据值含义地址1A 23 80 55 115字节的设备地址,用于标识具体的空调控制模块。功能码CC查询反馈功能码,表示这是一个查询反馈。开关状态01开关状态,01表示空调处于开机状态。模式02空调模式,02表示制热模式。温度18温度设置,十六进制表示,18转换为十进制为24度。风速02风速设置,02表示中速。摆风00摆风状态,00表示停止摆风。结尾0F固定结尾,表示指令结束。 恢复初始配置: 发送指令:HKTREST:011 (ASCII码发送),恢复模块的初始配置。 擦除存储区域: 发送指令:HKTERASE:011 (ASCII码发送),擦除模块的存储区域。 MODBUS协议 地址:01 广播地址:FF 报文格式:HEX 默认波特率:9600 8 N 1 CRC16:低字节在前 读寄存器:03/04 写单个寄存器:06 写多个寄存器:10 苹果HomeKit控制 添加模块:模块配网后,打开“家庭”应用,点击“添加配件”,选择“更多选项”,输入模块外壳上的代码,即可添加并控制模块。 --- ### 655. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、主机配置与管理 主机设置 无线总线 情景模式 情景控制是指将多个指令一次性执行而无需独立点击 定时控制 定时控制是支持选择一个时间后,达到时间可以自动执行某个操作,支持循环和周定时,并可以通过其他方式开关定时器 急速场景 在急速场景点击新增,选择场景生效的区域就可以给对应区域快速生成急速场景控制指令。 场景编号将自动增加。 二、主机添加 主机信息添加:需添加设备ID(主机机器码,大写)。 主机连接服务器认证信息修改:服务器地址为IP或域名,需确保网络模块是3025固件。 三、设备添加与管理 设备类型支持与添加 X160设备 16路继电器模组 1.简单控制可以单独控制X160,并查询状态。 2.组合控制可以一条指令开启多个回路,并可以加入主机。 3.时序协议可以时序控制160,楼梯协议可以自定义延时和时间间隔控制X160。 4.可以通过该页面给160改地址。 5.可以通过该页面配置输入输出继电器对应关系,配置可以保存到服务器。 6.可以通过该页面配置160的自定义反馈协议,或者驱动主机协议。 7.可以通过该页面配置160的上电初始状态。 8.可以通过该页面快速的给16个回路取名字,并一次性下载到主机。 9.可以通过该页面监控调试主机收发数据内容。 Q06 一代86开关面板 1.简单控制可以单独控制Q6,并查询状态。 2.组合控制可以一条指令开启多个回路,并可以加入主机。 3.时序协议可以时序控制Q6,楼梯协议可以自定义延时和时间间隔控制Q6。 4.可以通过该页面给Q6改地址。 5.可以通过该页面配置输入输出继电器对应关系,配置可以保存到服务器。 6.可以通过该页面配置Q6的自定义反馈协议,或者驱动主机协议。 7.可以通过该页面配置Q6的上电初始状态。 8.可以通过该页面快速的给Q6回路取名字,并一次性下载到主机。 9.可以通过该页面监控调试主机收发数据内容。 LS520、DT82 窗帘电机 支持云控制电动窗帘。 将窗帘数据写入主机基础数据,支持开关停、百分比控制和地址修改操作。 支持开关停和百分比控制和地址修改操作 Q06V3.0 二代86开关面板 X160V3.5 二代16路继电器模组 Q08/Q06V4.0 三代86开关面板 点击新增主机设备,选择该类型,支持对Q08人体震动、Q06V4.0震动等配置。 调光模块 a,通过这个控件可以对调光模块,双色温,RGB,以及后续要发布的的RGBW,RGBCW进行调光。 b,通过该控件可以轻松配置调光曲线适配各种灯具。 c,通过该控件可以将调光指令轻松加入主机。    空调AC a.可一键添加中央空调、红外空调,常用指令一键写入主机。 b.可以小度语音控制空调。 MBS09/MBS10人体感应器 可通过私有云快速配置MBS09/MBS10人体传感器。 设备批量添加与配置 位置管理优化:设备批量一次性添加。 选择楼层、区域、房间取名、设备取名后点击添加。 系统自动生成标准地址码,方便极速场景的使用。 设备批量复制:可将当前设备复制到所选择的主机。 四、位置管理 重要作用:明确设备位置,使APP和小度语音能自动识别房间分配。 操作步骤: 选择楼层、区域、房间取名、设备取名后点击添加。 系统自动生成标准地址码,方便极速场景的使用。 后续点击修改,也可以增加设备。 主机用户添加 填写用户电话,选择智能主机,输入邮箱地址,然后输入有效月份 SMRTE P  APP端主机二维码添加, 给你的用户生成二维码后,用户扫描自动获取验证码,输入验证码就可以下载你给他配置好的配置。 PC端连接服务器 注册指令用的是主机用户的,记住,不是主机的,可以单独给PC端添加一个用户,你可以用一个虚拟的11位电话创建用户,注册指令会自动生成。 在参数配置页面,网络连接框内填入云端的地址和端口,在 open set 隐藏菜单填入服务器验证码即可和 智能主机建立连接(如果无法连上,软件关闭后重新打开后即可!)。 IP/域名:www.ckhr.cloud 端口:8090 机器码:20 25 02 26(根据实际填写,这里只是示例) 小度语音控制 登录小度app,搜索 Super Home    绑定输入小度语音用户名和密码,同步后就显示客厅布帘。 你就可以用 小度,小度,打开客厅布帘,控制设备了。 六、其他功能 日志管理 数据日志:记录主机与用户间的所有控制数据,便于深度数据分析,可设置清空规则。 操作日志:记录登录人员的用户名、IP来源、操作内容和使用的浏览器。 预警日志:记录主机按键被触发的记录及发送短信邮件通知的记录。 指令管理 预配指令:可存储经常发送的串口指令,支持excel上传。 可分享常用批处理指令,如快速设置开关的指令。 上传时需按指定格式。 批量配置:调用预配指令,实现快速配置。 在线调试:取代串口调试助手,监控用户主机的串口数据。 用于配置和分析问题。 选择确认后点击确定即可连接成功。 数据发送:发送数据到用户总线网络。 格式为机器码+CDB8B4AB+要发送的内容,完整协议需按特定格式排列。 有无空格助手均可兼容。 批量配置指令编辑:可添加主机批处理数据发送。 包括延时和变量,变量是设备机器码的快捷符号。 小度语音控制 小度账号:自动生成。 设备添加与控制:添加设备后,可通过小度语音控制设备。 隐私协议:在系统管理中可修改隐私协议。 调光模块配置:可通过控件对调光模块、双色温、RGB等进行调光。 空调控件:一键添加中央空调、红外空调,常用指令一键写入主机。 人体存在传感器控件:通过私有云快速配置MBS09/MBS10人体传感器。 小度语言自定义协议转换: 可通过小度语音发送情景模式、电动窗帘、开关的自定义协议。 控制第三方设备,需按特定格式发送自定义数据。 情景模式与定时控制 情景模式:主机资源新增功能,可云端编辑,移植PC端功能。 支持前后拖动移动。 可从主机读出或写入,也可打开开关一键同步到小度语音。 可对情景模式进行编辑、添加、删除、移动。 定时控制:主机资源新增功能,可云端编辑,方便调整定时任务。 急速场景控制: 位置管理优化后,可快速生成对应区域的急速场景控制指令。 在传感器、控制面板Q系列快速调用。 用户与权限管理 独立登录权限:私有云平台用户可通过机器码和密码登录管理。 便于集成商下级经销商或用户使用。 角色管理菜单的小度用户不能删除,否则该功能不能使用。 主机禁用功能 主机出现大量垃圾数据故障时会自动禁用。 提醒集成商检修排查问题。 可快速将主机踢下私有云,方便项目收款。 常用功能显示 搜索主机名字可查看该主机最常使用的前7个功能。 预警关键字 包含此关键字的按键名字会给用户发送短信或邮件。 --- ### 656. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能概述 智能控制核心设备,接收各种预设指令,通过系统预设逻辑判断,再输出各种控制指令控制其他设备。 购买建议 适用于家庭的智能家居、智能楼宇、智能展厅、智能影院需要智能控制的场合,也适用于酒店、茶楼、会议室、展厅、营业场所需要智能控制的场合。 参数 产品名称:M002 智能控制主机 版本:V6.1 产品型号:M002 外壳材质:钣金金属 颜色:黑色 安装方式:摆放安装 / 标准 DN35 导轨 尺寸:69 * 57 * 87mm 重量:350g 总线接口:MQPORT * 2 网络接口:RJ45 通讯:RS485总线、无线、网络 总线:RS485,485 类型:隔离 485 被控波特率:9600 控制波特率:1200 - 115200 无线:BT5.0ZGBMESH MESH 协议:开放自定义 有线输入:RS485 网络:TCP/IP 网络模式:Server/Client 网络交互:Socket 时钟:RTC 独立定时:支持 独立倒计时:支持 控制协议:自定义 被控协议 1:开放 被控协议 2:自定义 供电电压:12V 供电电流:2A 发布时间:2024 年 03 月 功能特点 硬件设计 只保留总线和 zgbmesh 无线通讯接口部分。 一体设计背卡,DN35 标准轨道,轻松取放模组。 其它通讯方式通过 485 或者 zgbmesh 扩展。 Mesh 无线控制 支持 512 路基于蓝牙 5.0 技术的 ZGB,MESH 无线输出,波特率 9600。 总线控制 支持 512 个总线命令输出。 支持 512 个总线命令和无线 MESH 信号并行输出。 总线命令支持自定义输入,总线命令支持 9 种波特率自定义。 单个总线命令支持 80 个字节,支持单按键数据读出,部分和整体按键数据读出。 情景控制 支持 128 个情景模式控制。 情景模式执行期间能执行其它单按键任务。 支持单情景模式数据读出,部分和整体情景模式读出。 逻辑功能强,可以在情景模式中对定时和条件进行开启关闭。 每个情景模式支持 252 步逻辑控制步骤,情景模式支持嵌套调入。 情景模式支持中断停止,暂停 / 继续逻辑,同时该逻辑可以被无线 MESH 指令驱动。 情景模式可以组合调用主机的各种输出功能。 定时控制 支持 128 个独立定时控制。 每个定时细化到秒,定时数据可以读出。 每个定时控制可以调用主机的各种输出功能。 每个定时控制可以设置 8 种定时模式,周一到周日,或者重复。 定时时钟为 RTC,带纽扣电池掉电保持功能。 条件控制 支持 128 个条件控制逻辑。 每个条件控制可以调用主机的各种输出功能。 可以将主机有线输入、温度和湿度作为驱动触发条件。 每个条件控制可以独立设置设防、撤防触发逻辑,条件数据可以读出。 倒计时条件逻辑 支持 512 个倒计时条件逻辑。 每个倒计时条件逻辑可以调用主机的各种输出功能。 512 个倒计时为 512 个独立定时器。 可以自定义 28 个字节内任意总线数据或 MESH 数据为触发条件。 可以比较带校验的动态数据作为触发条件。 支持最长 65535 秒倒计时执行任务。 支持同一个指令驱动多个倒计时逻辑。 条件倒计时支持通过总线协议和 MESH 协议条件开关。 配置文件 采用 OFFICE 数据库格式的配置文件,数据查看一目了然。 也方便需要研究的同学了解软件配置结构。 所有软件描述文字,通过数据库调用。 不喜欢我们的描述想用自己的语言描述,自定义多语言描述。 集群控制 多个主机之间把 MESH 组网参数配置成一样。 主机之间就可以通过无线 MESH 组网实现互通,通过主机协议实习相互调用。 扩展控制 提供微信文字语音控制平台,并支持私有化部署。 提供在线集群控制平台,并支持私有化部署。 提供私有云在线平台,并支持私有化部署。 支持行业应用管理平台,并支持私有化部署。 二次开发 网络控制主机,提供网络控制协议,方便用户自行开发客户端软件,如:PC 软件控制,Android 软件控制,Apple 软件控制等。 总线控制主机,提供总线控制协议方便其它设备控制主机或者二次开发。 开放平台详细协议讲解支持让你二次开发的同学将主机快速的集成到你的系统。 独立总线透传端口,扩展充满无限可能。 提供 Android/I0S/C++/C#/Dephi/VB 连接主机的示例源代码加快你的二次开发进度。 产品图片 使用方法 基础使用教程 1. 模组外观接口、模组硬件连接 接口从左到右分别是 NET1,网络接口,用于主机的网络通讯; 2 个快速接口 VGAB,用于总线通讯或者,通过快速接排对主机供电; 背后是 ANT,天线接口为 zgbmesh 天线接口; 底部是标准 DN35 卡口。 2. 资料下载,软件安装(控件丢失解决办法)连接主机(搜索软件) xxx 网络连接 如果你是局域网用户 确保你的电脑和主机处于同一个局域网。 同一个局域网下用网络模块修改器查找 IP,模块初始状态为自动获取 IP,该软件只用来查找,修改获取 IP,设备重启。 在参数配置页面,网络连接框内填入你的 IP 和端口即可通过局域网和主机建立连接。 如果你是云端用户 只需要确保 智能主机 和你的电脑都接入了互联网。 在参数配置页面,网络连接框内填入云端的地址和端口,在 open set 隐藏菜单填入服务器验证码即可和 智能主机建立连接。 IP/域名:www.ckhr.cloud 端口:8090 机器码:(根据实际填写) 服务器验证:填写 主机用户 里的 注册指令(登录www.ckhr.cloud 后获取) (例如:F917202025022631383830313035343436383134353638389F71) 4. 无线总线按钮控制 Q06开关 我们将演示控制 Q06,勾选编辑,点击无线总线按钮,勾选输出总线数据,填入 Q06 第一路的打开和关闭协议,点击下载到主机,软件底部状态栏提示成功。 勾选机内数据和执行,点击你刚才所编辑的按钮,Q06 的第一路将会被控制。 5. 定时控制,添加定时时间,时间校对讲解 定时控制是支持选择一个时间后,达到时间可以自动执行某个操作,支持循环和周定时,并可以通过其他方式开关定时器。 我们来演示定时打开 Q06 第 1 路继电器,选择时间,选择要执行的动作,下载到主机,等时间到了,该指令就会执行。 时钟点击刷新获取主机内部的时钟数据,点击同步可以将电脑的时间同步到智能控制中心。 6. 情景控制演示 情景控制是指将多个指令一次性执行而无需独立点击。 打开情景按键 1,取名一键场景,延时默认 0.5 秒,添加 打开办公室灯,打开会议室灯,点击下载。 点击情景测试智能控制中心将依次执行刚才所添加的指令。 7. 总线条件倒计时演示 总线条件倒计时是指通过接收自定义的总线数据触发主机的任意功能,触发后的执行时间支持倒计时配置,同时总线倒计时条件支持协议开关。 接下来,我们演示通过 RS485开关驱动一个倒计时场景,将 RS485 开关按键 4 开配置自定义总线数据 11 12 13 14 15 开驱动 10 秒后执行倒计时场景。 我们在 MESH 开关按键 2 开配置驱动主机按键指令,按键内部配置了倒计时条件开启指令,按键 2 关配置主机按键指令,按键内部配置了倒计时条件关闭指令。 当我们按下开关按键 5 开,10 秒后我们所设置驱动的场景将会执行。 当我们按下开关按键 2 关,条件倒计时将会被关闭,再按开关按键 5 开,主机将不会执行刚才设定好的倒计时场景。 总线条件倒计时中对比忽略功能,当所接收到的协议是带校验或者动态变化的时候我们可以忽略他的校验字节,只需要前面固定部分不变就可以驱动主机任意功能。 总线条件倒计时可以通过 MESH 驱动也可以通过总线驱动。 我们用总线面板配置了和 MESH 面板相同的功能,现在我们点击按键 1 开,10 秒倒计时场景将会启动。 主机可以通过无线总线按键写入条件倒计时的相关协议,开关条件倒计时,也可以驱动条件倒计时。 我们会将整个演示的配置文件上传到公共盘,方便大家下载学习我们具体的内部的逻辑设置。 8. 参数设置页面讲解 网络连接是主机网络地址信息,IP 和端口。 设备声音开关,是指操作主机的提示音。 无线发射帧,设防撤防报警音,情景的暂停和停止,为 1527 无线功能,M001 不用管。该功能可以通过 mesh 数据触发总线条件倒计时功能实现。 9. 主机连接云端配置 确保你的电脑和主机处于同一个局域网。 打开 主机网络配置软件 .exe,点击设备管理,自动搜索,就会出现主机的网络信息。同一个局域网下用网络模块修改器查找 IP,模块初始状态为自动获取 IP,该软件只用来查找,修改获取 IP。 用 IP:88 访问网页端进行模块的配置和设置,例如 10.168.1.233:88,默认用户名密码为 admin,admin。 进入端口一,端口一里有两个网络端口号,可以配置连接两个服务端。这里我们使用 4196 连接私有云。工作模式选择 TCP 客户端。 目的 IP 和域名,填写私有云的 IP 或者域名。 填入注册包选择链接发送自定义数据包,例如 F9171020122128EDD442758CCA3C9C9F71。 填入心跳包心跳时间选择 60 秒,数据例如 8A 00 00 01(勾选 16 进制)。 点击确定配置成功,重启模块即可链接私有云。 10. APP 使用基础讲解 通过扫描二维码,添加主机,因为是自动获取 ip 你需要编辑主机填入主机正确的 IP 地址和端口。 按钮名字同步,点击左上角菜单,点击同步,就会将智能控制中心所编辑的按钮名字同步到手机。 同步原理:将 pc 端设置好的名字自动获取过来,减少手工输入,例如无线 1 对应客厅灯开,同步的是客厅灯开的名字。 添加的时候选择主机资源就可以按照客厅灯开添加。 同步之前需要在智能控制中心下载所有的数据:有线、无线总线、情景、定时等。 主机资源添加,新建一个房间取名主机按键,点击添加设备,选择主机资源,在全部的地方,可以搜索 mesh,刚才所同步的按钮就会筛选出来,大家也可以选择下面的分类添加。 选择好输出设定之后,选择一个图标点击保存,主机资源就添加完毕。 Q04 添加,通过扫描 Q04 机身上的继电器二维码可以轻松的将 Q04 的 4 个按键添加到 APP。 扫描添加好之后,我们就可以用手机控制 Q04 的 4 个按键,并能实时的反馈状态。下拉界面可以刷新状态。 定时功能的使用,点击菜单定时任务。 常用设备二维码生成方法和表格位置,在协议文档文件夹第 4 个文件,04 - 设备二维码生成表格,大家只需要按表格中的方法生成二维码就可以添加设备。 关于 APP 的其他使用方法,请参考 APP 宝贝界面的介绍详情。 专业使用教程 1. 串口助手使用,通过 USB 转 485 模块发协议控制主机功能 安装串口调试助手,解压点击运行即可。 安装 USB 转 485 驱动。 接收设置选择 HEX,发送设置选择 HEX。 选择对应的串口号,波特率 9600,数据位 8,校验位 none,停止位 1,流控 none,点击开始。 打开智能控制中心协议表格。 将主机对应按键的协议复制到数据发送框,点击发送,对应的按键将被控制。 控制主机的其他功能复制对应的控制协议即可。 2. 串口助手使用,通过网络发协议控制主机功能 安装串口调试助手,解压点击运行即可。 接收设置选择 HEX,发送设置选择 HEX。 串口选择 TCP/UDP,Mode 选择 Tcp client,IP 填入主机 IP,端口填入主机端口,点击开始。 如果不知道主机的 IP 和端口,请看基础知识视频 2。 打开智能控制中心协议表格。 将主机对应按键的协议复制到数据发送框,点击发送,对应的按键将被控制。 控制主机的其他功能复制对应的控制协议即可。 3. 主机网络 \ 总线 \ MESH \ 之间透传功能讲解 网络透传总线,在串口调试助手框:你需要透传的数据前加上 机器码 + CD B8 B4 AB + 自定义数据,点击发送自定义数据将会被透传到总线网络。 总线透传网络,总线上的任意每个数据包小于 80 个字节的数据,会自动通过主机透传到网络客户端。 打开两个串口助手 A 和 B,串口助手 A 通过网络连接主机,另外一个串口助手 B 用 USB 转 485 连接主机的 485 接口,通过串口助手 B 发送数据 11 22 33 44 你将会在网络端口收到 11 22 33 44。 MESH 转网络和 485,只要组网参数一致的 MESH 设备,通过 MESH 发送数据总线和网络都会收到该自定义数据。 再打开一个串口助手 C,通过 USB 转 485 连接 MESH 转 485 模块,通过串口助手发送数据 11 22 33 44 串口助手 A 和 B 都会收到对应的透传数据。 4. PC 端配置文件 office 修改 PC 端的配置文件为了方便大家快速修改,我们采用了最常用的 OFFICE 数据库,通过数据库导出 EXCEL 可以快速的进行批量数据编辑和修改。 接下来我们以修改无线总线按钮数据为例,找到安装目录 back 文件夹下的 data_save 数据库文件,用 OFFICE ACESS 打开。 点击启用内容,双击无线按键大家就可以看到无线按键的数据内容,点击外部数据,导出到 excel,所有选择默认选项,点击确认,注意不要修改 excel 的名字。 接下来就可以按照自己的需求修改打开 excel 修改内容,如果不知道内容含义大家可以通过在按键上添加数据来获取数据规律,编辑好你需要的数据后点击保存。 然后我们就将该 excel 的数据导入数据库。首先将数据库中无线按键的表格删除,然后选择外部数据,新数据源,从文件,Excel。 浏览选中 Excel,选中将源数据导入当前数据库的新表中,点击确定。 选择显示工作表,点击下一步,选择第一行包含列标题,点击下一步,字段信息选择默认,再点击下一步,选择不要主键,点击下一步,导入到列表名字为 EXCEL 文件名,点击完成。 再次打开 PC 端程序,你会发现按键的内部数据已经改成了你输入到 EXCEL 的内容。 5. APP,sqlite app 数据库修改 APP 的数据库可以通过 sqlite 打开修改。 Sqlite 软件位于相关软件文件夹的第 6 个文件,06 - sqlitestudio - 2.1.4。 参考 APP 软件视频中如何导出 APP 配置文件,导出文件,点击 sqlite 应用程序,打开数据库文件。 选择你想修改的表格,双击表格,然后点选表格上部的数据标签,你就可以修改,数据库中的内容。 点击保存后将配置文件导入手机即可。 重新打开 APP 程序,就是你更新配置之后的内容。 6. 主机集群控制讲解,通过一个主机控制多个主机 把主机的 MESH 组网参数配置为一样,就可以实现主机之间的相互调用通讯。 把 AB 主机的 MESH 组网参数配置为一样,打开主机协议文档,在 A 主机无线总线按钮中写入 B 主机的控制协议,点击下载。 勾选机内数据,选择执行,点击刚才编辑的按钮,A 主机就实现了对 B 主机的控制。 7. 二次开发资料查找位置和示例源代码文件夹位置展示 二次开发资料位于网盘主机目录 04 文件夹。 01,02 文档为主机 PC 端和主机之间的通讯文档。 03 文档为各个平台通过 SOCKET 链接智能控制中心的源代码。 8. 修改主机 MESH 组网参数 用串口助手通过网络连接主机的 4196 端口。 通过修改 MESH 地址的方式就可以修改组网参数。 地址修改 机器码 + CD B8 B4 AB + 5 字节原地址 + F8 E7 D6 + 5 字节新地址。 由于修改地址后会修改 MESH 组网参数,所以大概 4 秒后才会反馈修改之后的地址,修改过程中请勿断电。 地址的第 1 字节为 1A,2,3 字节必须一样才能组网,可以理解为你的组网密码。4,5 字节为模块地址必须为不一样,5 字节和机器码最后一个字节保持一致,否则会导致总线条件倒计时不能下载。 如果地址 2,3 字节修改和其他 MESH 设备不一样,通讯会立即中断,你需要将 MESH 地址 2,3 字节修改为一样,才能重新组网通讯。 常见问题教程 1. 主机总线通讯功能是否正常判断方法 拔掉主机的 485 接口设备,独立主机。 用串口助手通过网络连接主机的 4196 端口,发送协议 机器码 + CD B8 B4 AB BB BB BB BB BB 86 86 86 0F 返回 5 字节 MESH 地址 + 64 字节数据 (不用管数据内容) + 0F 就表示主机正常。 2. 常见总线故障处理排除方法,主机 设备 线路 总线故障主要从控制设备,被控设备,线路来排查。 控制设备主机排查:拔掉主机的 485 接口设备,独立主机。用串口助手通过网络连接主机的 4196 端口,发送协议 机器码 + CD B8 B4 AB BB BB BB BB BB 86 86 86 0F 返回 5 字节 MESH 地址 + 64 字节数据 (不用管数据内容) + 0F 就表示主机正常。 被控设备排查:被控设备和主机单独直接相连总线如果控制正常表示被控设备没有问题,如果不正常则设备有问题。 线路排查:接下来就排查线路问题,线路情况由于各个同学布线不一样,需要提供线路草图,我们来提供具体的排查方案。 3. 主机提示音的几种情况讲解 提示音帮助大家了解系统运行状况的一个重要辅助提醒工具。在打开主机提示音情况下,什么情况会发出提示音? 总线上有数据发送。 用软件操作主机,下载,读取,控制等。 总线上有设备一直发送数据。 总线上有干扰。 大家知道总线故障主要从控制设备,被控设备和线路 3 方面来排查故障。前两个很好排查,但是线路故障很难找。 一般总线设备 AB 两线,不管你接线是否错误,不会给你有任何提示,你只有出现不能控制的症状才会来找设备线路中的原因。 智能控制中心特有设计,能侦测线路中的干扰,线路有干扰的时候或者大量杂乱数据的时候会发出滴滴滴滴的报警声音辅助排查问题。 提示音 A,B 是正常操作情况不用处理。 提示音 C 的情况 店铺所有设备包含第三方集成,都是可控的向总线发送数据,不会主动发送数据。 如果自行加入第三方设备发送大量数据,需要自行联系第三方设备厂家排查原因,或者采用隔离模块隔离使其不向总线发送数据,占用总线网络。 提示音 D 的情况 采用总线故障通用排查方法即可。 包装清单 智能控制主机 M002 天线 说明书 保修卡 合格证 --- ### 657. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介 本产品属于7寸彩屏控制器系列,具备多种尺寸规格,适用于家用、商用及工业设备的可视化人机交互场景。全系列产品采用高规格真彩色LCD显示屏,搭配电容式触摸屏,外观简约时尚,符合现代审美与使用习惯。 该7寸彩屏控制器适用于工业/商业电器控制、彩屏交互、人机交互、新风系统、空调系统及高端仪器等应用场合。内置7寸高分辨率全彩显示与电容式触摸玻璃面板,操作顺滑简单。搭载ARM Cortex™-A7双核1.2GHz处理器,处理性能强劲,满足各类运算需求。同时配备RS485、RS232、RJ45以及802.11b/g/n WIFI接口,满足智能电器与控制的硬件连接需求。机器后背采用磁吸式金属挂架滑扣式安装设计,安装简单且牢固可靠。高档CNC铝面板外壳,可融入家居环境。 产品购买:https://www.modbus.cn/product/26819.html 产品手册下载: 7寸彩屏控制器说明书(1)下载 二、产品规格 (一)硬件规格 项目说明CPU与存储CPUARM Cortex™-A7双核1.2GHz芯片平台SSD20X内存64MByte闪存128MByte屏幕尺寸7英寸分辨率高清1024*600 IPS屏型号P07发色数24位全彩色(16.7M色)触摸全贴合电容式触摸屏外设与接口串口RS485数量1串口RS232(选配)数量1USB OTGMicro USB OTG数量1扩展存储TF卡槽(兼容SDHC标准)数量1按键隐藏式复位按键数量1以太网10M/100M全双工自适应RJ45以太网口(选配)数量1音频内置蜂鸣器数量1RTC时钟电池供电数量1指示灯电源指示灯数量1尺寸与重量整机尺寸173.8*111.2*8.0(墙外)匹配底盒86底盒(86×86mm)包装尺寸220*14*65mm整机重量见装箱清单包装重量见装箱清单工作环境电源输入DC 12V 500mA最大功率6W工作温度-20℃~70℃工作湿度RH10%~RH90%(不结露)存储环境储存温度-40℃~85℃储存湿度≤95%RH (二)软件规格 项目说明操作系统Linux 4.9.84 (三)尺寸规格 详见装箱清单。 (四)装箱清单 名称数量图例控制器主机1-安装支架1-固定螺钉2-安装说明-- 三、注意事项 安装前,请仔细阅读本产品手册并按手册内容操作,否则可能存在触电或火灾风险。 危险操作可能威胁人身安全,请谨慎操作。 本产品禁止未成年人安装与使用,以免造成人身伤害。 安装时应聘请专业资质人员或服务商。 确保布线符合当地及本手册标准,并由专业人员完成。 非专业人员安装可能导致产品故障、触电及火灾风险。 本产品禁止安装在易燃气体泄漏区域。 本产品禁止安装在盐雾大的环境。 本产品禁止进水。 本产品接线不能产生拉力,以免线断漏电。 本产品应安装在0℃~39℃室内环境,避免阳光直射。 禁止将电源线接到通讯线接口。 若安装在医院等环境,确保本产品不与其他产品相互干扰。 本产品应安装在能承受其重量的墙体上。 安装完成后,禁止移动或拆卸本产品。 禁止在潮湿环境下使用本产品。 确保本产品接入电源在额定输入范围内。 本产品为永久式连接设备,安装时应在外部装标准断开装置。 长期不使用时,请关闭电源。 核对接口输入线,防止连接错误损坏产品。 确认所有接线正确后再打开电源。 禁止自行改装、维修本产品。 若本机死机,可按复位键重新开机。 本产品带有存储功能。 本产品仅适用于海拔2000米及以下地区,仅适用于非热带气候条件。 串口屏GVSUI 配置 PC 软件功能说明书 0 GUI配置PC软件功能说明_V1.0下载 说明书链接:https://www.modbus.cn/category/gvsui 系统参数设置 软件及说明书下载 工程模版下载 视频教程 01、基础背景,按钮替换视频教程 02、按钮发送自定义协议教程 03、按钮发送自定义场景和延时指令视频教程 05、系统变量调用视频教程 06、协议解析展示视频 07、进度条发送自定义变动协议 08、带运算逻辑的变量发送 09、通过输入框改变变量 10、CRC校验发送协议 11、互锁按钮功能实现 12、更改开机LOGO导出升级 13、滑屏效果的实现方法 14、协议转换功能使用教程 15、色盘XRGB调光使用教程 16、定时发送指令教程 17、密码控件的使用和显示大小调整技巧 18、如何再页面上显示星期 19、如何实现弹框选择按钮教程 20、如何通过中文输入键盘改变文字显示 21、和校验设备的控制例如LS电动窗帘 22、根据自定义数据改变显示页面或者弹框 23、如何通过自定义协议改变按钮状态 24、如何通过自定义协议锁定屏幕和解锁 --- ### 658. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 功能简述: 检测温度、湿度、二氧化碳、甲醛、TVOC、PM2.5、PM10,检测数据通过总线协议输出中控设备控制使用或用于屏幕展示。 选型建议: 广泛适用于家庭,厨卫,办公楼,酒店,医院,学校,车站,博物馆,会展中心工厂,农业等有空气检测需求的用户,也适用于室内空气检测机构,空气净化器和新风系统从业者,Geek,环保玩家,环境检测等专业人士使用。 1.2 产品特性 参数说明检测要素温度/湿度/CO₂/甲醛/TVOC/PM2.5/PM10通讯接口RS485(标配)+ 无线扩展(选配)供电电压DC7-24V宽电压输入安装方式吸顶式安装外壳材质塑料外壳工作温度-10℃~60℃产品尺寸Φ170mm×50mm产品重量300g 产品特点 同时输出温度、湿度、C02、甲醛、TVOC、PM2.5、PM10 共七组数据。 PM2.5传感器采用激光散射原理。空气通过测量腔体时空气中的悬浮颗粒物使激光产生散射,在特定角度收集激光散射光,得到散射光强随时间变化的曲线,微处理器根据米氏(MIE)理论,计算出颗粒物的等效粒径及单位体积内不同粒径的颗粒物数量,实现精准测量。独有激光自校准技术,保证精准度。 采用双频数据采集技术,可实时检测当前颗粒物浓度。 检测颗粒物直径的范围从0.3um至10um。 PM2.5以TSI8530为标准,与大多数计量局的测试设备一致 CO2采用红外非分光原理,单通NDIR方式,具有24小时自校准功能 甲醛TVOC均采用电化学原理,灵敏度高,低浓度也能识别。 温度采用NTC原理,湿度采用HIH原理,测量范围广,精确度高 立体风道设计,提高风量穿过率,准确识别颗粒物含量。 传感器采用金属屏蔽外壳,抗干扰性能好。 二、技术参数 2.1 检测指标参数 参数原理量程分辨率精度温度NTC-40~100℃0.01℃±1℃湿度HIH1-100%RH0.04%±3%RHCO₂红外非分光400-5000ppm1ppm±(3%+50ppm)甲醛电化学0-2000μg/m³1μg/m³±10%TVOC电化学0-2000μg/m³1μg/m³±25%PM2.5激光散射0-999μg/m³1μg/m³±10%PM10激光散射0-999μg/m³1μg/m³±10% 2.2 通讯参数 项目参数物理接口RS485私有协议 / Modbus-RTU协议波特率9600bps(默认)数据格式8数据位/1停止位/无校验扩展协议KNX/CAN/LoRa/WiFi等(需扩展模块) 三、安装与接线 3.1 机械安装 安装位置:距地面1.5-2米,避开通风死角 安装间距:每50㎡建议安装1个传感器 方向要求:传感器进风口需避开遮挡物 3.2 电气连接 端子功能说明V+电源正极DC7-24V输入GND电源负极A/BRS485总线需接终端电阻120Ω 四、通信协议详解 4.1 协议框架 采用标准Modbus-RTU协议,数据帧结构: 地址码功能码数据长度数据域CRC校验1字节1字节1字节N×2字节2字节 私有协议 一、修改设备地址 1. 操作流程 设备上电:设备自动反馈当前地址(5字节,例如 1A 21 07 01 01)。 发送修改指令: 格式:(1A 21 07 01 01) + 固定码(F8 E7 D6) + 1A 21 07 01 02 示例:将地址 1A 21 07 01 01 改为 1A 21 07 01 02:发送指令:1A 21 07 01 01 F8 E7 D6 1A 21 07 01 02 2. 关键说明 校验码:F8 E7 D6 为修改地址的固定码。 二、查询设备数据 1. 发送查询指令 格式:设备地址(XX XX XX XX XX) + 固定指令(86 86 86 0F) 示例:查询地址为 1A 21 07 01 01 的设备数据: 发送指令:1A 21 07 01 01 86 86 86 0F 2. 数据反馈解析 反馈格式: 设备地址(XX XX XX XX XX) + 参数组(每2字节为一组) + 结束符(0F) 字节位置参数名称数据范围(十六进制)数据范围(十进制)单位/说明00 01甲醛浓度0x0000 ~ 0x07D00 ~ 2000μg/m³01固定值0x011保留字段,固定为0100 02TVOC浓度0x0000 ~ 0x07D00 ~ 2000μg/m³01固定值0x011保留字段,固定为0100 03PM2.5浓度0x0000 ~ 0x03E70 ~ 999μg/m³01固定值0x011保留字段,固定为0100 04温度0x00 ~ 0x640 ~ 100℃(整数)01温度正负0x00(负)0x01(正)- / +符号标识(00负,01正)00 05湿度0x0000 ~ 0x00640 ~ 100%(整数)01固定值0x011保留字段,固定为0100 06PM10浓度0x0000 ~ 0x03E70 ~ 999μg/m³01固定值0x011保留字段,固定为0102 BC二氧化碳0x0190 ~ 0x1388400 ~ 5000ppm(示例:0x02BC=700)01固定值0x011保留字段,固定为01 示例解析:反馈数据: XX XX XX XX XX 00 01 01 00 02 01 00 03 01 00 04 01 00 05 01 00 06 01 02 BC 01 0F 解析结果: 甲醛:00 01 → 1 μg/m³ TVOC:00 02 → 2 μg/m³ PM2.5:00 03 → 3 μg/m³ 温度:00 04 → 4℃(01表示正号) 湿度:00 05 → 5% PM10:00 06 → 6 μg/m³ 二氧化碳:02 BC → 0x02BC = 700 ppm 3. 数值转换方法 十六进制转十进制:例如 02 BC → 转换为十进制: 0x02BC = (2 × 256) + (188 × 1) = 700 五、数据解读标准 5.1 空气质量等级 参数优良污染PM2.50-35μg/m³35-75μg/m³>75μg/m³CO₂<1000ppm1000-2000ppm>2000ppm甲醛<0.08mg/m³0.08-0.1mg/m³>0.1mg/m³TVOC<0.6mg/m³0.6-3.0mg/m³>3.0mg/m³ 5.2 健康指引 红色预警(任一参数超标): 立即开启新风系统 人员疏散建议 查找污染源 橙色预警(两项参数临近限值): 建议增加通风 敏感人群注意防护 六、维护与校准 6.1 日常维护 周期维护项目每月清洁进风口滤网每半年激光窗口清洁每年电化学传感器标定 6.2 自动校准机制 CO₂传感器:每24小时自动零点校准 温湿度传感器:上电自动校准 颗粒物传感器:动态基线校准技术 七、故障排查 现象可能原因解决方案数据无输出电源异常检查7-24V供电PM值持续偏高激光腔污染使用无尘布清洁CO₂读数漂移未完成自校准保持通电24小时通讯中断终端电阻未接总线末端接120Ω电阻 产品购买:https://item.taobao.com/item.htm?ft=t&id=552830224165 --- ### 659. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 M510是一款支持5路0-10V纯电压模拟信号输出的智能调光模块,兼容总线(RS485)、WiFi及苹果家庭(HomeKit)控制,提供255级数字无极调光、25段调光曲线、分路群控及呼吸模式等功能。适用于家庭、商业及工业场景的智能灯光控制系统,支持Modbus工控协议,可无缝接入工控系统。 二、技术参数 参数项规格说明产品型号M510输入电压DC12V输出电压0-10V(每路独立输出)驱动能力≤50mA/路通讯方式RS485总线、WiFi(2.4GHz)工控协议Modbus波特率9600苹果家庭支持HomeKit直连控制(金属外壳)安装方式DN35导轨安装工作温度-10°C ~ 50°C尺寸69*57*87mm重量0.35kg 三、安装与配置 1. 硬件安装 电源接线:输入电压范围需符合选配要求(DC12V)。 信号输出:每路0-10V接口连接调光驱动器。 通讯接口:RS485总线需按A/B极性接入。 2. 指示灯状态 指示灯行为含义1S闪烁设备正常运行亮5秒灭1秒服务器连接成功熄灭进入配网模式常亮进入HomeKit配置模式 四、协议指令详解 1. 地址修改协议 功能:修改设备唯一地址(5字节)。指令格式: [旧地址(5字节)] F8 E7 D6 [新地址(5字节)] 示例:旧地址 1A 13 24 56 91 改为新地址 2A 33 57 26 81: 发送:1A 13 24 56 91 F8 E7 D6 2A 33 57 26 81 反馈:BC BC(操作成功) 2. 分组群控协议 通配符规则:FF为通配符,可匹配任意地址段(0x00~0xFE)。指令格式: [地址掩码(含FF)] [控制指令] 示例: 控制所有模块:FF FF FF FF FF [控制指令] 控制地址前3字节固定、后2字节任意的模块:XX XX XX FF FF [控制指令] 3. 调光控制协议 指令格式: [地址(5字节)] [路数功能][输出值][状态] ... [结尾符0F] 参数说明: 功能码:00(关)、01(开)、02(开关)、FF(调节)、03(增亮)、04(降暗) 输出值:00(0%)至FF(100%),线性对应亮度等级 状态码:01(有效)、00(无效)、02(自适应调光) 示例:设置第1路输出50%(0x80),第2路关闭: [地址] FF 80 01 FF 00 01 0F 4. 调光曲线配置协议 功能:设置25段调光时间间隔(每段10ms单位)。指令格式: [地址(5字节)] BB D2 [路数] [25段间隔值] 0F 参数说明: 路数:00(第1路)至04(第5路),FF(全路) 间隔值:01(10ms)至FF(2550ms) 示例:设置第1路25段调光曲线: [地址] BB D2 00 01 11 20 30 ...(25段值) 0F 5. 呼吸模式配置协议 指令格式: [地址(5字节)] EE [循环时间][状态] ... 0F 参数说明: 循环时间:00(0s)至FF(255×45ms=11.475s) 状态:01(启动)、00(停止) 示例:启动第1路呼吸模式(34秒循环): [地址] EE 22 01 ... 0F 6. 极速场景协议 功能:存储/触发256个场景配置。指令类型: 设置场景:[地址] 69 11 96 [场景位置] [5路输出值] 0F 触发场景:[地址] 69 12 96 [场景位置] 0F 保存当前值:[地址] 69 13 96 [场景位置] 0F 清除场景:[地址] 69 14 96 [场景位置] 0F 示例:存储场景位置00的5路输出值: [地址] 69 11 96 00 11 22 33 44 55 0F 五、附录 Modbus寄存器映射表(详见附录A) 故障代码表(详见附录B) 术语解释:HomeKit配对码、通配符掩码、调光曲线 --- ### 660. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 万能遥控器红外射频RS485三合一是一款多功能智能控制设备,集红外、射频(RF)和RS485总线控制于一体,支持对多种家电设备的统一控制。通过手机APP、语音助手或定时设置,用户可远程或本地管理家庭电器,解决遥控器繁多、操作复杂的问题,实现全屋智能联动。 模块版本对比表 型号名称支持协议/功能附加组件网关支持适用场景RF17模块(基础版)基础射频控制无不支持简单设备遥控RF17-MESH版本MESH网络协议无不支持多节点智能家居组网RF17-485总线版本RS485总线协议无不支持工业控制、智能楼宇MESH转485模块(独立模块)MESH转485协议转换外接MESH转485模块需搭配网关跨协议设备集成RF17-485涂鸦网关版RS485总线协议 + 涂鸦云平台无支持(涂鸦网关)远程管理工业设备RF17-MESH涂鸦网关版MESH网络协议 + 涂鸦云平台无支持(涂鸦网关)智能家居集中控制RF17-MESH涂鸦网关版(含外接MESH转485)MESH网络协议 + 涂鸦云平台 + RS485扩展外接MESH转485模块支持(涂鸦网关)复杂场景跨协议控制(如智能家居+工业) 关键说明 协议支持: MESH网络:适用于多设备自组网,增强信号覆盖与稳定性。 RS485总线:支持长距离、高抗干扰的工业级通信。 涂鸦云平台:提供远程控制、数据统计及场景联动功能。 附加组件: 外接MESH转485模块:实现MESH网络与RS485设备间的协议转换,需独立安装。 适用场景: 家庭/商业:MESH版本适合智能家居;485版本适合楼宇自动化。 工业:485总线版本与涂鸦网关版适配工厂设备监控。 兼容性: 含外接模块的版本支持混合协议控制(如同时管理MESH灯具和485电机)。 注:以上型号可根据需求定制组合功能,具体技术参数请参考产品手册或联系客服。 二、核心优势 三合一技术集成 支持红外、射频(300-450MHz)、RS485总线协议,覆盖市面主流家电。 海量码库兼容格力、海尔、美的、TCL、创维、松下等品牌。 智能控制多样化 支持APP远程控制、语音助手(天猫精灵、小爱同学等)、场景联动。 自定义定时开关、设备共享(家庭成员协同控制)。 高兼容性与易用性 混合9频率自动识别(310/315/330/350/390/418/430/433/450MHz)。 支持生成遥控编码,自定义红外转485学习功能。 稳定可靠 铝合金+ABS材质机身,内置软天线增强信号强度。 支持断网自动恢复,配置简单快捷。 三、技术参数 项目规格供电参数DC 5V/2A(Micro USB接口)射频范围300MHz~450MHz(OOK调制)红外频率38kHz(兼容主流红外设备)尺寸80mm × 38mm(轻巧便携)材质铝合金机身 + ABS面板支持协议红外、射频、RS485总线适配智能音箱天猫精灵、小度音箱、小爱同学、Google Home、Amazon Echo等 四、适用场景 家庭电器:空调、电视、风扇、机顶盒、投影仪、灯光等。 智能家居:窗帘、晾衣架、卷帘门、道闸、车库门。 商用电控:投影幕布、办公设备、安防系统。 五、使用说明 1. 设备安装 供电连接:使用Micro USB线连接5V电源适配器。 天线调整:拉直侧面软天线以增强射频信号强度。 2. APP配置(涂鸦智能) 下载“涂鸦智能”APP并注册账号。 长按设备复位键3秒,指示灯闪烁后进入配网模式。 选择2.4GHz WiFi网络(不支持5GHz或隐藏SSID),输入密码完成连接。 添加家庭成员,共享设备控制权限。 3. 语音控制配置 在智能音箱APP中绑定“涂鸦智能”账号,同步设备即可语音操控。 4.遥控器学习功能 红外学习:将原装遥控器对准设备,按APP提示录制按键信号。射频学习:支持滚动码/固定码学习,需根据设备类型选择对应模式。RS485控制:通过总线协议对接智能家居系统,自定义控制逻辑。 六、兼容品牌列表 空调:格力、美的、海尔、志高、松下... 电视:TCL、创维、康佳、海信、长虹... 其他:奥克斯、美菱、荣事达、夏普... 七、常见问题及解决方案 问题解决方案无法获取WiFi名称在手机设置中授予“涂鸦智能”APP定位权限,重启APP。联网失败(密码正确)检查路由器设置:关闭AP隔离、启用11b/g混合模式、禁用MAC过滤,使用2.4GHz网络。指示灯不亮正常待机时不亮,操作时闪烁属正常现象。指示灯长亮设备断网,检查路由器状态或重新配网。射频控制无反应拉直天线,检查遥控器芯片兼容性。 八、注意事项 请勿在高温、潮湿环境中使用。 配置时需确保手机与设备处于同一局域网。 射频设备需在10米范围内无障碍物遮挡。 九、售后服务 保修期:1年(非人为损坏)。 技术支持:18801054468 十、通讯协议 三、RS485总线协议详解 1. 总线波特率及地址配置 项目说明波特率9600 bps(固定值)默认总线地址1A 88 88 88 88(上电时自动发送)修改总线地址指令格式:原5字节地址 + F8 E7 D6 + 新5字节地址- 首字节禁止为FF反馈信号BC BC(操作成功后返回) 2. 红外指令协议 功能指令格式说明红外学习5字节地址 + CA + (存储地址00-C7) + 0F- 可学习200个红外指令(地址范围00至C7)学习成功反馈5字节地址 + CB + (存储地址00-C7) + 0F- 存储地址需与学习时一致红外发送5字节地址 + CB + (存储地址00-C7) + 0F- 调用已学习的红外指令反馈信号BC BC(每次操作后返回) 3. 射频指令协议(方式一) 功能指令格式说明射频学习5字节地址 + AA 0F- 进入射频学习模式学习成功反馈5字节地址 + 6字节数据 + 0F- 数据格式为射频编码射频发送5字节地址 + 6字节数据 + 0F- 直接发送射频编码反馈信号BC BC(每次操作后返回) 4. 射频指令协议(方式二) 功能指令格式说明射频学习5字节地址 + AB + (地址0000-01F3) + 0F- 可学习500个射频指令(地址范围0000至01F3)学习成功反馈5字节地址 + AC + (存储地址00-FF) + 0F- 存储地址需与学习时一致射频发送5字节地址 + AC + (存储地址00-FF) + 0F- 调用已学习的射频指令反馈信号BC BC(每次操作后返回) 5. 红外转485学习协议 功能指令格式说明红外学习5字节地址 + AD + (存储地址00-31) + 0F- 仅支持标准NEC格式红外信号- 可学习50个指令(地址范围00至31)485学习5字节地址 + AE + (存储地址00-31) + 29字节自定义协议 + 0F- 自定义协议长度≤29字节反馈信号BC BC(每次操作后返回)联动说明当接收到学习的红外信号时,自动发送对应存储地址的485自定义协议数据。 6. 射频编码生成协议 功能指令格式说明选择生成种类5字节地址 + DD + (序号F0-F8) + 0F- 序号对应编码类型:- F0: 433MHz标准码(百万随机生成)- F1: 315MHz标准码(百万随机生成)- F2: 433MHz四键码(百万随机生成)- F3: 315MHz四键码(百万随机生成)- F4: 杜亚模式(开/停/关/对码)- F5: 百阵初冠模式(单开/单关)- F6: 力沃模式- F7: 433MHz宽码(适配灵敏度较低的LV模块)- F8: 315MHz宽码(适配灵敏度较低的LV模块)生成编码数据5字节地址 + 6字节数据 + 0F- 每按一次网关按键生成一个编码,需手动保存数据发送生成编码5字节地址 + 6字节数据 + 0F- 调用生成的编码进行射频控制反馈信号BC BC(每次操作后返回) 7. 擦除指令协议 功能指令格式说明整片擦除5字节地址 + EE EE EE EF + 0F- 恢复出厂设置,擦除所有数据(约10秒完成)红外按地址擦除5字节地址 + FE + (地址00-C7) + 0F- 擦除指定红外指令(地址范围00至C7)射频按地址擦除5字节地址 + FF + (地址0000-01F3) + 0F- 擦除指定射频指令(地址范围0000至01F3)反馈信号BC BC(擦除完成后返回) 注意事项 地址限制: 总线地址首字节禁止为FF,否则可能导致指令失效。 射频地址范围严格按协议定义,超限将无法存储。 编码生成: 生成射频编码后需手动保存数据,否则断电后丢失。 宽码模式(F7/F8)适用于接收灵敏度较低的设备(如LV模块)。 擦除操作: 整片擦除将清空所有配置,操作前请备份必要数据。 擦除期间请勿断电,以免损坏设备。 附:协议流程图示例 [用户操作] → [发送指令] → [设备响应BC BC] → [操作完成] RS485接线示意图 将设备底部对应四颗螺丝拧下来后打开上盖,将电路板取出,电路板背面如右图。 V=5V+ G=5V- A=RS485-A B=RS485-B 注意:V是5V超出会损坏! 产品购买:https://item.taobao.com/item.htm?ft=t&id=614256698377 --- ### 661. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 版本:V1.1 一、产品简介 W816是一款超小型智能可编程控制器,专为智能家居、商业照明、农业自动化设计。无需网关,支持8路大功率继电器(每路16A),兼容手机APP、语音控制、定时任务,是家庭和商业场景的“全能管家”。 购买产品:https://www.modbus.cn/product/30890.html 二、核心功能与特点 1. 硬件优势 超小体积:仅占4个空开位,轻松装入家庭电箱。 大功率负载:每路支持16A阻性负载(如灯具、插座),8A感性负载(如电机)。 工业级设计:-20℃~80℃宽温工作,适应复杂环境。 2. 灵活扩展 免线拼接:同层导轨安装,多个模块直接拼接扩展。 全协议兼容:支持Modbus、TCP/IP、MQTT等协议,对接智能家居平台无压力。 无线转有线:支持WiFi/433M/315M转485总线,老旧设备秒变智能。 3. 小白友好 拨码设地址:无需软件,拨动开关即可设置设备ID(1~32)。 一键恢复:误操作可恢复出厂设置,操作零门槛。 本模块上有4位侧拨开关,出厂地址默认为0,可设置地址为0-15,设置如下图 三、技术参数 项目规格工作电压DC 12V(可定制12-24V)负载能力阻性负载≤16A,感性负载≤8A通讯方式485总线(标配)、RJ45网口、WiFi、433M、GPRS输入路数8路光电隔离输入(兼容干接点)环境温度-20℃~80℃尺寸92.5mm × 76.2mm × 60.5mm 四、快速上手指南 1. 安装与接线 固定模块:卡入标准DN35导轨,确保电源关闭。 连接负载:将灯具、窗帘电机等接入继电器输出端子(OUT1~OUT8)。 接入电源:使用12V适配器供电(正负极勿接反)。 联网配置: 有线: Run指示灯状态:上电绿灯闪烁后常亮,与服务器连接成功后冰蓝色。 Rj45指示灯状态:与网络连接成功后绿灯常亮,橙色灯闪烁。 接线拓扑图 接口说明: 1、V=12V正极输入 2、G=12V负极输入 3、A B=485接口 4、① ② ③ ④ ⑤ ⑥ ⑦ ⑧=8组继电器输出 5、RJ45/SMA=网络通讯 6、G 1 2 3 4 5 6 7 8=干接点输入(例如G与1连接触发第一路继电器) 7、RUN=运行指示灯(未连接tcp为绿色 连接tcp为冰蓝色) 五、协议指令详解 私有协议 通讯协议说明 协议基本信息 波特率:9600 默认地址:1A CA 27 87 00(出厂测试默认地址) 通用地址:AA AA AA AA AA(用于特殊操作) 协议格式 协议数据帧由以下部分组成: 地址:5 个字节,标识模块地址。 指令区:根据操作不同,长度和内容各异。 校验和:固定为 0F 功能操作说明 1. 查询模块地址 指令格式:5个字节地址 + 56 56 56 0F 功能:查询模块的当前地址。 示例: 1A CA 27 87 00 56 56 56 0F 2. 修改地址 说明:前 4 个字节固定,第 5 个字节通过拨码开关更改。 示例: 1A CA 27 87 XX (XX 为拨码设置的新地址) 3. 查询模块状态 指令格式:5个字节地址 + 86 86 86 0F 返回格式:5个字节地址 + 00 00 00 00 00 00 00 00 0F(8 个开关状态,00 表示关闭,01 表示打开) 示例: 查询指令:1A CA 27 87 00 86 86 86 0F 返回示例:1A CA 27 87 00 00 01 00 01 00 01 00 0F (假设开关状态为:关-开-关-开-关-开-关-开) 4. 恢复出厂设置 指令格式:5个字节地址 + 96 96 96 0F 功能:擦除 K1-K8 存储区,恢复默认设置。 示例: 1A CA 27 87 00 96 96 96 0F 5. 强制设置 K1-K8 为点动模式 指令格式:5个字节地址 + A6 A6 A6 0F 说明: 默认为长按 5 秒自动切换为翻转模式。 设置前需先恢复出厂设置。 示例: 1A CA 27 87 00 A6 A6 A6 0F 6. 开启/关闭 K1-K8 输入数据存储功能 开启: 指令格式:5个字节地址 + 56 56 56 0F LED 表示:闪烁 1 次后保持常亮。 关闭: 指令格式:5个字节地址 + 46 46 46 0F LED 表示:闪烁 2 次后保持熄灭。 示例: 开启:1A CA 27 87 00 56 56 56 0F 关闭:1A CA 27 87 00 46 46 46 0F 7. K1-K8 开/关存储指令 指令格式: 开启某路:地址 + XX XX XX XX XX ... XX(XX 为特定值) 关闭某路:地址 + XX XX XX XX XX ... XX(XX 为特定值) 具体指令: 操作 开启指令值 关闭指令值 K1 开/关 00 10 K2 开/关 20 30 K3 开/关 40 50 K4 开/关 60 70 K5 开/关 80 90 K6 开/关 A0 B0 K7 开/关 C0 D0 K8 开/关 E0 F0 示例: K1 开启:1A CA 27 87 00 00 XX XX XX XX XX 0F K1 关闭:1A CA 27 87 00 10 XX XX XX XX XX 0F 8. 单路控制 指令格式: 翻转:地址 + 00 00 XX 02 0F(XX 为路数 - 1) 只开:地址 + 00 00 XX 01 0F(XX 为路数 - 1) 只关:地址 + 00 00 XX 00 0F(XX 为路数 - 1) 示例: 第一路翻转:1A CA 27 87 00 00 00 02 0F 第一路只开:1A CA 27 87 00 00 00 01 0F 第一路只关:1A CA 27 87 00 00 00 00 0F 第二路翻转:1A CA 27 87 00 00 01 02 0F 第二路只开:1A CA 27 87 00 00 01 01 0F 第二路只关:1A CA 27 87 00 00 01 00 0F 第三路翻转:1A CA 27 87 00 00 02 02 0F 第三路只开:1A CA 27 87 00 00 02 01 0F 第三路只关:1A CA 27 87 00 00 02 00 0F 第四路翻转:1A CA 27 87 00 00 03 02 0F 第四路只开:1A CA 27 87 00 00 03 01 0F 第四路只关:1A CA 27 87 00 00 03 00 0F 第五路翻转:1A CA 27 87 00 00 04 02 0F 第五路只开:1A CA 27 87 00 00 04 01 0F 第五路只关:1A CA 27 87 00 00 04 00 0F 第六路翻转:1A CA 27 87 00 00 05 02 0F 第六路只开:1A CA 27 87 00 00 05 01 0F 第六路只关:1A CA 27 87 00 00 05 00 0F 第七路翻转:1A CA 27 87 00 00 06 02 0F 第七路只开:1A CA 27 87 00 00 06 01 0F 第七路只关:1A CA 27 87 00 00 06 00 0F 第八路翻转:1A CA 27 87 00 00 07 02 0F 第八路只开:1A CA 27 87 00 00 07 01 0F 第八路只关:1A CA 27 87 00 00 07 00 0F 9. 全路控制 指令格式: 1-8 路全开:地址 + 01 01 77 88 0F 1-8 路全关:地址 + 01 02 77 88 0F 示例: 1-8 路全开:1A CA 27 87 00 01 01 77 88 0F 1-8 路全关:1A CA 27 87 00 01 02 77 88 0F 10. 通用全开/全关 指令格式: 通用全开:通用地址 + 30 77 88 0F 通用全关:通用地址 + 30 77 88 0F 示例: 通用全开:AA AA AA AA AA 30 77 88 0F 通用全关:AA AA AA AA AA 30 77 88 0F 内部协议 1. 指令格式 所有指令均为8字节,格式如下: [0x55][地址][功能码][数据1][数据2][数据3][数据4][校验和] 校验和 = 前7字节相加,取最后两位(如55+01+32+00+00+00+01=89)。 波特率 9600,8 个数据位,1 个停止位,无校验位。 上位机发送数据帧格式: 数据头地址功能码数据区校验和1 字节0x55 1 字节 1 字节 第 1 字节 第 2 字节 第 3 字节 第 4 字节1 字节,将前面的 7 个字节相加,取后 8 位得到 上位机发送数据帧说明: 功能码说明数据区内容(4 个字节)0x10读取状态0x00,0x00,0x00,0x000x11断开某路第 4 个字节代表断开第几路继电器,前 3 个字节为 0。0x12吸合某路第 4 个字节代表吸合第几路继电器,其他为 0。 0x13 命令执行数据区域共 4 个字节,每个字节 8 位,共 32 位。最多可代表 32 路开关量的状态。最后一个字节的第 0 位代表第 1 路,第 1 个字节的最高位代表最后一路。 0x14 组断开数据区域共 4 个字节,每个字节 8 位,共 32 位。最多代表对 32路的操作,1 代表断开 0 代表保持原来状态。最后 1 个字节的第0 位(BIT0)代表第 1 路,依次类推。 0x15 组吸合数据区域共 4 个字节,每个字节 8 位,共 32 位。最多代表对 32路的操作,1 代表吸合 0 代表保持原来状态。最后 1 个字节的第0 位(BIT0)代表第 1 路,依次类推。 0x16 组翻转数据区域共 4 个字节,每个字节 8 位,共 32 位。最多代表对 32路的操作,1 代表翻转 0 代表保持原来状态。最后 1 个字节的第0 位(BIT0)代表第 1 路,依次类推。0x20翻转某路数据中的第 4 个字节代表翻转第几路继电器,其他为 0。 0x21 点动闭合数据的第 1、2、3 字节代表时间(高位字节在前,单位 ms), 第 4 字节代表第几路 0x22 点动断开数据的第 1、2、3 字节代表时间(高位字节在前,单位 ms),第 4 字节代表第几路0x30翻转某路参考功能码 0x20,但是下位机不返回数据,指令可以连续发送。0x31断开某路参考功能码 0x11,但是下位机不返回数据,指令可以连续发送。0x32吸合某路参考功能码 0x12,但是下位机不返回数据,指令可以连续发送。0x33命令执行参考功能码 0x13,但是下位机不返回数据,指令可以连续发送。0x34组断开参考功能码 0x14,但是下位机不返回数据,指令可以连续发送。0x35组吸合参考功能码 0x15,但是下位机不返回数据,指令可以连续发送。0x36组翻转参考功能码 0x16,但是下位机不返回数据,指令可以连续发送。 0x37点动闭合参考功能码 0x21,但是下位机不返回数据,指令可以连续发送。0x38点动断开参考功能码 0x22,但是下位机不返回数据,指令可以连续发送。 0x40 读地址0x00,0x00,0x00,0x00注意事项,使用广播地址 245 来读取模块地址。 0x41 写地址数据中的第 4 个字节代表模块的新地址。注意事项:上电 10 秒钟之内允许写地址,如果有拨码开关,需要将拨码开关拨到 0 的位置。0x70读变量前 3 个字节为 0x00 0x00 0x00。第 4 个字节代表变量的序号 0x71 写变量前 3 个字节代表变量的值,高位字节在前。第 4 个字节代表变量的序号 下位机返回数据帧格式: 数据头地址功能码数据区校验和1 字节0x221 字节1 字节第 1 字节第 2 字节第 3 字节第 4 字节1 字节,将前面的7 个字节相加 下位机返回数据帧说明: 功能码功能码说明数据区内容(4 个字节)0x10读取状态 继电器输出板或者输入检测板:数据区域 4 个字节,每个字节 8  位,共 32 位。代表 32 路的状态。最后 1 个字节的第 0 位代表第 1 路,依次类推。 输入输出板:第 1、2 个字节代表输入的状态,第 3、4个字节代表输出的状态。0x11断开某一路0x12吸合某一路0x13命令执行0x14组断开0x15组吸合0x16组翻转0x40返回模块地址0x70读内部变量前 3 个字节代表内部变量的值,高位字节在前。第 4 个字节代表内部变量是序号注意事项:此功能码只适用于支持内核可编程的模块0x71写内部变量 广播地址说明: 个别情况下,需要快速的打开或者关闭总线上所有继电器,这个时候使用广播地址, 广播地址的值为 245,也就是说,向地址 245  发送的指令,总线上的每一个地址都会执行,关闭广播地址 245 的继电器,也就是关闭总线上的所有继电器,同样的道 理,打开广播地址 245 的继电器,也就是打开总线上所有的继电器。 0x30-0x38 功能码为指令连发功能码,因为这些功能码没有回码,所以可以连续发送,因此可以更快速的发送指令。为了让指令更快速的发送,引入了数据连发指令。 很多情况下,用户不需要查询或知道继电器板的当前状态,只需要按照自己的要求来打开或者关闭某几路,这个时候使用无回码指令就会很方便。 无回码指令表(以地址 1 为例,指令可连续发送): 吸合第 1 路 55 01 32 00 00 00 01 89断开第 1 路 55 01 31 00 00 00 01 88吸合第 2 路 55 01 32 00 00 00 02 8A断开第 2 路 55 01 31 00 00 00 02 89吸合第 3 路 55 01 32 00 00 00 03 8B断开第 3 路 55 01 31 00 00 00 03 8A吸合第 4 路 55 01 32 00 00 00 04 8C断开第 4 路 55 01 31 00 00 00 04 8B吸合第 5 路 55 01 32 00 00 00 05 8D断开第 5 路 55 01 31 00 00 00 05 8C吸合第 6 路 55 01 32 00 00 00 06 8E断开第 6 路 55 01 31 00 00 00 06 8D吸合第 7 路 55 01 32 00 00 00 07 8F断开第 7 路 55 01 31 00 00 00 07 8E吸合第 8 路 55 01 32 00 00 00 08 90断开第 8 路 55 01 31 00 00 00 08 8F吸合第 9 路 55 01 32 00 00 00 09 91断开第 9 路 55 01 31 00 00 00 09 90吸合第 10 路 55 01 32 00 00 00 0A 92断开第 10 路 55 01 31 00 00 00 0A 91吸合第 11 路 55 01 32 00 00 00 0B 93断开第 11 路 55 01 31 00 00 00 0B 92吸合第 12 路 55 01 32 00 00 00 0C 94断开第 12 路 55 01 31 00 00 00 0C 93吸合第 13 路 55 01 32 00 00 00 0D 95断开第 13 路 55 01 31 00 00 00 0D 94吸合第 14 路 55 01 32 00 00 00 0E 96断开第 14 路 55 01 31 00 00 00 0E 95吸合第 15 路 55 01 32 00 00 00 0F 97断开第 15 路 55 01 31 00 00 00 0F 96吸合第 16 路 55 01 32 00 00 00 10 98断开第 16 路 55 01 31 00 00 00 10 97吸合第 17 路 55 01 32 00 00 00 11 99断开第 17 路 55 01 31 00 00 00 11 98吸合第 18 路 55 01 32 00 00 00 12 9A断开第 18 路 55 01 31 00 00 00 12 99吸合第 19 路 55 01 32 00 00 00 13 9B断开第 19 路 55 01 31 00 00 00 13 9A吸合第 20 路 55 01 32 00 00 00 14 9C断开第 20 路 55 01 31 00 00 00 14 9B吸合第 21 路 55 01 32 00 00 00 15 9D断开第 21 路 55 01 31 00 00 00 15 9C吸合第 22 路 55 01 32 00 00 00 16 9E断开第 22 路 55 01 31 00 00 00 16 9D吸合第 23 路 55 01 32 00 00 00 17 9F断开第 23 路 55 01 31 00 00 00 17 9E吸合第 24 路 55 01 32 00 00 00 18 A0断开第 24 路 55 01 31 00 00 00 18 9F吸合第 25 路 55 01 32 00 00 00 19 A1断开第 25 路 55 01 31 00 00 00 19 A0吸合第 26 路 55 01 32 00 00 00 1A A2断开第 26 路 55 01 31 00 00 00 1A A1吸合第 27 路 55 01 32 00 00 00 1B A3断开第 27 路 55 01 31 00 00 00 1B A2吸合第 28 路 55 01 32 00 00 00 1C A4断开第 28 路 55 01 31 00 00 00 1C A3吸合第 29 路 55 01 32 00 00 00 1D A5断开第 29 路 55 01 31 00 00 00 1D A4吸合第 30 路 55 01 32 00 00 00 1E A6断开第 30 路 55 01 31 00 00 00 1E A5吸合第 31 路 55 01 32 00 00 00 1F A7断开第 31 路 55 01 31 00 00 00 1F A6吸合第 32 路 55 01 32 00 00 00 20 A8断开第 32 路 55 01 31 00 00 00 20 A7吸合全部 55 01 33 FF FF FF FF 85断开全部 55 01 33 00 00 00 00 89 好的,我将为每个功能码提供一个具体的示例数据帧,以帮助更好地理解协议的使用。以下是详细的功能码示例: 上位机功能码示例 0x10 - 读取状态 功能描述:读取继电器的状态。 数据区:0x00, 0x00, 0x00, 0x00 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x10 数据区:0x00, 0x00, 0x00, 0x00 校验和:0x55 + 0x01 + 0x10 + 0x00 + 0x00 + 0x00 + 0x00 = 0x66 完整数据帧:55 01 10 00 00 00 00 66 0x11 - 断开某路 功能描述:断开指定的继电器路。 数据区:前 3 字节为 0x00,第 4 字节为断开的继电器路数(例如,断开第 3 路)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x11 数据区:0x00, 0x00, 0x00, 0x03 校验和:0x55 + 0x01 + 0x11 + 0x00 + 0x00 + 0x00 + 0x03 = 0x6A 完整数据帧:55 01 11 00 00 00 03 6A 0x12 - 吸合某路 功能描述:吸合指定的继电器路。 数据区:前 3 字节为 0x00,第 4 字节为吸合的继电器路数(例如,吸合第 5 路)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x12 数据区:0x00, 0x00, 0x00, 0x05 校验和:0x55 + 0x01 + 0x12 + 0x00 + 0x00 + 0x00 + 0x05 = 0x6D 完整数据帧:55 01 12 00 00 00 05 6D 0x13 - 命令执行 功能描述:控制多路继电器的状态。 数据区:4 字节,每字节 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x13 数据区:0x00, 0x00, 0x00, 0x0F (吸合第 1-4 路) 校验和:0x55 + 0x01 + 0x13 + 0x00 + 0x00 + 0x00 + 0x0F = 0x73 完整数据帧:55 01 13 00 00 00 0F 73 0x14 - 组断开 功能描述:断开指定的多路继电器。 数据区:4 字节,每字节 8 位,共 32 位,1 表示断开,0 表示保持原状态。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x14 数据区:0x00, 0x00, 0x00, 0x01 (断开第 1 路) 校验和:0x55 + 0x01 + 0x14 + 0x00 + 0x00 + 0x00 + 0x01 = 0x6B 完整数据帧:55 01 14 00 00 00 01 6B 0x15 - 组吸合 功能描述:吸合指定的多路继电器。 数据区:4 字节,每字节 8 位,共 32 位,1 表示吸合,0 表示保持原状态。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x15 数据区:0x00, 0x00, 0x00, 0x02 (吸合第 2 路) 校验和:0x55 + 0x01 + 0x15 + 0x00 + 0x00 + 0x00 + 0x02 = 0x6C 完整数据帧:55 01 15 00 00 00 02 6C 0x16 - 组翻转 功能描述:翻转指定的多路继电器。 数据区:4 字节,每字节 8 位,共 32 位,1 表示翻转,0 表示保持原状态。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x16 数据区:0x00, 0x00, 0x00, 0x04 (翻转第 3 路) 校验和:0x55 + 0x01 + 0x16 + 0x00 + 0x00 + 0x00 + 0x04 = 0x6E 完整数据帧:55 01 16 00 00 00 04 6E 0x20 - 翻转某路 功能描述:翻转指定的继电器路。 数据区:前 3 字节为 0x00,第 4 字节为翻转的继电器路数(例如,翻转第 7 路)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x20 数据区:0x00, 0x00, 0x00, 0x07 校验和:0x55 + 0x01 + 0x20 + 0x00 + 0x00 + 0x00 + 0x07 = 0x7D 完整数据帧:55 01 20 00 00 00 07 7D 0x21 - 点动闭合 功能描述:点动闭合指定的继电器路。 数据区:前 3 字节为时间(单位 ms,高位在前),第 4 字节为继电器路数(例如,闭合第 6 路,时间 1000ms)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x21 数据区:0x00, 0x03, 0xE8, 0x06 (1000ms,第 6 路) 校验和:0x55 + 0x01 + 0x21 + 0x00 + 0x03 + 0xE8 + 0x06 = 0x88 完整数据帧:55 01 21 00 03 E8 06 88 0x22 - 点动断开 功能描述:点动断开指定的继电器路。 数据区:前 3 字节为时间(单位 ms,高位在前),第 4 字节为继电器路数(例如,断开第 9 路,时间 500ms)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x22 数据区:0x00, 0x01, 0xF4, 0x09 (500ms,第 9 路) 校验和:0x55 + 0x01 + 0x22 + 0x00 + 0x01 + 0xF4 + 0x09 = 0x7B 完整数据帧:55 01 22 00 01 F4 09 7B 0x30 - 翻转某路(连发) 功能描述:翻转指定的继电器路,无返回数据。 数据区:前 3 字节为 0x00,第 4 字节为翻转的继电器路数(例如,翻转第 12 路)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x30 数据区:0x00, 0x00, 0x00, 0x0C 校验和:0x55 + 0x01 + 0x30 + 0x00 + 0x00 + 0x00 + 0x0C = 0x8E 完整数据帧:55 01 30 00 00 00 0C 8E 0x31 - 断开某路(连发) 功能描述:断开指定的继电器路,无返回数据。 数据区:前 3 字节为 0x00,第 4 字节为断开的继电器路数(例如,断开第 15 路)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x31 数据区:0x00, 0x00, 0x00, 0x0F 校验和:0x55 + 0x01 + 0x31 + 0x00 + 0x00 + 0x00 + 0x0F = 0x91 完整数据帧:55 01 31 00 00 00 0F 91 0x32 - 吸合某路(连发) 功能描述:吸合指定的继电器路,无返回数据。 数据区:前 3 字节为 0x00,第 4 字节为吸合的继电器路数(例如,吸合第 20 路)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x32 数据区:0x00, 0x00, 0x00, 0x14 校验和:0x55 + 0x01 + 0x32 + 0x00 + 0x00 + 0x00 + 0x14 = 0x9C 完整数据帧:55 01 32 00 00 00 14 9C 0x33 - 命令执行(连发) 功能描述:控制多路继电器的状态,无返回数据。 数据区:4 字节,每字节 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x33 数据区:0x00, 0x00, 0x00, 0x1F (吸合第 1-5 路) 校验和:0x55 + 0x01 + 0x33 + 0x00 + 0x00 + 0x00 + 0x1F = 0xA3 完整数据帧:55 01 33 00 00 00 1F A3 0x34 - 组断开(连发) 功能描述:断开指定的多路继电器,无返回数据。 数据区:4 字节,每字节 8 位,共 32 位,1 表示断开,0 表示保持原状态。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x34 数据区:0x00, 0x00, 0x00, 0x08 (断开第 4 路) 校验和:0x55 + 0x01 + 0x34 + 0x00 + 0x00 + 0x00 + 0x08 = 0x98 完整数据帧:55 01 34 00 00 00 08 98 0x35 - 组吸合(连发) 功能描述:吸合指定的多路继电器,无返回数据。 数据区:4 字节,每字节 8 位,共 32 位,1 表示吸合,0 表示保持原状态。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x35 数据区:0x00, 0x00, 0x00, 0x10 (吸合第 5 路) 校验和:0x55 + 0x01 + 0x35 + 0x00 + 0x00 + 0x00 + 0x10 = 0x9B 完整数据帧:55 01 35 00 00 00 10 9B 0x36 - 组翻转(连发) 功能描述:翻转指定的多路继电器,无返回数据。 数据区:4 字节,每字节 8 位,共 32 位,1 表示翻转,0 表示保持原状态。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x36 数据区:0x00, 0x00, 0x00, 0x20 (翻转第 6 路) 校验和:0x55 + 0x01 + 0x36 + 0x00 + 0x0 +0 0x00 + 0x20 = 0xA2 完整数据帧:55 01 36 00 00 00 20 A2 0x37 - 点动闭合(连发) 功能描述:点动闭合指定的继电器路,无返回数据。 数据区:前 3 字节为时间(单位 ms,高位在前),第 4 字节为继电器路数(例如,闭合第 8 路,时间 2000ms)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x37 数据区:0x00, 0x07, 0xD0, 0x08 (2000ms,第 8 路) 校验和:0x55 + 0x01 + 0x37 + 0x00 + 0x07 + 0xD0 + 0x08 = 0xA8 完整数据帧:55 01 37 00 07 D0 08 A8 0x38 - 点动断开(连发) 功能描述:点动断开指定的继电器路,无返回数据。 数据区:前 3 字节为时间(单位 ms,高位在前),第 4 字节为继电器路数(例如,断开第 16 路,时间 1500ms)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x38 数据区:0x00, 0x05, 0xDC, 0x10 (1500ms,第 16 路) 校验和:0x55 + 0x01 + 0x38 + 0x00 + 0x05 + 0xDC + 0x10 = 0xB5 完整数据帧:55 01 38 00 05 DC 10 B5 0x40 - 读地址 功能描述:读取模块地址。 数据区:0x00, 0x00, 0x00, 0x00 示例数据帧: 数据头:0x55 地址:0xF5 (广播地址 245) 功能码:0x40 数据区:0x00, 0x00, 0x00, 0x00 校验和:0x55 + 0xF5 + 0x40 + 0x00 + 0x00 + 0x00 + 0x00 = 0x8F 完整数据帧:55 F5 40 00 00 00 00 8F 0x41 - 写地址 功能描述:写入模块的新地址。 数据区:前 3 字节为 0x00,第 4 字节为新地址(例如,新地址为 0x02)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x41 数据区:0x00, 0x00, 0x00, 0x02 校验和:0x55 + 0x01 + 0x41 + 0x00 + 0x00 + 0x00 + 0x02 = 0x9A 完整数据帧:55 01 41 00 00 00 02 9A 0x70 - 读变量 功能描述:读取内部变量。 数据区:前 3 字节为 0x00,第 4 字节为变量序号(例如,读取序号为 1 的变量)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x70 数据区:0x00, 0x00, 0x00, 0x01 校验和:0x55 + 0x01 + 0x70 + 0x00 + 0x00 + 0x00 + 0x01 = 0xC7 完整数据帧:55 01 70 00 00 00 01 C7 0x71 - 写变量 功能描述:写入内部变量。 数据区:前 3 字节为变量值(高位在前),第 4 字节为变量序号(例如,写入序号为 2 的变量,值为 0x123456)。 示例数据帧: 数据头:0x55 地址:0x01 功能码:0x71 数据区:0x12, 0x34, 0x56, 0x02 校验和:0x55 + 0x01 + 0x71 + 0x12 + 0x34 + 0x56 + 0x02 = 0xA1 完整数据帧:55 01 71 12 34 56 02 A1 下位机返回功能码示例 0x10 - 读取状态 功能描述:返回继电器的状态。 数据区:4 字节,每字节 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。 示例数据帧: 数据头:0x22 地址:0x01 功能码:0x10 数据区:0x00, 0x00, 0x00, 0x0F (第 1-4 路吸合,其余断开) 校验和:0x22 + 0x01 + 0x10 + 0x00 + 0x00 + 0x00 + 0x0F = 0x42 完整数据帧:22 01 10 00 00 00 0F 42 0x40 - 返回模块地址 功能描述:返回模块的当前地址。 数据区:4 字节,返回模块地址(例如,地址为 0x03)。 示例数据帧: 数据头:0x22 地址:0x03 功能码:0x40 数据区:0x00, 0x00, 0x00, 0x03 校验和:0x22 + 0x03 + 0x40 + 0x00 + 0x00 + 0x00 + 0x03 = 0x68 完整数据帧:22 03 40 00 00 00 03 68 0x70 - 读内部变量 功能描述:返回内部变量的值。 数据区:前 3 字节为变量值(高位在前),第 4 字节为变量序号(例如,序号为 1 的变量值为 0x123456)。 示例数据帧: 数据头:0x22 地址:0x01 功能码:0x70 数据区:0x12, 0x34, 0x56, 0x01 校验和:0x22 + 0x01 + 0x70 + 0x12 + 0x34 + 0x56 + 0x01 = 0x8C 完整数据帧:22 01 70 12 34 56 01 8C 总结 以上是每个功能码的示例数据帧,涵盖了上位机发送和下位机返回的所有场景。每个示例都包含了完整的数据帧结构和校验和计算,确保协议的正确性和完整性。如果需要进一步的解释或修改,请随时告诉我! 进阶玩法 内核与功能模块使用说明 一、内核简介 内核是用户操作模块的核心工具,用于实现以下功能: 输入与输出的映射关系。 收发字符串或其他数据。 使用定时器进行延迟或其他定时处理。 内部变量的格式转换。 其他高级功能。 二、外部输入 外部输入功能允许模块检测外部事件,支持以下触发方式: 上升沿触发(断开到闭合)。 下降沿触发(闭合到断开)。 状态触发(持续条件满足)。 单击或双击触发(需设置时间常数,默认500ms)。 三、输出状态变化 输出状态变化涉及以下内容: 指令操作面板:输出LED指示灯状态。 继电器模块:控制继电器的开/关状态。 MOS输出模块:控制MOS管的开关状态。 用户可以控制单路或多路的打开、关闭、翻转,或点动操作。 四、中间继电器 中间继电器是虚拟的继电器,用于: 程序控制其开/关状态。 检测其上升沿或下降沿。 将外部连续事件转化为内部状态变化事件。 五、内部变量 内部变量是有符号变量,用于记录中间数据,支持以下操作: 作为输入:与数字比较(大于、小于、等于),用于条件判断。 作为输出:存储定时器、时间、日期、继电器状态等信息。 运算功能:支持加法运算,可作为计数器使用。 六、定时器 简介:定时器值为正整数,默认为非0减1定时器。 用法: 设置定时器初值(如100)。 使用定时器值触发其他操作(如定时器等于80时触发)。 示例:每隔100ms,第一路输出翻转一次,并通过数据口1发送字符串“123”。 七、函数使用说明 功能:模块包含100个函数,用于增强程序易读性、节省空间、实现多级判断。 调用方法: 在输出选项中选择“函数调用”。 参数1选择“函数调用”,参数2选择具体函数。 意义: 提高主程序的易读性。 避免重复代码,节省空间。 八、函数使用方法 编辑:通过菜单-设置-函数列表启动函数编辑器。 存储:函数可单独存储为.hanshu文件,支持导入到主程序或函数界面。 调用示例: 输入断开到闭合时,函数执行一次。 函数每隔一秒钟执行一次。 九、系统简单设置 操作联机继电器数据口:默认数据口1。 操作联机继电器返回码:可选择带返回码或不带返回码。 擦除存储区:擦除内部变量存储区或数组存储区的ROM。 十、系统特殊设置 点动操作时间设置:设置点动继电器的时间(单位:ms)。 临时数据接收时间间隔:默认10ms,用于区分数据包。 输入连击和长按时间常数:默认500ms,用于判断双击或连击。 程序运行间隔:默认10ms,可调整。 十一、临时数据包处理 功能:接收的临时数据包存储在缓冲区,可进行处理。 应用:兼容市面上的485、串口或TTL通讯协议,实现协议转发。 十二、数组简单处理 操作: 加上其他数组:将一个数组添加到另一个数组尾部。 赋值为其他数组:替换数组内容。 删除字节:删除指定序号的字节。 添加变量字节:在数组最前面添加字节。 十三、内部变量的使用方法 功能: 将系统变量赋值给内部变量。 将内部变量值赋值给其他变量。 支持位操作,读写某一位的值。 存储:支持将内部变量保存到RAM或非易失性存储区(需硬件支持)。 十四、定时处理 功能:通过时钟芯片实现定时任务。 示例: 每天早上和下午定时打开第一路继电器。 每天8点到12点之间保持第一路闭合。 十五、格式转换 内部变量与数组转换: 十进制字符串与内部变量相互转换。 数组与内部变量相互转换(高位在前,低位在后)。 示例: 内部变量123转换为数组0x31 0x32 0x33。 数组0x01 0x02转换为内部变量值33。 十六、实际应用 - 提取临时数据中的变量 功能:接收临时数据后,提取特定字节并转换为内部变量。 示例: 判断数据包字节数和前两个字节值。 提取第3到第6字节的值并转换为内部变量1。 十七、实际应用 - 变量按固定格式发送 功能:将内部变量转换为数组,并添加头尾字节后发送。 示例: 将内部变量1转换为数组,添加22 01 10头字节和校验字节后发送。 十八、实际应用 - 协议转换器 功能:将不同厂家的协议对接,实现设备间的通信。 前提:厂家通讯协议开放。 十九、实际应用 - 电子协议举例 功能:接收数据后,判断字节和校验成功后执行相应操作。 示例: 判断前两个字节和校验成功后,执行函数1。 函数1内部继续判断其他字节,执行相应操作。 六、注意事项 安全警告: 严禁带电接线! 感性负载(如电机)需额外加装保护电路。 网络问题: 若指示灯不亮,检查电源和网线。 勿修改默认网络配置,否则需联系技术支持复位。 协议调试: 推荐工具:USB转485模块 + 串口调试助手。 指令无效?检查地址和校验和是否正确! 七、技术支持 客服电话:18801054468 --- ### 662. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 型号:LS520 | 颜色:银色 一、产品参数 项目规格通讯方式RS485/无线/有线电压/扭矩12V、220V / 1.2Nm转速112 RPM材质铝合金适配轨道类型单轨/双轨/异形定制 二、核心功能与优势 静音动力 进口电机国内组装,运行音量极低(不挂轨道时几乎无声) 支持观看实际演示视频验证 耐用设计 全铝合金外壳,抗磨损耐腐蚀 椭圆形窄边造型,节省安装空间 智能控制 RS485协议支持窗帘任意位置停止及百分比开合 遥控器内置定时功能,干节点接口便于系统集成 应急操作 停电手动模式(带离合器) 手拉软启动功能(可单独关闭) 灵活适配 行程自动调节,支持轨道折叠运输 异形轨道可定制(90°/135°等) 三、安装前准备 📏 测量指南 单轨窗帘盒:预留宽度≥15cm 双轨窗帘盒:预留宽度≥25cm 轨道长度 = 墙面间距 - 4cm 📝 购买需提供信息 窗帘类型:□对开帘(中间向两侧) □单开帘(单侧开启) 窗帘长度:______ cm(示例:352cm) 窗帘高度:□3M □6M 电机位置:□左侧 □右侧 是否异形:□是(需附图纸) □否 四、购买与售后流程 提交尺寸 → 2. 工厂加工(2-3天) → 3. 轨道配件发货(运费到付) → 4. 电机及控制器发货 ⚠️ 重要须知 不支持退货:定制轨道不可复用,仅电机可回收 尺寸修改: 仅支持一次改短(不可加长) 因测量误差导致的换货需自行承担往返运费 五、技术支援 如需异形轨道设计、拉力计算或系统整合方案,请联系技术团队提供图纸及场景说明。 服务热线:18801054468 六、通讯协议 1.通信基础参数 参数值波特率9600 bps数据位8位停止位1位奇偶校验无校验校验方式CRC-16/MODBUS多项式0x8005初始值0xFFFF 2.数据帧结构 [起始符 0x55][设备地址(2字节)][功能码][数据地址][数据内容][CRC16] 字段说明: 设备地址: ID_H(高字节):上级设备地址,不可为0x00或0xFF ID_L(低字节):本机地址,不可为0x00或0xFF 广播地址:0x0000(全控指令,设备不返回数据) 默认地址:0xFEFE(恢复出厂设置后生效) 功能码: 0x01:读命令(查询状态) 0x02:写命令(配置参数) 0x03:控制命令(开/关/停等) 0x04:请求命令(从机请求分配地址) 数据地址:决定具体操作类型(见下表)。 3.核心指令速查表 示例中默认使用 0x12 0x34,实际需替换为目标地址 1. 控制命令(功能码 0x03) 操作数据地址数据内容示例(十六进制)打开0x01无55 12 34 03 01 AD 8A关闭0x02无55 12 34 03 02 ED 8B停止0x03无55 12 34 03 03 2C 4B百分比0x040x00~0x6455 12 34 03 04 1E C8 E5(30%)删除行程0x07无55 12 34 03 07 2D 88恢复出厂0x08无55 12 34 03 08 6D 8C 2. 读命令(功能码 0x01) 查询内容数据地址返回数据说明当前位置0x020x00~0x64(百分比,0xFF为未校准)电机方向0x030x00默认方向,0x01反向手拉使能状态0x040x00开启,0x01关闭电机状态0x050x00停止,0x01打开,0x02关闭 3. 写命令(功能码 0x02) 配置项数据地址数据内容示例(十六进制)设置地址0x00新地址(2字节)55 00 00 02 00 12 34 50 7F(设为0x1234)反转方向0x030x01反向55 12 34 02 03 01 9D 5B关闭手拉0x040x01禁用55 12 34 02 04 01 2C 9A 4. 情景模式(A2/A3版功能) 操作数据地址数据内容示例(十六进制)设置情景0x090x01~0x1455 12 34 03 09 01 8D BD(情景1)运行情景0x0A0x01~0x1455 12 34 03 0A 01 8D 4D(运行情景1)删除情景0x0B0x01~0x1455 12 34 03 0B 01 8C DD(删除情景1) 4.地址设置流程 从机请求地址: 按住电机设置键5秒,LED闪烁两次后松开。 从机发送:55 FE 04 01 BB 14。 主机分配地址: 主机回复:55 00 00 02 00 12 34 50 7F(分配地址为0x1234)。 5.注意事项 校准要求: 使用百分比控制前,需先执行全开/全关操作校准行程。 未校准(返回0xFF)时,百分比指令无效。 广播指令: 地址设为0x0000可群控所有设备,但设备无返回数据。 错误处理: CRC校验失败:检查波特率与终端电阻(两端需接120Ω)。 电机过载:减少轨道阻力或检查负载。 6.快速参考口诀 55开头是起始,地址两字跟后边, 功能码定读/写/控,数据地址填中间。 校验CRC别忘算,群控地址0000填。 百分比需先校准,情景模式按号编! 产品购买:https://item.taobao.com/item.htm?ft=t&id=673185599289 --- ### 663. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能概述 MT603是一款可以对LED光源进行调光的大功率调光驱动。该驱动模块可以通过总线、WIFI、苹果家庭控制调光,实现高品质的调光氛围照明。 购买建议 MT603广泛适用于家庭、办公楼、酒店、银行、医院、学校、机场、博物馆、实验室、工厂等有智能灯光控制需求的用户,也适用于弱电集成商、调光师等专业人士使用。 产品参数 产品名称:1-60V 3路100W大功率调光驱动 产品型号:MT603 产品重量:0.35kg 外观尺寸:69*57*87mm 通讯方式:RS485总线/WIFI 波特率:9600 输入电压:12-60V 输出电压:1-60V 驱动能力:100*3=300W WIFI频率:2.4G 苹果家庭:支持Homekit直连控制 Wifi网络协议:开放 连接方式:客户端,Socket 工控协议:Modbus 安装方式:可以放入筒灯孔分布式安装,也可以选择DN35导轨安装 外壳材质:金属外壳 功能特点 支持1-60V调光,适配95%以上各种调光光源,如射灯、筒灯、轨道灯、磁吸灯、灯带等。 100*3=300W超大功率支持,无需调光放大模块就可以接入几十个射灯、筒灯! 支持总线调光、无线WIFI调光、Homekit苹果调光。 向下兼容RGB、CW、单色温等多种光源。 调光曲线可以配置,实现各种光源的精准调光匹配。 双层叠合电路板设计,减小尺寸,轻松放入75灯孔,实现分布式安装。 该方案包含驱动、电源、光源整体配套,大家可以在线下充分发挥自己的优势。 光源有筒灯、射灯、吸顶灯、庭院灯、平板灯、灯带,满足全场景照明需求。 支持工业Modbus控制协议,接入工控系统。 支持群组通配符分组控制,快速场景执行! 产品图片 接线图 使用方法 指示灯含义 上电指示灯1秒的频率闪,连接服务器成功,亮5秒灭1秒。 进入配网模式指示灯熄灭,配置成功恢复到1秒频率闪或者亮5秒灭1秒。 进入Homekit配置指示灯常亮,进入工作模式恢复到1秒频率闪或者亮5秒灭1秒。 总线使用方法 地址修改 设备上电后发送模块地址、Homekit连接密码和Modbus从机地址(因为HEX无法显示字母,所以用ASC编码格式)。 例如地址为1A 13 24 56 91,后文用XX XX XX XX XX替代,修改地址选择HEX发送。 发送:XX XX XX XX XX(旧地址)F8 E7 D6(固定)XX XX XX XX XX(新地址)。 反馈:操作成功反馈BC BC。 示例:1A 13 24 56 91 F8 E7 D6 2A 33 57 26 81,将旧地址1A 13 24 56 91改为新地址2A 33 57 26 81。 分组群控 地址通配符: FF 广播地址: FF FF FF FF FF FF可以在XX XX XX XX XX五字节地址的任意位置。 修改地址分路,通过地址与通配符的配置,达到群控效果和情景控制。 示例: 发送协议XX XX XX XX FF: 可以控制XX XX XX XX 00 - XX XX XX XX FE共254个地址的模块。 发送协议XX FF FF XX XX: 可以控制XX 00 00 XX XX - XX FE FE XX XX共254*254个地址的模块。 发送协议FF FF XX FF XX: 可以控制00 00 XX 00 XX - FE FE XX FE XX共254254254个地址的模块。 发送协议FF FF FF FF XX: 可以控制00 00 00 00 XX - FE FE FE FE XX共254254254*254个地址的模块。 发送协议FF FF FF FF FF: 可以控制所有模块。 上电状态配置 XX XX XX XX XX(地址)EA (固定) 00(第1路) 01(01开/00关) 01(第2路)01(01开/00关)02(第3路)01(01开/00关)0F(结尾)。 每2个字节为1路,设定上电的初始状态,01开/00关。 上电初始状态默认为关闭。 示例:XX XX XX XX XX EA 00 01 01 00 02 01 0F,设置初始上电状态,第1路为开,第2路为关,第3路为开。 控制协议 XX XX XX XX XX(地址)00(第1路功能)00 (输出值)01 (状态)00(第2路功能)00 (输出值)01 (状态)00 00 01(第3路)0F(结尾)。 每3个字节为1路,由功能、输出值、状态组成。 功能:02开关/01只开/00只关/ FF调节/03增加 /04 降低。 输出:00-FF分别对应1-255,等级00无输出,80输出50%,FF输出100%。 状态:01 有效 / 00 无效/02自适应调光照明配置。 示例:XX XX XX XX XX FF 80 01 FF 80 00 FF 80 00 0F,将第1路输出调节到128,50%;第2-3路保持不变。 示例:XX XX XX XX XX FF FF 01 FF 00 01 FF 80 01 0F,将第1路输出调节到256,100%、第2路调节到00,第3路调节到50%。 状态查询指令 发送XX XX XX XX XX(地址) 86 86 86 0F。 反馈XX XX XX XX XX(地址) 00 (固定)11(第1路输出百分比) 01 (状态)00(固定) 22(第2路输出百分比)01(状态) 00 33 01(第3路)00 33 01(第4路)00 33 01(第5路)0F(结尾)。 每3个字节为1路,由 固定+输出百分比+状态 组成。 亮度百分比:00-64分别对应亮度开启百分比0-100。 状态:01开/00关。 示例:发送:XX XX XX XX XX 86 86 86 0F。 反馈:XX XX XX XX XX 00 11 01 00 22 01 00 33 01 00 33 01 00 33 01 0F,第1路开启17%输出,第2路开启34%输出,第3-5路开启51%输出。 输出曲线设置协议 XX XX XX XX XX(地址) BB D2(固定)00(路数) XX(第1段输出时间间隔) XX(第2段输出时间间隔) XX XX XX…XX (第25段输出时间间隔) 0F。 路数:00第1路/01第2路/02第3路/FF所有路有效。 输出时间间隔:01-FF分别对应1-255,单位为10毫秒。 共25段曲线,第1段0-A对应1-10,第2段B-11对应11-20…第25段F0-FF对应240-255。 示例:XX XX XX XX XX BB D2 FF 01 11 20 30 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 30 20 13 10 0F,对5路有效,25段曲线输出时间间隔分别为:第1段10毫秒,第2段140毫秒,第3段320毫秒,第4段480毫秒,第5段640毫秒…第22段480毫秒,第23段320毫秒,第24段190毫秒,第25段160毫秒。 查询调光曲线配置协议 XX XX XX XX XX(地址)+87 87 00(路数) 0F。 返回:XX XX XX XX XX(地址) BB D2 00(路数) 09 0F 0B 0D 18 1C 23 34 3A 30 31 40 2F 29 1A 2A 1E 24 24 20 27 2D 28 26 1E 0F。 路数:00第1路/01第2路/02第3路。 输出初始亮度 XX XX XX XX XX(地址) C6 66 A4 (固定) 00 (路数) 01 (初始值) 0F。 路数:00第1路/01第2路/02第3路/FF所有路有效。 初始值:范围01-3B,01最小3B最大。 示例: XX XX XX XX XX C6 66 A4 00 22 0F,将第1路的初始输出值设置为最小22,当调光值为1的时候从22开始输出。 查询亮度初始值 XX XX XX XX XX(地址) 88 88 00(路数)0F。 返回 5字节地址+CC 66 A4 (值)00(路数)0F。 路数:00第1路/01第2路/02第3路。 呼吸输出模式配置 XX XX XX XX XX(地址) EE(固定)22 (第1路循环一次所需时间) 01 (状态) EE(固定)22(第2路循环一次所需时间) 01(状态) EE 33 01 0F。 每3个字节为1路,由 EE、循环一次所需时间、状态组成。 循环一次需要的时间:00-FF分别对应0-255,01为1s ,大于01每单位为4s。 状态:01开始呼吸模式 00停止呼吸模式。 示例:XX XX XX XX XX EE 22 01 EE 22 01 EE 22 00 0F,第1路启动循环输出一次所需时间34秒,第2路启动循环输出一次所需时间为34秒,第3路停止循环。 单次延时开关协议 XX XX XX XX XX(地址) DD(固定) 11(单次的时间) 01(01开,00关)DD 22 00 DD 33 00 0F。 每3个字节为1路,由 DD、单次开关一次所需时间、状态组成。 单次开关需要的时间:00-FF分别对应0-255,01为1s ,大于01每单位为4s。 状态:01开 00关。 模块WIFI配网 方法一 通过总线发送ASC编码,发送指令"HKTREST:1"。 以wifi广播名: laitecn-test 密码: 123456789 为例。 发送: HKTWFSSID:0C (表示后面有几个字符,16进制0C表示十进制12) laitecn-test。 回复: HKTWFSSID:0Claitecn-test。 发送: HKTWFPSD:09 (表示后面有几个字符,16进制) 123456789。 回复: head:HKTWFPSD realData:123456789。 重新通断电,wifi连接成功会输出本模块的ip地址。 方法二 手机连入局域网WIFI,同时通过485串口助手,选择ASC编码发送以下指令HKTREST:1。 搜索关注公众号莱特智能家居,点击HKT配网。 输入当前WiFi的密码,提示配网成功。 注:苹果手机可能会出现微信配网提示失败的情况,请使用安卓手机进行配网。 方法三 手机连入局域网WIFI,同时通过485串口助手,选择ASC编码发送指令"HKTREST:1"。 打开"ESP TOUCH"软件,选择第一行。 输入当前WiFi的密码,等待片刻后会提示配网成功。 WIFI联网控制使用方法 电脑和模块处于一个局域网,打开串口调试助手建立一个server。 用USB转485连接开关,波特率9600,8,N,1。 用asc编码发送数据配置连接的ip和端口。 配置IP:HKTHKD60SIP:0D(该字节为后面字符的长度包含符号)192.168.1.200。 配置端口:HKTHKD60SPORT:04(该字节为后面字符的长度包含符号)4198。 配置注册包:HKTHKD60SREG:08(该字节为后面字符的长度包含符号)11223344。 连接到服务端之后,就可以通过自定义总线协议或者Modbus协议控制MT603。 苹果Homekit连接使用方法 添加模块到家庭 通过485串口助手,选择ASC编码发送以下指令HKTMATCH:011进入配对状态。 进入Homekit配置指示灯常亮。 打开家庭点击添加配件。 点击更多选项。 一般情况下就会出现配件。如果没有则点击"我的配件未在此处显示"。 输入代码(代码已经粘贴到模块外壳)。 通过485串口助手,选择ASC编码发送以下指令HKTMATCH:010进入工作状态。 进入工作模式恢复到1秒频率闪或者亮5秒灭1秒。 接下来你就可以用苹果家庭控制和查看MT603的状态了。 APP调光控件展示 APP向下兼容RGBW/RGB/CW/单色温/双色温 多种控制。 三色/四色/五色多色调光控件可以选择展示全部路数或者单独展示哪一路。 Modbus协议 包装清单 MT603 说明书 保修卡 合格证 注意:请严格按照说明书操作,确保安全使用。如有疑问,请联系专业电工或技术支持。 --- ### 664. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能概述 一款集中控制模组,支持总线有线干接点控制,快速连接端口设计,显著降低维护成本。组地址功能,一条指令批量执行多场景控制,轻松实现单点、多点、区域、群组控制等预设场景。 适用场景 广泛适用于家庭、办公楼、酒店、医院、学校、车站、体育馆、博物馆、会展中心、工厂、农业、商场等有集中控制需求的用户。 产品参数 产品名称:8路集控继电器模组 版本:V3.5 产品型号:M8162 外壳材质:钣金金属 颜色:黑色 安装方式:标准DN35导轨 尺寸:69*57*87mm 重量毛重:0.45kg 继电器:8路自保持16A 速联接口:MQPORT 通讯:总线,有线 总线:RS485 波特率:9600 控制协议:自定义/Modbus协议(Modbus独立版本) 被控协议1:开放 被控协议2:自定义 供电电压:12V 供电电流:2A 发布时间:2023年10月 功能特点 打造精致外观,钣金金属外壳应用于集控模组,内部结构精细化考量设计,外观结构专利保护。 超大接线柱,轻松接线,公共端一体化设计,无需跳线。 标配8路自保持双线圈继电器,16A大功率,负载能力强,功耗低,不发热,寿命长。 快速插拔连接端子,模组间通讯电源快速连接。 一体设计背卡,DN35标准轨道,轻松取放模组。 精致车规级,带状态显示按钮,直观方便。 支持任意主动RS485面板接入,最常规面板方案。 支持通过M001 MESH无线场景面板接入,扩展最灵活面板方案。 支持RS485总线、有线多种控制方式。 出众的反应速度,抗干扰能力和稳定性。 可快速对接带主动发送功能,波特率为9600的总线面板。 支持反馈,接收自定义控制指令的同时还可反馈标准状态协议,既兼容第三方面板也兼容第三方总线控制系统。 组地址功能,一条指令批量执行场景控制,轻松实现单点、多点、区域、群组控制等场景预设,降低总线占用。例如1条指令可以让一栋楼上百回路灯光处于不同场景状态。 搭配多款智能配件,实现场景个性化控制。 远程控制,随时控制(需搭配智能控制系统使用)。 无惧断网,无网络状态下也能控制。 支持脱离主机运行,发送自定义场景指令。 支持接入三方总线控制系统,并实现双向通讯。 支持输入控制协议和输出控制协议全自定义。 支持1-255s之间延时关闭,延时打开。 支持按键锁定,防止误触。 支持定时开关机(需搭配智能控制系统使用)。 支持语音控制(需搭配智能控制系统,或者离线语音控制模块使用)。 上电状态配置协议,可以自定义任意输出路数的上电开启还是关闭状态。 自定义楼梯协议,可以自定义继电器之间的延时和开启关闭顺序。 使用方法 M8162 基础使用教程 模组外观接口、模组硬件连接。 A. 模组接口从左到右分别是两个MQPORT,用于从左边快速连接上一个模组,和从右边快速连接下一个模组,连接通讯和供电。 B. 超大接线柱,1 2 3 4 5 6 7 8接口接负载,L接进火线(上下两排的L不互通)。 C. 背部为标准DN35弹簧卡口。 D. 正面为8个有线输入按键,按键指示灯对应继电器开关状态。 E. 蓝色背景灯为模组供电状态。 总线控制使用方法 修改地址 设备上电后会自动反馈5字节地址(例如地址为1A 13 24 56 91,后文用XX XX XX XX XX替代)。 发送XX XX XX XX XX(旧地址)F8 E7 D6(固定)XX XX XX XX XX(新地址)。 示例:1A 13 24 56 91 F8 E7 D6 1A 33 57 26 82 将旧地址1A 13 24 56 91 改为新地址1A 33 57 26 82。 分路群控 地址通配符:FF。 广播地址:FF FF FF FF FF。 FF可以在XX XX XX XX XX五字节地址的任意位置。 修改地址分路,通过地址与通配符的配置,达到群控效果和情景控制。 示例: 发送协议XX XX XX XX FF:可以控制XX XX XX XX 00 - XX XX XX XX FE共254个地址的模块。 发送协议XX FF FF XX XX:可以控制XX 00 00 XX XX - XX FE FE XX XX共254*254个地址的模块。 发送协议FF FF XX FF XX:可以控制00 00 XX 00 XX - FE FE XX FE XX共254254254个地址的模块。 发送协议FF FF FF FF XX:可以控制00 00 00 00 XX - FE FE FE FE XX共254254254*254个地址的模块。 发送协议FF FF FF FF FF:可以控制所有模块。 单路控制指令 XX XX XX XX XX(地址)00(固定)00(路数)02(功能)0F。 路数:00 01 02 03 04 05 06 07 分别对应第1-8路。 功能:02开/关,01开,00关,03点动。 示例:XX XX XX XX XX 00 00 02 0F 第1路开关翻转。 多路整体操作指令 01-08路全开/全关:XX XX XX XX XX(地址)01(01全开/02全关)77 88 0F。 示例:XX XX XX XX XX 01 77 88 0F 路数1-8开关全开。 复合操作指令(1条指令控制8路继电器) XX XX XX XX XX(地址)CA(固定)00(路数)02(功能)01(路数)02(功能)…07(路数)02(功能)0F。 路数:00 01 02 03 04 05 06 07 分别对应第1-8路。 功能:02开/关,01开,00关,03点动,04保持原状态。 示例:XX XX XX XX XX CA 00 01 01 01 02 01 03 00 04 00 05 00 06 02 07 02 0F。 第1路开,第2路开,第3路开,第4路关,第5路关,第6路关,第7路翻转,第8路翻转。 状态查询指令 发送XX XX XX XX XX(地址)86 86 86 0F。 反馈XX XX XX XX XX(地址)00 00 00 01 00 01 00 01 01 01 01 01 00 01 00 01 0F(00关01开)。 示例:发送XX XX XX XX XX 86 86 86 0F。 反馈XX XX XX XX XX 00 00 00 01 01 01 00 00 01 01 00 01 00 01 00 01 0F。 表示路数1-8状态为关关关开开开关关。 楼梯协议指令 XX XX XX XX XX(地址)CB(功能)00 03(依次打开的时间间隔)00 04(保持全部打开状态的时间)00 05(依次关闭的时间间隔)0F。 依次打开的时间间隔,范围00 00-FF FF,时间单位为0.1秒。 保持全部打开状态的时间,范围00 00-FF FF,时间单位为0.1秒。 依次关闭的时间间隔,范围00 00-FF FF,时间单位为0.1秒。 功能:CD依次正向开启;CE依次反向开启。 示例:XX XX XX XX XX CD 00 03 00 04 00 05 0F。 依次正向开启,依次打开时间间隔为0.3秒;保持全部打开状态的时间为0.4秒;依次关闭的时间间隔为0.5秒。 自定义楼梯指令 XX XX XX XX XX(地址)D3(固定)00 01(延时时间间隔)01(01开/00关/02翻转)01(01正向/11反向)01(固定)0F。 延时时间间隔,范围00 00-FF FF,时间单位为0.1秒。 示例:XX XX XX XX XX D3 00 05 01 01 01 0F。 正向依次打开,打开延时时间间隔0.5秒。 自定义指令(输入控制输出) XX XX XX XX XX(地址)BB 00(固定)00(输入路数)F1(输入状态)CA(固定)00(输出路数)02(输出功能)01(输出路数)02(输出功能)…06(输出路数)02(输出功能)07(输出路数)02(输出功能)0F。 输入控制输出:当输入按键1接通的时候,输出1-8路继电器执行开关操作。 输入路数:00-07 分别对应第1-8路。 输入状态:F1表示长按,F2表示单击,F3表示双击。 输出路数:00-07 分别对应第1-8路。 输出功能:02开/关,01开,00关,03点动,04保持原状态。 示例:XX XX XX XX XX BB 00 00 F1 CA 00 01 01 01 02 01 03 00 04 00 05 00 06 02 07 02 0F。 当输入按键1长按的时候,继电器1-16路执行开关操作分别为:第1路开,第2路开,第3路开,第4路关,第5路关,第6路关,第7路翻转,第8路翻转。 删除自定义指令配置 XX XX XX XX XX(地址)BB 00(固定)00(输入路数)F1(输入状态)EE(固定)0F。 输入路数:00-07 分别对应第1-8路。 输入状态:F1表示长按,F2表示单击,F3表示双击。 示例:XX XX XX XX BB 00 07 F1 EE 0F 删除第8路长按时的配置。 输入发送自定义总线数据指令 XX XX XX XX XX(地址)BB 00(固定)00(输入路数)E1(输入状态)01(存储)YY YY YY YY YY YY YY YY YY YY YY(自定义总线数据)0F。 该自定义协议可以用于控制总线被控设备。 输入路数:00-07 分别对应第1-8路。 输入状态:E1继电器接通/E2继电器断开/E3单击/E4双击/E5长按。 存储:01-06代表第1-6条存储,每一路接通时可储存6条指令,断开时可储存6条指令,每一路共计支持存储12条。 示例:XX XX XX XX BB 00 00 E1 01 12 35 03 01 FC 4A 0F。 第1路第1条存储:第1路接通时发送窗帘总线数据12 35 03 01 FC 4A 0F,打开窗帘。 删除自定义总线数据 XX XX XX XX XX(地址)BB 00(固定)00(输入路数)E1(输入状态)EE(固定)0F。 输入路数:00-07 分别对应第1-8路。 输入状态:E1继电器接通/E2继电器断开/E3单击/E4双击/E5长按。 示例:XX XX XX XX BB 00 03 E2 EE 0F 删除输入路数4输入断开时的数据。 配置总线数据发送间隔 XX XX XX XX XX(地址)BB D1(固定)00 08(间隔时间)0F。 根据被控产品性能设置总线数据发送时间。 间隔时间01-FF对应1-255秒。 延时单位:50毫秒。 间隔时间:设置总线数据发送时间间隔延时为8*50=400毫秒。 示例:XX XX XX XX BB D1 00 02 0F 设置总线数据发送时间间隔延时为100毫秒。 删除所有输入配置数据 XX XX XX XX XX(地址)BB EE EE EE EE 0F 删除16路的所有数据。 锁定按键指令 锁定按键,开关全开:XX XX XX XX XX(地址)EC 00 0F FF 0F。 锁定按键,开关全关:XX XX XX XX XX(地址)EC 00 00 00 0F。 解锁按键指令 解锁按键,开关全开:XX XX XX XX XX(地址)EC 01 0F FF 0F。 解锁按键,开关全关:XX XX XX XX XX(地址)EC 01 00 00 0F。 开关延时配置(该模式需要将按键配置为点动模式) XX XX XX XX XX(地址)9F(固定)01(路数)01(时间)0F。 路数:00-07 分别对应第1-8路。 时间:01-FF对应1-255秒。 示例:XX XX XX XX XX 9F 07 06 0F 第8路延时6秒。 上电初始状态配置指令 XX XX XX XX XX(地址)EA(固定)00(路数)01(01开/00关)01(路数)00(01开/00关)02(路数)01(01开/00关)…07(路数)01(01开/00关)0F。 路数:00-07 分别对应第1-8路。 每2个字节为1组,设定上电的初始状态,01开/00关。 上电初始状态默认为关闭。 示例:XX XX XX XX EA 00 01 01 00 02 01 0F。 初始上电时,第1路开,第2路关,第3路开。 注:自保持继电器断电后会保持断电以前状态,上电会根据上电配置切换是否开关。 反馈模式配置协议 XX XX XX XX XX(地址)BB D2 00(固定)00(00打开标准主动反馈/01打开自定义主动反馈/03关闭主动反馈)0F。 反馈分为标准反馈和自定义反馈。 标准主动反馈:反馈XX XX XX XX XX(地址)16字节开关状态(0关/1开)0F。 自定义主动反馈:反馈在输入发送自定义总线数据指令中配置的自定义总线数据。 示例:XX XX XX XX BB D2 00 00 0F 打开标准主动反馈。 发送XX XX XX XX XX 86 86 86 0F。 反馈XX XX XX XX XX 00 00 00 01 01 01 00 00 01 01 00 01 00 01 00 01 0F 表示路数1-8状态为关关关开开开关关。 装箱清单 8路集控继电器模组M8162 说明书 保修卡 合格证 注意:请在使用前仔细阅读本说明书,确保正确安装和使用产品。如有任何疑问,请联系专业技术人员或售后服务。 --- ### 665. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 本模块是专为智能建筑系统设计的双向协议转换设备,实现KNX总线与RS-485总线之间的数据透传。通过工业级铝合金外壳保护,支持双电源供电和智能错误隔离,适用于楼宇自动化系统集成。 产品购买:https://www.modbus.cn/product/30795.html 二、核心功能 双向透传 KNX数据实时转发至485总线 485数据经协议校验后转发至KNX网络 智能防护 KNX专用芯片隔离非标协议 自动丢弃非法485数据 灵活配置 波特率支持 1200-115200 可设置 支持自定义数据映射规则 工业设计 双电源独立供电设计(KNX/12V DC) 铝合金壳体,8×4.5×1.8cm紧凑尺寸 三、技术参数 项目规格工作电压KNX总线供电 + 12V DC待机电流≤10mA通信接口KNX端子/RS-485接线端子波特率范围1200-115200bps工作温度-20℃~+60℃防护等级IP20质保期限1年 四、安装指南 接线说明 KNX侧: 红色 - KNX+ 黑色 - KNX- 485侧: A - 485+ B - 485- 12V - 外接电源正极 GND - 电源负极 上电流程 优先连接KNX总线 接通12V直流电源 观察状态指示灯: 五、配置教程 配置软件 基础配置 地址修改协议帧示例(RS485端发送) 默认地址背面有标签标注,或者在RS485通讯下,12V供电先断开后重新上电,设备会反馈它的当前地址. 原地址 + F8 E7 D6 + 新地址 # 5字节地址长度 例如:1A 23 24 25 26 F8 E7 D6 1A 11 11 11 11 (把地址1A 23 24 25 26修改成1A 11 11 11 11) 透传功能控制 开启:地址 + F7 36 49 01 0F 关闭:地址 + F7 36 49 00 0F 数据映射配置 使用USB转485适配器连接PC 运行配置软件选择对应COM口 输入模块地址并进入配置模式 点击"学习"按钮触发KNX设备 在数据窗口编辑转换规则 下载配置并退出配置模式 注:首次学习无响应时,需先执行下载空指令 视频教程 六、注意事项 ⚠️ 重要警告 KNX侧严禁接入非标电源 485总线建议增加终端电阻 七、故障排查 现象解决方案指示灯不亮检查电源极性/电压KNX数据未转发验证透传功能是否开启485数据无法上传检查波特率设置一致性配置学习无响应确认KNX设备组地址匹配 --- ### 666. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 本产品是一款将干接点信号转换为自定义总线数据的智能转换模块,支持通过干接点开关的开/关、单击、双击动作发送多组自定义指令,控制第三方设备(如照明、传感器、风机、阀门等),实现个性化场景联动。适用于家装、工装、市政、工业、农业等场景,支持RS485总线通讯及多种扩展协议(需搭配转换模块)。 二、产品特点 紧凑设计:尺寸46×57mm,可嵌入86底盒。 稳定可靠:每路输入光耦隔离,抗干扰强,支持300米网线弱电信号传输。 灵活配置: 支持地址修改、波特率(1200-115200bps)自定义。 每路开关支持发送4组自定义数据(开/关/单击/双击)。 支持0.1-399秒延时控制。 双向通讯:可查询接口状态,断网仍可本地控制。 安全防护:支持按键锁定(单路或全局),防止误触。 扩展性强:可接入KNX、CAN、LoRa、WiFi等协议(需转换模块)。 三、技术参数 项目参数产品型号8路IO转485模块电源输入DC 12-24V工作温度-10°C ~ 50°C通讯接口RS485(默认)、干接点波特率1200-115200bps(默认9600 8 N 1)外壳材质铝合金尺寸46×57mm重量55g 四、安装与接线 电源接入:连接DC 12-24V电源(注意正负极)。 干接点输入:将外部开关信号接入模块的1-8路输入端子。 RS485输出:A/B端子接入总线网络(需终端电阻匹配)。 接地保护:确保设备接地良好,避免干扰。 五、功能配置与指令说明 1. 地址修改 指令格式:旧地址(5字节) + F8 E7 D6(固定码) + 新地址(5字节) 示例:1A 13 24 56 91 F8 E7 D6 1A 33 57 26 81将地址从1A13245691更改为1A33572681。 2. 状态查询 发送指令:设备地址(5字节) + 86 86 86 0F 反馈示例:XX XX XX XX XX 00 01 00 01 00 00 00 01 01 01 00 01 00 00 00 01 0F(固定)表示8路状态依次为:关、开、关、开、关、关、关、开。 3. 单路按键锁定 指令格式:设备地址(5字节) + FF 00 32 + 路数(00-07) + 状态(00锁定/01解锁) 示例:1A 18 06 10 59 FF 00 32 00 00锁定第1路按键。 4. 全局锁定模式 指令格式:设备地址(5字节) + FF 00 33 20 + 状态(00锁定/01解锁) 示例:1A 18 06 10 59 FF 00 33 20 00锁定所有路数按键。 六、软件及使用教程 使用教程 七、注意事项 电源电压勿超24V,避免损坏模块。 RS485总线需采用屏蔽双绞线,终端设备加120Ω电阻。 长距离传输时建议测试信号稳定性。 修改地址时确保总线无冲突。 锁定功能启用后,需发送解锁指令方可恢复操作。 八、售后服务 质保期:1年(非人为损坏)。 技术支持:18801054468 产品购买:https://item.taobao.com/item.htm?ft=t&id=575621597516 --- ### 667. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品简介 本产品属于10寸彩屏控制器系列,具备多种尺寸规格,适用于家用、商用及工业设备的可视化人机交互场景。全系列产品采用高规格真彩色LCD显示屏,搭配电容式触摸屏,外观简约时尚,符合现代审美与使用习惯。 该10寸彩屏控制器适用于工业/商业电器控制、彩屏交互、人机交互、新风系统、空调系统及高端仪器等应用场合。内置10寸高分辨率全彩显示与电容式触摸玻璃面板,操作顺滑简单。搭载ARM Cortex™-A7双核1.2GHz处理器,处理性能强劲,满足各类运算需求。同时配备RS485、RS232、RJ45以及802.11b/g/n WIFI接口,满足智能电器与控制的硬件连接需求。机器后背采用磁吸式金属挂架滑扣式安装设计,安装简单且牢固可靠。高档CNC铝面板外壳,可融入家居环境。 产品手册下载: 10 寸中控屏产品手册下载 二、产品规格 (一)硬件规格 项目说明CPU与存储CPUARM Cortex™-A7双核1.2GHz芯片平台AK3760E内存64MByte闪存128MByte屏幕尺寸10英寸分辨率高清1280×800 IPS屏型号P10发色数24位全彩色(16.7M色)触摸全贴合电容式触摸屏外设与接口串口RS485数量1串口RS232(选配)数量1USB OTGMicro USB OTG数量1扩展存储TF卡槽(兼容SDHC标准)数量1按键隐藏式复位按键数量1以太网10M/100M全双工自适应RJ45以太网口(选配)数量1音频内置蜂鸣器数量1RTC时钟电池供电数量1指示灯电源指示灯数量1尺寸与重量整机尺寸242.18×160.96×8.0mm(墙外)匹配底盒86底盒(86×86mm)包装尺寸273×182×65mm整机重量见装箱清单包装重量见装箱清单工作环境电源输入DC 12V 500mA最大功率6W工作温度-20℃~70℃工作湿度RH10%~RH90%(不结露)存储环境储存温度-40℃~85℃储存湿度≤95%RH (二)软件规格 项目说明操作系统Linux 4.9.84 (三)尺寸规格 详见装箱清单。 (四)装箱清单 名称数量图例控制器主机1-安装支架1-固定螺钉2-安装说明-- 三、注意事项 安装前,请仔细阅读本产品手册并按手册内容操作,否则可能存在触电或火灾风险。 危险操作可能威胁人身安全,请谨慎操作。 本产品禁止未成年人安装与使用,以免造成人身伤害。 安装时应聘请专业资质人员或服务商。 确保布线符合当地及本手册标准,并由专业人员完成。 非专业人员安装可能导致产品故障、触电及火灾风险。 本产品禁止安装在易燃气体泄漏区域。 本产品禁止安装在盐雾大的环境。 本产品禁止进水。 本产品接线不能产生拉力,以免线断漏电。 本产品应安装在0℃~39℃室内环境,避免阳光直射。 禁止将电源线接到通讯线接口。 若安装在医院等环境,确保本产品不与其他产品相互干扰。 本产品应安装在能承受其重量的墙体上。 安装完成后,禁止移动或拆卸本产品。 禁止在潮湿环境下使用本产品。 确保本产品接入电源在额定输入范围内。 本产品为永久式连接设备,安装时应在外部装标准断开装置。 长期不使用时,请关闭电源。 核对接口输入线,防止连接错误损坏产品。 确认所有接线正确后再打开电源。 禁止自行改装、维修本产品。 若本机死机,可按复位键重新开机。 本产品带有存储功能。 本产品仅适用于海拔2000米及以下地区,仅适用于非热带气候条件。 串口屏GVSUI 配置 PC 软件功能说明书 0 GUI配置PC软件功能说明_V1.0下载 说明书链接:https://www.modbus.cn/category/gvsui 系统参数设置 软件及说明书下载 工程模版下载 视频教程 01、基础背景,按钮替换视频教程 02、按钮发送自定义协议教程 03、按钮发送自定义场景和延时指令视频教程 05、系统变量调用视频教程 06、协议解析展示视频 07、进度条发送自定义变动协议 08、带运算逻辑的变量发送 09、通过输入框改变变量 10、CRC校验发送协议 11、互锁按钮功能实现 12、更改开机LOGO导出升级 13、滑屏效果的实现方法 14、协议转换功能使用教程 15、色盘XRGB调光使用教程 16、定时发送指令教程 17、密码控件的使用和显示大小调整技巧 18、如何再页面上显示星期 19、如何实现弹框选择按钮教程 20、如何通过中文输入键盘改变文字显示 21、和校验设备的控制例如LS电动窗帘 22、根据自定义数据改变显示页面或者弹框 23、如何通过自定义协议改变按钮状态 24、如何通过自定义协议锁定屏幕和解锁 产品购买:https://item.taobao.com/item.htm?ft=t&id=821880658361 --- ### 668. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、产品概述 智能红外控制器是一款集红外遥控、状态监测与智能通信于一体的工业级控制设备。采用进口元件与专利技术设计,支持RS485、BLE5.1双模通信,兼容Modbus-RTU协议,可通过微信小程序或PLC组态实现远程控制。内置万能红外码库与64路学习通道,广泛应用于智慧酒店、工业节能、智能楼宇等场景,提供高可靠性的红外设备集成控制解决方案。 二、技术参数 类别参数详情电源输入DC 8V-28V宽电压,支持工业级电源适配通信接口RS485(A/B端子) + BLE5.1双模通信协议支持Modbus-RTU、蓝牙BLE5.1协议红外发射板载大功率红外管(无障碍距离>5米),支持外接延长线存储容量64通道红外学习存储,支持批量配置控制精度支持NEC/RC-5标准红外码,空调状态实时反馈环境适应性工业级防护,导轨式安装,-20℃~70℃工作温度 三、核心功能亮点 全能控制 内置空调/电视/机顶盒红外码库,免学习直接控制 支持空调温度、模式、风速等精细化调节 外接ZCT电流互感器,实时监测空调开关机状态 智能互联 双通道通信:RS485(Modbus-RTU)对接PLC/组态系统,BLE5.1直连微信小程序 微信小程序一键配网,手机端实时调试与发码测试 高效部署 64通道红外波形学习,支持投影仪、风扇等非标设备控制 批量读取/配置功能,适用于多房间快速复制部署 工业级设计 宽电压输入(8V-28V),适应复杂电力环境 板载快速测试键:短按发码测试,长按3秒进入自动匹配模式 四、安装与接线说明 安装步骤 机械固定 使用标准DIN导轨卡扣安装,确保设备水平固定 电源连接 接入DC 8V-28V电源至DC IN端子(红线+V,黑线-GND) 通信接线 RS485通信:连接A+/B-至控制器总线(建议使用屏蔽双绞线) 外设扩展: IR LED:外接红外延长发射管 ZCT:接入电流互感器(空调状态检测) STA:状态指示灯输出 注意事项 ⚠️ 接线前务必断电操作⚠️ RS485总线需终端匹配120Ω电阻(长距离通信时) 五、通讯协议及调试工具 一、通信协议帧 1. 通讯方式: UART 波特率:9600 数据位:8 停止位:1 校验位:无 流控:无  符合 Modbus-RTU 协议格式标准,地址范围 1-255。 2. Modbus-RTU 协议概述 2.1 读取多个寄存器命令,适用于功能码-03H 主机发送命令: 地址功能码起始寄存器地址读取寄存器个数校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高8位 从机返回信息: 地址功能码返回数据字节长度数据 1数据 2数据 N校验码(CRC16)1Byte1Byte1Byte1Byte1Byte1 Byte1 ByteN Byte1Byte1Byte设备地址功能码值N高 8 位低 8 位高 8 位低 8 位.....低 8 位高 8 位 2.2 写单个寄存器,适用于功能码-06H 主机发送命令: 地址功能码寄存器地址写入数据校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 从机返回信息: 地址功能码寄存器地址写入数据校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 2.3 写多个寄存器,适用于功能码-10H 主机发送命令: 地址功能码起始寄存器地址写入数据个数写入字节长度数据 1数据 2...数据 N校验码(CRC16)1Byte1 Byte1 Byte1 Byte1 Byte1 Byte1 Byte2 Byte2 Byte...2 Byte1 Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位1-255高低高低...高低低 8 位高 8 位 从机返回信息: 地址功能码起始寄存器地址写入寄存器个数校验码(CRC16)1Byte1Byte1Byte1Byte1 Byte1 Byte1Byte1Byte设备地址功能码值高 8 位低 8 位高 8 位低 8 位低 8 位高 8 位 2.4 蓝牙通信协议 起始符数据长度选项字段报文序列号用户数据段 校验码(CRC16)结束符2 Byte2 Byte1 Byte4 ByteN Byte1 Byte1 Byte2 ByteFF55HLenOPTSqueDataCRC_HCRC_LFFAAH固定  0xFF55协议数据 总长度, 高 8 位在 前 ,低 8 位在后08H-代表需要从设备回复应答 00H-代表蓝牙发送的数据芯片 无需回复应答04H-代表芯片主动发起的数据 上报,需要芯片自己增加唯一 序列号上报18H-代表蓝牙与串口数据透传唯一报文序列号填充 Modbus-RTU 数 据,参照 Modbus-RTU 数 据协议高8位低 8 位固定  0xFFAA1. 蓝牙控制指令案例:关闭空调数据测试协议蓝牙发送:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 蓝牙返回:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 2. 透传例程案例:参考寄存器 3000H串口上报数据:A5 10 30 00 00 01 02 11 22 D0 DD蓝牙收到数据:FF 55 00 0F 18 00 00 00 63 11 22 B4 82 FF AA 串口上报数据:A5 10 30 00 00 01 04 11 22 33 44 01 5A蓝牙收到数据:FF 55 00 11 18 00 00 00 02 11 22 33 44 BC A9 FF AA 蓝牙下发透传数据:FF 55 00 15 18 01 02 03 04 A5 06 00 25 00 00 81 25 0C 6B FF AA 芯片串 口输出数据:A5 06 00 25 00 00 81 25 蓝牙下发透传数据:FF 55 00 11 18 00 00 00 02 11 22 33 44 BC A9 FF AA 芯片串口输出数据:11 22 33 44 3. 功能码寄存器表(适配功能码 03H、06H、10H) 寄存器内容寄存器地址数据类型读/写类型寄存器值说明固件版本号0000H无符号短整型只读-芯片固件版本号。芯片 ID0001H无符号短整型只读-芯片唯一标识符。设备地址0002H无符号短整型可读写1~255RS485 设备地址。通信波特率0003H无符号短整型可读写0-24001-48002-96003-144004-192005-384006-560007-576008-1152009-12800010-23040011-15600012-46080013-50000014-51200015-60000016-75000017-92160018-100000019-150000020-2000000串口通信波特率(默认 9600)。MAC 地址0004H-0006H无符号短整型只读-6 字节 MAC 地址,占用 3 个寄存器空间。保留0007H-0008H无符号短整型保留-保留寄存器,不建议使用。芯片复位0009H无符号短整型可写-写入特定值以复位芯片。保留000AH-000FH无符号短整型保留-保留寄存器,不建议使用。空调匹配0010H无符号短整型可写-空调一键匹配控制寄存器。电视匹配0011H无符号短整型暂不支持-暂不支持。机顶盒匹配0012H无符号短整型暂不支持-暂不支持。风扇匹配0013H无符号短整型暂不支持-暂不支持。投影仪匹配0014H无符号短整型暂不支持-暂不支持。其他设备匹配0015H无符号短整型暂不支持-暂不支持。启动红外学习0016H无符号短整型可写-启动红外学习模式,可录制 64 通道红外波形。退出红外学习0017H无符号短整型可写-退出红外学习模式。测试红外学习0018H无符号短整型可写-测试学习到的红外波形。遥控 NEC 发码0019H-001AH无符号整型可写-发送 NEC 格式红外遥控码波形。遥控 RC-5 发码001BH-001CH无符号短整型可写-发送 RC-5 格式红外遥控码波形。蓝牙房间编号001DH无符号短整型可写-设置蓝牙广播名称中的房间编号。AD 管脚配置001EH无符号短整型可写-配置 ADIN/RS485 管脚功能。AD 采集电源阈值配置001FH无符号短整型可写-设置 AD 采集电源阈值,单位为 10mV。空调码库代号0020H无符号短整型可读写-空调匹配的码库代号。电视码库代号0021H无符号短整型可读写-电视匹配的码库代号。机顶盒码库代号0022H无符号短整型可读写-机顶盒匹配的码库代号。保留0023H-0024H无符号短整型保留-保留寄存器,不建议使用。空调电源状态0025H无符号短整型可读写0-关闭1-开启空调电源状态。空调温度状态0026H无符号短整型可读写0-16℃1-17℃...E-30℃空调温度状态寄存器。空调模式状态0027H无符号短整型可读写0-自动1-制冷2-除湿3-送风4-制热空调模式状态寄存器。空调风速状态0028H无符号短整型可读写0-自动风速1-一档风2-二档风3-三档风空调风速状态寄存器。空调灯光状态0029H无符号短整型可读写0-关灯1-开灯空调灯光状态寄存器。空调组合状态(下面提供具体说明)002AH-002CH无符号短整型可读写-空调组合状态控制寄存器。电视电源控制002DH无符号短整型可读写00H-关闭01H-开启电视电源键发码。电视音量002EH无符号短整型可读写0-音量减1-音量加电视音量控制寄存器。电视频道002FH无符号短整型可读写0-频道减1-频道加电视频道控制寄存器。电视信号源0030H无符号短整型可读写0-不切换1-切换频道电视信号源切换寄存器。电视返回按键0031H无符号短整型可读写0-不执行1-执行返回电视返回按键切换寄存器。机顶盒组合状态0032H-0034H无符号短整型暂不支持-机顶盒组合状态,暂不支持。机顶盒电源0035H无符号短整型可读写00H-关闭01H-开启机顶盒电源状态。机顶盒音量0036H无符号短整型可读写0-音量减1-音量加机顶盒音量控制寄存器。机顶盒频道0037H无符号短整型可读写0-频道减1-频道加机顶盒频道控制寄存器。机顶盒信号源0038H无符号短整型可读写0-不切换1-切换频道机顶盒信号源切换寄存器。机顶盒返回0039H无符号短整型可读写0-不执行1-执行返回机顶盒返回按键切换寄存器。互感器设备开关状态003AH无符号短整型只读0-关机1-开机外接互感器设备检测设备开关机状态。ADC 采集值003BH无符号短整型只读-读取 ADC 采样的值(代表电压值:10mV 为单位)。保留003CH-003FH无符号短整型保留-保留寄存器,不建议使用。空调本地代号0040H无符号短整型可读写-本地码库代号寄存器。空调控制代号0041H无符号短整型可读写-指令控制代号寄存器。空调电源状态0042H无符号短整型可读写0-关闭1-开启空调单一电源状态。空调温度状态0043H无符号短整型可读写16-31℃空调温度状态寄存器。空调模式状态0044H无符号短整型可读写0-自动1-制冷2-除湿3-送风4-制热空调模式状态寄存器。空调风速状态0045H无符号短整型可读写0-自动风速1-一档风2-二档风3-三档风空调风速状态寄存器。空调灯光状态0046H无符号短整型可读写0-关灯1-开灯空调灯光状态寄存器。保留0047H-0531H无符号短整型保留-保留寄存器,不建议使用。红外学习通道 1~620532H-114DH无符号短整型可读写-每个通道分配 100 个字节空间。红外学习通道 63114EH-1180H无符号短整型可读写-每个红外录制波形占用 100 个字节,占用 50 个寄存器。蓝牙透传数据寄存器3000H无符号短整型可读写-串口上报蓝牙数据透传格式。 CRC16校验工具下载: 本工具用于快速求出MODBUS通信中CRC16校验值。在输入框输入十六进制数据包(每两个字符表示一个字节,字符数必须是偶数),每个字节之间用空格隔开。点击计算后,本计算器可求出输入数据包的长度的16进制校验码。 协议示例: 协议说明 本协议默认地址为 A5。用户需要先将地址设置为 A5 进行测试。 1. 设置从设备地址 发送:FF 06 00 02 00 A5 FD AF 返回:FF 06 00 02 00 A5 FD AF 2. 固件版本号 发送:FF 03 00 00 00 01 91 D4 返回:FF 03 02 00 01 90 53 说明:固件版本号为 0x0001。 3. 芯片ID号 发送:FF 03 00 01 00 01 C0 14 返回:FF 03 02 50 56 2D AE 说明:芯片ID为 0x5056。 4. 设备从地址寄存器 设置地址: 发送:FF 06 00 02 00 A5 FD AF 返回:FF 06 00 02 00 A5 FD AF 获取地址: 发送:FF 03 00 02 00 01 30 14 返回:FF 03 02 00 A5 51 EB 说明:设备地址为 0xA5。 5. 串口通信波特率设置寄存器 波特率映射表: 值波特率024001480029600314400419200538400656000757600811520091280001023040011156000124608001350000014512000156000001675000017921600181000000191500000202000000 获取波特率: 发送:A5 03 00 03 00 01 6D 2E 返回:A5 03 02 00 02 48 5C 说明:波特率为 9600。 6. 空调匹配控制寄存器 匹配空调: 发送:A5 06 00 10 00 01 50 EB 超时返回:A5 06 00 10 80 03 B0 EA 匹配失败:A5 06 00 10 80 03 B0 EA 匹配成功:A5 06 00 10 00 4F D0 DF 说明:匹配到代码号 0x004F。 7. 启动红外学习模式 学习通道: 发送:A5 06 00 16 00 3F 31 3A 返回:A5 06 00 16 00 3F 31 3A 学习完成:A5 06 00 16 80 02 91 2B 学习超时:A5 06 00 16 80 03 50 EB 示例: 发送:A5 06 00 16 00 00 71 2A 返回:A5 06 00 16 80 02 91 2B 8. 退出红外学习模式 发送:A5 06 00 17 00 3F 60 FA 返回:A5 06 00 17 00 3F 60 FA 9. 测试红外学习波形 发送:A5 06 00 18 00 3F 50 F9 返回:A5 06 00 18 00 3F 50 F9 示例: 发送:A5 06 00 18 00 00 10 E9 10. 发送指定数据的NEC码红外波形 发送:A5 10 00 19 00 02 04 00 FF 01 FE 95 DB 返回:A5 10 00 19 00 02 89 2B 说明:发射NEC波形:00 FF 01 FE。 11. 空调码库代号 设置代码号: 发送:A5 06 00 20 02 E4 90 0F 返回:A5 06 00 20 02 E4 90 0F 获取代码号: 发送:A5 03 00 20 00 01 9C E4 返回:A5 03 02 02 E4 C8 B6 说明:空调代码号为 740。 12. 电视码库代号 设置代码号: 发送:A5 06 00 21 00 03 80 E5 返回:A5 06 00 21 00 03 80 E5 获取代码号: 发送:A5 03 00 21 00 01 CD 24 返回:A5 03 02 00 03 89 9C 说明:电视代码号为 3。 13. 机顶盒码库代号 设置代码号: 发送:A5 06 00 22 00 0B 71 23 返回:A5 06 00 22 00 0B 71 23 获取代码号: 发送:A5 03 00 22 00 01 3D 24 返回:A5 03 02 00 0B 88 5A 说明:机顶盒代码号为 11。 14. 空调状态寄存器 - 组合状态 发送:A5 10 00 2A 00 03 06 02 E4 AA 10 00 00 18 06 返回:A5 10 00 2A 00 03 B8 E4 002A寄存器:空调代码号,高位在前 002B寄存器:高位相当于红外协议状态码1 低位相当于红外协议的状态码2 002C寄存器:高位相当于红外协议的按键码 低位参数为0使用指令中的代码号 参数为1使用本地代码号 返回:A5 10 00 2A 00 03 B8 E4 15. 空调状态寄存器 - 电源状态 控制空调开关: 发送:A5 06 00 25 00 01 40 E5 返回:A5 06 00 25 00 01 40 E5 说明:空调开启。 关闭空调: 发送:A5 06 00 25 00 00 81 25 返回:A5 06 00 25 00 00 81 25 获取空调电源状态: 发送:A5 03 00 25 00 01 8C E5 返回:A5 03 02 00 00 C9 9D 说明:空调为关机状态。 16. 空调状态寄存器 - 温度状态 控制空调温度: 发送:A5 06 00 26 00 0E F0 E1 返回:A5 06 00 26 00 0E F0 E1 说明:空调温度设置为 30°C。 获取空调温度状态: 发送:A5 03 00 26 00 01 7C E5 返回:A5 03 02 00 0E 48 59 说明:空调温度为 30°C。 17. 空调状态寄存器 - 模式状态 控制空调模式: 发送:A5 06 00 27 00 04 21 26 返回:A5 06 00 27 00 04 21 26 说明:空调模式设置为 制热。 获取空调模式状态: 发送:A5 03 00 27 00 01 2D 25 返回:A5 03 02 00 04 C8 5E 说明:空调模式为 制热。 控制空调模式(0:自动 1:制冷 2:除湿 3:送风 4:制热) 18. 空调状态寄存器 - 风速状态 控制空调风速: 发送:A5 06 00 28 00 03 50 E7 返回:A5 06 00 28 00 03 50 E7 说明:空调风速设置为 三级。 获取空调风速状态: 发送:A5 03 00 28 00 01 2D 25 返回:A5 03 02 00 03 89 9C 说明:空调风速为 三级。 控制空调风速(0:自动 1:一级 2:二级 3:三级) 19. 空调状态寄存器 - 灯光状态 控制空调屏显: 发送:A5 06 00 29 00 01 80 E6 返回:A5 06 00 29 00 01 80 E6 说明:空调屏显开启。 获取空调屏显状态: 发送:A5 03 00 29 00 01 4C E6 返回:A5 03 02 00 01 08 5D 说明:空调屏显为 开启。 20. 电视状态寄存器 - 电源状态 发送:A5 06 00 2D 00 01 C1 27 返回:A5 06 00 2D 00 01 C1 27 21. 电视状态寄存器 - 音量状态 发送:A5 06 00 2E 00 01 31 27 返回:A5 06 00 2E 00 01 31 27 发电视音量码(1:音量加 0:音量减) 22. 电视状态寄存器 - 频道状态 发送:A5 06 00 2F 00 01 60 E7 返回:A5 06 00 2F 00 01 60 E7 发电视频道码(1:频道加 0:频道减) 23. 电视状态寄存器 - 信号源状态 发送:A5 06 00 30 00 01 51 21 返回:A5 06 00 30 00 01 51 21 24. 电视状态寄存器 - 返回状态 发送:A5 06 00 31 00 01 00 E1 返回:A5 06 00 31 00 01 00 E1 25. 机顶盒状态寄存器 - 电源状态 发送:A5 06 00 35 00 01 41 20 返回:A5 06 00 35 00 01 41 20 26. 机顶盒状态寄存器 - 音量状态 发送:A5 06 00 36 00 01 B1 20 返回:A5 06 00 36 00 01 B1 20 发机顶盒音量码(1:音量加 0:音量减) 27. 机顶盒状态寄存器 - 频道状态 发送:A5 06 00 37 00 01 E0 E0 返回:A5 06 00 37 00 01 E0 E0 发机顶盒频道码(1:频道加 0:频道减) 28. 机顶盒状态寄存器 - 信号源状态 发送:A5 06 00 38 00 01 D0 E3 返回:A5 86 01 C2 43 说明:机顶盒无信号源数据。 29. 机顶盒状态寄存器 - 返回状态 发送:A5 06 00 39 00 01 81 23 返回:A5 06 00 39 00 01 81 23 30. 下载空调dp数据1 (0x0100-0x04bf) 数据帧示例: 第一帧:A5 10 01 00 00 78 F0 03 45 29 2D 13 43 42 36 02 15 01 04 A2 AC A7 B5 B0 B1 B2 AD FF 05 A1 AE FF 07 A1 AE FF 06 A6 FF 08 A3 FF 03 AB B3 FF 02 A8 FF 00 A8 FF 01 8D 9D FF 00 FF FF 02 01 00 00 01 00 02 00 00 02 01 00 00 02 00 00 00 00 02 00 00 03 00 01 01 03 00 02 03 00 00 04 01 05 03 04 00 00 04 00 00 00 01 06 00 01 FF 02 00 FF 02 01 FF 02 31 FF 07 32 33 34 35 36 37 FF 06 B2 4D 00 00 00 00 06 B5 4A F5 00 00 00 06 B2 4D 7B 84 E0 1F 06 B2 4D 0F F0 E0 1F 06 B2 4D 6B 94 E0 1F 0C B2 4D E0 1F 03 FC B2 4D 00 00 00 00 12 B3 88 9A AA AA D7 B4 AA FF 40 66 FD B2 4D BF 40 D0 2F 00 00 11 11 30 1B 23 1B 6B A2 00 80 13 00 25 9D C0 FF FF FF FF FF 00 00 11 11 30 1B 23 1B 6B E0 00 80 13 00 25 9D C0 FF FF FF FF FF 00 00 11 11 30 1B 23 1B 6B 80 00 00 FF 98 1A 第二帧:A5 10 01 78 00 78 F0 02 25 9D C0 FF FF FF FF FF 01 FF 0C 40 0B FF 06 C0 00 05 06 00 01 FF FF 0C 00 0B FF 04 C0 00 03 04 00 01 FF FF 0C 40 0B FF 0C C0 00 0B 0C 00 01 FF FF 0C 00 0B FF 0A C0 00 09 0A 00 01 FF FF 01 FF 01 FF FF 1E 20 03 FF BF 21 03 FF 9F 22 03 FF 5F 23 03 FF 3F 10 03 FF 1F 12 03 FF 1F 10 05 0C 08 12 05 0C 04 14 05 0C 0C 52 05 F0 10 53 05 F0 30 54 05 F0 20 55 05 F0 60 56 05 F0 70 57 05 F0 50 58 05 F0 40 59 05 F0 C0 5A 05 F0 D0 5B 05 F0 90 5C 05 F0 80 5D 05 F0 A0 5E 05 F0 B0 13 05 FC E4 20 08 FF 66 21 08 FF 28 22 08 FF 3C 23 08 FF 50 10 08 FF 65 12 08 FF 65 09 09 80 80 46 80 06 7F 00 81 06 7F 03 82 06 7F 07 83 06 7F 0B 84 06 7F 0F 85 06 7F 13 86 06 7F 17 87 06 7F 1B 88 06 7F 1F 89 06 7F 2B 8A 06 7F 27 8B 06 7F 2B 8C 06 D0 25 第三帧:A5 10 01 F0 00 78 F0 7F 2F 99 05 03 01 9A 05 03 01 9B 05 03 01 9C 05 03 01 90 03 1F 00 91 03 1F 03 92 03 1F 07 93 03 1F 0B 94 03 1F 0F 95 03 1F 13 96 03 1F 17 97 03 1F 1B 98 03 1F 1F 99 03 1F 03 9A 03 1F 07 9B 03 1F 0B 9C 03 1F 0F 9D 06 7F 7F 8D 05 03 03 20 03 E0 A0 21 03 E0 80 22 03 E0 40 23 03 E0 20 10 03 E0 00 12 03 E0 00 10 05 0C 08 11 05 0C 00 12 05 0C 04 13 05 0C 00 14 05 0C 0C 50 05 F0 00 51 05 F0 00 52 05 F0 10 53 05 F0 30 54 05 F0 20 55 05 F0 60 56 05 F0 70 57 05 F0 50 58 05 F0 40 59 05 F0 C0 5A 05 F0 D0 5B 05 F0 90 5C 05 F0 80 5D 05 F0 A0 5E 05 F0 B0 5A 06 80 80 5B 06 80 80 5C 06 80 80 5D 06 80 80 5E 06 80 80 20 08 FF 66 21 08 FF 28 22 08 FF 3C 23 08 FF 50 10 08 FF 65 12 08 FF 65 09 09 80 80 08 B0 05 FF A9 B1 05 FF A9 AD BF 65 第四帧:A5 10 02 68 00 3B 76 05 FF A5 A7 05 FF AA B5 05 FF A3 A2 05 FF A2 AC 05 FF A2 B2 05 FF 86 17 20 09 FF BF 21 09 FF 9F 22 09 FF 5F 23 09 FF 3F 10 09 FF 1F 12 09 FF 1F 10 0B 0C 08 12 0B 0C 04 14 0B 0C 0C 52 0B F0 10 53 0B F0 30 54 0B F0 20 55 0B F0 60 56 0B F0 70 57 0B F0 50 58 0B F0 40 59 0B F0 C0 5A 0B F0 D0 5B 0B F0 90 5C 0B F0 80 5D 0B F0 A0 5E 0B F0 B0 12 0B FC E4 01 00 DF A2 结束帧:A5 10 04 48 00 02 04 00 00 00 00 D3 CB 30.1下载空调dp数据2(0x2100-0x24bf) 第一帧:A5 10 21 00 00 78 F0 01 E2 17 05 02 15 16 14 01 79 01 00 A0 A1 AE B0 B1 A2 A3 A4 A5 A6 A8 A9 AC AD B2 B4 AA AB AF B3 FF FF 00 00 00 00 00 01 FF 14 A6 00 00 00 00 00 00 00 00 00 00 00 00 00 B5 00 00 00 00 00 BB BB BB 11 10 22 22 22 67 80 00 00 FF 00 33 00 C0 FF FF FF FF FF 09 40 0B FF 14 C0 00 0F 13 FF 09 00 0B FF 0E C0 00 01 0D FF 5E 20 06 E0 A0 21 06 E0 60 22 06 E0 40 23 06 E0 20 11 08 E0 20 12 08 E0 40 13 08 E0 C0 14 08 E0 80 01 05 40 40 07 05 80 80 51 02 F0 10 52 02 F0 20 53 02 F0 30 54 02 F0 40 55 02 F0 50 56 02 F0 60 57 02 F0 70 58 02 F0 80 59 02 F0 90 5A 02 F0 A0 5B 02 F0 B0 5C 02 F0 C0 5D 02 F0 D0 5E 02 F0 E0 31 02 0F 0C 32 02 0F 02 33 02 0F 04 34 02 0F 06 35 02 0F 08 36 02 0F 0A 37 02 0F 0F 41 03 F0 E0 42 03 F0 20 43 03 F0 05 F2 第二帧:A5 10 21 78 00 78 F0 40 44 03 F0 60 45 03 F0 80 46 03 F0 A0 47 03 F0 C0 61 04 02 02 05 07 40 40 0F 07 80 80 03 09 80 80 0D 09 40 40 09 0B 08 08 8D 04 40 40 9D 04 20 20 6F 04 20 20 81 08 1F 01 82 08 1F 02 83 08 1F 03 84 08 1F 04 85 08 1F 05 86 08 1F 06 87 08 1F 07 88 08 1F 08 89 08 1F 09 8A 08 1F 0A 8B 08 1F 0B 8C 08 1F 0C 91 06 1F 01 92 06 1F 02 93 06 1F 03 94 06 1F 04 95 06 1F 05 96 06 1F 06 97 06 1F 07 98 06 1F 08 99 06 1F 09 9A 06 1F 0A 9B 06 1F 0B 9C 06 1F 0C A9 0D 7F 04 A1 0D 7F 02 AE 0D 7F 02 B0 0D 7F 03 B1 0D 7F 03 A7 0D 7F 19 A5 0D 7F 01 A6 0D 7F 09 A8 0D 7F 05 A0 0D 7F 06 A3 0D 7F 0B A2 0D 7F 08 B2 0D 7F 08 AC 0D 7F 16 AD 0D 7F 15 B4 0D 7F 07 AA 0D 7F 10 AB 0D 7F 0D AF 0D 7F 10 B3 0D 7F 0D 21 11 F0 C0 22 11 F0 80 23 11 F0 A1 30 第三帧:A5 10 21 F0 00 01 02 40 01 B9 65 结束帧:A5 10 24 48 00 02 04 00 00 00 00 4A 0A 测试指令: A5 10 00 2A 00 03 06 FF 02 AA 10 00 00 04 3D 31. 房号(蓝牙名称) 设置房号: 发送:A5 06 00 1D 03 E9 C1 96 返回:A5 06 00 1D 03 E9 C1 96 获取房号: 发送:A5 03 00 1D 00 01 24 1B 返回:A5 03 02 03 E9 08 E3 说明:房号为 1001。 32. 读写学习数据 读取通道63学习数据: 发送:A5 03 11 4E 00 32 B8 10 返回:A5 03 64 FA 56 67 00 4C E0 0C 00 00 71 0F 2B 39 98 04 69 09 8B 13 00 00 40 80 41 81 06 41 82 18 41 C1 40 83 41 C2 40 83 41 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC 00 07 00 00 00 00 00 00 00 00 57 BA 写入通道63学习数据: 发送:A5 10 11 4E 00 32 64 B4 56 67 50 00 71 0D 00 00 71 2B 0E 00 77 04 92 09 00 20 00 00 40 80 41 81 41 82 1E 41 C1 40 80 01 41 C2 40 80 01 41 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B B4 2F 2D 00 00 00 00 00 00 00 FC 12 返回:A5 10 11 4E 00 32 3D D3 33. 配置PB1功能 设置PB1为AD检测: 发送:A5 06 00 1E 00 00 F0 E8 返回:A5 06 00 1E 00 00 F0 E8 获取PB1功能: 发送:A5 03 00 1E 00 01 FD 28 返回:A5 03 02 00 00 C9 9D 说明:功能为 0。 34. 配对AD电压(精度10mV) 设置AD电压为2V: 发送:A5 06 00 1F 00 C8 A0 BE 返回:A5 06 00 1F 00 C8 A0 BE 获取设置的AD电压: 发送:A5 03 00 1F 00 01 AC E8 返回:A5 03 02 00 C8 C8 0B 说明:电压为 2V。 35. 获取开关状态 发送:A5 03 00 3A 00 01 BD 23 返回:A5 03 02 00 01 08 5D 说明:开关状态为 开。 36. 获取PB1电压 发送:A5 03 00 3B 00 01 EC E3 返回:A5 03 02 00 E5 08 16 说明:PB1电压为 2.29V。 37. 获取MAC地址 发送:A5 03 00 04 00 03 5D 2E 返回:A5 03 06 D8 2F E6 59 E8 7E 05 D7 说明:MAC地址为 D8:2F:E6:59:E8:7E。 38. 蓝牙控制数据测试 关闭空调数据测试协议: 蓝牙发送:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 蓝牙接收:FF 55 00 15 08 01 02 03 04 A5 06 00 25 00 00 81 25 FD 81 FF AA 39. 蓝牙透传数据测试 串口上报数据: 发送:A5 10 30 00 00 01 02 11 22 D0 DD 蓝牙接收:FF 55 00 0F 18 00 00 00 63 11 22 B4 82 FF AA 蓝牙下发透传数据: 发送:FF 55 00 15 18 01 02 03 04 A5 06 00 25 00 00 81 25 0C 6B FF AA 芯片串口输出:A5 06 00 25 00 00 81 25 空调码库列表 Acsom296Akira(爱家乐)650073Alpin134366Amico652073Aqua036Az(5in1)184639640641141Blue Star(蓝星)307097024725Carrier778Carrier(开利)365366097078108109110277276284282280275279283281285278272274273062086064730031Cheblo004146Colrolla651Consul036407Crown(王冠)651Delonghi(德龙)651Dotels779Elco264Electer264652653654Elgin252Fedders(菲达士)274068Ferrolit655First656For.m.mg073Funiki312Gchv008General271Glbal086Glee275Grneral224Helton396Hemilton162Honeywell630Huawei029Ifb004Inverter291Johnso264Kelcinator709Kingshan645Klimatair402650657660073Kris623Kt02_d001653Kt02_d002068Kty001090Kty002069Kty003013Kty004222Kty005332Leader034Lg086087088089090091092093094095642780Loren-sebo660Mabe031Mitsuka658Nikko215Niso265Nokia755Norca659Nuni-air660Onida280643185006074Opal661Original239711Pereg366Philco303304Pilot662Rhoss663Saijo Denk664280149398070Sansui645000252Saowa(首华)396Saporo(沙普罗)651Sensor391Sogo070Sova(索华)687688Speed653Staright-aircon113Sunburg(森宝)178Superen024Tadiair068135134056073281366657Tadiran135134056264Tcl000002001004003005315628629727769Tcl通001000810015264652002812813653811646645643070Teco674068Tornado745Toyo777Toyo(东洋)068154650004349069333Trane(特灵)280366665Uni-air660Unionaire709Videocon305185000Vitron308Voltas301298300299074006252024071048752Ynovik289York296295297395706064027114733047667076734735048736325237791792艾、爱德龙(aidelong)651405650177357326069010154艾普顿396爱特(aite)004239349666154奥克斯015016018017350351019020404021022023024025026027760800奥力(oli)284062奥林巴斯(olympus)667奥特斯177澳柯玛024316214215216217103714澳科(aoke)405112668349154白雪(baixue)349135154阪神(banshen)671坂田000399北京京电(jdc)650068倍科177宾维空调001波尔卡288波乐(bole)337056167069波士高(boshigao)121182650349068154博士(boshi)135068博世398069彩星154349长风(changfeng)174长府(长谷)304029长虹246247112188248249250251177252253254702732766长岭(changling)657239266349690069401402403400诚远/维修版(chengyuan)669川岩(chuanyan)651创华(chuanghua)322670650028349069154265405创维338339335337336627729804春兰106334357107693694695696697698699700701达可(dake)651大金211225226227228229319318317358359360361691707724726741750751738297771772773805785大金星(dajinxing)154349069大拇指(damuzhi)316大松重工628大宇(daewoo)671672349069015稻田(inada)306330650349069154帝智646074399东宝(tobo)673674675018068154405188178406350东新宝(dongxinbao)650东芝097284320703048761049东芝(toshiba)284冬夏(donxia)056304107069154盾安(dunan)676226286069飞歌(phigco)286304飞利浦801飞鹿(feilu)351349069407富士通218219220221222223224268270269271362363364高路华(conrowa)405650392028349250069010333154高士达090歌林(kolin)287068格尔(geer)407134650200069154格兰仕066067068069070071072353354355356格力073074075635636076077637078079638333326340341342343715650740768729古桥210408冠远306光大(guangda)171677028204069154333国美004001628629338627海尔028029030258259036033037038039327040041042043314257347348349325260031032673757803海林013海信738802124128722海信科龙111112113114115116117118119120121122123124125411410126127128129130131132133134135136137138722723142737747748817海芝000韩电空调645和而泰704红麟079399022646001红旗079399022646001虹立146鸿怡(hongyi)405华宝114华高069159华科(huake)678华凌096060097098321099100101102103104105328华美(huamei)386409黄河210回力(huili)135068汇丰101184185013332333265154惠而浦139140141025142143075007145010146177085323144324716121128201124756786佳乐613江南空调(jiangnan)679将军(ogeneral)224杰士达(justice)650184185金北京614金鸿盛646074399金三洋(jensany)001金松(jinsong)650288350金正010金挚001177256锦尚705卡萨帝空调040康拜恩069114康佳(konka)349650101184013068645000256177808康丽(kangli)348279蓝波186367615368616369371370乐华rowa266267利凯尔(likaier)085141330184185154凉宇264麟酷764056龙禾(longhe)651罗兰斯宝(luolansibao)657麦克维(mcquay)068296387667680665631297282麦克维尔759美博(mbo)256006290150027177008美博空调783美的044045046047048049050051052053054055056057058059060061062063064065328344345346097美歌(meico)304177美菱(meiling)665366280名亿154265明星波音(mingxing,boyin)397内田354355356621619617618620317宁波惠康(ningbohuikang)366332纽圣空调机739诺维184欧伦024欧特斯(outes)775普奕(puyi)396七星(sevenstars)292645青林187穹胜(qiongsheng)264151日本日立794795796797798日彩(ricai)650056101184日江(rijiang)154405252271668650297101069185日立235236237238239240241242243244245717718728807日索(risuo)265257荣事达705645赛久电机(saijiudianji)664073三菱025147148149150004151152153154155156103157158159160331330332333385386377378379380381382383372373375376374384649719309099012三星161162163164165166167168169170171三洋230231232233188234322175387388389390391392393112三叶(sanye)396三钻(sanzuan)255沙美(shamei)357229山星(shanxing)294上菱(s-lin)681004348682001申花074绅宝(shenbao)405650185154胜风(shengfeng)407350250盛风飞鹿(shengfengfeilu)350068帅康(shuaikang)650239101069185双凤(twinswan)001双菱(shining)650184185双鹿184185松林夏(songlinxia)396松下088193194195196197198199200201202203204205206207208209210211212213352753755754767806784319松星(piezstar)068083苏宁极物632索伊(soyea)687068太亚(taiya)396天加(tica)758770282001120天津空调(tianjin)683天元(tianyuan)684685349216185154通用电气(ge)036统帅036万宝(wanbao)681650349184185王子(prince)651威力(weili)279650349114155265333379383381378380377382353331373374330348622184185623威特力(weiteli)185无品牌013241090000163166073097224268644006101645708709710069711712713720721738009749036299763079056765776775276774707781782790779787789788雾峰(wufeng)137151405203101184154西格玛029西冷(serene)193407357夏宝646078000001074399夏立646074399夏普287286394744743742746夏普/sharp286仙麟079399022646001先科311现代010小米302177647762小天鹅310178小雪人313小鸭265新飞188189190191192153121新科080081082083084085新科通085080145311131134814815083099新乐(xinle)183178351021401新凌(sinro)154新世纪好孩子731星和(xinghe)121650286185154兄弟396熊猫(panda)650349184185154332雪菲特083扬子184292293294309004耀马(yaoma)650263350184185伊莱克斯172173174071175176177178179180181155182183141001264060255305069074048286051146073101809629006移动(yidong)686樱花255256175252177迎燕(yingyan)068154305263028349405004668689赢松/国松078影逸(ineasy)123优尼爱尔(youniaier)348玉兔(tuetu)376624407185101184625250626月兔157072262261099101001珍宝271222268218270362郑州金达(zhengzhoujinda)350志高006007008009010011329012154013014150177中松(pascmio)177000252184024399074064001中意(zhongyi)333363佐丹(zuodan)154172待更新品牌165281待更新品牌265282 电视机码库列表 Jvc82228221Lg90590790489720781881581882209051025813010301780890589990590510251019102590510327780890510447201201Pptv912909Tcl2758648598578578618414864867851841484208488420842078037803860822784208426842082168215812981288127812684468578420842184208121842084201026481268420811578318558667786858Thtf7499067547539067774748777411147789108410807774百视通bestv913长虹changhong810460660010382205103828718114103821035284418436843681081038281061035281041035281028102871809980998436810880958094809480958095844180898088808780868858084808380828081809580796608078103828077841807680758075102381118111511121038210382706105911121057105710551038210531112818565869383710380827103682271079102658408407692466608154832194213214714977010431042104110531039111811187178158创佳821982188132821982198219创维1016101587187887887187110382881216878815887110238102383319191023810238871871102388102244941869252869871102381023893087333187687110238846181588158915102388691023886981638788693332762438158111222021981583318158331219822981938193819382128211821011128204819381913328187818682098698718169816886981588163195815887181588157815681558162815581528150814981488147845182481638711023879868158815881458158797481587972815879707827782633170633110238101787177617829796986979678158816379648163796297669766795982297972795679557954243820482048163820481638698698162869816279317930春兰81617984817979827981鼎科868东芝307110229223940307192810229240278930719669102043071307182268182818078113071飞利浦210210110577937790210福日1011781658164798710119高路华8173799079897988冠捷876706海尔haier949104499398096832883069280273238281281104410442818179817881798175817481728405817097710442802802808006800580048003800228880008172220079977996799579942808445799181747816781578148174781285580239611044281104480107757104810471079952104410029353海普3077海信801121125021121110124968258221779730691003211285211964211306826182088207820621182038202820182008200817181908189211818125825510129479971012997991306798681722578030781078017800779977982118029818980278189802580242878022802182028019801880178017101228014801380128011779777802270豪杰3063恒晨hcn1113华宇7499449439427766279805804803802惠科7785佳的美11061101金星819781968032803178077807780779911033103210291026819677887787金正780478037802京东方95697495693532172876康佳957994957969962994804880479948048707781995798039803980382179803957777777779579571062782470780518050804980488047805180478044804380448041804080398445777280369579577818957106195795787687677771046957994106977795795798039803酷开995984乐华8677367311977803乐视1123理想9353联想7762美乐7227803牡丹844580538052奇美1977763日立657733805477841095荣事达1120三星samsung70774977727677667652801103931039372570795770170727977727071039370710443777270770779037077077783707707707707707707707707707707725103937772777284451072三洋sanyo7941068106973884926946598056110210661065994106310668492106870673470470970277210791073106910681068上广电819580358196803380358033819610961094松下735776677661098776677667766109277661071索佳93539353935377732319索尼sony1042110421104211038710421251222222104408131042110421104218449789678931042110421104211042110421977710440306521579777统帅9799521044961万利达8361099109310891088108710861099未知3788878897886788578847885788478807879西湖3073231180642305夏华764夏普8428297802062062801776584297939793851877657765842842978977657765778197899789842842夏新7803厦华80648063806280618060805980588057805810521031805810288453307384461036厦新8065先锋893现代9803小米9864新科11002141熊猫8201011571667480738446807184518446806884511112111785567383810791079838683志高809 机顶盒码库列表 Abs10636Africa1120811206Avit1060010598Blackpcs9758D3mini11202D-box4151Dctv11203Edision11197111941119611192Evpad11190Fastway1019210177Funtv11195Fzmedia11191Humax443Idc11187Ikan100683004Illusion9752Imaqliq11183Inext9751Intelvision111939748Io11186Lg898Lumax11184Motorola531Netfor11181Nyatel11177Scvhd11174Sitidisital11172Sunny10637Suri11208Tcl110984154Tvnation11170U2c9758U互动1136511101604Vislonnet97579757Xcruiser9754爱华1521062510622安广网络112286969安广无线传媒3763安陆有线353安庆有线300安丘有线414安阳广电448鞍山有线678白银广电572百视通bestv118包头有线689保定有线10054790743577北川有线数字电视4172北方广电402310710433北京数字10067北仑数字489812北镇有线90本溪广电7864015滨州有线9646341兵团有线10045亳州有线69博罗有线128博尚10403博远10415沧州有线79010137苍南数字337317昌邑有线10191长葛有线109长虹98234174长江电讯772796269627长沙国安广电508312长泰传媒115455长垣有线100531005210051长治数字957296609679常熟有线10138常州有线146朝阳有线664郴州有线91094171陈店数字1122711226成都兴网10607106061125112224178成都有线41744170承德广通474577城阳广电1839866池州数字4191池州有线184滁州广电407869滁州有线69楚天金纬411楚天视讯148148楚天网络4031楚雄广电107创维1107918659910268294慈溪数字95521804达州广电469大华98269824大连有线10432大秦铁路109大庆油田数字567812大石桥9658大同有线150大显daxian1062110616大冶有线423岱山数字11341133丹东有线81290丹江口广电148丹阳互动563当涂广电69德清数字544德州数字45010616灯塔数字电视97东方广视81213803东方有线1380113802东风tv112148东台数字339东莞广电1061010344东莞有线1798东阳数字557东营有线412洞头广电5721805独山子345鄂广网络1161恩施广电148186番禺有线7728范县广电148飞利浦485封丘有线359烽火fiberhome9830凤城数字5619809凤泉有线10405凤阳无线546奉化数字107107佛山数字电视9847136615佛山有线1107611075浮山广电97福建广电11094110931109340331858116811681157167584107582581福州广电11093585587586抚顺数字40219511抚顺县数字电视8121164抚州有线359阜康广电544阜蒙县数字561阜宁数字3004阜新有线743阜阳有线69盖州数字9658甘肃有线189赣州有线359高密有线297高台有线10049高邮广电3004歌华有线510广电网络11225113152113广东iptv52311074广东广电103442729570广东有线130广容网络9208广铁数字123广西广电网络11224696贵州广电698哈尔滨有线电视87哈飞有线186哈密无线38海尔10641海丰有线96149613海南民视9383海南有线13797海信1064110641海盐数字289359汉川广电407910407航天有线812好而易1061910601合肥有线13791和平有线116576575河北广电110729844608608河津广电1041310412河南有线3739河源广电10867菏泽广电450鹤山广电30893088黑河广电566145黑龙江广电537536恒仁广电10402虹企传媒186湖北广电网络9858985798564031湖北有线9536148521湖南地面数字电视96789678湖南有线112232874420湖州数字2907726葫芦岛有线107152户户通504花都广播电视168华数106031041810189华为1062610601118789443427131滑县广电20414淮北有线69淮南有线131桓仁广电1125黄岛广电150黄山有线69417黄石有线4463772黄岩有线3741辉县数字电视9841鸡矿集团数字电视1149吉安有线359吉林广电102529832吉视传媒10521299即墨广电159济南广电494济宁有线355嘉善数字107建衡科技110891061811095江都有线146江门广电77303087江山数字483482江苏有线1108030049666江西有线3593593004江阴广电3004920胶南广电4013胶州有线3750揭东广电5699831揭阳有线10251金华数字553金坛有线3004金网通kingvon443锦州有线664晋城广电346晋煤数字417晋中广电1005荆州广电40113773荆州视信网络11景德镇有线359九江有线359九联科技104139841九台广电1122211222九洲106111042661416130042782756175莒县有线146173巨鹰科技10064691434喀左有线90812开发区数字电视541开平有线113613761康佳10609康金10071康特集团75810413克拉玛依有线3332宽甸数字1030640204019昆广网络90864028昆山有线154莱钢数字4501447莱芜有线984798469845莱州有线10068883710418兰溪数字电视10351兰州广电1868593644浪潮inspur10135乐清广电551乐视4444雷州广电113291132810194101939513历城广电34210413451丽江数字186利川广电9546溧阳有线10300146连南广电39963760涟水广电3004莲都数字553辽河油田数字5623997辽宁有线74492辽阳有线40014000399910268聊城中广数字559林芝数字1137临汾有线98415374临海数字1707临朐有线349临沂广电947394679465946494609459灵宝数字148灵石无线9430凌源有线90812浏阳国安广电517516515六安数字1134169龙江网络5379657536龙岩广电11093546113621陆丰有线1108761路桥数字3741潞安集团477麻城广电10409马钢有线1170梅州有线11096魔百盒51148牡丹江数字9711511150内蒙古广电137921122111220南昌广电41709666南昌县广电359南充广电112221146122南京有线3004南平数字11085南铁有线553南雄电视台1153南阳广电301宁波数字电视11350113445211134611348113481134938040313821526162宁德广电11093186宁海数字4974961109511095宁夏广电5314031农垦有线1109010522盘锦数字电视102689850磐安数字553平度有线313平湖数字3779631平江广电96319655平阳广电1798萍乡有线359394莆田广电98235465049濮阳有线304303浦江数字553302普宁有线11084齐齐哈尔数字电视788蕲春广电9680353杞县广电10408秦皇岛有线186沁阳有线10091青岛有线3750青海广电10599541青田数字电视494494493青州有线348清新广电604137清原广电812清远广电137曲阜有线355衢州数字107泉州广电113401133511336113371133811339167185饶平有线1108211259403任丘有线790日喀则广电3749619日照有线146450559如皋有线1148689汝州数字电视81290瑞安数字314三门数字3741553三门峡有线681三明广电54611093三星105489617山东有线35511219103026186896499618102山西广电网络9611961087738772113103104101陕西广电1124911248397412455456457458460汕头广电2880商丘有线8972429上饶有线359538韶关广电1153深圳广电9377神州电子39810620沈阳传媒9658141声屏无线3004470晟视讯159嵊州数字3438971十堰广电13798石河子广电网络10060寿光数字347沭阳数字30044009顺德有线3989838舜达传媒297朔州数字97斯达康utstarcom1006310062四川广电112479663143441751434四会有线11081675泗洪有线9847泗县广电69松原广电4078苏州数字11356宿迁有线30044192宿松广电10136宿州有线69睢宁有线3004遂溪广电10417462台前有线97台湾数字4151台州广电3741太仓数字411太和有线69太原有线107泰安广电4076泰达数字电视11103泰顺广电18051804泰州有线30041798汤坑有线1110246110456汤姆逊10639唐山广联8868唐山无线数字电视9430唐山有线1005510643天柏10641天诚10640天地网1379361天光有线9654天津广电549112291043410434天门广电538549天水广电6111095天威10620549甜果时光10624同洲1109598251125443桐乡广电2785377501铜冠信息科技51铜陵有线69354团风广电356355威海有线290150威科姆10406潍坊广电150未知11261125吴川广电604519吴江有线677五家渠电视台38武汉东泰数字10623190武进有线4009武穴有线445西藏广电11225398398西宁数字661西平有线357西双版纳广电789浠水有线11078峡山数字9599厦华1041610416咸宁有线4079香港有线133湘潭国安数字508507湘阴数字291297431襄樊有线142响水广电4025项城有线96621753747孝昌有线1061210413孝感有线1112忻州有线665新大陆546100709824546新疆广电网络13794113664189新疆机场集团3852新密有线9647新邱数字5613738新乡数字7726546546新余广电352新郑无线10410岫岩数字电视1019093盱眙广电315180徐州有线3004许昌广电429617484宣城有线69盐城有线3004兖矿数字电视11218560兖州有线10057扬州数字4024684阳煤电视10056阳泉数字503阳新有线411一汽通信11104伊春有线97宜春有线359移动魔百盒532义乌广电595益阳国安广电508513翼城数字650银河41710059银视数字电视984353鄞州数字107应城广电10407鹰潭有线757营口有线139148永嘉有线314永康数字11071553余姚数字314玉环数字3741403111095439438豫广网络812岳阳县有线9601云梦有线633云南广电11332113316074028402735311332113313731133411333运城有线41935327726枣庄有线378115增城广电166湛江有线9836张家港有线3004张掖广电100499830161彰武数字电视94漳州广电772677261188577镇海数字98629591郑州有线1008910088直播星10617407中广有线11364115115100723785611795923113109612中国电信11852316110627524135118118132135161165132165138135375404405161中国联通524105195242849285652952452852952459896259830919995635249574958495859589中国移动112165325324664674789677531532964347853252453211216965196609545中牟有线1861139中兴1041410139616中星10642963296429644钟祥有线4449651重庆有线96562904139139523407舟山数字1025410048686株洲县无线469139珠海广电11374531珠江数码113549861134诸暨数字7726308庄广有线5717613910050准东电视台536淄博长虹291139淄博有线68遵义广电448537 微信小程序调试 扫描设备二维码绑定→蓝牙直连→实时发送红外指令/读取设备状态 六、故障排除与维护 故障现象解决方案通信无响应检查RS485接线极性,确认波特率/地址匹配红外控制失效1. 检查发射管对准 2. 重新学习红外码小程序连接超时重启蓝牙模块,确保手机定位权限开启电源指示灯不亮测量输入电压是否在8V-28V范围内 七、售后服务与支持 质保期:1.5年有限保修(非人为损坏) 技术支持:18801054468 配件获取:官方商城提供红外延长线、互感器等配件购买链接 附录:应用场景示例 智慧酒店 集中控制客房空调/电视,联动入住状态自动调节温度 通信机房 远程重启故障设备,实时监测空调运行状态 智能教室 一键切换投影仪/幕布/音响设备,支持课表定时控制 产品购买:https://item.taobao.com/item.htm?ft=t&id=844477786518 --- ### 669. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品型号:Q06V4.3产品名称:Q系列智能场景面板开关外观材质:金属铝合金(CNC工艺,阳极氧化喷砂)颜色选择:活力橙/月光银/香槟金/象牙白/石墨黑/中国红/祖母绿/天空蓝/素雅灰/宝石蓝 产品规格: 名称备注Q06+3 (带3路继电器)RS485版本同时兼容Modbus协议、自定义协议Q06+2 (带2路继电器)RS485版本同时兼容Modbus协议、自定义协议Q06+1 (带1路继电器)RS485版本同时兼容Modbus协议、自定义协议Q06+0场景开关(不带继电器) RS485版本同时兼容Modbus协议、自定义协议Q4+2 (带2路继电器)RS485版本同时兼容Modbus协议、自定义协议Q4+1 (带2路继电器)RS485版本同时兼容Modbus协议、自定义协议Q04+0场景开关(不带继电器)RS485版本同时兼容Modbus协议、自定义协议Q06+3 (带3路继电器)LoraMesh版本LoraMesh无线通讯,兼容Modbus协议、自定义协议Q06+2 (带2路继电器)LoraMesh版本LoraMesh无线通讯,兼容Modbus协议、自定义协议Q06+1 (带1路继电器)LoraMesh版本LoraMesh无线通讯,兼容Modbus协议、自定义协议Q06+0场景开关(不带继电器) LoraMesh版本LoraMesh无线通讯,兼容Modbus协议、自定义协议Q4+2 (带2路继电器)LoraMesh版本LoraMesh无线通讯,兼容Modbus协议、自定义协议Q4+1 (带2路继电器)LoraMesh版本LoraMesh无线通讯,兼容Modbus协议、自定义协议Q04+0场景开关(不带继电器)LoraMesh版本LoraMesh无线通讯,兼容Modbus协议、自定义协议LoraMesh网关LoraMesh发送接收器 备注:1、Lora-Mesh通讯距离远,绕射能力强2、脱离点对点,自组网,自中继。3、组网速度快,通电即组网。 一、产品概述 本产品是一款多功能智能场景控制面板,集有线RS485总线通讯、ZgbMesh/LoraMesh无线组网、自定义场景联动于一体,适用于家庭、商业及工业场景。支持按键震动反馈、多协议兼容、弱电/强电双供电模式,具备高稳定性、低功耗、强抗干扰能力,满足复杂环境下的智能化控制需求。 二、技术参数 项目参数/功能物理规格尺寸86×86×40mm,内嵌深度28mm,重量100-160g(根据继电器数量)供电方式弱电DC12-24V(标配,反接保护)强电AC85-265V(选配,过载/短路/过流保护)总线通讯标配RS485(波特率9600 8 N 1,稳定可靠)选配ZgbMesh 2代/LoraMesh无线通讯(去中心化组网)负载能力阻性负载≤1800W,感性负载≤500W工作温度-10℃~50℃按键特性金属按键(支持震动反馈,可关闭)支持开/关/单击/翻转/双击/长按/延时开/关自定义功能继电器类型16A自保持双线圈继电器(无电流保持,低功耗)控制协议输入/输出协议全自定义,兼容Modbus协议 三、核心功能亮点 1、高级金属磨砂质感,触感舒适细腻,按压反馈清脆。2、按键支持震动反馈,触感更佳,并且可以关闭。3、采用大功率不粘连的双线圈优质继电器。4、自保持继电器无需电流保持状态,产品功耗更低,更省电。5、弱电插拔式接线柱设计,安装快速方便。6、出众的反应速度,抗干扰能力和稳定性。7、远程控制,随时开关(需搭配智能主机使用)8、不仅是开关,还可以是场景面板,搭配多款智能配件,实现场景个性化控制。9、无惧断网,无网络状态下也能控制。10、支持脱离主机运行,发送自定义场景指令11、支持接入三方总线控制系统,并实现双向通讯。12、本开关内按键支持点动,双击,长按控制该开关内的任意继电器 13、本开关按键支持点动,双击,长按与其他开关的按键可以任意关联。14、支持背景灯单独控制。15、支持输入控制协议和输出控制协议全自定义。16、支持延时关闭,延时打开。17、支持儿童按键锁定功能。18、按键支持定制文字标激光雕刻切割。19、支持ZgbMesh2代无线通讯,去中心化设计,主机故障,一样能组网通讯。 20、支持弱电12-24V供电,弱电带反接保护。21、支持强电85-265V AC供电,带短路,过载,过温过流保护。 四、安装与接线说明 1. 接线端子说明 弱电端子:DC12-24V输入(红正/黑负)。 强电端子:AC85-265V输入(火线L/零线N)。 负载输出:接至继电器控制回路(L1/L2/L3…)。 AC220V供电接线示意图: DC12~24V供电接线示意图: LoraMesh版本接线示意图: 注意:室内20米左右,可以穿2-3堵墙,室外100米以内! 2. 安装步骤 断电后,将面板嵌入标准86底盒,螺丝固定。 按需接入弱电或强电电源,连接负载设备。 通过RS485或无线协议接入智能控制系统(需配置网关)。 ⚠️ 注意事项 强电接线需由专业电工操作,确保断电施工。 避免金属面板与强电线缆直接接触。 五、通讯协议及调试工具 1.私有协议 默认地址:XX XX XX XX XX (以实际开关贴的标签为准) 1、总线波特率及地址波特率:9600(上电反馈5个字节地址,1个字节modbus地址,2个字节Mesh组网地址) 改地址:发送XX XX XX XX XX(旧地址) F8 E7 D6(固定) yy yy yy yy yy (新地址) 示例:1A 13 24 56 91 F8 E7 D6 1A 33 57 26 81将旧地址1A13 24 56 91 改为新地址1A 33 57 26 81 2、分组群控地址地址通配符:FF广播地址:FF FF FF FF FFFF可以在XX XX XX XX XX五字节地址的任意位置。修改地址分路,通过地址与通配符的配置,达到群控效果和情景控制。 示例:发送XX XX XX XX FF, 可以控制XX XX XX XX 00 - XX XX XX XX FE 共254个地址的模块 发送XX FF FF XX XX, 可以控制XX 00 00 XX XX - XX FE FE XX XX 共254*254个地址的模块 发送FF FF XX FF XX, 可以控制00 00 XX 00 XX - FE FE XX FE XX 共254*254*254个地址的模块 发送FF FF FFFF XX, 可以控制00 00 00 00 XX -FE FE FE FE XX 共254*254*254*254个地址的模块 发送FF FF FF FF FF, 可以控制所有模块3.单路控制指令XX XX XX XX XX(地址) 00(固定) 00(路数) 02(功能) 0F路数:00 01 02 03 04 05(对应按键1-6) 08 09 0A(对应背光灯 第一列~第三列)功 能:02状态翻转01开00关03点动示 例:XX XX XX XX XX 00 00 02 0F第1路开关翻转 4、多路整体操作指令开 关:XX XX XX XX XX(地址)01/02(全开/全关)77 88 0F 背光灯:XX XX XX XX XX(地址)10/20(全开/全关)77 88 0F 整 体:XX XX XX XX XX(地址)30/40(全开/全关)77 88 0F(整体表示背光灯和开关) 示例:XX XX XX XX XX 01 77 88 0F 开关全部打开5、复合操作指令(1条控制指令控制开关任意功能)XX XX XX XX XX(地址) CA(固定) 00(路数) 02(功能) 01(路数) 02(功能) 0A(路数) 02(功能) 0F 路 数:00 01 02 03 04 05 对应按键1-6 08 09 0A 对应背光灯 第一列到第三列 功能:02开/关 01开 00关 03点动 04保持原状态 示 例:XX XX XX XX XX CA 00 01 01 00 02 02 03 03 0A 01 0F按键1开,按键2关,按键3翻转按键4点动,背光灯第三列开6、状态查询指令发送XX XX XX XX XX(地址)86 86 86 0F反馈XX XX XX XX XX(地址)00 00 00 01 00 01(开关1-6状态)00 00(固定)01 01 01(背光灯第一列到第三列状态)00 00 00 00 00(固定)0F状态:00关 01开示 例:发送:XX XX xX XX XX 86 86 86 0F反馈:XXXXXXXXXX 00 00 00 01 01 01 00 00 01 00 01 00 00 00 00 00 0F 开关1-6状态为关关关开开开,背光灯第一列到第三列状态为开关开。 7、楼梯协议指令XX XX XX XX XX(地址) CB(功能) 00 03(依次打开的时间间隔) 00 04(保持全部打开状态的时间)00 05(依次关闭的时间间隔) 0F依次打开的时间间隔,范围00 00-FF FF,时间单位为0.1秒 保持全部打开状态的时间,范围00 00-FF FF,时间单位为0.1 秒依次关闭的时间间隔,范围00 00-FF FF,时间单位为0.1秒 功能:CB 开关和背光灯依次正向开启; CC开关和背光灯依次反向开启; CD开关依次正向开启; CE 开关依次反向开启; CF 背光灯依次正向开启; C0 背光灯依次反向开启 示 例:XX XX XX XX XX CB 00 03 00 04 00 05 0F开关和背光灯依次正向开启,依次打开时间间隔为0.3秒; 保持全部打开状态的时间为0.4秒; 依次关闭的时间间隔为0.5秒8、自定义楼梯协议XX XX XX XX XX(地址) D3(固定) 00 01(延时时间间隔) 01(01开/00关/02翻转) 01(01正向/11反向) 01(01开关/11背光灯/02整体) 0F延时时间间隔,范围0000-FFFF,时间单位为0.1秒 示 例:XX XX XX XX XX D3 00 05 01 01 11 0F 背光灯正向依次打开,打开延时时间间隔0.5秒 9.配置按键与输出的对应关系单开关单输出:XX XX XX XX XX(地址) BB 00(固定) 00(路数) F1(F1长按/F2单击/F3双击) CA(固定) 02(输出路数) 02(输出状态00关/01开/02开关/03点动) 0F 示 例:XX XX XX XX XX BB 00 03 F1 CA 04 02 0F(按键4长按对输出开关5进行开关操作) 单开关多输出:XX XX XX XX XX(地址) BB 00(固定)00(路数) F1(F1长按/F2单击/F3双击) CA(固定) 00(输出路数1) 02(开关) 01(输出路数2) 01(只开) 02(输出路数3) 03(点动) 0F 示 例:XX XX XX XX XX BB 00 00 F1 CA 00 02 01 02 02 02 0F(按键1与输出开关1,2,3关联匹配) 删除配置:XX XX XX XX XX(地址)BB 00(固定) 00(路数) F1/F2/F3 EE 0F 示 例:XX XX XX XX XX BB 00 02 F1 EE 0F(删除按键3 F1的配置) 路数:00 01 02 03 04 05 对应按键1-6 08 09 0A 对应背光灯 第一列到第三列 输出路数:00 01 02 03 04 05 对应输出1-610、按键发送自定义总线数据指令配置:XX XX XX XX XX(地址) B8 00(固定) 00(路数) E1(E1继电器接通/E2继电器断开/E3单击/E4双击/E5长按) 01(存储)YY YY YY YY YY YY YY YY YY YY YY(自定义总线数据hex) 0F 该自定义协议可以用于控制总线被控设备,当按键输入状态为接通/断开的时候,发送自定义总线数据 yγ YY YY YY YY YY YY YY YY YY YY YY 自定义数据小于32个字节路数:00 01 02 03 04 05 对应按键1-6存储:01-06代表第1-6条存储,共支持储存6条指令示例1:XX XX XX XX XX BB 00 02 E3 01 55 12 35 03 01 FC 4A 0F 存储1:按键3单击时发送窗帘总线数据55 12 35 03 01 FC 4A,打开窗帘示例2:XX XX XX XX XX BB 00 02 E4 02 55 12 35 03 01 FC 4A 0F 存储2:按键3双击时,发送窗帘总线数据55 12 35 0301FC4A,打开窗帘 配置总线数据发送间隔时间:XX XX XX XX XX(地址)BB D1(固定) 00 08(间隔时间) 0F 根据被控产品性能设置总线数据发送间隔时间,范围00 00-FF FF,单位:50毫秒,间隔时间为8*50=400毫秒示 例:XX XX XX XX XX BB D1 00 02 0F发送每条总线数据的间隔时间为100毫秒删除配置:XX XX XX XX XX(地址)BB 00(固定)00(路数)E1/E2/E3/E4/E5 EE 0F 路 数: 00 01 02 03 04 05 对应按键1-6示 例:XX XX XX XX XX BB 00 03 E1 EE 0F 删除按键4的配置11、锁定按键指令锁定按键,开关全开:XX XX XX XX XX(地址)EC 00 0F FF 0F 锁定按键,开关全关:XX XX XX XX XX(地址)EC 00 00 00 0F12、解锁按键指令解锁按键,开关全开:XX XX XX XX XX(地址)EC 01 0F FF 0F解锁按键,开关全关:XX XX XX XX XX(地址)EC 01 00 00 0F13、延时开关配置指令XX XX XX XX XX(地址)9F(固定) 01(路数) 01(时间,01-FF对应1-255秒) 0F 路数:00 01 02 03 04 05 对应按键1-6 08 09 0A 对应背光灯 第一列到第三列 示例: ①XX XX XX XX XX 9F 01 06 0F②XX XX XX XX XX BB 00 01 F2 CA 01 03 0F开关2开启后延时6秒关闭。14、点动模式切换协议XX XX XX XX XX(地址) 9D 00 00 0F 打开再延时关闭模式 XX XX XX XX XX(地址) 9D 00 01 0F 关闭再延时打开模式 15、上电初始状态配置指令XX XX XX XX XX(地址) EA(固定) 00(第1路) 01(开) 01(第2路) 00(关) 02(第3路) 01(开) ......0A(背光灯第三列) 01(开) 0F每2个字节为1组,设定开关/背光灯的初始状态,01开/00关路数:00 01 02 03 04 05 对应按键1-6 08 09 0A 对应背光灯 第一列到第三列 上电初始状态默认为关闭示 例: XX XX XX XX XX EA 00 01 01 00 02 01 0A 01 0B 01 0F初始上电时,第1路开第2路关,第3路开,指示灯第三列开。16、恢复开关模式初始配置XX XX XX XX XX(地址)BB EE EE EE EE OF 删除所有配置数据等待反馈(约4-6秒):BC BC 之后再发送 XX XX XX XX XX(地址)BB D2 00 02 0F示例:发送 XX XX XX XX XX BB EE EE EE EE 0F 等待反馈(约4-6秒):BCBC再发送 XX XX XX XX XX BB D2 00 02 0F 删除所有数据,恢复初始配置17、震动打开和关闭协议5字节地址+2A 2B 01 00 0F(倒数第三位代表震动) 开启震动:5字节地址+2A 2B 01 00 0F 关闭震动:5字节地址+2A 2B 00 00 0F 18、极速场景协议(新)①协议设置场景:5字节地址+69 11 96(固定) 00(场景位置) 01 00 01 00 01 00 00 00 01 00 01 00 01 00 00 00 (1-16路输出的值) 0F②触发场景:5字节地址+69 12 96(固定) 00(场景位置) 0F ③将当前输出值加入一键场景:5字节地址+69 13 96(固定) 00(场景位置) 0F ④清除场景:5字节地址+69 14 96(固定) 00(场景位置) 0F场景位置:00-FF 支持256个极速场景 备注: 1、瞬间完成场景模式执行,和KNX总线一样的操作使用体验2、场景脱机执行,断网,主机宕机均不影响使用。3、智能灯光模组,智能调光模块均兼容极速场景。4、全屋智能灯光智能调光,调试优化,整体购买提供预配或快捷自动化调试文档,让普通人也能调试智能家居场景。5、配套完成Q06V4.1、Q08V4.1、Q04V4.1、HKD60SV1.3、PD25V1.3、PD25BV1.3、BP600AV1.3同步升级 为了让大家更好的调试开关,我们格西调试助手给大家做了快捷的调试指令,大家只需要傻瓜点击就可以体验开关的所有功能。 格西调试精灵下载: Q06/Q08系列开关快捷调试指令 格西调试精灵数据库下载: 2.MODBUS通讯协议 读寄存器 03,写单个寄存器 06,写多个寄存器10 序号名字读/写寄存器地址十进制寄存器地址16进制值含义1地址读/写000100 0100 02(修改地址为2)地址范围01-FE2开关波特率读/写000200 0200 06(修改成9600波特率)00 00对11520000 01对应7680000 02对应5760000 03对应3840000 04对应1920000 05对应1440000 06对应960000 07对应480000 08对应240000 09对应12003开关1读/写100103 E900 01(开)00 00关00 01开00 02翻转 00 03点动4开关2读/写100203 EA00 00(关)00 00关00 01开00 02翻转 00 03点动5开关3读/写100303 EB00 02(翻转)00 00关00 01开00 02翻转 00 03点动6指示灯1读/写100403 EC 01(开)00 00关00 01开00 02翻转 00 03点动7指示灯2读/写100503 ED00 00(关)00 00关00 01开00 02翻转 00 03点动8指示灯3读/写100603 EE00 02(翻转)00 00关00 01开00 02翻转 00 03点动9空读/写100703 EF//10空读/写100803 F0//11背景灯1读/写100903 F101(开)00 00关00 01开00 02翻转 00 03点动12背景灯2读/写101003 F200 00(关)00 00关00 01开00 02翻转 00 03点动13背景灯3读/写101103 F300 02(翻转)00 00关00 01开00 02翻转 00 03点动 协议示例: 读单个寄存器- 读取波特率 读单个地址功能码寄存器地址读取几个寄存器CRC校验发送010300 0200 0125 CA 读多个寄存器- 输出1,2的状态 读多个地址功能码起始寄存器地址读取几个寄存器CRC校验发送010303 E900 0215 BB 写单个寄存器-修改地址为02 写单个地址功能码寄存器地址值CRC校验发送010600 0100 0259 CB 写多个寄存器-将1-3输出打开,1-3指示灯关闭 写多个地址功能码起始寄存器地址写几个寄存器字节数数据CRC校验发送011003 E900 060C00 01 00 01 00 01 00 00 00 00 00 006C 55 CRC16校验工具下载: 本工具用于快速求出MODBUS通信中CRC16校验值。在输入框输入十六进制数据包(每两个字符表示一个字节,字符数必须是偶数),每个字节之间用空格隔开。点击计算后,本计算器可求出输入数据包的长度的16进制校验码。 为了让大家更好的调试开关,我们用Modbus poll给大家做了快捷的调试指令,大家只需要傻瓜点击就可以体验开关的所有modbus功能了。 六、故障排除与维护 问题解决方案按键无响应检查供电是否正常,重启设备。无线连接失败确认网关在线,重新配对设备。继电器不动作检查负载是否超限,接线是否牢固。 维护建议: 定期用干布清洁面板表面,避免液体渗入。 长期不用时断开电源,避免待机耗电。 七、售后服务与支持 保修期:1.5年(非人为损坏)。 技术支持:18801054468(工作日9:00-18:00) 协议开放:提供SDK及API文档,支持第三方系统开发对接。 附录:应用场景示例 家庭场景 一键“观影模式”:关灯+降窗帘+开投影仪。 门口玄关灯延时关闭,避免遗忘。 工业场景 按键控制风机启停,自定义时序启动减少电流冲击。 商业场景 分组群控商场灯光,远程管理节能策略。 产品购买:https://item.taobao.com/item.htm?ft=t&id=671086569988 --- ### 670. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着物联网技术的飞速发展,智能楼宇控制系统正逐渐成为现代建筑的标配。它不仅能够提高建筑的能源效率,还能提升用户的生活品质和舒适度。在这样的背景下,分布式IO模块作为智能楼宇控制系统的核心组成部分,发挥着至关重要的作用。今天,我为大家介绍一款能够为智能楼宇控制提供高效解决方案的设备——M31系列分布式IO模块。 一、M31系列分布式IO模块的概述 M31系列分布式IO模块是由成都亿佰特电子科技有限公司研发的一款集成了数字输出(DO)、模拟输入(AI)和数字输入(DI)的主机模块,我们使用的这款为主机型号为M31-AAAX4440G,拥有4个数字输出(4DO)、4个模拟输入(4AI)和4个数字输入(4DI)。支持Modbus TCP和Modbus RTU协议。得益于其灵活的架构设计,该主机可以通过扩展模块进行功能扩展,极大地提升了系统的灵活性和扩展性。无论是大型建筑还是小型住宅,M31系列都能为不同规模的楼宇控制系统提供可靠的支持。 二、智能楼宇控制系统的应用场景 在智能楼宇控制系统中,分布式IO模块主要负责各类传感器数据的采集、传输和执行命令的控制。以下是M31系列模块在智能楼宇控制中的几个典型应用场景: 环境监测与控制:通过4AI模块,M31系列能够实时采集环境中的温度、湿度、CO2浓度等数据,并将这些数据传输至中央控制系统。在此基础上,系统可以自动调节空调、通风设备的运行状态,确保室内环境始终处于最佳状态。 照明控制:智能照明是现代楼宇的重要组成部分。通过4DI模块,M31系列可以接收用户的灯光开关指令或红外感应信号,并通过4DO模块控制灯光的开启与关闭,实现节能与舒适度的完美平衡。 安防系统:M31系列模块还可用于楼宇的安防系统中,通过与各种报警设备的连接,实时监控门窗状态、火灾报警器等设备。一旦检测到异常情况,系统可以立即发出警报,并启动相应的应急预案。 设想的系统组件 三、M31系列分布式IO模块的优势 相比传统的集中式控制系统,M31系列分布式IO模块具备以下显著优势: 高效性:M31系列模块采用分布式架构,能够在设备层面直接处理输入输出信号,减少了数据传输的延迟,提高了系统的响应速度。 扩展性:一台M31系列主机支持多个扩展模块,用户可以根据实际需求灵活配置系统,实现从小型系统到大型系统的无缝扩展。 稳定性:M31系列模块支持Modbus TCP和Modbus RTU协议,确保了数据传输的稳定性和可靠性。即使在复杂的网络环境中,系统也能保证稳定运行。 易用性:M31系列模块的安装与配置十分简便,无需专业技术人员即可快速上手。这对于希望快速部署智能楼宇控制系统的用户来说,无疑是一个巨大的优势。 下面让我们一起看一下这款设备的详细参数 四、设备规格,性能参数  类别名称参数电源工作电压DC9~36V电源指示PWR 红色 LED 指示灯通讯通讯接口RJ45、RS485波特率9600bps(可选择)通讯协议标准 Modbus TCP、Modbus RTU 协议MODBUS设备地址可通过 Modbus 指令、上位机和硬件拨码修改DI 输入输入类型NPN、PNP输入电压12~24V采集频率最大 2.5 Hz输入指示DI 绿色 LED 指示灯AI 输入采集特性单端输入输入类型0-20mA、4-20mAAI 分辨率3‰采集频率最大 2.5 Hz输入指示无DO 输出DO 输出类型A 型继电器(常开)DO 输出模式电平输出继电器触点容量5A 30VDC、5A 250VAC(同一个 COM 公共端电流总和最大支持 8A)输出指示DO 绿色 LED 指示灯其他产品尺寸110mm * 40mm * 100mm (长*宽*高)工作温湿度-40 ~ +85℃、5% ~ 95%RH(无凝露)存储温湿度-40 ~ +105℃、5% ~ 95%RH(无凝露)安装方式定位孔、导轨安装 设备默认参数 类别名称参数基本参数Modbus 地址1波特率9600bps(9 种可选)校验位None(默认)、Odd、Even数据位8停止位1DI 滤波参数6AI 滤波参数6网络参数工作模式TCP 服务器(最多 5 路客户端接入)DHCP关闭网关地址192.168.3.1子网掩码255.255.255.0本机 IP192.168.3.7本机端口502目标 IP192.168.3.3目标端口502DNS 服务器114.114.114.114Modbus TCP/RTU 协议转换开启本机 MAC由芯片决定(固定) 核心功能介绍 更多功能介绍请移步官网。 五、产品实际使用体验 由于设备外壳不是金属的,所有拿到手里是相对比较轻的。下面是实物照 指示灯 在使用时,我使用了12v的电源进行供电,然后使用一个Modbus转USB的设备来传输设备采集的信号电脑上。在设备上接了接近开关和一个LED灯。下面是详细的接线信息 设备接线 电源的接线 12V电源正极接M31的正极 12V电源负极接M31的负极 接好后会Power指示灯会亮起 Modbus转USB的设备接线 Modbus转USB的设备 A+ 接 M31的A+ Modbus转USB的设备 B+ 接 M31的B+ Modbus转USB的设备的另一端是USB插入电脑 NPN接近开关的接线 开关的棕线接M31的 DI1的COM1接口 开关的黑线接M31的 DI1接口 开关的蓝线接电源的负极 电源的正极接DI1的COM1接口 结完线指示灯DI1 会亮起,将接近开关靠近金属,指示灯会灭。 LED灯与DO接口的接线 电源正极接DO1的COM接口 LED灯正极接DO1的 LED灯负极接电源负极 结完线就可以使用上位机,或者串口助手来控制灯。 上位机的使用 上位机从官网下载 https://www.ebyte.com/product-view-news.html?id=2086 安装后打开,在左上角配置,使用串口来与设备通信。串口地址为1,波特率为9600 配置成功后,会定时采集设备的信号,显示如下: 点击DO1,可以关闭LED灯。 接近开关靠近金属,或者离开金属时,都能从页面上看到DI1的状态改变。 由于手边没有信号发生器和模拟量设备,AI接口的设备没办法测试。给大家看一下别人做的案例 六、总结 随着智能楼宇控制系统的普及,分布式IO模块的重要性愈加突出。M31系列分布式IO模块凭借其高效、稳定、易用和可扩展的特点,成为了智能楼宇控制系统中的理想选择。无论是在新建项目中,还是在旧楼改造中,M31系列模块都能帮助用户实现更智能、更节能的楼宇管理。如果您正在寻找一款能够提升智能楼宇控制系统性能的产品,那么M31系列分布式IO模块绝对是您的不二之选。 通过M31系列模块,智能楼宇控制不再是复杂的工程,而是触手可及的现实。让我们共同见证智能楼宇控制系统的新时代,感受科技带来的便利与舒适。 七、生产厂商介绍及福利介绍 成都亿佰特电子科技有限公司,成立于2012年,办公面积超过4000平米,是一家集研发,生产,销售一体,具备完整产业链的高新技术企业,专注于物联网通信应用。产品涵盖LoRa,WiFi,蓝牙,ZigBee,4G/5G/NB-IoT,GBRS,CAN总线模组等多种物联网常用设备。产品远销50+全球国家和地区,12年技术积累,亿级出口贸易额。 “爱心企业,责任社会”一直以来是亿佰特想要向社会所回报的愿景,作为一家富有社会责任感的高新科技企业,亿佰特不断为合作院校提供电子竞赛,社团活动等各种活动赞助,同时为在校学生提供实习就业的机会。 而且他们的公众号每个月末都会有免费福利发送,关注“亿佰特物联网应用专家”公众号评论福利活动文章,就有机会免费获取各种各样的福利产品,有开发板、模块、工业路由器/网关、数传电台、遥控开关、天线电源之类的。还有0元拿样活动,等你参与。 --- ### 671. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 背景 工业自动化监控与控制是指使用技术设备和软件系统自动地操控和监视生产过程,以提高效率、质量、可靠性和安全性。这通常涉及到机械设备、电子硬件和计算软件的协调工作,通过减少人工干预来优化工业操作。在工业自动化监控与控制领域,串口服务器起着至关重要的作用,主要通过为旧式和现代工业设备提供网络连接和远程通信功能,能极大地提高工业系统的可操作性和灵活性。串口服务器在工业自动化监控与控制中的几个关键作用主要包括:设备网络化,数据集成与中心化管理, 实现远程监控和控制,增强系统的可扩展性和兼容性,提供高效的故障诊断与维护支持。本文将介绍一种技术方案:使用NA111 ModBus485串口服务器来实现工业自动化监控和控制,并详细介绍NA111串口服务器的使用。 方案设计 设想一个位于化工厂的工业自动化监控与控制系统,中心使用串口服务器来实现高效的设备管理、数据采集和远程操作。这个场景涉及复杂的化学反应过程,需要精确控制温度、压力、流速等多种参数,以确保产品质量和过程安全。以下是大致的方案设计。 业务场景概述 化工厂的生产线包括多个反应釜、蒸馏塔和其他处理设备,这些设备需要严格监控和控制以维持稳定和安全的生产环境。通过利用串口服务器,可以将这些物理设备连接至中央监控系统,实现数据的实时采集和远程控制。 系统组件 传感器与执行器: 各种传感器安装在关键位置,例如反应釜的温度和压力传感器、流量计等,以实时监测生产状态。执行器如电动阀门和泵的控制装置,根据自动化系统的命令调节反应条件。流程框架图大致如下: 串口服务器: 所有传感器和执行器通过RS-485接口连接到NA111 ModBus485串口服务器。该服务器将设备的串行数据转换为网络数据,使中央控制系统能够通过以太网访问这些数据。 PLC (可编程逻辑控制器): PLC接收从串口服务器传来的传感器数据,并根据预设的程序逻辑控制执行器,调整工艺参数。 SCADA系统 (监控与数据采集系统): 作为中心监控系统,SCADA负责显示实时数据、生成报警、记录历史信息,并允许操作员进行远程控制和故障诊断。 人机界面 (HMI): 提供给操作员的图形界面,用于实时查看和控制生产过程。 下面我们一起看一下NA111这款串口服务器的详细配置参数。 设备规格,性能参数 NA111是成都亿佰特电子科技有限公司生产的一款高性能的Modbus 485串口服务器,设计用于将RS-485串行通信设备接入以太网,不仅支持多种工作模式,也可以使用多种方式对设备进行配置。通过它设备能够快速实现网络连接,支持远程访问和控制。它也支持广泛的工业通信协议,能够无缝集成到现有的工业环境中,提供稳定可靠的数据传输。 设备详细的规格参数 序号参数参数值1供电电压直流8V~28V2工作电流73mA@12V3接口方式串口(RS485,3*3.81mm 凤凰端子) 网口(RJ45)4工作模式TCP Server、TCP Client、UDP Server、UDP Client、HTTP Client、MQTT Client(默认 TCP Server)5Socket连接支持 6 路客户端连接(TCP 服务器模式)6IP获取方式DHCP、静态 IP(默认静态 IP)7域名解析支持8配置方式Web 网页配置 、 上位机配置 、AT指令配置9IP地址可自定义(默认 192.168.3.7)10本地端口可自定义(默认 8887)11子网掩码可自定义(默认 255.255.255.0)12工作温度-40 ~ +85℃,工业级13工作湿度10% ~ 90%,相对湿度,无冷凝14存储温度-40 ~ +125℃,工业级15尺寸大小110 mm * 66mm * 30mm16打包机制512 Byte 功能框架 更多的官方的文档可以查阅 https://www.ebyte.com/product-view-news.html?id=1886 设备配置,接线 上面介绍了设备的参数,下面我们一起来看看在实际的业务场景中,如何使用它,如何配置它来采集数据和下发指令。 设备开箱,实物如下图: 设备支持8V~28V直流电压,我们使用12v的电源给他供电,接好电源后 电源灯会亮起。 然后将modbus 485的传感器连接到设备,如果没有传感器,可以借助modbus poll和modbus slave软件来模拟。如果使用软件来模拟的话,还需要准备一个USB转485的转接设备,接入到设备上,要将A端接A端,B端接B端,注意不要接反。 下面我使用一个RS485的灯控板来演示它的使用与配置 然后给设备插上网线,网络连接后,M0指示灯绿灯会常亮。 如下: 接好线后,我们开始配置设备。 设备配置 配置设备,首先需要下载设备的上位软件。下载地址https://www.ebyte.com/pdf-down.aspx?id=3229官方的上位机软件只能在windows上使用,由于我使用的是Mac电脑,所以采用了另一种配置设备的方式,使用设备内置的web页面来配置设备。将设备与mac电脑连到同一个网段,必须是192.168.3.* 开头,然后在mac的浏览器中打开网页http://192.168.3.7。你会看到如下的登录页面,直接点击登录即可。 登录后,你会看到如下的配置页面。 接下来我们配置设备,用它来采集设备的数据。 我们使用串口来采集rs485的信号,然后使用mqtt来上传。配置如下: 注意红色区域的配置信息目的IP/域名 需要填写mqtt broker的域名或ip。这里直接使用的测试的emq地址。发布的主题是NA111 向外发布信息的主题: all/ebyte/push订阅的主题是用于接受外部指令的主题:all/ebyte/sub这里的主题等下要用。 然后我们使用MQTTX软件来给NA111发送指令。注意配置,mqtt版本选3.1。 域名和端口都要和NA111配置一致。 在MQTTX中我们需要订阅all/ebyte/push主题来接受NA111发送的消息。然后要发布all/ebyte/sub主题来给NA111下发指令。如下图: 这里还需要注意,接受和发布的消息格式都需要 为HEX,16进制。当发送指令后, NA111的TXD和RXD两个指示灯会闪烁一下,这表明通讯成功,有数据收发。 显示效果: 在 NA111的配置页面,工作模式有很多种,支持TCP客户端,TCP服务器,UDP客户端,UDP服务器,MQTT客户端,HTTP客户端。每一种工作模式都有自己的适用场景,用户可以自行选择。 配置完成后,点击提交,提交后,需要给NA111重新上电。 到这里,使用NA111串口服务器来采集设备数据和下发指令,都演示完毕啦。 总结 总结一下,设备的使用体验是非常流畅的,支持多种方式对设备进行配置,而且支持的工作模式页非常多。不管你是局域网使用,还是公网使用,不管是TCP协议,还是UDP协议,或者MQTT协议,该设备都支持。可以说是性价比非常高的一款产品。 如果你在寻找一款Modbus485串口服务器,不妨来试试这款NA111串口服务器。 生产厂商介绍及福利介绍 成都亿佰特电子科技有限公司,成立于2012年,办公面积超过4000平米,是一家集研发,生产,销售一体,具备完整产业链的高新技术企业,专注于物联网通信应用。产品涵盖LoRa,WiFi,蓝牙,ZigBee,4G/5G/NB-IoT,GBRS,CAN总线模组等多种物联网常用设备。产品远销50+全球国家和地区,12年技术积累,亿级出口贸易额。 “爱心企业,责任社会”一直以来是亿佰特想要向社会所回报的愿景,作为一家富有社会责任感的高新科技企业,亿佰特不断为合作院校提供电子竞赛,社团活动等各种活动赞助,同时为在校学生提供实习就业的机会。 而且他们的公众号每个月末都会有免费福利发送,关注“亿佰特物联网应用专家”公众号评论福利活动文章,就有机会免费获取各种各样的福利产品,有开发板、模块、工业路由器/网关、数传电台、遥控开关、天线电源之类的。还有0元拿样活动,等你参与。 --- ### 672. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要: 本文介绍了一种采用雷达波技术的呼吸心率睡眠多功能传感器。该传感器具有非接触探测、高精度测量、多功能一体、不受环境影响等特点,可广泛应用于家庭、酒店、医院、养老院等场所,为人们的健康监测提供可靠的数据支持。 关键词: 呼吸心率睡眠多功能传感器、雷达波技术、非接触探测、健康监测 1. 引言 随着人们健康意识的不断提高,对自身健康状况的监测需求也越来越迫切。传统的健康监测方法,如佩戴式设备、体检等,存在一定的局限性,例如佩戴式设备容易造成不适感,体检周期长等。 2. 技术原理 呼吸心率睡眠多功能传感器采用雷达波技术,通过发射和接收雷达波来感知人体微小的运动。雷达波遇到人体后会发生反射,根据反射波的相位差和幅度变化,可以计算出人体的位置、速度、呼吸和心跳等信息。 3. 产品功能 运动检测: 可检测到人体在雷达探测范围内的运动信息,例如走动、小幅度手晃动等。 呼吸探测: 可检测到人体在雷达探测范围内的呼吸信息,例如胸腔起伏等微小运动。 呼吸心率采集: 可采集人体在雷达探测范围内的呼吸和心跳频率。 睡眠检测: 可检测人体睡眠质量,包括清醒、浅睡、深睡等状态,并记录睡眠时间。 4. 产品优势 非接触探测: 无需佩戴任何设备,即可轻松监测人体呼吸和心跳。 高精度测量: 呼吸和心跳测量精度高,可达95%以上。 多功能一体: 可实现运动检测、呼吸探测、呼吸心率采集、睡眠检测等功能。 不受环境影响: 不受温度、湿度、噪声、气流、尘埃、光照等环境的影响。 支持二次开发: 支持二次开发,提供开放协议。 标准协议对接: 标准Modbus工控协议,方便各种系统集成。 5. 应用场景 家庭: 可用于家庭成员的健康监测,例如老人、儿童等。 酒店: 可用于酒店客房的智能化管理,例如提供个性化的睡眠服务等。 医院: 可用于医院病房的病人监测,例如监测病人的呼吸和心跳情况等。 养老院: 可用于养老院老人的健康监测,例如预防老人摔倒等意外发生。 6. 结论 呼吸心率睡眠多功能传感器是一款技术领先、功能完善、应用广泛的健康监测产品。它为人们提供了一种更加便捷、准确、可靠的健康监测方式,具有广阔的市场应用前景。 产品购买:https://item.taobao.com/item.htm?ft=t&id=851358512825 --- ### 673. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品介绍 产品名称: Led Modbus 组态大屏 产品型号: LDMO1 产品概述: Led Modbus 组态大屏是一款支持标准Modbus协议通讯的LED高清彩色组态大屏,支持和任意总线设备通讯,并实时显示设备状态。结合Lua脚本还可以实现更加丰富的工业逻辑判断应用,作为一个中控大屏使用。 产品特点: 高清彩屏: 480*240物理分辨率,6万色多彩,P2高清,画面清晰细腻。 任意组态: 所见即所得的组态软件,无需编程,轻松拖拽即可完成界面设计。 数据快速绑定: 设备地址、寄存器添加,数据绑定设备,下发即可显示数据。 稳定可靠: 通电即开机运行,启动快,支持连续开机不间断运行,适配严酷的工业环境。 协议支持: 支持Modbus协议,并可对接任意自定义协议解析。 二次开发: 支持Lua脚本开放,可任意编辑大屏逻辑,实现丰富功能。 功能丰富: 内置RTC实时时钟,支持99个组态界面,多种切换方式,扩展丰富,可联动控制本店铺内的任意总线设备。 应用场景: 家庭: 可用于智能家居控制,显示室内温度、湿度、灯光状态等信息,并可控制家电开关。 办公楼: 可用于会议室预订、楼宇信息展示、人员管理等。 酒店: 可用于客房控制、信息发布、宾客服务等。 银行: 可用于排队叫号、信息发布、金融产品展示等。 医院: 可用于病床信息显示、手术室管理、医护人员信息查询等。 学校: 可用于课表显示、校园信息发布、教学资源管理等。 机场: 可用于航班信息查询、登机口引导、行李查询等。 博物馆: 可用于展品信息展示、导览服务、多媒体互动等。 实验室: 可用于实验数据显示、仪器控制、安全监控等。 工厂: 可用于生产过程监控、设备状态显示、数据采集分析等。 选型建议: Led Modbus 组态大屏广泛适用于家庭、办公楼、酒店、银行、医院、学校、机场、博物馆、实验室工厂等有智能显示需求的用户,也适用于弱电集成商、自动化工厂方案商等专业人士使用。 技术参数: 通讯方式: RS485 输入电压: AC110-220V 物理分辨率: 480*240 显示尺寸: 960*480MM Led类型: 6万色多彩 屏幕间距: 2MM,P2高清 安装方式: 组态方式 外壳材质: 钣金外壳带背门 安装方式: 吊装/壁装/立装 波特率: 默认96008N1,支持1200-25600 协议支持: Modbus/自定义协议解析 通讯方式: RS485总线/ZgbMesh/TCPIP/MQTT 界面切换: 开关切换,协议切换,自动切换,语音切换 脚本支持: Lua,可以实现多种复杂应用逻辑,输入运算,判断输出 产品重量: 20KG 产品优势: 高清彩屏,画面清晰细腻 任意组态,轻松设计个性化界面 数据快速绑定,实时显示设备状态 稳定可靠,适合严酷工业环境 协议支持丰富,满足多样化需求 二次开发,功能扩展无限可能 订购信息: 产品型号: LDMO1 订购数量: 请根据实际需求订购 联系方式: 请联系经销商或厂家 售后服务: 产品保修期为1年 提供7*24小时技术支持 提供免费软件升级 产品购买:https://item.taobao.com/item.htm?ft=t&id=851363440703 --- ### 674. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 车载气象站是一款专为车辆、船舶等移动交通工具设计的高精度自动气象观测设备。由手提箱式采集仪和车载气象站采集设备组成,具有低功耗、随时随地采集环境数据的特点。其一体式设计集成风速、风向、温湿度、噪声、PM2.5、PM10、CO2、大气压力等多种功能,支持ModBus-RTU通信协议,RS485信号输出,通信距离最远可达2000米,便于上传数据至监控软件或PLC组态屏。内置电子指南针消除安装方向要求,适用于海运船舶、汽车运输等移动场合。 功能特点 多采集装置一体式设计: 方便安装,集成风速、风向、温湿度、噪声、PM2.5、PM10、CO2、大气压力等多种功能。 超声波原理测量风速风向: 无启动风速限制,零风速工作,360°全方位,可同时获得风速和风向数据。 噪声采集: 高精度噪声测量,量程高达30dB~120dB。 PM2.5和PM10采集: 独有双频数据采集及自动标定技术,一致性可达±10%。 CO2测量: 范围0-5000ppm,高分辨率1ppm。 温湿度测量: 瑞士进口测量单元,高准确度。 大气压力范围广泛: 0-120kPa,适用于各种海拔高度。 稳定的485通信: 采用专用的485电路,通信稳定。 内置电子指南针: 安装时无方向要求,水平安装即可。 主要技术参数 供电: 直流供电(10-30VDC) 最大功耗: 1.2W(RS485输出) 精度: 风速:±(0.2m/s±0.02*v)(v为真实风速) 风向:±3° 湿度:±3%RH(60%RH,25℃) 温度:±0.5℃(25℃) 大气压力:±0.15kPa@25℃ 101kPa 噪声:±0.5dB(参考音准,94dB@1kHz) PM2.5:±3%FS(@100μg/m3,25℃,50%RH) CO2:±(50ppm+3%F·S)(25℃) 光照强度:±7%(25℃) 量程: 风速:0-60m/s 风向:0-359° 湿度:0%RH~99%RH 温度:-40℃~+80℃ 大气压力:0-120kPa 噪声:30dB~120dB PM10 PM2.5:0-1000μg/m3 CO2:0-5000ppm 光照强度:0~20万Lux 长期稳定性: 温度:≤0.1℃/年 湿度:≤1%/年 大气压力:-0.1kPa/年 噪声:≤3dB/年 PM10 PM2.5:≤1%/年 CO2:≤1%/年 光照强度:≤5%/年 响应时间: 风速:1s 风向:1s 温湿度:≤1s 大气压力:≤1s 噪声:≤1s PM10 PM2.5:≤90s CO2:≤90s 光照强度:≤0.1s 通讯: RS485输出,标准ModBus通信协议 产品选型 RS-CZQXZ-1-CX:一体式壳体,磁吸式安装 系统框架图 尺寸说明 安装说明 接口说明 采集仪与车载气象站通讯 RS485输出,标准ModBus通信协议 通讯基本参数 编 码8 位二进制数据位8 位奇偶校验位无停止位1 位错误校验CRC(冗余循环码)波特率2400bit/s 、4800bit/s 、9600  bit/s 可设,出厂默认为 4800bit/s 数据帧格式定义 采用 ModBus-RTU  通讯规约,格式如下: 初始结构 ≥4  字节的时间 地址码 = 1  字节 功能码 = 1  字节 数据区 =N  字节 错误校验 = 16  位 CRC  码 结束结构 ≥4  字节的时间 地址码:为变送器的起始地址,在通讯网络中是唯一的(出厂默认 0x01)。 功能码:主机所发指令功能指示,本变送器只用到功能码 0x03(读取寄存器数据)。 数据区:数据区是具体通讯数据,注意 16bits 数据高字节在前! CRC 码:二字节的校验码。 车载气象站使用说明书 V1.0 主机问询帧结构: 地址码功能码寄存器起始地址寄存器长度校验码低字节校验码高字节1 字节1 字节2 字节2 字节1 字节1 字节 从机应答帧结构: 地址码功能码有效字节数数据一区数据二区数据N 区校验码低字节校验码高字节1 字节1 字节1 字节2 字节2 字节2 字节1 字节1 字节 通讯寄存器地址说明 寄存器中的内容如下表所示(支持03/04功能码): 寄存器地址PLC 或组态地址内容操作定义说明50040501风速值只读实际值的 100 倍 501 40502 风力 只读实际值(当前风速对应的风级值) 502 40503 风向(0-7 档) 只读实际值(正北方向为 0,顺时针增加数值,正东方为 2) 503 40504 风向(0-360 ° ) 只读实际值(正北方向为 0 °顺时针增加度数,正东方为 90 ° )50440505湿度值只读实际值的 10 倍50540506温度值只读实际值的 10 倍50640507噪声值只读实际值的 10 倍 507 40508PM2.5 值(若选 CO2 类型设备则此寄存器为 CO2 值) 只读 实际值 508 40509PM10 值(若选 CO2 类型设备则此寄存器为空) 只读 实际值50940510大气压值(单位 kPa,)只读实际值的 10 倍5104051120W 的 Lux 值高 16 位值只读实际值5114051220W 的 Lux 值低 16 位值只读实际值 通讯协议示例以及解释 举例:读取变送器设备(地址 0x01)的实时风速值 问询帧 地址码功能码起始地址数据长度校验码低字节校验码高字节0x010x030x01    0xF40x00    0x010x C40x04 应答帧 地址码功能码返回有效字节数风速值校验码低字节校验码高字节0x010x030x020x00    0x7D0x780x65 车载气象站使用说明书 V1.0 实时风速计算: 风速:007D (十六进制)= 125 =>  风速 = 1.25 m/s 举例:读取变送器设备(地址 0x01)的风向值 问询帧 地址码功能码起始地址数据长度校验码低字节校验码高字节0x010x030x01    0xF60x00    0x010x650xC4 应答帧 地址码功能码返回有效字节数风向值校验码低字节校验码高字节0x010x030x020x00    0x020x390x85 风向计算: 风向:0002 (十六进制)= 2 =>  风向 =  东风 举例:读取变送器设备(地址 0x01)的温湿度值 问询帧 地址码功能码起始地址数据长度校验码低位校验码高位0x010x030x01  0xF80x00  0x020x440x06 应答帧(例如读到温度为- 10. 1℃ , 湿度为65.8%RH) 地址码功能码有效字节数湿度值温度值校验码低位校验码高位0x010x030x040x02  0x920xFF  0x9B0x5A0x3D 温度:当温度低于0℃时以补码形式上传 0xFF9B (十六进制)= - 101 =>  温度 = - 10. 1℃ 湿度: 0x0292(十六进制)=658=>  湿度 = 65.8%RH 结语 车载气象站是一款多功能、高精度的气象观测设备,适用于移动交通工具,具有广泛的应用前景。其一体式设计、稳定的通信协议以及丰富的气象数据采集功能使其成为环境检测的理想选择。安装简便,操作便捷,长期稳定性强,是移动场合气象监测的可靠伙伴。 --- ### 675. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 7寸智能触控面板TDFH-7CMP是一款高性能、多功能的触摸控制面板,专为现代智能家居和商业自动化设计。它能够控制和管理灯光、窗帘、场景、空调、背景音乐、地暖和新风等多种设备。 主要特点 1. 7寸彩色IPS电容触摸屏:分辨率1024×600,提供清晰、生动的图像显示。 2. 全面控制功能:能控制灯光、窗帘、空调等多种家用和商用设备。 3. 高级人机交互界面:直观的触摸操作,清晰的液晶显示画面和声音提示。 4. RS485通讯方式:支持长达1200米的稳定通讯。 5. 多波特率支持:从1200bps到921600bps,适应不同设备需求。 6. 扩展存储空间:具有128Mbit的存储空间。 7. 便捷的固件升级:通过插入SD卡实现快速升级。 8. 耐用稳定:通过严格的高低温、震动和ESD测试。 9. 优雅的外观设计:简洁的黑色外观,轻薄的设计,适合各种室内装潢风格。 技术参数 - 工作电压:12V DC - 通讯方式:RS485 (最远距离1200米) - 通讯波特率:1200~921600bps - 显示分辨率:1024×600 - 存储空间:128Mbit - 固件升级方式:SD卡 - 工作温度:-20~+70℃ - 存储温度:-30~+80℃ - 震动测试:10 to 25Hz (X,Y,Z方向 2G 30分钟) - ESD测试:Air=±8KV,Contact=±6KV (可支持更高) - 高低温测试:70℃±3℃,72H/-20℃±3℃,72H;50℃±3℃,90%±3%RH, 72H - 产品尺寸:外观 275×170×7.5 mm;底盒直径86 mm 使用说明 1. 安装:请按照附带的安装指南进行安装,确保面板稳固且平整。 2. 连接与配置:连接至RS485总线系统,并进行必要的配置以控制不同设备。 3. 操作界面:通过触摸屏上的图形按钮执行预设的控制功能。 4. 固件升级:定期检查固件更新,通过SD卡简便地进行升级。 安全须知 - 确保在规定的电压和环境条件下使用。 - 避免水分或过高湿度,以免损坏电子部件。 - 定期进行检查和维护,确保设备正常运行。 售后服务 - 本产品享有质保服务,请参阅保修单了解详细的保修政策。 - 如有任何问题或需要技术支持,请联系我们的客户服务部门。 产品购买:https://item.taobao.com/item.htm?ft=t&id=550748019211 --- ### 676. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能特点: 高分辨率显示:2.1寸IPS电容彩屏,具有480*480的高分辨率。 便携电源:内置鲤电池和充放电路,支持移动待机使用。 无线设计:整体外壳采用3D打印,无物理接口,支持无线充电。 MESH通讯:内置MESH通讯模组,实现与主机MESH的无缝组网。 全自定义界面:界面、按钮、文字、图标全可自定义,支持Lua脚本。 多功能使用:可作为待机时钟显示或桌面遥控器。 功能简述: 这款多功能液晶面板能通过自定义的背景和按钮发送特定协议数据,控制被控设备。其高端的真彩液晶屏和全触摸控制设计使操作更加方便快捷。它能直观地控制灯光、场景、窗帘、音乐、空调、地暖等。 适用场景: 家庭、办公楼、酒店、银行、医院、学校、机场、博物馆、实验室、工厂等。 特别适用于会议室、展厅等场所,用作一键场景切换的综合控制面板。 技术规格: 屏幕类型:2.1寸IPS电容彩屏 分辨率:480*480 电池类型:内置鲤电池 充电方式:无线充电 通讯方式:内置MESH通讯模组 界面自定义:支持Lua脚本 外壳:3D打印,无物理接口 使用建议: 适用于智能家居控制,快速切换不同场景。 可通过无线充电方式持续保持设备运行。 通过自定义界面和按钮,实现个性化控制体验。 --- ### 677. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 SJT-CAS01,这是一款专为满足现代工业自动化需求而设计的产品。它集成了多种功能和先进技术,使其成为自动化领域的一款强大工具。 产品概览 产品名称: SJT-CAS01 通用自动化控制系统 版本: V1.0 尺寸: 197x197x80mm 重量: 毛重1950g 材质: 铝合金外壳,表面经阳极氧化喷砂处理 安装方式: 可桌面安装或机柜安装 颜色: 碳岩黑 加工工艺: CNC 界面和用户交互 SJT-CAS01系统提供了高度自定义的交互界面,包括大屏幕和手机界面。用户可以自定义按钮、图标和背景,打造个性化的操作界面。 地理和视频接口 地理接口: 支持与百度底图GIS集成,可在地图上标注项目和设备。 视频接口: 配备萤石在线网络接口,提供高效的视频监控功能。 节点和逻辑支持 节点支持: 单系统支持高达5万节点的架构设计。 逻辑判断: 系统能进行自定义数值量和开关量的逻辑分析,并联动设备执行。 工单和报警系统 工单管理: 支持系统维护工单的派发和管理。 报警支持: 提供语音、邮件报警提醒。云端部署可实现短信、微信、电话提醒。 独立报警主机: AL08外接独立4G报警主机可实现免云端部署的低成本微信、电话、短信报警。 数据管理 数据记录: 支持不同的数据记录存储策略,包括变化存储和定时存储。 数据报表: 支持生成包含不同设备关键数据的业务报表,并提供曲线分析。 数据备份: 提供数据库的一键/定时备份功能,并支持数据的下载导出。 硬件和系统配置 底层系统: Linux 工业内存: 2-64GB,根据项目需求定制 工业硬盘: 64-1024GB,根据项目需求定制 总线接口: 18个独立的485/232接口 总线速率: 波特率范围1200-115200 协议支持: 包括标准Modbus、Hj212、Mlink协议,以及非标开放协议 无线接口: 支持zigbeemesh2代和zigbee3.0 网络接口: 包括Tcp/ip和MQTT Server SJT-CAS01通用自动化控制系统是一款高度可定制且功能强大的工业自动化解决方案,适用于各种复杂的自动化需求。无论是在数据处理、设备管理还是用户交互方面,它都提供了高效且灵活的选项,使其成为现代工业自动化的理想选择。 --- ### 678. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品简介: X-SSG-A1101-RS485 十合一环境及空气质量传感器采用高速处理器, 集成 CO2、甲醛、TVOC、激光粉尘PM2.5 、PM10 、PM1.0 颗粒物、温度、湿度、气压、光照度及噪声检测于一体, 通过 RS485 总线 通信方式实现环境质量数据检测上报。采用旋转卡扣方式吸顶安装,操作简单。 传感器数据 测量分辨率 测量范围 测量精度 二氧化碳 eCO2 1ppm 400 ~ 60,000ppm ±30ppm TVOC 1ug/m3 0 ~ 60,000ug/m³ ±50ug/m3 甲醛 CH2O 1ug/m3 0 ~ 1,000ug/m³ ±25% PM2.5 1ug/m3 0 ~ 1,000ug/m³ ±10% PM10 1ug/m3 0 ~ 1,000ug/m³ ±10% PM1.0 1ug/m3 0 ~ 1,000ug/m³ ±10% 温度 0.01℃ -40 ~ 85℃ ±0.2℃ 湿度 0.01% 0 ~ 100% ±1%RH 气压 1Pa 30,000 ~ 110,000Pa ±12Pa 光照度 1Lux 0 ~ 60,000Lux ±5% 噪声 1dB 30 ~ 90dB ±3dB 注意:模块输出的 CH2O 值为 TVOC 的等效值,客户购买和使用时请注意。 工作电压: DC5V±0.2V @150mA 工作环境: 工作温度- 10 ~ 60℃,工作湿度: 5 ~ 95%RH(无凝结) 通讯方式: Modbus-RTU 485 接口 预热时间: 小于 3 分钟,半导体 VOC 传感器理论上来说通电时间越久越稳定 使用寿命: 3 年(空气中) 外观尺寸图: I 、标准 4 线接口 II 、2 线 + USB 供电接口 如上图所示, 本产品⃞供“标准 4 线接口”和“2 线+USB 供电”两种物理接口,选购时请根据实际需要注明。 本产品默认使用 5V 直流供电,如需特殊电压(6 - 36V),可联系我们定制。 接线定义 1) “标准 4 线”接口类型: 序号 名称 备注 RS485_A 黄色 RS485_A RS485_B 绿色 RS485_B DC+ 红色 默认 5V 直流供电, 特殊电压需定制 GND 黑色 接地线 “2 线+USB 供电”接口类型: 2) 序号 名称 备注 A 红色 (A) RS485_A B 黑色 (B) RS485_B U Micro USB 直流 5V 供电 注意:上表中的颜色为常规说明,具体接线时请以产品上的标签为准。 IV. RS485 通讯协议 通信参数 ModBus-RTU 参数: 9600/8/N/1 出厂默认地址: 0x01 返回数据时间:小于 100ms 通信协议 1) 读取地址命令 方向:用户应用->传感器模块;需要应答:是 请求消息格式: 字节编号 数据 说明 0 0xFE 广播地址 1 0x11 报告从机地址功能码 2 0x00 固定 3 0x00 固定 4 0x00 固定 5 0x01 固定 6 7 CRC_L CRC_H CRC 校验 响应消息格式: 字节编号 数据 说明 0 0x01 从机地址 1 0x11 报告从机地址功能码 2 0x02 字节数 3 version 固件版本 4 address 当前地址 5 6 CRC_L CRC_H CRC 校验 例如:发送命令: FE 11 00 00 00 01 28 06 返回数据: 01 11 02 12 01 70 5C 说明:返回数据中 0x12 表示版本号为 V1.2 ,0x01 表示设备地址为 01 2) 修改地址命令。模组出厂默认地址为 0x01,地址范围可更改为: 1~247 方向:用户应用->传感器模块;需要应答:是 请求消息格式: 字节编号 数据 说明 0 address 当前地址 1 0x06 功能码 2 0x00 固定 3 0x00 固定 4 0x00 预留 5 new address 新地址 6 7 CRC_L CRC_H CRC 校验 响应消息格式: 字节编号 数据 说明 0 address 修改前的地址 1 0x06 功能码 2 0x00 固定 3 0x00 固定 4 0x00 预留 5 new address 修改后的地址 6 7 CRC_L CRC_H CRC 校验 例如:当前地址为: 0x01 ,预设地址为: 0x02 发送命令: 01 06 00 00 00 02 08 0B 返回数据: 01 06 00 00 00 02 08 0B 当前地址再从: 0x02 ,改回: 0x01 发送命令: 02 06 00 00 00 01 48 39 返回数据: 02 06 00 00 00 01 48 39 3) 读取数据命令 方向:用户应用->传感器模块;需要应答:是 请求消息格式: 字节编号 数据 说明 0 address 当前地址 1 0x03 功能码 2 3 0x00 MM 寄存器开始地址 4 5 0x00 NN 需要读取的传感器个数 6 7 CRC_L CRC_H CRC 校验 应答消息格式: 字节编号 数据 说明 0 address 当前地址 1 0x03 功能码 2 NN*2 数据长度 传感器数据(气压占 4 字节, 既 2 个寄存 3 xx xx...... 器; 其他每个传感器数据占 2 字节, 既 1 个寄 存器) 3+NN*2 4+NN*2 CRC_L CRC_H CRC 校验 注意:返回传感器数据可以根据寄存器地址和数据长度来改变。 寄存器地址(0x00MM)与对应的传感器数据说明如下, 气压占 4 字节(2 个寄存器),其余每个传 感器数据占 2 字节(1 个寄存器)。 寄存器地址 传感器数据 占用寄存器数量 0x0000 eCO2 1 0x0001 TVOC 1 0x0002 CH2O 1 0x0003 PM2.5 1 0x0004 湿度 1 0x0005 温度 1 0x0006 PM10 1 0x0007 PM1.0 1 0x0008 光照度(Lux) 1 0x0009 MCU 温度 1 0x000A 噪声(dB) 1 0x000B 气压(Pa) 2 说明: ① 传感器个数 00 NN 最小为 00 01,最大为 00 0B。MM 值为 00 时, NN 值最大可为 0B,此时能读 出所有传感器的值, NN 为 01 时只能单独读取 eCO2 的数据, NN 为 02 时可读取 eCO2 和 TVOC 的数 据,以此类推。 ② 寄存器靠前的地址,在加大数据长度时,可读取后面传感器的数据,但寄存器靠后的地址,不 能读取在此地址前传感器的数据。 ③ 一个寄存器容纳 2 个字节数据, 气压占 4 字节,既 2 个寄存器,因此,在读取气压时要把连续 两个寄存器都读出来,其他每个传感器数据占 2 字节,既 1 个寄存器。 详情如下: 00MM00NN 可以读取到的数据 00000001 00000002 ...... 表示从起始地址 0000 读取 CO2 数据 表示从起始地址 0000 读取 CO2 ,TVOC 数据 ...... 0000000D 00010001 00010002 ...... 00010007 0001000C 00020001 00020002 ...... 000B0001 表示从起始地址 0000 读取 CO2 ,TVOC ,CH2O ,PM2.5 ,湿 度,温度,PM10 ,PM1.0,光照度, MCU 温度,噪声数据,气压 数据 表示从起始地址 0001 读取 TVOC 数据 表示从起始地址 0001 读取 TVOC ,CH2O 数据 ...... 表示从起始地址 0001 取 TVOC ,CH2O ,PM2.5 ,湿度,温 度,PM10 ,PM1.0 数据 表示从起始地址 0001 取 TVOC ,CH2O ,PM2.5 ,湿度,温 度,PM10 ,PM1.0,光照度, MCU 温度,噪声数据,气压数据 表示从起始地址 0002 读取 CH2O 数据 表示从起始地址 0002 读取 CH2O ,PM2.5 数据 ...... 表示从起始地址 000B 读取气压数据(2 个寄存器) 例如: 模组的地址为 0x01, 用户发送: 01 03 00 00 00 09 85 CC ,即可将 9 个传感器数据读出; 用户发送: 01 03 00 00 00 0B 04 0D ,即可将 11 个传感器数据(含 MCU 温度)读出; 用户发送: 01 03 00 00 00 0D 84 0F ,即可将 12 个传感器数据(气压占 2 个寄存器)读出; 用户发送: 01 03 00 0B 00 02 B5 C9 ,即仅读取气压数据(占 2 个寄存器)。 4) 读取一帧数据 5) 返回数据格式如下: 字节编号 数据 说明 0 0x01 报文头 1 0x03 功能码 2 0x1A 数据长度 3 4 CO2_H CO2_L CO2 数据 5 6 TVOC_H TVOC_L TVOC 数据 7 8 CH2O_H CH2O_L CH2O 数据 9 10 PM2.5_H PM2.5 L PM2.5 数据 11 12 Humi_H Humi_L 湿度数据 13 14 Temp_H Temp_L 温度数据 15 16 PM10_H PM10_L PM10 数据 17 18 PM01_H PM01_L PM1.0 数据 19 20 Lux_H Lux_L 光照度(Lux)数据 21 22 MCU_TEMP_H MCU_TEMP_L MCU 温度数据 23 24 dB_H dB_L 噪声(dB)数据 25 Pa_byte[3] 26 Pa_byte[2] 气压数据(Pa) 27 Pa_byte[1] 28 Pa_byte[0] 29 CRC16_L 30 CRC16 H _ CRC16 校验 6) 系统参数配置 7) 可以通过对下表寄存器地址的读、写,以获取或修改系统参数。 8) 注意: 此项为高级功能, 请小心使用, 以免造成系统参数错误, 影响传感器功能或数据准确性。 寄存器地址 长度(字节) 系统参数 0x0100 4 传感器配置位图(Sensor Map) 字节 1(在前):是否为外置温湿度传感器 0x0110 2 字节 2:传感器数据用户校准位图,参见“传感 器模块位图 ” 字节 1(在前):专用串口屏自定义指标项对应 0x0111 2 的传感器编号 字节 2:光照度传感器感光罩的透光率(0- 100), 0 表示没有感光罩, 100 表示无损耗 0x0118 2 CO2 校准值, int16 0x0119 2 TVOC 校准值, int16 0x011A 2 CH2O 校准值, int16 0x011B 2 PM2.5 校准值, int16 0x011C 2 湿度校准值(100 倍), int16 0x011D 2 温度校准值(100 倍), int16 0x011E 2 PM10 校准值, int16 0x011F 2 PM1.0 校准值, int16 0x0120 2 光照度(Lux)校准值, int16 0x0121 2 MCU 温度校准值, int16 0x0122 2 噪声(dB)校准值, int16 0x0123 2 大气压校准值, int16 注意: 1 所有用户校准值都是有符号整数,负数表示负偏移,既要减去偏移量; 2 温、湿度用户校准值是按摄氏度放大 100 倍,如: 250 表示需要加 2.5 摄氏度; -110 表示需要 减去 1.1 摄氏度。 例如: 模组的地址为 0x01, 用户发送: 01 03 01 10 00 01 84 33 ,读出外置温湿度传感器标记和传感器数据用户校准位图; 用户发送: 01 06 01 10 00 02 04 0D ,打开温湿度用户校准开关; 用户发送: 01 03 01 1D 00 01 15 F0 ,读出温湿度校准值; 用户发送: 01 06 01 1D 00 FA 98 73 ,设置温度用户校准值 250,既+2.5 度; 用户发送: 01 06 01 1D 80 6E F8 1C ,设置温度用户校准值-110,既-1.1 度。 4.3 电脑读取 RS485 数据 通过“485 转串口”适配器,可以将传感器模组连接到电脑以检测通讯和查看数据。电脑端可以使 用 ModBus 测试工具(如: ShortBus Modbus Scanner,效果见下图)直接读取数据;也可以使用“串 口助手”等标准串口工具,通过发送查询消息获取数据。 V. 各种传感器数据计算方式 . CO2 (ppm) = CO2_H * 256 + CO2_L . TVOC (ug/m3) = TVOC_H * 256 + TVOC_L . CH2O (ug/m3) = CH2O_H * 256 + CH2O_L . PM2.5 (ug/m3) = PM2.5_H * 256 + PM2.5_L . PM10 (ug/m3) = PM10_H * 256 + PM10_L . PM1.0 (ug/m3) = PM01_H * 256 + PM01_L . 照度 (Lux) = Lux_H * 256 + Lux_L . 噪声 (dB) = dB_H * 256 + dB_L . 接口返回的温、湿度(真实数据的 100 倍): . 正温度 (℃) = (Temperature_H * 256 + Temperature_L) / 100, 例如: T = (0x09d0) / 10 = 2512 / 100 = 25.12℃ . 负温度 (℃) 方法 1:直接转为有符号的 int 类型即可,例如: T = 0xfc83/10 = -893/100 = -8.93℃ 方法 2:如果大于 0x7fff(32767) 则为负数 T = (0xfc83 - 65536) / 10 = (64643 - 65536) / 10 = -893 / 100 = -8.93℃ . 湿度 (%RH) = (Humidity_H * 256 + Humidity_L) / 100 . 气压 (Pa) = Pa_byte[3] * 224 + Pa_byte[2] * 216 + Pa_byte[1] * 28 + Pa_byte[0] . 根据气压计算海拔高度 气压单位是 Pa,理论上,海拔每上升 9 米,大气压降低 100 Pa。而海平面标准大气压为 101,325 Pa, 因此,可以用下面的公式根据气压值(Pa)计算海拔高度(Altitude)的近似值: 1 、 简化版海拔高度公式 = (101325 – Pa) / 100 * 9 除了海拔高度, 影响气压的因素还有很多(例如温度),下面的公式相对更精确一些, 特别是在高海 拔位置: 2 、 校准版海拔高度公式 = 44330 * (1 – (Pa/101325)0.1903) 例如:如果测得的气压值为 99,882Pa,则两个公式计算得到的海拔高度(Altitude)分别为: . 简化版海拔高度 = (101325 – 99882) / 100 * 9 = 129.8 米 . 校准版海拔高度 = 44330 * (1 – (99882/101325)0.1903) = 120.84 米 VI. 注意事项 . 初次上电使用需预热 3 分钟以上 . 传感器安装位置应高于地面 15~20CM 以上, 否则可能有地面沙尘, 飘絮物等大尘埃颗粒甚至絮 状物污染导致风扇缠绕阻转,建议使用设备采取适当的预过滤处理。 . 本产品为精密仪器, 请不要打开外壳, 正常操作无需了解设备内部情况。如设备有损坏, 必须 由专业人员检修和维修,在检修和维修之前请确认外部连接电源已切断。。 . 传感器数据确保出厂个体之间的一致性, 不以第三方检测仪器或数据作为对比标准。如用户希 望最终测量结果和某第三方检测设备一致,可由用户根据实际采集结果进行数据拟合校准。 . 本传感器适用于普通室内环境,如用户设备在以下实际环境中使用,传感器有可能因过度积 尘、积油、进水导致数据一致性下降。例如:全年尘埃浓度大于 300 微克/立方米时间超过 50% ,或大于 500 微克/立方米时间超过 20%;油烟环境;高水雾环境;户外等。 VII. 传感器模块位图 位 传感器模块 0x01 光照度 0x02 温湿度气压 0x04 粉尘 0x08 空气质量 0x10 噪声 产品购买:https://item.taobao.com/item.htm?ft=t&id=675637355531 --- ### 679. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品简介 PXB-6020 是一款 Modbus 与 CAN FD 协议转换器。该设备可以实现 Modbus 协议与CAN FD 总线间的数据互转。 其中 Modbus 支持 RTU 和 TCP 两种协议类型,并且设备支持Master 和 Slave 两种模式,极大地方便与其他不同协议控制设备间的连接。 PXB-6020 支持128 组周期发送报文和 128 组白名单接收报文,周期发送报文周期准确率高。同时设备支持自定义发送模式,通过自定义发送模式方式,可灵活地实现按需发送 CAN FD 数据帧。 PXB-6020 是一款工业级的协议转换设备,工作温度范围-40°C ~ +85°C,支持 9V ~ 36V宽压电源输入,CAN FD 接口和 RS485 接口都具有电气隔离,可应用于各种工业控制场合。 产品特性 PXB-6020 产品的特性如下: ⚫ 硬件特性: ➢ 32 位高性能 RISC-V 内核,816MHz 主频 CPU; ➢ 转换时间约 1ms,疾速转换; ➢ 通讯接口全隔离,稳定可靠; ➢ 设备通过 EMC 及环境试验等多种严苛试验,真正工业级品质; ➢ 自适应 10/100M 以太网接口(RJ45 接口); ➢ 精致小巧,安装方便; ➢ 宽电压输入:DC 9~36V,典型工作电流 100mA; ➢ 工作温度: -40°C ~ +85°C; ➢ 存储温度: -40°C ~ +85°C; ⚫ 功能特性: ➢ 串口波特率支持用户设定 9600~2000000bps,最高支持 2M 超高波特率; ➢ 串口数据位、停止位、检验位均可设定; ➢ IP 地址、从机 ID、目标 IP 和端口均可设定; ➢ 提供四种工作模式:Modbus RTU 主站/从站、Modbus TCP 主站/从站; ➢ 支持发送和接收 CAN、CAN FD 和 CAN FD 加速报文; ➢ CAN FD 速率最高支持 5M 超高波特率; ➢ 支持标准帧、扩展帧及远程帧; ➢ 支持 128 组周期发送报文和 128 组白名单接收报文; ➢ 支持设定 CAN 类型、CAN FD 标准和 CAN FD 加速等参数; ➢ 支持自定义发送模式,可自定义精准发送 CAN 或 CAN FD 报文; ➢ 支持设置周期发送等待时间; ➢ 配套 AWPX Tools 配置软件,使用简单,快速上手; ➢ 支持一键恢复出厂设置,多重保障; ➢ 支持一键远程升级固件。 4. 设备配置 PXB 系列协议转换器都通过 AWPX Tools 软件(以下简称 AWPX)来进行配置。 产品上电后,可将 PXB-6020 产品与运行 AWPX 软件的 PC 主机通过以太网线接入同一个局域网(通过交换机 或直连)进行配置。   4.1 配置软件安装 双击 AWPX 的安装包开始安装 AWPX,双击后,安装开始界面如图 4.1 所示。 图 4.1 开始安装 AWPX 点击若干【下一步】后, 安装界面如图 4.2 所示。 图 4.2 AWPX 安装界面 最后, 点击【安装】, AWPX 正式开始安装,耐心等待安装完成即可。   4.2 配置软件界面介绍 运行 AWPX 软件, 界面如图 4.3 所示。 图 4.3 AWPX 界面 AWPX 界面的左侧为 PXB 系列产品的设备信息,包括“目标板”、“协议转换类型” 和“设备配置”。“设备配置”栏的右侧为配置选项的具体信息。 界面的最上方为菜单栏按钮, 包括【扫描设备】、【保存配置】、【获取配置】等按 钮。如图 4.4 所示。 图 4.4 菜单栏按钮 1 、扫描设备 点击【扫描设备】按钮, AWPX 软件将搜索当前局域网中的所有 PXB-60 系列设备, 并 将目标板的 IP 地址和固件版本显示在“目标板”下拉框中。在“目标板”下拉框中选中正 确的设备后,即可对 PXB-6020 进行配置。 2 、保存配置 当修改任意参数后, 点击【保存配置】按钮即可将修改的配置下发至 PXB-6020,使修 改的配置生效。保存配置将重启 PXB-6020,等待软件最底部出现的重启提示消失即可。 3 、获取配置 选中设备后,点击【获取配置】按钮即可获取并显示当前 PXB-6020 运行的配置。 4 、导入配置 选中设备后,点击【导入配置】按钮,可将以.awp 为后缀的配置文件导入 AWPX 软件。 导入正确的配置后, 可对导入的配置进行修改或直接保存至 PXB-6020。 5 、导出配置 选中设备后,点击【导出配置】按钮,可将当前配置的参数导出为.awp 后缀的配置文件。 以便下一次使用 AWPX 时,可通过【导入配置】按钮,将保存在本地的配置文件快速导入 并配置。 6 、系统设置 【系统设置】按钮包括三个子选项: 【网络设置】、【固件升级】和【关于】。 【网络配置】: 用于设置 PXB-6020 的 IP 地址、子网掩码和默认网关等网络参数。具体 界面可见“4.3.1”小节。 【固件升级】: 用于 PXB-6020 升级和更新固件, 具体界面可见“4.3.7”小节。 【关于】: AWPX 软件相关的版本信息。   4.3 使用配置软件进行配置 使用 AWPX 配置软件进行配置 PXB-6020 的步骤主要为: 第一步,点击【扫描设备】, 并选中正确的设备。如果没有扫描并选中设备,将无法对 PXB-6020 进行任何配置。 第二步,配置参数, 可根据需求,配置“设备配置”栏的参数和网络参数。 第三步,参数配置完成后,点击【保存配置】将配置的参数保存至 PXB-6020。   4.3.1 网络设置 PXB-6020 默认 IP 地址为“192.168.1.136”, 如需要更改 IP 地址等网络参数,可点击 软件界面最上方的【系统设置】按钮,在弹出的菜单中点击【网络设置】按钮,进行网络 设置, 如图 4.5 所示。 图 4.5 网络设置   4.3.2 Modbus 参数配置 在 AWPX 软件的“设备配置”栏点击【Modbus 设置】即可进行 Modbus 参数的配置, 包括工作模式、波特率和检验位等 RTU 通信参数, 串口波特率最高可配置为 2M。配置界面 如图 4.6 所示。 图 4.6 Modbus 参数设置 PXB-6020 支持四种工作模式,可以通过“工作模式”下拉列表框进行选择, 每一种工 作模式都有对应的Modbus参数,这四种工作模式的功能描述及对应参数描述如表4.1 所示。 表 4.1 Modbus 参数说明 工作模式 功能描述 配置项 配置项描述 Modbus RTU 主站 PXB-6020 工作在 Modbus RTU 主机模式下,可外接唯 一的 Modbus 从机 波特率 RTU 通信参数 数据位 停止位 校验位 从机 ID 外接唯一的从机 ID Modbus RTU 从站 PXB-6020 工作在 Modbus RTU 从机模式下,外部 Modbus 主机可读写 PXB- 6020 寄存器 波特率 RTU 通信参数 数据位 停止位 校验位 本机从机 ID PXB-6020 作为从机的 ID Modbus TCP 主站 PXB-6020 工作在 Modbus TCP 主机模式下 从机 IP 地址 唯一 TCP 从机的 IP 地址 从机端口号 唯一 TCP 从机的端口号 对端从机号 唯一 TCP 从机 ID Modbus TCP 从站 PXB-6020 工作在 Modbus TCP 从机模式下,外部 Modbus 主机可读写 PXB- 6020 寄存器 本机端口号 PXB-6020 作为从机的端口号 本机从机号 PXB-6020 作为从机的 ID   4.3.3 CAN FD 参数配置 PXB-6020 工作在任意一种工作模式下,均可发送 CAN 或 CAN FD 报文。在 AWPX 软件的“设备配置”栏点击【CAN FD 参数】即可进行 CAN FD 参数的配置,界面如图 4.7 所示。 图 4.7 CAN FD 参数说明如表 4.2 所示。 表 4.2 CAN FD 参数界面 CAN FD 参数说明 参数 参数说明 CAN 类型选择 类型选择可选择为 CAN 或 CAN FD 仲裁段波特率 设置 CAN 或 CAN FD 报文的仲裁段波特率 数据段波特率 类型为 CAN FD 有效,设置 CAN FD 报文的数据段波特率 CAN FD 标准 类型为 CAN FD 有效,设置 CAN FD 报文所使用的标准 CAN FD 加速 类型为 CAN FD 有效,用于设置发送的 CAN FD 报文是否启用 CAN FD 加速 周期发送等待时间 用于设置 PXB-6020 上电初始化完成之后等待多久才开始周期发送报文   4.3.4 周期发送报文配置 PXB-6020 工作在任意一种工作模式下,均可周期性发送 CAN 或 CAN FD 报文。周期 发送的报文是 CAN 帧还是 CAN FD 帧取决于在【CAN FD 参数】界面的【CAN 类型选择】 的设置。 在 AWPX 软件的“设备配置”栏点击【周期发送报文】即可进行周期发送报文的参数 配置, 周期发送报文界面如图 4.8 所示。 图 4.8 周期发送报文界面 通过界面右上角的【添加+】按钮进行添加周期发送的报文, 最多添加 128 条周期发 送的报文。如需删除周期发送的报文,可通过界面右侧的【删除】按钮进行删除, 周期发 送报文界面的参数说明如表 4.3 所示。 表 4.3 周期发送报文界面参数说明 参数 参数说明 帧 ID 设置周期发送的帧 ID,可为十进制或十六进制(需以 0x 开头) 帧类型 设置为标准帧或扩展帧 远程帧 发送帧是否为远程帧, CAN 类型选择为 CAN FD 时,此选项无效 数据长度 发送帧数据段长度, CAN 帧时最多 8 字节, CAN FD 帧时最多 64 字节 Modbus 寄存器地址 周期发送的报文数据在设备或 Modbus 从机的保持寄存器的起始地址 周期时间 设置周期发送报文的时间间隔,单位为 ms 周期发送报文的数据来源在 Modbus 从机的保持寄存器中。 如 PXB-6020 运行在 Modbus 主机模式,则周期发送报文数据来源在外接的 Modbus 从 机的保持寄存器中。如 PXB-6020 运行在 Modbus 从机模式,则周期发送报文数据来源在 PXB-6020 内部的保持寄存器中。 如设置周期发送长度为 8 的 CAN FD 帧, 设置 Modbus 寄存器地址为 1,数据存放规 则如下: 假设 Modbus 从机的保持寄存器数据为: 1 地址: 0x1234 ,2 地址:0x5678。 则 PXB-6020 将从 1 地址开始读取数据, 周期发送 CAN FD 帧: 34 12 78 56 00 00 00 00(16 进制) 。读取保持寄存器的个数取决于设置的周期发送的报文长度。   4.3.5 接收报文配置 PXB-6020 工作在任意一种工作模式下,均可接收 CAN 或 CAN FD 报文。接收的报文 是 CAN 帧还是 CAN FD 帧取决于在【CAN FD 参数】界面的【CAN 类型选择】的设置。 在 AWPX 软件的“设备配置”栏点击【接收报文】按钮即可进行接收报文的参数配 置,界面如图 4.9 所示。 图 4.9 接收报文界面 通过界面右上角的【添加+】按钮进行添加需要接收的报文, 最多添加 128 条接收的 报文。如需删除接收的报文,可通过界面右侧的【删除】按钮进行删除,接收报文界面的 参数说明如表 4.4 所示。 表 4.4 接收报文界面参数说明 参数 参数说明 帧 ID 设置接收报文的帧 ID,可为十进制或十六进制(需以 0x 开头) 帧类型 设置接收报文是标准帧还是扩展帧 数据长度 接收 CAN 帧时最多 8 字节,接收 CAN FD 帧时最多 64 字节 Modbus 寄存器地址 接收的报文数据存储到本机或 Modbus 从机保持寄存器的起始地址 PXB-6020 会将接收到的报文数据写入 Modbus 从机的保持寄存器中。 如 PXB-6020 运行在 Modbus 主机模式,则接收到的报文数据将写入外接的 Modbus 从 机的保持寄存器中。如 PXB-6020 运行在 Modbus 从机模式,则接收到的报文数据将写入 PXB-6020 内部的保持寄存器中。 如设置接收长度为 8 的 CAN FD 帧, 设置 Modbus 寄存器地址为 1,数据存放规则如 下: 假设接收的 CAN FD 帧为:12 34 56 78 00 00 00 00(16 进制)。 则 PXB-6020 将会在 Modbus 从机 1 地址的保持寄存器写入数据 0x3412 ,2 地址的保持 寄存器写入数据 0x7856 。3~4 地址的保持寄存器写入数据 0x0000。写入保持寄存器的个数 取决于设置接收的报文长度。   4.3.6 自定义发送配置 在 AWPX 软件的“设备配置”栏点击【自定义发送】即可进行自定义发送报文的参数 配置,可自定义发送 CAN 或 CAN FD 报文。自定义发送的是 CAN 帧还是 CAN FD 帧取决 于在【CAN FD 参数】界面的【CAN 类型选择】的设置。自定义发送界面如图 4.10 所示。 图 4.10 自定义发送界面 其中【Modbus 寄存器地址】选项用于配置自定义发送报文的数据来源, 自定义发送报 文的数据来源在 Modbus 从机的保持寄存器中。 如 PXB-6020 运行在 Modbus 主机模式,则自定义发送报文的数据来源在外接的 Modbus 从机的保持寄存器中。如 PXB-6020 运行在 Modbus 从机模式,则自定义发送报文 的数据来源在 PXB-6020 内部的保持寄存器中。 点击【自定义发送】按钮,使能自定义发送, 然后在 Modbus 从机对应地址的保持寄 存器依次填入如表 4.5 所示的数据格式即可自定义发送报文的数据和格式。 表 4.5 CAN/CAN FD 数据区格式 字段 寄存器数 子项 描述 事务序号 1 / 值大于 0 表示以下数据区有效,且每次更新发 送需递增此序号,当值达到 65535 时,可重回 1 CANID 2 / 0~28 有效 帧信息 1 标识 低 8 位,定义如下: B2: 远程帧位 B3: 扩展帧位 其他位保留 数据长度 高 8 位 CAN/CAN FD 数据 32 或 4 / 当工作在 CAN 模式时长度为 4,否则为 32 自定义发送举例:如在 AWPX 软件中的【CAN 类型选择】设置为 CAN,且开启自定义 发送, 自定义发送的【Modbus 寄存器地址】设置为 30。 则在 Modbus 从机中地址为 30~37 的保持寄存器依次填入 0x0001 ,0x0000 ,0x0123 , 0x0800 ,0x1122 ,0x3344 ,0x5566 ,0x7788,当地址为 30 的寄存器数值每递增一次,PXB- 6020 就发出一帧 ID 为 0x0123,数据为 22 11 44 33 66 55 88 77(16 进制)的 CAN 标准帧。   4.3.7 固件升级 点击【系统设置】, 在弹出的菜单中点击【固件升级】, AWPX 将弹出升级界面, 如图 4.11 所示。 图 4.11 固件升级 在选择框点击【选择固件】,选择需要升级的固件(bin 文件), 点击【固件升级】, AWPX 将提示正在下载固件到设备, 整个升级过程持续 2 分钟左右。 大约 1 分钟,AWPX 将提示设备固件下载成功,PXB-6020 将自动重启。耐心等待 1 分 钟左右即可,在此重启过程中,请勿断开 PXB-6020 的电源。升级固件完成后, 需重新点击 【扫描设备】按钮, 重新扫描并选中设备进行配置。   5. 典型应用 PXB-6020 可轻松实现 PLC 扩展 CAN/CAN FD 总线能力, 为锂电池、光伏、汽车零部件产线测试赋能。PXB-6020 典型应用如图 5.1 所示。 图 5.1 PXB-6020 典型应用 --- ### 680. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品简介 本产品是一款智能可编程控制器,无需网关,输出使用8颗进口欧姆龙16A大功率继电器,8路光电隔离输入,标配485及网卡,是目前市场上同类产品中最小体积,仅占4个空开位,同层导轨免线拼接,多种联网方式,可适用于智能家居,商业照明,智能农业等一些自动化的邻域。 产品参数 外观尺寸:92.5*76.2*60.5 安装方式:标准DN35导轨安装 工作电压:DC12V(可定制5-24V) 负载电流:阻性负载>16A 感性负载>8A 容性负载>8A 环境温度:-20℃~80℃ 输出路数:8 输入路数:8 通讯方式:485总线、RJ45网线、WiFi、GPRS、315M、433M等 通讯协议:485协议、modbus协议、TCP/IP协议、UDP协议、MQTT协议等 编程方式:上位机软件 产品特色 超小体积仅占4个空开位置,智能家居小电箱的利器。 人性化设计,同层导轨可实现免线拼接扩展。 可通过上位机软件自由编程,内部资源全部开放。 使用多种通讯方式,让模块兼容性更强。 配合语音控制模块可对接天猫精灵,小度,Siri。 支持API控制,方便对接第三方平台。 支持协议转换,协议透传,无线转485,网络转485等 内部自带高精度时钟芯片,可实现本地定时控制。 内置无线接收模块,可以通过遥控器及随意贴开关控制 采用拨码开关地址设置,方便快捷。 内置时钟芯片,可实现本地定时控制。 支持市面上99%的485开关与干接点开关,及传感器的联动。 产品购买:https://item.taobao.com/item.htm?ft=t&id=629715423665 --- ### 681. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简述: 4.3寸触摸多功能液晶面板是一款高端智能家居多功能控制面板。采用真彩液晶屏,全触摸控制,操作方便快捷。它通过直观方式实现对灯光,场景,窗帘,音乐,空调,地暖等控制。 选型建议: 广泛适用于家庭,办公楼,酒店,银行,医院,学校,机场,博物馆,实验室工厂等需要智能场景交互的场合,也适用于弱电集成商,智能家居方案工程师等专业人士使用。 功能说明: 1、支持基础背景,按钮替换 2.支持按钮发送自定义协议 3、支持按钮发送自定义场景和延时指令 4、支持变量数值 5、支持系统变量调用 6、支持标准及非标协议解析 7、支持进度条发送自定义变量协议 8、支持带运算逻辑的变量发送 9、支持通过文本输入框改变变量 10、支持CRC自动校验发送协议 11、支持互锁按钮功能 12、支持更改开机LOGO 13、支持滑屏效果 14、支持协议转换功能 15、支持色盘对RGB调色 16、支持定时发送指令 17、支持密码控件 18、支持调用系统时间实现定时发协议 19、支持弹框选择按钮。 20、支持通过中文输入键盘改变文字显示 21、支持和校验自动计算 22、支持根据自定义数据改变显示页面或者弹框 23、支持自定义协议改变按钮状态 24、支持通过自定义协议锁定屏幕和解锁 25、支持多态按键,实现协议触发不同按键效果 26、支持列表控件 27、支持二维码控件 28、支持滑轮控件 29、支持视频控件 30、支持动画控件 31、支持圆形时钟控件 32、支持圆形指针仪表控件 产品购买:https://item.taobao.com/item.htm?ft=t&id=852422770633 默认模板展示: --- ### 682. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品特点: 1.可Modbus协议调光,地址0~2552.调光过程为实时调光,可以动态响应调光指令3.四组设计,单组可以带阻性负载500w,感性负载300w4.支持开光状态即调光亮度数值反馈5.支持总线整体亮度调亮、调暗指令6.支持单路调亮、调暗指令7.支持单路只开、只关、开关指令8.支持对有刷类电机电扇进行调速9.感性负载配合我们选配的支持调光驱动的T8LED节能灯管10调光平滑无闪烁11.增加模块调光数值数码管显示12.增加3个按键用于切换路数和亮度调节13.支持调光速度调节协议 产品购买:https://item.taobao.com/item.htm?ft=t&id=659009738753 --- ### 683. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品特点: 一.产品特点介绍: 1.具有一条数字可寻址总线控制输出,可管理 64 个地址设备; 2.内含三种分配地址方式算法,符合 IEC62386 和 GBT30104 标准自动地址分配要求; 3.可实现对设备进行广播,组或单地址控制操作; 4.可以设置/读取标准参数表中的参数; 5.可以实现分组设置/读取; 6.可以实现场景值设置/读取; 7.具有独立总线供应电源输出接口,兼容性更灵活; 8.RS485 接口具有光电隔离防雷保护; 9.提供开放性协议直接与现有控制系统集成, 支持组态软件,HMI,PLC 设备直接 Modbus-rtu 对接控制; 10.提供一个星期的定时功能,内置高精度时钟,可脱机定时控制; 11提供四个时序表控制功能,每个表可以预装 32 条个变化信息。 12.支持 35mm 导轨式安装. 主要技术指标: 输入电压:DC24V/2A; 功耗:.<=10WV DALI电源输出: 250mA 以太网接口: 10M/100M自适应,支持5个TCP终端同时接入。 工作温度:-20°C~75°C 相对湿度:10-90% 重量:100g 操作说明 网关具有 4 个指示灯用于指示网关的工作状态 COM:表示 RS485 通信接口状态,红光表示网关接收,绿光表示网关发送; DATA:表示数字可寻址接口通信状态,红光表示数据接收,绿光表示数据发送; RUN:表示网关的工作状态,正常工作,以 1 秒频率闪烁; ALRAM:亮表示输出总线供应电源过流/短路保护。 通讯传送方式定义: 通讯传送方式 ---兼容 Modbus RTU 规约 (请参考 Modbus 协议帧起 始和结束定义,及相关规约) 下面参数红色为出厂设置,可以选择更改 数据位:8 bit 奇偶校验位:(无),奇校验,偶校验 停止位:2 bit,1bit 波特率: 1200;2400;4800;9600;14400;19200;38400; 出厂默认: 9600,8,N,2 帧结构定义: 地址码  功能码  数据区  CRC 校验码 1 字节  1字节   N字节   2字节 地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接MODBUS主机发送来的信息。 并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。 主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。 功能码:通讯传送的第二个字节,作为主机请求发送,通过功能码告诉从机 执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作,本设备只响应的功率码有:0x03,0x06,0x10。 数据区:数据区是根据不同的功能码而不同。数据区可以是参数,参数长度等,具体的数据区内容根据功能码决定。 CRC 校验码:二字节的 CRC16 检测码,低字节在前,高字节在后。 从机回应: 回应地址:仅响应本机地址,广播地址(0x00)不会回应,但写操作时会被执行; 回应时间: 根据读/写的寄存器数量,回应时间有所不同,读/写寄存 器数量越多,回应时间就越久,本网关回应时间在 3 秒内. 功能码描述: 本设备响应的功能码有:0x03,0x06,0x10。 详细介绍请看我司提供的《技术开发文档》. 拨码设置,地址设置: 在网关设备插拨端子傍边有一个 8 位的拨码开关,通过这个开关来设定网关地址(Modbus 站号) 右图所示,本设备采用一个 8 位的拨码开关设置地址,设置地址的范围: 0~255,本设备支持 0 地址作为广播地址。 每一位拨码开关位对应着一个数值,开关拨向 ON 表示有效,把拨向 ON 位的数值相加,即为本设备的地址。 拨码开关位号 1 2 3 4 5 6 7 8 数值    1 2 4 8 16 32 64 128 如:拨码开关第 1,2,4 位拨向 ON,则本设备地址为:1+2+8=11设置的值为: 0: 广播地址; 1~247: 设备单地址; 255: 重新上电 5 秒后会恢复波特率出厂默认值 9600,8,N,2 . 其它值保留. 测试控制端子: 为方便在安装后还没有接入上级系统时,测试下线路是否正确, IN1,IN2 为安装测试端,具体操作方式为: INT1 对 GND 短按: 开灯,所有灯光同时控制; 长按:上调,所有灯光同时控制; INT2 对 GND 短按: 关灯,所有灯光同时控制; 长按:下调,所有灯光同时控制; 消防联动端子: LF+,LF-两为消防电压(DC12~36V)输入端,一般是消防信号有效时,所有 灯光开启到最大亮度。同时支持自设定,可以设置信号有电压或无电压信号 有效,可以设置信号有效时的灯光动作。 产品购买:https://item.taobao.com/item.htm?ft=t&id=665791085313 --- ### 684. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 应用概述 GC-500是一款高效的RS-485通讯转换器模块。它的核心功能是转换一个或多个从站的通讯参数,如波特率、校验位和停止位。此外,它还可以调整从站地址和寄存器地址,为解决RS485总线中可能出现的地址冲突或参数不匹配的问题提供了方案。 为增强稳定性,GC-500在主站接口与从站接口间加入了光电隔离技术,确保主站设备免受外部干扰。同时,其电路设计包含15KV ESD保护与5KA的雷击浪涌保护,大大减少了雷击和静电带来的损害风险。 另外,该模块的每个通信接口均配备了指示灯,让用户能直观地了解各通信口的运行状态。值得一提的是,GC-500确保了主站与从站接口之间的数据透明传输,使得数据交换更为流畅和高效。 典型应用场景 需要转换一个或多个RS485从站的波特率 需要转换一个或多个RS485从站的校验位 需要转换一个或多个RS485从站的停止位 需要转换一个或多个Modbus-RTU从站的站地址 需要转换一个或多个Modbus-RTU从站的寄存器地址 模块参数 通讯参数 产品尺寸 接口定义 应用1 多个从站转波特率 按上图所示接线和配置参数,模块可以转换多个从站的波特率和校验位。 如图,从站原本的波特率是9600无校验,经过模块后转换成19200偶校验。 应用二 多个从站转地址 按上图所示接线和配置参数,模块可以把从站地址1、2、3分别转换成从站地址4、5、6;再并联到已经接了从站地址1、2、3的总线里,避免了地址冲突问题。 “地址转换“模式只适用于Modbus-RTU协议。最多可以转30个从站地址。 参数配置说明 1.给模块供电 2.电脑通过USB转485模块连接模块的MASTER接口 3.模块上拨码开关拨到“ON”的位置进入“参数设置”模式 4.进入配置模式,拨码边上的指示灯会点亮 参数配置说明 如图是配置软件的界面,左边参数是模块2个口的通讯参数右边方框内是地址转换配置列表 通讯参数配置: STEP1:选择模块对应的串口号,并且点击”打开串口按钮 STEP2:先点击“读取配置”按钮获取模块参数,并在此基础修改 STEP3:选择好各参数 STEP4:点击”应用配置”按钮,模块参数修改并立即生效 转换配置: STEP1:点击“读取转换配置” STEP2:根据需要填入转换配置指令 STEP3:点击”应用转换配置 多角度照片 产品购买:https://item.taobao.com/item.htm?ft=t&id=844438927201 --- ### 685. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简述: 一款网络转485网关设备,同时具备Modbus边缘网关功能,可以将众多设备寄存器值轮询暂存,同时可以用寄存器值产于与或逻辑判断功能,输出自定义的数据控制本地设备。 选型建议: 广泛适用于家庭,办公楼,酒店,银行,医院,学校,机场,博物馆,工厂,实验室等使用Modbus设备的用户,也适用于弱电集成商,智能家居方案工程师等专业人士使用。 产品特点: 1、具备传统网络TCP/IP转485的所有功能。2、2个独立串口(波特率可修改),每个独立串口支持2个网络端口。3、每个网络端口分别可以设定服务端客户端,心跳,注册包。4、4个网络端口支持多达128个客户端连接。5、网络模块修改器搜索配置IP,网页配置参数。6、支持将多个Modbus设备状态轮询存储,服务端一次性查询获取。7、轮询寄存器支持多达400个。8、支持多条件与逻辑,或逻辑边缘判断,直接本地执行。9、边缘判断执行,可以添加多条执行指令,或场景指令。10、执行指令支持自定义数据,支持驱动任意总线设备。11、边缘计算判断逻辑支持多达256组。12、支持二次调用开发,提供API调用接口。13、具备NTP时钟校时功能,在连接互联网的情况下可以通过串口1和2下发校时协议。14、模块小巧支持35导轨安装,宽电压7-24V供电。15、支持通过Http协议向任意串口发送自定义总线数据。16、主口支持Modbus Tcp 502端口通讯获取数据。17、支持1-15个寄存器内的一次性读取。 使用方法: 1、模块通电,接入网络。2、同一个局域网下用网络模块修改器查找IP,模块初始状态为自动获取IP,该软件只用来查找,修改获取IP以及设备重启。 3、用IP:88访问网页端进行模块的配置和设置,例如10.168.1.233:88,默认用户名密码为admin,admin 4、状态页面展示的是模块的状态信息。 5、IP地址,用来配置模块的IP相关参数。 6、端口1用于主串口和与之对应的2个网络端口配置。端口2用户轮询串口和与之对应的2个网络端口配置。S/PORT1,对应网络端口1的端口号;S/PORT2,对应网络端口2的端口号;RATE为波特率;RE CNT,断网重连时间10秒;C1 TYPE 端口类型,服务端或者客户端;如果选择客户端C1 IP,为连接服务器的IP地址;如果选择客户端C1 PORT,为连接服务器的端口;如果选择客户端C1 REG,为连接服务器的注册包,为16进制;如果选择客户端C1 HBC,为连接服务器的心跳包,为16进制;如果选择客户端C1 HBCT,为连接服务器的心跳包时间间隔,时间单位为秒;S/PORT2的配置同端口1。 7、Modbus,主要用于轮询数据的配置。• ADD为对外Modbus地址,你可以通过网络和主串口来轮询你配置的所有寄存器数据。• STA为状态,是否开启轮询。• QT为轮询时间间隔,两个寄存器之间的轮询时间间隔。• HREG为Host Register,主机寄存器,可以通过网络和主串口一次性来轮询所配置寄存器的值。• FUN为轮询功能代码和轮询寄存器数量,“23”表示用功能码03一次性轮询2个寄存器• NAME为该寄存器的名字辅助记忆。• SAD为Sliver Add,从机地址。• SREG为Sliver Register,从机寄存器。• VALUE为轮询回来寄存器的值。 8、自动化/Automation主要用于对轮回回来的数据进行与或逻辑的比较计算,并调用指令执行。• 自动化名称:为该逻辑的名称。• 逻辑运算符:可以选择与逻辑(都满足才执行)和或逻辑(满足一个就执行)。• 结果为真执行:表示满足运算条件后发出自定义16进制数据1111(数据之间无空格),如果要发送多条指令,点击添加执行就可以。参与逻辑运算的寄存器,只要其中一个发生变化就会进行一次逻辑判断。• 结果为假执行:表示不满足运算条件后发出自定义16进制数据1111(数据之间无空格),如果要发送多条指令,点击添加执行就可以。参与逻辑运算的寄存器,只要其中一个发生变化就会进行一次逻辑判断。• 条件1-HADD:表示参与逻辑判断的Modbus主机地址(MG02的地址);条件1-HREG Add:表示参与逻辑判断的Modbus主机寄存器地址;这样就可以获得唯一的对比数值,让其参与自动化逻辑运算条件运算符:表示对寄存器值的逻辑判断运算规则,包含大于,小于,等于,大于等于,小于等于,不等于;条件值表示参与运算规则的参考值。• 增加条件按钮:可以增加多个判断条件,结合逻辑运算符进行与/或逻辑判断。 9、设置菜单进行用户名密码的设置。• 是否开启校时功能,是可以通过协议向串口1或者串口2下发校时协议,校时周期为24小时,点击立即校时会马上发送校时协议,机器码为校时协议的前4个字节。• 校时协议:举例:23年7月2日星期六11点27分09秒22 10 11 00 (机器码) F0 BB 78 01 (固定字节) 0B(11点)1B(27分)09(09秒)17(23年)07(7月)02(2日)06(星期6) 64(结束字节)注意:周日为07不是00• 下发端口,可以选择校时协议发送的串口,PORT1为串口1,PORT2为串口2。• WEB PORT为Web访问端口,默认为88暂时不支持修改。• 模块名,为模块的名字方便管理。 更新功能 1、有些设备的寄存器数据,特别是电表类产品,是4个字节,所以我们原有两个字节的存储位置无法满足。本次通过优化支持2,4,5,8字节数据长度的寄存器数据读取。数据读取后将自动顺延记录到接下来的数据存储位置。例如你的数据为4个字节,你读取的寄存器地址为00 48,那么数据会自动填充到主机寄存器 00 11和00 12位置。寄存器00 12填入FF 01。这样系统会自动跳过00 12轮询,只轮询00 11位置的00 48。寄存器地址第一个字节为FF XX ,系统就会跳过该位置轮询。 2、自动化逻辑判断优化。前期我们自动化判断逻辑基于的值来源为设备的地址和寄存器地址。理论上是不会重复,但是很多Modbus协议寄存器地址一样,功能码不一样读取出来的含义不一样,比如01/02功能码读取00 00 寄存器:01读的是输出状态,02读的是输入状态。这样参与自动化逻辑状态比较的时候就不能获得唯一的值来比较了。所以我们将比较的地址改为主机地址,寄存器地址为主机寄存器地址,这样就可以获得唯一的对比数值,让其参与自动化逻辑运算。 3、配置了多个寄存器读取规则。如果要复制到多个设备,全部重新添加一次是比较费时间的,所以我们做了一个工具,可以备份和恢复设置的Modbus寄存器读取规则。填入MG02的网关地址就可以备份还原。 Http协议 支持通过http协议将自定义串口数据发送到总线网络。Http协议格式如下: http://192.168.1.200:88/uartw.cgi?data=DDCCBBAACC00020001&type=1&pswd123asadmin:admin= http://192.168.1.200:88/uartw.cgi?data=DDCCBBAACC00020001(16进制数据)&type=1(1/2分别代表串口1/2)&pswd123(固定)as(固定)admin(用户名):admin(密码)= Modbus Tcp协议 支持Modbus Tcp通讯方式,使用方法如下:在客户端或者服务端模式下,将主口的端口设置为502,上位机和MG02的通讯方式将自动切换为Modbus Tcp方式,同时另外一个通讯端口将会失效。 --- ### 686. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 用途及特点 本产品是一款利用PIR 红外传感器设计的感应运动物体的感应器。当感应器感测到有物体移动后通过 RS485 总线输出串口数据,从而使其它电器设备运行或者停止. 产品为高稳定性 PIR 红外传感器,它使用了先进的信号分棚处理技术、使探测器更少的误报。当有入侵者通过探测区域时,探测器将自动探测区域内的人体活动。 技术参数 1)输入电压:9VDC-14V. 2)电流:<85mA 3)防护等级:IP20 4)PIR 探测角度:120 度 5)红外探测距离: MAX 8M 直径 6)感应持续输出时间:约 3 秒 7)感应输出方式:RS485 串口数据 8)LED 指示输出方式: 可以设置 ON /OFF,红色 LED 为 PIR 输出指示 9)工作温度,湿度:-30℃~+50℃/< 93%RH 不结露 10)安装高度:2.5M<H<3.5M(可根据客人选择输出方式来调整安装高度) 探测范围 探测最大范围半径 4m (安装高度 3 米) 安装要求:吸顶安装,天线感应面垂直往下 安装需要远离马达干扰,发热体干扰. 接线端子及跳线说明 1.接线端子: 从左到右分别是电源正(V+);电源负(GND);RS485 LB; RS485 LA。 2.ID学习按键:长按S1按键3秒进入感应器ID设置模式,同时可以看到红色LED快闪(频率5HZ).此时使用 者可以参考协议设置感应器ID.如果60秒内仍然没有发送设置ID指令,感应器自动退出ID设置模式。 3.红色LED选择跳线:红外PIR传感器指示灯ON/OFF选择跳线,跳线在OFF一边时指示灯常灭,跳线在ON一边 时红外感应器感应有人时指示灯点亮。 红外探测范围 外形尺寸和安装尺寸 通讯协议 数据格式 有线RS485通讯模式:波特率9600,8个数据位,1个起始位,一个停止位,无校验位共10个bit。2据格式 设置感应器地址 写:01 06 00 01 00 01 crc16 读:03功能码 00 01 表示ID=1 感应有人保持时间 写:01 06 00 02 00 03 crc16 读:03功能码 00 03 默认值,1-255秒可调 LED 亮灭设定 写:01 06 00 04 00 01 crc16 读:03功能码 00 00:LED 灭:00 01 亮 默认00 01 LED亮灭设定必须在LED跳线设定到ON的位置 发送数据方式 写:01 06 00 05 00 01 crc16  读:03功能码 00 00:查询:00 01 主动发送 红外感应状态 读:01 03 00 06 00 01 crc16  00 00:无人:00 01 有人 产品购买:https://item.taobao.com/item.htm?ft=t&id=671321364999 --- ### 687. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简述 检测温度、湿度、二氧化碳、甲醛、TVOC、PM2.5、PM10,检测数据通过总线协议输出中控设备控制使用或用于APP展示。 选型建议 广泛适用于家庭,厨卫,办公楼,酒店,医院,学校,车站,博物馆,会展中心工厂,农业等有空气检测需求的用户,也适用于室内空气检测机构,空气净化器和新风系统从业者,Geek,环保玩家,环境检测等专业人士使用。 产品参数 产品名称:7合一空气质量 产品重量:200g 波特率:9600 8N1 产品型号:AIR7C 工作温度:-10-60 安装方式:吸顶安装 外观尺寸:25*110*109mm 输入电压:7-24V 通讯:RS485/ZgbMesh2代 拓展通讯:(需搭配转换模块)KNX,CAN,LORA,WIFI,ZIGBEE,BLUETOOTH,4G,CAT1 温度:NTC原理,测量分辨率0.01C,测量范围-40-100C,测量精度+1C 湿度:HIH原理,测量分辨率0.04%,测量范围1-100%,测量精度3%RH CO2:红外非分光原理,测量分辨率1ppm,测量范围400-5000ppm,测量精度:3%+50ppm 甲醛:电化学原理,测量分辨率1ug/m3,测量范围0-2000ug/m3,测量精度10% TVOC:电化学原理,测量分辨率1ug/m3,测量范围0-2000ug/m3,测量精度+25% PM10:激光散射原理,测量分辨率1ug/m3,测量范围0-999ug/m3,测量精度+10 PM2.5:激光散射原理,测量分辨率1ug/m3,测量范围0-999ug/m3,测量精度+10 功能说明 同时输出温度、湿度、C02、甲醛、TVOC、PM2.5、PM10共七组数据 PM2.5传感器采用激光散射原理。空气通过测量腔体时空气中的悬浮颗粒物使激光产生散射,在特定角度收集激光散射光,得到散射光强随时间变化的曲线微处理器根据米氏(MIE)理论,计算出颗粒物的等效粒径及单位体积内不同粒径的颗粒物数量,实现精准测量独有激光自校准技术,保证精准度。 采用双频数据采集技术,可实时检测当前颗粒物浓度。 检测颗粒物直径的范围从0.3um至10um。 PM25以TSI8530为标准,与大多数计量局的测试设备一致 温度采用NTC原理,湿度采用HIH原理,测量范围广,精确度高 立体风道设计,提高风量穿过率,准确识别颗粒物含量。 传感器采用金属屏蔽外壳,抗干扰性能好。 数据参考标准 PM2.5数据参考标准 ·优:0~35,空气质量令人满意,适合户外运动。 ·良:35~75,空气质量可接受,极少数易感人群健康有较弱影响,户外运动基本不受影响。 ·轻度污染:75~115,易感人群症有轻度加剧,健康人群出现刺激症状,建议适量减少户外活动时间。 ·中度污染:115~150,易感人群症状加剧,健康人群心脏、呼吸系统或受影响,建议取消户外运动。 ·重度污染:150~250,易感人群心肺症状显著加剧,运动耐受力降低,健康人群出现症状建议,停止户外运动。 严重污染:250及以上,易感人群和健康人群均有明显症状,尽量避免户外活动 甲醛数据参考标准 ·甲醛浓度0.06mg/m3-0.07mg/m3时,儿童会出现气促的现象; 甲醛浓度0.1mg/m时,会有咽部不适的感觉; ·甲醛浓度0.5mg/m时,就会刺激眼睛,引起流泪; ·甲醛浓度0.6mg/m时,会引起嗓子疼痛、恶心、呕吐、肺水肿等严重的情况; ·甲醛浓度30mg/m时,可能导致人的死亡。 1000ug/m3=1mg/m3 ·|类建筑≤0.08mg/m3,类建筑s0.12mg/m3 TVOC数据参考标准 ·TVOC浓度为0.6mg/m时是人居环境健康的最低标准·TVOC浓度为3.0-25mg/m时会产生刺激和不适TVOC浓度为3.0-25mg/m时,可能出现头痛症状 ·TVOC浓度为大于25mg/m时,可能出现其他的神经毒性作用 ·I类建筑s0.5mg/m3,ll 类建筑<0.6mg/m3 CO2数据参考标准 ·CO2浓度为350~450ppm时:同一般室外环境 ·CO2浓度为350~1000ppm时: 空气清新,呼吸顺畅。 ·CO2浓度为1000~200ppm时: 感觉空气浑浊,并开始觉得昏昏欲睡。 ·CO2浓度为2000~5000ppm时:感觉头痛、嗜睡、呆滞、注意力无法集中、心跳加速、轻度恶心。 ·CO2浓度大于5000ppm:可能导致严重缺氧,造成永久性脑损伤、昏迷、甚至死亡 1、概述 通信协议详细地描述了AIR7S输入和输出命令、信息和数据,以便第三方使用和开发物理接口:连接上位机的主通信口,采用标准串行RS-485通讯口信息传输方式为异步方式,起始位1位,数据位8位,停止位1位,无校验数据传输缺省速率为9600b/s 2、AIR7S通信协议 所有回路通信应遵照主/从方式。在这种方式下,信息和数据在单个主站和从站(监控设备)之间传递。 1)不支持广播模式。 2)无论如何都不能从一个从站开始通信 3)若主站或任何从站接收到含有未知命令的包裹,则该包裹将被忽略,且接收站不予响应 返回数据帧结构描述 每个数据帧组成如下: (RTU模式) 地址 功能代码 数据数量 数据1 数据n CRC16位校验   --- ### 688. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品介绍: 本产品为工业温湿度显示屏,壁挂安装,可以选择一体式或分体式探头,实时釆集显示环境温度和湿度参数,外留 RS485 通讯和继电器触点接口,可搭配报警器/继电器使用。 适用场所:实验室、仓库、车间、机房、工厂。 规格参数: 产品尺寸 接口说明 大屏按键说明 485 通信协议与数据格式 寄存器地址 参数读取 例:读取设备地址为 01 的传感器温湿度 注释:将返回的十六进制数据转换成十进制除以 10,即可得到相应的温湿度值。温度 :0x00FA (HEX)= 250(DEX),除以 10 即 25.0℃;湿度 :0x0190(HEX)= 400(DEX),除以 10 即 40.0%RH。注:当温度低于 0℃时以补码形式上传,假如读取到的温度是FF9B。H(十六进制)= 1111 1111 1001 1011(二进制),则实际温度值为 1000 0000 0110 0101(二进制)=0065(十六进制)= -101(十进制) => 温度=-10.1℃。   --- ### 689. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 中央空调网关可应用于多个场所:智能家居,智能办公楼宇、大型商场、宾馆、医院、学校等。提供协议,多种端口对接。 1、网关品牌: 2、适用中央空调品牌:大金、东芝、日立、三菱重工、三菱电机、美的、格力、三菱重工海尔、海信、博世、海尔、约克,其它品牌正在研发,详情请咨询厂家相关人员。 3、网关尺寸:(单位 mm)长*宽*高 105*92*55 4、外部接口:RS485、rs232、网关、WIFI、KNX 总线(特殊要求与厂家联系)。 5、可对接中央空调室内外机: 其它品牌信号线代码示意请咨询我们或者空调相对应厂家。 功能: ◆ 通讯协议转换 ◆ 另有设备可实现大金空调远程控制及计费系统(设备详情请咨询厂家) ◆ 每台网关最多可控制 64 台内机,多台外机 ◆ 网关与空调对接信号线采用 2 芯屏蔽信号线 2*1.0 或者 2*1.5 ◆ 网关通过 RS485 或者 RS232 等实现上层数据传输;可实现手机或平板电脑APP 远程遥控等。   额定电压及频率 ◆ 输入:DC12-30V 1A ◆ 功耗:40mV—300mV,2/3W ◆ 电源:直流 12V/24V 电源供电 通信: ◆ 缺省值:9600,8,N,1 ◆ 波特率:9600bps 产品功能: 1.监控 运转/停止 室内机的运转/停止状态 运转模式 制冷,制热,送风,除湿(取决于室内机的性能) 设定温度 室内机的设定温度 室内温度 室内机的吸气温度 风量 LL,·L,·M,·H,·HH·(取决于室内机的性能) 强制停止状态 强制停止室内机的状态 异常 故障、警告的异常代码 2.控制 运转/停止 控制室内机的运转/停止 运转模式 制冷,制热,送风,除湿 (取决于室内机的性能) 设定温度 制冷/制热的 设定温度 风量 LL,·L,·M,·H,·HH·(取决于室内机的性能) 3.检索 系统信息通讯状态 室内机连接 多少台室内机已连接,并且每台室内机的网络地址 网关的 Modbus 通信参数: 2.1 485 通信参数 波特率 9600bps 数据位 8 停止位 1 奇偶校验位 NONE 2.2 功能代码: 本网关支持以下功能代码。如果本网关接收到此表中以外的功能代码,则此功能 代码 将会被视为非法的功能代码,并且本网关会反馈异常响应。功能代码 信息 广播 0x04(04) 读 输 入 寄 存 器 (Read·Input·Register) 0x06(06) 预 置 单 个 寄 存 器 (Preset·Single·Register) 0x10(16) 预置多个寄存器 (Preset·Multiple·Registers) 2.2.1 功能格式: 读输入寄存器(Read Input Register)(0x04) ◆ [功能] 读取输入寄存器中的值。 其地址和输入寄存器的内容请参照“3.Modbus 寄存器”。 ◆ [查询] 查询信息列举了寄存器的起始地址及寄存器的数量。 寄存器寻址起始地址为 0: 寄存器 30001 的地址是 0x0000。 此功能在一次查询中最多可读取 4 台 VRV 室内 机信息。 预置单个保持寄存器(Preset single register)(0x06) ◆ [功能] 写入一个值到保持寄存器中。在广播的情况下,此值被写入到所的保持寄存器中。其地址 和保持寄存器的内容请参照“3.Modbus 寄存器”。 ◆ [查询] 查询信息列举了寄存器的起始地址和一个值。 寄存器寻址起始地 40001 的地址是 0x0000。 预置多个保持寄存器(Preset multiple register)(0x10) ◆ [功能] 写入多个值到保持寄存器中。在广播的情况下,此值被写入到所有从机的相同 类型的保持寄存器中。其地址和保持寄存器的内容请参照“3.Modbus 寄存器”。 ◆ [查询] 查询信息列举了寄存器的起始地址、数据大小和多个值。寄存器寻址起始地址为 0: 寄存器 40001 的地址是 0x0000。此功能在一次查询中最多可写入 1 台 VRV 室 内 机信息。 产品购买:https://item.taobao.com/item.htm?ft=t&id=571960293574 --- ### 690. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简介: 检测温度、湿度、二氧化碳、甲醛、TVOC、PM2.5、PM10,检测数据通过总线协议输出中控设备控制使用或用于APP展示。 使用场合: 广泛适用于家庭,厨卫,办公楼,酒店,医院,学校,车站,博物馆,会展中心工厂,农业等有空气检测需求的用户,也适用于室内空气检测机构,空气净化器和新风系统从业者,Geek,环保玩家,环境检测等专业人士使用。 产品参数: 产品功能: 连接APP查看数据简单方便。搭配拓展模块可以在不同空气状态下发送自定义总线数据搭配多款智能配件,实现场景个性化联动控制。远程控制,随时开关(需搭配智能控制系统使用)支持定时开关机(需搭配智能控制系统使用)支持语音声控开关(需搭配智能控制系统,或者离线语音控制模块使用)断网不影响总线范围内的控制及展示。·同时输出温度、湿度、C02、甲醛、TVOC、PM2.5、PM10共七组数据·PM2.5传感器采用激光散射原理。空气通过测量腔体时空气中的悬浮颗粒物使激光产生散射,在特定角度收集激光散射光,得到散射光强随时间变化的曲线,微处理器根据米氏(MIE)理论,计算出颗粒物的等效粒径及单位体积内不同粒径的颗粒物数量,实现精准测量。独有激光自校准技术,保证精准度。采用双频数据采集技术,可实时检测当前颗粒物浓度检测颗粒物直径的范围从0.3um至10pm。·PM2.5以TS18530为标准,与大多数计量局的测试设备一致CO2采用红外非分光原理,单通NDIR方式,具有24小时自校准功能甲醛TVOC均采用电化学原理,灵敏度高,低浓度也能识别。温度采用NTC原理,湿度采用HIH原理,测量范围广,精确度高立体风道设计,提高风量穿过率,准确识别颗粒物含量。传感器采用金属屏蔽外壳,抗干扰性能好。 私有控制协议: Modbus协议使用方法: 产品购买:https://item.taobao.com/item.htm?ft=t&id=552830224165 --- ### 691. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简述: 一款高灵敏度的24GHz人体存在状态传感器。其工作原理是利用FMCW调频连续波,对设定空间内的人体目标进行探测,结合雷达信号处理、精确人体感应算法,实现高灵敏度的人体存在状态感应,可识别运动和静止状态下的人体检测结果数据通过干接点或总线自定义协议、WIFI自定义协议、总线Modbus.WIFI Modbus协议、苹果Homekit输出。 应用场景: 广泛适用于家庭、办公楼、酒店、银行、医院、学校、机场、博物馆、实验室工厂以及农业等有人体存在探测需求的用户,也适用于设备制造、机器人制造安防制造等专业人士使用。 产品特点: 1、支持自定义总线协议配置2、24GHz毫米波雷,超宽谱雷达技术、生物医学工程于一体的传感器,精准探测区域内静态人体的状态。3、以脉冲形式微波束照射人体检测人体生命参数,由于人体生命活动肢体运动呼吸、心跳等的存在,使得被人体反射后的回拨脉冲序列的重复周期发生变化。经对人体反射后的回波脉冲序列进行解调、积分、放大、滤波等处理并输入微电脑系统进行数据处理分析,得到被测人体存在的数据参数。 4、当人体完全静止呼吸的时候,人体腹部表面会跟随呼吸的动作起伏变化,微波传感器可捕捉到人体胸部及腹部的位置呼吸的动作,精确识别出该微小动作 5、人体完全静止时微波探测最灵敏的位置为胸腹部。对静止的人体进行微小动作探测时若未对准胸腹部位置会降低探测距离。6、微波传感器对准人体胸部位置可探测2米内静止人体呼吸的微小动作,5米内人体肢体运动的动作7、不受温度、湿度、灰尘、气流、噪声、光线等影响,抗干扰性强。8、可穿透玻璃、塑料、亚克力、薄木板等材料,不可穿透金属、水泥实体墙。 9、兼容支持Modbus协议,同时可以接入苹果智能家居系统,作存在传感器使用。 探测方式对比: 感应范围: Modbus总线控制协议: 私有协议: 苹果Homekit接入方法: 1、手机连入局域网WIFl,同时通过485串口助手,选择ASC编码发送指令”HKTREST:12、搜索关注公众号安信可,点击HKT配网。3、输入当前WiFi的密码,提示配网成功注: 苹果手机可能会出现微信配网提示失败的情况,请使用安卓手机进行配网 添加模块到家庭 1、打开家庭点击添加配件2、点击更多选项。3、一般情况下就会出现配件。如果没有则点击“我的配件未在此处显示'4、输入代码(代码已经粘贴到模块外壳)接下来你就可以用苹果家庭查看传感器的状态,并在传感器触发的时候收到通知 WIFI联网控制使用方法: 需要此产品请联系我们!!! --- ### 692. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 功能简述: 通过总线控制模块学习红外信号和发送红外信号,实现智能控制系统对红外设备的控制。 产品图片: 选型建议: 广泛适用于家庭,办公楼,酒店,银行,医院,学校,机场,博物馆,实验室工厂,等有红外控制需求的用户,也适用于智能影院,听吧等专业用户的集控应用。 产品特点: 1、支持95%以上红外家电的信号学习并控制。 2、支持配置批量导入导出,快速批量项目复制 3、支持通电发送8个设定的红外信号,并且延时可调。 4、支持简单控制和工业控制两套协议5、提供上位机操作软件,方便配置 6、支持5组场景指令,方便影音室操作 7、默认9600波特率,支持5种波特率修改。 8、选用最新磨砂亚克力红外透光外壳小巧精致 9、TYPEC接口,引出4芯控制线VGAB。 10、支持12-24V宽电压供电 11、直接通过上位机获取协议,复制粘贴即可12、4个红外发射头独立驱动,大功率距离远 使用方法: 1、USB转485连接模块,模块通电2、打开上位机,连接设备,模块初始波特率9600,地址1 连接设备一一点击“刷新”选择串口一选择波特率一打开串口,然后选择对应协议(默认modbus协议)读取信息,与模块连接成功后会显示提示信息。 3.红外学习选择对应按键点击“学习”-根据右上角的提示在20秒内将遥控器对准设备进行学习一一点击右下角的“读取学习状态”,查看学习状态红外键值学习成功之后不会主动上报是否学习成功,需要点击读取学习状态按钮刷新学习状态 若学习成功,点击“读取学习状态”后,按键状态会变成”已学“,此时可点击“测试”按钮,进行红外信号发送测试。 3.按键名修改“键值n“可以修改并保存名称,根据自己的需要,可以修改名称方便阅读选择对应按键名字进行修改,修改完成后点击左下角“保存键值名称”即可 4.总线协议获取点击测试,右上角信息提示框里会提示进行了什么操作,左下角“TX”栏里会生成对应协议。 5.直接串口使用协议对红外模块进行控制把第四步里获取到的协议,通过串口助手发送,就可以通过串口助手发送协议控制模块了。注意串口设置是否与上位机一致 需要此产品请联系我们!!! --- ### 693. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 温湿度传感器是众多传感器之中的一种。通过某种检测装置测量空气之中的温度和湿度之后,根据一定的规律将其转化为电信号或其他所需形式的信息输出,以满足用户的需求 由于温度和湿度与物理量本身以及现实生活之中的温度和湿度紧密有关,因此将温度和湿度结合在一起的传感器也就有很多种。温湿度传感器是指能将温度和湿度转化为电信号,并容易检测和处置的设备或装置。 频率响应特性 温湿度传感器的频率响应特性决定了测量的频率范围,必须在允许频率范围内保持不失真的测量条件。事实上,传感器的响应总是有一定的延迟,延迟时间越长越不好。传感器的频率响应高,可测量信号的频率范围就宽。由于受结构特性的影响,机械系统惯性大,低频传感器的可测信号频率低。在动态测量之中,根据信号特点(稳态、瞬态、随机等)响应特性,以免产生误差。 线性范围 温湿度传感器的线性范围指输入与输出成正比例的范围。理论上,在此范围之内,灵敏度维持不变。传感器的线性范围越宽,其量程范围越大,并确保一定的测量精度。在选取传感器时,首先要看它的范围与否满足要求。 根据测量对象与测量环境确定传感器的类型 要进行—个具体的测量工作,首先要考虑采用何种原理的温湿度传感器,这需要分析多方面的因素之后才能确定。因为,即使是测量同一物理量,也有多种原理的传感器可供选用,哪一种原理的传感器更为合适,则需要根据被测量的特点和传感器的使用条件考虑以下一些具体问题:量程的大小;被测位置对传感器体积的要求;测量方式为接触式还是非接触式;信号的引出方法,有线或是非接触测量;传感器的来源,国产还是进口,价格能否承受,还是自行研制。 灵敏度的选择 通常而言,在温湿度传感器的线性范围之内,传感器的灵敏度越高越好。因为只有当灵敏度较高时,与测量变化相匹配的输出信号值才比较大,这有助于信号处理。但需留意的是,传感器灵敏度高,与测量无关的外界噪声也容易混入,也会被放大系统放大,影响测量精度。因此,建议传感器本身具备有较高信噪比,并尽可能减少从外界引入的干扰信号。 稳定性 温湿度传感器在使用一段时间之后,其性能不变的能力称作稳定性。除了传感器本身的结构之外,影响传感器长期稳定性的主要因素是传感器的使用环境。选择传感器前,应对使用环境进行调查,根据具体使用环境选取适合的传感器,或采取合适措施减少环境影响。传感器的稳定性具备定量指标。超过使用寿命之后,应该要在使用前应该要重新进行标定,以确定传感器的性能与否发生变化。 温湿度传感器选型建议 1、性价比。在选择温湿度传送器应该选择性价比的产品,而不是选择价格低的产品。如果只关注价格,那么在使用时就会遇到寿命、维护、检验的问题,这样也会大大增加成本。 2、质量可靠性。同时也要通过考察生产厂家的出场标准和质量鉴定书来判断产品的好坏;也可以通过温湿度传感器厂家知名度、品牌、信誉等综合因素来确定产品的可靠性。 3、适应性。选择传送器时应该结合自己的实际情况、使用环境场合来确定到底选择哪款产品。需要充分考虑适应性因素。 4、维护性。温湿度传感器需要进行定期的检查、更新、替换以及修理。 哪些行业对温湿度传感器有需求? 食品行业:温湿度对于食品储存来说至关重要,温湿度的变化会带来食物变质,引发食品安全问题温湿度的监控有利于相关人员进行及时的控制。   档案管理:纸制品对于温湿度极为敏感,不当的保存会严重降低档案保存年限,有了温湿度变送器配上排风机,除湿器,加热器,即可保持稳定的温度,避免虫害,潮湿等问题。   温室大棚:植物的生长对于温湿度要求极为严格,不当的温湿度下,植物会停止生长、甚至死亡利用温湿度传感器,配合气体传感器,光照传感器等可组成一个数字化大棚温湿度监控系统,控制农业大棚内的相关参数,从而使大棚的效率达到极致。 动物养殖:各种动物在不同的温度下会表现出不同的生长状态,高质高产的目标要依靠适宜的环境来保障。 药品储存:根据国家相关要求,药品保存必须按照相应的温湿度进行控制。根据最新的GMP认证,对于一般的药品的温度存储范围为0-30℃。   烟草行业:烟草原料在发酵过程中需要控制好温湿度,在现场环境方便的情况下可利用无线温湿度传感器监控温湿度,在环境复杂的现场内,可利用RS-485等数字量传输的温湿度传感器进行检测控制烟包的温湿度,避免发生虫害,如果操作不当,则会造成原料的大量损失。 工控行业:主要用于暖通空调、机房监控等。楼宇中的环境控制通常是温度控制,对于用控制湿度达到最佳舒适环境的关注日益增多。 --- ### 694. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 物联网(IoT)是过去几年中最热门的技术流行语,它全都涉及收集,共享和分析数据并从中创造价值。但是,如果没有准确的数据,物联网将成为无用的技术堆。因此,物联网设备管理以及物联网传感器和执行器的重要性使其能够感知世界并采取行动。 物联网由若干技术层(物联网背后的技术)组成,这些层使普通物能够共享它们在Internet上收集的数据,从而最终提供很大程度上取决于数据本身质量的情报,自主行动和价值。因此,传感器和执行器是物联网技术堆栈中不可或缺的一部分,并且是每个物联网系统开发中的成败因素。 显然,传感器和执行器对物联网很重要,但是它们到底是什么?传感器,也称为换能器,是一种设备,其任务是检测事件或周围环境的变化,并将这些物理现象(例如温度,光,空气湿度,运动,化学物质的存在等)转换为电脉冲。然后可以对其进行有意义的解释。另一方面,执行器可以看作是与传感器相反作用的工具。通过解释从控制系统发出的电脉冲并将其转换为机械运动,它实际上通过各种简单的动作(包括但不限于打开和关闭阀门,更改其他设备的位置或角度,激活它们或发出声音或光。简单来说,执行器称为“移动器”。 普通的电气传感器和执行器已经存在了数十年,并且在现代工业应用中无处不在,但物联网的出现为物联网传感器和执行器的应用开辟了全新的可能性,不仅在工业领域,而且在工业领域也是如此。商业和家庭使用领域。作为物联网必不可少的促成因素,传感器和执行器可帮助监控,控制和简化几乎所有领域的操作,从智能汽车到雨林保护。物联网彻底改变了它们的应用方式并扩大了其使用范围,它使传感器可以用于功能强大的基于云的分析软件,从而为机器,人员和环境开发智能解决方案。 考虑到以上所有因素,毫无疑问,为了保持它正在经历的快速发展,物联网需要越来越高效(最好是低成本)的传感器解决方案。可靠的传感器和执行器系统是构建每个成功的智能部署的基础,因此,必须了解其中存在的IoT传感器解决方案和选项的种类。让我们探索物联网中最常用的传感器类型。 物联网传感器类型 传感器可以是独立的设备,也可以是嵌入普通对象或机器中以使其变得智能的设备,并且可以根据要测量的物理现象将其分为几类。以下列表概述了物联网中应用最广泛的一些传感器类型。 温度传感器 这种最基本的传感器可在每种物联网用例中找到其应用,在这种情况下,跟踪空气,工作环境,机器或其他物体的热状况至关重要。温度传感器在制造工厂,仓库,天气报告系统和农业中特别有用,在这些工厂中,对土壤温度进行监控以提供平衡且最大化的生长。 热敏电阻:一种电阻,其电阻(电阻)在很大程度上取决于温度。热敏电阻广泛用作电子设备中的传感器,例如用作电子温度计中的温度传感器或用于防止电流过大的系统中的温度传感器。电阻温度检测器:用于根据与温度变化相关的电阻变化来测量温度的仪器。热电偶:由两个不同导体组成的电路元件。通过利用在热电偶的连接器之间产生的电动势与温度差成正比这一事实,热电偶可以用作温度传感器,有时甚至可以用作具有非常低的电压和相对较高的电流的电源。 湿度传感器 尽管它们在气象站中最明显,最广泛的用途是报告和预报天气,但令人惊讶的是,湿度和湿度传感器也广泛用于农业,环境监测,食品供应链,HVAC和健康监测。 头发张力湿度传感器:传统和最古老的湿度传感器类型。该设备的设计基于人或马毛的特定属性,尽管目前也使用合成纤维或棉纤维。这些纤维与湿气接触后会改变其长度。显示刻度尺读数的指针连接到头发(或纤维)上,并对长度的变化做出反应。这种类型的湿度传感器的优点无疑是结构简单,价格便宜,而且还耐损坏。干湿计:此类设备的构造基于两个干湿计(所谓的“干湿”和“湿湿”)。湿温度计的水银容器内衬吸湿材料。它利用了潮湿空气抑制蒸发而干燥空气加速蒸发的现象。湿度越高,湿温度计的温度越低。干温度计显示环境温度,湿度可以根据温度差计算得出。 光照强度传感器 依靠环境光强度,智能电视,移动电话或计算机屏幕可以借助光传感器来调节其亮度,但是用于检测环境光的传感器不仅在消费电子产品中很常见,而且在智慧城市应用中也很普遍。它们越来越多地用于调整路灯或城市照明水平,以提高经济性。 光电电阻器:它是一种光敏元件,其电阻会通过辐射而变化。它可以很容易地连接到例如Arduino作为模拟光传感器。因此,可以构建例如在天黑后自动点亮的灯。光敏电阻也可以用作非常简单的接近传感器甚至温度传感器。光电二极管:基于光电效应工作的二极管。当光子到达光电二极管的结时,它们被吸收,这导致电子转移到导电带上,形成一个电子-空穴对。光电二极管广泛用于工业自动化(信号和控制系统),电信(光耦合器,光电链路)和许多其他行业。 声学传感器 智能声学传感器使我们能够监控给定环境中的噪声水平。能够测量和提供数据以帮助防止噪声污染的方法,声学IoT传感器系统在智慧城市解决方案中逐渐普及。 水听器:用于拾取在水或其他液体中传播的声音的麦克风。水听器是无源声纳的基本结构元素,例如用于在各种水生环境中探测鱼类。地震检波器:这是一种将地面振动(频率和振幅)转换成电压的传感器。您可以说这是地震仪的一种,在阿波罗16号(Apollo 16)的“主动地震实验”中已在月球上使用过。 水位传感器 为了防止自然灾害,可以将水位监控传感器收集的数据用于洪水预警系统中进行分析和预测。除了环境保护外,该传感器还可以用于各种工业应用中,以控制和优化制造过程。 静水压力传感器:用于测量液体填充水平。这些传感器基于使用所谓的静水悖论进行的液位测量进行操作–在储罐测量点测得的静水压力仅与液体填充的高度成比例,而与储罐的形状和体积无关。光学传感器:一种传感器,用于检测与液体接触后棱镜中的光折射所隐含的水位。光学传感器比典型的水位传感器具有一定优势,这是因为光学传感器受到可能破裂或简单磨损的机械和运动部件的限制。 位移传感器 通过发射电磁辐射束,这种类型的传感器能​​够感应其目标物体的存在并确定将两者分开的距离。凭借其高可靠性和长寿命,难怪他们很快将其纳入了许多IoT领域,例如智能汽车,机器人技术,制造,机器,航空甚至智能停车解决方案。 多普勒雷达:使用多普勒效应的雷达,即其源发出的波的频率与相对于该源移动的观察者记录的波的频率之差。雷达不仅用于检测物体并确定其位置,还用于了解其方向和速度。占用传感器:一种存在传感器,使用红外光或高频信号来检测办公室和卫生设施,走廊,通道,仓库等中的移动。 运动传感器 智能建筑系统可能是运动传感器可以想象到的最廉价的物联网应用。尽管这一明显的事实大体上是正确的,但除了有助于监视侵入或盗窃的私人或公共场所外,运动传感器的使用还扩展到了能源管理解决方案,智能相机,自动化设备等许多其他领域。 有源超声波运动传感器:发送和接收超声波无源波被动式红外运动传感器:检测红外辐射的变化有源雷达传感器:发射和接收电磁波还有一些传感器版本结合了上述所有与运动有关的原理。**被动红外传感器(PIR)**是一种这样的示例,它是用于运动检测的电子传感器,通常在警报系统,自动照明和通风系统等中使用。 姿态传感器 这种传感器的任务是检测旋转并测量角速度,这使其非常适用于导航系统,机器人技术,消费类电子产品以及涉及旋转的制造过程。对于更日常的物联网应用,陀螺仪传感器越来越多地安装在运动员使用的物联网设备中,以精确测量身体运动,以分析和改善他们的运动表现。 加速度计:该传感器不会保持恒定的方向,但会指示其所位于的对象的角速度。该组包括旋转自由度有限的机械陀螺仪(通常在笛卡尔坐标系的一个轴上),光学陀螺仪(激光和光纤),最后是使用科里奥利效应影响陀螺仪的陀螺仪。航向指示器:方向陀螺仪或航向指示器可让您观察其所附着的身体的旋转情况。陀螺仪通常被制成悬挂在合适结构中的快速旋转的刚性物体(通常是磁盘),使其能够相对于参考系统(例如其所附着的物体)自由旋转。 化学传感器 能够检测化合物(固体,液体和气体)的传感器是工业安全系统,环境保护解决方案以及科学研究中必不可少的元素。此外,他们已经在物联网支持的空气质量监测中立足,可以帮助城市和州抵抗空气和水污染的有害影响。 电化学呼吸分析仪:一种简单的传感器,用于确定血液中的酒精含量。电化学传感器具有抵抗薄荷醇,香烟烟雾或柠檬酸等副作用的能力,并且可以指示呼出空气中的酒精浓度,准确度为0.000‰。电子鼻:化学检测器或一组检测器,对环境中包含的不同类型的颗粒或它们的不同特征(例如存在特定的化学键,酸度,碱度,稳定相邻偶极子的能力,等等。)。通过使用此类检测器获得的信息可以了解环境的化学成分。 视觉传感器 通过将光学数据转换为电脉冲,图像传感器使连接的对象能够查看周围的环境,并使用从提供的数据分析中获得的情报对周围的环境进行操作。每当需要智能设备“看到”其周围环境时,就会使用图像传感器,其中包括智能车辆,安全系统,雷达和声纳之类的军事装备,医学成像设备,当然还有数码相机。 有源像素传感器:许多采用CMOS技术制成的光敏元件的排列。CMOS传感器可用于许多设备,例如网络摄像头,紧凑型数码相机,DSLR(数码单镜反光)相机,生产自动化中的控制元件,数字X射线相机等。电荷耦合设备:由许多光敏元件组成的系统,该系统进行配准,然后读取与落在其上的光量成比例的电信号。CCD传感器中使用的滤色镜经常出现在数码相机中,从而使它们能够记录矩阵给定点处特定光谱宽度的强度。 物联网执行器类型 顾名思义,执行器可以在其直接环境中起作用,以实现对其所嵌入的机器或设备的正确操作。它们虽然很小,但在操作过程中很少见到,但是它们的工作效果可以在车辆,工业机器或任何其他涉及自动化技术的电子设备中感受到。根据其构造模式和它们在特定物联网环境中的作用,它们可以分为四个主要类别: 线性致动器–用于使物体或元件沿直线运动。马达–它们使设备组件或整个物体进行精确的旋转运动。继电器–此类别包括基于电磁的执行器,用于操作灯,加热器甚至智能汽车中的电源开关。电磁阀–作为锁定或触发机制的一部分,在家用电器中使用最广泛,它们还充当基于IoT的煤气和水泄漏监测系统的控制器。 物联网传感器是一种看似微不足道的小型设备,可将数据馈送至物联网系统,而物联网系统是构建机器智能的真正基础。另一方面,执行器代表了每个智能企业背后的驱动力(从字面上看!)。在这两种情况下,物联网不仅对它们的感觉和操作方式感兴趣,而且还对使我们能够更快更好地做事的事物感兴趣。 --- ### 695. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1. 产品介绍 1.1. 产品简介 MODBUS-0404 系列产品是采用标准 Modbus- RTU 协议的继电器设备,支持 RS485/232 或 网络通信。支持宽电压供电,多路输入输出控制,可广泛应用于工业生产、农业、智慧城 市、写字楼等各类应用场景。 1.2. 工作模式说明 用户可在上位机软件修改配置模块的工作模式,注意各型号设备支持的工作模式有 所不同。 1.2.1. 正常模式 对继电器给出断开或闭合指令后,继电器作出相应动作,依照指令完成断开或闭合。 1.2.2. 闪开闪闭功能 闪闭:继电器处于闭合状态时,操作继电器断开一段时间(设置参数*0.1s)   后   自 动闭合; 闪开:继电器处于断开状态时,操作继电器闭合一段时间(设置参数*0.1s)   后   自 动断开; 注意:闪开闪闭功能通过发送指令实现,不能使用上位机软件进行模式设置。支持单 独控制一个通道的延时动作。 1.2.5. 本机互锁模式 模块本身带有光耦输入和继电器输出的板卡模块,在该模式下,光耦每输入一次信 号,对应的继电器会吸合,其他未输入信号光耦对应继电器会断开。即: 光耦输入信号生效➞对应继电器吸合其它继电器断开; 光耦输入信号取消➞继电器不动作。 该模式同样存在非锁模式的延迟问题,但是延迟时间同样不会大于 0.05 秒。 该模式主要可以用于外部信号触发来控制不同设备启停的场合,例如多路光耦没路 外接一个按钮,对应的继电器外接用电设备,则按一路按钮,对应设备就会切换到启动状 态,其它设备就会停止运行。 1.2.6. 双机非锁联动模式 该模式需要两个地址相同、模式相同的设备完成,两个设备通过直连 485 或者交叉 232 连接起来之后,模块 1 的光耦状态会直接控制模块 2 的对应继电器的状态 。即: 模块 1 的 1 号光耦输入信号生效➞模块 2 的 1 号继电器吸合; 模块 1 的 1 号光耦输入信号消失➞模块 2 的 1 号继电器断开 该模式下的继电器相应延迟时间较前几种的模式要长,但不会大于 0.1 秒 (9600 波 特率) 该模式下如果使用 485 总线的话可以并联多个设备,其中设备两两地址匹配,这样 可以做到远程的开关量传输。例如:现场有多个低速的开关量需要传输到 500 米外的控 制机房去控制告警灯或者电铃,则只需在厂房布置几个模块通过两根双绞屏蔽线连接到 机房的对应模块,就可以完成该任务。同理也可以把机房操作的按钮信号信号直接传送到 位于机房模块的继电器上。 1.2.7. 双机自锁联动模式 该模式需要两个地址相同、模式相同的设备完成,两个设备通过直连 485 或者交叉 232 连接起来之后,模块 1 的光耦状态生效会翻转控制模块 2 的对应继电器的状态,即: 模块 1 的 1 号光耦输入信号生效➞模块 2 的 1 号继电器翻转; 模块 1 的 1 号光耦输入信号消失➞模块 2 的 1 号继电器不动作 该模式的应用与“双机非锁联动”模式类似,但更适合于远程控制设备的启停,只需 在操作端安装一个按钮即可实现按一次启动按一次停止的动作。 产品工作模式图 2. 规格参数 产品规格参数 参数说明工作电压9-28V DC (支持防反接) 设备功耗(W)12V 供电:不开:<0.5;全开:<324V 供电:不开:<0.5;全开:<3电源指示具备 1 路红色 LED 指示灯通讯接口隔离 RS485 通信协议标准的 Modbus RTU 波特率1200 ,2400 ,4800 ,9600 (默认),  19200 ,38400可以通过软件修改默认通讯格式9600 ,n ,8 ,1 设备地址0-255 ,5 位地址拨码开关可以设置 1-31 地址码,大于 31 的可以通过软件设置;IO 接口4 路 DI (光耦隔离);  4 路 DO (常开常闭,输出端触点隔离)输出触点容量10A/30VDC 或 10A/250VAC耐久性10 万次输出指示具备 4 路红色 LED 指示灯设备尺寸115*90*40mm重量约 330g工作温度工业级,-40°C~70°C工作湿度5~85% RH 产品功能闪开闪闭、电脑上位机控制、本机非锁联动、本机自锁联动、双机非锁联动 、双机自锁联动、本机互锁模式  软件支持工作模式更改;继电器独立控制;开关量状态查询;继电器整体控制;调试信息查询;控制软件;支持各家组态软件;支持  Labview 等卡轨安装标准 DIN35mm 导轨安装 3. 产品尺寸 产品尺寸图 4. 通信协议与数据格式 4.1. 上位机软件下载 《郎汉德 IO 控制器配置工具》 软件截图 4.2. 设备通信配置 4.2.1. 拨码开关功能介绍 设备地址  (从机地址)  =拨码地址+软件地址 例如:若拨码地址设置为 11,软件地址设置为 110,则设备地址为 121。更改地址 后需断电重启方可生效。 5 位拨码开关 设备具备拨码开关方便用户快速修改设备地址。 ( 1 )   五个拨码全都拨到上面时,为地址“31”; (2)   五个拨码全都拨到下面时,为地址“0”; (3)   最左边 1 为二进制最低位; (4)   拨码地址表: 拨码开关地址 4.2.2. 软件地址的设定与读取 点击上位机软件下方软件地址后边的“读取”或“设置”来对设备的软件地址进行 读取或设置。 软件地址设置 设备地址 4.2.3. 波特率的设定与读取 点击上位机软件波特率设置栏的“读取”和“设置”就可以分别读取和设置波特率 和地址,操作后需要重启设备和修改电脑串口设置。 波特率设置 4.3. 通信协议说明 本产品支持标准 Modbus 指令,有关详细的指令生成与解析方式,可根据本文中的 寄存器表结合参考《Modbus 协议中文版》即可。本产品支持 Modbus-RTU 格式。 4.3.1. Modbus 寄存器说明 线圈寄存器地址表: 寄存器名称 PLC 寄存器地址说明线圈控制线圈 1   写线圈   1 号指令码00001第 1 路继电器输出线圈 200002第 2 路继电器输出线圈 300003第 3 路继电器输出线圈 400004第 4 路继电器输出离散量输入输入 1   开关量 2 号指令10001第 1 路输入输入 210002第 2 路输入输入 310003第 3 路输入输入 410004第 4 路输入 配置参数  寄存器名称Modbus寄存器地址PLC 寄存器地址 说明 通信波特率     保持寄 存器 03E8H 41001见下表波特率数值对应表,默认为 0,支持 0-5,该寄存器同时决定 RS232 和 RS485 的通信波特率备用03E9H41002备用,用户不可写任何值 偏移地址 03EAH 41003设备地址=偏移地址+拨码开关地址工作模式03EBH41004用户可以使用,存储用户数据 备注: ( 1 )   Modbus 设备指令支持下列 Modbus 地址: 00001 至 09999 是离散输出(线圈) 10001 至 19999 是离散输入(触点) 30001 至 39999 是输入寄存器(通常是模拟量输入) 40001 至 49999 是保持寄存器(通常存储设备配置信息) 采用 5 位码格式,第一个字符决定寄存器类型,其余 4 个字符代表地址。地址 1 从 0 开始,如 00001 对应 0000。 (2)   波特率数值对应表 数值波特率09600124002480039600419200538400 (3)   继电器状态,通过 00001地址来查询继电器状态和控制; 开关量状态,通过 10002 地址来查询开关量状态。 寄存器地址按照 PLC 命名规则,真实地址为去掉最高位,然后减一。 4.3.2. 指令列表 指令名称RTU 格式(16 进制)查询四路状态FE 01 00 00 00 04 29 C6 查询指令返回信息FE 01 01 00 61 9C控制第 1 路开FE 05 00 00 FF 00 98 35控制返回信息FE 05 00 00 FF 00 98 35控制第 1 路关FE 05 00 00 00 00 D9 C5控制返回信息FE 05 00 00 00 00 D9 C5控制第 2 路开FE 05 00 01 FF 00 C9 F5控制第 2 路关FE 05 00 01 00 00 88 05控制第 3 路开FE 05 00 02 FF 00 39 F5控制第 3 路关FE 05 00 02 00 00 78 05控制第 4 路开FE 05 00 03 FF 00 68 35控制第 4 路关FE 05 00 03 00 00 29 C5读第 1 路光耦FE 02 00 00 00 01 AD C5返回信息FE 02 01 00 91 9C读第 2 路光耦FE 02 00 01 00 01 FC 05读第 3 路光耦FE 02 00 02 00 01 0C 05读第 4 路光耦FE 02 00 03 00 01 5D C5 4.3.3. 指令详解 4.3.3.1.继电器输出 控制 1 路继电器(以第 1 路闭合为例,其他通道参照本例) 发送码 :FE 05 00 00 FF 00 98 35 字段含义备注 FE设备地址这里为广播地址0505 指令单个控制指令00 00地址要控制继电器寄存器地址FF 00指令继电器闭合的动作98 35CRC 16前 6 字节数据的 CRC 16 校验和 继电器模块返回信息: 返回码 :FE 05 00 00 FF 00 98 35 字段含义备注FE设备地址这里为广播地址0505 指令单个控制指令00 00地址要控制继电器寄存器地址FF 00指令继电器闭合的动作98 35CRC 16前 6 字节数据的 CRC 16 校验和 4.3.3.2.继电器状态 继电器查询 发送指令码 :FE 01 00 00 00 04 29 C6 字段含义备注FE设备地址这里为广播地址0101 指令查询继电器状态指令00 00起始地址要查询的第一个继电器寄存器地址00 04查询数量要查询的继电器数量29 C6CRC 16前 6 字节数据的 CRC 16 校验和 继电器返回信息: 返回码 :FE 01 01 00 61 9C 字段含义备注FE设备地址 0101 指令返回指令。如果查询错误,返回 0x8101字节数返回状态信息的所有字节数。  1+(n-1)/8    00    查询的状态返回值为 16 进制,转换成 2 进制数据,0 表示关, 1 表示开。例:对 4 路继电器若返 回字段为 08,转换成 2 进制后位 1000,则第 1 、2 、3 路关,第 4 路开。61 9CCRC 16前 6 字节数据的 CRC 16 校验和 4.3.3.3.光耦输入 查询光耦 发送指令码 :FE 02 00 00 00 04 6D C6 字段含义备注FE设备地址 0202 指令查询离散量输入 (光耦输入)  状态指令00 00起始地址要查询的第一个光耦的寄存器地址00 04查询数量要查询的光耦状态数量6D C6CRC 16前 6 字节数据的 CRC 16 校验和 光耦返回信息: 返回码 :FE 02 01 00 91 9C 字段含义备注FE设备地址 0202 指令返回指令。如果查询错误,返回 0x8201字节数返回状态信息的所有字节数。     00     查询的状态返回的光耦状态。Bit0:第一个光耦状态Bit1:第二个光耦状态 ……Bit7:第八个光耦状态919CCRC 16前 6 字节数据的 CRC 16 校验和 4.3.3.4.闪开闪闭指令 闪闭发送码 :FE 10 00 03 00 02 04 00 04 00 0A 41 6B 闪开发送码 :FE 10 00 03 00 02 04 00 02 00 0A A1 6A 字段含义备注FE设备地址16 进制,代表 10 进制254 广播地址1010 指令写多个寄存器功能码 00 03 继电器地址3+5(n-1) ,n 代表控制第几个通道,10 进制需换算为 16 进制 00 02 控制指令数量2+5(n-1),n 代表控制的通道数量,仅支持单独控制一个通道的延时动作 04 控制内容字节长度4+10(n-1),n 代表控制的通道数量,仅支持单独控制一个通道的延时动作 00 04 或 00 02指令00 04 为闪闭指令 00 02 为闪开指令 00 0A 闪开时间00 0A 为十六进制换为十进制则为 10 间隔时间为(0.1 秒*10)41 6B 或 A1 6ACRC 16校验位 返回码:FE 10 00 03 00 02 A5 C7 字段含义备注FE设备地址 1010 指令返回指令。如果查询错误,返回 0x8200 03设备地址查询设备的地址00 02接受指令数设备接受的指令个数A5 C7CRC 16校验位 举例:  1s 时间闭/断 1 通道闪闭 FE 10 00 03 00 02 04 00 04 00 0A 41 6B 2 通道闪闭 FE 10 00 08 00 02 04 00 04 00 0A 00 D8 3 通道闪闭 FE 10 00 0D 00 02 04 00 04 00 0A C0 E7 4 通道闪闭 FE 10 00 12 00 02 04 00 04 00 0A 81 AB 1 通道闪开 FE 10 00 03 00 02 04 00 02 00 0A A1 6A 2 通道闪开 FE 10 00 08 00 02 04 00 02 00 0A E0 D9 3 通道闪开 FE 10 00 0D 00 02 04 00 02 00 0A 20 E6 4 通道闪开 FE 10 00 12 00 02 04 00 02 00 0A 61 AA 4.3.3.5.全开全关指令 全开发送码:FE 0F 00 00 00 04 01 FF 31 D2 全断发送码:FE 0F 00 00 00 04 01 00 71 92 字段含义备注FE设备地址 0F0F 指令返回指令。如果查询错误,返回 0x8200 00起始地址 00 04控制数量控制的继电器数量01字节数发送指令字节数FF (或 00)全开(全关)  指令FF 全开指令;  00 全关指令31 D2 (或 71 92)CRC 16校验位 全断全开返回码:FE 0F 00 00 00 04 40 07 字段含义备注FE设备地址 0F0F 指令返回指令。如果查询错误,返回 0x8200 00起始地址 00 04数量返回信息的继电器数量40 07CRC 16校验位 4.4. 主动上报协议 本功能为非标准 Modbus 协议,仅在双机模式下才可使用,适用于串口继电器主动 上报变化的开关量。 字段含义备注0x40 0x57包头 0x01设备地址 0x02IO 状态低八位 0x00IO 状态高八位  0x42+0x01+0x02+0x00 校验位0x42+设备地址+IO 状态低八位+IO 状态高八位 5.  电气接线 5.1. 产品使用拓扑图 5.2. 产品接线端子定义 产品接线端子定义 序号引脚说明1+电源正极2 -电源负极3A+RS485 A+4-RS485 B-5VIN无源输入时 VIN 和 COM+短接用,具体查看输入接线图6COM+无源输入时 VIN 和 COM+短接用,具体查看输入接线图7IN1第 1 路开关量输入8IN2第 2 路开关量输入9IN3第 3 路开关量输入10IN4第 4 路开关量输入11COM-无源输入时使用,具体查看输入接线图12常开第 4 路继电器输出常开端13公共端第 4 路继电器输出公共端14常闭第 4 路继电器输出常闭端15常开第 3 路继电器输出常开端16公共端第 3 路继电器输出公共端17常闭第 3 路继电器输出常闭端18常开第 2 路继电器输出常开端19公共端第 2 路继电器输出公共端 20常闭第 2 路继电器输出常闭端21常开第 1 路继电器输出常开端22公共端第 1 路继电器输出公共端23常闭第 1 路继电器输出常闭端 5.3. 产品输入接线图 5.4. 产品输出接线图 6. 产品维护保养 6.1. 设备使用环境  设备工作电压为 9~28V,输入电压过高或过低可能导致设备无法正常工作甚至 损坏。 2.  设备 DI 输入量端子采用光耦隔离保护,承载电压为 5 ~ 24V。 3.  设备 DO 输出端子严禁超负荷使用,请在允许的范围内正确接线(详情见接线图)。 4.  设备允许的空气湿度 5~85%RH,不具备防水能力。在凝露,或液体浸泡环境请 勿使用该产品。 5.  继电器是具有一定使用寿命的元器件,当达到理论使用寿命请及时更换以免发生 危险。 6.2. 常见问题与解决办法 ( 1 )   232 通讯,设备控制无响应,不动作 设备与上位机进行通信使用的是 232 直连线。即 RX 对 RX,TX 对 TX,GND 对GND。  (2)   继电器只能开不能关 读取地址是否读到的是实际设备地址,调试信息栏内是否有返回指令,返回指令是否 正确,如果读取地址失败,没有返回指令或返回指令异常,检查通讯线和通讯转换器。 (3)   继电器板卡供电后使用 485 接口无法建立通信,无法控制。 1.  485 线是否接反 、电压是否在规定范围内; 2.  软件上设备地址填写 254,测试不同波特率是否可以控制。 (4)   485 总线挂载多个设备,以广播地址 254 发送继电器闭合操作失败。 广播地址是用于测试总线上只有一个设备时使用,大于 1 个设备时请用拨码开关区 分地址来控制或通过软件设置地址(多个设备配置成不同地址),否则会导致所有设备同 时应答,无法正确执行。 (5)   PLC 与设备不能正常通讯。 1.  PLC 通讯参数是否与本继电器设备匹配; 2.  PLC 通讯协议是否为标准的 Modbus RTU; 3.  西门子 485 总线 AB 定义与本设备相反。 (6)   如何恢复出厂设置 对于带有拨码开关的型号,可以利用拨码开关恢复出厂设置,操作步骤:上电的情况 下,拨码全部拨到 ON 上,  bit5 来回波动 6 次(一来一回算一次),  然后拨码全部拨下, 即可用上位机软件 (波特率 9600  、地址 254)  通讯 7. 售后服务 7.1. 售后服务承诺 本公司提供自销售日起一年内的本机售后服务,但不包括不当使用所造成的损坏,若 需要维修或调整,请寄回,但运费需自负。寄回时需确定包装良好以避免运送途中损坏, 本公司将免费维修仪器的损坏。 7.2. 免责声明 本文档未授予任何知识产权的许可,并未以明示或暗示、或以禁止发言或其它方式授 予任何知识产权许可。除在其产品的销售条款和条件声明的责任之外,我公司概不承担任 何其它责任。并且我公司对本产品的销售和/或使用不作任何明示或暗示的担保,包括对 产品的特定用途适用性、适销性或对任何专利权、版权或其它知识产权的侵权责任等均不 作担保。本公司可能随时对产品规格及产品描述做出修改,恕不另行通知。 7.3. 联系方式 地址:  北京市大兴区天宫院街道黄徐路25号斯凯创意大厦218号 网址: www.modbus.cn 邮箱:  cloud@modbus.cn --- ═══════════════════════════════════════════ ## 其他技术资料 ═══════════════════════════════════════════ ### 696. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 记录类控件(数据记录/操作记录/告警)导出 CSV 时,精确指定时间范围 + 自定义文件名。HMI&M&DX + USB 接口 + 定制固件。 1. API 与寄存器 项目说明set_export_name(name)导出文件名,UTF-8 字符串,须手动加 .csv 扩展名0x0192导出开始时间戳(UINT32)0x0194导出结束时间戳(UINT32)时间段内无记录则不导出文件。 导出两个坑:①set_export_name 的文件名必须自己带 .csv,不然导出的文件打不开;②时间段内一条记录都没有,系统不会生成文件(不是空文件,是根本没有)。时间范围用 0x0192/0x0194 两个 UINT32 时间戳控制。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「自定义时间段与文件名导出」,版权归大彩科技所有。 --- ### 697. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 USB Host + 定制固件,直接接 HID 条码扫描枪,扫码内容经 on_key(key) 回调进 Lua。工业仓储、产线追溯用得着。HMI&M&DX 系列 + USB 接口 + 定制固件。 1. API:on_key(key) key 为 16 位无符号整数:低 8 位 = USB HID Usage ID(扫描码),高 8 位 = Shift 状态(非 0 表示 Shift 按下,区分大小写)。低 8 位 == 0x28(Enter)表示条码结束,此时提交字符串并清空缓冲。 2. Lua:HID 扫描码转 ASCII 用查表把 Usage ID 映射成字符(含 Shift 大写态),遇到 0x28 结束符写 LW2000:_barCode = "" usbScanGun = { [0x04] = {"a","A"}, [0x05] = {"b","B"}, ... [0x1D] = {"z","Z"}, [0x1E] = {"1","!"}, [0x1F] = {"2","@"}, ... [0x27] = {"0",")"}, [0x2C] = {" "," "}, [0x28] = {"n","n"} -- Enter } function on_key(key) local usage = key & 0xFF local shift = (key >> 8) & 0xFF if usage == 0x28 then -- 结束符 set_string(VT_LW, 0x2000, _barCode) _barCode = "" return end local ch = usbScanGun[usage] if ch then _barCode = _barCode .. (shift ~= 0 and ch[2] or ch[1]) end end 扫码枪本质是键盘模拟:HID 上报的是扫描码不是 ASCII,得自己查表转。Shift 状态在 key 高 8 位,大小写靠它区分。0x28 是回车结束符——收到就提交,别等超时。定制固件专属。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「USB HID扫码枪」,版权归大彩科技所有。 --- ### 698. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 运行期整体旋转 UI(0°/90°/180°/270°),手持器、竖装机柜都适用。一套 Lua 适配所有姿态,DX 系列专属。 1. Lua 控制旋转 set_lcd_rotate(angle) -- angle: 0~3 (0=0°,1=90°,2=180°,3=270°) function on_init() local angle = get_uint16(VT_RW, 0x0001) -- 从Flash读旋转方向 angle = (angle < 0 or angle > 3) and 0 or angle set_lcd_rotate(angle) set_uint16(VT_LW, 0x8888, angle) end function on_update(slave,vtype,addr) if vtype == VT_LW and addr == 0x8888 then local val = get_uint16(VT_LW, 0x8888) set_uint16(VT_RW, 0x0001, val) -- 存旋转方向 set_lcd_rotate(val) end end 2. 生成多方向文件 横屏工程(0°/180°)编译两次:0° 保留默认 image.bin/project.bin;180° 重命名为 image180.bin/project180.bin 放进 private。竖屏工程(90°/270°)同理生成 image90/image270 放入 private。private 目录最终含 8 个核心文件,启动时默认加载 0°,运行时切方向自动加载对应 bin。 屏幕旋转注意:横屏和竖屏的 Lua 脚本逻辑完全一致,差异只在编译出的 bin 文件(imageXXX.bin/projectXXX.bin)。开发者只维护一套工程,按方向编译四次命名好丢进 private 即可。DX 系列专属。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「屏幕旋转」,版权归大彩科技所有。 --- ### 699. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 动态特效:给任意控件加平滑过渡动画(位置/尺寸/透明度),内置缓动(线性/缓入缓出/弹性/回弹),不用逐帧画。DX 系列专属。 1. 支持属性 位置:X/Y 坐标平滑移动尺寸:宽/高/整体缩放透明度:完全透明 ↔ 不透明渐变动画时长可精确配(200ms、500ms…)。 动态特效是 DX 系列专属,M 系列老屏别指望。动画时长别配太长(>500ms 会显得拖沓),工业界面讲究即时反馈。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「动态特效」,版权归大彩科技所有。 --- ### 700. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 让用户主板(而非电脑)给 HMI 升级工程:主板发串口指令,HMI 进下载模式、收文件、存成 private。量产、远程维护都靠它。 1. 进入下载模式 主板发 $cfgenter#,HMI 应答 $ok# 后进下载模式(此时不响应原 Modbus 等协议)。 2. 创建文件 $file,[pathname],[size],[block],[baudrate]#参数说明pathname内部存储路径,如 3:/bin/image.bin(3: 等同 private:)size文件字节大小block每包数据大小,推荐 512+4 / 1024+4 / 2048+4baudrate传输波特率,0=用当前波特率例:$file,3:/bin/image.bin,12345,2052,921600#。HMI 应答 $ok# 或 $err#。 3. 下载数据 分包发文件数据(每包含 block 大小的有效数据 + 4 字节头尾)。改波特率前务必确认串口缓冲数据发完(简单起见延时 10ms)。 串口升级三道坎:①进下载模式后 HMI 不再响应原协议,别在这期间发业务指令;②改波特率前延时确保缓冲清空,否则丢字节整包废;③block 用 512+4 起步,大文件用 2048+4 提速度。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「串口升级Private」,版权归大彩科技所有。 --- ### 701. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 控件权限:满足条件才显示/可触控,最多两个条件组合(AND/OR)。比逐个画面叠控件干净得多。 1. 属性 字段说明条件地址判断用寄存器比较==、!=、<=、>=、<、>、IN(范围内含边界)、OUT(范围外不含边界)值比较值;IN/OUT 时需填下限+上限附加条件AND / OR,第二个条件无权限时隐藏控件 / 禁止触控 2. 单/双条件 单条件:LW1000==1 显示。双条件 AND:LW1000==1 且 LW1001==1 显示;双条件 OR:LW1000==1 或 LW1002==1 可触控。 3. 多条件(>2 个) 权限最多 2 个条件,3 个以上用 Lua 把多条件算成 1 个结果写回某寄存器,控件权限判这个寄存器:function on_run() local v1 = get_uint16(VT_RW, 0x1000) local v2 = get_uint16(VT_RW, 0x1001) local v3 = get_uint16(VT_RW, 0x1002) if v1 == 1 and v2 == 1 and v3 == 1 then set_uint16(VT_RW, 0x1100, 1) else set_uint16(VT_RW, 0x1100, 0) end end 控件权限最多 2 条件——别想着在界面里配 3 个 AND。超过就用 Lua 在 on_run 里算好写回一个寄存器,控件权限判那一个。注意 on_run 是周期回调,逻辑要轻。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「控件权限」,版权归大彩科技所有。 --- ### 702. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 安全登录:给界面控件分级授权,不同等级用户看/操作不同东西。支持 1~8 级(0 为游客),密码可配、可 Lua 改、可超时自动退出。 1. 配置 工程 → 工程设置 → 安全等级:设等级数、各级密码、保持登录、超时退出(秒)、返回画面、键盘位置(默认/居中)、用户名称。 2. 超时退出登录 功能按钮切换画面时勾选「用户等级 → 最低要求等级」,等级不够弹键盘输密码。空闲超时自动退登录(保持登录启用才生效)。 3. 密码修改(LUA) set_pwd(level, pwd, len):level 0~7 对应密码等级 1~8,pwd 数字密码,len 选填(前导零填充,如 len=5 则 123 存为 00123)。密码不支持读取,初始化/修改时同步镜像到 RW 区:function on_init() local _val = get_uint16(VT_RW, 0x2000) if _val ~= 0x0055 then set_uint32(VT_RW, 0x0000, 111111) set_uint32(VT_RW, 0x0002, 222222) set_uint32(VT_RW, 0x0004, 333333) set_uint32(VT_RW, 0x0006, 444444) set_uint32(VT_RW, 0x0008, 555555) set_pwd(0, 111111, 6); set_pwd(1, 222222, 6) set_pwd(2, 333333, 6); set_pwd(3, 444444, 6) set_pwd(4, 555555, 6) set_uint16(VT_RW, 0x2000, 0x0055) flash_sync() else set_pwd(0, get_uint32(VT_RW, 0x0000), 6) set_pwd(1, get_uint32(VT_RW, 0x0002), 6) -- ... 其余等级 end end 安全登录密码和分期密码一样只写不读,必须自己镜像到 RW 区。前导零是个坑:若用前导零(len=6 则 66 存为 000066),所有等级密码都得统一用前导零,否则匹配不上。改完 flash_sync() 保存。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「安全登录」,版权归大彩科技所有。 --- ### 703. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 系统分期是「到期前锁定」,自定义分期是「到期才锁」——更贴合真实租赁场景。这篇用 Lua 元表封装,实现时间精准触发 + 动态密码(算法外置,不预存静态密码)。 1. 两种方案区别 维度系统方案(前置锁定)自定义方案(到期锁定)触发时机配置后即生效当前时间 ≥ 截止时间才锁用户感知提前被锁刚好到期被锁 2. 设计要点 动态密码:由外部函数 password_func(date) 实时算(如年+月+日),不预存,防逆向超级密码:单一 uint32,一键全局解锁,现场运维兜底自校验热更新:启动检测日期变更,配置修改后自动重写存储状态持久化:时间/开关/解锁进度存 VT_RW 非易失区,掉电不丢 3. 实例化(main.lua) Stage.new(base_addr, stage_dates, password_func, super_password):-- base_addr: VT_RW 起始地址,连续存储所有配置 -- stage_dates: 3期截止日期列表,必须递增 -- password_func: 密码计算函数 -- super_password: 超级密码 dofile("stage.lua") g_stage = Stage.new(0x1000, {{2023,11,1},{2023,12,1},{2024,1,1}}, function(d) return d[1]+d[2]+d[3] end, 123456)模块用闭包 + 元表 OO 实现,支持 1~10 期、状态全存 RW 区。核心判定 get_eligible_stage() 严格比对系统时间与截止日,now ≥ deadline 才锁屏。 自定义分期比系统分期灵活,代价是要自己写 Lua 模块(stage.lua)。最关键的动态密码不预存——密码算出来即弃,即使被人 dump 出 RW 区也只看到某期的结果,逆向不出算法。状态必须落 RW 区,否则重启丢失解锁进度。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「分期应用(RW-自定义)」,版权归大彩科技所有。 --- ### 704. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 分期(租赁锁机):到约定时间自动锁屏,输密码才解锁。适合设备试用、分期付款。系统方案是「到期前锁定」,自定义方案(见 04)是「到期才锁」。 1. 配置 工程 → 工程设置 → 分期使用:启用分期、分期数(最大10)、到期锁定画面 ID、每期到期日和密码。 2. 锁定界面与系统寄存器 锁定画面放两个数值控件:密码输入绑定 $SysStageEnterPwd(LW0205,UINT32)、当前期号绑定 $SysStageTimeLevel(LW0204,UINT16,缩放1偏移1)。 3. 分期时间掉电存储(LUA) 改分期时间需写系统寄存器 SysCfgCtrl(0x011A)/SysCfgOption(0x011B):function on_update(slave,vtype,addr) if vtype == VT_LW then if addr >= 0x0210 and addr <= 0x0218 then -- 5个分期时间地址 set_uint16(VT_LW, 0x011B, (1<<5)) -- 选择分期密码 set_uint16(VT_LW, 0x011A, 0x5501) -- 保存 end end end 4. 分期密码(不读只写) set_stage_pwd(level, pwd):level 0~9 对应分期1~10,pwd 为数字密码。首次使用把密码写入 RW 区(检测标识位 0x0055 防重复初始化):function on_init() local _val = get_uint16(VT_RW, 0x2000) if _val ~= 0x0055 then set_uint32(VT_RW, 0x0000, 1111) set_uint32(VT_RW, 0x0002, 2222) set_uint32(VT_RW, 0x0004, 3333) set_uint32(VT_RW, 0x0006, 4444) set_uint32(VT_RW, 0x0007, 5555) set_uint16(VT_RW, 0x2000, 0x0055) end set_uint16(VT_LW, 0x011B, (1<<5)) set_uint16(VT_LW, 0x011A, 0x5502) -- 从set_stage_pwd后的密码加载 end 5. 恢复与开关 恢复分期写 SysCfgCtrl=0x5503;动态开关通过写 LW0200(分期数 0 或 1)+ 保存实现。所有涉及分期的写 RW/系统寄存器操作都要配合 SysCfgCtrl/SysCfgOption 保存。 分期密码是只写不读的:你想让用户改密码或初始化,得自己在 RW 区镜像一份,再用 set_stage_pwd 同步。每次改完记着调 SysCfgCtrl(0x011A)/SysCfgOption(0x011B) 保存,否则掉电丢。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「分期应用(系统)」,版权归大彩科技所有。 --- ### 705. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 配方:一套产品参数(温度、时间、转速…)打包成一条记录,切换产品时一键加载,免得逐个手动改。最多 10 个配方、每条 1000 组、成分 2000 个,覆盖绝大多数产线换型场景。 1. 配方设置 工程 → 配方设置,核心字段:字段说明配方名称备注,可不填配方成分数参数个数,最大 2000数据类型UINT16/INT16/UINT32/INT32/UINT64/INT64/FLOAT/DOUBLE配方记录数记录条数,最大 1000配方记录名称关联标签,分号分隔,如「配方1;配方2;配方3」名称长度N 字节每配方占用配方索引地址控制地址,索引值后面紧跟各成分数据配方写 PLC 地址目标设备起始地址,索引变化时连续下发配方控制地址写 1=写入PLC / 2=修改并保存 / 3=保存文件 / 4=删除选中行 / 5=修改不保存复位 2. 应用:配方选择与切换 文本控件绑定「配方索引地址 + 1」显示名称(GBK 编码、高低字节互换);两个字设置按钮做索引递增/递减(步长1、循环、0~5 范围)。切换索引时底层自动从配方文件加载对应数据刷新控件。 3. 边改边存 修改参数后写「配方控制地址=2」保存。LUA 里判断成分寄存器触发即自动存:function on_update(slave,vtype,addr) if vtype == VT_LW then if addr >= 0x1201 and addr <= 0x1206 then -- 配方数据寄存器 set_uint16(VT_LW, 0x1300, 2) -- 配方控制地址写2 update_system() -- 立刻写入系统参数 end end end 4. 下发 PLC 与文件显示 写「配方控制地址=1」把 LW1201~1206 下发到 PLC 的 LW1400~1405。配方文件也能直接进数据记录控件表格显示、编辑(数据源选「配方数据」、索引选对应配方)。 配方三个易错点:①成分寄存器是从「索引地址+1」开始连续排的,不是从索引地址本身;②想在 LUA 里边改边存,记地址区间判断;③PLC 地址不连续时不能靠自动下发,得 LUA 读配方值单独写。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「配方应用」,版权归大彩科技所有。 --- ### 706. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 把任意视频文件转成 HMI 能播放的 MP4,格式不对屏幕直接黑屏或报错。这一步做不好,后面视频播放控件全白搭。 1. 格式要求(硬指标) 项要求容器MP4(.mp4)视频编码H.264音频流MP3 或 AAC最大分辨率< 1280×768最大帧率< 30 fps最大码率< 1400 Kbps官方推荐 Freemake Video Converter(自行搜索下载,从网络获取,版权问题自担)。 转码三件套:①分辨率别超 1280×768;②编码必须 H.264(不是 H.265/VP9);③码率压到 1400 以下。源文件是 4K 的先缩到 720P 再转,否则屏带不动。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)其他技术教程「视频文件转换说明」,版权归大彩科技所有。 --- ═══════════════════════════════════════════ ## 基础控件文档 ═══════════════════════════════════════════ ### 707. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 PC软件Visual TFT功能     Visual TFT 是我司自主创新开发的一款功能强大的串口屏开发调试软件,内嵌国内独家首款“虚拟串口屏”。用户新建工程后,导入设计好的美工图片,然后对每个画面中的按钮和其他控件进行配置,模拟仿真正确后,最后将整个工程下载到串口屏中。        软件常用功能如下:           (1) IDE环境操作人性化,界面美观大方;内置字库生成器、Lua脚本编译器;           (2) 软件集成了常用图标、按钮和键盘等矢量图,降低美工难度;           (3) 画面支持图片缩放、文字编辑和元素拷贝等常用操作功能;           (4)工程编译后为每个画面、图片和控件分配唯一ID;           (5) 内置指令调试助手,方便PC直接调试串口屏,快速掌握指令操作;           (6) 内嵌“虚拟串口屏”模拟仿真器,直接绑定KEIL调试,不需要每次工程图片有变化,而重新下载图片;           (7)支持二进制文件烧录,量产更方便安全;           (8)根据用户需求,定制特殊的PC软件功能; 开发三部曲 (1) 准备美工素材      安排美工人员将开机画面、文本背景、按钮图标和提示框等产品所需图片设计好。 (2) 利用配套的VisualTFT软件进行画面编辑、控件配置和图片下载      首先利用配套的上位机VisualTFT软件,将预先设计好的美工图片进行界面排版和控件配置,然后运行 “虚拟串口屏”进行模拟仿真,最后可以通  过USB/SD/UART/U盘/WIFI(视不同型号硬件配置)将整个工程下载到串口屏内部存储器中。PC软件会对工程中的每个画面、图片和控件分配一个唯一的ID号。 (3) 用户单片机监听和发送相应的串口指令控制画面显示      工程下载到屏内后,一旦按下画面某个按钮,用户MCU串口就会收到屏幕上传的按钮ID信息或坐标值。通过对ID号进行解析,用户即可获取当前按钮的画面位置和功能属性,这样就可以控制相关外围设备动作或画面更新显示。      对于无触摸产品,用户单片机无需监听按钮ID上传的信息,只需发送相关指令进行画面切换和文本图片显示等。    用户安装好上位机VisualTFT软件后,即可运行使用。虚拟串口屏仿真结果与真实串口屏一模一样。因此,研发前期评估时无需购买硬件,通过自己单片机RS232串口与它相连,即可相互通信,鼠标点击按钮就会立刻上传按钮控件信息,一旦开发者调试通过,真实硬件则无需再调试。 Keil与虚拟串口屏绑定调试     为了进一步提高开发效率,用户还可以通过Keil开发环境与“虚拟串口屏”进行绑定Debug调试。程序单步调试时,所有运行结果都可以在“虚拟串口屏”上呈现,大大节省工程师开发时间,一旦工程界面有所改变,用户不再需要重新下载图片到串口屏,所有项目前期评估都可以基于PC端来完成。 --- ### 708. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 VisualTFT 软件安装 Visual TFT 是我司自主创新开发的一款功能强大的串口屏开发调试软件,内嵌国内独家首款“虚拟串口屏”。 使用环境:Windows下载链接:VisualTFT 根据提示选择安装目录,一步一步点击“next”完成安装,安装过程如下所示 VisualTFT 工作界面介绍 如果已经成功安装了VisualTFT,打开已有的出厂工程,进行VisualTFT 工作界面简介,界面显示如下所示 ①菜单栏区域 常用的主要是调试以及工具这两项配置 调试 用于串口调试,当实体屏非大彩协议,联机操作是失败的,此时在菜单栏点击调试→联机不握手,可以在【指令窗口】查看串口指令的交互 工具 工具栏常用的操作有: 图标生成:icon文件的生成字库配置:生成矢量字库键盘配置:自定义用户键盘样式协议与变量:modbus/fx2n/xgus协议的配置minic脚本编程:开启modbus/fx2n/xgus协议后,可编辑逻辑轻量级脚本lua脚本编辑:lua脚本的应用,用于做运算,私有串口协议等强大应用 ②编译区域 编辑区域主要有编译、下载、虚拟屏等 编译:可以在【输出窗口】看到编辑结果,以及使用空间大小下载:基本型,点击下载会通过miniusb口进行下载,而其它系列会弹出量产下载接口,可选择串口或SD/U盘下载运行虚拟屏:点击将配置好的页面,模拟实体屏运行逻辑 ③控制区域 若当前实体屏为大彩协议,即可选择对应的串口端口号,点击联机。如下所示 联机成功后,VisualTFT右下角会显示“已联机设备……”,即可通过【指令调试】调试控制 ④控件区域 控件主要分为基本控件和组态控件 基本控件如下所示:依次为画笔、线段、矩形框、实心矩形、圆形、实心圆、椭圆、实心椭圆、静态文字、图片等 组态控件如下所示,依次为:按钮、文本、仪表、滑块、RTC、动画、图标、曲线、菜单、滑动选择、二维码、数据记录、历史曲线、圆形进度条、基本图形、视频、子画面窗口控件等 ⑤控件布局 用于控件之间的上下层叠显示、对齐、间距、等宽等高等调节分布,以及在画面布局过程可以锁定、隐藏、放大放小等 ⑥工程窗口 可查看已经创建的画面和加载的图片、音频、视频等文件列表 ⑦编辑区域 主要负责UI界面的编辑,开发中主要的操作区域,用户点击选择需要的控件,将其放置到本区域,即完成控件的创建。具体如下操作 ⑧属性窗口 右侧属于属性窗口,主要可以查看工程总体配置的属性、控件的属性以及所有的画面、图片总资源窗口。如下所示 ⑨输出窗口 用户编译时候,所有的错误、告警、工程总大小均在此窗口输出 ⑩指令窗口 用户来联机成功后,通过指令收发控制,可以在【指令窗口】查看具体的报文信息,如VisualTFT联机实体屏,在【指令助手】⇨设备握手 VisualTFT 发送:EE 04 FF FC FF FF 屏幕反馈: EE 55 FF FC FF FF 如何创建工程 认识基本VisualTFT界面后,本章节将创建新的工程 在菜单栏中,依次选择【文件】⇨【新建工程N… 】或者直接快捷按钮新建,如下所示 选择存储路径,根据实体屏,选择对应的分辨率和尺寸,如实体屏型号为DC80480M070_1111_0C,操作如下所示 如何下载工程 M系列 点击编译按钮,编译成功后会自动弹出【量产向导M】窗口,操作如下所示 方法一 串口下载:联机成功后,点击【串口下载】,如下所示 方法二:SD卡下载 sd卡要求 建议使用金士顿SD卡容量建议小于 <= 8G格式化为FAT32 升级步骤如下所示: ①点击“SD升级包”,会自动弹出 “SD_PACKET”目录 ②将目录下的文件拷贝到SD卡的根目录下 ③屏幕断电 ④将SD卡插入串口屏的SD卡的槽里 ⑤屏幕上电,自动进入下载页面 ⑥下载完成后,屏幕会显示‘update finished’,并自动加载工程页面,将移除SD卡即可 F系列 点击将工程编译,编译成功后会自动弹出【量产向导F】窗口,操作如下所示 方法一:串口下载 联机成功后,点击【串口下载】,如下所示 方法二:SD卡下载 sd卡要求 ⚫建议使用金士顿SD卡 ⚫容量建议小于 <= 8G ⚫格式化为FAT32 升级步骤如下所示: ①点击“SD升级包”,会自动弹出 “SD_PACKET”目录 ②将目录下的文件拷贝到SD卡的根目录下,如下所示 ③屏幕断电 ④将SD卡插入串口屏的SD卡的槽里 ⑤屏幕上电,自动进入下载页面 ⑥下载完成后,屏幕会并自动加载工程页面,将移除SD卡即可 物联型 点击将工程编译,编译成功后会自动弹出【量产向导W】窗口,操作如下所示 方法一:串口下载 联机成功后,点击【串口下载】,如下所示 方法二:U盘下载 U盘要求 ⚫U盘没有做过系统启动盘 ⚫容量建议小于 <= 32G ⚫格式化为FAT32 注意. 个别物联型的型号只支持SD卡下载,下载流程类似 ↩ 升级步骤如下所示: ①点击“U盘或SD卡下载”,会自动弹出 “Udisk_SD”目录 ②将内容复制到U盘或SD根目录 ③屏幕断电 ④将U盘插入串口屏的U盘卡槽里 ⑤屏幕上电,自动进入下载页面 ⑥下载完成后,屏幕显示‘INFO:Upgrade finished’,屏幕断电→拔卡→上电,完成工程下载 基本型 点击编译按钮,且【输出窗口】显示0错误,表示编译成功,操作如下所示 在菜单栏,点击工具→量产向导,弹出【量产下载】对话框 方法一:串口下载 联机成功后,点击【串口下载】,如下所示 方法二:mini usb口下载 使用MiniUSB口连接电脑和屏幕,在菜单栏点击,无需串口联机,即可进入MiniUSB工程下载,如下所示 方法三:U盘下载 sd卡要求 建议使用金士顿SD卡容量建议小于 <= 8G格式化为FAT32 SD卡升级步骤如下: ①点击升级SD卡资源包 ②将内容复制到U盘或SD根目录 ③将SD卡插入串口屏的SD卡槽里 ④自动进入升级页面 ⑤下载完成后,屏幕蜂鸣器会响一声,自动进入UI画面,将移除SD卡即可 VisualTFT和虚拟屏调试 我司PC软件虚拟串口屏可以和Visual TFT上虚拟联机调试。该功能可以实现在电脑上模拟演示MCU程序与串口屏交互的效果,对入门了解大彩指令集有很大帮助。软件VSPD为虚拟串口驱动生成软件,通过该软件可以创建一对关联的虚拟串口。 安装虚拟串口软件 KEIL软件和虚拟串口屏联调需要一对相关联的虚拟串口实现,通过VSPD软件可以生成虚拟串口。若已经安装软件VSPD,此章节可以跳过。安装步骤如下: 在我司的官网中和软件开发包中有提供虚拟串口软件VSPD安装包,如下所示:安装前,请先查看安装包下的《使用前必读.txt》文档。在点击运行vspd.exe安装软件,选择安装路径,一直点击下一步直至安装完成,如下所示: 创建虚拟串口 打开虚拟串口软件,假设选择com6和com7为一组虚拟串口,点击Add pair生成一对关联的串口,如下所示: 注意:虚拟串口编号不能与实体串口编号重复,否则会导致串口无法正常使用,虚拟串口的编号尽量在10以内 运行虚拟屏 假设创建的虚拟串口对为com1和com2,以出厂工程为例,点击运行,选择其中一个串口com1,并打开串口,操作如下所示 联机调试 选择另一个虚拟串口com2,打开指令助手,如设置【最高电压】文本控件值由100⇨66⇨88变化,操作如下所示 Keil 和虚拟屏调试 根据KEIL开发软件的仿真功能,我司在PC软件Visual TFT上的虚拟串口屏中添加了与KEIL仿真联调的功能。该功能可以实现在电脑上仿真演示MCU程序与串口屏交互的效果,并且通过此功能调试程序可以大大的减少在开发过程中反复下载MCU程序和串口屏UI工程的调试时间。 软件VSPD为虚拟串口驱动生成软件,通过该软件可以创建一对关联的虚拟串口。若用户已经在上一章节创建可直接跳过。 安装虚拟串口软件 KEIL软件和虚拟串口屏联调需要一对相关联的虚拟串口实现,通过VSPD软件可以生成虚拟串口。若已经安装软件VSPD,此章节可以跳过。安装步骤如下: 在我司的官网中和软件开发包中有提供虚拟串口软件VSPD安装包,如下所示:安装前,请先查看安装包下的《使用前必读.txt》文档。在点击运行vspd.exe安装软件,选择安装路径,一直点击下一步直至安装完成,如下所示: 创建虚拟串口 打开虚拟串口软件,选择com6和com7点击Add pair生成一对关联的虚拟串口,创建虚拟串口如下所示: 注意:虚拟串口编号不能与实体串口编号重复,否则会导致串口无法正常使用,虚拟串口的编号尽量在10以内,虚拟串口编号超过10时,KEIL软件仿真时可能不支持 配置KEIL工程属性 上一章节中已经生成了一对虚拟串口COM6 和COM7,接下来我们需要把虚拟串口屏连接到COM7, KEIL 软件模拟器串口映射到COM6,再通过一些属性配置,就可以完成二者联机。操作步骤如下: 查看仿真串口寄存器,ARM系列MCU可能有多个串口,查看串口寄存器的方法,如下: ①点击KEIL 软件菜单中【Debug】按钮进入调试状态,然后在KEIL工程左下角窗口输入“DIR VTREG”即可以查看当前MCU仿真支持的多少个串口,如下所示: ​ ② 如果显示当前无串口如图 4‑5所示,请检查是否有设置仿真MCU,检查方法:在KEIL软件界面点击工具栏中“Options for Target”,并在弹窗中选择【Debug】,如下所示: ③添加完仿真MCU型号后重新编译工程,如下所示: ④编译完成后点击Debug按钮,重新输入“DIR VTREG”,若该型号芯片支持仿真,会在窗口中显示该芯片的串口寄存器,如下所示: ⑤若该型号芯片不支持仿真,则不显示串口寄存器,如下所示: 创建 COMDEBUG.ini 配置文件 ①在 KEIL 程序工程任意目录下,新建 1 个记事本,命名:COMDEBUG.txt,如下所示,在文本中编写以下两句命令: MODE COM619200,0,8,1 ASSIGN COM6<S1IN> S1OUT 第 1 句命令的功能是把COM6的属性设置为 19200 波特率,0无校验位,8位数据位,1 位停止位;第 2 句命令的功能是把软件仿真器的串口1映射到COM6 特别注意:不同的MCU,上面的 ASSIGN 语句有细微的差别,如下所示: ARM系列MCU:ASSIGN COM6 S1OUT8051系列MCU:ASSIGN COM6 SOUTSTC 系列MCU:ASSIGN COM6 S0OUT 提示:当仿真MCU使用串口1以外的串口时,需要将上面的ASSIGN语句修改为对应的串口,如使用串口2时,S1IN改为S2IN,S1OUT改为S2OUT ③修改COMDEBUG.txt后缀名改为COMDEBUG.ini,这样就完成创建配置文件,如下所示: 提示:若电脑上的记事本未显示.txt 后缀扩展名,可以进入文件夹选型,去掉“隐藏已知文件类型的扩展名”,如下所示。对于 WIN7 系统,点击文件栏的“组织” ,选择“文件夹和搜索选项”,即可弹出该置界面 打开KEIL工程,点击工具栏中“Options for Target”,并在弹窗中选择【Debug】配置,如下所示:在【Debug】配置中选中左侧Use Simulator,并将把工程目录中COMDEBUG.ini配置文件添加到Initialization File中,如下所示: 然后修改窗口中CPU仿真参数: 【CPU DLL】:修改为SARMCM3.DLL;【Parameter】:(不填);【Dialog.DLL】:修改为DARMSTM.DLL ;【Parameter】:-pSTM32F103VC(此处为填仿真芯片型号,注:部分MCU不支持仿真功能的,如:STM32F4系列的MCU是不支持软件仿真) 注意:51单片机此处不需要修改,直接跳过。 配置串口屏工程 工程配置可以参考开发包中的出厂例程,这里不作详细介绍。 打开出厂例程,点击运行虚拟串口屏,待软件编译通过后会弹出虚拟串口屏的窗口,如下所示: 选择虚拟串口为com7、波特率为19200(波特率与配置文件的波特率一致),然后点击打开串口和根据需求选择是否将窗口置顶,如下所示: 程序联调演示 点击编译KEIL工程,确定工程无错误,如下所示: 编译成功后,点击Debug按钮,如下所示: 开始全速运行程序后,效果如下所示: 指令集 跳动符号协议是我司自主研发、规约的一套报文协议,用于用户主板和跳动符号串口屏通讯的一套标准。一条完整的串口指令帧格式如下所示。如果指令参数大于1个字节,则高字节在前、低字节在后。指令的最大长度为1024字节(包含帧头和帧尾),数值均为十六进制。串口格式:8位数据位、1位停止位、无效验位。 指令EEXXXX XX…XXXFF FC FF FF说明帧头指令指令参数帧尾 若用户需要指令支持CRC格式效验,则指令帧格式如下所示。CRC的算法程序请在官网资料下载栏中下载。CRC校验不包含帧头和帧尾。 指令EEXXXX XX…XXXCRC16FF FC FF FF说明帧头指令指令参数校验位帧尾 详细的报文含义、解析可参考《跳动符号串口屏指令集V5.1 .pdf》(点击跳转) --- ### 709. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是视频AV控件? 带AV摄像头输入的物联型串口支持AV信号输入显示,常用于美容仪行业的皮肤护理、头发检测等 适用范围:W系列 21.1 视频AV控件属性介绍 用途 选中视频控件,在属性窗口中选择“播放AV输入” 21.2 AV输入 【AV输入】画面,AV输入显示的配置过程 画面配置 在【按钮更新二维码】画面的“背景图片”导入相应的美工图片。画面中添加1个视频AV控件(控件ID:2),1个按钮控件(控件ID:1),如下所示 属性配置 视频AV控件 设置用途为“播放AV输入”,如下所示 按钮控件 按钮控件截图属性如下所示,需要配合LUA脚本实现截图存储 LUA截图代码段如下所示: local usb_dir = '' local shoot_num = 0 --控制控件 function on_control_notify(screen,control,value) ...... if screen==43 and control==1 and value==1 and usb_dir~=0 --AV截图 then shoot_num=shoot_num+1 --图片编号 local pic_path = usb_dir..shoot_num..".jpg" --图片存放在usb中,USB插入时有效 screen_shoot(pic_path,39,106,577,432) --截图。参数:保存路径、截图原点x、截图原点y、截图像素宽度、高度 end ...... end -- 系统回调函数,插入SD卡自动回调 function on_sd_inserted(dir) usb_dir = dir end 运行效果 将工程编译后下载到串口屏, 并接上 AV 接口的摄像头;点击串口屏画面进入该视频控件界面,视频控件将自动播放摄像头所拍摄的视频。 如图下所示 --- ### 710. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是视频AV控件? 带AV摄像头输入的物联型串口支持AV信号输入显示,常用于美容仪行业的皮肤护理、头发检测等 针对M型系列的视频播放/AV输入功能时,视频图层会一直显示在最上层,此时如果我们将文字等其他图形叠加放在视频控件上显示时,视频图层会将其他图形都覆盖,导致只能显示出视频,而无法显示视频上叠放的其他文字和图形。为此,我司针对有此类需求的客户开发了对应的M系列视频底层播放API接口,来满足此类客户的需求,api函数接口如下所示 set_color_key(Min_Color,Max_Color,Match) 函数说明: Min_Color:24位RGB颜色范围的最小值,例如0x00BFBFBF,R-BF/G-BF/B-BF;Min_Color:24位RGB颜色范围的最大值,例如0x00C8C8C8,R-C8/G-C8/B-C8;Match:6位的比较规则101010(2A);10-R/10-G/10-B,代表颜色范围在0x00BFBFBF—0x00C8C8C8之间的颜色值经过比较后会被过滤。(0x00BFBFBF <= color <= 0x00C8C8C8之间的颜色会被过滤,其他颜色会显示出来) function on_init()     set_color_key(0x00BFBFBF,0x00C8C8C8,0x0000002A) end 注:set_color_key(Min_Color,Max_Color,Match),此API接口函数必须要放在on_init()系统初始化函数中使用,默认在初始时配置的属性 适用范围:M系列 相关例程下载链接: 《M系列 AV输入》(点击跳转) 20.1 视频AV控件属性介绍 用途 选中视频控件,在属性窗口中选择“播放AV输入” 20.2 AV输入坐标显示 【AV输入坐标显示】画面,介绍配置LUA脚本的AV应用,结合按钮上下左右移动,显示‘十字线’ 属性配置 视频控件配置 视频控件配置拖动选择视频控件,用途选择播放AV输入,如下所示 按钮配置 按钮控件上(控件ID6):控制十字光标显示坐标y减 按钮控件下(控件ID8):控制十字光标显示坐标y加 按钮控件左(控件ID7):控制十字光标显示坐标x减 按钮控件右(控件ID9):控制十字光标显示坐标x加 属性配置如下所示 LUA脚本控制 20.3 LUA脚本逻辑实现 LUA脚本配置实现代码: -- 十字光标坐标显示点 local LineH_Y = 263 --十字显示光标点y坐标 local LineV_X = 240 --十字显示光标点x坐标 local TextH_X = LineV_X + 5 --坐标text显示的坐标位置 local TextH_Y = LineH_Y - 40 local TextV_X = LineV_X + 5 local TextV_Y = LineH_Y - 20 function on_init() --初始化 set_color_key(0x00BFBFBF,0x00C8C8C8,0x0000002A) --设置颜色过滤属性(必须在on_init()中配置) end function on_draw(screen) --界面刷新回调函数,具体使用说明参考《LUA脚本API》 if screen == 1 then set_pen_color(0x3666) --设置画笔颜色 draw_line(40,LineH_Y,440,LineH_Y,1) --画十字线 draw_line(LineV_X,63,LineV_X,440,1) local text_h = "LineH_Y:"..LineH_Y local text_v = "LineV_X:"..LineV_X draw_text(text_h,TextH_X,TextH_Y,90,20,4,0x3666,4) --画坐标text显示 draw_text(text_v,TextV_X,TextV_Y,90,20,4,0x3666,4) end end function on_control_notify(screen,control,value) --触摸控件回调函数 if screen == 1 then if control == 6 then --上 if value == 1 then LineH_Y = LineH_Y - 1 if LineH_Y < 63 then LineH_Y = 63 end elseif value == 2 then LineH_Y = LineH_Y - 5 if LineH_Y < 63 then LineH_Y = 63 end end elseif control == 7 then --下 if value == 1 then LineV_X = LineV_X - 1 if LineV_X < 63 then LineV_X = 63 end elseif value == 2 then LineV_X = LineV_X - 5 if LineV_X < 63 then LineV_X = 63 end end elseif control == 8 then --左 if value == 1 then LineH_Y = LineH_Y + 1 if LineH_Y > 440 then LineH_Y = 463 end elseif value == 2 then LineH_Y = LineH_Y + 5 if LineH_Y > 440 then LineH_Y = 463 end end elseif control == 9 then --右 if value == 1 then LineV_X = LineV_X + 1 if LineV_X > 440 then LineV_X = 440 end elseif value == 2 then LineV_X = LineV_X + 5 if LineV_X > 440 then LineV_X = 440 end end end follow_pos(LineV_X,LineH_Y) --text显示坐标传入 redraw() end end function on_press(state,x,y) --触摸屏点击回调函数 if get_current_screen() == 1 then if state == 1 or state == 2 then if x >= 40 and x <= 440 then if y >= 63 and y <= 463 then follow_pos(x,y) LineV_X = x LineH_Y = y redraw() end end end end end function follow_pos(p_x,p_y) --text坐标显示 if p_x < 240 and p_y < 263 then TextV_X = p_x + 5 TextH_X = p_x + 5 TextV_Y = p_y + 5 TextH_Y = p_y + 25 elseif p_x < 240 and p_y > 263 then TextV_X = p_x + 5 TextH_X = p_x + 5 TextV_Y = p_y - 40 TextH_Y = p_y - 20 elseif p_x >= 240 and p_y <= 263 then TextV_X = p_x - 85 TextH_X = p_x - 85 TextV_Y = p_y + 5 TextH_Y = p_y + 25 elseif p_x > 240 and p_y > 263 then TextV_X = p_x - 85 TextH_X = p_x - 85 TextV_Y = p_y - 40 TextH_Y = p_y - 20 end end 20.4 两路AV切换 指令切换 M系列带两路AV的可以支持来回切换,指令如下所示 帧头组态指令功能码-AV通道切换画面ID控件ID通道帧尾EEB17700 0000 0100/01FF FC FF FF 当通道为00,表示切换到通道0的AV信号输入,当前通道为0x01,表示切换到通道1的AV信号输入 LUA API切换 set_av_channel(channel) 切换AV通道,仅M系列支持 channel = 0,切换到通道0channel= 1,切换到通道1 --- ### 711. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是视频控件? 我司视频AV控件有两种功能,分别为播放视频文件以及AV输入。视频控件播放视频功能常用于开机创意效果,或者播放产品的操作指南、公共场合的广告示意等 本章节主要介绍以下3点 播放屏内的视频播放U盘/SD卡的视频LUA API介绍 适用范围:物联型 视频格式: MP4文件H264编码音频流为MP3或AAC格式视频最大分辨率<1280*768最大帧数<30ps最大码率<1400 相关例程下载链接: 《物联型播放视频应用》(点击跳转) 视频的转换操作流程可参考此教程:视频文件转换说明 19.1 视频控件属性介绍 视频控件属性介绍,如下图所示 用途 播放视频以及AV输入,AV输入需要应用的硬件型号支持 视频文件 加载到控件的视频命名为字母(a-z)、数字(0-9)和下划线(_)组合,不支持其他字符 音频流 启用和禁止,禁止后播放视频没有声音 自动播放 “是”或“否”,当选择是,切换到该页面就自动播放视频文件 播放结束时 视频播放结束时,执行的动作。可以选择”不处理“、“发送通知”以及“切换到下一页” 重复次数 重复播放的次数,0表示不断重复 19.2 播放屏内视频文件 【播放屏内视频文件】画面,介绍相关播放指令 画面配置 在【播放屏内视频文件】画面的“背景图片”导入相应的美工图片画面中添加1个视频控件(控件ID:1)和3个按钮控件用于设置视频播放状态,如下所示 属性配置 视频AV控件 设置视频控件用途为“播放视频”,添加视频文件,“音频流”为启用,“自动播放”为是,“播放结束时”为发送通知,“重复次数”为0,如下所示 按钮控件ID2-播放 添加按钮控件ID2“按下时的图片”,并且勾选裁剪;由于切换到该画面就自动播放视频,所以设置按钮控件ID2的初始状态为“按下”;按钮操作风格为“置位”,如下所示 设置“播放按钮”、“暂停/恢复按钮”以及“停止按钮”为互斥,操作如下所示 在指令助手界面,左侧导航栏选择【视频AV控件】,设置画面ID0中的控件ID2播放循环视频,填写在对应按钮的指令助手中,如下所示 如上所示:指令格式为EE B1 70 00 00 00 01 00 FF FC FF FF。该指令主要用于控制视频播放控件的播放,可以设置相应的视频播放循环次数,让视频按照相应的设置进行播放。(注:视频播放控件必须先设置视频路径,如控件已加载视频文件,只需要发送播放视频指令。反正,需要先发送设置播放视频的路径,在发送播放指令) 帧头组态指令功能码-视频播放画面ID控件ID播放次数帧尾EEB17000 0000 0100FF FC FF FF 按钮控件ID3-暂停/恢复 按钮控件ID3的属性配置和按钮控件ID2配置类似,设置按钮控件ID3的初始状态为“弹起”,填写在对应按钮的指令助手中,如下所示 如上所示:指令格式为EE B1 72 00 00 00 01 FF FC FF FF。该指令主要用于控制视频“暂停/恢复”。指令含义如下所示 帧头组态指令功能码-视频暂停/恢复画面ID控件ID帧尾EEB17200 0000 01FF FC FF FF 按钮控件ID4-停止 按钮控件ID4的属性配置和按钮控件ID2配置类似,设置按钮控件ID4的初始状态为“弹起”,填写在对应按钮的指令助手中,如下所示 如上所示:指令格式为EE B1 71 00 00 00 01 FF FC FF FF。该指令主要用于控制视频“停止”。指令含义如下所示 帧头组态指令功能码-视频停止画面ID控件ID帧尾EEB17100 0000 01FF FC FF FF 19.3 播放U盘/SD卡中的视频 播放外部U盘/SD卡的视频步骤和播放屏内部视频步骤基本相同,不同的是播放外部U盘/SD中视频需要先发送指令设置视频路径,操作过程如下: 工程画面添加视频播放控件(参照19.2章节)对内指令设置视频路径发送指令控制视频播放、暂停/恢复、停止(参照19.2章节) 对内指令设置视频路径 设置SD卡路径 设置播放SD卡视频格式,如播放SD卡的0001.mp4文件,其中SD的盘符为SD:/,路径即是‘SD:/0001.mp4’ 如下所示:EE B1 74 00 00 00 01 73 64 3A 2F 30 30 30 31 2E 6D 70 34 FF FC FF FF 。该指令主要用于控制视频“停止”。指令含义如下所示 帧头组态指令功能码-设置视频播放路径画面ID控件ID路径(SD:/0001.mp4)帧尾EEB17400 0000 0173 64 3A 2F 30 30 30 31 2E 6D 70 34FF FC FF FF 设置U盘路径 设置播放U盘视频格式,如播放U盘的0001.mp4文件,其中U盘的盘符为U:/,路径即是‘U:/0001.mp4’ 如下所示:EE B1 74 00 00 00 01 75 73 62 3A 2F 74 65 73 74 2E 6D 70 34 FF FC FF FF 。该指令主要用于控制视频“停止”。指令含义如下所示 帧头组态指令功能码-设置视频播放路径画面ID控件ID路径(SD:/0001.mp4)帧尾EEB17400 0000 0175 73 62 3A 2F 74 65 73 74 2E 6D 70 34FF FC FF FF 19.4 LUA API介绍 play_video(pathname,repeat) 播放视频当前页面的视频控件,适用于物联型 pathname为视频路径repeat为重复次数,0为无限制次, 播放屏内视频 如播放屏内Videos目录下的”1.mp4”视频,屏内盘符为“a:/“,如下所示 --用户通过触摸修改控件后,执行此回调函数 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件 function on_control_notify(screen,control,value) if screen == sc_main2 then if control == 7 and value == 0 then play_ video(‘a:/Videos/1.mp4’,0) end end end 播放U盘/SD卡视频 如播放U盘/SD根目录下的”test.mp4”视频,建议创建全局变量,在U盘/SD卡触发回调中获取盘符,如下所示 local sd_dir = '' local usb_dir = '' --用户通过触摸修改控件后,执行此回调函数 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件 function on_control_notify(screen,control,value) if screen == sc_main2 then -- 假设视频控件ID为1,视频控件开启通知后,播放完毕会触发控件回调函数 if control == 1 and value == 0 then --do user logic elseif control == 2 and value == 0 -- 按钮按下播发SD卡视频 then play_video(sd_dir..'/'..'test.mp4', 0, 0, 480, 272) elseif control == 3 and value == 0 -- 按钮按下播发U盘视频 then play_video(usb_dir..'/'..'test.mp4', 0, 0, 480, 272) end end end -- 系统回调函数,插入SD卡自动回调 function on_sd_inserted(dir) sd_dir = dir end -- 系统回调函数,插入SD卡自动回调 function on_sd_inserted(dir) usb_dir = dir end 更多关于LUA脚本的文件的遍历、视频控制、循环播放等,可参考《播放SD卡视频文件》(点击跳转) stop_video() 停止视频播放 --- ### 712. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是视频控件? 我司视频AV控件有两种功能,分别为播放视频文件以及AV输入。视频控件播放视频功能常用于开机创意效果,或者播放产品的操作指南、公共场合的广告示意等 本章节主要介绍以下3点 播放屏内的视频播放SD卡的视频LUA API介绍 适用范围:M系列 视频格式: MP4文件H264编码音频流为MP3或AAC格式视频最大分辨率<1280*768最大帧数<30ps最大码率<1400 相关例程下载链接: 《开机视频应用》(点击跳转)《播放SD卡视频文件》(点击跳转) 视频的转换操作流程可参考此教程:视频文件转换说明 18.1 视频控件属性介绍 视频控件属性介绍,如下图所示 用途 播放视频以及AV输入,AV输入需要应用的硬件型号支持 视频文件 加载到控件的视频命名为字母(a-z)、数字(0-9)和下划线(_)组合,不支持其他字符 音频流 启用和禁止,禁止后播放视频没有声音 自动播放 “是”或“否”,当选择是,切换到该页面就自动播放视频文件 播放结束时 视频播放结束时,执行的动作。可以选择”不处理“、“发送通知”以及“切换到下一页” 重复次数 重复播放的次数,0表示不断重复 18.2 播放屏内视频文件 【播放屏内视频文件】画面,介绍相关播放指令 画面配置 在【播放屏内视频文件】画面的“背景图片”导入相应的美工图片画面中添加1个视频控件(控件ID:1)和3个按钮控件用于设置视频播放状态,如下所示 属性配置 视频AV控件 设置视频控件用途为“播放视频”,添加视频文件,“音频流”为启用,“自动播放”为是,“播放结束时”为发送通知,“重复次数”为0,如下所示 按钮控件ID2-播放 添加按钮控件ID2“按下时的图片”,并且勾选裁剪;由于切换到该画面就自动播放视频,所以设置按钮控件ID2的初始状态为“按下”;按钮操作风格为“置位”,如下所示 设置“播放按钮”、“暂停/恢复按钮”以及“停止按钮”为互斥,操作如下所示 在指令助手界面,左侧导航栏选择【视频AV控件】,设置画面ID0中的控件ID2播放循环视频,填写在对应按钮的指令助手中,如下所示 如上所示:指令格式为EE B1 70 00 00 00 01 00 FF FC FF FF。该指令主要用于控制视频播放控件的播放,可以设置相应的视频播放循环次数,让视频按照相应的设置进行播放。(注:视频播放控件必须先设置视频路径,如控件已加载视频文件,只需要发送播放视频指令。反正,需要先发送设置播放视频的路径,在发送播放指令) 帧头组态指令功能码-视频播放画面ID控件ID播放次数帧尾EEB17000 0000 0100FF FC FF FF 按钮控件ID3-暂停/恢复 按钮控件ID3的属性配置和按钮控件ID2配置类似,设置按钮控件ID3的初始状态为“弹起”,填写在对应按钮的指令助手中,如下所示 如上所示:指令格式为EE B1 72 00 00 00 01 FF FC FF FF。该指令主要用于控制视频“暂停/恢复”。指令含义如下所示 帧头组态指令功能码-视频暂停/恢复画面ID控件ID帧尾EEB17200 0000 01FF FC FF FF 按钮控件ID4-停止 按钮控件ID4的属性配置和按钮控件ID2配置类似,设置按钮控件ID4的初始状态为“弹起”,填写在对应按钮的指令助手中,如下所示 如上所示:指令格式为EE B1 71 00 00 00 01 FF FC FF FF。该指令主要用于控制视频“停止”。指令含义如下所示 帧头组态指令功能码-视频停止画面ID控件ID帧尾EEB17100 0000 01FF FC FF FF 18.3 播放SD卡中的视频 播放外部SD卡的视频步骤和播放屏内部视频步骤基本相同,不同的是播放外部SD中视频需要先发送指令设置视频路径,操作过程如下: 工程画面添加视频播放控件(参照18.2章节)对内指令设置视频路径发送指令控制视频播放、暂停/恢复、停止(参照18.2章节) 对内指令设置视频路径 设置播放SD卡视频格式,如播放SD卡的0001.mp4文件,其中SD的盘符为1:/,路径即是‘1:/0001.mp4’。如下所示: B1 74 00 00 00 01 31 3A 2F 30 30 30 31 2E 6D 70 34 FF FC FF FF。该指令主要用于控制视频“停止”。指令含义如下所示 帧头组态指令功能码-设置视频播放路径画面ID控件ID路径(1:/0001.mp4)帧尾EEB17400 0000 0131 3A 2F 30 30 30 31 2E 6D 70 34FF FC FF FF 18.4 LUA API介绍 play_video(file,left,top,width,height) 播放视频:M系列,api部分不需要借助控件播放,属于“画布”播放视频 file:文件路径left:起始坐标xtop:起始坐标ywidth:视频显示的宽度height:视频显示的高度 播放屏内视频 如播放屏内根目录下的”test.mp4”视频,屏内盘符为“3:/“,如下所示 --用户通过触摸修改控件后,执行此回调函数 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件 function on_control_notify(screen,control,value) if screen == sc_main2 then if control == 7 and value == 0 then play_video('3:/test.mp4', 0, 0, 480, 272) end end end -- 系统回调函数,插入SD卡自动回调 function on_sd_inserted(dir) sd_dir = dir end 播放SD卡视频 如播放SD根目录下的”test.mp4”视频,SD盘符为“1:/“,但是建议创建全局变量,在SD卡触发回调中获取盘符,如下所示 local sd_dir = '' --用户通过触摸修改控件后,执行此回调函数 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件 function on_control_notify(screen,control,value) if screen == sc_main2 then if control == 2 and value == 0 then play_video(sd_dir..'/'..'test.mp4', 0, 0, 480, 272) end end end 更多关于LUA脚本的文件的遍历、视频控制、循环播放等,可参考《播放SD卡视频文件》(点击跳转) stop_video() 停止视频播放 on_video_notify(msg,v1, v2) 视频播放回调函数 msg:1-播放中,0-播放完毕v1:当前播放进度,当前已播时长,单位sv2:播放总进度, 当前视频总时长,单位s 通过进度条显示播放进度、以及文本控件显示播放时长代码示例如下所示,完整代码参考《播放SD卡视频文件》(点击跳转) function on_video_notify(msg,v1,v2) local token_time = ':' if msg == 1 then local v1_h = string.format("%02d", math.modf(v1/60/60)) local v1_m = string.format("%02d", math.modf((v1/60) % 60)) local v1_s = string.format("%02d", math.modf(v1%60)) local show_v1 = v1_h..token_time..v1_m..token_time..v1_s local v2_h = string.format("%02d", math.modf(v2/60/60)) local v2_m = string.format("%02d", math.modf((v2/60) % 60)) local v2_s = string.format("%02d", math.modf(v2%60)) local show_v2 = v2_h..token_time..v2_m..token_time..v2_s set_value(sc_video, 26, (v1/v2)*1000) set_text(sc_video, 27, show_v1) set_text(sc_video, 28, show_v2) elseif msg == 0 then paly_video_index = paly_video_index + 1 if paly_video_index > video_cnt then paly_video_index = 1 end local cur_play_page = math.modf(paly_video_index / 5) if paly_video_index % 5 > 0 then cur_play_page = cur_play_page + 1 end if cur_play_page == get_value(sc_video, 17) then my_set_video_playstate(paly_video_index) else my_set_video_playstate(0) end play_video(video_Tb[paly_video_index], video_x, video_y, video_w, video_h) my_setvisable_video_progress(1) end end --- ### 713. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 是什么基本图形控件? 为了兼容基本型老产品的基本图形指令绘制直线、圆、矩形和图片等,推出基本图形控件来兼容,满足需求。通过串口发送指令控制基本图形控件,每个基本图形控件都有1024字节的存储区域,串口屏会把接收到的指令中的绘图指令部分保存到存储区域中。 本章节介绍主要介绍指令格式 适用范围:F型、M系列、H系列 17.1 基本显示 不同的图形对应不同的绘图指令,一条指令可以绘制一个或多个图形。再次绘图时,之前的图像会被清除。指令格式如下表所示: 偏移量数据项长度说明00HEE1帧头01H-02HB1 102基本图形控件的指令标志03H-04HSCREEN_ID2画面的ID05H-06HCONTROL_ID2基本图形控件的ID*绘图指令1*视图形而不同…………*绘图指令N*视图形而不同最后4个字节FF FC FF FF4帧尾 17.2 追加显示 使用追加模式时,旧图形不会被清除。会在已有图形的基础上添加新图形,区别于基本显示,多了0xCC字节,指令格式如下表所示: 偏移量数据项长度说明00HEE1帧头01H-02HB1 102基本图形控件的指令标志03H-04HSCREEN_ID2画面的ID05H-06HCONTROL_ID2基本图形控件的ID07HCC1追加模式*绘图指令1*视图形而不同…………*绘图指令N*视图形而不同最后4个字节FF FC FF FF4帧尾 17.3 清除显示 清除绘图指令的格式如下表所示: 偏移量数据项长度说明0HEE1帧头01H-02HB1 102基本图形控件的指令标志03H-04HSCREEN_ID2画面的ID05H-06HCONTROL_ID2基本图形控件的ID最后4个字节FF FC FF FF4帧尾 17.4 绘制直线 如指令:EE B1 10 00 00 00 01 01 01 FF 00 32 00 32 00 C8 00 C8 FF FC FF FF,表示在第0个页面的ID为1的基本图形控件中使用0x01FF颜色,在屏幕坐标(50,50)、(200,200)间绘制一条直线。 偏移量数据项长度说明07H011直线指令08H-09HCOLOUR2颜色10H-11HX02第一个点的X坐标12H-13HY02第一个点的Y坐标14H-15HX12第二个点的X坐标16H-17HY12第二个点的Y坐标 17.5 多点连线 如指令:EE B1 10 00 00 00 01 02 01 FF 00 32 00 32 00 C8 00 C8 00 64 00 64 FF FC FF FF,表示在第0个页面的ID为1的基本图形控件中使用0x01FF颜色,在屏幕坐标(50,50)、(200,200)、(100,100)间绘制两段直线。 偏移量数据项长度说明07H021多点连线指令08H-09HCOLOUR2颜色10H-11HX02第一个点的X坐标12H-13HY02第一个点的Y坐标14H-15HX12第二个点的X坐标16H-17HY12第二个点的Y坐标…………*XN2第N个点的X坐标*YN2第N个点的Y坐标 17.6 空心矩形 如指令:EE B1 10 00 00 00 01 03 01 FF 00 32 00 32 00 C8 00 C8 FF FC FF FF,表示在第0个页面的ID为1的基本图形控件中使用0x01FF颜色,以屏幕坐标(50,50)为左上角、以屏幕坐标(200,200)为右下角绘制一个空心矩形。 偏移量数据项长度说明07H031空心矩形指令08H-09HCOLOUR2颜色10H-11HX02左上角的X坐标12H-13HY02左上角的Y坐标14H-15HX12右下角的X坐标16H-17HY12右下角的Y坐标 17.7 实心矩形 如指令:EE B1 10 00 00 00 01 04 01 FF 00 32 00 32 00 C8 00 C8 FF FC FF FF,表示在第0个页面的ID为1的基本图形控件中使用0x01FF颜色,以屏幕坐标(50,50)为左上角、以屏幕坐标(200,200)为右下角绘制一个实心矩形 偏移量数据项长度说明07H041实心矩形指令08H-09HCOLOUR2颜色10H-11HX02左上角的X坐标12H-13HY02左上角的Y坐标14H-15HX12右下角的X坐标16H-17HY12右下角的Y坐标 17.8 空心椭圆 如指令:EE B1 10 00 00 00 01 05 01 FF 00 32 00 64 00 96 00 FA FF FC FF FF,表示在第0个页面的ID为1的基本图形控件中使用0x01FF颜色,以屏幕坐标(100,50)为左上角、以屏幕坐标(250,150)为右下角的矩形中绘制一个内切空心椭圆(内切空心圆)。 偏移量数据项长度说明07H051空心椭圆(空心圆)指令08H-09HCOLOUR2颜色10H-11HY02左边界的Y坐标12H-13HX02上边界的X坐标14H-15HY12右边界的Y坐标16H-17HX12下边界的X坐标 17.9 实心椭圆 如指令:EE B1 10 00 00 00 01 06 01 FF 00 32 00 64 00 96 00 FA FF FC FF FF,表示在第0个页面的ID为1的基本图形控件中使用0x01FF颜色,以屏幕坐标(100,50)为左上角、以屏幕坐标(250,150)为右下角的矩形中绘制一个内切实心椭圆(内切实心圆)。 偏移量数据项长度说明07H061实心椭圆(实心圆)指令08H-09HCOLOUR2颜色10H-11HY02左边界的Y坐标12H-13HX02上边界的X坐标14H-15HY12右边界的Y坐标16H-17HX12下边界的X坐标 17.10 裁剪图片 如指令:EE B1 10 00 00 00 01 07 00 02 00 32 00 32 00 68 00 68 00 C8 00 C8 FF FC FF FF,表示在第0个页面的ID为1的基本图形控件中,以屏幕坐标(50,50)为起点,显示图片2中图片坐标(100,100)、(200,200)之间的内容 偏移量数据项长度说明07H071裁剪图片指令08H-09HIMAGE_ID2图片ID10H-11HX2图片显示位置的X坐标12H-13HY2图片显示位置的Y坐标14H-15HSX2从图片内的SX坐标开始显示16H-17HSY2从图片内的SY坐标开始显示18H-19HW2图片显示的宽20H-21HH2图片显示的高 --- ### 714. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是旋转控件? 如上图,仅适合M/物联型,旋转控件是自定义指针的格式,通过设定旋转控件一个坐标来旋转,然后配合表盘(背景图)显示 旋转控件,物联型、M系列、H系列、X系列例程下载链接:《串口屏表盘应用》(点击跳转) 16.1 旋转控件属性介绍 用户可以通过旋转控件插入任意大小的图片,设置相应的旋转中心,让该图片围绕相应的旋转中心进行旋转,从而实现表盘的功能。旋转控件的属性窗口如下所示 路径 素材图片的文件路径 调整 “缩放”或“裁剪” 缩放整张图片的显示裁剪图片裁剪显示,通过调整旋转控件大小进行裁剪 过滤 “勾选”或“取消”,勾选后【过滤色】才生效 过滤色 勾选过滤选项后设置:选择需要过滤的颜色 启用控件 选择“是”或“否”;选择“是” 初始角度 图片的初始旋转角度,如下所示: 调节精度 “1度”或者“0.1度”,如下所示: 用途 旋转控件的用途有“图片旋转”、“滑动旋钮”、“时钟-时”、“时钟-分”和“时钟-秒”,如下所示: 旋转点x偏移/旋转点y偏移 旋转中心的坐标。用户可用鼠标放置在相应的坐标上,然后点击鼠标右键,选中“设为旋转点””,如下所示 限制角度 滑动旋钮模式下生效,选择“是”或者“否” 最大角度 滑动旋钮模式下生效,开启限制角度后,“最大角度”的范围为0~360 通知方式 滑动旋钮模式下生效,选择“松开时”或者“滑动时” 16.2 旋转控件应用 【旋转控件】画面,通过插入的“表针”素材图片,设置相应的旋转中心,让该图片围绕相应的旋转中心进行旋转,从而实现表盘的应用 画面配置 在【仪表控件】画面的“背景图片”导入相应的美工图片如下所示 画面中添加1个旋转控件(控件ID:1),此时,弹框加载旋转控件的素材图片,如下所示 属性配置 在仪表控件的属性窗口中,设置旋转点X/Y偏移,选择旋转控件,单击鼠标右键,弹出选项框,选择“设置旋转点”,如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【旋转控件】,设置“设置旋转角度”指令参数。如例程中,控制画面(画面ID:1)中的旋转控件(控件ID:1),填写“数值”为“200”,点击“发送”;或者拖动指令助手中的滑动条,也可设置仪表控件值。运行效果如下所示 单片机程序 用户单片机控制旋转控件更新的程序,参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。keil程序中的函数定声明如下所示 /********************************************************************** ** Function name: void Set_RotateValue(uint16 screen_id, ** uint16 control_id, ** uint16 value) ** Descriptions : 设置旋转控件值 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** value: 需要设置的控件值 ** output parameters : 无 ** Returned value : 无 *********************************************************************/ { …… RotateValue (1,1,200);//设置画面1、控件1旋转控件值为200 …… } --- ### 715. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是圆形进度条控件? 随着用户对人机交互体验越来越高,串口屏应用的场合范围越来越广,目前常规的矩形进度条已无法适用于部分特殊应用场合。所以我司在软件上新推出的一个圆形进度条控件。可设置炫酷的图片作为背景,增强显示效果,通过自由选择起始角度和终止角度,将参数值形象显示出来。 本例程中介绍圆形进度条控件的应用,实现滑动圆形进度条控件改变温度值 适用范围:F型、基本型不支持例程下载链接:《圆形进度条控件应用》(点击跳转) 15.1 圆形进度条控件属性说明 圆形进度条控件的属性窗口如下所示 进度条宽度 设置进度条的粗细度。 填充方式 进度条的样式,可选择颜色或者图片,如下所示 【颜色】:纯色显示。【图片】:使用图片时可以自行设计进度条的样式 起始角度 进度条的起始位置(圆形进度条的值为角度,最大角度为359,360度为0度),如下所示 终止角度 圆形进度条的结束位置,如下所示 滑动调节 圆形进度条控件的调节方式有4类,可选择禁用、起始角度、终止角度或者两个角度,如下所示 【禁止】:不可通过触摸调节【终止角度】:触摸进度条终止位置拖动进度条【起始角度】:触摸进度条起始位置拖动进度条【两个角度】:触摸两端都可拖动进度条 触摸位置 圆形进度条控件的触摸位置,可选末端或者进度条,如下所示 【末端】:仅点击或滑动圆形进度条末端,才可以改变值 【进度条】:点击或滑动进度条即可改变值 限制角度 圆形进度条控件的限制角度,可选是或者否,如下所示 【是】:拖动范围只能在起始角度和终止角度之间; 【否】:没有限制角度,可随意滑动。 通知方式 圆形进度条控件的通知方式可选松开时或者滑动时,如下所示 松开时:拖动进度条时不下发,松开时才下发指令; 滑动时:拖动进度条的过程中下发指令。 滑块图标 可以添加滑块样式,建议图片格式为全透的格式png 15.2 圆形进度条控件 【圆形进度条控件】画面,介绍圆形进度条控件在串口屏中的应用。 画面配置 在【圆形进度条控件】画面的“背景图片”导入相应的美工图片画面中添加1个圆形进度条控件(控件ID:1)和1个文本控件(控件ID:2),如下所示 属性配置 在圆形进度条控件的属性窗口中,设置【进度条厚度】为“10”、【填充方式】为“颜色”、【颜色】为“黄色”、【起始角度】为“180”、【终止角度】为“360”、【滑动调节】为“终止角度”、【触摸位置】为“末端”、【限制角度】为“是”、【通知方式】为“滑动时”、【滑块图标】为图标的路径,属性配置如下所示、 LUA 脚本 打开LUA编辑器 上位机VisualTFT内部已集成了LUA开发编译环境,点击菜单栏【工具】,选择“LUA编辑器”,如下所示 API函数说明 大彩科技针对LUA脚本提供了丰富的API接口函数,具体函数可以查阅文档《物联型LUA脚本API》。本教程文档中所涉及到的部分的相关接口函数 函数set_value(screen,control,value) 注释:指定某个画面中的某个控件的值:参数:screen 目标画面IDcontrol 目标控件IDvalue 目标控件的值 函数on_control_notify(screen,control,value) 注释:点击按钮控件,修改文本控件、修改滑动条都会执行此回调函数参数:screen 目标画面IDcontrol 目标控件IDvalue 目标控件的值 编写脚本 使用LUA脚本,将圆形进度条的值与文本控件相关联。当滑动圆形进度条控件时,系统会调用回调函数on_control_notify,并将圆形进度条控件的值传入函数中,将值与文本控件的值关联的程序如下所示 --用户通过触摸修改控件后,执行此回调函数。 --点击按钮控件,修改文本控件、修改滑动条都会触发此事件。 function on_control_notify(screen,control,value) local Temperature = 0 if screen == 0 and control == 1 then Temperature = value & 0xFFFF Temperature = (Temperature - 180)/5 set_value (0,2,Temperature) end end 若LUA脚本设置圆形进度条的值,调用set_value()函数即可,假设起始角度为180,终止角度为270,则为: set_value (0,1,(180 << 16)|270) 外部MCU控制 若不想使用LUA脚本实现上面例程效果,可通过用户单片机控制圆形进度条控件,详细参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。 滑动圆形进度条控件末端,串口屏下发指令。MCU解析指令后会调用 NotifyAngleProgress函数,并把解析出来的圆形进度条值传进该函数中,在函数中设置文本控件的值,程序如下所示 注意:该控件值是4个字节,其中前面两个字节为“起始角度”,后面两个字节为“终止角度”,如设置圆形进度条的起始角度为180度、终止角度为270,指令如下所示:EE B1 10 00 00 00 01 00 B4 01 0E FF FC FF FF 帧头组态指令设置控件画面ID控件ID起始角度__H起始角度_L终止角度_H终止角度_L帧尾EEB11000 0000 0100B4010EFF FC FF FF /********************************************************************** ** Function name : NotifyAngleProgress ** Descriptions : 圆形进度条控件通知 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** value: 圆形进度条的控件值 ** output parameters: 无 ** Returned value : 无 *********************************************************************/ void NotifyAngleProgress(uint16 screen_id, uint16 control_id, uint32 value) { …… float TextVlaue = 0; if(screen_id == 0 && control_id == 1 ){ TextVlaue = value & 0xFFFF; TextVlaue = (TextVlaue – 180)/5; SetTextInt32(0, 2, TextVlaue, 1, 1); } …… } 如需要MCU控制圆形进度条控件,则代码如下所示; /********************************************************************** ** Function name: void Set_AngleProgress(uint16 screen_id, ** uint16 control_id, ** uint16 start, ** uint16 end) ** Descriptions : 设置圆形进度条 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** start : 起始角度 ** end : 终止角度 ** output parameters : 无 ** Returned value : 无 *********************************************************************/ { …… Set_AngleProgress(0,1,180,360);//设置画面0、控件1圆形进度条的起始角度为180、终止角度为360 …… } 运行预览 运行虚拟屏,拖动画面中圆形进度条控件(控件ID:1)的末端(滑块图标),屏幕会下发指令,同时,关联的文本控件(控件ID:2)的数值显示同步更新;VisualTFT软件和虚拟屏用“虚拟串口对”建立联机。打开【指令助手】,选择左侧导航栏【圆形进度条】,设置“设置进度条角度”区域的指令参数。如例程中,控制画面中的圆形进度条控件(控件ID:1)以及文本控件(控件ID:2),填写对应的参数,点击“发送”。则虚拟屏对应的控件显示对应的状态,运行效果如下所示 --- ### 716. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是历史曲线控件? 通过历史曲线控件来记录某些数据在一段时间内的变化路径和曲线。本例程中介绍历史曲线控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示 记录温度的变化实现在一段时间内,外部MCU通过传感器采集到的温度数据发送给屏幕,利用历史曲线控件在屏幕上显示出来 适用范围:全系列例程下载链接:《历史曲线控件应用》(点击跳转) 14.1 历史曲线属性 本章节重点介绍历史曲线控件的属性,属性窗口如下所示 采样点数 单个通道在整个控件宽度范围内,总采用点数,若采样点数超过该值,则通道只保存最近的采样点。 使能采样 设置初始化时的状态是否允许采样,也可以通过指令控制。 数据格式 采样点的数据格式,发送数据给历史曲线时,采样值的高字节在前,低字节在后,可设置格式如下所示 UINT8:无符号,单字节整数INT:有符号,单字节整数UINT16:无符号,双字节整数INT16:有符号,双字节整数UINT32:无符号,四字节整数INT32:有符号,四字节整数FLOAT:单精度浮点数 注:数据记录控件与历史曲线共用存储块在128K flash里面,开启数据存储时,应设置存储地址数据存储地址计算:数据控件存储大小 = 最大记录数*单条记录大小+24 (单位:字节)历史曲线存储大小 = 通道个数*采样点数+30 (单位: 字节) 采样周期 采样数据的时间间隔,单位为:秒。 数据存储 设置采样数据是否存储到屏幕的用户flash区。 最大值 采样值轴方向上顶端显示的最大值,默认为100。 最小值 采样值轴方向上底端显示的最小值,默认为0。 时间轴宽度 屏幕水平方向范围内的采样点数,默认为100,如下所示 曲线宽度 曲线线条的宽度,可选1、2、3、4级。 通道数 控件上显示的曲线通道数,一个控件最多可选8个通道,且每个通道的颜色可单独设置,如下所示 字体 显示数值和时间的字体大小。 显示边框 可设置是否显示边框,显示边框时可设置边框的宽度(可设置“1”和“2”两个等级)和颜色。 显示背景 可设置控件背景颜色、水平延伸、垂直延伸,可选择“是”或“否”。设置显示背景→是,水平延伸→35,垂直延伸→35,如下所示 显示滚动条 可选择“是”或“否”,当开启滚动条,设置滚动条属性,运行虚拟屏,滚动条显示在上方,可以拖动查看所有时间点的曲线,如下所示 网格颜色 设置网格的颜色,支持单色设置 文字颜色 设置文字的颜色显示,包括Y轴的值、X轴的时间、以及右上角的日期 显示时间刻度 可选“否”、“下边显示”或“上边显示”,(开启显示时,可设置刻度数、是否显示网格、是否显示日期、是否显示时间) 显示垂直刻度 可设置是否显示垂直方向上的刻度值,显示垂直刻度时,可以设置刻度数和是否显示网格线 14.2 历史曲线功能 【历史曲线控件】画面,介绍用户如何配置历史曲线控件的基本属性和使用。 画面配置 在【历史曲线控件】画面的“背景图片”导入相应的美工图片。在该画面中添加历史曲线控件,如下所示 属性配置 历史曲线控件:设置【字体】为【ASC_CHS_16】、显示时间轴的【刻度数】为“4”,显示垂直刻度的【刻度数】为“5”,其他为默认配置,配置如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机,打开指令助手,左侧导航栏选择【历史曲线】,设置“设置采样值”区域的指令参数。如例程中,设置画面ID0、控件1、数据类型为“UINT8”,通道数为“1”的采样值为“77”。显示效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。 MCU设置采样值 利用MCU来实现历史曲线的采样通道数,数据类型和采样数值的设定。例如用户需实现例程中【历史曲线控件】的采样数据类型为“UINT8”、通道数为“1”,设置采样值为“77”,直接调用历史曲线控件设置函数HistoryGraph_SetValueInt8 ( )即可,代码如下所示。 /************************************************************************ ** Function name: void HistoryGraph_SetValueInt8 (uint16 screen_id, ** uint16 control_id, ** uint8 *value, ** uint8 channel); ** Descriptions : 设置历史曲线采样值 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** *value: 设置的采样值 ** channel 通道数 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { ...... HistoryGraph_SetValueInt8(0,1,77,1);//画面0,控件1,通道1的采样值为77 ...... } MCU控制【历史曲线控件】的禁止和使能采样。 例如用户需实现当前画面的【历史曲线控件】的禁止采样和使能采样状态,直接调用历史曲线控件禁使能函数HistoryGraph_EnableSampling ( )即可,代码如下所示。 /************************************************************************ ** Function name: void HistoryGraph_EnableSampling (uint16 screen_id, ** uint16 control_id, ** uint8 enable); ** Descriptions : 设置历史曲线控件的采样禁使能 ** input parameters: screen_id : 画面ID ** control_id: 控件ID ** value : 禁止或使能(0代表禁止,1代表使能) ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { ...... HistoryGraph_EnableSampling (0,1,1);//画面0,控件1的历史曲线控件使能采样 ...... } --- ### 717. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是数据记录控件? 数据记录控件用于记录数据,共有4中类型,分别为当前告警、历史告警、历史告警与解除时间、通用表格。 “当前告警”、“历史告警”和“历史告警与解除时间”的设置类似,本例程中结合工程中的画面,只介绍数据记录控件“历史告警与解除”和“通用表格”的应用: 通用表格:介绍名字和编号的记录历史告警和解除时间:记录产生告警的时间以及告警解除的时间 13.1 数据记录控件属性说明 数据记录控件属性如下所示 字体 设置数据记录显示的字体大小和样式 用户使用字体样式时候,需要考虑表格一行的高度值,如果字体设置过大,超过表格一行的高度,文字是“不显示” 文字颜色 设置字体显示的颜色 显示网格 设置网格显示,可选“是”或“否”。 【是】:设置为“是”,如下所示 【否】:设置为“否”,如下所示 网格颜色 设置网格显示的颜色 显示背景 设置背景的显示,可选“是”或“否” 【是】:默认控件显示的背景为白色,如下所示 【否】:设置不显示背景时,直接显示该画面的背景内容,如下所示 背景颜色 设置表格的背景颜色,可选“是”或者“否” 允许选择 设置允许选择数据所在行。运行后,选择数据记录控件的子项,会给该子项加上一个背景颜色,如下所示 显示滚动条 设置是否显示滚动条显示状态。可选为“不显示”、“按需显示”或“固定显示”,如下所示 不显示 当“显示记录数”为“6”,若“显示记录数”大于“6”时,仍显示前6条数据,如下所示 按需显示 当“显示记录数”为“6”,若显示数据条数小于“6”时,不显示固定条框;若显示数据条数大于“6”时,显示滚动条,并可以拖动滚动条查看数据,如下所示 固定显示 当“显示记录数”为“6”,若显示数据条数小于“6”时,显示滚动条框;若显示数据条数大于“6”时,在滚动条框显示滚动条,并可以拖动滚动条查看数据,如下所示 手势滑动 设置滑动数据记录控件查看数据,可选“是”或“否”,当数据条数大于“显示记录数”时,点击并拖动数据记录控件可查看数据 显示序号 设置每一条记录添加的序号,可选“是”或“否”。当且仅当记录类型为“通用表格”时,该项参数设置才生效序号从“1”开始。若需要显示子项内容为两列,则增加序号显示时,需设置“子项数目”为3列,如下所示 基本型平台 如需要在屏幕上显示“1 广州大彩 0001”,所发的数据内容为“;广州大彩;0001”,“序号”子项内容固定为“;” F型和W联型平台 设置增加序号显示时,如需要在屏幕上显示“1 广州大彩 0168”,所发的数据内容为“$NUM;广州大彩;0168”,“序号”子项内容固定为“$NUM;” 注意:每一个子项(每一列),用英文符号“;”隔开 图标文件 设置每一条记录添加的图标,可添加图标路径。当且仅当记录类型为“通用表格”时,该项参数设置才生效。如下所示 设置增加图标显示时,如需要在屏幕上第一项(列)显示图标第一帧,第二项显示“001”,第一项(列)显示图标第二帧,所发的数据内容为“$ICON0;001;$ICON1”,“序号”子项内容固定为“$ICONx;”x表示图标文件的第几帧 注意:设置的图标大小要不超过数据记录控件行的高度和宽度,否则会显示异常或显示不出来 记录类型 设置不同的记录类型,可选为“当前告警”、“历史告警”、“历史告警与解除时间”或“通用表格”。如下所示 当前告警 子项数固定为两项(即为两列),第一项为告警事件,第二项为告警时间。当产生报警,数据记录控件显示当前的告警和触发时间;当报警解除时,数据记录控件不显示告警信息。如下所示 历史告警 子项数固定为两项(即为两列),第一项为告警事件,第二项为告警时间。当产生报警时,数据记录控件会显示的告警和触发时间;当报警解除时,告警数据仍显示在表格里,可通过滚动条查阅过去的告警信息。如下所示 历史告警与解除时间 子项数固定为三项(即为三列),第一项为告警事件,第二项为告警时间,第三项为解除时间。当产生报警时,数据记录控件会显示的告警和触发时间;当告警事件解除时,显示解除的时间,告警数据仍显示在表格里,可通过滚动条查阅过去的告警信息。如下所示 通用表格 子项数默认为两项(即为两列),最大可设置为“10”项(列),可用作记录数据功能,记录的内容可以是中文、字母、数字,如下所示 显示顺序 设置显示的顺序,可选为“时间顺序”或“时间逆序” 对齐方式 设置数据显示的对齐方式,可选为“左对齐”、“居中对齐”或“右对齐” 子项数目 设置每一条记录包含的子项数,该项参数当且仅当记录类型为“通用表格”设置有效 子项宽度 设置每个子项的宽度比例,如设置为“30;40;50” 显示记录数 设置控件显示的记录条数,即是显示的行数。如设置为“10”,如下所示 最大记录数 设置最大的记录条数,存满之后,覆盖旧的记录,默认1024条 单条记录大小 设置单条记录大小,最大为256个字节。该项参数当且仅单记录类型为“通用表格”设置才有效。 是否存储 设置记录的数据是否存储到FLASH(断电保存),可选为“是”或“否”,该存储地址和用户存储128K空间、协议与变量里面的存储、历史曲线等共用一块存储区域 存储地址:每放置一个数据记录控件,都必须重新设置一次存储地址,避免存储地址重叠 预留存储空间 给该“数据记录控件”预留的存储空间大小 该项参数VisualTFT自动计算,预留存储空间=单条记录大小*最大记录数 + 24。如下所示,单条记录大小“100”字节,最大记录数为1024条,则需要给该控件预留102424个字节存储 当前告警:固定为6个字节,不可更改,不支持掉电保存历史告警:固定为6个字节,不可更改,支持掉电保存历史告警与解除时间:固定为10个字节,不可更改,支持掉电保存。通用表格:默认为100个字节,最大为256个字节,根据用户MCU发送的数据字节数而定。支持掉电保存 注:数据记录控件与历史曲线共用存储块,开启数据存储时,应设置存储地址,否则会出现,数据存储异常、显示异常。数据存储地址计算:数据控件存储大小= 最大记录数*单挑记录大小+24(单位:字节)历史曲线存储大小= 采样点数+30(单位:字节) 告警解析 当记录类型为“当前告警”、“历史告警”、“历史告警与解除时间”时,可定义告警解析。对告警进行文字显示,如定义数值0,为“高温”,颜色为红色,如下所示 当对该控件分别发送数值0、1、8时,如下所示,被定义的0、1此时显示的告警解析的内容,未被定义的8显示的还是数值 13.2 通用表格 画面配置 在【通用表格】画面的“背景图片”导入相应的美工图片,画面中添加1个数据记录控件(控件ID:1)和3个按钮控件(控件ID:2-4),如下所示 属性配置 数据记录控件属性 在数据记录控件的属性窗口中,设置【显示记录数】为“6”、【单条记录数】为“40”,属性配置如下所示 添加记录按钮 用于添加一条告警记录。在按钮控件(控件ID:2)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,属性配置如下所示 填写“添加”按钮按下的对内指令: 点击【对内指令】→“按下时”弹出指令填写框,选择“指令助手”在指令助手界面,左侧导航栏选择【数据记录控件】设置“数据记录控件”区域的指令参数。如例程中,添加一条“广州大彩;0001;”的记录复制指令,填写指令在按钮对内指令,如下所示 导出数据按钮 同理,“导出数据”按钮,实现导出csv表格到U盘或SD卡中。在【对内指令】→“按下时”,在《跳动符号串口屏指令集》文档,找到“2.79 数据记录控件-SD 卡导出指令(CSV 格式)”,将指令复制出来,指令格式如下所示,如此例程所示,指令为:EE B1 5C 00 00 00 01 FF FC FF FF 帧头组态指令功能码-导出CSV格式画面ID控件ID帧尾EEB15C00 0000 01FF FC FF FF 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。 屏上控制 按下“添加”按钮,数据记录控件第一行第一列显示“广州大彩”,第二列显示“0001”再次按钮“添加”按钮,数据记录控件第二行显示同一条记录;当按下“导出数据”时,在电脑D盘根目录下显示CSV文件,如下所示 指令添加记录数据 左侧导航栏选择【数据记录控件】,设置“通用表格”区域的指令参数。如例程中,设置【通用表格】画面中的数据记录控件(控件ID:1),添加记录数据为 “广州大彩;0002;”、“广州大彩;0003”,点击“发送”,运行效果如下所示 指令修改一行记录 左侧导航栏选择【数据记录控件】,设置“通用表格”区域的指令参数。如例程中,修改第1行数据的编号为“0011”,点击“发送”;运行效果如下所示 通用表格还包括“清除记录数据”、“设置位置偏移”、“获取记录数目”、“读取一行记录”、“删除一行记录”、“插入一行记录”、“选中一行记录”和“添加多条记录”等功能,用户可通过指令联机调试体验,以及查阅指令集文档即可 外部MCU控制 用户单片机控制数据记录控件更新的程序,参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。 添加一条数据记录 添加一条记录的代码如下所示 /********************************************************************** ** Function name: void Record_Add(uint16 screen_id, ** uint16 control_id, ** uint8 *record); ** Descriptions : 添加一条数据 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** record: 一条记录(字符串),子项通过分号隔开, ** 例如:第一项;第二项;第三项; ** output parameters: 无 ** Returned value : 无 *********************************************************************/ { …… Record_Add (0,1,”广州大彩;0001”);//设置画面0、控件1,第一行显示广州大彩 0001 …… } 修改一行数据记录 修改一行记录的代码如下所示 /********************************************************************** ** Function name: void Record_Modify(uint16 screen_id, ** uint16 control_id, ** uint8 *record, ** uint16 line_id); ** Descriptions : 修改一条数据记录 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** record: 一条记录(字符串),子项通过分号隔开, ** 例如:第一项;第二项;第三项; ** line_id 修改的行号 ** output parameters: 无 ** Returned value: 无 *********************************************************************/ { …… Record_Modify (0,1,”广州大彩;0088”,1);//修改画面0、控件1, //第2行数据为“广州大彩;0088” …… } 导出数据记录 导出*.csv格式到U盘或SD的代码如下所示 /********************************************************************** ** Function name: void Record_Output(uint16 screen_id, ** uint16 control_id); ** Descriptions : 导出数据记录控件到SD卡,文件格式为CVS ** input parameters: screen_id : 画面ID ** control_id: 控件ID ** output parameters: 无 ** Returned value : 无 *********************************************************************/ { …… Record_Output (0,1);// 导出画面0、控件1的数据记录控件到SD卡 …… } 13.3 历史告警和解除时间 画面配置 在【历史告警与解除时间】画面的“背景图片”导入相应的美工图片,画面中添加1个数据记录控件(控件ID:1)和4个按钮控件(控件ID:2-5),如下所示 ​ 属性配置 数据记录控 在数据记录控件的属性窗口中,设置【记录类型】为“历史告警与解除时间”、设置【显示记录数】为“5”,属性配置如下所示 点击告警解析,对告警进行文字显示,如:定义数值0,为“高温”,颜色为红色,如下所示。依次定义数值1-4的解析和颜色 【触发告警】按钮控件 在按钮控件(控件ID:2)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,填写【对内指令】→“按下时”为“触发告警指令”,如下所示 【解除告警】按钮控件 在按钮控件(控件ID:3)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,填写【对内指令】→“按下时”为“解除告警指令”,如下所示 【导出记录】按钮控件 参考【13.2 通用表格即可】 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机 屏上控制 按下“触发告警”按钮,数据记录控件第一行显示“高温和时间”记录;按下“解除告警”按钮,数据记录控件第一行显示“解除时间”;当按下“导出数据”时,U盘/SD根目录下显示文件是“以导出的RTC时间命名的CSV文件”,如下所示 指令触发/解除告警 左侧导航栏选择【数据记录控件】,设置“告警”区域的指令参数。如例程中,设置【历史告警与解除时间】中的数据记录控件(控件ID:1),触发数值为1的触发告警,点击“发送”;接着选择“解除告警”,如下所示 单片机程序 用户单片机控制数据记录控件的程序,参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。触发告警,程序如下所示 /********************************************************************** ** Function name: Record_SetEvent(uint16 screen_id, ** uint16 control_id, ** uint16 value, ** uint8 *time); ** Descriptions : 触发警告 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** value: 告警值 ** time: 告警产生的时间,为0时使用屏幕内部时间 ** output parameters: 无 ** Returned value : 无 *********************************************************************/ { …… Record_SetEvent(1,1,0,0);//设置画面1控件1的告警值为0,告警时间为屏的内部时间 …… } 解除告警,程序如下所示 /********************************************************************** ** Function name: Record_ResetEvent(uint16 screen_id, ** uint16 control_id, ** uint16 value, ** uint8 *time); ** Descriptions : 解除警告 ** input parameters: screen_id : 画面ID ** control_id: 控件ID ** value: 告警值 ** time : 告警解除的时间,为0时使用屏幕内部时间 ** output parameters: 无 ** Returned value : 无 *********************************************************************/ { …… Record_ResetEvent (1,1,0,0);// 设置画面1控件1的告警值为0 // 解除时间为屏的内部时间 …… } --- ### 718. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是二维码控件? 二维码是将数据用某种特定的几何图形,在平面上以一定规律分布黑白相间的图形,记录数据符号信息。给用户扫码支付灯等应用。二维码可以由用户主机输入,也可以在编辑工程时通过属性设置,然后显示在串口屏上。 本例程中介绍二维码控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示: 更新二维码按钮更新二维码 适用范围:全系列例程下载链接:《二维码控件应用》(点击跳转) 12.1 二维码属性介绍 二维码控件属性如下所示 文本 二维码初始默认的显示内容 放大系数 设置单个点的显示大小。设置自动,二维码会自动铺满控件的整个区域。 错误纠正 即二维码的容错能力,具有纠错功能,这使得二维码因屏幕污损等引起局部遮掩时,照样可以正确得到识读。 编码模式 二维码的编码模式,支持如下编码 Numeric:数字编码,从0到9。如果需要编码的数字的个数不是3的倍数,那么,最后剩下的1或2位数会被转成4或7bits,则其它的每3位数字会被编成 10,12,14bits,编成多长还要看二维码的尺寸Alphabet numeric:字符编码。包括 0-9,大写的A到Z(没有小写),以及符号$ % * + – . / : 包括空格8-bit data:八位字节。可以是0-255的ISO-8859-1字符。有些二维码的扫描器可以自动检测是否是UTF-8的编码Kanji(shift-jis):日文编码,也是双字节编码。同样,也可以用于中文编码ECI:用于特殊的字符集。并不是所有的扫描器都支持这种编码FNC1-first position/FNC1-second position:主要是给一些特殊的工业或行业用的。比如GS1条形码之类的 前景/背景颜色 二维码的前景/背景颜色,此属性应尽量不做修改。即设置前景色为黑色,背景色为白色,则效果如下所示 为增加二维码的识别成功率,尽量不修改此属性,即使用控件的默认颜色 12. 2 更新二维码 【更新二维码】画面,介绍用户设备和串口屏通讯时,用户设备向串口屏发送指令,更新二维码控件的内容 画面配置 在【更新二维码】画面的“背景图片”导入相应的美工图片。在该画面中添加二维码控件,如下所示 属性配置 设置控件ID为1的二维码控件的属性,设置【文本】为“广州大彩”,配置如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。 打开【指令助手】,选择左侧导航栏【二维码控件】,在“更新二维码控件”中,设置画面ID为0,设置控件ID为1,填写文本【文本】为“跳动符号串口屏”,点击“发送”。则在虚拟屏中,显示为“跳动符号串口屏”,请使用二维码扫码器查看内容,运行效果如下所示 MCU控制显示二维码 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。 例如用户需实现二维码显示“大彩串口屏”,则直接调用二维码设置函数SetTextValue( )即可,代码如下所示 /********************************************************************* ** Function name: void SetTextValue(uint16 screen_id, ** uint16 control_id, ** uchar *str); ** Descriptions : 设置二维码值 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** str: 二维码的值 ** output parameters: 无 ** Returned value : 无 *********************************************************************/ { …… SetTextValue(0,1,”跳动符号串口屏”); //设置画面0二维码控件1的值为“跳动符号串口屏” …… } 12.3 按钮更新二维码 【按钮更新二维码】画面,介绍用户按下按钮后,更新二维码控件的内容 画面配置 在【按钮更新二维码】画面的“背景图片”导入相应的美工图片。画面中添加1个二维码控件(控件ID:1),1个按钮控件(控件ID:2),如下所示 属性配置 二维码控件 设置控件ID为1的二维码控件的属性,设置【二维码】为“跳动符号”,配置如下所示 按钮控件 设置控件ID为2的按钮控件的属性,设置【触摸虚框】为“否”,【按下时的按钮】选中按下状态的图片,勾选【裁剪】,【触摸用途】为“开关描述”,【操作风格】为“瞬变”。配置如下所示 在指令助手界面,左侧导航栏选择【二维码控件】,设置“更新二维码控件”区域的指令参数,填写对应的参数。如例程中,控制画面(画面ID:1)中的二维码控件(控件ID:1),显示“www.gz-dc.com”,如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。点击按钮“官网链接”,二维码更新为“www.gz-dc.com”,运行效果如下所示 MCU控制显示字符串 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。 例如用户需实现二维码显示“跳动符号串口屏”,则直接调用二维码设置函数SetTextValue( )即可,代码如下所示 /********************************************************************* ** Function name: void SetTextValue(uint16 screen_id, ** uint16 control_id, ** uchar *str); ** Descriptions : 设置二维码 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** str: 二维码的值 ** output parameters: 无 ** Returned value : 无 *********************************************************************/ { …… SetTextValue(1,1,”跳动符号串口屏”); //设置画面1文本控件1的值为“跳动符号串口屏” …… } --- ### 719. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是滑动选择控件? 滑动选择控件主要方便用户设置参数和显示状态。本例程中介绍滑动选择控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示: 滑动选择:通过上下滑动屏幕来实现用户对参数设置的选定状态显示:设置显示某种文字状态 适用范围:全系列例程下载链接:《滑动选择控件应用》(点击跳转) 11.1 滑动选择控件属性介绍 滑块有两种模式,分别为滑动选择以及状态显示 滑动选择 用途 上下滑动更改选项来设定用户所需要选择的参数 字体 更改显示文字的字体大小 文字颜色 指定被选中项的字体颜色,如下所示 两端颜色 用于设置两端待选择项的字体颜色,如下所示 两端待选项的字体与中间被选项字体大小的百分比例,缩放系数范围为[0-100],0表示不缩放,设置效果显示如下所示 候选数 用于设置在控件可视范围内显示待选择项的数量,如下所示 初始选项 设置初始化时默认选中的项,第一项标注以0开始,0代表所有项数里起始的第一项,如下所示 语言数 设置显示文字语言类别的数量,最多可选择10项语言(M系列15种)。选择好语言数后,在后面数据选项各种语言中分别写入对应的语言,每一项之间必须用半角(;)隔开,最后一项也需要,如下所示 状态显示 用途 用于显示某种文字状态。 字体 设置显示文字的字体大小(此处只代表设置字体的大小)。 文字颜色 用于设置状态显示文字的颜色,如下所示 初始选项 初始化时默认选中的文字状态,第一项标注以0开始,0代表所有项数里起始的第一项,如下所示 水平对齐 文字在控件范围内水平方向上的对齐方式设置 垂直对齐 文字在控件范围内垂直方向上的对齐方式设置 语言数 设置显示文字语言类别的数量,最多可选择10项语言(M系列15种)。选择好语言数后,在后面数据选项各种语言中分别写入对应的语言,每一项之间必须用半角(;)隔开,最后一项也需要。 11.2 滑动选择功能 【滑动选择功能】画面,介绍用户如何配置一个通过上下滑动屏幕或者通过给屏幕发送指令来选择设定参数的滑动选择控件 画面配置 在【滑动选择功能】画面的“背景图片”导入相应的美工图片。在该画面中添加滑动选择控件,如下所示 属性配置 以控件ID为1的滑动选择控件为例,设置【用途】为“滑动选择”、【字体】为“ASC_CHS_22”、【文字颜色】为“128;128;128”、【两端颜色】为“128;128;128”,【两端缩放】为“50”,【候选项数】为“5”,【初始选项】为“0”,【语言数】为“1”,【数据选项】设置为“10;20;30;40;50;60;70;80;90;100;”配置如下所示 运行预览 运行虚拟屏,用户可以利用鼠标在虚拟屏上上下滑动来选定设置参数(若用户手上有实体屏,只需将配置好的工程下载进去,即可体验),同时也可以通过虚拟串口给虚拟屏发送指令来设置选择项(VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【滑动选择控件】,设置“设置滑动选择控件值”的指令参数。),例如设置画面0,控件1的滑动选择控件设定值为第三项,运行效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需实现设置上述设置好的滑动选择控件数据选项中的第三项的“30”数值,则直接调用滑动选择控件值设置函数SetSelectorValue ( )即可,代码如下所示 /************************************************************************ ** Function name: void SetSelectorValue (uint16 screen_id, ** uint16 control_id, ** uint8 item); ** Descriptions : 设置滑动选择控件值 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** item: 设置的选项 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { …… SetSelectorValue (0, 1, 2) //画面ID0,控件ID1,设置的选项第三项 …… } 11.3 状态显示功能 【状态显示功能】画面,介绍如何去配置一个用来显示某种文字状态的滑动选择控件 画面配置 在【状态显示功能】画面的“背景图片”导入相应的美工图片。在画面中添加滑动选择控件,如下所示 属性配置 设置【用途】为“状态显示”,【字体】为“ASC_CHS_30”,【文本颜色】为“255;255;255”,【初始选项】为“0”,【水平对齐】为“居中对齐”,【垂直对齐】为“居中对齐”,【语言数】为“1”,【数据选项】设置为“设备正常/Normal Equipment;设备暂停/Equipment Suspended;设备维修/equipment Maintenance;设备恢复/Equipment Recovery;”,配置如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【滑动选择控件】,设置“设置滑动选择控件值”的指令参数。例如设置画面1,控件1的滑动选择控件的设定值为第三项,运行效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。 例如用户需实现设置上述设置好的滑动选择控件数据选项中的第三项的“设备维修/equipment Maintenance”文字,则直接调用滑动选择控件值设置函数SetSelectorValue ( )即可,代码如下所示 /************************************************************************ ** Function name: void SetSelectorValue (uint16 screen_id, ** uint16 control_id, ** uint8 item); ** Descriptions : 设置滑动选择控件值 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** item: 设置的选项 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { …… SetSelectorValue (0, 1, 2) //画面ID0,控件ID1,设置的选项第三项 …… } --- ### 720. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是菜单控件? 下拉选择框可以通过菜单控件来显示。用户可以设置按下按钮后弹出菜单,也可以通过发送指令弹出菜单,点击菜单后数据可以输出到文本控件或者选择控件,然后显示在串口屏上 本例程中介绍菜单控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示 下拉菜单应用:菜单数据输出到文本控件中。外部主机修改选项:菜单数据输出到选择控件中,外部主机修改选择控件的选项 适用范围:全系列例程下载链接:《菜单控件应用》(点击跳转) 10.1 菜单控件属性 本章节重点介绍菜单控件的属性,属性窗口如下所示 菜单外观 单色、图片、图片与文字,如下所示 单色 可以直接使用软件生成一个简单的菜单外观, 字体:字体样式和大小背景色:菜单底色前景色:菜单的字体和分割线颜色 注:文字设置在后文的“菜单设置”中描述 图片 使用图片作为菜单控件的背景,可以设置弹起时的图片和按下时的图片,效果如下所示 图片与文字 同时显示单色功能和图片功能的内容。可以使用自定义底图,然后文字使用属性设置的字体 菜单风格 设置菜单的显示风格 弹出菜单:即下拉菜单,可通过按钮触发弹出固定菜单:菜单固定显示状态 菜单方向 设置菜单选项呈现样式 垂直,如下所示水平,如下所示 菜单项数 菜单选项的项数 语言数 菜单选项的数量。此选项与“多语言”功能配合。系统语言改变时,菜单选项将改变 10.2 下拉菜单应用-文本控件输入 按钮控件的触摸用途可以设置弹出菜单 画面配置 在【下拉菜单应用】画面的“背景图片”导入相应的美工图片。在该画面添加文本控件、菜单控件以及按钮控件,如下所示 属性配置 菜单控件属性 设置【菜单控件】外观为“图片”,【菜单风格】为“弹出键盘”,通知方式为“按下和松开”,菜单方向为“水平”,菜单项数为”5“,菜单选项和图片上的文字对应,设置为”57.7V;100V;220V;380V;无效;“,如下所示 文本控件属性 文本默认为“57.7V”,输入为“用户主机输入”,属性配置如下所示 按钮控件属性 设置按钮的触摸用途为“弹出键盘”,菜单控件ID:菜单控件的ID,输入控件ID:文本控件的ID,属性如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。点击按钮弹出菜单,选择菜单选项显示到文本框,点击菜单选项,将子项内容更新到文本框并收起菜单控件,运行效果如下所示 同时,在指令助手中,设置【画面ID】为“0”、【控件ID】为“3”、【文本控件ID】为“1”,勾选【显示下拉菜单】,点击“发送”。则在虚拟屏中,该菜单控件自动显示,如下所示 MCU控制显示/隐藏下拉菜单 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需实现显示下拉菜单,则直接调用菜单显示函数ShowPopupMenu ( )即可,代码如下所示 /************************************************************************ ** Function name : void ShowPopupMenu(uint16 screen_id, ** uint16 control_id, ** uint8 show, ** uint16 focus_control_id); ** Descriptions : 设置下拉菜单显示/隐藏 ** input parameters : ** screen_id : 画面ID ** control_id:控件ID ** show: 0隐藏,1显示,为0时focus_control_id无效 ** focus_control_id:关联的文本控件(菜单控件的内容输出到文本控件) ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { …… ShowPopupMenu(0,3,1,1); //显示画面0、控件3的菜单控件,并 //把输出结果显示在控件1的文本控件中 …… } 10.3 下拉菜单应用-滑动选择控件输入 【外部主机修改选项】画面,介绍使用滑动选择控件代替文本控件与菜单控件结合使用,此方法与文本控件的区别是,在使用外部单片机发送指令控件串口屏的情况下,文本控件的指令相对比较长,显示中文时还必须转换得到中文字符的编码。而因为选择控件的选项在工程编辑时就已写入,使用单片机控制时,发送相应的选项索引就可以显示对应的选项,指令相对简单,选项索引从0开始。 画面配置 和【下拉菜单应用-文本控件输入】章节类似,不在阐述 属性配置 菜单控件属性 和【下拉菜单应用-文本控件输入】章节类似,不在阐述 滑动选择控件属性配置 设置【用途】为“状态显示”、【数据选项[语言1]】设置为”57.7V;100V;220V;380V;无效;“ 按钮控件属性 和【下拉菜单应用-文本控件输入】章节类似,不在阐述 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【滑动选择控件】,设置“设置滑动选择控件值”的指令参数。在指令助手中,设置【画面ID】为“1”、【控件ID】为“1”、【选项索引】为“2”,点击“发送”。则在虚拟屏中,该选择控件显示“220V”,运行效果如下所示 MCU控制选择控件选项 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需实现选择控件显示预设的选项,则直接调用选择控件设置选项的函数SetSelectorValue( )即可,代码如下所示 /******************************************************************** ** Function name: void SetSelectorValue(uint16 screen_id, ** uint16 control_id, ** uint8 item); ** Descriptions : 设置选择控件的选项 ** input parameters: screen_id : 画面ID ** control_id: 控件ID ** item : 当前选项 ** output parameters: 无 ** Returned value : 无 ********************************************************************/ { …… SetSelectorValue(1,1,2); //把画面1、控件1的滑动选择控件显示第2项 …… } --- ### 721. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是曲线控件? 曲线可以直观地看出数据变化情况,上升、下降等趋势,MCU采集的数据按顺序发送到屏幕,然后利用曲线控件将采样的数据点连成曲线显示出来,X轴是数据的采样点数,Y轴是数据采样值 适用范围:全系列例程下载链接:《曲线控件应用》(点击跳转) 9.1 曲线控件属性 本章节重点介绍曲线控件的属性,属性窗口如下所示 采样点数 曲线在整个控件宽度范围,从左到右显示一轮的点数,如下所示 例如,把曲线宽度设置为480像素,采样点数设置为480个,1个像素点对应1个曲线采样数据。那么整个宽度的曲线显示完毕正好需要480个数据,当481个数据到来的时候,更新FIFO数据,曲线向右平移显示。如果曲线宽度为200像素,采样点数为201,整个控件宽度只能显示200个采样点,那么第201个曲线的数据点到来的时候屏幕上显示的曲线就会开始向右平移显示 采样深度 一个采样数据的占的字节。“1Byte”、“2Byte”可选,默认为1Byte 显示方向 曲线的显示方向,分为“水平”、“垂直” 水平显示,效果如下所示 垂直显示,效果如下所示 线条粗细 设置曲线的线条粗细,有1、2、3、4四种级别可选 缩放显示 开启缩放,设置好缩放的起始值、终止值后,根据这两个设置的值,曲线在这个值的范围中进行上下拉伸 假定我们设定起始值为0,终止值为255,那么曲线会在曲线控件的控件范围内等比例缩放到0至255之间,如下所示 假设曲线的高度为200,未开启缩放的正弦曲线,当Y轴方向的数值超过200后的数据则不会显示,如下所示 通道值 最多可以预设8个通道。每个通道可以设置不同的颜色,颜色的设置有助于区分不同的通道,可以以HSB模式和RGB模式设置颜色,如下所示 9.2 曲线控件应用 【曲线控件】画面,介绍用户设备和串口屏通讯时,用户设备向串口屏发送指令,显示实时曲线 画面配置 在【曲线控件】画面的“背景图片”导入相应的美工图片。在该画面中添加曲线控件和按钮控件,如下所示 属性配置 曲线属性配置 设置【采样点数】为“466”、【采样深度】为“1 Byte”、【显示方向】为“水平”、【线条粗细】“1”、【缩放显示】“是”、【曲线底部值】“0”、【曲线顶部值】“255”、【通道数】“1”,配置如下所示 按钮属性配置 正弦波按钮配置方法:打开【指令助手】,选择指令助手中左侧导航栏中的【曲线控件】,然后点击窗口中点击生成正弦波指令,把指令添加到按钮控件的对内指令中,操作如下所示。锯齿波按钮配置同理 运行预览 运行虚拟屏,点击画面中的正弦波按钮,画面如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需实现“曲线显示”,则直接调用添加曲线数据的函数GraphChannelDataAdd( )即可,代码如下所示 /************************************************************************ ** Function name: void GraphChannelDataAdd(uint16 screen_id, ** uint16 control_id, ** uchar channel ** uint8 *pData, ** uint16 nDataLen); ** Descriptions : 曲线控件-添加数据 ** input parameters: screen_id 画面ID ** control_id 控件ID ** channel 通道号 ** pData 曲线数据 ** nDataLen 数据个数 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { ...... //添加曲线数据一共256个,请参考源代码 uint8 sin[256]={}; //添加数据到曲线 一次两个数据 GraphChannelDataAdd(0,1,0,&sin[num],2); } --- ### 722. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是图标控件? 图标控件为GIF或ICON格式的文件,默认索引从0开始。使用图标控件,形象地把变量的不同状态显示出来或修改背景图片 本例程中介绍图标控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示 状态显示:实现4种状态显示修改背景图标:实现4个背景图的切换 适用范围:全系列例程下载链接:《ICON控件应用》(点击跳转) 8.1 图标控件属性 本章节重点介绍图标控件的属性,属性窗口如下所示 初始化显示 选择“是”或者“否” 图标文件 选择图标文件的路径 透明处理 可选为“使用透明色”或“与背景融合” 触摸设置 设置触摸设置,可配置如下选项 禁止触摸:不允许触摸允许触摸:触摸时有通知有蜂鸣水平滑动时换帧:水平向左、水平向右滑动时换帧垂直滑动时换帧:水平向上、水平向下滑动时换帧 8.2 图标文件制作 在我司VisualTFT 上位机软件集成图标文件“ICON”的制作工具,本章节介绍如何生产“ICON”文件 在VisualTFT软件菜单栏,选择【工具】→“图标生成”,如下所示点击【增加帧】,将准备好的素材添加进来。用户导入图片默认为原始的宽和高显示,也可以对宽度和高度的微调及任意拖动进行位置调整,最后点击“生成图标”。操作如下所示 8.3 状态显示 【状态更新】画面,介绍用户设备和串口屏通讯时,用户设备向串口屏发送指令,更新图标控件的帧 画面配置 在【状态更新】画面的“背景图片”导入相应的美工图片。在画面中添加1个图标控件(控件ID:1),和3个按钮控件(控件ID:2-6) 属性配置 图标属性 设置【图标文件】为素材的路径。【透明处理】为“与背景融合”,配置如下所示 【工作中】按钮属性 用于显示图标第0帧,“工作中”状态。在按钮控件(控件ID:2)的属性窗口中,设置【触摸虚框】为“否”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”、【初始状态】为“按下”、【操作风格】为“开关”,如下所示 对“工作中”、“暂停”、“停止”、“隐藏”等按钮实现互斥效果:同时选中上述按钮,在菜单栏【编辑】-“开关按钮互斥(N)”,对应的按钮“对内指令”-“按下时”会自动填入一条互斥指令,操作如下所示 填写图标对内指令 点击【对内指令】→“按下时”弹出指令填写框,选择“指令助手”在指令助手界面,左侧导航栏选择【图标控件】设置“图标控件显示”区域的指令参数。如例程中,设置【状态显示】画面中的图标控件显示第0帧复制指令,填写在对内指令框,如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。按下“暂停”按钮,图标控件显示对应的暂停帧。对【状态显示】画面中的图标控件(控件ID:1),填写相应换面ID和控件ID,如显示指定帧“2”,点击“显示”。则在虚拟屏中,显示“停止帧”,运行效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义 MUC控制指定帧显示 例如用户需实现显示图标控件第1帧,则直接调用文本字库串显示函数AnimationPlayFrame ( )即可,代码如下所示 /************************************************************************ ** Function name: void AnimationPlayFrame(uint16 screen_id, ** uint16 control_id, ** uint8 frame_id) ** Descriptions : 指定帧显示 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** frame_id: 指定帧 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { …… AnimationPlayFrame (0, 1, 1) //画面ID0,控件ID1,显示图标控件第1帧 …… } 8.3 修改背景图片 画面配置 在【修改背景图片】画面的“背景图片”导入相应的美工图片。在画面中添加1个图标控件(控件ID:1),和3个按钮控件(控件ID:2-4),如下所示 属性配置 图标属性 设置【图标文件】为素材的路径、【透明处理】为“与背景融合”,配置如下所示 【上一张】按钮控件属性 控件属性配置 用于显示图标上一帧。在按钮控件(控件ID:2)的属性窗口中,设置【触摸虚框】为“否”、【弹起图片】为对应的素材路径、【裁剪】为“勾选”、【按下时的图片】为对应的素材路径、【裁剪】为“勾选”,属性配置如下所示 填写上一帧对内指令 点击【对内指令】→“按下时”,弹出指令填写框选择“指令助手”在指令助手界面,左侧导航栏选择【图标控件】设置“图标控件显示”区域的指令参数,如例程中,设置【修改背景图片】画面中的图标控件显示上一帧复制此指令,关闭指令助手,将指令粘贴到指令框中,操作如下所示 同理,按钮“下一帧”设置和按钮“上一帧”设置类似,只需在指令助手选择下一帧,在把指令复制到相应的按钮对内指令里面即可 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。按下“下一张”按钮,图标控件对应切换下一帧显示,对【修改背景图片】画面中的图标控件(控件ID:1),填写相应换面ID和控件ID,点击“下一帧”。则在虚拟屏中,该图标控件显示为下一张背景效果,运行效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义 MUC控制上一帧显示 例如用户需要控制图标控件显示上一帧,则直接调用API函数AnimationPlayPrev ( )即可,代码如下所示 /*********************************************************************** ** Function name: void AnimationPlayPrev(uint16 screen_id, ** uint16 control_id) ** Descriptions : 上一帧显示 ** input parameters : screen_id:画面ID ** control_id : 控件ID ** output parameters: 无 ** Returned value : 无 ***********************************************************************/ { …… AnimationPlayPrev (0, 1) //设置画面ID0控件ID1的图标控件显示上一帧 …… } MUC控制下一帧 例如用户需实控制图标控件显示下一帧,则直接调用API函数AnimationPlayNext ( )即可,代码如下所示 /*********************************************************************** ** Function name: void AnimationPlayNext (uint16 screen_id, ** uint16 control_id) ** Descriptions : 上一帧显示 ** input parameters : screen_id: 画面ID ** control_id: 控件ID ** output parameters: 无 ** Returned value : 无 ***********************************************************************/ { …… AnimationPlayNext (0, 1) //设置画面ID0控件ID1的图标控件显示下一帧 …… } --- ### 723. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是GIF控件? GIF动画、ICON图标文件可以通过动画控件来显示。用户可以设置动画控件自动播放,也可以设置触摸,本例程中介绍动画控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示 开机动画:开机后,动画自动播放,并在播放完成后执行指定的动作ICON文件播放:使用VisualTFT软件制作ICON文件,ICON图标循环播放 适用范围:全系列例程下载链接:《GIF控件应用》(点击跳转) 7.1 GIF控件属性介绍 GIF控件属性如下所示 初始化显示 进入该画面时控件是否初始化显示 选择“否”,控件初始化不显示。关闭之后用户如果想要把动画显示出来,可以用指令助手的显示隐藏控件发送指令进行初始化显示选择“是”,开启初始化显示,控件初始化显示 动画文件 选择播放文件:支持GIF、ICON文件 透明处理 使用透明色:图标中的透明色直接透明显示与背景混合:图标中的透明色显示当前画面的相同坐标的背景色或背景图片与背景色融合并压缩:一般用于压缩有大量透明区域的PNG图片(环形京都条、汽车仪表等) 自动播放 进入该画面时动画是否自动播放 否:不自动播放是:自动播放间隔时间:自动播放间隔时间(单位为毫秒)循环次数:循环播放次数(0表示不断循环播放)播放结束时:播放结束时的处理(不处理、发送通知、切换到下一画面) 触摸设置 手指在控件上触摸或滑动时,是否通知或换帧 禁止触摸:不能触摸允许触摸:触摸控件时发送通知水平/垂直滑动时换帧:水平/垂直滑动时,切换帧并发送通知步长(像素):滑动切换一帧的单位,切换帧数=滑动距离/步长,如下所示 7.2 开机动画 【开机动画】画面,介绍开机动画设置,可以设置开机动画自动播放,并在播放结束后自动跳到下一页 画面配置 在【开机动画】画面的“背景图片”导入相应的美工图片。在该画面中添加动画控件,如下所示 属性配置 设置动画控件(控件ID:1)的属性,【动画文件】选择GIF文件、设置【间隔时间】为“35”、【播放结束时】为“切换到下一帧”,配置如下所示 运行预览 运行虚拟屏,动画控件播放完毕自动跳转下一页面,运行效果如下所示 MCU控制GIF播放、暂停 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义 MCU控制开启播放动画 例如用户需开始播放动画,则直接调用播放动画函数AnimationStart ( )即可,代码如下所示 /******************************************************************** ** Function name: void AnimationStart(uint16 screen_id, ** uint16 control_id); ** Descriptions : 开始播放动画 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** output parameters: 无 ** Returned value : 无 ********************************************************************/ { …… AnimationStart(0, 1); //画面ID0,控件ID1,开始播放动画 …… } MCU控制停止播放动画 例如用户需停止播放动画,则直接调用停止播放动画函数AnimationStop ( )即可,代码如下所示 /******************************************************************** ** Function name: void AnimationStop(uint16 screen_id, ** uint16 control_id); ** Descriptions : 停止播放动画 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** output parameters: 无 ** Returned value : 无 ********************************************************************/ { …… AnimationStop(0, 1); //画面ID0,控件ID1,停止播放动画 …… } 7.3 ICON文件播放 ICON文件播放】画面,介绍制作ICON文件、播放ICON文件设置 画面配置 在【ICON文件播放】画面的“背景图片”导入相应的美工图片。在该画面中添加动画控件,如下所示 图标生成 本章节不阐述图标的制作过程,具体可参考 图标控件 一章节 属性配置 设置动画控件(控件ID:1)的属性,【动画文件】选择制作好的ICON文件、设置【间隔时间】为“550”,配置如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【动画控件】,设置“动画控件显示”区域的指令参数。对画面(画面ID:1)中的动画控件(控件ID:1)暂停播放,然后手动显示下一帧。则在虚拟屏中,该动画控件暂停并显示下一帧,运行效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需显示动画的下一帧,则直接调用显示动画下一帧函数AnimationPlayNext ( )即可,代码如下所示 /******************************************************************* ** Function name: void AnimationPlayNext(uint16 screen_id, ** uint16 control_id); ** Descriptions : 播放下一帧 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** output parameters: 无 ** Returned value : 无 ********************************************************************/ { …… AnimationPlayNext(0, 1); //画面ID0,控件ID1,播放下一帧 …… } --- ### 724. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是RTC控件? 时间可以通过RTC控件来显示。RTC控件可以通过用户主机修改,也可以通过设置弹出系统键盘,对时间进行输入编辑操作,然后显示在串口屏上。本章节中介绍RTC控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示 时间显示:显示当前时间定时功能:设置一个计时,在屏上显示计时的时间,在达到设定值时通过串口发出通知 适用范围:全系列例程下载链接:《RTC控件应用》(点击跳转) 6.1 RTC控件属性介绍 RTC控件可以显示当前时间和倒计时,如下所示 显示时间 显示当前时间 格式 时间的显示格式,如下所示 HH:MM:SS,显示小时、分钟和秒数20XX-MM-DD,显示年份、月份和日数20XX-MM-DD HH:MM:SS,显示年份、月份、日数、小时、分钟和秒数20XX-MM-DD HH:MM:SS 星期几,显示年月日,时间以及星期几星期几(中文+英文),显示星期几的中文和英文;自定义格式。例如“年-月-日,时-分-秒,星期”的格式为:%y-%n-%d,%h:%m:%s,%w(年=%y,月=%n,日=%d,时=%h,分=%m,秒=%s,星期=%w),如下所示 语言 中文、英文 时差 与当前系统时间的差值,范围[-12~+12] 字体 字体大小和字体样式 前景颜色 字体颜色 允许编辑 点击RTC显示区域,弹出日期/时间设置界面,如下所示 按压方式 长按点击进入编辑 计时 格式 计时时间的显示格式,如下所示 计时长度 计时时间长度(秒) 显示方式 倒计时、顺计时 字体 字体大小 前景颜色 字体颜色 6.2 时间显示 【时间显示】画面,介绍设置显示当前时间的方法 画面配置 在【时间显示】画面的“背景图片”导入相应的美工图片。在该画面中添加RTC控件,如下所示 属性配置 以控件ID为1的RTC控件为例,设置【格式】为“20XX-MM-DD HH:MM:SS 星期几”、【字体】为“ASC_CHS_30”、【前景颜色】为白色,配置如下所示 运行预览 运行虚拟屏,虚拟屏中该RTC控件显示当前系统时间,运行效果如下所示 PS:虚拟屏直接显示电脑时间,且不支持修改,若需要RTC修改应用,下载到实体屏体验 MCU获取RTC系统时间 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需获取串口屏的系统时间,则直接调用获取RTC函数ReadRTC()即可,代码如下所示 /********************************************************************* ** Function name : void ReadRTC(void); ** Descriptions : 获取串口屏中的系统时间 ** input parameters : 无 ** output parameters: 无 ********************************************************************/ { …… ReadRTC(); …… } 6.3 定时功能 【定时功能】画面,介绍按下按钮后启动、暂停计时器的功能 画面配置 在【定时功能】画面的“背景图片”导入相应的美工图片。在该画面中RTC控件ID1,按钮控件ID3、4,作为顺计时功能;RTC控件ID2,按钮控件ID5、6作为倒计时功能,如下所示 属性配置 以顺计时为例,倒计时参考顺计时说明即可 设置RTC控件ID1的【格式】为“MM:SS(计时)”、【计时长度】为“30”、【显示方式】为“顺计时”、【字体】为“ASC_CHS_36”,配置如下所示 设置按钮控件ID3为开始计时功能,设置其【触摸虚框】为“否”、【按下时的图片】选择设置好的图片、勾选【裁剪】;填写按钮按下的对内指令为“开启定时器”,操作如下所示 同理,设置按钮控件ID4为开始计时暂停功能,其设置流程和“开启定时器”类似,只需对内置指令改为“暂停定时器” 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【RTC时钟控件】,在“设定定时器”的操作类型中选择“设置定时器”。如例程中,控制画面(画面ID:1)中的RTC控件(控件ID:2),填写【数值】为对数值,点击“发送”。则虚拟屏该RTC控件显示“00:30”,运行效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义 MCU设置计时时间 例如用户需设置串口屏的计时时间,则直接调用设置RTC计时的函数SeTimer()即可,函数定义如下所示 /********************************************************************* ** Function name : void SeTimer(uint16 screen_id, ** uint16 control_id, ** uint32 timeout); ** Descriptions : 设置计时控件 ** input parameters : screen_id 画面ID ** control_id 控件ID ** timeout 倒计时(秒) ** output parameters: 无 *********************************************************************/ { …… SeTimer(1,1,50); //设置画面1的RTC控件1的值为50S …… } MCU开启计时 例如用户需开启串口屏的计时时间,则直接调用开启RTC计时的函数StartTimer()即可,函数定义如下所示 /********************************************************************* ** Function name : void StartTimer(uint16 screen_id, ** uint16 control_id); ** Descriptions : 开启计时控件 ** input parameters : screen_id 画面ID ** control_id 控件ID ** output parameters: 无 *********************************************************************/ { …… StartTimer(1,1); //开启画面1的RTC计时控件1 …… } --- ### 725. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是滑块控件? 通过滑动滑块来体现某些数值和状态调节的改变效果,可以和文本控件配合使用。本例程中介绍滑块控件常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示 亮度调节功能:实现通过滑块对屏幕亮度的调节同时改变关联的文本控件值 适用范围:全系列例程下载链接:《滑块控件应用》(点击跳转) 5.1 滑块控件属性介绍 本章节重点介绍滑块控件的属性,属性窗口如下所示 起始值 滑块控件游标起始位置时指示的值 终止值 滑块控件游标终止位置时指示的值 初始值 初始化时游标默认指示的值 拖动输入 设置游标的拖动输入方式,如下所示 禁止 设置游标禁止拖动 标尺区域 游标只能在标尺区域内进行拖动 游标区域 游标只能在游标区域内进行拖动 通知 游标拖动时或者拖动后,对应屏幕下发的数据,可设置通知数据下发的方式为“拖动时”或“松开时” 方向 设置标尺的方向为“水平”方向或“垂直”方向,如下所示 类型 设置游标在标尺区域的位置,可选为“偏移”还是“居中”显示 刻度数 标尺上刻度的个数 刻度颜色 设置刻度的颜色,如下所示 显示数值 设置是否显示标尺上的刻度值 起始留白 标尺起始位置离边缘的距离,例如设置为“50”,效果如下所示 终止留白 标尺终止位置离边缘的距离,例如设置为“50”,效果如下所示 背景 设置标尺背景的颜色和类型,可设置背景为“透明”,“单色背景”,“背景图片”如下所示 透明 设置标尺背景透明,只留下游标,如下所示 单色背景 设置标尺背景为某种单一的颜色,如下所示 背景图片 设置自定义的图片UI为标尺的背景,如下所示 游标 游标可设置为“系统默认”或“图片”,如下所示 游标类型 可设置为游标为“系统默认”或“图片”,选择“图片”时需要插入事先准备好的图片UI,效果如下所示 游标方向 设置游标在标尺刻度垂直方向上的显示位置 偏移 设置游标在标尺上的偏移距离 游标宽 设置游标的宽度 游标高 设置游标的高度 5.2 亮度调节功能 【亮度调节功能】画面,介绍用户如何配置滑块控件的基本属性和使用(为了体现使用效果,例程中使用了滑块控件和进度条控件的关联使用。可参考【进度条控件应用】文档使用) 画面配置 在【亮度调节功能】画面的“背景图片”导入相应的美工图片。在该画面中添加文本控件和进度条控件和滑块控件,如下所示 属性配置 文本控件 文本控件属性配置如下所示 进度条控件 进度条控件属性配置如下所示 注:进度条控件和滑块控件关联使用时,进度条控件的ID一定要与滑块控件的ID相邻连续,且进度条的控件ID小于滑块控件ID,此时两者才能关联使用。如例程中:进度条控件ID为“1”,滑块控件ID为“2”。 滑块控件 设置【终止值】为“255”、【初始值】为“220”【通知】为“松开时”【类型】为“居中”【背景类型】为“透明”【游标类型】为“图片”、【游标图片】处插入图片UI、【游标宽】为“30”、【游标高】为“30”,配置如下所示 运行预览 运行虚拟屏,用户可以通过鼠标在虚拟屏上拖动滑块的游标来同时改变进度条控件的数值(文本控件【背光亮度】的值需要通过外部MCU进行关联控制改变,将在下面进行详细描述)。同时可将VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【进度条仪表滑块】,设置“更新进度条仪表滑块”的指令参数,显示效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。 利用MCU来设置更新滑块的值 例如用户需实现【0-255】的滑块控件,游标显示在“88”的位置,文本控件【背光亮度】的值同时更新为“88”,直接调用滑块控件值更新函数SetSliderValue( )即可,代码如下所示 /************************************************************************ ** Function name: void SetSelectorValue (uint16 screen_id, ** uint16 control_id, ** uint8 item); ** Descriptions : 设置滑动选择控件值 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** item: 设置的选项 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { …… SetSelectorValue (0, 1, 2) //画面ID0,控件ID1,设置的选项第三项 …… } --- ### 726. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是仪表控件? 表盘可以反映用户主机上的数据变化,满足用户使用的仪器仪表界面。常用于速度、电压等参数的体现,我司提供以下两种方法实现 仪表控件:如上图,适合所有平台,仪表控件可以实现表盘的显示 适用范围:仪表控件,全系列例程下载链接:《串口屏表盘应用》(点击跳转) 4.1 仪表控件属性介绍 本章节介绍仪表控件的属性,属性窗口如下所示 起始值 仪表量程最小的数值,最小为“0” 终止值 仪表量程最大的数值,最大为“360”,也是指向0° 初始值 指针一开始指向的数值,当初始值设置为“45”时,如下所示 显示数值 表盘上的刻度值。可选“是”或者“否”,当且仅当【表盘类型】为“自绘表盘”时该选项才生效。如下所示 字体大小 设置表盘的刻度值大小,如设置为16,如下所示 数值颜色 设置表盘的刻度值颜色,如设置为黄色,如下所示 表盘类型 分为“自绘表盘”、“背景图片”、“透明”,如下所示 自绘表盘 默认表盘类型是“自绘表盘”,可显示刻度值,如下所示 背景图片 背景图片:当表盘类型“背景图片”时,可插入表盘图片 【透明】 起始角:指针初始指向角度,如设置起始角为180°终止角:指针表盘最终指向角度,如设置终止角为0°(360°)旋转方向:分为“顺时针”和“逆时针“1.顺时针:指针沿顺时针的方向走2.逆时针:指针沿逆时针的方向走 刻度(自绘表盘模式) 显示背景色 显示表盘的背景色。可选“是”或者“否” 背景颜色 为表盘设置纯色背景。当“显示背景色”选择“是”时支持该项参数设置 显示主线 主线是仪表最外围的那个圆圈,选择“是”或者“否” 主线颜色 设置主线单色颜色,如设置为蓝色 主线宽度 设置主线的宽度,如设置为“4” 刻度 设置大刻度个数,默认为4个刻度 刻度颜色 设置刻度的单一颜色,默认为红色 刻度宽度 设置刻度的宽度,默认为2 显示子刻度 选择“是”或者“否” 子刻度 设置子刻度个数,默认为9个刻度 子刻度宽度 设置刻度的单一颜色,默认为红色 子刻度颜色 设置刻度的宽度,默认为2 表针类型 可以对表针的类型进行设置,分为“直线”、“三角形”、“四边形”。默认为“三角形”,如下所示 表针颜色 表针的颜色。默认为红色 中心颜色 指针中心的颜色。默认为灰色 4.2 仪表控件应用 画面配置 在【仪表控件】画面的“背景图片”导入相应的美工图片,画面中添加1个仪表控件(控件ID:1)和1个文本控件(控件ID:2),如下所示 属性配置 在仪表控件的属性窗口中,设置【起始值】为“0”、【终止值】为“110”、【初始值】为“45”、【显示数值】为“否”、【表盘类型】为“透明”、【起始角】为“180”、【终止角】为“360(0)”、【指针类型】为“四边形”,属性配置如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【进度条/仪表/滑块】,设置“更新进度条/仪表/滑块”指令参数。如例程中,控制画面(画面ID:0)中的仪表控件(控件ID:1),填写“数值”为“60”,点击“发送”;或者拖动指令助手中的滑动条,也可设置仪表控件值。同理,设置文本控件的值为“60”。运行效果如下所示 单片机程序 用户单片机控制仪表控件更新的程序,参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。keil程序中的函数定义声明,如下所示 /********************************************************************** ** Function name: void SetMeterValue (uint16 screen_id, ** uint16 control_id, ** uint32 value) ** Descriptions:设置仪表值 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** value: 需要设置的控件值 ** output parameters: 无 ** Returned value: 无 *********************************************************************/ { …… SetMeterValue(0,1,60);//设置画面0、控件1仪表控件值为60 …… } --- ### 727. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是进度条控件? 进度条控件可以将某些数值的改变效果形象直观的体现在屏幕上,可以和文本控件、滑块控件、按钮控件配合使用 本例程中介绍进度条控件的属性、常见应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示 开机进度条:MCU在开机时定时发送数据给屏幕,屏幕进度条自动增加的效果控件联动:实现进度条、滑块、文本控件三方数据联动更新增量调节:通过按钮控件和进度条控件关联,通过按钮实现进度条的增加和减少 适用范围:全系列例程下载链接:《串口屏进度条控件应用》(点击跳转) 3.1. 进度条控件属性 起始值 进度条控件显示范围的起始位置 终止值 进度条控件显示范围的终止位置 初始值 初始化时进度条指示的位置 滑动通知 可设置为“禁止”、“允许【滑动通知】”、“允许【松开通知】、“关联滑动条””,如下所示 禁止:设置进度条禁止滑动允许【滑动通知】:进度条设置为可以滑动,并且在滑动的同时下发通知数据允许【松开通知】:进度条设置为可以滑动,并且在松开时下发通知数据关联滑动条:设置与滑块控件关联,可以通过拖动游标来改变进度条的值 数值显示 设置进度条的数值显示方式,可设置为“不显示”、“居中显示”,“末端显示”,如下所示 字体:设置进度条显示数值的字体大小文字颜色:设置进度条显示数值的文字颜色显示百分号:设置进度条的数值是否以百分号的形式显示,可设置“是”或者“否” 进度条类型 设置进度条在控件范围内显示的方向,可设置为“水平/左”、“水平/右”、“垂直/上”、“垂直/下” 背景类型 设置进度条背景的类型,可设置为“透明”、“单色背景”、“背景图片” 背景颜色:当【背景类型】设置为“单色背景”时,可通过调色板设置背景颜色背景图片:当【背景类型】设置为“背景图片”时,可通过在此处插入图片UI来设置为进度条的背景 前景类型 设置进度条的前景类型,可设置为“单色前景”、“前景图片” 前景颜色:当【前景类型】设置为“单色前景”时,可通过调色板设置前景颜色前景图片:当【前景类型】设置为“前景图片”时,可通过在此处插入图片UI来设置为进度条的前景 3.2 开机进度条应用 当屏幕上电时候,可使用进度条控件按照一定的步进值,递增显示,来增加用户体验效果 画面配置 【进度条功能】画面的“背景图片”导入相应的美工图片 属性配置 设置【数值显示】为“末端显示”且“显示百分号”、【背景类型】为“透明”、【前景类型】为“前景图片”、【前景图片】处插入准备好的UI图片,配置如下所示 运行预览 运行虚拟屏和VisualTFT建立联机,在【指令助手】⇨‘进度条/仪表/滑块’中,拖动进度,模拟开机进度,如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需实现例程中【开机进度条】的效果(进度条从【0-100】循环递增),直接调用进度条控件值更新函数SetProgressValue( )即可,代码如下所示 /************************************************************************ ** Function name: void SetProgressValue (uint16 screen_id, ** uint16 control_id, ** uint32 value); ** Descriptions : 设置进度条控件值 ** input parameters: ** screen_id : 画面ID ** control_id: 控件ID ** value : 设置的数值 ** output parameters : 无 ** Returned value : 无 ************************************************************************/ uint8 Start_Progress = 0; /*! * brief 更新开机进度条值 */ void UpdateUI() { if(current_screen_id == 0) { Start_Progress += 1; if(Start_Progress > 100) { Start_Progress = 0; } SetProgressValue(0, 1, Start_Progress);//设置画面0,ID1进度条控件值 } } 3.3 控件联动应用 属性配置 文本控件配置、进度条控件、滑动条控件的属性如下所示: 文本控件属性 进度条控件属性 滑块控件属性 外部MCU控制 例如用户需实现当【0-100】的滑块控件,游标滑到“88”的地方时,进度条和文本控件的数值同时更新为“88”。或当利用弹出键盘输入文本时,进度条的值随着文本值的变化更新,直接调用进度条控件通知函数NotifyProgress ( )和文本控件通知函数NotifyText ( )即可,代码如下所示 /************************************************************************ ** Function name: void NotifyProgress (uint16 screen_id, ** uint16 control_id, ** uint32 value); ** Descriptions : 设置进度条控件通知 ** input parameters: ** screen_id: 画面ID ** control_id: 控件ID ** value: 进度条控件值 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ void NotifyProgress(uint16 screen_id, uint16 control_id, uint32 value) { if(screen_id == 0 && control_id == 3) { SetTextInt32(0,2,value,0,1);//关联进度条的值赋值给画面0,ID2的文本控件 } } /************************************************************************ ** Function name: void NotifyText (uint16 screen_id, ** uint16 control_id, ** uint8 *str); ** Descriptions : 设置文本控件通知 ** input parameters: ** screen_id: 画面ID ** control_id: 控件ID ** str: 文本控件内容 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ void NotifyText(uint16 screen_id, uint16 control_id, uint8 *str) { int32 value = 0; if(screen_id == 0 && control_id == 2) { sscanf(str,"%ld",&value);//字符转化为整数 SetProgressValue(0,3,value);//文本控件数值赋值给画面0,ID3的进度条控件 } } 3.4 进度条进度调节 进度条控件、按钮属性如下所示 文本控件属性 进度条控件属性 外部MCU控制 例如用户设置进度条的值,调用一下即可,函数SetProgressValue( )即可,代码如下所示 /************************************************************************ ** Function name: void SetProgressValue (uint16 screen_id, ** uint16 control_id, ** uint32 value); ** Descriptions : 设置进度条控件值 ** input parameters: ** screen_id : 画面ID ** control_id: 控件ID ** value : 设置的数值 ** output parameters : 无 ** Returned value : 无 ************************************************************************/ { ...... SetProgressValue(0, 1, Start_Progress);//设置画面0,ID1进度条控件值 ...... } --- ### 728. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是文本控件? 字符、数值等变量可以通过文本控件来显示。可以由用户主机输入(用户单片机控制),也可以通过设置弹出系统键盘或者自定义键盘,对文本控件输入编辑操作 本章节介绍文本控件属性、常见应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示 文本控件更新:实现字符串、小数、正/负数的显示文本控件输入:点击文本框,弹出小键盘、全键盘输入艺术字显示:使用艺术字显示字体效果文本增量调节:通过按钮控件控制文本小数、整数增量调节 2.1 文本控件属性 本章节重点介绍文本控件的属性,属性窗口如下所示 文本 用户初始状态显示的内容 字体 选择文本显示的字体大小和样式 串口屏支持的字库编码:ASCII、GB2312、GBK、UNICODEASCII:英文字母、数字、符号等、无汉字GB2312:简体汉字、无繁体、无ASCII字符GBK:简体汉字与繁体汉字、ASIIC、日韩文等UNICODE:支持多种国际语言、如法语、俄语、波斯语等 1.F/M/H系列、物联型平台 该平台所生成的字库均是矢量字库,字体的实际尺寸可以任意缩放而不失真。最大支持32个字体样式,若用户选择如下的“ASC_CHS_24”默认字体样式,则ASC表示ASCII字库,CHS表示GBK2312字库,24表示显示字体高度占24个像素。 系统有提供常见的字体样式,用户还可以自定义字库。在VisualTFT软件的菜单栏, F/M系列、物联型平台上,选择【工具】→“字库配置”,如下所示,详细参考《工程笔记-如何自定义矢量字库》文档 2.基本型平台 VisualTFT自带的字体样式,如下所示。ASCII 612表示仅显示英文字母、数字、符号,且字体大小为612个像素,ASCII样式属于半宽格式;GBK2312,表示仅显示简体汉字,且字体大小为32*32个像素,GBK2312样式属于半宽格式;GBK1212表示显示简体汉字与繁体汉字、ASIIC、日韩文,字体大小为1212个像素,GBK属于半宽格式 在基本型平台中,除了系统提供的字体样式,用户还可以自定义字库。在VisualTFT软件的菜单栏,选择【工具】→“字库生成”,根据需求配置参数即可,如下所示 艺术字 用于实现自定义或特殊字体的显示 图标文件:插入艺术字的icon文件小数点宽度:小数点宽度比例 前景颜色 设置字体的颜色,如下所示 串口屏运行时,还可以通过指令修改,详细指令可查阅指令助手或《串口屏指令集V5.0 .pdf》文档 背景类型 文本控件背景类型可以选择透明、单色、图片、单色(选中时显示),如下所示 1.透明:将文本控件背景透明化。 2.单色:只有一种颜色构成的背景,也称为“纯色背景”。 3.图片:给文本控件的背景插入图片,如下所示 4.单色(选中时显示):点击文本控件,弹出键盘,该控件背景色如透明显示为单色背景。该功能实现,必须设置【输入方式】为“弹出系统键盘输入(用户主机可输入)”。如设置【背景颜色】为绿色,如下所示。 密码显示 开启后输入文本将以显示,例如文本为“0.9”,将显示“*”,如下所示 输入边框: 开启后,文本控件输入时,显示边框 水平对齐/垂直对齐 设置文字的对齐方式 输入方式 分为“用户主机输入”、“弹出系统键盘输入”、“自定义按键输入”、“系统变量”。如下所示 用户主机输入 文本由用户的主机输入,通过串口把指令传到串口屏,把数据显示到屏幕。如下所示 弹出系统键盘输入(用户主机可输入) 弹出系统键盘进行文本输入,键盘类型可选择小键盘和全键盘 键盘类型小键盘可以输入数字,如下所示全键盘可以输入数字、英文大/小写的字母、中文,如下所示提示信息当用户点击文本框,弹出键盘的输入框里的提示信息,如填入:请输入密码,如下所示键盘位置触摸文本框弹出,键盘的位置,分为自动和指定,指定模式下,如下所示初始值弹出键盘时,在键盘的输入显示栏是否显示当前文本值文本长度最大键盘输入为255字节数值限定弹出键盘时,限制键盘输入的阈值,如下所示 自定义按键输入 文本由用户结合按钮控件的自定义输入,如下所示。若用户修改键盘样式,可参考《【串口屏】如何自定义键盘V_1.0》文档。 系统变量 可以用于显示串口屏的固件版本号、通信波特率等等,如下所示 文本长度 文本输入的长度,最大为255个字节。 2.2 文本控件更新应用 【文本控件更新】画面,介绍用户设备和串口屏通讯时,用户设备向串口屏发送指令,更新文本控件的内容 画面配置 在【文本控件更新】画面的“背景图片”导入相应的美工图片。在该画面中添加文本控件,如下所示: 属性配置 以字符串显示栏为例,设置【文本】为“广州大彩”、【字体】为“ASC_CHS_24”、【垂直对齐】为“垂直居中”、【输入方式】“用户主机输入”,配置如下所示 同理,对小数显示栏、负数显示栏、整数显示栏,设置【文本】初始值依次为“0.8”、“-8”、“18”。 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【文本控件1】,设置“更新文本控件”的指令参数。 字符串显示 对画面(画面ID:0)中的文本控件(控件ID:1)填写【文本】为“运行预览”,点击“发送”。则在虚拟屏中,该文本控件从默认的“跳动符号”显示为“运行预览”,运行效果如下所示 小数显示 对画面(画面ID:0)中的文本控件(控件ID:2)填写【文本】为“0.9”,点击“发送”,运行效果如下所示 负数显示 对画面(画面ID:0)中的文本控件(控件ID:3)填写【文本】为“-9”,点击“发送”,运行效果如下所示 整数显示 对画面(画面ID:0)中的文本控件(控件ID:4)填写文本【文本】为“19”,点击“发送”,运行效果如下所示 外部MCU控制 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义 MUC控制文本字符串显示 例如用户需实现“字符串栏显示栏”显示“运行预览”,则直接调用文本字库串显示函数SetTextValue( )即可,代码如下所示 /************************************************************************ ** Function name: void SetTextValue(uint16 screen_id, uint16 control_id, uchar *str); ** Descriptions: 设置文本字符串显示 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** str: 显示的字符 ** output parameters : 无 ** Returned value : 无 ************************************************************************/ { …… SetTextValue(0, 1, “运行预览”) //画面ID0,控件ID1,显示字符串“运行预览” …… } MUC控制显示正整数、负整数 例如用户需实现“负数显示栏”显示“-9”,“正数显示栏”显示“19”,则直接调用文本字库串显示函数SetTextInt32( )即可,代码如下所示 /************************************************************************ ** Function name: void SetTextInt32(uint16 screen_id, uint16 control_id, uint32 value, uint8 sign, uint8 fill_zero); ** Descriptions : 设置文本为正/负整数 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** value: 显示的整数 ** sign: 0-无符号,1-有符号 ** fill_zero: 数字位数,不足时左侧补零 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { …… SetTextInt32 (0, 3, -9,1, 0) //设置画面ID0控件ID3,显示-9 SetTextInt32 (0, 4, 19, 0, 0) //设置画面ID0控件ID4,显示19 …… } MUC控制显示小数 例如用户需实现“小数显示栏”显示“-0.9”,则直接调用文本字库串显示函数SetTextFloat ( )即可,代码如下所示 /************************************************************************ ** Function name: void SetTextFloat(uint16 screen_id, uint16 control_id, float value, uint8 precision, uint8 show_zeros); ** Descriptions : 设置文本单精度浮点值/小数 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** value: 显示的浮点数 ** precision: 小数位数 ** show _zero: 为1时,显示末尾0 ** output parameters: 无 ** Returned value : 无 ************************************************************************/ { …… SetTextFloat (0, 3, 0.9,1,1) //设置画面ID0控件ID2,显示0.9 …… } 2.3 文本控件键盘输入应用 【文本控件输入】画面,介绍点击串口屏的文本控件弹出键盘,输入数据,主动下发数据给用户单片机 画面配置 在【文本控件输入】画面的“背景图片”导入相应的美工图片。在画面中添加2个文本控件(控件ID:1和2),如下所示 属性配置 以控件ID为1为例,设置【文本】为“18.8”、【字体】为“ASC_CHS_24”、【垂直对齐】为“居中对齐”、【输入方式】为“弹出系统键盘输入(用户主机可输入)”、【键盘类型】为“小键盘”、【键盘位置】为“指定”、坐标为“(300,220)”,【数值限定】为“是”,限制范围为“0-100”,配置如下所示 同理,全键盘输入的配置只需将“键盘类型”改为“全键盘”即可,其他参数根据需求配置。 运行预览 运行虚拟屏,点击画面(画面ID:1)中的文本控件(控件ID:1),弹出键盘,输入“66”,回车。则虚拟屏下发对应的指令,运行效果如下所示 2.4 艺术字显示应用 【艺术字显示】画面,使用艺术字显示效果,首先生成对应的ICON文件,在文本控件的属性栏窗口,将ICON文件添加到“图标文件”配置选项中 画面配置 在【艺术字显示】画面的“背景图片”导入相应的美工图片。画面中添加1个文本控件(控件ID:1) 艺术字生成 图标文件制作有两种方式 图标生成艺术字生成 图标生成 打开图标生成界面在VisualTFT软件菜单栏,选择【工具】→“图标生成”,如下所示图标制作点击【增加帧】,将准备好的素材严格按照“[0-9]、[: . * - + ? /]、[A-Z]和[a-z]”顺序添加,否则会导致显示错误。用户导入图片默认为原始的宽和高显示,也可以对宽度和高度的微调及任意拖动进行位置调整,最后点击“生成图标”。操作如下所示: 艺术字生成 打开艺术字生成界面在VisualTFT软件菜单栏,选择【工具】→“图标生成”,如下所示艺术字制作设置图标的大小:高度和宽度为128*64字体名称:根据显示效果,选择相应TFT字库文件,可网上下载获得字体大小:默认显示的字体大小字体颜色:设置字体显示的颜色字符集合:共3种,如下所示1)数字:数字0~92)数字和符号:数字0~9、字符[:.*-+?/]。3)数字/符号/字母:数字0~9、字符[:.*-+?/]、大写A~Z,小写a~z渐变处理:禁止渐变、填充背景色、ALPHA通道背景颜色:显示字体默认的背景色 设置如下所示。点击【生成图标】完成图标生成 属性配置 设置【艺术字】为“是”、【图标文件】插入“艺术字.icon文件”、【小数点宽度】“为50%”、【垂直对齐】为“居中对齐”、【输入方式】为“用户主机输入”,配置如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【文本控1】,设置“更新文本控件”指令参数。如例程中,控制画面(画面ID:2)中的文本控件(控件ID:1),填写【文本】为“123”,点击“发送”。则虚拟屏文本控件1显示从默认的“18.8”显示为“123”,运行效果如下所示 2.5 文本增量调节应用 通过按钮控件控制文本控件显示值“自增”或“自减”操作。若调节的步长为整数,则增量调节的操作在屏内即可实现;若调节的步长为小数、字符串(时间)等,则需要MCU数据交互实现,或LUA脚本实现(本处不做说明) 整数调节 画面配置 在【文本增量调节】画面的“背景图片”导入相应的美工图片。画面中添加1个文本控件(控件ID:3),2个按钮控件(控件ID:1和2),如下所示 属性配置 文本控件属性控件ID为3的文本控件,设置文本为“0”、字体为“ASC_CHS_24”、垂直对齐为“垂直居中”、输入方式“用户主机输入”,配置如下所示按钮控件属性1).填写按钮增量调节对内指令:选择按钮控件(控件ID:1)2).属性栏中的【对内指令】→“按钮按下”3).弹出指令填写框4).选择“指令助手”,在指令助手界面,左侧导航栏选择【文本控件2】,设置“增量调节”区域的指令参数。如例程中,控制画面ID3中的文本控件ID在0-100范围内以步长为1的单位递减5).填写指令到对应按钮同理,递增的操作修改【调节方式】为“递增”即可。注意:该对内指令增量调节的方法仅适合调节的步长为整数,不支持小数 运行预览 运行虚拟屏,点击画面(画面ID:3)中的按钮控件(控件ID:1或2),以1的步长调整文本控件的数值,运行效果如下所示。参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义 小数调节 画面配置 在【文本增量调节】画面中画面中添加1个文本控件(控件ID:6),2个按钮控件(控件ID:4和5) 属性配置 控件ID为6的文本控件,设置文本为“0”、字体为“ASC_CHS_24”、垂直对齐为“居中对齐”、输入方式“用户主机输入”,配置如下所示 实现方法 支持LUA脚本的M/F/W系列可以在脚本处理,本章节不做说明,主要阐述通用方法,用户单片机交互实现 按下递增按钮(控件ID:5)时,屏幕下发按钮控件的指令到单片机。单片机解析按钮控件指令后,若判断是按钮控件(控件ID:5)按下,则发送获取文本控件(控件ID:6)的指令,获取文本控件值。相关代码如下所示/********************************************************************** ** Function name: NotifyButton(uint16 screen_id, uint16 control_id, uint8 state) ** Descriptions : 当按钮状态改变(或调用GetControlValue)时,执行此函数 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** state: 按钮控件的状态,0弹起、1按下、2长按 ** output parameters: 无 ** Returned value : 无 **********************************************************************/ void NotifyButton(uint16 screen_id, uint16 control_id, uint8 state) { …… //按下画面ID3控件ID5的按钮控件 if(screen_id == 3 && control_id == 5 && state == 1) { /******************************************************************* ** Function name: GetControlValue(uint16 screen_id, uint16 control_id) ** Descriptions : 获取控件值 ** input parameters: screen_id : 画面ID ** control_id: 控件ID ** output parameters: 无 ** Returned value : 无 *******************************************************************/ GetControlValue(3,6); //获取画面ID3,控件ID6的文本控件值 } …… }Copy 获取的文本控件值默认是字符串,调用C库函数的sscanf函数,将字符串转成单精度浮点数(小数),进行0.1个单位递增运算,将文本控件值更新到串口屏显示。代码如下所示 void NotifyText(uint16 screen_id, uint16 control_id, uint8 *str) { float TestValue = 0.0; …… if(screen_id == 3 && control_id == 6) //画面ID2:文本设置和显示 { sscanf(str,"%%.1f",&TestValue); //把字符串转换为浮点数 TestValue += 0.1; // 文本值自增 /********************************************* ** Function name: void SetTextFloat(uint16 screen_id, uint16 control_id, float value, uint8 precision, uint8 show_zeros); ** Descriptions: 设置文本单精度浮点值/小数 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** value: 显示的浮点数 ** precision: 小数位数 ** show _zero: 为1时,显示末尾0 ** output parameters: 无 ** Returned value: 无 *****************************************************************/ SetTextFloat(3,6,TestValue,1,1);//设置画面ID3、控件ID6每次自增的数值 } …… } 时间调节 时间的增量调节,用户可参考小数增量的方法,结合用户主机完成数据交互,用户主机只要对应调用字符串处理函数实现即可 [wshop_downloads] --- ### 729. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 什么是按钮控件? 按钮控件可以设置弹起或按下的状态。 控件的背景可以设置为单色,也可以设置图片,这样按下时就可以看到真实按钮按下的效果。 按钮控件还可以实现多种功能,如长按、瞬变、置位等。 本章节介绍按钮控件基本属性、常见的应用,结合工程中的画面介绍每一个应用的配置,常见的应用如下所示: 按钮开关功能: 实现瞬变、开关、置位、复位、长按、延时的功能 按钮逻辑功能: 实现两个按钮的互斥、使用指令实现总开关的功能 单按钮多状态: 可以用一个按钮和一个图标实现多状态按钮的功能 按钮的禁止与使能: 使用按钮的延时功能对其它按钮进行禁止和使能 自定义指令: 按下按钮时对外发送自定义指令 1.1属性介绍 本章节重点介绍按钮控件的属性,属性窗口下所示 触摸虚框 用户按下按钮时,显示虚框,如下所示: 事件通知 按钮状态改变时,上传通知。 (注意如果关闭按钮通知的话,minic脚本、lua脚本对应按钮不会触发回调,同时也没有指令通过串口发出) 弹起时的图片 按钮弹起状态时显示的图片。勾选“裁剪”时,将显示图片中按钮坐标对应的区域的图像 按下时的图片 按钮按下时显示的图片。勾选“裁剪”时,将显示图片中按钮坐标对应的区域的图像 文字状态 在按钮控件上显示文字。选择“是”,可按状态显示文字,如下所示 字体:文字大小和样式弹起时的颜色、按下时的颜色:文字的颜色弹起时的文字、按下时的文字:两种不同状态时显示的文字 触控用途 切换画面开关描述自定义按键自定义指令弹出菜单 如图所示: 切换画面 切换到指定画面,相关参数配置如下所示: 可选功能有: 目标画面:点击按钮控件时,切换到指定画面子画面:子画面一般为透明背景的小窗口,可作为对话框使用。目标页面的【背景透明】选择“透明”,在页面中设置一个图片控件,图片控件的【路径】选择对应的UI,显示效果如下所示动画效果:切换页面时的过渡效果,可以选择整个画面从左到右、从上到下、渐隐渐消、逐渐打开等效果。仅物联型支持此功能动画范围:在指定范围内显示动画效果,在指定范围外不显示,可以设置整个画面或指定范围密码保护:开启密码保护后,需要输入正确的密码才能切换画面 开关描述 按钮开关的功能,相关参数配置如下所示: 可选功能有: 初始状态:开关的初始状态。操作风格:瞬变:松开后,开关自动弹起,类似轻触开关功能。开关:按下后,开关由弹起变成按下或由按下变成弹起,类似带锁开关功能。置位:开关只能由弹起变成按下。复位:开关只能由按下变成弹起。长按:与瞬变按钮相似,但按压时每隔100毫秒通知一次。延时:按压指定时间长度后发出通知对内指令:在按下或者弹起后,对内部执行的指令对外指令:在按下或者弹起后,对外部发送的指令 自定义按键 把相应按钮转换成值输入。需要配合自定义键盘输入的文本控件使用,可以将按钮控件设计为自定义键盘,用户需要把按钮控件当做自定义按键 自定义指令 发送自定义的16进制格式的数据。即为用户设置按下按钮后,设备上传自定义的数据报文。不能发送帧尾为FF FC FF FF的报文,和大彩协议冲突 弹出菜单 需要协同菜单控件和文本控件使用,实现点击按钮即可弹出菜单,用户在选择弹出的菜单后,配合文本控件,把所选数据显示出来 1.2 按钮开关功能应用 【按钮开关功能】画面,介绍按钮的瞬变、开关、置位、复位、长按、延时功能 画面配置 在【按钮开关功能】画面的“背景图片”导入相应的美工图片。在该画面中设置按钮控件 属性配置 瞬变以按钮的瞬变功能为例,设置【触摸虚框】为“否”、【按下时的图片】选择处理好的图片、勾选【裁剪】、【触摸用途】为“开关描述”、【操作风格】“瞬变”同理,其它按钮的【触摸虚框】、【按下时的图片】、【裁剪】、【触摸用途】设置相同,但是操作风格设置不同,此文不在赘述开关设置按钮的开关功能,【操作风格】为“开关”,如下所示置位设置按钮的置位功能,【操作风格】为“置位”,如下所示复位设置按钮的复位功能,【初始状态】为“按下”、【操作风格】为“复位”,如下所示长按设置按钮的长按功能,【操作风格】为“长按”、【长按延时】为“0.1s”,如下所示延时设置按钮的延时功能,【操作风格】为“延时”、【长按延时】为“5s”,如下所示 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【按钮控件】,设置“设置按钮控件弹起和按下状态”的指令参数。设置画面(画面ID:0)中的按钮控件(控件ID:1)按下。则在虚拟屏中,该按钮控件从弹起变为按下,运行效果如下所示 MCU控制按钮状态 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需设置按钮状态,则直接调用设置按钮函数SetButtonValue ( )即可,代码如下所示。 /******************************************************************* ** Function name: void SetButtonValue(uint16 screen_id, ** uint16 control_id, ** uchar value); ** Descriptions : 设置按钮状态 ** input parameters: ** screen_id : 画面ID ** control_id: 控件ID ** value : 按钮状态,0为弹起,1为按下 ** output parameters : 无 ** Returned value : 无 *******************************************************************/ { …… SetButtonValue(1, 1, 1); //画面ID1,控件ID1,按钮按下 …… } 1.3 按钮逻辑功能应用 【按钮逻辑功能应用】画面,介绍按钮的互斥、和总开关控制功能。 按钮互斥 画面配置 在【按钮开关功能】画面的“背景图片”导入相应的美工图片。在该画面中设置按钮控件,如下所示 属性配置 按钮“Start”:设置【触摸虚框】为“否”、【按下时的图片】选择设置好的图片、勾选【裁剪】、【触摸用途】为“开关描述”、【操作风格】“开关”,配置如下所示 同理,按钮“Stop”的【触摸虚框】、【按下时的图片】、【裁剪】、【触摸用途】、【操作风格】设置相同,但是【初始状态】设置为“弹起” 互斥配置 互斥按钮的设置方法如下,同时选择按钮“Start”和“Stop”,然后依次点击【菜单】-【编辑】-【开关按钮互斥】,开启按钮互斥,自动会往按钮对内置指令添加按钮批量处理指令,操作如下所示 运行预览 运行虚拟屏,点击按钮“Start”和“Stop”,同一时间只有一个按钮可以处于按下状态。如下所示 按钮开关控制 画面配置 在【按钮开关功能】画面的“背景图片”导入相应的美工图片。在该画面中设置按钮控件,如下所示: 属性配置 设置按钮1、按钮2、按钮3,设置【触摸虚框】为“否”、【按下时的图片】选择设置好的图片、勾选【裁剪】、【触摸用途】为“开关描述”、【操作风格】“开关”,如下所示 设置按钮Open all,设置【触摸虚框】为“否”、【按下时的图片】选择设置好的图片、勾选【裁剪】、【触摸用途】为“开关描述”、【操作风格】“开关”,如下所示 选择按钮控件(控件ID:6) 属性栏中的【对内指令】→“弹起时”弹出指令填写框,选择“指令助手”在指令助手栏,选择按钮控件如设置画面ID1、按钮控件1的状态按下,点击按下生成指令复制指令到对内指令窗口 同理,按钮控件ID2、ID3的按钮按下效果重复4-5步骤即可。当按钮控件ID6弹起时候,设置按钮控件ID1、2、3的按钮弹起状态的处理方式类似 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【批量更新控件数值】,设置“更新多个控件数值”的指令参数。设置【画面ID】选择“1”,【按钮类型】为“按钮控件”,【按钮ID】分别填写3、4、5,【值】都写1。则在虚拟屏中,该按钮控件从弹起变为按下,运行效果下所示 PS:同时支持发送指令一个按钮一个按钮设置控制,本处不演示运行效果 MCU批量控制按钮状态 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需批量设置同一个页面的按钮状态,则直接调用批量设置按钮函数BatchSetButtonValue ( )即可,代码下所示: /******************************************************************* ** Function name: void BatchSetButtonValue (uint16 control_id, ** uint8 state); ** Descriptions : 批量更新当前页面的按钮状态 ** input parameters: ** control_id: 控件ID ** state : 按钮状态,0为弹起,1为按下 ** output parameters: 无 ** Returned value : 无 *******************************************************************/ { BEGIN_CMD(); //指令开头 BatchSetButtonValue(1, 1); //控件ID1,按钮按下 BatchSetButtonValue(2, 1); //控件ID2,按钮按下 …… END_CMD(); //指令结尾 } 1.4 单按钮多状态应用 【单按钮多状态】画面,介绍使用一个按钮和一个图标实现多状态按钮的功能 画面配置 在【单按钮多状态】画面的“背景图片”导入相应的美工图片。在该画面中设置按钮控件,如下所示: 属性配置 设置图标控件的属性,【图标文件】选择制作好的ICON文件,配置如下所示 选择按钮控件(控件ID:2),属性栏中设置【触摸虚框】为“否”,对按钮按下填写对应的指令,步骤如下所示 【对内指令】→“按下时”,弹出指令填写框选择“指令助手”在指令助手界面,左侧导航栏选择【图标控件】设置“图标控件显示”区域的指令参数,填写对应的参数。如设置画面(画面ID:2)中的图标控件(控件ID:1),点击下一帧复制指令到【对内指令】→“按下时”的窗口,操作如下所示: 运行预览 运行虚拟屏,点击按钮,图标会轮询显示。VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【图标控件】,设置“图标控件显示”的指令参数。设置画面(画面ID:2)中的按钮控件(控件ID:1)的图标控件显示第1帧。则在虚拟屏中,按钮显示“暂停Pause”,运行效果如下所示 MCU设置图标的显示 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需设置图标显示指定帧,则直接调用设置图标的显示帧的函数AnimationPlayFrame( )即可,代码如下所示 /******************************************************************* ** Function name: void AnimationPlayFrame(uint16 screen_id, ** uint16 control_id, ** uint8 frame_id); ** Descriptions : 设置图标显示指定的帧 ** input parameters: screen_id: 画面ID ** control_id: 控件ID ** frame_id: 指定帧 ** output parameters: 无 ** Returned value : 无 *******************************************************************/ { …… AnimationPlayFrame(2, 1, 1); //画面ID2,控件ID1的图标显示第1帧 …… } 1.5 按钮的禁止与使能应用 【按钮的禁止与使能】画面,介绍使用指令控制按钮的禁止与使能 画面配置 在【按钮的禁止与使能】画面的“背景图片”导入相应的美工图片。在该画面中设置三个按钮控件(控件ID:1、2、3),如下所示 属性配置 设置按钮1、2、3的属性,设置【触摸虚框】为“否”。设置按钮3的属性,设置【触摸虚框】为“否”、【按下时的图片】选择设置好的图片、勾选【裁剪】、【初始状态】为“按下”、【操作风格】为“延时”、【长按延时】为“5s”,配置如下所示 设置按钮的使能/失能:选择按钮控件(控件ID:3) 属性栏中的【对内指令】→“弹起时”弹出指令填写框选择“指令助手”,在指令助手界面左侧导航栏选择【禁/使能屏幕更新】,填写对应的参数。如例程中,控制画面(画面ID:3)中的图标控件(控件ID:1),点击“使能控件”将生成的指令复制到指令窗口,如下所示,同理其他按钮的使能/失能操作处理参考即可 运行预览 运行虚拟屏,VisualTFT软件和虚拟屏用“虚拟串口”建立联机。打开【指令助手】,选择左侧导航栏【禁/使能控件】,设置“禁止或使能控件功能”的指令参数。设置画面(画面ID:3)中的按钮控件(控件ID:1)的按钮控件禁止触摸。则在虚拟屏中,触摸按钮1无效。 MCU控制按钮禁止/使能 参考开发包keil程序中的him.dever.h文件函数声明以及him.dever.c文件中的定义。例如用户需禁止按钮的触摸,则直接调用按钮禁止/使能函数SetControlEnable ( )即可,代码如下所示 /******************************************************************* ** Function name: void SetControlEnable (uint16 screen_id, ** uint16 control_id, ** uint8 enable); ** Descriptions : 设置触摸控件使能 ** input parameters: screen_id : 画面ID ** control_id: 控件ID ** enable : 控件是否使能 ** output parameters: 无 ** Returned value : 无 *******************************************************************/ { …… SetControlEnable (2, 1, 1); //画面ID3,控件ID1的按钮禁止触摸 …… } 1.6 自定义指令应用 【自定义指令】画面,介绍按钮对外发送自定义指令的功能 画面配置 在【按钮开关功能】画面的“背景图片”导入相应的美工图片。在该画面中设置一个按钮控件(控件ID:1),如下所示 属性配置 设置按钮1的属性,设置【触摸虚框】为“否”、【事件通知】为“否”、【按下时的图片】选择设置好的图片、勾选【裁剪】、【触控用途】为“自定义指令”、【弹起时】为自定义的16进制指令“55 00”、【按下时】为自定义的16进制指令“55 01”,配置如下所示 运行预览 运行虚拟屏,右键点击屏幕弹出【参数设置】窗口,点击自定义按发送指令,运行效果如下所示 例程文档: 教程1 - 串口屏按钮控件应用v1.0下载 [wshop_downloads] --- ═══════════════════════════════════════════ ## 媒体报道 ═══════════════════════════════════════════ ### 730. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 成功的物联网项目需要以工程为主,并涉及广泛的开发人员技能。本文将详细介绍构建成功的物联网项目所需的九类关键技能,并探讨每个技能的职责范围、典型技能要求以及在项目中的重要性。 1. 硬件设计师 职责范围: 设计定制硬件,包括电路板设计、射频和天线设计、低功耗设计、芯片选型等。 确保硬件与软件的兼容性和可靠性。 典型技能要求: 印刷电路板 (PCB) 设计 射频和天线设计 时钟、信号路由经验 低功耗设计和功耗优化 芯片选型:微控制器、传感器、接口芯片 接口:SPI、I2C、JTAG、USB、GPIO 生产和零部件采购 重要性: 硬件是物联网项目的基礎,其设计质量直接影响项目的性能、功耗和成本。优秀的硬件设计师能够根据项目需求设计出高效、可靠、易于生产的硬件。 2. 嵌入式固件开发商 职责范围: 开发硬件固件,包括初始化、控制、通信等功能。 优化固件性能和功耗。 确保固件的安全性和可靠性。 典型技能要求: 编程语言:C、汇编语言、C++ 实时操作系统(RTOS)体验:FreeRTOS、Contiki、Zephyr 嵌入式Linux 源代码版本控制 物理和信息安全 平台:德州仪器、ARM Cortex、AVR、Microchip、Arduino、Raspberry Pi 重要性: 固件是硬件和软件之间的桥梁,其质量直接影响项目的稳定性和安全性。优秀的嵌入式固件开发商能够开发出高效、可靠、安全的固件,并对硬件进行充分优化。 3. 无线通信专家 职责范围: 设计无线通信系统,包括网络协议、功耗优化等。 选择合适的无线通信技术,例如 Wi-Fi、蓝牙、ZigBee、LoRa 等。 确保无线通信系统的稳定性和安全性。 典型技能要求: 网络模拟 无线网状网络 对无线传播有很好的理解 对功耗有很好的了解 协议:TCP/IP、IPv4、IPv6、RPL、TLS、WiFi、蓝牙、6lowpan、ZigBee、Thread、LoRA、MQTT、CoAP 重要性: 无线通信是物联网项目的关键技术之一,其设计质量直接影响项目的连接效率和可靠性。优秀的无线通信专家能够根据项目需求设计出稳定、高效、安全的无线通信系统。 4. 后端开发人员 职责范围: 开发后端系统,包括数据库、应用程序逻辑、API 等。 确保后端系统的安全性和可靠性。 与前端、移动应用等进行对接。 典型技能要求: 编程语言:Javascript、Go、Python、Ruby 数据库:MySQL、MongoDB、Redis 开发运营经验 云平台:亚马逊AWS、Heroku、微软Azure 重要性: 后端系统是物联网项目的核心之一,其性能和稳定性直接影响项目的整体用户体验。 5. 前端开发人员 职责范围: 开发用户界面,包括网页、移动应用等。 确保用户界面的易用性和美观性。 优化前端性能和功耗。 典型技能要求: 用户界面/用户体验设计 用户访谈和HCI经验 HTML、CSS、Javascript Web 开发框架:Vue.js、React、Bootstrap 重要性: 用户界面是物联网项目与用户交互的重要桥梁,其设计质量直接影响用户体验。优秀的 6. 应用程序开发人员 职责范围: 开发移动应用程序,包括 Android、iOS 等。 确保移动应用程序的性能和稳定性。 与后端系统进行对接。 典型技能要求: Android、iOS开发 本机/混合框架:Phonegap / Cordova、Ionic、Angular、React、Vue 编程语言:Java、Swift、Objective C、Javascript 重要性: 移动应用程序是物联网项目的重要交互方式之一,其开发质量直接影响用户体验。优秀的 7. 系统集成和自动化工程师 职责范围: 集成现有软件系统。 开发自动化测试框架。 确保系统的整体性和可靠性。 典型技能要求: 自动化测试框架:Jenkins、Mocha、Travis REST API 编程语言:Javascript、Java、Python、Bash 重要性: 系统集成和自动化是物联网项目的重要环节,可以提高项目的开发效率和可靠性。优秀的 8. 数据科学家 职责范围: 收集和分析物联网数据。 提取数据价值,例如预测、趋势分析等。 构建数据模型和算法。 典型技能要求: 统计、人工智能、机器学习、数据挖掘 编程语言:Matlab、R、Python 工具:Excel、Google BigQuery、Hadoop、TensorFlow、Spark 重要性: 数据是物联网项目的核心资产,其分析价值可以帮助项目更好地理解用户行为、优化资源配置、提升服务质量。优秀的 9. 项目管理人员 职责范围: 制定项目计划和预算。 协调各团队之间的工作。 确保项目进度和质量。 典型技能要求: 项目管理方法论:敏捷开发、瀑布式等 沟通和协调能力 领导力和风险管理能力 重要性: 项目管理是物联网项目成功的关键,可以确保项目顺利完成并实现预期目标。优秀的 结论 成功的物联网项目需要以工程为主,并涉及广泛的开发人员技能。本文介绍的九类关键技能是构建成功物联网项目的基础。 建议 在实际项目中,可以根据项目的具体需求,选择合适的开发人员和技能组合。此外,还可以借助物联网平台和工具来提高开发效率. --- ### 731. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 介绍 物联网 (IoT) 是一个术语,用于描述不断增长的互联设备网络。这些设备的范围从灯泡和恒温器等简单物体到汽车和飞机等更复杂的机器。 物联网的潜力巨大,企业开始注意到这一点。目前预计到 2023 年物联网支出将达到 1.1 万亿美元,其中仅智能家居市场就占超过 1250 亿美元。 在开始物联网开发之前,必须了解物联网项目的基础知识。 IoT 项目与常规 IT 项目有以下几个不同之处: 由于物联网设备是使用硬件和软件组件构建的,因此物联网项目需要这两个领域的深厚专业知识。 硬件和软件是同步开发的,因此任何一个方面的错误都可能造成严重后果。 物联网项目需要不同类型的测试和验证过程。物联网设备的复杂性意味着在开发和部署过程中出现问题的可能性更大。 传统的 IT 项目通常是在相对较短的时间内规划、设计、开发、测试和部署的。 物联网项目的范围可能会更长,设备会不断添加和更改。这意味着项目管理和开发过程必须能够适应动态变化。 物联网项目最重要的方面之一是安全性。由于有如此多的设备连接到互联网,确保您的数据免受攻击比以往任何时候都更加重要。 尽管存在这些挑战,物联网的潜在好处使其非常值得付出努力。本文将概述启动 IoT 项目所需采取的步骤,并概述您可能面临的任何风险。 1. 从哪里开始? 开发软件时,清楚地记录您的需求非常重要。这可以确保开发团队充分了解您在设计和实施工作中寻求的内容,以便他们可以轻松满足所有要求,同时保持预算限制! 实现此目标的第一步是创建软件需求规范 (SRS) 文档。该文档应该详细描述您正在寻找的软件的特性和功能,以及它的预期功能。如果您需要模板来帮助您开始为 IoT 项目创建 SRS,请随时与我们联系。 SRS 完成后,您需要开始考虑需要使用哪些设备或平台来实现您的想法。如果您对目标受众及其需求有很好的了解,那么这个过程就会容易得多。通过与拥有该领域技能的 IT 供应商合作,您更有可能取得成功。我们在上一篇文章中讨论了寻找合适的 IT 供应商,因此如果您不确定从哪里开始,这是一个很好的起点。 根据您的 SRS,您选择的供应商可以与您一起确定您的想法是否可行。接下来,您将开发一个原型并与目标受众进行测试。这将帮助您确定您的想法是否适合更大的商业市场。之后,就可以开始开发实际产品了。 2. IoT项目开发流程是怎样的? 为了确保您的项目开发顺利进行,不出现任何问题,经历研究与开发 (R&D) 阶段非常重要。研发阶段有助于确保您对自己的设计和规格充满信心,并尽早发现可以通过额外时间或资源解决的潜在问题。 成功的设计始于了解它的需求,而不是为了开始而创造一些东西! 作为此过程的一部分,需要考虑四个主要阶段,包括以下内容: 2.1 调查 在调查步骤中,供应商将根据您的目的和目标帮助您选择最适合您需求的平台和工具。这包括框架以及底层平台和工具的选择。 软件: 为物联网项目选择软件时,请确保选择可扩展的软件,以便它可以随着项目的发展而处理增加的流量。您还需要寻找对各种设备具有广泛支持并且能够轻松添加新设备的软件。 连接方法: 您的物联网设备需要什么样的连接?是 Wi-Fi、以太网、USB 还是蓝牙?随着您公司的扩张,这种情况会发生变化吗?应仔细考虑这些因素,因为它们可能会影响您产品的成功。 框架: 框架的选择可以显着影响整个开发过程,因此在做出有关如何设置的最终决定之前研究几个选项非常重要。为了做出此决定,请考虑以前成功的物联网项目和框架在那里被使用。正确的框架将与您一起成长,并可以为您的未来提供良好的服务。 硬件: 您为 IoT 项目选择的硬件将取决于您需要连接的传感器和设备。请务必选择一个对各种设备具有广泛支持并且能够轻松添加新设备的平台。 进行原型设计时,使用哪种开发套件有影响吗?确实如此。让我们看看三个最知名的之间的差异。 特征树莓派Arduino拿铁熊猫定义Raspberry Pi 是信用卡大小的单板。它将所有数据显示到监视器上,您可以使用标准键盘和鼠标对其进行操作。Arduino 是一个微控制器主板。基本上,它是一台简单的计算机,一次只能运行一个程序。最大的优点是它非常容易使用。单板计算机。它在概念上与 Raspberry Pi 类似,但价格明显更高,并且运行 Intel 处理器而不是 ARM。它能够运行 Windows 10 或 Linux。连接能力可以连接到蓝牙和互联网(通过以太网或 Wi-Fi)。Arduino 使用额外的扩展板来连接蓝牙和互联网。蓝牙和互联网(通过以太网或 Wi-Fi)都是可能的连接。编程语言Python、C、C++、Java、Scratch 和 RubyC、C++Python、C、C++、Java、Scratch 和 Ruby使用范围密集的计算,执行多项任务。 简单且重复的任务(例如读取环境数据并将其发送到社交媒体页面、打开和关闭门等)密集计算,同时执行许多任务。价格$35-4010-20 美元130 - 500 美元 2.2 概念验证 一旦工具就位,就可以开始开发了。您需要创建原型并与不同的利益相关者一起测试它们以获得反馈。通过尽早这样做,您可以发现潜在的问题并在它们变得成本过高之前纠正它们。 您的概念验证或 POC 需要表明您的“想法具有可行性”并且它将成为您业务的实用选择。如果它是一项新技术或服务,您需要确保它有市场。您不想花费数月或数年的时间来开发没有人愿意购买的产品。 2.3 原型设计 假设 POC 成功,您就需要认真开始开发。这将涉及创建详细的设计和规格,并与开发团队合作以确保一切都得到考虑。 *Indeema Software 开发的 UBreez box 原型 构建原型时,您需要确保它解决以下领域: 提供价值:原型需要以某种方式为客户或企业提供价值。它可能是提高效率、节省成本、改善用户体验或其他。 MVP:原型不需要满足 SRS 文档中概述的所有要求。在这个早期阶段,您可以构建一个最小可行的产品或 MVP,以展示最终产品的主要功能。 可用性:确保测试原型的可用性。如果您正在构建面向消费者的产品,这一点尤其重要。 安全:原型必须能够抵御攻击和未经授权的访问。 可测试:原型必须易于测试和调试。 2.4 项目规格 详细的需求文档包括所有必要的信息,以了解您的团队需要什么来满足客户的期望。 这是对如何进行物联网项目的开发和管理的总体概述。还有更多的步骤,但它们提供了您在项目早期阶段应该实现的目标的想法。 3. 项目初期可能面临哪些风险? 开发过程可能是漫长而艰巨的,但花时间把它做好是至关重要的。如果您走捷径,您最终可能会得到无法满足您的需求或期望的产品。Indeema Software 凭借其在该领域的经验,消除了重大风险,确保您的项目按时完成。然而,对于刚接触软件开发的客户来说,需要了解一些风险。 3.1 不称职的专家或不合适的团队 面向未来的设计始于面向未来用户的全面 UI/UX 设计。如果选择的公司或个人的技能有限,他们的经验不足可能会导致设计或实施不合格。 3.2 项目结构不准确,流程效率低下 物联网项目往往很复杂,有许多不同的组件需要协同工作。如果不全面了解项目的结构,就很难跟踪各个任务及其依赖关系。结果,项目很快就会变得效率低下,甚至难以管理。 3.3 沟通不畅 这可能是软件开发中最常见的问题。客户常常不清楚他们想要什么或在开发过程中需要改变什么。这可能会导致误解和代价高昂的延误。 3.4 忽视安全性 开发软件时,安全性始终应该是首要考虑的问题,但在物联网项目中尤其重要。黑客越来越多地将目标瞄准联网设备,因此保护您的数据和基础设施至关重要。在即将发表的文章中,我们将介绍我们的团队如何保证物联网项目的安全性。注册更新以了解更多信息! 这些只是启动物联网项目的企业最常见的一些错误。通过避免这些错误,您将增加成功的机会并避免代价高昂的挫折。 结论 大多数企业面临的挑战是,他们没有内部专业知识来从头到尾承担物联网项目。这就是我们的团队可以提供帮助的地方。 我们在物联网开发的各个方面都拥有丰富的经验,从战略和规划到执行和交付。我们非常乐意讨论您的具体需求并了解我们如何提供帮助。只需联系我们,我们就会开始。 --- ### 732. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 近年来,随着信息技术的迅猛发展和工业化进程的加速推进,我国工业控制系统网络安全面临着前所未有的挑战。工业控制系统普遍存在安全防护措施不完善、漏洞众多的问题,容易受到黑客攻击、恶意软件入侵等威胁。不仅如此,工业控制系统往往与互联网相连,网络边界不清晰,容易受到外部攻击,对系统运行稳定性产生严重影响。工业控制系统作为关键基础设施的重要组成部分,其稳定运行对于保障国家经济安全和社会稳定具有重要意义。为适应新型工业化发展形势,提高我国工业控制系统网络安全保障水平,指导工业企业开展工控安全防护工作,以高水平安全护航新型工业化高质量发展,工业和信息化部印发《工业控制系统网络安全防护指南》,全文如下:一、安全管理 (一)资产管理1.全面梳理可编程逻辑控制器(PLC)、分布式控制系统(DCS)、数据采集与监视控制系统(SCADA)等典型工业控制系统以及相关设备、软件、数据等资产,明确资产管理责任部门和责任人,建立工业控制系统资产清单,并根据资产状态变化及时更新。定期开展工业控制系统资产核查,内容包括但不限于系统配置、权限分配、日志审计、病毒查杀、数据备份、设备运行状态等情况。2.根据承载业务的重要性、规模,以及发生网络安全事件的危害程度等因素,建立重要工业控制系统清单并定期更新,实施重点保护。重要工业控制系统相关的关键工业主机、网络设备、控制设备等,应实施冗余备份。(二)配置管理3.强化账户及口令管理,避免使用默认口令或弱口令,定期更新口令。遵循最小授权原则,合理设置账户权限,禁用不必要的系统默认账户和管理员账户,及时清理过期账户。4.建立工业控制系统安全配置清单、安全防护设备策略配置清单。定期开展配置清单审计,及时根据安全防护需求变化调整配置,重大配置变更实施前进行严格安全测试,测试通过后方可实施变更。(三)供应链安全5.与工业控制系统厂商、云服务商、安全服务商等供应商签订的协议中,应明确各方需履行的安全相关责任和义务,包括管理范围、职责划分、访问授权、隐私保护、行为准则、违约责任等。6.工业控制系统使用纳入网络关键设备目录的PLC等设备时,应使用具备资格的机构安全认证合格或者安全检测符合要求的设备。(四)宣传教育7.定期开展工业控制系统网络安全相关法律法规、政策标准宣传教育,增强企业人员网络安全意识。针对工业控制系统和网络相关运维人员,定期开展工控安全专业技能培训及考核。二、技术防护 (一)主机与终端安全8.在工程师站、操作员站、工业数据库服务器等主机上部署防病毒软件,定期进行病毒库升级和查杀,防止勒索软件等恶意软件传播。对具备存储功能的介质,在其接入工业主机前,应进行病毒、木马等恶意代码查杀。9.主机可采用应用软件白名单技术,只允许部署运行经企业授权和安全评估的应用软件,并有计划的实施操作系统、数据库等系统软件和重要应用软件升级。10.拆除或封闭工业主机上不必要的通用串行总线(USB)、光驱、无线等外部设备接口,关闭不必要的网络服务端口。若确需使用外部设备,应进行严格访问控制。11.对工业主机、工业智能终端设备(控制设备、智能仪表等)、网络设备(工业交换机、工业路由器等)的访问实施用户身份鉴别,关键主机或终端的访问采用双因子认证。(二)架构与边界安全12.根据承载业务特点、业务规模、影响工业生产的重要程度等因素,对工业以太网、工业无线网络等组成的工业控制网络实施分区分域管理,部署工业防火墙、网闸等设备实现域间横向隔离。当工业控制网络与企业管理网或互联网连通时,实施网间纵向防护,并对网间行为开展安全审计。设备接入工业控制网络时应进行身份认证。13.应用第五代移动通信技术(5G)、无线局域网技术(Wi-Fi)等无线通信技术组网时,制定严格的网络访问控制策略,对无线接入设备采用身份认证机制,对无线访问接入点定期审计,关闭无线接入公开信息(SSID)广播,避免设备违规接入。14.严格远程访问控制,禁止工业控制系统面向互联网开通不必要的超文本传输协议(HTTP)、文件传输协议(FTP)、Internet远程登录协议(Telnet)、远程桌面协议(RDP)等高风险通用网络服务,对必要开通的网络服务采取安全接入代理等技术进行用户身份认证和应用鉴权。在远程维护时,使用互联网安全协议(IPsec)、安全套接字协议(SSL)等协议构建安全网络通道(如虚拟专用网络(VPN)),并严格限制访问范围和授权时间,开展日志留存和审计。15.在工业控制系统中使用加密协议和算法时应符合相关法律法规要求,鼓励优先采用商用密码,实现加密网络通信、设备身份认证和数据安全传输。(三)上云安全16.工业云平台为企业自建时,利用用户身份鉴别、访问控制、安全通信、入侵防范等技术做好安全防护,有效阻止非法操作、网络攻击等行为。17.工业设备上云时,对上云设备实施严格标识管理,设备在接入工业云平台时采用双向身份认证,禁止未标识设备接入工业云平台。业务系统上云时,应确保不同业务系统运行环境的安全隔离。(四)应用安全18.访问制造执行系统(MES)、组态软件和工业数据库等应用服务时,应进行用户身份认证。访问关键应用服务时,采用双因子认证,并严格限制访问范围和授权时间。19.工业企业自主研发的工业控制系统相关软件,应通过企业自行或委托第三方机构开展的安全性测试,测试合格后方可上线使用。(五)系统数据安全20.定期梳理工业控制系统运行产生的数据,结合业务实际,开展数据分类分级,识别重要数据和核心数据并形成目录。围绕数据收集、存储、使用、加工、传输、提供、公开等环节,使用密码技术、访问控制、容灾备份等技术对数据实施安全保护。21.法律、行政法规有境内存储要求的重要数据和核心数据,应在境内存储,确需向境外提供的,应当依法依规进行数据出境安全评估。三、安全运营 (一)监测预警22.在工业控制网络部署监测审计相关设备或平台,在不影响系统稳定运行的前提下,及时发现和预警系统漏洞、恶意软件、网络攻击、网络侵入等安全风险。23.在工业控制网络与企业管理网或互联网的边界,可采用工业控制系统蜜罐等威胁诱捕技术,捕获网络攻击行为,提升主动防御能力。(二)运营中心24.有条件的企业可建立工业控制系统网络安全运营中心,利用安全编排自动化与响应(SOAR)等技术,实现安全设备的统一管理和策略配置,全面监测网络安全威胁,提升风险隐患集中排查和事件快速响应能力。(三)应急处置25.制定工控安全事件应急预案,明确报告和处置流程,根据实际情况适时进行评估和修订,定期开展应急演练。当发生工控安全事件时,应立即启动应急预案,采取紧急处置措施,及时稳妥处理安全事件。26.重要设备、平台、系统访问和操作日志留存时间不少于六个月,并定期对日志备份,便于开展事后溯源取证。27.对重要系统应用和数据定期开展备份及恢复测试,确保紧急时工业控制系统在可接受的时间范围内恢复正常运行。(四)安全评估28.新建或升级工业控制系统上线前、工业控制网络与企业管理网或互联网连接前,应开展安全风险评估。29.对于重要工业控制系统,企业应自行或委托第三方专业机构每年至少开展一次工控安全防护能力相关评估。(五)漏洞管理30.密切关注工业和信息化部网络安全威胁和漏洞信息共享平台等重大工控安全漏洞及其补丁程序发布,及时采取升级措施,短期内无法升级的,应开展针对性安全加固。31.对重要工业控制系统定期开展漏洞排查,发现重大安全漏洞时,对补丁程序或加固措施测试验证后,方可实施补丁升级或加固。四、责任落实 32.工业企业承担本企业工控安全主体责任,建立工控安全管理制度,明确责任人和责任部门,按照“谁运营谁负责、谁主管谁负责”的原则落实工控安全保护责任。33.强化企业资源保障力度,确保安全防护措施与工业控制系统同步规划、同步建设、同步使用。 --- ═══════════════════════════════════════════ ## 工业物联网 ═══════════════════════════════════════════ ### 733. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 产品概述 MODBUS CAS01 是一套基于Web的行业通用自动化控制系统,以机房动力环境监控为核心场景,同时适用于多种工业自动化控制需求。系统具备数据采集、历史记录查询、多级告警提醒、定时任务管理、工单管理、多条件多逻辑自动控制六大核心功能模块,通过RS485 Modbus采集现场设备数据,Web端呈现可视化的监控仪表盘和控制面板。 六大功能模块 模块功能描述 数据采集通过Modbus RTU/TCP采集温湿度、电量、开关量等现场数据,支持自定义设备驱动 历史记录全部采集数据自动存储到数据库,支持按时间段查询、曲线图表展示、CSV/Excel导出 多级告警自定义告警规则(阈值/变化率/状态位),支持微信/短信/邮件/声光四种告警方式 定时任务Cron表达式定义定时执行的操作(如每天8点巡检全部设备),支持日志记录 工单管理告警触发自动生成工单→分配给值班人员→处理完成闭环→记录入知识库 自动控制多条件组合触发自动控制(如温度>30°C+湿度<40%→启动空调加湿模式) 监控看板 Web端仪表盘以动态图表呈现:机房3D温度热力图、设备在线状态拓扑图、24小时温湿度趋势曲线、今日告警汇总列表、本月能耗统计饼图。 系统架构 前端:Vue.js Web控制台,响应式设计(PC/平板/手机适配)后端:Spring Boot微服务 + MySQL数据库通信层:Modbus RTU/TCP驱动 + MQTT数据总线部署:支持Windows/Linux服务器,或MG101边缘网关嵌入式部署 适用场景 数据中心机房:UPS/空调/配电/温湿度/门禁/漏水全面监控厂区动力房:空压机/冷冻机组/锅炉/配电系统的集中监控智能楼宇:整栋建筑的设备运行状态监控和管理🛒 购买与咨询 本文介绍的莫德巴斯(MODBUS)产品均可在官方渠道购买。 📍 莫德巴斯智能 | 中国重庆江北观音桥朗晴广场A塔12楼 📞 电话:+86-023-65218879 | 值班手机:+86-17723047591 📧 邮箱:admin@modbus.com | 🌐 官网:www.modbus.cn 📱 微信小程序搜索 「modbus调试助手」 了解更多产品信息 --- ### 734. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着工业 4.0 的兴起,工业物联网 (IIoT) 正在迅速改变工业控制和自动化领域。IIoT 通过将互联设备、数据分析和人工智能相结合,为提高生产效率、降低成本和优化运营提供了新的可能性。本文将探讨 IIoT 如何接管 SCADA 和 PLC 等传统控制系统,并分析其对数字化转型的关键影响。 1. 引言 1.1 工业控制系统的演变 回顾工业控制系统的历史,我们可以看到从机械控制到电气控制,再到如今的数字化控制,经历了三次重大变革。 机械控制时代: 主要依靠机械装置和仪表进行控制,缺乏灵活性,且难以实现远程控制。 电气控制时代: 以可编程逻辑控制器 (PLC) 为代表,控制更加灵活,但也存在数据孤岛和互操作性差的问题。 数字化控制时代: 以 IIoT 为代表,通过互联设备、数据分析和人工智能,实现更智能、更全面的工业控制和自动化。 1.2 SCADA 和 PLC 简介 SCADA (Supervisory Control and Data Acquisition): 监控和数据采集系统,主要用于电力、水利、石油和天然气等行业,实现对生产过程的监控和管理。 PLC (Programmable Logic Controller): 可编程逻辑控制器,是一种数字运算装置,用于工业控制领域,可以根据程序执行逻辑运算、顺序控制、定时控制、计数控制等操作。 2. IIoT 如何接管 SCADA 和 PLC 2.1 可扩展性和互操作性 SCADA 系统 的可扩展性有限,难以满足日益增长的数据量和设备数量的需求。 IIoT 则具有天然的可扩展性,可以轻松连接和管理大量设备,并支持多种协议和标准,实现互操作性。 2.2 数据分析和人工智能 SCADA 系统 主要用于数据采集和监控,缺乏深入的数据分析能力。 IIoT 则可以通过大数据分析和人工智能,实现对设备状态、生产过程和产品质量的预测性维护和优化。 2.3 灵活性和敏捷性 SCADA 系统 的架构相对固定,难以适应快速变化的市场需求。 IIoT 则具有灵活性和敏捷性,可以快速部署和应用,满足个性化需求。 3. IIoT 对数字化转型的影响 3.1 提高生产效率 IIoT 可以通过优化生产流程、减少停机时间和提高资源利用率,显著提高生产效率。 3.2 降低成本 IIoT 可以帮助企业降低运营成本、维护成本和能源消耗,提升盈利能力。 3.3 优化运营 IIoT 可以实现对设备和生产过程的实时监控和分析,帮助企业优化运营决策,提升竞争力。 3.4 促进智能制造 IIoT 是智能制造的关键技术之一,可以推动制造业转型升级,实现智能化生产。 iot industry 4.0 artificial intelligence technology concept.Smart factory using trending automation robotic Automotive manufacturing blockchain help to increase the product, efficiency , quality, 4. 结论 IIoT 作为新一代工业控制系统,具有强大的优势和潜力,将逐步接管 SCADA 和 PLC 等传统系统,成为数字化转型和智能制造的关键驱动力。 5. 未来展望 随着 IIoT 技术的不断发展和完善,未来将更加智能化、互联化和安全化,并将与 5G、云计算、人工智能等技术融合,为工业领域带来更大的变革和创新。 --- ### 735. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 PLC4X 专业介绍 PLC4X(可编程逻辑控制器交互协议)是一套开源库,用于与各种可编程逻辑控制器(PLC)进行通信。由Apache Software Foundation维护,PLC4X旨在简化和标准化与PLC的通信,为工业自动化领域提供强大的工具。 官网:https://plc4x.apache.org/ GitHub:https://github.com/apache/plc4x 核心特性 多协议支持: PLC4X支持多种主流协议,包括Modbus、KNX、OPC UA等,使其成为一个通用的PLC通信解决方案。 驱动程序架构: 通过模块化的驱动程序体系结构,PLC4X能够适应不同的PLC设备和协议,实现了高度的灵活性和可扩展性。 服务器与代理: 引入PLC4X-Server和PLC4X-Driver,允许使用服务器作为与PLC通信的代理,为系统集成提供更多选项。 结构化类型支持: PLC4X引入了PlcValues的结构化类型,使得对象PLC映射(OPM)变得更加灵活,支持在运行时进行变量替换和写入。 集成模块: 提供了与Apache Kafka Connect、NiFi、Logstash等集成模块,使得PLC4X能够轻松集成到不同的数据流处理和分析平台中。 发展历程 0.11.0版本: 引入PLC4X-Server和PLC4X-Driver,Modbus驱动程序支持更多变体,KNX驱动程序更新支持新的ETS版本。 0.10.0版本: 重构和清理代码生成,支持更复杂的协议,提升了PLC4C的兼容性。 0.9.1版本: 修复CVE-2021-43083,解决PLC4C中的缓冲区溢出问题。 0.5.0版本: 引入新生成的驱动程序,支持AB-ETH协议,同时提供了Apache Kafka Connect、NiFi等集成模块。 0.3.0版本: 引入对象PLC映射(OPM)、plc-scraper模块和新的连接池组件。 0.1.0版本: PLC4X正式成为顶级项目的第一个版本,引入了PlcConnection的ping方法。 应用场景 工业自动化: 在制造业和工业自动化领域,PLC4X为设备和系统之间的通信提供了一种灵活、可扩展的解决方案。 数据流处理: 集成到流处理平台,如Apache Kafka和NiFi,PLC4X能够将实时PLC数据融入大数据处理流程。 系统集成: PLC4X的模块化结构使其成为系统集成的理想选择,能够轻松与其他工业控制系统集成。 结语 PLC4X作为开源PLC通信的先进工具,持续发展并不断引入新功能和改进。其灵活性、多协议支持以及与流处理平台的集成,使其在工业自动化和数据处理领域都展现出强大的潜力。通过PLC4X,用户能够更轻松地实现PLC设备的集成和数据交换,推动工业数字化转型的进程。 --- ### 736. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、Modbus RTU 指令的使用 二、Modbus RTU 主站编程 主站编程需调用 Modbus Comm_Load 和 Modbus_Master指令: Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行组态; Modbus Master 指令可通过由 Modbus Comm Load 指念组态的端口作为 Modbus 主站进行通信。 Modbus RTU 主站指令 Modbus Comm Load 参数 引脚说明REQ上升沿触发PORT通信端口的硬件标识符BAUD波特率选择: 3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200PARITY奇偶检验选择: 0-无; 1-奇校验; 2-偶校验FLOW_CTRL流控制选择: 0-(默认值) 无流控制RTS_ON_DLYRTS 延时选择: 0- (默认值) 三、详细说明 Modbus RTU 主站编程 1.Modbus RTU 主站指令 Modbus Comm_Load 参数 RESP_TO响应超时: 默认值= 1000 ms。Modbus_Master 允许用于从站响应的时间(以毫秒为单位)。MB_DB对Modbus_Master或 Modbus_Slave 指令的背景数据块的引用。 MB_DB 参数必须与Modbus_Master 或Modbus_Slave 指今中的静态变量MB_DB参数相连。DONE如果上一个请求完成并且没有错误,DONE位将变为 TRUE并保持一个周期。ERROR如果上一个请求完成出错,则ERROR位将变为TRUE并保持一个周期。STATUS参数中的错误代码仅在ERROR=TRUE的周期内有效。STATUS端口组态错误代码,请参考 TIAPortal 软件在线帮助或S7-1200系统手册 2.Modbus RTU 主站指令 Modbus Master 参数 引脚说明EN使能端REQTRUE=请求向 Modbus 从站发送数据,建议采用上升沿触发MB_ADDRModbus RTU 从站地址。默认地址范围:0至247;扩展地址范围:至65535。值0被保留用于将消息广播到所有 Modbus 从站MODE模式选择: 指定请求类型(读取或写入)。DATA ADDR从站中的起始地址: 指定 Modbus 从站中将供访问的数据的起始地址DATA_LEN数据长度:指定要在该请求中访问的位数或字数。DATA PTR数据指针: 指向要进行数据写入或数据读取的 M区或数据块地址。DONE完成位:上一请求已完成且没有出错后,DONE 位将保持为 TRUE一个扫描周期时间。BUSYFALSE-Modbus Master 无激活命令:TRUE -Modbus Master 命令执行中。ERROR如果上一个请求完成出错,则ERROR位将变为TRUE 并保持一个周期。STATUS参数中的错误代码仅在ERROR=TRUE的周期内有效。STATUS端口组态错误代码,请参考 TIA Portal 软件在线帮助或S7-1200 系统手册。 3.MB MODE、MB DATA ADDR、MB DATA LEN、Modbus RTU功能码等之间的关系 MB_MODEMB_DATA ADDRMB_DATA_LENModbus RTU 功能码操作和数据01-99991-200001读取输出位每个请求1-2000个位010001-199991-200002读取输入位每个请求1-2000个位0.40001-49999(等同于400001-409999.400001-4655351 - 12503读取保持寄存器每个请求1-125个字030001-399991 - 12504读取输入字每个请求1-125个字110001 - 19999105写入输出位每个请求1位1.40001-49999(等同于400001-409999.400001-465535106写入保持寄存器每个请求1个字110001 - 199992 -196815写入多个输出位每个请求2-1968个位1.40001-49999(等同于400001-409999.400001-4655352-12316写入多个保持寄存器每个请求2-123个字210001 - 199991 - 196815写入输出位每个请求1-1968个位2.40001-49999(等同于400001-409999.400001-4655351 -12316写入保存寄存器每个请求1-123个字1111详情见下文80108详情见下文81108详情见下文1040-655351-12504读取输入字每个请求1-125个字 11 (操作和数据) : 读取服务器的状态字和事件计数器: 1.状态字反映了处理的状态(0-未处理,0xFFFFF-正在处理里); 2.Modbus请求成功执行时,事件计数器将递增。如果执行Modbus功能时出错则服务器将发送消息但不会递增事件计数器。80(操作和数据) : 通过诊断代码0x0000检查服务器状态(返回循环测试-服务器发回请求 每次调用1个字81 (操作和数据) : 通过诊断代码0x000A复位服务器的事件计数器:每次调用1个字 Modbus RTU 从站编程 引脚说明MB ADDRModbus 从站的标准寻址: 标准寻址范围(1到247),扩展寻址范围(0到65535)MB_HOLD_REG数据指针,指向 Modbus 保持寄存器的地址,Modbus 保持寄存器可以为 M存储区或DB 数据区NDR可用的新数据:>FALSE: 无新数据。>TRUE: 表示新数据已由 Modbus 主站写入,如果上一个请求完成并且没有错误,NDR位将变为 TRUE 并保持一个周期。DR读取数据:>FALSE:无新数据。>TRUE:表示该指令已将 Modbus 主站接收到的数据存储在目标区域中。如果上一个请求完成并且没有错误,DR 位将变为 TRUE 并保持一个周期。ERROR如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。 如果执行因错误而终止,则STATUS 参数中的错误代码仅在ERROR=TRUE的周期内有效.STATUS错误代码 2.Modbus RTU 从站数据区定义 地址区定义说明输出位Q0.0 开始Q0.0为地址1,Q0.1为地址 2,Q0.7为地址 8,Q1.0为地址 9...输入位I0.0开始I0.0为地址10001,I0.1 为地址 10002,I0.7 为地址 10008,I1.0 为地10009…输入寄存器IW0 开始IW0 为地址30001,IW2 为地址 30002,IW4 为地址 30003…保持寄存器由MB_HOLD_REG定义指针指向的第一个字为 40001,第二个字为40002.1.例如:MB_HOLD REG为 P#M100.0 WORD8,则 MW100 为 40001,MW102 为 40002,MW104 为 40003...MW114为400082.例如: MB_HOLD_REG为优化 DB 中 INT 数组[0...7],数组名为“XXX”AA,则“XXX”.AA[0]为40001,“XXX”AA[1]为40002,“XXX”.AA[2]为40003.“XXX.AA[7]为40008 --- ### 737. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 概述 在自动化和控制系统中,Modbus TCP协议被广泛用于PLC之间的通信。本文将探讨如何在两台S7-1200 PLC之间实现Modbus TCP通信,重点介绍客户端的编程和通信过程。 实验环境设置 操作系统: WIN7 SP1 专业版 64 位 编程软件: STEP 7 Professional V13 SP1 Update 5 系统硬件: CPU1212C 6ES7212-1AE40-0XB0 V4.1 和 CPU1215C 6ES7215-1AG40-0XB0 V4.1 Modbus TCP通信基本配置 客户端: CPU 1212C 服务器: CPU 1215C IP 地址: 客户端 192.168.0.6, 服务器 192.168.0.4 端口号: 客户端 0 服务端 502 硬件标识符: 64 硬件标识符是在“设备组态”中,双击PROFINET 接口,然后在“属性中的“硬件标识符”中查看。 S7-1200作为客户端的编程及通信过程 S7-1200 客户端侧需要调用 MB CLIENT 指令块。 该指令块主要完成客户机和服务器的 TCP 连接、发送命令消息接收响应以及控制服务器断开的工作任务。 调用 MB_CLIENT 将MB_CLIENT 指令块在程序块>OB1”中程序段里调用,调用时会自动生成背景 DB,点击确定即可 MB_CLIENT 各脚定义: REQ: 与服务器之间的通信请求,上升沿有效。 DISCONNECT: 通过该参数,可以控制与ModbusTCP服务器建立和终止连接。0:建立连接;1:断开连接。 MB MODE: 选择Modbus请求模式(读取、写入或诊断)。 MB_DATA_ADDR: 由"MB_CLIENT“指令所访问数据的起始地址。 MB DATA LEN:数据长度:数据访问的位或字的个数。 MB_DATA_PTR: 指向Modbus数据寄存器的指针。 CONNECT:指向连接描述结构的指针。使用TCON_IP_v4数据类型。 DONE: 最后一个作业成功完成,立即将输出参数DONE置位为"1"。 BUSY:作业状态位:0:无正在处理的"MB_CLIENT"作业;1:"MBCLIENT'作业正在处理。 ERROR:错误位: 0:无错误:1:出现错误,错误原因查看STATUS。 STATUS: 指令的详细状态信息。 CONNECT 引脚的指针类型 创建TCON_IP_v4结构: 需要创建一个全局数据块 DB2,并在其中定义TCON IP v4数据结构,用于存储通信配置。 双击打开 DB2,定义变量名称为“aa”,数据类型为TCON IP v4” (可将 TCON IP V4 拷贝到对话框中) ; 点击“回车”按键,该数据类型结构创建完毕 TCON IP v4数据结构的引脚定义说明如下: 注意: CONNECT引脚的填写需要用符号寻址的方式 TCON_IP_v4 是系统数据类型,不是在 PLC 数据类型中创建 LocalPort 一般使用默认值 0,意思是本地使用随机端口 创建 MB_DATA_PTR 数据缓冲区 1.创建一个全局数据块 DB3,创建方法可以参考图 2,连同上步创建的 DB2 位于 CPU 程序块中; 生成的两个 DB 块名称: 2.建立一个 Word 数组的数据类型,以便通信中存放数据;MB_DATA_PTR 数据缓冲区结构: 注意 指定的数据缓冲区可为 DB 块或M存储区地址中; DB 块可为优化的数据块,也可为标准的数据块结构; 若为优化的数据块结构,必须是基本数据类型数组; 若为标准的数据块结构,以指针的方式填写该引脚; MB_DATA_PTR 指定的数据缓冲区必须足够大,至少达到MB_DATA_LEN 个位 (访问输入位、输出位时) 或字 (访问保持寄存器、输入字时) ; 本文以标准的数据块 (默认) 为例进行编程。 修改DB块属性为标准的块结构: 客户端侧完成指令块编程 调用 MB_CLIENT 指令块,使用功能码 03 从服务器中读取 2个保持寄存器的值,MB_MODE =0,MB_DATA_ADDR =40001,MB_DATA_LEN =2 注意: 对于本例来说,伙伴是另一个 S7-1200,实际上也可换做任意支持 Modbus TCP 服务器的设备,只需在参数引脚设置合适值,并在 CONNECT 设置正确通信参数即可。 如果 S7-1200作为 Modbus TCP 客户端需要同时连接多个 Modbus TCP 服务器,那么需要使用多个 MB_CLIENT; 如果一个 Modbus TCP 连接里有多个通信作业,且每个作业调用一次 MB_CLIENT ,那么每次调用必须使用相同的背景数据块,CONNECT 也使用相同的参数 下载与测试 完成编程后,将整个项目下载到S7-1200 PLC。在服务器侧准备就绪后,通过触发MB CLIENT指令块的REQ引脚的上升沿来启动通信。读取到的数据将被存放在MBDATA PTR引脚指定的DB块变量中。 结论 通过以上步骤,两台S7-1200 PLC之间的Modbus TCP通信可以被成功实现。客户端的编程涉及到详细的指令块配置和数据结构的定义,这对于实现高效且可靠的通信至关重要。这种通信方法在工业自动化中的应用非常广泛,为设备间的数据交换提供了一个稳定的平台。 --- ### 738. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 概述 在S7-1200 Modbus RTU通信网络中,当包含多个从站站点时,轮询必须逐一读写各站点数据。本文将探讨影响整体轮询时间的因素,并提出相应的优化策略和故障处理方法。 影响轮询时间的关键因素 波特率设置:波特率越高,数据传输速度越快,从而缩短轮询时间。 通信数据量:每个站点的通信数据量越小,指令执行越快,轮询时间相应缩短。 站点数量:站点越少,所需处理的数据量越小,轮询时间更短。 通信距离:通信距离越短,可设置的波特率越高,有利于减少轮询时间。 各站点连接时间:连接时间越短,整体轮询时间越短。 各站点连接时间的优化 在Modbus RTU通信中,以下参数与“各站点连接时间”紧密相关: 从站响应时间 (RESPTO):指从站对主站请求的响应时间。 重试次数 (RETRIES):指初次连接无响应后,再次尝试连接的次数。 主站定时参数 (Blocked_Proc_Timeout):用于控制主站在执行下一个功能块或轮询下一个站点之前的等待时间。 “各站点连接时间”的设置参数 1.信号干扰、硬件质量引起的从站掉站、工程需暂时关闭站点等会增加“各站点连接时间”,使通信系统轮询时间大大延长; 2.ModbusRTU通信中与“各站点连接时间”相关的参数: 从站响应时间RESP_TO; 重试次数RETRIES; 主站定时参数Blocked_Proc_Timeout。 重试次数RETRIES 1.RETRIES参数的设置方法 在功能块MB_COMM_LOAD背景数据块可设置RETRIES参数 主站在返回无响应错误代码0x80C8 前的重试次数(默认2次) 2.RETRIES参数的含义 RETRIES参数表示,初次连接无响应后,再次连接的次数。以默认2次为例,实际尝试连接次数为3次; 更改参数后,需要重新使能MB_COMM_LOAD功能块的REQ管脚,否则更改参数不生效。 主站定时 Blocked_Proc_Timeout 1.Blocked_ProcTimeout参数的设置方法 若Done及Error均未置1时,需提供定时间在时间到达后置位以便执行下个功能块或轮询下个站点。 MB_Master背景数据块提供了主站定时参数(范围(0S到5.5S) 2.从站响应时间参数与主站定时参数的区别 从站响应时间参数RESP_TO针对从站响应时间,主站定时参数Blocked_Proc_Timeout则是针对主站的定时时间; 主站定时可防止单个MB_Master指令独占/锁定对端口的访问 Modbus延迟常见问题 1.由于某一个从站掉站,引起轮询的周期时间延长这种情况下该如何减小此影响? S7-1200可同时调整从站响应时间参数和重试次数参数,用于减小Modbus从站掉站/暂时关闭而增大的轮询周期时间; 可根据项目实际工况适当减小从站响应时间RESP_TO。由于这一时间无法估算,建议多次测试,确认每个从站都能够正常稳定连接情况下,将此时间设置得尽量小。 以设置500ms为例:将RETRIES设置为0。即对于每个从站主站只尝试连接一次,总计耗时500ms。 2.MB_MASTER报错8200(端口正忙于处理传送请求)这种情况下该如何处理? 该情况DONE/ERROR未置位,与后续MB_MASTER冲突导致; 确保接通下个MBMASTER时间大于Blocked Proc Timeout所设定的时间(默认时间为3S) 结论 通过对波特率设置、通信数据量、站点数量、通信距离、各站点连接时间等关键因素的优化,可以显著提高Modbus RTU通信系统的效率。同时,合理设置从站响应时间、重试次数和主站定时参数,可以有效处理通信故障,保证系统的稳定运行。这对于提高工业自动化系统的性能和可靠性具有重要意义。 --- ### 739. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 (一)概述 Modbus具有两种串行传输模式:分别为ASCII和RTU。Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,其中0为广播地址,从站的实际地址范围为1-247。Modbus RTU通信以主从的方式进行数据传输,在传输的过程中Modbus RTU主站是主动方,即主站发送数据请求报文到从站,Modbus RTU从站返回响应报文。S7-1200以下模块支持 Modbus RTU通信: 通信模块/通信板订货号CM1241 RS2326ES7241-1AH32-0XB0CM1241 RS422/4856ES7241-1CH32-0XB0CB 1241 RS4856ES7241-1CH30-1XB0 注意: (1)使用通信模块CM 1241 RS232作为Modbus RTU主站时,只能与一个从站通讯。(2)使用通信模块CM 1241 RS485作为Modbus RTU主站时,则允许建立最多与 32 个从站的通讯。 (3)使用通信板CB 1241 RS485时,CPU 固件必须为 V2.0 或更高版本,且使用软件必须为STEP 7 Basic V11 或STEP 7 Professional V11 以上更高版本。 (二)Modbus RTU指令版本与限制 随着博途软件和 S7-1200 CPU 固件的不断更新,S7-1200 Modbus RTU 指令也出现了不同的版本。用户需要根据使用的软件和硬件,正确选择使用符合要求的 S7-1200 Modbus RTU 指令来实现 Modbus RTU 通信,其软件和硬件要求和指令版本说明如下。 (1)博途中的 S7-1200 Modbus RTU指令 博途中提供了2个版本的 Modbus RTU指令。如下图 1 所示: 早期版本的 Modbus RTU 指令(图1. 中 MODBUS (V2.2))仅可通过 CM1241 通信模块或 CB1241 通信板进行 Modbus RTU 通信。 新版本的 Modbus RTU 指令(图1. 中 MODBUS(RTU) V3.0)扩展了 Modbus RTU 的功能,该指令除了支持 CM1241 通信模块、CB1241 通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的 PTP 通信模块实现 Modbus RTU 通信。 (2)新版本 Modbus RTU 指令的使用限制条件新版本 Modbus RTU 指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,需要满足如下条件:a. S7-1200 CPU 的固件版本不能低于V4.1b. CM1241通信模块 V2.1 以上或 CB1241 图1. 两个版本 Modbus RTU 指令 (三)常见问题 (1)S7-1200 是否支持 Modbus ASCII 通信模式? 西门子不提供支持上述通信模式的的现成指令,需要用户自己用自由口模式编程。 (2)Modbus RTU指令V1和V2两个版本有什么区别? Modbus RTU指令版本 V2 将参数 “REQ” 和 “DONE” 添加到“MB_COMM_LOAD”指令。而且,“MB_MASTER(图片)”和“MB_SLAVE ”指令的“MB_ADDR ”参数现在允许一个 UInt 值以进行扩展寻址。 (3)同一CPU程序中是否可以同时使用V1和V2两个不同版本的Modbus RTU指令? 不能在同一CPU 程序中同时使用V1(V1.x)和V2(V2.y)指令版本。用户程序的 Modbus 指令必须具有相同的主版本号;主版本组内的各个指令可具有不同的次版本号。 (4)S7-1200 通信模块CM1241是否可作为Modbus RTU主站或作为Modbus RTU从站? 对S7-1200 通信模块CM1241组态并编程调用“MB_COMM_LOAD”指令,可将其设置为Modbus RTU通信模式。通过编程调用“MB_MASTER”指令,S7-1200 通信模块CM1241可作为Modbus RTU主站,或调用“MB_SLAVE”指令,S7-1200 通信模块CM1241可作为Modbus RTU从站。 注意:无论S7-1200 通信模块CM1241作为Modbus RTU主站还是从站,都需要调用“MB_COMM_LOAD”指令进行编程。 (5)S7-1200 CM1241/CB1241 Modbus RTU 通信是否支持两位停止位? 支持。 注意:S7-1200 CM1241/CB1241属性里可以设置停止位, 但是该模块用于 Modbus 通信时,此设置的停止位无效, 需要在 Modbus_Commload 指令的背景 DB 里 Static 修改 STOP_BITS停止位数值为 2。如下图 2-3所示: 图2. CM1241 配置停止位参数 Modbus_Commload 指令的背景 DB 里 Static 修改 STOP_BITS停止位数值为 2(默认值=1) 图3. 修改 Modbus RTU 通信停止位 第二部分:V3版指令功能 (一)Modbus RTU指令概述 博途V13 SP1版本软件中提供了2个版本的Modbus RTU指令: 图1. 两个版本Modbus RTU指令 (1)早期版本的Modbus RTU指令(图1. 中 MODBUS (V2.2))仅可通过CM1241通信模块或CB1241通信板进行Modbus RTU通信。(2)新版本的 Modbus RTU指令(图1. 中 MODBUS(RTU) V3.0)扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PTP通信模块实现Modbus RTU通信。 (3)新版本 Modbus RTU指令所支持的PTP模块如下图2所示: 图2. 新版本 Modbus RTU指令所支持的PTP模块 (二)Modbus RTU指令实例环境介绍 新版本Modbus RTU指令中包含Modbus RTU 主站指令和从站指令。本文以 CPU1217C+CM1241 RS422/485+ET200SP CM PTP 模块为例,介绍新版本 Modbus RTU 指令主从通信的编程步骤。其中CPU 机架CM1241 RS422/485作为Modbus RTU从站,分布式机架ET200SP 中 CMPTP 模块作为Modbus RTU主站。 1、网络结构图如下: 图3. Modubus RTU 网络通信结构图 2、本项目中使用到的硬件和软件如下: (1)硬件:① CPU1217C (订货号:6ES7 217-1AG40-0XB0),固件版本V4.1.3② CM1241 RS422/485模块 (订货号:6ES7 241-1CH32-0XB0),固件版本V2.1③ 24V 电源PS307(订货号:6ES7307-1KA02-0AA0)④ ET200 SP IM155-6PN HF(订货号:6ES7155-6AU00-0CN0)⑤ CM PTP模块(订货号:6ES7137-6AA00-0BA0) (2)软件:① 博途SP1 UP 9 (三)实例之设备组态 1、组态CM1241 RS422/485模块 (1)打开设备视图,添加S7-1200CPU,并在硬件目录里找到“通信模块”→“点到点”→“CM1241(RS422/485)”,拖拽此模块至CPU左侧即可,如下图4所示: 图4. 添加 CM 1241 RS422/485模块 注意:固件版本>=V2.1 的CM 1241 RS422/485模块,才支持新版本Modbus RTU指令。 (2)接下来,在“设备视图”中用鼠标选中CM1241(RS422/485)模块,在“属性”→“端口组态”中配置此模块硬件接口参数,本例以传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1为例。如CM 1241 端口组态设置如下图5所示: 图5. CM1241 RS422/485 模块端口组态 (3)最后在“硬件标识符”里确认一下硬件标识符为269(该参数在程序编程中会被使用),如下图6所示: 图6 硬件标识符 (4)另外,S7-1200 还提供了系统和时钟存储器功能,为了便于后续指令,建议使能该功能。在CPU “属性”→“常规”→“系统和时钟存储器”使能系统和时钟存储器功能,如图7所示。 图7. 系统和时钟存储器功能 2、组态ET200 SP CM PtP 模块 (1)插入一个ET200SP分布式站点,打开网络视图并拖入一个ET200SP站点,并将其分配给相应的IO 控制器(本例CPU1217C 为 IO 控制器),如图8所示: 图8. 插入ET200SP站点 (2)组态ET200SP 站点,在ET200SP的"设备视图"环境下,为ET200SP 站点添加信号、通信模块和服务器模块,在本例中只添加了CM PTP模块和服务器模块。在ET200SP"设备视图"中用鼠标选中CM PTP,在“属性”→“常规”→“接口”→“操作模式”中配置此模块硬件接口参数,本例设定“指定工作模式":"半双工(RS485)2线制操作";"接收线路的初始状态":"无"。如下图9所示: 图9. CM PTP 操作模式 注意:ET200SP站点中,服务器模块是必须组态的。服务器模块随接口模块一起采购,无需单独购买。ET200SP接口模块需要为其分配IP地址和Device Name, 有关ET200 SP 分布式IO 组态详细步骤,请参考《ET200 SP 使用快速入门》,本例不再描述Profinet IO通信的相关设置与步骤。《ET200 SP 使用快速入门》下载链接: https://support.industry.siemens.com/cs/cn/zh/view/78304711 (3)接下来,在“属性”→“常规”→“接口”→“端口组态”中配置此模块端口组态参数,本例设定"协议":"Freeport/Modbus";"端口参数"设置:传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1为例。端口组态设置如下图10所示: 图10. CM PTP 端口组态 (4)最后需要在“硬件标识符”里确认一下CM PTP 模块硬件标识符,该参数在程序编程中会被使用。 (四)实例之软件编程 1、Modbus RTU 主站编程 Modbus RTU主站编程需要调用Modbus_Comm_Load 指令和Modbus_Master 指令,其中Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行组态,Modbus_Master 指令可通过由 Modbus_Comm_Load 指令组态的端口作为 Modbus 主站进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Master 指令的(静态)MB_DB 参数。本例中分布式机架ET200SP 中 CM PTP 模块作为Modbus RTU主站,其相关编程步骤如下: (1)OB1 中插入一个FC函数,并在函数中拖入Modbus_Comm_Load 指令和Modbus_Master 指令。如图11所示: 图11. 拖入Modbus RTU 主站指令 Modbus_Comm_Load指令各参数意义如下表1所示: 引脚说明REQ上升沿触发PORT通信端口的硬件标识符BAUD波特率选择:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200PARITY奇偶检验选择:0-无;1-奇校验;2-偶校验FLOW_CTRL流控制选择:0-(默认值)无流控制RTS_ON_DLYRTS延时选择:0-(默认值)RTS_OFF_DLYRTS关断延时选择:0-(默认值)RESP_TO响应超时:默认值 = 1000 ms。MB_MASTER 允许用于从站响应的时间(以毫秒为单位)。MB_DB对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。DONE如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。ERROR如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。STATUS端口组态错误代码,请参考TIA 软件在线帮助或S7-1200 系统手册。 表1 MB_COMM_LOAD指令参数意义 Modbus_Master指令各参数意义如下表2所示: 引脚说明EN使能端REQTRUE = 请求向 Modbus 从站发送数据 ,建议采用上升沿触发MB_ADDRModbus RTU从站地址。默认地址范围:0至247;扩展地址范围:0至65535。值0被保留用于将消息广播到所有Modbus从站。MODE模式选择:指定请求类型(读取或写入)。DATA_ADDR从站中的起始地址:指定Modbus从站中将供访问的数据的起始地址。DATA_LEN数据长度:指定要在该请求中访问的位数或字数。DATA_PTR数据指针:指向要进行数据写入或数据读取的标记或数据块地址。DONE完成位:上一请求已完成且没有出错后,DONE 位将保持为 TRUE 一个扫描周期时间。BUSYFALSE – Modbus_Master 无激活命令:TRUE – Modbus_Master 命令执行中ERROR对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。STATUS如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。ERROR如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。STATUS错误代码 表2 Modbus_Master指令参数意义 注意:①Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” 系统存储器位。②Modbus_Comm_Load指令背景数据块中的静态变量“MODE”用于描述PTP模块的工作模式,有效的工作模式包括: 0 = 全双工 (RS232) 1 = 全双工 (RS422) 四线制模式(点对点) 2 = 全全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP)) 3 = 全全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP)) 4 = 半双工 (RS485) 二线制模式 该静态变量“MODE”默认数据为0(RS232 全双工模式),需要根据CM PTP模块实际组态修改该数值,本例中CM PTP模块工作在RS485半双工模式需要将该数值修改为4,如图12所示: 图12. Modbus_Comm_Load背景数据块静态变量“MODE”修改为 ③Modbus_Master指令的“DATA_PTR”参数用于指向要进行数据写入或数据读取的数据区域地址,该数据区域支持优化访问的数据块或者非优化(标准的)数据块,建议采用非优化访问的数据块。本例中使用的数据区为非优化访问的数据块,在数据块的属性中取消“优化的块访问”即可将数据块修改为非优化访问的数据块(鼠标右键数据块,选择“属性”,取消“优化的块访问”),如图13所示: 图13. 设置数据块为非优化访问 当Modbus_Master指令的“DATA_PTR”指向非优化访问的数据块时,该输入参数需要使用指针方式填写如P#DB3.DBX0.0 WORD 5 方式填写。④当Modbus RTU网络中存在多个modbus RTU从站或一个modbus RTU从站同时需要读操作和写操作,则需要调用多个Modbus_Master指令,Modbus_Master指令之间需要采用轮询方式调用。下图14. 用于描述两个Modbus_Master指令轮询调用的方式。 图14.Modbus_Master轮询调用方式 (2)插入"Pull or plug of modules" 中断OB83 本例中Modbus RTU主站模块安装在分布式IO站点上,因此程序中需要考虑分布式IO站点故障、CM PTP 模块插拔模块等故障。分布式IO站点中插出、拔入模块时,操作系统都会调用一次OB83。通过OB83接口区的输入变量“16#Event_Class”判断故障的模块和类型:事件类型16#39表示模块被拔出,事件类型16#38表示模块被插入。CM PTP 模块被重新插入的时候,需要在中断OB83中调用Modbus_Comm_Load 指令对通信模块进行重新组态,如图15所示。 图15. OB83中再次调用Modbus_Comm_Load 指令 注意:①OB83 中调用Modbus_Comm_Load指令的背景数据块需要与OB1中调用的Modbus_Comm_Load指令的背景数据块相同。②CM PTP模块的硬件标识符也可以在"PLC变量"--->"系统常数"中查询,如图16所示: 图16. 系统常量 (3)插入"Rack or Station failure" 中断OB86 分布式IO站点故障和恢复时,操作系统都会调用一次OB86。通过OB86接口区的输入变量“16#Event_Class”判断故障的模块和类型:事件类型16#39表示站点故障,事件类型16#38表示站点恢复。CM PTP 模块所在的IO站点恢复时,需要在中断OB86中调用Modbus_Comm_Load 指令对通信模块进行重新组态,如图17所示: 图17. OB86中调用Modbus_Comm_Load 指令 注意:①OB86 中调用Modbus_Comm_Load指令的背景数据块需要与OB1中调用的Modbus_Comm_Load指令的背景数据块相同。②分布式IO 站点的硬件标识符也可以在"PLC变量"--->"系统常数"中查询。 2、Modbus RTU 从站编程 Modbus RTU从站编程需要调用Modbus_Comm_Load 指令和Modbus_Slave 指令,其中Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行组态,Modbus_Slave 指令可通过由 Modbus_Comm_Load 指令组态的端口作为 Modbus 从站进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Slaver 指令的(静态)MB_DB 参数。本例中CPU 机架CM1241 RS422/485作为Modbus RTU从站,其相关编程步骤如下: (1)OB1 中插入一个FC函数,并在函数中拖入Modbus_Comm_Load 指令和Modbus_Slave 指令。如图18所示: 图18. 拖入Modbus RTU 从站指令 Modbus_Slave指令各参数意义如下表3所示: 引脚说明MB_ADDRModbus 从站的标准寻址:标准寻址范围(1 到 247)扩展寻址范围(0 到 65535)MB_HOLD_REG数据指针,指向Modbus 保持寄存器的地址, Modbus 保持寄存器可以为M存储区或DB数据区。如果Modbus 保持寄存器为DB数据区,则DB数据区支持优化访问的数据块或非优化访问的数据块,建议采用非优化访问的数据块。NDR可用的新数据:FALSE - 无新数据TRUE – 表示新数据已由 Modbus 主站写入如果上一个请求完成并且没有错误,NDR 位将变为 TRUE 并保持一个周期。DR读取数据:FALSE - 无新数据TRUE –表示该指令已将 Modbus 主站接收到的数据存储在目标区域中。如果上一个请求完成并且没有错误,DR 位将变为 TRUE 并保持一个周期。ERROR如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。如果执行因错误而终止,则 STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。STATUS错误代码 表3 Modbus_Slave指令参数意义 注意:①Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” 系统存储器位。②Modbus_Comm_Load指令背景数据块中的静态变量“MODE”用于描述PTP模块的工作模式,有效的工作模式包括: 0 = 全双工 (RS232) 1 = 全双工 (RS422) 四线制模式(点对点) 2 = 全全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP)) 3 = 全全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP)) 4 = 半双工 (RS485) 二线制模式 该静态变量“MODE”默认数据为0(RS232 全双工模式),需要根据CM1241 RS422/485模块实际组态修改该数值,本例中CM1241 RS422/485模块工作在RS485半双工模式需要将该数值修改为4,如何修改“MODE”静态变量见图12所示。 ③Modbus_Slave指令的“MB_HOLD_REG”用于指向Modbus 保持寄存器的数据区域地址,该数据区域支持优化访问的数据块或者非优化(标准的)数据块,建议采用非优化访问的数据块。本例中使用的数据区为非优化访问的数据块,固该输入参数需要使用指针方式填写如P#DB6.DBX0.0 WORD 100 方式填写。如何在数据块的属性中取消“优化的块访问”,见图13所示。将程序下载到PLC中,并使用Profibus DP通信电缆将CM1241 RS422/485与CM PTP串口模块连接起来,即可测试Modbus RTU通信了。 (五)常见问题 1. 新版本 Modbus RTU指令的使用是否存在些限制条件?新版本 Modbus RTU指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,需要满足如下条件: a. S7-1200 CPU 的固件版本不能低于V4.1;b. CM1241通信模块或CB1241通信板的固件不能低于V2.1。 S7-1200 V4.0 固件CPU可以通过固件更新到V4.1版本,V2.0固件的CM1241通信模块也可以通过固件更新的方式更新到V2.1版本。相关固件更新的方法请参考 S7-1200 固件更新 。 2 .Modbus_Comm_Load指令背景数据块中的静态变量“MODE”的作用是什么?为什么一般项目中,都需要对该变量进行修改?新版本的 Modbus RTU指令扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PTP通信模块实现Modbus RTU通信。而分布式 I/O 机架上的PTP通信模块可以支持多种工作模式,以ET200SP CM PtP模块(订货号:6ES7137-6AA00-0BA0)为例,其可以支持RS232、RS485以及RS422等多种工作模式。Modbus_Comm_Load指令背景数据块中的静态变量“MODE”则用于定义PTP模块的工作模式。“MODE”的默认数值为0,代表“全双工 (RS232)”工作模式,实际项目组态中则需要根据实际工作模式对该变量进行修改。 3. Modbus_Comm_Load指令能否在启动组织块OB100中调用?Modbus_Comm_Load指令不建议在启动组织块OB100中调用。新版本的Modbus RTU指令扩展了Modbus RTU的功能,该指令支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PtP通信模块实现Modbus RTU通信。操作系统需要调用读取数据记录和写入数据记录等指令来实现与分布式I/O机架上PtP模块的Modbus RTU通信。读取数据记录和写入数据记录指令为异步读写指令,指令的执行需要N个扫描周期,所以不建议Modbus_Comm_Load指令在启动组织块OB100中调用。 4. 如何查询Modbus RTU通信错误时的错误代码?以Modbus_Master指令为例,当通信出现错误时,Modbus_Master指令的“ERROR”输出位将变为 TRUE 但是只保持一个扫描周期,所以通过TIA 软件程序监控时无法查询到错误。Modbus_Master指令“STATUS” 参数中的错误代码仅在“ERROR” = TRUE 的扫描周期内有效,为了获取了Modbus RTU通信错误的错误代码我们可以采用下图19. 方式编程。 图19. 获取STATUS --- ### 740. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 MODBUS通信在工业应用中的实际案例 Modbus简介: MODBUS通信在工业领域广泛应用,可实现PLC、变频器和仪表等设备之间的数据交换和监控。 示例应用: 以西门子200SMART PLC和西门子V20变频器通过MODBUS通信实现正转、反转、停止、点动以及读取运行状态和电压电流信息为例。 实施步骤: 硬件接线: 在Siemens 200SMART和V20变频器之间连接RS485信号(3号引脚为正,8号引脚为负)。 遵循端口连接规则(V20的P+连接3,N-连接8)。 设置变频器参数: 参考V20变频器手册设置MODBUS通信参数。 配置参数如转速设定值(HSW)、实际转速(HIW)、控制字(STW)和状态字(ZSW)。 连接到宏CN011(确保在电机数据显示状态下)。 通信参数地址: 识别V20变频器支持的寄存器,用于控制数据(例如转速设定值、实际转速、控制字、状态字)。 控制字位定义: 了解控制字每位的含义,以满足特定的控制需求(如正转、反转、停止)。 通信指令: 使用两个关键通信指令:初始化指令和数据读写指令。 要实现本示例的控制要求,必须使用以下两条通信指令,一条是通信初始化指令,另一条为通信数据读写指令,具体指令介绍如下: 程序设计: 开发满足特定控制需求的程序(如正转、反转、停止、点动)。 整合通信指令以实现数据交换。 注意:以下程序不完整 经验总结: 连接宏选择: 在选择Siemens V20变频器的连接宏之前,确保首先恢复参数为缺省值并进行快速调试。 在选择适当的连接宏后,进行参数的单独修改。 硬件接线技巧: 遵循手册的接线说明,特别是主电路的接线。 确保主电路部分的准确接线。 故障排除通信问题: 如果在参数设置和程序开发后仍然存在通信问题,考虑: 根据手册验证接线情况。 检查参数设置是否正确。 确保程序执行正确。 连接宏选择后的参数修改: 选择适当的宏后,可以单独修改特定参数。 根据需要修改选定的参数。 重要提示: 这个实际案例详细说明了在Siemens 200SMART PLC和Siemens V20变频器之间实施MODBUS通信的步骤,以实现特定的控制和监测功能。 --- ### 741. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 第一部分:S7-1200 Modbus RTU通信 (一)概述 Modbus具有两种串行传输模式:分别为ASCII和RTU。Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,其中0为广播地址,从站的实际地址范围为1-247。Modbus RTU通信以主从的方式进行数据传输,在传输的过程中Modbus RTU主站是主动方,即主站发送数据请求报文到从站,Modbus RTU从站返回响应报文。S7-1200以下模块支持 Modbus RTU通信: 通信模块/通信板订货号CM1241 RS2326ES7241-1AH32-0XB0CM1241 RS422/4856ES7241-1CH32-0XB0CB 1241 RS4856ES7241-1CH30-1XB0 注意: (1)使用通信模块CM 1241 RS232作为Modbus RTU主站时,只能与一个从站通讯。(2)使用通信模块CM 1241 RS485作为Modbus RTU主站时,则允许建立最多与 32 个从站的通讯。 (3)使用通信板CB 1241 RS485时,CPU 固件必须为 V2.0 或更高版本,且使用软件必须为STEP 7 Basic V11 或STEP 7 Professional V11 以上更高版本。 (二)Modbus RTU指令版本与限制 随着博途软件和 S7-1200 CPU 固件的不断更新,S7-1200 Modbus RTU 指令也出现了不同的版本。用户需要根据使用的软件和硬件,正确选择使用符合要求的 S7-1200 Modbus RTU 指令来实现 Modbus RTU 通信,其软件和硬件要求和指令版本说明如下。 (1)博途中的 S7-1200 Modbus RTU 指令 博途中提供了2个版本的 Modbus RTU指令。如下图 1 所示: 早期版本的 Modbus RTU 指令(图1. 中 MODBUS (V2.2))仅可通过 CM1241 通信模块或 CB1241 通信板进行 Modbus RTU 通信。 新版本的 Modbus RTU 指令(图1. 中 MODBUS(RTU) V3.0)扩展了 Modbus RTU 的功能,该指令除了支持 CM1241 通信模块、CB1241 通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的 PTP 通信模块实现 Modbus RTU 通信。 (2)新版本 Modbus RTU 指令的使用限制条件新版本 Modbus RTU 指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,需要满足如下条件:a. S7-1200 CPU 的固件版本不能低于V4.1b. CM1241通信模块 V2.1 以上或 CB1241 图1. 两个版本 Modbus RTU 指令 (三)常见问题 (1)S7-1200 是否支持 Modbus ASCII 通信模式? 西门子不提供支持上述通信模式的的现成指令,需要用户自己用自由口模式编程。 (2)Modbus RTU指令V1和V2两个版本有什么区别? Modbus RTU指令版本 V2 将参数 “REQ” 和 “DONE” 添加到“MB_COMM_LOAD”指令。而且,“MB_MASTER”和“MB_SLAVE ”指令的“MB_ADDR ”参数现在允许一个 UInt 值以进行扩展寻址。 (3)同一CPU程序中是否可以同时使用V1和V2两个不同版本的Modbus RTU指令? 不能在同一CPU 程序中同时使用V1(V1.x)和V2(V2.y)指令版本。用户程序的 Modbus 指令必须具有相同的主版本号;主版本组内的各个指令可具有不同的次版本号。 (4)S7-1200 通信模块CM1241是否可作为Modbus RTU主站或作为Modbus RTU从站? 对S7-1200 通信模块CM1241组态并编程调用“MB_COMM_LOAD”指令,可将其设置为Modbus RTU通信模式。通过编程调用“MB_MASTER”指令,S7-1200 通信模块CM1241可作为Modbus RTU主站,或调用“MB_SLAVE”指令,S7-1200 通信模块CM1241可作为Modbus RTU从站。 注意:无论S7-1200 通信模块CM1241作为Modbus RTU主站还是从站,都需要调用“MB_COMM_LOAD”指令进行编程。 (5)S7-1200 CM1241/CB1241 Modbus RTU 通信是否支持两位停止位? 支持。 注意:S7-1200 CM1241/CB1241属性里可以设置停止位, 但是该模块用于 Modbus 通信时,此设置的停止位无效, 需要在 Modbus_Commload 指令的背景 DB 里 Static 修改 STOP_BITS停止位数值为 2。如下图 2-3所示: 图2. CM1241 配置停止位参数 Modbus_Commload 指令的背景 DB 里 Static 修改 STOP_BITS停止位数值为 2(默认值=1) 图3. 修改 Modbus RTU 通信停止位 PART 02 第二部分:V3版指令功能 (一)Modbus RTU指令概述 博途V13 SP1版本软件中提供了2个版本的Modbus RTU指令: 图1. 两个版本Modbus RTU指令 (1)早期版本的Modbus RTU指令(图1. 中 MODBUS (V2.2))仅可通过CM1241通信模块或CB1241通信板进行Modbus RTU通信。(2)新版本的 Modbus RTU指令(图1. 中 MODBUS(RTU) V3.0)扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PTP通信模块实现Modbus RTU通信。 (3)新版本 Modbus RTU指令所支持的PTP模块如下图2所示: 图2. 新版本 Modbus RTU指令所支持的PTP模块 (二)Modbus RTU指令实例环境介绍 新版本Modbus RTU指令中包含Modbus RTU 主站指令和从站指令。本文以 CPU1217C+CM1241 RS422/485+ET200SP CM PTP 模块为例,介绍新版本 Modbus RTU 指令主从通信的编程步骤。其中CPU 机架CM1241 RS422/485作为Modbus RTU从站,分布式机架ET200SP 中 CMPTP 模块作为Modbus RTU主站。 1、网络结构图如下: 图3. Modubus RTU 网络通信结构图 2、本项目中使用到的硬件和软件如下: (1)硬件:① CPU1217C (订货号:6ES7 217-1AG40-0XB0),固件版本V4.1.3② CM1241 RS422/485模块 (订货号:6ES7 241-1CH32-0XB0),固件版本V2.1③ 24V 电源PS307(订货号:6ES7307-1KA02-0AA0)④ ET200 SP IM155-6PN HF(订货号:6ES7155-6AU00-0CN0)⑤ CM PTP模块(订货号:6ES7137-6AA00-0BA0) (2)软件:① 博途SP1 UP 9 (三)实例之设备组态 1、组态CM1241 RS422/485模块 (1)打开设备视图,添加S7-1200CPU,并在硬件目录里找到“通信模块”→“点到点”→“CM1241(RS422/485)”,拖拽此模块至CPU左侧即可,如下图4所示: 图4. 添加 CM 1241 RS422/485模块 注意:固件版本>=V2.1 的CM 1241 RS422/485模块,才支持新版本Modbus RTU指令。 (2)接下来,在“设备视图”中用鼠标选中CM1241(RS422/485)模块,在“属性”→“端口组态”中配置此模块硬件接口参数,本例以传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1为例。如CM 1241 端口组态设置如下图5所示: 图5. CM1241 RS422/485 模块端口组态 (3)最后在“硬件标识符”里确认一下硬件标识符为269(该参数在程序编程中会被使用),如下图6所示: 图6 硬件标识符 (4)另外,S7-1200 还提供了系统和时钟存储器功能,为了便于后续指令,建议使能该功能。在CPU “属性”→“常规”→“系统和时钟存储器”使能系统和时钟存储器功能,如图7所示。 图7. 系统和时钟存储器功能 2、组态ET200 SP CM PtP 模块 (1)插入一个ET200SP分布式站点,打开网络视图并拖入一个ET200SP站点,并将其分配给相应的IO 控制器(本例CPU1217C 为 IO 控制器),如图8所示: 图8. 插入ET200SP站点 (2)组态ET200SP 站点,在ET200SP的"设备视图"环境下,为ET200SP 站点添加信号、通信模块和服务器模块,在本例中只添加了CM PTP模块和服务器模块。在ET200SP"设备视图"中用鼠标选中CM PTP,在“属性”→“常规”→“接口”→“操作模式”中配置此模块硬件接口参数,本例设定“指定工作模式":"半双工(RS485)2线制操作";"接收线路的初始状态":"无"。如下图9所示: 图9. CM PTP 操作模式 注意:ET200SP站点中,服务器模块是必须组态的。服务器模块随接口模块一起采购,无需单独购买。ET200SP接口模块需要为其分配IP地址和Device Name, 有关ET200 SP 分布式IO 组态详细步骤,请参考《ET200 SP 使用快速入门》,本例不再描述Profinet IO通信的相关设置与步骤。《ET200 SP 使用快速入门》下载链接: https://support.industry.siemens.com/cs/cn/zh/view/78304711 (3)接下来,在“属性”→“常规”→“接口”→“端口组态”中配置此模块端口组态参数,本例设定"协议":"Freeport/Modbus";"端口参数"设置:传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1为例。端口组态设置如下图10所示: 图10. CM PTP 端口组态 (4)最后需要在“硬件标识符”里确认一下CM PTP 模块硬件标识符,该参数在程序编程中会被使用。 (四)实例之软件编程 1、Modbus RTU 主站编程 Modbus RTU主站编程需要调用Modbus_Comm_Load 指令和Modbus_Master 指令,其中Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行组态,Modbus_Master 指令可通过由 Modbus_Comm_Load 指令组态的端口作为 Modbus 主站进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Master 指令的(静态)MB_DB 参数。本例中分布式机架ET200SP 中 CM PTP 模块作为Modbus RTU主站,其相关编程步骤如下: (1)OB1 中插入一个FC函数,并在函数中拖入Modbus_Comm_Load 指令和Modbus_Master 指令。如图11所示: 图11. 拖入Modbus RTU 主站指令 Modbus_Comm_Load指令各参数意义如下表1所示: 引脚说明REQ上升沿触发PORT通信端口的硬件标识符BAUD波特率选择:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200PARITY奇偶检验选择:0-无;1-奇校验;2-偶校验FLOW_CTRL流控制选择:0-(默认值)无流控制RTS_ON_DLYRTS延时选择:0-(默认值)RTS_OFF_DLYRTS关断延时选择:0-(默认值)RESP_TO响应超时:默认值 = 1000 ms。MB_MASTER 允许用于从站响应的时间(以毫秒为单位)。MB_DB对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。DONE如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。ERROR如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。STATUS端口组态错误代码,请参考TIA 软件在线帮助或S7-1200 系统手册。 表1 MB_COMM_LOAD指令参数意义 Modbus_Master指令各参数意义如下表2所示: 引脚说明EN使能端REQTRUE = 请求向 Modbus 从站发送数据 ,建议采用上升沿触发MB_ADDRModbus RTU从站地址。默认地址范围:0至247;扩展地址范围:0至65535。值0被保留用于将消息广播到所有Modbus从站。MODE模式选择:指定请求类型(读取或写入)。DATA_ADDR从站中的起始地址:指定Modbus从站中将供访问的数据的起始地址。DATA_LEN数据长度:指定要在该请求中访问的位数或字数。DATA_PTR数据指针:指向要进行数据写入或数据读取的标记或数据块地址。DONE完成位:上一请求已完成且没有出错后,DONE 位将保持为 TRUE 一个扫描周期时间。BUSYFALSE – Modbus_Master 无激活命令:TRUE – Modbus_Master 命令执行中ERROR对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。STATUS如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。ERROR如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。STATUS错误代码 表2 Modbus_Master指令参数意义 注意:①Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” 系统存储器位。②Modbus_Comm_Load指令背景数据块中的静态变量“MODE”用于描述PTP模块的工作模式,有效的工作模式包括: 0 = 全双工 (RS232) 1 = 全双工 (RS422) 四线制模式(点对点) 2 = 全全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP)) 3 = 全全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP)) 4 = 半双工 (RS485) 二线制模式 该静态变量“MODE”默认数据为0(RS232 全双工模式),需要根据CM PTP模块实际组态修改该数值,本例中CM PTP模块工作在RS485半双工模式需要将该数值修改为4,如图12所示: 图12. Modbus_Comm_Load背景数据块静态变量“MODE”修改为 ③Modbus_Master指令的“DATA_PTR”参数用于指向要进行数据写入或数据读取的数据区域地址,该数据区域支持优化访问的数据块或者非优化(标准的)数据块,建议采用非优化访问的数据块。本例中使用的数据区为非优化访问的数据块,在数据块的属性中取消“优化的块访问”即可将数据块修改为非优化访问的数据块(鼠标右键数据块,选择“属性”,取消“优化的块访问”),如图13所示: 图13. 设置数据块为非优化访问 当Modbus_Master指令的“DATA_PTR”指向非优化访问的数据块时,该输入参数需要使用指针方式填写如P#DB3.DBX0.0 WORD 5 方式填写。④当Modbus RTU网络中存在多个modbus RTU从站或一个modbus RTU从站同时需要读操作和写操作,则需要调用多个Modbus_Master指令,Modbus_Master指令之间需要采用轮询方式调用。下图14. 用于描述两个Modbus_Master指令轮询调用的方式。 图14.Modbus_Master轮询调用方式 (2)插入"Pull or plug of modules" 中断OB83 本例中Modbus RTU主站模块安装在分布式IO站点上,因此程序中需要考虑分布式IO站点故障、CM PTP 模块插拔模块等故障。分布式IO站点中插出、拔入模块时,操作系统都会调用一次OB83。通过OB83接口区的输入变量“16#Event_Class”判断故障的模块和类型:事件类型16#39表示模块被拔出,事件类型16#38表示模块被插入。CM PTP 模块被重新插入的时候,需要在中断OB83中调用Modbus_Comm_Load 指令对通信模块进行重新组态,如图15所示。 图15. OB83中再次调用Modbus_Comm_Load 指令 注意:①OB83 中调用Modbus_Comm_Load指令的背景数据块需要与OB1中调用的Modbus_Comm_Load指令的背景数据块相同。②CM PTP模块的硬件标识符也可以在"PLC变量"--->"系统常数"中查询,如图16所示: 图16. 系统常量 (3)插入"Rack or Station failure" 中断OB86 分布式IO站点故障和恢复时,操作系统都会调用一次OB86。通过OB86接口区的输入变量“16#Event_Class”判断故障的模块和类型:事件类型16#39表示站点故障,事件类型16#38表示站点恢复。CM PTP 模块所在的IO站点恢复时,需要在中断OB86中调用Modbus_Comm_Load 指令对通信模块进行重新组态,如图17所示: 图17. OB86中调用Modbus_Comm_Load 指令 注意:①OB86 中调用Modbus_Comm_Load指令的背景数据块需要与OB1中调用的Modbus_Comm_Load指令的背景数据块相同。②分布式IO 站点的硬件标识符也可以在"PLC变量"--->"系统常数"中查询。 2、Modbus RTU 从站编程 Modbus RTU从站编程需要调用Modbus_Comm_Load 指令和Modbus_Slave 指令,其中Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行组态,Modbus_Slave 指令可通过由 Modbus_Comm_Load 指令组态的端口作为 Modbus 从站进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Slaver 指令的(静态)MB_DB 参数。本例中CPU 机架CM1241 RS422/485作为Modbus RTU从站,其相关编程步骤如下: (1)OB1 中插入一个FC函数,并在函数中拖入Modbus_Comm_Load 指令和Modbus_Slave 指令。如图18所示: 图18. 拖入Modbus RTU 从站指令 Modbus_Slave指令各参数意义如下表3所示: 引脚说明MB_ADDRModbus 从站的标准寻址:标准寻址范围(1 到 247)扩展寻址范围(0 到 65535)MB_HOLD_REG数据指针,指向Modbus 保持寄存器的地址, Modbus 保持寄存器可以为M存储区或DB数据区。如果Modbus 保持寄存器为DB数据区,则DB数据区支持优化访问的数据块或非优化访问的数据块,建议采用非优化访问的数据块。NDR可用的新数据:FALSE - 无新数据TRUE – 表示新数据已由 Modbus 主站写入如果上一个请求完成并且没有错误,NDR 位将变为 TRUE 并保持一个周期。DR读取数据:FALSE - 无新数据TRUE –表示该指令已将 Modbus 主站接收到的数据存储在目标区域中。如果上一个请求完成并且没有错误,DR 位将变为 TRUE 并保持一个周期。ERROR如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。如果执行因错误而终止,则 STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。STATUS错误代码 表3 Modbus_Slave指令参数意义 注意:①Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” 系统存储器位。②Modbus_Comm_Load指令背景数据块中的静态变量“MODE”用于描述PTP模块的工作模式,有效的工作模式包括: 0 = 全双工 (RS232) 1 = 全双工 (RS422) 四线制模式(点对点) 2 = 全全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP)) 3 = 全全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP)) 4 = 半双工 (RS485) 二线制模式 该静态变量“MODE”默认数据为0(RS232 全双工模式),需要根据CM1241 RS422/485模块实际组态修改该数值,本例中CM1241 RS422/485模块工作在RS485半双工模式需要将该数值修改为4,如何修改“MODE”静态变量见图12所示。 ③Modbus_Slave指令的“MB_HOLD_REG”用于指向Modbus 保持寄存器的数据区域地址,该数据区域支持优化访问的数据块或者非优化(标准的)数据块,建议采用非优化访问的数据块。本例中使用的数据区为非优化访问的数据块,固该输入参数需要使用指针方式填写如P#DB6.DBX0.0 WORD 100 方式填写。如何在数据块的属性中取消“优化的块访问”,见图13所示。将程序下载到PLC中,并使用Profibus DP通信电缆将CM1241 RS422/485与CM PTP串口模块连接起来,即可测试Modbus RTU通信了。 (五)常见问题 1. 新版本 Modbus RTU指令的使用是否存在些限制条件?新版本 Modbus RTU指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,需要满足如下条件: a. S7-1200 CPU 的固件版本不能低于V4.1;b. CM1241通信模块或CB1241通信板的固件不能低于V2.1。 S7-1200 V4.0 固件CPU可以通过固件更新到V4.1版本,V2.0固件的CM1241通信模块也可以通过固件更新的方式更新到V2.1版本。相关固件更新的方法请参考 S7-1200 固件更新 。 2 .Modbus_Comm_Load指令背景数据块中的静态变量“MODE”的作用是什么?为什么一般项目中,都需要对该变量进行修改?新版本的 Modbus RTU指令扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PTP通信模块实现Modbus RTU通信。而分布式 I/O 机架上的PTP通信模块可以支持多种工作模式,以ET200SP CM PtP模块(订货号:6ES7137-6AA00-0BA0)为例,其可以支持RS232、RS485以及RS422等多种工作模式。Modbus_Comm_Load指令背景数据块中的静态变量“MODE”则用于定义PTP模块的工作模式。“MODE”的默认数值为0,代表“全双工 (RS232)”工作模式,实际项目组态中则需要根据实际工作模式对该变量进行修改。 3. Modbus_Comm_Load指令能否在启动组织块OB100中调用?Modbus_Comm_Load指令不建议在启动组织块OB100中调用。新版本的Modbus RTU指令扩展了Modbus RTU的功能,该指令支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PtP通信模块实现Modbus RTU通信。操作系统需要调用读取数据记录和写入数据记录等指令来实现与分布式I/O机架上PtP模块的Modbus RTU通信。读取数据记录和写入数据记录指令为异步读写指令,指令的执行需要N个扫描周期,所以不建议Modbus_Comm_Load指令在启动组织块OB100中调用。 4. 如何查询Modbus RTU通信错误时的错误代码?以Modbus_Master指令为例,当通信出现错误时,Modbus_Master指令的“ERROR”输出位将变为 TRUE 但是只保持一个扫描周期,所以通过TIA 软件程序监控时无法查询到错误。Modbus_Master指令“STATUS” 参数中的错误代码仅在“ERROR” = TRUE 的扫描周期内有效,为了获取了Modbus RTU通信错误的错误代码我们可以采用下图19. 方式编程。 图19. 获取STATUS --- ### 742. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 打开TIA Portal软件,如下图所示,填写项目名称、路径等信息,点击创建。 创建完成后,点击"打开项目视图",如下图所示: 点开"在线访问",找到连接PLC使用的网卡,点击---更新可访问的设置。 找到需要复位的PLC点击---在线和诊断,如下图: 在功能菜单下选择---复位为出厂设置。 点击“复位PLC”按钮。 弹出确认对话框,点击“是”即可。 输出栏与状态栏均会提示“模块已复位”,至此PLC恢复为出厂设置。  总结  以上就是1200PLC恢复为出厂设置的方法,若是在复位过程中提示输入密码,则该PLC存在密码,在不知道密码的情况下不能这样复位,但可以使用存储卡的方式来复位,这边做赘述。 --- ### 743. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 PLC编程核心量:开关量、模拟量与脉冲量解析 在PLC编程中,开关量、模拟量和脉冲量是三个基础量。对这三者的深入理解,是PLC技能精通的关键。 开关量(或逻辑量): 开关量是二进制的,即只有两个状态:0(OFF)和1(ON)。 顺序控制是开关量的基本应用,即基于输入的历史和当前状态产生特定的输出。 控制模式可以是手动、半自动或全自动,而控制原理可以是分散的、集中的或混合的。 2.模拟量: 模拟量代表连续变化的物理量,如电压、电流和温度。 模拟量可以转换为数字量,而数字量实质上是多状态的开关量。因此,PLC可以可靠地处理转换后的模拟量。 在连续生产中,模拟量是常见的,故称为过程控制。 非标准的模拟量需转换为标准电信号,如4-20mA或0-10V等。 PLC内部涉及模拟量与数字量间的转换和计算。例如,1/32767分辨率的PLC模拟单元与0—10V电量对应0—100℃温度。因此,0—32767对应0—100℃,得出1℃对应约327.67单位。为了达到0.1℃的精度,需要进一步细分该值。 模拟量控制方法包括反馈、前馈、比例和模糊控制等。 3.脉冲量: 脉冲量是数字量,其值在0和1之间不断交替变化。 PLC中的脉冲量主要用于位置、运动和轨迹控制。例如,步进电机驱动器分辨率为每圈10000脉冲,若需步进电机旋转90度,则脉冲数为(10000 \times \frac{90}{360} = 2500)。 模拟量的转换与处理: 概述: 模拟量代表物理世界中连续的变量,例如电压、电流、压力和温度。对于PLC而言,正确地转换和处理这些量是至关重要的。 转换实例: 假设一个PLC模拟输入单元的分辨率为1/32767,并且对应0—10V的电压。这意味着它可以读取的温度范围是0—100℃。因此,0-32767的数值范围对应0—100℃的温度范围。进一步,1℃对应的数值大约是327.67。要提高精度到0.1℃,只需将327.67除以10。 控制策略: 模拟量控制的策略包括反馈控制、前馈控制、比例控制及模糊控制。 2. 脉冲量: 概述: 脉冲量是数字信号,其值在0(低状态)和1(高状态)之间交替变化。其变化速度(即每秒脉冲变化的次数)称为频率。 应用: PLC处理的脉冲量主要用于位置控制、速度控制和轨迹控制。例如,步进电机在角度控制中需要知道脉冲数。如果步进电机驱动器规定每圈是10000脉冲,那么要使步进电机旋转90度,所需的脉冲数为2500。 3. 模拟量的详细计算: 基于不同的电压和电流范围,以及不同的分辨率,模拟量可以被转换为特定的十六进制值。例如: 对于-10V至10V的电压范围,在6000分辨率下,转换结果为F448—0BB8Hex;而在12000分辨率下,结果为E890—1770Hex。 以上仅为简要概述。具体的转换和处理方式会根据PLC的型号和规格、以及测量物理量的特性而异。 注意:模拟输入时需要注意线路配线要求,确保信号的准确性和稳定性。 模拟量与十六进制数值的转换: -10V至10V电压范围: 在6000分辨率下,转换范围为 F448—0BB8Hex,对应的数值范围为-3000—3000。 在12000分辨率下,转换范围为 E890—1770Hex,对应的数值范围为-6000—6000。 0V至10V电压范围: 在12000分辨率下,转换范围为 0—1770Hex,对应的数值范围为0—6000。 在同样的12000分辨率下,转换范围为 0—2EE0Hex,对应的数值范围为0—12000。 0mA至20mA电流范围: 在6000分辨率下,转换范围为 0—1770Hex,对应的数值范围为0—6000。 在12000分辨率下,转换范围为 0—2EE0Hex,对应的数值范围为0—12000。 4mA至20mA电流范围: 在6000分辨率下,转换范围为 0—1770Hex,对应的数值范围为0—6000。 在12000分辨率下,转换范围为 0—2EE0Hex,对应的数值范围为0—12000。 请注意,上述转换可能因PLC型号和配置而异。确保根据具体规格进行调整。 模拟输入配线要求: 采用屏蔽双绞线,但屏蔽层不应连接。 若输入未使用,请将V IN和COM端子短接。 确保模拟信号线与主要电源线(如AC电源线、高压线)隔离。 如电源线存在干扰,请在输入模块与电源模块间添加滤波器。 在接通负载电源前,首先确保CPU模块已通电。 断电时,先切断负载电源,随后切断CPU模块电源。 PLC编程算法(3)- 脉冲控制计算 脉冲控制在PLC编程中主要应用于驱动设备如步进电机和伺服电机的角度、距离和位置控制。以下,我们将通过步进电机为例,深入探讨其控制策略。 角度控制: 为实现精确控制,首先需确定步进电机的细分数及其每圈所需的脉冲总数。 角度控制的核心是转换所需角度到相应的脉冲数。 公式表示为:[ \text{脉冲数}{\text{角度}} = \text{脉冲数}{\text{总}} \times \left(\frac{\text{设定角度}}{360°}\right) ] 距离控制: 确定步进电机每圈所需的脉冲总数。 进一步,考虑步进电机滚轮的直径以计算滚轮的周长。 根据周长和脉冲总数,可以确定每个脉冲代表的移动距离。 公式表示为:[ \text{脉冲数}{\text{距离}} = \frac{\text{设定距离}}{\left(\frac{\text{滚轮直径} \times \pi}{\text{脉冲数}{\text{总}}}\right)} ] 位置控制: 位置控制实质上是角度和距离控制的结合,确保步进电机达到预定的位置。 需要注意的是,虽然伺服电机的控制逻辑与步进电机相似,但我们还需考虑伺服电机内部的电子齿轮比及其与外部机械系统的减速比。 --- ### 744. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 完美的PLC程序需满足的设计要求 一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释、精良的架构、良好的可扩展性、完备的报警保护系统、运行前的模拟系统。 1、简单性 使PLC程序尽可能简单。简单的含义就是尽可能的使用标准化的程序框架,尽可能使用简单的指令。 要想程序简单,从大的方面讲,要优化程序结构,用流程控制指令简化程序,从小的方面讲还要用功能强的指令取代功能单一的指令,以及注意指令的安排顺序等。 2、可读性 要求所设计的程序可读性要好。这不仅便于程序设计者加深对程序的理解,便于调试,而且,还要便于别人读懂你的程序,便于使用者维护。必要时,也可使程序推广。 要使程序可读性好,所设计的程序就要尽可能清晰。要注意层次,实现模块化,以至于用面向对象的方法进行设计。要多用一些标准的设计。 如遇特殊情况下采用语言编程,多数情况下请使用梯形图编程,方便阅读。 再就是I/O分配要有规律性,便于记忆与理解。必要时,还要做一些注释工作。内部器件的使用也要讲规律性,不要随便地拿来就用。 可读性在程序设计开始时就要注意。这不易完全做到。因为在程序调试的过程中,指令的增减,内部器件的使用变化,可能使原较清晰的程序,变的有些乱。所以在设计时就对调试增减留有一定的余地,然后调试完毕后再做一下整理,这样所设计的程序具有更高的质量。 程序的注释,起码应该有以下几个方面: A、系统注释:整套程序的版权公司和此套程序用途 B、程序块注释:此程序块的主要用途和作者 C、段注释:此段代码的用途 D、变量注释:重要性无需多言,包含I/O注释、中间变量注释 而至于保密性的考虑,我觉得应该在程序的加密算法或者块的加密上考虑,而不应该用减少注释这种小聪明来实现。 3、正确性 PLC的程序一定要正确,并要经过实际工作验证,证明其能够正确工作。这是对PLC程序的最根本的要求,若这一点做不到,其它的再好也没有用。 要使程序正确,一定要准确的使用指令,正确的使用内部器件。准确的使用指令与准确理解指令相联系,为此对指令含义和使用条件一定要弄清楚。必要时,可编些小程序对一些不清楚的指令作些测试。 同一指令,由于PLC的出厂批次不同或是PLC的系列型号的不同,一些指令细节有可能不一样,应仔细查阅编程手册。 内部器件正确使用也是重要的。如有的PLC有掉电保护,有的PLC没有。一定要做到该掉电保护的一定要用掉电保护的器件,反之则不能用。 总之,要准确的使用指令,正确使用内部器件,使所编的程序能正确要作,这是对PLC程序最根本的要求。 举个简单的例子,西门子的上升沿和下降沿需要使用带存储功能的变量作为中间变量,比如M点或者DB点,如果使用FC的temp变量就会出问题的。 4、可靠性 程序不仅要正确,还要可靠。可靠反映着PLC程序的稳定性,这也是对PLC程序的基本要求。 有的PLC程序,在正常的工作条件下或合法操作时能正确工作,而出现非正常工作条件(如临时停电,又很快再通电)或进行非法操作(如一些按钮不按顺序按,或同时按若干按钮)后,程序就不能正常工作了。这种程序,就不大可靠,或说不稳定,就是不好的程序。 好的PLC程序对非正常工作条件出现,能予以识别,并能使其与正常条件衔接,可使程序适应于多种情况。好的PLC程序对非法操作能予以拒绝,且不留下“痕迹”。只接受合法操作。 联锁是拒绝非法操作常用的手段,继电电路常用这个方法,PLC也可继承这个方法。 5、易改性 要使程序易改,也就是要便于修改。PLC的特点之一就是方便,可灵活地适用于各种情况。其办法就是靠修改或重新设计程序。 重新设计程序用于改变PLC工艺的用途要求的情况,不仅程序重编,而且I/O也要重新分配。多数情况下不需要重编程序,作一些修改就可以了。这就要求程序具有易性,便于修改。 易改也就是弹性,要求只要作很少的改动,即可达到改变参数或理改动作的目的。6、扩展性 许多程序可能在进现场之前都已经编好,但是到了现场,可能还需要添加另外的程序,为了避免打乱整套系统的结构,需要在每个功能区预留一定的空间作为备用。 硬件上留出足够的余量,软件在编写的时候把手动,自动,半自动考虑好,位置留出来。 7、完备报警系统 PLC系统往往用于工业环境中,每一次的事故都会造成或大或小的损失,为了做到事故预处理或者在事故中将损失降到最小,必须重视PLC的报警和保护,在此将其摘出来作为系统的一个重要组成部分。 8、程序模拟 为了保证现场的调试进度或者给客户展示,往往在进现场之前,要对自己的程序进行全自动的模拟。为此需要在程序中加入模拟程序部分,模拟程序部分在正常现场运行之后断开。为了使程序具备模拟功能,需要做以下工作: (1)、将实际的PLC的I/O点转换为PLC的中间变量或者数据块变量; (2)、根据工艺要求编写各个设备的模拟程序。在设计PLC程序的过程中,能够满足以上几个方面的要求的就能称的上是一个好程序了。 二、PLC程序设计规范 1、选择合适的PLC型号及I/O点数,有特殊功能需求时选择特殊功能模块。 2、熟悉所选择的PLC编程指令及编译软件。 3、进行软元件规划,包括内部继电器、保持继电器、数据寄存器、定时器、计数器等。 4、进行程序规划,一般以故障提取、故障处理、手动处理、自动处理、输出处理这样的顺序进行编程。比较大型的工程或设备按功能单元分段、分块进行处理,如一条自动化生产线中有提升机、移行、顶起旋转装置等,则应按上述单元分段分块编程。 5、在分段分块编写的程序前应加上简短的段注释,说明此段程序的功能,如有必要可以注明相应的工艺流程。分块或分段的程序再总体程序的位置顺序应基本上按工艺流程顺序排列,便于程序的可读性。 6、在程序设计之前,应对设备进行抽象,对如停止、急停、过载、超限、超时、安全光幕、碰停、门开关等共用因子进行提取,放在启动回路或启动主控、连锁回路,作为整个程序结构的大前提,在此基础下,再将程序分为自动、手动两大功能区。 7、将程序结构手动功能区共用因子,如手动、危及设备人身安全等因数因子进行提取,放在手动主控、连锁回路,对手动控制进行保护、屏蔽、报警。 8、将程序结构自动功能区共用因子,如自动、超限、超时等因数因子进行提取,放在自动主控、连锁回路,对自动控制下设备进行保护、屏蔽、报警。一个总的原则就是,在确保安全的前提下,严格限制设备的进,宽松限制设备的出。 9、程序设计时应设计程序总复位功能,便于使用者在设备出现故障情况下,可以方便尽快恢复设备正常工作。总复位应充分考虑在复位过程中设备和人员的安全。 10、自动模式切换到手动模式时,程序应清除自动模式下的输出和中间状态。特别是在自动模式使用SET指令时,必须在手动模式用RESET指令予以清除。 11、严禁在编制程序中使用双输出,即同一条输出语句或同一个输出线圈在程序中出现2次及以上。在不同模式条件下的对同一输出点的输出使用中间继电器进行中转,最后集中到一起并列到输出点。 12、使用触摸屏时,对触摸屏和PLC公用的控制区和状态区,不得做其他功能方面的编程使用。 13、对PLC的特殊模块,在使用之前,应先查明其控制区和状态区是否占用工作字,若占用,不得将这些工作字做其他方面的编程。 14、PLC的输入、输出、中间继电器、定时器、计数器、数据寄存器等都要加中文注释。输入、输出还要有元器件名称位号。对应的输入点,一般情况下默认为外围开关连接的是NO触点,对于需要接NC触点的须在注释中标明。所有注释应当清晰明了,不易产生误解,尽量少使用泛指。 15、工程调试完成后,系统必须保留最终软件程序,保存的文件名应包含项目编号/作者/日期信息/版本号等。 16、关于程序加密:对于加密程序的密码必须有专门的文件予以保存,并注明相应的用户名+密码+权限,分发给至少两个人以上了解密码,防止密码丢失带来无法打开程序的情况。 三、编程建议 1、PLC和上位机(或触摸屏)组成监控系统时,在画面上很多时候需要有“手动”、“自动”等控制模式(一般都是多个只能一个时)。在程序里面可以用“MOV”指令。如:当选择“手动”就将常数1 MOV到一个寄存器VB10里面,当选择“自动”就将2 MOV到同一寄存器VB10。只要判断寄存器的数据是多少,就知道系统是那种控制方式。这样的思路好处是容易理解,不需要互锁之类的麻烦程序。 2、程序有模拟量控制时,如果读取的模拟量基本上没误差,可以采取时间滤波的方式,延时一段时间。如果读取的数据误差很大,就需要采取其它的滤波方式,如算平均值等。可以查阅相关的资料。 3、在程序调试过程中(特别是设备改造时,你的程序是加入到原来设备的程序中时),当程序语句中出现条件满足,而输出线圈不接通时,可以检查你的这段程序是否是在这样的语句之间,如JUMPgo to等语句。还有一种可能就是在中断程序之后,条件满足而没输出不接通,一般都是这段的程序不被扫描。 4、在顺序控制程序时,即一个动作完成后,进入到下一个动作,等类似的顺序控制,采用+10+10控制模式,本人觉得很方便。其思路是:预置一个寄存器,在初始化时值为0,当系统启动后,对它+10,此时寄存器为10,寄存器等于10时可以做第一个动作;第一个动作完成后,再对寄存器+10,此时寄存器等于20,可以做第二个动作,第二个动作完成后又+10,此时寄存器等于30,这样只要判断寄存器里面数据为多少,就知道要完成那个动作。当需要跳跃动作时,可以不再+10,可以加+20+30....,看实际的需要而定。为什么加10而不是加1,因为加10之后,如果插入一段,只要在这10个空余的地方随便选择一个位置就可以了。 5、在设计程序的时候,当出现工艺上的故障(非控制系统控制),最好将故障现象保持,并有灯光声音报警。直到操作工复位,以让其知道系统出现了故障。不然停机了,别人还认为你的程序问题。一般都是在设计一个新系统时,要注意到这些。 6、对于经常调用的子程序,可以做成子模块,频繁调用。 7、由于生产机械在工作循环中的各工步运动在执行时需要一定的时间,且这些时间都有一定的限度,因此可以以这些时间为参考,在要检测的工步动作开始的同时,起动一个定时器,定时器的时间设定值比正常情况下该动作要持续的时间长20%~30%,而定时器的输出信号可以用于报警或自动停机装置。当生产机械某工步动作的时间超过规定时间,达到对应的定时器预置时间,还未转入下一工步动作时定时器发出故障信号,该信号停止正常工作循环程序,起动报警或停机程序,这就是我们常说的超节拍保护。 8、一些安全用检测开关(如急停按钮、安全光幕、极限开关等)实用常闭(NC)输入。 9、为安全、节能考虑,尽量将输出设计成需要动作时才动作,一旦到位就停止输出,而不要设计成平时一直输出,需要停止时才让输出断开。 10、执行元件的动作原则应当是宁可不动,也不要乱动! 11、单台设备控制:单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。 12、单台设备(泵、风机及其它大型设备)运行满24小时 --- ### 745. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着工业4.0和智能制造的快速发展,工业物联网的应用已经深入到各种生产制造领域中。在这其中,PLC(可编程控制器)扮演着核心角色。本文主要介绍工业物联网应用中的主流PLC品牌、协议以及型号清单。 品牌协议接口PLC型号SIEMENS西门子Tips:/西门子在售系列均支持S7协议通信,建议使用S7协议进行通信S7网口S7-S200smart、S7-S200系列、S7-S300系列、S7-S400系列、S7-S1200系列、S7-S1500系列PPI串口S7-200系列MELSEC三菱Tips:/三菱主要采用MC协议进行通信,FX5系列、FX3系列、Q系列等均经过测试EtherNet/IP网口FX5-ENET/IP系列、RJ71EIP91系列、QJ71EIP71系列MC-1E/MC-3E网口FX5系列、RJ71EN71系列、RnENCPU系列、LJ71E71系列、QJ71E71系列、QnUCPU系列、FX3系列MODBUS TCP网口FX5系列、RJ71EN71系列、RnENCPU系列、LJ71E71系列、QJ71E71系列MC-3C串口FX5系列、RJ71C24系列、LJ71C24系列、QJ71C24系列MODBUS RTU串口FX5系列、RJ71C24系列、LJ71C24系列、QJ71C24系列、FX3系列FxLinks(计算机链接)串口FX3系列、FX2系列、FX1系列、FX0系列FxSerial(编程通信功能)串口FX3系列、FX2系列、FX1系列、FX0系列OMRON欧姆龙Tips:/欧姆龙主要采用Fins协议进行通信EtherNet/IP网口NX7系列、NX1系列、NX1P系列、NJ系列、CJ1W-EIP21Fins网口CP系列、CS系列、CJ系列、CV系列HostLink串口CP系列、CS系列、CJ系列、CV系列、C系列LSisLS电气Tips:/LS主要采用FEnet/Cnet协议进行通信XGB FEnet网口XGB系列(XBC/XEC U、XBL-EMTA)XGK FEnet网口XGT系列(XGL-EFMT、XGL-EFMF、XGL-EH5T)XGB Cnet串口XGB系列(XBC/XEC U、XBL-C21A、XBL-C41A)XGK Cnet串口XGT系列(XGL-CH2A、XGL-C21A、XGL-C41A)AllenBrandly罗克韦尔Tips:/罗克韦尔主要采用CIP、DF1协议进行通信EtherNet/IP网口ControlLogix系列、CompactLogix系列、Micro800系列(820、850、870)DF1串口SLC系列(500、5/03、5/04、5/05)、Micro-Logix系列(1000、1100、1200、1500)Beckhoff倍福Tips:/倍福主要采用ADS协议进行通信ADS网口CX系列、TwinCAT2、TwinCAT3Inovance汇川Tips:/汇川主要采用MODBUS协议进行通信MODBUS TCP网口AC系列、AM系列、H5U系列、H3U系列MODBUS RTU串口AC系列、AM系列、H5U系列、H3U系列、H1U系列Keyence基恩士Tips:/基恩士主要采用KV协议进行通信MC-3E网口KV-8000系列、KV-7000系列、KV-5500系列、KV-5000系列、KV(上位链路协议)网口KV-EP21V、KV-LE21V、KV-LE20V、KV-LE20A等以太网单元KV(上位链路协议)串口KV-7300、KV-3000、KV-1000、KV-700、KV Nano、KV-L21V、KV-L20VPanasonic松下Tips:/松下主要采用Mewtocol协议进行通信MC-3E网口FP7系列、FP0H系列、FP-XH系列Mewtocol网口FP7系列、FP0H系列、FP-XH系列Mewtocol串口FP7系列、FP0H系列、FP-XH系列、FP-X0系列、FP0R系列Delta台达Tips:/台达主要采用MODBUS协议进行通信MODBUS TCP网口AH系列、AS系列、AX-3系列、DVP系列(内置网口)MODBUS RTU串口AH系列、AS系列、AX-3系列、DVP系列XinJE信捷Tips:/信捷主要采用MODBUS协议进行通信MODBUS TCP网口CCSD系列、XA系列、XS系列、XG系列、XL系列MODBUS RTU串口CCSD系列、XA系列、XS系列、XG系列、XL系列、XC系列、XD系列MegMeet麦格米特Tips:/麦格米特主要采用MODBUS协议进行通信MODBUS TCP网口MC5100系列、MC280系列、MC200系列、MC100系列、MC80系列MODBUS RTU串口MC5100系列、MC280系列、MC200系列、MC100系列、MC80系列Yaskawa安川Tips:/安川主要采用MEMOBUS协议进行通信(支持S7)Memobus网口GL120/130系列、GL60系列、MP3000系列、MP2300系列、Z1000系列Fatek永宏Tips:/永宏主要采用Fatek协议进行通信Fatek串口FBs系列Vigor丰炜Tips:/丰炜主要采用VS私有协议进行通信VS串口VS系列Fuji富士Tips:/富士主要采用SPH/SPB协议进行通信SPH网口SPH系列SPB串口SPB系列 结论: 工业物联网的普及和发展离不开PLC的支持。不同的PLC品牌和型号根据其所支持的协议和特性,为各种工业应用提供了多样化的选择。当企业选择PLC时,不仅要考虑其功能和性能,还要考虑其与其他系统的兼容性、未来的可扩展性以及总体的投资回报率。希望上述清单能为企业在选择适合自己的PLC时提供一定的参考。 当然,随着技术的进步,PLC的型号和协议也会不断更新,企业需要时刻关注行业的最新动态,确保自己始终处于行业的前沿。 --- ### 746. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 指令( 英文全称意思 ):指令含义 1、LD ( Load 装载 ):动合触点 2、LDN ( Load Not 不装载 ):动断触点 3、A ( And 与 动合):用于动合触点串联 4、AN ( And Not 与 动断 ):用于动断触点串联 5、O ( Or 或 动合 ) :用于动合触点并联 6、ON ( Or Not 或 动断 ):用于动断触点并联 7、= ( Out 输出 ):用于线圈输出 8、OLD ( Or Lode):块或 9、ALD ( And Lode):块与 10、LPS ( Logic Push ):逻辑入栈 11、LRD ( Logic Read ):逻辑读栈 12、LPP ( Logic Pop ):逻辑出栈 13、NOT ( not 并非 ):非 14、NOP ( No Operation Performed ):无操作 15、AENO ( And ENO ):指令盒输出端ENO相与 16、S ( Set 放置 ):置1 17、R ( Reset 重置,清零 ):清零 18、P ( Positive):上升沿 19、N ( Negative):下降沿 20、TON ( On_Delay Timer ):接通延时定时器 21、TONR ( Retentive On_Delay Timer ):有记忆接通延时定时器 22、TOF ( Off_ Delay Timer ):断开延时定时器 23、CTU ( Count Up ):增计数器 24、CTD ( Count Down ):减计数器 26、ADD ( add 加 ) :加注意   //ADD_I (_ I 表示整数)  ADD_DI( DI表示双字节整数) ADD-R (R 表示实数)它们都是加运算只是数的大小不同。 27、SUB ( Subtract 减去,减少):减 28、MUL ( Multiply ):乘 29、DIV ( Divide ):除 30、SQRT ( Square root ):求平方根 31、LN ( Napierian Logarithm 自然对数 ):求自然对数 32、EXP ( Exponential 指数的 ):求指数 33、INC_B ( Increment 增加 ):增1 //其中_B代表数据类型 还有W(字节)、DW双字后面几个都是这样的。 34、DEC_B ( Decrement 减少 ):减1 35、WAND_B ( Word and 与命令 ):逻辑与  36、WOR_B ( Word or 或命令):逻辑或 37、WXOR_B ( Word exclusive or 异或命令):逻辑异或 38、INV_B ( Inverse 相反 ):取反 39、MOV _B ( Move 移动 ):数据传送 40、BLKMOV_B ( Block Move 块移动):数据块传送 41、SWAP ( Swap 交换 ):字节交换 42、FILL ( Fill 填充 ):字填充 43、ROL_B ( Rotate Left 循环 向左):循环左移位 44、ROR_B ( Rotate Right 循环 向右):循环右移位 45、SHL_B ( Shift Right 移动向左):左移动 46、SHR_B ( Shift Right 移动向右 ):右移动 47、SHRB ( Shift buffer 移动缓存):寄存器移位 48、STOP ( Stop 停止 ):暂停 49、END /MEND ( End /Mend ):条件/无条件结束 50、WDR ( Watch dog reset ):看门狗复位 51、JMP ( Jump 跳):跳转 52、LBL ( Label 位置 ):跳转标号 53、FOR ( For 循环 ):循环 54、NEXT ( Next 再下去):循环结束 55、SBR ( Subprogram Regulating子程序控制 ):子程序调用 56、SBR_T ( Subprogram Regulating Take ):带参数子程序调用 57、SCR ( Sequence Control 顺序控制 ):步开始 58、SCRT ( Sequence Control Transfer 顺序控制转移 ):步转移 59、SCRE ( Sequence Control End 顺序控制结束 ) :步结束 60、AD_T_TBL ( Add data to table 添加数据到表格中):填数据表 61、FIFO ( First in First out 先进先出 ):先进先出 62、LIFO ( Last in First out 后进先出 ):后进先出 63、TBL_FIND ( Table Find 表格查找 ) :表查找 64、BCD_I ( Binary Coded Decimal _I 二进制编码的十进制 ):BCD 码转整数 65、I_BCD ( I_ Binary Coded DecimaL ):整数转BCD码 66、B_I ( Bit to int ):字节转整数 67、I_B ( int to bit ):整数转字节 68、DI_I ( Double  int to int ):双整数转整数 69、I_DI ( int to double int ):整数转双整数 70、ROUND ( Round 取整 ):实数转双整数 71、TRUNC ( Trunc 截取 ):转换32位实数整数部分(舍去小数取整) 72、DI_I (double int to int ):双整数转实数 73、ENCO ( Encode 编码):编码 74、DECO ( Decode 译码):译码 75、SEG ( Segment decoder分断译码器 ):七段显示译码器 76、ATH ( ASCII码 turn hex ):ASCII码转16进制 77、HTA ( Hexadecimal to ascii):16进制转ASCII码 78、ITA ( // int to ascii):整数转ASCII码 79、DTA ( // double int to ascii ):双整转ASCII码 80、RTA ( // real to ascii): 实数转ASCII码 81、ATCH (//attach ):中断连接 82、DTCH ( Depatch ):中断分离 83、HDEF ( High speed counter definition ):高速计数器定义 84、HSC ( High Speed Counter 高速计数器 ):启动高速计数器 85、PLS ( Pulse 脉冲 ):脉冲输出 86、READ_ RTC ( Read real time clock 读实时时钟 ):读实时时钟 87、SET_RTC ( Set real time clock ):写实时时钟 88、XMT ( Transmitter ):自由发送 89、RCV ( Receive 接收 ):自由接收 90、NETR ( Net read 网络读 ):网络读 91、NETW ( Net write 网络写 ):网络写 92、GET_ADDR ( Get address 获取地址 ):获取口地址 93、SET_ADDR ( Set address 设置地址 ):设定口地址 94、PID ( Proportional Integral Differential 比例、积分、微分 ):比例积分微分调节器。 --- ### 747. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 水质监测中,氨氮是一项关键的水质参数,用于评估水体中的游离氨(NH3)和铵离子(NH4+)的总含量。氨氮的测量对于环境保护和水质管理至关重要,因为它能够提供有关水体健康和污染程度的重要信息。在智慧水务项目中,氨氮的监测备受关注,因为这个参数对于水体的质量和可持续性有着深远的影响。 氨氮的危害 高浓度的氨氮会对环境和生物产生大量的危害。首先,它对水生生物具有毒性作用,这意味着高浓度的氨氮可以损害鱼类和其他水生生物的健康,破坏水生态系统的平衡。其次,氨氮是一种营养物质,当浓度过高时,会导致水体富营养化,这会降低水体的透明度,使其浑浊,还会导致有毒物质的积累。此外,高浓度的氨氮还可以影响水体的酸碱度,使其变得更加酸性,对生物和生态系统产生危害。最后,高浓度的氨氮可能通过水体进入人体,对人体健康产生不良影响。因此,控制和监测氨氮浓度对于维护水体和生态系统的健康至关重要。 氨氮的主要来源 水中的氨氮主要来自于多个渠道。其中包括生活污水中含氮有机物的分解产物、某些工业废水以及农田排水等。这些源头都可能导致水体中氨氮浓度的升高。因此,了解氨氮的来源对于采取适当的控制和治理措施非常重要。 氨氮的限制标准 在中国,GB3838-2002《地表水环境质量标准》规定了不同类型地表水中的氨氮浓度限制标准。这些标准旨在保护不同类型水体的质量和生态系统。举例而言,对于I类地表水(源头水、国家自然保护区),氨氮浓度要求小于0.15mg/L,而对于IV类地表水(工业用水区及人体非直接接触的娱乐用水区),允许的氨氮浓度则可高达1.5mg/L。这些标准的制定有助于确保不同用途的水体得到适当的管理和保护。 扩展阅读: GB3838-2002[地表水环境质量标准规定: I 类地表水(源头水、国家自然保护区)的氨氮含量小于 0.15mg/L; II 类地表水(生活饮用水源地一级保护区、珍稀动物栖息地等)氨氮含量小于 0.5mg/L; III 类地表水(生活饮用水源地二级保护区、鱼虾越冬场及游泳区)氨氮含量小于 1.0mg/L; IV 类地表水(工业用水区及人体非直接接触的娱乐用水区)氨氮含量要小于 1.5mg/L; 农业用水及景观要求小于 2.0mg/L 氨氮的测量方式 目前,有多种测量方法可用于检测水体中的氨氮含量。这些方法包括氨气敏电极法、水杨酸分光光度法、纳氏试剂分光光度法和铵离子电极法等。在智慧水务项目中,电极法通常是首选的方法之一。 铵离子电极 铵离子电极是一种广泛使用的氨氮测量工具,通常由工作电极和参比电极组成。工作电极上覆盖有铵离子选择性膜,当膜与水体中的铵离子接触时,会导致电位的变化,进而测量出铵离子的浓度。铵离子电极具有成本低、体积小、操作简便等优点,因此在智慧水务项目中广泛使用。 然而,铵离子电极也存在一些挑战。首先,它容易受到水体中其他离子的干扰,特别是钾离子和有机成分等。其次,电极的敏感膜容易受到水体污染,这可能会降低测量的准确性。因此,一些方法如钾离子补偿和敏感膜的化学修饰被用来减轻这些问题。 氨氮电极的校准 为了确保氨氮电极的准确性和稳定性,通常需要使用实验室分析法进行校准。实验室分析法通常具有高精度和可靠性,因此被用作标准方法。校准的目的是确保电极在野外环境中提供准确的测量结果,以便更好地保护水体和生态系统的健康。 总之,氨氮监测在智慧水务项目中扮演着至关重要的角色。了解氨氮的来源、危害和测量方法有助于更好地保护水体质量,确保可持 续的水资源管理。铵离子电极作为一种常用的监测工具,具有广泛的应用前景,但也需要克服一些技术挑战,以提高准确性和稳定性。 --- ### 748. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 河道水位传感器是一种用于测量河流、湖泊和水库等水域中水位高度的设备。它们通过不同的技术原理来实现水位测量,其中包括压力传感器、浮子式传感器和超声波传感器等。这些传感器在水资源管理方面发挥着关键作用。 压力传感器是河道水位传感器中常用的一种类型。它通过测量水体对传感器底部施加的压力来确定水位高度。当水位升高时,水压增加,传感器相应地测量到较大的压力值。这种方法的优点在于精度高,对于需要高精度水位测量的应用非常合适。 另一种类型是浮子式传感器,它利用浮子的浮力来测量水位高度。当水位上升时,浮子也会上升,改变传感器的输出信号。这种传感器适用于一些需要简单、经济的应用场景。 超声波传感器则利用超声波的传播速度来测量水位高度。传感器向水面发射超声波脉冲,当脉冲遇到水面时被反射回来,传感器通过测量反射回来的脉冲的时间来确定水位高度。这种方法适用于需要非接触式水位测量的情况,例如涉及脏水或化学物质的环境。 关键功能 河道水位传感器应当具备多项关键功能,这些功能可根据特定应用需求进行定制,但通常需要满足以下基本要求: 广泛的测量范围: 传感器应能够测量不同水位范围内的水位高度,以适应不同水域环境的实际情况。 高精度测量: 传感器应具备高精度的测量能力,确保准确测量水位高度,提供可靠的数据支持。 快速响应: 传感器应迅速响应水位的变化,实时更新测量数据,并及时将数据传输给监测平台。 耐用和抗腐蚀: 传感器需具备耐久性和抗腐蚀能力,以适应河道等恶劣环境条件,确保长时间稳定运行。 自清洁功能: 传感器应具备自清洁功能,能够自动清理表面的沉积物,以确保测量结果的准确性和可靠性。 长期稳定性: 传感器的测量性能应具备出色的长期稳定性,能够在长时间内提供准确可靠的数据。 环境适应性: 传感器应适应各种气候条件,能够在风雨、高温、低温等不利因素下正常工作。 数据传输和管理: 传感器应具备数据传输和管理功能,能够将测量数据传送至监测系统或相关机构,并提供数据存储、分析和管理功能。 此外,根据具体需求,还可增加其他特殊功能,如报警功能,用于检测水位异常情况;防雷击功能,以确保设备安全;远程监控功能,使用户可以实时监测水位数据。这些功能共同确保了河道水位传感器在水文监测中的可靠性和实用性。 元数据信息 河道水位传感器感知终端的元数据信息是关于传感器本身及其运行环境的关键数据,应包括以下重要内容: 传感器型号: 这是标识传感器具体型号和规格的信息,有助于确保所使用的传感器符合特定的测量需求和性能要求。 传感器标识: 每个传感器终端都有一个独特的标识符,用于区分不同传感器。这是确保数据源唯一性和可追溯性的关键。 安装位置: 记录传感器在河道中的确切位置,可以包括经纬度坐标或其他地理位置描述。这有助于确定数据的来源和空间关联。 测量范围: 指示传感器能够测量的水位范围,包括最小和最大测量值。这有助于了解传感器的适用范围。 测量精度: 表示传感器的测量精度,通常以误差范围表示,例如±0.5厘米。这是评估数据质量和准确性的重要参数。 采样频率: 记录传感器的采样频率,即每秒或每分钟测量的次数。这决定了数据的时间分辨率和采样频率。 数据输出格式: 描述传感器输出数据的格式,可以是模拟信号、数字信号或通信协议。这有助于数据接收和解释。 供电方式: 说明传感器的供电方式,可以是电池供电、太阳能供电或外部电源供电。这是确保传感器持续工作的关键。 数据传输方式: 指示传感器将测量数据传输到监测系统或上位机的方式,可以是无线通信、有线传输或存储装置。这关系到数据的实时性和可访问性。 数据存储容量: 记录传感器内部存储数据的容量,通常以字节数或存储时间来表示。这决定了数据的存储能力。 报警设置: 描述传感器的报警设置,例如当水位超过设定水位阈值时触发报警。这有助于监测潜在风险和异常情况。 维护信息: 记录传感器的维护信息,包括维护周期、维护记录和维护人员等。这有助于确保传感器的长期性能。 这些元数据信息对于监测系统的数据管理和分析至关重要,它们提供了关于传感器性能和使用情况的基本属性,有助于用户了解传感器的可信度和适用性。 终端日志 河道水位传感器的终端日志数据包含各类重要信息,这些信息在传感器工作期间被记录下来,以下是可能包括在这些日志数据中的关键内容: 时间戳: 记录每个事件发生的精确时间,通常以日期和时间的形式呈现。 测量数值: 记录每次测量的水位数值,以厘米或其他单位表示,反映实际水位高度。 报警记录: 记录传感器触发的报警事件,包括报警发生的时间、报警类型以及报警级别等详细信息。 维护记录: 记录传感器的维护活动,如定期校准和清洁传感器等,包括维护的时间、类型以及执行维护的人员等。 供电状态: 记录传感器的供电状态,包括电池电量、供电是否中断等信息,确保传感器的正常运行。 通信状态: 记录传感器与监测系统或上位机之间的通信状态,包括连接是否成功、通信是否存在错误等。 运行状态: 记录传感器的运行状态,包括是否正常运行、是否发生故障以及是否处于待机状态等。 温度记录: 记录传感器周围环境的温度数值,通常以摄氏度或其他单位表示,有助于分析环境因素对测量的影响。 湿度记录: 记录传感器周围环境的湿度数值,通常以百分比或其他单位表示,用于了解湿度对测量的潜在影响。 数据存储状态: 记录传感器内部数据存储的状态,包括存储容量和剩余空间等信息,以确保数据的正常记录。 系统事件: 记录传感器所属监测系统的事件,如系统的启动、关机、网络连接状态等关键事件信息。 通过分析这些河道水位传感器的终端日志数据,可以深入了解传感器的工作状态、检测异常事件以及维护情况,这些信息对于故障排查、数据分析和系统优化提供了有力依据。 参考标准 以下是有关河道水位传感器的参考标准: ISO 23570:2011 - 《水质监测仪器和设备. 水位测量仪器. 现场校准方法和准确度要求》 ISO 748:2016 - 《水质监测. 测量水位. 通用要求》 ISO 4365:2019 - 《水质监测. 测量河流水位和流速. 通用要求》 ISO 15784:2003 - 《测量和监测河流水位和流速. 采集、传输和处理数据的系统》 GB/T 15782-2012 - 《水文测量传感器. 水位测量传感器》 GB/T 23335-2009 - 《水质监测仪器和设备. 水位测量仪器》 这些标准旨在提供有关河道水位传感器设计、性能要求、测试方法、校准和数据处理等方面的指导,以确保传感器在各种应用中具备可靠性、准确性、一致性和互操作性。 河道水位传感器的部署要求 河道水位传感器的部署是确保其性能和数据质量的关键环节。部署的质量直接影响了监测的准确性和可靠性。以下是有关河道水位传感器部署的一些重要要求和注意事项: 位置选择:选择传感器的安装位置至关重要。应该在河道中选择一个能够全面反映水位变化的位置,同时避免遮挡和干扰。这需要考虑河流的水流情况、水位的变化范围、水深以及河道的宽度等因素。 安装方式:根据传感器的类型和特性,选择适当的安装方式。传感器可以固定在河床上、固定在河岸上或悬挂在浮标上,具体方式应确保传感器的稳定性和安全性。 防护措施:考虑传感器在恶劣环境中的防护需求。这包括防水、防腐蚀、防雷击等措施。确保传感器在各种条件下都能够正常运行,并保护其性能和寿命。 供电和通信:提供可靠的供电和通信设施对于传感器的正常工作至关重要。传感器应有稳定的电源接口和良好的通信信号覆盖范围。 定期维护:定期对传感器进行维护和校准是确保其性能的重要步骤。清理传感器周围的杂物和沉积物,保证传感器的正常运行和测量精度。 数据传输和存储:选择合适的数据传输和存储方式,以确保传感器能够及时传输测量数据到监测系统,并对数据进行存储和管理。这可以涵盖有线或无线传输,以及数据存储容量的考虑。 安全性考虑:在传感器的部署过程中,要考虑安全问题,以防止人为破坏、盗窃或破坏传感器设备。适当的安全措施可以确保传感器的长期可用性。 数据准确性验证:在传感器部署后,应进行数据准确性的验证和校验。这有助于确认传感器测量结果的准确性和可靠性,以便及时发现问题并采取措施解决。 总结 部署河道水位传感器需要综合考虑实际情况和需求,以确保传感器的准确性、稳定性和可靠性,为有效的水位监测提供支持。这些要求和最佳实践有助于确保监测系统的正常运行,并提供可信赖的数据供相关机构和决策者使用。 这些河道水位传感器可以与数据采集系统配合使用,实时监测水位变化,并将数据传输给相关机构或系统,以进行水位预警、洪水预测和水资源管理等工作。它们应该具备广泛的测量范围、高精度测量、快速响应、耐用耐腐蚀、自清洁能力、长期稳定性和良好的环境适应能力等功能。此外,传感器的元数据信息和终端日志数据也是非常重要的,可以提供传感器的基本属性、性能和工作状态,以及用于数据管理和分析的信息。 河道水位传感器的部署需要考虑位置选择、安装方式、防护措施、供电和通信、定期维护、数据传输和存储、安全性考虑以及数据准确性验证等因素。根据具体的应用场景和需求,合理的部署和管理可以确保传感器的准确性、稳定性和可靠性,为有效的水位监测提供支持。 --- ### 749. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1概述PLC 的数字量输入接口并不复杂,PLC 为了提高抗干扰能力,输入接口都采用光电耦合器来隔离输入信号与内部处理电路的传输。因此,输入端的信号只是驱动光电耦合器的内部 LED 导通,被光电耦合器的光电管接收,即可使外部输入信号可靠传输。 目前 PLC 数字量输入端口一般分单端共点与双端输入,由于有区别,用户在选配外部传感器时接法上需要一定的区分与了解才能正确使用传感器与 PLC 为后期的编程工作和系统稳定奠定基础。 2输入电路的形式1、输入类型的分类PLC的数字量输入端子,按电源分直流与交流,按输入接口分类由单端共点输入与双端输入,单端共点接电源正极为SINK(sink Current 拉电流),单端共点接电源负极为SRCE(source Current 灌电流)。 2、词语的概述SINK漏型为电流从输入端流出,那么输入端与电源负极相连即可,说明接口内部的光电耦合器为单端共点为电源正极,可接NPN型传感器。SOURCE源型为电流从输入端流进,那么输入端与电源正极相连即可,说明接口内部的光电耦合器为单端共点为电源负极,可接PNP型传感器。接近开关与光电开关三、四线输出分 NPN 与 PNP 输出,对于无检测信号时 NPN 的接近开关与光电开关输出为高电平(对内部有上拉电阻而言),当有检测信号,内部NPN 管导通,开关输出为低电平。对于无检测信号时 PNP 的接近开关与光电开关输出为低电平(对内部有下拉电阻而言),当有检测信号,内部 PNP 管导通,开关输出为高电平。 以上的情况只是针对,传感器是属于常开的状态下。3、按电源配置类型(1) 直流输入电路如图1,直流输入电路要求外部输入信号的元件为无源的干接点或直流有源的无触点开关接点,当外部输入元件与电源正极导通,电流通过R1,光电耦合器内部LED,VD1(接口指示)到COM端形成回路,光电耦合器内部接收管接受外部元件导通的信号,传输到内部处理;这种由直流电提供电源的接口方式,叫直流输入电路;直流电可以由PLC内部提供也可以外接直流电源提供给外部输入信号的元件。R2在电路中的作用是旁路光电耦合器内部LED的电流,保证光电耦合器LED不被两线制接近开关的静态泄漏电流导通。 (2) 交流输入电路如图2,交流输入电路要求外部输入信号的元件为无源的干接点或交流有源的无触点开关接点,它与直流接口的区分在光电耦合器前加一级降压电路与桥整流电路。外部元件与交流电接通后,电流通过R1,C2经过桥整流,变成降压后的直流电,后续电路的原理与直流的一致。交流PLC主要适用相对环境恶劣,布线技改变动不大等场合;如接近开关就用交流两线直接替代原来行程开关。 4、按端口类型(1)单端共点(Comcon)数字量输入方式为了节省输入端子,单端共点输入的结构是在 PLC 内部将所有输入电路(光电耦合器)的一端连接在一起接到标示为 COM 的内部公共端子,各输入电路的另一端才接到其对应的输入端子 X0、X1、X2、....com 共点与 N 个单端输入就可以做 N 个数字量的输入(N+1 个端子),因此我们称此结构为单端共点输入。用户在做外部数字量输入组件的接线时也需要同样的做法,需要将所有输入组件的一端连接在一起,叫输入组件的的外部共线;输入组件的另一端才接到 PLC 的输入端子 X0、X1、X2、....SINK输入方式,可接 NPN 型传感器,即 X 端口与负极相连。SRCE输入方式,可接 PNP 型传感器。即 X 端口与整机极相连。(外部输入组件可以为按钮开关、行程开关、舌簧开关、霍尔开关、接近开关、光电开关、光幕传感器、继电器触点、接触器触电等开关量的元件。)(2) SINK(sink Current 拉电流)输入方式●单端共点SINK输入接线(内部共点端子COM→24V+,外部共线→24V-)。如图3: (3) SRCE(source Current 灌电流)输入方式● 单端共点SRCE输入接线(内部共点端子COM→24V-,外部共线→24V+)。如图4: (4)SINK/SRCE可切换输入方式S/S端子与COM端不同的是,COM是与内部电源正极或负极固定相连,S/S端子是非固定相连的,根据需要才与内部电源或外部电源的正极或者负极相连。● 单端共点SINK输入接线(内部共点端子S/S→24V+,外部共线→24V-)。 ● 单端共点SRCE输入接线(内部共点端子S/S→24V-,外部共线→24V+)。 (5) 当有源输入元件(霍尔开关、接近开关、光电开关、光幕传感器等)数量比较多,消耗功率比较大,PLC内置电源不能满足时,需要配置外置电源。根据需求可以配24VDC,一定功率的开关电源。外置电源原则上不能与内置电源并联,根据COM与外部共线的特点, SINK(sink Current 拉电流)输入方式时,外置电源与内置电源正极相连接;SRCE(source Current 灌电流)输入方式时,外置电源与内置电源负极相连接。(6) 简单判断SINK(sink Current 拉电流)输入方式,只需要Xn端与负极短路,如果接口指示灯亮就说明是SINK输入方式。共正极的光藕合器,可接NPN型的传感器。SRCE(source Current 灌电流)输入方式,将Xn端与正极短路,如果接口指示灯亮就说明是SRCE输入方式。共负极的光藕合器,可接PNP型的传感器。(7) 对于2线式的开关量输入,如果是无源触点,SINK与SRCE按上图的输入元件接法,对于2线式的接近开关,需要判断接近开关的极性,正确接入。(8)超高速双端输入电路主要用于硬件高速计数器(HHSC)的输入使用,接口电压为5VDC,在应用上为确保高速及高噪音抗性通常采用双线驱动方式(Line-Drive)。如果工作频率不高与噪音低也可以采用5VDC的单端SINK或者SRCE接法,串联一个限流电阻转换成24VDC的单端SINK或者SRCE接法。(9)双输入端双线驱动方式(Line-Drive)。 (10)、5VDC的单端SINK或者SRCE接法。 (11)、24VDC的单端SINK或者SRCE接法。 注:24VDC供电的传感器,在输入回路上需要串联限流电阻,R1为10Ω,R2为2KΩ,不串联限流电阻,将烧毁接口回路,限流电阻取值2.7KΩ。 3外部输入元件1、无源干接点(按钮开关、行程开关、舌簧磁性开关、继电器触点等)无源干接点比较简单,接线容易。不存在电源的极性,压降等因素,上图3-6中的输入元件正是此类型。这里不重复介绍。2、有源两线制传感器(接近开关、有源舌簧磁性开关)有源两线接近开关分直流与交流,此传感器的特点就是两根线,传器输出端导通后,为了保证电路正常工作需要一个保持电压来维持电路工作,通常在3.5-5V的压降,静态泄露电流要小于1mA,这个指标很重要;如果过大,在接近开关没检测信号时,就使PLC的输入端的光电耦合器导通。直流两线制接近开关分二极管极性保护与桥整流极性保护,前者在接PLC时需要注意极性,后者就不需要注意极性。有源舌簧磁性开关主要用在汽缸上做位置检测,由于需要信号指示,内部有双向二极管回路,因此也不需要注意极性;交流两线制接近开关就不需要注意极性。如图10: (1) 单端共点SINK输入接线(内部共点端子COM→24V+,外部共线→24V-)。如图11 (2) 单端共点SRCE输入接线(内部共点端子COM→24V-,外部共线→24V+)。如图12: (3)S/S端子接法参考图5-图6以及图11-图12。3、有源三线传感器(电感接近开关、电容接近开关、霍尔接近开关、光电开关等)直流有源三制线接近开关与光电开关输出管使用三极管输出,因此传感器分NPN和PNP输出,有的产品是四线制,有双NPN或双PNP,只是状态刚好相反,也有NPN和PNP结合的四线输出。NPN型当传感器有检测信号VT导通,输出端OUT的电流流向负极,输出端OUT电位接近负极,通常说的高电平翻转成低电平。PNP型当传感器有检测信号VT导通,正极的电流流向输出端OUT,输出端OUT电位接近正极,通常说的低电平翻转成高电平。电路中三极管的发射极上的电阻为短路保护采样电阻2-3Ω不影响输出电流。三极管的集电极的电阻为上拉与下拉电阻,提供输出电位,方便电平接口的电路,另一种输出的三极管集电极开路输出不接上拉与下拉电阻。简单说当三极管VT导通,相当于一个接点导通,如图13: (1) 单端共点SINK输入接线(内部共点端子COM→24V+,外部共线→24V-)。如图14: (2) 单端共点SRCE输入接线(内部共点端子COM→24V-,外部共线→24V+)。如图15: (3) S/S端子接法参考图5-图6、图11-图12以及图14-图15。PLC输入接口电路形式和外接元件(传感器)输出信号形式的多样性,因此在PLC输入模块接线前必要了解PLC输入电路形式和传感器输出信号的形式,才能确保PLC输入模块接线正确无误,在实际应用中才能游刃有余,后期的编程工作和系统稳定奠定基础。 --- ### 750. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 S7是西门子专有的协议,它用于PLC之间交换数据。 设备与网络组态:添加两台CPU PLC连接 连接方法一 连接方法二 或者点击本地PLC以太网口按住拖拉到伙伴PLC的以太网口处松开,也可以建立两台PLC通信连接。 属性设置 S7通讯是本地主动访问伙伴,所以伙伴下图选项必须勾选 IP地址设置 IP地址设置一定要对,且本地和伙伴地址不能相同,可以通过属性,以太网设置,如下图 除了这种方法,也可以在网络试图里面点击显示地址,去更改,如下图 这两种方法更改IP地址都很方便,可自行选择 指令介绍 参数和类型 数据类型 说明 REQ Input Bool 上升沿触发 ID Input CONN_PRG(Word) S7 连接 ID(W#16#100) NDR (GET) Output Bool 新数据就绪:● 0:请求尚未启动或仍在运行 ● 1:已成功完成任务 DONE (PUT) Output Bool DONE:● 0:请求尚未启动或仍在运行● 1:已成功完成任务 ERROR Output Bool 错误状态 STATUS Output Word 错误代码 ADDR_1 InOut 远程 指向远程CPU中存储待读取(GET) 或待发送(PUT)数据的存储区。P#DB1.DBX12.0 REAL 3 ADDR_2 InOut 远程 RD_1 (GET) SD_1 (PUT) InOut Variant 指向本地CPU中存储待读取(GET)或待发送(PUT)数据的存储区。允许的数据类型:Bool(只允许单个位)、Byte、Char、Word、Int、DWord、DInt或Real。 注:如果该指针访问DB,则必须指定绝对地址,如: P#DB10.DBX5.0 Byte 10在此情况下,10代表GET或PUT的字节数。 RD_2 (GET) SD_2 (PUT) InOut Variant 案例:两台1200进行S7协议以太网通信,实现如下操作。 读取设置 写入设置 写入设置与读取设置方法一致,通过组态设置,这里不作细说。 这样,本地设置好以后,将其分别下载到对应PLC中,两台1200PLC进行S7通讯就设置好了,(伙伴不需要写程序),即可进行数据交换。 2026年更新:TIA Portal V20优化与新功能 TIA Portal V20(2024年底发布,支持S7-1200 G2,引入Industrial Copilot AI辅助编程)对S7-1200/1500的通信配置流程做了进一步简化: S7连接自动检测:在TIA Portal V20中,将两台PLC拖入同一个项目后,系统会自动识别可用的S7连接路径,无需手动配置连接参数。 数据一致性保护:新增"数据块快照"功能,确保GET/PUT指令在一次调用中读取的数据块完全一致(避免读到半更新数据)。 Modbus与S7共存策略:如果同一台S7-1200需要同时跑S7通信(连接HMI或PLC)和Modbus TCP(连接第三方设备),建议将Modbus连接数控制在4个以内,剩余的以太网资源留给S7连接,确保整体通信稳定。 modbus.cn持续更新PLC相关教程和案例,帮助您高效完成自动化项目。 --- ### 751. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着数字化和自动化技术的迅猛发展,工业物联网已成为实现智能制造和工业自动化的关键领域。工业物联网通过连接传感器、设备和系统,实现数据的采集、传输和分析,从而提供实时监控、远程控制和智能决策支持。在这一发展背景下,4G DTU作为工业物联网解决方案的关键组成部分发挥着重要作用。 4G DTU:连接未来的工业智能 **4G DTU的基本概述** 4G DTU(数据传输单元)是一种专为工业环境设计的物联网设备。它充当着连接传感器、设备和工业互联网的桥梁,具有多种通信接口,如以太网、串口和无线通信,可接收和发送多种类型的数据。4G DTU的关键职责是采集来自传感器的数据,将其进行编码和压缩,并通过通信网络传输到云平台或监控中心。 **4G DTU在工业物联网中的关键角色** 1. **数据采集和传输:** 4G DTU具备数据采集和传输的核心功能。它能够连接多种类型的传感器,例如温度、湿度和压力传感器,将实时数据采集到4G DTU中。通过支持多种通信协议和接口,4G DTU高效地将数据传输到远程云平台或监控中心。 2. **远程监控和控制:** 4G DTU在工业物联网中扮演着实现远程监控和控制的关键角色。用户可以通过4G DTU远程监视和管理分布在不同地点的设备和系统。它可以接收远程指令并将其传输到相应的设备,实现远程控制操作,例如设备启停和参数调整等。 3. **数据安全和保护:** 在工业物联网中,数据安全和保护至关重要。4G DTU提供了数据加密和安全传输的功能,确保数据在传输过程中的机密性和完整性。此外,4G DTU还支持身份验证和访问控制机制,限制非授权人员的访问,并保护关键数据的安全性。 **4G DTU的功能优势** 1. **实时性和稳定性:** 4G DTU具备快速响应和高可靠性的优势。它实时采集和传输传感器数据,确保数据的准确性和时效性。4G DTU能够在高负荷环境下稳定运行,适应工业生产的复杂和严苛条件。 2. **灵活性和可扩展性:** 4G DTU具有灵活性和可扩展性的特点。它可以根据不同的应用需求进行配置和定制,适应不同的工业场景。4G DTU还支持与其他物联网设备的集成和扩展,实现更广泛的数据交换和协同工作。 **4G DTU的应用案例** 1. **制造业中的4G DTU应用:** 在制造业中,4G DTU广泛应用于生产线监控与优化。通过连接生产线上的各种设备和传感器,4G DTU实现对生产过程的实时监控,并通过数据分析提供生产效率的优化建议。此外,4G DTU还能够实现设备的远程维护与故障排查,提高设备的可靠性和维护效率。 2. **能源行业中的4G DTU应用:** 4G DTU在能源行业中也有广泛的应用。例如,它可以用于智能电网监测与管理,通过连接电表、变电站和能源管理系统,实现对电网状态和能源消耗的实时监测和管理。此外,4G DTU还可以用于分布式能源系统的控制与优化,实现可再生能源的高效利用和供需平衡。 **4G DTU的挑战与未来展望** 1. **网络兼容性和协议标准化:** 在工业物联网中,不同设备和系统使用的通信协议和接口存在差异,这给4G DTU的兼容性带来挑战。未来的发展需要更好的网络兼容性和协议标准化,以促进设备之间的互联互通。 2. **大数据处理和分析能力:** 随着工业物联网数据的不断增长,4G DTU需要具备强大的大数据处理和分析能力。它需要能够处理和分析海量的传感器数据,并从中提取有价值的信息,为决策提供支持。 3. **未来展望:** 4G DTU在工业物联网中的应用前景非常广阔。随着工业自动化和智能制造的深入发展,4G DTU将继续发挥重要作用。未来的4G DTU将更加智能化和集成化,具备更高 的性能和更丰富的功能,为工业物联网提供更好的支持。 **结语** 4G DTU作为连接传感器、设备和工业互联网的关键纽带,实现了数据采集和传输、远程监控和控制、数据安全和保护等重要功能。4G DTU具备实时性、稳定性、灵活性和可扩展性的优势,广泛应用于制造业和能源行业等领域。然而,4G DTU仍面临网络兼容性、协议标准化和大数据处理能力等挑战。未来,4G DTU将不断发展,为工业物联网的发展提供更多的创新和支持。在工业物联网的演进中,4G DTU将继续扮演关键角色,连接未来的智能制造和能源。 希望这篇文章更深入地展示了4G DTU在工业物联网中的重要性和多功能性,并为未来的发展提供了有力的指导。 --- ### 752. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在了解了Modbus通信的基本格式后,本期将通过仿真的方式实现Modbus RTU通信协议在三菱FX3U PLC上的应用。 指令介绍 一、软件准备 ●虚拟串口工具 ●Modbus Slave ●凌一PLC仿真器 ●GX works2编程软件 二、RS指令 RS指令是在执行串口通信时用来接收和发送数据的指令,使用该指令时需要在PLC上插入FX3U-485-BD通信模块。 1)基本格式 其中m(发生数据的个数)和n(接收数据的个数)需要根据外部设备的报文格式指令,不能随便设置。 2)示例 X0:RS指令触发条件,当X0位ON时RS指令进入发送或接收数据的等待状态。 D10:发送数据的起始寄存器。 K8:发送数据的个数,表示每次发送D10~D17范围内八个寄存器的数据。 D20:接收数据的起始寄存器。 K7:接收数据的个数,表示将外部设备返回的数据存入D20~D26范围内的七个寄存器里。 三、特殊辅助继电器 1)M8161 数据处理位数标志继电器 当M8161=OFF时处理16位数据。 当M8161=ON时处理低8位数据。 2)M8122 数据发送标志继电器 当RS指令处于发送或接收数据的等待状态时置位M8122,此时RS指令中发送数据寄存器里的数据将会被发送给外部设备。数据发送完成后系统会自动复位M8122,不能使用程序对其进行复位操作。 3)M8123 数据接收标志继电器 RS指令将数据发送完成后,进入接收数据状态。此时M8123被置位为ON,并对接收到的数据进行处理,数据处理完成后需要将M8123复位为OFF,否则无法接收下一轮的数据。 四、通信参数设置 通信参数既可以在PLC系统设置中直接设置,也可以通过改变D8120的值进行设置,两种设置方式任选一种即可(本文主要介绍通过D8120进行设置)。 1)直接设置 依次单击参数列表中的“PLC参数”→“PLC系统设置2” →勾选“进行通信设置”,然后根据实际需求设置通信参数,设置完成并检查无误后单击“设置结束”按钮保存设置。 2)通过D8120设置 根据下表给定的参数并结合实际需求设置b0~b15的值,并转换成十六进制数传送给D8120,实现通信参数设置。 3)示例 将通信参数设置按如下要求进行设置:数据长度为8位、偶校验、停止位为1位、波特率为9600、无报头报尾,控制线为无协议的RS-485接口。 编辑程序将参数传入D8120。 五、CRC指令 CRC指令的作用是计算Modbus RTU通信报文的校验码。 在低8位模式下(M8161=ON),当X0为ON时CRC指令计算出D10~D15六个寄存器产生的效验码,并将计算结果的高八位存入D16,低八位存入D17。 指令运用 一、项目要求 按下X0按钮读取1号从站保持寄存器40000的值,按下X1将100写入1号从站保持寄存器40002中,通信参数与上文示例中保持一致。 二、编辑程序 1)初始化 在初始化程序中需要将M8161设置为处理低8位数据模式(M8161=ON),将通信参数传入特殊寄存器D8120以及复位程序中用到的寄存器。 2)添加RS指令 如果每次处理的数据长度一致,那么只需添加一次RS指,并且让RS指令一直处于等待发送或接收数据状。 发送或接收的数据长度需要根据外部设备的要求进行设置,此处外部设备为Modbus Slave,其报文格式与标准报文格式一致,所以此处发送和接收的数据长度分别为K8和K7。 3)编辑读取程序 a)计算读取程序报文 可以借助串口调试助手自动生成报文,其中84 0A为CRC校验码。 b)编辑报文传送程序 当检测到X0的上升沿时将生成的报文传入用来发送数据的寄存器D10~D15中。 报文需要用十六进制表示。 c)添加CRC指令 CRC指令将根据前六个报文计算出校验码,并将结果的高八位存入D16,低八位存入D17。 由于仿真中CRC指令时好时坏,所以本项目不使用CRC指令,而是将校验码直接传入D16和D17。 d)发送数据 当检测到X0的下降沿时置位M8122完成数据的发送。 e)接收并处理读取回来的数据 从站返回的数据如同所示,通过分析报文可得从站返回的数据高八位和低八位分别储存在D23和D24中。 通过计算把D23和D24的数据合并,然后存放到D31中。 4)编辑写入程序 a)编辑报文传送程序 参照读取程序的编辑方式。 b)发送数据 c)接收数据 由于不需要接收从站返回的数据所以直接复位M8123。 仿真环境配置 一、添加虚拟串口 需要添加两对虚拟串口,一对用来实现GX works2和凌一PLC仿真器的连接,另一对用实现凌一PLC仿真器和Modbus Slave的连接 二、配置凌一仿真器 配置完成后需要打开下载口和开启扩展通信,并让PLC处于运行状态。 三、配置GX works2 其配置方式与连接实体PLC时的方式一致,主要选择端口号。设置完成后单击“通信测试”,测试成功后单击“确定”保存设置,并将程序下载到仿真器中。 四、配置Modbus Slave 1) 配置Modbus Slave连接 连接参数需要与D8120中的通信参数保持一致。 2)配置Modbus Slave从站功能 如图所示设置从站功能,并修改寄存器40000的值。 五、仿真演示 配置好仿真环境后,将程序下载到仿真器中,并进入监视状态。 1)读取演示 单击仿真器中的X0按钮,观察D31的值是否与Modbus Slave中保持寄存器40000设置的值一致。 2)写入演示 单击仿真器中的X1按钮,观察100是否被写入到从站的保持寄存器40002中。 六、程序整体浏览 若有收获,就点个赞吧 2026年补充:FX5U与R系列PLC的Modbus通信方案对比 随着三菱FX3U逐步向FX5U和R系列换代,Modbus RTU通信的实现方式也有了变化: PLC型号Modbus实现方式优势FX3U + 485-BDRS指令(手动编程)灵活,适合定制化项目FX5U 内置485MODBUS RTU专用指令编程简化50%,调试效率高R系列C24串口模块支持双通道独立通信 如果您正在做PLC型号迁移,modbus.cn提供三菱全系列Modbus通信技术文档,包括详细接线图和示例程序,欢迎查阅。 相关文章:PLC技术专栏 | 西门子PLC RS485通信 | 西门子1200 S7通讯 --- ### 753. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在现代化高度集成工业中,经常用到PLC和PLC之间的通讯,常见的通讯modbus,profibus DP,profinet ,CANOPEN等等通讯,今天我们以西门子TIA博途平台讲解两台PLC如何做Modbus RTU通讯。 在做通讯前,我们必须满足以下软硬件要求:●1.一台装有TIA V16博途软件电脑;●2.两台西门子系列PLC,必须满足博途V16版本使用;●3.一个DP9针公头(1200端使用),一个DP15针公头(1500端使用)及一条两芯带屏蔽线(规格0.5平方的);●4.今天实验的通讯模块型号规格如下:CM1241RS422/485 订货号:6ES7 241-1CH320XB0;CMPtP RS422/485HF 订货号:6ES7 541-1AB00-0AB0; 下面图片展示今天所需要的通讯模块及DP头; 1200端通讯模块 1500端通讯模块 1200端DP9针公头 1500端DB15针公头 1200和1500 modbus连线:1200 PLC端 1500PLC端3+ 11+8- 4-组态主站(1200端):1.)建立一个项目,并添加CPU和RS485模块如下图所示: 2.)硬件我们添加完毕,这里设置CM1241-R485模块参数: 3.)建立一个供1200PLC端(主站)存储数据的DB块: 修改DB块“优化进行访问”。 4.)建立需要的数据: 5.)添加一个FC函数块: 6.)我们把程序写到FB程序段里面,设置Modbus_Comm_Load管脚参数: 7.)因为Modbus_Comm_Load块默认工作模式时RS232,我们这里需要修改成RS485模式,修改有两种方式,第一种是Modbus_Comm_Load背景DB块里面修改“MODE”参数由16#00修改成16#04,如下图所示: 第二种是利用“move”指令传递一个4给到Modbus_Comm_Load_MODE里,如下图所示: 设置Modbus_Mastr功能块管脚参数: 8.)测试程序:写入从站1500Q区: 读取从站1500Q区: 编写完成主站程序,接着组态从站PLC10.)建立一个项目,并添加CPU和通讯模块等如下图所示: 11.)设置PtP-RS422/485通讯模块参数如下图所示: 12.添加一个全局数据背景DB块: 13.)建立存储数据: 14.)我们开始写入程序,给FB程序段添加一个“Modbus_comm_Load”通信初始化指令块,并设置相应的管脚参数: 由于Modbus_comm_Load”功能块默认是RS232,而我们启用RS485,所以的修改。第一种是直接修改 Modbus_comm_Load如下图所示: 第二种和前面讲修改1200通信数据块的方法一致如下图: 15,添加从站指令块: 16.测试程序:主站1200写入从站1500的Q0.0,Q0.1; 从站1500写入主站1200的Q0.2,Q0.3, Q0.4; 监控程序:           若有收获,就点个赞吧     今天 09:59 0   --- ### 754. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 **物联网协议:连接设备和数据的关键桥梁** 物联网(IoT)是当今世界中的一个崭新领域,它正在改变我们生活和工作的方式,将我们的设备、传感器和系统连接到一个巨大的网络中,以实现智能化、自动化和数据驱动的功能。然而,要使物联网生态系统正常运行,需要各种协议来确保设备之间的通信和数据传输无缝进行。在本文中,我们将深入探讨不同类型的物联网协议,包括传输协议、通信协议和行业协议,以及它们在不同应用场景中的作用。 **传输协议:连接设备的纽带** 首先,让我们了解传输协议,这些协议负责设备之间的组网和通信。它们确保了在物联网中传输的数据的安全性和可靠性。以下是一些常见的传输协议: | 协议 | 描述和应用场景 | |-----------|--------------------------------------------------------------------------------------------------| | Modbus | 基于TCP/IP的应用层协议,用于工业领域设备间通信。 | | OPC-UA | 用于工业自动化领域,支持设备间数据交换和远程访问。 | | OPC-DA | 用于实时数据访问,适用于多供应商设备和控制应用程序之间的数据交换。 | | LoRa | 用于低功耗、远距离通信,广泛应用于智慧城市、智能建筑和农业等领域。 | | ZigBee | 低功耗无线通信协议,适用于工业、农业和智能家居等领域。 | | Bluetooth | 无线数据和语音通信协议,适用于移动设备、耳机、笔记本电脑等设备的无线连接。 | **通信协议:连接物联网的数据高速公路** 接下来,让我们关注通信协议,这些协议运行在传统互联网的TCP/IP协议之上,负责设备通过互联网进行数据交换和通信。以下是一些常见的通信协议: | 协议 | 描述和应用场景 | |--------|----------------------------------------------------------------------------------------------------| | MQTT | 轻量级发布-订阅信息传输协议,广泛应用于智能硬件、车联网、能源等物联网场景。 | | HTTPS | 超文本传输协议,适用于设备硬件和网络带宽充裕的场景,通常用于安全的数据传输。 | | CoAP | 适用于资源受限的低功耗设备,采用UDP协议进行数据传输,特别适用于NB-IoT等设备。 | | TCP | 传输控制协议,用于可靠的点对点通信,通常在网络连接稳定的环境中使用。 | | UDP | 用户数据报协议,用于实时数据传输和快速通信,适用于实时视频、传感器数据采集等应用场景。 | **行业协议:满足特定行业需求的标准** 最后,让我们看看行业协议,这些协议通常是特定行业内的标准,用于满足该行业的需求。以下是一些常见的行业协议: | 协议 | 描述和应用场景 | |-----------|--------------------------------------------------------------------------------------------------| | GB/T28181 | 用于视频监控领域,是国家标准,支持视频联网传输和设备控制。 | | JT/T808 | 用于交通行业,主要用于监控“两客一危”车辆,实现车辆远程定位和通信。 | | GB3761 | 用于电表领域,采用新型数据采集技术,实现电能表的实时记录、抄表和结算等功能。 | | DL/T645 | 多功能电能表与数据终端设备之间的通信协议,用于电能表和计量系统之间的数据交换。 | | IEC104 | 用于电力和城市轨道交通领域,支持远动信息的网络传输,确保电力系统的通信可靠性。 | | HJ212 | 用于环保行业,规定了污染物在线监测系统的数据传输标准,支持环保数据的采集和传输。 | | SL651 | 用于水文监测,规范了水文监测设备的数据通信,确保水文数据的可靠传输和分析。 | 这些协议在物联网中发挥着关键作用,帮助设备间实现通信和数据传输,从而推动了物联网技术的发展和应用。根据具体的应用场景和需求,选择合适的协议对于构建稳定可靠的物联网系统至关重要。让我们深入研究这些协议,以便更好地理解它们在不同应用中的作用。 2026年协议格局更新:Matter与UCI的崛起 近两年物联网协议层有两个重要变化值得关注: Matter 1.4标准发布(2025年):由CSA联盟推进的智能家居统一应用层协议,已获Apple、Google、Amazon、Samsung等头部厂商支持。Matter底层仍通过IP(Wi-Fi/Thread)通信,但对设备厂商而言,一次开发即可兼容多个生态平台,大幅降低了接入成本。 Unified Communication Interface (UCI):工业领域新的统一通信接口标准正在推进中,目标是在OPC UA和Modbus之间建立标准化的协议桥接,实现IT/OT的真正融合。 对于工业物联网现场设备层,Modbus RTU/TCP依然是不可替代的事实标准——它简单、可靠、实现成本低,全球超过80%的PLC和传感器都原生支持。modbus.cn将持续追踪协议标准的最新变化,为您提供技术决策参考。 --- ### 755. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 西门子PLC指令是用于编程可编程逻辑控制器(PLC)的重要工具,可以帮助工程师实现自动化控制。这些指令涵盖了一系列的功能,包括逻辑控制、计数、定时、算术运算等。通过使用这些指令,工程师可以创建复杂的控制逻辑,以满足各种工业应用的需求。 西门子PLC指令通常包括LD(逻辑“与”)、LDI(逻辑“非”)、AND(逻辑“与”)、OR(逻辑“或”)、ANDI(逻辑“与非”)、ORI(逻辑“或非”)、COM(公共端)、SET(置位)、RESET(复位)等。这些指令可以根据需要进行组合和嵌套,以实现更复杂的控制逻辑。 2026年扩展阅读:从基础指令到实战编程 掌握基础指令后,推荐循序渐进地学习以下内容: 数据处理指令:MOV(数据传送)、CMP(比较)、CONV(数据类型转换)——这三组指令在实际项目中占比超过60%。 通信指令:对于需要通过Modbus RTU与外设通信的场景,重点学习MBUS_CTRL(初始化)和MBUS_MSG(读写数据)两条指令。 模拟量处理:学习如何将4-20mA模拟量信号转换为工程量(温度、压力、液位等)。 modbus.cn提供了从入门到实战的西门子PLC+Modbus完整教程系列,包括硬件接线、程序编写、上位机调试全流程指南。建议配合实际设备动手练习,效果最佳。 相关文章:PLC技术专栏 | 三菱FX3U Modbus RTU通信 | 西门子1200 S7通讯 --- ### 756. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、Modbus通信协议 Modbus协议只有一个主站,可以有1~247个从站。此协议支持传统的RS-232、RS-422、RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通信标准。 当控制器设为在Modbus网络上以RTU模式通信,在消息中的每个8Bit字节按照原值传送,不做处理,如63H,RTU将直接发送01100011,这种方式的主要优点是数据帧传送之间没有间隔,相同波特率下传输数据的密度要比ASCII高,传输速度更快。 二、ModbusRTU主站指令 1、Modbus库指令如图1所示,Master为主站0口,Master2为主站1口,Slave为从站,且从站只有0口。 图1 2.西门子Modbus库主站MBUS_CTRL的主站定义参数,如图2所示。 图2 图2中符号说明如下: EN:一直使能 MODE:允许Modbus通信 Baud:通信速率,波特率(主从一致),默认9600 Parity:奇偶校验,0无校验,1奇校验,2偶校验(主从一致),默认偶校验 Port:通信端口,0口自带,1口扩展(CM01信号板) Timeout:最大等待时间单位:ms Done:完成位 Error:错误代码(当出现错误可以查看软件帮助相对应的错误代码) 西门子Modbus库主站MBUS_MSG的主站信息读写参数,如图3所示 图3 图3中符号说明如下: En:使能 First:首次扫描用沿触发 Slave:从站地址(1-247主站默认2号站,从站地址除2以外) RW:读写操作,0读,1写 Addr:读写地址功能码 Count:数量 Dataptr:数据指针 (默认指主站而且是以字节的形式显示) Done:完成位 Error:错误字节(当出现错误可以查看软件帮助相对应的错误代码) STEP7_Micro/WIN Smart和S7_200SmartCPU支持两种Modbus RTU主站,对于单个Modbus RTU主站,使用指令MBUS_CTRL和MBUS_MSG,在进行0口通信时应用。对于第二个Modbus RTU主站,使用指令MBUS_CTRL2和 MBUS_MSG2,在进行1口通信时应用。如果您在项目中使用两个 Modbus 主站,则要确保 MBUS_CTRL 和 MB_CTRL2 使用不同的端口号。 MBUS_CTRL写在主站里,不管有多少从站,只写一次。MBUS_MSG 写在主站里,比如有一个从站,主从互相控制,需要2条指令,一个读一个写,有多个从站,就写多个读写指令。 三、ModbusRTU从站指令 西门子Modbus库从站MBUS_CTRL的从站定义参数,如图4所示。 图4 图4中符号说明如下: En 使能用沿触发 Mode 允许Modbus通信 Addr 从站地址(1-147) Baud 通信速率波特率(主从一致)默认9600 Parity 奇偶校验0无校验,1奇校验,2偶校验(主从一致)默认偶校验 Port 通信端口0口自带 Delay 延时 MaxIQ 最大输入输出点数256 MaxAI 最大模拟量输入56 Maxhold 最大缓存区 Holdstart 最大缓存区起始地址 Done 完成位 Error 错误字节 Done 完成位 Error 错误字节 2.西门子Modbus库从站MBUS_SLAVE的从站应答参数,如图5所示。 图5 四、通信程序编写 ModbusRTU两台PLC互相控制通信示例 ModbusRTU 两台PLC分别用I点相互控制Q点,主站程序如图6所示,从站程序如图7所示。写从站程序需要注意,从站定义需要用沿触发,在系统块记得更改从站PLC站地址。 图6 图7 ModbusRTU两台PLC星三角通信示例 两台PLC,主站控制从站的星三角启动停止,主站IW0控制从站VW0(I0.0-V0.0启动,I0.1-V0.1停止),主站程序如图1-1图1-2所示,从站程序如图1-3图1-4图1-5图1-6图1-7图1-8所示。 图1-1 图1-2 图1-3 图1-4 图1-5 图1-6 图1-7 图1-8 ModbusRTU三台PLC星三角通信示例 三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停如图2-1所示,控制程序如图2-2图2-3图2-4图2-5图2-6图2-7所示。 图2-1 图2-2 图2-3 图2-4 图2-5 图2-6 图2-7 2.三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停,3号从站控制程序如图2-8图2-9图2-10所示。 图2-8 图2-9 图2-10 3.三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停,4号从站控制程序如图2-11图2-12图2-13所示。 图2-11 图2-12 图2-13 值得注意的是,要记得更改三号站和四号站在系统块内的地址,从站定义用沿来触发。最后记得在程序块中设置库存储区的分配如图2-14。 图2-14 --- ### 757. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 S7-200 SMART CPU既可以通过本体集成的RS485端口或信号板连接支持PPI协议的西门子HMI设备,还可以通过本体集成的以太网口来连接支持S7协议的西门子HMI设备。当CPU的三个物理接口同时连接西门子HMI设备时(包含信号板),最多的连接资源数是16个。 CPU的连接能力 Smart Panels 支持的 PLC: 第一代产品 SmartLine(无以太网接口):S7-200、OMRON CP1系列、三菱 FX 系列、Modbus RTU; 注意:只能建一个通讯连接,否则Smart Panels 无法启动项目(白屏)。 第二代产品SmartLine-IE: 串口:S7-200、OMRON CP1系列、三菱 FX 系列、Modbus RTU、台达(DVP-SV/ES2 系列); 以太网:S7-200(CP243-1)、Smart200、LOGO! Smart Panels 通过串口只能连接一个设备,通过以太网可以连接三个设备,但是串口和以太网不能同时使用(编译通不过)。 注意:串口和以太网口只能使用一个,否则编译通不过。 二、 用户需要使用WinCC Flexible 2008 SP2 China或以上版本来组态第一代产品SmartLine,如果是第二代产品SmartLine IE的话,只能使用WinCC Flexible 2008 SP4 China进行组态。 用户既可以在WinCC Flexible中直接创建项目,也可以使用向导创建。下文主要介绍如何直接创建项目。 双击PC桌面的SIMATIC WinCC flexible图标可以启动WinCC flexible,在启动画面中选择“创建一个空项目”,如图1 所示。鼠标左键单击“创建一个空项目”后,打开如图2所示的“设备选择”界面。在该界面选择所使用的设备,在此以Smart 1000 IE为例。 直接创建项目 设备选择 三、配置 用户通过以下步骤可配置Smart 1000 IE与S7-200 SMART CPU的PPI通信。 第一步:在WinCC flexible的主工作窗口中,展开左侧树形项目结构,选择“项目”>“通讯”>“连接”,双击“连接”图标以打开“连接设置”的属性窗口。如图所示。 打开连接窗口 第二步:在“连接”窗口中双击名称下方的空白表格,或者右击鼠标选择快捷菜单中的“添加连接”可以添加与CPU的连接。如图所示。 添加连接 第三步:添加连接后,根据项目需求用户可以修改默认的连接名称“连接_x”,并选择“通讯驱动程序”和是否在线。由于连接的设备是S7-200 SMART CPU,所以在“通讯驱动程序”下方的下拉菜单处选择“SIAMTIC S7 200 SMART”作为通讯驱动程序,同时激活在线连接。如图所示。 配置连接 第四步:设置连接参数。首先选择Smart 1000 IE的接口为“IF1 B”,即触摸屏的RS422/485物理接口。选中该接口后,该接口的参数设置窗口将在其下方自动显示。设置触摸屏的通信波特率为187500,站地址为1。接着在“网络”窗口选择“PPI”为通信双方的通信协议。 最后在“PLC设备”窗口设置CPU的站地址,此处设置CPU的站地址为2,如图所示。 连接参数设置 注意:CPU的地址必须不同于HMI设备的地址,二者不能重复。 第五步:设置S7-200 SMART CPU的波特率和站地址。在STEP 7 Micro/WIN SMART软件的项目树中选择“系统块”,然后按“回车”键,即可打开如图7所示的“系统块”窗口。为CPU的RS485端口设置的站地址和波特率必须与图6的配置保持一致,CPU的站地址为2,通信波特率为187.5 kbps。 S7-200 SMART通信口设置 至此已经配置完成了Smart 1000 IE与S7-200 SMART CPU的PPI通信。 四、启动 给Smart 1000 IE设备上电时屏幕会短暂出现启动画面,如图8所示。图中的三个按钮代表的含义如下。 Transfer:HMI设备设置为“传送”模式。 Start:启动装载在HMI设备上的项目。 Control Panel:点击该按钮后进入HMI设备的控制面板,用户在控制面板可以选择传输模式,添加密码等。 启动画面 五下载 要将配置好的项目下载到Smart 1000 IE设备上,首先要保证HMI设备的通信口处于激活状态,可通过HMI设备的“Control Panel”>“Transfer”进行设置,如图9所示。如果选择串口方式下载项目,首先需要勾选“Serial”右侧的“Enable Channel”。 通信口使能 其次,要使用Siemens原装的PPI编程电缆下载项目,RS-232/PPI电缆(订货号6ES7 901-3CB30-0XA0)和USB/PPI电缆(订货号6ES7 901-3DB30-0XA0)都可以。当使用的电缆是USB/PPI时,要求其E-STAND版本是05或更高版本。 接着在WinCC flexible 软件的菜单栏选择“项目”>“传送”>“传输”,如图10 所示。单击“传输”即可打开“选择设备进行传送”窗口,如图所示。在“选择设备进行传送”窗口,用户可以选择传输模式为“串行”或“串口(通过USB-PPI电缆)”,在此选择后者进行传输。 打开传输设置 传输设置 给Smart 1000 IE设备断电再上电后,HMI设备将会出现启动画面,单击Transfer按钮,使HMI设备处于“传送”模式。 接着在WinCC flexible软件中选择“项目”>“传送”>“传输”,单击图11中的“传送”按钮,待HMI设备中的传送状态显示为“传输完成”时,至此已成功通过串口模式将项目传送到HMI设备。 2026年更新:二代Smart Line与S7-200 SMART V2.8适配说明 S7-200 SMART CPU固件已更新至V2.8版本,二代Smart Line(Smart Line IE V4)触摸屏的驱动也做了相应升级。实测验证——相同配置下,V2.8+V4组合的PPI通信响应时间比上一代缩短约15%。 注意事项: 升级固件前请先备份PLC程序和HMI工程。 V2.8版本对RS485端口参数有更严格的校验——波特率、数据位、停止位、校验位等设置必须在PLC和HMI两端保持一致,否则连接会被主动拒绝。 如使用Modbus RTU与第三方设备通信,建议将PLC的RS485口通过485集线器分出,避免PPI和Modbus共用端口导致冲突。 如需项目方案咨询,请联系 modbus技术团队。 --- ### 758. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus具有两种串行传输模式:分别为ASCII和RTU。 Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,其中0为广播地址,从站的实际地址范围为1 - 247。Modbus RTU通信以主从的方式进行数据传输,在传输的过程中Modbus RTU主站是主动方,即主站发送数据请求报文到从站,Modbus RTU从站返回响应报文。 S7-1200以下模块支持 Modbus RTU通信: 通信模块/通信板 订货号 CM1241 RS232 6ES7 241-1AH32-0XB0 CM1241 RS485 6ES7 241-1CH30-0XB0 CM1241 RS422/485 6ES7 241-1CH32-0XB0 CB 1241 RS485 6ES7 241-1CH30-1XB0 注意 1. 使用通信模块CM 1241 RS232作为Modbus RTU主站时,只能与一个从站通讯。 2. 使用通信模块CM 1241 RS485作为Modbus RTU主站时,则允许建立最多与 32 个从站的通讯。 3. 使用通信板CB 1241 RS485时,CPU 固件必须为 V2.0 或更高版本,且使用软件必须为STEP 7 Basic V11 或STEP 7 Professional V11 以上更高版本。 随着 TIA PORATL 软件和 S7-1200 CPU 固件的不断更新,S7-1200 Modbus RTU 指令也出现了不同的版本。用户需要根据使用的软件和硬件,正确选择使用符合要求的 S7-1200 Modbus RTU 指令来实现 Modbus RTU 通信。 软件,硬件要求和指令版本说明如下。 软件STEP 7 V11 中的S7-1200 Modbus RTU 指令 软件STEP 7 V11版本开始,可以从“指令”→“通信处理器”→“MODBUS”下直接调用 “MB_COMM_LOAD”和“MB_MASTER”或“MB_SLAVE”指令,如下图1所示: 图1 Modbus RTU指令 Modbus RTU指令有两个版本:分别为V1 和V2。版本V1最初在 STEP 7 Basic V10.5 中提供;版本V2 在 STEP 7 Basic/Professional V11 中提供。 软件STEP 7 V13 SP1 中的S7-1200 Modbus RTU 指令 TIA V13 SP1版本软件中提供了2个版本的 Modbus RTU指令。如下图 2 所示:早期版本的 Modbus RTU 指令(图2. 中 MODBUS (V2.2))仅可通过 CM1241 通信模块或 CB1241 通信板进行 Modbus RTU 通信。新版本的Modbus RTU指令(图2. 中 MODBUS(RTU) V3.0)扩展了Modbus RTU的功能,该指令除了支持 CM1241 通信模块、CB1241 通信板,还支持PROFINET或PROFIBUS分布式 I/O 机架上的PTP通信模块实现 Modbus RTU 通信。 注意:新版本 Modbus RTU 指令的使用限制条件 新版本 Modbus RTU 指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,需要满足如下条件:a. S7-1200 CPU 的固件版本不能低于V4.1;b. CM1241通信模块 V2.1 以上或 CB1241。 图2. 两个版本 Modbus RTU 指令 常见问题   1、西门子不提供支持MODBUS-ASCII通信模式的的现成指令,需要用户自己用自由口模式编程。   2、Modbus RTU指令版本 V2 将参数“REQ”和“DONE”添加到“MB_COMM_LOAD”指令。而且,“MB_MASTER”和“MB_SLAVE ”指令的“MB_ADDR ”参数现在允许一个UInt值以进行扩展寻址。   3、不能在同一CPU 程序中同时使用V1(V1.x)和V2(V2.y)指令版本。用户程序的 Modbus 指令必须具有相同的主版本号;主版本组内的各个指令可具有不同的次版本号。   4、对S7-1200 通信模块CM1241组态并编程调用“MB_COMM_LOAD”指令,可将其设置为Modbus RTU通信模式。通过编程调用“MB_MASTER”指令,S7-1200 通信模块CM1241可作为Modbus RTU主站,或调用“MB_SLAVE”指令,S7-1200 通信模块CM1241可作为Modbus RTU从站。   5、无论S7-1200 通信模块CM1241作为Modbus RTU主站还是从站,都需要调用“MB_COMM_LOAD”指令进行编程。   6、S7-1200 CM1241/CB1241 Modbus RTU 通信支持两位停止位。S7-1200 CM1241/CB1241属性里可以设置停止位,但是该模块用于 Modbus 通信时,此设置的停止位无效,需要在 Modbus_Commload 指令的背景DB里Static修改STOP_BITS停止位数值为2。 如下图3、4所示: 图3. CM1241 配置停止位参数 Modbus_Commload 指令的背景DB里Static修改STOP_BITS停止位数值为2(默认值=1) 图4. 修改 Modbus RTU 通信停止位 Modbus RTU新版本指令介绍 TIA V13 SP1版本软件中提供了2个版本的Modbus RTU指令: 图1. 两个版本Modbus RTU指令 早期版本的Modbus RTU指令(图1中MODBUS (V2.2))仅可通过CM1241通信模块或CB1241通信板进行Modbus RTU通信。 新版本的Modbus RTU指令(图1中 MODBUS(RTU) V3.0)扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板,还支持PROFINET或 PROFIBUS分布式I/O机架上的PTP通信模块实现Modbus RTU通信。 新版本Modbus RTU指令所支持的PTP模块如下图2所示: 图2. 新版本 Modbus RTU指令所支持的PTP模块 新版Modbus RTU指令的使用 新版本Modbus RTU指令中包含Modbus RTU 主站指令和从站指令。本文以 CPU1217C+CM1241 RS422/485+ET200SP CM PTP 模块为例,介绍新版本 Modbus RTU 指令主从通信的编程步骤。 其中CPU机架CM1241 RS422/485作为Modbus RTU从站,分布式机架ET200SP中 CMPTP模块作为Modbus RTU主站。网络结构图如下: 图3. Modubus RTU 网络通信结构图 使用到的硬件和软件如下: 硬件: ① CPU1217C(订货号:6ES7 217-1AG40-0XB0),固件版本V4.1.3 ② CM1241 RS422/485模块(订货号:6ES7 241-1CH32-0XB0),固件版本V2.1 ③ 24V 电源PS307(订货号:6ES7307-1KA02-0AA0) ④ ET200 SP IM155-6PN HF(订货号:6ES7155-6AU00-0CN0) ⑤ CM PTP模块(订货号:6ES7137-6AA00-0BA0) 软件: ① TIA V13 SP1 UP 9 一、设备组态 1 组态CM1241 RS422/485模块 打开设备视图,添加S7-1200CPU,并在硬件目录里找到“通信模块”→“点到点”→“CM1241(RS422/485)”,拖拽此模块至CPU左侧即可,如下图4所示: 图4. 添加 CM 1241 RS422/485模块 需要注意:固件版本>=V2.1 的CM 1241 RS422/485模块,才支持新版本Modbus RTU指令。 接下来,在“设备视图”中用鼠标选中CM1241(RS422/485)模块,在“属性”→“端口组态”中配置此模块硬件接口参数, 本例以传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1为例。如CM 1241 端口组态设置如下图5所示: 图5. CM1241 RS422/485 模块端口组态 最后在“硬件标识符”里确认一下硬件标识符为269(该参数在程序编程中会被使用),如下图6所示: 图6.硬件标识符 另外,S7-1200 还提供了系统和时钟存储器功能,为了便于后续指令,建议使能该功能。在CPU “属性”→“常规”→“系统和时钟存储器”使能系统和时钟存储器功能,如图7所示。 图7. 系统和时钟存储器功能 2 组态ET200 SP CM PtP模块 a、插入一个ET200SP分布式站点。 打开网络视图并拖入一个ET200SP站点,并将其分配给相应的IO控制器(本例CPU1217C 为 IO 控制器),如图8所示。 图8. 插入ET200SP站点 b、组态ET200SP 站点。 在ET200SP的"设备视图"环境下,为ET200SP 站点添加信号、通信模块和服务器模块,在本例中只添加了CM PTP模块和服务器模块。 需要注意:ET200SP站点中,服务器模块是必须组态的。服务器模块随接口模块一起采购,无需单独购买。 ET200SP接口模块需要为其分配IP地址和Device Name, 有关ET200 SP 分布式IO 组态详细步骤,请参考《ET200 SP使用快速入门》。 《ET200 SP 使用快速入门》下载链接: https://support.industry.siemens.com/cs/cn/zh/view/78304711 在ET200SP"设备视图"中用鼠标选中CM PTP,在“属性”→“常规”→“接口”→“操作模式”中配置此模块硬件接口参数, 本例设定“指定工作模式":"半双工(RS485)2线制操作";"接收线路的初始状态":"无"。如下图9所示: 图9. CM PTP 操作模式 接下来,在“属性”→“常规”→“接口”→“端口组态”中配置此模块端口组态参数, 本例设定"协议":"Freeport/Modbus";"端口参数"设置:传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1为例。端口组态设置如下图10所示: 图10. CM PTP 端口组态 最后需要在“硬件标识符”里确认一下CM PTP 模块硬件标识符,该参数在程序编程中会被使用。 二、软件编程 1 Modbus RTU 主站编程 Modbus RTU主站编程需要调用Modbus_Comm_Load指令和Modbus_Master指令,其中Modbus_Comm_Load指令通过Modbus RTU协议对通信模块进行组态,Modbus_Master指令可通过由Modbus_Comm_Load指令组态的端口作为Modbus主站进行通信,Modbus_Comm_Load指令的MB_DB参数必须连接到Modbus_Master指令的(静态)MB_DB参数。 本例中分布式机架ET200SP中CM PTP模块作为Modbus RTU主站,其相关编程步骤如下: a、OB1中插入一个FC函数,并在函数中拖入Modbus_Comm_Load指令和Modbus_Master指令。如图11所示 图11. 拖入Modbus RTU 主站指令 Modbus_Comm_Load指令各参数意义如下表1所示: 引脚 说明 REQ 上升沿触发 PORT 通信端口的硬件标识符 BAUD 波特率选择:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200 PARITY 奇偶检验选择:0-无;1-奇校验;2-偶校验 FLOW_CTRL 流控制选择:0-(默认值)无流控制 RTS_ON_DLY RTS延时选择:0-(默认值) RTS_OFF_DLY RTS关断延时选择:0-(默认值) RESP_TO 响应超时:默认值 = 1000 ms。MB_MASTER 允许用于从站响应的时间(以毫秒为单位)。 MB_DB 对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。 MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。 DONE 如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。 ERROR 如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。 STATUS 端口组态错误代码,请参考TIA 软件在线帮助或S7-1200 系统手册。 表1 MB_COMM_LOAD指令参数意义 Modbus_Master指令各参数意义如下表2所示: 引脚 说明 EN 使能端 REQ TRUE = 请求向 Modbus 从站发送数据 ,建议采用上升沿触发 MB_ADDR Modbus RTU从站地址。默认地址范围:0至247;扩展地址范围:0至65535。值0被保留用于将消息广播到所有Modbus从站。 MODE 模式选择:指定请求类型(读取或写入)。 DATA_ADDR 从站中的起始地址:指定Modbus从站中将供访问的数据的起始地址。 DATA_LEN 数据长度:指定要在该请求中访问的位数或字数。 DATA_PTR 数据指针:指向要进行数据写入或数据读取的标记或数据块地址。 DONE 完成位:上一请求已完成且没有出错后,DONE 位将保持为 TRUE 一个扫描周期时间。 BUSY FALSE – Modbus_Master 无激活命令: TRUE – Modbus_Master 命令执行中 ERROR 对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。 MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。 STATUS 如果上一个请求完成并且没有错误,DONE 位将变为 TRUE 并保持一个周期。 ERROR 如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。 STATUS 错误代码 表2 Modbus_Master指令参数意义 注意 ① Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” 系统存储器位。 ② Modbus_Comm_Load指令背景数据块中的静态变量“MODE”用于描述PTP模块的工作模式,有效的工作模式包括: · 0 = 全双工 (RS232) · 1 = 全双工 (RS422) 四线制模式(点对点) · 2 = 全全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP)) · 3 = 全全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP)) · 4 = 半双工 (RS485) 二线制模式 该静态变量“MODE”默认数据为0(RS232 全双工模式),需要根据CM PTP模块实际组态修改该数值,本例中CM PTP模块工作在RS485半双工模式需要将该数值修改为4,如图12所示。 图12. Modbus_Comm_Load背景数据块静态变量“MODE”修改为4 ③ Modbus_Master指令的“DATA_PTR”参数用于指向要进行数据写入或数据读取的数据区域地址,该数据区域支持优化访问的数据块或者非优化(标准的)数据块,建议采用非优化访问的数据块。 本例中使用的数据区为非优化访问的数据块,在数据块的属性中取消“优化的块访问”即可将数据块修改为非优化访问的数据块(鼠标右键数据块,选择“属性”,取消“优化的块访问”),如图13所示。 图13. 设置数据块为非优化访问 当Modbus_Master指令的“DATA_PTR”指向非优化访问的数据块时,该输入参数需要使用指针方式填写如P#DB3.DBX0.0 WORD 5 方式填写。 ④ 当Modbus RTU网络中存在多个modbus RTU从站或一个modbus RTU从站同时需要读操作和写操作,则需要调用多个Modbus_Master指令,Modbus_Master指令之间需要采用轮询方式调用。 下图14用于描述两个Modbus_Master指令轮询调用的方式。 图14.Modbus_Master轮询调用方式 b、插入"Pull or plug of modules" 中断OB83。 本例中Modbus RTU主站模块安装在分布式IO站点上,因此程序中需要考虑分布式IO站点故障、CM PTP 模块插拔模块等故障。 分布式IO站点中插出、拔入模块时,操作系统都会调用一次OB83。通过OB83接口区的输入变量“16#Event_Class”判断故障的模块和类型:事件类型16#39表示模块被拔出,事件类型16#38表示模块被插入。 CM PTP 模块被重新插入的时候,需要在中断OB83中调用Modbus_Comm_Load 指令对通信模块进行重新组态,如图15所示。 图15. OB83中再次调用Modbus_Comm_Load 指令 注意 ① OB83 中调用Modbus_Comm_Load指令的背景数据块需要与OB1中调用的Modbus_Comm_Load指令的背景数据块相同。 ② CM PTP模块的硬件标识符也可以在"PLC变量"--->"系统常数"中查询,如图16. 所示。 图16. 系统常量 c、插入"Rack or Station failure" 中断OB86。 分布式IO站点故障和恢复时,操作系统都会调用一次OB86。通过OB86接口区的输入变量“16#Event_Class”判断故障的模块和类型:事件类型16#39表示站点故障,事件类型16#38表示站点恢复。 CM PTP 模块所在的IO站点恢复时,需要在中断OB86中调用Modbus_Comm_Load 指令对通信模块进行重新组态,如图17所示。 图17. OB86中调用Modbus_Comm_Load 指令 注意 ①OB86 中调用Modbus_Comm_Load指令的背景数据块需要与OB1中调用的Modbus_Comm_Load指令的背景数据块相同。 ② 分布式IO 站点的硬件标识符也可以在"PLC变量"--->"系统常数"中查询。 2 Modbus RTU 从站编程 Modbus RTU从站编程需要调用Modbus_Comm_Load指令和Modbus_Slave指令,其中Modbus_Comm_Load指令通过Modbus RTU协议对通信模块进行组态,Modbus_Slave指令可通过由Modbus_Comm_Load指令组态的端口作为Modbus从站进行通信,Modbus_Comm_Load指令的MB_DB参数必须连接到Modbus_Slaver指令的(静态)MB_DB参数。 本例中CPU机架CM1241 RS422/485作为Modbus RTU从站,其相关编程步骤如下: OB1中插入一个FC函数,并在函数中拖入Modbus_Comm_Load指令和Modbus_Slave指令。如图18所示 图18. 拖入Modbus RTU 从站指令 Modbus_Slave指令各参数意义如下表3所示: 引脚 说明 MB_ADDR Modbus 从站的标准寻址: 标准寻址范围(1 到 247) 扩展寻址范围(0 到 65535) MB_HOLD_REG 数据指针,指向Modbus 保持寄存器的地址, Modbus 保持寄存器可以为M存储区或DB数据区。 如果Modbus 保持寄存器为DB数据区,则DB数据区支持优化访问的数据块或非优化访问的数据块,建议采用非优化访问的数据块。 NDR 可用的新数据: · FALSE - 无新数据 · TRUE – 表示新数据已由 Modbus 主站写入 如果上一个请求完成并且没有错误,NDR 位将变为 TRUE 并保持一个周期。 DR 读取数据: · FALSE - 无新数据 · TRUE –表示该指令已将 Modbus 主站接收到的数据存储在目标区域中。 如果上一个请求完成并且没有错误,DR 位将变为 TRUE 并保持一个周期。 ERROR 如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。如果执行因错误而终止,则 STATUS 参数中的错误代码仅在 ERROR = TRUE 的周期内有效。 STATUS 错误代码 表3 Modbus_Slave指令参数意义 注意 ① Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” 系统存储器位。 ② Modbus_Comm_Load指令背景数据块中的静态变量“MODE”用于描述PTP模块的工作模式,有效的工作模式包括: · 0 = 全双工 (RS232) · 1 = 全双工 (RS422) 四线制模式(点对点) · 2 = 全全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP)) · 3 = 全全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP)) · 4 = 半双工 (RS485) 二线制模式 该静态变量“MODE”默认数据为0(RS232 全双工模式),需要根据CM1241 RS422/485模块实际组态修改该数值,本例中CM1241 RS422/485模块工作在RS485半双工模式需要将该数值修改为4,如何修改“MODE”静态变量见图12.所示。 ③ Modbus_Slave指令的“MB_HOLD_REG”用于指向Modbus保持寄存器的数据区域地址,该数据区域支持优化访问的数据块或者非优化(标准的)数据块,建议采用非优化访问的数据块。 本例中使用的数据区为非优化访问的数据块,固该输入参数需要使用指针方式填写如P#DB6.DBX0.0 WORD 100 方式填写。 如何在数据块的属性中取消“优化的块访问”,见图13. 所示。 将程序下载到PLC中,并使用Profibus DP通信电缆将CM1241 RS422/485与CM PTP串口模块连接起来,即可测试Modbus RTU通信了。 三、常见问题汇总 1. 新版本 Modbus RTU指令的使用是否存在些限制条件? 新版本 Modbus RTU指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,需要满足如下条件: a. S7-1200 CPU 的固件版本不能低于V4.1; b. CM1241通信模块或CB1241通信板的固件不能低于V2.1。 S7-1200 V4.0 固件CPU可以通过固件更新到V4.1版本,V2.0固件的CM1241通信模块也可以通过固件更新的方式更新到V2.1版本。 2 .Modbus_Comm_Load指令背景数据块中的静态变量“MODE”的作用是什么?为什么一般项目中,都需要对该变量进行修改? 新版本的Modbus RTU指令扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板还支持PROFINET或PROFIBUS分布式I/O机架上的PTP通信模块实现Modbus RTU通信。 而分布式I/O机架上的PTP通信模块可以支持多种工作模式,以ET200SP CM PtP模块(订货号:6ES7137-6AA00-0BA0)为例,其可以支持RS232、RS485以及RS422等多种工作模式。 Modbus_Comm_Load指令背景数据块中的静态变量“MODE”则用于定义PTP模块的工作模式。 “MODE”的默认数值为0,代表“全双工 (RS232)”工作模式,实际项目组态中则需要根据实际工作模式对该变量进行修改。 3. Modbus_Comm_Load指令能否在启动组织块OB100中调用?Modbus_Comm_Load指令不建议在启动组织块OB100中调用。新版本的Modbus RTU指令扩展了Modbus RTU的功能,该指令支持PROFINET或PROFIBUS分布式 I/O 机架上的PtP通信模块实现Modbus RTU通信。 操作系统需要调用读取数据记录和写入数据记录等指令来实现与分布式I/O机架上PtP模块的Modbus RTU通信。读取数据记录和写入数据记录指令为异步读写指令,指令的执行需要N个扫描周期,所以不建议Modbus_Comm_Load指令在启动组织块OB100中调用。 4. 如何查询Modbus RTU通信错误时的错误代码? 以Modbus_Master指令为例,当通信出现错误时,Modbus_Master指令的“ERROR”输出位将变为TRUE但是只保持一个扫描周期,所以通过TIA 软件程序监控时无法查询到错误。 Modbus_Master指令“STATUS”参数中的错误代码仅在“ERROR” = TRUE 的扫描周期内有效,为了获取了Modbus RTU通信错误的错误代码我们可以采用下图19. 方式编程。 图19. 获取通讯错误代码STATUS --- ### 759. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 本文中介绍的西门子PLC安装接线详解,包含PLC型号有:Smart200、S7-300,S7-1200,S7-1500等。 PART 01 西门子200模块常用PLC接线图 CPU SR20+EMDR32 PART 02 西门子S7-300常用模块接线图 CPU315+PS307(电源模块)+SM321(DI模块)+SM322(DO模块) PART 03 西门子S7-1200常用模块接线图 CPU1214C+SM1223 PART 04 西门子1500常用模块接线图 PART 05 以下详细介绍S71500硬件安装接线 硬件要求 ● 1 × CPU 1511-1 PN (6ES7511-1AK00-0AB0) ●1 个S7-1500 负载电流电源 PM 70W 120/230VAC (6EP1332-4BA00) ● 1 根安装导轨 (6ES7590-1AB60-0AA0) ● 1 个数字量输入模块 DI 16x24VDC SRC BA (6ES7521-1BH50-0AA0) ● 1 个数字量输出模块 DQ 16x24VDC/0.5A ST (6ES7522-1BH00-0AB0) ● 2 个前端连接器 (6ES7592-1AM00-0XB0) ● 1 个 4 MB 的 SIMATIC 存储卡(如 6ES7954-8LBxx-0AA0) ● 1 根以太网电缆 软件要求 ● SIMATIC STEP 7 Professional V13及以上 ● SIMATIC WinCC Advanced V13 或 SIMATIC WinCC Professional V13及以上 安装组合件步骤 1. 在安装导轨上安装负载电流电源 (PM)。 2. 打开前盖并拔出电源连接插头。 3. 拔出 4 孔连接插头并拧紧负载电流电源 (PM)。 4. 将 U 型连接器插入 CPU 后部。 5. 在安装导轨上安装 CPU 并将其拧紧。 6. 将 U 型连接器插入数字量输入模块后部。 7. 将数字量输入模块连接到安装导轨并将其拧紧。 8. 将数字量输出模块连接到安装导轨并将其拧紧。 CPU 的接线规则 对电源连接插头接线步骤 1.使用适用工具拔出连接器外盖。 2.根据接线图将电源线连接到插头上。在插头的另一侧,标有该插头认证后可使用的电压信息。根据插头背面的信息,通过插入编码元件选择相应电压。 3.合上外盖。 4.拧紧电源连接插头上的螺钉。 将负载电流电源 (PM) 接线到 CPU步骤 1.对负载电流电源(PM) 的 4 孔连接器插头接线。 2.将4 孔连接器插头接线到 CPU 的 4 孔电源连接插头。 对数字量输入模块接线步骤 1.将前端连接器插入预接线位置。在预接线处,前连接器与模块间未进行电气连接。 2.用电缆扎带固定电缆。 3.将负载电压24 V DC 连接到端子 20 (M) 和 19 (L+)。 4.在两个底部端子之间插入电位电路桥。 对数字量输出模块接线步骤 1.将前端连接器插入预接线位置。 2.通过数字量输入模块上的端子40 (M) 和 39 (L+),从数字量输入模块为的端子 20 (M)和 19 (L+) 提供 DC 24 V 供电电压。 3.连接四个电位电路桥。 4. 连接端子 30 和 40,以及 29 和 39。 为前连接器接线步骤 1. 根据端子前盖内侧的接线图,连接各个导线并将其拧紧。 2.为了消除张力,请使用电缆扎带固定电缆并拉紧。 3. 将前端连接器从预接线位置移到其最终位置。至此,已建立了前连接器和模块间的电气连接。 4. 提示:可以直接插入预接线的前端连接器,例如,用于更换模块。 通电首次启动 CPU步骤 1. 插入负载电流电源 (PM) 的电源连接插头。 2. 将电源连接插头连接到电源。 3.将空的 SIMATIC 内存卡插入 CPU 中 4. 将负载电源 (PM) 上的开关切换到位置 RUN 处。将启动 CPU。 CPU 启动并处于 STOP 模式。通过显示屏分配 IP 地址在这一步中,将设置 CPU 的 IP 地址和子网掩码。 步骤: 1. 浏览到“设置”(Settings)。 2. 选择“地址”(Addresses)。 3. 选择接口“X1 (IE/PN)”。 4. 选择菜单项“IP 地址”(IP Addresses)。 5. 设置 IP 地址 192.168.0.10。 6. 按下模块上的“右”箭头键。 7. 设置子网掩码 255.255.255.0。 8. 按下模块上的“下”箭头键选择菜单项“应用”(Apply),然后单击“确定”(OK) 确认设置。 PART 06 西门子PLC无线通讯   若有收获,就点个赞吧 --- ### 760. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 物联网(IoT)并不再是未来的概念,而是在现实世界中正改变着各行各业。从生产线自动化到精确的预测维护,物联网正在彻底改变企业运营的方式,提供无法忽视的竞争优势。 什么是物联网? 物联网是一个广义的概念,它通过互联网将各种物理设备连接在一起。这些设备可以包括工业传感器、智能家电、车辆,甚至是嵌入在人体内的医疗设备。这些设备可以收集并分享数据,提供有价值的见解,从而优化流程,提高效率和生产力。 物联网如何助力企业? 物联网提供了众多助力企业的方法,主要表现在以下几个方面: 1. **提高生产效率**:物联网可以通过实时追踪和监控设备的性能,提高生产线的效率。预测性维护的使用可以预防设备故障,避免生产停滞。 2. **优化资源管理**:物联网设备可以监测并优化能源使用,从而降低运营成本。 3. **提供个性化体验**:在服务业,物联网可以帮助企业更好地理解客户的需求和行为,从而提供更个性化的服务和产品。 4. **增强决策制定**:物联网设备所收集的数据,经过深度学习和AI分析后,能够为企业决策提供有力的数据支持。 5. **开拓新的业务模型**:物联网开启了新的商业机会,如服务型销售模式,即产品作为服务(PaaS)的销售模式。这为企业带来了新的收入流。 未来的物联网 随着5G,人工智能和边缘计算等技术的发展,物联网的潜力将被进一步解锁。未来的物联网将使设备能够在更高的程度上互相协作,更好地理解环境,以更智能的方式响应。 对于企业来说,抓住物联网的机遇至关重要。那些能够最有效地利用物联网以优化运营,提供个性化服务,改善决策制定的企业,将在日益激烈的竞争中占得先机。 预见物联网的趋势并采取行动的企业将会: **创新产品和服务**:物联网不仅仅是改进现有产品和服务的工具,而且还是创新的平台。从健康监测的可穿戴设备到家庭自动化,物联网为创新提供了无限的可能性。 **提升客户体验**:物联网可以通过提供个性化的服务和产品来增强客户体验。例如,酒店可以通过物联网提供定制化的房间环境,如预设的室内温度和照明,从而提升客户的住宿体验。 **开拓新的市场**:随着技术的发展,物联网正在打开全新的市场和机会。例如,农业物联网(Agri-IoT)正在改变农业行业,提高农作物产量,减少浪费,改善农场管理。 总的来说,物联网正在推动全球的数字化转型,无论是生产力、效率、可持续性还是客户体验,物联网都为企业提供了重塑商业模式和运营流程的机会。正是因为这个原因,企业无论大小,都需要认真对待物联网,以确保不被竞争对手超越,而是在物联网带来的数字化浪潮中引领先机。物联网时代已经到来,现在是企业拥抱它、利用它以推动业务发展的最佳时机。 2026年展望:工业物联网落地新趋势 经过三年的快速发展,工业物联网已经从概念验证阶段全面进入规模化部署阶段。据IDC数据,2024年中国智慧城市ICT市场投资规模达9508亿元人民币,IoT相关支出持续快速增长。工业物联网正从概念验证全面进入规模化部署阶段。 关键趋势包括:(1)协议统一化——Modbus依然是现场设备层的事实标准,MQTT成为云端数据汇聚的首选协议;(2)边缘计算下沉——网关设备不再只是数据透传,而是承担本地决策和协议转换的核心角色;(3)AI融合加速——大语言模型(LLM)开始应用于工业知识问答和故障诊断辅助。 modbus.cn持续关注并输出最新技术动态,帮助您把握工业物联网的落地机遇。 --- ### 761. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着科技的不断发展,物联网技术在医药行业的应用也越来越广泛,医药行业正逐渐向数字化、智能化、网络化发展。医药行业的物联网平台方案主要涉及到智慧医疗、智慧药房和智慧生产三个方面。 一、智慧医疗智慧医疗是将物联网技术应用于医疗行业,通过信息化手段实现医疗数据的共享和交流,提高医疗服务的效率和质量。智慧医疗的物联网平台方案主要包含以下几个方面: 1.电子病历:通过物联网技术实现医疗数据的共享和交流,让医生在查看病人病历时能够快速获取到准确的信息,从而提高诊断和治疗的准确性和效率。 2.智能医疗设备:通过将监测器设备与物联网云平台相连接,实现医疗设备数据的监测和传输,让医生或护士能够实时地接收和分析患者的数据,更好的为患者提供医疗服务。 3.远程医疗:通过将患者和医生连接在一起,最大限度地利用互联网为患者提供医疗服务,使患者能够在不同地点接收到专业医生的诊疗指导和治疗跟踪,提高诊疗效果。 二、智慧药房智慧药房是将物联网技术应用于药房行业,通过数字化手段实现库存管理、销售信息管理和药品跟踪管理等,提高药房服务质量,使药房具备更高的智能化。 1.智能药柜:通过将药品与智能药柜相连接,实现药品的自动管理和控制,让顾客能够快速地找到需要的药品,提高药房的服务效率。 2.智慧销售数据管理:通过将销售数据与物联网云平台相连接,实现对销售数据的实时监测和管理,提高药房的销售效率和管理质量。 3.智能供应链管理:通过将药品与供应链管理系统相连接,有效控制药品的质量和安全,让药品的生产和销售都变得更加透明和可靠,提高药房服务质量。 三、智慧生产智慧生产是将物联网技术应用于药品生产领域,通过信息化手段实现药品生产过程的自动化、可视化和数据化,提高药品生产效率和质量。 1.智能生产线管理:通过物联网技术实现药品生产过程的自动化和可视化,让药品生产更加智能化和高效化。 2.智能质量检测:通过将药品与检测设备相连接,实现对药品质量的实时检测和管理,提高药品生产质量和安全性。 3.智能供应链管理:通过将药品与供应链管理系统相连接,掌握药品生产和销售的数据,提高药品生产过程的透明度和生产效率。 总体来说,物联网平台方案在医药行业的应用将真正实现医药行业的智能化。与此同时,以智慧医疗、智慧药房和智慧生产为代表的医药物联网服务系统,也将助力医药行业在增强产品和业务创新和提高质量和数据安全管理方面迈向更高水平。 --- ### 762. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Modbus是一种常用的工业自动化通信协议,广泛应用于制造业、物流、交通、能源等领域。在Modbus通信中,注册包和心跳包是两种重要的机制,它们的作用是什么呢? 首先,让我们了解一下什么是注册包。注册包是在客户端和服务器之间定时发送的数据包,用于在一定时间间隔内维持连接。在Modbus通信中,每个设备都有一个唯一的ID,通过注册包可以将设备ID和其他信息关联起来,实现设备的自动化管理。注册包的格式通常为ASCII码,长度为9个字符。 其次,让我们了解一下什么是心跳包。心跳包是在客户端和服务器间定时发送的自定义命令字,用于维护长连接。心跳包的格式也通常为ASCII码,长度为9个字符。心跳包的作用是在长时间未收到服务器的响应时,向服务器发送一个心跳信息,以确保连接的可靠性。 那么,如何在Modbus通信中应用注册包和心跳包呢? 在Modbus设备中,注册包通常由设备自动发送,用于将设备ID和其他信息关联起来。在客户端,可以通过接收注册包来识别设备的ID,并将其与其他信息关联起来。 而心跳包则是由客户端发送的,用于维护长连接。在服务器端,每隔一定的时间间隔(例如1秒),就会发送一个心跳包,向客户端发送自己的状态信息。客户端接收到心跳包后,就可以知道服务器的状态,并根据情况进行相应的处理。 总的来说,注册包和心跳包是Modbus通信中非常重要的机制,它们的作用是在设备之间维护长连接,并在连接失效时向服务器发送心跳信息,以确保连接的可靠性。在应用注册包和心跳包时,需要注意的是,设备ID和其他信息的格式必须与服务器端设置的相同,并且设备必须时刻保持连接状态,否则会导致通信中断。 --- ### 763. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 近年来,人工智能(AI)一词已成为时下最热门的流行语之一,不仅是科技公司,甚至各行各业都开始关注和应用人工智能技术,以优化其业务和提升效率。随着人工智能应用的不断普及,一些行业的发展也开始受到了人工智能和机器学习的影响。本文将深入探讨未来五个行业将严重依赖人工智能的情况,帮助读者更全面地了解这些领域。 交通运输领域的人工智能 人工智能在交通领域最具有潜力的应用是自动驾驶汽车技术的开发。然而,人工智能提供的解决方案还不仅仅是自动驾驶。例如,人工智能可以从道路上的传感器和摄像头收集交通数据,以创建交通模型,提供交通管理信息,缓解交通拥堵,降低交通事故的风险。 医疗保健领域的人工智能 人工智能正在改变医疗保健行业的方式。例如,IBM的认知超级计算机已被用于检测罕见的白血病,这对医生而言是一项非常具有挑战性的任务。随着电子健康记录的普及,个性化医疗正在成为现实,而预测性医疗也越来越受到关注。 制造业中的人工智能 制造业的许多方面都可以通过基于人工智能的机器人或系统得到改进。从机器人驱动的装配线到可以预测机械故障的智能系统,人工智能将变得不可避免。它还可以消除许多不必要的技能,使员工从事更有意义的工作。此外,基于人工智能的机器人或机器还将有助于解决大范围的供应链问题,减少在线产品的运输和交付时间。 广告领域的人工智能 广告领域正受益于人工智能技术的迅速发展。利用人工智能的驱动系统,营销团队可以更有效地利用以往的数据来模拟活动,并提供更准确的结果,而无需投入大量成本测试不同的目标受众。这一变化将会改变市场营销的游戏规则,因为品牌和企业将有一个更安全的地方投资资金。借助智能情感分析工具和技术,营销人员可以更容易地接触潜在客户、产生潜在客户并将其转化为销售,预测市场趋势并进行竞争性研究。 金融领域的人工智能 在金融领域,人工智能和机器学习技术对于金融机构的发展和安全至关重要。金融机构需要最精确的计算系统来满足不同的需求,例如检测欺诈交易和为更安全、可靠的在线交易提供支持。此外,人工智能技术可以预测市场股票价格的涨跌,并协助财务顾问制定最佳的投资策略。随着人工智能技术的不断发展,金融领域将有更多的机会利用这些技术来提高效率、降低风险和创造更多价值。 --- ### 764. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口服务器是一种通过以太网连接两个或多个串口设备的联网设备,可以将RS232/422/485串口转换成TCP/IP网络接口,实现串口与网络之间的数据双向透明传输,提供串口转以太网功能。随着物联网的发展,串口服务器在工业自动化、智能交通、污水处理、电力系统监控、医疗器械、楼宇自控等领域得到广泛应用。 在工业称重解决方案中,称重管理设备可以通过串口服务器与工控上位机建立TCP连接,实现远程传输及管理称重数据,方便数据统计管理。在智慧交通解决方案中,串口服务器可以将终端信号灯或控制柜的RS232/485串口转换为TCP/IP网络接口,实现对交通信号的远程控制。在污水处理远程监控解决方案中,串口服务器通过串口与污水处理厂的数据采集设备连接,将转口数据转为网络数据传到PC端,实现对污水处理厂的生产运行数据远程监测与管理。在电力系统远程监控解决方案中,通过串口服务器和电力监测设备的串口连接,电力监测人员可以远程监视电能表运行状况,对用电异常情况及时作出反应,实现信息共享平台化。 除此之外,串口服务器还适用于医疗器械、PLC工业设备、太阳能、智能家居、门禁考勤系统等各种工业控制、通讯领域。通过使用串口服务器,传统设备可以实现联网,并且不受物理电缆长度限制,实现远距离数据传输,从而提高设备的管理和控制效率,为各行各业的自动化、智能化发展提供了支持。 --- ### 765. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 4G DTU是一种利用4G网络进行远程数据采集和远程控制的设备。 它主要应用于电力、石油、煤矿、金融、通信、公安、热力、市政、工业、气象、水利、生活、农业、交通、环保等领域。4G DTU可以帮助解决偏远地区的网络覆盖问题,快速搭建办公网络,以及实现现场设备的远程操控等功能。 在电力领域,4G DTU可以实现城市中配电网络自动化系统、电网实时监控和自动补偿、电力远程自动抄表、配电网络柱上开关监测系统、电力线路监测等。 在石油领域,4G DTU可以实时在线检测油田的输油管温度,以及GPRS远程油田自动化监测监控系统等。 在交通领域,4G DTU可以实现路灯监控、车辆流量信息、GPRS/SMS/GPS机动车輛监控调度系统、银行运钞车、邮政运输车监控调度等功能。 总之,4G DTU在各个领域都有广泛的应用,可以提高工作效率,减少人力物力资源的浪费,降低成本,提升管理水平。 4G DTU的优点和缺点是什么? 优点: 1.高速通信:4G DTU采用4G网络,数据传输速度快,可以实现高速数据传输。 2.无线传输:DTU采用无线传输,可以解决有线传输难以布线的问题,适用于在偏远地区、山区等环境下的数据传输。 3.远程控制:DTU可以远程操控,通过程序或者网络,可以实现对数据采集和控制的实时监测和调整,降低了人工维护成本。 4.安全性高:4G DTU具有较高的安全性,采用加密技术保障数据的安全传输,防止数据泄露和信息被篡改。 5.可靠性高:4G DTU具有高可靠性,数据传输过程中不易受干扰,可以保证数据的稳定传输。 6.易于维护:4G DTU系统维护简单,只需要对硬件设备进行维护,同时还可以实现远程诊断和故障排除。 缺点: 1.成本较高:相比传统的有线通信方式,4G DTU系统的设备成本和运营成本较高。 2.信号不稳定:由于4G网络的信号不稳定,可能会影响到数据传输的质量,导致数据丢失或传输延迟。 3.网络安全:由于DTU连接公共网络,网络安全面临着更高的风险,可能会受到黑客攻击和网络病毒的侵害,对数据的安全造成威胁。 4.网络覆盖范围:4G DTU依赖于4G网络的覆盖范围,如果在某些偏远地区或者信号覆盖不好的地方,数据传输可能会受到限制。 5.功耗较大:DTU需要工作在24小时不间断的状态下,其功耗较大,需要更多的能源支持。 --- ### 766. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 DTU (Data Transfer Unit)是一种专门用于将串口数据转换为IP数据,或将IP数据转换为串口数据的无线终端设备,在气象、水文、水利、地质等领域有着广泛的应用。 DTU的硬件部分主要由CPU控制模块、无线通信模块和电源模块组成。其优点在于配置快捷灵活,施工周期短,成本低;并且可以连接到互联网覆盖面广,具有良好的保密能力,链接永远在线支持,按流量计费,用户使用成本低。 DTU的作用主要用于数据的无线传输。通过远距离的无线数据传输,DTU大大增加了工业设备的传输距离,使设备远距离传输和管理成为可能。 DTU的工作原理是通过接口连接到终端装置以获取数据,并通过无线电通过运营商网络(2G/3G/4G )将数据传输到指定的数据中心或装置。同时,反向数据中心也可以通过运营商网络向DTU发送数据或指令,然后DTU可以通过接口向终端设备发送数据或指令。 根据通信方式,DTU通常采用GPRS/4G/NB-IoT/LoRa/WiFi等通信方式,客户可根据应用场景选择最佳通信方式,根据接口类型的分类,DTU通常支持RS485、RS232、I/O接口,客户可根据前端采集设备选择合适的接口类型。另外,还有一个嵌入式DTU,它在功能上与一般的DTU类似,主要区别是没有外壳,是一个可嵌入的主板,客户可以集成到他们的前端集成设备中。 DTU已被广泛运用于电力工程、水利工程、环境保护、气候、交通出行、货运物流、工业生产等行业。它为各行业中间的信息和产业链融合出示了协助,并慢慢发展趋势变成物联网的应用的关键技术。 在实际应用中,DTU通常用于数据的无线传输,其作用主要是通过远距离的无线数据传输,传输对像都是设备和数据中心或是设备。DTU的存在大大增加了工业设备的传输距离,可以使设备远距离传输和管理。 综上所述,DTU技术作为物联网领域的关键技术,具有广泛的应用场景,能够为各行业中间的信息和产业链融合提供帮助。 --- ### 767. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 当今世界,AI技术的飞速发展,让我们开始能够与智能机器人交流。而ChatGPT就是其中一个非常优秀的AI语言模型,它可以理解自然语言,回答各种各样的问题,甚至还能与人类进行自然而流畅的对话,其神奇的能力令人惊叹。 ChatGPT是由OpenAI开发的一种人工智能语言模型。它使用了深度学习和自然语言处理技术,通过大量的文本数据训练而成。与其他AI语言模型不同的是,ChatGPT在训练过程中使用的是无监督学习方式,让模型自己去学习语言规律和模式,从而可以更好地理解人类的语言。 对于用户而言,ChatGPT的使用非常方便。首先,你需要访问官方网站,并进行注册。注册后,你可以在网站上直接与ChatGPT进行对话。ChatGPT会通过自然语言理解技术,尽可能地理解你的问题,并给出相应的答案。在使用过程中,你还可以根据需要对ChatGPT进行设置和调整,以达到最佳的使用效果。 除了网站,ChatGPT还可以在许多应用程序和工具中使用,比如聊天应用程序、智能语音助手等等。这些工具可以帮助你更方便地与ChatGPT进行交互,使得你可以在任何时间、任何地点获得所需的答案和信息。 总的来说,ChatGPT是一款非常优秀的AI语言模型,它不仅能够回答各种各样的问题,还可以与用户进行自然而流畅的对话。如果你需要获取各种信息,ChatGPT一定是你最好的帮手。无论你是学生、工作者、还是普通用户,都可以通过注册和使用ChatGPT来获得更好的使用体验。 --- ### 768. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 冷藏车载环境监测数据采集设备是一种可以实时监测冷藏车间环境的空气温度、湿度等数据的设备。它主要应用于物流运输、食品加工和储藏等领域,对于保证产品质量和安全具有重要意义。 该设备采用精密的传感器,可以实时监测空气温度和湿度等关键参数。其温度测量范围一般为-40°C至80°C,精度可达到0.5°C;湿度测量范围一般为0-100%RH,精度可达到5%RH。采集的数据可通过车载终端或者远程监控系统进行实时查看和管理。 在冷链物流方面,冷藏车载环境监测数据采集设备可以监测车辆内部的温度和湿度变化,避免因温度过高或过低、湿度过大或过小等问题导致食品质量下降或损失。同时,它也可以帮助物流公司提高货运效率,降低运输成本。 在食品加工和储藏方面,该设备可以帮助企业实现全程监测和控制,提高生产效率,降低损耗和质量问题。同时,还可以为企业提供有效的数据支持,方便生产管理和决策。 总之,冷藏车载环境监测数据采集设备是一种非常有用的工具,可以提高运输和生产效率,同时保证产品质量和安全。在物流和食品行业中得到了广泛应用,并且随着技术的不断进步和发展,其应用领域也会越来越广泛。 --- ### 769. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 智能采收称重设备是一种应用于农业生产领域的智能化设备,主要用于农产品的称重和出入库管理等环节。它通过自动化技术和数据采集技术,将农产品的采收、入库和出库等过程实现自动化管理,提高了农业生产的效率和精度,同时也保障了农产品的品质和安全。 该设备具有以下主要功能: 自动采收称重:智能采收称重设备可实现采收作物自动称重,大大提高了采收的效率,减少了人工采收的难度和工作强度。 全自动出入库管理:智能采收称重设备可以与后台管理系统实现联动,将出库情况、农作物种植地块、品种等信息数据上传,实现全自动出入库管理,避免了人为操作的差错和繁琐。 数据采集和分析:设备内置多种传感器,可实时采集环境温度、湿度、光照等多种数据,并将其上传至后台管理系统,对数据进行分析和统计,帮助农业生产者更好地掌握农产品生长环境,进一步提高农产品的生产效率和品质。 可视化管理:智能采收称重设备可通过后台管理系统进行实时监控和管理,管理者可以随时了解设备运行状态、作物生长状态等信息,并通过数据分析、图表展示等方式进行可视化管理,提高了农业生产的管理效率和精度。 智能采收称重设备的应用场景非常广泛,可以应用于各种类型的农作物采收称重,如水果、蔬菜、谷物等。在农产品生产流程中,可以用于采收、称重、出入库管理等多个环节,从而提高农产品生产效率和品质,降低生产成本,实现农业生产的可持续发展。 总之,智能采收称重设备是现代农业生产的重要组成部分,通过智能化技术的应用,为农业生产带来了新的变革,同时也为人类提供了更为优质、安全的食品。 --- ### 770. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 水肥一体控制器设备是一种专门用于农业温室等场景的设备,其主要功能和应用场景如下: 应用场景: 农业温室、花卉种植、果蔬种植、水产养殖等需要精细管理水肥供应的领域。 功能介绍: 支持外部电磁阀通过无线控制,可独立控制四个吸肥通道和一个吸酸通道功能,每个通道吸肥能力660L/h; 阀体本身具有微量调节旋钮,非外接,可微量调节吸肥量; 具备双通道EC和PH检测,支持三种类型输出点扩展,总线/无线/有线; 控制主机可通过触摸屏在线升级,具备报警设置功能,可选择报警输出点; 可查询灌溉记录,支持程序运行记录和阀门运行记录的查看,按程序和阀门进行流量统计; 可查看施肥机配肥曲线(EC\PH\流速曲线),系统可修改施肥机配肥的PID参数,以便快速的稳定配肥; 自带嵌入式智能灌溉控制系统,实现对温室内水肥供应的自动监测和控制,可大大减轻人工管理的工作量,提高生产效率和质量。 --- ### 771. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 温室环境智能调控中控设备主要应用于温室、植物工厂等作物生产场景,通过智能模块采集的数据全部传输到后台软件平台,实现对温室中环境参数的自动监测和控制,以满足不同作物对环境要求的不同。 该设备的主要功能包括: 温度和湿度监测:该设备可以通过温湿度传感器实时监测温室中的温度和湿度,并将数据上传至后台软件平台进行分析和处理。 设备自动控制:中控设备可控制连栋温室的外遮阳、顶内遮阳、环流风机、湿帘降温、智能增温等设备,通过后台软件平台实现对设备的自动控制,以满足不同作物对环境的需求。 远程监控:该设备支持远程监控,用户可以通过手机App、网页等方式随时随地监测温室环境参数和设备运行状态,并进行远程控制。 嵌入式环境智能控制系统:该设备自带嵌入式环境智能控制系统,支持多种工作模式,包括自动模式、手动模式、定时模式等,用户可以根据实际需求进行选择。 数据统计和分析:该设备可以对温室中的温湿度、CO2浓度等参数进行数据统计和分析,帮助用户更好地了解作物生长环境,并对环境进行优化和调整。 该设备的应用场景包括温室、植物工厂等作物生产场景,可以实现对温室中环境参数的自动监测和控制,帮助用户提高作物产量和质量,降低能耗和维护成本。 --- ### 772. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 智能增温系统智能控制设备是一种可以实现智能化控制的增温系统设备,适用于农业温室、植物工厂等需要保持恒定温度的场景。 该设备主要具备以下功能: 自动控制:智能增温系统智能控制设备可以通过传感器感知室内外温度、湿度等参数,智能调节增温系统的运行状态,保持室内温度在设定范围内。 远程控制:智能增温系统智能控制设备支持远程控制,可以通过手机App、网页等方式对增温系统进行控制和监控。 多种工作模式:智能增温系统智能控制设备支持多种工作模式,例如智能模式、手动模式、定时模式等,可以根据不同的场景和需求进行灵活的控制和调节。 数据统计和分析:智能增温系统智能控制设备可以对室内外环境参数和增温系统的运行状态进行数据统计和分析,帮助用户更好地管理温度控制和能耗情况。 多传感器集成:智能增温系统智能控制设备可以集成多种传感器,例如温湿度传感器、光照传感器等,以便对室内外环境进行精确的感知和控制。 使用智能增温系统智能控制设备可以提高温度控制的精度和稳定性,同时也可以降低能耗和维护成本,具有广泛的应用前景。 --- ### 773. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 湿帘降温智能控制设备是一种智能化设备,主要用于控制湿帘降温系统的运行,具有以下一些功能: 自动控制:湿帘降温智能控制设备可以根据室外温度、湿度等参数,智能地控制湿帘降温系统的运行,以保持室内温度在舒适范围内。 远程控制:湿帘降温智能控制设备可以通过互联网远程控制,可以使用手机App、网页等方式对湿帘降温系统进行远程控制和监控。 数据分析:湿帘降温智能控制设备可以对室内外环境参数和湿帘降温系统的运行状态进行数据分析和统计,从而实现精细化的温度控制和能耗管理。 多种工作模式:湿帘降温智能控制设备支持多种工作模式,例如智能模式、手动模式、定时模式等,可以根据不同场景和需求进行灵活的控制和调节。 多传感器集成:湿帘降温智能控制设备可以集成多种传感器,例如温湿度传感器、风速传感器等,以便对室内外环境进行精确的感知和控制。 总之,湿帘降温智能控制设备是一种智能化的湿帘降温系统控制设备,可以实现多种功能,从而提高空间内的温度控制和能源利用效率。 --- ### 774. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 环流风机智能控制设备是一种用于控制环流风机的智能化设备,主要具有以下一些功能: 自动控制:环流风机智能控制设备可以根据室内温度、湿度和二氧化碳浓度等参数,智能地控制环流风机的开启和关闭,以保持室内空气的质量和舒适度。 远程控制:环流风机智能控制设备可以通过互联网远程控制,可以使用手机App、网页等方式对环流风机进行远程控制和监控。 数据分析:环流风机智能控制设备可以对室内环境和环流风机的工作状态进行数据分析和统计,从而实现精细化的空气质量控制和能耗管理。 多种工作模式:环流风机智能控制设备支持多种工作模式,例如智能模式、手动模式、定时模式等,可以根据不同场景和需求进行灵活的控制和调节。 多传感器集成:环流风机智能控制设备可以集成多种传感器,例如温湿度传感器、CO2传感器等,以便对室内环境进行精确的感知和控制。 总之,环流风机智能控制设备是一种智能化的环流风机控制设备,可以实现多种功能,从而提高空气质量、舒适度和能源利用效率。 --- ### 775. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 内遮阳智能控制设备是一种用于控制室内遮阳系统的智能化设备,具有以下一些主要功能: 遮阳调节:内遮阳智能控制设备可以通过测量室内光照强度和温度等参数,智能地调节遮阳系统的开合程度和角度,以保持室内温度和光照舒适度。 多种控制方式:内遮阳智能控制设备支持多种控制方式,例如手动控制、自动控制、定时控制等,可以根据不同场景和需求进行灵活的控制和调节。 远程控制:内遮阳智能控制设备可以通过互联网远程控制,可以使用手机App、网页等方式对遮阳系统进行远程控制和监控。 多传感器集成:内遮阳智能控制设备可以集成多种传感器,例如光照传感器、温度传感器、湿度传感器等,以便对室内环境进行精确的感知和控制。 数据分析:内遮阳智能控制设备可以对室内环境和遮阳系统的工作状态进行数据分析和统计,从而实现精细化的遮阳调节和能耗管理。 总之,内遮阳智能控制设备是一种智能化的遮阳系统控制设备,可以实现多种功能,从而提高遮阳系统的效率、舒适度和可靠性。 --- ### 776. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 外遮阳智能控制设备是一种用于控制室外遮阳系统的智能化设备,具有以下一些主要功能: 遮阳调节:外遮阳智能控制设备可以通过测量室外光照强度和温度等参数,智能地调节遮阳系统的开合程度和角度,以保持室内温度和光照舒适度。 多种控制方式:外遮阳智能控制设备支持多种控制方式,例如手动控制、自动控制、定时控制等,可以根据不同场景和需求进行灵活的控制和调节。 远程控制:外遮阳智能控制设备可以通过互联网远程控制,可以使用手机App、网页等方式对遮阳系统进行远程控制和监控。 多传感器集成:外遮阳智能控制设备可以集成多种传感器,例如光照传感器、温度传感器、湿度传感器等,以便对室外环境进行精确的感知和控制。 数据分析:外遮阳智能控制设备可以对室外环境和遮阳系统的工作状态进行数据分析和统计,从而实现精细化的遮阳调节和能耗管理。 总之,外遮阳智能控制设备是一种智能化的遮阳系统控制设备,可以实现多种功能,从而提高遮阳系统的效率、舒适度和可靠性。 --- ### 777. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Node-RED:一个流行的、基于Web的可视化编程工具,可以用来连接硬件设备、API和在线服务,构建自己的云组态系统。 ThingSpeak:一个用于连接物联网设备、数据分析和可视化的开源平台,支持多种硬件设备和传感器,并提供API接口以及开放的数据访问。 Freeboard:一个开源的基于Web的数据可视化平台,可以与各种数据源(如传感器数据、API等)进行集成,提供丰富的可视化组件和可扩展性。 OpenRemote:一个用于构建物联网和云组态系统的开源平台,提供了丰富的功能和组件,可以与多种硬件设备和传感器进行连接。 Grafana:一个流行的开源仪表板和可视化平台,支持来自各种来源(包括物联网设备)的实时流数据。它还提供了大量插件和与其他工具的集成。 干舷:一个开源仪表板平台,设计简单易用。它提供了用于构建仪表板的拖放界面,并支持来自各种来源的实时流数据。 Thingsboard:一个开源物联网平台,包括一个实时仪表板构建器。它支持广泛的物联网设备和协议,并提供具有实时数据可视化功能的可自定义仪表板构建器。 Apache Superset:一个基于Web的数据可视化平台,提供了丰富的可视化组件和数据探索功能,可以轻松地构建交互式报表和仪表板。 Grafana:一个流行的开源可视化平台,可以从多种数据源(如数据库、API、IoT设备等)中获取实时数据,支持多种图表类型和自定义插件。 Metabase:一个简单易用的数据分析和可视化工具,可以通过简单的查询语言和可视化界面,将数据转化成图表和仪表板。 Redash:一个开源的数据可视化和报表工具,支持多种数据源和查询语言,提供了丰富的可视化组件和图表类型,可以轻松地构建自己的报表和仪表板。 Apache Zeppelin:一个基于Web的数据分析和可视化平台,支持多种数据源和交互式数据探索,可以通过可视化界面将数据转化成图表、表格和仪表板。 Eclipse SCADA:一个基于Eclipse平台的开源工业组态平台,提供了数据采集、报警、控制和可视化等功能,可以用于构建自动化控制系统和监控系统。 OpenSCADA:一个跨平台的开源工业自动化平台,提供了丰富的驱动程序和协议支持,可以与多种硬件设备和传感器进行连接,支持多用户、多站点和分布式架构。 Node-RED:一个流行的、基于Web的可视化编程工具,可以用来连接硬件设备、API和在线服务,构建自己的工业组态系统。 IoTivity:一个开源的物联网平台,提供了丰富的设备管理和数据通信功能,可以用于构建自动化控制和监测系统。 Eclipse Kura:一个开源的物联网网关平台,支持多种传感器和协议,提供了数据采集、远程管理和控制等功能,可以用于构建工业自动化和监测系统。 这些平台都提供了丰富的功能和组件,可以帮助用户快速构建自己的数据可视化和分析系统。每个平台都有其独特的特点和优劣,用户可以根据自己的需求和技术水平选择合适的平台。 --- ### 778. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 RS-485交换机(RS-485 Switch)是一种用于建立RS-485总线拓扑结构的网络设备。它可以提供以下功能: 数据隔离:RS-485交换机可以隔离总线上的不同设备和分支,以防止数据冲突和干扰,从而提高数据传输的稳定性和可靠性。 数据放大:RS-485交换机可以放大信号,增强总线信号的传输距离和可靠性。它可以让较远的设备连接到总线上,从而扩展了RS-485总线的覆盖范围。 数据路由:RS-485交换机可以根据设备地址或其他规则对总线上的数据进行路由和分发,以便正确地将数据发送到目标设备。 多路复用:RS-485交换机可以将多个RS-485总线连接到同一个网络上,从而实现总线之间的数据交换和通信。 总之,RS-485交换机是一种重要的网络设备,它可以提高RS-485总线的可靠性、灵活性和扩展性,从而满足工业自动化、数据采集和通信等应用场景的需求。 --- ### 779. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1 、 首先在串行线路里更改为 Modbus_IOScanner (Modbus IOScanner) 同时变频器也需同样设置 1)  、通讯方式设为 Modbus 给定 2)  、从站地址(1……247),需与软件中设置一致 3)  、通讯速率 19.2K,需与软件中设置一致 4)  、通讯格式,8E1,8 个数据位,偶校检,1 个停止位 注意:设置完毕后,关闭变频器电源重新上电,参数设置才能生效。 2 、 右键点击 Modbus_IOScanner (Modbus IOScanner),点击添加设备,添加从站设备 3 、 添加好设备从站之后,在 Modbus 从站配置里添加从站地址 4 、 在 Modbus 从站通道添加通道,如下图所示 (16#0C81=3201,变频器 ATV71 ETA 状态字) (16#0C82=3202,变频器 ATV71 Freq_Feed 频率反馈) (16#2135=8501,变频器 ATV71 CMD 控制字) (16#2136=8502,变频器 ATV71 Freq_Ref 频率给定) 5、在 Modbus 主站 I/O 映射中添加变量名称,注意与描述相对应 6 、 在 POU 编写程序 控制字 CMD 手动给 6  (16#0006),变频器 Ready 控制字 CMD 手动给 7  (16#0007),变频器 Stop, 控制字 CMD 手动给 15  (16#000F),变频器正转 控制字 CMD 手动给 2063  (16#080F),变频器反转, 频率给定 Freq_Ref,变频器转动的 HZ=Freq_Ref/10 7、在 Modbus 从站设备断电上电情况下, PLC  中从站设备前会显示一个“三角形” 符号,这样的话, 也可以利用人机界面, 清楚地看到 PLC 未读取到哪一个 Modbus 从站! 8、此时 PLC 需对“自己”发出一个复位信号,以保障通讯正常,复位程序如图所示 9、复位步骤及复位后的效果 注意:这样只是 PLC 对“自己”的一个复位,如果 Modbus 从站设备本身有故障, 或者有从站设备报 Modbus 故障,是不能复位掉的! --- ### 780. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在使用西门子 S7-200 时, 在不增加其它通讯接口模块时, 威纶通触摸屏可以通讯 PPI 协议与 S7-200 直 接通讯。但这种通讯方式由于受通讯协议本身限制, 在通讯数据较多时, 通讯速度相对较慢, 使用 Modbus 协议则通讯速度可以提高约一倍。 下面就介绍一下怎么使用 Modbus 协议建立 S7-200 与威纶通触摸屏之 间的通讯: 硬件连接 在使用 Modbus 协议时,计算机与 S7-200 之间通讯直接使用 PPI 通讯电缆即可。 选配一触摸屏通讯端口 我们这里以 MT6070IH2 和 s7-200 进行通讯 S7-200 的通讯端口是一个 9 孔(famel) D 型插头,针脚分布如下所示: S7-200 通讯端口(端口 0)与威纶通触摸屏的通讯连接,如下图所示: S7-200 编程及设置 在缺省情况下 S7-200 的通讯端口是不支持 Modbus 协议的,要想实现 Modbus 通讯必需在 PLC 的主程 序模块中调用 Modbus 通讯子程序。 Modbus 通讯子程序可以从“STEP 7-Micro/WIN Add-On: Instruction Library (STEP 7-Micro/WIN 附件:指令库)”中获得。在安装了“STEP 7-Micro/WIN 附件:指令库”后,在 导航树“指令/库”下面我们可以找到“Modbus Protocol”。在其下面包含了 MBUS_INIT 和MBUS_SLAVE 两个子程序, MBUS_INIT 用于对 Modbus 通讯进行初始化, MBUS_SLAVE 用于在指定端口上提供 Modbus 从站通讯服务。下在介绍如何在主程序中调相关子程序及环境参数设置: 调用 Modbus 通讯初始化命令 首先为 MBUS_INIT 命令建立一个触发条件(只触发一次),如: SM0.1;从导航树“指令/库/ Modbus    Protocol”下面, 将 MBUS_INIT 指令拖拽到主程序块中。再就是正确设置 MBUS_INIT 各项调用参数和执 行结果输出地址,我们可以建立一下如下图所示初始化调用过程: Mode:协议类型, 1-Modbus 协议; 0-PPI 协议。 Addr: PLC 地址, 1~247 ,。 Baud: 通讯波特率, 1200 、2400 、4800 、9600 、19200 、38400 、57600 或 11520。 Parity: 校验方式, 0-无校验; 1-奇数校验; 2-偶数校验。 Delay:信息结束超时时间, 0~32767,有线连接设置为 0 即可。 MaxIQ:0~128,映射在离散输入寄存器或离散输出寄存器中的 I 或 Q 数。建议为: 128。 MaxAI:0~32;映射在模拟输入寄存器中 AIW 数;CPU 221 为 0,CPU 222 为 16,CPU 224、226 和 226XM 为 32。 MaxHold:V 内存映射在保持寄存器中的寄存器数。 HoldStart:V 内存的映射时的起始地址。 Done:初始化指完成时,输出为开状态;开关量(Bit)。 Error:初始化错误代码,请参阅 Modbus 从机协议执行错误代码;输出为字节。                      调用 Modbus 从机通讯命令                                                                   初始化完成后, 就可以调用 Modbus 从机通讯命令(MBUS_SLAVE)了。通常 Modbus 从机通讯命令在 主程序块的每个执行周期都要初执行(始终保持通讯状态) ,因为可以用一个常开量作为命令的触发条件, 如: SM0.0。从导航树“指令/库/ Modbus Protocol”下面,将 MBUS_SLAVE 指令拖拽到主程序块中。调 用过程如下图所示: Done:  当 MBUS_SLAVE 指令响应对 Modbus 请求时, "Done"为开状态。 没通讯请求时"Done"为关状态。 Error:指令执行结果。只有"Done"为开状态时,此状态有效。请参阅 Modbus 从机协议执行错误代码; 输 出为字节。 触摸屏 EB8000 软件的系统设置 系统参数设置中选择 MODBUS RTU 通讯参数的设置 设置的一个位状态开关 MODBUS RTU 和 s7-200 的地址对应关系 注:  STEP 7-Micro/WIN 附件:指令库哪里有下载:sp5 以上版本自带指令库。不过如果是第一次安装 STEP 7-Micro/WIN,指令库并不会出现。 可以去下载 Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library  。安装这个小软件,在 STEP 7-Micro/WIN 的指令树就有了指令库 --- ### 781. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 监控内容: 排水泵、生活水泵、喷淋泵运行、手自动状态,故障报警,启停控制;液位报警:当地下室水位报警处理,防止车库漫水;风机联动: 安装室内CO/CO2传感器,根据CO/CO2浓度联动风机进行换气。 --- ### 782. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 监控内容: 电压、电流、功率、电能等;变压器监测;直流屏监测;发电机监测;综合馈电保护装置监测; 建立配电网络仿真模型,模拟配电网络运行,电气参数实时监测、事故异常报警,实现无人值守模式。 --- ### 783. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 监控内容: 送、排风机运行、手自动状态过载报警、设备故障,启停控制。 排烟风机、加压风机在消防报警系统中已独立自成系统,楼宇控制系统不作任何控制,只作状态监测。 --- ### 784. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 监控内容: 风机运行状态、故障报警,启停控制。联动控制: 风机、水阀联锁控制,停风机时自动关阀,风机启动时,自动开阀。 过滤网压差报警,提醒清洗过滤网定时开始控制。 --- ### 785. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 监控内容: 供回水温度、压力,水泵及机组运行状态、故障报警、启停控制。节能控制: 定时启停、变频调节、远程监控、负荷控制。机组群控: 设备轮换、故障切换控制、联动控制。 --- ### 786. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 1、三菱: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 2、西门子: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 3、欧姆龙: CIO0元件支持Modbus之02功能码; CIO100元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 4、松下: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; DT元件支持Modbus之03、06、16功能码。 5、台达: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 6、信捷: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 7、永宏: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 8、产电: P0元件支持Modbus之02功能码; P40元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 9、汇川: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 10、英威腾: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 11、基恩士: R0元件支持Modbus之02功能码; R500元件支持Modbus之01、05、15功能码; DM元件支持Modbus之03、06、16功能码。 12、施耐德:更新固件后支持01、02、15功能码 I元件支持Modbus之02功能码; Q元件支持Modbus之01、15功能码; M元件支持Modbus之03、06、16功能码。 13、海为: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 14、维控: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 15、和利时: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; M元件支持Modbus之03、06、16功能码。 16、台安: X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 17、罗克韦尔: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; N元件支持Modbus之03、06、16功能码。 18、合信: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 19、富士(无协议编程实现) X元件支持Modbus之02功能码; Y元件支持Modbus之01、15功能码; D元件支持Modbus之03、16功能码。 20、步科: I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 --- ### 787. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 I元件支持Modbus之02功能码; Q元件支持Modbus之01、05、15功能码; V元件支持Modbus之03、06、16功能码。 --- ### 788. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 X元件支持Modbus之02功能码; Y元件支持Modbus之01、05、15功能码; D元件支持Modbus之03、06、16功能码。 --- ### 789. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 近日,CSA联盟(Connectivity Standards Alliance)正式对外发布了Matter 1.0 标准,并宣布认证计划现已开放。这意味着智能家居品牌厂商可以对其产品进行Matter相关测试和认证,一旦获得认证,公司就可以开始销售带有Matter标志的设备。 什么是Matter? Matter协议是什么? Matter的概念最初在2019年12月被提出,当时被称为CHIP(Connected Home Over IP),之后在2021年5月作为全新的连接标准被正式提出。CHIP是由AWS、Google、Apple、IKEA等多家国际巨头公司共同成立的组织,核心目标是希望通过各个巨头之间的合作,共同开发和制定一套基于IP协议的智能家居连接标准,来简化智能家居设备之间的传输过程,强化对用户隐私安全的保护。通俗地讲,有了Matter,就能够让不同品牌的智能家居产品之间进行互联互通。 Matter能解决什么问题? Matter存在的意义在于,它能够解决不同的通信协议之间纷繁复杂的碎片化问题,打破多生态之间的交互壁垒,实现智能设备之间更顺畅地通信与协作。 对于消费者消费者可以只用一个App控制所有支持Matter的设备,大大提升了操控便捷性,消费者的接受度更高。同时,用户对于产品的选择范围更广,不再因为协议限制而只能选择特定的设备厂商,可在更多的品牌厂商中选择自己心仪的产品。 对于硬件厂商硬件厂商不用重复造轮子,不再需要同时维护多个生态系统或通过多个认证,一套Matter标准就可以满足用户的连接和智能控制需求。品牌厂商可以将更多的资源投入在打磨产品上,为用户提供体验更优的产品。中小设备厂商的智能产品也能够有机会与品牌厂商设备进行互联互通。 对于服务商服务商也不再局限于特定的厂商,可在更多的厂商中选择产品。Matter简化了供应链管理、沟通和运营成本,使服务商更加专注于提升自身的服务能力,为客户创造更大的价值。 Matter有哪些核心优势? 1.简单、易于购买和使用 对于消费者而言,在选购智能家居产品时,为了保证后续的实际使用体验,消费者可能只考虑选择同一品牌的智能产品,这样可以减少购买多个网关、音箱类控制中枢,也可以少下载几个App。 Matter的诞生,就是为了解决这一问题。 目前,AWS、Apple、Google等公司均已宣布支持Matter,这意味着我们日常生活中常见的智能设备控制终端(如智能手机、语音助手、智能音箱等)均将支持Matter协议。 现在用户搭建一套Matter生态的智能家居,购买相关设备变得容易,只需要购买带Matter标志的设备,即可轻松加入网络。用户也可以根据自己的个性喜好,购买更符合自己审美和需求的智能产品。 2.可靠、安全且响应迅速地本地连接 Matter协议由多家行业头部公司共同发起、开发、验证,随着Matter 1.0的发布,授权的8家测试实验室也可以进行产品认证了,这意味着通过Matter认证的设备将具有出色的安全性能。此外,Matter生态下允许本地设备直接通信,数据不再需要通过云云对接进行流通。 3.兼容性和互操作性,来自多个品牌的设备可以本地协同工作Matter是一套开放规范,联盟成员采用开源的方式开发和实施这一新的统一连接协议。用户购买和使用的Matter产品是经过统一技术认证的,因此也具备良好的兼容性和设备互操作性。03品牌厂商如何接入Matter? Ai-WB2系列模组作为安信可科技践行“大连接”理念的首款产品,将支持接入Matter协议。 Ai-WB2系列模组将支持Google MatterAi-WB2系列模组的主芯片采用BL602,目前芯片厂商已与Google建立了EAP(Early Access Program)合作伙伴关系。我司将参与开发Matter相关的特色体验,并将获得芯片原厂与Google共同支持的Google SDK、Matter开发工具的访问权限。 Ai-WB2系列模组将支持Apple MatterAi-WB2系列模组已支持使用苹果Apple设备进行配对和控制。根据Apple官方最新的发布说明,iOS 16.1、iPadOS 16.1、HomePod 软件 16.1等也支持全新的智能家居连接标准Matter,种类繁多的智能家居配件可跨生态系统系统工作。 Matter 仓库地址:https://github.com/Ai-Thinker-Open/connectedhomeip-1品牌厂商和方案商可选用安信可Ai-WB2系列模组进行产品的研发设计,兼容的硬件封装,帮助企业快速进行Matter新产品的迭代。 未来Matter将会怎样发展? Matter协议标准可能会在全球智能家居市场中引起新一轮的洗牌。过去,智能家居发展历程中经历了各式各样的发布标准,各家厂商为了使自己的产品能够支持更多的标准都使出了浑身解数。如今,开源Matter协议的出现,使厂商也有了参与制定标准的机会,并减少了对支持多协议的产品以及对应App的研发成本。厂家也可以减少对于多种通信技术的研发, 而选择一条更适合自家产品的发展路线。值得注意的是,对于Matter会不会取代其他平台,大家都各执一词。其实,Matter为生态平台和设备厂商提供的是一种全新的通用语言,帮助在本地网络中的设备之间进行数据交互。 未来,支持Matter的设备还将通过桥接的网关与非Matter的设备共存,并且非Matter的设备也可通过OTA升级的方式支持Matter。 --- ### 790. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 现在物联网平台有好多,毕竟现在的云技术发展的也日益成熟了,使用物联网的数量也在日益增加。比如,中国移动OneNET、阿里物联网平台、华为物联网云平台、智能物联网平台、腾讯QQ物联网平台等。目前这些云平台出现了,能够很好的帮助开发商将设备连接到各种平台,以最快的速度完成产品的开发,也能给智能化的硬件,以及智能化家居提供物联网的解决方案。我们不妨一起探讨plc物联网云平台哪个好?各个平台有哪些优势? 中国移动OneNET物联网开放平台 plc物联网云平台哪个好?自然排名靠前的,要数OneNET物联网平台了。它具有高效和稳定的工作效率,并且能够保证使用者的隐私安全。它能适应各种网络环境和协议,也能实现各种传感器和智能硬件的接入,并且能够提供各种API和应用方面的模板,能够支撑各个行业的软件开发。同时,能够帮助行业降低物联网的应用开发成本和部署成本,还能满足设备连接、协议适配的需求。况且它的数据存储功能超级好,也能保证用户所有数据的安全性,以及对于大数据的分析。它的收费方式多样,具有远程升级功能、短信服务、以及视频的能力。 2.阿里云物联网平台 阿里巴巴这个名字响彻了我们中国大陆,毕竟它给各个设备提供了较为安全并且可靠的连接通信能力。plc物联网云平台哪个好?自然要算阿里云物联网平台一个,它能够连接多个设备,并且能够支持多台设备的数据采集,以及上传到云端。向上是能够提供云端API服务,这个服务可以将命令发布到设备端,再进行远程操作控制。物联网平台也有自己的设备管理功能、规则引擎,给开发商和行业的使用者提供了极大的便利。这个平台的数据,是可以传到其他阿里云的产品,进行存储和处理。阿里的计费方式按使用量、包使用量和包年或者包月的方式收费。 3.华为物联网云平台 华为手机是我们听过的一款国款手机,也是大众最喜欢的一款,愿意支持并继续使用的其中一款手机。但是,这个公司也开发过华为云物联网平台。plc物联网云平台哪个好?那么,华为物联网云平台也是被大多数客户所接受的。这个平台能够提供海量设备的接入和管理,并且能配合华为云端的其他产品同时使用。要想搭建一个完整的物联网,需要解决这三个问题,分别是物联网平台、业务应用和设备。华为采用的是华为技术架构,它的优点是能将碎片化、管理复杂的难题解决了,并且能确保用户的数据安全,解决了平台容量太小,导致数据不能完整上传的问题。关于其他物联网遇到的问题,却不能解决的,华为物联网云平台都给一一解决了。所以,使用这个平台的人也是越来越多。这个平台收费的方式是按照消息的数量计费,不限制最低的费用。 --- ### 791. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在工业控制领域,相信大家都对西门子这个品牌非常熟悉,目前比较常见的PLC是西门子S7-200PLC,其作为一款性能高、运行稳定的控制器一直得到大家的青睐和重视。那么如果我们想要把西门子PLC连接到物联网云平台应该怎么做呢?接下来小编就给大家讲讲有关西门子plc支持云平台的相关知识点。 首先我们要做一些准备工作,正常情况下大家需要准备以下这些物品,首先是一台S7-200,为了达到较好的效果,建议使用CPU226或者CPU224有两个串口的PLC,一个串口做程序的下载和在线监视,另外一个则做Modbus-RTU从站与GM10-DTU模块通讯。当然大家也可以考虑使用Smart200PLC,还需要大家准备DTU模块、天线、电源适配器、SIM卡、DP9针公头一个、联网电脑一台、电工工具、导线若干。 接下来的工作是对物料的准备,首先是DTU准备工作,我们需要对DTU网关连接天线,并且插上SIM卡,连接12V或24V的电源适配器。其次是S7-200PLC的准备工作,在连接电源的情况下,准备一颗9针串口头,用两颗导线分别焊接的3和8引脚,为485的通讯口。然后需要把PLC prot0串口的3引脚连接GM10模块的485A端子,8引脚连接GM10模块的485B端子。 完成以上工作后,我们需要将200PLC经编程电脑连接到电脑上,使用Step7-Micro Win编程软件,新建工程,然后在主程序当中添加对应功能块。西门子Modbus Slave Port0功能块。西门子Modbus从站协议库包括两条指令,第一个是MBUS_INIT指令,另外一个是MBUS_SLAVE指令,前者用于Modbus主设备发出的请求服务,后者则用于启用、初始化或者禁止Modbus从站通讯,在使用该指令之前,需要运行第一个指令,指令完成后应该立刻设定完成位,这样才能够继续执行后续指令。 这一步完成之后就需要设置库存储区,在点击菜单栏后可以发现文件,在下拉框中找到库存储区分配,然后在对应的对话框当中输入库存储区的起始地址。这里大家需要注意的是一定要避免该地址和程序中已经采用或者准备采用的其他地址发生重合。这里大家可以点击建议地址来查看地址,避免Modbus功能块所占用的地址和程序中的寄存器地址重叠。 然后是翻译编程,在编译无误的情况下,通过PPI电缆将程序下载到PLC,在下载完成后断电,并打开程序监控查看MBUS_INIT指令和MBUS_SLAVE指令的Error引脚输出是否处在正常状态。 之后是对EMCP平台进行设置,先通过管理员账号登录该平台,对该云平台进行设置,具体的操作可以参考《EMCP物联网云平台用户手册》进行操作,在登录EMCP后首先要进入到设备列表显示页面,然后进入到后台管理进入到EMCP平台的后台对相关内容进行配置。以上是关于西门子plc支持云平台,如何连接物联网平台的相关知识点的分享,相信会对大家接下来的操作有所帮助和启发。 --- ### 792. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 如今随着工业的发展和技术的进步,为了满足人们的生活需求和不断提高的对物质生活的标准,工业控制领域需要将PLC接入到物联网当中,那么plc如何接入物联网呢?下面我们就以常见PLC设备接入物联网的例子为参照,给大家讲讲相关知识点。 首先第一个是将西门子300 1200 1500PLC设备连接到AIRIOT物联网低代码平台。首先要打开模型管理,然后切换到设备配置界面,然后选择西门子siemens-s7驱动程序,驱动配置的IP一般设为192.168.124.220,机架号设为0,槽位应该设为2。资产驱动配置修改资产s7-300。模型数据点配置示例DB1.DBW0,标识应该设为DB1DBW0,名称同标识,区域则设为DB数据块,数据类型应该是【INT】INT,起始地址是0,DB1.DBW2的标识是DB1DBW2,名称同标识,然后区域仍然是DB数据块,数据类型应该是【WORD】WORD,起始地址是2,然后是DB1.DBD4,标识是DB1DBD4,名称同标识,然后区域是DB数据块,数据类型应该是【REAL】REAL,起始地址是4,然后是DB1.DBX16.0,标识为DB1DBX160,名称是DB1.DBX16.0,区域是DB数据块,数据类型是【BOOL】BOOL。 值得注意的是取位的数据点需要选择位下标,在TIA软件中,设置视图中找常规再找保护,勾选允许从远程伙伴使用PUT/GET通信访问。然后是AIRIOT与西门子S7-200、smart200PLC连接的相关操作。 首先是打开模型管理,切换到设备配置,选择西门子siemens-s7-200s驱动程序,在系统模型管理当中找到驱动配置,设备IP可以设置为192.168.124.221,localTsap(本地传输服务访问点)设为0101,remoteTsap(远端传输服务访问点)可设为0301,smart200PLC默认localTsap是0101,remoteTsap默认是0301,如果大家考虑对其进行修改,需要参照实际情况进行修改。 资产驱动配置需修改资产smart200,驱动配置应该设置为192.168.124.221,localTsap和remoteTsap分别是0101和0301,模型数据点配置示例为VB100,则标识和名称均为VB100,区域应为V变量存储区,数据类型是【BYTE】BYTE,起始地址是100,然后VW102的标识和名称为VW102,区域是V变量存储区,数据类型是【WORD】WORD,起始地址是102,然后VD106的标识和名称均设为VD106,区域仍为V变量存储区,数据类型为【REAL】REAL,起始位置为106,然后是V110.0,其标识设为V110_0,名称是V110.0,区域是V变量存储区,起始地址是110,同上原理取位的数据点需要选择位下标。 在工业物联网大潮之下,PLC如何接入物联网这一问题已经成为很多工业生产项目不可避免的问题,而考虑到设备的智能化改造进程在不断完善,需要我们在平时多留意物联网的行业在朝着规模快、快速化、智能化发展前景,并结合工厂的实际情况对相关的部件进行改造和升级,进而完善PLC的整体作用和效果,以上是关于plc如何接入物联网的相关知识点的分享,更多专业知识大家可以通过网络和专业技术部门的介绍来获取和积累,进而在最短时间内完成相关技术的革新和完善。 --- ### 793. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 开源工业物联网云平台是将有感知能力、监控能力的各种采集数据的仪器,或者是控制传感器,以及移动通信设备、智能分析功能的技术,不断的融合到了工业生产环节,从根本上提高了生产制造的效率,同时提高了产品的质量,也降低了产品的成本和资源不必要的消耗。那么,开源工业物联网云平台的优势是什么?不足之处是什么? 1.什么是开源工业物联网云平台? 开源工业物联网云平台是在研究开发一体化平台的源代码基础上,改进移动设备、智能分析功能、采集数据功能、以及监控功能等。一个技术的发展,是要在使用的过程中,不断的去发现问题,并去解决问题。任何一项技术,在发展出来,就没有任何漏洞的供大家使用。所以,不断发现问题,不断的去修正,也是提高技术的必要阶段。 2.平台的优势和特点 现在特别流行微服务模式,因此开源工业物联网云平台开始实施传输协议代理服务、规则引擎服务从核心服务中分离出来,并且需要保证在高度接入的情况下,将进行分布式部署和性能调到最优级别的操作。Actor模型具有高并发、高容错的特点。为了提高这个模型的执行效率,采用Java语言研发的Actor系统。自主研发的引擎为了给处理消息功能提供支持,都模仿了Node Red,能够使用这个系统的对象是管理租户和设备,进行设备状态的维护,处理接收到的消息,并将结果进行反馈到规则链中。 3.平台所存在的问题 开源工业物联网云平台表面看起来是没有任何问题的,但是用过这个平台的人自然清楚里面所存在的问题。第一,系统存在管理问题,这个系统在设计时,是考虑到了远程管理平台的。现在是一个租户对应一个厂商,一个厂商可以管理多个客户,多个客户可以拥有多个用户。但是,关于设备的管理权限,是轻易赋予不了的。因为大多数权限,都是被程序员写入到了代码中,一般人是轻易更改不了的。时序数据存储有组织方面的问题,目前平台系统拥有的数据库并不具备高效的数据存储能力。Asset存在歧义性问题,造成了概念的混淆,毕竟设备也是属于资产范围。平台系统设置的界面存在逻辑问题,以交互复杂的形式显示,对于多个条件配置,是最容易出现告警提示的。平台前端框架选择也有问题,不能大众化,影响市场的接受程度。 4.系统如何更好的改进  为了开源工业物联网云平台更好的服务客户,开发商对于应用的框架进行了整改,开始使用多租户应用的框架,使得系统租户和我们的租户完全对应。顺利导入了TDEngine应用,提高了时序数据的存储效率,使得数据记录能够以测控点为单位而进行新的组织。平台成功引用了测控点和测控域的概念,使得平台对于数据的组织变得更加严谨和清晰了。 --- ### 794. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 S7-200 通过以下方式支持 Modbus RTU 通信协议: S7-200 CPU 上的通信口 0(Port 0)通过指令库支持 Modbus RTU 从站模式S7-200 CPU 上的通讯口 0 和 1 (Port 0 和 Port 1)通过指令库支持 Modbus RTU 主站模式 在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口功能。通过 S7-200 CPU 通信口的自由口模式实现 Modbus 通信协议,可以通过无线数据电台等慢速通信设备传输。 这为组成 S7-200 之间的简单无线通信网络提供了便利。详细情况请参考《S7-200系统手册》(2002 年 10 月或以后版本)的相应章节。 S7-200 是否支持 Modbus ASCII 通信模式? 西门子s7-200不提供支持上述模式的的现成指令库,需要用户自己用自由口模式编程。 Modbus RTU主站 Modbus RTU 主站指令库 西门子在 Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。 图 1. 西门子标准指令库(Micro/WIN V4.0 SP5) 注意: 1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对 Port 0 和 Port 1 有效。该指令库将设置通信口工作在自由口模式下。 2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。 3. Modbus RTU 主站库对CPU的版本有要求。CPU 的版本必须为 2.00 或者 2.01(即订货号为 6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。 使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器。 要使用 Modbus RTU 主站指令库,须遵循下列步骤: 1.安装西门子标准指令库 2.按照要求编写用户程序调用 Modubs RTU 主站指令库 Modbus RTU 主站功能编程 调用 Modbus RTU 主站初始化和控制子程序 使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制: 图 2. 用 SM0.0 调用 Modbus RTU 主站初始化与控制子程序 各参数意义如下: a. EN 使能: 必须保证每一扫描周期都被使能(使用 SM0.0) b. Mode 模式: 为 1 时,使能 Modbus 协议功能;为 0 时恢复为系统 PPI 协议 c. Baud 波特率: 支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。 d. Parity 校验: 校验方式选择 0=无校验1=奇较验2=偶较验 e. Timeout 超时: 主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000 毫秒(1 秒),允许设置的范围为 1 - 32767。   注意: 这个值必须设置足够大以保证从站有时间响应。 f. Done 完成位: 初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作(见例程) g. Error 初始化错误代码(只有在 Done 位为1时有效): 0= 无错误1= 校验选择非法2= 波特率选择非法3= 模式选择非法 调用 Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求; 图 3. 调用Modbus RTU 主站读写子程序 各参数意义如下: a. EN 使能: 同一时刻只能有一个读写功能(即 MBUS_MSG)使能 注意:建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见例程)。 b. First 读写请求位: 每一个新的读写请求必须使用脉冲触发 c. Slave 从站地址: 可选择的范围 1 - 247 d. RW 从站地址: 0 = 读, 1 = 写 注意: 1.开关量输出和保持寄存器支持读和写功能 2.开关量输入和模拟量输入只支持读功能 e. Addr 读写从站的数据地址: 选择读写的数据类型 00001 至 0xxxx - 开关量输出 10001 至 1xxxx - 开关量输入 30001 至 3xxxx - 模拟量输入 40001 至 4xxxx - 保持寄存器 f. Count 数据个数 通讯的数据个数(位或字的个数) 注意: Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令) g. DataPtr 数据指针: 1. 如果是读指令,读回的数据放到这个数据区中 如果是写指令,要写出的数据放到这个数据区中 h. Done 完成位 读写功能完成位 i. Error 错误代码: 只有在 Done 位为1时,错误代码才有效 0 = 无错误 1 = 响应校验错误 2 = 未用 3 = 接收超时(从站无响应) 4 = 请求参数错误(slave address, Modbus address, count, RW) 5 = Modbus/自由口未使能 6 = Modbus正在忙于其它请求 7 = 响应错误(响应不是请求的操作) 8 = 响应CRC校验和错误 - 101 = 从站不支持请求的功能102 = 从站不支持数据地址103 = 从站不支持此种数据类型104 = 从站设备故障105 = 从站接受了信息,但是响应被延迟106 = 从站忙,拒绝了该信息107 = 从站拒绝了信息108 = 从站存储器奇偶错误 常见的错误: 如果多个 MBUS_MSG 指令同时使能会造成 6 号错误 库存储区被程序其它地方复用,有时也会造成6 号错误 从站 delay 参数设的时间过长会造成主站 3 号错误 从站掉电或不运行,网络故障都会造成主站 3 号错误 在 CPU 的 V 数据区中为库指令分配存储区(Library Memory) Modbus Master 指令库需要一个284个字节的全局 V 存储区。 1.3 关于 Modbus RTU 主站协议及地址 此为西门子正式推出的标准库指令说明资料。 在 Modbus RTU Master 协议和 PPI 协议之间切换: Modbus RTU Master 协议指令库使通信口工作在自由口模式下,此时不能与 Micro/WIN 软件通信。要在切换回 PPI 协议,可以: 将 MBUS_CTRL 指令的 Mode 输入端设置为逻辑"0"将 CPU 的允许模式选择开关置为 STOP 位置 Modbus RTU Master 协议库的执行时间: Modbus RTU Master 协议库的 MBUS_CTRL 指令不需要很长的执行时间。MBUS_需要 1.11 ms 用于初始化,在后续的每个扫描周期中只占用 0.41 ms。 调用 MBUS_MSG 子程序会加长处理时间。大部分时间都用于 CRC 校验的计算。每读、写一个字的数据就需要 1.85 ms 扫描时间。数据最多的情况下(读、写 120 字的数据),扫描时间大概会扩增加 222 ms。读操作的时间主要消耗在接收数据上;写操作的时间主要消耗在发送数据上。 Modbus 地址 通常 Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus Master 协议库把标准的 Modbus 地址映射为所谓 Modbus 功能号,读写从站的数据。Modbus Master 协议库支持如下地址: 00001 - 09999:数字量输出( 线圈)10001 - 19999:数字量输入(触点)30001 - 39999:输入数据寄存器(通常为模拟量输入)40001 - 49999:数据保持寄存器 Modbus Master 协议库支持的功能 为了支持上述 Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能: 表 1. 需要从站支持的功能 Modbus 地址读/写Modbus 从站须支持的功能00001 - 09999 数字量输出读功能码 100001 - 09999 数字量输出写功能码 5:写单输出点功能码 15:写多输出点10001 - 19999 数字量输入读功能码 210001 - 19999 数字量输入写-30001 - 39999 输入寄存器读功能码 430001 - 39999 输入寄存器写-40001 - 49999保持寄存器读功能码 340001 - 49999保持寄存器写功能 6:写单寄存器单元功能 16:写多寄存器单元 Modbus 地址和 S7-200 存储区地址的映射 S7-200 通过 Modbus Master 和 Slave 协议库通信时,Modbus 地址和 S7-200 内存储区地址的 映射关系都类似。 Modbus 数字量地址映射举例: 位地址(0xxxx 和 1xxxx)数据总是以字节为单位打包读写。第一个字节中的最低有效位对应 Modbus 地址的起始地址。如下图所示: 图 4. 数字量地址映射举例 1.4 Modbus RTU 主站例程 为了更好地理解 Modbus 主站的编程,可参考下面的例程。 例子程序1: 多个MBUS_MSG指令轮询执行, 注意 1. 该例程使用 Micro/WIN V4.0 SP5 保存。2. 该例程仅访问一个从站,若访问不同的从站,可通过改变从站地址来实现。 Modbus RTU 主站指令库应用例程 例子程序2:反复激活单个MBUS_MSG指令: Modbus RTU 主站变址方式轮询访问应用例程 注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为 此联系西门子技术支持与服务部门。 1.5 Modbus RTU 主站常问问题 Modbus RTU 主站库对 CPU 的版本是否有要求,为什么编译例子程序时,会遇到 4 个错误? Modbus RTU 主站库对 CPU 的版本确实有要求,CPU 的版本必须为 2.00 或者 2.01(即订货号为6ES721*-***23-0BA*),1.22 版本之前(包括 1.22 版本)的 S7-200 CPU 不支持。 Modbus 指令库启动后,如何通过同一个通信端口进行 CPU 监控? Modbus 指令库使用的是 CPU 的自由口通信功能,工作在自由口模式下的通讯口不能使用 Micro/WIN 的 PPI 编程通信监控。如果通信口都已经被占用,可以考虑: 加一个通信模块(如 EM 277、CP 243-1、EM 241 等)扩展出一个编程通信口中止自由口模式,可以将 CPU 上的模式开关从 RUN 拨到 STOP;或者保持处于 RUN 状态,用程序停止指令库的 Modbus 模式(参见指令库应用)  如何理解 Modbus 地址与功能码的区别? Modbus 地址与 Modbus 的功能码是两个层次的概念。 根据 Modbus 通信协议,Modbus 数据的地址使用 0xxxx、1xxxx、3xxxx 和 4xxxx 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。在使用 S7-200 的指令库时,Modbus 数据地址与 S7-200 的 I/O 和数据存储区地址间有特定的对应关系。 有些设备表明它支持 Modbus RTU 通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何指定 Modbus 站的地址,需要读写数据类型、长度等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓"功能码",如功能 1 指定读取单个/多个数字量输出点的值。 支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是 Modbus 数据地址。Modbus 地址所访问的数据,是通过各种"功能"读写而来。功能码是 Modbus 地址的底层。如果 Modbus 通信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此功能号与 Modbus 地址间的对应关系。 如何访问大于 9999 的保持寄存器地址? 通常 Modbus 协议的保持寄存器地址范围在 40001 - 49999 之间。对于多数应用来说已经够了。但有些 Modbus 从站把地址映射到保持寄存器区的地址超过 9999 的部分。 Modbus Master 协议库支持超过 9999 的保持寄存器地址。地址范围为 400001 - 465536。只需在调用 MBUS_MSG 子程序时给 Addr 参数赋相应的值即可,如 416768。  Modubs Master 扩展地址模式仅支持保持寄存器区,不支持其他地址类型。 S7-200 作为 Modbus 主站方接收上来的数据格式与第三方设备不一样怎么办? 西门子PLC数据的存储格式为高位低存方式。举例:VD200中包含VW200和VW202,其中VW202是低字,VW200是高字。若第三方设备与西门子数据存储格式不同,是低位低存的方式,那么通信上来的数据就会存在错误,需要进行转换才能使用。编程的方式比较多样,针对双字中高低字的交换可以使用SWAP(字交换)指令,若是字节交换可以考虑循环移位指令。 S7-200 是否支持如 Modbus TCP 等其它协议? 不支持。S7-200自身的通信端口或其通信扩展模块均不支持 Modbus TCP、CANopen、DeviceNet 以及 BACnet 通信协议。  为什么 S7-200 作 Modbus 主站时 MBUS_MSG 指令报6号错误? 引起6号错误主要有两方面的原因:1.多个 MBUS_MSG 指令同时使能执行;2. Modbus库存储区中分配的建议地址区与编程中已使用的V存储区有重叠。 2Modbus RTU从站 2.1 CPU 上的通信口(Port0)支持 Modbus RTU 从站通信协议 S7-200 CPU上的通信口Port0可以支持Modbus RTU协议,成为Modbus RTU从站。此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。  详情请参考《S7-200系统手册》之相关章节。 要实现Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。  Modbus RTU从站指令库只支持CPU上的通信0口(Port0)。 2.2 编程基本步骤: 检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包; 图1. 指令树中的库指令 编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。关于参数的详细说明,可在子程序的局部变量表中找到; 图2. 调用Modbus RTU通信指令库 图中参数意义如下: 模式选择:启动/停止Modbus,1=启动;0=停止从站地址:Modbus从站地址,取值1~247波特率:可选1200,2400,4800,9600,19200,38400,57600,115200奇偶校验:0=无校验;1=奇校验;2=偶校验延时:附加字符间延时,缺省值为0最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128最大AI字数:参与通信的最大AI通道数,可为16或32最大保持寄存器区:参与通信的V存储区字(VW)保持寄存器区起始地址:以&VBx指定(间接寻址方式)初始化完成标志:成功初始化后置1初始化错误代码Modbus执行:通信中时置1,无 Modbus 通信活动时为 0。错误代码:0=无错误 表 1. 从站错误代码 错误代码描述0无错误1存储区范围错误2非法波特率或校验3非法从站地址4Modbus 参数的非法值5保持寄存器与Modbus从站符号地址重复6接收校验错误7接收CRC错误8非法功能请求/不支持的功能9请求中有非法存储区地址10从站功能未使能 在CPU的V数据区中分配库指令数据区(Library Memory); 如有必要,使用主站软件测试。 注意:由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。注意Modbus 中的保持寄存器区按"字"寻址,即MaxHold规定的是VW而不是VB的个数。 在图2的例子中,规定了 Modbus 保持寄存器区从 VB0 开始(HoldStart = VB0),并且保持寄存器为1000个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB0~VB1999共2000个字节。因此分配库指令保留数据区时至少要从VB2000开始。当然保持区不一定要从VB0开始。 注意:你选用的CPU的V存储区大小!CPU型号不同V数据存储区大小不同。应根据需要选择Modbus保持寄存器区域的大小。 包含 Modbus RTU 从站指令库的项目编译、下载到CPU中后,在编程计算机(PG/PC)上运行一些 Modbus 测试软件可以检验S7-200的Modbus RTU通信是否正常,这对查找故障点很有用。测试软件通过计算机串口(RS-232)和PC/PPI电缆连接CPU。如果必要,须将PC/PPI电缆设置在自由口通信方式。 可到一些软件下载网站寻找类似软件,如 ModScan32 等。 2.3 Modbus RTU 从站地址与S7-200的地址对应 Modbus地址总是以00001、30004之类的形式出现。S7-200内部的数据存储区与Modbus的0、1、3、4共4类地址的对应关系如下: 表2. Modbus地址对应表 Modbus地址S7-200数据区00001 ~ 00128Q0.0 ~ Q15.710001 ~ 10128I0.0 ~ I15.730001 ~ 30032AIW0 ~ AIW6240001 ~ 4xxxxT ~ T + 2 * (xxxx -1) 其中T为S7-200中的缓冲区起始地址,即 HoldStart。 如果已知S7-200中的V存储区地址,推算Modbus地址的公式如下: Modbus地址 = 40000 + (T/2+1) ; T为偶数 2.4 Modbus RTU 从站指令库支持的功能码 Modbus RTU 从站指令库支持特定的 Modbus 功能。访问使用此指令库的主站必须遵循这个指令库的要求。 表 3. Modbus RTU 从站功能码 功能码主站使用相应功能码作用于此从站的效用1读取单个/多个线圈(离散量输出点)状态。 功能 1 返回任意个数输出点(Q)的 ON/OFF 状态。2读取单个/多个触点(离散量输入点)状态。 功能 2 返回任意个数输入点(I)的 ON/OFF 状态。3读取单个/多个保持寄存器。功能 3 返回 V 存储区的内容。在 Modbus 协议下保持寄存器都是"字"值,在一次请求中可以读取最多 120 个字的数据。4读取单个/多个输入寄存器。功能 4 返回 S7-200 的模拟量数据值。5写单个线圈(离散量输出点)。功能 5 用于将离散量输出点设置为指定的值。这个点不是被强制的,用户程序可以覆盖 Modbus 通信请求写入的值。6写单个保持寄存器。功能 6 写一个值到 S7-200 的 V 存储区的保持寄存器中。15写多个线圈(离散量输出点)。功能 15 把多个离散量输出点的值写到 S7-200 的输出映像寄存器(Q 区)。输出点的地址必须以字节边界起始(如 Q0.0 或 Q2.0),并且输出点的数目必须是 8 的整数倍。这是此 Modbus RTU 从站指令库的限制。些点不是被强制的,用户程序可以覆盖 Modbus 通信请求写入的值。16些多个保持寄存器。功能 16 写多个值到 S7-200 的 V 存储区的保持寄存器中。在一次请求中可以写最多 120 个字的数据。 2.5 Modbus RTU 从站例程 Modbus RTU 从站例程 需要 STEP 7-Micro/WIN V4.0 SP3 以上版打开 2.6 Modbus RTU 从站常见问题 Modbus 从站的网络地址与 S7-200 的 CPU 网络地址有什么关系? 没有关系。支持网络通信的通信协议必须有其自己的网络寻址规定。 Modbus 从站的地址只是它在 Modbus 网络上的地址,而通常所说的 S7-200 CPU 地址是 CPU 在西门子的 PPI 网络上的站地址。S7-200 CPU 的大部分通信功能都通过 PPI 网络完成,例如编程、网络读写通信等。  如何理解 Modbus 地址与功能码的区别? Modbus 地址与 Modbus 的功能码是两个层次的概念。 根据 Modbus 通信协议,Modbus 数据的地址使用 00xxx、10xxx、30xxx 和 40xxx 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。在使用 S7-200 的指令库时,Modbus 数据地址与 S7-200 的 I/O 和数据存储区地址间有特定的对应关系。 有些设备表明它支持 Modbus RTU 通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何指定 Modbus 站的地址,需要读写数据类型、长度等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓"功能码",如功能 1 指定读取单个/多个数字量输出点的值。 支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是 Modbus 数据地址。Modbus 地址所访问的数据,是通过各种"功能"读写而来。功能码是 Modbus 地址的底层。如果 Modbus 通信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此功能号与 Modbus 地址间的对应关系。 Modbus 指令库启动后,如何通过同一个通信端口进行 CPU 监控? Modbus 指令库使用的是 CPU 的自由口通信功能,工作在自由口模式下的通讯口不能使用 Micro/WIN 的 PPI 编程通信监控。如果通信口都已经被占用,可以考虑: 加一个通信模块(如 EM 277、CP 243-1、EM 241 等)扩展出一个编程通信口中止自由口模式,可以将 CPU 上的模式开关从 RUN 拨到 STOP;或者保持处于 RUN 状态,用程序停止指令库的 Modbus 模式(参见指令库应用) 为何有些 HMI 软件使用 Modbus RTU 读取S7-200中的实数会出现错误? 有些HMI软件使用Modbus RTU通信协议时,处理存储在数据保持寄存器中的实数(浮点数)的方式与西门子的实数保存格式不同。西门子的PLC遵循"高字节低地址、低字节高地址"的规律。 Modbus RTU的保持寄存器总是以"字(双字节)"为单位,而一个实数需要4个字节(双字)表示。HMI软件在处理时可能会把保持寄存器的两个"字"互换位置,造成不能识别以西门子格式表示的实数。如果HMI软件一方无法处理这种实数,则可在S7-200 CPU中编程将存入数据缓冲区(保持寄存器区)的实数的高字和低字互换。 为何有的HMI软件用Modbus RTU可以读取作为从站的S7-200的内容,但不能写入? 可能此软件使用了Modbus功能15(写多个离散量)或类似功能(功能 16)。S7-200从站协议遵守"以整字节地址边界(如Q0.0、Q2.0)开始、以8的整数倍为位个数"的规约。如果HMI软件未严格执行此规律就可能发生写入错误的情况。 S7-200是否支持 Modbus ASCII 模式? S7-200可以支持上述模式,但是没有现成的指令库,需要用户自己编程。 项目编译后为何出现很多错误? 使用指令库时,若编译后出现很多错误,一般是因为未指定库指令数据存储区。请参考相关条目。 S7-200 CPU的Port1是否可以支持Modbus RTU协议? 可以。用户可以自己编程实现。 在S7-200的"Tips and Tricks"帮助文档中,Tip041是Modbus RTU从站程序,用户可以参考。 S7-200是否可以组成Modbus RTU通信网络?如何组网? S7-200可以组成RS-485基础上的Modbus RTU网络。如果通信对象是不同标准的通信口,可能还需要转换。参见:RS-485网络组成 3STEP 7-Micro/WIN 的标准指令库 STEP 7-Micro/WIN V4.0 以上版内部已经带有新的指令库,但在未安装西门子 Instruction Library 软件包的情况下,不能显示出来使用。 要使用西门子的标准指令库,必须先安装西门子的指令库软件包 Instruction Library。安装了 Instruction Library 之后,只要安装的 STEP 7-Micro/WIN 版本是最新的,就能获得相应版本的新指令库。安装 Micro/WIN 的升级包(Service Pack)也会更新指令库的版本。 用户可以直接从下面获得西门子 Instruction Library 软件安装包: Instruction Library 最新的 STEP 7-Micro/WIN V4.0 SP5 版本支持以下几种西门子标准指令库: USS通信协议库:可使CPU通信口 Port0 和 Port 1 支持与Micro-Master 3(MM3系列)和Micro-Master 4(MM4系列,如MM420、MM430、MM440等)、SINAMICS G110系列的USS通信控制,通过一些预先编好的子程序和中断程序,以方便地控制变频器的运行和读写其参数。Micro/WIN V4.0的USS指令库现在已经针对西门子的Master Drive做了优化。Modbus RTU Slave(从站)通信协议库:可使CPU通信口 Port0 支持Modbus RTU从站通信功能。Modbus RTU Master (主站)通信协议库:可使 CPU 通信口 Port 0 和 Port 1 支持 Modbus RTU 主站通信功能。 以上通信协议库都是使用了S7-200 CPU的自由口通信功能。 图1. 西门子标准库以浅蓝色图标表示(Micro/WIN V4.0 SP5) 从以下两种途径可以获得STEP 7-Micro/WIN指令库: 安装STEP 7-Micro/WIN32 附加软件包Instruction Library V1.1,订货号6ES7830-2BC00-0YX0。已安装STEP 7-Micro/WIN32 V3.1和Toolbox V1.0(包括为TP070配置的TP Designer和老的指令库,订货号6ES7810-2TC00-0YX0),再安装正式的STEP 7-Micro/WIN32 V3.2(或V4.0)版,也可自动获得新的指令库。新旧版本的软件及其指令库可以在一台计算机上共存(V4.0 的各升级包不能共存)。 注意: 所有旧的CPU21x不能使用新的指令库旧版本的指令库不能与新的指令库在同一个项目文件中共存安装了新版本的指令库后,旧版本的指令库不再能够看到用户自定义的指令库不能与西门子的库重名 有时因为系统和软件安装有问题,可能在安装完西门子标准指令库后仍然不能看到西门子标准库。这时可以尝试添加标准库。标准库的文件存在Micro/WIN安装目录下的Standard Libs目录下。 3.1 分配库指令数据区 调用STEP 7 - Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。 如果在编程时不分配库指令数据区,编译时会产生许多相同的错误(错误18)。 操作步骤(以Modbus RTU库指令为例): 在指令树的Project(项目)中,以鼠标右键单击Program Block(程序块),在弹出的快捷菜单中选择Library Memory。如图2所示: 图2 在弹出的选项卡中设置库指令数据区,如图2所示: 图3.缺省情况下是从VB0开始,但因为与Modbus的保持寄存区冲突,所以手动改为VB2000。按"Suggest Address"按钮也可以自动分配。 可以使用Suggest Address(推荐地址)设置数据区,但要注意编程软件设置的数据区地址,只考虑到了其他一般寻址,而未考虑到诸如Modbus数据保持寄存器区等的设置。应当确保不与其他任何已使用的数据区重叠、冲突。不应重复按Suggest Address按钮,否则也会造成混乱。 在STEP 7-Micro/WIN32 V3.1中,有分配库指令数据区时有不同的操作方法,需要在Symbol Table(符号表)中设置一个首地址。我们强烈建议使用当时最新的编程版本。 3.2 添加指令库 注意:添加自定义指令库,需要关闭编辑库指令的项目,新建立一个项目。如果要添加其他来源的库指令自然不需要如此。 第一步:在Micro/WIN的File(文件)菜单中选择Add/Remove Libraries...(添加/删除指令库)命令 ;或者在指令树的Libraries(指令库)分支上单击鼠标右键,选择Add/Remove Libraries... 图4. 选择添加/删除指令库命令 添加/删除对话框中将显示已经在本机的Micro/WIN中集成的用户自定义指令库。 图5. 已安装的库指令 第二步:按Add(添加)按钮,选择新定义的库文件路径。用户自定义库将自动添加到Micro/WIN指令树的Libraries分支下。 图6. 选择库文件  缺省情况下,Micro/WIN到图8中的路径下寻找库指令文件。用户也可以指定其他路径。但要注意库文件应当保持在非移动的介质上,如果指定了一个可移动硬盘,则硬盘不在时会发生找不到库的错误。建议用户使用缺省设置。 3.3 删除库指令 第一步:选择添加/删除指令库命令 图7. 选择命令 第二步:选中须卸载的库所对应的库文件,按Remove(删除)按钮 图8. 选中要删除的库指令文件 4RS-485网络 S7-200系统支持的PPI、MPI和PROFIBUS-DP协议通常以RS-485电气网络为硬件基础。RS-485串行通信标准采用平衡信号传输方式,或者称为差动模式。平衡传输方式可以有效地抑制传输过程中干扰。平衡方式采用一对导线,利用两根导线间的电压差传输传输信号。这两根导线被命名为A(TxD/RxD-)和B(TxD/RxD+)。当B的电压比A高时,认为传输的是逻辑"高"电平;当B的电压比A低时,认为传输的是逻辑"低"电平信号。能够有效工作的差动电压范围十分宽广,可以从零点几伏到接近十伏。RS-485通信端口可以做到很高的通信速率,较长的通信距离,以及并联连接多个端口。 平衡通信方式能否有效工作受到共模电压差的影响。RS-485接口的两根导线相对于通信对象信号地的电压差就是共模电压。非电气隔离的RS-485接口能在一定的范围内抵抗共模电压对通信的干扰。 S7-200 CPU通信口的共模抑制电压是12V。所以对于这类非隔离型的RS-485端口,保证通信口之间的信号地等电位非常重要,最好将它们连接在一起(并不是说一定要接地)。 S7-200系统中的RS-485端口是半双工的,不能同时发送和接收信号。在S7-200系统中,选择合适的通信设备,可以做到波特率从1200到12M,单段距离1000m,单段站点32个的通信网络。通过中继器,RS-485电气网络还可以扩展通信距离,增加通信站点。详情请参考《S7-200系统手册》关于通信的专门一章。虽然常见的RS-485通信器件在电气性能上基本一致,但物理接口却五花八门,没有统一的规定。  西门子系统中的 D-Sub 9 针型 RS-485 端口,引脚定义是基本一致的。 4.1 S7-200系统中的RS-485通信 在S7-200系统中,CPU上的通信口(编程口),以及EM277模块上的通信端口都是符合RS-485电气标准的。但它们也有所不同: S7-200 CPU上的通信口是非隔离型的,最高通信速率187.5K波特EM277上的通信口是隔离的,最高通信速率12M,并且速率自适应 以下三种协议,都可以在RS-485的硬件基础上实现通信: PPI(包括编程通信、S7-200 CPU之间、S7-200 CPU与HMI之间的通信等)MPI(S7-200 CPU与S7-300/400 CPU、S7-200 CPU与HMI之间、EM277与HMI之间的通信等)PROFIBUS-DP(EM277与其他PROFIBUS-DP主站之间的通信) 实际上,如果各通信站点的地址不同,通信波特率相同,上述三个协议可以在一个RS-485网络上同时实现各自的通信。当然,一个站点支持什么协议受到自身条件所限。 因此考察上述电气网络的通信时,我们应注意到它们都受RS-485网络电气基础的制约。上述网络所用的网络硬件基本一样。 5RS-485网络的硬件组成 在S7-200系统中,无论是组成PPI、MPI还是RPOFIBUS-DP网络,或是Modbus RTU网络,用到的主要部件都是一样的: PROFIBUS电缆:电缆型号有多种,其中最基本的是PROFIBUS FC(Fast Connect快速连接)Standard电缆(订货号6XV1 830-0EH10)PROFIBUS网络连接器:网络连接器也有多种形式,如出线角度不同等等 5.1 连接网络连接器 A. 电缆和剥线器。使用FC技术不用剥出裸露的铜线。 图1. 剥好一端的PROFIBUS电缆与快速剥线器(FCS,订货号6GK1905-6AA00)。 B. 打开PROFIBUS网络连接器。首先打开电缆张力释放压块,然后掀开芯线锁。 图2. 打开的PROFIBUS连接器 C. 去除PROFIBUS电缆芯线外的保护层,将芯线按照相应的颜色标记插入芯线锁,再把锁块用力压下,使内部导体接触。应注意使电缆剥出的屏蔽层与屏蔽连接压片接触。 图3. 插入电缆 由于通信频率比较高,因此通信电缆采用双端接地。电缆两头都要连接屏蔽层。 D. 复位电缆压块,拧紧螺丝,消除外部拉力对内部连接的影响。 5.2 网络连接器 网络连接器主要分为两种类型:带和不带编程口的。不带编程口的插头用于一般联网,带编程口的插头可以在联网的同时仍然提供一个编程连接端口,用于编程或者连接HMI等。 图4. 左侧为不带编程口的网络连接器(订货号:6ES7 972-0BA52-0XA0)右侧的是带编程口的网络连接器(订货号:6ES7 972-0BB52-0XA0) 5.3 线型网络结构 通过PROFIBUS电缆连接网络插头,构成总线型网络结构。 图5. 总线型网络连接 在上图中,网络连接器A、B、C分别插到三个通信站点的通信口上;电缆a把插头A和B连接起来,电缆b连接插头B和C。线型结构可以照此扩展。 注意圆圈内的"终端电阻"开关设置。网络终端的插头,其终端电阻开关必须放在"ON"的位置;中间站点的插头其终端电阻开关应放在"OFF"位置。 5.4 终端电阻和偏置电阻 一个正规的RS-485网络使用终端电阻和偏置电阻。在网络连接线非常短、临时或实验室测试时也可以不使用终端和偏置电阻。 终端电阻:在线型网络两端(相距最远的两个通信端口上),并联在一对通信线上的电阻。根据传输线理论,终端电阻可以吸收网络上的反射波,有效地增强信号强度。两个终端电阻并联后的值应当基本等于传输线在通信频率上的特性阻抗 偏置电阻:偏置电阻用于在电气情况复杂时确保A、B信号的相对关系,保证"0"、"1"信号的可靠性 西门子的PROFIBUS网络连接器已经内置了终端和偏置电阻,通过一个开关方便地接通或断开。终端和偏置电阻的值完全符合西门子通信端口和PROFIBUS电缆的要求。 合上网络中网络插头的终端电阻开关,可以非常方便地切断插头后面的部分网络的信号传输。 与其他设备通信时(采用PROFIBUS电缆),对方的通信端口可能不是D-SUB9针型的,或者引脚定义完全不同。如西门子的MM4x0变频器,RS-485通信口采用端子接线形式,这种情况下需要另外连接终端电阻,西门子可以提供一个比较规整的外接电阻。对于其他设备,可以参照《S7-200系统手册》上的技术数据制作。  西门子网络插头中的终端电阻、偏置电阻的大小与西门子PROFIBUS电缆的特性阻抗相匹配,强烈建议用户配套使用西门子的PROFIBUS电缆和网络插头。可以避免许多麻烦。 记住联网的格言:你糊弄它,它就糊弄你! --- ### 795. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 IOT(物联网)平台本质上属于IoT PaaS,这意味着物联网络设备访问和应用程序具有用于二次开发的开放工具平台。侧重个人部署的一般也称为物联网塔、物联网络操作系统平台、物联网络中间件平台等。那么,plc物联网云平台哪个好?  plc物联网云平台哪个好?工具化可以创建、添加和管理通过IOT平台连接的设备系统,并提供多种其他可配置功能,无需平台定制开发,即可解决与物联网络设备管理相关的警告阈值、事件关联、驱动配置等热问题。  开放性通过在设备访问方面和数据应用程序方面提供外部SDK或API,二次开发扩展设备驱动程序或业务应用程序,为访问设备类型提供扩展支持,并为物联数据应用程序提供业务支持。  近年来,物联网络操作系统(IoT  OS)作为新概念经常被提出,比平台更具体、更不广泛,触及了物联网络的本质,即操作系统。  Window为PC内置或外围设备提供部分散热硬件集成、设备驱动开发支持、协力厂商应用程序开发支持、文件存储、应用程序进程计划和网络通信处理。Android也很相似,但手机硬件中添加了特有的陀螺仪、NFC、指纹、移动网络模块等。  与IoT  OS一样,是通过互联网有线或无线分布在智能项目场景(例如消防、门禁、停车、照明、新风、电梯、温度、水位计等)中的设备。支持设备驱动开发、接口协议转换。支持第三方应用程序开发,并提供API数据接口。中间提供数据存储、分发、命令调度、通信处理等。  plc物联网云平台哪个好?物联网络要求碎片化严重。场景可分为智能家居(消费者物联网络)、智能制造(产业互联网)和智能城市。对于智能城市,必须提到系统集成。信息化系统集成项目具有高客单价、大B对G属性(如建筑智能建筑、智能校园、智能社区等)。建筑场景设备包括电梯、火灾、门禁、BA、动环、停车、照明、广播、巡警等,主要集成在底层,用于集成的子系统类型。  对子系统的访问与智能硬件或工业设备有很大不同。在过程中,子系统通常是库存设备,提供由SDK/API组成的现成接口,并等待第三方平台主导集成。设备产业协议、数据报格式和制造商积极对接平台的方式大不相同。  技术上,大多数平台架构都是针对增量智能硬件,如MQTT异步通信选择、不考虑多语言开发等,在对接库存子系统设备时相当麻烦,会影响项目交付和验收效率。  plc物联网云平台哪个好?IOT平台上,“访问”只是一个部分,并不重要,但平台的标准化和通用性(如传感器、智能硬件、子系统、算法、数据库、平台服务、流媒体等)首先体现在访问能力上。  plc物联网云平台哪个好?物联网平台将于未来推出,随着产业数字化升级,IOT平台在建筑、校园、社区等系统集成场景中发挥着越来越大的价值。 --- ### 796. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 目前,有超过250亿台“物体”连接到互联网——预计到2025年这个数字将激增一倍。工业物联网(IIoT)以业界几乎无法预测的爆炸性方式迅速发展。工业互联网(IIoT)设备、标准和通信协议的激增使工业互联网的有效管理变得困难。开源工业物联网云平台是一款产业互联网软件,可以让组织安全管理产业互联网生态系统中所有相互连接的人、系统和实体。  研究表明,开源工业物联网云平台的全球市场以每年25%的速度增长,到2023年将超过40亿美元。但是,很多其他行业的互联网供应商都在创建自己的行业互联网平台,所以如何选择最合适的平台,并确保行业互联网的所有好处?  开源工业物联网云平台是物联网项目成功实施的基础。没有有效的平台,任何大规模的产业互联网分发都无法实现其全部价值。最好的开源工业物联网云平台能给组织带来很多好处,包括:  1、降低成本 不同行业的互联网设备和网络的管理和维护成本高昂、耗时且复杂。开源工业物联网云平台可以集中整个管理过程,大大减轻企业的负担和成本。 随着越来越多的组织寻求工业互联网供应商来管理互联网,最好的工业互联网平台使供应商能够提供按需定价模型。  2、改善运营  工业互联网解决方案提供设备性能和人员的实时信息,有助于简化和改进业务流程和工作流。开源工业物联网云平台通过捕获互联网数据并与其他内部和外部来源的数据集成,促进了可预测的维护和基于跟踪的供应链可见性等领域的运营改进。  3、提高生产效率  平台为Digital  Twins数据双胞胎等新型工业互联网应用软件的部署奠定了基础。使用这些软件设计、开发和生产新产品将有助于促进企业创新和提高生产率。  4、物联网数据创收  创新型企业已经开始利用从物联网数据中获得的洞察力开发新产品和服务。在产品的生命周期内,售后和服务比原始购买更有利可图。开源工业物联网云平台可以在产品生产和使用的各个阶段捕获和分析数据。这使您能够创建新的以数据为中心的服务,并开发新的基于数据的产品。  5、提高物联网安全性  众所周知,网络设备缺乏企业级安全性。工业互联网传感器等设备除了某些通知操作外,几乎没有计算能力,无法提供多层安全。开源工业物联网云平台提供安全认证和认证等所有身份管理功能,确保互联网端点免受网络攻击。另一方面,开源工业物联网云平台将石油和天然气、公共设施、制造业等行业的机械和设备连接起来。在工业互联网部署中,系统故障和停机会导致高风险情况,甚至危及生命。产业互联网应用也比以用户为中心的物联网应用更注重提高效率、改善健康或安全。 --- ### 797. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 目前,有超过250亿台“物体”连接到互联网——预计到2025年这个数字将激增一倍。工业物联网(IIoT)以业界几乎无法预测的爆炸性方式迅速发展。工业互联网(IIoT)设备、标准和通信协议的激增使工业互联网的有效管理变得困难。开源工业物联网云平台是一款产业互联网软件,可以让组织安全管理产业互联网生态系统中所有相互连接的人、系统和实体。  研究表明,开源工业物联网云平台的全球市场以每年25%的速度增长,到2023年将超过40亿美元。但是,很多其他行业的互联网供应商都在创建自己的行业互联网平台,所以如何选择最合适的平台,并确保行业互联网的所有好处?  开源工业物联网云平台是物联网项目成功实施的基础。没有有效的平台,任何大规模的产业互联网分发都无法实现其全部价值。最好的开源工业物联网云平台能给组织带来很多好处,包括:  1、降低成本 不同行业的互联网设备和网络的管理和维护成本高昂、耗时且复杂。开源工业物联网云平台可以集中整个管理过程,大大减轻企业的负担和成本。 随着越来越多的组织寻求工业互联网供应商来管理互联网,最好的工业互联网平台使供应商能够提供按需定价模型。  2、改善运营  工业互联网解决方案提供设备性能和人员的实时信息,有助于简化和改进业务流程和工作流。开源工业物联网云平台通过捕获互联网数据并与其他内部和外部来源的数据集成,促进了可预测的维护和基于跟踪的供应链可见性等领域的运营改进。  3、提高生产效率  平台为Digital  Twins数据双胞胎等新型工业互联网应用软件的部署奠定了基础。使用这些软件设计、开发和生产新产品将有助于促进企业创新和提高生产率。  4、物联网数据创收  创新型企业已经开始利用从物联网数据中获得的洞察力开发新产品和服务。在产品的生命周期内,售后和服务比原始购买更有利可图。开源工业物联网云平台可以在产品生产和使用的各个阶段捕获和分析数据。这使您能够创建新的以数据为中心的服务,并开发新的基于数据的产品。  5、提高物联网安全性  众所周知,网络设备缺乏企业级安全性。工业互联网传感器等设备除了某些通知操作外,几乎没有计算能力,无法提供多层安全。开源工业物联网云平台提供安全认证和认证等所有身份管理功能,确保互联网端点免受网络攻击。另一方面,开源工业物联网云平台将石油和天然气、公共设施、制造业等行业的机械和设备连接起来。在工业互联网部署中,系统故障和停机会导致高风险情况,甚至危及生命。产业互联网应用也比以用户为中心的物联网应用更注重提高效率、改善健康或安全。 --- ### 798. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工业互联网( IoT  )使用智能传感器和驱动器改善制造和工业流程。 工业互联网也称为工业互联网或工业4.0,利用智能机器和实时分析功能,利用工业环境中多年产生的数据。 工业互联网的动力在于智能机器不仅在实时数据采集和分析方面比人类更好,而且在传递重要信息方面也更好。此信息可用于更快、更准确地推进业务决策。那么,工业物联网云平台趋势与优点是什么?   连接的传感器和执行器,企业可以更快地识别效率低下和问题,节约时间和资金,支持商业智能。 特别是制造业,工业物联网在质量管理、可持续发展、环保实践、供应链可追溯性、整体供应链效率等方面具有巨大潜力。 在产业环境下,产业物联网是预测性维护( PdM  )、强化现场服务、能源管理、资产跟踪等流程的核心。  产业互联网是如何运作的?  尖端设备和智能资产将信息直接传输到数据通信基础设施中,其中信息被转换为特定机器工作方式的可操作信息。此信息可用于预测维护,也可用于优化业务流程。  工业互联网基础设施组件包括互联网或边缘网关、传感器、执行器和边缘节点。什么行业在使用工业品互联网?  很多产业都在使用工业品互联网。汽车产业是在制造过程中使用工业互联网设备的例子。工业机器人在汽车行业应用广泛,工业物联网云平台趋势有助于积极维护这些系统,并在潜在问题可能损害生产之前将其发现。  农业行业也广泛使用工业物联网设备。 工业传感器收集土壤养分、水分等数据,帮助农民生产最佳作物。  石油和天然气行业也在使用工业互联网设备。 一些石油公司拥有自动驾驶仪,可以利用视觉和热成像技术检测管道的潜在问题。 将此信息与其他类型传感器的数据组合,以确保操作安全。  工业物联网云平台趋势与优点是什么?  工业互联网设备在制造业中使用的最大好处之一是可以实现可预测的维护。 组织可以使用工业互联网系统产生的实时数据预测何时需要服务器。 这样可以在故障发生之前执行必要的维护。 机器故障会导致停机时间和巨大的成本,因此对生产线特别有用。 通过积极解决维护问题,组织可以提高运用效率。 另一个好处是更高效的现场服务。 工业互联网技术可以帮助现场服务技术人员在客户的设备潜在问题成为重大问题之前识别问题,并在技术人员给客户带来不便之前解决问题。 这些技术还向现场服务技术人员提供需要修理的部件的信息。 这样,技术人员可以在拨打服务电话时携带所需的部件。   资产追踪是工业物联网云平台趋势的另一个好处。供应商、制造商和客户可以使用资产管理系统跟踪整个供应链中产品的位置、状态和状态。 如果货物有损坏或损坏危险,系统会立即向相关人员发出警报,并提供立即或采取预防措施纠正情况的机会。 --- ### 799. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工业互联网(IoT)、人工智能(AI)、增强/虚拟现实(AR/VR)、数字双胞胎、数字线 程、程等第四次工业革命带来的但是,在这些技术中,不会有与IoT并肩作战对很多人来说,智能制造和物联网工业物联网平台几乎是同义词。 说到智能制造,人们很快就会开始谈论IoT。 在智能制造领域,IoT无处不在,在大多数智能制造解决方案中都能看到。 以下简要介绍了物联网工业物联网平台的优点具体体现在哪些方面。  1.智能优点  物联网工业物联网平台最大的优点之一是能够为广泛的智能制造解决方案奠定基础。机器学习(ML)、人工智能、大数据、分析、制造执行系统(MES)、企业资源规划(ERP)、数字双胞胎、数字线 程和许多其他应用程序程   另一大优势是可以利用现有技术进行扩展。 机对机通信、传感器和传感器数据、自动化和控制系统都是其中的一部分,已经存在很久了,据说它并不是什么新鲜事。 它还与MES和ERP等信息系统连接,以进行交易、提供数据、推进分析和支持实时可视性。  最后,真正优势是上述所有内容。提供支持多种物联网应用程序的通信平台。充分利用现有技术作为补充解决方案,而不是竞争解决方案。与大多数公司已经拥有的大型信息系统相关联。  2.基本能力优势  在底层,物联网产业物联网平台用作设备、机器、控制器、数据库、信息系统和人员之间提供通信主干的中间件。 基本功能用于监控、管理和维护连接的设备和系统。 还支持按需要大量数据(例如传感器数据)的系统和应用程序程顺序实时传输。换句话说,是几乎所有边缘对象(如传感器、设备、机器和控制器)和所有面向用户的应用程序程序列(如HMI、MES、ERP、企业制造)之间的基本接口或中间件信息(EMI)。许多平台和解决方案超越了接口和中间件的基础,为数据收集、数据聚合、数据可视化和数据分析提供了非常复杂的功能。 同样,一些平台还提供警报和警报解决方案、MES和ERP内置接口、数据发布功能、仪表板、分析和报告工具。  一些物联网工业物联网平台提供的最新功能之一是,为了进行分析,可以将各种传感器、设备、机器和控制器数据及其上下文发布到几乎所有外部系统。这些功能通常独立于应用程序程序列和系统,通常支持基于消息的异步事件处理和发布。所有这一切都是一个很好的解决方案,使您无需不断轮询数据以查找更改,即可获得所需的数据。  3.智能对象优势  另一项新功能是智能AI对象。智能AI对象用于封装制造和机械操作的主要方面(配方、配置、工具和状态等),并将这些智能AI对象构建到基于对象的AI数据模型中。此后,该模型很普遍,任何需要数据的地方都可以使用或重复使用这些智能AI对象。 --- ### 800. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着技术水平的不断变化,企业数字应用程序更多地使用了尝试IIOT的技术方式组合和定制应用场景。随着技术实现方式和应用场景的逐渐清晰,这些应用场景可以标准化,成为“具有IIOT功能的标准化应用程序”,即“工业互联网应用程序”。 工业物联网控制平台由网络、管理组件和应用组件组成。网络通过底层托管网络将接入层的各种信息传输到管理组件。管理组件为用户提供了可视化的系统管理、部署平台,为用户快速构建网络APP系统的总体结构,支持整个互联APP系统的运行提供了技术基础,主要实现快速数据分析和事件处理功能。应用程序组件为用户提供了可视化数据显示平台,包括实时数据显示、数据比较、相关性等基本数据分析结果显示以及事件警报。应用程序组件为用户提供了各种明确定义的大数据应用程序API,使用户能够轻松调用或集成,并提供了实现自定义应用程序模块访问平台的开放API接口。 工业物联网怎么定义?广义上说,工业物联网是在制造和工业环境中将联网的仪器、传感器和其他设备与机器和过程连接起来的实现。这种定义很容易让人先想到技术,但产业物互联网的强大之处在于其应用实例。创新产业互联网应用通过自动化、连接性和分析提高运营效率。只有在工作的正确位置成功部署工业物联网应用程序,才能完全实现工业物联网的优势。  工业物联网控制平台应用组件的价值主要体现在为用户提供模块化云服务系统,用户需要做的可能是功能上的集成和裁剪。应用层是一个将平台功能与实际产业相结合的完整应用系统,它根据实际应用案例提供了用户可以直接使用的一些常用应用模型框架,并提供了复杂的应用定制服务。  工业物联网控制平台的web端云平台主要由配置管理系统、权限管理系统、监控系统、数据分析系统、警报管理系统组成,其作用如下:  1)配置管理系统:用户通过配置管理系统,在云中为物理网桥上的每个收集点创建虚拟网桥 (包括网桥配置、数据收集配置、传感器配置和参数配置)。  2)权限管理系统:赋予桥梁管理部、养护部等多个单位不同的管理权限。 主要是功能权限和数据权限。  3)监控系统:通过实时监测和历史查询两种方式对环境主题、变形主题、应力/变形主题、振动主题进行监测。  4)数据分析系统:结合桥梁领域知识,对传感器采集和人工采集的各种定量定性数据进行统一的数据处理分析,基于预警评估模型,得到桥梁安全状况评估和预警报告。 5)报警管理系统:系统运行过程中,结合综合监测数据和报警信息,查询报警设备位置及相关信息,启动应急管理流程提示。 --- ### 801. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 Industry 4.0 concept . Man hand holding tablet with performance check screen software and blue tone of automate wireless Robot arm in smart factory background 工业物联网络平台是工业物联网络软件,用于安全管理工业物联网络生态系统中的所有互联人员、系统和对象。那么,它的特点是什么?  一、什么是工业物联网开放平台  在定义工业物联网络平台时,应该认识到物联网络创造了新的整合水平。随着数以千计的工业物联网络设备连接到网络,企业比以往任何时候都需要管理更多的端点。但这不仅仅是设备问题。实际上是由人、系统和物体组成的数字生态系统。这需要安全高效地管理该生态系统的所有元素。工业物联网开放平台完美地集成了设备和企业应用程序,使数据能够在互连的人、系统和对象之间无缝、安全地移动。 工业物联网开放平台的功能包括:  1.设备集成  这包括配置、管理和处置所有设备,如工业物联在线传感器、执行器、标签和信号。工业物联网络平台需要自动摄取物联网络数据,使其可用于网络的其他元素。  2.数据整合  工业物联网络的价值在于它必须能够捕获、整合和管理数据。工业物联网开放平台将新的物联网络主机与现有的APP应用数据和其他源的数据(如社交媒体)相关联并搜索相关性。  3.过程集成  作为数字生态系统的一部分,工业物联网络元素与业务运营不分离。 工业物联网络解决方案必须纳入企业的业务流程和工作流程中。 因此,工业物联网开放平台将物联网络业务逻辑集成到其他后端系统中,并将物联网络数据分发到工作流管理中,以整合物联网络解决方案、业务流程和工作流。 4.生态系统服务  工业物联网开放平台可安全地构建、启动和管理数字生态系统中人员、设备、数据和设备的可靠交互。  二、工业物联网开放平台的类型是什么?  开发工业物联网开放平台的最初目的是管理和控制工业物联网络设备和数据,但为了适应多种使用情况,开发了多种类型的平台。实际上,虽然很难对工业物联网开放平台进行分类,但供应商正在改进平台产品,以满足客户需求和特定业务需求。  工业物联网开放平台提供了多种功能组合,包括管理和连接工业物联网络端点、捕获、收集和处理物联网络数据、数据可视化和分析,以及将物联网络数据集成到业务流程和任务中。 比较不同类型的平台时,需要与业界物联网络的解决方案保持一致,具体取决于组织的业务需求和特定的IT基础架构。  三、工业物联网开放平台的特点是什么? 因此,最佳的工业物联网开放平台因组织而异,单个平台功能集无法为每个使用情形提供足够的解决方案。但是,所有行业物联网络平台的特点如下:  1.安全性是工业物联网络平台的核心,必须保护所有物联网络端点不受外部网络攻击,并应对组织内可能发生的恶意活动。  2.连接性,每个行业物联网络设备都需要快速安全地进行配置,并管理生命周期的所有阶段,包括按需配置、注册、激活、暂停、不暂停、删除和重置时的跟踪和批准。 --- ### 802. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 随着互联网的迅速发展,越来越多的企业加入这个大家庭。个人和企业也需要建立自己的网站,目前广泛使用了云计算、云存储、云主机、云平台等多种云技术。在接下来,我们将一起看一下plc上云平台的优点和云平台的特点。  一、什么是云平台  云平台是云计算的平台,而部署云计算时使用虚拟化的基础架构层和未使用的基础架构层有很大区别。资源部署是虚拟机的部署和配置过程,后一种资源部署的主要过程是从操作系统到上层应用程序的整个软件堆栈的部署和配置。  二、plc上云平台的特点 (1)服务无处不在:只要有具备基本计算功能的计算设备和有效的互联网连接,就可以随时随地使用服务。从这个意义上说,所有联网的应用程序都有成为云计算平台的潜力。 (2)持有进入费用:用户需要使用服务,但没有独立提供服务的经济或技术条件。例如,一些企业需要定期进行大规模计算,但不值得购买具备大规模计算功能的计算设备。超级计算中心开发客户群,使多个用户能够分担超级计算机的成本,使用户无需拥有计算设备,即可以更低的成本完成计算任务。 (3)用户决定使用:云计算平台提供处理器、内存、存储、网络接口等计算功能,但不关心用户的应用类型。用户可以利用云计算平台提供的计算能力,充分考虑云计算平台设置的(技术和经济性)限制,开发多种应用程序。 三、plc上云平台的优点是什么 1.容易扩展,可扩展性是指系统通过对资源进行合理的云调整来应对负载变化的特性,从而保持性能的一致性。对于基于虚拟化技术的云计算平台,可以对虚拟机资源进行适当的调整,以实现系统可扩展性。 2.高可用性、可用性是系统在一段时间内正常工作的时间与总时间的比率。在云计算环境中,节点故障是比较常见的情况,因此需要一定的保障机制,以便在故障后快速恢复系统。因此,可以继续提供服务。 3.负载平衡,在云计算平台上,某些节点在特定时间点的负载可能特别高,而其他节点的负载可能太低。一个节点的负载高会影响该节点的父应用程序性能。 4.提高资源利用率。在大型群集环境(如云计算)中,每个节点的负载在任何时候都不一致。 很多人想知道云平台的优点。小编表示,云平台具有可扩展性、高可用性、负载平衡等优点,还可以提高资源利用率。 在大数据时代的今天,面对越来越多的数据处理要求,企业的IT运营维护成本也在急剧增加。每个企业都在寻找适合自己的安全可靠的降低成本IT解决方案。此外,传统企业的数字转换挑战也越来越强,需要更敏捷的基础设施。因此,plc上云平台是自身发展的需要,也是时代发展的必然。 --- ### 803. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工业物联网云服务平台具有收集信息、在线工作、异地协作、远程服务的优势。面对传染病的严峻形势和企业复工的迫切需求,国内工业物联网云平台企业加快构建适用于工业企业、医疗机构的工业APP,帮助企业实现高效、方便、在线、协同的工作模式,减少传染病的影响。  工业物联网云服务平台为互联网、云计算、工业大数据技术、制造企业建立云数字工厂,为企业运营提供实质性、可靠的数字信息支持,进行数字控制和资源管理,收集分析历史信息,根据数据分析结果构建业务决策和优化的技术和方法。  工业物联网云是未来工业的神经中枢,使技术进步走向应用。纵向来看,产业物联网由三个主要体系组成:网络体系是互连使用的基础。安全系统是全面保护的保证。平台系统是用于将数据转换为有价值的信息的核心。工业物联网云是未来工业的神经中枢,多方面的技术进步促其逐步走向应用。  工业物联网云服务平台解决方案供应商,对工业现场设备进行远程管理,遵守“365×24小时”全天候管理模式,实时管理核心设备,在设备出现故障时及时与现场负责人沟通处理,帮助客户解决无人值守、少部分没有经费的设备管理问题。实现工业智能诊断和信息可视化落地,支持远程智能运输和预测维护服务,解决制造过程中设备维修检查、技术支持、现场培训问题。  工业物联网云服务平台正在帮助企业进行数字化改造,帮助企业升级生产模式,提高质量,提高效率,降低成本。在设计研发环节,通过实现在线研发,有助于缩短研发周期,在生产制造过程中,有助于提高生产效率,加快物资流通。在经营管理过程中,有助于降低管理成本,确保员工的安全。在运维服务过程中, 工业物联网云服务平台结合企业的商业模式,有效提高了产品价值。  工业物联网云服务平台开发的特点是什么?  最好的产业互联网平台取决于组织,单个平台功能集无法为每个使用案例提供足够的解决方案。但是,所有行业互联网云平台都必须具备以下功能:  一体化是工业物联网面临的最大挑战之一。利用产业互联网平台,可以与各种企业应用软件、云服务、移动APP和现有系统无缝安全地连接和共享信息。  认识,工业物联网云服务平台可以支持最广泛的物联网设备。工业互联网体系结构中的任何地方都可以自动检测互联网设备的存在,建立安全连接,快速设置设备凭据,或者在需要时自动部署。  分析,物联网设备大大增加了组织内的数据量。产业互联网分析应该是产业互联网云平台最强大的功能之一。能够适当地可视化和分析行业互联网数据,从而提出切实的见解,以改善数据驱动的决策。 --- ### 804. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 plc组态是对硬件进行配置,简单来说,就是告诉你系统配置了什么,这样系统就可以连接你的东西了。PLC控制取代继电器控制,提供更方便、更灵活的控制,并节省占用空间。  在早期工业生产过程中,继电器建立的控制系统成为工业生产领域的第一个控制系统,并得到越来越广泛的应用,但随着生产规模的扩大,继电器控制系统越来越难以适应现代工业生产的要求。 如体积大、功耗大、可靠性差、寿命短、运行速度慢、适应性差等。在这种情况下,plc物联网组态技术诞生了。这种新型工业控制装置具有体积小、可变性高、可靠性高、寿命长、易于理解、操作维护方便等一系列优点,在美国的许多行业得到了迅速的推广和应用。  plc物联网组态技术给制药设备的运行和维护带来了新的发展。  在制药行业,生产过程往往比较简单,单个设备规模小,所以企业大多使用手动操作、过程数据现场仪表测量。但是,随着对药品质量、生产设备安全性的要求不断提高和劳动者劳动强度的提高,PLC自动化控制系统得到了有效的应用。而且,随着对数据要求的提高,PLC物联网技术受到越来越多企业的重视。  plc物联网组态技术在数控机械中的应用 随着互联网的发展,越来越多的用户希望通过互联网诊断和维护设备,减少了维护工程师到达现场的时间和成本,节约了大量的人力和物力成本,同时也为客户提供了更快的服务,减少了客户的损失,通过通远程下载网关对客户的了解,通过云设备快线远程编程和监控数字控制机器的核心控制器PLC,数字控制机器的远程  plc物联网组态技术远程监控造纸废水处理系统  造纸工业是能源消耗和水消耗高的行业,是环境污染严重的行业之一。造纸工业废水排放量大,废水中SS、COD浓度高,纤维悬浮物多,对环境和人类健康造成了很大危害。为了解决水货通博联企业中出现的这些问题,开发了基于PLC远程监控的造纸废水处理系统。通过PLC远程监控、云平台或监控软件了解现场情况、更科学合理的处理流程、提高生产率和生产率。PLC技术结构不断改善,功能越来越完善。  PLC网络控制是当前控制系统和PLC技术发展的趋势。PLC和PLC之间的网络通信、PLC和主机计算机之间的网络通信被广泛使用。各种编程语言的共存、完善和发展是PLC软件进步的趋势。能源效率是未来自动化发展的方向。现在,PLC自己的模板可以提供节能功能,PLC系统正在朝着便于大规模数据收集、高能效、按需生产的方向发展。未来的plc物联网组态和工业控制系统将更加容易操作、智能、维护,从而节省能源效率,实现按需生产的未来自动化目标。随着自动化的发展,各厂家都非常重视PLC控制器的通信功能,推出了各自的网络系统,新的PLC控制器都有通信接口,通信非常方便。 --- ### 805. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 plc物联网云平台的发展正在慢慢展开,它是数字经济和工业经济之间的桥梁。工业物联网平台是工业4.0的核心,数据是整个平台的基础。那么,plc物联网云平台数据从哪里来?   就工业而言,工业大脑PLC或其他工业控制器是制造业和其他控制行业实现自动控制的基础。智能网关采集PLC  点表数据(远程下载),通过不同的通信手段将数据采集到云平台进行存储和计算。作为边缘层网关,不言而喻。它是工业设备和物联网云平台之间的桥梁和翻译。它将机器的不同变量和参数反馈到云平台,并在不同的终端上可视化显示。   如何传输数据?   随着信息时代的到来,通信技术的发展和物联网技术的成熟,实现全球远程控制已经成为现实。plc物联网云平台网关支持多种通信手段:全网通 4g、以太网、串口、wifi等。然后将链路层采集的数据包通过TCP/IP协议传输到集中式云服务系统,进行数据分析、分类管理、数据展示等云计算技术,再通过不同的终端展示数据。   数据有什么用? 经过一系列的数据来源,plc物联网云平台的计算是这个工业物联网平台的技术核心。网关在获取数据中的作用是什么?平台的功能分为两类: 1.直接功能:通过数据判断设备运行状态,远程监控。 2.附件价值:通过运行设备的统计数据,可以提高设备的效率,改善生产工艺,对于企业来说,可以提高设备的利用能力,降低管理运营成本。  plc物联网云平台市场功能盘点: plc物联网云平台本质上是网站平台。主要功能是存储工业设备的数据信息,记录设备运行的参数信息,实现工业设备的远程监控和远程调试功能。  1.实时监控和警报推送:通过PC和手机首次了解设备的操作数据和警报状态、发送说明和修改参数  2.设备管理和权限分类:通过平台添加、删除、修改设备、存储设备参数信息、设备维护的精细流程管理、不同人员的视图/任务分类。  3.PLC远程调试:结合御控云网关,实现VPN本地联网和PLC远程调试。  4.免费配置:通过拖动常规组件,无需技术人员干预即可开发监控屏幕。  5.在线视频:支持在线视频访问、查看和播放故障设备的视频、在线监控安全和火灾、监控设备巡逻的轨道。  6.完善的管理工具:包括售后管理工具、设备管理工具、客户管理工具、流程管理工具、能效分析工具、无人值守组件、项目进度组件等。   7.大数据分析工具:在不同的工作条件下,通过同类设备的运营数据比较和数据挖掘积累的大量数据构建产业模型,故障是根据积累的大量案例推送可能的原因和解决方案。  plc物联网云平台除了标准版外,还可以根据用户开发新功能私有云平台。可以根据客户设备和项目要求定制开发,以满足不同用户的需求。 --- ### 806. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 物联网(Internet of Things,简称IoT)是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。 物联网设备是非标准计算设备,可有线/无线连接到网络并具有传输数据的能力。 物联网涉及将互联网连接范围从台式机,笔记本电脑,智能手机和平板电脑之类的标准设备扩展到任何范围的传统“哑”或未启用互联网的物理设备和日常物品。这些设备嵌入了技术,可以通过Internet进行通信和交互。它们也可以被 远程监视和控制。 连接的设备是生态系统的一部分,在该生态系统中,每个设备都与环境中的其他相关设备通信以自动执行家庭和行业任务。他们可以将可用的传感器数据传达 给用户,企业和其他预期的各方。 这些设备可以分为三大类:消费类,企业类和工业类。 消费者连接的设备包括智能电视,智能扬声器,玩具,可穿戴设备和智能电器。 例如,在 智能家居中,设备旨在感应和响应人的存在。当一个人回到家中时,他们的汽车与车库连通以打开门。进入室内后,温度调节器已经被调整到其首选温度,并且照明设置为较低的强度和颜色,因为他们的智能手表数据表明这是一个充满压力的日子。其他智能家居设备包括根据天气预报调整洒水量的洒水装置和了解最经常清洁房屋区域的机器人真空吸尘器。 企业物联网设备是旨在供企业使用的边缘设备。有各种各样的企业物联网设备可用。这些设备的功能各不相同,但往往倾向于维护设施或提高运营效率。一些选项包括智能锁,智能恒温器,智能照明和智能安全性。 这些技术的消费者版本也存在。 在企业中,智能设备可以帮助举行会议。位于会议室中的智能传感器可以帮助员工确定和安排会议可用的房间,确保可以使用合适的房间类型,大小和功能。当与会人员进入会议室时,温度将根据占用情况进行调整,随着屏幕上适当的PowerPoint加载,灯光将变暗,并且演讲者开始演示。 消费者,企业和工业物联网设备的示例包括装配在会议室和装配线机器上的智能电视和智能传感器。 工业物联网设备旨在用于工厂或其他工业环境。大多数工业物联网设备是用于监视装配线或其他制造过程的传感器。 来自各种类型传感器的数据将传输到监视应用程序,以确保关键流程处于最佳运行状态。这些相同的传感器还可以通过预测何时需要更换零件来防止意外停机。 如果发生问题,系统可能能够将通知发送给服务技术人员,以告知他们出了什么问题以及解决问题所需的部件。这样可以避免技术人员到现场诊断问题,然后再去仓库获取解决问题所需的零件。 物联网设备如何工作? 物联网设备在功能方面有所不同,但是物联网设备在工作方式上有一些相似之处。首先,物联网设备是旨在以某种方式与现实世界进行交互的物理对象。该设备可能是装配线上的传感器或智能监控摄像头。无论哪种情况,设备都可以感知物理世界中正在发生的事情。 该设备本身包括集成的CPU,网络适配器和固件,通常在开放源代码平台上构建。在大多数情况下,物联网设备连接到动态主机配置协议服务器,并获取该设备可用于在网络上运行的IP地址。某些物联网设备可通过公共互联网直接访问,但大多数设计为仅在专用网络上运行。 尽管不是绝对要求,但许多物联网设备是通过软件应用程序配置和管理的。但是,某些设备具有集成的Web服务器,因此不需要外部应用程序。 关键技术 射频识别技术 谈到物联网,就不得不提到物联网发展中备受关注的射频识别技术(Radio Frequency Identification,简称RFID)。RFID是一种简单的无线系统,由一个询问器(或阅读器)和很多应答器(或标签)组成。标签由耦合元件及芯片组成,每个标签具有扩展词条唯一的电子编码,附着在物体上标识目标对象,它通过天线将射频信息传递给阅读器,阅读器就是读取信息的设备。RFID技术让物品能够“开口说话”。这就赋予了物联网一个特性即可跟踪性。就是说人们可以随时掌握物品的准确位置及其周边环境。 传感网 MEMS是微机电系统( Micro - Electro - Mechanical Systems)的英文缩写。它是由微传感器、微执行器、信号处理和控制电路、通讯接口和电源等部件组成的一体化的微型器件系统。其目标是把信息的获取、处理和执行集成在一起,组成具有多功能的微型系统,集成于大尺寸系统中,从而大幅度地提高系统的自动化、智能化和可靠性水平。它是比较通用的传感器。因为MEMS,赋予了普通物体新的生命,它们有了属于自己的数据传输通路、有了存储功能、操作系统和专门的应用程序,从而形成一个庞大的传感网。这让物联网能够通过物品来实现对人的监控与保护。 遇到酒后驾车的情况,如果在汽车和汽车点火钥匙上都植入微型感应器,那么当喝了酒的司机掏出汽车钥匙时,钥匙能透过气味感应器察觉到一股酒气,就通过无线信号立即通知汽车 “暂停发动”,汽车便会处于休息状态。同时“命令”司机的手 机给他的亲朋好友发短信,告知司机所在位置,提醒亲友尽快来处理。不仅如此,未来衣服可以“告诉”洗衣机放多少水和洗衣粉最经济;文件夹会“检查”我们忘带了什么重要文件;食品蔬菜的标签会向顾客的手机介绍“自己”是否真正“绿色安全”。这就是物联网世界中被“物”化的结果 [1] 。 M2M系统框架 M2M是Machine-to-Machine/Man的简称,是一种以机器终端智能交互为核心的、网络化的应用与服务。它将使对象实现智能化的控制。M2M技术涉及5个重要的技术部分:机器、M2M硬件、通信网络、中间件、应用。基于云计算平台和智能网络,可以依据传感器网络获取的数据进行决策,改变对象的行为进行控制和反馈。拿智能停车场来说,当该车辆驶入或离开天线通信区时,天线以微波通讯的方式与电子识别卡进行双向数据交换,从电子车卡上读取车辆的相关信息,在司机卡上读取司机的相关信息,自动识别电子车卡和司机卡,并判断车卡是否有效和司机卡的合法性,核对车道控制电脑显示与该电子车卡和司机卡一一对应的车牌号码及驾驶员等资料信息;车道控制电脑自动将通过时间、车辆和驾驶员的有关信息存入数据库中,车道控制电脑根据读到的数据判断是正常卡、未授权卡、无卡还是非法卡,据此做出相应的回应和提示。另外,家中老人戴上嵌入智能传感器的手表,在外地的子女可以随时通过手机查询父母的血压、心跳是否稳定;智能化的住宅在主人上班时,传感器自动关闭水电气和门窗,定时向主人的手机发送消息,汇报安全情况 [1] 。 云计算 云计算旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的完美系统,并借助先进的商业 模式让终端用户可以得到这些强大计算能力的服务。如果将 计算能力比作发电能力,那么从古老的单机发电模式转向现代电厂集中供电的模式,就好比大家习惯的单机计算模式转向云计算模式,而“云”就好比发电厂,具有单机所不 能比拟的强大计算能力。这意味着计算能力也可以作为一种商品进行流通,就像煤气、水、电一样,取用方便、费用低廉,以至于用户无需自己配备。与电力是通过电网传输不同,计算能力是通过各种有线、无线网络传输的。因此,云计算的一个核心理念就是通过不断提高“云”的处理能力,不断减少用户终端的处理负担,最终使其简化成一个单纯的输入输出设备,并能按需享受“云”强大的计算处理能力。物联网感知层获取大量数据信息,在经过网络层传输以后,放到一个标准平台上,再利用高性能的云计算对其进行处理,赋予这些数据智能,才能最终转换成对终端用户有用的信息 。 应用 物联网的应用领域涉及到方方面面,在工业、农业、环境、交通、物流、安保等基础设施领域的应用,有效的推动了这些方面的智能化发展,使得有限的资源更加合理的使用分配,从而提高了行业效率、效益。 在家居、医疗健康、教育、金融与服务业、旅游业等与生活息息相关的领域的应用,从服务范围、服务方式到服务的质量等方面都有了极大的改进,大大的提高了人们的生活质量; 在涉及国防军事领域方面,虽然还处在研究探索阶段,但物联网应用带来的影响也不可小觑,大到卫星、导弹、飞机、潜艇等装备系统,小到单兵作战装备,物联网技术的嵌入有效提升了军事智能化、信息化、精准化,极大提升了军事战斗力,是未来军事变革的关键 [4] 。 智能交通 物联网技术在道路交通方面的应用比较成熟。随着社会车辆越来越普及,交通拥堵甚至瘫痪已成为城市的一大问题。对道路交通状况实时监控并将信息及时传递给驾驶人,让驾驶人及时作出出行调整,有效缓解了交通压力;高速路口设置道路自动收费系统(简称ETC),免去进出口取卡、还卡的时间,提升车辆的通行效率;公交车上安装定位系统,能及时了解公交车行驶路线及到站时间,乘客可以根据搭乘路线确定出行,免去不必要的时间浪费。 社会车辆增多,除了会带来交通压力外,停车难也日益成为一个突出问题,不少城市推出了智慧路边停车管理系统,该系统基于云计算平台,结合物联网技术与移动支付技术,共享车位资源,提高车位利用率和用户的方便程度。该系统可以兼容手机模式和射频识别模式,通过手机端APP软件可以实现及时了解车位信息、车位位置,提前做好预定并实现交费等等操作,很大程度上解决了“停车难、难停车”的问题 [4] 。 智能家居 智能家居就是物联网在家庭中的基础应用,随着宽带业务的普及,智能家居产品涉及到方方面面。 家中无人,可利用手机等产品客户端远程操作智能空调,调节室温,甚者还可以学习用户的使用习惯,从而实现全自动的温控操作,使用户在炎炎夏季回家就能享受到冰爽带来的惬意;通过客户端实现智能灯泡的开关、调控灯泡的亮度和颜色等等; 插座内置Wifi,可实现遥控插座定时通断电流,甚者可以监测设备用电情况,生成用电图表让你对用电情况一目了然,安排资源使用及开支预算;智能体重秤,监测运动效果。内置可以监测血压、脂肪量的先进传感器,内定程序根据身体状态提出健康建议; 智能牙刷与客户端相连,供刷牙时间、刷牙位置提醒,可根据刷牙的数据生产图表,口腔的健康状况; 智能摄像头、窗户传感器、智能门铃、烟雾探测器、智能报警器等都是家庭不可少的安全监控设备,你及时出门在外,以在任意时间、地方查看家中任何一角的实时状况,任何安全隐患。看似繁琐的种种家居生活因为物联网变得更加轻松、美好 [4] 。 公共安全 近年来全球气候异常情况频发,灾害的突发性和危害性进一步加大,互联网可以实时监测环境的不安全性情况,提前预防、实时预警、及时采取应对措施,降低灾害对人类生命财产的威胁。 美国布法罗大学早在 2013 年就提出研究深海互联网项目,通过特殊处理的感应装置置于深海处,分析水下相关情况,海洋污染的防治、海底资源的探测、甚至对海啸也可以提供更加可靠的预警。该项目在当地湖水中进行试验,获得成功,为进一步扩大使用范围提供了基础。利用物联网技术可以智能感知大气、土壤、森林、水资源等方面各指标数据,对于改善人类生活环境发挥巨大作用 [4] 。 --- ### 807. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 工业物联网是将具有感知、监控能力的各类采集、控制传感器或控制器,以及移动通信、智能分析等技术不断融入到工业生产过程各个环节,从而大幅提高制造效率,改善产品质量,降低产品成本和资源消耗,最终实现将传统工业提升到智能化的新阶段。从应用形式上,工业物联网的应用具有实时性、自动化、嵌入式(软件)、安全性、和信息互通互联性等特点。 工业物联网IIOT之所以重要,是因为它有助于企业更快更好地做出决策,它带来的变化也与许多企业正在进行的数字转型项目密切相关。 工业物联网IIOT不应该与消费者物联网混淆,但是消费物联网的核心理念与工业物联网IIOT基本相同:使用传感器和自动化来提高效率。 根据相关数据,到2025年,与全球工业物联网的连接数量将达到138亿,其中大中华区的连接数将达到41亿,约占全球市场的1/3。与此同时,根据工业和信息技术部的数据,中国工业物联网市场的年收入增长率约为25%,2018年超过3000亿元人民币。这表明物联网和工业物联网正迎来一个快速发展的时期。 工业物联网技术的研究是一个跨学科的工程,它涉及自动化、通信、计算机以及管理科学等领域。 工业物联网的广泛应用需要解决众多关键技术问题。 工业物联网所需技术: 传感器技术 价格低廉、性能良好的传感器是工业物联网应用的基石,工业物联网的发展要求更准确、更智能、更高效以及兼容性更强的传感器技术。智能数据采集技术是传感器技术发展的一个新方向。信息的泛在化对工业传感器和传感装置提出了更高的要求。具体如,微型化:元器件的微小型化,要求节约资源与能源;智能化:具备自校准、自诊断、自学习、自决策、自适应和自组织等人工智能技术;低功耗与能量获取技术:供电方式为电池、阳光、风、温度、振动等多种方式。 设备兼容技术 大部分情况下,企业会基于现有的工业系统建造工业物联网,如何实现工业物联网中所用的传感器能够与原有设备已应用的传感器相兼容是工业物联网推广所面临的问题之一。传感器的兼容主要指数据格式的兼容与通信协议的兼容,兼容关键是标准的统一。目前,工业现场总线网络中普遍采用的如Profibus、Modbus协议,已经较好地解决了兼容性问题,大多数工业设备生产厂商基于这些协议开发了各类传感器、控制器等。近年来,随着工业无线传感器网络应用日渐普遍,当前工业无线的WirelessHART、ISA100.11a以及wIA—PA3大标准均兼容了IEEE802.15.4无线网络协议,并提供了隧道传输机制兼容现有的通信协议,丰富了工业物联网系统的组成与功能。 网络技术 网络是构成工业物联网的核心之一,数据在系统不同的层次之间通过网络进行传输。网络分为有线网络与无线网络,有线网络一般应用于数据处理中心的集群服务器、工厂内部的局域网以及部分现场总线控制网络中,能提供高速率高带宽的数据传输通道。工业无线传感器网络则是一种新兴的利用无线技术进行传感器组网以及数据传输的技术,无线网络技术的应用可以使得工业传感器的布线成本大大降低,有利于传感器功能的扩展,因此吸引了国内外众多企业和科研机构的关注。传统的有线网络技术较为成熟,在众多场合已得到了应用验证。然而,当无线网络技术应用于工业环境时,会面临如下问题:工业现场强电磁干扰、开放的无线环境让工业机器更容易受到攻击威胁、部分控制数据需要实时传输。相对于有线网络,工业无线传感器网络技术则正处在发展阶段,它解决了传统的无线网络技术应用于工业现场环境时的不足,提供了高可靠性、高实时性以及高安全性,主要技术包括:自适应跳频、确实性通信资源调度、无线路由、低开销高精度时间同步、网络分层数据加密、网络异常监视与报警以及设备入网鉴权等。 信息处理技术 工业信息出现爆炸式增长,工业生产过程中产生的大量数据对于工业物联网来说是一个挑战,如何有效处理、分析、记录这些数据,提炼出对工业生产有指导性建议的结果,是工业物联网的核心所在,也是难点所在。当前业界大数据处理技术有很多,如SAP的BW系统在一定程度上解决了大数据给企业生产运营带来的问题。数据融合和数据挖掘技术的发展也使海量信息处理变得更为智能、高效。工业物联网泛在感知的特点使得人也成为了被感知的对象,通过对环境数据的分析以及用户行为的建模,可以实现生产设计、制造、管理过程中的人一人、人一机和机一机之间的行为、环境和状态感知,更加真实地反映出工业生产过程中的细节变化,以便得出更准确的分析结果。 安全技术 工业物联网安全主要涉及数据采集安全、网络传输安全等过程,信息安全对于企业运营起到关键作用,例如在冶金、煤炭、石油等行业采集数据需要长时问的连续运行,如何保证在数据采集以及传输过程中信息的准确无误是工业物联网应用于实际生产的前提。 [2]  应用领域 制造业供应链管理 企业利用物联网技术,能及时掌握原材料采购、库存、销售等信息,通过大数据分析还能预测原材料的价格趋向、供求关系等,有助于完善和优化供应链管理体系,提高供应链效率,降低成本。空中客车通过在供应链体系中应用传感网络技术,构建了全球制造业中规模最大、效率最高的供应链体系。 生产过程工艺优化 工业物联网的泛在感知特性提高了生产线过程检测、实时参数采集、材料消耗监测的能力和水平,通过对数据的分析处理可以实现智能监控、智能控制、智能诊断、智能决策、智能维护,提高生产力,降低能源消耗。钢铁企业应用各种传感器和通信网络,在生产过程中实现了对加工产品的宽度、厚度、温度实时监控,提高了产品质量,优化了生产流程。 生产设备监控管理 利用传感技术对生产设备进行健康监控,可以及时跟踪生产过程中各个工业机器设备的使用情况,通过网络把数据汇聚到设备生产商的数据分析中心进行处理,能有效地进行机器故障诊断、预测,快速、精确地定位故障原因,提高维护效率,降低维护成本。GEOil&Gas集团在全球建立了13个面向不同产品的i-Center(综合服务中心),通过传感器和网络对设备进行了在线监测和实时监控,并提供了设备维护和故障诊断的解决方案。 环保监测及能源管理 工业物联网与环保设备的融合可以实现对工业生产过程中产生的各种污染源及污染治理环节关键指标的实时监控。在化工、轻工、火电厂等企业布署传感器网络,不仅可以实时监测企业排污数据,而且可以通过智能化的数据报警及时发现排污异常并停止相应的生产过程,防止突发性环境污染事故发生。电信运营商已开始推广基于物联网的污染治理实时监测解决方案。 工业安全生产管理 “安全生产”是现代化工业中的重中之重。工业物联网技术通过把传感器安装到矿山设备、油气管道、矿工设备等危险作业环境中,可以实时监测作业人员、设备机器以及周边环境等方面的安全状态信息,全方位获取生产环境中的安全要素,将现有的网络监管平台提升为系统、开放、多元的综合网络监管平台,有效保障了工业生产安全。  工业物联网IIOT的应用 如果把物联网在工业行业里的应用抽象出来,我们可以总结为四个层次: 数据的采集与展示、基础的数据分析与管理、深度数据分析与应用、工业控制。 ▶数据采集与展示:主要是将工业设备传感器上采集到的数据信息传输到云平台,并用可视化的方式将数据呈现出来。 ▶基础数据分析与管理:偏向于通用分析工具的阶段,不涉及基于垂直领域深入行业知识的数据分析,基于云平台采集到的设备数据,并产生一些SaaS应用,比如设备性能指标异常的告警、故障代码查询、故障原因的关联分析等。基于这些数据分析结果,也会有一些通用的设备管理功能,像设备的开关机、调整状态、远程锁机及解锁等,这些管理应用根据具体的领域需求而不同。 ▶深度数据分析与应用:深度的数据分析,则涉及到具体领域的行业知识,需要特定领域的行业专家来实施,具体根据设备的领域和特性建立数据分析模型。 ▶工业控制:工业物联网的目的就是能对工业过程实施精准控制。基于前述传感器数据的采集、展示、建模、分析、应用等过程,在云端形成决策,并转换成工业设备可以理解的控制指令,对工业设备进行操作,实现工业设备资源之间的精准的信息交互和高效协作。 工业领域包括众多垂直行业,每个行业的特性差异巨大,物联网与每个行业的结合,也都要根据行业自身特性来调整。虽然目前主要是由大型企业采用,但随着硬件和服务价格的下降,它可能会被更广泛地采用。 5G是工业物联网IIoT的最佳拍档 IIoT仍主要处于试验和试点阶段,只有少数大型制造商进行了大量投资。随着传感器变得更小巧和廉价,特别是5G网络更加普及后,5G大带宽、低时延、广覆盖的特点,使得一些传统4G网络无法实现的工业互联网场景在5G时代将成为可能,人们对IIoT的兴趣可能会继续增长。 例如,在港口码头,钢铁吊臂在码头和船只之间转移和装载大型货物,需要将时延、精度误差降低最低,同时能够第一时间察觉异常情况并在边缘侧迅速响应,这在过去只能是一种想象。又如,高温高危的钢铁厂亟需实现无人操作,且能将上千度的钢水瞬间精确倾倒,其时延需要低至数毫秒,这在4G时代也是天方夜谭。 您可能会有疑问:既然上述场景对网络时延和稳定性提出如此严苛的要求,那么为什么不采用稳定高速的有线方式?事实上,有线方式看似简单易行,实则问题重重。因为有线网络部署相对复杂,后续升级改造也涉及大量工作;而且有线网络的使用是条件限制的,而工业物联网环境复杂多样,有线网络并非能够布放到任何有需求的地方。相对而言,以5G为代表的无线网络是更加经济高效的连接方式。 工业领域的设备投入巨大,无论是机床、生产线,还是机械设备,生产过程中的故障导致的停工,往往会影响整条生产线,甚至整个产品交付周期。 为确保稳定性,工业领域的控制系统还是以本地为主,部署大量的硬件和软件系统。这一方面,导致整个控制系统非常复杂投入巨大,另一方面,也限制了系统的灵活性和可扩展性。在消费者需求日新月异的今天,生产系统的更新跟不上消费者需求的变化,也会导致错失很多新的机会。 此外,当前的移动通信系统在工业物联网领域的应用涉及并不深入,虽然4G在网速上已经有很大的提升,能满足用户随时观看视频的需求,但网络的可靠性和时延都还有很大的提升空间,并不能满足工业场景的要求。 4G在工业场景的应用,更多是在对实时性要求不高的场景里,作为数据上传到云端的一种方式。比如工厂里的机床设备,每5-10秒钟会采集一次数据,这些数据汇总一般会汇集到一个统一的终端,由终端通过4G发送到云平台。 工业领域对通信系统的这些需求,5G的技术标准可以很好的满足,极低的时延,保证了工业领域实时监测和控制的要求;高可靠的网络质量,确保了工业系统对稳定性的要求;大带宽则可以实现高清3D视频,甚至AR的传输,在远程操控领域大幅提高了操作精度。 对于工业领域来说,高可靠低时延的通信系统可以说是至关重要。一直以来工业物联网的应用只能停留在表层的数据采集展示和由此延伸出来的一些管理功能,很难涉及到工业系统的控制等核心领域,其中通信系统的稳定性和延时达不到要求是其中主要的制约因素。 在研究机构看来,IIoT的潜力不可限量。根据GSMA Intelligence发布的报告,未来电信行业5G与物联网的市场机会更多依赖于企业,而非个人用户。从物联网的角度来看,尽管目前消费电子产品和智能家居等场景是物联网的主力,然而未来企业市场的潜力不可限量。从制造业到电力行业,5G和物联网将创造新的机会,满足多种多样的企业需求。 --- ═══════════════════════════════════════════ ## 快速入门 ═══════════════════════════════════════════ ### 808. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 联调出问题,先看版本——屏固件版本、VisualHMI 软件版本、屏型号。版本不匹配是「功能没反应」「控件异常」这类玄学问题的头号原因。技术客服问你的第一句往往就是「你固件几版的」,答不上来排查就没法往下走。 1. 查看 VisualHMI 软件版本 菜单【工程】→【帮助】→【关于】,弹窗显示 IDE 版本号。和厂商确认问题时,软件版本号 + 屏固件版本号要一起报。 2. 查看屏固件版本(三条路径) 方式操作适用场景背面标签看实体屏背面标签,型号和固件版本印在上面(如 V127)屏还没装机/能摸到屏联机获取屏串口设 8N1,VisualHMI 联机成功后右下角显示版本号电脑能连屏寄存器查看数值控件关联 SysFWVer(LW0155),编译下载到屏上显示屏已装机,通过屏 UI 看 LW0155 是系统固件版本寄存器。系统区(LW 地址小于 0x1000)不要乱改,但只读显示没问题——这比拆屏看标签方便,尤其屏已经装进设备里的时候。 3. 为什么必须核对版本 不同版本的 VisualHMI 软件编出来的工程,对屏固件有最低版本要求。固件太老,工程里的新特性(某些控件、LUA 接口)根本跑不起来——表现就是「明明配了却不生效」「控件显示异常」。遇到这类怪问题,按顺序排查:屏固件版本是否 ≥ 工程要求版本(不够就去升固件,见「SD卡升级固件」)VisualHMI 软件版本与固件是否匹配(软件太老也可能不支持新固件特性)工程配置本身(协议、地址、机型)是否正确 4. 版本相关的典型现象对照 控件加了但屏上不显示 → 先查固件版本,再看控件属性LUA 脚本报错但语法没错 → 接口可能要求新固件软件里选不到屏型号 → 软件版本太旧,升级 VisualHMI 一句话:版本排查顺序是 固件 → 软件 → 配置。很多「bug」其实是固件版本没到,升一下就好,别在配置上瞎折腾半天。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「查看版本」,版权归大彩科技所有。 --- ### 809. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 虚拟屏是 VisualHMI 的招牌功能:不接真机,在电脑上把 UI 跑起来,再用虚拟串口和真实 PLC / Modbus 仿真软件联调。这篇把三种联调玩法讲透——尤其是做 Modbus 开发最常用的那套。 1. 先装虚拟串口对(VSPD) 虚拟屏和 VisualHMI 软件通过一对虚拟串口通信。用 VSPD(Virtual Serial Port Driver)创建一对关联串口(如 COM8 ↔ COM9),虚拟屏和软件各占一头。 虚拟串口不关心波特率/数据位/停止位/校验,只要是成对的一对就能通。编号别和实体串口冲突,尽量在 10 以内,否则会打架。 2. VisualHMI 和虚拟屏互调(DCBUS / XGUS) 这套玩法适合 DCBUS、XGUS 原生协议,步骤:运行虚拟屏,选虚拟串口 COM8,打开串口VisualHMI 软件选虚拟串口 COM9,点联机打开指令助手,协议选 DCBUS,配帧头 0xAA55、开 CRC、站号 0写变量:地址 1000、数据 0003;系统寄存器 0x0100 切画面写 0001 → 虚拟屏切到画面 1 XGUSII 模式切画面的系统寄存器是 0084(不是 DCBUS 的 0100);XGUS 帧头是 0x5AA5。两个协议的帧头/切画寄存器不一样,按你工程实际协议填。 3. 虚拟屏 + 第三方 PLC 模拟器(Modbus 最常用) 做 Modbus 项目,这套是你日常 80% 的调试姿势:屏当主机:用 Modbus Slave(模拟从机)连虚拟串口另一头,屏去读 4x0000 保持寄存器,Slave 里改值,屏上实时变屏当从机:用 Modbus Poll(模拟主机)去轮询屏,验证屏回的帧对不对 屏当主站、站号 1、读写 4x0000 的验证流程:Modbus Slave 里设好 4x0000 = 某值 → 虚拟屏挂上去 → 数值控件绑 4x0000 → 不用一根线就能看到「PLC」数据上屏。比接真 PLC 快十倍。 4. 虚拟屏 + 真实 PLC 设备 把 PLC 串口接到电脑(RS232 用 USB 转 232、RS485 用 USB 转 485、TTL 用 USB 转 TTL),虚拟屏选对应的物理串口和波特率,打开串口即可直接和 PLC 数据交互。少了反复下载屏幕程序的环节,调试效率明显提升。 三种场景怎么选:只调 UI/协议 → 虚拟屏+虚拟串口;调 Modbus 逻辑 → 虚拟屏+Modbus Slave/Poll;真机联调 → 虚拟屏+物理串口接 PLC。前两种不碰硬件,先把逻辑跑通。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「虚拟屏调试」,版权归大彩科技所有。 --- ### 810. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 固件是屏幕的底层系统,大彩会不断迭代优化、增加新功能。固件太旧会导致:工程里用了新特性却跑不起来、某些控件异常、LUA 新接口不可用。这篇讲怎么升级,以及最容易踩的命名坑。 1. 什么情况需要升级固件 工程里使用了较新的控件/LUA 接口,编译提示"固件版本过低"或运行异常屏出现已知 bug,厂商发布修复固件M 系列屏出厂默认不支持 VisualHMI,需要先升固件才能用 VisualHMI 开发 2. 获取固件并改名 屏固件比较旧时,联系大彩销售或技术人员获取新固件。只下载升级一次即可(固件升级是整体替换,不像工程要反复下)。以 HMI80480M070_1111_0C 为例,固件原文件名可能是 HMI80480M070_HMI.zlib。必须改名为 firmware.zlib,然后拷贝到 SD 卡根目录。 ⚠️ 不要命名为 “firmware.zlib.zlib”。多套一层后缀,屏识别不到固件,升级会失败。这是最常见的低级错误,改完名检查一遍后缀。 3. 下载流程 下载流程和下载工程完全一致:把 firmware.zlib 放到 SD 卡根目录屏幕断电,插入 SD 卡上电,屏幕自动进入升级界面,等待完成提示完成后自动加载,拔卡 4. 固件和工程一起下载 固件可以和工程一起下载:都放在 SD 卡根目录(firmware.zlib + private 文件夹),上电后一起更新,一次搞定。 5. 升级后的注意事项 升完固件,之前编的工程建议重新编译下载一次,避免新旧版本不兼容确认新固件和你用的 VisualHMI 软件版本匹配(看版本方法见「查看版本」篇)固件升级过程中不要断电,变砖风险主要来自中途断电 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「SD卡升级固件」,版权归大彩科技所有。 --- ### 811. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 串口下载适合单台调试:电脑用串口线直连屏,不拔卡、不插卡,点几下就烧录完。相比 SD 卡下载,串口下载不用准备 SD 卡,改完就下,适合开发阶段反复烧。前提是屏的串口参数满足联机条件——必须是 8N1。 0. 串口下载 vs SD 卡下载,怎么选 对比项串口下载SD 卡下载需要硬件串口线(USB转232/485)SD 卡联机条件屏串口必须是 8N1无(断电插卡上电)适用场景开发调试、单台升级量产、现场无电脑速度受波特率影响SD 卡读写,较快 简单说:自己调试用串口,给客户/量产用 SD 卡。 1. 联机 【工程】→【串口调试】,选择屏幕连接电脑对应的物理串口,点【联机】。联机成功后才能编译和下载。 实体屏串口设置必须是 8N1(8 数据位、无校验、1 停止位)才支持 VisualHMI 联机升级。屏上如果不是 8N1,先改屏的串口参数再联机。联机失败先查:串口号选对了吗?线是交叉线还是直连线?屏是 8N1 吗? 2. 编译 联机后点【工程】→【编译】,编译结果正常再进行下载。有错误先修,编译不通过不会进入下载。 3. 下载 编译通过后,【工程】→【量产向导】,弹出对话框下拉选择提升比特率,点【串口下载】。 波特率选择建议:RS485 建议 19200,RS232 建议 115200。速率越高下载越快,但要保证线路质量,现场干扰大就降一档。 ⚠️ 升级过程中屏幕会锁死:不能点击、也不能和 PLC 串口业务通讯。升级完成后自动恢复,别在中途断电拔线。另外,用户主板也支持升级屏幕——相关升级协议见「串口升级工程协议」文档。 4. 串口下载常见问题排查 联机失败:串口号不对 / 屏不是 8N1 / USB 转串口驱动没装好 / 波特率选错下载卡住不动:中途拔过线?重新断电上电再试;线路干扰换低波特率下载成功但屏黑屏:工程里选了错误的机型(分辨率和实体屏不一致)下载成功但通讯不上 PLC:屏的协议/波特率和 PLC 不一致,回【工程属性】核对 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「串口下载工程」,版权归大彩科技所有。 --- ### 812. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 SD 卡下载是量产和现场升级最常用的方式:不用电脑连着屏,把资源包拷进 SD 卡,插卡上电自动烧录。这篇把全流程和「增量升级」讲清楚。 1. 编辑 / 编译 在工程里改好画面和逻辑,点【工程】→【编译】。编译结果正常会显示成功提示;有错误的话编辑区会列出错误信息,先修完再继续。 2. 生成资源包(量产向导) 编译通过后,菜单【工程】→【量产向导】,弹出对话框点【SD卡下载】,生成下载资源包。 生成的结果里:private:真正的下载资源包,需要拷到 SD 卡两个 TXT 文件(《!!!Copy [private] directory to the root directory of SD Card.txt》《!!!直接复制private文件夹到SD卡根目录.txt》):纯提示用,没有实际意义,不影响升级ota.bin:OTA 打包文件,需要配合脚本做 OTA 升级时才用(见 LUA 教程「OTA 升级」) 把 private 文件夹整个拷到 SD 卡根目录,不能嵌套子文件夹。拷成 SD/private 而不是 SD/xxx/private,否则屏找不到包。 3. 下载(插卡上电) 屏幕断电 → 插入含资源包的 SD 卡 → 上电,屏幕自动进入升级界面,显示下载进度。显示「updata finished!」表示下载完成,屏会自动加载工程进入 UI 画面,此时可以拔掉 SD 卡。 不同工程下载显示的信息不一样:比如工程里有 1.mp3 音频,下载过程会显示 “write 3:/sound/1.mp3 (100%) ...”,这是正常的,别以为卡住了。 4. 增量升级(只更新改动的部分) 上面生成的是全量下载(整个工程重新烧)。调试阶段每次都全量太慢,VisualHMI 支持增量升级——只下载修改的部分。点【量产向导】,按你改了什么勾选:改了工程配置(如挪动控件位置、改工程属性)→ 勾选工程配置改了 LUA 脚本 → 勾选脚本文件 点【SD卡生成包】,这次会多出一个 noformat.txt 文件——它的作用是告诉屏「不要格式化,只替换 private 里打包的文件」。这个文件要一并复制到 SD 卡根目录,下载流程和全量一致。 增量升级三连问:勾对了选项吗?(改配置勾工程配置,改脚本勾脚本文件);noformat.txt 拷了吗?(漏拷会变成全量格式化,虽不影响功能但慢);SD 卡根目录吗?(嵌套路径不识别)。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「SD卡下载工程」,版权归大彩科技所有。 --- ### 813. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 这篇完整走一遍:从新建工程到虚拟屏预览、再到下载。跟着做一遍,你对 VisualHMI 的整个开发流程就有底了。以 HMI80480M070、Modbus RTU 与 PLC 通讯为例。 1. 创建项目 菜单【工程】→【新建】(或 Ctrl+N)。选择工程存储路径;根据实体屏选对应的分辨率和尺寸——实体屏是 HMI80480M070,就选 800×480 7寸。 VisualHMI 最大支持 999 个画面。新建工程默认自带两个键盘画面:全键盘画面101(800×480)和小键盘画面100(320×240)。 不同型号生成的键盘样式不一样;键盘也可自定义(见「自定义键盘」教程)。新建工程先别删默认键盘画面,后续输入控件要用。 2. 协议配置 【工程】→【工程属性】,右侧配置串口和协议。默认是 DCBUS 协议。假设 PLC 串口为 115200 波特率、7 数据位、偶校验、1 停止位、Modbus-RTU,屏幕为主机模式,按下图配置。 注意:如果走 Modbus,要确认 PLC 侧串口参数和屏完全一致;如果走 DCBUS/XGUS,只支持无校验+1停止位。 3. 新建画面 画面区右键画面 ID → 新建,默认生成纯色画面。右侧【画面属性】里背景可配置为:纯色、图片、透明、画面。配图片就选一张背景图。 4. 布局控件(绑定 PLC 寄存器) 以显示 Modbus 保持寄存器 0x0000 的值为例:添加【数值】控件到画面控件属性栏点"读取地址"——可以手动输入 4x0000,也可以选地址标签位置选:PLC 设备;数据类型选:4x(保持寄存器);16进制地址填:0000 这样控件就绑定到 PLC 保持寄存器 4x0000,屏会自动轮询读取并显示。 5. 虚拟屏预览 点击【工程】→【运行】(编译运行),VisualHMI 会先编译再弹出虚拟屏。虚拟屏的指令窗口会实时显示发出的指令——比如访问 4x0000 寄存器的读帧,可以直接验证协议对不对。 虚拟屏指令窗口是调试利器:能看到屏实际发出的每一帧,比对帧格式能快速定位协议配置错误(地址、功能码、CRC)。 6. 下载到实体屏 先编译通过,再【工程】→【量产向导】:串口下载(联机条件:屏串口 8N1,RS485 建议 19200 / RS232 建议 115200)或 SD 卡下载(生成资源包拷 SD 卡根目录)。 两种下载的详细步骤分别见「SD 卡下载工程」和「串口下载工程」两篇。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「创建工程」,版权归大彩科技所有。 --- ### 814. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 VisualHMI 是大彩自主开发的串口屏开发软件,内嵌"虚拟串口屏"(可以在电脑上模拟实体屏运行)。这篇把界面各区域、工程设置、地址范围讲透——地址范围是后面所有开发的基础,务必看懂。 1. 软件安装 按提示选择安装目录,一路 Next 完成安装。安装包通常随开发资料提供,也可在官网下载。 2. 打开软件界面 安装完成后打开已有出厂工程,界面如下。整体分:顶部菜单栏、左侧工程/资源区、中间设计区、右侧属性/画面区、底部调试区。 3. 工程区域 【工程】菜单负责项目管理:新建、打开、保存、另存为等。新建工程时要选分辨率和尺寸(对应实体屏型号)。 4. 工程设置(重点) 【工程】→【工程属性】打开系统设置面板,核心项如下: 设置项说明HMI 机型选择你的屏型号(如 HMI80480M070)Flash 大小默认 128Mbit,一般不用改启动画面上电自动加载的第一个画面屏幕旋转0°/90°/180°/270°;800×480 的屏 0°180° 出 800×480,90°270° 出 480×800多语言项数最大支持 30 种语言自动待机无触摸空闲到设定时间后自动节能波特率9600~921600bps,数据位 7~8,校验 奇/偶/无,停止位 1/2协议DCBUS、XGUS、Modbus(主/从)、FX2N、FX3U、台达、信捷、西门子 PPI 等安全登录配置权限管理,见「安全登录」教程 DCBUS / XGUS 协议只支持无校验 + 1 个停止位。如果你的 PLC 是 7 数据位/偶校验,要么用 Modbus,要么改 PLC 串口参数——这是现场最容易卡住的地方。 5. 地址范围(重中之重) VisualHMI 里有两套地址体系:HMI 本机变量和 PLC 设备地址。很多新手把两套混在一起,导致控件不刷新,先分清: HMI 本机(LW / RW 变量)类型地址范围(16进制)说明系统变量LW0100 ~ LW0FFF系统定义,如 SysFWVer=LW0155;其余保留勿用用户变量LW1000 ~ LWFFFF用户自由使用,可批量导入导出、加地址标签掉电存储变量RW0000 ~ RW7FFF断电不丢失,存参数/配方 PLC 设备(以 Modbus 为例)类型地址范围(16进制)对应 Modbus 区线圈0x0000 ~ 0xFFFF0x 线圈(可读写位)离散1x0000 ~ 1xFFFF1x 离散输入(只读位)输入3x0000 ~ 3xFFFF3x 输入寄存器(只读字)保持4x0000 ~ 4xFFFF4x 保持寄存器(可读写字) 控件里"读取地址"的写法就是 4x0000 这种:4x 表示 Modbus 保持寄存器区,0000 是 16 进制地址。选好 PLC 设备位置、数据类型、地址,控件就绑定了。 6. 编译 / 下载区 编译:检查工程错误,有错在编辑区显示错误信息编译运行:弹出虚拟屏,1:1 还原实体屏效果,可配合虚拟串口和软件联调量产向导:生成下载资源包,支持 SD 卡 / U 盘 / 串口三种方式升级 7. 资源区(图库/字库/键盘/声音/标签) 图库:除画面背景外所有图片资源都放这里字库:矢量字体任意大小无锯齿;多语言依赖字库是否含对应字符键盘:自定义键盘,最大 10 个声音:支持 wav/mp3,可做按键音、开机音乐、提示音文字标签:把多语言词条集中管理,控件引用标签即可,改词条一处生效地址标签:给 LW/RW/PLC 地址起有意义的名字(如"温度设定"),批量导入导出 8. 其它功能区 资料采样:同一时刻把不同寄存器数据形成一条记录,供数据记录控件/曲线显示告警设置:寄存器数值变化触发异常提示,支持告警/历史告警/告警条操作记录:用户操作控件的行为记录成表格配方设置:不同产品/不同工序用不同参数组,一键切换分期设置:设备分期付款场景,到期弹密码画面,输入当期密码才能继续用调试区:选串口与实体屏或虚拟屏联机调试、下载工具区:LUA 脚本编程、字库裁剪入口控件区:30+ 种组态控件(位状态灯、数值、文本、滑动条、仪表、二维码、视频等)布局区:控件对齐、间距、层叠、锁定、多语言预览视图区:缩放画面、显示控件地址/注释/ID/触控画面区:右侧,最多 999 个画面;新建工程默认含全键盘画面101(800×480)和小键盘画面100(320×240) 新手最容易忽略的:画面 100/101 是系统键盘,别删;地址标签用起来能省一大半调试时间;工程属性里的协议和波特率必须和设备实际一致,否则联机黑屏。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「软件界面」,版权归大彩科技所有。 --- ### 815. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 拿到一块大彩串口屏,第一件事是分清它属于哪个开发平台、哪个系列——这直接决定你能不能直接用 VisualHMI 开发、固件要不要先升级。这篇把型号怎么认讲清楚。 1. 支持 VisualHMI 的平台:HMI 系列 与 M 系列(医用级) 目前支持 VisualHMI 平台开发的系列有两类:HMI 系列和 M 系列(医用级)。医用级不是"更高级",而是指认证和用料面向医疗设备场景(电气安全、EMC 等级更高),开发方式一样。 2. M 系列必须先升级固件(重点坑) M 系列出厂默认不支持 VisualHMI,需要先升级固件才能用 VisualHMI 开发。也就是说,你手里如果是 M 系列屏,别急着建工程——先找业务或技术人员要对应固件升上去,否则软件里可能选不到型号或联机异常。 买屏之前先确认:你的屏是 HMI 系列还是 M 系列?固件版本够不够?M 系列默认不带 VisualHMI 支持,升固件要联系厂商,别等到工程做完才发现屏不认。 3. 型号命名怎么看(以 HMI80480M070 为例)注:以下拆解按大彩常见命名规律解读,具体以产品规格书为准。 型号本身就把关键信息写全了,拆开读: 型号段含义本例HMI开发平台HMI 平台80480分辨率800×480M系列M 系列(医用级)070屏幕尺寸7.0 英寸 所以 HMI80480M070 = HMI 平台、800×480、M 系列、7 寸屏。后缀如 _1111_0C 一般是批次/版本号,开发时按主型号选机型即可。 4. 选型时顺便确认的几件事 分辨率与画面方向:如 7 寸 800×480,屏幕支持 0°/90°/180°/270° 旋转,0°和 180° 出 800×480,90°和 270° 出 480×800——UI 要按实际使用方向出图串口电平:RS232 / RS485 / TTL 版本不同,接线和下载方式不一样固件版本:M 系列默认不支持 VisualHMI,确认是否需要升级 一句话总结:HMI 系列到手就能用 VisualHMI;M 系列先升固件。拿不准就拍屏背面标签给厂商确认。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)快速入门「型号认识」,版权归大彩科技所有。 --- ### 816. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 这篇把 VisualHMI 支持的协议挨个过一遍,重点放在Modbus RTU 主从模式和帧格式上——因为这是和 modbus.cn 读者最贴的部分,也是调试时最容易踩坑的地方。其他 PLC 协议(FX2N/台达/信捷/永宏)配置项大同小异,文末一并列了。 ⚠️ 铁律:同一路串口只能跑一种协议。 你不能在 UART1 上既挂 Modbus 又挂 DCBUS。多协议需求得靠硬件多路串口。 一、DCBUS 协议(大彩组态协议) DCBUS 是屏和自有主板对接常用的组态协议,帧结构如下: 字段长度说明 帧头2 byte默认 0xAA55,可自定义 站号1 byte默认 0,255 为广播 长度1 byte功能码+数据+校验的总字节数 功能码1 byte0xF1 写 / 0xF2 读 地址2 byte用户区 0x0100~0xFFFF,系统区 <0x1000 数据n byte寄存器值 校验2 byteCRC16 或预留 0xCCCC CRC16 算法(大彩给的 C 参考,Modbus 同款查表法): uint16 MB_calc_crc16(uint8 *buffer, uint32 n){ uint16 crc = 0xffff; for(i = 0; i < n; i++){ crc = crc ^ buffer[i]; for(j = 0; j > 1; if(carry_flag == 1) crc = crc ^ 0xa001; } } return crc; } 写变量(0xF1)示例,向 0x1000 写 100、站号 0、不开 CRC: AA55 00 07 F1 1000 0064 CCCC ↑帧头 ↑站 ↑长度 ↑写 ↑地址 ↑值 ↑预留 站号设为 1 且开 CRC 时:AA55 01 07 F1 1000 0064 7289,屏应答 AA55 01 03 F1 E174。 读变量(0xF2)示例,读 0x1000(假设值 100): 主板请求: AA55 00 06 F2 1000 01 CCCC 屏返回: AA55 00 08 F2 1000 01 0064 CCCC 💡 调试提示: 开启"自动上传"后,你在屏上点按钮改了寄存器,屏会主动发 0xF2 帧上报给主板,不用主板去轮询。这点和 Modbus 从机主动上报不一样,DCBUS 的上报是屏→主板方向。 二、XGUS 协议 XGUS 帧头默认 0x5AA5,结构:帧头(2) + 长度(1) + 功能码(1) + 地址(2) + 数据(n) + CRC16。切换画面两种模式: 模式1: 5AA5 03 80 03 XX // XX=画面ID 模式2: 5AA5 07 82 0084 5A01 XXXX // XXXX=画面ID 三、Modbus RTU(重点) 屏支持标准 Modbus-RTU,可设主机(Master)或从机(Slave)。 3.1 主机模式 ModbusMaster 屏当主机去轮询下挂的从机(仪表、变频器、PLC)。关键配置项: 配置项含义 最多读取数单条指令读取的最大字节数 读取间隔数地址间隔小于此值可合并成一条读指令 写重试次数写失败后最大重试 超时时间等从机应答的毫秒数 间隔时间收到应答后延时多久发下一条 写寄存器命令自动(0x06 单写/0x10 多写)或全用 0x10 离线优化读取勾选后离线的从机不再发请求 从站数目默认 1,RS485 多从站界面最多配 10 个,更多用 LUA 预设字节序默认大端,浮点/长整型可重指定 支持功能码:0x01 0x02 0x03 0x04 0x05 0x06 0x0F 0x10。 ⚠️ 重点:字节序坑最多。 默认大端(AB CD),但很多设备是"大端字节序 + 大端字序"(CD AB)或反之。浮点显示错乱先查字节序,不是协议问题。用 Modbus RTU 教程 里的字节序对照表对照设。 3.2 从机模式 ModbusSlave 屏自己当一条 Modbus 从站,等上位机(PLC、网关、你的调试软件)来读。配置项: 配置项含义 从机站号本屏的 Modbus 地址 字符间隔超过该 ms 认为断帧 延时应答收到请求后延时再应答 同样支持 0x01~0x10 全套功能码。从机模式下"画面写入地址/画面取自地址"可实现屏和 PLC 画面联动。 四、PLC 协议(FX2N/FX3U/台达/信捷/永宏) 这些配置项高度一致,列核心差异: 协议寄存器寻址特点 FX2N标准模式指令短(如 02 30 31 30 30 30 30 32 03 35 36),扩展模式指令长、地址范围大 FX3U同 FX2N,标准/扩展两模式 DELTA DVPASCII 模式:STX+地址+指令+数据+LRC 校验+CR LF 信捷 XC/XD标准信捷 PLC 协议 永宏 FB标准永宏协议 所有 PLC 协议都有"与 PLC 同步画面"选项:画面变化写到指定 PLC 地址,或 PLC 某地址变值时切换画面(0xFFFF 为自动)。 本文整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)协议说明章节,帧格式与寄存器配置均按原文保真,版权归大彩科技所有,此处做重点标注重排。 --- ### 817. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 你在做设备人机界面的时候,大概率碰到过这几种情况:单片机跑不出来好看的界面、上位机触摸屏太贵、或者 PLC 自带的 HMI 不够灵活。串口屏就是为这种场景生的——一块带 MCU 和屏的模组,你只管把变量地址绑定到控件上,屏自己搞定显示和触摸,剩下的通信它底层处理。 VisualHMI 是广州大彩科技(Dacai)推出的组态式串口屏开发平台。它和市面上那种"拖几个按钮就完事"的屏不一样,核心卖点是变量驱动 + UI 与控制逻辑彻底分离:你在 PC 软件上画界面、绑变量,屏固件负责解析报文、刷新控件,你写业务只碰变量地址,不用管屏幕怎么描点。 一、它解决了什么实际问题 说人话就是:原来你要用 MCU 直接驱动 LCD,光一个曲线图、一个中文输入法就能耗掉半个月。用 VisualHMI,这些变成控件拖拽 + 几行 LUA。对工期紧的项目,这是质的差别。 痛点VisualHMI 怎么解 MCU 驱动屏,开发量大组态控件 30+ 种,拖拽即用,100% 预览还原 多语言切换麻烦一键切换,最多 30 种语言 要和 Modbus/PLC 通信原生集成 Modbus 主/从、FX2N、台达、信捷、西门子 PPI 等 要做数据记录/曲线内置历史曲线、数据记录、告警记录、操作记录 复杂逻辑下不来LUA 脚本,寄存器操作/定时器/自定义协议都能写 ⚠️ 重点:协议是分路独占的。 同一路串口(比如屏背后的 UART1)同一时间只能用一种协议。你选了 Modbus 就不能同时跑 DCBUS。多协议要上多路串口硬件。 二、支持的通信协议一览 VisualHMI 固件直接跑在 M 系列硬件上,协议栈是内置的,你只要在工程里勾选: DCBUS:大彩自家组态协议,帧头默认 0xAA55,适合和自有主板对接 XGUS:另一种组态协议,帧头默认 0x5AA5 Modbus RTU:标准协议,可设主机(Master)或从机(Slave)——这是和 modbus.cn 读者最相关的部分 FX2N / FX3U:三菱 PLC 协议 DELTA DVP:台达 PLC 信捷 XC / XD:信捷 PLC 永宏 FATEK FB:永宏 PLC ⚠️ 重点:Modbus 主从是核心。 设成主机时,屏主动轮询下挂的从机(仪表、变频器、PLC);设成从机时,屏自己就是一条 Modbus 从站,等上位机来读。一主多从(RS485 总线挂多个从站)也支持,最多 10 个从站界面可配,更多得靠 LUA。工程资料库里有真实设备的 Modbus 协议手册,配合看更顺。 三、开发流程长什么样 典型的开发链路是这样: PC 上装 VisualHMI 组态软件,新建工程、选屏型号 画画面、拖控件、把控件绑到变量地址(LW 用户区 / 系统区) 工程属性里配通信协议(比如 Modbus Master,设波特率、从站号) 写 LUA 处理复杂逻辑(读从机、算总电量、报警判断等) SD 卡或串口下载到屏 虚拟屏联机调试,用 Modbus Slave 软件模拟从机验证 后面这个专栏会按"快速入门 → 资源 → 组态控件 → 数据记录 → LUA → 其他 → FAQ"的顺序,把每一块拆开讲清楚,偏实战、少废话。下一篇先讲协议细节,尤其是 Modbus 主从那块怎么配、帧怎么组。 本文整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com),版权归大彩科技所有,此处做工程师视角重排,仅供技术学习参考。 --- ═══════════════════════════════════════════ ## 数据记录 ═══════════════════════════════════════════ ### 818. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 操作记录控件记录用户点击屏幕的操作,表格显示:操作时间、用户等级、操作描述、寄存器地址、寄存器内容变化。适合审计谁在什么时候动了什么参数。 1. 操作记录设置(工程→操作记录设置) 属性说明启用数据操作功能勾选后控件的"安全设置"出现"操作记录"选项最大记录条数1~65535存满后循环覆盖 / 停止存储存储于内存 RAM(掉电不保存)/ 闪存 FLASH(掉电保存)存储块地址存储起始地址;占用块数系统自动算(每 128 条 3 块) Flash 计算同前:16M、块 4K、默认块地址 2048(8M 起)。128 条 → 3 块 12K。工程 10.1M 时从 11M 存,块地址 = (11×1024)/4 = 2816。 系统操作日志控制:往 LW0188 写 0x0001 导出全部记录到 SD 卡;写 0x0055 清空。 ⚠️ 频繁写 Flash 影响芯片寿命(擦写 10 万次),可能造成屏幕不正常工作。操作记录量大时用 RAM 存储或循环覆盖,别无限写 Flash。 2. 属性介绍 2.1 基本设置时间排序(顺/逆序)、对齐方式(默认/指定)、显示序号、宽度占比、显示时间(格式+宽度)、显示用户(等级名称+宽度)、显示描述(+宽度)、显示地址(+宽度)、显示参数(+宽度)、每页行数、显示滚动条、手势滑动、翻页控制(控制地址)。 2.2 外观设置字体/大小/颜色;显示标题(时间/用户/描述/地址/参数标题名称);显示网格(网格/边框颜色);显示背景(标题/内容背景颜色);奇偶分行(背景颜色2)。 3. 应用(3 步) 开启:工程→操作记录设置,启用数据操作功能,最大 128 条,循环覆盖,RAM 存储配置控件:操作记录控件,时间逆序、显示时间、每页 5 行、滚动条+翻页控制 LW1100填写记录:可触控件属性栏启用"操作记录"(支持位/字按钮等可触控件) 翻页示例:4 个字按钮绑 LW1100(常量 1/2/3/4),权限条件 LW1100.1/.2==1 控制显示隐藏(还有没有上一页/下一页),勾选操作记录 + 操作描述"上一页/下一页/首页/尾页"。清除按钮绑 LW0188 写 85。 支持操作记录的控件是可触控类(按钮、开关等),在控件属性「安全设置」里勾选「操作记录」后,每次操作自动记一条。操作描述可以自定义,方便审计时一眼看懂。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「操作记录」,版权归大彩科技所有。 --- ### 819. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 告警系统支持自定义触发条件与内容词条:实时监测寄存器值变化,满足预设逻辑就触发多维度响应(蜂鸣器、背光亮起)。告警记录掉电持久化,可追溯审计。 1. 核心功能 触发条件:基于寄存器值(4x1000、M200)设布尔/数值条件:==、!=、>、<、>=、<=、位状态(LW100.3==1)多模态提示:蜂鸣器鸣叫(音调/时长可配)、屏幕背光闪烁/全屏高亮掉电存储:告警事件(含时间、内容)自动存储,断电重启保留 系统寄存器:标签地址说明SysWarnCfg0x0112告警设置:bit0 激活背光;bit1~2 蜂鸣器(0 不控制/1 滴滴叫/2 长鸣)SysWarnStatus0x0113告警状态:1=有告警SysWarnCtrl0x0114历史告警控制:写 0x0001 导出 SD 卡/U盘;写 0x0055 清除SysExportStatus0x0190导出状态:0 空闲/1 导出中/2 成功/3 失败SysExportProg0x0191导出进度 0~100 2. 告警设置(工程→工程设置→告警设置) 告警条数:最大 10000 条,点更新自动编序号(告警 ID)。默认 32 条(ID 0~31)背光:告警触发时点亮背光(SysWarnCfg bit0),一般搭配自动待机用蜂鸣器:关闭/滴滴声/长鸣,时间 ms(SysWarnCfg bit1~2)最大记录数:10000 条存储方式:内部 RAM(掉电丢失)/ 专用 Flash(2000 条)/ 指定 Flash(受剩余空间限制)。Flash 16M、块 4K、默认块地址 2048(8M 起) 告警内容配置:触发条件:>、=、<=、==、!=、IN(a<=x<=b)、OUT;. 引用位(LW1000.1),~ 位区间(LW1000.4~6)告警等级:0~15 级,用 SysWarnLevel(LW0115)bit0~15 筛选(如看等级1+2:SysWarnLevel = (1<<1)|(1<<2))告警内容:条件成立显示;多语言时各语言独立编辑 清除导出:SysWarnCtrl(LW0114)写 0x0055 清空、0x0001 导出。告警内容可导入导出 CSV(告警条件,语言1..N,等级)。 ⚠️ 频繁写 Flash 影响芯片寿命(擦写 10 万次)。告警存储选型:临时提示用 RAM,长期审计用专用 Flash(2000 条),别什么都往指定 Flash 写。位引用:. 单 bit、~ bit 区间,别搞混。 3. 告警条 / 告警显示控件 3.1 告警条(跑马灯)所有当前告警从左往右滚动显示。属性:告警排序(时间顺/逆序)、告警时间(不显示/时间/日期/时间+日期,默认只显示内容)、移动速度(ms)。 3.2 告警显示(表格)告警模式:当前告警(解除后不显示,不支持掉电存储)/ 历史告警(解除后保留,支持掉电存储)。时间排序、显示序号、发生时间/解除时间(不显示/时间/日期/时间+日期)、时间在前、列宽比例、每页行数、滚动条、手势滑动、翻页控制(Addr+0 翻页、Addr+1 可行性)。 4. 应用案例 4.1 告警设置示例告警ID0:LW1001==1,等级1,内容"告警1";ID1:LW1002.0==1,等级2,"告警2";ID2:LW1003.0~3==15,等级3,"告警3"。 4.2 告警条 + 告警显示 + 翻页 + 清除导出告警条:时间顺序、显示日期+时间、速度 100。告警显示:历史告警、时间顺序、发生/解除时间都显示、时间在前、列宽 20;50;100;100、每页 5 行、滚动条+翻页控制 LW1100。翻页按钮绑 LW1100(1/2/3/4)+ 权限 LW1100.1/.2;清除/导出按钮绑 LW1100 写 85/1。 4.3 告警等级筛选 + 告警提示下拉菜单绑 $SysWarnLevel:文字"全部;等级1;等级2;等级3",数值转换 14;2;4;8(对应 bit0~3 掩码)。告警提示:位状态灯(告警触发背光亮起,配自动待机)+ 下拉菜单绑 $SysWarnCfg.1~2 选蜂鸣器"关闭;滴滴响;长鸣"。 告警等级筛选的数值转换是位掩码:全部=14(bit1+2+3)、等级1=2(bit1)、等级2=4(bit2)、等级3=8(bit3)。不是 1/2/3 直接写。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「告警记录」,版权归大彩科技所有。 --- ### 820. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 数据记录控件把同一时间戳下多个寄存器值组合成一行,动态追加到表格——类似数据库日志。最多 1000 个通道(列),掉电不丢,支持翻页、清除、CSV 导出。 1. 核心能力 多通道同步记录:单条记录最多 1000 通道,每通道绑一个寄存器时间对齐采样:所有通道同一时刻读取实时表格:新记录自动追加,滚动查看持久化:存 Flash,掉电不丢;支持翻页/清除/CSV 导出 2. 属性介绍 2.1 基本设置属性说明数据来源资料采集(同一寄存器不同时刻)/ 配方数据(配方内容显示)字符串表格资料采集类型为 STRING 时勾选,按字符串显示时间排序时间顺序 / 逆序日期/时间显示时间 / 日期 / 时间和日期配方数据索引/直接编辑选配方集;勾选后点击表格参数直接改通道数量数据通道数表格设置标题、文本宽度;自动列宽(按比例)或固定像素固定列无(全可滚动)/ 1列(序号固定)/ 2列(序号+时间固定)每页行数 / 滚动条 / 手势滑动分页显示;垂直滚动条;手势滑动 翻页控制(Addr 起):Addr+0 翻页(1上/2下/3首页/4尾页);Addr+1 读取可行性(BIT1~4);Addr+2~3 时间戳定位(UINT32,配下拉按天定位);Addr+4~5 选中行通知(UINT32,选中行号从 0 开始)。 2.2 外观设置字体/大小/颜色/对齐、标题(含标题文字颜色)、网格(网格/边框颜色)、背景(标题背景/内容背景)、奇偶分行(背景颜色2)。 3. 应用案例 3.1 数据采集(100 通道)资料采集:描述"历史数据",定时采样,2000 条,周期 1 秒,数据地址 LW1010,UINT16,数据个数 100,控制地址 LW1001,采样控制 LW1000 OFF→ON。数据记录控件:数据来源资料采集(索引[0]),通道 100,时间逆序,固定列 2,每页 5 行,滚动条+手势滑动,翻页控制 LW1004、允许翻页 LW1005、时间戳 LW1006、选中行 LW1008。 采样使能:位状态灯绑 LW1000(ON 开始/OFF 停止);清除/导出:字按钮绑 LW1001 写 85(清除)/1(导出);翻页:4 个按钮绑 LW1004 1/2/3/4 + 权限 LW1005.1/.2。 时间戳定位:下拉菜单绑 0xA000,选项内容=历史数据日期(资料取样索引[0]),选某天定位到该天第一条记录。 3.2 特殊应用:地址不连续/类型不同(字符串表格 + LUA)当寄存器地址不连续、数据类型不一致(如电压 4x0000 UINT32、电流 4x0007 UINT32、负载率 4x0015 UINT16、谐波 4x0021 INT16、功因 4x0026 UINT32…)时,用字符串表格方案:资料采集数据地址 LW2000、类型 STRING、个数 100;LUA 在 on_run 里读各寄存器拼接字符串写入 LW2000,每列用分号 ; 分隔:function on_init() set_run_cycle(1000) start_read(0, VT_4x, 0, 80) -- 读从站1保持寄存器 0x0000~0x0050 end function on_run(screen) if (get_uint16(VT_LW, 0x01A3) & 0x0001) == 0x01 then -- 从机在线 select_slave(0) local vol = get_uint32(VT_4x, 0x0000) -- 电压 local cur = get_uint32(VT_4x, 0x0007) -- 电流 -- ... 读其它寄存器 local rcrd = string.format("%0.2f", vol/100)..";".. string.format("%0.2f", cur/100)..";".. -- ... 拼接所有列 set_string(VT_LW, 0x2000, rcrd) -- 写到 LW2000 end end 资料采样要求寄存器地址连续、数据类型一致。地址不连续/类型混杂时别硬采——用字符串表格方案:LUA 读值→拼接字符串(分号分隔)→写到资料采样地址,控件勾选字符串表格按列显示。字符串编码用 GB CODE。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「数据记录」,版权归大彩科技所有。 --- ### 821. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 历史曲线记录"变量随时间变化的趋势",最多 16 条独立通道,采样数据存 Flash 掉电不丢,支持翻页、缩放、清除、CSV 导出。监控、能效评估的主视图。 1. 两种数据来源 模式定义用途资料采样单个寄存器在不同时间点的值,周期采集形成时间序列曲线观察单参数历史趋势连续采样同一时刻读取连续 N 个寄存器,N 个值作为一组画到同一条曲线空间分布/批量数据快照 连续地址属性:数据点数 1~40000、数据地址(起始)、数据类型(UINT16~DOUBLE)、数值转换(实际值=传输值×缩放+偏移)。 连续采样注意通道分布:数据地址 0x4000、点数 50、通道 2 → 通道1 用 LW4000、LW4002、LW4004…(偶数地址),通道2 用 LW4001、LW4003…(奇数地址)。 2. 曲线设置 曲线粗细:1 或 2 像素;曲线通道:最多 16 条;通道颜色:每通道颜色控制地址(Addr 起):偏移作用Addr+0通道显示隐藏:bit0~15 对应通道1~15,0=显示、1=隐藏Addr+1翻页控制:1-上一页、2-下一页、3-首页(最新)、4-尾页(最旧)Addr+2读取翻页可行性:BIT1 上一页、BIT2 下一页、BIT3 首页、BIT4 尾页,1=可执行Addr+3~4时间戳定位(UINT32),配下拉菜单按天定位Addr+5时间宽度控制:一屏显示点数(控件宽 400、值 100 → 4 像素/点) 3. X 轴(时间)/ Y 轴(值) X 轴:时间宽度(一页采样点数,如 100,第 101 个数据满屏后曲线左移);刻度数 2~10;显示刻度(无/分割线/刻度线)Y 轴:最大值/最小值(可 LUA 动态改,wgt_set_param 0x31=最小值、0x32=最大值);越界不显示;刻度数 2~11;显示数值;显示刻度 外观:字体/大小/颜色、边框、背景、分割线颜色、滚动条、触摸标识(触摸曲线显示采样时间和值)。 4. 应用案例(资料采样) 4.1 资料采样配置描述"历史曲线",定时采样,记录 2000 条,周期 100ms,数据地址 LW1010,UINT16,数据个数 3,控制地址 LW1001,采样控制地址 LW1000,启动模式 OFF→ON。 4.2 曲线控件配置数据来源=资料采集(索引[0]历史数据),通道数 3,控制地址 0x1003(隐藏控制)、0x1004(翻页)、0x1005(允许翻页,只读)、0x1006(时间戳 UINT32)、0x1008(时间宽度)。显示滚动条+触摸标识。 4.3 采样使能 + 清除 + 通道显示位状态指示灯绑 LW1000(设为ON=开始采集/设为OFF=停止);字按钮绑 LW1001 写 85 清除;3 个位按钮绑 LW1003.0/.1/.2 切换开关控制通道显示隐藏;4 个翻页按钮绑 LW1004(1/2/3/4)+ 权限条件 LW1005.1/.2==1。 4.4 X 轴 / Y 轴缩放X 轴:数值控件绑 LW1008 输入 200→一屏 200 点,输入 50→50 点。Y 轴:曲线控件 ID 设 100(不为 0),LUA 里 wgt_set_param 改最大值/最小值:function on_update(slave, vtype, addr) if vtype == VT_LW then if addr == 0xA000 then wgt_set_param(__page._hisgraph1, 100, 0x31, get_uint16(VT_LW, 0xA000)) -- Y最小值 elseif addr == 0xA001 then wgt_set_param(__page._hisgraph1, 100, 0x32, get_uint16(VT_LW, 0xA001)) -- Y最大值 end end end Y 轴缩放必须配合 LUA 的 wgt_set_param:0x31=Y 轴最小值、0x32=Y 轴最大值,且曲线控件 ID 不能为 0。不加 LUA 只配数值控件,Y 轴不会动。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「历史曲线」,版权归大彩科技所有。 --- ### 822. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 资料采样是整个"记录类功能"的地基:历史曲线、数据记录、下拉选日期,全都依赖它先采集数据。它在【工程】→【资料采样】里配置,把采到的数据按曲线或表格显示。 1. 采样模式 1.1 定时采样以固定时间采集一次数据。采样周期 + 周期单位(秒/毫秒)。 ⚠️ 周期单位选毫秒时不支持掉电存储——频繁写 Flash 影响芯片寿命(Flash 擦写寿命 10 万次),可能导致屏幕不正常工作。能用秒就别用毫秒。 1.2 触发采样由某个寄存器值变化触发采集:触发地址:触发寄存器的地址模式:OFF→ON 上升沿触发(值 0→1);ON→OFF 下降沿(1→0);ON<->OFF 双边沿复位:自动覆盖该寄存器值 2. 记录条数 最多记录的条数,记录满了自动覆盖。支持 10~10000000 条。 3. 数据地址 数据类型:UINT16、INT16、UINT32、INT32、FLOAT、DOUBLE、STRING数据个数:该笔资料采集的数量(连续地址),范围 1~2000小数位数:统一 或 单独("0.1;0.2;0.3"分号分割)。传输值 100、小数位 1 → 显示 10显示无效零:勾选后传输值 100、小数位 1 → 显示 10.0 例:数据地址 = LW1001,UINT16,通道数 10 → 采集 LW1001~LW100A 范围。 4. 控制地址 / 采样控制地址 地址作用控制地址写 0x0001=导出数据到 SD 卡/U盘;写 0x0055=清除数据采样控制地址控制采样使能总开关;启动模式 OFF→ON/ON→OFF;启动模式地址+1:采样率(10ms 单位,UINT16) 导出标题:导出 CSV 时第一行表头,用文字标签,逗号分割,如"序号,时间,电压1,电压2,...,电压10"。 5. 掉电存储 数据存到 Flash 块地址。M 系列彩屏 Flash 默认 16M,一个块 4K,默认存储块地址 2048(从 8M 位置开始)。占用块数系统自动计算:如最大条数 1000、200 个 UINT16 数据 → 102 块、408K。实际应用要结合工程编译大小:编译资源包 10.1M,存储地址要与下载文件隔开——从 11M 开始存,块地址 = (11×1024)/4 = 2816,剩余 102 块不超出 16M。 掉电存储的块地址要避开工程下载文件的区域:先看编译资源包多大,再往高处留余量。算错会覆盖固件/工程导致屏变砖。公式:块地址 = (起始M × 1024) / 4。 整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)记录教程「资料采样」,版权归大彩科技所有。 --- ═══════════════════════════════════════════ ## 智慧农业 ═══════════════════════════════════════════ ### 823. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文系统阐述智能玻璃温室大棚监控系统的技术架构与功能实现。系统集成环境监测、土壤墒情、遮阳通风、湿帘降温、水肥一体化、补光调控、CO₂管理、视频监控等八大子系统,通过多协议通讯网络与边缘计算技术,实现温室环境的精准感知、智能决策与自动化控制。配套手机APP、PC平台、监控大屏、LED显示屏等多终端管理界面,支持远程控制与现场手动双重保障,为现代农业提供可复制、可推广的工厂化种植模式,显著提升农产品品质与经济效益。 一、玻璃温室大棚发展与应用价值 随着我国设施农业基础设施建设的持续推进和国家对高效种植业的投入加大,智能玻璃温室大棚在农业生产基地与示范园区得到广泛应用。玻璃温室具有外观美观、档次高的视觉优势,采用全钢架结构设计,抗风雪能力强,使用寿命可达25年以上。其内部操作空间大,支持大面积连栋布局,适宜开展工厂化、规模化生产作业,可实现全自动化管理监控。 南北区域应用差异化明显:北方地区主要作为育苗温室、无土栽培、高端药材种植、花卉培育、生态餐厅及观光旅游综合体;南方地区则作为全年果蔬生产型温室使用。玻璃温室的高透光性为作物生长提供充足光照,但也带来夏季过热、冬季保温的挑战,亟需智能化监控系统实现环境精准调控。 二、系统整体架构与配套设备 智能玻璃温室大棚监控系统采用分层分布式架构,集成九大功能模块:温室环境监测系统、土壤墒情监测系统、遮阳系统、通风管理系统、湿帘降温系统、水肥一体化系统、补光系统、CO₂调控系统、视频监控系统。 核心配套设备包括: 环境监测传感器:空气温湿度、光照度、CO₂浓度传感器(支持有线485或无线LORA通讯) 土壤传感器:土壤温湿度、PH、EC传感器,多点分布式部署 执行机构:内外遮阳电机、顶/侧通风窗、湿帘水泵、风机、水肥一体机、补光灯、CO₂发生器 控制核心:物联网智能监控柜,内置PLC逻辑控制器与边缘计算模块 显示终端:手机APP、PC监控平台、监控中心大屏、现场LED显示屏 系统通过聚英农业云平台实现数据汇聚与策略下发,最大限度提高机械化与智能化程度,实现农业生产工艺的可复制性,构建工厂化种植经济模式。 配图建议:系统架构图。中央为核心玻璃温室3D模型,四周辐射状连接九大子系统图标,每个子系统标注关键设备。底部为"智能监控柜",向上通过4G/5G/WiFi连接"云平台"。整体呈星型拓扑,背景为现代化农业园区航拍图。 三、环境监测子系统详解 温室环境监测采用工业级物联网传感器,关键指标包括: 温度范围:-40℃~80℃,精度±0.5℃ 湿度范围:0~100%RH,精度±3% 光照度:0-200000Lux,精度±5% CO₂浓度:0-5000ppm,精度±50ppm 传感器分布于温室内部各监测区域,通过LORA无线或RS485有线方式与监控柜通讯,数据实时传输至云平台。数据刷新频率3秒/次,存储频率1分钟/次,形成完整的环境数据库。 系统支持35个节点同时监测,覆盖不同高度(冠层、中层、地面)与位置(南侧、北侧、中央),为精细化分区调控提供数据支撑。 四、土壤墒情监测与水肥联动 土壤墒情监测是精准灌溉的核心依据,系统配置三类传感器: 土壤温湿度传感器:监测耕层含水量,防止干旱或积水 土壤PH传感器:监测酸碱度,指导肥料配比调整 土壤EC传感器:监测电导率,反映盐分含量与肥力状况 传感器按每500㎡部署1套的标准分布,数据通过水肥一体机实现联动: 当土壤湿度低于设定阈值(如40%),自动开启电磁阀灌溉 当PH/EC值偏离作物适宜范围,自动调整施肥机配比 支持循环浇灌模式,避免单次过量灌溉 系统实现全天候不间断监测,数据通过GPRS/4G远程传输至监控中心数据库,为土壤质量保护与提升提供科学依据。 五、遮阳与通风管理系统 遮阳系统是玻璃温室夏季降温的关键: 外遮阳:采用黑色遮阳网,可阻挡70-85%太阳辐射,降低室内温度3-5℃ 内遮阳:采用铝箔反射幕,冬季夜间反射红外线,减少热量散失,节能30%以上 系统根据室外光照度传感器与室内温湿度自动调控: 夏季光照>50000Lux且温度>30℃时自动展开 冬季夜间自动闭合保温,白天根据光照需求调整开度 支持冬夏定时模式,实现全自动化 通风管理系统包括顶窗、侧窗两种方式: 自然通风:利用热压差原理,顶部开窗排出热空气,侧窗补充新鲜空气 强制通风:配合湿帘系统,风机负压抽风,实现快速换气 系统支持雨天自动关窗、大风天自动锁定,保护温室结构安全。 六、湿帘降温与水肥一体化系统 湿帘降温系统利用水蒸发吸热原理,是夏季高效降温方案: 工作原理:水泵将水送至湿帘顶部,水沿波纹状纤维表面下流,风机负压抽风,热空气穿过湿帘时水分蒸发吸热,降温效率可达70-80% 联动控制:当温度>35℃且湿度<70%时自动启动,温度降至28℃自动停止 节能优势:相比空调制冷,能耗降低80%以上 水肥一体化系统实现精准水肥管理: 精准配比:根据土壤EC/PH值与作物生长阶段,自动调配氮磷钾比例 定时定量:支持按时间、按流量、按面积多种灌溉模式 循环过滤:配置砂石过滤器与网式过滤器,防止滴灌带堵塞 系统支持手动按键、触摸屏、远程APP三种控制方式,确保灵活性与应急能力。 七、补光与CO₂调控系统 补光系统用于光照不足季节的产量保障: 光源选择:LED植物生长灯(红蓝光谱配比可调),节能60%以上 智能控制:根据光照度传感器与作物光周期需求自动开关 时段设置:可设定日出前、日落后的补充照明时长,支持光周期调控 CO₂调控系统提升光合效率: 浓度目标:维持800-1200ppm,可提升光合速率30-50% 调控方式:CO₂发生器或钢瓶供气,与通风系统联动避免浪费 安全保护:当浓度>2000ppm自动报警并启动强制通风 两系统协同工作,阴雨天自动补光+增施CO₂,保障作物持续高效生长。 八、视频监控与多端显示系统 视频监控系统实现生产可视化: 摄像头部署:出入口、关键设备区、作物生长区全覆盖 品牌兼容:支持海康威视、萤石云主流网络摄像头接入 功能融合:在监控界面分屏显示视频画面与环境数据,实现"数据+视频"双重验证 监控显示方式多样: 手机APP:随时随地远程监控,支持多账号管理,权限分配灵活 PC监控平台:WEB端适用于监控中心,可投放大屏,减少交互操作,示范效果好 监控中心大屏:清晰查看实时数据与视频画面,适合园区级集中管理 LED显示屏:温室外部或内部高处悬挂,防尘防雨,示范显示效果好 所有终端数据多端同步刷新,确保信息一致性。 九、远程控制与现场手动双重保障 系统提供三级控制模式,确保可靠性与灵活性: 1. 远程控制:通过手机APP或电脑监控平台实时查看环境数据,手动控制风机、湿帘、天窗、水泵等设备的开关启停。支持批量控制与定时任务设置,降低人工管理成本。 2. 现场手动控制:保留传统人工控制方式,便于应急管理与巡更。智能监控柜提供: 8寸组态屏触摸控制:图形化界面,一键操作 手动按键控制:物理开关,确保极端情况下可靠控制控制范围覆盖所有被控设备:阀门、水泵、天窗、湿帘、卷帘、风机、灯光等。 3. 自动控制工艺:系统以农作物生产工艺为指导,基于PLC智能自控功能与物联网平台,实现全生长阶段的无人化自动调控。控制策略包括: 时间触发:按作物生长周期设置季节模式 阈值触发:传感器数据超限自动响应 组合逻辑:多条件判断实现复杂工艺 十、云平台管理核心功能 1. 组态场景展示:平台通过实际场景动态展示水肥过程每个环节,数据与动画结合,生动真实。用户可自定义工艺图,上传现场布局,实现"数字孪生"。 2. 数据记录分析:所有环境参数与设备状态数据自动存储三年,曲线可放大缩小,支持分钟级精度查询,为工艺改进提供数据支撑。 3. 数据报表导出:支持按日/周/月生成报表,可导出Excel格式,便于存档与分析。 4. 设备集中监控管理:GIS地图显示所有温室位置与状态,支持一键进入单棚监控界面,实现百棚级集中管理。 5. 智能报警通知:环境参数超限、设备故障、通讯中断时,通过APP推送、微信公众号、监控平台语音等方式主动通知管理员,支持多级报警与责任人分配。 6. 用户权限管理:支持"一对多管理"(一个用户管多个大棚)、"多对一协作"(多用户管一个大棚),提供管理员、操作员、观察员三级权限,责任划分明确。 十一、生产数字模型与工艺可复制性 系统核心目标是生成农作物栽培工艺文件,实现规模化复制: 数据采集积累:记录作物全生育期环境数据与水肥控制参数 工艺模型提炼:通过大数据分析,提炼最优生长曲线与控制策略 标准化输出:生成包含温度、湿度、光照、CO₂、水肥配方的工艺文件 规模化推广:将工艺文件批量下发至新温室,快速复制成功经验 该模式使农业生产从"经验依赖"转向"标准驱动",大幅提升新园区投产速度与产品一致性。 十二、系统核心优势与实施效益 核心优势: 全自动化:从监测到控制全链路无人值守 高可靠性:IP68防护+断网脱机运行+手动备份三重保障 工艺可复制:数字模型实现快速规模化推广 灵活扩展:模块化设计,节点可随时增加 多端协同:手机/PC/大屏/LED数据实时同步 实施效益: 增产10-20%:最优环境控制提升光合效率 节水节肥30-40%:精准灌溉与施肥减少浪费 节电25-35%:智能遮阳与通风降低能耗 人力成本降低60%:远程集中管理减少现场人员 风险损失减少70%:实时预警避免极端天气损失 投资回报周期2-3年:综合效益显著高于传统温室 --- ### 824. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文系统阐述智慧农业云平台的架构设计与核心功能,平台通过多协议通讯网络实现温室环境数据实时采集与设备远程控制,集成边缘计算、智能联动、云组态等先进技术,构建覆盖环境监测、精准调控、数据分析、视频监控的全链条管理体系。平台支持脱机运行与云端协同,提供私有化部署与开放API接口,为现代农业生产提供高可靠、低功耗、易扩展的数字化基础设施,推动农业生产向标准化、智能化、高效化转型。 一、现代农业数字化管理需求 传统农业生产面临劳动力老龄化、环境调控粗放、管理效率低下、数据利用率不足等系统性挑战。智慧农业云平台以物联网技术为核心,通过传感器网络、无线通讯与边缘计算的深度融合,实现生产环境的分钟级监测、秒级响应、自动化调控。平台不仅解决人力短缺问题,更通过数据积累与工艺优化,推动农业生产从"经验驱动"转向"数据驱动",构建可复制、可推广的标准化生产模式。 二、系统通讯架构设计 平台采用云-网-端分层分布式架构,支持以太网、WiFi、4G、5G等多种通讯方式自由切换,适应不同现场条件: 云端层:农业物联网云平台,提供WEB平台、PC端软件、安卓/iOS APP、微信小程序等多终端访问,支持监控室大屏集中显示,所有软件终身免费使用 网络层:智能网关实现协议转换与数据汇聚,支持5G/4G全网通(移动/联通/电信)、以太网、WiFi接入,确保数据传输稳定可靠 终端层:现场部署农业智能控制柜,集成空气温湿度传感器、光照度传感器、CO₂传感器、紫外线传感器、风速风向传感器、土壤温湿度/PH/EC传感器等环境监测设备,以及水泵、风机、卷帘机、湿帘、施肥机、补光灯、电磁阀等执行机构 自适应通讯机制:有网络环境采用以太网/WiFi实现高速数据传输,无网络环境自动切换4G/5G移动网络,偏远地区也能稳定接入。网关支持32个终端节点,空旷环境下传输距离达3km。 三、全方位环境监测能力 平台实现两类核心数据采集,覆盖作物生长全要素: 1. 温室环境监测:实时采集空气温度、空气湿度、光照度、CO₂浓度、紫外线强度、风速、风向、大气压力等8项气象参数,数据每3秒刷新、1分钟记录一次,默认云端存储3年,可精确查询任意分钟级数据。 2. 土壤墒情监测:精准监测土壤温度、土壤湿度、PH值、EC值(电导率)等关键指标,通过GPRS/4G无线网络实现远程传输。系统支持全天候不间断监测,监测中心自动接收、自动存储各监测点数据至数据库。 采集设备采用铸铝外壳,IP68防护等级,适应农田高温高湿粉尘环境。部分设备支持电池供电,静态功耗<20μA,续航可达3-5年。 四、智能控制策略体系 平台提供六种灵活的控制模式,实现精细化环境调控与节能优化: 1. 定时/定点模式:支持年/月/日/时/分/秒级时间设置,可精确到0.1秒的延时控制。例如每天8:00、12:00、16:00定时通风,适用于规律性强的日常操作。 2. 昼夜/时段模式:根据白天/夜晚设置不同控制策略,支持点动延时。例如夏季白天高温时段自动开启风机水帘降温,夜间仅保持基础通风,节约能耗。 3. 联动/互锁模式:支持开关量输入联动输出,如红外监测到人员进入自动开门禁;支持输出通道互锁,如电机正转与反转互斥,避免设备损坏。 4. 传感器触发模式:基于环境参数阈值自动控制,如温度≥40℃自动打开风机/卷帘,温度≤33℃自动关闭;湿度≤40%打开电磁阀灌溉,湿度≥75%关闭,实现闭环反馈。 5. 条件组合模式:支持多条件逻辑组合判断,如"早6点-12点时间段内且湿度>60%"时开启风机,"晚6点-10点且温度<30℃"时关闭风机,满足复杂工艺需求。 6. 场景模式:基于时间场景设定循环动作或复杂逻辑,如"第一路动作20分钟后第二路动作10分钟"的循环灌溉策略,适用于水肥一体化管理。 五、边缘计算与DLC逻辑智能自控 平台核心优势在于边缘计算能力,即在本地控制柜实现智能逻辑运算,无需完全依赖云端,确保控制实时性与可靠性: 环境调控DLC逻辑:结合农作物生长季节与栽培工艺要求,设置温湿度触发阈值,实现自动控温调湿。例如夏季模式自动联动遮阳网、风机、水帘;冬季模式根据作物耐寒性设置卷帘采光时长,保证通风与光照平衡。 智能卷帘系统:根据室外气象数据自动控制。下雨时自动收起卷帘防雨;晴天自动打开卷帘补光,增加日照时长;大风天气自动关闭保护棚膜。系统通过气象联动实现真正的"无人值守"。 季节模式配置:预设春夏秋冬四季调控策略,一键切换: 春季:防棚内温度过高,及时通风降湿,促进缓苗 夏季:遮阳、通风、降温调湿联动,防止高温胁迫 秋季:科学灌溉时长管理,保持合理土壤湿度,防止根系缺氧 冬季:保证采光与通风,排除有害气体,提升作物抗逆性 边缘计算确保断网情况下仍能自动执行预设策略,联网后历史数据自动补传,实现"脱机运行、云端管理"的双模保障,系统可用性达99.9%以上。 六、云组态与零代码可视化 平台提供零代码云组态功能,用户可自主构建个性化监控界面,无需编程技能: 动态组态编辑:自由上传现场工艺布局图,拖拽式添加传感器、控制器图标,实时绑定数据通道 通道深度自定义:根据实际设备编辑AI、DI、DO通道名称,设置量程转换公式、单位、小数位数 动态图标库:内置开关、阀门、电机、报警等GIF动画图标,支持用户自主上传动态图,实现设备状态可视化 实时生效:组态配置保存后立即同步至所有终端,手机/电脑/大屏界面统一更新 多屏适配:同一组态自动适配PC大屏、手机竖屏、监控室电视墙等不同显示设备 该功能使农户能够创建与现场完全对应的虚拟孪生系统,实现"所见即所得"的直观管理体验。 七、数据分析与智能报警体系 数据存储与分析:平台默认保存3年历史数据,可精确查询到每分钟记录。数据曲线支持鼠标滚轮放大缩小,便于分析短期波动与长期趋势。所有数据可一键导出为Excel格式,结合边缘计算功能,为栽培工艺改进提供数据指导。 三级智能报警机制: 传感器超限报警:温湿度、CO₂、土壤EC等参数超出预设上下限 设备状态报警:阀门故障、水泵过载、门禁异常、水位上限等 系统运行报警:通讯中断、电压异常、设备离线等 报警支持多渠道推送:APP推送、微信公众号、短信,确保农户第一时间获知。报警阈值可灵活设置,支持延时报警与恢复确认,避免误报干扰。 八、集中管理与视频监控集成 设备集中管理:支持GIS地图定位轮显,所有大棚在地图上标注位置与实时状态,点击即可进入单棚监控界面。支持多设备集中监控,一人可管理上百个温室,大幅提升管理半径。 视频监控深度融合:无缝对接海康威视、萤石云等主流网络摄像头,在监控界面分屏显示视频与数据,实现"数据+视频"双重验证。例如查看卷帘动作时,可同时观察机械运行状态与环境参数变化,确保控制指令准确执行。 账号权限体系:支持灵活的组织架构管理: 一对多管理 :一个管理员管理多个大棚/设备 多对一协作 :多个操作员协同管理同一设备 分级权限:分为管理员(配置权限)、操作员(控制权限)、观察员(查看权限),满足家庭农场、合作社、农业企业不同规模的管理需求 九、私有化部署与二次开发支持 为满足大型农业企业、政府监管平台、科研机构的定制化需求,平台提供私有化部署方案: 定制部署:支持部署在企业自有服务器,定制平台风格、Logo、域名 全功能API接口:提供RESTful API,支持用户开发自有APP、小程序、Web前端,降低80%平台开发难度,减少80%开发工作量 数据主权:企业完全掌控数据存储位置与访问权限,满足数据安全合规要求 系统集成:支持与ERP、MES、农产品溯源、电商销售等第三方系统对接,打通全产业链数据流 该方案既保留了公有云的便捷性,又提供了私有云的可控性,实现"开箱即用"与"深度定制"的平衡。 十、系统核心优势与实施效益 八大核心优势: 安装简便:无线部署,无需复杂布线,施工周期缩短70% 稳定可靠:IP68防护、工业级设计、断网脱机运行,系统可用性99.9% 灵活扩展:积木式模块化设计,测控点可任意增加,单网关支持32节点 智能高效:边缘计算本地响应<100ms,云端策略优化,控制精度达±0.5℃ 成本经济:相比传统PLC系统,综合成本降低60%(布线+人工+维护) 应用广泛:适用于温室大棚、大田灌溉、畜牧养殖、水产养殖、菌菇培育等 数据价值:3年历史数据积累,为AI模型训练与工艺优化提供基础 生态开放:支持私有化部署与API二次开发,构建产业物联网生态 实施效益量化: 节水30%-50%:精准灌溉与墒情监测结合 节电40%以上:智能卷帘与通风优化 人力成本降低70%:远程集中管理 作物增产10-20%:最优环境控制 风险损失减少80%:实时预警与快速响应 十一、典型应用场景与案例 场景1:高端设施蔬菜大棚 部署20个环境监测点与10套执行系统 自动调控温度25±2℃、湿度70±5%、CO₂浓度800-1000ppm 实现番茄增产18%,优品率提升25% 场景2:连栋温室花卉培育 精密控制光照时长14小时/天,强度5000-15000Lux可调 水肥一体化精准灌溉,EC值稳定在1.2-1.8mS/cm 花朵直径增大15%,花期提前3-5天 场景3:畜禽养殖环境控制 监测氨气浓度、温湿度,自动通风换气 冬季保温与通风平衡,降低呼吸道疾病发生率30% 料肉比改善5%,养殖效益显著提升 十二、未来发展方向 智慧农业云平台将持续演进,深度融合AI、大数据、数字孪生技术: AI预测性调控:结合气象预报与历史数据,提前48小时预测环境变化,主动调整参数 作物生长模型:基于机器学习构建不同作物的最优生长曲线,动态优化水肥光热策略 数字孪生大棚:构建虚拟大棚模型,实现仿真优化、故障预演与工艺验证 区块链溯源:将环境数据、农事操作、质检数据上链,提供不可篡改的农产品溯源凭证 产业互联网:连接农资、农机、销售、金融,构建全产业链数字化生态 系统推动农业生产从"自动化"迈向"智能化",为农业现代化2035目标提供核心技术支撑。 --- ### 825. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文全面阐述智慧农业云平台的技术架构与核心功能,系统通过多协议通讯网络实现温室环境数据的实时采集与设备远程控制,集成边缘计算与智能控制策略,为现代农业提供环境监测、精准调控、数据分析一体化的数字化管理平台,推动农业生产向标准化、智能化、高效化转型。 一、现代农业数字化转型需求 传统农业生产依赖人工经验与现场操作,面临劳动力紧缺、环境调控粗放、风险应对能力弱、管理效率低等挑战。随着物联网技术的发展,农业生产正向规模化、集约化、工厂化模式转变,要求对环境参数进行精细化、自动化的实时监测与动态调控。智慧农业云平台通过整合传感技术、无线通讯与边缘计算,构建覆盖种植、养殖全场景的智能管理体系,实现生产过程的精准可控与数据驱动决策。 二、系统通讯架构设计 系统采用云-网-端分层架构,支持以太网、WiFi、4G、5G等多种通讯方式,用户可根据现场条件灵活选择: 云端层:农业物联网云平台,提供WEB端、PC软件、移动端APP(安卓/iOS)多终端访问,支持远程监控室大屏显示 网络层:智能网关实现协议转换与数据汇聚,支持5G/4G全网通、以太网、WiFi接入,确保数据传输稳定可靠 终端层:现场部署智能控制柜,集成温湿度传感器、光照度传感器、CO₂传感器、紫外线传感器、风速风向传感器、土壤温湿度/PH/EC传感器等环境监测设备,以及水泵、风机、卷帘机、湿帘、施肥机、补光灯、电磁阀等执行机构 通讯方式自由选择:有网络环境采用以太网/WiFi实现高速数据传输,无网络环境采用4G/5G移动网络,确保偏远地区也能稳定接入。 三、环境监测与数据采集能力 系统实现两类核心数据采集: 1. 温室环境监测:实时采集空气温度、空气湿度、光照度、CO₂浓度、紫外线强度、风速、风向、大气压力等气象环境参数,数据每3秒刷新,1分钟记录一次,默认保存3年。 2. 土壤墒情监测:精准监测土壤温度、土壤湿度、PH值、EC值(电导率)等关键指标,通过GPRS/4G无线网络实现远程传输,监控中心自动接收并存储至数据库。 采集设备采用铸铝外壳,IP68防护等级,适应农田高温高湿粉尘环境。部分设备支持电池供电,低功耗设计下续航可达3-5年。 四、智能控制策略体系 平台提供五种灵活的控制模式,实现精细化环境调控: 1. 定时/定点模式:支持年/月/日/时/分/秒级时间设置,可精确到0.1秒的延时控制。例如每天8:00、12:00、16:00定时通风。 2. 昼夜/时段模式:根据白天/夜晚设置不同控制策略,支持点动延时。例如夏季白天高温时段自动开启风机水帘降温。 3. 联动/互锁模式:支持开关量输入联动输出,如红外监测控制门禁;支持输出通道互锁,如电机正转与反转互斥,避免冲突。 4. 传感器触发模式:根据环境参数阈值自动控制,如温度≥40℃打开风机/卷帘,温度≤33℃关闭;湿度≤40%打开电磁阀灌溉,湿度≥75%关闭。 5. 条件组合模式:支持多条件逻辑组合,如"早6点-12点且湿度>60%"时开启风机,"晚6点-10点且温度<30℃"时关闭风机。 6. 场景模式:基于时间场景设定复杂循环动作,如第一路动作20分钟后第二路动作10分钟,自动循环。 五、边缘计算与DLC逻辑智能自控 系统核心优势在于边缘计算能力,即在本地控制柜实现智能逻辑运算,无需完全依赖云端: 环境调控DLC逻辑:结合农作物生长季节与工艺要求,设置温湿度触发阈值,实现自动控温调湿。例如夏季模式自动联动遮阳网、风机、水帘;冬季模式根据作物耐寒性设置卷帘采光时长。 智能卷帘系统:根据室外气象数据自动控制。下雨时自动收起卷帘防雨;晴天自动打开卷帘补光,增加日照时长。系统支持"补光卷帘自动打开"、"下雨卷帘自动关闭"等智能判断。 季节模式配置:根据春、夏、秋、冬四季特点预设调控策略: 春季:防棚内温度过高,及时通风降湿 夏季:遮阳、通风、降温调湿联动 秋季:科学灌溉时长管理,防止根系缺氧 冬季:保证采光与通风,排除有害气体 边缘计算确保断网情况下仍能自动执行预设策略,联网后数据自动同步,实现"脱机运行、云端管理"的双模保障。 六、云组态与可视化能力 平台提供零代码云组态功能,用户可自定义监控界面: 动态组态编辑:自主上传设备工艺图,自由拖拽传感器、控制器图标 通道自定义:根据实际设备编辑AI通道名称、DO通道名称,设置量程转换 图标库:内置开关、阀门、电机等动态图标,支持上传GIF动画 一键生成 :组态配置实时生效,手机/电脑端同步刷新 用户无需编程即可构建与现场设备完全对应的可视化监控界面,实现"所见即所得"的操作体验。 七、数据分析与报警体系 数据存储与分析:平台默认保存3年历史数据,可精确查询到每分钟记录。数据曲线支持放大缩小,便于趋势分析。所有数据可导出为Excel格式,为栽培工艺改进提供数据依据。 远程报警机制:提供三级报警推送: 传感器上下限报警:温湿度、CO₂等参数超限 设备状态报警:阀门故障、门禁异常、水位上限等 开关状态报警:设备启停状态变化 报警通过APP推送、微信公众号、短信等多渠道即时送达,确保农户第一时间响应。 八、集中管理与视频监控 设备集中管理:支持地图定位轮显,监控室大屏可实时查看所有大棚状态。支持多设备集中监控,提高管理效率。 视频监控集成:无缝对接海康威视、萤石云等网络摄像头,在监控界面实时查看设备动作反馈与农作物生长状态,实现"数据+视频"双重监控。 账号权限体系:支持一对多设备管理(一个用户管理多个大棚)和多对一账号管理(多个操作员管理同一设备)。提供灵活的权限分配,如管理员、操作员、观察员等角色,满足家庭农场或企业化运营需求。 九、系统优势与核心价值 1. 安装简便:无线部署,无需复杂布线,降低施工成本与周期 2. 稳定可靠:IP68防护等级,工业级设计;支持断网脱机运行,确保生产连续性 3. 灵活扩展:积木式模块化设计,测控点可任意增加,支持大规模组网 4. 智能高效:边缘计算实现本地快速响应,云端实现策略优化与数据挖掘 5. 成本经济:相比传统PLC控制系统,无线方案降低布线成本60%以上,云平台免服务器开发 6. 应用广泛:适用于温室大棚、大田灌溉、畜牧养殖、水产养殖、菌菇培育、花卉药材等众多场景 十、应用案例与效益分析 以100亩温室大棚为例: 节水30-50%:精准灌溉与土壤墒情监测结合,避免过度用水 节电40%以上:智能卷帘与通风系统优化光照与温度,减少人工补光与空调能耗 人力成本降低70%:远程监控与自动控制减少现场巡检频率 作物增产10-20%:最优生长环境提升产量与品质 风险损失减少80%:实时预警与快速响应避免极端天气造成的损失 十一、未来发展方向 智慧农业云平台将持续演进: AI预测性控制:结合气象预报与历史数据,提前48小时调整环境参数 作物生长模型:基于机器学习构建不同作物的最优生长曲线,动态调整策略 数字孪生:构建虚拟大棚模型,实现仿真优化与故障预演 区块链溯源:将环境数据上链,为农产品提供可信溯源凭证 系统将推动农业生产从"经验驱动"向"数据驱动"转型,为农业现代化提供坚实技术支撑。 --- ### 826. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文深入介绍基于物联网技术的智能农业自控系统,该系统针对温室大棚、养殖场所等场景,通过无线通讯技术实现环境参数远程监测与设备智能控制。系统具备脱机自控能力,即使在断网情况下也能按照预设策略自动运行,有效解决农业劳动力紧缺问题,推动传统农业向规模化、集约化现代产业转型。 一、现代农业转型需求 传统农业依赖人工经验与现场操作,面临劳动力日益紧缺、生产效率受限、自然风险应对能力弱等挑战。智能农业自控系统通过物联网技术,将农业生产从"靠天吃饭"转变为"精准可控",实现生产过程的高度规模化、集约化、工厂化,显著提升生产效率和风险应对能力,使传统农业蜕变为高效率现代产业。 二、系统通讯架构 系统采用云-网-端三层架构实现无缝连接: 云端平台:农业物联网云平台,支持4G/5G全网通、以太网/WiFi接入,终身免费使用 网关层:智能网关实现协议转换与数据汇聚 终端层:各类传感器(温湿度、光照度、CO₂、土壤墒情等)与执行设备(风机、卷帘、水阀、水泵) 农户通过手机APP或电脑软件可不限距离远程控制,数据每分钟刷新一次,确保实时监控。 三、核心功能特点 1. 全方位环境监测 实时采集空气温湿度、土壤温湿度、光照度、CO₂浓度、电压、电流、风速、风向等关键参数,数据每分钟记录一次,形成完整的环境数据库。 2. 远程设备控制 随时随地通过手机或电脑手动控制风机、卷帘、水阀、水泵等设备,即时响应环境变化需求。 3. 智能脱机自控 系统最大亮点是断网自主运行能力。农户可预设生产工艺和控制策略,设备按照设定逻辑(定时、反馈、循环等)自动执行,不受网络状况影响。例如: 定时模式:每天8:00、12:00、16:00自动通风 模拟量触发:温度超过40℃自动打开卷帘,低于25℃自动关闭 四、智能工作模式 系统支持多种灵活的控制策略组合: 定时控制模式:可设置每天多个固定时间点执行特定操作,如定时灌溉、定时通风,适合规律性强的生产场景。 模拟量触发模式:基于环境参数阈值自动触发,如温度超限开启风机、湿度不足启动水阀,实现精准环境调控。 循环控制模式:按设定周期重复执行操作,适用于需间歇性控制的场景。 脱机自控模式:所有策略预先下载至本地控制器,断网后完全自主运行,联网后数据自动补传。 五、自动化运行优势 系统实现了全流程自动化管理: 预警响应:环境参数异常时,系统自动通过手机推送报警,便于农户及时处理突发事件 策略优化:基于历史数据曲线分析,农户可不断优化控制策略,提升生产工艺水平 数据积累:长期数据存储为农业大数据分析、模块化大规模生产提供依据 节能高效:精准控制避免资源浪费,降低生产成本 六、典型应用场景 系统广泛适用于各类农业生产场景: 种植业:蔬菜大棚、花卉培育、药材种植,需要精细环境控制养殖业:畜禽舍环境调控,保障动物健康生长畜牧业:牧场自动化饮水、通风系统管理水产养殖:水质参数监测与增氧设备控制 每个场景均可通过模块化配置快速部署,无需复杂布线。 七、软件功能平台 配套软件平台提供终身免费的核心功能: 数据可视化:实时显示环境参数曲线,支持分钟级数据查询,历史数据可追溯分析 多端协同:提供PC版软件、安卓APP、iOS APP,数据实时同步,操作界面统一 智能报警:支持自定义报警阈值,通过微信、短信、APP消息等多渠道推送 远程配置:所有控制策略可远程设置,实时生效,状态同步刷新 数据导出:支持Excel格式导出历史数据,便于科研分析与生产管理 八、系统实施效益 人力成本降低70%:自动化控制大幅减少人工巡检与操作 生产风险降低60%:实时监控与预警有效应对突发环境变化 资源节约30%以上:精准灌溉与通风降低水电消耗 产量品质提升15%:最优环境控制促进作物健康生长 管理效率提升80%:远程集中管理多个大棚,数据驱动决策 九、未来发展方向 智能农业自控系统将深度融合人工智能与大数据技术,实现: 预测性控制:基于气象预报与历史数据,提前调整环境参数 作物生长模型:结合作物生理特性,动态优化灌溉施肥策略 能耗优化:AI算法实现设备运行节能调度 标准化生产:数据积累推动农业生产的模块化与标准化 系统将持续演进,为智慧农业提供更安全、更智能、更高效的解决方案。 --- ### 827. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 摘要 本文详细介绍基于LORA无线扩频技术开发的大田智能灌溉系统,该系统专为解决传统农业灌溉中供电难、布线成本高、维护困难等痛点而设计。采用锂电池供电、IP68防护等级、3km无线通讯距离,实现精准化、自动化、远程化的现代农业灌溉管理。 一、行业痛点分析 传统大田农业灌溉面临多重挑战:供电线路铺设成本昂贵,且在农忙季节易被机械挖断;室外环境复杂,设备需承受高温高湿、粉尘侵蚀;布线工程量大,维护成本高昂;设备易被破坏,且故障排查困难。 二、系统通讯架构 系统采用分层分布式架构: 云端层:农业物联网云平台,支持4G/5G全网通、以太网/WiFi多模式接入 网关层:LORA网关覆盖半径3km,支持32个终端设备接入 终端层:LORA无线阀门控制器、环境采集器、土壤墒情采集器 通讯方式灵活适配:无网络环境采用4G通讯(支持7模14频),有网络环境采用以太网/WiFi,确保数据实时传输。 三、核心功能特点 1. 实时监测与数据分析 系统通过LORA无线采集器监测空气温湿度、光照度、土壤温度/湿度、液位、压力等参数,数据每分钟上传一次,云平台自动生成环境参数曲线图。 2. 低功耗长续航 设备采用功率型锂电池(3.6V-12.8V规格),静态功耗<20μA,配合低功耗设计,续航可达3-5年。IP68铸铝外壳适应高温高湿粉尘环境。 3. 远程智能控制 支持定时灌溉、循环灌溉、远程手动三种模式。用户通过电脑平台或手机APP即可实时查看数据、控制阀门、调整策略。 四、系统工作原理 系统工作流程: 数据采集:LORA采集终端实时监测土壤墒情和环境参数 智能决策:当土壤水分下降至设定阈值,云平台自动触发灌溉策略 精准执行:LORA无线阀门控制器接收指令,开启对应地块阀门(支持DN15-250管径) 状态反馈:阀门状态、电池电压、信号强度实时回传,形成闭环控制 五、八大核心竞争力 1. 灌溉面积广 单网关覆盖3km半径,支持上百节点,一次可灌溉几十上百亩农田。 2. 精细灌溉 结合作物生长阶段需水规律,基于多参数实现定制化灌溉策略。 3. 智能控制 不受时空限制,APP远程控制,支持手动/自动模式切换。 4. 安装简便 无线部署,无需拉线,云平台一键添加绑定设备。 5. 延伸性强 可无缝对接农业气象监测、土壤墒情、农产品溯源、泵房监控等系统。 6. 应用多样 适用于大田农业、温室大棚、果园茶园、花卉药材、市政绿化等场景。 7. 示警功能 环境超限、设备异常、电压过低等即时推送微信/短信/APP通知。 8. 数据处理 历史数据自动存储,支持Excel导出与溯源分析。 六、应用场景展示 系统广泛应用于: 农业滴灌:精准水肥一体化 园林园艺:自动化景观灌溉 草坪浇水:高尔夫球场、运动场 绿化工程:道路两侧植被养护 家庭花园:智能庭院管理 喷灌作业:大田作物均匀灌溉 七、设备选型指南 设备型号供电电压适用管径阀门类型续航时长应用场景3.6V控制器3.6V 14AHDN15/25电动球阀3-5年小区域精准灌溉7.2V控制器7.2V 14AHDN50-150脉冲阀门3-5年中等规模农田10.8V控制器10.8V 28AHDN125/150电动蝶阀3-5年大型管网系统12.8V控制器12.8V 14AHDN200/250电动蝶阀3-5年大规模大田 所有设备均采用470-510MHz无线频率,空旷传输距离3km,IP68防护等级,支持短路保护。 八、系统实施效益 节水30%-50%:精准灌溉减少无效用水 节电40%以上:无需长距离供电线路 人力成本降低70%:远程自动化管理 作物增产10%-20%:科学灌溉提升品质 九、结语 LORA无线智能灌溉系统以低功耗、长距离、高可靠为核心,彻底解决了大田农业灌溉的布线难题,为现代农业数字化转型提供了经济高效的解决方案。系统将持续迭代,融合AI算法实现预测性灌溉,助力智慧农业全面发展。 --- ### 828. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、技术概述:现代农业的数字化革命 薄膜连栋温室作为近十年快速发展的新型温室结构,凭借其重量轻、骨架用料少、遮光率低、造价经济、使用寿命长等显著优势,已成为全球设施农业的主流形态。其环境调控能力已接近玻璃温室水平,而性价比远超后者。 智能监控系统在此基础上,集成现代物联网传感技术、无线通讯、智能控制终端、环境调控装备及云端管理平台,构建起覆盖"感知-传输-决策-执行"全链条的自动化管理体系。系统可根据不同作物的生长工艺需求,预设环境参数阈值,实现全天候无人值守运行,为作物创造最佳生长微环境。 二、系统核心架构与组成 2.1 分层架构设计 感知层:部署CO₂、光照度、空气温湿度、土壤墒情等多参数传感器,实时采集温室微环境数据,采样频率1-60秒可调。 传输层:支持RS485有线与LoRa无线双模通讯。LoRa技术视距传输达3公里,穿透性强,单网关可覆盖32个终端节点,满足大型连栋温室群组网需求。 控制层:智能控制柜内置PLC逻辑控制器与边缘计算模块,支持本地策略脱机执行,断网时可维持72小时自动运行。 应用层:基于云平台的可视化监控中心,支持多终端访问、数据分析、策略配置与远程诊断。 2.2 关键传感器技术参数 传感器类型测量范围精度应用场景CO₂浓度0-2000ppm±(50ppm+3%读数)光合速率评估、通风时机判断光照度0-18.8万lux0.45lux遮阳网开闭决策、补光控制空气温度-40~120℃±0.3℃加热/降温系统触发空气湿度0-100%RH±3.0%病害预警、除湿控制土壤温度-30~70℃±0.2℃根系活力评估、地热线控制土壤湿度0-100%±2.0%精准灌溉阈值依据 三、环境调控设备系统详解 3.1 电动卷膜器通风系统 工作原理:通过顶部与侧部卷膜器的升降,实现自然通风换气。夏季排除余热湿气,冬季调节空气成分,稀释有害气体(如氨气、乙烯)。 技术参数: 电机功率:40-60W 卷膜长度:≤120m/套 运行速度:4-6m/min 限位控制:电子行程开关,精度±5cm 控制逻辑:当室内温度高于设定值2℃时,自动开启顶部卷膜器;当湿度超过85%RH时,同步开启侧部通风口,形成对流。 3.2 遮阳网与内遮荫幕系统 外遮阳系统:电机驱动传动轴,带动驱动杆平行移动展开幕布,展开面积达80%时触发限位开关。夏季反射多余阳光,降低室温3-5℃;冬季夜间闭合减少红外辐射散热。 内遮荫幕(保温幕): 夏季模式:反射型铝箔幕布,遮阳率50-75%,使光照强度降至作物饱和点,避免日灼 冬季模式:闭孔型保温幕布,热阻值0.5-1.0m²·K/W,节能率达30-40% 控制策略:根据光照度传感器实时数据,设定三级开启阈值(如>5万lux开启50%,>8万lux开启75%,>12万lux全开);结合时间表,在上午10点至下午4点间自动启用。 3.3 湿帘风机强制降温系统 核心原理:利用水蒸发吸热效应,空气流经湿帘时与水膜热湿交换,温度可降低5-12℃。 系统配置: 湿帘:厚度100mm/150mm蜂窝纸芯,过帘风速1.5-2.0m/s 水泵:流量3-5m³/h,每平米湿帘配10L/min水量 风机:流量30,000-50,000m³/h,形成负压区 联动控制:当温度>30℃时启动水泵淋湿湿帘,延迟30秒后开启风机;温度降至26℃时先停风机,再停水泵,避免吹水雾入室内。 。 3.4 移动式雾喷系统 应用场景:育苗温室增湿、降温与叶面追肥。每跨设置2-3趟,电磁阀独立控制。 技术参数: 雾化压力:0.3-0.5MPa 微粒直径:50-100μm 流量:10-30L/h/趟 控制周期:每20分钟喷雾2分钟(可调) 四、智能控制柜核心技术 控制柜作为系统"大脑",集成以下核心功能: 多协议数据采集:支持Modbus RTU(RS485)、LoRaWAN、4-20mA模拟量输入,可同时接入≥16路传感器。 智能算法引擎: 模糊控制:处理温湿度耦合关系,避免设备频繁启停 预测控制:基于历史数据预测未来2小时温度趋势,提前调节 连锁保护:加热与通风互锁,防止能源浪费 PLC自控功能:内置梯形图编程环境,用户可自定义逻辑,如"CO₂>1200ppm且光照<2万lux时,不开风机"。 手动应急:控制面板保留物理按钮,网络故障时可现场手动操作,确保生产安全。 五、物联网监控平台功能矩阵 5.1 生产工艺数字化管理 核心突破:将资深农艺师的经验转化为可复制的数字模型。 实施步骤: 参数预设:针对不同作物(番茄、黄瓜、草莓等),预置各生长阶段(苗期、花期、果期)的温湿度、光照、CO₂目标值 动态调整:云平台根据积温、光照累积量自动切换工艺阶段 策略复用:模型可一键复制到新温室,实现标准化种植 案例:番茄生产工艺 缓苗期:白天25-28℃,夜间18-20℃,遮光率30% 开花期:白天23-25℃,夜间15-18℃,CO₂施肥至800ppm 膨果期:白天26-30℃,加大温差至8-10℃,光照>3万lux 5.2 可视化监控界面 组态画面:2D/3D温室模型,实时显示各区域传感器数值、设备运行状态(绿色=运行,灰色=停止,红色=故障) 趋势分析:支持多参数同屏对比,如温度曲线与加热器运行状态叠加分析 报表中心:自动生成日报、周报,包含平均温度、累计用电量、设备运行时长等KPI 5.3 多级报警体系 预警规则: 一级报警:温度超过设定值±2℃,APP推送 二级报警:传感器离线>15分钟,短信通知 三级报警:加热器启动后1小时温度未升,电话+微信告警 故障诊断知识库:平台记录故障现象与解决方案,形成案例库,辅助快速排查。 六、应用场景与效益分析 6.1 设施蔬菜种植 痛点:传统大棚依赖人工经验,环境波动大,病害频发。 解决方案:部署智能监控系统后,环境参数波动范围缩小50%,霜霉病发病率降低60%,亩均增产15-20%,能源成本下降25%。 数据示例:山东某黄瓜基地,冬季夜间温度稳定在18±0.5℃,湿度控制在85%以下,结瓜期延长20天。 6.2 育苗工厂 需求:幼苗对环境极为敏感,需精确控制。 配置:增加雾喷系统与补光灯,平台设置"小时级"工艺参数。湿度控制精度±3%RH,温度±0.5℃,成苗率提升至95%以上。 6.3 花卉与中药材种植 应用:蝴蝶兰需昼夜温差>8℃,铁皮石斛需高湿遮阴环境。系统通过"昼夜模式"自动切换参数,满足高端作物严苛要求。 6.4 农业科研与教育 价值:提供长期稳定的环境数据,支持科研实验重复性。数据开放API接口,便于接入高校科研平台。 七、安装部署与运维要点 7.1 传感器布设规范 高度标准:空气温湿度传感器距地面1.5m,CO₂传感器距地面0.5m(作物冠层),光照度传感器置于无遮挡处 密度原则:每500-1000平米部署1套环境传感器,每200平米部署1个土壤墒情点 校准周期:每年至少1次标准器校准,确保数据准确性 7.2 设备维护计划 维护项周期操作要点湿帘清洁每2周冲洗水垢,更换循环水风机轴承每季度加注润滑脂,检查皮带张力传感器表面每月软布擦拭,避免遮挡控制柜除尘每半年断电状态下用压缩空气吹扫系统软件持续定期更新固件,修复漏洞 八、经济性评估与生态价值 8.1 投资回报分析 以1公顷连栋温室为例: 项目金额(万元)占比传感器及控制柜3.535%环境调控设备4.040%软件平台与安装1.515%调试与培训1.010%合计10.0100% 收益测算: 增产收益:年增收2-3万元(10-15%增产) 节能收益:年节电约1.5万度,节省1.2万元 节药收益:病害减少,农药成本下降0.5万元 人力节省:减少1名专职管理人员,年省3万元 投资回收期:约2-3年,设备设计寿命>10年。 8.2 生态效益 节水:采用精准灌溉,节水40-50% 减药:环境可控减少病害,农药使用减少30% 节能:优化加热/降温时机,能耗降低25-35% 碳汇:作物生长健壮,固碳能力提升 九、未来发展趋势 9.1 技术演进方向 AI生长模型:深度学习作物光合、呼吸、蒸腾模型,动态优化环境参数,较固定阈值节能10-15%。 数字孪生温室:构建虚拟温室,模拟不同调控策略效果,在数字空间验证后再执行,降低试错成本。 机器人协同:与授粉机器人、采摘机器人共享环境数据,实现"环境-作业"协同调度。 区块链溯源:环境数据上链,不可篡改,支撑绿色农产品认证与品牌溢价。 9.2 标准化与政策支持 符合《设施农业物联网技术规范》(NY/T 4056-2021) 纳入国家数字农业创新应用基地建设项目补贴目录 数据接口标准化,支持接入省部级农业大数据平台 十、实施建议与风险规避 10.1 选型要点 通讯方式:连片温室优先LoRa,分散地块选4G;网络不稳定区域启用本地存储+断点续传 供电保障:关键设备配置UPS,市电+太阳能双电源 扩展预留:控制柜预留20%IO接口,便于后续增加传感器 10.2 风险与对策 风险影响对策传感器漂移控制偏差定期校准,设置数据合理性校验网络中断失控风险本地策略固化,手动应急开关极端天气设备损坏IP67防护,结构加固,购买农业保险操作失误参数错误权限分级,关键操作二次确认 结语:开启工厂化种植新时代 薄膜连栋温室智能监控系统通过"数据驱动决策、设备精准执行",将传统经验种植升级为可量化、可复制、可优化的工厂化生产模式。它不仅提升了作物产量与品质,更推动了农业从劳动密集型向技术密集型转型。随着技术成熟与成本下降,智能温室必将成为保障"菜篮子"安全、推动乡村振兴的核心引擎。 核心价值:让每一株作物都生长在"量身定制"的环境中,让每一份投入都产生最大效益,让农业成为有技术、有数据、有未来的智慧产业。 --- ### 829. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 在传统农业灌溉中,水压不稳、管道爆管、能耗过高、人工依赖等问题长期制约着灌溉效率的提升。智能恒压灌溉系统通过引入变频控制与物联网技术,实现了供水压力的动态精准调控,不仅能根据用水需求自动调节水泵转速,还能与水肥一体化、气象监测等系统深度融合,构建起高效节水的现代化灌溉体系。本文将系统解析该系统的技术架构、核心功能及实践价值。 一、系统工作原理与核心架构 1.1 恒压供水实现机制 系统核心在于通过变频器对水泵电机进行无级调速,构建闭环压力控制系统。压力传感器实时监测管道压力,数据反馈至控制器后与预设阈值比对,动态调整电机转速以维持水压恒定。例如,当多个灌溉区同时开启时,用水量增加导致压力下降,系统自动提升水泵转速;反之则降速运行,避免压力过高。 技术参数示例: 灌溉区高差8米时,所需压力约0.25MPa,对应电机转速900r/min 高差38米时,压力需升至0.55MPa,转速提升至2000r/min 高差48米时,压力达0.65MPa,转速升至3000r/min 这种精准调节模式可消除水锤效应,避免管道因压力突变而爆裂,延长水泵寿命30%以上。 1.2 系统组成要素 典型系统包含以下模块: 变频控制柜:内置PLC控制器与变频器,支持0-50Hz无级调频 水泵机组:离心泵或潜水泵,功率根据灌溉面积选配(1.5kW-15kW) 压力传感单元:4-20mA输出,精度±0.5%FS 数据采集终端:采集压力、液位、流量等数据 智能阀门:电动球阀/蝶阀,支持DN15至DN250管径 云平台:实现远程监控、策略下发与数据分析 二、核心功能特点深度解析 2.1 超长续航与低功耗设计 系统采用LoRa无线扩频技术,终端设备待机功耗仅16微安,发射功耗120毫安。配套大容量锂电池(如12V/20Ah),在每日收发10次数据频次下,理论续航可达5-8年。相比传统GPRS方案(月均功耗>500mA),电池更换周期延长3-5倍,大幅降低偏远地区的运维成本。 2.2 即装即用的部署灵活性 软硬件全中文界面设计,支持手机APP扫码自动配置。采用无线透传模式,无需布线,在复杂地形(山地、丘陵)、不规则地块中可快速部署。单套系统从开箱到上线最快仅需2小时,适配家庭农场至大型合作社的多样化需求。 2.3 工业级可靠性保障 变频控制柜防护等级达IP65,防水防尘;电路板涂覆三防漆,适应-40℃~+70℃环境温度。水泵电机选用IE3高效节能等级,绝缘等级F级。系统在盐雾、高湿、强紫外线等恶劣环境下可连续运行,MTBF(平均无故障时间)>50,000小时。 2.4 超远通讯覆盖能力 LoRa通讯视距可达3公里,城市环境穿透2-3堵混凝土墙。采用多信道跳频技术,避免同频干扰,支持32个终端设备并发通信。实际测试中,在3000亩连片农田中仅需1个网关即可全覆盖,比传统ZigBee方案减少70%中继节点。 2.5 强大扩容与兼容性 系统支持接入32路无线采集终端(如土壤墒情、气象站)和32路控制终端(阀门、水泵)。兼容脉冲阀(电磁阀)、球阀、蝶阀等多种执行机构,覆盖从滴灌、喷灌到大型喷枪等不同应用场景。后期扩容时只需扫码添加新设备,无需改造现有架构。 2.6 多维度智能灌溉策略 平台提供三种核心灌溉模式: 定时灌溉模式:按作物生育期设定开启时间、持续时长。例如番茄开花期设定每日8:00-8:30、16:00-16:30两次灌溉,每次20分钟。 循环灌溉模式:适用于需间歇供水的场景,如"开15分钟、停30分钟、循环5次",防止土壤板结与径流损失。 联动灌溉模式:基于土壤湿度阈值自动触发。当10cm深度湿度低于45%时自动开启,达到65%时停止;或结合气象数据,在降雨前24小时暂停灌溉,节省用水15-20%。 三、水肥一体化深度集成 系统可无缝接入水肥一体机,实现"灌溉+施肥"双重精准控制。管理人员在云平台设置施肥时间与浓度策略,设备自动将可溶性肥料按预设比例注入灌溉管道。 典型施肥方案: 叶面追肥:晴日上午9:00-10:00,EC值1.2mS/cm,持续15分钟 根部追肥:每次灌溉尾声注入,防止肥料流失 循环周期:每7天一次高钾肥(膨果期),每15天一次微量元素 水肥机支持4路母液通道(氮、磷、钾、微量元素),通过文丘里管或注肥泵精确配比,误差±5%。管理人员可随时通过手机APP切换自动/手动模式,查看实时EC/pH值。 四、云平台远程管理功能 4.1 多端协同控制 支持手机APP、电脑软件、网页端三端同步,管理人员身处异地也能实时监控: 压力曲线:24小时管道压力波动图,识别异常泄漏 能耗统计:每月用电量、节电率(通常节电30-50%) 操作日志:记录所有手动/自动操作,便于追溯 4.2 故障预警与诊断 压力异常报警:压力持续低于设定值20%,提示管道泄漏或水泵故障 电流过载保护:电机电流超1.5倍额定值时自动停机,推送报警 液位监测联动:水池液位低于30%自动停泵,防止空转损坏 五、典型应用场景 5.1 设施农业大棚 在蔬菜大棚中,系统与温湿度传感器联动,当棚内温度>30℃时自动开启微喷降温;结合土壤湿度传感器,实现"关键时期精准补水"。某番茄基地应用后,亩均节水120方,增产800公斤。 5.2 大田作物种植 适用于玉米、小麦等旱作农业。通过土壤墒情监测网络,按"轻旱-中旱-重旱"三级预警自动启动移动喷灌设备。新疆某兵团应用后,灌溉用工减少80%,水分利用效率提高35%。 5.3 果园经济作物 山地果园地形复杂,传统漫灌效率低。系统采用"分区轮灌"策略,每区独立阀门控制,结合LoRa无线技术解决布线难题。某柑橘园应用后,裂果率降低60%,糖度提升1.5度。 5.4 市政园林与生态修复 城市绿地灌溉需兼顾景观效果与节水要求。系统根据天气预报自动调整策略,雨前暂停、雨后复灌;结合土壤盐分传感器,防止过度灌溉导致盐碱化。某公园年节水超10万吨,维护成本下降45%。 六、经济性与生态效益分析 6.1 投资回报测算 应用场景建设成本(元/亩)年节水收益年节电收益投资回收期大棚滴灌800-1200150-200元80-120元3-4年大田喷灌500-80080-120元50-80元4-5年果园微喷600-1000120-180元60-100元3.5-4.5年 注:收益按水价2.5元/方、电价0.6元/度计算 6.2 生态与社会价值 节水效益:相比传统漫灌节水40-60% 节能效益:变频技术降低能耗30-50% 减碳效益:每亩年减少碳排放约15kg 劳动力解放:1000亩农田节约管理用工2-3人 七、发展趋势与未来展望 7.1 技术融合方向 AI智能决策:基于历史数据训练LSTM神经网络模型,预测未来7天需水量,提前优化灌溉计划。 5G+边缘计算:在变频柜中部署AI芯片,实现"端-边-云"协同,断网时本地策略自动执行。 数字孪生灌溉:构建农田三维土壤水分运移模型,可视化展示灌溉水渗透过程,指导精准滴头布置。 7.2 标准化与政策支持 随着高标准农田建设推进,恒压灌溉系统已纳入多项扶持政策: 国家节水行动方案明确推广智能灌溉 部分省份提供30-50%设备补贴 农业水价综合改革中,精准计量数据作为水权交易依据 八、实施建议与注意事项 前期规划:精确测绘地块高程,分区计算压力需求,避免"一刀切"设计 设备选型:水泵流量应大于总设计流量的120%,扬程需预留10%余量 通讯测试:安装前使用便携式LoRa信号测试仪,确保网关覆盖无死角 水质处理:浑浊度>10NTU时,必须加装砂石过滤器+叠片过滤器,防止滴头堵塞 运维培训:对一线操作人员进行云平台使用、故障排查培训,建立应急响应机制 结语:迈向智慧灌溉新纪元 智能恒压灌溉系统通过"感知-决策-执行"的闭环控制,将传统凭经验的灌溉模式转变为数据驱动的精准作业。它不仅是一项节水技术,更是农业数字化转型的关键基础设施。随着设备成本持续下降与功能集成度提升,预计未来5年内将成为规模化农业的标准配置,为粮食安全与生态可持续发展提供坚实的技术支撑。 核心价值总结:在保障作物产量的前提下,实现水资源利用效率最大化,让每一滴水都发挥价值,让每块田地都拥有智慧的"灌溉大脑"。 --- ### 830. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 引言:精准农业时代的"环境哨兵" 在数字化农业转型浪潮中,气象环境监测系统已成为现代农业基础设施的核心组成部分。该系统通过物联网技术将农田微观环境与宏观气象数据无缝衔接,构建起覆盖"天-地-空"的多维感知网络。相较于传统人工观测,自动化监测系统实现了从小时级到秒级的数据粒度跃升,为病虫害预警、精准灌溉、作物模型优化等智慧农业应用提供高质量数据底座。 一、系统架构分层解析 1.1 三层架构设计理念 系统严格遵循物联网标准架构,分为感知层、传输层、应用层: 感知层部署于田间一线,由多功能气象站、各类传感器节点及边缘计算单元构成。气象站内置主控芯片,负责协议转换与数据预处理,支持RS485总线挂载多达32个传感器,形成分布式采集网络。 传输层采用"有线+无线"双模冗余设计。无线侧支持4G/5G全网通(7模14频)、NB-IoT窄带物联网及LoRaWAN低功耗广域网;有线侧提供标准RJ45以太网与2.4GHz WiFi接入。系统智能切换最优通讯路径,确保数据传输可靠性达99.5%以上。 应用层依托云计算平台,实现数据存储、分析与可视化。平台采用微服务架构,支持10万级设备并发接入,数据响应延迟低于100毫秒。 二、核心设备组成与技术规格 2.1 多要素气象站主机 气象站采用IP67防水等级机箱,内置工业级ARM Cortex-A7处理器,运行Linux嵌入式系统。核心功能包括: 数据采集频率:1Hz~0.1Hz可调,默认1分钟上传一次打包数据 存储容量:内置8GB eMMC,支持离线存储30天数据 扩展接口:4路RS485、2路4-20mA输入、1路Modbus TCP 工作温宽:-40℃~+85℃,适应极端气候 2.2 传感器矩阵配置 系统支持模块化传感器选配,典型配置方案: 大气环境组: 温湿度一体传感器(瑞士Sensirion芯片):温度精度±0.2℃@-10~50℃,湿度±2%RH 大气压力传感器(压阻式):量程300-1100hPa,分辨率0.1hPa 光照度传感器(余弦校正):光谱范围400-700nm,量程0-200000Lux 紫外线传感器:测量UV-A/B波段,0-15mW/cm² 气象动力组: 风速传感器(超声波或机械式):启动风速0.1m/s,抗风能力75m/s 风向传感器(磁电式):16方位分辨率,无死区设计 雨量传感器(翻斗式):分辨率0.2mm/斗,精度±2% 空气质量组: PM2.5/PM10传感器(激光散射法):最小可测粒径0.3μm,寿命>3年 CO₂传感器(NDIR非分散红外):量程0-5000ppm,精度±50ppm 负氧离子检测仪(电容式):量程0-50000个/cm³,分辨率1个 土壤墒情组: 土壤温度传感器(PT1000):-20~80℃,精度±0.5℃ 土壤湿度传感器(FDR频域反射):0-100%VWC,精度±3% 土壤pH值传感器:量程3-10pH,精度±0.1pH(选配) 【图片生成建议】 :创作一张"传感器全家福"产品展示图,采用俯视45度角排列,包含风速风向仪、百叶箱、雨量计、太阳能板、立杆支架等,每个组件标注名称和核心参数,背景为透明或浅色渐变。 三、通讯技术深度解析 3.1 多模自适应通讯策略 系统内置智能路由算法,优先选择低功耗模式: 4G Cat.1模式:日常数据传输,功耗<100mA NB-IoT模式:地下室、山区等弱信号场景,穿透能力强 LoRa模式:自建局域网,单网关覆盖5-10公里农田 以太网模式:设施农业大棚内,稳定可靠 3.2 数据加密与安全机制 传输层采用TLS 1.3加密协议,防止数据劫持 设备接入需通过双向证书认证 支持VPN专网接入,满足涉密单位需求 四、云平台功能矩阵 4.1 数据可视化引擎 平台提供三种数据呈现方式: 实时监控:3秒级刷新曲线,支持多设备同屏对比 历史回溯:1分钟粒度数据查询,可缩放时间轴 报表中心:自动生成日报、周报、月报,支持PDF/Excel导出 4.2 智能报警体系 支持五级预警机制: 阈值触发:单参数超限报警(如温度>35℃) 组合条件:多参数逻辑判断(如湿度>80%且温度<15℃) 趋势预警:变化率异常(如1小时内气压下降>5hPa) 设备离线:心跳包丢失超过15分钟 人工巡视:自定义定时提醒 报警推送渠道:APP弹窗、微信公众号、短信、语音电话、Webhook接口对接企业微信/钉钉。 4.3 组态化配置 用户可自定义: 设备命名规则:支持批量导入设备名称 量程映射:4-20mA对应物理量的非线性转换 公式计算:如露点温度、饱和水汽压等衍生指标 场景模式:一键切换"育苗期"、"开花期"、"采收期"等参数阈值方案 五、供电系统方案选型指南 5.1 交流供电方案 适用场景:设施农业大棚、园区管理站、有市电接入的农田 配置清单: AC220V转DC12V稳压电源(5A/10A可选) 电源防雷器(标称放电电流20kA) 1.5mm²铠装电缆,地埋深度≥0.7米 配电箱IP65防护等级 优势:成本低、维护简单、无续航焦虑劣势:布线工程量大、雷击风险、电网波动影响 5.2 太阳能供电方案 配置参数: 太阳能板:单晶硅50W/18V,转换效率>18%,寿命>20年 蓄电池:磷酸铁锂12V/40AH,循环寿命>2000次,工作温度-20~60℃ 控制器:MPPT类型,充电效率>95%,带电池BMS管理 续航设计:连续阴雨天可工作7天(按每日耗电20Wh计算) 安装规范: 太阳能板倾角=当地纬度+15°(冬季优化) 朝向正南方向,无遮挡物 立杆安装高度>3米,防止遮光 六、安装部署实施指南 6.1 选址原则 开阔性:风速风向传感器周围10米内无建筑物遮挡 代表性:监测区域典型地块,避免局部小气候干扰 安全性:远离高压线、易积水区域,防盗措施到位 通讯测试:安装前需现场测试信号强度(RSRP>-105dBm) 6.2 立杆安装规范 标准立杆(2.5米/3.5米可选): 基础开挖40×40×50cm混凝土基础 预埋M16地脚螺栓,水平度偏差<2° 立杆垂直度校正后灌浆固定 传感器安装顺序(自下而上):土壤传感器→百叶箱→雨量计→太阳能板→风速风向仪 简易三脚架: 适用于临时监测、科研实验 快速部署时间<30分钟 需配重30kg以上或地钉固定 6.3 LED显示屏部署 技术规格: 点阵尺寸:P10(10mm间距),半户外/全户外型 功耗:平均100W/m²,峰值300W/m² 视角:水平>120°,垂直>60° 亮度:>5000cd/m²,自动光感调节 显示内容编排: 第一行:监测点名称(滚动显示) 第二行:温度 25.6℃ | 湿度 68% 第三行:PM2.5 35μg/m³ | 负氧离子 1800个/cm³ 第四行:更新时间 12-16 14:30 七、数据管理与分析策略 7.1 数据质量控制 系统内置三级数据清洗机制: 物理边界过滤:剔除超量程的异常值 连续性检验:时间序列突变检测(如1分钟内温度变化>5℃) 多源交叉验证:如用大气湿度与土壤湿度相关性辅助判断 数据有效率目标:>98%(按年统计) 7.2 典型农业应用模型 病虫害预警模型: 黄瓜霜霉病:温度15-22℃ + 湿度>85% + 叶面湿润>6小时 蚜虫爆发:温度20-28℃ + 湿度<60% + 风速<3m/s 灌溉决策模型: 土壤湿度下限阈值:田间持水量的60% 蒸散量计算:Penman-Monteith公式,需输入温湿度、风速、辐射数据 霜冻预警模型: 预警条件:气温<2℃ + 风速<2m/s + 晴空辐射(云量<20%) 提前量:2-4小时 。 八、运维管理与维护规范 8.1 日常巡检清单 周期检查项目标准工具每日平台数据在线状态100%在线手机APP每周太阳能板清洁度表面无灰尘、鸟粪软布、清洁剂每月雨量计翻斗清洁无杂物堵塞螺丝刀、清水每季传感器精度验证误差<标称值2倍标准器每年蓄电池容量测试容量>标称80%内阻测试仪 8.2 常见故障排查 现象:温度数据恒定为0℃ 可能原因:传感器接线松动、RS485地址冲突 排查步骤:检查A/B线电压(正常2-3V)、重新扫描设备地址 现象:设备频繁离线 可能原因:SIM卡欠费、天线接触不良、电源电压低 排查步骤:检查信号强度、测量电池电压(>11.5V)、更换天线位置 现象:雨量数据异常偏大 可能原因:昆虫进入翻斗、支架振动干扰 解决措施:加装防虫网、加固立杆基础 九、典型应用场景案例 9.1 设施农业大棚监控 项目背景:100亩连栋温室种植番茄配置方案: 每20亩部署1套标准气象站 增加CO₂传感器(促进光合作用) 土壤墒情传感器5点布设(四角+中心) 采用AC220V供电+UPS备用 应用成效: 病害发生率下降40%(精准预警) 节水30%(按需灌溉) 增产15%(环境优化) 9.2 大田作物监测网络 项目背景:5000亩小麦种植基地配置方案: 网格化部署,每200亩1个监测点 太阳能供电系统 NB-IoT通讯(低功耗广覆盖) 重点监测雨量、土壤湿度、风速 应用成效: 灌溉时机精准度提升50% 倒伏风险提前48小时预警 气象数据支撑农业保险理赔 9.3 现代农业产业园 项目背景:集种植、观光、科研于一体的综合园区配置方案: 主入口设置LED大屏(3m×2m),实时公示环境数据 科研区配置高精度传感器(温度±0.1℃) 联动通风、湿帘、补光等设备,实现自动化控制 十、发展趋势与技术展望 10.1 技术演进方向 融合感知:集成多光谱成像、激光雷达(LiDAR)的三维环境监测,实现作物长势与环境的同步监测。 边缘智能:在气象站端部署轻量化AI模型,实现病虫害的边缘识别,减少云端依赖。 数字孪生:构建农田三维数字模型,实时映射物理环境,支持虚拟仿真实验。 区块链存证:气象数据上链存证,确保数据不可篡改,服务农产品溯源与碳交易。 10.2 标准与规范 遵循《农业气象观测规范(QX/T 45-2007)》 符合《物联网气象数据采集器技术要求(GB/T 33703-2017)》 支持农业物联网标识体系(Ecode) 结语:构建可持续的农业数据生态 农业气象环境监测系统已从单一的数据采集工具,进化为农业生产管理的"神经末梢"。其价值不仅在于实时数据,更在于通过长期积累形成的气候资源数据库,支撑农业区划、品种选育、灾害评估等宏观决策。未来,随着设备成本持续下降与AI分析能力增强,每块农田都将拥有自己的"环境身份证",真正实现"因天制宜、因土施肥"的精准农业愿景。 部署建议:新建项目建议采用"太阳能+4G"标准配置,存量设施优先改造升级,数据平台应选择开放API接口,便于与ERP、溯源系统对接,最大化数据资产价值。 --- ### 831. Modbus Poll 中文版用户手册及软件下载 URL: https://www.modbus.cn/26919.html 作者: modbus技术团队 发布: 2024-03-24 | 更新: 2026-01-05 标签: poll, 数据寄存器, 用户手册, 符号函数, 符号计算 一、行业痛点 传统供水模式的四大核心难题,制约效率与安全: 传统屋顶水箱 / 高位水池易滋生藻类、虫蚁,二次污染直接威胁用水安全。 人工启停水泵、凭经验调阀门,常出现 “大马拉小车” 或 “小马拉大车”,能耗浪费严重且缩短设备寿命。 爆管、干抽、过压等故障难以及时发现,易引发水淹泵房、电机烧毁,单次维修费动辄数万元。 高层小区、偏远果园、夜间用水等无人值守场景,跑冒滴漏处置滞后,损失持续扩大。 二、系统定位 以 “传感器 + 边缘计算 + 云端协同” 替代人工巡检,打通 “水源 — 泵站 — 管网 — 用水端” 全链路数字化。让水泵跟着用水需求 “精准变频跑”、故障在发生前 “主动预警”、管理在千里之外 “实时可视”,彻底解决传统供水的低效与风险。 三、架构总览 图片说明:自上而下分层展示 “感知层→传输层→边缘层→平台层→应用层”,各层级用不同色块区分(感知层:蓝色 / 传输层:绿色 / 边缘层:橙色 / 平台层:紫色 / 应用层:红色),每个层级标注核心设备(如感知层含液位计、压力变送器等),用带箭头的虚线表示数据流转方向(感知层采集数据→传输层加密传输→边缘层本地运算→平台层多端同步→应用层输出分析报告),底部添加图例说明色块与箭头含义,直观呈现全链路协同逻辑。 感知层:液位计、压力变送器、流量计、温度传感器、电参数模块(覆盖电压、电流、功率、电量),精准捕捉全链路数据。 传输层:支持 4G/5G、以太网、Wi-Fi、LoRa 自组网,采用 MQTT+TLS 加密传输,断网时可缓存 7 天数据。 边缘层:智能变频柜内置 PLC,独立完成 PID 恒压运算、泵组轮换、故障保护,断网状态下仍能自治运行。 平台层:Web、APP、小程序三端数据同步,组态画面一键生成,支持多人分级权限管理。 应用层:面向物业、水务公司、园区管理者,提供能耗分析、漏损评估、泵房健康报告等核心服务。 四、核心功能 图片说明:以圆形闭环流程图呈现,中心标注 “智能供水核心闭环”,外圈按顺时针依次分布 5 个功能节点(数据采集→智能控制→故障保护→分析追溯→视频联动),每个节点用不同形状的图标区分(数据采集:方形 / 智能控制:圆角方形 / 故障保护:三角形 / 分析追溯:梯形 / 视频联动:圆形),节点间用带方向的实线连接,每个节点下方标注关键子功能(如 “数据采集” 下标注 “多源数据融合(液位 / 流量 / 压力 / 电参数)”,“故障保护” 下标注 “缺水停泵 / 超压关阀 / 四通道报警”),闭环外侧用虚线标注 “24h 不间断运行”,体现功能的连续性与协同性。 多源数据融合 水池液位(0–5m,精度 ±1cm)、瞬时流量(0–200m³/h,精度 ±0.5%)、管网压力(0–2.5MPa,精度 ±0.2%),数据采集无死角。 电参数 1s 刷新一次,实时计算能效比 kWh/m³,为节能考核提供直接依据。 全闭环恒压控制 目标压力可通过面板或远程 1s 调节,PID 自整定,稳态误差≤±0.01MPa,用水端压力稳定。 支持 “一拖多” 泵组(2 主 1 备 / 3 主 2 备),先启先停、轮换均等,单泵连续运行超时自动轮休,避免过度损耗。 多重保护策略 进水缺水:液位低于下限 30s 自动停泵,推送 “缺水报警”,防止干抽烧毁电机。 出水超压:压力持续高于上限 5s 逐台减泵,极端情况 0.2s 速关出口电动阀,保护管网不爆管。 电气故障:短路、过流、过压、欠压、缺相、过热均经硬件 + 软件双重判断,通过 APP、微信、短信、电话四通道报警。 能耗与漏损双账本 每小时自动生成能效曲线,流量突降 30% 且电流不变时,标记 “疑似漏损” 并预警。 内置水平衡模型,对比昨日同期、上周同期数据,异常区间红色高亮,辅助快速定位破管位置。 事件追溯 所有启停、压力调整、报警、人工干预记录均带时间戳和操作人账号,支持一键导出 Excel,方便对账核算。 视频联动 接入网络摄像头,报警瞬间自动抓拍 10s 短视频,水淹泵房、非法闯入等情况一目了然。 支持云台远程控制,变焦查看轴承、底座是否渗水、异响,远程可视化巡检。 五、典型场景与效益测算 图片说明:采用分组柱状图,横向 X 轴为 3 个典型场景(高层住宅 / 高尔夫球场 / 农村集中供水),每个场景下分 “改造前”“改造后” 2 组柱子;纵向 Y 轴分左右双轴,左轴为 “能耗 / 水费 / 人工(单位:万元)”,右轴为 “投诉率(单位:%)”。柱子颜色区分(改造前:浅灰色 / 改造后:深蓝色),每个柱子上方标注具体数值(如高层住宅 “改造前能耗” 柱标注 “9.8 万 kWh”,“改造后能耗” 柱标注 “4.1 万 kWh(节电 58%)”),图表右侧添加 “关键效益标注”(如 “节水 32%”“投诉率降 90%”“8 个月回本”),底部标注数据来源(“数据基于实际项目运行 12 个月统计”),清晰对比改造前后的核心效益。 高层住宅(1200 户,33 层) 改造前:工频泵 7.5kW×3 台,年耗电 9.8 万 kWh,水箱清洗 4 次 / 年,人工成本 1.5 万元。 改造后:变频恒压运行(平均频率 38Hz),年耗电 4.1 万 kWh(节电 58%);取消水箱无二次污染,水质投诉为 0;远程值守省 1 名夜班,年省人工 4 万元;综合年省约 7 万元,8 个月收回投入。 高尔夫球场(18 洞,2500 亩) 果岭、球道分 12 个灌溉区,系统根据土壤湿度、气象站蒸发量自动规划泵组输出。 比传统时序控制节水 32%,年省水费 18 万元;草坪品质提升,赛事档期增加 3 场,间接收益 60 万元。 农村集中供水(5000 人村镇) 水源井深 180m,原需专人驻点启停,夜间断水频发。 改造后实现 “水位低→自动启泵→水满停泵”,手机 APP 实时监控,村民扫码缴费;投诉率下降 90%,供水保证率提升至 98%。 六、实施步骤 现场踏勘:测量原泵房尺寸、管径、电源容量,评估增容或止回阀更换需求。 传感器布点:液位计安装于水池顶部,泵出口与最远端各设 1 只压力表,流量计选用插入式免切割型号。 边缘柜安装:支持壁挂或落地安装,防雨防尘设计,预留 30% I/O 冗余,便于后期扩容。 平台配置:导入泵房照片,10min 生成组态画面;设置压力、液位、电流等报警阈值。 策略调试:先手动测试单泵启停,确认转向