《本钢转炉自动化二级网关系统.docx》由会员分享,可在线阅读,更多相关《本钢转炉自动化二级网关系统.docx(6页珍藏版)》请在优知文库上搜索。
1、本钢转炉自动化二级网关系统介绍了本钢转炉自动化二级网关系统的硬件构造、软件构造和基本功能,该系统采用TCP/IP协议和西门子工业以太网协议(ISOIndEthernet),实现了二级系统与PLC系统之间不同协议数据的高速通信。转炉;通信;网关;二级系统;PLC系统0引言数据采集和数据通信无论是在工业自动化系统中还是在管理系统中都起着至关重要的作用。不同的应用系统,经常使用不同的通信协议,如何实现不同应用系统间的数据通信,并保证实时控制系统的稳定性、可靠性以及通信速度是亟待解决的问题。由冶金自动化研究设计院为本钢二炼钢转炉自动化二级系统设计、开发的网关系统实现了两个不同通信协议系统西门子PLC系
2、统与二级系统之间的双向、高速数据通信。1系统硬件构造本钢转炉自动化系统的硬件构造如图1所示。网关系统的主要功能是实现二级系统与PLC系统之间的数据通信,其硬件配置为:PentiumIIICPU,256MB内存,40GB硬盘,17英寸(1英寸=2.54CnI)SVGA显示器,2块3COM3C905B10/IOOMb/s自适应以太网卡,用于连接二级网和PLC网。OraCle服务器由外商提供,采用PC服务器,运行转炉二级系统,其主要功能是对转炉的生产控制过程开展实时监控和模型计算;SQLSerVer服务器也采用PC服务器,主要功能是数据采集、数据管理和报表制作。PLC系统对转炉的生产过程开展实时控制
3、,共有13台PLC与网关开展通信,其中,合金加料控制1台,副枪控制3台,一次除尘控制3台,副原料加料控制3台,复吹控制3台。除副枪控制采用西门子S7300PLC外,其他均采用西门子S7-400PLC。3系统功能及实现网关系统从软件构造上可分为:网关系统与西门子PlE系统之间的双向通信、网关系统与二级OraCIe服务器和SQLServer服务器之间的双向通信、系统管理和数据格式及构造的转换等部分。3.1网关系统与PLC系统之间的通信网关系统与PlE系统之间的通信是通过西门子的工业以太网协议(ISOIndEthernet)实现的,它使用西门子公司提供的SimaticNet通信软件中的S7-API函
4、数,使得网关与西门子PIE之间可以开展双向的数据通信。西门子工业以太网协议为7层协议,它与其它协议相比具有处理器和总线的负荷低、简单、高速及兼容性好等优点;S7API函数为C函数,全部函数包含在S7MSC.LIB函数库中,C的头文件为SAPIS7.H,由于是异步函数,因此它具有使用简单、灵活、数据吞吐量大、高效、可靠、兼容性好等优点,并具有容错和自动防故障功能。网关系统与PLC系统之间的数据通信功能分为两部分:从PLC读取数据和写数据到PLCo3.1.1网关从PLC读取数据读PLC数据应用程序首先通过西门子提供的通信软件,建立与13个PLC之间的通信连接,其过程为:(1)以西门子提供的PLC网
5、络配置软件SetPG/PCInterface(V5.0)中定义的dev_name(网卡设备名)作为输入参数,调用s7_get_vfd()函数获得vfd(虚拟现场设备)名;(2)以devname和vfdname作为输入参数,调用s7init()函数,获得CP_descr(通信处理器描述符);(3)以cpdescr作为输入参数,调用s7getConn()函数,获得conn_name(连接名);(4)以cp_descr和conn_name作为输入参数,调用s7getcref()函数,获得Cref(连接参考);(5)以CP_descr和cref作为输入参数,调用s7initiate_req()函数,向
6、PLC发出通信连接初始化的请求;(6)循环调用s7_receiveO函数,等待接收PLC返回的应答信息,如果s7receive()函数的返回值为S7_INlTIATE_CNF,则说明PLC已确认连接初始化的请求,此时须调用s7get_initiate_cnf()函数,通知PLC已经收到了确认连接初始化请求的应答信息,连接初始化过程结束。通信连接建立完成后,读PLC数据应用程序开始定时(实际为4s)依次从13个PLC上事先定义好的读DB块中读取数据,过程为:(1)以CPdescr、cref和PLC上DB块地址为输入参数,调用s7readreq()函数,向PLC发送读数据请求;(2)循环调用s7_
7、receiveO函数,等待接收PLC返回的应答信息,如果s7_receiveO函数的返回值为S7READCNF,则说明PLC允许读取数据;(3)调用s7_getread_cnf()函数,将PLC数据读入接收缓冲区中。应用程序依据Oracle服务器二级系统定义的数据构造,将接收的PLC数据重新组合排列,再写入数据共享区中,最后以Windows消息方式向“发送数据到Oracle服务器及SQLSerVer服务器进程”发送消息,通知该进程读取数据。另外,读PLC数据应用程序定时检查通信连接状态,及时发现网关与PLC的通信连接故障,如PLC掉电、停电、通信电缆掉线等,故障排除后,网关系统可以自动地与PL
8、e重新建立通信连接,无需人工干预。3.1.2网关向PLC写人数据写数据到PLC应用程序首先建立与PLC之间的通信连接,其过程与读PLC数据应用程序*立通信连接的过程一样。当“写数据到PLC进程”接收到“接收Oracle服务器数据进程”发来的有新数据到的消息后,从数据共享区中读取新到的数据,根据接收数据块中包含的消息号(MSG_CODE)和转炉站号(STATION_CODE)确定目标PLC,依据PLC上写DB块中的数据定义顺序,将接收的数据经重新组合排列,写入到发送缓冲区中,然后再写人到PLC上的写DB块中,向PLC写数据的步骤为:(1)以CPdescrCref和PLC上DB块地址为输入参数,调
9、用s7_write_req()函数,向PLC发送写数据请求;(2)循环调用s7_receiveO函数,等待接收PLC的应答信息,如果s7receive()函数的返回值为S7_WRITECNF,则说明PLC允许写数据;(3)调用s7get_write_cnf()函数,将数据写入到PLC上的写DB块中。如果应用程序与PLC的通信连接出现故障,处理方法与读PLC数据应用程序中的方法一样。3.2网关系统与二级系统之间的通信网关系统与二级系统之间的通信是通过TCP/IP协议实现的,它使用Windows操作系统提供的基于TCP/IP协议的WindowsSocket(套接字)函数,使网关系统与二级OraCI
10、e服务器和SQLServer服务器之间可以开展双向的数据传输。为了更好地利用Windows的消息驱动机制并简化WinSock网络编程,网关与二级的通信系统使用了Microsoft的基本类库(MFC)提供的异步套接字类CaSynCSoCeket。该CasyncSocket类在很低程度上对WinSockAPI开展了封装,它提供的低级接口几乎和WinSoCkAPI的函数调用直接对应,使编程工作大大简化,而且,它提供了事件处理函数,通过对事件处理函数开展重载,应用程序可以很方便地对套接字发送、接收数据等事件开展处理。需注意的是,CasyncSocket类只支持异步操作,不支持阻塞。网关系统根据自身的特
11、点和所要实现的功能,并为使应用程序能够捕获并响应socket事件,创立了自己的从CasyncSocket类继承的派生类CMyRcvSkt类和CMySndSkt类,在CMyRcvSkt类中对事件处理函数OnAccept()、OnReceive()和OnClose()开展了重载,在CMySndSkt类中对事件处理函数OnConneCt()和OnSend()开展了重载。3.2.1接收二级OraCle服务器发送的数据首先,“接收OraCIe服务器数据”应用程序与二级OraCle服务器之间通过新创立的套接字类CMyRCVSkt建立通信连接,网关作为套接字服务器端,二级Oracle服务器作为套接字客户端,
12、其过程为:(1)创立两个CMyRCVSkt类的对象实体:用于侦听的m_SListenSocket对象和用于连接的mSConnectSocket对象;(2)在应用程序初始化阶段,先调用m_SListenSocket对象的Create(mserver_port)函数,创立与设置的端口绑定的套接字,输入参数mserver_port为侦听端口,再调用m_SListenSocket对象的LiStenO函数,设置网关系统为侦听状态;(3)当网关系统侦听到Oracle服务器发来的请求连接的请求后,以mSConnectSocket对象为输入参数调用m_SListenSocket对象的OnAccept(m_SConnectSocke)函数,使得m_SConnectSocket对象与Oracle服务器建立真正的通信连接,而m_SListenSocket仍处于侦听状态。网关与Oracle服务器的通信连接建立后,则随时等待接收二级Oracle服务器发送来的数据,当有新数据发来时,网关系统自动调用mSConnectSocket对象的Receive()函数,将新数据读入接收缓冲区中,根据接收数据块中包含的消