西门子PLC自由口通讯+中断,这么用很方便,图文实例讲解!

以前我们讲过关于自由口通讯的实例,今天我们讲一下自由口通讯配合中断的实例。

在一些特定场合,比如说与松下系列伺服驱动器的控制时,为了保证数据的安全,我们需要进行多次往返的数据交换,这就需要严格控制通讯的时间。那么这个时候对于PLC来说通讯就是最重要的,所以我们需要打断PLC的正常功能,优先处理通讯,这就需要通讯中断。

实例:2台S7-200SMARTCPU(端口0)采用自由口通信方式实现相互通信


(本文仅为展示自由口通讯和中断,如果想要实现这两个PLC的通讯其实最好是使用向导进行以太网通讯,有机会我们也会进行讲解!)

通信任务:CPU1每秒触发一次XMT指令将CPU的实时时钟发送到CPU2;CPU2接收到CPU1发送的信息后立即将CPU2的实时时钟回复到CPU1。

接线:每个S7-200SMARTCPU都提供一个以太网端口和一个RS485端口(端口0),标准型CPU额外支持SBCM01信号板(端口1),信号板可通过STEP7-Micro/WINSMART软件组态为RS232通信端口或RS485通信端口。

CPU通信端口引脚分配


1、CPU1编程

1.1、CPU1主程序编程如图所示:


CPU1主程序

程序讲解:

1.设置SMB30=210010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件。

3.设置空闲线定时器SMW90=5ms,字符间定时器SMW92=5ms,允许最大接收字符个数SMB94=10。

4.连接中断子程序INT_0到通信端口0发送完成事件,并启用中断。

5.每秒钟读取一次CPU的实时时钟,并将发送缓冲区长度设置为8个字符。

6.执行XMT指令之前设置=0,同时执行RCV指令,终止消息接收。

7.每秒钟执行一次XMT指令将CPU的实时时钟发送出去。

1.2、CPU1发送完成中断子程序INT_0编程

中断子程序INT_0用于恢复SMB87的设置(=1),并执行RCV指令开始接收CPU2的应答信息。程序如图4.所示:


CPU1中断子程序INT_0

2、CPU2编程

2.1、CPU2主程序编程如图所示:


CPU2主程序

1.设置SMB30=210010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件。

3.设置空闲线定时器SMW90=5ms,字符间定时器SMW92=5ms,允许最大接收字符个数SMB94=10。

4.连接中断子程序INT_0到通信端口0接收完成事件,中断子程序INT_1到通信端口0发送完成事件,并启用中断。

5.使用调用RCV指令地执行。

2.2、CPU2接收完成中断子程序INT_0编程

中断子程序INT_0用于读取CPU实时时钟,并调用XMT指令将实时时钟信息发送出去。程序如图所示。


CPU2接收完成中断子程序INT_0

2.3、CPU2发送完成中断子程序INT_1编程

中断子程序INT_1用于执行RCV指令,并开始新的信息接收任务。程序如图7.所示。


CPU2发送完成中断子程序INT_0

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系