CAN Newsletter magazine
This article describes the functionality and the possible relationships of the CANopen objects specified for injectors in CiA 425-2.
The complete article is published in the March issue of the CAN Newsletter magazine 2021. This is just an excerpt.
The object dictionary (OD) implemented on a CANopen-connected injector is a list of objects existing at run-time and accessible by a scanner via the CANopen network. Each object serves a specific purpose. The OD as a whole defines the injector's application functionality. It determines the injector's operation aspects e.g., features, capabilities, communication parameters, injection protocol parameters, and expected behaviors in case of communication loss. The scanner, which controls the injector, learns those aspects by reading the objects from the injector’s OD. The scanner can also influence the injector's behavior by writing new values to the objects, if allowed by the injector. An object can provide a “read-only” (ro), “write-only” (wo), or “read- and-write” (rw) access. An injector may restrict the object's access permission based on its own control measures or safety requirements.
An object in the OD can be one of the two object types: simple and complex. A simple object (variable), contains a single data piece with the data-type (Boolean, Unsigned8, etc.) as specified in CiA 301. A complex object (array or record) contains multiple pieces of data. These pieces may have the same data type (array) or different data-types (record). Each object in the OD is addressed with a 16-bit index and an 8-bit sub-index (00h for variables; 00h to FEh for arrays or records). Each object can be accessed by a scanner using the SDO (service data object) service.
As mentioned above, the OD exists only at the run- time. Once the injector starts up, its OD, with all objects populated with default values, becomes accessible to the scanner. As some of the objects (e.g. 1016h, 6070h) have invalid default values, the scanner has to configure them via SDO.
When the injector shuts down, all object values (including the configured) are lost, as object 1010h (store parameters) may not be supported by the injector. Every time the injector starts up (or resets), the scanner must re-configure certain objects. An electronic data sheet (EDS) is a file that lists all the objects (and their default values) supported by an injector. Using the injector’s EDS file, the scanner knows which objects the injector supports, and which objects have to be configured.
The OD is divided into communication profile area (objects 1000h to 1FFFh, e.g. heartbeat), manufacturer- specific profile area (2000h to 5FFFh, not specified objects), and standardized profile area (6000h to 67FFh). The standardized profile area objects in CiA 425-2 specify the com- mon application functionality of an injector (see table 1). The objects of the category “conditional” may have to be implemented depending on the injector compliance class.
The scanner identity object (6070h) includes the scanner's CANopen vendor-ID, product code, revision number, and serial number. After the injector starts up or resets, the scanner has to identify itself to the injector by providing this object with appropriate data. Otherwise, the injector will not communicate with the scanner for security reasons. The injector's identity (same object type as 6070h) is specified in object 1018h. Upon the injector's startup, the scanner can read this object to determine whether it should provide its own identity to the injector.
Object 6073h specifies the CiA 425-1 and CiA 425-2 versions supported by the injector. A scanner reads this object during configuration to interpret the injector objects correctly, as their definitions could have been changed between versions (e.g. 6028h).
Object 6000h contains the scanner command, which the injector receives via RPDO 1 (receive process data object). Among others, it causes a transition from the current injector FSA (finite state automaton) state to a new state. On a successful state transition, the injector stores a status word (with the new state) in object 6001h and transmits the object value to the scanner via TPDO 1 (transmit PDO). If the injector fails to execute the state transition, it sends an emergency message. Then, it sends a copy of the status word still containing the current state. Object 6006h specifies whether (and which) state transition an injector will perform in case of communication loss during an injection. The scanner reads this object during configuration, so it knows what to expect when communication loss occurs.
Object 6007h provides the functions supported by an injector. This 32-bit object currently defines 7 bit (see table 2).
Some injector functions (global attributes) can be controlled remotely by the scanner via the "set global attributes" command (see 6000h). Object 6008h is an array with two 16-bit sub-indices (see table 3). Sub-index 1 indicates which global attributes the injector has implemented (bit = 0), meaning that they can be controlled locally by the injector. Since these are the injector's implementation details, sub-index 1 has “ro” as access. Sub-index 2 indicates which global attributes (from those implemented by the injector) are further granted permission to be also controlled remotely by the scanner (bit = 1). However, there exist disagreement among the SIG (special interest group) contrast media injector members about which device should grant the permission for the remote control. If it is the injector, sub-index 2 should have the “ro” access type. But if it is the scanner, sub-index 2 should be “rw”. In the current version of CiA 425-2, sub-index 2 is “rw”. The author thinks that sub-index 2 should be “ro”. In other words, the injector should decide which global attributes can be remotely controlled. For example, an injector may support an XDS (extravasation detection system) as an accessory (sub- index 1: bit 3 = 0 i.e. implemented), but it may not allow the scanner to remotely activate it due to the injector's own safety requirements (sub-index 2: bit 3 = 0 i.e. not supported). In such cases, the injector will not delegate the permission to the scanner.
Object 6002h indicates what kind of injection an injector can perform, such as CT, CV, or MR injection. In addition, bit 0 indicates whether remote arming is allowed, which requires that the injector supports remote arming (6007h: bit 0 = 1, see table 2). Interestingly, this object has the “rw” access permission in the idle state and in any of the configuration states. This implies that a scanner is potentially able to configure this object so that, for example, a CT injector can be turned into an MR injector. This is unlikely to happen. So, this object is usually implemented as “ro” in all injector states.
Object 600Dh indicates the maximum configurable volume of an injection protocol to use for each fluid type (see 6050h below). This is the total capacity of all syringes filled with the same fluid type. Each sub-index of this array represents one syringe (or piston) type. Object 601Ah indicates the maximum allowed pressure for the syringes installed on the injector. It applies to all injection phases. Originally, object 6028h indicated the maximum configurable total flow rate for each injection protocol phase. For a dual-flow phase, it was the total of the two involved flow rates. Since CiA 425 version 2.2.0 the meaning of this object has changed. Now it means the maximum flow rate for each syringe (or piston). Therefore, the word "total" in the object's name is no longer appropriate.
Object 6050h indicates the fluid type (e.g. contrast media, saline) in each syringe (represented by a sub- index). The highest bit of each sub-index value also indicates whether that syringe is in service. Object 6051h (array) indicates the maximum number of possible phases (sub-index 1), the maximum number of injection phases (sub-index 2) and the maximum number of delay phases (sub-index 3, see also 6020h).
News and reports