您的当前位置:首页正文

编码器和PLC通信方法

来源:九壹网
主要介绍BEN编码器和S7-200自由口通讯方法

一、基础知识介绍(名词理解,原理,工作机制)

1、S7-200CPU的通讯口可以设置为自由口模式(如何设置成自由口模式?)。选择自由口模式后,用户程序可以完全控制通讯端口的操作(如何控制通讯端口的操作),通讯协议也完全受用户程序控制(如何控制通讯协议)。S7-200 CPU 处于自由口通信模式时,通信功能完全由用户程序控制,所有的通信任务和信息定义均需由用户编程实现。

2、S7-200CPU上的通讯口在电气上是标准的RS-485半双工串行通讯口。

此串行字符通信的格式可以包含:○一个起始位。○7或8位字符(数据字节)。○一个奇偶校验位,或没有校验位。○一个停止位。○通信波特率可以设置为1200,2400,4800,9600,19200,38400,57600,115200 bit/s。凡是符合这些格式的串行通信设备,都可以和S7-200 CPU通信。

借助自由口通信模式,S7-200 CPU 可与许多通信协议公开的其他设备、控制器进行通信,其波特率为1200~115200bit/s。

自由口通信是一种基于RS485 硬件基础上,允许应用程序控制S7-200 CPU 的通信端口、以实现一些自定义通信协议的通信方式。

3、自由口通讯(顾名思义很自由)可以通过用户程序灵活控制,没有固定模式。S7-200 可通过自由口通讯协议访问下列设备:– 带用户端软件的PC机,– 条形码阅读器,– 串口打印机,– 并口打印机,– S7-200,– S7-300 with CP 340 – 非Siemens PLC,– 调制解调器。S7-200 CPU 通信端口是RS485 标准,因此如果通信对象是RS232 设备,则需要使用RS232/PPI 电缆。

4、“请求-响应”工作机制:S7-200 CPU可以作为主站先向从站发送数据请求,然后等待从站的数据响应,也可以作为从站,首先等待主站发送过来的数据请求,然后根据请求的内容,按规则把相关数据返回给主站。上述过程,反复进行,实现数据交换。如果CPU作为主站,有多个从站设备,那么一般在请求信息里面会包含地址信息,各个从站接收到数据请求后,首先会判断请求信息里面的地址信息和本机地址是否一致,如果不一致,会忽略,如果一致,会根据请求的内容,按协议规则把相关数据返回给主站。

5、由于S7-200 CPU 通信端口是半双工通信口,所以发送和接受不能同时进行。S7-200 CPU 通信口处于自由口模式下时,该通信口不能同时工作在其他通信模式下(不支持其他通讯协议如PPI)。如不能端口1在进行自由口通信时,又使用端口1进行PPI 编程。自由口通信只有在S7-200 CPU 处于RUN 模式下才能被激活,如果将S7-200 CPU 设置为STOP 模式,则通信端口将根据S7-200CPU 系统块中的配置转换到PPI 协议。CPU停止时,自由口不能工作,编程软件才可以与CPU通信。

6、自由口通讯的核心指令时发送XMT和接受RCV指令,要注意多条指令不能同时有效,数据的发送和接受需经过数据缓冲区,发送指令是把缓冲区的数据通过通讯口发送出去,接受指令是从通讯口把数据接收到缓冲区里,调用发送XMT和接受RCV指令时只需要指定通讯口和数据缓冲区的起始字节地址。发送XMT和接受RCV指令与网络上通讯对象的地址无关,而仅对本地的通讯端口操作,如果网络上有多个设备,消息中必然包含地址信息,这些地址信息的消息才是发送XMT和接受RCV指令的处理对象。

7、使用自由口通信前,可以和精芬零二一三九伍三六二一九,了解自由口通信工作模式的定义方法,即控制字的组态。S7-200 CPU 的自由口通信的数据字节格式必须含有一个起始位、一个停止位,数据位长度为7位或8位,校验位和校验类型(奇、偶校验)可选。

S7-200 CPU 的自由口通信定义方法为将自由口通信操作数传入特殊寄存器

SMB30(端口0)和SMB130 (端口1)进行端口定义,自由口通信操作数定义如下所示:

MSB 7 LSB 0 p p d b b b m m PP:校验选择,00=不校验,01偶校验,10不校验,11奇校验 d:每个字符的数据位,0=每个字符8位,1=,每个字符7位 bbb:自由口波特率,000=38400波特,001=19200波特,010=9600波特,011=4800波特,100=2400波特,101=1200波特,110=115.2K波特,111=57.6K波特

mm:协议选择,00=PPI/从站模式,01=自由口模式,10= PPI/主站模式,11=保留(缺省设置为PPI/从站模式)

例如:MOVB 5,SMB30 5表示无校验位,8位数据位,19200bit/s,自由口模式SMB30表示端口0。

8、自由口通信模式主要使用XMT (发送)和RCV (接收)两条指令,以及相应的特殊寄存器。XMT 指令利用数据缓冲区指定要发送的字符,用于向指定通信口以字节为单位发送一串数据字符,一次最多发送255个字节。XMT 指令完成后,会产生一个中断事件( Port 0为中断事件9,Port1为中断事件26,通讯口中断:产生使程序可以控制通讯口的事件)。 • XMT 指令的缓冲区格式如下表所示: 发送字节个数,数据字节。。。。。最多发送255个字节。 信息报文模式: 起始符 地址 指令类型 数据 。。。 数据 校验 校验 结束符 主站发出XMT 指令,发送指令激活了,把缓冲区数据通过通讯口发出,RCV接收指令激活了,等待响应,会进入接收等待状态,如果数据没有过来,会一直保持接收等待状态(监视通讯口)。如果有数据过来了,且满足设置的消息起始条件,会进入消息接收状态;满足设置的消息结束条件,则结束消息,然后退出接收状态。从站RCV接收指令,接收到主站的信息报文,处理后,按照主站要求,通过XMT 指令,传给主站。“请求-响应”工作机制

9、RCV 指令可以从S7-200 CPU 的通信口接收一个或多个数据字节,接收到的数据字节将被保存在接收数据缓冲区内。RCV 指令完成后,会产生一个中断事件( Port 0为中断事件23,Port1 为中断事件24)。特殊寄存器SMB86 和SMB186 则分别提供Port0 和Port1 的接收信息状态字节。

• RCV 指令的缓冲区格式如下表所示: 接收字节个数,起始字符,数据字节。。。。。,结束字符,最多255个字节。

10、XMT 指令和RCV 指令是非常简单,重要的工作是处理缓冲区的数据。 S7-200 CPU自由口编程有两种方式:一种是使用XMT 指令和RCV 指令,另一种方式是使用接收字符中断( Port 0为中断事件8,Port1 为中断事件26)。 发送/接收指令作为主站:

• 根据协议内容定义好发送缓冲区。 • 在首次扫描中设置相关通讯参数。 • 在首次扫描中连接“接收完成中断”,“发送信息中断”。 • 启用发送XMT 指令,把缓冲区数据发送出去。 • 在发送完成中断程序中,调用接收RCV指令。

• 在接收完成中断程序中,判断接收是否正确,如果正确,调用发送XMT 指令重新请求数据;如果不正确,可考虑再次重新发一次请求。

发送/接收指令作为从站:

• 在首次扫描中设置相关通讯参数,如SMB87,SMB30。 • 在首次扫描中连接“接收完成中断”,“发送信息中断”。 • 启用发送RCV 指令,把缓冲区数据发送出去。

• 在接收完成中断程序中,判断接收是否正确(SMB86是否等于16#20),如果正确判断请求指令,组织相应的数据到缓冲区里,调用发送XMT 指令重新请求数据;如果不正确,重新调用接收RCV 指令,可考虑再次重新发一次请求。 •在发送完成中断程序中,调用接收RCV指令。

接收字符中断( Port 0为中断事件8,Port1 为中断事件26)。对于信息字符开始和结束为2个字符的话,只能用这种: • 在首次扫描中设置相关通讯参数。 • 在首次扫描中连接“接收字符中断”

• CPU通讯口每接收一个字符,会产生一个接收字符中断,并把接收到的字符放到SMB2里面,我们需要在接收字符中断程序里,根据SMB2的内容编程。

11、接收指令复杂,选择信息的起始和结束条件,使用SMB86至SMB94对端口0设置,使用SMB186至SMB194对端口1设置,只针对接收指令。

SMB86为接收信息状态字节,SMB87为接收信息控制字节,SMB88信息字符的开始,SMB89信息字符的结束,SMB90字符间空闲时间,毫秒,2个字节,SMB92信息定时器,超过这个时间段,终止接收信息,毫秒,2个字节,SMB94接收最大字符数。 二、实例

1、自由口发送实例(只使用发送指令XMT,使用了定时中断10,使用简单) 1 )功能要求

• 记录定时中断次数,将计数值转化为ASCII字符串,再通过CPU224XP 的Port0 发送到计算机串口,计算机接受并利用超级终端显示与S7-200 CPU 通信的内容。 2) 硬件需求

• 带串口的PC 机、S7-200 CPU 224XP、RS 232 电缆(推荐采用西门子S7-200 串

口编程电缆)

3) 简要实现步骤

• (1)编写S7-200 PLC 程序。• (2)下载程序到S7-200 PLC 中。 • (3)配置计算机的超级终端。• (4)使用计算机上超级终端接收并显示与S7-200 CPU 通信的通信内容。 4)BEN编码器编程说明

1、规定缓冲区为VB100 到VB114 ,使用数据块进行缓冲区定义。 地址 存储数据 说明 VB100 14 发送字节数 VB101-112 数据字节 数据字节 VB113 16#0D 消息结束字符 VB114 16#0A 回车符 在Step7- Micro/Win 中组态数据块

VB100 14 ;发送字节数 VD200 0 ;累加器清0

VB113 16#0D ;消息结束字符 VB114 16#0A ;回车符

16#0D和16#0A用于计算机的超级终端显示需要。 2 、程序结构及用途

• 主程序:根据I 0.3 状态初始化端口1为自由口通信 • SBR_0:定义端口0为自由口,初始化定时中断 • SBR_1: 定义端口0为普通PPI 从站通信口

• INT_0: 对定时中断计数并从端口0发送计数值 3、程序编写 主程序:

初始化自由口通讯 LD I0.3 EU上升沿

CALL SBR_0:SBR0调用子程序 恢复正常的PPI通讯 LD I0.3 ED下降沿

CALL SBR_1:SBR1

SBR_0:定义端口的通讯参数 LD SM0.0

MOVB 16#09, SMB30 定义通讯口为自由口模式,9600 bit/s,无校验,每个字符8个数据位

MOVB 250, SMB34 写入定时中断周期250ms

ATCH INT_0:INT0, 10 连接定时中断时间10到中断服务程序INT_0 ENI

SBR_1:设置端口0为PPI 从站通信口

LD SM0.0

MOVB 16#08, SMB30

INT_0:(每250ms,计数一次,发送一次) LD SM0.0

+D 1, VD200 双整数自加1

DTA VD200, VB101, 0 双整数转化ASCII码,放在VB101开始12个字节中,格式参数FMT指定小数部分的位数和小数点的表示方法。 XMT VB100, 0 自由口发送指令

补充说明:中断事件10是由中断0产生的时间中断,该时间中断的间隔的范围为1ms~255ms,中断间隔的数值由SMB34 定义。由于RS232传输线由空闲状态切换到接收模式需要切换时间(一般为0.15~14ms),故为防止传送失败,设置的中断间隔必须大于切换时间,并再增加一些富余。

5)超级终端(Hyper Terminal)是Windows 操作系统提供的通信测试程序,本例程用它来监测计算机和S7-200 CPU 之间的串口通信。超级终端和Step7 icro/Win 这类应用程序进行串口操作时都会占用计算机串口的控制权,所有不能同时进行对同一个串口进行操作。 超级终端组态步骤如下:

• 1 执行Windows 菜单命令“开始”>“附件”>“通信”>“超级终端”,为要新建的连接 名称。2 选择连接时要使用的串口。3 设置串口通信参数并保存连接,注意此处设置要与PLC程序中对应。4 使用超级终端接收S7-200 CPU 发送的信息。5将I 0.3 置为ON,单击按钮进行连接,超级终端的窗口会自动显示S7-200 CPU 发送的字符串。

2、自由口接收实例(只使用接收指令RCV) 1 )功能要求

• S7-200 CPU 从端口0接收计算机发送的字符串,并在信息接收中断服务程序中把接收到的第一个字节传送到CPU 输出字节QB0 上显示。 2) 硬件需求

• 带串口的PC 机、S7-200 CPU 224XP、RS 232 电缆(推荐采用西门子S7-200 串口编程电缆)

3) 简要实现步骤

• (1)编写S7-200 PLC 程序。• (2)下载程序到S7-200 PLC 中。

• (3)配置计算机的超级终端。• (4)使用计算机上超级终端发送信息,并通过状态表查看S7-200CPU接收到的通信内容。 4)BEN编码器编程说明 1、规定缓冲区为VB100 2 、程序结构及用途

• 主程序:根据I 0.3 状态初始化端口1为自由口通信 • SBR_0:定义端口0为自由口,初始化接收命令 • SBR_1: 定义端口0为普通PPI 从站通信口 • INT_0: 在QB0 输出接收到的第一个字节 3、程序编写 主程序:

初始化自由口通讯

LD I0.3 EU上升沿

CALL SBR_0:SBR0调用子程序 恢复正常的PPI通讯 LD I0.3 ED下降沿

CALL SBR_1:SBR1

SBR_0:定义端口的通讯参数 LD SM0.0

MOVB 16#09, SMB30 定义通讯口为自由口模式,9600 bit/s,无校验,每个字符8个数据位

MOVB 16#B0, SMB87 接收信息控制字节 MOVB 16#0A, SMB89 设置信息结束符

MOVW 5, SMW90 设置空闲检测时间为5 ms MOVB 50, SMB94 设置最大字符数为50

ATCH INT_0:INT0, 23 连接接收信息完成23到中断服务程序INT_0 ENI

RCV VB100, 0 启动接收指令,接收缓冲区从VB100开始

SBR_1:设置端口0为PPI 从站通信口 LD SM0.0

MOVB 16#08, SMB30

INT_0:(每250ms,计数一次,发送一次) LD SM0.0

MOVB VB101, QB0 QB0输出接收到的第一个字节 RCV VB100, 0 开始下一次接收

5)超级终端(Hyper Terminal)是Windows 操作系统提供的通信测试程序,本例程用它来监测计算机和S7-200 CPU 之间的串口通信。超级终端和Step7 icro/Win 这类应用程序进行串口操作时都会占用计算机串口的控制权,所有不能同时进行对同一个串口进行操作。 超级终端组态步骤如下:

(1)打开刚才建立好的超级终端链接,进入该链接的属性窗口。(2)点击“ASCII 码设置” 按钮,在弹出的ASCII 码设置窗口中,按下图方式进行设置。

2 接收超级终端发送的信息。 (1)把PLC 转换到运行状态,同时把I 0.3 置为ON。 (2)在超级终端中输入字符串。(3)在Step-Micro/Win32 中使用状态图,

监测缓冲区和QB0(ASCII 码显示字母) 内容。

3、自由口收发实例

初始化子程序SBR_0(从站程序写法)

LD SM0.1 // 首次扫描为1

MOVB 16#09, SMB30 // 9600 bit/s,8位数据,无校验,1位停止位

MOVB 16#9C, SMB87 // 允许接收,字符空闲时间,超时检测,没有起始位检测,可以通过字符空闲时间和超时检测来判断起始 MOVW +4, SMW92 //字符空闲时间为4ms MOVW +50, SMW92 // 接收超时时间为50ms MOVB 255, SMB94 // 接收的最大字符数为255 ATCH INT_0:INT0, 23 // 接收完成事件连接到中断程序0 ATCH INT_1:INT1, 9 // 发送完成事件连接到中断程序1 ENI // 允许用户中断

RCV VB100, 0 // 端口0的接收缓冲区指针指向VB100,等待接收,当接收完成后连接到中断程序0中。 接收完成中断程序INT_0:

若SMB86==4(接收信息超时,这里起始字符都是2个字节,所以不能使用起始字符作为表示,使用超时作为接收结束),后面的VB103==1,表示指令类型中为1的主站的要求,VB100放字符数,VB101和VB102放起始字符,VB103指主站报文格式中的指令类型。

接着执行CRC校验子程序,将VB103开始的11个字符(指令类型1个字节,数据10个字节)校验,结果放在VW0中,将VW0同VW114比较,相等,执行CRC校验和发送指令,若不等,执行一次接受指令。

这里还有一个NOT指令,执行一次接受指令,具体咨询上海精芬技术部。

BEN是专业生产编码器的跨国公司,主要产品有绝对值编码器,增量和防爆编码器,BEN编码器总部在德国柏林,公司在欧洲、美洲和亚洲设有许多分支机构和代表处,是真正的国际性企业。

BEN编码器生产基地在法国马赛 MARSEILLES,中文名:倍恩,上海精芬是中国大陆地区唯一代理商。一.编码器温度:-60℃~+120℃可选二.BEN编码器防护分为:IP54-IP68.三.编码器速度:500 r/min~40000 r/min 四.BEN编码器 分为:实心轴,盲孔,通孔。 五.BEN编码器出线方式分为:侧出线,后出线 六.BEN编码器按原理分为:磁编码器,光电编码器 七.编码器功能:精确检测角度,位置,速度,圈数...

八.编码器的常规外形:18MM,38MM,58MM,66MM,80MM.100MM. 九.BEN编码器分为:增量型,绝对值型(单圈,多圈)。

十.BEN绝对值编码器轴分为:6MM,8MM,10MM,12MM,14MM,25MM. 十一.BEN编码器安装方式分为:夹紧法兰、同步法兰、加紧带同步法兰、盲孔(弹簧片,抱紧)、通孔(弹簧片,键销 )

十二.BEN编码器 通讯协议波特率:4800~,9600,19200,115200bit/s,默认为9600bit/s。刷新周期约1.2ms

十三.BEN绝对值编码器精度分为:单圈精度和多圈精度,加起来就是通常说的多少位(常规单圈10位,12位,13位,16位,20位,多圈24位,25位,30位,32位...)。

十四.BEN绝对值编码器输出可选:SSI、4-20MA、0-10V,profibus-dp、DEVicenet、并行、二进制码、BiSS、CANopen、Endat及Hiperface等

十五.BEN编码器常用规格:BESM58,BE1322SM58-N011,BESM58-011、BE122SM58、BE1822SM58、BE420SM58,BE1622SM58-N011等。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top