首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >PLC Control with ST,V3版本学习笔记04—数据类型Data Types!

PLC Control with ST,V3版本学习笔记04—数据类型Data Types!

作者头像
Hello工控
发布2025-12-21 15:21:08
发布2025-12-21 15:21:08
1420
举报
文章被收录于专栏:Hello工控Hello工控

与其他编程语言类似,IEC 61131-3编程标准提供了多种数据类型,包括基本类型和复合类型。数据类型决定了变量值所需的内存容量,从而限定了变量可存储的最大值和最小值。

那么,我们这期重点介绍下IEC 61131-3的编程标准里面的数据类型,这是第4章的内容!原英文版的链接:2023年度TOP 10的PLC编程书籍分享

基本类型

以下简单数据类型是所有PLC控制器的标准配置:

注:

  • 表格中保留了原始数值表示法(如16#、2#、C#等前缀),符合IEC 61131-3标准规范
  • 专业术语如BOOL、BYTE、WORD等保持英文大写形式,符合工业自动化领域惯例
  • 示例值维持原格式,便于实际编程时直接参考使用

数据类型注意事项

INT类型的局限性

使用INT类型时,在不同位宽计算机系统间交换数据可能存在兼容性问题。例如:

  • 16位操作系统的PLC
  • 64位操作系统的计算机
  • 传感器/测量仪器内的8位嵌入式计算机

Real类型的精度问题

  • Real 类型(单精度浮点数,32位)的有效数字通常为 6~7 位十进制数字,这是由其二进制存储结构决定的。
  • 在 PLC 或计算机通信中,如果直接传输 Real 类型,可能会因 精度限制 导致数据不一致(如 1234.56789 被截断为 1234.567)。
  • 因此,工程上常采用 放大整数法(如 ×100 后以 INT/DINT 传输,传输完后再除以100),避免浮点精度问题。

字符类型的说明

  • STRING由CHAR数组构成,默认长度255字符,部分PLC限制最大80字符。
  • CHAR和WCHAR在部分PLC里面没有,单个字符可以用STRING(1)进行代替。
  • 常用的中文字符,可以用WSTRING类型。

PLC 中的 TIME/DATE 时间处理机制

在PLC中TIME(时间)和 DATE(日期)在内部以整数(INT/DINT)形式存储,其计算基准为 1970 年 1 月 1 日 00:00(即 Unix 时间戳)。因此,PLC 的时间值可以转换为整数,但具体转换方式需参考 各 PLC 型号的文档说明

PLC 时间来源与精度问题

  1. 默认时间源
    • PLC 的当前时间通常由其 内置电子元件(如 RTC 实时时钟芯片) 提供。
    • 但该时钟的 精度较低,可能存在时间漂移(如每天误差几秒)。
  2. 高精度时间同步方案
    • 若需精确时间,PLC 应连接至 原子钟网络时间协议(NTP)服务器
    • 例如,PLC 可通过联网的 普通 PC 每日同步一次时间,确保自动化系统的时间准确性。

网络时间同步的重要性

同一网络内的 所有 PLC 必须保持时间一致,否则会导致:

  • 报警记录(Alarms) 时间戳错误
  • 数据日志(如事件日志、用户操作记录) 的日期/时间标记混乱
  • 影响故障排查、审计和系统协同运行

图片
图片

枚举数据类型(ENUM)

枚举类型的数据包含一组唯一命名的常量值,名称需具有语义化特征(反映实际用途),声明以TYPE开始,END_TYPE结束!

比如,在运动控制里面,轴的两种最典型的类型:

对应的代码:

兼容性说明

对于不支持ENUM的PLC系统,可采用独立常量替代:

使用枚举变量类型的技术优势

  • 提升代码可读性
  • 减少因魔法数字导致的编程错误
  • 增强程序可维护性

当然,对于初学者没有理解的可以先暂时不用也不影响程序的设计!

结构体数据类型(STRUCT)

结构体(STRUCT)是一种复合数据类型,用于将多个相关变量组织成逻辑单元。通过关键字TYPESTRUCTEND_STRUCT进行声明,每个成员变量需遵循"名称: 数据类型;"的格式并以分号结尾。

结构化编程优势
  • 变量集群管理:将关联变量(如同设备/同域参数)组织为统一结构体,显著提升:代码可读性(避免命名冲突);维护效率(批量修改同类组件)
  • 面向对象特性封装性:打包设备全属性(如储罐容量+传感器+开关)
  • 复用性:通过实例化快速创建设备集群
  • 扩展性:新增属性只需修改STRUCT定义

数组(ARRAY)——同类型数据的集合

数组(ARRAY)是一种能够存储相同数据类型元素集合的结构。所有元素在内存中 连续排列,这使得数组操作非常高效。数组的长度固定,在程序运行时无法更改,但支持多维度索引

数组的优势与挑战
  • 优势
    • 代码编写快捷,结构清晰
    • 适用于批量处理同类型数据
  • 挑战
    • 需注意数据的 存取逻辑(如索引越界问题)
数组声明与示例

数组属于 多元素数据类型。以下示例声明了一个包含6个INT型元素的一维数组 SpeedArray

  • 首元素位置为1,末元素为6
  • 命名规范建议包含 Array 后缀(如 SpeedArray),便于代码维护
一维数组的典型应用
  • 计算平均值
  • 队列管理
  • 先进先出(FIFO)处理
  • 数据收集与排序

支持所有数据类型,包括 STRINGSTRUCT 或函数。


多维数组的应用

二维数组

适用于停车场、货架、图表或数据透视表等场景:

三维数组

定义示例(如仓库托盘堆叠或立体坐标):

  • 坐标类比:X(1~5)、Y(1~4)、Z(1~3)
  • 总元素数=各维度乘积(本例为60个)

零基索引数组

数组索引可从0开始,以下示例包含4个元素(索引0~3):


数组赋值操作

单值插入
  • 一维数组赋值:
  • 三维数组赋值:

对于上述这三种数据类型:ENUM、STRUCT、ARRAY,在刚入门的阶段可以暂时不用掌握,当理解和熟悉后,可以尝试用这些来编程!原书上也给了一段Convery输送带的实例:

最后,还没有原英文版资料可以留言获取!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本类型
  • 数据类型注意事项
    • INT类型的局限性
      • PLC 中的 TIME/DATE 时间处理机制
      • 网络时间同步的重要性
      • 数组(ARRAY)——同类型数据的集合
      • 数组(ARRAY)是一种能够存储相同数据类型元素集合的结构。所有元素在内存中 连续排列,这使得数组操作非常高效。数组的长度固定,在程序运行时无法更改,但支持多维度索引。
      • 多维数组的应用
      • 零基索引数组
      • 数组赋值操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档