PLC编程(英语:Programmable Controller programming)是指对可编程序控制器(PLC)进行程序编写和调试的过程。
PLC是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械或生产过程。作为工业自动化控制装置,PLC被广泛应用于各种场合中的检测、监控和控制的自动化过程,其应用效果与PLC编程情况密不可分。
开发人员通过编程器或编程软件,使用梯形图、功能块图、指令表、结构化文本、顺序功能图等适当的编程语言,对PLC程序进行编写与调试。 通过合理的编程和控制策略,可以实现自动化、连续化工业生产过程的优化、达到提高生产效率和节约人力成本等目的。
发展历程
PLC产生
20世纪60年代末期,由于电子计算机技术的发展,小型电子计算机曾被用作机械工作或生产过程的逻辑控制。这比更改硬件接线方便得多。但它也存在操作要求高、造价贵等缺陷。因此,通用汽车汽车(GM)公司为适应汽车工业发展的需要,于1968年提出设计新型电控制器的要求,并提出10点招标指标(GM10条)。GM10条是PLC产生的直接原因,奠定了PLC雏形,它的第一条指标就是编程简单,可在现场修改程序。
GM公司的这次招标中,有三家公司提供了实际原型机进行项目测试,它们分别是数字设备公司(DEC)、信息仪表公司(3-I)和贝德福德协会(Bedford Associates),这些原型机也被认为是PLC的雏形。Bedford研发的modicon 084控制器的编程相对简单,因此取得竞标胜利。Modicon 084是世界上第一块成为商品的PLC,其创始人迪克·莫利为此被誉为PLC之父。
语言与工具产生
Modicon 084的成功主要是因为推出了梯形图的编程方式。梯形图语言是PLC的第一个特有语言,其关于逻辑编程的相关符号,基本来源于电机工程学中描述顺序操作的功能指令,这使广大的电气工程师和电工能够非常快速的上手。当时,程序设计人员通常会手工绘制梯形逻辑图,然后将梯形图转换成一个包含指令和变量的列表,最后控制程序将命令通过数字键盘输入控制器的内存。其中,输入到PLC内存中的命令的实际编程语言称为指令表(IL)或语句表(STL),IL语言与计算机编程中使用的汇编语言非常相似。
1975到1976年,美国、日本、德国等一些国家把微处理器用作可编程序控制器的中央处理单元,用集成电路的存储器代替磁芯存储器,并结合微型计算机的技术,使得可编程序控制器实现更大规模的集成化,PLC进入了实用阶段。PLC制造商也利用微处理器来开发图形编程设备。初始的编程终端的用途单一,只能与同一制造商的PLC控制器配套使用,而且不同型号的PLC都有其对应的手持式编程器。随后出现了一种专用的图形式编程终端,配有键盘和软盘驱动器,可通过不同的编程口适配器对不同型号的PLC进行编程。这种编程终端体积大,且价格昂贵。20世纪80年代,出现了在计算机上运行的PLC编程软件,编程器逐渐被其取代。
标准制定
随着PLC发展,PLC编程语言逐渐多样化,如法国和德国于1977年分别推出PLC编程语言GRAFCET(SFC顺序功能图的前身)和Din 40719功能图。为规范可编程控制器编程软件和应用程序的开发,以降低用户的使用难度和维护成本,国际电工委员会(IEC)于1982年启动了PLC标准规范的开发,它由通用信息、设备与测试要求、编程语言、用户指南和通信五部分组成。其中,第三部分是PLC的编程语言标准。1992年,PLC编程语言标准IEC1131-3最终文本完成,并于1993年正式推出。1994年,IEC1131-3更名为IEC61131-3。
IEC61131-3使得PLC领域中美国的梯形逻辑图语言、德国的功能图语言、法国的GRAFCET(SFC顺序功能图的前身)以及日本常用的指令表语言得到了统一。此外,为了弥补传统PLC在复杂数据和复杂控制算法编程处理结构化缺失的短板,还专门开发了一种类似PASCAL语言的结构化文本语言。在制定编程语言国际标准的过程中,IEC 61131-3大量地吸取现代软件的结构化、模块化、可复用性等概念,并汇聚了软件工程技术中统一开发过程、面向对象等方法,有力地推动了PLC标准编程语言的发展。
随着时间变化,PLC标准也在更新发展,并且一些国家仍在不断地发布PLC国家标准。1995年11月,中国发布了GB/T 15969⁃1/2/3/4标准,与IEC 61131⁃1/2/3/4等同。2003年,国际电工委员会颁布IEC 61131-3第二版。2005年,美国电气制造商协会(NEMA)发布了可编程序控制器标准NEMA ICS 61131。2013年,国际电工委员会颁布IEC 61131-3第三版。IEC 61131-3基本上是每十年发布一个新的修订版本,第三版是第二版的改进和扩展,其重要改进是面向对象特性的集成,包括类以及方法和接口、功能块的面向对象编程(OOP)特性和命名空间等。2014年,德国标准化学会发布了更新的标准DIN EN 61131-3。2017年,中国国家标准化管理委员会发布GB/T 15969.3-2017,该国家标准等同于IEC 61131-3:2013。截至2023年11月,IEC 61131-3仍是世界上唯一的工业控制系统的编程语言标准。大多数主要PLC制造商都在提供符合IEC61131-3规范的软件开发平台。
PLC
可编程序控制器(Programmable Controller),为与个人计算机的PC(Personal Computer)相区别,通常简称其为PLC。PLC是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入、输出控制各种类型的机械或生产过程。
硬件结构
PLC一般由主机、扩展单元及外设组成。主机是必不可少的,其它部分可按需要配置。主机一般有CPU、内存、电源及相应的I/O或通信(外设)口。
CPU一般由控制电路、运算器和寄存器组成。这些电路通常都被封装在一个集成的芯片上。CPU通过地址总线、数据总线、控制总线与存储单元、输入输出接口电路连接。CPU在系统监控程序的控制下工作,通过扫描方式,将外部输入信号的状态写入输入映象寄存区域;在PLC进入运行状态后,CPU从存储器逐条读取用户指令,按指令规定的任务进行数据的传送、逻辑运算、算术运算等,然后将结果送到输出映像寄存区域。
存储器分为系统程序存储器和用户程序存储器。只读存储器(ROM)存放PLC的系统程序,其内容只能读出,不能写入;随机存取存储器(RAM)俗称内存,用户可以用编程装置读出RAM中的内容,也可以将用户序写入RAM,因此RAM又叫读/写存储器,它主要用于存储程序和数据,PLC通过读取RAM中的程序与数据实现对设备的精确控制和监测;可以电擦除可编程的只读存储器(EEPROM)兼有ROM的非易失性和RAM的随机存取优点,可以用编程装置对它编程,但写入数据所需的时间比RAM长得多。
PLC一般使用220V交流电源或24VDC电源。电源部件可将交流电源转换成CPU、存储器、I/O接口工作所需的直流电源。内部的开关电源为各模块提供DC 5V,±12V,24V等直流电源。小型一般都可以为输入电路和外部的电子(如接近开关)提供24V直流电源,驱动PLC负载的直流电源一般由用户提供。
输入(Input)模块和输出(Output)模块简称为I/O模块,它负责与外部设备进行通信。I/O接口有数字量(开关量)I/O单元、模拟量I/O单元。开关量输入模块用来接收从按钮,选择开关、数字拨码开关、限位开关、接近开关、光电开关、压力继电器等过来的开关量输入信号;模拟量输入模块用来接收电位器、测速发电机和各种变送器提供的连续变化的模拟量电流、电压信号。开关量输出模块用来控制接触器、电磁阀、电磁铁、指示灯、数字显示装置和报警装置等输出设备,模拟量输出模块用来控制调节阀、变频器等执行装置。 除了传递信号外,I/O模块还有电平转换与隔离的作用,它用光耦合器、光敏晶闸管、小型继电器等器件来隔离PLC的内部电路和外部的I/O电路。
软件组成
PLC的软件由系统程序和用户程序组成。
系统程序由PLC制造厂商设计编写的,并存入PLC的系统存储器中,用户不能直接读写与更改。系统程序一般包括系统诊断程序、输入处理程序、编译程序、信息传送程序、监控程序等。系统程序相当于个人计算机的操作系统,它使PLC具有基本的智能,能够完成PLC设计者规定的各种工作。
PLC的用户程序是用户利用PLC的编程语言,根据控制要求编制的程序。PLC的主要编程语言是比计算机语言简单、易懂、形象的专用语言。不同生产厂家、不同系列的PLC产品采用的编程语言的表达方式可能不同,但基本上可归纳两种类型:采用字符表达方式的编程语言;采用图形符号表达方式编程语言。
工作原理
扫描方式:PLC通电后,需要对硬件和软件作一些初始化工作。为了使PLC的输出及时地响应各种输入信号,初始化后PLC要反复不停地分阶段处理各种不同的任务,这种周而复始的循环工作方式称为扫描工作方式。PLC的一个扫描周期就是一次运行程序实现控制的过程,必经输入采样、用户程序执行和输出刷新三个阶段。如无跳转指令,则从第一条指令开始逐条顺序执行用户程序,直至程序结束,然后重新返回第一条指令,开始下一轮新的扫描。在输入采样阶段,首先以扫描方式按顺序将所有暂存在输入锁存器中的输入端子的通断状态或输入数据读入,并将其写入各对应的输入状态寄存器中,即刷新输入,随即关闭输入端口,进入程序执行阶段。此外,还要做些公共处理工作,即循环时间监视、外设服务及通信处理等。其中,外设服务是让PLC可接受编程器对它的操作,或通过接口向输出设备输出数据。
中断方式:在中断方式下,需处理的控制先请求中断,被响应后,PLC的CPU停止正在运行的程序,转而去处理有关的中断请求,运行有关的中断服务程序。待处理完中断,又返回运行原来程序。中断方式也可称为事件触发方式,有事件发生时,即去处理有关的事件处理程序;否则,PLC处于待机状态。
特点
功能丰富:与常规的控制电器相比,功能丰富是PLC的第一大特点。它具有以下基本功能:基本继电器的功能,可进行逻辑处理;简易的计算机功能,可进行数据运算;定时器功能,可准确定时;计数器功能,实现普通计数及高速计数;事件或应急响应功能;程序与数据存储功能;联网通信功能;自检测、自诊断功能。
使用方便:PLC用程序代替硬件接线,实现逻辑控制,编写程序比更改线路更方便。它的硬件高度集成化,硬件系统配置与建造非常方便。因此,用PLC实现对系统的控制是非常方便的。
工作可靠:硬件方面,PLC进行了抗电磁干扰处理;软件方面,PLC的扫描加中断的工作方式、监控程序、防止及检测故障的指令等都可确保其可靠工作。
编程基础
IEC 61131-3标准对PLC编程所用的公共元素进行了声明与规范。
印刷字符的使用
标识符:标识符是以字母或下划线字符开头,由字母、数字和下划线字符组成的一个字符串。标识符中字母不区分大小写。标识符不允许以多个下划线开头或多个内嵌的下划线,也不允许以下划线结尾。支持使用标识符的系统至少应支持六个不同的字符,其允许的最大字符数取决于实施者的规范。
关键字:关键字是唯一字符组合,它被用作单独的语法元素。关键字不包含内嵌的空格,不区分字符的大小写。关键字不可用于任何其他目的,例如用作变量名或扩展名。
空格:除关键字、直接量、枚举值、标识符、直接表示变量或在分界符组合内等文本外,用户可在程序文本中的任何地方插入一个或多个“空格”。
注释:除字符串直接量内,只要空间容许,注释可以出现在程序的任何地方。单行注释用字符“//”开始,以下一行输入、新行、换页和回车换行的结束;多行注释分别用特殊字符“(*”和“*)”界定开始和结束,也可用特殊字符“/*”和“*/”界定开始和结束;嵌套注释使用多对“(*”和“*)”或“/*”和“*/”表达。
附注:附注应分别在开头和结尾由花括号定界。特殊附注结构的语法和语义是实施者的规范。只要空间容许,附注可以在程序的任何地方,字符串直接量内除外。
直接量
在各种PLC编程语言中,数字直接量、字符串直接量和时间直接量组成数据的外部表示。
数字直接量:数字直接量被定义为十进制数或基底数,有整数直接量和实数直接量两类。整数直接量可以用十进制符号表示,也能以2、8或16为基底表示;实数直接量由十进制符号与小数点组成。可在数字直接量的数字间插入单下划线字符,但下划线字符无任何意义。
字符串直接量:字符串直接量是ISO/IEC 10646字符集的零个或多个字符的序列,包括单字节或双字节编码的字符。单字节字符串以单引号字符开头和结尾,当美元符号与随后的两个十六进制数字组合成单字节字符串时,应解释为8位字符码的十六进制表示;双字节字符串直接量以双引号字符开头和结尾,当美元符号与随后的四个十六进制数字组合成双字节字符串时,应解释为16位字符码的十六进制表示。
时间直接量:与时间有关的数据外部表示有持续时间数据与日时数据(也可包括日期信息)两类。持续时间数据用于测量或控制一个控制事件所经过的时间,由关键字左边界定,支持按天、小时、分、秒、毫秒或其它任意组合表示的持续时间数据;日时数据(也可包括日期信息)用于把一个控制事件的开始或结束同步到一个绝对时间基准。
数据类型
IEC 61131-3定义了一整套常用的标准数据类型,用于描述所声明的变量的存储及运算格式,不同的标准数据类型可以帮助编译、推导以及用户自定义数据类型。每一个标识符被分配到一个数据类型,数据类型决定了多大的存储容量将被保留。
基本数据类型
IEC 61131-3规范的基本数据类型如表所示。
STRING和WSTRING类型的元素可支持最大长度由实施者明确,编程和调试工具应支持定义的STRING和WSTRING的最大长度。用户可通过最大长度加括号方法声明最大长度(不得超过实施者细则支持的最大值)。
在数据类型CHAR或WCHAR元素的字符串中,通过方括号和字符串中的字符的位置访问单个字符,开始位置为1。如果使用单字节字符访问双字节类型字符串或者使用双字节字符访问单个字节类型字符串,将产生一个错误。
类数据类型
除基本的数据类型外,在标准功能和功能块的输入和输出的规范中,可以使用类数据类型的分级体系。类数据类型由前缀“ANY”标识。类数据类型的使用应遵守以下规则:直接派生的泛型类型应与用基本类型派生的泛型类型相同;子界类型的泛型类型应当ANY_INT;用户定义的所有其他导出类型的泛型类型应是ANY_DERIVED。
用户定义数据类型
用户定义数据类型的目的是用于其他数据类型的声明和变量声明,通过TYPE...END_TYPE文本结构声明。
枚举数据类型:这种类型的任何数据元素的值只能取相关标识符表中的一个值。枚举表定义了一组有序的枚举值,不同的枚举数据类型可以对枚举值使用相同的标识符。枚举值的最大允许数由实施者规范。
带名称值的数据类型:这种类型是指与枚举数据类型相关,但用户不知道其枚举标识符值的数据类型。名称值的声明并不限制数据类型变量值范围的使用,即可以指定常量,也可以通过计算产生。
子范围数据类型:子范围声明指定的任何数据元素的值只能取指定的上限和下限之间(包括上限和下限)的值。子范围的限制应是直接量或常量表达式。
数组数据类型:数组数据类型声明指定足够多的数据存储器,以存储所有能被用指定子范围索引的数据。数组是相同类型的数据元素集合,数据元素集合通过方括号中一个或多个下标引用,由逗号分隔。基本和用户定义的数据类型、功能块类型和类都可以作为数组元素的类型。数组最大长度和最大下标范围由实施者规范。索引子范围是直接量或常量表达式。ST语言中的下标应当是表达式产生的一个值,其对应于一个泛型类型的子类ANY_INT。IL语言和图形语言中的下标是单个元素变量或整数直接量。
结构化数据类型:结构化数据类型元素由两个或两个以上的标识符或数组表示,由单句号分隔。第一个标识符表示结构化元素的名称,随后的标识符代表元素名称顺序,以访问在数据结构中特定数据元素。基本和用户定义的数据类型、功能块类型和类都可以作为一个结构元素的类型。结构元素的最大数量、一个结构中可控的最大的数与结构元素下载的嵌套层次的最大数量由实施者规范。
直接派生数据类型:用户定义的数据类型可直接从一个基本数据类型或之前用户定义的数据类型派生。
引用:引用是一个变量,仅包含对于一个变量或一个功能块实例的引用,可能有NULL值。引用用关键字REF_TO声明定义数据类型,并可用引用数据类型声明定义数据类型。引用数据类型可能是一个基本数据类型或用户定义的数据类型。
变量
概述
变量提供一种识别数据对象的方法,如与PLC的输入、输出或存储器相关的数据。一个变量可以被说明为基本数据类型之一或导出类型之一。变量可以分为单元素变量和多元素变量,单元素变量是表示基本类型之一的单数据元素、导出枚举类型、子范围类型的变量;多元素变量类型是数组和结构。
变量段
变量可以在各种VAR..ENDVAR文本结构中声明,可包括RETAIN(保留)或PUBLIC(公共)限定符。声明程序组织单元部分可包含各种变量段,变量段的使用取决于程序组织单元的种类。
变长数组变量与常数变量
变长数组为程序、功能、功能块和方法提供了使用不同数组索引范围的手段。变长数组只能用于作为功能和方法的输入、输出或输入-输出变量;功能块的输入-输出变量。
常数变量被定义时使用关键字CONSTANT。
直接表示变量
单元素变量的直接表示由特殊符号%、位置前缀、大小前缀与无符号整数组成。存在多个整数时,整数间用“.”隔开,代表分级寻址。
保持变量
当一个配置元素(资源或配置)从“热重启”或“冷启动”中“开始”时,每一个与配置元素相关的变量与取决于开始操作配置元素的程序值相关,并与保留变量行为的声明相关。如果开始操作是“热重启”,在变量段使用RETAIN限定符的所有变量的初始值是保留值。当资源或配置时停止,变量仍具有这些值。
程序组织单元
IEC 61131-3标准定义的程序组织单元(POUs)是功能、功能块、类和程序,功能块与类包含方法。一个POU包含明确定义的程序部分,其目的是为了模块化和结构化。
POU可由制造商提供,或由用户按照标准定义的方法编写。POU定义了带输入和输出的接口,并可多次被调用和执行。POU不是递归的,即一个POU的调用不应导致另一个相同类型的程序组织单元的调用。
功能
功能也称函数,在执行时,它准确地产生一个数据元素和可能的其它输出变量,并且在文本语言中,可如表达式中的操作数那样对其进行调用。功能的调用可以表现为一个文本或图形的形式。由于功能的输入变量、输出变量和返回值是不存储的,赋值给输入、寻址输出和返回值的应立即功能调用。
IEC 61131-3定义了一些标准功能,其中一些功能还可进行扩展。
数据类型转换功能:类型转换功能的形式是*_TO_**,“*”是输人变量类型,“**”是输出变量类型。
数字和运算功能:与数学计算相似,该功能对所有数字类型可加载和类型化。
位串和按位的布尔功能:分为单个位串变量移位功能和按位布尔功能,对所有位串类型可加载和类型化。其中,按位布尔功能中除NOT功能外的功能都可扩展。
选择和比较功能:对所有数据类型可加载。除不等于外的所有比较功能都可扩展。
字符串功能:对字符串进行的一些操作。
日期和时间功能:对日期和时间数据类型进行的一些操作。
字节顺序转换功能:字节顺序是较长的数据类型或变量中字节的排序。字节顺序转换功能可转换PLC内部要求使用的字节顺序和所需求的字节顺序。
验证功能:检查给定的输入参数是否包含一个有效值。
功能块
功能块能对若干输入进行处理,进而产生输出(一般为多个),或能执行某个特定操作。功能块可以由一组面向对象的特征进行扩展。IEC 61131-3定义了一些标准功能块:双稳态功能块、边沿检测功能块、计数器功能块、定时器功能块,双稳态功能能保持接通和断开两个稳定状态,具有置位和复位两个要素;边沿检测就是检查某个信号的跳变沿,分为上升沿检测和下降沿检测;计数器用于实现对某个事件或信号的计数;定时器用于定时,常见的指令有脉冲定时器(TP)、接通延时定时器(TON)、关断延时定时器(TOF)。
IEC 61131-5定义了用于PLC的标准通信功能块,这些功能块提供可编程的通信功能如设备检验、轮询的数据采集、程序的数据采集、参数控制、互锁控制、编程的报警报告以及链接管理和保护。
程序
程序是所有编程语言元素和结构的一个逻辑集合,它对于预期的信号处理是必须的,这是由PLC系统控制的机器或过程所要求的。
类
类是一个为面向对象编程设计的POU,包含基本的变量和方法。类实例化之后,才能调用其方法或访问其变量。IEC 61131-3标准的PLC编程语言中所用的术语类型和实例与IT编程语言(如C#、C++、Java、统一建模语言等)中所用的术语类和对象一致。
编程语言
PLC程序编译系统的设计和实现与所使用的PLC编程语言有关,IEC61131-3标准定义了五种编程语言:梯形图编程语言(LD,Ladder Diagram)、功能块图编程语言(FBD,Function Block Diagram)、指令表编程语言(IL,Instruction List)、结构化文本编程语言(ST,Structured Text)和顺序功能图编程语言(SFC,Sequence Function Chart)。此外,常用的编程语言还有连续功能图语言(CFC,Continuous Function Chart)。
梯形图语言
梯形图是一种基于梯级的图形符号布尔语言。它通过连线(也称链接元素),把PLC指令、功能及功能块的梯形图符号连接在一起,以表达PLC指令、功能或功能块,以及它们执行的前后顺序。
根据编程标准规定,梯形图的语言元素有连线、触点、线圈以及功能或功能块,不同的PLC其内含不完全相同。连线有左右垂直母线以及水平链路、垂直链路;触点有常开触点、常闭触点等,在梯形图中它用水平链路、垂直链路相互连接,并为连接在其后的线圈、功能或功能块的执行建立逻辑条件;线圈有正常线圈、反向线圈、设置(锁存)线圈、复位(取消锁存)线圈等,线圈通常跟在触点或功能和功能块后面,但个别PLC(如施耐德)在它们后面也可以连接触点,线圈也是梯形图程序的输出;功能及功能块也可产生输出,它的调用还可运用EN/ENO机制,即在调用时,在功能或功能块输入加EN端,输出加ENO端。
梯形图语言与电气原理图相对应,与原有继电器逻辑控制技术相一致,具有直观易懂的优点,易于被电气技术人员使用。与原有的继电器逻辑控制技术不同的是,梯形图中的功率流不是实际意义的电流,内部的继电器也不是实际存在的继电器。
功能块图语言
功能块图语言是一种对应于逻辑电路的图形语言,以功能模块为单位,描述控制功能。与电子线路图中的信号流图非常相似,在程序中,它可看作两个过程元素之间的信息流。
功能块图语言逻辑关系清晰、便于理解,适用于控制规模较大、控制关系较复杂的系统。此外,一些含有标准功能的程序,用功能块语言则更便于调用。但功能模块图语言占用内存较大,执行时间也较长。因此这种设计语言多只在大、中型可编程序控制器和集散控制系统的编程和组态中采用。
指令表语言
指令表也叫助记符,有的称布尔助记符或列表,是基于字母符号的一种低级文本编程语言。它是面向累加器(Accu)的语言,即每条指令使用或改变当前累加器内容。
指令表编程语言的源程序由指令序列组成,其中大部分指令独立成为一行。指令表的每条指令包含一个操作符和若干个操作数组成,其中操作符可用修正符修饰,而当操作数多于一个时,可用逗号分隔。操作数可以是直接表示变量或符号变量等。IEC 61131-3标准规定的指令表编程语言的操作符有24种。
指令表语言是PLC编程最基本的语言。它容易记忆、便于操作,还便于用简易编程器编写程序,与其它语言多有一一对应关系,有些其它语言无法表达的程序,用它都可表达。但用它编的程序的可读性较差。
结构化文本语言
结构化文本语言是基于文本的高级编程语言。它与BASIc语言、PASCAL语言或C语言等高级语言相似。但为了PLC应用方便,在语句的表达及语句的种类等方面都做了简化。结构化文本语言语言没有单一的指令,只有由一组指令构成的含义完整的各种语句,具体语句有赋值语句、条件语句、选择语句、循环语句及EXIT语句、RETURN语句、功能块调用语句等其它语句。
赋值语句用表达式的求值结果替代单个或多个元素变量的当前值,应包括:左侧的变量引用,接着是赋值操作符“:=”,其后是要求值的表达式。
比较语句返回一个布尔类型的值,应包括:左侧的变量引用,接着是比较操作符,其后是右边的变量引用,变量可以是单元素变量也可以是多元素变量。
选择语句包括IF语句和CASE语句,选择语句基于所规定的条件,选择其组成语句之一(或一组)用于执行。
循环语句可使指定的语句重复执行,包括FOR语句、WHILE语句与REPEAT语句;CONTINUE语句用来跳过本次循环中CONTINUE语句之后直到本层循环结束符之间的剩余语句;EXIT语句用来终止循环。
结构化文本语言功能比图形语言强,可读性比指令表语言好。用它编写复杂的程序,既方便、又易读。但是它不如图形语言直观,对编程人员的技能要求更高。
顺序功能图语言
顺序功能图以描述控制程序的顺序为特征,能以图形方式,简单、清楚地描述系统的所有现象,并能对系统中存有的像死锁、不安全等反常现象进行分析和建模,并可在此基础上编程。
顺序功能图由步、有向线、转移等组成。步是系统工作顺序组成部分,用方框表示,分有初始步、活动步、不活动(休止)步三种,初始步是与系统初始状态对应的步;活动步,正处于工作阶段;不活动步,处于等待或已完成工作的阶段。一个步是否为活动步,即是否处于激活状态,则取决于上一步及与其相应的转移。动作是步的组成部分,一个步含有一个或多个动作,用一个附加在步上的矩形框来表示。有向线是步间的连线。转移是在有向连线上的垂直短线,与转移相关的逻辑条件,用文字、布尔代数表达式、图形符号标注在转移短线旁。
顺序功能图语言仅仅是一种组织程序的图形化方式,因其的实际使用要与其它语言配合,否则无法实现其功能。
连续功能图语言
连续功能图与功能块语言类似,也是按需要选用功能块,每个功能块也有输入、输出,块间的联系也用连线。所不同的是,它更灵活,块的位置可任意摆放, 有信号反馈时,画起来更方便。
为了块的执行有明确的顺序,连续功能图的每个块的右上角都标有序号。但在实际表达时,这个标号也可选择不显示。
功能块图及连续功能图语言在DCS系统编程中用得较多。此外,由于这两种语言差别不大,有时仅使用功能块图语言。
编程规范
软件模型
IEC 61131-3标准软件模型描述了如何将一个大型程序分解若干可独立管理的部分,并在各独立部分之间如何交互。软件模型是整个程序开发的理论基础,所有符合该标准的编程系统,在编程概念上必须与软件模型中描述的概念保持一致。
软件模型中的组态元素包括配置、资源、任务、全局变量以及存取路径。配置是软件模型的顶层元素,它定义了单元结构,一个配置元素中能包含多个其他元素,使用标准编程语言的不同的配置之间可以通过定义界面进行通信;资源为程序的运行提供支持,它主要提供程序和物理通道之间的界面;任务用于描述组织程序单元的特性,它可以控制组成程序单元地执行;全局变量用来声明程序中的全局变量的生存周期和使用范围;存取路径是全局变量的一个扩展,是配置之间进行通信的纽带。
编程规则
PLC程序应该遵循编程规则,以保证程序的可读性和可维护性。
命名规范:命名规范是PLC编程规范的基础,它要求对程序中的变量、函数、模块等进行统一的命名规则。进行命名时应使用有意义的名称,避免使用拼音、缩写或无意义的字符;还要注意命名的长度和格式,以及特殊字符的使用,可以采用驼峰命名法或下划线命名法。
程序结构:程序结构规则是指PLC程序的组织结构和布局方式。在PLC编程中,常用的程序结构规则包括模块化设计、层次化结构。模块化设计将程序分成多个模块,每个模块负责一个具体的功能,便于程序的编写、测试和维护。层次化结构将程序分成多个层次,每个层次负责不同的任务,便于程序的理解和修改。
注释规范:良好的注释规则有助于开发人员理解和修改程序。应对每个模块和函数进行注释,对其功能、输入输出参数、调用关系等进行说明;对程序中的重要逻辑进行注释,对关键变量和算法进行解释;对程序中的修改和优化进行记录,以便于后续的维护和升级。
变量声明:变量声明要求对每个变量进行明确的定义,包括变量的类型、名称、作用域等,并对变量进行初始化,避免使用未初始化的变量。变量声明还要求对变量的范围进行限制,避免变量的误用或滥用。
逻辑编写:逻辑编写要求对程序的逻辑进行清晰的定义,避免出现歧义和冲突。并对程序的逻辑进行模块化的设计,将复杂的逻辑拆分为多个简单的逻辑,以便于理解和维护。逻辑编写还要求对程序的逻辑进行测试和验证,确保其正确性和稳定性。
错误处理:错误处理规则是指在PLC编程中对错误和异常情况的处理方式。错误处理要求对程序中的错误进行捕获和处理,避免程序崩溃或数据丢失,并对错误进行记录和报警,以便于后续的分析和修复。错误处理还要求对程序中的异常情况进行处理,确保程序的正常运行。
安全规则:PLC程序应该遵循安全规则,确保其不会被未授权的人员所篡改,例如禁止直接修改PLC控制器的参数、禁止使用未经验证的程序等,以保障生产过程的稳定性和安全性。安全规则可以保障PLC的稳定性和安全性。
编程工具
编程器
编程器是可编程控制器的重要外围设备,利用编程器能够进行可编程控制器程序的编写、调试检查和监控等操作,还可以通过编程器来调用和显示可编程控制器的一些内部状态和系统参数。编程器通过通信端口与CPU联系,完成人机对话连接。编程器上有编程用的各种功能键和显示器,以及编程、监控转换开关。编程器有简易编程器和智能编程器两类。简易编程器—般由简易键盘和发光二极管或其他显示器件组成,它只能联机编程,且只能输入机器语言助记符(指令表)。智能编程器又称图形编程器,它可以联机编程,也可以脱机编程,具有LCD或CRT图形显示功能,可以直接输入梯形图和通过屏幕对话。还可以利用微机(如IBM—PC)作为编程器。
编程软件
随着计算机及PLC技术的发展,PLC主要的编程工具已变成配有PLC编程软件的计算机。PLC编程软件的基本功能有:对PLC以及相关网络进行组态;编写PLC程序,并进行相关语法检查;可通过串口或其它通信口与PLC通信,远程操控PLC,向PLC下载程序(含硬件设置及程序数据初值),测试及修改程序及程序数据,监控PLC工作;可在PLC工作现场,调试与修改程序及有关数据机设置;可与PLC联机,在当地或远程诊断、升级PLC版本,查找故障记录;PLC程序、程序数据及有关设置存储、导入、导出。此外,PLC编程软件通常具有友好的用户界面。
Siemens STEP 7:Siemens STEP 7是西门子公司开发的一款PLC编程软件。该软件为用户提供了用于定义全局变量的符号目的地、数据类型和备注的符号编辑器,具有浏览CPU数据以及用户程序执行过程中各种问题的原因的信息功能。用户可在STEP 7中使用语句表、梯形图与功能块图表等标准化的PLC编程语言,进行特殊任务时,还可使用附加编程语言或面向技术功能的组态。
Rockwell RSLogix 5000:Rockwell RSLogix是罗克韦尔自动化公司开发的一款PLC编程软件。RSLogix 5000系列编程环境,提供了易于使用且符合IEC 1131-3标准的接口,采用结构和数组的符号化编程,以及专用于顺序控制、运动控制、过程控制和传动控制场合的指令集,Net linx开放式网络结构提供了通用的通讯工具用于各种不同网络。
Mitsubishi GX Works2:Mitsubishi GX Works是三菱电机公司开发的一款PLC编程软件。一体式GX Works2软件包支持整个工程,如系统设计、编程、调试和维护。GX Works2符合IEC 61131-3标准,并支持分组部件的结构化编程。支持的编程语言包括结构化文本、顺序功能图和梯形图,可以根据应用程序使用。
欧姆龙 CX-One:Omron CX-One是欧姆龙公司开发的一种综合性软件包,为PLC编程软件集成了支持软件,可对包括网络、可编程终端、伺服系统、变频器、电子温度控制器进行设置。支持多种语言,如梯形图、时序功能图、结构化文本和功能块中的程序。用户可以在线编辑程序,对位惊醒强制设定/复位,设置断点,还可以使用PLC错误模拟器。
Beckhoff TwinCAT 3:Beckhoff TwinCAT 3是倍福公司开发的一款PLC编程软件,它包含许多组件,可用于配置、编程和调试应用程序。支持IEC 61131-3标准中定义的所有编程语言。
Codesys:CODESYS由德国CODESYS软件集团开发的PLC编程软件,具有在线编程和离线编程功能、编译器及其配件组件、可视化界面编程组件、可选的运动控制模块等。支持IEC 61131-3标准中定义的编程语言与连续功能图编程语言。
编程方法
逻辑控制方法:逻辑控制方法是PLC编程最基本的方法之一,采用这种方法可以达到较好的控制效果。逻辑控制编程方法有:基于逻辑量间的与、或、非的关系,用逻辑综合方法,处理逻辑量的输入与输出间关系的基本逻辑设计法;用逻辑综合方法处理逻辑量的输入与输出之间关系,使用PLC的高级处理指令的高级逻辑设计法;运用图形进行设计的图解法。此外还有根据工程机理设计的方法以及线性链表设计法。
PID控制方法:针对温度、速度和位置等控制系统,一般采用PID控制方法。在闭环负反馈控制系统中,系统的偏差信号是系统进行控制的最基本的原始信号。PID是比例(P)、积分(I)、导数(D)之意。PID控制就是对偏差信号进行“比例加积分加微分”形式的改造,形成新的控制规律。标准PID的控制值是与偏差(设定值与实际值之差)、偏差对时间的积分、偏差对时间的微分,三者之和成正比。PID控制简单易懂,使用中不必弄清楚系统的数学模型。
数据处理方法:PLC编程的数据处理方法,主要包括输入/输出方式、数据处理运算方法、数据存诸方式和数据传输等。
状态机方法:状态机是一种基于状态转换实现的控制制度,它可以实现程序流程控制、状态切换和条件判断等功能。在PLC编程中,状态机方法可用于控制系统分步执行,防止出错,提高程序的可靠性。
事件驱动方法:基于事件驱动的方法,可以针对复杂的控制系统,通过触发事件来实现控制目标。这种方法控制程序的灵活性强,适用于复杂的管控过程,常用于制造业和生产线控制。
应用领域
PLC编程的作用是控制自动化系统中的各种机器和设备,使其按照预定的程序运行。它在各个领域都有广泛的应用。通过合理的编程和控制策略,可以实现自动化控制和监控,提高生产效率和质量,降低能源消耗和成本,提高交通运输效率和安全性,提供舒适和安全的室内环境,改善环境质量和人员的安全性。
制造业中的作用:PLC可以控制和监控生产线上的各种设备,如机器人、传送带、电机等。通过编写适当的程序,PLC可以实现自动化生产,提高生产效率和质量。此外,PLC还可以进行故障检测和报警,及时发现并解决问题,减少停机时间。
能源管理中的作用:通过PLC编程,可以实现对如电力系统、照明系统、空调系统等能源系统的监控和控制。通过合理的控制策略,可以实现能源的节约和优化,降低能源消耗和成本。
交通运输领域中的作用:通过PLC编程,可以根据交通流量和信号灯状态来控制信号灯的切换,以实现交通的顺畅和安全。此外,PLC还可以用于控制和监控地铁、火车等交通工具的运行,提高运输效率和安全性。
建筑自动化中的作用:通过PLC编程,可以实现对如照明系统、空调系统、安防系统等建筑设备的控制和监控。通过合理的控制策略,可以提高建筑的能源利用效率,提供更舒适和安全的室内环境。
环境监测和控制中的作用:通过PLC编程,可以实现对如温度、湿度、气体浓度等环境参数的监测和控制。通过合理的控制策略,可以实现对环境的调节和优化,提高环境质量和人员的安全性。
未来发展
随着科技发展,PLC也在智能制造、工业互联网等发展趋势中寻求转型。PLC将采用如Linux等开放的实时操作系统,自由度高的Python、C、C++等软件编程语言,多功能开发平台和通信接口平台,在保留传统PLC简单、易用的优势同时,扩大编程语言、工具及开源功能集成的自由度。通过与云计算、大数据、人工智能等新技术结合,实现PLC终端与“智能制造”的融合发展,推动工业控制系统的自动化,进而助推工业企业的信息化、数字化、智能化进程。
云计算与大数据:云计算与大数据的结合使得PLC编程更加灵活、高效,将PLC编程与云计算相结合,可以实现分布式编程和数据共享,提高编程效率和系统的扩展性;大数据分析可以为PLC编程提供更准确的决策支持,帮助优化编程逻辑和提高系统的性能。
人工智能:随着人工智能技术的快速发展,越来越多的智能算法被应用于PLC编程。人工智能技术可以提供更高效、更智能的编程解决方案,使得PLC编程更加灵活、自动化。例如,通过机器学习算法,PLC可以自动学习和优化编程逻辑,提高系统的性能和稳定性。人工智能技术还可以实现PLC的自动故障诊断和预测,提高设备的可靠性和维护效率。
物联网:物联网的发展将为PLC编程带来更多的创新和应用,将PLC与物联网相连接,可以实现设备之间的智能互联和数据共享,提高编程的灵活性和系统的集成性。例如,通过与传感器和执行器相连接,PLC可以实时获取和处理设备的数据,实现更精确的控制和反馈。
工业4.0:工业4.0的概念提出了智能工厂和智能制造的理念,为PLC编程带来了新的发展方向。PLC编程应具备更高的智能化和自动化水平,能够实现设备之间的智能互联和协同工作。
参考资料
翻开PLC演进史:探索自动化领域的常青树.网易.2023-11-16
产品与技术.CODESYS.2023-11-08
plc编程的基本步骤有哪些,有哪些规则?.21ic电子网.2023-11-21
PLC编程——PLC编程的用处及领域 .搜狐.2023-11-10
PLC“GM十条”与美国通用汽车公司.搜狐.2023-11-16
彭瑜:PLC编程语言和平台的演变发展.搜狐.2023-11-16
PLC技术发展与市场趋势观察.搜狐.2023-11-16
PLC控制器的CPU简介.PLC之家.2023-11-16
PLC的RAM是干什么的? .搜狐.2023-11-16
PLC的主要模块构成(系统组成图).PLC之家.2023-11-17
可编程控制器基本指令介绍,可编程控制器可用编程语言有哪些.电子技术应用.2023-11-06
PLC的软件组成.阿里巴巴国际站.2023-11-19
S7-200 PLC检测输入信号的边沿程序举例.PLC之家.2023-11-27
plc编程中计数器怎么用的.电工学习网.2023-11-27
分分钟学会S7-1200 PLC的定时器使用 .搜狐.2023-11-27
PLC编程语言的类型和具有哪些特点.电子发烧友.2023-11-21
plc编程规范国家标准.电工学习网.2023-11-21
PLC编程器的作用和分类.PLC之家.2023-11-08
STEP 7.SIEMENS.2023-11-08
(AB)Rockwell RSlogix 5000编程软件.中华工控网.2023-11-08
GX Works2.Mitsubishi Electric.2023-11-08
CX-One Ver.4.OMRON.2023-11-08
TC1xxx | TwinCAT 3 基本组件.倍福中国.2023-11-08
PLC编程的工作原理PLC编程的基本方法.电子发烧友.2023-11-06
plc编程发展方向.电工学习网.2023-11-27