This module implements the variables and callback functions for the object dictionary from CiA 404 (analog inputs). The module adds the following objects to the object dictionary:
An example for the module is given inside the file cos404ai_app.c which is located inside the template-cos directory.
Module initialisation
The analog input module is initialised for each individual analog input by calling Cos404_AI_DefaultConfiguration() prior to CosMgrStart(). The order of function calls is important because CosMgrStart() may overwrite parameters of the analog input module in case values have been stored in non-volatile memory (refer to object 1010h).
void Cos404_AI_AppInit(void)
{
uint32_t ulPhysicalUnitT;
memset(&tsConfigurationS, 0, sizeof(Cos404_AI_Config_ts));
tsConfigurationS.ubIdx6112_DefaultOpMode = 1;
tsConfigurationS.ulIdx6101_PhysicalUnitFV = ulPhysicalUnitT;
tsConfigurationS.ubIdx6102_DecimalDigitsInt16FV = COS_DS404_AI_FV_DIGITS_INT16;
tsConfigurationS.ubIdx6102_DecimalDigitsInt32FV = COS_DS404_AI_FV_DIGITS_INT32;
tsConfigurationS.ulIdx6131_PhysicalUnitPV = ulPhysicalUnitT;
tsConfigurationS.ubIdx6132_DecimalDigitsInt32PV = COS_DS404_AI_FV_DIGITS_INT32;
tsConfigurationS.slIdx9148_SpanStart = -100000000;
tsConfigurationS.slIdx9149_SpanEnd = 100000000;
tsConfigurationS.slIdx914A_LowerErrorLimit = -110000000;
tsConfigurationS.slIdx914B_UpperErrorLimit = 110000000;
#if COS_DS404_AI_FILTER > 0
tsConfigurationS.pfnFilterUpdateEvent = Cos404_AI_AppEventFilterUpdate;
#endif
tsConfigurationS.pfnSensorTypeEvent = Cos404_AI_AppEventSensorType;
tsConfigurationS.pfnOperatingModeEvent = Cos404_AI_AppEventOperatingMode;
}
@ eCOS404_AI_ST_VOLT_10V_BIP
Definition cos404ai.h:349
#define COS890_PHYSICAL_UNIT(SiPrefix, SiNumerator, SiDenominator, Profile)
Definition cos890.h:157
@ eCOS890_SI_UNIT_NONE
dimensionless
Definition cos890.h:70
@ eCOS890_SI_UNIT_VOLT
volt [V]
Definition cos890.h:88
@ eCOS890_SI_PREFIX_NONE
no prefix, 100
Definition cos890.h:58
Analog value processing
The values for AI status and AI field value are provided to the module by calling Cos404_AI_SetFieldValue(). To consider the CiA 404 AI filter configuration, the user must call Cos404_AI_Filter() beforehand and provide the filtered value to the Cos404_AI_SetFieldValue() function.
The field value will be scaled according to the scaling parameters defined via index 6126h and 6127h. Additionally, the user can provide a pointer to a scale handler during initialisation that will be called to scale the field value.
void Cos404_AI_AppProcess(void)
{
int32_t slFieldValueT = 10000;
uint8_t ubChannelT;
{
ubChannelT++;
}
}
@ eCOS404_CHANNEL_1
Definition cos404.h:161
void Cos404_AI_SetFieldValue(uint8_t ubChannelV, int32_t slFieldValueV, bool_t btStatusV)
#define COS_DS404_AI
Support CiA 404, analog inputs.
Definition cos_conf.h:249
|
| enum | Cos404_AI_OpMode_e {
eCOS404_AI_OP_MODE_OFF = 0
,
eCOS404_AI_OP_MODE_ON
} |
| enum | Cos404_AI_SensorType_e {
eCOS404_AI_ST_UNKNOWN = 0
,
eCOS404_AI_ST_THERMO_J = 1
,
eCOS404_AI_ST_THERMO_K
,
eCOS404_AI_ST_THERMO_L
,
eCOS404_AI_ST_THERMO_N
,
eCOS404_AI_ST_THERMO_R
,
eCOS404_AI_ST_THERMO_S
,
eCOS404_AI_ST_THERMO_T
,
eCOS404_AI_ST_THERMO_U
,
eCOS404_AI_ST_THERMO_E
,
eCOS404_AI_ST_THERMO_B
,
eCOS404_AI_ST_PT100 = 30
,
eCOS404_AI_ST_PT200
,
eCOS404_AI_ST_PT500
,
eCOS404_AI_ST_PT1000
,
eCOS404_AI_ST_PT5000
,
eCOS404_AI_ST_INFRARED
,
eCOS404_AI_ST_VOLT = 40
,
eCOS404_AI_ST_VOLT_10V_BIP
,
eCOS404_AI_ST_VOLT_10V_UNI
,
eCOS404_AI_ST_VOLT_1V_BIP
,
eCOS404_AI_ST_VOLT_1V_UNI
,
eCOS404_AI_ST_VOLT_100mV_BIP
,
eCOS404_AI_ST_VOLT_100mV_UNI
,
eCOS404_AI_ST_CURR = 50
,
eCOS404_AI_ST_CURR_4_20mA
,
eCOS404_AI_ST_CURR_0_20mA
,
eCOS404_AI_ST_FREQUENCY = 60
,
eCOS404_AI_ST_GAUGE = 70
,
eCOS404_AI_ST_GAUGE_FULL
,
eCOS404_AI_ST_GAUGE_HALF
,
eCOS404_AI_ST_GAUGE_QUARTER
,
eCOS404_AI_ST_LVDT = 80
,
eCOS404_AI_ST_PRESSURE_TRANSDUCER = 90
,
eCOS404_AI_ST_TEMPERATURE_TRANSDUCER = 100
,
eCOS404_AI_ST_FORCE_TRANSDUCER = 110
,
eCOS404_AI_ST_POTENTIOMETER = 120
,
eCOS404_AI_ST_NTC = 140
,
eCOS404_AI_ST_MANUFACTURER_1 = 10000
,
eCOS404_AI_ST_MANUFACTURER_2
,
eCOS404_AI_ST_MANUFACTURER_3
,
eCOS404_AI_ST_MANUFACTURER_4
,
eCOS404_AI_ST_MANUFACTURER_5
} |
| enum | Cos404_AI_Status_te {
eCOS404_AI_STATUS_OK = 0x00
,
eCOS404_AI_STATUS_NOT_VALID = 0x01
,
eCOS404_AI_STATUS_POS_OVERLOAD = 0x02
,
eCOS404_AI_STATUS_NEG_OVERLOAD = 0x04
,
eCOS404_AI_STATUS_SYNC_LOST = 0x08
,
eCOS404_AI_STATUS_TEDS_ERROR = 0x10
,
eCOS404_AI_STATUS_TEDS_PRESENT = 0x20
,
eCOS404_AI_STATUS_DICT_CHANGED = 0x40
,
eCOS404_AI_STATUS_ERROR_LIMIT = 0x80
} |
| enum | Cos404_AI_FilterType_e { eCOS404_AI_FILTER_TYPE_NONE = 0
, eCOS404_AI_FILTER_TYPE_MOVING_AVERAGE = 1
, eCOS404_AI_FILTER_TYPE_REPEATING_AVERAGE = 2
, eCOS404_AI_FILTER_TYPE_MANUFACTURER_01 = 100
, eCOS404_AI_FILTER_TYPE_MANUFACTURER_02 = 101
, eCOS404_AI_FILTER_TYPE_MANUFACTURER_03 = 102
, eCOS404_AI_FILTER_TYPE_MANUFACTURER_04 = 103
} |