中断的使用
如何发送数据如何接收数据,现在已经分别介绍完了,但是如何让PLC既可以发送数据,又可以接收数据呢?开始讲解这个内容之前,先熟悉一下要涉及到的两个中断的使用,发送完成中断和接收完成中断。
很多人都对中断的本质含义都似懂非懂,在这里拿讲课和大家打个比方,用这个例子把中断和大家讲清楚
首先来看什么是中断工作方式,比方说有1个老师和10个学生,老师讲课的过程就相当于执行主程序。这时有学生突然有问题,举手向老师提问,这个学生就打断了老师的讲课,就相当于中断了主程序。老师停止讲课去回答这个学生的问题就相当于在执行中断程序。当老师回答完这个学生的问题继续开始讲课,这对于PLC来说就相当于执行完中断程序,返回继续执行主程序。
对于发送完成中断来说,数据发送完成就是一个事件,当调用这个中断的时候,一旦数据发送完成就会产生发送完成中断,该中断就会打断主程序的运行,然后进入该中断程序中进行执行,执行完毕后重新回到主程序。
对于接收完成中断它的工作原理和发送完成中断是一模一样的,只是接收完成中断是产生在数据接收完成之后。
在S7-200中中断的调用是由中断号来决定的,通过查询《S7-200系统手册》 (6-94页,表6-44)可以看到通讯0端口的发送完成中断的中断号是9,接收完成中断中断号是23。通讯端口1的发送完成中断的中断号是26,接收完成中断号是24。
4.2、主从通讯
上文向大家介绍了通讯中要使用到的发送完成中断和接收完成中断,这里就利用这两个中断在一个程序中完成数据的接收和发送这两个功能。
问:RS485通讯方式是主从通讯,在数据的接收和发送中主站和从站的主要区别到底在哪呢?
答:主要体现在主站是必须要先发送数据,然后再接收数据。就相当于主站要先发出命令给从站,然后等待从站把执行结果反馈给主站,主站再发出下一条命令。对于从站刚好和主站相反,从站一定是先接收数据然后再发送数据。从站要先等待主站的命令,接收到命令后从站执行主站的命令,执行完成后从站把执行完成的结果再发送给主站,然后等待主站的下一个命令。
程序的编写
下面就把PLC作为从站,电脑作为主站。用电脑向PLC发送一段报文:11 BC 3A 24 5C 2E。PLC接收到这段报文后向电脑返回一段报文:21 C3 47 87 92 5F。程序如下图所示。
通讯主程序
子程序int0—接收完成中断程序。接收完成后中断主程序进行发送数据。
子程序int1—发送完成中断程序。发送完成后中断主程序进行接收数据。
程序总体来说还是非常简单,由于PLC是从站所以主程序先激活接收指令,同时对接收完成中断和发送完成中断进行使能。在接收完成中断程序中调用发送指令,表示接收数据完成后PLC发送数据。在发送完成中断程序中调用接收指令,表示数据发送完成后PLC等待接收数据。
从上图可以看到是用电脑做主站,执行过一次发送后的界面。下方是发送给PLC的数据,上方是从PLC接收回来的数据。可能就有人很纳闷,为什么接收回来的数据一定是21 C34787 92 5F 38不是其他的数值?程序里看不出来啊?其实这个很简单已经给PLC的发送缓冲区预制了这组报文,如下图所示。
最后监控PLC的接收缓冲区可以看到PLC也接收到了发自电脑的报文。
领取专属 10元无门槛券
私享最新 技术干货