基于PLC和PC快速自动化控制系统研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于PLC和PC快速自动化控制系统研究

基于PLC和PC快速自动化控制系统研究   摘要本文介绍西门子S7-400 PLC与PC上位机通信软件的设计。使用C++语言,通过PRODAVE软件包实现PC上位机与PLC的以太网通信,实现PC上位机对PLC数据的高速读写操作。   【关键词】C++ PLC PRODAVE 以太网 通信   1 引言   自动化技术的发展使得大规模、大批量生产成为可能,为了提高生产效率和产品质量,越来越多的厂家需要引入自动化生产线。自动化生产线中,上位机需要对底层设备进行实时数据采集与控制。   目前,在中小型自动化生产线控制系统中通常采用专业工控组态软件开发上位机程序。组态软件的开发环境相对封闭,灵活性较差,通信速度较慢,且无法像高级编程语言那样可以灵活、简便地利用各种资源来编写拥有多种功能的上位机程序。为了克服这些缺陷,寻找一种使上位机系统不通过组态软件就能够运用工业以太网与PLC进行数据通信的方式变得非常有必要。   本文针对工业以太网技术,以西门子S7-400 PLC为底层控制装置,给出一种PC上位机与PLC实现以太网快速通信的方法。   2 系统架构   PLC通过PROFIBUS、MODBUS等协议与设备相连,设备的控制点保存在DB块中。PC通过以太网与PLC通讯,通过快速读写DB块进行数据交换,完成自动化控制。PC同时可以对设备进行监控、数据采集、数据分析、图形化显示以及基于复杂工艺条件的控制。   软硬件条件:PC工控机,Windows 7专业版操作系统,英特尔双核3.40GHz CPU,2G内存,百兆网卡,C++开发语言,PRODAVE软件包;PLC型号为S7-400-3 PN/DP,DB块大小为2500字节。   3通信软件包PRODAVE   PRODAVE是西门子开发的,供第三方直接调用,用于PC与S7系列PLC之间直接进行数据通信的软件开发包。   3.1 PRODAVE特点   PRODAVE向Windows 统提供了一个接口函数库(DLL或LIB库),用来解决PLC与PC之间数据交换的需求,它同时支持C#、C++、Python等多种编程语言,具有以下特点:   (1)使用简单方便。编程人员不需要熟悉复杂的通信协议。通过调用PRODAVE 提供的动态链接库(DLL)中的函数就可以实现通信。   (2)上位机用通信函数直接读写PLC中的数据,用户不用编写PLC一侧的通信程序。   (3)6.2版增加了对Windows 7操作系统的支持以及读取PDU大小的函数。   3.2 调用的函数说明   LoadConnection_ex6函数用于建立PC和PLC的连接,UnloadConnection_ex6函数用于断开PC和PLC的连接,db_read_ex6函数对PLC的DB块进行读取,db_write_ex6 函数对PLC的DB块进行写入,defrag_ex6函数对PLC内存中的所有块进行碎片整理和压缩,GetErrorMessage_ex6函数将返回的错误码转换成对应的文字说明。   4 PC程序   4.1 程序逻辑   (1)首先调用LoadConnection_ex6连接PLC;   (2)由于PLC无法主动告知PC自身数据的变化,因此只有在程序中通过循环语句,不停地扫描PLC中的数据和写入PC更新的控制数据,从而实现对设备的实时控制。程序每次循环依次调用db_read_ex6,db_write_ex6,defrag_ex6,sleep 20ms,循环过程如有调用失败,通过GetErrorMessage_ex6记录错误信息;   (3)循环结束,调用UnloadConnection_ex6断开PLC连接。   4.2 运行结果   (1)运行一周记录中未发现通信错误;   (2)网络平均使用率:0.6%;   (3)CPU平均占有率:3.5%;   (4)db_read_ex6的平均时间:46ms;   (5)db_write_ex6加dbfrag_ex6的平均时间:165ms;   (6)运行测试表明,db_read_ex6和db_write_ex6的时间与DB块大小几乎无关;   (7)循环中若不调用defrag_ex6,则多次读写后,PLC会报内存不够的错误。   5 总结   程序通过调用PRODAVE软件包C++接口实现与PLC的通信,完成对PLC的DB块的快速数据交换,从而实现对设备的控制从PLC转移到PC上位机。PLC中2500字节的DB块,对于中小型自动化控制系统已完全够用。利用PC软件开发的快速性和简易性,可以快速地实现更加复杂、智能的自动化控制系统,从而极大提高自动化控制系统的开发效率。   在程序测试过程中,我们也发现了PRODAVE开发包的一个局限,就是同一个进程中,它不支持同时并联多个

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档