Modbus、KepServer、西门子PLC通信

昨天在现场实现了工业数据的通信,简单写一下。

1.按照国际惯例,先介绍一下

ModBus通信协议感觉是物理层面的,几个终端串联在一起,通过设定每个终端不同的ID号,来访问。具体硬件实现还未研究。

本系统采用ModBus RTU模式通信,使用的是和校验,低位在前。

有关ModBus的介绍,这篇文章很好:极客学院WiKiModBus协议详解

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软件写入失败,注意各种错误提示,并网上搜索,特别是各个操作系统的时间格式。

 

(后续补图)

【图片】

 

posted on 2017-12-07 09:37  hujun1992  阅读(7729)  评论(0编辑  收藏  举报

导航