请问各位大侠s7-200自由口通讯中内部字符定时器和信息定时器有什么区别怎么定义空闲时间

2024-12-15 01:17:40
推荐回答(2个)
回答1:

首先你要明白消息和字符分别是什么含义。消息是包含字符的。比如要接收的一串消息是:#ajt$,那么:#ajt$一是一个完整的消息,里面的#,a,j,t,$都是里面的字符。smater 200里面的SMW92可以有两个配置,一个是作为字符定时器,一个是作为消息定时器,假如SMW92设置为100ms,那么SMW92两种配置的功能分别是:1,当配置为字符定时器时,在接收#,a,j,t,$这些字符时,这些字符间的间隔不可以超过SMW92设置的100毫秒,如果超过,那么就要中止接收,已经接收到的这些字符当作一个消息存到缓存区。2,当配置为消息定时器时,接收到第一个字符后开始计时,如果计时时间达到SMW92设置的100毫秒,那么就中止接收,已接收的字符存到消息缓存区。
另外你提问的空闲时间,你这样想,如果从站一直不停的给PLC发字符,那么是不是所有发过来的字符都是PLC想要的呢?不一定,有可能是干扰,有可能是其它我不想要的字符,怎么样确定是PLC想要的字符并且开始接收呢?有两个方案,一个是空闲时间来确定,一个是起始字符来确定:1,空闲时间,通过SMW90来设置空闲时间,假如SMW90设置为200MS,那么如果现在距离上次接收消息等于或者超过200毫秒,PLC就开始处于接收状态,具体怎么接收和处理,可以参见上一段。2,接收字符,通过SMB88来设置接收字符,比如如果SMB88=16#17,那么当PLC检测到16进制17这个字符的时候,就开始接收下面的所有字符,如果接收到的不是17而是其它字符,那么就把其它字符忽略,接收开始后的动作,也可参考上面一段。
可能LZ问题已经解决,回答这个问题,考虑到其他有需要的兄弟。

回答2:

LZ是在研究通信协议吧,如果只是做S700自由口进行Modbus Rtu通讯的话不妨下一个协议库,这样可以节省你开发和调试的时间,也免去了你上面所提的这些困扰。