无心飞扬 发表于 2026-3-18 10:32:49

CoDeSys入门实战一起学习(十九):PLC编程公用元素(一)字符集与分界符,编程的“基础语法规则”

PLC程序的编写和自然语言写作一样,有专属的“字母表”和“标点符号”——也就是字符集与分界符。它们是构成PLC程序的最底层元素,决定了代码能否被编译器正确识别,也是新手入门必须掌握的基础规则。本文基于GB/T15969.3-2005国家标准,结合CoDeSys实操,详解PLC编程的字符集规范和分界符的使用场景。
一、PLC编程的字符集规范
序号
选择1
选择2
1
数符号 #
英镑符号£
2
美元符号$
货币符号¥
3
垂直线|
惊叹号!

[*]核心标准依据:文本元素遵循GB1988字符集3~7列,汉字遵循GB2312-1980;字母大小写无差异(如Control=CONTROL)。
[*]特殊字符二选一规则:制造商按规范选择字符,核心替换规则为:数符号#/英镑£、美元$ /人民币¥、垂直线|/惊叹号!,且特殊符号占据国标字符集指定位置。
[*]扩展应用:汉字字符集为国标扩展应用,是国内PLC编程的常用补充。
二、分界符:PLC程序的“标点符号”,分隔且定义元素关系
分界符是专用字符/字符组合,不可在关键字、标识符中插入,核心分类及高频用法如下:

[*]基础格式分界符:空格、TAB(仅用于排版,不影响程序执行);;(语句/类型分隔符,区分独立程序段)。
[*]运算/前缀分界符:+/-(正负前缀+加减运算)、#(基底数/时间/数据类型分隔符,如2#1101、T#200ms)、.(小数/分级寻址/结构元素分隔符,如%IX0.3、TON1.Q)。
[*]赋值/链接分界符::=(初始化+赋值,如Var1:=3)、=>(输出连接,如C10(Q=>Out))、:(变量类型/时刻分隔符,如Test:INT)。
[*]结构/寻址分界符:()(函数参数/子表达式/功能块输入,如TON_1(IN:=%IX5.1))、[](数组下标,如CH)、.(结构元素,如Channel.type)、%(直接地址前缀,如%IW0)。
[*]集合/范围分界符:,(枚举/参数/初始值分隔)、..(子范围,如ARRAY(1..2)、CASE(1..5))。
[*]字符串/指数分界符:' '(字符串首尾,如'Hello')、$(字符串特殊字符,如$L换行)、E/e(指数,如1.0e+6)。
分界符
应用场合
备注和示例
空格
可以在PLC程序中任何位置插入空格
不允许在关键字、文字、标识符和枚举值中直接插入空格。
TAB
可以在PLC程序中任何位置插入TAB
不允许在关键字、文字、标识符和枚举值中直接插入TAB。
(*
注释开始
用户自定义注释,可以在程序允许空格的任何位置输入注
*)
注释结束
释,且CoDeSys可以通过设置允许注释嵌套。

分界符
应用场合
备注和示例
+
十进制数的前缀符号(正数)
+456;+1.23
加操作符
23+11
-
十进制数的前缀符号(负数)
-789
年-月-日的分隔符
D#1980-02-29
减操作符
19-11
#
基底数的分隔符
2#1101;16#FF
数据类型分隔符
SINT#123
时间文字的分隔符
T#200ms;TOD#05:30:35:28;t#14m_12s
.
正数和小数的分隔符
3.14;2.18
分级寻址地址符
%IX0.3
结构元素分隔符
Channel.type;abc.number
功能块结构分隔符
TON1.Q;SR_3.S1
E/e
指数分界符
1.0e+6;3.14E6
'
字符串开始/结束符
'Hello World!!'
$
串中特殊字符的开始
'$L'表示换行;'$R'表示回车
:
时刻文字分隔符
TOD#12:41:21.11
变量/类型分隔符
Test:INT
:=
初始化操作符
Var1:INT:=3
输入变量链接操作符
INT_2(SINGLE:=z2,PRIORITY:=1)
赋值操作符
Var2:=45
()
枚举表分界符
V:(B1_10V,UP_10V,IP_15V):= UP_10V
子范围分界符
DATA:INT(-32768..32767)
初始化重复因子
ARRAY(1..2,1..3) OFINT:=1,2,3(4),6
指令表修正符
(A>B)
函数自变量
Var2*LIMIT(Var1)
子表达式分级
(A*(B-C)+D)
功能块输入表分界符
TON_1(IN:=%IX5.1,PT:=T#500ms);
[]
数组下标分界符
MOD_5_CFG.CH.Range:=BI_10V;
,
枚举表分隔符
V:(BI_10V,Up_10V):=Up_1_5V;
初始值分隔符
ARRAY(1..2,1..3) OFINT:=1,2,3(4),6;
数组小标分隔符
ARRAY(1..2,1..3) OFINT:=1,2,3(4),6;
被声明变量的分隔符
VAR_INPUT A,B,C:REAL; END_VAR
功能块初始值分隔符
TON_1(IN:=%IX5.1,PT:=T#500ms);
功能块输入表分隔符
SR_1(S1:=%IX1.1,RESET:=%IX2.2);
操作数表分隔符
ARRAY(1..2,1..3) OFINT:=1,2,3(4),6;
函数自变量表分隔符
LIMIT(MN:=4,IN:=%IW0,MX:=20);
Case至表分隔符
CASE STEP OF1,5:DISPLAY:=FALSE;
;
类型分隔符
TYPE R:REAL;END_TYPE
语句分隔符
QU:=5*(A+B);QD:=4*(A-B);
..
子范围分隔符
ARRAY(1..2,1..3);
Case范围分隔符
CASE STEP OF(1..5):DISPLAY:=FALSE;
%
直接表示变量的前缀
%IW0
=>
输出连接操作符
C10(CU:=bInput,Q=>Out);
例如:


用于表示时间、时刻等时间文字的操作符号为时间文字分界符,如T#、D、H、M、S、MS、DATE#、 D#、TIME_OF_DAY#、TOD#、DATE_AND_TIME#、DT#。


文末小结
字符集是PLC编程的“可用字符清单”,分界符是“语法规则”,二者共同保证程序的语法合法性。新手核心掌握:特殊字符选择规则+高频分界符的固定用法,避免因符号使用错误导致程序编译失败。
页: [1]
查看完整版本: CoDeSys入门实战一起学习(十九):PLC编程公用元素(一)字符集与分界符,编程的“基础语法规则”