收藏 分享(赏)

西门子—自由口通讯知识.doc

上传人:HR专家 文档编号:5918664 上传时间:2019-03-21 格式:DOC 页数:14 大小:712KB
下载 相关 举报
西门子—自由口通讯知识.doc_第1页
第1页 / 共14页
西门子—自由口通讯知识.doc_第2页
第2页 / 共14页
西门子—自由口通讯知识.doc_第3页
第3页 / 共14页
西门子—自由口通讯知识.doc_第4页
第4页 / 共14页
西门子—自由口通讯知识.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、S7-200 系列自由口通讯的实现及应用1 引言为了达到和通讯协议已知的控制设备进行数据交换,以提高自动化控制系统的灵活性,很多 plc 制造商都相继的开发出了方便、灵活的自由口通讯方式,例如三菱公司的 fx2 系列 plc, omron 公司的 cjm1 系列的 plc, 西门子公司的 s7-200 系列 plc 等都提供了自由口通讯模式。自由口通讯是指 plc 提供了串行的通讯硬件,和用于定制通讯协议的相关指令,在控制系统中,当要和 plc 连接的控制设备的通讯协议已知时,可以在 plc 中进行编程定制通讯协议,和控制设备进行数据通讯。本文主要介绍西门子 s7-200 的自由口和计算机的串

2、口进行的通讯,计算机中采用 visual basic 进行编程,从而实现计算机与可编程控制器的直接控制。该通讯方式具有效率高、容易实现、通讯硬件简单、容易配置等特点在工业控制领域中被广泛应用。2 s7-200 通讯指令及特殊字节采用自由口通讯方式时,s7-200 上的 rs485 口完全由用户控制,可以与任何协议已知的设备进行通讯,在这种情况下通讯协议完全由用户制定,为此,s7-200 提供了用于进行通讯协议定制的特殊标志位以及相关的通讯指令。2.1 特殊标志字节s7-200 用于自由口通讯模式定义的特殊标志字节有 smb30 和 smb130,smb30 用于 s7-200 的端口 0 的通

3、讯,smb130 用于 s7-200 的端口 1 的通讯,两者的格式一样,下面我们以 smb130 为例,介绍其组成。smb130 各位的含义如下:pp:两位用于选择通讯的校验方式 当这两位的组合是: 00 无校验 01 偶校验 10 无校验 11 奇校验d:这一位用于选择通讯的数据位数 d=1 时 7 个数据位,d=0 时 8 个数据位bbb:用于选择自由口通讯是的波特率,这三位的组合和通讯波特率的关系如下:000 38400bps 001 19200bps 010 9600bps 011 4800bps 100 2400bps 101 1200bps 110 600 bps 111 300

4、 bps mm: 用于通讯协议的选择,当这两位的组合是:00 ppi 从站模式 01 自由口通讯模式 10 ppi 主站模式 2.2 接收信息的状态字节s7-200 在自由口通讯时用于接受信息的状态有 smb86 和 smb186,smb86 用于 s7-200的端口 0 的通讯,smb186 用于 s7-200 的端口 1 的通讯,两者的格式一样,下面我们以 smb186 为例,介绍其组成。smb186 各位的含义如下:n=1 时:表示禁止接收信息r=1 时:表示接收信息结束e=1 时:表示收到结束字符t=1 时:表示接收信息超时错误c=1 时:表示接收信息字符超长错误p=1 时:表示接收信

5、息奇、偶校验错误2.3 接收信息的控制字节s7-200 在自由口通讯时用于接受信息的控制字节有 smb87 和 smb187,smb87 用于 s7-200 的端口 0 的通讯,smb187 用于 s7-200 的端口 1 的通讯,两者的格式一样,下面我们以 smb187 为例,介绍其组成。smb187 各位的含义如下:en=0 时:禁止接收信息 en=1 时:允许接收信息sc=0 时:不使用起始字符开始 sc=1 时:使用起始字符做为接收信息的开始ec=0 时:不使用结束字符结束 ec=1 时:使用结束字符做为接收信息的结束il=0 时:不使用空闲线检测 il=1 时:使用空闲线检测c/m=

6、0 时:定时器是字符定时器 c/m=1 时:定时器是信息定时器tmr=0 时:不使用超时检测 tmr=1 时:使用超时线检测bk=0 时:不使用中断检测 bk=1 时:使用中断检测2.4 其它和自由口通讯有关的特殊字节 (见表 1)2.5 自由口通讯的指令(1) 发送指令 xmt 其指令格式如图所示: 发送指令用于激活发送数据缓冲区 tbl 中的数据,数据格式如下所示,数据缓冲区中的第一个数据是指定要发送的数据的总字节数,最大为 255 个,从第二个数据开始是依次要发送的数据。port 指定用于发送的端口,在发送完缓冲区中的最后一个数据时产生中断事件。(2) 发送指令 rcv 其指令格式如图所

7、示:接收指令 rcv 用于从指定的端口接收数据,并将接收到的数据存储与其参数 tbl 所指定的缓冲区内,缓冲区的第一个字节指示接收到的字节数量,第二个字节指示接收的起始字符,最后一个字节指示的是结束字符,起始字符和结束字符之间的是接收到的数据,同发送缓冲区一样,接收缓冲区的最大数量也是 255 个字节。(3) 与自由口通讯有关的中断(见表 2)3 plc 自由口通讯的程序设计3.1 自由口通讯的初始化子程序 (见图 1)图 1(a)图 1(b)图 1(c)图 1(d)3.2 自由口通讯的发送子程序 (见图 2) 图 2(a)图 2(b)3.3 自由口通讯的接收程序(见图 3)图 3(a)图 3

8、(b)3.4 自由口通讯的开始接收中断服务程序 (见图 4)图 4 自由口通讯的开始接收中断服务程序3.5 自由口通讯的接收完成中断服务程序 (见图 5)图 5 自由口通讯的接收完成中断服务程序4 vb 中的串行口通讯组件介绍4.1 vb 中串行通讯控件的引用在 vb 的标准工具箱中并没有用于串行通讯的控件,在使用时需要引用,引用的方法是在 vb 界面中的下拉菜单中选择工程/部件,在出现的可选文件中选择 msccomm32.ocx,选择引用后在 vb 的标准工具箱中就会出现 vb 下的串行口通讯控件。如果无法按照上述的方法在部件中成功地引用组件,也可以使用该程序中的浏览功能,到 windows

9、/system 目录下去找 msccomm32.ocx,并打开该文件。4.2 vb 中串行通讯控件的属性(1) commport:该属性用于设置 vb 应用程序所使用的串行口号,其设置值为 116,对应计算机的 com1com16 号端口。(2) settings:该属性用于设置串行口的通讯参数,其格式为“bbbb,p,d,s”其中 bbb为通讯的波特率,波特率范围为 30019200 bps;p 为奇偶校验方式,其设置方法是 e代表偶校验,o 代表奇校验,n 代表无校验;d 为通讯的数据位数,通常是 8 位或 7 位;s代表停止位,停止位的设定值有 1、1.5 、2。例如,setting 属

10、性的设置为,mscomm 。settings= 9600,n,8,1 表示通讯波特率为 9600,无校验,8 个数据位,1 个停止位。(3) portope:在使用串行口进行通讯前必须先打开串行口,该属性用于串行口的打开与关闭,其设置值为 true 或 false,分别代表串行口的打开与关闭。(4) input:该属性的作用是从输入缓冲器中将数据读入到程序中,并清除缓冲区中已被读走的内容。(5) output:该属性的作用是从程序中写数据到输出缓冲器中,写入到输出缓冲器中的内容由串口发送出去。(6) inputlen:该属性指定由串行口读入的字符串长度,vb 所写的程序可以使用该属性将存放在输

11、入缓冲器中读入,但欲指定所读入的字符的长度则可以通过该属性来设置,默认值是 0,在默认情况下,input 指令一次读取所有输入缓冲区中的数据。(7) rthrehold:该属性用于设置当输入缓冲器中接收到的字符数等于该属性的设定值时,引发接受事件 on -comm 事件。当 mscomm.rthreho -ld=0 时不会产生 oncomm 事件。(8) inbuffercount:该属性是指已接收到的并放在输入缓冲器中等待读取的字符的数量。在使用时可把该属性设置为 0 用来清除输入缓冲器。(9) inputmode:该属性用于设置由 input 属性取回的数据的形式。该属性设置值如表 3。4

12、.3 vb 中串行通讯控件的事件(1) commevent 属性用于传回下列所述的值之一,来表示不同的通讯错误或事件,通讯错误的返回值如表 4 所示。(2) 通讯事件的返回值如表 5 所示。4.4 visual basic 中用于串口通讯的程序代码(1) 在 form1 的代码的公共部分定义变量:dim rcvlenth as integer 定义接收数据长度的整形变量dim rcv() as byte 定义接收数据的动态数组dim send(50) as byte 定义发送数据的动态数组(2) 在 form1load 的代码中对 mscomm1 控件进行设置:private sub form

13、_load()rcvlenth=mport=1 指定计算机通讯的端口号mscomm1.settings = “9600,n,8,1“ 设置通讯波特率及校验方式mscomm1.inputmode= cominputmodebinarymscomm1.rthreshold=1mscomm1.inputlen=0mscomm1.outbuffercount=0if not mscomm1.portopen then mscomm1.portopen = trueend sub(3) 在 mscomm1 的 oncomm()事件中加入以下代码,用于接收数据:private sub mscomm1_on

14、-comm()dim i as intgerdim rcvtemp() as byteredim preserve rcv (mscom-m1.inbuffercount) as byteselect case -meventcase comevreceivercvtemp=mscomm1.inputfor i=lbound(rcvtemp) to ubound(rcvtemp)rcvlenth=rcvlenth + 1rcv(rcvlenth)=rcvtemp(i)next i end selectend sub(4) 在 timer1_timer()事件中加入如下代码用于定时的发送数据:p

15、rivate sub timer1_timer()dim i as intgerfor i=1 to 50mscomm1.output = send(i)next i end sub(5) 程序界面如图 6 所示。图 6 程序界面5 结束语s7-200 的自由口通讯方式,使用户可以通过 plc 指令自己定义通讯协议,从而与任何公开通讯协议的 rs-422 或 rs-232c 接口设备进行通讯,使通讯范围大为增加,控制系统配制更加灵活。本文也介绍了采用 vb 进行串行口通讯的控件和编程方法。采用本文叙述的方法,可以组成一个上、下位机控制管理系统,将 plc 的信息转换成各类画面显示,并可以对 plc 的参数进行实时修改,达到管理、控制一体化。作者简介刘红兵 男 供职于太原科技大学电子信息工程学院。参考文献 1 西门子 s7-200 用户手册,20052 刘明芹.plc 控制技术.北京 :化工出版社3 陈立元.利用 visual basic 实现串并行通讯技术. 北京:清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报