用s7200和一个仪表用自由口通信,仪表返回的数据是“”80 06 82 3X 3X 3X 2E 3X 3X 3X AA“”是一段ASC码,前三个是固定不变的,最后一位是前十位数据求和取反加一,中间7位就是仪表测得距离,比如测得345.67米就是 33 34 35 2E 36 37 30
.想问一下这个用自由口通信的时候由于收到数据最后一位是个变量不能作为结束位,能不能根据接收长度作为接收结束标志,另外该怎么提取中间的测量数据并转换成实数
钻石用户推荐最佳答案
最后一位俗称校验码,是验证前面数据接收正确与否的保障。
关于接收字符的结束,你可以考虑2种方式:
1)消息定时器,即定义一个最长的字符串时间,无论消息时间长短与否均按自接收信息开始,到达这个设置的定时器时间结束。
2)如果仪表支持结束符(你确认仪表发送给主站字符是校验码结束?),那么可以考虑按结束符来判断消息的结束。如果仪表无法提供结束符,那么,只能考虑第一种方式来判断消息的结束。
注释:
结束符定义SMB89(SMB189):字符
消息定时器定义SMW92(SMW192):时间(mS)
提问者对于答案的评价:
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc365898.html