PLC控制系统主要由硬件和软件两大部分组成。硬件提供整个系统运行的物理平台,软件则提供硬件工作时所需的各种指令。一个好的控制系统很大一部分取决于软件系统是否结构合理,执行效率高。因此对于编程人员来讲,如何根据实际系统的控制要求编写出简洁、高效的程序是很重要的。本节是在指令系统的基础上,主要对S7-200 PLC程序的结构、编程规则和技巧、基本电路编程、顺序功能图编程等进行简要介绍。
1.S7-200 PLC程序的结构
程序是运用相应的指令和数据,遵循一定的规律,编制成具有一定控制功能的信息语言。PLC程序分为系统程序和应用程序(用户程序)。系统程序是PLC生产厂家编制的程序,存放在系统内存中,用于系统控制。用户程序是PLC用户根据被控对象的生产过程和工艺要求,为解决实际应用问题而编制的程序。这里介绍的PLC程序的结构是指用户程序的结构。
(1)用户程序的分类S7-200的控制程序分为主程序(OB1)、子程序(SBR0~SBR63)和中断程序(INT0~INT127)三种。
1)主程序是用户程序的主体。在一个项目中只能有一个主程序。CPU在每个扫描周期都要执行一次主程序指令。
2)子程序是程序的可选部分,最多可以有64个。合理地使用子程序,可以优化程序结构,减少扫描时间。子程序一般在主程序中被调用,也可以在子程序或中断程序中被调用。只有被调用的子程序才能够执行。
3)中断程序也是程序的可选部分,是用来及时处理与用户程序的执行时序无关的操作,或者不能事先预测何时发生的中断事件,最多可以有128个。它的调用由各种中断事件触发,而不是由用户程序调用。中断事件一般有输入中断、定时中断、高速计数器中断和通信中断等。可能在其他程序中使用的寄存器也不允许被中断程序改写。
(2)S7-200的用户程序结构S7-200 PLC的用户程序结构可分为两种:线性程序结构和分块程序结构。
1)线性程序结构。线性程序结构是指一个工程的全部控制任务被分成若干个小的程序段,按照控制的顺序依次排放在主程序中,如图4-215所示。编程时,用程序控制指令将各个小的程序段依次链接起来;程序执行过程中,CPU不断地扫描主程序,按照编写好的指令代码顺序地执行控制工作。
线性程序结构简单明了,但是仅适合控制量比较小的场合。控制任务越大,线性程序的结构就越复杂,PLC执行效率就越低,系统越不稳定。
2)分块程序结构。分块程序结构是指一个工程的全部控制任务被分成多个任务模块,每个模块的控制任务由子程序或中断程序完成。编程时,主程序和子程序(或中断程序)分开独立编写;在程序执行过程中,CPU不断地扫描主程序,碰到子程序调用指令就转移到相应的子程序中去执行,如图4-216所示,遇到中断请求就调用相应的中断程序。
分块程序结构虽然复杂一点,但是可以把一个复杂的控制任务分解成多个简单的控制任务。分块程序有利于代码编写,而且程序调试也比较简单。所以,对于一些相对复杂的工程控制,建议使用分块程序结构。
图4-215 线性程序结构
图4-216 分块程序结构
2.PLC梯形图的特点
1)梯形图按自上而下、从左到右的顺序排列。
2)梯形图中的继电器不是物理继电器,每个继电器均为存储器中的一位,因此称为“软继电器”。当存储器相应位的状态为“1”时,表示该继电器线圈得电,其动合触点闭合或动断触点断开。
3)梯形图是PLC形象化的编程手段,梯形图两端的母线并非实际电源的两端,因此,梯形图中流过的电流也不是实际的物理电流,而是“概念”电流,是用户程序执行过程中满足输出条件的形象表现形式。
4)一般情况下,在梯形图中某个编号继电器线圈只能出现一次,而继电器触点(动合或动断)可无限次使用。
5)梯形图中,前面所示逻辑行逻辑执行结果将立即被后面逻辑行的逻辑操作所利用。而后面逻辑行逻辑执行结果本扫描周期内不影响前面逻辑行的逻辑操作,只有等待到下一个扫描周期才有作用。
6)梯形图中,除了输入继电器没有线圈,只有触点外,其他继电器既有线圈,又有触点。
7)PLC总是按照梯形图排列的先后顺序(自上而下,从左到右)逐一处理。也就是说,PLC是按循环扫描工作方式执行梯形图程序。因此,梯形图中不存在不同逻辑行同时开始执行的情况,使得设计时可减少许多联锁环节,从而使梯形图大大简化。
3.PLC梯形图的编程规则与技巧
PLC是逐行扫描、按照指令在用户程序存储器中的先后次序依次执行的,因此在编制梯形图程序时,必须遵循一定的规则,这样可以避免出现程序错误;同时元器件或触点排列顺序对程序执行可能会带来很大影响,有时甚至使程序无法运行。为了使程序简短、清晰,执行速度快,也要掌握一定的编程技巧,使编程最优化,常需要对梯形图电路加以变换和化简。PLC梯形图的编程规则与技巧很多,这里仅举例说明其中重要的几点。
1)梯形图的各种符号,要以左母线为起点、右母线为终点(可允许省略右母线)从左到右分行绘出。每一行的开始是触点群组成的“工作条件”,最右边是线圈表达的“工作结果”。换句话说,与每一个线圈连接的全部支路形成一个逻辑关系(实现一组逻辑关系,控制一个动作),线圈只能接在右边的母线,并且所有的触点不能放在线圈的右边,放在线圈的右边的触点不能编译,如图4-217所示。一行写完,自上而下依次再写下一行。
图4-217 线圈的连接
a)错误 b)正确
2)在梯形图中,每行串联的触点数或每组并联的触点数理论上不受限制。但使用图形编程器编程时,它们要受到屏幕尺寸的限制。建议串联触点一行不超过10个,每组并联触点不超过24行,如图4-218所示。
3)在梯形图中,每组并联输出的线圈数或每组连续输出的线圈数理论上不受限制。但使用图形编程器编程时,它们要受到屏幕尺寸的限制。建议每组不得超过24行,如图4-219所示。
图4-218 梯形图中的串/并联触点数
4)输入继电器的线圈只能由连接在PLC输入端子上的外部输入信号控制,所以梯形图中只有输入继电器的触点是用来表示对应输入端子上的输入信号,而没有线圈表示。
5)在梯形图中,所有编程元件的线圈不能与左母线直接连接,即它们之间必须连接有触点。如果需要PLC在开机时就有输出,可以通过一个没有使用的辅助继电器的常闭触点来连接,如图4-220所示。
图4-219 梯形图中的并联联线圈数
图4-220 没有触点的线圈连接方法
a)错误 b)正确
6)在梯形图中,所有编程元件的线圈不能串联连接,如图4-221所示。
图4-221 线圈位置的放置
a)错误 b)正确(www.xing528.com)
7)某一线圈在同一程序中一般只能出现一次,否则容易引起误操作。如果在同一程序中同一元件的线圈使用两次或多次,称为双线圈输出。PLC顺序扫描执行的规定,这种情况如果出现时,前面的输出无效,最后一次输出有效,所以无论线圈的输出条件多么复杂,也禁止双线圈输出,如图4-222所示。只有在同一程序中绝不会同时执行的不同程序段中可以有相同的输出线圈。对于设置有跳转指令的程序,在两个跳转条件相反的跳转区内,可以使用同一编号的线圈。
图4-222 双线圈输出处理
a)错误 b)正确
8)不包含触点的分支应放在垂直方向,不可放在水平位置,以便于识别触点的组合和对输出线圈的控制路径,如图4-223所示。
图4-223 梯形图的编程规则说明示例
a)错误 b)正确
9)电路简化。电路简化可使编程优化,从而使程序结构简单、步数最少、节省内存、提高对用户程序的响应速度;使得较难处理的电路编程变得容易。
①多个串联支路并联时,应把串联触点最多的支路编排在最上方,这样可减少步序数,以节省存储器空间和缩短扫描周期。
②多个并联回路串联时,应把并联触点最多的回路编排在最左边,这样可减少步序数,以节省存储器空间和缩短扫描周期。
图4-224所示的两个梯形图实现的逻辑功能一样,但程序繁简程度却不同。图4-224a和图4-224b的不同在于:将串联的两部分电路左、右对换后,并联的两个分支上、下对换。变换后,原有的逻辑关系不变,但程序却简化了。经验证明,梯形图变换可遵循“左重右轻”(并连分支多的电路块放最左边)、“上重下轻”(串联接点多的电路分支放最上边)的原则。
图4-224 梯形图简化
a)较繁的梯形图 b)较简的梯形图
图4-224a的语句表如下:
图4-224b的语句表如下:
③并联线圈电路从分支点到线圈之间,无触点的线圈应放在最上方,这样可以减少程序步数,以节省存储器空间和缩短扫描周期,如图4-225所示。
图4-225 并联线圈电路的编排
a)不好 b)好 c)不好 d)好
10)应使梯形图的逻辑关系尽量清晰明了,便于阅读检查和输入程序。编写PLC程序时,输入继电器I、输出继电器Q、辅助继电器M、定时器T、计数器C等编程元件的触点可以多次重复使用而不受限制。因此,在编程时应以回路清晰为主要目的,而无需用复杂的程序结构来减少触点的使用次数。图4-226a中逻辑关系就不够清楚,给编程带来不便。改画为图4-226b后,程序虽然指令条数增多,但逻辑关系清楚,便于阅读和编程。
图4-226 PLC梯形图
a)逻辑关系差的梯形图 b)逻辑关系清楚的梯形图
图4-126a的语句表如下:
图4-126b的语句表如下
11)应避免出现无法编程的梯形图。如触点应画在水平线上,不能画在垂直分支线上,也就是在梯形图中,“电流”的方向只能由左向右流动,而不能双向流动。在图4-227所示的桥式电路中,由于触点I0.4处有双向电流通过,所以该电路不符合编程规则,不能直接进行编程。对于这类电路,必须使用电路等效变换的方法进行变换处理后再编程。图4-227a所示的桥式电路无法编程,可改画成图4-227b所示形式。
图4-227 避免无法编程的梯形图
a)无法编程的梯形图 b)可以编程的梯形图
图4-227b的语句表如下:
12)对常闭触点输入的编程处理。对输入外部控制信号的常闭触点,在编制梯形图时要特别小心,否则可能导致编程错误。现以一个常用的电动机启动、停止控制电路为例,进行详细分析说明。
电动机启动和停止控制电路如图4-228a所示,使用PLC控制的输入输出接线图如图4-228b或图4-228d所示,对应的梯形图如图4-228c或图4-228e所示。从图4-228b中可见,由于停止按钮SB2(常闭触点)和PLC的公共端COM已接通,在PLC内部电源作用下输入继电器I0.1线圈接通,这时当图4-228e中的常闭触点I0.1已断开,所以按下启动按钮SB1(常开触点)时,输出继电器Q0.0不会动作,电动机不能启动。解决这类问题的方法有两种:一是把图4-228e中常闭触点I0.1改为常开触点I0.1,如图4-228c所示;二是把停止按钮SB2改为常开触点,如图4-228d所示。
图4-228 对电动机启动停止控制电路中常闭触点输入的编程处理
从上面分析可知,如果外部输入为常开触点,则编制的梯形图与继电器控制原理图一致;但是,如果外部输入为常闭触点,那么编制的梯形图与继电器控制原理图刚好相反。一般为了与继电器控制原理图相—致,减少对外部输入为常闭触点处理上的麻烦,在PLC的实际接线图中,尽可能不用常闭触点,而用常开触点作为输入,如图4-228d所示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。