VC++ 环境下SIEMENS PLC 与PC 的串行通信.doc_第1页
VC++ 环境下SIEMENS PLC 与PC 的串行通信.doc_第2页
VC++ 环境下SIEMENS PLC 与PC 的串行通信.doc_第3页
VC++ 环境下SIEMENS PLC 与PC 的串行通信.doc_第4页
全文预览已结束

下载本文档

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

文档简介

中图分类号:TP273+.5VC+环境下Siemens PLC与PC的串行通信卫庆军1 ,曾文火2,曹传生3,闫红蕾4(1,2,3,4.江苏科技大学 机械与动力工程学院,江苏 镇江 212003)【摘 要】利用VC+6.0开发工具,完成了西门子S7-200 型PLC与PC的串行通信。其中,通信协议采用西门子PLC特有的自由口通信协议;串行通信采用Windows API函数实现。试验结果表明,这种串行通信方法,传输数据准确,简单,移植性强。【关键字】串行通信;VC+;S7-200;自由口Serial communications between siemens PLC and PC based on VC+Wei Qing-jun1, Zeng Wen-Huo2,Cao Chuan-Sheng3,Yan Hong-Lei4(1,2,3,4.Mechanical and Dynamical Engineering Institute, Jiangsu University of Science and Technology, Zhenjiang Jiangsu 212003,China)【Abstract】By using the development tool of VC+, the experiment managed the serial communication between Serial S7-200 of Siemens PLC and PC. The communication protocol is the free port communication protocol; the serial communication is completed by the Windows API function. The result of test indicates that this serial communication is accuracy for transferring data, simple and strong portability.【Keywords】Serial Communication; VC+; S7-200;Free Port0 引言可编程控制器(PLC)自问世以来,以其适用性强、适应面广、编程简单、体积小、功耗低、安装、调试维护方便等优点,得到了广泛应用的。但由于PLC的人机接口功能不很完善,不能对工业控制现场的数据信息进行及时、形象的反馈,而基于图形界面的Windows开发环境的出现,则可以顺利解决这一问题。所以,有必要开发PLC与PC的接口,这有利于充分发挥两者的优点,更好为工程应用服务。本文在Windows界面下,利用VC+6.0开发工具,以西门子S7-200为对象,采用常用的自由口通信协议,实现PLC与上位机的实时通信。1 PLC与PC通信接口及通信标准选择S7-200支持多种通信接口,如PPI电缆、CP通信卡和以太网通信卡。这里我们采用S7200专用的PC/PPI通信电缆与PC机的串口直接连接。该电缆既可作编程线又可用作PLC与PC的通信线。由于PC机的标准串口为RS232电平标准,而本试验采用的自由口通信端口为标准RS485口,所以两者连接时需进行电平转换,利用上述PC/PPI电缆即可实现这一功能。2 下位机PLC程序实现PLC作为本试验中的下位机,不主动发送数据,而是被动地响应上位机的指令。当响应完成或上位机暂无指令时,PLC一直处于等待接收状态。PLC程序主要由主程序、三个子程序和三个中断程序组成。2.1主程序主程序执行时,现在第一次扫描时调用初始化子程序。然后,即根据来自上位机的读(或写)指令调用响应读(或写)子程序。在每次指令接收完成后,PLC会调用BCC码校验子程序。来自上位机的读、写指令需满足特定的格式,以便于PLC识别,读、写指令格式如下:图1读、写指令格式Fig. 1 Format of Read and Write Instruction起始字符B0为ASCII码的“g”;指令类型B105H为读指令、06H为写指令;目标PLC站地址B2B3本试验假定为02H;目标寄存器地址B4B11共占4个字节,前两个字节为寄存器类型,后两个字节表示寄存器号。类型代码如下:00 00 (H) :I寄存器01 00 (H) :Q寄存器02 00 (H) :M寄存器08 00 (H) :V寄存器例如:IB000的地址可表示为 00 00 00 00 (H) VB100的地址可表示为 08 00 00 64 (H)读写字节数M: B12B13当读指令时,始终读回从目标寄存器开始的连续8个字节(转换成十六进制ASCII码后占16个字节)的数据,此时M的内容可任意填写。当写指令时,M必须与实际写入数据的ASCII码所占字节数一致,如要写入一个字节的数据,其十六进制ASCII码占2个字节,则M为02H,一条指令最多可写入8个字节的数据,此时M应为10H。要写入的数据B14B29该区域共占16个字节,且必须填满。当写指令时,该区域为所写数据的十六进制ASCII码,但只有前M个字节的数据会被写入目标寄存器。当读指令时,该区域代码任意。BCC校验码B30B31校验码是为检查指令在传输过程中是否发生错误而设的。BCC码的计算方法为指令B1B29的异或和,即:bcc=B1 xor B2 xor B3 xor B4 xor B29结束字符B32为ASCII码的“G”。2.2初始化子程序初始化程序主要完成通信端口的设置(波特率、数据位数、停止位、校验),这主要通过设置PLC中相应的特殊寄存器的参数来实现。此外,在初始化程序中,将进行中断允许操作,本试验涉及的中断主要为接收完成中断和发送完成中断。该中断在接收(或发送)完成是发生,并调用相应的中断处理子程序。2.3读、写操作子程序读(或写)操作子程序当来自上位机的指令满足读(或写)指令的格式时调用。指令格式如上所述。PLC在响应来自上位机的读、写指令后,会发送一条21字节长的反馈报文给上位机。其中包含了响应上位机读、写指令的情况。反馈报文格式如下:图2 反馈报文格式Fig. 2 Format of Feedback Message起始字符B0ASCII码“g”;状态信息B101H读取正确、02H写入正确、03H BCC码校验错误、04H指令不合法。数据区B2B17读指令所指定的特定寄存器内、一定字节数的数据;BCC校验码B18B19指令B1B17的异或和;结束字符B20本试验约定为26H.3 上位机PC串行通信程序实现(1)串口通信实现方法VC环境下进行串行通信通常有以下几种方法:利用Windows API通信函数使用Microsoft Visual C+的通信控件MSComm。鉴于使用Windows API函数的灵活性和方便程度要好于使用控件,通过使用、比较,本试验采用第一种方法。用到的Windows API函数主要有CreateFile、SetupComm、SetCommState、PurgeComm、WriteFile、ReadFile等。为使整个程序清晰、明了,将上述所有程序封装到一个CComPlc类中,这对程序理解及扩展应用带来了很大方便。以下是该类的定义:class CComPlc public:bool OnOpenPort(int com);void BitSet();bool OnWrite();bool OnRead();byte ComputeBCC(const byte *message, int tlnumber);int StringtoByte(CString str);CComPlc();virtual CComPlc();int databit;double m_ReadData;double m_WriteData;int m_ChoiceMode,m_Num;CString strWriteRequest,strReadRequest;protected:bool m_bOpenPort;byte m_btResponce21;byte m_btRequest33;COMMTIMEOUTS timeouts;DCB dcb;HANDLE hcom;ComPlc:OnOpenPort函数打开串行端口,并设置所需参数,包括波特率、数据位数、停止位、校验位等。ComPlc: OnWrite函数将数据从输出缓冲区写入串口,其间包括数据类型转换、BCC校验码计算、以及反馈报文判断等操作。ComPlc: OnRead()函数将数据从串口接收缓冲区读入数据4 实时监控界面图6实时通讯界面Fig.6 Real time Communication interface本实时监控界面能对PLC内部的四种软元件进行赋值、读取当前值、复位等操作。5 结论西门子S7-200系列自面世以来,凭借其小巧、稳定的性能,得到了广泛的应用。而利用本试验的通信程序,能实时、直观地将它应用到工程中去。此外,应用本程序,无需额外添加任何硬件,因而降低了成本。参考文献1. SIEMATIC S7-200系统手册,西门子(中国)有限公司 自动化与驱动集团,. 2004.062. 龚建伟 熊光明,Visual C+/Turbo C串口通信编程实践, 北京:电子工业出版社,2004.103. 本书编写组, Windows API函数参考手册,北京:人民邮电出版社,2002.10作者简介:卫庆军(1983-),男,江苏泰州人,江苏科技大学硕士研究生,研究方向:电液伺服系统数字控制 曾文火(1944-),男,江苏镇江人,技术职称:教授,工作单位:江苏科技大

温馨提示

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

评论

0/150

提交评论