news 2026/4/15 9:36:57

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

作者头像

张小明

前端开发工程师

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

写CoDeSys程序的第一步,必然是声明变量/常量,而所有声明都离不开数据类型。CoDeSys的标准数据类型完全遵循IEC61131-3标准,共分为布尔、整型、实数、字符串、时间5大类,是所有PLC程序的“基础积木”。

很多新手容易踩坑:比如把整型赋值给布尔型导致编译报错、字符串未指定长度浪费内存、时间类型格式写错无法运行……这篇文章就把5大类标准数据类型的关键字、位数、取值范围、核心用法和避坑点讲透,搭配实战案例,看完就能直接用。

一、布尔类型(BOOL):PLC程序的“开关”

布尔类型是PLC中使用频率最高的类型,仅表示两种状态:TRUE(1)或FALSE(0),对应现场的“开关量”——比如传感器信号、阀门状态、电机启停信号。

  1. 核心参数:占用8位内存(注意:不是1位),仅最低位有效;
  2. 赋值规则:只能赋TRUE/FALSE或0/1,赋值整型会报C0032转换错误;
  3. 避坑重点:
  • 若内存最低位置1(如2#00000001)为TRUE,置0为FALSE,其他值会显示INVALID
  • 布尔数组不节省内存A:ARRAY[0..7] 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支持两种:

  1. REAL:32位,取值范围1.175494351e-38~3.402823466e+38,满足常规模拟量运算;
  1. LREAL:64位,高精度,取值范围更大,需确认目标PLC支持(部分设备会转换为REAL导致精度丢失)。

两种赋值形式

  • 十进制小数:rTemp:=25.6;(直接赋值,直观);
  • 指数形式:rTemp:=2.56e1;(等价于25.6,适合超大/超小数值);

✅ 规范写法:e前有数字,e后为整数(如123e3);❌ 错误写法:e3、2.1e3.5。

四、字符串(STRING):字符处理的关键,按需定义节省内存

字符串用于存储字符序列(如设备名称、故障信息),关键字STRING,核心特点是可指定长度,这是节省PLC内存的关键!

  1. 存储规则:实际占用内存 =定义长度+1个字节(额外1字节存结束符);
  1. 默认规则:未指定长度时,系统默认分配80个字符,占用81字节;
  1. 截断规则:赋值字符串长度超过定义值,从右至左自动截断

避坑与优化技巧

  • 若程序中有大量短字符串(如设备编号、状态描述),务必指定长度,避免内存浪费;
  • 字符串常量必须用单引号包裹,如'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

核心用法与避坑

  1. 时间(TIME):必须以T#/t#开头,单位按d→h→m→s→ms排序,可自动溢出校正(如T#3d29h→T#4d5h);

❌ 错误:15ms(缺T#)、t#4ms13d(顺序错);

  1. 时刻(TOD):按时:分:秒.毫秒格式,如TOD#10:05:00.500
  1. 日期(DATE):按年-月-日格式,如D#2024-12-31
  1. 日期时间(DT):按年-月-日-时:分:秒格式,毫秒可省略。

实战案例:时间类型赋值

总结

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

  • 开关量用BOOL,整数运算用整型(优先选匹配取值范围的类型,节省内存);
  • 模拟量用REAL/LREAL,字符处理用STRING(务必指定长度);
  • 时间/日期用专用时间类型,严格遵循格式要求。

下一篇我们将讲解CoDeSys的标准扩展数据类型——联合体、长时间、宽字符串、引用、指针,这些高级类型能解决更复杂的编程问题,比如字节整合、高精度计时、间接访问内存等,敬请期待!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 23:26:41

KingbaseES数据库瓶颈排查实战指南:从实例到语句的全维度解析

在高并发、海量数据的业务场景下,数据库性能直接决定了应用系统的响应速度和稳定性,而瓶颈排查则是性能调优的核心前提——只有精准定位问题根源,才能避免盲目调参、优化无效的内耗。KingbaseES作为国产数据库中的优秀代表,在政务…

作者头像 李华
网站建设 2026/4/13 4:21:16

巡防勤务可视化管理

巡防勤务可视化管理 巡防勤务管理可视化系统,基于大数据平台的警务地理信息系统,可以实时查看警力在岗状态、警力分布、应急资源等。系统支持快速定位警员、车辆的位置,查看警力详细信息,调取监控视频画面,并进行单方…

作者头像 李华
网站建设 2026/4/12 1:36:27

想把网页保存成PDF文件,快速删掉侧边栏广告再打印

想要把网页保存成PDF文件的时候经常会有右侧左侧侧边栏挡住主要内容。怎么办呢? 打开 开发者模式 在 console 里粘贴以下,回车,就好了! // 隐藏所有可能包含侧边栏的常见元素 var style document.createElement(style); style.in…

作者头像 李华
网站建设 2026/4/14 2:24:24

深度学习之第八课迁移学习(残差网络ResNet)

目录 简介 一、迁移学习 1.什么是迁移学习 2. 迁移学习的步骤 二、残差网络ResNet 1.了解ResNet 2.ResNet网络—残差结构 三、代码分析 1. 导入必要的库 2. 模型准备(迁移学习) 3. 数据预处理 4. 自定义数据集类 5. 数据加载器 6. 设备配置 7. 训练函数 8. 测…

作者头像 李华
网站建设 2026/4/11 9:52:53

计算机视觉系列之opencv语法基础案例分析之银行卡号识别

简介 计算机视觉系列第一课opencv语法(一)保姆级教学 计算机视觉系列第一课opencv语法(二)保姆级教学 计算机视觉系列第一课opencv语法(三)保姆级教学 [计算机视觉第一课opencv(四)保姆级教学][opencv 3] 关于计算机视觉的基础内容我们之前已经说完了,今天我们就来用…

作者头像 李华
网站建设 2026/4/13 0:12:27

工业控制场景下模拟I2C通信的完整指南

以下是对您提供的博文《工业控制场景下模拟IC通信的完整指南:原理、实现与鲁棒性设计》进行 深度润色与结构重构后的专业级技术文章 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹(无模板化表达、无空洞套话、无机械连接词&#xff…

作者头像 李华