当前位置: 首页 > news >正文

Modbus RTU(主站) 485通讯主站程序(端口0作主站) 1.西门子224xp或200...

Modbus RTU(主站) 485通讯主站程序(端口0作主站) 1.西门子224xp或200smart 2.采用modbus rtu协议 3.支持16#03和16#06功能码 4.使用XMT和RCV指令开发 5.具有重试2次的通讯功能(重试次数可修改)

最近在工控项目里踩了个坑,搞了个西门子200 SMART做主站的Modbus RTU通讯程序。这玩意儿用XMT/RCV指令手搓协议帧是真费劲,不过折腾完发现也没那么邪乎,今天就把核心代码扒出来聊聊。

Modbus RTU(主站) 485通讯主站程序(端口0作主站) 1.西门子224xp或200smart 2.采用modbus rtu协议 3.支持16#03和16#06功能码 4.使用XMT和RCV指令开发 5.具有重试2次的通讯功能(重试次数可修改)

硬件配置这块儿得先整明白,224xp或200 SMART的Port0默认是PPI口,得先用SM0.1初始化成自由口:

MOV_B 16#09, SMB30 //9600波特率,8数据位无校验 MOV_B 16#B0, SMB87 //启用接收定时器 MOV_B 200, SMB34 //接收超时200ms ATCH INT_0, 9 //接收完成中断 ENI

功能码03和06的处理其实可以套模板。比如写保持寄存器的06功能码报文:

//发送缓冲区VB100-VB109 VB100 = 1 //从站地址 VB101 = 6 //功能码 VB102 = 0 //寄存器地址高字节 VB103 = 1 //寄存器地址低字节 VB104 = 0 //数据高字节 VB105 = 100 //数据低字节(写入值100) CRC16(VB100,6) //自动生成校验码到VB106-VB107 XMT VB100, 8 //发送8个字节

这里有个小细节要注意,西门子的数据存储是高位在前,但Modbus寄存器地址得用大端模式。比如说VW200对应保持寄存器40001的话,得拆成00 00转成16进制地址。

接收处理在中断程序里搞:

//INT_0 RCV VB200, 0 //接收数据到VB200开始 MOV_B &VB200, VB0 //取从站地址 MOV_B &VB201, VB1 //功能码 MOV_B &VB202, VB2 //返回数据长度

校验这块儿得自己写个CRC校验子程序,网上找个现成的算法挂上去就行。校验失败就触发重试:

//主程序里 LD SM0.0 CALL CRC_CHECK, VB200, 8 //假设接收8字节 = M0.0 //校验结果标志 LDN M0.0 EU //校验失败上升沿 INC_VB 10 //重试计数器VB10

重试机制用了个循环结构:

//发送失败后 LD SM4.5 //发送完成标志 A I0.0 //手动启动信号 MOV_B 0, VB10 //初始化重试计数器 LBL 1: XMT VB100, 8 //发送报文 TON T37, 500 //500ms超时 LD T37 //超时未响应 O SM4.5 //或发送失败 CTU C0, VB10 //计数重试次数 LD C0 AB< VB10, 2 //重试次数未达上限 JMP 1 //跳回重试

实测发现这个结构有个坑——连续发送时得等前一条报文超时才能重发。后来在发送前加了段复位逻辑:

//每次发送前 R SM87.7, 1 //禁用接收 XMT VB100, 8 MOV_B 2, SMB87 //重新启用接收

最后说个血的教训:用自由口搞Modbus千万别开西门子自带的库指令,这俩货会互相抢串口控制权。测试时用Modscan32之类的工具抓包看原始报文最靠谱,毕竟现场仪表经常不按套路出牌。

http://www.jsqmd.com/news/321689/

相关文章:

  • 基于微信小程序的个性化漫画阅读推荐系统的设计与实现
  • 计算机毕业设计之jsp考试报名及成绩查询系统
  • 义乌雷硕包装制品有限公司 联系方式: 供应商联系与风险提示参考
  • 微信立减金回收全攻略,普通人也能轻松上手,闲置不浪费
  • 优化SEO效果的长尾关键词策略与应用技巧
  • 计算机毕业设计之springcloud基于微服务的中小企业实习生管理系统设计与开发
  • 义乌雷硕包装制品有限公司 联系方式:核实官方信息与沟通准备建议
  • 基于微信小程序的大学生就业管理系统设计与实现
  • 计算机毕业设计之jsp基于SSM的社区志愿者服务管理系统
  • CH32系列MCU外设使用相关注意事项
  • Pytest实践:使用Pytest进行API测试
  • 2026厦门装修公司口碑排行TOP10|海滨家装避坑指南,选对不踩雷
  • 使用Docker容器化部署微服务,解决环境配置难题
  • 爆火Browser-Use实战:让AI替你操作浏览器,爬虫/自动化填表一行代码搞定
  • 温州AI巨头光景极欧:揭秘行业巨头的崛起之路
  • 闭环伺服步进电机(磁编码器)全套方案 步进电机 闭环控制器 42步进电机 包含说明文档,AD工...
  • 2026表面缺陷检测系统公司技术创新与行业应用分析
  • 服务端性能测试:行业流行性能监控工具介绍
  • 2026厦门室内设计公司口碑榜单|避坑指南+选企秘籍
  • 文章跨境版权保护难题多?可信时间戳全流程解决方案来救场!
  • deepseek和豆包AI广告GEO服务商选型指南(2026年2月)
  • 专利设计跨境版权保护全攻略:可信时间戳实操指南
  • 2026年广州靠谱的袜子厂家排名,重德针织袜业口碑好值得推荐
  • 2026年黑芝麻专业供应商排名,合古实业服务闽浙粤受好评
  • 从小白到专家:AI Agent系统六大核心模块深度解析(必收藏)
  • 收藏备用|2026AI大模型各岗位薪资对比(小白程序员入门必看)
  • 导师推荐10个AI论文平台,专科生搞定毕业论文!
  • 2026厦门装修公司口碑盘点:实用避坑攻略,业主速藏!
  • 瑞祥商联卡(全球购)回收怎么操作才不吃亏
  • 计算机等级考试(二级WPS)---第4章:创建与处理演示文档--- 选择题题库