西门子300模块6ES7332-5HF00-0AB0
西门子300模块6ES7332-5HF00-0AB0
程序比较复杂,还可以把一些常用的功能设计成模块,以便重复利用。这些小的模块称为子程序。
子程序存在于主程序中,操作系统通过调用主程序,就能让子程序也得到运行。在S7-300/400中,子程序包括FB和FC。
除了主程序接口,PLC还提供中断程序的接口。比如S7-300/400系列PLC的组织块OB35(循环中断)、OB40(硬件中断)、OB82(诊断中断)、OB122(IO访问故障中断)等等。中断程序接口中的程序,称为“中断处理程序”,中断处理程序由用户自己编写。
PLC在运行的过程中如果检测到中断请求,操作系统会暂停当前用户程序的执行,转而去寻找中断程序的接口,以执行相应的中断处理程序。以S7-300/400为例:当PLC检测到外围IO访问出现故障时,会调用OB122来进行处理。如果此时程序中没有添加OB122,CPU将会停机;如果添加了OB122但是没有写任何代码(没有中断处理程序),CPU将会继续运行,但是SF灯会亮起,以提示系统存在故障。
中断的执行是有优先级的,优先级高的中断会被优先响应;中断也可以嵌套,这也意味着高优先级的中断会打断低优先级的中断;
从上面描述的主程序接口及中断程序接口,我们可以看出:操作系统是PLC的大管家,是它控制着用户程序的执行及中断的响应。
PLC在冷启动或热启动后,会执行启动扫描。在这个步骤中,可以对一些变量进行初始化。启动扫描仅在每次启动后执行一次,在S7-300/400系列PLC中,OB100(暖启动)、OB101(热启动)和OB102(冷启动)是用于启动扫描的组织块。
启动扫描完成后,PLC进入循环扫描的阶段。首先进行内部检查,然后将外部的数字量输入读到CPU的输入缓存区(b image)。这里要注意,仅读取数字量输入信号,不包括模拟量输入信号。当数字量输入信号的状态读取到输入缓存区后,便开始执行用户程序。
在用户程序执行的过程中,如果需要数字量输入信号,CPU将会从输入缓存区中读取,而不是到外部设备去获取信号。但是,如果需要模拟量输入信号,将会直接到外部模拟量传感器进行读取。