基于MSCommPLC与上位机通信系统设计与开发.docVIP

基于MSCommPLC与上位机通信系统设计与开发.doc

  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文档。上传文档
查看更多
基于MSCommPLC与上位机通信系统设计与开发

基于MSCommPLC与上位机通信系统设计与开发   摘 要 西门子PLC常被用于工业现场的控制,而对其的监控往往是由上位机来完成的,因此PLC与上位机之间的数据通信问题就变得极其重要。本文介绍了利用Visual C++中的MSComm控件设计上位机通信界面,完成与西门子系列PLC的数据通信。实验证明,利用这种技术克服了以往通信系统受通固定信协议与组态软件的限制,性能可靠,使用灵活,适合于小型控制系统。   【关键词】西门子PLC 上位机 自由端口模式 MSComm控件 通信系统   随着工业技术的发展,可编程逻辑控制器(PLC)得到越来越广泛的应用。西门子S7-200 系列PLC是西门子家族中重要的一员,其体积小,软硬件功能强大,可靠性高,而且具有强大的通信能力。   设计采用自由通信口方式,由第三方开发软件Visual C++自行设计通信画面,实现计算机与PLC的通信。   1 系统实现方案   1.1 串口通信方案   MSComm控件是Microsoft公司提供专门用于串行通信编程的ActiveX控件。本次设计使用MSComm控件进行开发。在通信过程中,只需设置、监视MSComm控件的属性和事件即可完成对串行口的初始化和数据输入输出工作。   1.2 系统电路设计   本次设计所使用的PLC为直流电源系统的CPU226 PLC,其内置的电源模块只能给PLC的输入进行供电,其输出需要额外配置±24V电源,因此必须增加一个开关电源模块,给PLC的输出供电。   由于S7-200 系列PLC的通信口是RS-485通信接口,而计算机是RS-232通信接口,所以计算机与PLC通信时需要进行RS-232/RS-485电平转换,西门子PC/PPI电缆可以完成这一转换。本设计的电路连接图如图1。   1.3 系统功能实现   本系统可实现的功能有两部分:上位机发送数据和上位机接收数据。其中上位机发送数据是由上位机通过对话框发送一个字符数据,在PLC的输出QB0上显示输入数据的个数,输出QB1上显示输入数据的ASCII码;上位机接收数据是给PLC的IB0一个输入状态,在上位机主界面的接收区即可显示其输入状态。   2 上位机端程序设计   2.1 界面设计   使用控件进行串口程序设计时,首先需要加载控件。将MSComm控件加载到Visual C++集成开发环境中。加载成功后,建立一个基于MFC单文档对话框的工程,即可进行通信程序的设计。   通信界面包括两个部分:主界面和设置界面。主界面是主要的操作界面,设置串口参数、打开串口、关闭串口等操作都在主界面中完成。通信界面如图2所示。   界面设计之后,还需要使用Visual C++类向导自动创建静态文本、按钮和编辑框的关联成员变量,这样就可以直接通过成员变量来访问控件内容,例如在控件中显示内容、读取内容或者发送内容等。   2.2 程序设计   下面是打开串口程序的一部分,在这里进行部分初始化操作。   fbyComm.SetInBufferSize(1024);   //指定接收缓冲区大小   fbyComm.SetInBufferCount(0);   //清空接收缓冲区   fbyComm.SetInputMode(1);   //设置数据获取方式   fbyComm.SetInputLen(0);   //设置每次读取长度为全部读取   fbyComm.SetRThreshold(1);   //设置接收OnComm事件门限值   fbyComm.SetPortOpen(1);   //打开串口   2.2.1 接收数据处理   程序在MSComm控件的OnComm事件中接收数据。具体代码如下所示:   void CReceiveMSCommDlg::OnOnCommMscomm()   {   VARIANT variant_fbyp;   COleSafeArray safearray_fbyp;   LONG len,fbyk;   BYTE fbydata[2048];   CString strtemp;   if(myComm.GetCommEvent()==2)   //当值为2表示接收缓冲区有字符   { variant_fbyp=myComm.GetInput();   //缓冲区的读取   safearray_fbyp=variant_fbyp;   //将VARIANT型变量转换为ColeSafeArray型变量   fbylen=safearray_inp.GetOneDimSize(); //获得到有效数据长度   for(k=0;klen;fbyk++)

文档评论(0)

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

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

1亿VIP精品文档

相关文档