使用S7-200 Modbus RS485 通讯要注意的地方

分享到:
275
下一篇 >

斑竹分享:

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.

所以, 不如设成奇校验或是偶校验, 简单方便。

MBRTU 串口调试工具很好用, 打开串口时, Line Control中默认是 N,8, 1; 即不做奇偶校验, 把N 改成O (奇校验 odd) 或是E (even, 偶校验)即可. 只支持Com 1 / Com2, 所以对USB转RS485的,注意在电脑上设备管理器中端口号要改一下, 同时要通讯参数也要设置一致

3.网络连接器

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

4. Modbus地址问题.

*简单的办法是根据智能仪表的手册 功能号 来选择对应的地址段. 比如手册上说读模拟量寄存器功能号是4, 那就反查出是3xxxx.

S7-200 的地址 在智能仪表的基础上加1, 比如说仪表手册上是0x0040, 那么地址要设为65

5. 其它

没有其它了, 上面的问题解决了, 一切顺利了......


游民:

关于楼主说的**点,系统手册明确指出停止位主从站均为1位,哪里可以把停止位设为2位?200的通讯口好像就还只支持1位停止位的格式。


斑竹:

第2点的意思是说:

(1) 如果S7-200做从站, 选择 无校验, 那么要把 智能仪表 这边停止位设成 2.

(2) 如果S7-200做主站, 选择 无校验, 那么要把 智能仪表 这边停止位还是设成 1.

S7-200这边库指令是没办法调停止位的


游民:**点实际是把仪表发出的2位停止位当1位停止位用,智能仪表应该也要选择无校验

**点实际是仪表匹配将就做主站的200(它只支持1位停止位),智能仪表仍应该选择无校验

综上所述,校验位的选择必须仪表和200匹配才行。


斑竹:

如果仪表的停止位你能随意控制(比如程序就是你写的),不妨区分收停止位和发停止位。

一般的串口通讯收发停止位是相同的。本着严以律已宽以待人的精神,尽量给通讯对方多的停止位(即发时的停止位),而收时则只要求基本的停止位(一般是1位),这样就可以适应任何的停止位模式。



你可能感兴趣: 工控菜鸟园 自动化系统 SIMATIC S7-200 Modbus 通讯
无觅相关文章插件,快速提升流量