基于S7-1200 PLC的交通灯控制设计方法研究
征稿
☝ 点击上面标题查看详情
招聘
☝ 点击上面标题查看详情
云南民族大学电气信息工程学院的研究人员陈芳芳,在2019年第2期《电气技术》杂志上撰文,阐述了基于S7-1200 PLC在交通灯控制设计中常用的顺序控制法和计数查表法的优缺点,然后提出了一种利用对系统内部循环中断组织块产生的脉冲计数法,通过比较来实现控制的设计方法,最后分析了这3种方法的优缺点。
在控制相关专业的本科教学中,单片机、嵌入式、可编程控制器应用技术的课程,或多或少都会有所涉及。而在这些课程的设计实践中,“十字路口交通灯”的控制设计,是较为典型的一个实验教学设计实例。
S7-1200系列PLC(可编程控制器)是西门子公司的新一代小型PLC,具有强大的集成功能和灵活的扩展性。作为S7-200的替代产品,目前在控制领域中应用广范。本文主要以S7-1200 PLC在实现该控制时的几种常用设计方法展开讨论。
1 十字路口交通灯控制要求
在本设计实例中十字路口的交通灯按通行方向分为两组,每组各有红、黄、绿灯一个,具体的控制要求如下:①刚通电时,交通灯工作在初始状态,即黄灯1和黄灯2以2Hz的频率(即间隔0.5s)闪烁;②当按下起动按钮时,首先绿灯1和红灯2亮,之后按图1的工作时序图循环工作;③当按下停止按钮,交通灯回到初始状态。
图1 控制时序图
2 设计方法
该设计实例是一个典型的数字量控制系统,这类系统的梯形图设计方法常用的有两种,即顺序设计法和经验设计法。顺序设计法较容易被初学掌握,对简单或复杂的控制系统都适用,在支持顺序功能图语言编程的PLC中更为方便。
经验设计法适用于简单的梯形图设计,该方法无规律可循,需要先分析总体控制要求,设计内容会因设计者的经验各有不同。针对十指路口交通灯的设计,本文提出了计时查表法和计数查表法两种经验设计法。
2.1 PLC选型及I/O表
本实例中,输入信号只有起动和停止两个,输出信号是两组红、黄、绿灯,共6个输出,都是数字量信号。实验设备提供的S7-1200的CPU1214C[4]能够满足设计要求。
CPU1214C本机带有的数字量I/O点数为14入/ 10出,并带有2个模拟量输入点,其可带扩展模块数为8个,本实例中无需增加扩展模块,本机即可满足设计要求。本例中具体的I/O分配情况见表1。
表1 I/O地址分配表
2.2 顺序控制设计法
顺序控制设计法即根据对控制对象预先规定的工艺要求,在有输入信号时,根据动作要求或时间顺序,执行机构能自动、有序的完成规定的动作。根据十字路口交通灯的控制要求,两组红、黄、绿灯的亮、灭动作在得到起动信号后,按照一定时间顺序工作,并在完成一次全过程后循环工作,直到有停止信号时,才回到初始状态。
对于初次学习PLC的同学来说,虽然S7-1200并未配备顺序功能图编程语言,但根据控制要求,按照工作顺序,逐步编写梯形图并不困难。但在编程过程中仍要注意以下问题:
1)初始步的确定。在该设计中首次通电和有停止信号时都处于初始状态,即黄灯闪烁。对于首次通电,可用OB1程序块中,仅在首次扫描时状态为1的M1.0[5]来实现初始状态的控制。
2)定时器指令的正确使用。在该设计中,时间是各灯状态的转换条件,因此定时器指令的正确使用很关键。
3)循环的实现。在实践过程中,多数同学能够实现一次完整的顺序控制,而不知如何实现循环。在该设计中实现循环的关键是确定从最后一步转换到第一步的条件,根据时序图可知,可用黄灯2的下降沿作为转换条件。
顺序控制法在设计时,可以逐步编程、调试直至最终完成,对初学者而言,比较容易掌握。
2.3 计时查表法
计时查表法是基于对总体控制要求的分析,找出控制规律后提出的,控制流程如图2所示,该方法思路简单明了,逻辑性强。
图2 控制流程图
具体梯形图的编写思路是:①在收到起动信号后,计时器开始计时。②用比较指令比较计时器的实际的工作时间和设定值,按照流程图所示时间关系给出控制信号,即0~10s时绿灯1亮,10~13s时绿灯1闪3次,13~15s黄灯亮等以此类推。初始状态时黄灯闪烁的控制有多种方法实现,在此不作赘述。
该设计方法应注意的问题有以下两点。
1)计时器计时的最小单位是“ms”,计时器的已计时间值可由ET端读出。
2)经分析6个灯完成一次工作需时30s,但计时器不能在记到30s时就清零(断开IN端复位)。因为CPU的一个扫描周期是不定的,必须在其完成本次扫描周期内的动作后,在下一个扫描周期才能进行计时器的复位,开始下一个循环。
本设计若仅作为学生实践的训练而未对控制时间精度作专门要求的话,则1s以内的误差是可以接受的。
2.4 利用循环中断实现的计数查表法
该方法的设计思路同2.3节,编程过程也可参照图2的流程图进行,其不同之处在于:不用计时器计时,而是首先利用CPU的的定时循环中断组织块(Cyclic interrupt)来产生一个周期为1s,占空比为50%的脉冲系列。然后在主程序块中,通过对脉冲计数后进行查表比较,以执行相应的动作。该方法的具体实现有以下3个关键点。
1)产生定义为闪光母线的脉冲系列。首先将循环中断OB间隔时间设为500ms,相移设为0,然后在OB中编写如图3所示的梯形图电路,OB每隔500ms中断执行一次。当线圈M0.0状态为1时,其常闭触点打开,M0.0将保持值为1的状态500ms的时间,500ms后,该电路又会被调用执行一次,使M0.0又保持值为0的状态500ms的时间,这样依次循环,每一个扫描周期(500ms)M0.0状态改变一次,从而实现一个周期为1s的脉冲系列。
图3 产生脉冲的电路
2)计数器的循环操作实现。在图4的计数器指令中,使用M0.0的上升沿到来时加1(1即为1s时间),M100.1是在有停止信号时用来对计数器锁定(保持复位状态)。当计数值大于等于设置值(PV)时,该计时器指令的Q端输出,执行后续的MOVE指令,使计时器当前计数值(%DB1.CV)复位为1,从而实现计数值的循环。
图4 计数器及循环回路
3)查表算法的实现。通过将时间控制转化为数值,在程序循环组织块OB1中编制如图5所示的计数比较电路,通过简单的比较指令来实现想达到的控制要求。图5所示为绿灯1的控制电路示例,比较指令下面的数为设定值,上面的数为计数器的当前值。根据图1时序图,绿灯1在0~10s时亮,10~13s时闪3次。
图5 查表比较电路
该方法因用到了循环中断组织块,需对S7-1200 PLC的功能较为熟悉,有一定的实践经验才能想到。教学中对于学生而言还需补充相关内容的讲解才能理解。这种方法控制逻辑清楚,思路巧妙,从控制时间精度上而言,也减少了误差。
通过以上对3种设计方法的阐述可得出如下结论。
1)顺序控制设计法对于初学者来说,比较容易掌握,可根据控制时序按步逐条编制梯形图,在调试时也可逐条观察修改最终实现正确的控制,但所需程序段较多,编制梯形图时必须准确把握前后动作之间的关联性,从教学中学生实践情况来看,这种设计方法多数同学会采用,但完成时间较长。
2)2.3节所述的设计方法需要先对整个系统的控制要求进行分析,找出各个动作之间的时间关系,在熟练掌握定时器指令和比较指令的基础上,可用10个左右的程序段完成控制要求。该方法设计逻辑简单、清晰,用时较少,但控制时间会有一定的误差(至少1个CPU扫描周期),在对于控制时间精度要求不高的情况下,该方法较适用。实际教学中多数同学经提示后能应用该方法完成设计。
3)2.4节中所述的方法除需熟悉比较指令外,还需掌握计数器指令,并了解系统内部循环中断(Cyclic interrupt)组织块的使用方法。该方法巧妙地运用了对系统内部循环中断产生脉冲的计数、通过计时比较后来实现控制,除同样具有设计逻辑简单、清晰,用时较少的优点外,还避免了时间误差,控制时间精度较高,但该方法对于没有设计经验的初学者而言,理解上有一定困难。