execute函数可将字符串解释为源代码,并执行该源代码。即可输入一段字符串,然后可将该字符串解释为源代码执行。示例如下:

示例:
var objPath : string := "Track"
var attrName: string := "Length"
var attrVal : length := 3.5
execute(to_str(objPath, ".", attrName, ":=", attrVal))

该段代码执行效果即为将Track的长度设置为3.5米,这样执行函数相对于直接运行语句效率低并且程序并不简洁,看似功能鸡肋。但是在某种情况下,能发挥出意想不到的效果。函数要求如下:

功能需求:
1. 某一工序处又多个加工工位,工位数量不定,为了方便仿真实验,工位数量参数化。
2. 在输送线尽头需要将半成品送至某一工位处,但当前无空闲工位,需等待工位空闲。
3. 使用waituntil函数解决等待问题。

上述问题中如使用waituntil函数,因为工位数量参数化,所以
waituntil的条件无法确定,这时便可利用execute函数解决该问题。解决方法如下:

解决方法:
定义:工位数量为n,设备命名方式为Mach1,Mach2...Machn

var MethStr:string:="waituntil "
for var i:=1 to n
MethStr+="Mach"+to_str(i)+".empty or "
next
MethStr:=copy(MethStr,1,strLen(MethStr)-3)
MethStr+="prio 1"
execute(MethStr)

以这样的方式去执行waituntil 函数,使得函数条件可随设备数量变化而变化,实现了设备数量参数化的要求。

类似的情况,当判断条件不定、循环嵌套层数不定的情况也可通过此方法实现参数化。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注