故事作者:yangchunbaixue

最近创作

看看TA的故事

【通信】遇到modbus通讯例程前的通讯尝试

已锁定

yangchunbaixue

西门子1847工业学习平台

  • 帖子

    545
  • 精华

    0
  • 被关注

    35

论坛等级:侠圣

注册时间:2020-02-18

白金 白金 如何晋级?

【通信】遇到modbus通讯例程前的通讯尝试

263

0

2021-01-13 23:10:40

在西门子论坛这个平台找到MODBUS通讯程序例程之前,初次接触两个200smart的主从通信,对于modbus主从站通讯真是无从下手,只是很久之前关于plc通讯有个轮询的概念,即主站依次顺序访问各个从站,接收到从站的通讯数据后,才发指令开始访问下一个通讯从站,直至完成整个通讯网络的访问交互任务。因为项目需要,翻找了很多200smart通讯的资料和相关视频,大致回忆记录如下。

1、硬件部分,两台S7-200 SMART ST40 plc,若干条网线,多网口路由器,一条DP 九针485通讯线(带两公头),直流电源220VAC/24VDC(350W),各个连接24V电源到PLC线缆。

2、软件部分,step7-micro/win smart 编程软件,参考资料手册等。

3、编写从站modbus通讯程序

 在项目树文件库中找到MODBUS RTU slave,调用modbus从站库:

初始化定义好从站各个通讯参数的含义

定义从站完成位Done、错误参数Error,定义VW0数据传送到QW0输出数据流

4、编写modbus主站通讯程序

调用主站库Modbus Rtu Master

定义通讯波特率、校验位、通讯口、超时时间、完成错误位

 

下面依旧要调用主站库

 

首次扫描置位M3.0,复位M3.1和M3.2。M3.0,M3.1为主站库MBUS_MSG使能端,上升沿信号有效,定义的站号还有通讯各项参数(通讯波特率、校验位、通讯口)与从站保持一致,上面是只读输入,16位,从I0.0到I1.7,取地址为VW0,下面各个参数的含义


 

 这一程序段当M0.1(只读输入取地址)无错误完成时才接通,此时复位M3.0,M3.1,M0.2,置位M3.2,下一个V区保持寄存器开始,同样上升沿信号有效,从站对应3,可读写,从第一个定义的V区地址开始,连续后面5个地址位。

下面这段是当上述完成无错误M0.2运算为1,MB3位0是接通,复位M3.2,M0.1,使上述流中断,前一个modbus完成位置0复位,M3.1又重新置位继续进第一个modbus使能端,如此保持循环。轮询进行通讯!

这里modbus库存储区建议按如下进行设置

5、测试通讯程序,完成程序编写后,把程序保存编译后后分别下载到200smart主站和从站PLC中,注意电脑与各个PLC的IP地址是处于同一网关,这里电脑PC端IP地址为192.168.2.100,子网掩码:255.255.255.0,连接PLC还有电脑PC以太网网线到路由器里,同一网段可以使用ping IP地址的方式测试网络通信质量。

  在主站状态图表中定义如下:

  在调试菜单里点击在线监视程序状态,一开始可能出现时间戳不匹配的问题,

可点击比较,如不比较继续为灰,不能继续执行下一步,当程序与PLC中一致,则可以继续,

在图表状态里改变,这两项可以反映主从站的通讯是否正常。

 首先在从站PLC上准备一根从PLC L+(24V+)到各个输入I点接线,可以随意点亮各个输入点比较长的线缆,比如点亮的为I1.1,I1.5,注意高低位顺序

可以再看保持寄存器,数据已经发生变化,第二位和第五位已经由0变为1.

在里面写入一些数据,在从站PLC点位上可见

这便是尝试MODBUS RTU通讯的简要过程,只是主站传输给从站的数据流通过mbus通讯可实现,从站传输给主站的数据还需进一步调试程序,优化验证。  


【通信】遇到modbus通讯例程前的通讯尝试 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3364条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。