quote:以下是引用motion在2009-03-13 14:26:59的发言:
“commandid”是用于命令识别的,当一个系统功能发出一个命令时,会传送一个“commandid”。命令被工艺对象执行时,它会在命令中存贮“commandid”,这样可用于之后识别命令的运行状态。通过“_getCommandId”系统功能块可在整个项目范围内获得唯一的“commandid”,这就确保在系统中不会存在相同的“commandid”。
通过“_getStateOf...Command”系统功能块(如: _get StateOfAxisCommand)。数据类型为“StructRetCommandState”中的“EnumCommandIdState”的返回值可查询运动命令的执行状态信息。如果您不需要查询命令的运行状态可以不必分配不同的commandid的变量,如需要再将分配。
使用“commandid”的示例:
//...
VAR
myCommandId : CommandIdType;
END_VAR
//...
// Save unique ID
myCommandId := _getCommandId ();
// Execute function with ID
myFC := _pos (axis := myAxis,
position := position_1,
nextCommand :=IMMEDIATELY,
commandId :=myCommandId);
//...
本程序示例描述了通过“commandid”如何跟踪命令的执行状态。
事例的myCommandId := _getCommandId (); 指令是不是在开始的时候作为一个初始值,而
myFC := _pos (axis := myAxis,
position := position_1,
nextCommand :=IMMEDIATELY,
commandId :=myCommandId);
作为后面定位指令的判断?
但如果先执行了多个不同轴的定位指令后 ,再使用myCommandId := _getCommandId (); 指令时,是什麽结果呢?Commandid的buffer全局是只有一个吗?