加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线18475208684
公司新闻
西门子 S7-1200 系列六:S7-1200(1500适用)控制系统程序中数据类型详解(上)
发布时间: 2024-06-09 21:35 更新时间: 2024-06-09 21:35

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

计算机/PLC处理器中不能直接识别数字,只能识别二进制数字即0,1码;

位:Bit,PLC程序中Zui小的数据单位;

字节:Byte,1个字节由8个位组成;

字:Word ,2个字节,16个位组成;(列举常用的,下面有详细解释)

浮点数/实数:float或Real,4个字节,32个位组成

所有整数数据的Zui大值(无符号)计算即2的位次方-1,例如:位:2^1^-1=1; 字:2^16^-1=65535

对于有符号(即正负数)整数,Zui高位代表符号位,当Zui高位为1时代表负数;以有符号整数int为例:Zui小值=-(2^15^)=-32768,Zui大值=2^15^-1=32767**(为什么不是-32767~+32767是因为+0,-0的存在,人为规定Zui小值是-32768)**

基本数据类型

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

位和位序列

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

整数数据类型

数据类型位大小数值类型数值范围常数示例地址示例Bool
1布尔运算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
数据类型位大小数值范围常数示例地址示例USIntSIntUIntIntUDIntDInt
80 到 25578、2#01001110

MB0

DB1.DBB4

Tag_name

8-128 到 127+50、16#50
160 到 6553565295、0

MW2

DB1.DBW2

Tag_name

16-32768 到 3276730000、+30000
320 到 4_294_967_2954042322160

MD6

DB1.DBD8

Tag_name

32-2_147_483_648 到 2_147_483_647-2131754992

浮点型实数数据类型

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

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

数据类型位大小数值范围常数示例地址示例RealLReal
32-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

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  小时/天)、分钟和秒。 可以选择指定小数秒格式。

数据类型位大小范围常数示例TimeDATE

TOD/
   Time_of_Day

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

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

D#2009-12-31

DATE#2009-12-31

2009-12-31

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数据类型使用非常灵活(小编的Zui爱),随时可以使用;可以使程序数据结构更加清晰直观,易于维护,扩展性强;例如将相同类型电机相关的数据以结构体存放,便于批量复制和使用;

图片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


其他新闻

联系方式

  • 电  话:13922889745
  • 经理:向小姐
  • 手  机:18475208684
  • 微  信:18475208684