使用S7-200 Modbus RS485 通讯要注意的地方点 (留个纪念)

已锁定

超新手

  • 帖子

    13
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2010-04-19

普通 普通 如何晋级?

使用S7-200 Modbus RS485 通讯要注意的地方点 (留个纪念)

4272

14

2014-08-28 15:06:23

4年前研究过, 总结了些心得, 但是时间久了,忘记了, 结果这次又犯晕,折腾了N久才回过神。记下来,备忘。

1. A、B端子问题:
RS485信号线通常会标记为 A、B. 但是, 但是... S7-200 的A是负, B是正; 而通常USB转RS485或是智能仪表都是A为正, B为负的. 稍不注意就会接错线的....

2. 奇偶校验、停止位问题:
官方、网上文章所有的例程都是设为 不做校验 (Parity = 0), 呵呵呵。 实际的情况是, S7-200 做从站时, 如果不做校验, 需要把智能仪表的停止位设成2, 凑成11位;
如果S7-200做主站, 选择不做校验,那么智能仪表这边停止位还是设为1.

从PC机上用Windows API做串口通讯,设置通讯参数时要注意, Dc.StopBits的0: 1bit; 1:1.5bit; 2: 2bit, 所以不能想当然设成1.
当PLC做主站时, PC机读串口时,必须把停止位设成1才能读成功。但是返顺信息给PLC写串口时, 停止位1bit或2bit都可以。

3.网络连接器
用Profitbus DP数据总线插头就行了, 或者直接把设备的RxD+ 和 RxD- 分别与S7-200串口中对应的针脚连起来也能用。

4. modbus地址问题
地址分4 大类, 跟是读还是写没关系.
注意S7-200 的地址 在智能仪表的基础上加1, 比如说仪表手册上是0x0040, 那么地址要设为65

5. S7-200做主站时,库指令modbus功能号(Function Code)问题
猜测是由指令的读/写(RW, 0/1)这个选项以及要求读写的个数以及地址类型综合决定的。经测试, 如果读写选项为1(写), 地址为4xxxx, 写的个数大于1,则发出的信息Function code是16 (0x10)
当读写选项为0(读), 其它不变时, 则发出的信息Function Code是04

5. 主站指令的“初始化与控制”是一直工作的,当尝试把MBUS_CTRL_Done输出强制为0后,发现立即又被置为1(初始化成功), 说明指令是持续工作的。
使用S7-200 Modbus RS485 通讯要注意的地方点 (留个纪念) 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33300条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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