如何在 S7-GRAPH 中的 UDT 里编程使用数组(ARRAY)?


n

说明:
在深层结构和 UDT 中不能把数组用做顺控器,因为在 S7-GRAPH 中进行保存后,会自动删除操作数的某一部分。如图 01为定义 UDT25 的实例,其中包含如下声明:n

“Check : ARRAY [1 .. 2 ] OF STRUCT
End : BOOL”

在 S7-GRAPH 中,以“Wrong.Check[1].End”形式在顺控器的与门处对“UDT25”型输入变量“Wrong”进行 声明和参数设置。n

如何在 S7-GRAPH 中的 UDT 里编程使用数组(ARRAY)?
图 01n

语法检查不会产生出错消息,但是在 S7-GRAPH 中进行保存后,如图 02所示,将自动删除变量的“End”部分并对余下的操作数标以红色的“ Wrong.Check[1]”标记。n

如何在 S7-GRAPH 中的 UDT 里编程使用数组(ARRAY)?
图 02n

作为补救措施,推荐用 UDT 代替 ARRAY。输入变量“Correct”的声明为 UDT24 类型,该 UDT24 包括变量“ Check_End_1”和“Check_End_2”。在顺控器的与门处以变量“ Correct.Check_End_1”的形式对变量进行参数设置,然后在 S7-GRAPH 中进行编译。n

如何在 S7-GRAPH 中的 UDT 里编程使用数组(ARRAY)?
图 03n

注:
当打开一个 S7-GRAPH FB 时,如果显示下列错误消息:

“Recompilation: K1574=50BF01CPU 416-2 DP...FB..... - <Offline>
Errors have occurred.
Error >>> (S1, Action No. 1) Type conflict when assigning parameters to a block call”。

即使块是可运行的并且编译无错误,也要检查在顺控器中调用的块是否被分配了一个“ARRAY”类型的实际参数,同时检查是否在数据块中将该数组声明为的一个结构中的第一个元素。

补救措施:

  • 数组不能作为结构中的第一个元素
  • 在结构中数组(ARRAY)的前面插入任意变量

S7-GRAPH V5.1 或更高版本支持多维数组的编程以及用户自定义数据类型(UDT)的声明。如果一个带有这种程序的 S7-GRAPH 的源文件在早于 V5.1 版本的 S7-GRAPH 中打开,可能出现消息“2508:7501 Invalid characters in source at ...”。

注:
S7-GRAPH V5.0 + SP1不能用嵌套结构。

关键词:
参数,变量声明

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc336973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论