好文档 - 专业文书写作范文服务资料分享网站

s7-200自由口通信

天下 分享 时间: 加入收藏 我要投稿 点赞

在起始条件之后,接收指令检查接收的所有字符,如果检测到结束字符,则将其存入缓冲区,结束接收。

示例:PLC接收的结束条件定义为结束字符检测(设置SMB87中的ec=1,定义结束字符SMB89=16#55),接收起始条件定义为起始字符检测(起始字符16#AA)。

示例说明:PLC接收总线上传来的一串字符,依次为16#AA、16#BB、16#CC、16#55、16#EE、16#FF。当PLC检测到起始字符16#AA后,启动接收,当检测到结束字符16#55后,结束接收并将接收的所有字符存入信息缓冲区。如下图22.

图22.用结束字符检测来结束接收指令 2.字符间隔定时器

字符间隔时间定义:从一个字符的结尾(停止位)到下一个字符的结尾(停止位)之间的时间。

接收到字符后,字符间隔定时器重新启动。

两个字符之间的间隔时间超过SMW92/192则结束接收。

示例:PLC接收的结束条件定义为字符间隔定时器(设置SMB87中的c/m=0,tmr=1,信息超时时间SMW92),接收起始条件定义为起始字符检测。

示例说明:PLC接收总线上传来的一串字符,当PLC满足接收条件后启动接收,接收完一个字符的停止位后,重新启动字符间隔定时器,如果检测到下一个字符帧停止位时SMW92时间未到,则重新启动字符间隔定时器,如果当

SMW92时间到时还未检测到下一个字符帧的停止位,则结束接收。如下图23.

图23.用字符间隔定时器来结束接收指令 3.信息定时器

当接收启动条件一满足,信息定时器就启动,当时间超过SMW92/192指定的时间,信息定时器时间到结束接收。

示例:PLC接收的结束条件定义为信息定时器(设置SMB87中的c/m=1,tmr=1,信息超时时间SMW92),接收起始条件定义为起始字符检测。

示例说明:PLC接收总线上传来的一串字符,当PLC满足接收条件后启动接收,信息定时器启动,当SMW92时间到时,结束接收。如图24.

图24.用信息定时器来结束接收指令 4.最大字符计数

当接收字符个数达到或超过最大字符个数(SMB94/SMB194),接收功能结束。 由于接收指令需要知道接收信息的最大长度,以保证信息缓冲区之后的数据不被覆盖,所以即使不被用作接收结束条件,也必须指定最大字符个数。

如果没有指定最大字符个数,则SM86.6/186.6=1(输入参数错误或丢失启动或结束条件) 5.校验结束

当接收字符的同时出现硬件信号校验错误时,接收指令会自动结束。

只有在SMB30/130中使能校验位,才有可能出现校验错误。没有办法禁止此功能。 6.用户结束。

通过程序结束接收功能:将SM87.7或SM187.7置为0,且需边沿触发RCV接收指令。

以上内容是通过发送和接收指令实现S7-200PLC的自由口通讯。另外,S7-200PLC还提供了通讯口字符接收中断功能。见下文。 如何人为结束RCV接收状态?

接收指令控制字节(SMB87/SMB187)的en位可以用来允许/禁止接收状态。可以设置SM87.7/SM187.7为\,然后对此端口执行RCV指令,即可结束RCV指令。

字符中断

使用字符中断方式接收数据,接收每个字符时都会产生中断。在执行与接收字符事件相连的中断程序前,接收的字符存入SMB2寄存器中,校验状态存入SM3.0。 SMB2、SM3.0都是只读的。

Port0/Port1共用SMB2/SMB3。Port0对应于中断事件8。Port1对应于中断事件25。

SMB2使用条件:RCV指令不使能,通讯端口为自由口模式,且建立中断事件8/25。

字符中断使用方法:

以端口0接收字符为例:如图25.

图25.字符中断程序

当CPU通过端口0接收到一个字符后,会将该字符存入接收字符缓冲区SMB2,然后进入相连接的中断程序中。

注意:对于这段程序,如果在中断程序中不作任何编程,那么当CPU接收n

个字符时,中断程序将被执行n次,SMB2寄存器存储接收到的最后一个字符。 如上位机通过串口调试软件给CPU发送3个字符16#AA、16#BB和16#CC,如下图26.

图26.通过串口调试软件发送字符

那么与接收字符事件相连的中断程序将被执行3次,SMB2中只能保存最后一个接收到的字符16#CC。如下图27.

图27.状态表监控SMB2

用SMB接收多个字符,如何编程?

由于SMB2只能存储一个字符(一个字节),如果要想接受多个字符,则应当在CPU接收下一个字符之前,在中断程序中通过指针编程将SMB2中存储的字符移出来,以便下一次接收字符。以一个例程说明:如图28.

图28.接收多个字符的程序

VD0作为地址指针指向VB100,当端口0接收到第一个字符,将第一个字符存入SMB2,进入接收中断,将SMB2中的字符复制到指针VD0指向的地址字节VB100中,指针地址加1,VD0指向下一个字节VB101。当接收第二

个字符,将字符存入SMB2,进入接收中断,将SMB2中的第二个字符复制到指针VD0指向的地址字节VB101中,指针地址加1,VD0指向下一个字节VB102。当接收第三个字符时以此类推。

另外,如果需要接收n个字符就结束接收,或者需要接收n个字符后循环接收,可以在中断程序中设置一个标志位,下面我们试举例说明:

例程1,接收到5个字符就结束接收的程序:如图29.

图29.程序

例程2,接收到5个字符后循环接收的程序:如图30.

s7-200自由口通信

在起始条件之后,接收指令检查接收的所有字符,如果检测到结束字符,则将其存入缓冲区,结束接收。示例:PLC接收的结束条件定义为结束字符检测(设置SMB87中的ec=1,定义结束字符SMB89=16#55),接收起始条件定义为起始字符检测(起始字符16#AA)。示例说明:PLC接收总线上传来的一串字符,依次为16#AA、16#BB、16#CC、16#55、16#E
推荐度:
点击下载文档文档为doc格式
3cstj7dp8f9mzf00wrvr0a0pl1szli00heg
领取福利

微信扫码领取福利

微信扫码分享