资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
S7系列PLC上位机通信及PRODAVE软件包在上位机中的使用,陈汀,摘要:针对控制系统中上位机与S7系列PLC通信的实际问题,总结了几种监控上位机与S7系列PLC的通信方法,并重点描述了PRODAVE软件包在上位机中的应用,通过该软件包,可在上位机中应用高级语言编程访问PLC,实现较先进的工业自动化控制网络。关键词:PLC 通信 PPI MPI PRODAVE,一、引言 西门子工控产品在工控领域应用市场中有较高的占有率,但在实际工程应用中常常会碰到监控上位机与S7系列PLC的通信问题。S7系列PLC本身不具备人机界面,必须通过上位机与用户进行交流,同时,只有通过上位机,才能实现数据库访问、IE发布等功能。在一个先进的工业控制网络中,上位机具有极其重要的作用,上位机与PLC之间的通信是上位机编程中的重点和难点,本文就S7系列PLC与监控上位机通信的问题进行了一定程度的探讨。,二、S7系列PLC与上位机通信的主要方法 S7系列PLC组成的控制系统与上位机通信一般有三种方法:1、组态软件通信。2、触摸屏通信(也即第三方的组态软件)。3、使用高级语言调用通信软件进行通信。,三、组态软件进行通信 1、使用西门子组态软件WinCC与PLC进行通信,SIMATIC WinCC是采用了最新的32位技术的过程监控软件,具有良好的开放性。无论是单用户系统,还是冗余多服务器/多用户系统,WinCC均是较好选择。通过ActiveX,OPC,SQL等标准接口,WinCC可以方便地与其它软件进行通信。WinCC与S7系列PLC的通信,可以采用PPI、MPI和Profibus三种通信协议之一进行。,使用WinCC与PLC进行通信,使用方便,功能极其强大,可能组态出完善的现代化工业网络。数据采集、数据分析、IE发布、数据安全、消息队列、冗余系统等功能均能完美具备。唯一的前提是需要为每一项功能额外支付费用,经济性较差。同时,WinCC在使用时灵活性也较差,一般不适用于较小型的工业自动化控制系统。对大中型控制系统,如果经济许可的话,WinCC是最佳选择。,2、使用西门子PROTOOL软件与PLC进行通信,PROTOOL软件是西门子专为其触摸屏开发的上位机软件,在购买触摸屏时提供,该软件使用简单,可靠性高,工程周期短,经济性一般。但该解决方案仅适用于小型的工业控制系统,只能实现设备监控功能。,四、触摸屏进行通信 使用触摸屏进行通信,类似于使用PROTOOL软件与PLC通信,PROTOOL是由西门子开发,而各类触摸屏则是由不同的生产厂家进行开发,他们的共同特点都是可靠性高,通信实现容易,触摸屏与PLC之间的通信问题生产厂商已处理好,用户不用考虑通信问题,可以大大缩短工程周期。但灵活性一般,功能有限,不能满足复杂控制系统的监控要求,而且价格高。在系统可靠性要求高、工期短的情况下可以采用此方法。,五、使用高级语言调用通信软件进行通信 1、使用高级语言(如VC+、C等语言)调用通信软件进行通信,灵活性好,即可以组态出简单的监控界面,又可以扩展为复杂的、先进的自动化控制系统,系统投资低,经济性好,能适用于各种系统。但开发系统工作量大、可靠性难保证,对技术人员的经验和技术水平的要求高,还必须购买通信软件。在系统资金投资有限,技术人员水平较高的情况下可以采用此方法。常用的通信软件主要有西门子提供的PRODAVE软件包及SIMATIC NET软件。,2、使用高级语言(如VC+、C等语言)调用通信软件后可以做什么? A、简单的上位监控,S7系列PLC(S7-200,S7-300,S7-400),上位机(采用WINDOWS操作系统)+高级语言(VC+或C)编程,PRODAVE软件包,SIMATIC NET 软件包,PPI、MPI、PROFIBUS-DP通道,在该种用途下,类似于使用PROTOOL或第三方的触摸屏对PLC进行监控。输入输出PLC各状态点,或修改PLC内部寄存器值、定时、计数值等。在上位机上采用WINDOWS操作系统,使用高级语言(如VC+、C)编程,调用通信软件PRODAVE或SIMATIC NET OPC,对PLC进行读写输入输出操作,或读写PLC内部寄存器值、定时、计数值操作等。可使用PPI、MPI或PROFIBUS-DP通道。通过编程后,可在上位机实现设备状态监控(如故障显示)、设备数据修改,对单机设备进行操控。就像我车间B1、长城或连接机的上位操作。,B、复杂的单机上位,一台上位机通过MPI总线访问一台或多台PLC,多台PLC间又可以通过PROFIBUS-DP总线相连接,通过高级语言调用通信软件(如PRODAVE或SIMATIC NET)与各PLC通信,采集或修改PLC数据,实现控制目的。同时,通过上位机的编程,可增加数据库功能,实现控制数据存储功能;将上位机连入普通INTERNET网络或工厂局域网络,实现IE发布功能或远程监控功能;将设备各数据进行分析和处理,实现数据采集功能;实现消息队列功能;为其它工厂应用程序提供编程接口,实现程序间无缝对接功能等。通过该种连接方式,可根据控制需求,实现先进的控制功能。,C、复杂的多机上位,INTERNET或工厂局域网络,PLC1,PLC2,PLC3,PLC4,PROFIBUS-DP或MPI总线,上位机,数据库服务器,WEB服务器,数据采集、分析及其它功能,上位机,上位机,上位机,在该种连接方式下,使用INTERNET或局域网络,实现多台上位机数据共享,如在车间级生产数据采集上,可采用该方式,将多台卷包设备生产数据通过上位机共享,再采用B/S结构,将这些数据存储于数据库中,使用WEB服务器处理或分析数据库中的生产数据,最后以网页的形式发布出来,实现工厂级、车间级生产控制系统。在该结构中,由于使用高级语言调用通信软件与PLC通信,再将上位机用网络连接,取代了西门子控制网络中的车间工业以太网,降低了项目成本。,3、优缺点分析 使用高级语言调用通信软件与PLC通信,再配合相应的编程及网络结构,可基本实现WinCC组态软件的绝大多数功能,但灵活性更强,可根据控制要求的变化对程序不断进行扩展,只要软件系统及架构设计合理,整个控制系统具有较好的扩展性。同时,与WinCC相比,具有极大的经济性。 缺点:难度较大,对技术人员要求较高,整个控制系统的稳定性无法与WinCC组态软件相比,如果软件编制欠佳,可能存在各种隐患,安全性也没有WinCC高。在软件的使用过程中,易用性不如WinCC。,六、PRODAVE软件包在上位机中的应用 上面介绍的通信软件主要有两个,第一是PRODAVE软件,第二是SIMATIC NET软件,在很多第三方开发的组态软件中大多是采用这两个软件作为底层通信软件,如各类厂家生产的触摸屏,在其程序中均能找到这两个软件。下面我主要对PRODAVE软件在上位机的应用进行一些探讨。使用的高级语言为C。,1、PRODAVE软件介绍 PRODAVE软件是西门子为S7系列PLC通信开发的底层DLL动态联接库,可使用PPI连接S7200,使用MPI连接S7300/400。软件包主要包含两个动态联接库:W95_S7.DLL和KOMFORT.DLL,前者主要是PLC各数据的读出与写入,后者主要是S7数据结构与高级语言数据结构的互相转换。该软件包包含了PLC输入点的读,输入出点的读写,定时器、计数器的读写,数据块的读写,中间寄存器读写,PLC状态读等功能。,2、与PLC建立连接 使用load_tool()建立连接,以下是我在C中程序示例: DllImport(w95_s7.dll)private extern static int load_tool(byte nr,string device,address adr_table); public int connect(address aa)/address aa=new address2;/aa0.add=2;/aa0.temp=0;/aa0.slot=2;/aa0.strack=0;i=load_tool(1,S7ONLINE,aa);return i;,2、读PLC输入点 使用e_field_read对PLC输入点进行读操作DllImport(w95_s7.dll)private extern static int e_field_read(int no,int amount,byte buffer);public readbyte readinput(int no,int amount)byte buffer=new byteamount;int i=e_field_read(no,amount,buffer);readbyte ret=new readbyte();ret.buffer=buffer;ret.retval=i;return ret;,3、读PLC输出点 使用a_field_read对输出点进行读操作DllImport(w95_s7.dll)private extern static int a_field_read(int no,int amount,byte buffer);public readbyte readoutput(int no,int amount)byte buffer=new byteamount;int i=a_field_read(no,amount,buffer);readbyte ret=new readbyte();ret.buffer=buffer;ret.retval=i;return ret;,4、写PLC输出点 使用a_field_write对PLC输出点进行写操作DllImport(w95_s7.dll)private extern static int a_field_write(int no,int amount,byte buffer);public int writeoutput(int no,int amount,byte buffer)int i=a_field_write(no,amount,buffer);return i;,5、读PLC中间寄存器点 使用m_field_read对PLC中间寄存器点进行读操作DllImport(w95_s7.dll)private extern static int m_field_read(int no,int amount,byte buffer);public readbyte readmb(int no,int amount)byte buffer=new byteamount;int i=m_field_read(no,amount,buffer);readbyte ret=new readbyte();ret.buffer=buffer;ret.retval=i;return ret;,6、写PLC中间寄存器点 使用m_field_write对PLC中间寄存器进行写操作DllImport(w95_s7.dll)private extern static int m_field_write(int no,int amount,byte buffer);public int writemb(int no,int amount,byte buffer)int i=m_field_write(no,amount,buffer);return i;,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号