西门子plc与modbus设备进485通信详解(modbus多机轮询)

1 篇文章 1 订阅

接触西门子s7-200一段时间后,接手一个通信项目,需要在触摸屏上显示三台pid温度表的温度。

一开始打算触摸屏多余的串口转485直接连接温度表,后来由于一直通信不上,怀疑触摸屏的问题,于是打算用plc来读取pid表,走的是modbus协议,即port1接三台pid表,port0用来连触摸屏以及下载程序。好了,直接上代码。

1、定义port1口的modbus属性,注意,定义完后,如果要再用port1口下载程序的话,必须先把plc设成stop(专家请无视)。

这里的奇偶校验是个坑,要找到合适的,否则error的值会一直是为3,没有返回值



2、这里是关键了,轮询三台485连接的pid温度表,这里利用done来实现三台pid表的msg发送工作,这样也能保证返回数据互不干扰。




3、同一时间只能有一个msg在工作,所以一定要让这几个m10.x分别释放


4、解析返回的数据,这部分就比较简单了,到处都有范例



经过一周的研究,总算把三台仪表的数据稳定的传出来,但是还有个疑问,modbus返回的数据里,为什么找不到地址码信息,只有返回41001的值,如果有地址码,就更好了。

下周要继续研究分别写入三个pid表参数的功能,成功了再来分享。

最后,感谢网络上那些开源的资料,虽然弯也没有少绕,哭,同时鄙视一下那些要注册才能看资料的“专业”网站,以及要各种xx币才能下载的资料。



  • 34
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
西门子1200 PLCModbus RTU轮询程序是一种通过Modbus RTU通信协议实现的数据交互方式。Modbus RTU是一种常用的串行通信协议,适用于远程监控和控制系统。 在西门子1200 PLC中,可以通过配置Modbus RTU通信模块实现与其他设备之间的数据传输。轮询程序是一种操作方式,通过循环查询不同设备的数据来实现数据的读取和写入。 实现Modbus RTU轮询程序的步骤如下: 1. 设置通信模块参数:在PLC的编程软件中,设置通信模块的串口参数,包括波特率、数据位、停止位等。 2. 定义Modbus RTU通信命令:在PLC程序中,定义Modbus RTU的读写命令,包括从设备读取寄存器的命令和向设备写入寄存器的命令。 3. 编写轮询程序:使用循环结构,在程序中按照设备的地址和功能码发送和接收Modbus RTU通信命令。可以设置多个循环,分别处理不同设备的数据。 4. 解析接收到的数据:根据Modbus RTU协议,解析接收到的数据,提取需要的信息。 5. 处理数据:根据需求,对接收到的数据行处理,包括存储、计算等操作。 6. 更新数据:根据处理后的数据,更新PLC内部的寄存器或者向其他设备发送数据。 通过上述步骤,可以实现西门子1200 PLCModbus RTU轮询程序,实现与其他设备之间的数据交互。这种方式可以广泛应用于工业自动化领域,实现设备的远程监控和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值