PLC通用编程思路探讨

2022-09-06 02:52孔佐君
今日自动化 2022年8期
关键词:子程序工艺流程指令

孔佐君

(黔南民族职业技术学院,贵州都匀 558022)

目前,很多PLC 编程的初学者都会遇到给出控制系统要求,不知道如何下手写梯形图程序的问题,只能做一个实验,背一套程序,或者编程思路不清,考虑不周,系统功能无法实现等情况。是否有一个通用的编程思路,能够适用于大多数机电一体化自动控制系统,学会一种方法,就能够应对大多数应用场合?经过总结,得出一套通用的编程思路,在实践中得到运用,效果良好。本文以西门子系列PLC 为例,对此思路进行探讨。

1 总体思路

为了更好地说明通用编程思路的过程,通过一个实训场景进行说明,以亚龙YL-335B 自动化生产线安装与调试实训设备中供料站

部分实训为案例进行探讨。图1为供料站示意图,系统上电后,系统进行初始化检测,如果各传感器、执行机构气缸处于正常初始化状态,管形料仓中物料充足,则绿色指示灯常亮,表示准备就绪,系统正常可以启动;如果管形料仓中物料不足,则黄色指示灯闪烁,表示物料不足,如果物料用尽,则黄色指示灯常亮,表示已经缺料,系统能自动停止;如果传感器、执行机构气缸不处于正常初始化状态,红色指示灯常亮,表示系统有故障,不能启动;正常启动后,绿灯闪烁,表示系统正在运行,按下停止按钮,系统恢复初始化检测状态;系统运行过程中,顶料气缸伸出防止非底层的物料落下,然后推料气缸把底层物料推向出料台,推料气缸复位,将出料台物料拿走后顶料气缸复位,上层物料落下,进行下一次出料循环。

图1 供料站示意图

了解了系统需求以后,如何思考和编写PLC 控制程序呢?总结的通用编程方法按照以下步骤进行:①系统分析,对程序进行模块化划分;②IO 分配,辅助寄存器标志位的使用;③主程序模块的通用写法;④基于控制流程图的步进程序通用写法。

2 系统分析,对程序进行模块化划分

目前高校的多数相关教材介绍PLC 编程方式都是线性编程,讲解基本指令,进行简单实验演示,很少涉及结构化编程的思路和方法。

线性化编程就是将整个用户程序放在组织块OB1中,在CPU 循环扫描时从上到下依次执行全部指令,其特点是结构简单、但效率低下,程序结构不清晰,造成编写、管理和调试困难。

结构化编程是将程序根据功能划分为不同的逻辑块,且每一个逻辑块完成的功能不同,在OB1中可以根据条件调用不同的功能或模块,其特点是把复杂的工艺过程分解成相对简单、容易编程实现的模块,根据条件调用,提高了CPU 的利用率,同时降低了编程难度。

通用编程思路的第一步就是要将程序划分为多个模块,划分的过程要对系统功能进行合理的分析、分解和综合,做好这一步,就能将庞大复杂的系统分解成为简单、易于实现的模块。

进行模块化划分,一般把系统分为主程序、控制工艺流程子程序和显示子程序3个模块。主程序主要完成系统初始化检测和子程序的调用协调等工作;控制工艺流程子程序主要采用步进程序写法,完成执行动作的工艺流程;显示子程序主要是控制系统指示灯的显示或者触摸屏组态的显示。对于执行元件较多、控制工艺较长的控制工艺流程子程序,还能继续分解成更多更小的控制工艺流程子程序,每个子程序都能独立运行和相互合作。如果需要,还需要插入中断子程序。这里需要说明的是,此种模块化划分是通过主程序和子程序的方式进行划分,适用于所有PLC,对于S7-300系列等级更高级的PLC,软件带有更专业的模块划分方法。

3 辅助寄存器标志位的使用

划分好程序结构后,开始编写梯形图之前,要在编程软件中声明地址分配表并注释元件名称,此时为了更好地理解系统运行状态和进行程序控制,需要给系统的各阶段状态或者关键信息定义一个标志位,这样做的好处是读取标志位状态能知道系统运行的状态,对标志位进行操作能控制系统的进程,对清晰程序结构和编写程序有非常大的帮助,这里建议使用位辅助寄存器M 作为标志位,需要定义的标志位有初态检测标志位、准备就绪标志位。运行状态标志位、启动指令标志位和停止指令标志位,还可以根据系统的特殊要求增加需要的标志位。每个标志位代表一个功能或者系统状态,对标志位进行置位或者复位操作,然后通过标志位的变化去控制程序的流程。

4 主程序的通用编写方法

合理使用规划好的状态标志位进行主程序的编写,主要考虑以下4个方面的问题:①系统初始化及初态检测;②系统如何进入启动运行状态;③系统如何进入停止状态;④子程序与主程序的关系、子程序间的关系及协调。

程序编写过程中摒弃了起保停的思路,全部采用置位指令和复位指令的思路。

系统初始化及初态检测,是在程序一开始需要解决的问题,使用特殊寄存器SM0.1只在第一个扫描周期接通进行初始化,置位初态检测标志位,复位准备就绪标志位、运行状态标志位、启动标志位和停止标志位,根据系统实际情况,置位或者复位相应的输出。然后进行初态检测,看系统是否处于准备就绪状态,具体做法是把初态检测标志位常开触点和所有的传感器触点串联,即进行与运算,其中系统正常准备就绪情况下有信号的传感器用常开触点表示,没有信号的传感器用常闭触点表示,另外,还可以根据系统的需求,增加特殊功能状态的检测,例如串联上供料检测标志位,缺料检测标志位等。输出准备就绪标志位置位,同时复位初态检测标志位,这样只会在系统上电的第一个扫描周期进行初始化,并且检查系统是否处于可以启动运行的状态。本例中,供料站初始化及准备就绪检测程序程序思路具有通用性,变化场景后用同样的思路编写程序,只需根据实际情况修改传感器数量和状态即可。三菱系列及其他品牌的PLC 也和西门子PLC 中SM0.1有同样功能的寄存器指令。

然后考虑系统如何进入启动运行状态,用准备就绪标志位常开触点串联启动信号常开触点,输出运行标志位置位和控制工艺子程序初始步置位,同时要复位和运行状态冲突互锁的标志位,例如准备就绪标志位、停止指令标志位等。有多个启动信号的,根据启动关系进行并联或者串联。

接下来考虑系统如何进入停止状态,这里的思路和启动程序的编写类似,停止信号用常开触点,输出停止指令标志位置位、启动指令标志位复位,同时要将停止状态影响的标志位复位,例如运行状态标志位复位,控制工艺流程子程序初始步复位等。停止信号除了常规的停止按钮外,还需要考虑因为缺料、故障或者意外引起的需要停止系统的情况,如果系统对于停止的过程有严格的顺序步骤,还需要写一个停止过程子程序,用停止标志位调用。启动和停止的互锁,是通过互相复位的形式完成的。

最后考虑子程序的协调和调用问题,这个问题相对简单,使用相关标志位调用子程序即可,对于需要一直调用的子程序,使用特殊寄存器SM0.0激活。

5 基于顺序功能图的子程序编写方法

子程序主要有两种类型:①控制工艺流程子程序;②系统显示子程序。

控制工艺流程子程序的编写,主要采用步进指令SCR 基于顺序功能图进行编写,每一步SCR 程序段需要包含3个要素:输出对象、转移条件和转移目标。输出对象,在这一步中要完成的动作驱动;转移条件,满足条件后,实现SCR 步的转移;转移目标,要转移到的下一个步序。系统控制工艺流程的执行输出可能很多,或者步骤流程较长,但是基于顺序功能图的编写方式简单,有规律可循,且执行过程模式较为固定,稍加练习即可掌握。对于庞大复杂的控制过程,还能拆分成多个部分分别单独编写控制工艺流程子程序,每个子程序再分解成若干单一步骤的组合,就能很方便地实现系统的整体执行过程,在整个系统程序中,控制工艺流程子程序反而不是最难写的。

顺序功能图是完成控制工艺流程子程序的前提和关键所在,在此进行详细说明。顺序功能图(SFC)又称为流程图或者状态转移图,它是一种图形化编程语言,是专用于工业顺序控制程序设计的一种功能性说明语言,它能够完整地描述电气控制系统的执行过程、特性和功能,是分析和设计电气控制系统控制程序的重要工具。对于一个顺序控制的问题,不管控制逻辑多么的复杂,都能够用顺序功能图的方式描述清楚。

但是很多软件不支持SFC 编程语言,不能直接用SFC 编程,因此大多数人的操作习惯不是用软件的SFC 功能,而是在需要使用顺序功能图的时候,手动画出SFC 顺序流程图,再对照SCR 步进指令编写PLC 梯形图,编写步进指令梯形图的过程中有些操作看似重复繁琐,程序也较长,但是思路非常清晰,易于上手和实现,尤其是对于控制逻辑比较复杂的控制系统,例如选择分支、并行分支和跳转循环的环节较多时,画出SFC 顺序流程图,再转换成步进控制流程梯形图的方法,仍然是最有效和可靠的编程方法。

顺序功能图主要由“状态”或称“步”“转移条件”“动作(驱动)”及有向线段等元素组成。“状态(步)”是控制系统中一个相对不变的性质,对应一个稳定的情形或者某个过程。状态一般从初始状态开始,大多系统都需要重复循环运行,所以在末状态一般都会跳转回初始状态周而复始运行。每个状态都有一个编号,根据习惯,对应PLC 不同编号的命名也有所不同,且可以不按顺序命名或者跳转。“动作(驱动)”是指在当前状态下需要执行的控制动作,可以是一个动作或者多个动作,也可不做动作只是等待。“转移条件”是指当满足某个特定条件且当前状态处于激活时,控制系统从当前状态跳转到下一个指定的状态,指定状态被激活,当前状态被复位。有向线段用来连接以上元素,表明方向等信息。本例中将供料站控制工艺状态(步)进行了合并优化,分成了推出步S0.0和复位步S0.1,合并优化的原则就是在一个状态(步)中同一个输出只出现一次,不同输出尽量合并在同一个状态(步)中,就能简化状态(步)的数量。

显示子程序大部分情况是指示灯的显示,这里要避免对同一个指示灯的多种显示状态编写多个输出,导致双线圈的错误编程,同一个指示灯只能有一个输出,多种状态可以通过并联方式编写,比如常亮和不同频率闪烁,同时,多个显示状态之间进行互锁控制。

6 结语

PLC 通用编程思路探讨,不仅限于西门子系列PLC,同样适用于三菱系列,国产系列等PLC。这个思路是一个整体框架性思路,对于需要用到变频器、步进驱动、伺服驱动等特殊元器件的应用,同样可以嵌入到框架当中,有时候需要根据系统需求多增加几个驱动子程序。

猜你喜欢
子程序工艺流程指令
化工工艺流程题中常涉及的考点
“四步”解答中学化学工艺流程题
ARINC661显控指令快速验证方法
杀毒软件中指令虚拟机的脆弱性分析
浅谈子程序在数控车编程中的应用
中断与跳转操作对指令串的影响
子程序在数控车加工槽中的应用探索
一种基于滑窗的余度指令判别算法
西门子840D系统JOG模式下PLC调用并执行NC程序
现代合成氨工艺流程及特点