内容
在线帮助中未包含的信息和有关产品特性的重要信息。
兼容性
理论上,TIA Portal V15.1 中可继续使用之前旧版本创建的所有 PLC 程序。但由于版本 V15.1 中对编译器进行了改进并更正了相关错误,在较少数情况下程序在升级后的结果不同,可能需要手动调整程序代码。在下文中,对此进行了详细介绍。
SCL 中函数调用的处理顺序 (S7-1200/S7-1500)
在 TIA Portal 旧版本中,赋值运算的处理序列中包含有表达式或函数调用,往往很不直观。而且处理过程并不总是按照从右到左的顺序;在某些条件下,可能会先评估左侧的表达式部分。
该错误已在版本 V15.1 中得以更正,系统将始终先计算赋值运算的右侧,之后再确定左侧。
示例:
#myArr["FC_1"()]:= #x + #y;
在旧版本中,首先运行“FC1”,确定一个 ARRAY 元素。之后,再计算 #x + #y。
在 V15.1 及以上版本中,将按照从右到左的顺序正确处理程序:首先计算 #x + #y,然后运行“FC1”。
这一更正措施可能导致用户程序升级后的操作特性发生变化。例如,“FC1”中设置变量 #x 或 #y 时。因此,在升级后请检查用户程序。
比较器 (SCL S7-1200 >= 4.2 和 S7-1500 >= 2.0)
如果在 SCL中通过比较指令对两个背景数据块进行比较,则系统将仅比较块的数量而非块的结构。在 V15.1 及以上版本中,编译过程中将显示一条错误消息,指示该指令可能会返回错误结果(由于块的数量不同,因此通常返回 FALSE)。
示例:
即使两个块的结构相同,以下比较指令也将返回结果 FALSE。
导入 IEC 定时器 (S7-1200/S7-1500)
IEC 定时器中包含有只读参数,如 ET(当前时间值)。在旧版本 TIA Portal 中,导入外部源文件时,某些情况下系统将覆盖这些只读参数的起始值。该错误在 V15.1 中已更正:现在导入源文件时,系统将忽略只读参数的起始值,而使用该数据类型的默认值。因此,导入后请检查用户程序。
升级过程中替换无效的 Unicode 字符
在升级为 V15.1 时,系统将更正用户程序中无效的 Unicode 字符。例如,使用 IEC 中定义的转义序列替换字符串常量中的无效字符。该操作可能会更改程序的校验和,并指示在线和离线程序不同。此时,需编译用户程序并重新加载。
指令“SCATTER”/“SCATTER_BLK”和“GATHER”/“GATHER_BLK”(SIMATIC S7-1200/1500)
使用指令“SCATTER”/“SCATTER_BLK”,可将位序列解析为单个位。而使用指令“GATHER”/“GATHER_BLK”,则可将各个位组合成一个位串。
由于在 I/O 区域或工艺对象的数据块中无法确保数据的一致性,因此该指令不使用此区域内的值。
在 V15.1 及以上版本中,该规则将进行更为精准的语法检查。如果在用户程序中上述指令的输入参数无效,则在编译过程中报告一条错误消息。
为了避免该错误的发生,可将变量先复制到一个临时存储区,之后再将其从该存储区传送到指令“SCATTER”或“GATHER”中。
指令“BLKMOV”/“UBLKMOV”和“FILL”/“UFILL”
使用指令“BLKMOV”/“UBLKMOV”和“FILL”/“UFILL”,可将某个存储区(源范围)中的内容复制到另一个存储区(目标范围)内。如果这些指令访问一个不存在的存储区,则将输出一条编程错误。在之前的版本中,较少数情况下“RET_VAL”参数处会生成一个错误代码,而非编程错误。该错误已在 S7-1500 CPU 固件版本 V2.6 及以上版本中修正。
“RUNTIME”指令 (SCL/STL S7-1200/S7-1500)
“RUNTIME”指令中参数“Mem”的数据类型为“LREAL”,仅该数据类型的变量才能使用。而且,不支持隐式转换。在 V15.1 版本中,该规则将进行更为精准的语法检查。如果用户程序中“RUNTIME”指令的“Mem”参数的数据类型无效,则在编译时将报告一条错误消息。
shtxjd.cn.b2b168.com/m/