西门子PLC编程常量简明指南
理解常量及其在PLC编程中的使用对于使用S7控制器的工程师至关重要。本综合教程将为您提供在PLC程序中根据需要使用常量的知识和技能。
您应该了解常量的类型,以增强程序的可读性和代码理解。例如:有类型和无类型常量、布尔型常量和符号常量。此外,您将发现常量声明的重要性及其允许的数据类型,以成为该领域的专家。
0、先决条件
跟随本教程您需要:
- 您的计算机上应安装TIA Portal软件。虽然本教程使用版本16,但其他版本的TIA Portal也兼容
- 理解数据块(DB)
- 理解SCL块创建
1、常量基础
在程序运行期间,常量假定不可更改的值,表示保持固定的数据。当程序执行时,不同的程序元素可以访问常量。但是,它们保留其不可修改的性质。常量的值使用由数据类型和格式确定的预定义符号表示。有类型表示法和无类型表示法之间存在公认的对比。
2、有类型和无类型常量
使用无类型表示法时,您只需输入常量值,而无需指定其关联的数据类型。仅当无类型常量涉及其第一个逻辑或算术运算时,才会为其分配数据类型。在图1.1中,您可以观察说明性示例,描绘了无类型表示法的使用。
图1.1 - 西门子TIA Portal常量 | 无类型常量
在有类型表示法中,您将数据类型与常量值一起包含以进行显式指定。在图1.2中,您可以观察说明性示例,描绘了有类型表示法的使用。
图1.2 - 西门子TIA Portal常量 | 有类型常量
2.1 FBD和LAD编程中的布尔型常量
考虑固件版本1.8或更高的S7-1500系列CPU和固件版本4.0或更高的S7-1200系列CPU。这些是唯一允许将布尔常量用作FBD和LAD指令输入的CPU。
图2.1 - 西门子TIA Portal常量 | 在旧版和新版S7-1200/1500系列固件版本中实现常量
但是早期固件版本呢?只有指令内的内部功能块(FB)允许使用布尔型常量。这些指令的识别基于"调用选项"对话框的出现。当这些指令插入网络时,此对话框会打开。有必要排除将布尔常量用作不属于所述类别指令的输入。
图2.2 - 西门子TIA Portal常量 | 克服在旧版S7-1200/1500系列中使用常量值的挑战
S7-300和400 PLC不允许使用布尔常量。
图2.3 - 西门子TIA Portal常量 | 禁止在S7-300/400系列中使用常量
3、符号常量
您有机会为常量分配符号名称。它允许您通过程序中选择的名称引用常量值。遵循此方法可提高程序的可读性和可维护性。当常量值需要更改时,其重要性变得明显。它确保高效的代码理解和无缝更新。
构建符号常量时,它由以下元素组成:
- 名称
- 数据类型:数据类型的存在是符号常量的常量特征。不允许使用无类型表示法来声明符号常量。
- 常量值:符号常量的常量值可以从指定数据类型允许的整个值范围中选择。为此,您应该熟悉西门子PLC编程中的不同数据类型。
图3.1 - 西门子TIA Portal常量 | 符号常量的不同元素
4、常量声明
从某个角度来看,您可以考虑两种类型的常量:
- 全局常量:这些常量在所有CPU部分普遍适用。
- 局部常量:这些常量仅限于特定块,对外部没有影响。
全局常量和局部常量有显著差异,呈现以下区别:
- 有效性范围:全局常量的有效性扩展到整个CPU。此外,它们的名称在CPU内是唯一标识的。局部常量仅在其声明块内有效。此外,它们的名称仅在该块内是唯一的。
- 有效字符选项:在全局和局部常量的名称中,允许数字、字母和特殊字符,并被视为有效。
图4.1 - 西门子TIA Portal常量 | 常量声明的有效字符选项
- 声明位置:在PLC标签表中,全局常量仅在指定的"用户常量"选项卡中定义。局部常量在块接口中定义。
图4.2 - 西门子TIA Portal常量 | 定义局部和全局常量
- 视觉描述:全局常量的显示包括使用引号来表示它们。例如:"My_Constant2"。局部常量表示涉及使用数字符号作为前缀。例如:#My_Constant1。
图4.3 - 西门子TIA Portal常量 | 局部和全局常量的视觉描述
假设您有一个具有相同符号名称的局部和全局常量。一旦您将此双重指定的名称用作标签的默认值,就可能出现冲突。在这种情况下,局部常量会自动用作默认选择。
图4.4 - 西门子TIA Portal常量 | 为局部和全局常量使用相同名称的冲突
5、下载常量声明的挑战
当程序下载到S7-300和400 CPU时,常量声明(包括局部和全局)不包含在传输中。当您从设备传输程序时,常量声明可能不再可用于引用或使用。如果您在程序中定义并使用了常量值,例如将常量值分配给变量会怎样?下载后,实际的常量声明将在PLC中不可用。常量值仍然存在,可以在程序中使用。但是,原始常量声明在PLC的内存中将不可访问。
图5.1 - 西门子TIA Portal常量 | 禁止将常量下载到S7-300/400系列的CPU内存
6、分配给常量的允许数据类型
对于常量可以使用的数据类型没有限制,包括基本类型和派生类型:
- 二进制形式表示的数字
- 位字符串
- 整数
- 浮点格式表示的数字
- 定时器
- 数据和时间
- 字符串
所有控制类型转换的通用规则(包括显式和隐式)在此上下文中都适用。
STEP 7在所有情况下始终选择提供最高精度的数据类型。如果无法在表达式中显式定义常量的数据类型会怎样?CPU默认使用可用的最高精度数据类型。考虑图6.1中呈现的表达式。它展示了整数标签与浮点格式的无类型常量的组合。在S7-300和400系列中,赋值的右侧使用Real格式进行计算。
图6.1 - 西门子TIA Portal常量 | 评估S7-300/400系列中赋值的数据类型
在S7-1200和1500系列中,使用LReal数据类型进行计算以实现最可能的精度。因此,在此上下文中对Real标签的赋值将被视为无效或可能触发警告。
图6.2 - 西门子TIA Portal常量 | 评估S7-1200/1500系列中赋值的数据类型
建议使用有类型表示法来提供与常量关联的数据类型的精确定义。为了更好地理解它,请查看图6.3中呈现的表达式。
图6.3 - 西门子TIA Portal常量 | 提供与常量关联的数据类型的精确定义
7、使用常量的实例
在赋值、指令和表达式中的使用: 在指令或赋值的上下文中,常量可以用作标签的可行替代品。在SCL领域中,您还可以在表达式中使用常量。然而,由于常量不能显式写入,因此它们的使用仅限于输入值。图7.1提供了突出显示常量潜在用途的示例的视觉表示。
图7.1 - 西门子TIA Portal常量 | 在赋值、指令和表达式中使用常量
用作默认值: 当为标签分配默认值时,常量可用于此目的。为此,在块接口中提供的指定"默认值"列中输入常量的特定值或符号名称。确保兼容性的一种方法是常量的数据类型必须与标签的数据类型匹配。或者常量的数据类型应可通过隐式转换转换为标签的数据类型,如IEC检查所确认。
图7.2 - 西门子TIA Portal常量 | 使用常量作为默认值
用作最大字符串长度: 当确定String的最大长度时,您可以使用具有以下数据类型的局部或全局常量:INT、SINT、LINT、DINT、ULINT、UDINT和UINT。图7.3展示了一个示例,演示了将常量用作STRING的最大长度。
图7.3 - 西门子TIA Portal常量 | 使用常量作为字符串的最大长度
用作数组的限制: 当确定数组限制时,您可以使用具有以下数据类型的局部或全局常量:INT、SINT、LINT、DINT、ULINT、UDINT和UINT。图7.4展示了一个示例,演示了将常量用作数组的限制。
图7.4 - 西门子TIA Portal常量 | 使用常量作为数组的限制
8、结束语
总之,您了解了常量的基础知识。您熟悉了常量值的两种预定义表示法:有类型和无类型。您了解了在具有不同固件的S7-PLC中实施布尔型常量的挑战。您弄清楚了构成符号常量的元素以及为什么应该使用这些常量。您掌握了局部和全局常量的定义以及这两种类型之间的主要区别。最后,您熟悉了使用常量的一些实例。
原文链接:A Comprehensive Guide to Constants for Siemens PLC Programming - TIA Portal
汇智网翻译整理,转载请标明出处