在很多时候,有多个任务具有动作命令指令。为了防止多个任务运行动作命令时,对仅有的一个机器人产生的控制冲突,有必要进行连锁处理。一个任务进行机器人控制时,另一个任务则会等待控制权。这样,各任务就可以完全按照预定的顺序执行各自的动作语句。
通过 MemSw 与 Wait 指令同时使用,可以做任务间的互锁。
每个任务在执行动做之前,通过 MemSw 与 Wait 指令确认机器人可用之后,再开始动作指令的执行。
MemSw 函数 用于返回指定存储器I/O位的状态。
格式 MemSw(位编号)
参数 位编号 以表示存储器I/O位编号的数值进行指定。
返回值 指定的位为ON时返回“1” 返,为OFF时返回“0” 返。
说明 MemSw用于返回1个存储器I/O位的状态。MemSw通常与MemOn及MemOff命令配套使用。
MemOn用于将指定的位设为ON。
MemOff则用于将指定的位设为OFF。
举例:
Function main Integer I MemOff 1 Xqt 2, task2 For i = 1 to 100 Wait MemSw(1) = Off //在进行 go 指令之前等待机器人的控制权Go P(i) MemOn 1 // go 指令执行之后,释放机器人的控制权Next I
FendFunction task2 Integer I For i = 101 to 200 Wait MemSw(1) = On //在进行 go 指令之前等待机器人的控制权Go P(i) MemOff 1 //go 指令执行之后,释放机器人的控制权Next I
Fend
利用命令窗口的简单操作示例。
> memon 1
> print memsw(1)
1
> memoff 1
> print memsw(1)
0