在开始本次分享之前,先声明几个我们控制中常用的几个概念特别是字节和位的概念:
计算机/PLC处理器中不能直接识别数字,只能识别二进制数字即0,1码;
位:Bit,PLC程序中最小的数据单位;
字节:Byte,1个字节由8个位组成;
字:Word ,2个字节,16个位组成;(列举常用的,下面有详细解释)
浮点数/实数:float或Real,4个字节,32个位组成
所有整数数据的最大值(无符号)计算即2的位次方-1,例如:位:2^1^-1=1; 字:2^16^-1=65535
对于有符号(即正负数)整数,最高位代表符号位,当最高位为1时代表负数;以有符号整数int为例:最小值=-(2^15^)=-32768,最大值=2^15^-1=32767**(为什么不是-32767~+32767是因为+0,-0的存在,人为规定最小值是-32768)**
一 | 基本数据类型 |
基本数据类型:包括位、位序列、整数、浮点数、日期时间。此外字符也属于基本数据类型
位和位序列
注意:虽然位序列有数值表示方式,但一般不直接用于数学运算。通常在控制字、状态字、错误代码、标志字、状态位集合等处使用位序列。而数学运算使用下面的整数数据类型与浮点数数据类型。
整数数据类型
1 | 布尔运算 | FALSE 或者 TRUE | TRUE | I1.0 Q0.1 M50.7 DB1.DBX2.3 Tag_name |
二进制 | 2#0 或 2#1 | 2#0 | ||
无符号整数 | 0 或 1 | 1 | ||
八进制 | 8#0 或 8#1 | 8#1 | ||
十六进制 | 16#0 或 16#1 | 16#1 |
8 | 0 到 255 | 78、2#01001110 | MB0 DB1.DBB4 Tag_name |
8 | -128 到 127 | +50、16#50 | |
16 | 0 到 65535 | 65295、0 | MW2 DB1.DBW2 Tag_name |
16 | -32768 到 32767 | 30000、+30000 | |
32 | 0 到 4_294_967_295 | 4042322160 | MD6 DB1.DBD8 Tag_name |
32 | -2_147_483_648 到 2_147_483_647 | -2131754992 |
浮点型实数数据类型
如 ANSI/IEEE 754-1985 标准所述,实(或浮点)数以 32 位单精度数 (Real) 或 64 位双精度数 (LReal) 表示。 单精度浮点数的精度最高为 6 位有效数字,
而双精度浮点数的精度最高为 15 位有效数字。在输入浮点常数时,最多可以指定 6 位 (Real) 或 15 位 (LReal) 有效数字来保持精度。
32 | -3.402823e+38 到 -1.175495e-38、±0、+1.175 495e-38 到 +3.402823e+38 | 123.456、-3.4、1.0e-5 | MD100 DB1.DBD8 Tag_name |
64 | -1.7976931348623158e+308 到 -2.2250738585072014e-308、 ±0、 +2.2250738585072014e-308 到 +1.7976931348623158e+308 | 12345.123456789e40、1.2E+40 | DB_name.var_name |
时间和日期数据类型
TIME 数据作为有符号双整数存储,基本单位为毫秒。存储的数值是多少,就代表有多少 ms。 编辑时可以选择性使用天 (d)、小时(h)、分钟 (m)、秒 (s) 和毫秒 (ms) 作为单位。不需要指定全部时间单位。 例如,T#5h10s 和 500h 均有效。所有指定单位值的组合值不能超过以毫秒表示的时间日期类型的上限或下限(-2,147,483,648 ms 到 +2,147,483,647 ms)。
DATE 数据作为无符号整数值存储,被解释为添加到基础日期 1990 年 1 月 1 日的天数,用以获取指定日期。 编辑器格式必须指定年、月和日。
TOD (TIME_OF_DAY) 数据作为无符号双整数值存储,被解释为自指定日期的凌晨算起的毫秒数(凌晨 = 0 ms)。 必须指定小时(24 小时/天)、分钟和秒。 可以选择指定小数秒格式。
32 | T#-24d_20h_31m_23s_648ms 到 T#24d_20h_31m_23s_647ms 存储形式: -2,147,483,648 ms 到 +2,147,483,647 ms | T#5m_30s T#1d_2h_15m_30s_45ms TIME#10d20h30m20s630ms 500h10000ms 10d20h30m20s630ms |
16 | D#1990-1-1 到 D#2168-12-31 | D#2009-12-31 DATE#2009-12-31 2009-12-31 |
32 | TOD#0:0:0.0 到 TOD#23:59:59.999 | TOD#10:20:30.400 TIME_OF_DAY#10:20:30.400 23:10:1 |
二 | 结构数据类型(Struct) |
Struct类型是一种由多个不同数据类型元素组成的数据结构,其元素可以是基本数据类型,也可以是Struct、数组等复杂数据类型以及PLC数据类型(UDT)等。Struct类型嵌套Struct类型的深度限制为 8 级。Struct类型的变量在程序中可作为一个变量整体,也可单独使用组成该Struct的元素。Struct 类型可以在DB、OB/FC/FB接口区、PLC数据类型(UDT) 处定义使用。
Struct数据类型使用非常灵活(小编的最爱),随时可以使用;可以使程序数据结构更加清晰直观,易于维护,扩展性强;例如将相同类型电机相关的数据以结构体存放,便于批量复制和使用;
image-20240514150457587
三 | PLC数据类型(UDT) |
从TIA 博途 V11 开始,S7-1200 支持PLC数据类型(UDT)。
UDT类型是一种由多个不同数据类型元素组成的数据结构,元素可以是基本数据类型,也可以是STRUCT、数组等复杂数据类型以及其它UDT等。UDT类型嵌套UDT类型的深度限制为 8 级。UDT类型可以在DB、OB/FC/FB接口区处使用。从TIA 博途 V13SP1 开始,S7-1200 V4.0开始,PLC变量表中的I和Q也可以使用UDT类型。 UDT类型可在程序中统一更改和重复使用,一旦某UDT类型发生修改,执行软件全部编译可以自动更新所有使用该数据类型的变量。
image-20240514151358553
四 | S7-1200 数组数据类型(ARRAY) |
ARRAY类型是由数目固定且数据类型相同的元素组成的数据结构。 ARRAY类型的定义和使用需要注意以下几点:
ARRAY类型可以在DB、OB/FC/FB接口区、PLC数据类型处定义;无法在PLC变量表中直接定义。数组定义:Array[维度1下限..维度1上限,维度2下限..维度2上限,...]of数组元素的数据类型包括:除数组类型、Variant类型以外的所有类型;数组下标的数据类型为整数,下限值必须小于或等于上限值;从S7-1200 V2.0开始,下标可以不仅仅是常数、常量,也可以是变量,还可以是混合使用(多维数组),如果编程语言是SCL的话,下标还可以是表达式。W0这种没有对应符号名的juedui地址。从S7-1200 V4.2开始,FC的Input/Output/InOut以及FB的InOut可以定义形如Array[*]这种变长数组,要求必须是优化FC/FB块,在调用FC/FB的实参中可以填写任意数据类型相同的数组变量;数组可以使用单个数组元素例如"DB1".Static_1[1],也可以使用整个数组例如"DB1".Static_1。S7-1200 V4.2开始,多重背景支持数组形式,即Array of FB,这样可以在FB中使用循环指令更方便的编写程序。image-20240514152535582
- 西门子 S7-1200 系列四:西门子 TIA Portal 编程软件介绍及应用范围说明 2024-11-27
- 西门子s7-200 smart 基本控制库(LBC)应用九:范围限制、多路复用 2024-11-27
- 西门子s7-200 smart 基本控制库(LBC)应用九:一个经典的三位控制器标准库程序 2024-11-27
- 西门子s7-200 smart 基本控制库(LBC)应用八:可配置信号参数的数字量信号处理功能 2024-11-27
- 西门子s7-200 smart 基本控制库(LBC)应用七:可调整逻辑关系的8输入连锁控制功能块 2024-11-27
- 西门子s7-200 smart 基本控制库(LBC)应用六:可用于气缸、油缸、电动阀 2024-11-27
- 西门子s7-200 smart 基本控制库(LBC)应用四:带状态和报警输出的双手控制器标准库文件 2024-11-27
- 西门子s7-200 smart 基本控制库(LBC)量程转换库升级版集成复位、上下限报警 2024-11-27
- 西门子 s7-200 smart 基本控制库(LBC)应用一:设备顺启顺停顺启逆序功能块分享 2024-11-27
- 西门子宣布推出新一代控制器Simatic S7-1200 G2作为西门子Xcelerator的一部分 2024-11-27