广东湘恒智能科技有限公司
主营产品: 西门子PLC,西门子模块,西门子触摸屏,西门子变频器,西门子伺服电机驱动,电缆,西门子全系列
西门子中国(授权)一级代理 内蒙古自治区代理商PLC

在开始本次分享之前,先声明几个我们控制中常用的几个概念特别是字节和位的概念:

计算机/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)**

一基本数据类型

基本数据类型:包括位、位序列、整数、浮点数、日期时间。此外字符也属于基本数据类型

位和位序列

注意:虽然位序列有数值表示方式,但一般不直接用于数学运算。通常在控制字、状态字、错误代码、标志字、状态位集合等处使用位序列。而数学运算使用下面的整数数据类型与浮点数数据类型。

整数数据类型

数据类型位大小数值类型数值范围常数示例地址示例Bool1布尔运算FALSE 或者 TRUETRUE

I1.0

Q0.1

M50.7

DB1.DBX2.3

Tag_name

二进制2#0 或 2#12#0无符号整数0 或 11八进制8#0 或 8#18#1十六进制16#0 或 16#116#1数据类型位大小数值范围常数示例地址示例USInt80 到 25578、2#01001110

MB0

DB1.DBB4

Tag_name

SInt8-128 到 127+50、16#50UInt160 到 6553565295、0

MW2

DB1.DBW2

Tag_name

Int16-32768 到 3276730000、+30000UDInt320 到 4_294_967_2954042322160

MD6

DB1.DBD8

Tag_name

DInt32-2_147_483_648 到 2_147_483_647-2131754992

浮点型实数数据类型

如 ANSI/IEEE 754-1985 标准所述,实(或浮点)数以 32 位单精度数 (Real) 或 64 位双精度数 (LReal) 表示。  单精度浮点数的精度最高为 6 位有效数字,

而双精度浮点数的精度最高为 15 位有效数字。在输入浮点常数时,最多可以指定 6 位 (Real) 或 15 位 (LReal) 有效数字来保持精度。

数据类型位大小数值范围常数示例地址示例Real32-3.402823e+38 到 -1.175495e-38、±0、+1.175 495e-38 到 +3.402823e+38123.456、-3.4、1.0e-5

MD100

DB1.DBD8

Tag_name

LReal64-1.7976931348623158e+308 到 -2.2250738585072014e-308、
     ±0、
     +2.2250738585072014e-308 到 +1.7976931348623158e+30812345.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  小时/天)、分钟和秒。 可以选择指定小数秒格式。

数据类型位大小范围常数示例Time32T#-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

DATE16D#1990-1-1 到 D#2168-12-31

D#2009-12-31

DATE#2009-12-31

2009-12-31

TOD/
   Time_of_Day

32TOD#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


展开全文
相关产品
拨打电话 微信咨询 发送询价