工控网首页
>

应用设计

>

本钢转炉自动化二级网关系统

本钢转炉自动化二级网关系统

2006/6/1 9:25:00
[摘 要]介绍了本钢转炉自动化二级网关系统的硬件结构、软件结构和基本功能,该系统采用TCP/IP协议和西门子工业以太网协议(ISO Ind Ethernet),实现了二级系统与PLC系统之间不同协议数据的高速通信。 [关键词]转炉;通信;网关;二级系统;PLC系统 0 引言 数据采集和数据通信无论是在工业自动化系统中还是在管理系统中都起着至关重要的作用。不同的应用系统,经常使用不同的通信协议,如何实现不同应用系统间的数据通信,并保证实时控制系统的稳定性、可靠性以及通信速度是亟待解决的问题。 由冶金自动化研究设计院为本钢二炼钢转炉自动化二级系统设计、开发的网关系统实现了两个不同通信协议系统——西门子PLC系统与二级系统之间的双向、高速数据通信。 1 系统硬件结构 本钢转炉自动化系统的硬件结构如图1所示。 网关系统的主要功能是实现二级系统与PLC系统之间的数据通信,其硬件配置为:Pentium Ⅲ CPU,256MB内存,40GB硬盘,17英寸(1英寸=2.54cm)SVGA显示器,2块3COM 3C905B 10/100Mb/s自适应以太网卡,用于连接二级网和PLC网。 Oracle服务器由外商提供,采用PC服务器,运行转炉二级系统,其主要功能是对转炉的生产控制过程进行实时监控和模型计算;SQL Server服务器也采用PC服务器,主要功能是数据采集、数据管理和报表制作。 PLC系统对转炉的生产过程进行实时控制,共有13台PLC与网关进行通信,其中,合金加料控制1台,副枪控制3台,一次除尘控制3台,副原料加料控制3台,复吹控制3台。除副枪控制采用西门子S7—300 PLC外,其他均采用西门子S7-400PLC。
2 系统软件结构 网关系统的软件配置为:操作系统采用Microsoft Windows NT 4.0 Workstation;编程工具采用Microsoft Visual C++6.0;通信软件采用SiemensSimatic Net;通信协议采用TCP/IP协议和西门子工业以太网协议(ISO Ind Ethernet)。 Oracle服务器的软件配置为:操作系统采用Microsoft Windows NT4.0 Server;编程工具采用Borland Delphi 6.0;数据库采用Oracle 8i;通信协议采用TCP/IP协议。 SQL Server服务器的软件配置为:操作系统采用Microsoft Windows NT 4.0 Server;编程工具采用Microsoft Visual C++6.0和Visual Basic 6.0;数据库采用Microsoft SQL Server2000;通信协议采用TCP/IP协议。 网关系统与PIE系统之间的数据通信协议采用西门子工业以太网协议(ISO Ind Ethernet),网关系统与Oracle服务器和SQL Server服务器之间的数据通信协议采用基于Windows系统的TCP/IP协议。 网关系统的软件结构如图2所示。 网关系统共有5个进程:系统管理进程、接收Oracle服务器数据进程、发送数据到Oracle服务器及SQL Server服务器进程、写数据到PLC进程和读取PIE数据进程,它们分别运行系统管理应用程序、接收Oracle服务器数据应用程序、发送数据到Oracle服务器及SQL Server服务器应用程序、写数据到PIC应用程序和读取PIC数据应用程序。
3 系统功能及实现 网关系统从软件结构上可分为:网关系统与西门子PIE系统之间的双向通信、网关系统与二级Oracle服务器和SQL Server服务器之间的双向通信、系统管理和数据格式及结构的转换等部分。 3.1 网关系统与PLC系统之间的通信 网关系统与PIE系统之间的通信是通过西门子的工业以太网协议(ISO Ind Ethernet)实现的,它使用西门子公司提供的Simatic Net通信软件中的S7-API函数,使得网关与西门子PIE之间可以进行双向的数据通信。 西门子工业以太网协议为7层协议,它与其它协议相比具有处理器和总线的负荷低、简单、高速及兼容性好等优点;S7—API函数为C函数,全部函数包含在S7MSC.LIB函数库中,C的头文件为SAPI___S7.H,由于是异步函数,因此它具有使用简单、灵活、数据吞吐量大、高效、可靠、兼容性好等优点,并具有容错和自动防故障功能。 网关系统与PLC系统之间的数据通信功能分为两部分:从PLC读取数据和写数据到PLC。 3.1.l 网关从PLC读取数据 读PLC数据应用程序首先通过西门子提供的通信软件,建立与13个PLC之间的通信连接,其过程为:(1)以西门子提供的PLC网络配置软件Set PG/PC Interface(V5.0)中定义的dev__name(网卡设备名)作为输入参数,调用s7_get_vfd()函数获得vfd(虚拟现场设备)名;(2)以dev__name和vfd__name作为输入参数,调用s7__init()函数,获得cp__descr(通信处理器描述符);(3)以cp__descr作为输入参数,调用s7__get__conn()函数,获得conn__name(连接名);(4)以cp_descr和conn__name作为输入参数,调用s7__get__cref()函数,获得cref(连接参考);(5)以cp__descr和cref作为输入参数,调用s7__initiate__req()函数,向PLC发出通信连接初始化的请求;(6)循环调用s7__receive()函数,等待接收PLC返回的应答信息,如果s7__receive()函数的返回值为S7__INITIATE__CNF,则说明PLC已确认连接初始化的请求,此时须调用s7__get__initiate__cnf()函数,通知PLC已经收到了确认连接初始化请求的应答信息,连接初始化过程结束。 通信连接建立完成后,读PLC数据应用程序开始定时(实际为4s)依次从13个PLC上事先定义好的读DB块中读取数据,过程为:(1)以cp__descr、cref和PLC上DB块地址为输入参数,调用s7__read__req()函数,向PLC发送读数据请求;(2)循环调用s7__receive()函数,等待接收PLC返回的应答信息,如果s7__receive()函数的返回值为S7__READ__CNF,则说明PLC允许读取数据;(3)调用s7__get___read__cnf()函数,将PLC数据读入接收缓冲区中。应用程序依据Oracle服务器二级系统定义的数据结构,将接收的PLC数据重新组合排列,再写入数据共享区中,最后以Windows消息方式向“发送数据到Oracle服务器及SQL Server服务器进程”发送消息,通知该进程读取数据。 另外,读PLC数据应用程序定时检查通信连接状态,及时发现网关与PLC的通信连接故障,如PLC掉电、停电、通信电缆掉线等,故障排除后,网关系统可以自动地与PLC重新建立通信连接,无需人工干预。 3.1.2 网关向PLC写人数据 写数据到PLC应用程序首先建立与PLC之间的通信连接,其过程与读PLC数据应用程序中建立通信连接的过程相同。当“写数据到PLC进程”接收到“接收Oracle服务器数据进程”发来的有新数据到的消息后,从数据共享区中读取新到的数据,根据接收数据块中包含的消息号(MSG__CODE)和转炉站号(STATION__CODE)确定目标PLC,依据PLC上写DB块中的数据定义顺序,将接收的数据经重新组合排列,写入到发送缓冲区中,然后再写人到PLC上的写DB块中,向PLC写数据的步骤为:(1)以cp__descr、cref和PLC上DB块地址为输入参数,调用s7__write__req()函数,向PLC发送写数据请求;(2)循环调用s7__receive()函数,等待接收PLC的应答信息,如果s7__receive()函数的返回值为S7__WRITE___CNF,则说明PLC允许写数据;(3)调用s7__get__write__cnf()函数,将数据写入到PLC上的写DB块中。 如果应用程序与PLC的通信连接出现故障,处理方法与读PLC数据应用程序中的方法相同。 3.2 网关系统与二级系统之间的通信 网关系统与二级系统之间的通信是通过TCP/IP协议实现的,它使用Windows操作系统提供的基于TCP/IP协议的Windows Socket(套接字)函数,使网关系统与二级Oracle服务器和SQL Server服务器之间可以进行双向的数据传输。 为了更好地利用Windows的消息驱动机制并简化WinSock网络编程,网关与二级的通信系统使用了Microsoft的基本类库(MFC)提供的异步套接字类CasyncSoceket。该CasyncSocket类在很低程度上对WinSock API进行了封装,它提供的低级接口几乎和WinSock API的函数调用直接对应,使编程工作大大简化,而且,它提供了事件处理函数,通过对事件处理函数进行重载,应用程序可以很方便地对套接字发送、接收数据等事件进行处理。需注意的是,CasyncSocket类只支持异步操作,不支持阻塞。 网关系统根据自身的特点和所要实现的功能,并为使应用程序能够捕获并响应socket事件,创建了自己的从CasyncSocket类继承的派生类——CMyRcvSkt类和CMySndSkt类,在CMyRcvSkt类中对事件处理函数OnAccept()、OnReceive()和OnClose()进行了重载,在CMySndSkt类中对事件处理函数OnConnect()和OnSend()进行了重载。 3.2.1 接收二级Oracle服务器发送的数据 首先,“接收Oracle服务器数据”应用程序与二级Oracle服务器之间通过新创建的套接字类CMyRcvSkt建立通信连接,网关作为套接字服务器端,二级Oracle服务器作为套接字客户端,其过程为:(1)创建两个CMyRcvSkt类的对象实体:用于侦听的m__sListenSocket对象和用于连接的m__sConnectSocket对象;(2)在应用程序初始化阶段,先调用m__sListenSocket对象的Create(m__server__port)函数,创建与设置的端口绑定的套接字,输入参数m__server__port为侦听端口,再调用m__sListenSocket对象的Listen()函数,设置网关系统为侦听状态;(3)当网关系统侦听到Oracle服务器发来的请求连接的请求后,以m__sConnectSocket对象为输入参数调用m__sListenSocket对象的OnAccept(m__sConnectSocke)函数,使得m__sConnectSocket对象与Oracle服务器建立真正的通信连接,而m__sListenSocket仍处于侦听状态。 网关与Oracle服务器的通信连接建立后,则随时等待接收二级Oracle服务器发送来的数据,当有新数据发来时,网关系统自动调用m___sConnectSocket对象的Receive()函数,将新数据读入接收缓冲区中,根据接收数据块中包含的消<
投诉建议

提交

查看更多评论
其他资讯

查看更多

智光节能内蒙古阿拉善左旗瀛海建材余热发电机组首次启动成功

智光电气台州电厂给水泵系统节能改造项目成功投运

智光节能荣登2014年度全国节能服务公司百强榜第五位

索引程序编程凸轮表

奥越信300系列PLC手册