1. 为什么字符集与分界符是PLC编程的"基础语法规则"
在CoDeSys环境下进行PLC编程时,字符集与分界符就像建筑工地上的砖块和水泥——它们看起来不起眼,但决定了整个程序结构的牢固程度。我刚开始接触PLC编程时,曾经因为一个中文字符的分号(;)和英文分号(;)的混用,导致整个项目编译报错却找不到原因,花了整整两天时间排查。
字符集决定了PLC编程环境中允许使用的文字符号范围。在CoDeSys中,默认采用UTF-8编码,这意味着:
- 支持英文大小写字母(A-Z, a-z)
- 数字(0-9)
- 基础符号(如+ - * /等)
- 以及部分特殊字符
但实际项目中,很多工程师会忽略一个关键点:虽然CoDeSys支持UTF-8,但在不同品牌的PLC硬件上运行时,字符集支持可能存在差异。比如某些日系PLC对双字节字符(如中文)的支持就有限制。
分界符则是PLC程序中的"标点符号",它们定义了程序语句的开始、结束和分隔。在CoDeSys中,最常用的分界符包括:
- 分号(;):语句结束符
- 逗号(,):参数分隔符
- 括号(()、[]、{}):代码块或参数列表界定
- 双引号(""):字符串界定
重要提示:CoDeSys对分界符的格式检查非常严格,必须使用英文半角符号。全角符号或中文字符集中的对应符号会导致编译错误,而这种错误往往难以直观发现。
2. CoDeSys字符集的实战细节与常见问题
2.1 默认字符集与编码选择
CoDeSys V3.5之后的版本默认使用UTF-8编码,这为多语言编程提供了便利。但在实际项目中,我们需要特别注意:
-
文件保存编码:当在外部编辑器(如VS Code)中编写ST语言代码时,必须确保文件以UTF-8无BOM格式保存。我曾遇到一个案例,由于BOM头导致CoDeSys无法正确识别程序开头,编译时报错"非法字符"。
-
硬件兼容性:虽然开发环境支持UTF-8,但下载到PLC运行时,部分老型号设备可能只支持ASCII。解决方案是:
- 在项目属性中设置"强制使用ASCII字符"
- 避免在注释和字符串中使用非ASCII字符
- 使用转义序列表示特殊字符
-
字符串处理差异:
st复制// 正确示例
sString := '温度: '+INT
