无心飞扬 发表于 2026-3-18 11:07:10

CoDeSys入门实战一起学习(二十):布尔、整型、实数、字符串、时间5大类标准数据类型详解(附实战案例)

写CoDeSys程序的第一步,必然是声明变量/常量,而所有声明都离不开数据类型。CoDeSys的标准数据类型完全遵循IEC61131-3标准,共分为布尔、整型、实数、字符串、时间5大类,是所有PLC程序的“基础积木”。
很多新手容易踩坑:比如把整型赋值给布尔型导致编译报错、字符串未指定长度浪费内存、时间类型格式写错无法运行……这篇文章就把5大类标准数据类型的关键字、位数、取值范围、核心用法和避坑点讲透,搭配实战案例,看完就能直接用。
一、布尔类型(BOOL):PLC程序的“开关”
布尔类型是PLC中使用频率最高的类型,仅表示两种状态:TRUE(1)或FALSE(0),对应现场的“开关量”——比如传感器信号、阀门状态、电机启停信号。

[*]核心参数:占用8位内存(注意:不是1位),仅最低位有效;
[*]赋值规则:只能赋TRUE/FALSE或0/1,赋值整型会报C0032转换错误;
[*]避坑重点:


[*]若内存最低位置1(如2#00000001)为TRUE,置0为FALSE,其他值会显示INVALID;


[*]布尔数组不节省内存:A:ARRAY OF BOOL会占用8个8位字节,而非1个字节。
实战案例:与逻辑结果赋值


二、整型:无小数点数值的“全家桶”,记规律不用死记硬背
整型是CoDeSys标准类型中成员最多的类别,用于表示无小数点的整数,核心分有符号和无符号,前缀有固定规律,记住再也不用翻手册:

[*]U:Unsigned,无符号(全部位存数据,无符号位);


[*]S:Short,短整型(8位);


[*]D:Double,双整型(32位);


[*]L:Long,长整型(64位)。
核心整型分类(常用)
类型
关键字
位数
取值范围
适用场景
无符号字节
BYTE
8
0~255
单字节数据、寄存器状态
有符号整型
INT
16
-32768~32767
常规整数运算、小范围计数
无符号双整型
UDINT
32
0~4294967295
大范围无符号计数、地址存储
长整型
LINT
64
-2^63~2^63-1
超大范围数据运算
有符号vs无符号核心区别

[*]无符号:所有位存储数据,正数范围更大(如UINT:0~65535);


[*]有符号:最高位为符号位(0正1负),正数范围缩小一倍(如INT:-32768~32767)。
实战案例:整型运算


三、实数(REAL/LREAL):处理小数的“专用工具”,指数形式超实用
实数也叫浮点数,用于表示带小数点的数值,比如温度、压力、流量等模拟量,CoDeSys支持两种:

[*]REAL:32位,取值范围1.175494351e-38~3.402823466e+38,满足常规模拟量运算;

[*]LREAL:64位,高精度,取值范围更大,需确认目标PLC支持(部分设备会转换为REAL导致精度丢失)。
两种赋值形式

[*]十进制小数:rTemp:=25.6;(直接赋值,直观);


[*]指数形式:rTemp:=2.56e1;(等价于25.6,适合超大/超小数值);
✅ 规范写法:e前有数字,e后为整数(如123e3);❌ 错误写法:e3、2.1e3.5。
四、字符串(STRING):字符处理的关键,按需定义节省内存
字符串用于存储字符序列(如设备名称、故障信息),关键字STRING,核心特点是可指定长度,这是节省PLC内存的关键!

[*]存储规则:实际占用内存 = 定义长度+1 个字节(额外1字节存结束符);

[*]默认规则:未指定长度时,系统默认分配80个字符,占用81字节;

[*]截断规则:赋值字符串长度超过定义值,从右至左自动截断。
避坑与优化技巧

[*]若程序中有大量短字符串(如设备编号、状态描述),务必指定长度,避免内存浪费;


[*]字符串常量必须用单引号包裹,如'Hello CoDeSys'。
实战案例1:默认长度字符串(浪费内存)


实战案例2:指定长度字符串(优化内存)


五、时间数据类型:PLC的“时钟”,4种类型适配不同场景
时间类型用于处理时间、时刻、日期,内部以双字(DWORD)存储,共4种,格式有严格要求,写错直接编译报错,核心参数如下:
类型
关键字
精度
取值范围
格式示例
时间
TIME
毫秒
0~71582m47s295ms
T#3d19h27m41s1ms
时刻
TIME_OF_DAY/TOD
毫秒
0:0:0~1193:02:47.295
TOD#21:32:23.123
日期
DATE

1970-01-01~2106-02-06
D#2024-01-27
日期时间
DATE_AND_TIME/DT

1970-01-01~2106-02-06 06:28:15
DT#2024-01-27-16:22:31
核心用法与避坑

[*]时间(TIME):必须以T#/t#开头,单位按d→h→m→s→ms排序,可自动溢出校正(如T#3d29h→T#4d5h);
❌ 错误:15ms(缺T#)、t#4ms13d(顺序错);

[*]时刻(TOD):按时:分:秒.毫秒格式,如TOD#10:05:00.500;

[*]日期(DATE):按年-月-日格式,如D#2024-12-31;

[*]日期时间(DT):按年-月-日-时:分:秒格式,毫秒可省略。
实战案例:时间类型赋值


总结
标准数据类型是CoDeSys程序的“地基”,核心原则是**“按需选择”**:

[*]开关量用BOOL,整数运算用整型(优先选匹配取值范围的类型,节省内存);


[*]模拟量用REAL/LREAL,字符处理用STRING(务必指定长度);


[*]时间/日期用专用时间类型,严格遵循格式要求。
下一篇我们将讲解CoDeSys的标准扩展数据类型——联合体、长时间、宽字符串、引用、指针,这些高级类型能解决更复杂的编程问题,比如字节整合、高精度计时、间接访问内存等,敬请期待!
页: [1]
查看完整版本: CoDeSys入门实战一起学习(二十):布尔、整型、实数、字符串、时间5大类标准数据类型详解(附实战案例)