Table of Contents

IAxisBase

Namespace
ZEquipment
Extends
Inherited Properties
Inherited Methods
INTERFACE IAxisBase EXTENDS ZCore.IObject, ZCore.IBootable, ZCore.IError

This interface bundles methods and functionality, which is usually supported by an axis implementation. It covers methods to get the current state of an axis like

and methods to manipulate the state of an axis, which are commonly used for drives, no matter of the drive is meant to power a stepper method, variable-frequency drive, servo drive, ...

By implementing IObject any axes can be used in combination with common methods like Assert, Await and so on.

Properties

ActualMotionState

PROPERTY ActualMotionState : AxisMotionState

Property Value

AxisMotionState

ActualSafetyState

PROPERTY ActualSafetyState : AxisSafetyStateFlags

This property can be used to test if a given safety feature of a drive is currently activated or not. Note that the property returns a "Flags" enumeration, which means that several bits of the returned value can be on at the same time.

Note

Retrieving the safety state of a drive is manufacturer specific.

  • Some drives may not support some of the features that are depicted in the returned value (some bits may always be 0).
  • Generic axes implementation (i.e. AxisPlcOpenMc) of the Zeugwerk Framework usually do not return the correct safety state of the drive. In doubt refer to the documentation of your specific implementation.

Property Value

AxisSafetyStateFlags

DriveEnabled

PROPERTY DriveEnabled : BOOL

This property can be used to check if an axis is powered by its drive. On the one hand, after successfully running an enable drive command with EnableDriveAsync(on:=TRUE) it is expected that this property is returning TRUE. On the other hand, after successfully executing EnableDriveAsync(on:=FALSE) it is expected that this property is returning FALSE.

If the STO of a drive is active or not enabled for any other reason, this property returns FALSE as well.

Property Value

BOOL

DrivePowered

PROPERTY DrivePowered : BOOL

This property returns TRUE if the drive itself is powered and can provide power to an axis by calling EnableDriveAsync. If this property returns FALSE usually an emergency-stop is pressed or power is missing for some other reason.

Property Value

BOOL

DriveStateAsString

PROPERTY DriveStateAsString : ZCore.ZString

Returns the current state of the drive as string. The returned string may differ may differ severly between implementations, manufactures and depends if the axis is simulated or not. So, this should only be used for logging, debugging and visualization and not be linked to any logic.

Property Value

ZString

Manufacturer

PROPERTY Manufacturer : ZCore.ZString

Returns the manufacturer name of the axis as human-readable text

Property Value

ZString

Parked

PROPERTY Parked : BOOL

Axes can be parked by calling ParkAsync(on:=TRUE). Parking means that any cyclic methods are skipped after executing a parking sequence. If this property returns TRUE, an axis can be "unparked" by using ParkAsync(on:=FALSE).

Property Value

BOOL

Simulation

PROPERTY Simulation : BOOL

This property has to be overwritten by an actual axis implementation (i.e. AxisPlcOpenMc). It is used to switch the axis from a physical instance (i.e. AxisPlcOpenMcImpl) to a simulated axis-instance (i.e. AxisSimulatedImpl).

Settings this property with TRUE or FALSE takes care of automatically parking the unused axis instance and starting the booting sequence for the axis instance that should be used.

Property Value

BOOL

Methods

EnableDriveAsync

METHOD EnableDriveAsync (
 [input] startToken : ZCore.IStartToken,
 [input] on : BOOL)

By using this method the power output of a drive to an axis can be enabled (on:=TRUE) or disabled(on:=FALSE), respectively. Calling this method will beforehand automatically trigger the following sequences

  • Unlock the drive if it has been locked before (AxisPlcOpenMc only)
  • Reset any drive errors if there are still errors, which have not been acknowledged yet
  • Write parameters to the drive that have been requested to read or write by using the Parameter property of each specialised axis

Executing this method while the drive is still Busy with another Async command will cause this method to fail. This can be checked by submitting an StartToken as a startToken. Simply pass such an object and Assert it or check for startToken.Error after calling this method.

Inputs

startToken IStartToken

pass an StartToken instance here to check if the call was successfully executed

on BOOL

enable the power output of a drive and put the motor in controlling state on:=TRUE, disable the drive by providing on:=FALSE

Name

METHOD Name () : ZCore.ZString

Returns the names of all objects that are used within this axis and were set by calling [SetName](xref:ZEquipment.IAxisBase#SetName].

This method should be used with care. It copies several strings and should be called rarely and that means of course not every cycle, but only at initialization phases.

Returns

ZString

ParametrizeAsync

METHOD ParametrizeAsync (
 [input] startToken : ZCore.IStartToken)

This method executes parametrization to the drive. Parameters to read and write can be set-up by using the Parameter property of each axis. Usually this method doesn't have to be called manually, because most other Async method of an axes are calling this method automatically internally. However, use this method if reading or writing is explicitly required at a specific point in the PLC.

Executing this method while the drive is still Busy with another Async command will cause this method to fail. This can be checked by submitting an StartToken as a startToken. Simply pass such an object and Assert it or check for startToken.Error after calling this method.

Inputs

startToken IStartToken

pass an StartToken instance here to check if the call was successfully executed

ParkAsync

METHOD ParkAsync (
 [input] startToken : ZCore.IStartToken,
 [input] on : BOOL)

This method can be used to skip any internal cyclic method. Parking an axes and then "unparking" it will automatically execute a booting sequences, where the PLC variables are reinitialized. Parking is usually needed for drives that are optional for a machine and can be hotplugged.

Executing this method while the drive is still Busy with another Async command will cause this method to fail. This can be checked by submitting an StartToken as a startToken. Simply pass such an object and Assert it or check for startToken.Error after calling this method.

Inputs

startToken IStartToken

pass an StartToken instance here to check if the call was successfully executed

on BOOL

ResetErrorAsync

METHOD ResetErrorAsync (
 [input] startToken : ZCore.IStartToken)

By using this method any remaining unacknowledged errors on the drive are reset. Usually this method doesn't have to be called manually, because most other Async method of an axes are calling this method automatically internally. However, use this method if resetting the error manually is required for some reason.

  • Unlock the drive if it has been locked before (AxisPlcOpenMc only)
  • Write parameters to the drive that have been requested to read or write by using the Parameter property of each specialised axis

Executing this method while the drive is still Busy with another Async command will cause this method to fail. This can be checked by submitting an StartToken as a startToken. Simply pass such an object and Assert it or check for startToken.Error after calling this method.

Inputs

startToken IStartToken

pass an StartToken instance here to check if the call was successfully executed

SetLogger

METHOD SetLogger (
 [input] logger : ZCore.ILogger)

Use this method together with SetName to enable logging for this axis. Various methods of this implementation write log messages into the passed logger interface.

Note

Sometimes it is beneficial to disable logging by passing 0 to this method (e.g. for inputs or outputs which are switch very often).

Inputs

logger ILogger

interface of a logger instance or a logger decorator instance

SetName

METHOD SetName (
 [input] name : ZCore.ZString)

Sets the name of this object as it will show up in any log messages that is created by this object. The name set with this method should be relatable to the name of the input in the electrical plan of your automation project to identify the corresponding input properly.

Inputs

name ZString

name of the object, should match the name of the equipment list e.g. in the electrical plan

StopAsync

METHOD StopAsync (
 [input] startToken : ZCore.IStartToken)

By using this method the drive will stop with the quickstop profile (regarding jerk, acceleration and deceleration), usually this profile is quicker than the normal position profile, which is used for normal movement profiles and sometimes also for halt. Calling this method will beforehand automatically trigger the following sequences

To check if the method could be started successfully pass such an StartToken as a startToken. Then Assert this object or check for startToken.Error. However, usually StopAsync can always be called, only some very specific implementations may behave differently. In doubt, refer to the documenation of a specific implementation.

Note

If an ongoing task was started with an ExecutionToken as the token parameter (e.g. _axis.AxisName.MoveAbsolutAsync(THIS^) in a Sequence), it gets informed (aborted), if not the same ExecutionToken is used here with this call.

Inputs

startToken IStartToken

pass an StartToken instance here to check if the call was successfully executed