1、Beckhoff Image 2022-12-3 1自动化新技术IEC61131-3编程标准编程标准Beckhoff Image 2022-12-3 2IEC61131-3编程标准编程标准介绍及特点介绍及特点IEC(International Electrotechnical Commission)61131-3是是 IEC 61131国际标准的第三部分国际标准的第三部分,是第一个为工业自动化控制系统的软件设计提是第一个为工业自动化控制系统的软件设计提供标准化编程语言的国际标准。供标准化编程语言的国际标准。国际上承认的标准国际上承认的标准 逐步的在不远的将来所有供应商将采用它逐步的在不远的将来
2、所有供应商将采用它 统一的结构统一的结构,语言和操作处理方式将来自所有供应商语言和操作处理方式将来自所有供应商 它节省你的时间它节省你的时间 统一的软件模式和数据类型概念统一的软件模式和数据类型概念 对来自不同的对来自不同的PLC类型你只需学习一次类型你只需学习一次 减少了误解和错误减少了误解和错误 标准的函数和功能块标准的函数和功能块 测试软件的可重复使用性测试软件的可重复使用性Beckhoff Image 2022-12-3 3IEC61131-3编程标准编程标准介绍及特点介绍及特点 支持安全和高质量编程设计支持安全和高质量编程设计 轻松和舒适的结构轻松和舒适的结构 数据类型避免了编程错误
3、数据类型避免了编程错误 对每个问题提供了最佳编程语言对每个问题提供了最佳编程语言 一致的一致的 6 种编程语言规范种编程语言规范 文本和图形语言文本和图形语言 高级语言的可用性高级语言的可用性 不同语言混合编程不同语言混合编程 Beckhoff Image 2022-12-3 4IEC61131-3编程标准编程标准介绍及特点介绍及特点 软件软件-,通讯通讯-和和 编程编程-模式模式 6 种内部连接编程语言的定义种内部连接编程语言的定义 四四种文本和两种图形语言的语法和语句种文本和两种图形语言的语法和语句:指令表指令表(IL),结构化文本结构化文本(ST),梯形图梯形图(LD)和功能块图和功能块
4、图(FBD)顺序功能图顺序功能图(SFC)-为组建程序为组建程序结构结构 连续功能图(连续功能图(CFC)Beckhoff Image 2022-12-3 5IEC61131-3编程标准编程标准主要特性主要特性良好的结构良好的结构 从上至下或从底向上的编程从上至下或从底向上的编程 以程序组织单元为单位以程序组织单元为单位(POUs)Program Organization Unit 逐级构建程序逐级构建程序强大的数据类型测定强大的数据类型测定 编译器探测不同数据类型的分配编译器探测不同数据类型的分配 减少编程错误减少编程错误Beckhoff Image 2022-12-3 6IEC61131-
5、3编程标准编程标准主要特性主要特性全执行控制全执行控制不同的任务具有不同的执行循环时间及不同的任务优先级不同的任务具有不同的执行循环时间及不同的任务优先级复杂的流程控制复杂的流程控制 功能流程图功能流程图 具有步骤具有步骤,动作和转移的流序动作和转移的流序 可选分枝和同步分枝流程可选分枝和同步分枝流程Beckhoff Image 2022-12-3 7IEC61131-3编程标准编程标准主要特性主要特性数据结构数据结构灵活的语言选择灵活的语言选择 两种文本语言(两种文本语言(IL,ST)三种图形语言三种图形语言(FBD,LD,SFC)针对问题选择适当的语言针对问题选择适当的语言 用户定义数据元
6、素用户定义数据元素 包含不同的基本的或用户定义的数据元素包含不同的基本的或用户定义的数据元素 通过自己的通过自己的POU传递数据结构传递数据结构 独立于供应商独立于供应商 服从服从 IEC 61131-3标准标准 基本层鉴定基本层鉴定(PLCopen)输入输入/输出接口输出接口Beckhoff Image 2022-12-3 8IEC61131-3编程标准编程标准软件模型软件模型Beckhoff Image 2022-12-3 9IEC61131-3编程标准编程标准软件模型说明软件模型说明配置配置 Configuration 最高层,最高层,描述了整个控制系统的架构。描述了整个控制系统的架构。
7、一个配置可被比作一个可编程控制器系统。一个配置可被比作一个可编程控制器系统。在一个配置里可以定义一个或几个资源。在一个配置里可以定义一个或几个资源。在在TwinCAT 中中 一个或多个一个或多个PLC资源资源 Resources 一个配置有一个或多个资源一个配置有一个或多个资源 “实质实质”PLC:自己的全局变量自己的全局变量,POU,任务等任务等.在在 TwinCAT:就是一个就是一个 PLC 运行核运行核(Runtime)任务任务 Task 对一个相关程序的周期的执行对一个相关程序的周期的执行,实施控制单元实施控制单元 一个资源有一个或多个任务一个资源有一个或多个任务 有优先级时序排列(有
8、优先级时序排列(03,共四个级别),共四个级别)优先权和循环时间优先权和循环时间 任务调用一个或多个程序任务调用一个或多个程序 任务决定了所关联程序的时间调任务决定了所关联程序的时间调度。度。Beckhoff Image 2022-12-3 10IEC61131-3编程标准编程标准软件模型说明软件模型说明程序程序 Program程序,是根据控制器过程的需要,包含了函数和功能块的一个逻辑组合的程序,是根据控制器过程的需要,包含了函数和功能块的一个逻辑组合的POU。任务调用程序任务调用程序 程序调用功能块和函数程序调用功能块和函数TwinCAT:程序调用其它程序程序调用其它程序功能块功能块 FBD
9、 程序调用功能块程序调用功能块 功能块可调用功能块或函数功能块可调用功能块或函数 FB 有输入有输入,输出变量输出变量 FB 有运算法则有运算法则:每次每次FB被执行被执行,就是运行一段程序编码就是运行一段程序编码函数函数Function 程序或功能块可调用函数程序或功能块可调用函数 函数有输入变量函数有输入变量,和一个输出变量和一个输出变量 函数有运算法则函数有运算法则:每次函数被执行每次函数被执行,就是运行一段程序编码就是运行一段程序编码 函数可以调用另外的函数,但不能调用功能函数可以调用另外的函数,但不能调用功能块块Beckhoff Image 2022-12-3 11IEC61131-
10、3编程标准编程标准软件模型说明软件模型说明功能块功能块FB与函数的区别与函数的区别FB:例程例程,全部数据分配内存地址全部数据分配内存地址 函数函数:没有指定的内存分配地址没有指定的内存分配地址 FB:多个输出变量或没有输出变量多个输出变量或没有输出变量函数函数:一个输出变量一个输出变量FB:可调用功能块或函数:可调用功能块或函数函数函数:可调用函数,但不能调用功能块可调用函数,但不能调用功能块Beckhoff Image 2022-12-3 12IEC61131-3编程标准编程标准变量说明变量说明全局变量与局部变量全局变量与局部变量 局部变量局部变量 变量在一个变量在一个POU(程序程序,功
11、能块或函数功能块或函数)中定义说明中定义说明.只能在这个只能在这个POU中访问中访问全局变量全局变量 变量在一个资源变量在一个资源(PLC 运行核运行核-runtime)中定义说明中定义说明 每个每个POU都可访问都可访问Beckhoff Image 2022-12-3 13IEC61131-3编程标准编程标准变量说明变量说明直接描述的变量直接描述的变量 具有具有固定地址的变量固定地址的变量 地址:输入地址:输入(I),输出输出(Q),标记标记(M)类型:位类型:位(X),字节字节(B),字字(W),双字双字(D)例如例如:%IW12,%QX1.1,%MB5变量的定义变量的定义Beckhoff
12、 Image 2022-12-3 14IEC61131-3编程标准编程标准变量说明变量说明变量命名规则变量命名规则 字母不分大小写字母不分大小写(abc=Abc=ABC)第一个字符不能是数字第一个字符不能是数字 不能连续使用多于一个的下划线不能连续使用多于一个的下划线(_)允许的允许的:ab_c,AB_de,_AbC 不允许的不允许的:1abc,_abc,a_bc 头头 32 个字符有意义个字符有意义特殊字特殊字(如如 FUNCTION)被保留被保留语法术语关键字总是大写字母语法术语关键字总是大写字母 不能使用语法术语关键字作标识符不能使用语法术语关键字作标识符Beckhoff Image 2
13、022-12-3 15IEC61131-3编程标准编程标准变量说明变量说明注释注释 注释语用注释语用(*和和*)框住框住 可将注释语放在任何地方可将注释语放在任何地方,但不能插在语句中但不能插在语句中 注释语允许几行表示注释语允许几行表示 注释语不允许嵌套注释语不允许嵌套Beckhoff Image 2022-12-3 16IEC61131-3编程标准编程标准数据类型数据类型基本数据类型基本数据类型 数据类型有数据类型有布尔值,布尔值,整数整数,浮点数浮点数,位和位组位和位组,时间和日期值和字符串时间和日期值和字符串BOOL值值 布尔值变量取值布尔值变量取值TRUE或或FALSE,占用,占用8
14、位内存空间位内存空间浮点数据类型浮点数据类型REAL 和和 LREAL 被称为浮点数类型。用于有理数表示。被称为浮点数类型。用于有理数表示。REAL 占用占用32位内存空间,位内存空间,LREAL 占用占用64位。位。数值可以用二进制、八进制、十进制和十六进制数表示。示例:数值可以用二进制、八进制、十进制和十六进制数表示。示例:14(十进制数十进制数)2#1001_0011(二进制数二进制数)8#67(八进制数八进制数)16#A(十六进制数十六进制数)基本数据类型基本数据类型Beckhoff Image 2022-12-3 17IEC61131-3编程标准编程标准数据类型数据类型整形数据类型整
15、形数据类型当用大类型转换为小类型时,将导致丢失信息。当用大类型转换为小类型时,将导致丢失信息。Beckhoff Image 2022-12-3 18IEC61131-3编程标准编程标准数据类型数据类型时间数据类型时间数据类型占用占用32位内存位内存 允许溢出允许溢出(例如例如 25 小时小时)使用使用d 表示天表示天,h 表示小时表示小时,m 表示分表示分,s 表示秒和表示秒和 ms 表示毫秒表示毫秒 在文字前加在文字前加 TIME#,t#或或 T#可使用下划线可使用下划线(_)作单元分隔作单元分隔 T#2d_26h_4m_12s_123ms日期和时间类型日期和时间类型DATE 日期日期32
16、用用 TIME_OF_DAY#或或 TOD#表示一天中的时间表示一天中的时间 用用 DATE_AND_TIME#或或 DT#表示日期和时间表示日期和时间 用用 DATE#或或 D#表示日期表示日期 日期日期:D#1998-12-07表示表示 7th July 1998 一天中的时间一天中的时间:TOD#12:00:00.123日期和时间日期和时间:DT#1998-12-07-12:00:00.123Beckhoff Image 2022-12-3 19IEC61131-3编程标准编程标准数据类型数据类型字符串数据类型字符串数据类型STRING 字符串字符串 取决于字符长度(取决于字符长度(N+
17、1)Byte如果大小不声明的话缺省值为如果大小不声明的话缺省值为80个字符个字符用用 引括字符引括字符 用用$插到特殊字符前插到特殊字符前(换行换行$L,制表制表$T等等)字符串表示字符串表示:this is a line feed character$L空字符串空字符串:Beckhoff Image 2022-12-3 20IEC61131-3编程标准编程标准数据类型数据类型数据类型转换数据类型转换Beckhoff Image 2022-12-3 21IEC61131-3编程标准编程标准用户自定义数据类型用户自定义数据类型数组数组 数组例子:数组例子:test AT%I*:ARRAY1.10
18、 OF BOOL;支持一维、二维和三维数组的成员数据类型。数组可在支持一维、二维和三维数组的成员数据类型。数组可在POU的声明部分和全局变量的声明部分和全局变量表中定义。表中定义。数组初始化示例:数组初始化示例:arr1:ARRAY 1.5 OF INT:=1,2,3,4,5;arr2:ARRAY 1.2,3.4 OF INT:=1,3(7);(*等同等同 1,7,7,7*)arr3:ARRAY 1.2,2.3,3.4 OF INT:=2(0),4(4),2,3;(*等同等同0,0,4,4,4,4,2,3*)指针指针当程序运行时,变量或功能块地址保存在指针中。指针声明为如下句法形式:当程序运行
19、时,变量或功能块地址保存在指针中。指针声明为如下句法形式::POINTER TO;指针可指向任何数据类型、功能块和用户定义的数据类型。对地址操作的指针可指向任何数据类型、功能块和用户定义的数据类型。对地址操作的 ADR 功能,功能,可将变量或功能块的地址指向指针。可将变量或功能块的地址指向指针。指针后加内容操作符指针后加内容操作符”可取出指针中的数据。可取出指针中的数据。Beckhoff Image 2022-12-3 22IEC61131-3编程标准编程标准用户自定义数据类型用户自定义数据类型枚举枚举句法:句法:TYPE:(,.,);END_TYPE 牧举变量可以取牧举值中的任何一个值。缺省
20、情况下,第一个牧举值为零,其后依次递增。牧举变量可以取牧举值中的任何一个值。缺省情况下,第一个牧举值为零,其后依次递增。结构结构结构声明的句法如下:结构声明的句法如下:TYPE:STRUCT .END_STRUCT END_TYPEBeckhoff Image 2022-12-3 23IEC61131-3编程标准编程标准用户自定义数据类型用户自定义数据类型参考参考可以使用用户定义的参考数据类型,创建已经更名的变量、常数或功能块。可以使用用户定义的参考数据类型,创建已经更名的变量、常数或功能块。句法:句法:TYPE:;END_TYPE示例:示例:TYPE message:STRING50;END
21、_TYPE;Beckhoff Image 2022-12-3 24IEC61131-3编程标准编程标准编程语言编程语言编程语言编程语言 6 种内部编程语言种内部编程语言 四四种文本和两种图形语言的语法和语句种文本和两种图形语言的语法和语句:指令表指令表(IL),结构化文本结构化文本(ST),梯形图梯形图(LD)和功能块图和功能块图(FBD)顺序功能图顺序功能图(SFC)-为组建程序为组建程序结构结构 连续功能图(连续功能图(CFC)Beckhoff Image 2022-12-3 25IEC61131-3编程标准编程标准编程语言编程语言IL指令表指令表 低级语言(类似汇编程序)低级语言(类似汇
22、编程序)面向累加器的面向累加器的 每行只允许一个操纵每行只允许一个操纵,如存储一个值到累加寄存器如存储一个值到累加寄存器 用跳转和标号控制流程用跳转和标号控制流程指令表指令表(IL)由一系列指令组成。每条指令都由一个新行开始,包含一个操作符由一系列指令组成。每条指令都由一个新行开始,包含一个操作符以及和操作符类型相关的一个或多个操作数,并用逗号分开。在指令前可以有以及和操作符类型相关的一个或多个操作数,并用逗号分开。在指令前可以有标号,后接一个冒号。标号,后接一个冒号。注解必须在一行的最后,指令之间可以插入空行。注解必须在一行的最后,指令之间可以插入空行。Beckhoff Image 2022
23、-12-3 26IEC61131-3编程标准编程标准编程语言编程语言IL指令表指令列表指令表指令列表Beckhoff Image 2022-12-3 27IEC61131-3编程标准编程标准编程语言编程语言IL指令表修饰符指令表修饰符Beckhoff Image 2022-12-3 28IEC61131-3编程标准编程标准编程语言编程语言结构化文本结构化文本ST语言语言ST 语言的优点语言的优点(与与 IL 语言相比较语言相比较):高级语言高级语言(类似类似 PASCAL)复杂公式复杂公式(赋值命令赋值命令)具有条件和反复陈述的流控具有条件和反复陈述的流控 用制表符和注释使得编码易读用制表符和
24、注释使得编码易读ST语言缺点:语言缺点:由于它借助于编译程序自动地执行程序,因此用户不能直接影响其翻译成机器码。由于它借助于编译程序自动地执行程序,因此用户不能直接影响其翻译成机器码。高度抽象导致效率降低高度抽象导致效率降低(通常,编译程序的时间更长且执行速度更慢通常,编译程序的时间更长且执行速度更慢)ST 语言不包括跳转指令语言不包括跳转指令(GOTO)Beckhoff Image 2022-12-3 29IEC61131-3编程标准编程标准编程语言编程语言ST语言命令表语言命令表Beckhoff Image 2022-12-3 30IEC61131-3编程标准编程标准编程语言编程语言ST语
25、言命令表语言命令表Beckhoff Image 2022-12-3 31IEC61131-3编程标准编程标准编程语言编程语言功能块功能块FBD 图形表示图形表示 FB,函数和程序以及它们的相互关联图函数和程序以及它们的相互关联图 全图形式全图形式 块图块图“线连线连“在一起在一起 允许跳转和返回允许跳转和返回Beckhoff Image 2022-12-3 32IEC61131-3编程标准编程标准编程语言编程语言梯形图梯形图LD 继电器梯形图继电器梯形图,利于复杂的利于复杂的 AND 和和 OR 逻辑网图逻辑网图 左端垂直电源线连带触点和线圈左端垂直电源线连带触点和线圈 触点表示布尔变量触点表
26、示布尔变量主要是设计用于处理布尔信号主要是设计用于处理布尔信号 允许跳转返回允许跳转返回Beckhoff Image 2022-12-3 33IEC61131-3编程标准编程标准编程语言编程语言梯形图梯形图LDBeckhoff Image 2022-12-3 34IEC61131-3编程标准编程标准编程语言编程语言顺序功能图顺序功能图SFC 描述复杂的序列的语言描述复杂的序列的语言 具有具有 动作动作 和和 转移转移 的状态系统的状态系统 通过划分成小部分来编复杂的部分通过划分成小部分来编复杂的部分 每个单元每个单元(动作动作-action,转移转移-transition)可以用任何可以用任何
27、 IEC 语言编程语言编程Beckhoff Image 2022-12-3 35IEC61131-3编程标准编程标准编程语言编程语言SFC介绍介绍 步骤步骤 表示流程的一个状态表示流程的一个状态 特殊步骤特殊步骤:初始化步骤初始化步骤 转移转移 条件条件,当为当为 TRUE 时时,下一步骤激活下一步骤激活选择性选择性:分枝和合并分枝和合并 在所有选择性路径的转移指定是否这个路径被选择在所有选择性路径的转移指定是否这个路径被选择 转移在选择性路径的末端转移在选择性路径的末端 从左到右优先从左到右优先同步性同步性:分枝和合并分枝和合并 在所有同步路径上的所有步骤同时起动在所有同步路径上的所有步骤同时起动 在末端有一个转移在末端有一个转移 Beckhoff Image 2022-12-3 36IEC61131-3编程标准编程标准编程语言编程语言SFC图形介绍图形介绍初始化步骤初始化步骤普通步骤普通步骤转移转移选择性分枝选择性分枝选择性合并选择性合并同步性分枝同步性分枝同步性合并同步性合并跳转跳转动作动作Beckhoff Image 2022-12-3 37IEC61131-3编程标准编程标准编程语言编程语言Standard.lib