云计算百科
云计算领域专业知识百科平台

CoDeSys入门实战一起学习(十九):PLC编程公用元素(二):关键字与常数,程序的“核心词汇与固定值”

如果说字符集和分界符是PLC编程的“基础语法”,那关键字和常数就是编程的“核心词汇”——关键字定义程序结构,常数是程序中不可修改的固定值,二者均为IEC61131-3标准的核心元素,也是CoDeSys等编程软件的通用规范。本文详解关键字的分类与使用禁忌,以及8类常用常数的书写规则。

一、关键字:PLC程序的“保留字”,不可挪用的结构定义词

关键字是特征化词法单元,用于定义程序结构、启动/终止软件元素,是编译器识别程序逻辑的关键,核心规则与分类如下:

  • 核心使用禁忌:不可作为变量名、扩展名(如TON、VAR不可用于命名);无空格,为连续字符。
  • 核心分类(CoDeSys常用)
  • 关键字

    说明

    关键字

    说明

    PROGRAM

    END_PROGRAM

    程序段开始程序结束

    EN ,ENO

    使能输入/输出

    FUNCTION

    END_FUNCTION

    函数段开始

    函数段结束

    TRUE

    FALSE

    逻辑真

    逻辑假

    FUNCTION_BLOCK

    END_FUNCTION_

    BLOCK

    功能块段开始

    功能块段结束

    TYPE

    END_TYPE

    数据类型段开始,

    数据类型段结束

    VAR

    END_VAR

    内部变量段开始变量段结束

    STRUCT

    END_STRUCT

    结构体开始,

    结构体结束

    VAR_ INPUT

    END_VAR

    输入变量段开始变量段结束

    IF THEN EISIF

    ELSE END_IF

    IF 语句

    VAR_OUTPUT

    END_VAR

    输出变量段开始变量段结束

    CASE OF  ELSE

    END_CASE

    CASE 语句

    VAR_ IN_OUT

    END_VAR

    输入输出变量段开始变量段结束

    FOR TO BY DO

    END_FOR

    FOR 循环语句

    VAR_GLOBAL

    END_VAR

    全局变量段开始变量段结束

    REPEAT UNTIL

    END_REPEAT

    REPEAT 循环语句

    CONSTANT

    常数变量

    WHILE DO

    END_WHILE

    WHILE 循环语句

    ARRAY OF

    数组

    RETURN

    跳转返回符

    AT

    直接地址

    NOT,AND,OR,XOR

    逻辑操作符

    • 程序结构关键字(配对使用):PROGRAM/END_PROGRAM、FUNCTION/END_FUNCTION、FUNCTION_BLOCK/END_FUNCTION_BLOCK(定义程序/函数/功能块范围)。
    • 变量声明关键字(配对使用):VAR/END_VAR(内部)、VAR_INPUT/END_VAR(输入)、VAR_OUTPUT/END_VAR(输出)、VAR_IN_OUT/END_VAR(输入输出)、VAR_GLOBAL/END_VAR(全局)。
    • 数据类型关键字(配对使用):TYPE/END_TYPE、STRUCT/END_STRUCT、ARRAY OF(数组)。
    • 逻辑控制关键字(配对/单独):IF/THEN/ELSE/END_IF、CASE/OF/END_CASE、FOR/TO/DO/END_FOR(循环判断);TRUE/FALSE(逻辑值)、EN/ENO(使能输入输出)。
    • 操作/跳转关键字:NOT/AND/OR/XOR(逻辑运算)、RETURN(跳转返回)、AT(直接地址)。

        3.扩展保留关键字:标准数据类型(BOOL、INT、REAL等)、标准函数/功能块名(SIN、TON、RS等)、指令表操作符(LD、ADD、GT等)均为保留关键字。

    二、常数:程序中不可修改的固定值,按类型遵循专属书写规则

    常数又称数值文字,分为基础数值常数和特殊类型常数,书写格式为<类型>#<数值>(类型可省略,默认最小数据类型),核心要求:数值必须匹配指定数据类型,否则编译器报错。以下为8类高频常数的详细规范:

    数值文字类型

    表示方法

    示例

    整数文字

    [整数类型名#]符号整数或二(八、十、十六)进制整数

    INT#-34,U INT#32

    二进制整数

    2#0010_0010(34)

    八进制整数

    8#77(63)

    十六进制整数

    16#E5(229)

    实数

    [实数类型名#]符号整数.整数[指数]

    REAL#4.94,6.3e-7

    符号整数.整数

    3.141592

    布尔数

    [布尔类型名#]0  1,False  True

    0,1,True,BOOL#1

  • 数值常数:支持二进制(2#)、十进制(直接写)、十六进制(16#),可加下划线排版(如2#1010_0011);支持整数(INT#-34)和无符号整数(UINT#32)。
  • BOOL常数:逻辑值,仅TRUE/1(真)、FALSE/0(假),二者等价。
  • TIME常数:格式T#<时间>(T/t可替换为TIME/time),时间单位按d→h→m→s→ms排序(可省略),如:

    TIME1 := T#14ms;

    TIME2:= T#100S12ms;(*最高单位的值可以超出其限制*)

    TIME3 := t#12h34m15s;

  • DATE常数:格式D#<年-月-日>(D/d可替换为DATE/date),如D#1980-02-29,DATE#1996-05-06 。
  • TIME_OF_DAY(TOD)常数:格式TOD#<时:分:秒>(秒可为小数),如TOD#05:30:35.28,用于表示一天内的具体时间。
  • DATE_AND_TIME(DT)常数:日期+时间组合,格式DT#<年-月-日-时:分:秒>,如DT#2025-01-01-08:00:00。
  • REAL/LREAL常数:浮点数,支持十进制小数(3.14)和指数形式(6.3e-7),采用美国格式(小数点分隔,无千分位)。
  • STRING常数:格式'<字符内容>',支持空格/特殊字符;$为特殊字符前缀。
  • 两位十六进制数`表示ASCII码。
  • 类型符,对 IEC 常数,有可能使用最小的数据类型。如必需使用另一种数据类型。则可借助于类型符而不需要显示地声明常数。为此,常数可使用一个前缀表示,该前缀决定了其类型。

    <Type> :指定所要求的数据类型有 BOOL SINT USINT BYTE INT UINT WORD DINT  UDINT DWORD REAL  LREAL

    <Literal>:指定常数。输入的数据必须与<Type>下指定的数据类型相匹配。

    如果常数不能保证在不丢失数据的情况下转换为目标类型,系统将发出一个出错信息。类型符可用于一般常数。

  • 三、实用技巧:类型符的灵活使用

    可通过类型符前缀指定常数数据类型(如REAL#4.94、BYTE#255),无需显式声明;若常数无法无损转换为目标类型,系统将触发错误提示,有效避免数据丢失。

    文末小结

    关键字的核心是**“不挪用、记配对”,常数的核心是“记格式、匹配类型”。新手可先掌握高频关键字(如VAR、TON、IF)和常用常数(TIME、BOOL、数值),后续随编程经验逐步拓展。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » CoDeSys入门实战一起学习(十九):PLC编程公用元素(二):关键字与常数,程序的“核心词汇与固定值”
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!