首页 上一页 1 2 下一页 尾页

原创:西门子PLC通信中的Modbus协议编程方法 点击:2320 | 回复:21



mydatai

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:39帖 | 46回
  • 年度积分:0
  • 历史总积分:503
  • 注册:2011年1月07日
发表于:2012-09-25 11:54:11
楼主

  假设把PLC1作为主站,PLC2作为从站,分别编写主站和从站程序,主要掌握以下要点:

Modbus 主站读写程序

    •  Modbus RTU主站功能是通过指令库中预先编好的程序功能块实现的,该库只针对Port 0口有效;
    •  在程序中插入MBUS_CTRL指令,并在每次扫描时执行MBUS_CTRL。您可以使用MBUS_CTRL指令初始化或更改Modbus通讯参数。

  图例略

 

    •  Modbus RTU主站使用了一些用户中断,在用户程序中不能禁止中断;
    •  读取从站数据在程序中插入MBUS_MSG指令,注意从站地址设置用一致;
    •  该例程访问的为一个从站,若访问不同的从站,可通过改变从站地址来实现。

 

  图例略

 

Modbus 从站读写程序

  • 在第一个循环周期内插入MBUS_INIT指令初始化Modbus从站协议:

Mode:       模式选择,启动/停止MODBUS1=启动;0=停止

     Address:  从站地址,MODBUS从站地址,取值1~247

Baud:       波特率,可选1200240048009600192003840057600115200

     Parity:       奇偶校验,0=无校验;1=奇校验;2=偶校验

        Delay:       延时,附加字符间延时,缺省值为0

              Done:        初始化完成标志,成功初始化后置1

        Error:        初始化错误代码

 

    • 本例子中,设置从站地址为8Port0 通讯波特率为9600bps,无校验;
    • 本例子中Modbus RTU 从站指令使用的库存储为VB2000---VB2779,这段寄存器地址不能再被程序中的任何指令使用,包括MBUS_INIT  MBUS_SLAVE 指令在内。

  图例略

  •        MBUS_SLAVE指令被用于为Modbus主设备发出的请求服务,并且必须在每次扫描时执行,以便允许该指令检查和回答Modbus请求。在每次扫描且EN输入开启时执行该指令。

正在下载,请等待……
下载附件需1积分!




星空211

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 47回
  • 年度积分:0
  • 历史总积分:106
  • 注册:2018年12月02日
发表于:2018-12-02 16:48:44
21楼

看看,学习一下看看,学习一下看看,


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页