PLC编程小知识:相同功能带定时器的PLC程序怎么简化?
有时做梯形图会遇上几十个类似程序往下运行,它们都有各自独立的I,Q,T。如果逐条把程序写下去,工作量会非常大,那么我们应该如何简化相同功能带定时器的PLC程序呢?
简化方法
我们以西门子1200为例,使用FB功能块和多重背景功能块,并对定时器使用多重背景数据块进行简化(如果有人能做成循环的,就更加完美了)。
第一步
建立”电磁阀控制”功能块FB1,设定INPUT/OUTPUT变量接口参数,在静态变量中设定定时器参数TOF,类型为IEC_TIMER,写入控制程序。
插入TOF定时器时,需设置背景数据块为多重背景数据块,接口名称为之前设定的TOF。
第二步
再建一个”多重背景数据”功能块FB2,在静态变量设定要使用到的多个设备参数“电磁阀1”“电磁阀2”“电磁阀3”……数据类型为“电磁阀控制FB1”。
第三步
将FB1功能块拖入到程序中,使用几个设备(近似重复的程序段)就用几个FB1,分别设定为使用多重背景,接口类型分别选择“电磁阀1”“电磁阀2”“电磁阀3”……并输入实参。
结果如下:
第四步
在OB1中调用FB2,将FB2拖入主程序中,建立FB2背景数据块FB2_DB后保存。这样就完成了。
方法优点
1.程序做成了功能块,修改起来极为方便,只需改修单个功能块就行,不必逐条修改成百上千条类似的语句。当子程序较长时,优势更加明显;
2.排列整齐,输入输出接口清晰,也便于接口数据的输入、检查和修正;
3.避免无数条重复程序部分写错;
4.对于1200、1500而言,定时器使用多重背景数据块可以节约数据块的数量,避免使用过多的DB块,解放内存。
使用状态机方式简化PLC程序的编写
在PLC程序的编写过程中,可以使用状态机的控制思路,将一些复杂的控制过程使用状态机的方法处理。这里简单给大家介绍一下什么是状态机?如下图所示,为一个状态机的状态图。
从以上图中可以看到,其是将动作执行的各个状态进行了一个划分、规划。动作程序的执行就是使程序在不同的条件下进行各个状态之间的转换。
以上这些都比较抽象,初次接触的话不是特别能让人理解,接下来我们看一下一个程序功能如何拆分为状态机的单个状态。
如何拆分设计状态机的状态
状态的选择
一般将程序执行过程中,会存在停留、保持、等待等过程。在设计状态的时候,就可以将状态的最小单位设计为这些过程。例如,1、控制气缸伸出/收回,这就可以选做状态机的一个状态;2、设备停止,等待接收命令,这也应该是一个状态;3、启动电机运行,电机运行到停止这也应该是一个状态;
总的来说,在选择状态的时候,状态在程序的时序结构上,在时间单位上应该是一个“保持”的状态。
状态之间的转换
状态转换一定是要某种条件的。即状态在处于保持的过程中,检测到条件满足,就进行状态间的转换。例如,气缸伸出/收回这个状态,在气缸动作的过程中,其缸动作到位传感器检测到到位信号,则程序就应该转换到下一个状态。下一个状态可以是另一个气缸的动作、也可以是等待延时、还可以是其他设备流程上的步骤。
状态机实现流程控制方法
举例1
这里以机械手物料取放机构为例给大家分享。这个是我以前给大家分享的一篇文章PLC编程示例-机械手物料取放。在这篇文章中,我以类似于“流水线”的方式给大家分享如何处理这类流程控制逻辑。
这种方式简单方便,编写程序的时候就依照动作的流程顺序执行下去就可以。但是如果设备的动作比较复杂,就可能会将这个“流水线”设计得非常得长。这当然不是一个优质的程序结构。但是如果使用状态机的方式来处理,就可以将程序简化许多。且程序的代码质量也会提高不少。
举例2
串口自定义协议实现过程。在处理串口通信的过程中,在进行数据传输的过程中一般都会有几个动作,如串口状态查询、串口空闲查询、数据发送、数据接收、异常检测、异常处理。
同样的,将串口通信的过程均使用状态机的方式来进行处理,可以极大的简化程序的结构。尤其在通信过程为动态变化的情况下,如某一时刻,仅需要数据发送流程;某一时刻,仅需要数据接收;某一时间既要发送又要接收;在处理此类流程复杂的过程时,选用状态机的方式可以灵活的适用在各种变化的通信过程。
(转载请注明来源函控自动化工程师头条号)
相关问答
plc编程中的fun是什么?
在PLC编程中,"fun"通常是指功能块(FunctionBlock)的缩写。功能块是一种可重用的程序模块,用于封装特定的功能或操作。它可以包含输入、输出、内部变量和逻辑...
在单位做设备维修,很多设备上有PLC,想在PLC上多下点功夫,怎么做?
我是矿山电气小东,分享电气知识。看到这个问题时,第一时间就想到了我自己在十几年前,初次接触PLC的场景我与PLC初相识那还是在2007年的一天,我们矿的一斜...1...
plc编程语言有哪些?
1、梯形图语言(LD)梯形图语言是PLC程序设计中最常用的编程语言。它是与继电器线路类似的一种编程语言。由于电气设计人员对继电器控制较为熟悉,因此,梯形图...
plc的宏指令?
PLC里面是有宏这个概念的,其实所谓的宏不管是任何一种编程软件,它只是一个思想而已,具体的形式可能是不一样的,但功能相同,就是为了简化重复编程的过程而建...
一个机械动作,需要很多个条件,怎么做程序更简便一些?
在编写PLC程序时,确实可能会遇到一个机械动作需要满足多个条件的情况。以下是一些可以简化程序的方法:1.使用状态机(StateMachine):将机械动作的控制转换为...
plc基本程序的结构?
1、主机主机部分包括中央处理器(CPU)、系统程序存储器和用户程序及数据存储器。CPU是PLC的核心,它用以运行用户程序、监控输入/输出接口状态、作出逻辑判断和...
PLC控制系统应满足的标准?
一、满足系统控制要求PLC控制系统设计必须确保能实现对象的全部动作,满足对象的各项技术要求。所以我们设计人员在进行系统设计前,一定要深入生产现场或者通...
如何提升plc编程技术?
提升plc编程技术的方法如下:一、加强基础学习,巩固基础知识要有好的设计编程能力,必须要有良好扎实的PLC基础知识,必须掌握PLC各条指令的名称、符号、适用范...
PLC怎么学?
您好,小吴帮您回答,用通俗的语言让您明白电气知识。PLC,英语单词,ProgrammableLogicController,可编程逻辑控制器。其实让我来看PLC就是一台小型的电脑...●.....
单片机编程和PLC编程有什么区别?
一、区别:1、PLC是建立在单片机之上的产品,单片机是一种可编程的集成芯片。2、plc就是由单片机加上外围电路做成的,单片机开发式底层开发,程序编写用汇编...