Equipment
This section gives an overview over all objects that may act as equipment of a Unit and may be utilized in a unit's sequence. Equipment objects are usually objects that can be linked to the fieldbus. However, all equipment objects are capable to simulate the hardware such that these objects are functional without hardware.
Simulation of hardware, if not documented otherwise for a specific object, can be switched on & off by using the dedicated SetSimulation methods. These methods often have parameters to tune how an object is simulated. For details, refer to the documentation of the object in question.
Although some objects allow "on-the-fly" switching between simulation and "normal" mode, this setting should only be touched during the first initialization (boot).
The following tutorials will guide you through the basic usage of some of these equipment objects:
- Digital Inputs and Outputs
- Analog Inputs and Outputs
- Actuators
- Axis PlcOpenMotion
- Axis Stepper
- PWM Controller
- ... more to come
Actuators
Actuators in the Zeugwerk Framework are pneumatic cylinders. There are several objects available such that most configurations are supported out of-the-box. We distinguish between bistable actuators Bi and monostable actuators. While the former actuators use two digital outputs, the ladder uses only one output (either in minus or plus direction). There are also several variants of limit switches Ls. The framework provided all possible permutations for digital outputs and inputs, respectively. Also, for users that do not use the framework in its full form by using the Zeugwerk Template, unmanaged variants are available for all objects. These object provide a cyclic method that can be called manually.
- ActuatorDigitalBiLsPlusMinus (managed and unmanged)
- ActuatorDigitalBiLsPlus (managed and unmanged)
- ActuatorDigitalBiLsMinus (managed and unmanged)
- ActuatorDigitalBiLsNo (managed and unmanged)
- ActuatorDigitalMonoMinusLsPlusMinus (managed and unmanged)
- ActuatorDigitalMonoMinusLsPlus (managed and unmanged)
- ActuatorDigitalMonoMinusLsMinus (managed and unmanged)
- ActuatorDigitalMonoMinusLsNo (managed and unmanged)
- ActuatorDigitalMonoPlusLsPlusMinus (managed and unmanged)
- ActuatorDigitalMonoPlusLsPlus (managed and unmanged)
- ActuatorDigitalMonoPlusLsMinus (managed and unmanged)
- ActuatorDigitalMonoPlusLsNo (managed and unmanged)
Digital Inputs/Outputs
Simple
The following objects contain variables that can be directly linked to the fieldbus. They are capable to simulate the fieldbus and provide helper methods to simplify working with IOs. These objects can be used "as is", there is only a bare minimum of configuration that has to be taken care of in case of analog interface for unit conversion. For details on how to configure this specific IO, refer to the documentation of the object in question.
- AnalogInput2Byte
- AnalogInputDint
- AnalogInputDword
- AnalogInputInt
- AnalogInputReal
- AnalogInputUdint
- AnalogInputUint
- AnalogInputWord
- AnalogOutput2Byte
- AnalogOutputDint
- AnalogOutputDword
- AnalogOutputInt
- AnalogOutputReal
- AnalogOutputUdint
- AnalogOutputUint
- AnalogOutputWord
- DigitalInput
- DigitalOutput
- DigitalArray
Advanced
These objects provide all functions that are simple digital interfaces (see above). However, in contrast to simple digital interfaces, they also provide more sophisticated methods that require to call these object cyclically. The latter can be taken care of in the Zeugwerk Framework context by providing a parent that calls the object automatically each cycle (Managed object) or manually, by calling the cyclic method of the UM Unmanaged-object-variant (UM).
- DebouncedInput (managed and unmanaged)
- ImpulseOutput (managed and unmanaged)
- Light (managed and unmanged)
- PulsedOutput (managed and unmanged)
- OnOffController (managed and unmanged)
Fieldbus
The equipment of an automated system is usually connected to a PLC by a proper fieldbus and in most cases in the Codesys universe, Ethercat is the fieldbus of choice. However, mastering the Ethercat statemachine, fetching errors or simply writing or reading parameters can surely be done with Ethercat and we provide proper objects for this usecase.
- EthercatSlave (managed and unmanaged
- EthercatMaster (managed and unmanaged)
- EthercatSyncUnit (managed and unmanaged)
Axes / Drives
The usual implementations of PLCopen's technicial specification such as Beckhoff's NC Motion allow to control drives from a huge varity of different vendors using the same API. This is convienent, but most implementation of PLCopen's specification are done by calculating the movement trajectory by a motion controller or on the same computer the PLC runs on. Also, the specification is not object-orientated and doesn't fit well in the framework in this regard.
The framework offers an object-orientated API to interact with (single) drives. While the MC implementation is a wrapper around the PLCopen specification (in case of Beckhoff Tc2_MC2) other implementation are (will be) using the respective drive in a direct way by utilizing Sercos-over-Ethercat (SoE) or CAN-over-Ethercat (CoE). The direct implementations utilize the drives for calculating motion profiles: this takes away a lot of load from the IPC.
ZEquipmentCiA402 (CiA 402 on EtherCAT)
ZEquipmentCiA402 covers multiple vendors and axis types (for example Lenze, Keba, and Servotronix) under one library. The table below lists them together with the other axis implementations and shows which motion features they support.
| Feature | Base | H | B | P | V | I |
|---|---|---|---|---|---|---|
| Simulated Axis (ZEquipment.AxisSimulated) | x | x | x | x | x | x |
| Beckhoff NcMotion (ZEquipment.AxisPlcOpenMc) | x | x | - | x | x | - |
| Beckhoff EL70xx Position Control (ZEquipmentBeckhoff.AxisStepperEL70xx) | x | x | - | x | - | |
| Beckhoff EL7031 Position Control (ZEquipmentBeckhoff.AxisStepperEL7031) | x | x | - | x | - | |
| Beckhoff EL7031_0030 Position Control (ZEquipmentBeckhoff.AxisStepperEL7031_0030) | x | x | - | x | - | |
| Beckhoff EL70xx Position Interface (ZEquipmentBeckhoff.AxisStepperEL70xx) | x | x | - | x | x | |
| Beckhoff EL7031 Position Interface (ZEquipmentBeckhoff.AxisStepperPositionControlEL7031) | x | x | - | x | x | |
| Beckhoff EL7031_0030 Position Interface (ZEquipmentBeckhoff.AxisStepperPositionControlEL7031_0030) | x | x | - | x | x | |
| Lenze i550 Inverter (ZEquipmentCiA402.AxisLenzei550) | x | x | - | - | x | |
| Keba DriveD3 (ZEquipmentCiA402.AxisKebaDriveD3) | x | x | x | x | x | |
| Servotronix StepIm (ZEquipmentCiA402.AxisServotronixStepIm) | x | x | x | x | x | |
| Bosch IndraDriveCs (ZExperimental.AxisIndraDriveCs) | x | x | x | x | x | x |
| Lenze i950 (ZExperimental.AxisLenzei950) | x | x | x | x | x | x |
| OmronMx2Rx Inverter (ZExperimental.AxisOmronMx2Rx) | x | x | - | - | x | - |
| Technosoft iPos48xx (ZExperimental.AxisTechnosoftiPos48xx) | x | x | x | x |
Base ... Interfaces for getting feedback for position, velocity, current (as available by the drive), the motion status, enabling/disabling the axis, ...
H ... Homing
B ... Brake
P ... Positioning (absolute and relative)
V ... Moving with constant velocity
I ... Moving interpolated with parameters the PLC provides
x ... Feature is fully supported
_ ... Feature is incompletely implemented or missing
- ... Feature is not implemented by the drive