![]() |
CANopen Slave Protocol Stack
Version 7.08.00
|
The add-on module CANopen Device Profile CiA 453 provides the object dictionary and API for power supplies and power converters as specified in CiA 453.
The module version is defined by COS_DS453_VERSION_MAJOR and COS_DS453_VERSION_MINOR. Please refer to the history for changes between different versions.
The CiA 453 specification covers programmable and non-programmable power-supply devices with single or multiple outputs. Outputs may be voltage-, current-, or power-controlled. The profile is applicable to AC/AC, DC/DC, AC/DC, and DC/AC converters, including switched-mode and linear-regulated power supplies.
Each device manages its global input circuitry and up to 8 independent outputs. The device and each output are governed by a finite state automaton (FSA) with the states Disabled, Enabled, and Fault:
| State | Description |
|---|---|
| Disabled | Input/output is switched off; no energy is supplied |
| Enabled | Input/output is active; link voltage is in the nominal range |
| Fault | Internal fault detected; input/output has been switched off automatically |
Transitions between states are triggered by local or remote commands (switch-on, switch-off, reset, shutdown). An Emergency message is transmitted whenever the device enters the Fault state.
Programmable devices support two operating modes:
A bank is a group of output parameters (set voltage, current, power, frequency limits and threshold timings) that define one specific work-point. Multiple banks allow preprogrammed operating-point transitions without requiring repeated SDO writes from the controller. The active bank is selected via the bank sub-parameter of the output command object (6200h). The bank data type is specified in complex type 0080h (see Cos453_Bank_ts).
Up to two configurable thresholds are available for each monitored quantity (voltage, current, power, frequency, temperature). Each threshold is paired with a return value to implement hysteresis: the condition activates when the monitored value crosses the threshold and deactivates only after it falls back past the return value. An independent delay time per threshold prevents spurious events on transient excursions.
Threshold logic is configurable per signal: ignore, process (equal interpreted logic), invert (interchanged interpreted logic), process-if-higher, or process-if-lower. A Fault-state field decides whether the event signal triggers a fault state transition.
Additional profile-specific emergency error codes (FF01h – FF14h) map device-level and per-output status and failure conditions to EMCY messages. The object 1029h controls the resulting NMT state transitions.
The module is configured by setting of the following symbols inside the cos_conf.h file:
| Define | Description |
| COS_DS453 | Enable device profile CiA 453 (Power supply); value N selects the number of outputs (1 .. 8) |
Use the header file cos453.h to get access to the CANopen Device Profile CiA 453 API.
The application periodically reads measured values from the hardware and forwards them to the protocol stack using dedicated setter functions:
| Function | Object(s) | Description |
|---|---|---|
| Cos453_SetInputValues() | 6113h | Input actual values (V, I, P, link V, T) |
| Cos453_SetDeviceTemperature() | 6020h | Device (ambient) temperature |
| Cos453_SetOperatingHours() | 6030h | Operating hours counter |
| Cos453_SetOutputActualValues() | 6204h..6274h | Per-output actual values (V, I, P, f, T) |
| Cos453_SetOutputStatus() | 6201h..6271h | Per-output status (condition, event, …) |
| Cos453_SetOutputFailureStatus() | 6202h..6272h | Per-output failure status |
| Cos453_SetInputStatus() | 6111h | Input status |
| Cos453_SetInputFailureStatus() | 6112h | Input failure status |
| Cos453_SetDeviceStatus() | 6011h | Device status |
| Cos453_SetDeviceFailureStatus() | 6012h | Device failure status |
Command objects (6200h..6270h for outputs, 6100h for the input, 6010h for the device) can be written by a controller via SDO or PDO. The application reads the current command state using the corresponding getter functions:
| Function | Object | Description |
|---|---|---|
| Cos453_GetOutputCmd() | 62N0h | Per-output command (operation mode, on/off, …) |
| Cos453_GetInputCmd() | 6100h | Input on/off and quit-failure command |
| Cos453_GetDeviceCmd() | 6010h | Device control mode, lock, self-starting |
The stack notifies the application of command changes via the standard CosMgrProfileUpdate() mechanism. The application then reads the updated command fields and applies the requested hardware action.
The current set values for each output (object 62N5h) are accessed through Cos453_GetBank() and updated through Cos453_SetBank(). The controller selects the active bank via sub-index 04h of the output command object (field ubBank). On receiving a new bank selection the application is responsible for loading the corresponding parameter set and calling Cos453_SetBank() to make it effective. See Bank activation below.
In dynamic mode the device autonomously advances the bank pointer according to the sequence object (62N6h). The application reads and updates the execution state via Cos453_GetOutputSequence() and Cos453_SetOutputSequence().
The application must implement Cos453_ActivateBank(). The stack calls it whenever the ubBank field of an output command object (6200h..6270h) changes — on an SDO write to sub-index 04h or on a PDO update mapping to the same sub-index. ubOutputV is the affected output (1..COS_DS453) and ubBankV is the newly selected bank index.
The function shall load the parameters for the requested bank and call Cos453_SetBank() to make them effective. It returns eCosSdo_WRITE_OK on success or an appropriate error code from CosSdo_e on failure (e.g. eCosSdo_ERR_VALUE_RANGE when ubBankV exceeds the number of available banks).
The template implementation in cos453_app.c uses a static two-dimensional bank table:
| File | Description |
| cos453.h | CiA 453 - Power supply |