从在学校学习PLC课程开始到现在,使用PLC编程已经有十几个年头了。期间接触过多种主流PLC,如:西门子,三菱,AB等。感觉大同小异,学会一种再学习其他的上手会很快。所以学什么PLC不重要,重要的是编程思想。
说起PLC编程语言,那就绕不开梯形图,在最开始学习PLC编程时都是从梯形图开始,作为自动化专业学生理解梯形图语言来真的很形象,“母线”、“触点”、“线圈”,编程如同搭接电路。
但是使用中会发现简单的逻辑使用梯形图会很方便直观,当遇到复杂逻辑时,梯形图会变复杂,可读性差。
如何处理复杂逻辑,我这里推荐PLC编程的另一种语言,就是“结构化文本”。各个主流PLC基本都有,西门子PLC中叫SCL语言。主要使用if.. than.., for, case等高级语言指令编写PLC程序,为什么推荐这种语言,因为结构化文本最容易表达我的编程思想。
当在项目中实现一段逻辑,应该怎么做呢?我们知道遇到复杂问题时,要使用“分而治之”的方法,就是把一个复杂问题拆分成若干个简单问题,把若干个简单问题处理了,也就解决了这个复杂问题。
如何拆分复杂问题,这里分享一种方法,叫作“状态法”,任何事物都可以按时间划分状态,人的状态按时间分为少年,青年,中年,老年。电机的状态按时间分为停止,起动中,运行,报警。这样分的好处是:在同一时空中,事物只存在一种状态,只需关注事物在某一种状态下的逻辑关系,完全不用考虑其他状态的逻辑。
实现状态法如何编程?这里用电机举例,首先创建电机数据结构,增加一个int型变量“motor_state”表示电机状态字,0:停止,1:起动中,2:运行,3:报警。再增加一个int型变量“motor_cmd”表示电机控制字,0:空,1:启动,2:停止,3:清报警。结构化文本中case指令特别适合表示状态法。
以上程序是不是变的很简洁?下一次我将分享如何模块化程序,使PLC编程工作变的更加高效。
楼主最近还看过