当前位置:文档之家› 200的自由口通讯说明

200的自由口通讯说明

Break状态的波形图如下图9.
图9.一个断点波形图
如果通过接收方为上位机或者S7-200PLC,那么它们接收到的字符为16#00.
那么通过发送一个Break断点接收到的16#00与发送一个字符帧16#00有什么不同呢?Break状态是传输16位数据一直为0。而发送一个字符16#00(帧格式为1个起始位,8个数据位,偶校验和停止位)则传输11位该字符帧。如下图10.
图18.用起始字符检测来启动接收指令
3.空闲线和起始字符
接收指令执行时,先检测空闲线条件,在空闲线条件满足后,检测起始字符。如果接收的字符不是起始字符,则重新检测空闲线条件。
在空闲线条件满足和接收到起始字符之前接收的字符被忽略。起始字符和字符串一起存入缓冲区。
适用于通讯连接线上有多个设备的情况。
示例:PLC接收的起始条件定义为空闲线和起始字符(设置SMB87中的il=1,sc=1,bk=0,空闲线检测时间SMW90=10ms,起始字符SMB88=16#55),结束条件为最大字符个数2.
接收指令使用接收信息控制字节(SMB87或SMB187)中的位来定义信息起始和结束条件。必须为接收信息功能操作定义一个起始条件和一个结束条件(最大字符数)。如下图14.
图14.接收控制字节SMB87(port0)/SMB187(port1)
接收指令起始条件
接收指令支持几种起始条件:
1.空闲线检测
定义:在传输线上一段安静或空闲的时间。
字符传输的时间取决于波特率,如果设置波特率为9.6k,那么传输一个字符帧中的一位用时等于1/9600*1000000=104us,如果这个字符帧有11位,那么这个字符帧的传输时间等于11/9600*1000=1.145ms.
通讯口初始化
SMB30(对于端口0)和SMB130(对于端口1)被用于选择波特率和校验类型。SMB30和SMB130可读可写。见下图2.
图22.用断点检测来启动接收指令
5.断点和起始字符
在断点条件满足后,检测起始字符。
在断点条件满足后,如果收到除起始字符外的任意字符,重新检测新的断点。
在满足断点和起始字符之前接收的字符将被忽略,起始字符和字符串一起存入信息缓冲区。
示例:PLC接收的起始条件定义为断点和起始字符(设置il=0,sc=1,bk=1,起始字符SMB88=16#55)。结束条件为最大字符个数8.
示例:用PLC连续的发送两个字符(16#55和16#EE)(程序如图3和图4),通过示波器测量CPU通讯端口管脚3/8之间的电压,波形如下图1.:
示例说明:
16进制的16#55换算成2进制等于2#01010101,16进制的16#EE换算成2进制等于2#11101110。如图所示,当数据线上没有字符发送时总线处于空闲状态(高电平),当PLC发送第一个字符16#55时,先发送该字符帧的起始位(低电平),再发送它的8个数据位,依次从数据位的最低位开始发送(分别为1、0、1、0、1、0、1、0),接着发送校验位(高电平或低电平或无)和停止位(高电平)。因为本例中PLC连续的发送两个字符,所以第一个字符帧的停止位结束后便立即发送下一个字符帧的起始位,之间数据线没有空闲状态。假如PLC断续的发送这两个字符,那么当PLC发送完第一个字符帧的停止位后,数据线将维持一段时间空闲状态,再发送下一个字符帧。
图15.空闲线检测程序
示例说明:
(紫色部分:)当启动接收指令后,PLC对空闲线时间进行检测,如果在SMW90中设定的空闲线时间到之前,已经接收到了字符1,则字符1被忽略,并且按照SMW90中设定的时间重新启动空闲定时器。
(橙色部分:)同样的,如果在SMW90中设定的空闲线时间到之前,已经接收到了字符2,则字符2也被忽略且空闲线定时器重新启动。
图5.建立发送完成中断的程序
方法二:发送空闲位。当port0发送空闲时,SM4.5=1。当port1发送空闲时,SM4.6=1.
示例:如果PLC断续的发送2个字符16#55和16#EE.
方法一:利用发送完成中断,在主程序中建立中断事件,执行XMT发送16#55,发送完成后,进入发送完成中断程序中,执行XMT发送16#EE。波形图如图6.
示例说明:PLC接收总线上传来的数据,分几种情况:
当空闲线条件不满足,即使空闲后出现起始字符,PLC也不开始接收。如图19.
图19.
当PLC先检测到起始字符,再检测到空闲线条件满足,PLC不启动接收。或者当PLC检测到空闲线条件满足后,接收到除起始字符之外的任意字符,PLC也不启动接收。如图20.
图20.
示例说明:PLC接收总线上传来的一串字符和断点,依次为16#55、break、16#AA、16#55、break、16#55、16#EE、16#FF. 分几种情况理解:
当PLC先检测到起始字符再检测到断点,PLC不启动接收。(SC+BK)
当PLC检测到断点后,接收到除起始字符外的任意字符,PLC不启动接收。(BK+Char+SC)
Break断点
Break状态:持续以当前波特率传输16位数据,且一直维持“0”状态。
产生方式:把字符数设置为0并执行XMT指令,可以产生一个Break状态。
Break用途:可以作为接收的起始条件。
示例:通过XMT指令发送一个Break断点。偶校验,8个数据位,9.6K。程序如下图8.:
图8.发送一个断点的程序
图6.字符波形图
方法二:利用发送空闲位。当执行XMT发送完16#55后,利用SM4.5/4.6的上升沿(确保发送的字符帧发送完成),往XMT的TBL缓冲区写入新字符16#EE,并再次触发发送。波形图如图7.
图7.字符波形图
两种方法均断续发送字符,即两个字符之间有空闲状态。注意:由于SM4.5/4.6的使用受程序扫描周期的影响,编程中推荐使用发送完成中断。
示例:PLC接收的起始条件定义为断点检测(设置SMB87中的il=0,sc=0,bk=1),结束条件为最大字符个数8。
示例说明:PLC接收总线上传来的一串字符和断点,依次为16#0016#00(连续的两个字符间没有空闲)、16#0016#00(断续的两个字符间有空闲)、第一个Break断点、16#55、第二个Break断点、16#EE。当PLC检测到第一个断点状态后,启动接收,接收的字符存入信息缓冲区(第二个断点),第一个断点之前的字符被忽略。接收缓冲区起始地址为VB200。如下图22.
图12.建立接收完成中断的程序
方法二:接收状态字节。SMB86(port0),SMB186(port1)。
当接收状态字节为0,表示接收正在进行。
当接收状态字节不为0,表示接收指令未被激活或者已经被中止。见下图13.
图13.接收状态字节SMB86(port0)/SMB186(port1)
接收指令起始和结束条件
只有当PLC检测空闲线条件满足后,接收到起始字符,PLC才启动接收,在空闲线条件满足和接收到起始字符之前接收的字符被忽略。起始字符和字符串一起存入缓冲区,缓冲区首地址VB200。如图21.
图21.用空闲线和起始字符来启动接收指令
4.断点检测
大于一个完整字符传输时间的一段时间内,接收数据一直为0.
在断点之前接收的字符被忽略,在断点之后接收的字符存入信息缓冲区。
图2.特殊存储器字节SMB30/SMB130
示例:定义端口0为自由口模式,9600波特率,8位数据位,偶校验,程序如下图3.:
图3.通讯口初始化程序
发送数据
发送指令XMT能够发送一个字节或多个字节的缓冲区,最多为255个。使用边沿触发。
发送缓冲区格式:第一个字节为字符个数,其后为发送的信息字符。
示例:如果PLC连续发送2个字符16#55和16#EE,程序如下图4.:
字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。
字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。字符传输时间取决于波特率。
数据发送可以是连续的也可以是断续的。所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。
图11.接收指令程序
示例说明:RCV指令TBL缓冲区的首地址VB200保存的是接收字符个数,其后是信息字符。
判断接收完成的方法:
方法一:接收完成中断。通过连接中断服务程序到接收信息完成事件上,在接收完缓冲区中的最后一个字符时,则会产生一个中断。对端口0为中断事件23,对端口1为中断事件24。连接中断程序到中断事件示例如下图12.:
图10.一个断点和字符0的波形图
接收数据
接收指令RCV能够接收一个字节或多个字节的缓冲区,最多为255个。使用边沿触发或第一个扫描周期触发。
接收缓冲区格式:第一个字节表示接收的字符个数,其后为接收的信息字符。
RCV使能会将TBL缓冲区中的字符个数清零。
示例:如果发送方给PLC发送2个字符16#55和16#EE,PLC的接收程序如下图11.:
图4.发送指令程序
示例说明:PLC通过数据块写入数据。XMT指令中TBL缓冲区首地址VB200写入发送字符的个数,VB201和VB202分别写入发送字符。通讯口波形图如图1.
判断发送完成的方法:
方法一:发送完成中断。通过连接中断服务程序到发送结束事件上,在发送完缓冲区中的最后一个字符时,则会产生一个中断。对通讯口0为中断事件9,对通讯口1为中断事件26。连接中断程序到中断事件示例如下图5.:
示例:PLC接收的起始条件定义为起始字符检测(设置SMB87中的il=0,sc=1,bk=0,起始字符SMB88=16#55);接收的结束条件定义为最大字符个数SMB94=4。程序如下图17.
图17.起始字符检测程序
相关主题