200 smart 暨Modbus rtu通讯一例
前不久,在寻找新项目所需的红外线温度传感器硬件过程中,偶遇一款导轨式温、湿读传感器,该传感器带有Modbus rtu通讯功能,感觉可以作为西门子Modbus rtu案例写一写,加深熟悉简单的通讯应用,且这款传感器价格也非常亲民,对于初次使用者有借鉴的作用。
下单后,顺便下载了使用手册,手册非常详细的说明了该传感器的特性,图示:
电压范围,测量范围,通讯参数非常明确。
通讯参数:
上述通讯参数,符合西门子各系列PLC的Modbus rtu通讯,手头正好有200 smart 及s7-1200的PLC,可以试着写一个简单的通讯程序用来测试一番。
今天收到快递,于是在200 smart 机型测试Modbus rtu通讯:
1) 根据传感器手册说明书,连接好电源及通讯线路。
2) 打开编程软件,根据基本通讯参数编辑通讯程序:
将测试程序下载到plc,启动plc运行,创建状态图表,看温、湿度数据是否正确读取到。启动后,发现通讯MSG指令报警3#错误,该错误为从站读、写超时。也就是说没有正确连接好plc与传感器的通讯连接,开路的可能显然不可能,剩下的只能的通讯连接的极性问题,因为西门子plc侧对RS485半双工通讯的极性定义,很可能与第三方的不一致,这个我在做类似的通讯中经常有遇到,调换通讯线路,再看读取的通讯数据。
3) 在我测试上述过程中,我是沿用MSG指令管脚First用NC逻辑的SM0.1做第一次触发,用MSG指令的Done位,作为子第2次开始的连续触发测试,居然没有开始我想要的轮询,难道是plc版本问题?为了先创建通讯连接的成功,我改为系统时钟标志位SM0.5,对换通讯线路后,通讯成功,我仍然把程序修改到开始,再确认,通讯能够成功,说明有一点就是通讯错误时,轮询也可以停止,图示是通讯成功后的程序:
根据说明书的说明,其中,VW10存放的是湿度数据值,VW12是存放温度数据值。温度、湿度数据的实际值需要除10,才能够与实际数据一致。
西门子200 smart Modbus rtu通讯就是这些基本应用内容,当初次使用通讯时遇到问题不必慌张,处理过程只能是这些方面的内容,发现报警后,根据报警信息提示内容分析问题,排除可能存在的错误,直到通讯成功。