梯形图的编程方式是指根据功能表图设计出梯形图的方法。为了适应各厂家的plc在编程元件、指令功能和表示方法上的差异,下面主要介绍使用通用指令的编程方式、以转换为中心的编程方式、使用STL指令的编程方式和仿STL指令的编程方式。
为了便于分析,我们假设刚开始执行用户程序时,系统已处于初始步(用初始化脉冲M8002将初始步置位),代表其余各步的编程元件均为OFF,为转换的实现做好了准备。
1.使用通用指令的编程方式
编程时用辅助继电器来代表步。某一步为活动步时,对应的辅助继电器为“1”状态,转换实现时,该转换的后续步变为活动步。由于转换条件大都是短信号,即它存在的时间比它激活的后续步为活动步的时间短,因此应使用有记忆(保持)功能的电路来控制代表步的辅助继电器。属于这类的电路有“起保停电路”和具有相同功能的使用SET、RST指令的电路。
如图1a所示Mi-1、Mi和Mi+l是功能表图中顺序相连的3步,Xi是步Mi之前的转换条件。
图1 使用通用指令的编程方式示意图
编程的关键是找出它的起动条件和停止条件。根据转换实现的基本规则,转换实现的条件是它的前级步为活动步,并且满足相应的转换条件,所以步Mi变为活动步的条件是Mi-1为活动步,并且转换条件Xi=1,在梯形图中则应将Mi-1和Xi的常开触点串联后作为控制Mi的起动电路,如图1b所示。当Mi和Xi+1均为“l”状态时,步Mi+1变为活动步,这时步Mi应变为不活动步,因此可以将Mi+1=1作为使Mi变为“0”状态的条件,即将Mi+1的常闭触点与Mi的线圈串联。也可用SET、RST指令来代替“起保停电路”,如图1c所示。
这种编程方式仅仅使用与触点和线圈有关的指令,任何一种PLC的指令系统都有这一类指令,所以称为使用通用指令的编程方式,可以适用于任意型号的PLC。
如图2所示是根据液压滑台系统的功能表图使用通用指令编写的梯形图。开始运行时应将M300置为“1”状态,否则系统无法工作,故将M8002的常开触点作为M300置为“1”条件。M300的前级步为M303,后续步为M301。由于步是根据输出状态的变化来划分的,所以梯形图中输出部分的编程极为简单,可以分为两种情况来处理:
1)某一输出继电器仅在某一步中为“1”状态,如Y1和Y2就属于这种情况,可以将Y1线圈与M303线圈并联,Y2线圈与M302线圈并联。看起来用这些输出继电器来代表该步(如用Y1代替M303),可以节省一些编程元件,但PLC的辅助继电器数量是充足、够用的,且多用编程元件并不增加硬件费用,所以一般情况下全部用辅助继电器来代表各步,具有概念清楚、编程规范、梯形图易于阅读和容易查错的优点。
2)某一输出继电器在几步中都为“1”状态,应将代表各有关步的辅助继电器的常开触点并联后,驱动该输出继电器的线圈。如Y0在快进、工进步均为“1”状态,所以将M301和M302的常开触点并联后控制Y0的线圈。注意,为了避免出现双线圈现象,不能将Y0线圈分别与M301和M302的线圈并联。
图2 使用通用指令编程的液压滑台系统梯形图。
2.以转换为中心的编程方式
如图3所示为以转换为中心的编程方式设计的梯形图与功能表图的对应关系。图中要实现Xi对应的转换必须同时满足两个条件:前级步为活动步(Mi-1=1)和转换条件满足(Xi=1),所以用Mi-1和Xi的常开触点串联组成的电路来表示上述条件。两个条件同时满足时,该电路接通时,此时应完成两个操作:将后续步变为活动步(用SET Mi指令将Mi置位)和将前级步变为不活动步(用RST Mi-1 指令将Mi-1复位)。这种编程方式与转换实现的基本规则之间有着严格的对应关系,用它编制复杂的功能表图的梯形图时,更能显示出它的优越性。
图3 以转换为中心的编程方式
如图4所示为某信号灯控制系统的时序图、功能表图和梯形图。初始步时仅红灯亮,按下起动按钮X0,4s后红灯灭、绿灯亮,6s后绿灯和黄灯亮,再过5s后绿灯和黄灯灭、红灯亮。按时间的先后顺序,将一个工作循环划分为4步,并用定时器T0~T3来为3段时间定时。开始执行用户程序时,用M8002的常开触点将初始步M300置位。按下起动按钮X0后,梯形图第2行中M300和X0的常开触点均接通,转换条件X0的后续步对应的M301被置位,前级步对应的辅助继电器M300被复位。M301变为“1”状态后,控制Y0(红灯)仍然为“l”状态,定时器T0的线圈通电,4s后T0的常开触点接通,系统将由第2步转换到第3步,依此类推。
图4 某信号灯控制系统
a)时序图 b)功能表图 c)以转换为中心编程的梯形图
使用这种编程方式时,不能将输出继电器的线圈与SET、RST指令并联,这是因为图4中前级步和转换条件对应的串联电路接通的时间是相当短的,转换条件满足后前级步马上被复位,该串联电路被断开,而输出继电器线圈至少应该在某一步活动的全部时间内接通。
3.使用STL指令的编程方式
许多PLC厂家都设计了专门用于编制顺序控制程序的指令和编程元件,如美国GE公司和GOULD公司的鼓形控制器、日本东芝公司的步进顺序指令、三菱公司的步进梯形指令等。
步进梯形指令(Step Ladder Instruction)简称为STL指令。FX系列就有STL指令及RET复位指令。利用这两条指令,可以很方便地编制顺序控制梯形图程序。
FX2N系列PLC的状态器S0~S9用于初始步,S10~S19用于返回原点,S20~S499为通用状态,S500~S899有断电保持功能,S900~S999用于报警。用它们编制顺序控制程序时,应与步进梯形指令一起使用。FX系列还有许多用于步进顺控编程的特殊辅助继电器以及使状态初始化的功能指令IST,使STL指令用于设计顺序控制程序更加方便。
使用STL指令的状态器的常开触点称为STL触点,它们在梯形图中的元件符号如图5所示。图中可以看出功能表图与梯形图之间的对应关系,STL触点驱动的电路块具有三个功能:对负载的驱动处理、指定转换条件和指定转换目标。
图5STL指令与功能表图
除了后面要介绍的并行序列的合并对应的梯形图外,STL触点是与左侧母线相连的常开触点,当某一步为活动步时,对应的STL触点接通,该步的负载被驱动。当该步后面的转换条件满足时,转换实现,即后续步对应的状态器被SET指令置位,后续步变为活动步,同时与前级步对应的状态器被系统程序自动复位,前级步对应的STL触点断开。
使用STL指令时应该注意以下一些问题:
1)与STL触点相连的触点应使用LD或LDI指令,即LD点移到STL触点的右侧,直到出现下一条STL指令或出现RET指令,RET指令使LD点返回左侧母线。各个STL触点驱动的电路一般放在一起,最后一个电路结束时—定要使用RET指令。
2)STL触点可以直接驱动或通过别的触点驱动Y、M、S、T等元件的线圈,STL触点也可以使Y、M、S等元件置位或复位。
3)STL触点断开时,CPU不执行它驱动的电路块,即CPU只执行活动步对应的程序。在没有并行序列时,任何时候只有一个活动步,因此大大缩短了扫描周期。
4)由于CPU只执行活动步对应的电路块,使用STL指令时允许双线圈输出,即同一元件的几个线圈可以分别被不同的STL触点驱动。实际上在一个扫描周期内,同一元件的几条OUT指令中只有一条被执行。
5)STL指令只能用于状态寄存器,在没有并行序列时,一个状态寄存器的STL触点在梯形图中只能出现一次。
6)STL触点驱动的电路块中不能使用MC和MCR指令,但是可以使用CJP和EJP指令。当执行CJP指令跳人某一STL触点驱动的电路块时,不管该STL触点是否为“1”状态,均执行对应的EJP指令之后的电路。
7)与普通的辅助继电器一样,可以对状态寄存器使用LD、LDI、AND、ANI、OR、ORI、SET、RST、OUT等指令,这时状态器触点的画法与普通触点的画法相同。
8)使状态器置位的指令如果不在STL触点驱动的电路块内,执行置位指令时系统程序不会自动将前级步对应的状态器复位。
如图6所示小车一个周期内的运动路线由4段组成,它们分别对应于S31~S34所代表的4步,S0代表初始步。
图6 小车控制系统功能表图与梯形图
假设小车位于原点(最左端),系统处于初始步,S0为“1”状态。按下起动按钮X4,系统由初始步S0转换到步S31。S31的STL触点接通,Y0的线圈“通电”,小车右行,行至最右端时,限位开关X3接通,使S32置位,S31被系统程序自动置为“0”状态,小车变为左行,小车将这样一步一步地顺序工作下去,最后返回起始点,并停留在初始步。图6中的梯形图对应的指令表程序如表所示.。
表 小车控制系统指令表
LD SET STL LD SET STL |
M8002 S0 S0 X4 S31 S31 |
OUT LD SET STL OUT LD |
Y0 X3 S32 S32 Y1 X1 |
SET STL OUT LD SET STL |
S33 S33 Y0 X2 S34 S34 |
OUT LD SET RET |
Y1 X0 S0 |
4.仿STL指令的编程方式
对于没有STL指令的PLC,也可以仿照STL指令的设计思路来设计顺序控制梯形图,这就是下面要介绍的仿STL指令的编程方式。
如图7所示为某加热炉送料系统的功能表图与梯形图。除初始步外,各步的动作分别为开炉门、推料、推料机返回和关炉门,分别用Y0、Y1、Y2、Y3驱动动作。X0是起动按钮,X1~X4分别是各动作结束的限位开关。与左侧母线相连的M300~M304的触点,其作用与STL触点相似,它右边的电路块的作用为驱动负载、指定转换条件和转换目标,以及使前级步的辅助继电器复位。
图7 加热炉送料系统的功能表图与梯形图
由于这种编程方式用辅助继电器代替状态器,用普通的常开触点代替STL触点,因此,与使用STL指令的编程方式相比,有以下的不同之处:
1)与代替STL触点的常开触点(如图5-33中M300~M304的常开触点)相连的触点,应使用AND或ANI指令,而不是LD或LDI指令。
2)在梯形图中用RST指令来完成代表前级步的辅助继电器的复位,而不是由系统程序自动完成。
3)不允许出现双线圈现象,当某一输出继电器在几步中均为“1”状态时,应将代表这几步的辅助继电器常开触点并联来控制该输出继电器的线圈。