2.5 程序设计的基本方法
程序设计就是根据控制要求实现将工艺流程图转换成梯形图的过程。这一过程是PLC应用中的关键所在,也是软件设计的具体体现。
2.5.1 编程内容
编程是一个系统工作,它包含了对控制对象分析理解和对程序调试的全过程。编写程序的主要内容有:
1)明确控制系统要求。
确定控制任务是设计PLC控制系统十分重要的部分。在设计中首先必须确定控制系统的I/O点数,因为它决定了PLC的系统配置;然后确定控制系统动作发生的顺序和相应的动作条件。
2)I/O分配。
根据控制系统的功能确定哪些是发送(输入)给PLC的信号,哪些是来自PLC的信号(输出),并分别给出对应的地址。同时根据程序的需要合理使用定义过的内部辅助继电器、定时器和计数器等资源。
3)绘制梯形图。
明确输入、输出以及它们之间的关系之后,按照控制的要求编写梯形图。
4)将梯形图转换成助记符,编写指令表(如果借助于计算机和编程软件,可省去这一步)。
5)利用编程器或编程软件将程序输入到PLC中。
6)检查程序并纠正错误。
7)模拟调试。
8)现场调试,并将调试好的程序备份到EEPROM中。
在前面的每一步骤进行时,可以一步步来实现,或者多人协助,同时完成控制需要的任务。
2.5.2 程序设计的编程方法
在编写PLC程序时,可以根据自己的实际情况采用不同的方法,在本章中简单介绍编程方法,详细的方法与实例请参看本书第6章。
1.解析法
PLC的逻辑控制实际上就是逻辑问题的综合,可以根据组合逻辑或者时序逻辑的理论,运用相应的解析方法,对其进行逻辑关系的求解。然后根据求解的结果画出梯形图或直接编写指令。
2.经验法
经验法是运用自己的经验或者借鉴别人已经成熟的实例进行设计,可以将已有相近或类似的实例按照控制系统的要求进行修改,直至满足控制系统的要求。在工作中要尽可能地积累经验和收集资料,不断丰富设计经验。
3.图解法
图解法是采用画图的方法进行PLC程序设计,常见的方法有梯形图法、时序图(波形图)法和流程图法。
梯形图法是最基本的方法,无论经验法还是解析法,都要把PLC程序等价为梯形图。
时序图(波形图)法适合于时间控制系统。先把对应信号的波形画出来,再根据时序逻辑关系去组合,把程序设计出来。
流程图法是用框图表示PLC程序的执行过程及输入与输出之间的关系,在使用步进指令编程时,使用该方法进行设计是很方便的。
4.技巧法
技巧法是在经验法和解析法的基础上运用一定的技巧进行编程,以提高编程质量。还可以采用流程图作为工具,巧妙地将设计形式化,进而编写需要的程序。
5.计算机辅助设计
计算机辅助设计是利用PLC通过上位链接单元与计算机实现链接,运用计算机进行编程。该方法需要有相应的编程软件,现有的软件主要是将梯形图转换成指令。
2.5.3 编程原则及技巧
1.编程技巧
采用一些编程技巧可使程序简洁、直观和易于理解,节省程序的存储空间,减少不易发现的错误。以下是一些常用的编程技巧:
1)输入继电器、输出继电器、辅助继电器、定时器/计数器的触点数量在程序中没有限制,多次使用可以简化程序和节省存储单元。
2)在不使程序复杂难懂的情况下应尽可能少占用存储空间。
3)定时器和计数器的编号范围是0~143,不能重复使用。编程时定时器可以从0开始递增使用,而计数器从143开始递减使用,这样就可以避免定时器、计数器使用相同的编号。
4)在对复杂的梯形图进行调试时可以在任何地方插入ED指令,分段进行调试,从而提高调试的效率。
5)PLC在工作时按照从左到右,由上而下的顺序进行扫描,上一梯级的执行结果会影响下一级的输入,所以在编程时必须考虑控制系统逻辑上的先后关系。
2.编程原则
1)任一编号的输出继电器、辅助继电器和定时器/计数器的线圈在程序中只能使用一次,但触点可以无限次使用。
2)并联触点和串联触点的个数没有限制。
3)线圈不能从母线直接输出。如需要始终保持通电,可以使用特殊继电器。
4)输出线圈可以并联,不能串联,但定时器的线圈可以串联。
5)一般以线圈、功能指令或高级指令与右母线相连,线圈、功能指令或高级指令后面不允许有触点。
6)不准使用没有定义过的触点和线圈。
7)主程序必须以ED指令结束。
8)定时器/计数器不能直接产生外部输出信号,需用其触点编程到一个输出继电器。
9)梯形图的竖线上不能安排任何元器件。
2.5.4 编程应用实例
在编制不同程序时,有着不同的技巧及原则,接下来就常见的实例,看看应用技巧的优越性。
1.结构简单的编程
【例2-26】 并联-串联结构
要编写并联-串联结构(指令及梯形图如图2-46所示)的编程,先编写并联逻辑块(如图2-46a中a块),然后再编写串联逻辑块(如图2-46a中b块)。
图2-46 并联-串联结构
a)梯形图 b)指令表
【例2-27】 串联-并联结构
对于图2-47中串联-并联结构的编程,就必须将其分为逻辑块a和逻辑块b。先对每块进行编程,然后利用ANS指令把这些逻辑块组合在一起。图2-47中,如将a块和b块换位,则可以减少指令数量,节约存储空间。
图2-47 串联-并联结构
a)梯形图 b)指令表
【例2-28】 多个并、串联结构
当梯形图中有多个串联和并联逻辑块时(如图2-48所示)。
图2-48 在串联中连接并联结构
a)梯形图之一 b)指令表 c)梯形图之二
首先要把整个输出支路分成若干个串联或并联逻辑块,再把每个串联或并联逻辑块分为几个独立的逻辑块,然后对每个独立的逻辑块进行编程,最后根据它们之间的相互关系将所有的逻辑块利用ORS和ANS指令进行组合,完成整个输出支路的编程。
2.复杂结构编程
【例2-29】 并联结构,并有多种继电器输出
如图2-49中涉及并联和多种继电器输出,编程时只需按照先后顺序进行即可。但是如果将该程序中的输出线圈Y0放在最上一行,就必须采用PSHS、RDS和POPS指令进行编程,程序就会更复杂。
【例2-30】 程序块的简单化,节省存储空间
从图2-50可以看出,对梯形图做一些局部变换后,程序看起来就变得简单了,不需要使用逻辑块指令即可完成,并且节约了存储空间。
【例2-31】 程序块的简单化,却增加了存储空间
图2-49 并联结构并有多种继电器输出
a)梯形图 b)指令表
图2-50 程序块的简单化(一)
a)梯形图 b)梯形图局部变换 c)指令表(变换前) d)指令表(变换后)
在图2-51中,对难以理解的复杂梯形图做出两种不同的变换。
图2-51 程序块的简单化(二)
a)梯形图之一 b)梯形图之二 c)梯形图之三 d)指令表(一) e)指令表(二) f)指令表(三)
从梯形图之一变为梯形图之二时,尽管程序看起来顺畅,但是却增加了所占用的存储空间。当变为梯形图之三时,为最优。由此可以看出,复杂的结构可以通过程序变换而变得简单明了,而不同的变换方式得到的结果是完全不一样的,应从中找出最理想的方案。
3.结构变换
【例2-32】 下面是几个结构变换的例子。
从图2-52~图2-55可以看出,对梯形图进行适当的变换后,不仅增强了程序可读性和直观性,而且还节约了存储空间。这是在程序设计中必须要考虑的。
松下PLC有着自身的工作方式,有时候硬件很容易实现的事情而软件却不能实现,同样有些软件很好实现的而硬件却无能为力。在图2-56中,左边梯形图的桥式结构,硬件很容易实现但软件无法实现,所以必须变换为右边的形式才可以通过PLC来实现。
图2-52 结构变换(一)
a)梯形图一 b)梯形图二 c)指令表一 d)指令表二
图2-53 结构变换(二)
a)梯形图一 b)梯形图二 c)指令表一 d)指令表二
图2-54 结构变换(三)
a)梯形图一 b)梯形图二 c)指令表一 d)指令表二
图2-55结构变换(四)
a)梯形图一 b)梯形图二 c)指令表一 d)指令表二
图2-56 结构变换(五)