各位晚上好!
我现在要用西门子s7-200 PLC(CPU 224 CN )实时读取数字式温度传感器的温度值,该传感器采用了485串口通讯协议,波特率9600。
我使用了XMT/RCV指令。在SM0.1触发的初始化子程序中,进行了如下参数设置:由SMB30设定为偶校验,波特率9600,自由口模式,SMB87设定允许接收字符,使用SMB88检测起始状态;使用SMB89检测结束状态,忽略检测空闲状态;最大接收字符数量SMB94设置为26。在VB200中设定接收数据字节的个数(为26),接收的数据依次存放于VB201/VB202/VB203/...地址区中。(即SMB30的值设置为16#09,SMB87设置为16#E0,SMB88设置为16#54,SMB89设置为16#0A,SMB94设置为16#1A)。另外在该子程序中,还按传感器通讯协议要求,装载了所应该由主机发送给传感器芯片的字符,装载在VB101-VB105地址区中,VB100装载了发送字符个数5。接着启用XMT指令从0端口发送VB100之后地址区的数据。
主程序的逻辑是这样的:每次发送完毕,触发中断事件9。中断9中,先触发一个300ms的定时器,时间一到在启用RCV指令从端口0接收数据,数据存储在VB201-VB226中。当接收完毕,再触发中断事件23,在本中断中再启用XMT指令重新发送数据。特别说明,300ms的延时是由于传感器读取到一路温度数据所需的时间。
然而,我在接好线(传感器信号线A/B线分别焊接到一个*串口背面对应的针脚,然后将该*串口插到PLC串口上,并保证线序没错。)之后上电调试,发现怎么PLC怎么也收不到传感器回传的数据字符(这点是通过用QB0上的点位信号的亮/灭来验证)。
由于试了较长时间无果,没找到问题所在,束手无策,比较痛苦。所以在此详细写出来,请求高手指点迷津。非常感谢!
PS: 本人还用了无中断的方式来编程,即通过监控SMB4.5以及SMB86来处理收发数据完毕,但仍旧行不通。