NET的计算机与S7-200_PLC自由口通信_第1页
NET的计算机与S7-200_PLC自由口通信_第2页
NET的计算机与S7-200_PLC自由口通信_第3页
NET的计算机与S7-200_PLC自由口通信_第4页
NET的计算机与S7-200_PLC自由口通信_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、.net 的计算机与s7-200 plc 自由口通信摘要: 介绍了 s7-200 plc 和计算机的通信方式, 详细说明了自由口模式下plc与计算机通信的实现方法,包括自由口工作的通信流程,计算机指令帧格式约定,plc反馈帧的格式约定等。编写了s7-200 plc 的自由口通信程序,在上位机中用.net环境下的 c#语言开发了计算机与plc的串行通信程序,可灵活实现对plc存储区数据的读写功能。关键词: plc; .net ; c#;自由口通信中图分类号: tp393 文献标识码 : a free-port communication method between pc and s7-200

2、plc based on .net lu qing abstract: the communication method between s7-200 plc and computer is introduced and the s7-200 plc communication under the free-port is illuminated in detail, which mainly includes working process, computer instruction format and plc feedback information format. the serial

3、 communication program between computer and s7-200 plc based on c# is programmed, where host computer can read and write any kinds of data in plc to meet the requirement of the system . key words: plc; .net; c#; free-port communication 引言 plc作为一种高效、灵活、可靠的控制器,已经广泛地应用在包括数字逻辑控制、运动控制、闭环过程控制、数据处理和联网通信等工业

4、控制领域。在联网通信方面,plc与上位计算机设备一起,可以组成“集中管理、分散控制”的分布式工业控制系统。在这种控制系统中,plc与上位机的通信对系统整体性能有着较大的影响。面对众多厂家不同类型的plc ,它们在功能编程上没有统一的标准而且在通信协议上也是千差万别,选择一种即能满足通信要求又经济实用的通信协议是非常关键的。本文以s7-200plc为对象,详细研究了s7-200plc 在自由端口模式下与pc之间的通信方法,并采用.net环境下的 c#语言编写通信程序实现了计算机与plc之间的通信。这种通信方式硬件投入低,通信协议灵活,可以在多个工业控制领域得到广泛的应用。1 s7-200 plc

5、 与上位机的通信方式 s7-200 系列 plc与上位机进行通信主要有以下几种方式:(1)通过 s7-200 plc的 opc服务器 (pc access) 作为上位机的opc服务器,这种方式只须在opc 服务器中配置相应的测点数据,编程简单,但通信速率不高,用户不能自由修改通信协议;(2)利用触摸屏,这种方式需要根据触摸屏兼容的通信协议进行选择,通信可靠性高,但灵活性差,触摸屏界面编程功能也不够强大;(3)利用通用编程软件实现,这种方法虽然系统开发工作量大,对技术人员的水平和经验都要求较高,但编程灵活,可以实现比较复杂的功能。本文采用了第三种通信方式,在开发通信软件时考虑了s7-200 pl

6、c所特有的一种通信方式自由口通信模式。 在自由口模式下用户可自定义协议,利用串口和plc的通信口来收发数据,通信功能完全由用户程序控制,通信任务和信息定义均需由用户编程实现,通过调用子程序来进行接收中断、发送中断、发送指令 (xmt )、接收指令 (rcv)等通信控制操作。2 自由口通讯工作模式的定义在中小规模系统,通信速率要求不是特别高的情况下,s7-200 plc 自带的编程口可以作为通信口使用。 s7-200 plc 编程软件与plc进行通信所利用的ppi 协议实质也是一种rs-485 通信,它可在多种模式下工作,其中自由口通信功能是s7-200 plc 的一个独特的功能。在自由口通信方

7、式下,s7-200 plc 可以与任何协议公开的设备、控制器进行通信, 最高波特率可达38.4kbit/s。 一般上位机串行口符合rs-232c标准协议, 为了与 plc的 rs-485 通信则必须进行协议转换。在 plc编程方面,自由口模式下的通讯协议主要就是自由口通信工作模式控制字的定义以及发送和接受数据指令的格式约定及其参数设置等。2.2 接收指令( rcv ) rcv(接收指令)从s7-200 plc的通讯口接收一个或多个数据字节。接收的数据字节保存在接收数据缓冲区中。 接收指令完成后, 会产生一个中断事件 (对 port0 为中断事件23,对 port1 为中断事件 24)。启动接收

8、指令后,cpu的通讯控制器就处于接收状态。使用接收指令时需要设置消息起始和结束的判断条件,通讯控制器用这些条件来判断消息的开始和结束。当判断消息结束时接收状态终止,否则通讯口会一直处在接收状态 。由于 s7-200 plc 的自由口通讯是建立在rs-485 半双工通讯的基础上,接收和发送不能同时进行,接收指令不结束,就不能执行发送指令。对几个重要的特殊存储区设置举例如下:movb 16#ec, smb87(允许接受,检测起始字符和结束字符,超时检测)movb 104, smb88 (发送报文起始字符为h)movb 72, smb99(结束字符为h)movb +1000, smb92(接受超时时

9、间为1s)movb 35, smb94(接受最大字符数为35)2.3 发送指令( xmt ) xmt 发送指令利用数据缓冲区指定要发送的字符,用于向指定通信口以字节为单位发送一串数据字符,发送命令格式为 xmt table ,port , 其中 table为数据存储区地址,port 指定 plc要发送数据的端口。一次最多发送255 个字节。 xmt 发送指令完成后, 会产生一个中断事件(port0 为中断事件9,port1为中断事件 26)也可以监视发送完成状态位sm4.5和 sm4.6的变化来产生xmt中断。3 s7-200 plc 通信程序设计3.1 通信程序流程本程序中 s7-200 c

10、pu 从通讯端口0 接收字符串,使用rcv指令和接受完成中断接受数据,以自定义协议来实现计算机与s7-200plc之间的数据通信时,为了避免通信中的各方争用通信线路,一般采用主从方式,即计算机作为主机,向作为从站的s7-200 plc 端口 0 发送规定格式的报文。当 s7-200 plc接收到指令后进行相关的数据校验, 这里采用 bbc校验方式,即将每一帧的第一个字节(不包括起始字符)到该帧中正文校验码之前的所有字节作异或运算(本例中是从vb101到 vb130 ),并将校验码作为报文一部分发送到计算机。在plc接收端也要对接收缓冲区的数据进行bbc校验,然后与指令中的校验码比较,如果校验码

11、相等则置位m0.0,plc执行命令并将所接收到的数据反馈给计算机;如果校验码不相等 , 则置位 m0.1 并返回带有校验码错误的反馈信息,通信流程图如图1 所示。图 1 plc 通信流程图3. 2 通信帧格式约定计算机每次发送一个33 字节的指令来实现一次读写操作。每条指令都包括起始字符、结束字符、目标站地址、目标寄存器地址、要读写的字节数、要写入的数据和校验码。s7-200 plc 接收到计算机发送来的数据, 先存放在 plc的接收缓冲区,设定以vb100开始。自定义的接收缓冲区的数据设计格式见表1 表 1 plc 接收数据缓冲区vb100 接收到的字节数vb101 起始字符vb102 指令

12、类型(读 / 写)vb103 vb104 目标站地址vb105vb112 目标寄存器地址vb113 vb114 读写字节数vb115vb130 要写入的数据vb131 vb132 校验码vb133 结束字符为避免在通信中由于指令中的起始字符或者结束字符与传输的数据有重复而导致plc的误动作,这里采用文本传送二进制数据,即通过以 16 进制的 ascii 码的格式来描述数据,让每个二进制的字节都表示成一对 ascii 编码的 16 进制字符。比如48h可表示为 34h、38h两个字节。指令类型自定义为05h代表读操作, 06h代表写操作。目标寄存器地址采用四个字节表示,前两个字节表示寄存器类型,

13、后两个表示寄存器号,例如: vb101的地址可表示为08 00 00 65 ,其中“ 08 00 ”表示 v寄存器区,“ 00 65 ”表示寄存器号 101。目标寄存器地址表示方法如表2 所示:plc接收上位机的指令后会返回一个21 字节的反馈信息。自定义的发送缓冲区的格式如表3 所示:表 3 plc 发送缓冲区格式vb153 vb154 vb155 vb156vb171 vb172 vb173 vb174 发送字符数起始字符状态信息发送数据区校验码结束字符其中 vb155状态信息的格式定义为:01h代表读入正确, 02h代表写入正确, 03h代表校验码错误,04h代表指令不合法。3.3 主要

14、程序设计本系统 plc程序设计采用模块化设计,主要包括主程序、初始化子程序、读子程序、写子程序、校验子程序、接收完成中断程序和发送完成中断程序。主程序负责判断读写条件和调用各个子程序,具体包括判断plc运行模式; 调用初始化子程序;判断本机站号、指令类型和校验码等是否符合读写程序;调用读、写子程序;接收数据等。在初始化子程序中主要设置一些通信参数和rcv 接收参数并开启接收完成中断0和发送完成中断1。在读写子程序中根据接收到的指令信息读取目标寄存器数据或者把数据写入目标寄存器中,并利用xmt发送反馈信息到计算机。读写程序如下:读子程序:ld sm0.0 r sm87.7, 1 (禁止接收 )

15、r m0.0 (复位校验位 ) rcv vb100, 0 movb 103, vb154 (送返回信息起始字符为g) movb 1, vb155 (状态信息读取正确)hta *vd135,vb156,16(将要读取的数据做16 进制转 ascii 码转换 ) movb 71, vb174 (结束字符为 g) movb 21,vb153 ( 发送字节数为21 个字节 ) ,(校验发送数据)ld sm4.5(端口 0 发送空闲时置1) xmt vb153, 0 写子程序与读程序类似,只是要对写入的数据做ascii 码转换:movd &vb115, vd145(装入要写的数据源的地址指针)

16、ath *vd145, *vd135, vb139(对要写入的数据做ascii 码转 16 进制转换),xmt vb153, 0 4 上位机 c编程在 windows环境下开发与plc的通信软件 , 利用 .net环境下的通信组件serialport 3 实现通信,并用 visual c 编写软件程序。该通信组件提供了使用rs232开发串行通信软件的细则,组件主要属性如表 4 所示 : .net环境下的 serialport组件没有像传统的visual basic 6.0中的 mscomm.portopen = true/false属性,所以打开关闭串口相应的是调用类的open() 和 clo

17、se() 方法。serialport组件读取数据的许多方法是同步阻塞调用,应尽量避免在主线程中调用,可以使用异步处理或线程间处理调用这些读取数据的方法,采用这种方式可以显著提高系统的工作性能,这也是.net环境与 visual basic 6.0编程环境的不同之处。serialport组件的串口属性要设置成与plc串口参数相同的数值,例19200bit/s,无检验, 1 位停止位, 8个数据位。 触发 serialport组件接收数据的事件是datareceived 事件,设置 receivedbytesthreshold为1 表示立即接收。由于datareceived 事件在辅线程被引发,而

18、收到完整的数据要在主线程窗体上显示,所以要用到跨线程处理,在c# 中可采用控件异步委托begininvoke的方法窗体显示收到的数据。serialport接收主要程序如下:private void serialport1_datareceived(object sender, serialdatareceivedeventargs e) int int_len = serialport1.bytestoread;/接收字节数byte bytes2 = new byteint_len; /接收字节serialport1.read(bytes2, 0, int_len); /读入串口数据string st1 =tohexstring(bytes2); /转换数据为16 进制显示myinvoke iv1 = new myinvoke(display); /异步委托调用显示数据receivebox1.begininvoke(iv1, new object st1 ); 编写的通信界

温馨提示

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

评论

0/150

提交评论