S7-200 自由口通信是否支持 2个停止位低头读手腕上的时钟,显示北京时间 08 点 25 分,刚抵达公司的正门,刷第一次门禁,接着刷第二次门禁, 08 点 30 分准时坐在答热线的座位上,忙碌而充实的一天已被触发。一如既往的打开问题平台并扫描客户登记的问题, “ S7-200 自由口通信的停止位设置”映入眼帘,之前与自由口通信已是亲密无间,于是信心满格的拨通客户那头的号码。“喂,哪位? ”电话那头传来急促的声音; “李工您好,这里是西门子技术热线,请问您有什么技术问题”,始终如一的开场白再次出现; “啊!是西门子的工程师啊,您好!我有一个问题想请教一下……”急促的声音顿时跳变为些许欣慰,问题内容是 S7-200 的 PLC 与第三方的仪表进行自由口通信,通信对象的传输格式有两个停止位, S7-200 是否支持? 查阅 Micro ’ Power 文档的自由口通信部分,明确的说明了 S7-200 使用的芯片不支持上述格式,即硬件不支持。告知客户该结论后,客户进一步咨询:如果 S7-200 的传输格式有一个停止位,而通信对象本身设置的接收格式为两个停止位,能否实现数据的收发? 听了客户的描述不禁懵了,这样的数据收发能实现吗?俗语说“到处留心皆学问”,这个有价值的问题需要进一步确认。根据客户提的这个问题而做了以下的测试: 测试一:通过串口调试器测试, S7-200 与串口调试器的波特率、数据位、校验位设置完全一致,只有停止位是不同的, S7-200 的停止位默认是一位且无法修改,而串口调试器的停止位设置为两位; S7-20 0 无论是发送数据到串口调试器,还是从串口调试器接收数据,通信一切正常; 测试二: 通过 S7-300 的串口模块 CP341 测试, S7-200 与 CP341 的波特率、数据位、校验位设置完全一致,只有停止位是不同的, S7-200 的停止位同上为 1位,而 CP341 的停止位设置为两位;无论是同上的数据收发测试,还是更改通信双方的校验位(奇校验或偶校验)之后的测试,通信仍然正常。根据传送数据的格式规定的不同,串行通讯可采用以下两种传输方式: (1)异步通讯:以字符为数据传输单位,在通信的数据流中,字符间异步,字符内部各位间同步。一旦传送开始,组成这个字符的各个数据位将被连续发送,并且每个数据位持续的时间是相等的,接收端通过检测字符中的起始位和停止位(奇偶校验位)来判断接收到达的字符; (2)同步通讯:以帧(含多个字符)为数据传输单位,字符之间不允许有间隙,也没有起始位和停止位, 为了保证接收端能正确区分数据流,收发双方必须建立起同步的时钟。 S7-200 的自由口通信方式显然属于异步通信方式,其每个字符的传输格式如下图所示: 起始位表示一个字符的开始,低电平表示,停止位表示一个字符的结束,用高电平表示,停止位结束到下一个字符的起始位之间的空闲位(即空闲线)用高电平填充。当校验类型是奇校验或偶校验时,对应的校验位为低电平或高电平,字符的数据位为 11 位;当校验类型是无校验时,传输格式中
停止位问题 来自淘豆网m.daumloan.com转载请标明出处.