DB(数据块):DB 存储器用于存储各种类型的数据,其中包括操作的中间状态或 FB 的其 它控制信息参数,以及许多指令(如定时器和计数器)所需的数据结构。可以按位、字节、 字或双字访问数据块存储器。读/写数据块允许读访问和写访问。只读数据块只允许读访问。 表格 5-26 DB 存储器的**地址 位 DB[数据块编号].DBX[字节地址].[位地 址] DB1.DBX2.3 字节、字或双字 DB[数据块编号].DB [大小][起始字节地 址] DB1.DBB4、 DB10.DBW2、 DB20.DBD8 说明 在 LAD 或 FBD 中指定**地址时,STEP 7 会为此地址加上“%”字符前缀,以指示其为**地 址。编程时,可以输入带或不带“%”字符的**地址(例如 %I0.0 或 I.0)。如果忽略,则 STEP 7 将加上“%”字符。 在 SCL 中,必须在地址前输入“%”来表示此地址为**地址。如果没有“%”,STEP 7 将在编译 时生成未定义的变量错误 对 CPU 和 I/O 模块中的 I/O 进行组态 向设备组态添加 CPU 和 I/O 模块时,STEP 7 会自动 分配 I 地址和 Q 地址。通过在设备组态中选择地址 字段并输入新编号,可以更改默认寻址设置。 • 无论模块是否使用所有点,STEP 7 都按每组 8 点 (1 字节)的方式分配数字量输入和输出。 • STEP 7 以 2 个为一组分配模拟量输入和输出,其 中每个模拟点占用 2 个字节(16 位)。 PLC 概念 5.2 数据存储、存储区、I/O 和寻址 S7-1200 可编程控制器 系统手册, V4.6 11/2022, A5E02486685-AP 101 图中显示的示例是配有两个 SM 及一个 SB 的 CPU 1214C。在该示例中,可以将 DI8 模块的 地址更改为 2 而不是 8。用户可借助该工具更改大小有误或与其它地址冲突的地址范围。 5.3 模拟值的处理 模拟量信号模块可以提供输入信号,或等待表示电压范围或电流范围的输出值。这些范围是 ±10 V、±5 V、±2.5 V 或 0 - 20 mA。模块返回的值是整数值,其中,0 到 27648 表示电流 的额定范围,-27648 到 27648 表示电压的额定范围。任何该范围之外的值即表示上溢或下 溢。有关超出范围值的类型的详细信息,请参见模拟量输入表示法(页1380)和模拟量输出表 示法 (页 1381)表格。 在控制程序中,很可能需要以工程单位使用这些值,例如表示体积、温度、重量或其它数量 值。要以工程单位使用模拟量输入,必须首先将模拟值标准化为由 0.0 到 1.0 的实数(浮点) 值。然后,必须将其标定为其表示的工程单位的*小值和*大值。对于要转换为模拟量输出 值的以工程单位表示的值,应首先将以工程单位表示的值标准化为 0.0 和 1.0 之间的值,然 后将其标定为 0 到 27648 之间或 -27648 到 27648 之间(取决于模拟模块的范围)的值。 STEP 7 为此提供了 NORM_X 和 SCALE_X 指令 (页 288)。还可以使用 CALCULATE 指令 (页 234)来标定模拟值。 示例:模拟值处理 例如,假设模拟量输入的电流范围为 0 - 20 mA。模拟量输入模块返回的测量值介于 0 和 27648 之间。在此示例中,假设使用此模拟量输入值测量 50 °C 到 100 °C 的温度。几个采 样值的含义如下: 模拟量输入值 工程单位 0 50 °C 6192 62.5 °C 12384 75 °C 18576 87.5 °C 27648 100 °C 在此示例中,通过模拟量输入值确定工程单位的计算方法如下: 工程组态单位值 = 50 +(模拟量输入值)* (100 - 50) / (27648 - 0) PLC 概念 5.3 模拟值的处理 S7-1200 可编程控制器 102 系统手册, V4.6 11/2022, A5E02486685-AP 对于一般情况,公式为: 工程单位值 = (工程单位范围下限) + (模拟量输入值) * (工程单位范围上限 - 工程单位范围下限) / (模拟量输入上限 - 模拟量输入下限) 在 PLC 应用中,典型的方法是将模拟量输入值标准化为 0.0 至 1.0 之间的浮点值。然后,需 要将得到的值换算为工程单位范围内的浮点值。为简单起见,以下 LAD 指令使用常数值表 示范围;实际上可能选择使用变量: 程序段 1 程序段 2 5.4 数据类型 数据类型用于指定数据元素的大小以及如何解释数据。每个指令参数至少支持一种数据类型, 而有些参数支持多种数据类型。将光标停在指令的参数域上方,便可看到给定参数所支持的 数据类型。 形参指的是指令上标记该指令要使用的数据位置的标识符(例如:ADD 指令的 IN1 输入)。 实参指的是包含指令要使用的数据的存储单元(含“%”字符前缀)或常量(例如,%MD400 "Number_of_Widgets")。用户指定的实参的数据类型必须与指令指定的形参所支持的数据 类型之一匹配。 指定实参时,必须指定变量(符号)或者**(直接)存储器地址。变量将符号名(变量名) 与数据类型、存储区、存储器偏移量和注释关联在一起,并且可以在 PLC 变量编辑器或块
(OB、FC、FB 和 DB)的接口编辑器中进行创建。如果输入一个没有关联变量的**地址, 使用的地址大小必须与所支持的数据类型相匹配,而默认变量将在输入时创建。 除了 String、Struct、Array 和 DTL,其它所有数据类型都可以在 PLC 变量编辑器和块接口编 辑器中使用。String、Struct、Array 和 DTL 只可在块接口编辑器中使用。还可以为许多输入 参数输入常数值。 • 位和位序列 (页 105):Bool(布尔或位值)、Byte(8 位字节值)、Word(16 位值)、 DWord(32 位双字值) • 整型 (页 106) – USInt(无符号 8 位整数)、SInt(有符号 8 位整数)、 – UInt(无符号 16 位整数)、Int(有符号 16 位整数) – UDInt(无符号 32 位整数)、DInt(有符号 32 位整数) • 浮点实数 (页 107):Real(32 位实数或浮点值)、LReal(64 位实数或浮点值) • 时间和日期 (页 108):Time(32 位 IEC 时间值)、Date(16 位日期值)、TOD(32 位 时间值)、DTL(12 字节日期和时间结构) • 字符和字符串 (页 110):Char(8 位单字符)、String(*长 254 个字符的可变长度字符 串) • 数组 (页 112) • 数据结构 (页 113):Struct • PLC 数据类型 (页 114) • Variant 数据类型 (页 114) 尽管以下 BCD 格式不能作为数据类型使用,转换指令支持以下 BCD 数字格式: 表格 5-27 BCD 格式的大小和范围 格式 大小(位) 数字范围 常量输入示例 BCD16 16 -999 到 999 123,-123 BCD32 32 -9999999 到 9999999 1234567,-1234567 PLC 概念 5.4 数据类型 S7-1200 可编程控制器 104 系统手册, V4.6 11/2022, A5E02486685-AP 5.4.1 Bool、Byte、Word 和 DWord 数据类型 表格 5-28 位和位序列数据类型 数据 类型 位 大小 数值 类型 数值 范围 常数 示例 地址 示例 Bool 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 Byte 8 二进制 2#0 到 2#1111_1111 2#1000_1001 IB2 MB10 DB1.DBB4 Tag_name 无符号整数 0 到 255 15 有符号整数 -128 到 127 -63 八进制 8#0 到 8#377 8#17 十六进制 B#16#0 到 B#16#FF,16#0 到 16#FF B#16#F、16#F Word 16 二进制 2#0 到 2#1111_1111_1111_1111 2#1101_0010_1001_ 0110 MW10 DB1.DBW2 无符号整数 Tag_name 0 到 65535 61680 有符号整数 -32768 到 32767 72 八进制 8#0 到 8#177_777 8#170_362 十六进制 W#16#0 到 W#16#FFFF、 16#0 到 16#FFFF W#16#F1C0、 16#A67B DWord 32 二进制 2#0 到 2#1111_1111_1111_1111_ 1111_1111_1111_1111 2#1101_0100_1111_ 1110_1000_1100 MD10 DB1.DBD8 Tag_name 无符号整数* 0 到 4_294_967_295 15_793_935 有符号整数* -2_147_483_648 到 2_147_483_647 -400000 八进制 8#0 到 8#37_777_777_777 8#74_177_417 十六进制 DW#16#0000_0000 到 DW#16#FFFF_FFFF、 16#0000_0000 到 16#FFFF_FFFF DW#16#20_F30A、 16#B_01F6 PLC 概念 5.4 数据类型 S7-1200 可编程控制器 系统手册, V4.6 11/2022, A5E02486685-AP 105 * 下划线“_”是用于增加大于 8 位的数字可读性的千位分隔符。 5.4.2 整数数据类型 表格 5-29 整型数据类型(U = 无符号,S = 短,D = 双) 数据类 型 位大 小 数值范围 常数示例 地址 示例 USInt 8 0 到 255 78, 2#01001110 MB0、 DB1.DBB4、 Tag_name SInt 8 -128 到 127 +50, 16#50 UInt 16 0 到 65,535 65295, 0 MW2、 DB1.DBW2、 Tag_name Int 16 -32,768 到 32,767 30000, +30000 UDInt 32 0 到 4,294,967,295 4042322160 MD6、 DB1.DBD8、 Tag_name DInt 32 -2,147,483,648 到 2,147,483,647 -2131754992 PLC 概念 5.4 数据类型 S7-1200 可编程控制器 106 系统手册, V4.6 11/2022, A5E02486685-AP 5.4.3 浮点型实数数据类型 如 ANSI/IEEE 754-1985 标准所述,实(或浮点)数以 32 位单精度数 (Real) 或 64 位双精度 数 (LReal) 表示。单精度浮点数的精度*高为 6 位有效数字,而双精度浮点数的精度*高为 15 位有效数字。 在输入浮点常数时,*多可以指定 6 位 (Real) 或 15 位 (LReal) 有效数字来保 持精度。 表格 5-30 浮点型实数数据类型(L = 长浮点型) 数据类 型 位大小 数值范围 常数示例 地址示例 Real 32 -3.402823e+38 到 -1.175 495e-38、 ±0、 +1.175 495e-38 到 +3.402823e+38 123.456, -3.4, 1.0e-5 MD100、 DB1.DBD8、 Tag_name LReal 64 -1.7976931348623158e +308 到 -2.2250738585072014e-308 、 ±0、 +2.2250738585072014e-30 8 到 +1.7976931348623158e +308 12345.123456789 e40、1.2E+40 DB_name.var_na me 规则: • 不支持直接寻 址 • 可在 OB、FB 或 FC 块接口 数组中进行分 配 计算涉及到包含非常大和非常小数字的一长串数值时,计算结果可能不准确。如果数字相差 10 的 x 次方,其中 x > 6 (Real) 或 15 (LReal),则会发生上述情况。 例如 (Real): 100 000 000 + 1 = 100 000 000.