[西门子] 【智】S7-200PLC步进单轴回原点正反点正反转正反限位案例...

[复制链接]
查看68380 | 回复0 | 2024-8-30 14:16:46 | 显示全部楼层 |阅读模式
自由口通讯俗称无协议通讯,即有用户自定义通讯协议。在上一期中讲解了S7-200与PC(个人计算机)自由口通讯编程及串口调试软件的调试,所采用的是字符中断的方式来进行接收数据,其中是不需要RCV接收指令的,而自由口通信的核心指令就是发送(XMT)和接收(RCV)指令,今天就主要来讲解自由口通信的发送(XMT)和接收(RCV)指令。

发送指令

发送指令(XMT)激活发送数据缓冲区(TBL)中的数据,数据缓冲区以字节为单位,第一个字节为要发送的字节数,其后为发送的信息字符,最大为255个,使用边沿触发发送指令;PORT指定用于发送的端口,PORT=0的时候表示由0口向外发送数据,PORT=1的时候表示由1口向外发送数据。如果有一个中断服务程序连接到发送结束事件上,在发送完缓冲区中的最后一个字符时,则会产生一个中断,对端口0为中断事件9,端口1为中断事件26,通过监视SM4.5或SM4.6信号,也可以判断发送是否完成。当端口0及端口1发送空闲时,SM4.5或SM4.6置1。注意:由于SM4.5/4.6的使用受程序扫描周期的影响,编程中推荐使用发送完成中断。在下面程序实例中使用发送完成中断。

使用S7-200与PC(个人计算机)自由口的通讯,用串口调试软件测试发送指令,实例程序及调试如下图所示:



接收指令

接收指令( RCV)通过指定端口(PORT)接收信息并存储于数据缓冲区(TBL),缓冲区中第一个字节为接收的字符个数,其后为接收的信息字符,缓冲区最多可有255个字节,使用边沿触发或第一个扫描周期触发接收指令;需要注意的是RCV使能会将TBL缓冲区中的字符个数清零;PORT指定用于接收的端口,同发送指令;如果有一个中断服务程序连接到接收信息完成事件上,在接收完缓冲区中的最后一个字符时,S7-200会产生一个中断,对端口0为中断事件23,端口1为中断事件24。也可以不使用中断,通过监视SMB86(端口0)或者SMB186(端口1)的状态信息来接收信息。当接收指令未被激活或者已经被中止时,这一字节不为0;当接收正在进行时,这一字节为0。

看完上面发送指令和接收指令的介绍,看似两个指令差不多,但接收指令没有想象的那么简单,XMT(发送)指令的使用比较简单,RCV(接收)指令的使用却要复杂的多,接收字符信息过程需要一定的控制。

RCV指令的基本工作过程为:

1.在逻辑条件满足时,启动(一次)RCV指令,进入接收等待状态

2.监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态

3.如果满足了设置的消息结束条件,则结束消息,然后退出接收状态

所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行XMT指令,就不会发送任何消息。所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。

接收指令起始和结束条件

接收指令使用接收信息控制字节(SMB87或SMB187)中的位来定义信息起始和结束条件。必须为接收信息功能操作定义一个起始条件和一个结束条件(其中必须定义接收的最大字符个数限制)。这是学好自由口通讯的关键。接收信息控制字节SMB87(PORT0)或SMB187(PORT1)如下图所示:



接收指令起始条件和结束条件较为多样,在下面的实例程序中使用开始字符作为起始条件,使用结束字符作为结束条件,限制接收的最大字符个数,使用接收完成中断作为判断字符接收完成的信号。同样使用S7-200与PC(个人计算机)自由口的通讯,用串口调试软件测试接收指令,实例程序及调试如下图所示:



最后我们做一个用PLC接收指令接收串口调试软件发送的字符然后将PLC接收的字符数据用发送指令发送回串口调试软件,编写PLC程序及调试画面如下图所示:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则