SIMOTION: 在工艺对象中使用参考

可以声明一个数据类型为某个工艺对象(TO)的变量,例如位置轴,并将一个相应的定位轴指派给此变量。
这样的一个变量被命名为一个参考。

数据类型_AXIS_REF
一个数据类型为_AXIS_REF 的变量被用作选定的工艺对象的参考。此数据类型在PLCopen编程环境里被用来将轴参考转换成PLCopen程序块。这样,可以使用灵活的连接来创建应用,而不是固定的分配给某个工艺对象(在实例化和分配过程中)。

下标列举了可与数据类型 _AXIS_REF使用的工艺对象

支持的工艺对象 数据类型
Speed-controlled axis driveAxis
Positioning axis posAxis
Synchronous axis followingAxis
Path axis _pathAxis
External encoder externalEncoderType
Addition object _additionObjectType
Formula object _formulaObjectType
Fixed gear _fixedGearType
Controller object _controllerObjectType
Sensor object

_sensorType

数据类型_AXIS_REF不能与以下工艺对象一起使用。

不支持的工艺对象 数据类型
Measuring input measuringInputType
Temperature chael temperatureControllerType
Cam camType
Synchronous object followingObjectType
Path object _pathObjectType
Output cam outputCamType
Output cam track _camTrackType

除了在PLCopen环境中使用之外,_AXIS_REF还可以在一般功能中使用,例如主值的输入块中。

数据类型 ANYOBJECT
数据类型ANYOBJECT可用来替代_AXIS_REF 。
可以将系统中上述所有工艺对象指定为此种数据类型。

应用
例如,可以核对一个轴的操作状态而无需考虑其类型。
下面的程序用来核对传输的工艺对象是否是一个轴对象。轴对象可以是速度轴,位置轴,同步轴或路径轴。
这里使用了类型为 _AXIS_REF 的输入变量。为了确保轴工艺对象已被传输,被传输的工艺对象参考被转换成driveAxis类型。 由于轴工艺对象的固有特性,这种类型转换对所有类型的轴都适用。
使用功能ANYOBJECT_TO_OBJECT 来转换工艺对象的类型。此功能将分层的TO数据类型(速度轴,位置轴,跟随轴)的变量或者通用类型_AXIS_REFANYOBJECT的变量转换成兼容的TO数据类型。如果转换不可行,例如由于不兼容的工艺对象的传输,则值TO#NIL 将被赋值给目标变量。

VAR_INPUT
toAxisRef : _AXIS_REF;
END_VAR

VAR
toDriveAxis : driveAxis;
END_VAR

// Convert from _AXIS_REF to driveAxis
toDriveAxis := ANYOBJECT_TO_OBJECT(toAxisRef);

// Check if conversion succeeded
IF (toDriveAxis <> TO#NIL) THEN
... // E.g. execution of PLCopen commands
ELSE
... // Some kind of error handling
END_IF;

另外一种方法是定义传输工艺对象的具体类型。例如,可以定义传输轴的哪个功能被执行。接下来的程序中确定了传输工艺对象的具体类型,布尔型变量被赋值。

VAR_INPUT
toAxisRef : _AXIS_REF;
END_VAR

VAR
toDriveAxis : driveAxis;
toPosAxis : posAxis;
toFollowingAxis : followingAxis;
toPathAxis : _pathAxis;
toExtEncoder : externalEncoderType;
boIsDriveAxis : BOOL;
boIsPosAxis : BOOL;
boIsFollowingAxis : BOOL;
boIsPathAxis : BOOL;
boIsExtEncoder : BOOL;
END_VAR

boIsDriveAxis := FALSE;
boIsPosAxis := FALSE;
boIsFollowingAxis := FALSE;
boIsPathAxis := FALSE;
boIsExtEncoder := FALSE;

toPathAxis := ANYOBJECT_TO_OBJECT(toAxisRef);
IF (toPathAxis <> TO#NIL) THEN
boIsPathAxis := TRUE;
ELSE
toFollowingAxis := ANYOBJECT_TO_OBJECT(toAxisRef);
IF (toFollowingAxis <> TO#NIL) THEN
boIsFollowingAxis := TRUE;
ELSE
toPosAxis := ANYOBJECT_TO_OBJECT(toAxisRef);
IF (toPosAxis <> TO#NIL) THEN
boIsPosAxis := TRUE;
ELSE
toDriveAxis := ANYOBJECT_TO_OBJECT(toAxisRef);
IF (toDriveAxis <> TO#NIL) THEN
boIsDriveAxis := TRUE;
ELSE
toExtEncoder := ANYOBJECT_TO_OBJECT(toAxisRef);
IF (toExtEncoder <> TO#NIL) THEN
boIsExtEncoder := TRUE;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;

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

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论