昨天在现场实现了工业数据的通信,简单写一下。
1.按照国际惯例,先介绍一下
ModBus通信协议感觉是物理层面的,几个终端串联在一起,通过设定每个终端不同的ID号,来访问。具体硬件实现还未研究。
本系统采用ModBus RTU模式通信,使用的是和校验,低位在前。
有关ModBus的介绍,这篇文章很好:极客学院WiKi
KepServer是一个提供OPC服务的服务软件,其提供一个OPC服务,可以被外部程序调用,经行client数据写入。
OPC (OLE for Process Control) 用于过程控制的OLE,
OLE是 object linking and embedding (对象链接与嵌入)的缩写。
OPC采用客户端/服务器的结构,作为中心数据源的OPC服务器负责向各种客户端提供来自现场设备的数据。
西门子PLC,我的理解就是微型计算机,只是可以在更苛刻的环境下使用。
2.如何实现
数据通过ModBus与计算机通信,使用USB转R232再转R485硬件实现。这个要提前准备好驱动,我用的是宇泰的UT-8801款USB转串口,驱动下载地址。
ModBus有两根线通信,测量两线电压应该在0.11V左右
然后通过ModBus协议读取设备的数据。
通过自己写的软件将数据传入KepServer中,教程:用C#开发OPC客户端
软件通过发送ModBus指令得到数据,通过绑定的OPC服务,根据在KepServer中建立的地址,将得到的数据写入到KepServer中。
KepServer通过网线与PLC相连,使用PLC的IP地址,和默认端口号102 通信。
在KepServer建立的点名就是上面软件的访问地址,而这些点名的地址是PLC中DB块的地址。(以后补图)
这样KepServer就可以将数据写入到PLC中,PLC使用WinCC建立界面就可以实时看到数据和数据历史曲线了。
3.小错误
电脑无法识别COM口,驱动没有装好,下次试新的电脑,一定要带一份驱动。
ModBus线不知道正负,可以使用万用表测电压检测。
ModBus数据无法读到,原理是设备的ID有重复的。
OPC软件写入失败,注意各种错误提示,并网上搜索,特别是各个操作系统的时间格式。
(后续补图)