基于PROFIBUS的PLC网络监控系统设计.doc_第1页
基于PROFIBUS的PLC网络监控系统设计.doc_第2页
基于PROFIBUS的PLC网络监控系统设计.doc_第3页
基于PROFIBUS的PLC网络监控系统设计.doc_第4页
基于PROFIBUS的PLC网络监控系统设计.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于PROFIBUS的PLC网络监控系统设计王彦文摘要:随着工业自动化水平的提高,将PLC底层网络与上位计算机相结合,组成上下位机网络监控系统的控制方式得到了广泛的应用,本文以西门子S7-300系列PLC为例,上位机采用可视化编程语言VB,实现了计算机监控系统的设计。关键词:VB6.0;S7300;PRODAVE;监控系统;PROFIBUS;通讯Abstract: with the development of automation, combine the1 引言随着控制技术的发展,尤其现场总线技术的出现,基于现场总线的PLC控制网络正成为工业控制的主要控制方式,然而由于PLC与PC机相比其数据计算、存储能力具有的明显的局限性,尤其不能实现汉字、图形的显示,不具有可视化功能。因此利用PC与PLC相结合,组成上下位机结构,PLC作为下位机完成现场各种数据的实时采集以及控制任务,PC机作为上位机,利用PC机强大的数据存储计算能力和友好的人机界面实现人机对话,实现对整个系统的监控和故障诊断功能。在这样的上下位机系统中,下位PLC网络之间的通讯与现场数据的采集和处理,上位机与PLC之间的通讯、上位机数据的处理将是整个系统的关键技术。下面介绍下位机采用S7-300 PLC,基于PROFIBUS总线组成的计算机监控系统设计。2 系统硬件设计及原理2 1 系统的网络结构本系统中采用4台西门子S7-300系列PLC作为下位机,以PROFIBUSDP的方式组成网络拓扑结构,考虑到功能和经济性,其中一台PLC型号为CPU315-2DP,集成PROFIBUS-DP接口与MPI接口,在网络中作为DP主站,其它三台PLC型号为CPU314,作为DP从站,配CP342-5 PROFIBUS DP模块,上位机采用工业控制计算机,配CP5611卡,支持MPI和PROFIBUS通讯。系统结构图见图2-1。 图2-1 系统结构图22 PLC网络之间、PLC与上位机之间的通讯 PROFIBUS-DP总线作为国际的标准总线,其最大传输速率为12 Mb/s ,当以9.6Kb/S传送时,传输距离最高可达1200米,本系统中传输速率设为1.5MB/S,为CP342-5支持的最大传输速率,系统采用典型的主站/从站结构,设置一个主站,三个从站的一主多从结构,主站与从站之间以PROFIBUS 主站/从站协议进行通讯,主站周期的读取各从站的输入信息并周期的向各从站发送输出信息,完成主站与从站之间的数据交换。为实现数据交换,必须在各从站的OB1组织快中编写发送指令DP-SEND,和接收指令DP-RECEIVE,用于将从站CPU中的数据发送到PROFIBUS CP模块中,或从CP中获得数据到CPU,在这两个指令中指定发送数据和存储接收数据的地址和发送报文长度。在众多的上位监控系统设计中,下位PLC与上位计算机之间的数据通讯一般使用RS- 232/422通讯,即利用计算机的串口,以串行方式进行, 应用串口通讯可以方便的实现PLC与上位机之间的通讯,但是其通讯速率、准确度低,为保证通讯准确,一般需增加效验机制,除串口方式之外,西门子PLC与上位机之间通信还可采用PROFIBUS和以太网方式,以太网通讯速率最快,然而成本高,需在主站配CP343-1以太网模块,PC机配以太网卡,而且开发难度较高,在本系统中选用了PROFIBUS的方式,上位计算机通过CP5611卡从PLC主站获得或传送数据。因为西门子PLC的通讯协议不公开,应用VB如何实现上位机与PLC的通讯将成为问题的关键。通过研究实践,成功的解决了通讯问题。3 上位监控软件的设计31 通讯实现Visual Basic是强有力的可视化开发工具,它易学好用,通过调用动态链接库或WIN32下的API函数可以实现强大、复杂的功能,西门子公司的PRODAVE软件,提供了用于实现PC与PLC之间通讯的链接库,内部封装了用于通信的全部API函数。本系统设计采用调用DLL库的方式,完成了上位机VB与PLC之间的通讯。主要的函数及功能如下:1)Load_tool 建立PLC与上位机之间的连接,调用时需传递三个参数,分别为连接序号、连接的设备名称,连接设备的具体地址参数。第三个参数为一个结构变量,包括PLC的一些硬件信息,函数返回值为长整型的数,返回值为0表示连接成功。调用方法如:res = load_tool(1, S7ONLINE, plcadr(0),在此例中,连接序号为1号连接,连接的设备形式为MPI的方式(STONLINE表示MPI方式),PLC的地址参数由结构变量plcadr(0)指定。2)New_ss 激活建立的连接。3)db_read 以字为单位读DB区中数据,该函数传递四个参数,分别为读数据的DB区号;读DB区中数据的首地址;读的数据个数,读出数据存储缓冲区地址,返回值为0表示读取成功,例res = db_read(10, 0, 5, value_word(0),表示读DB1O中的从DBW0开始的共五个字的数据,并存储到value_word(0)到value_word(4)中4) Db_write 写数据到PLC的DB区中,调用格式同DB-read,例res = db_write(5, 2, 2, value_word(0),把value_word(0)到value_word(2)中的数据写入DB5中从DBW2到DBW4中。5) Unload_tool 断开PLC与PC之间的连接 除上面列出的函数外,还有很多其它函数,这些函数能实现以BYTE为单位进行读写,以及读写M区,V区,定时器区,综合利用这些函数可以实现复杂的读写功能,但应注意的是,要用到的函数在程序中必须先进行声明。具体的通讯实现程序代码如下:1)函数声明及结构变量定义:在module1中添加函数声明以及全局数据变量定义Declare Function load_tool Lib w95_s7.dll (ByVal nr As Byte, ByVal dev As String, adr As plcadrtype) As LongDeclare Function new_ss Lib w95_s7.dll (ByVal nr As Byte) As LongDeclare Function unload_tool Lib w95_s7.dll () As LongDeclare Function db_read Lib w95_s7.dll (ByVal db As Long, ByVal dw As Long, anz As Long, value As Integer) As LongDeclare Function db_write Lib w95_s7.dll (ByVal db As Long, ByVal dw As Long, anz As Long, value As Integer) As Long2)变量定义Type plcadrtype 定义结构变量 adr As Byte SEGMENTID As Byte SLOTNO As Byte RACKNO As ByteEnd TypePublic plcadr(5) As plcadrtype2)初始化连接,建立PLC与PC机之间的连接,可放在Form_load中plcadr(0).adr = 2 PLC地址plcadr(0).SEGMENTID = 0 plcadr(0).RACKNO = 0 基架号plcadr(0).SLOTNO = 2 槽号res = load_tool(1, S7ONLINE, plcadr(0) RES返回值为0。则连接成功If res 0 Then res = error_message(res, ErrorText),RES不等于0。连接失败3)读PLC数据函数,在程序中可以调用此SUB实现读数据,调用时需传递参数。Sub ReadDB( BLOCKNO as long, no as long, AMOUNT as long, Write_word(0) as value ) Dim I as integerres = db_read(BLOCKNO, no, AMOUNT, Write_word(0) if res=0 then for I=0 to amount-1ReturnValue(i)=Write_word(i)Next IEnd ifEnd Sub 32 程序设计在通讯中,通讯的主动权在上位机,下位PLC没有主动权来请求发送或接收数据,即完全由上位机决定何时读取、发送数据,采用PC机定时周期读取PLC数据的方式,易于实现数据的更新,能够确保实时性,但当读取的数据量很大时,因每次循环读取数据都要花费很长的时间,以这种定时的方式会严重的加重PLC及计算机的负担,损耗系统的资源,甚至系统导致死机或崩溃。为了解决上面的问题,考虑到PLC中的数据可能会在一定的时间内保持不变,因此采用不定时读取PLC数据的方式,可以极大的减少PC机的负担,具体设计思想为在PLC程序中设置专用于与PC机通讯的数据块DB10,DB10专用于与上位机之间进行数据交换,其中在DB10中定义DBW0作为读状态标志字,当PLC中的数据发生变化时,置DBW0为FFFF,上位机循环读取DBW0中的状态字,只有查询到标志字为FFFF时,才读取DB10中数据,并保存到上位机中已定义长整型数组Status()中,数据读完,置状态标志字为0000,程序流程如下图3-1。图3-2开始置循环初值I=0AlarmStatus(i)=Status(n) and 2iAlarmStatus(i)=1 ?I=I+1显示报警I16?结束YNYN定时0.5s开始系统初始化与PLC连接成功否?读PLC状态标志字为FFFF ? 读完DB区中数据转数据处理程序 复位状态标志字为0000提示信息YNYN图3-1 33 上位机故障实时报警设计 上位机监控系统功能强大,可以根据需要设计各种不同的功能,包括系统的动画监控、故障信息显示与查询、历史记录报表查询与打印等,其中故障报警是上位监控软件的一个最基本的功能,限于篇幅,下面将以故障信息显示为例,说明上位机数据的处理方法。在程序中定义布尔型数组AlarmStatus(),每一个数组变量对应一个特定的开关量报警,1表示报警发生,0表示正常,例如AlarmStatus(0)=1对应油压过高报警;AlarmStatus(1)对应油压过低报警 等等,在从PLC读的数组status()中,每一个数组变量对应16个开关量报警状态,因此上位机需对status()中的数据进行提取,确定各开关量的报警状态值,设计中采用二进制相与的方法,识别每个开关量状态,程序流程图见图3-2,实际应用中,该上位监控系统能实现故障报警的实时显示,并能充分保证系统的实时性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论