PLC最初主要用于开关量的逻辑控制,随着技术的进步,它的应用领域不断扩大。在现代工业控制和商用控制场合,PLC不仅用于开关量控制,还用于模拟量及脉冲量的控制,可采集与存储数据,还可对控制系统进行监控;还可联网、通信,实现大范围、跨地域的控制与管理。PLC已日益成为现代电气控制装置家族中一个重要的角色。
PLC控制开关量的能力是很强的,所控制的输入/输出点数,少的十几点、几十点,多的可到几百、几千,甚至几万点。由于它能联网,点数几乎不受限制,不管多少点都能直接或间接控制。
PLC所控制的逻辑问题可以是多种多样的:组合的、时序的;即时的、延时的;不需计数的,需要计数的;固定顺序的,随机工作的等,都可进行控制。
PLC的硬件结构是可变的,软件程序是可编的,用于控制时,非常灵活。必要时,可编写多套,或多组程序,依需要调用。它很适应于工业现场多工况、多状态变换的需要。
用PLC进行开关量控制的实例很多,如冶金、机械、轻工、化工和纺织等行业,几乎所有工业行业都需要用到它。
如图1-11所示为冰淇淋包装系统,该系统采用PLC的输入触点和延时功能来控制冰淇淋包装设备。PLC的功能如下:①利用变频器的输出控制变频器,以调节运行速度;②邻近传感器On后,一定时间后电磁阀动作;③时间的设定是根据邻近两个传感器的输入频率来计算的;④邻近传感器信号On后,经过一定时间后电磁阀再动作150ms,最后切割成品。
图1-11 冰淇淋包装系统
模拟量如电流、电压、温度和压力等,其大小是连续变化的。工业生产特别是连续型生产过程,常要对这些物理量进行控制。
PLC进行模拟量控制,要配置有模拟量与数字量相互转换的A-D、D-A单元。A-D单元是把外电路的模拟量,转换成数字量,然后送入PLC。D-A单元是把PLC的数字量转换成模拟量,再送给外电路。
有了A-D、D-A单元,余下的处理都是数字量,这对有信息处理能力的PLC并不难。中、大型PLC处理能力更强,不仅可进行数字的加、减、乘、除,还可开方、插值,并可进行浮点运算。有的还有PID指令,可对偏差制量进行比例、微分、积分运算,进而产生相应的输出。
用PLC进行模拟量控制的好处是,在进行模拟量控制的同时,开关量也可控制。这个优点是别的控制器所不具备的,或控制的实现不如PLC方便。
图1-12 污水池流量控制系统
图1-13 钢铁和圆钢内孔的加工
如图1-12所示为污水池流量控制系统,该系统采用PLC的模拟量输入模块和输出模块,适用于水处理厂的污水池。其控制过程为:①利用A-D模块输入污染度信号并测量污染度;②根据污染程度调整运行速度和输入到污水池的空气量。
实际的物理量,除了开关量、模拟量,还有脉冲量,如机床部件的位移,常以脉冲量表示。
PLC可接收计数脉冲,频率可高达几千到几十千赫兹,可用多种方式接收这种脉冲,还可多路接收。有的PLC还有脉冲输出功能,脉冲频率也可达几十千赫兹。有了这两种功能,加上PLC有数据处理及运算能力,若再配备相应的传感器(如旋转编码器)或脉冲伺服装置(如环形分配器、功放、步进电动机),则完全可以依数控(NC)的原理实现步进或伺服传动控制。
当然,高中档的PLC还开发有NC单元,或运动单元,可实现点位控制。运动单元还可实现曲线插补,可控制曲线运动。
如图1-13所示为钢铁和圆钢内孔的加工,其PLC功能如下:①通过X轴往返运动实现加工件的移动位置和速度控制;②通过Y轴正反旋转速度的控制实现内孔的一般加工;③通过Z轴正反旋转和转矩改变指令实现内孔的精密加工。
随着PLC技术的发展,其数据存储区越来越大。数据采集可以用计数器,累计记录采集到的脉冲数,并定时转存到数据存储区(DM)中去。数据采集也可用A-D单元,当模拟量转换成数字量后,再定时转存到DM区中去。PLC可与计算机通信,由计算机把DM区的数据读出,并由计算机再对这些数据作处理。这时,PLC即成为计算机的数据终端。
如图1-14所示为净水厂流量计测控系统,利用PLC和数据交换器的变换功能,接收各地流量计的数据,并将数据传送到中央控制室系统。各个地方通过PLC内置的RS-485通信接收流量计数据,并用数据交换器连接到以太网,通过上位机的组态软件收集各地方的流量计的数据。
PLC可与个人计算机相连接进行通信,可用计算机参与编程及对PLC进行控制和管理,使PLC用起来更方便。为了充分发挥计算机的作用,可实行一台计算机控制与管理多台PLC,多的可达32台。也可一台PLC与两台或更多的计算机通信,交换信息,以实现多地对PLC控制系统的监控。
PLC与PLC也可通信。可一对一PLC通信,也可几台PLC通信,可多到几十、几百台。PLC与智能仪表、智能执行装置(如变频器),也可联网通信,交换数据,相互操作。可连接成远程控制系统,系统范围面可大到10千米或更大。联网可把成千上万的PLC、计算机、智能装置等组织在一个网中。
联网、通信,正适应了当今计算机集成制造系统及智能化工厂发展的需要。它可使工业控制从点到线再到面,使设备级的控制、生产线的控制、工厂管理层的控制连成一个整体,进而可创造更高的效益。这个无限美好的前景,已越来越清楚地展现在面前。
事实上,PLC已广泛应用于工业生产的各个领域。从行业看,冶金、机械、化工、轻工、食品和建材等,几乎没有不用到它的。不仅工业生产用它,一些非工业过程,如楼宇自动化、电梯控制也用到它。农业的大棚环境参数调控、水利灌溉也用到它。
图1-14 净水厂流量计测控系统
PLC的类型很多,可从不同的角度进行分类。
控制规模主要指控制开关量的输入和输出点数及控制模拟量的模拟量输入和输出,或两者兼而有之(闭路系统)的路数,但主要以开关量计。模拟量的路数可折算成开关量的点,大致一路相当于8~16点。依这个点数,PLC大致可分为微型机、小型机、中型机、大型机及超大型机。
微型机控制点仅十几点,如西门子LOGO,如图1-15a所示。
小型机控制点可达几十点到100多点,如西门子S7-200和S7-1200,如图1-15b和图1-15c所示。
中型机控制点数可达近几百点到500点,以至于千点,如西门子S7-300,如图1-15d所示。
大型机的控制点数一般在1000点以上,如西门子S7-400,如图1-15e所示。
超大型机的控制点数可达万点,以至于几万点。
图1-15 西门子PLC类型
a)LOGO b)S7-200 c)S7-1200 d)S7-300 e)S7-400
以上这种划分只是大致的,目的是便于系统的配置及使用。一般来讲,根据实际的I/O点数选用相应的机型,其性能价格比必然要高;相反,肯定要差些。
PLC可分为无背板及有背板两大类。微型机、小型机多为无背板的,如西门子S7-200和S7-1200系列PLC等。无背板的PLC把电源、CPU、内存、I/O系统都集成在一个小模块内,一个主机模块就是一台完整的PLC,就可用以实现控制。控制点数不符需要,可再接扩展模块,由主模块及若干扩展模块组成较大的系统,以实现对较多点数的控制。
背板式PLC是按功能分成若干独立的模块,如CPU模块、输入模块、输出模块、电源模块等,并直接安装在背板上,通过背板进行数据联系。该类型PLC的模块功能更单一、品种更多,可便于系统配置,使PLC更能物尽其用,达到更高的使用效益。如西门子S7-300/400等中、大型机就是这种结构。
PLC的品牌与类型很多,据统计,不同品牌的PLC全球市场占有率见表1-2,饼图如图1-16所示。显然,西门子品牌的PLC遥遥领先于其他品牌,占31%左右。因此,本书将以西门子的S7-200/300/400系列PLC为例进行介绍。
表1-2 不同品牌的PLC全球市场占有率
图1-16 不同品牌的PLC市场占有率饼图
对于PLC作为计算机控制技术来说,最大的问题在于它的不通用,尽管它最早于1968年开始产生并已经大量应用于工业生产。而IEC61131-3编程语言标准的出现则为PLC的进一步规范发展奠定了基础。
目前,传统的PLC公司如西门子、三菱、Rockwell、Moeller、LG、GE等编程系统的开发均是以IEC 61131-3为基础或与IEC 61131-3一致。尽管这些编程工具距离标准的IEC61131-3语言还有一定距离,但这些公司的编程系统会逐渐或终将与IEC 61131-3编程语言一致,是毋庸置疑的。
IEC 61131是国际电工委员会(IEC)制定的PLC标准。
IEC 61131标准区分成以下几个部分:
第1部分:一般资讯;第2部分:设备需求与测试;第3部分:编程语言;第4部分:使用者指引;第5部分:讯息服务规格;第6部分:通过fieldbus通信;第7部分:模糊控制程式编辑;第8部分:编程语言应用与导入指引。
IEC 61131-3则是属于该标准的第3部分编程语言。
1993年国际电工委员会(IEC)正式颁布了PLC的国际标准IEC 61131-3,规范了PLC的编程语言及其基本元素。这一标准为PLC软件技术的发展,乃至整个工业控制软件技术的发展,起到了举足轻重的推动作用。它是全世界控制工业第一次制定的有关数字控制软件技术的编程语言标准。此前,国际上没有出现过有实际意义的,为制定通用的控制语言而开展的标准化活动。可以说,没有编程语言的标准化便没有今天PLC走向开放式系统的坚实基础。
传统的PLC最常用的编程语言是梯形图,它遵从了广大电气自动化人员的专业习惯,易学易用,但是也存在许多难以克服的缺点:
1)不同厂商的PLC产品其梯形图的符号和编程规则均不一致,程序的可移植性差。
2)程序可复用性差。为了减少重复劳动,现代软件编程特别强调程序的可重复使用。传统的梯形图编程很难在调用子程序时通过变量赋值实现相同的逻辑算法和策略的反复使用。
3)缺乏足够的程序封装能力。一般要求将一个复杂的程序分解为若干个不同功能的程序模块。或者说,人们在编程时希望用不同的功能模块组合成一个复杂的程序,梯形图编程难以实现各程序模块之间具有清晰接口的模块化,也难以对外部隐藏程序模块内部数据实现程序模块的封装。
4)不支持数据结构。梯形图编程不支持数据结构,无法实现将数据组织成如Pascal、C语言等高级语言中的数据结构那样的数据类型。对于一些复杂应用的编程,它几乎无能为力。
5)程序执行具有局限性。由于传统PLC按扫描方式组织程序的执行,因此整个程序的指令代码完全按顺序逐条执行。对于要求即时响应的程序应用(如执行事件驱动的程序模块),具有很大的局限性。
6)进行顺序控制功能编程时,一般只能为每一个顺控状态定义一个状态位,难以实现选择或并行等复杂顺控操作。
7)传统的梯形图编程在算术运算处理、字符串或文字处理等方面均不能提供强有力的支持。
在IEC 61131-3标准的制定过程中就面临着在突破旧有的编程语言不足的同时,又要继承其合理和有效的部分。
IEC 61131-3的制定,集中了美国、加拿大、欧洲(主要是德国、法国)以及日本等7家国际性工业控制企业的专家和学者的智慧,以及数十年在工控方面的经验。在制定这一编程语言标准的过程中,PLC正处在其发展和推广应用的鼎盛时期。主要是在北美和日本,普遍运用梯形图(LD)语言编程;在欧洲,则使用功能块图(FBD)和顺序功能图(SFC);德国和日本,又常常采用指令表(IL)对PLC进行编程。
为了扩展PLC的功能,特别是加强PLC的数据处理、文字处理,以及通信功能的能力,许多PLC还允许使用高级语言(如BASIC语言、C语言)。因此,制定这一标准的首要任务就是把现代软件的概念和现代软件工程的机制应用于传统的PLC编程语言。
IEC 61131-3规定了两大类编程语言:文本化编程语言和图形化编程语言。前者包括指令清单语言(IL)和结构化文本语言(ST),后者包括梯形图语言(LD)和功能块图语言(FBD)。至于顺序功能图(SFC),标准不把它单独列入编程语言的一种,而是将它在公用元素中予以规范。这就是说,不论在文本化语言中,或者在图形化语言中,都可以运用SFC的概念、句法和语法。于是,在我们现在所使用的编程语言中,可以在梯形图语言中使用SFC,也可以在指令清单语言中使用SFC。
IEC 61131-3允许在同一个PLC中使用多种编程语言,允许程序开发人员对每一个特定的任务选择最合适的编程语言,还允许在同一个控制程序中其不同的软件模块用不同的编程语言编制。这一规定妥善继承了PLC发展历史中形成的编程语言多样化的现实,又为PLC软件技术的进一步发展提供了足够的空间。
自IEC 61131-3正式公布后,它获得了广泛的接受和支持:
1)国际上各大PLC厂商都宣布其产品符合该标准的规范(尽管这些公司的软件工具距离标准的IEC 61131-3语言尚有一定距离),在推出其编程软件新产品时,遵循该标准的各种规定。
2)以PLC为基础的控制作为一种新兴控制技术正在迅速发展,大多数PLC控制的软件开发商都按照IEC 61131-3的编程语言标准规范其软件产品的特性。
3)正因为有了IEC 61131-3,才真正出现了一种开放式的PLC的编程软件包,它不具体地依赖于特定的PLC硬件产品,这就为PLC的程序在不同机型之间的移植提供了可能。
总部设在荷兰的国际性组织PLC open在推广该标准的应用并开发相关的软件产品,以及谋求该标准的进一步发展进行了不懈的努力,获得了广泛的响应和优秀的成绩。以上这些事实有力地说明了这个编程语言标准的生命力。
IEC 61131-3标准的软件模型用分层结构表示。每一层隐含其下层的许多特性,从而构成优于传统PLC软件的理论基础。
软件模型描述基本的高级软件元素及其相互关系。这些元素包括:程序组织单元,即程序和功能块;组态元素,即配置、资源、任务、全局变量和存取路径。它是现代PLC的软件基础。图1-17所示是IEC 61131-3标准的软件模型。
IEC 61131-3软件模型从理论上描述了如何将一个复杂程序分解为若干小的可管理部分,并在各分解部分之间有清晰和规范的接口方法。软件模型描述一台PLC如何实现多个独立程序的同时装载和运行,如何实现对程序执行的完全控制等。
IEC 61131-3软件模型分为输入/输出界面、通信界面和系统界面三部分。
(1)输入/输出界面 每个PLC系统都需要读取来自实际过程的输入,例如来自微动开关、压力传感器、温度传感器等物理通道的信号。它也经物理通道输出信号到各种执行器,如电磁阀、继电器线圈、伺服与变频器等。
(2)通信界面 大多数PLC系统需要与其他设备进行信息交换,以提供显示画面和操作面板等。
(3)系统界面 在PLC的硬件和软件之间需要系统界面,系统服务器需要确保程序可初始化和正确运行,提供硬件与嵌入式系统的软件之间的组合。
图1-17 IEC 61131-3标准的软件模型
配置(Configuration)是语言元素或结构元素,它位于软件模型的最上层,是大型的语言元素。
配置是PLC的整个软件,它用于定义特定应用的PLC系统特性,是一个特定类型的控制系统,它包括硬件装置、处理资源、I/O通道的存储地址和系统能力。
配置的定义用关键字CONFIGURATION开始,随后是配置名称和配置声明,最后用END_CONFIGURATION结束。配置声明包括定义该配置的有关类型和全局变量的声明、在配置内资源的声明、存取路径变量的声明和配置变量声明等。
以下是一个配置的案例:
在配置案例中,配置名CELL_1有一个全局变量,其变量名为w,数据类型为UINT。给配置有两个资源,同时也声明了配置中有关变量的存取路径变量。图1-18所示是本案例软件模型的图形表示。
图1-18 软件模型的图形表示
资源在一个“配置”中可以定义一个或多个“资源”。可把“资源”看作能执行IEC程序的处理手段,它反映PLC的物理结构,在程序和PLC的物理I/O通道之间提供了一个接口。只有在装入“资源”后才能执行IEC程序。一般而言,通常资源放在PLC内,当然它也可以放在其他支持IEC程序执行的系统内。
在上述的配置案例中有两个资源。资源名STATION_1有一个全局变量,变量名是z1,其数据类型是字节。该资源的类型名是PROCESSOR_TYPE_1,它有两个任务,任务名为SLOW_1和FAST_1。还有两个程序,程序名是P1和P2。资源名STATION_2有两个全局变量,一个变量名是z2,其数据类型是布尔量;另一个是直接表示变量,其地址是%QW5,数据类型是整数。需指出,资源STATION_1中的全局变量z1的数据只能从资源STATION_1中存取,不能从资源STATION_2中存取,除非配置为全局变量;反之亦然。
任务(Task)位于软件模型分层结构的第三层,用于规定程序组织单元POU在运行期的特性。任务是一个执行控制元素,它具有调用能力。
任务在一个资源内可以定义一个或多个任务。任务被配置后可以控制一组程序或功能块。这些程序和功能块可以是周期地执行,也可以由一个事件驱动予以执行。
任务除了有任务名称外,还有3个输入参数,即SIGNAL、INTERVAL和PRIORITY属性。
1)SIGNAL。单任务输入端,在该事件触发信号的上升沿,触发与任务相结合的程序组织单元执行一次。例如,任务INT_2中z2是单任务输入端的触发信号。
2)INTERVAL。周期执行时的时间间隔。当其值不为零,且SIGNAL信号保持为零,则表示该任务的有关程序组织单元被周期执行,周期执行的时间间隔由该端输入的数据确定,如任务SLOW_1,其周期执行时间为20ms。当其值为零(不连接),表示该任务是由事件触发执行的,如任务INT_2。
周期执行时的时间间隔取决于任务执行完成需要多长时间。如果一个任务执行时间有时足够长,有时又比较短时,这类系统称为不确定系统。
3)PRIORITY。当多个任务同时运行时,对任务设置优先级。0表示最高优先级,优先级越低,数值越高。
允许变量在不同的软件元素内被声明,变量的范围确定其在哪个程序组织单元中是可以用的。范围可能是局部的或全局的。全局变量被定义在配置、资源或程序层内部,它还提供了两个不同程序和功能块之间非常灵活的交换数据的方法。
存取路径用于将全局变量、直接表示变量和功能块的输入、输出和内部变量联系起来,实现信息的存取。它提供在不同配置之间交换数据和信息的方法,每一配置内的许多指定名称的变量可以通过其他远程配置来存取。
IEC 61131-3提出的软件模型是整个标准的基础性的理论工具,帮助人们完整地理解除编程语言以外的全部内容。
配置本软件模型,在其最上层把解决一个具体控制问题的完整的软件概括为一个“配置”。它专指一个特定类型的控制系统,包括硬件装置、处理资源、I/O通道的存储地址和系统能力,等同于一个PLC的应用程序。在一个由多台PLC构成的控制系统中,每一台PLC的应用程序就是一个独立的“配置”。
典型的IEC程序由许多互连的功能块与函数组成,每个功能块之间可相互交换数据。函数与功能块是基本的组成单元,都可以包括一个数据结构和一种算法。
可以看出,IEC 61131-3软件模型是在传统PLC的软件模型的基础上增加了许多内容:
1)IEC 61131-3的软件模型是一种分层结构,每一层均隐含其下层的许多特征。
2)它奠定了将一个复杂的程序分解为若干个可以进行管理和控制的小单元,而这些被分解的小单元之间存在着清晰而规范的界面。
3)可满足由多个处理器构成的PLC系统的软件设计。
4)可方便地处理事件驱动的程序执行(传统的PLC的软件模型仅为按时间周期执行的程序结构)。
5)对以工业通信网络为基础的分散控制系统(例如由现场总线将分布于不同硬件内的功能块构成一个具体的控制任务)尤其是软逻辑/PLC控制这些正在发展中的新兴控制技术,该软件模型均可覆盖和适用。由此可见,该软件模型足以映像各类实际系统。
对于只有一个处理器的小型系统,其模型只有一个配置、一个资源和一个程序,与现在大多数PLC的情况完全相符。对于有多个处理器的中、大型系统,整个PLC被视作一个配置,每个处理器都用一个资源来描述,而一个资源则包括一个或多个程序。对于分散型系统,将包含多个配置,而一个配置又包含多个处理器,每个处理器用一个资源描述,每个资源则包括一个或多个程序。
IEC 61131-3的编程模型是用于描述库元素如何产生衍生元素,如图1-19所示的编程模型也称为功能模型,因为它描述了PLC系统所具有的功能。它包括信号处理功能、传感器和执行器接口功能、通信功能、人机界面功能、编程、调试和测试功能、电源功能等。
图1-19 编程模型
信号处理功能由应用程序寄存器功能、操作系统功能、数据寄存器功能、应用程序执行功能等组成。它根据应用程序,处理传感器及内部数据寄存器所获得的信号,处理输出信号送给执行器及内部数据寄存器。信号处理功能组别及示例见表1-3。
表1-3 信号处理功能组别及示例
将来自机器或过程的输入信号转换为合适的信号电平,并将信号处理功能的输出信号或数据转换为合适的电平信号,传送到执行器或显示器。通常,它包括输入/输出信号类型及输入/输出系统特性的确定等。
提供与其他系统,如其他PLC系统、机器人控制器、计算机等装置的通信,用于实现程序传输、数据文件传输、监视、诊断等。通常采用符合国际标准的硬件接口(如RS-232、RS-485)和通信协议等实现。
它为操作员提供与信号处理、机器或过程之间信息相互作用的平台,也称为人机接口功能。主要包括为操作员提供机器或过程运行所需的信息,允许操作员干预PLC系统及应用程序,如对参数调整和超限判别等。
它可作为PLC的整体,也可作为PLC的独立部分来实现。它为应用程序员提供应用程序生成、装载、监视、检测、调试、修改及应用程序文件编制和存档的操作平台。
1)应用程序写入,包括应用程序生成、应用程序显示等。应用程序的写入可采用字母、数字或符号键,也可应用菜单、下拉式菜单和鼠标、球标等光标定位装置。应用程序输入时应保证程序和数据的有效性和一致性。应用程序的显示是在应用程序写入时,将所有指令能逐句或逐段立即显示。通常,可打印完整的程序。不同编程语言的显示形式可能不同,用户可选择合适的显示形式。
2)系统自动启动,包括应用程序的装载、存储器访问、PLC系统的适应性、系统自动状态显示、应用程序的调试和应用程序的修改等。PLC系统的适应性是系统适应机械或过程的功能,包括对连接到系统的传感器和执行机构进行检查的测试功能、对程序序列运行进行检查的测试功能和常数置位和复位功能等。
3)文件,包括硬件配置及与设计有关的注释的描述、应用程序文件、维修手册等。应用程序文件应包括程序清单、信号和数据处理的助记符、所有数据处理用的交叉参考表、输入/输出(内部储存数据、定时器、计数器等内部功能)、注释、用户说明等。
4)应用程序存档,为提高维修速度和减少停机时间,应将应用程序存储在非易失性的存储介质中,并且应保证所存储的程序与原程序的一致性。
提供PLC系统所需电源,为设备同步起停提供控制信号,提供系统电源与主电源的隔离和转换等。可根据供电电压、功率消耗及不间断工作的要求等使用不同的电源供电。
标识符必须是由字母、数字和下划线字符组成,并被命名为语言元素。在标识符中字母的字体是没有意义的,例如,标识符abcd,ABCD和aBCd应具有相同的意义。在标识符中下划线是有意义的,例如,A_BCD和AB_CD应解释为不同的标识符。标识符不允许以多个下划线开头或多个内嵌的下划线,例如,字符序列_LIM_SW5 and LIM_SW5是无效的标识符。标识符也不允许以下划线结尾,例如,字符列LIM_SW5_是无效的标识符。标识符的性能和实例见表1-4。
表1-4 标识符的性能和实例
关键字是语言元素特征化的词法单位,是特定的标准标识符,它用于定义不同结构启动和终止的软件元素。如CONFIGURATION、END_CONFIGURATION表示配置段开始与结束。
分界符用于分隔程序语言元素的字符或字符组合。它是专用字符,不同的分界符具有不同的含义。比如“(∗”、“∗)”分别表示注释开始符号、注释结束符号。
IEC 61131-3的数据类型分为基本数据类型、一般数据类型和衍生数据类型三类。数据类型与它在数据存储器中所占用的数据宽度有关。定义数据类型可防止因对数据类型的不同设置而发生出错。数据类型的标准化是编程语言开放性的重要标志。
基本数据类型是在标准中预先定义的标准化数据类型。它有表1-5所列的约定关键字、数据元素位数、数据允许范围及约定的初始值。基本数据类型名可以是数据类型名、时间类型名、位串类型名、STRING、WSTRING和TIME。
表1-5 基本数据类型
(续)
基本数据类型的允许范围是这类数据允许的取值范围。约定初始值是在对该类数据进行声明时,如果没有赋初始值时取用的是由系统提供的约定初始值。
一般数据类型用前缀“ANY”标识,它采用分级结构,如图1-20所示。其中衍生数据类型也可以增加前缀变为一般数据类型。
图1-20 一般数据类型
衍生数据类型是用户在基本数据类型的基础上,建立的由用户定义的数据类型,因此也称为导出数据类型。这类数据类型所定义的变量是全局变量。它可用与基本数据类型所使用的相同方法对变量进行声明。衍生数据类型的特性与示例见表1-6。
表1-6 衍生数据类型的特性与示例
变量提供能够改变其内容的数据对象的识别方法。例如,可改变PLC输入和输出或存储器有关的数据。变量被声明为基本数据类型、一般数据类衍生数据类型。
直接变量用百分数符号“%”开始,随后是位置前缀符号和大小前缀符号,如果有分级,则用整数表示分级,并用小数点符号“.”分隔的无符号整数表示直接变量,如%IXQ.0、%QWO等。
直接变量类似传统PLC的操作数,它对应于某一可寻址的存储单元(如输入单元、输出单元等)。表1-7和表1-8分别表示直接变量中前缀符号的定义与特性、直接变量的示例。
表1-7 直接变量中前缀符号的定义与特性
(续)
表1-8 直接变量的示例
用符号表示的变量即符号变量,其地址对不同的PLC可以不同,这为程序的移植创造条件。
多元素变量包括衍生数据类型中数组数据类型的变量和结构数据类型的变量。
4.变量的类型与属性 (见表1-9、表1-10)
表1-9 变量的类型与属性
程序组织单元,即POU,包括声明和本体两部分,它是用户程序的最小软件单位,对应于传统PLC的程序块、组织块、顺序块和功能块等。程序组织单元按功能分为函数、功能模块和程序。
表1-10 变量的附加属性
IEC 61131-3标准定义了8类标准函数,它的作用类似于数学函数。例如,SIN函数用于输入变量的正弦值,SQRT函数用于计算输入变量的开方等。
在编程中,IEC 61131-3允许使用SFC(顺序功能图)、LD(梯形图)、FBD(功能块)、ST(结构化文本)、IL(指令表)等语言。
图1-21所示为结构文本(ST)语言和功能块(FBD)语言表示的一段表示数学运算的程序。
图1-21 程序案例
a)ST语言 b)FBD语言
IEC 61131-3的优势在于它成功地将现代软件的概念和现代软件工程的机制用于PLC传统的编程语言。具体表现为:
1)采用现代软件模块化原则。
★编程语言支持模块化,将常用的程序功能划分为若干单元,并加以封装,构成编程的基础。
★模块化时只设置必要的、尽可能少的输入和输出参数,尽量减少交互作用,尽量减少内部数据交换。
★模块化接口之间的交互作用,均采用显性定义。
★将信息隐藏于模块内,对使用者来讲只需了解该模块的外部特性(即功能,输入/输出参数),而无需了解模块内算法的具体实现方法。
2)IEC 61131-3支持自顶而下(top-down)和自底而上(bottom-up)程序开发方法。用户可先进行总体设计,将控制应用划分若干个部分,定义应用变量,然后编各个部分的程序(这就是自顶而下)。用户也可以先从底部开始编程,例如先导出函数和功能块,再进行按照控制要求编制程序(这就是自底而上)。无论选择何种开发方法,IEC 61131-3所创建的开发环境均会在整个编程过程中给予强有力的支持。
3)IEC 61131-3所规范的编程系统独立于任一个具体的目标系统,它可以最大限度地在不同的PLC目标系统中运行。这样就创造了一种具有良好开放性的氛围,奠定了PLC编程开放性的基础。
4)将现代软件概念浓缩,并加以运用,例如:
★数据使用DATA_TYPE说明机制。
★函数使用FUNCTION说明机制。
★数据和函数的组合使用FUNCTION_BLOCK说明机制。
在IEC 61131-3中,功能块并不只是FBD语言的编程机制,它还是面向对象组件的结构基础。一旦完成了某个功能块的编程,并通过调试和试用证明了它确能正确执行所规定的功能,那么就不允许用户再将它打开,改变其算法。即使是一个功能块因为其执行效率有必要再提高,或者是在一定的条件下其功能执行的正确性存在问题,需要重新编程,我们只要保持该功能块的外部接口(输入/输出定义)不变,仍可照常使用。同时,许多原创设备制造厂(OEM)将它们的专有控制技术压缩在用户自定义的功能块中,既可以保护知识产权,又可以反复使用,不必一再地为同一个目的而编写和调试程序。
5)标准要求严格的数据类型定义。这意味着,IEC 61131-3编程语言为减少程序开发人员对一个变量做出错误的数据类型定义创造了有效的限制。
在软件工程中,许多编程的错误往往发生在程序的不同部分其数据的表达和处理不同。IEC 61131-3从源头上避免了这类低级的错误,虽然采用的方法可能会导致效率降低一点,但换来的价值却是程序的可靠性、可读性和可维护性。IEC 61131-3采用以下方法防止这些错误:
★限制函数与功能块之间的互连范围:只允许兼容的数据类型与功能块之间互连。
★限制运算只可对其数据类型已明确定义的变量进行。
★禁止隐含的数据类型变换。比如,实型数不可执行按位运算。若要运算,编程者必须先通过显式变换函数REAL_TO_WORD,把实型数变换为WORD型位串变量。标准中规定了多种标准固定字长的数据类型,包括位串、带符号位和不带符号位的整数型(8位、16位、32位和64位字长)。
6)对程序执行具有完全的控制能力。传统的PLC只能按扫描方式顺序执行程序,对程序执行的多样性要求如由事件驱动某一段程序的执行,程序的并行处理等均无能为力。IEC61131-3允许程序的不同部分,在不同的条件(包括时间条件)下,以不同的比率并行执行。即允许对一个程序的不同部分规定不同的执行次数、不同的执行时间和并行执行的方式。这意味着,以“任务”控制的方式可让一个程序的不同部分以不同的扫描周期进行扫描。
7)提供灵活的编程语言选择。有三种图形化语言和两种文本化语言可在表达一个控制应用程序的不同部分时,让程序编制人员有很大的自由度去选用他认为合适的语言来设计。换句话说就是,程序的不同部分可用上述五种语言的任意一种来表达。
8)支持数据结构的定义。由于支持数据结构,所以相关的数据元素即便属于不同的数据类型,也可在程序不同的部分传送,就如它们是一个单一的实体。在不同程序组织单元(POU)之间传送复杂信息,如同传送单一变量一样。这不但改善了程序的可读性,而且保证了相关数据的存取准确无误。
9)完全支持顺序控制的各种描述,再复杂的顺序行为也可轻而易举地用顺序功能图(SFC)这样的图形化语言加以分解、描述及编程。顺序控制过程的每一步都可用步(steps)、动作(actions)和转移(transitions between steps)准确描述。
当然,IEC 61131-3沿用了直接表示与硬件有关的变量方法,这就妨碍了均符合标准的PLC系统之间做到真正意义上的程序可移植。由于不同机种有自己的输入、输出定义(这些均与硬件相关),如果想把一个在某个厂商的PLC中运行得很好的程序原封不动地搬到另一个PLC厂商的机器,必须先从技术文件中找到有关与硬件相关变量的定义,然后再在另一个机型中对此重新定义。至少可以这样说,不存在与硬件相关变量之间的变换。
习题1.1 PLC的定义是什么?为什么说PLC是一种数字的电子系统?
习题1.2 简述PLC的结构。
习题1.3 简述PLC的常用编程语言。
习题1.4 简述PLC的主要功能。
习题1.5 列举常见的小型、中大型PLC品牌及其特点。
习题1.6 PLC的功能有哪些?举例说明。
习题1.7 IEC 61131-3规定的软件模型是什么?以两种不同品牌的PLC来加以比较。
习题1.8 IEC 61131-3的变量定义有什么特点?
习题1.9 尝试下载一种符合IEC 61131-3的软件。