基于Prodave的自动化监控系统的开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Prodave的自动化监控系统的开发
胡俊
【摘要】本文介绍了一套由西门子S7 300系列CPU构成的自动化系统的网络结构,通过Prodave设计适用于该自动化系统的监控系统,并将其应用于工业自动化生产中.该监控系统实现了现场多台PLC与多条工业网络之间的互联,利用Prodave 实现现场自动化系统数据实时读取.该软件使维修人员可远程查看自动化生产状态,对系统中重要数据进行监控,实现存储过程数据、查询历史生产数据的功能.
【期刊名称】《数字技术与应用》
【年(卷),期】2017(000)008
【总页数】4页(P166-168,170)
【关键词】C#.NET;S7-300;Prodave;多线程;监控系统
【作者】胡俊
【作者单位】赛科利(南京)汽车模具技术应用有限公司,江苏南京210032
【正文语种】中文
【中图分类】TP277
随着我国工业水平的飞速发展,越来越多的企业开始注重自动化设备的应用。

以PLC为下位机进行现场数据采集和设备控制、计算机为上位机进行系统监控与数据处理的自动化系统在现代自动化设备中的应用愈加广泛。

针对一套尚无计算机监控系统的冷冲压自动化线,基于C#高级程序语言和Simatic Prodave软件包,利用多线程技术创立了一套适用于该自动化设备的监控系统。

用于建立自动化监控系统的自动化冲压生产线控制系统以PLC为核心,由四台压机PLC、一台自动化PLC与一台清洗机PLC构成。

系统网络结构简图如图1所示。

整条自动化线以自动化PLC为主PLC,全部六个PLC通过PROFIBUS总线经由DP 耦合器连接;四台压机PLC与两台自动化PLC再分别构成两套Ethernet网络供远程计算机使用,每台PLC通过各自的PROFIBUS总线与若干ET200S分布式IO系统构成各自的分布式控制系统。

远程计算机通过两张网卡分别连入压机网络(Ethernet1)与自动化网络(Ethernet2)中,同时读取两个网络中数据,实现远程计算机对整条自动化冲压线的监控、控制与数据记录[1]。

2.1 通信介绍
在装有Windows系统的上位机中,要实现与S7系列PLC的连接,西门子提供了以下三种常用的方法[2]:
(1)通过SIMATIC NET软件访问PLC。

SIMATIC NET是西门子的通信软
件,SIMATIC NET软件中的OPC Scout工具用于OPC组态,将大型复杂的控制系统中的多台PLC与多台计算机连接在一起并进行通信。

SIMATIC NET中包含了多种通信卡的驱动与多种通信协议,用以支持控制系统中各种通信需求,较适合大型复杂系统中使用。

同时由于该方法利用高级程序语言编程,可编入更加复杂的过程数据统计分析功能,为一些特定的设备改造项目和工艺优化提供了基础数据支持。

(2)通过Prodave访问PLC。

Prodave提供了一种用在计算机与S7系列PLC之间通讯的方法,通过MPI-Profibus或Ethernet实现PC与PLC之间的数据交换。

Prodave的动态链接库中提供了大量基于Windows操作系统的函数,用户通过在编程环境中调用封装这些函数,实现对PLC中的数据进行读写的功能。

与第一种方法一样,本方法也可编入更为复杂的数据统计分析功能。

(3)使用组态软件,例如西门子的WINCC。

WINCC可以供用户在PC上建立一套控制系统,用于监视与控制整个运行系统。

它有良好的图形系统,并也提供编程接口允许用户连接自己的程序,从
而进行过程与数据的控制。

但WINCC的数据处理自由度较低,数据读写和处理速
度也较慢。

本方法只支持较为简单的脚本。

本程序的主要目的是为了远程监控系统中重要数据与报警、记录生产日志,它只与
各个PLC进行少量数据交换,在此情况下,Prodave的速度比OPC更快,同时因其更易配置,故本程序将通过Prodave连接PLC。

2.2 通信实现
整套控制系统中因存在多个PLC,可能出现多个PLC的数据需要同步读写,因此选用多线程进行程序控制较为恰当。

在程序中,为每个PLC分配一个单独的线程,这些线程由程序的主线程控制并分配优先级。

当需要与某个PLC进行通信时,主线程激活相应分线程,实现同时读取并处理多个PLC中的数据,达到监控整个控制系统的功能。

Prodave在与PLC进行连接时,受网络等因素影响,有时会无法快速完成相应操作,
若将连接PLC的函数放在主线程中,在这段时间内程序可能会出现假死的现象,因此需要将所有连接PLC的函数放在子线程中。

Prodave自身并不支持多线程操作,它在同一时间只能激活一个PLC连接,进行一个PLC数据操作,因此需要在程序中进
行相应的处理才能实现多线程监控。

这里提供两种实现方法:
(1)建立命令队列[3](图2所示)。

单独创建一个与PLC连接并进行数据交换的线程(连接线程),其他分线程仅进行数据处理,当这些分线程中有与PLC进行数据交换需
求的时候,发出申请给主线程并挂起;主线程在接收到申请后将申请加入命令队列中,并逐一发送给连接线程,连接线程在处理完相应请求后,将数据存放于对应的申请线
程的缓冲区内,并通知主线程激活对应的申请线程,发送下一个申请给连接线程。


种方法在本质上依然是单线程的对运行系统进行监控,整个监控系统的运行速度与
单线程运行速度相当。

(2)为每个PLC连接单独封装连接函数(图3所示)。

为每个PLC单独复制一份动态链接库文件,并为每个PLC连接单独封装出一套函数,每个PLC读取线程调用自己的连接函数,实现多线程监控。

这种方法程序容量随会增大,
但程序结构简单,避免了大量的线程间数据交换,减小线程间数据交换时处错的概率;同时各PLC的读取互相独立,实现同步监控。

为尽可能实现多PLC实时监控、加快数据交换申请响应速度、最大化利用系统资源,本监控系统选用第二种程序模式实现。

3.1 Prodave的调用
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。

C#可调用由C/C++编写的本机原生函数,因此拥有 C/C++原有的强大的功能,使得程序员可以高效的开发程序。

Prodave为用户提供了VB、VC、C++等高级程序语言的使用范例,用户可以根据范例开发自己的程序。

而C#用户需要自行调用DLL文件并转换数据类型。

C#调用DLL文件需在文件头增加System.Runtime.InteropServices的引用,用DllImportAttribute类调用DLL文件,用extern和static修饰词定义函数实现对DLL中函数的重新封装,并对原函数中参数的变量类型进行相应的转换,方可完成调用。

常用的数据类型的转换如表1所示。

Prodave的DLL文件中大部分函数参数数据类型可以通过上表进行转换。

为兼容IP地址、MAC地址与MPI地址三种连接PLC的方式,Prodave将用于记录CPU 连接信息的变量定义成一个共同体。

由于共同体在内存中占用的空间是以最大字段为空间大小的一部分内存,因此可以直接将整个共同体直接用一个数组代替。

在C#中重新封装如下:
public struct CON_TABLE_TYPE{
[MarshalAs(UnmanagedType.ByValArray, SizeConst =6)] public byte[] Adr; public byte AdrType;
public byte SlotNr;
public byte RackNr;
}
在后续程序中使用时,若使用MAC地址则直接传递MAC地址,若使用MPI地址或IP地址则需要将后面空的内容以0补全。

3.2 程序功能
按照2.2中介绍的第二种方法构成程序主体,每个线程对应一个CPU独立运行,通过循环读取PLC中相应数据块中的数据,达到实时监控系统关键数据的目的,实现程序最基本的监控功能。

除监控功能外,程序还增加了过程数据记录的功能。

过程记录
包括以下两部分:一是记录程序的运行日志,包括人员对程序的操作、程序自身错误
的记录、与PLC连接状态的记录等等信息;二是记录生产的数据,这项数据可以用于进行生产统计与分析,并且通过加密的方式存储使得数据真实有效、无法外部手工
更改[4]。

监控自动化PLC的监控线程负责记录生产日志,程序流程如图4所示。

该监控线程连续的读取PLC中的生产相关数据并记录在缓存中,通过比较最新数据与上一轮读取缓存的数据之间的差别判断当前生产状态及变化。

每一个产品的每一批次的生产都会生成一个单独的文件,完整的记录该批次的生产日志,包括起始时间与结束时间、设备故障或自定义的数据记录等等。

该文件以XML格式记录,经过
System.Security.Cryptography.Xml命名空间中的相关功能加密后保存在日志文件夹中。

3.3 监控主界面
实时监控主见面如图5所示。

在该界面上,可以看到整线的运行情况,各单元状态一目了然,界面简单明了,仅需一根网线,便可实现对现场的远程快速监控。

在本监控系统中,每轮PLC数据的读取与处理平均耗时约为230毫秒,而基于WINCC的监控系统读取与处理同等数据量平均耗时将超过1秒。

测试结果表明,
利用Prodave作为接口开发的监控系统,数据传输速度要远远快于利用WINCC制
作的监控系统。

本文在分析了一套自动化系统网络结构后,针对此自动化系统,基于C#.NET程序设计语言、Prodave软件开发了用于该自动化系统的多线程远程监控软件。

此监控开发方法简单可靠,为维修人员提供了极大的便利。

实际应用表明,该系统比传统使用WINCC创立的系统响应速度快、稳定性高。

【相关文献】
[1]李道霖.电气控制与PLC原理及应用[M].北京:电子工业出版社,2004.
[2]Siemens AG. Simatic Prodave MPI/IE V6.2 Manual[M].Siemens AG,2012.
[3]冯远彬,周密,冯立成,等. 采用Prodave和多线程的PLC与上位机通信[J].兵工自动
化,2006,(3):57-58.
[4]徐安东.Visual C#程序设计基础[M].北京:清华大学出版社,2012.。

相关文档
最新文档