今天调试一块巡检仪和200PLC通讯的时候,遇到一个棘手的问题:200PLC硬件上支持一个停止位,而巡检仪通讯规定是两个停止位,结果按照正常的程序调试,两者通讯不上。巡检仪已经买过了,买的时候没注意这个问题,PLC也不可能更换,一直用西门子,顺手了!
网上搜了搜相关资料,有的说硬件设计问题,无法通讯,自己这是这么认为的,不过西门子官方网站的一个帖子给了启发,这里不得不说西门子官方网站,真是咱工控人的好帮手啊!原帖如下:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?myreply=1&b_id=3&a_id=326668
原帖子对于停止位通讯,说了一个思路,本人也是琢磨了半天才调试成功,这里借花献佛作一下补充。
1、如附件图片中,这是PLC发送一个字节的流程。停止位与空闲位都是高电平。当PLC连续发送多个字节时,每个字节后面都是一个标准的停止位和一个空闲位,因此若从站仪表是两个停止位,仪表是收不到PLC的数据的。

2、根据原帖中的思路,PLC可以将数据一个字节一个字节的发送,这样的好处是,由于停止位和空闲位都是高电平,当PLC发送下一个字节的时候,中间已经有很多空闲位了,对于从站仪表来说可以将第一个空闲位当做停止位,这样便可以一个字节一个字节的收数据了。本人开始测试的时候,是1S发送一个数据,巡检仪接收的全部的数据后会返回数据。
3、以上的方法也不是全部能用,但是若从站是按照字符数接收的可以用,若按照空闲线时间检测,有可能无法实现上述功能,毕竟通过发送中断来一个一个发送数据,空闲线时间是不好控制的。
巡检仪发送数据命令如下:
81H 81H 61H 00H 00H 00H 62H 00H
PLC程序如下,
点击此处查看附件