电工之家_电工基础知识学习网站
当前位置:电工之家 > plc > 西门子plc > 正文

S7-200smart RCV 接收指令实例

时间:2018-05-23 19:38 来源:电工之家

S7-200smart RCV 接收指令实例
RCV接收指令实例
例子 1 :S7-200 SMART CPU集成的RS485 端口(端口 0 )实现与条码扫描枪通信
条码扫描枪通常为 RS232 端口,其与 S7-200 SMART CPU 集成的 RS485 端口连接时需要使用 RS232/485 转换设备或 RS-232/PPI 多主站电缆。
条码扫描枪接收到条码后会自动通过 RS232 端口发送报文,S7-200 SMART CPU 需要调用 RCV 指令接收报文,并在接收完成中断中再次使能 RCV 指令循环接收报文。
CPU 主程序见图1所示: 

S7-200smart RCV 接收指令实例
图1.CPU 主程序
1.设置 SMB30 = 2#00001001 (自由口通信,波特率 9600,8 位数据位,无校验);
2.设置 SMB87 = 2#10010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件 ;
3.设置空闲线定时器 SMW90 = 5 ms,字符间定时器 SMW92 = 5 ms,允许最大接收字符个数 SMB94 = 50;
4.连接中断子程序 INT_0 到通信端口 0 接收完成事件,并使能中断;
5. 使用 SM0.1 触发 RCV 指令地执行。
CPU 中断程序见图2.所示: 
S7-200smart RCV 接收指令实例
图2.CPU 中断程序
1.判断信息接收结束是否为字符间超时结束(SM86.2 = 1),若是,则认为接收成功,接收成功计算器 VB200 自加一;
2.消息接收成功时接收的信息拷贝到 VB300 为起始地址的存储区;
3.开始下一次 RCV 指令地执行。
备注:
例子程序请参见:与条码扫描枪通信.smart,例子程序中的 CPU 类型可能与用户实际使用的类型不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试,例子程序仅供参考。
例子 2 :2台S7-200 SMART CPU采用自由口通信方式实现相互通信。
通信任务:CPU1 每秒触发一次 XMT 指令将 CPU 的实时时钟发送到 CPU2;CPU2 接收到 CPU1 发送的信息后立即将 CPU2 的实时时钟回复到 CPU1。
1、CPU1 编程
1.1、CPU1 主程序编程如图3. 所示: 
S7-200smart RCV 接收指令实例
图3. CPU1主程序
1. 设置 SMB30 = 2#00001001 (自由口通信,波特率 9600 bps,8 位数据位,无校验)。
2. 设置 SMB87 = 2#10010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件。
3. 设置空闲线定时器 SMW90 = 5 ms,字符间定时器 SMW92 = 5 ms,允许最大接收字符个数 SMB94 = 10。
4. 连接中断子程序 INT_0 到通信端口 0 发送完成事件,并启用中断。
5. 每秒钟读取一次 CPU 的实时时钟,并将发送缓冲区长度设置为 8 个字符。
6. 执行 XMT 指令之前设置 SM87.7 = 0,同时执行 RCV 指令,终止消息接收。
7. 每秒钟执行一次 XMT 指令将 CPU 的实时时钟发送出去。
1.2、 CPU1 发送完成中断子程序 INT_0 编程
中断子程序INT_0用于恢复 SMB87 的设置(SM87.7 = 1),并执行 RCV 指令开始接收 CPU2的应答信息。程序如图4. 所示: 
S7-200smart RCV 接收指令实例
图4. CPU1 中断子程序 INT_0
2、CPU2 编程
2.1、CPU2 主程序编程如图5. 所示: 
S7-200smart RCV 接收指令实例
图5. CPU2主程序
1. 设置 SMB30 = 2#00001001 (自由口通信,波特率 9600 bps,8 位数据位,无校验)。
2. 设置 SMB87 = 2#10010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件。
3. 设置空闲线定时器 SMW90 = 5 ms,字符间定时器 SMW92 = 5 ms,允许最大接收字符个数 SMB94 = 10。
4. 连接中断子程序 INT_0 到通信端口 0 接收完成事件,中断子程序 INT_1 到通信端口 0 发送完成事件,并启用中断。
5. 使用 SM0.1 调用 RCV 指令地执行。
2.2、 CPU2 接收完成中断子程序 INT_0 编程
中断子程序INT_0用于读取 CPU 实时时钟,并调用 XMT 指令将实时时钟信息发送出去。程序如图如图 6.所示。 
S7-200smart RCV 接收指令实例
6. CPU2 接收完成中断子程序 INT_0
2.3、 CPU2 发送完成中断子程序 INT_1 编程
中断子程序 INT_1 用于执行 RCV 指令,并开始新的信息接收任务。程序如图7所示。
S7-200smart RCV 接收指令实例 
图7. CPU2 发送完成中断子程序 INT_0