480 lines
26 KiB
C
480 lines
26 KiB
C
//
|
||
// Created by cfif on 05.04.2024.
|
||
//
|
||
|
||
#ifndef HVAC_LIN_TASKS_H
|
||
#define HVAC_LIN_TASKS_H
|
||
|
||
#include <cmsis_os.h>
|
||
#include "LinIO.h"
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint16_t INI_CPOS: 15;
|
||
uint8_t unused: 1;
|
||
uint8_t Not_Used_INI;
|
||
} ACT_CFR_INI;
|
||
|
||
// Stalldetection is active (LIN_STALL_SET_ON):
|
||
// Actuator stops at an Endstop
|
||
// Stalldetection is deactivated (LIN_STALL_SET_OFF):
|
||
// Actuator stop at an mechanical Endstop and tries to move further till its internal counter has reached FPOS.
|
||
|
||
// Функция обнаружения заклинивания активна (LIN_STALL_SET_ON):
|
||
// Привод останавливается на концевом выключателе
|
||
// Функция обнаружения заклинивания деактивирована (LIN_STALL_SET_OFF):
|
||
// Привод останавливается на механическом концевом выключателе и пытается двигаться дальше, пока его внутренний счётчик не достигнет FPOS.
|
||
|
||
typedef enum {
|
||
LIN_STALL_SET_ON = 1,
|
||
LIN_STALL_SET_OFF = 0,
|
||
} eStall_SET;
|
||
|
||
// LIN_LNOISE_SET_ON:
|
||
// Actuator moves with reduced torque and thus with
|
||
// LIN_LNOISE_SET_OFF:
|
||
// reduced noise level Actuator moves with nominal full step
|
||
|
||
// LIN_LNOISE_SET_ON:
|
||
// Привод движется с уменьшенным крутящим моментом и, следовательно, с пониженным уровнем шума.
|
||
// LIN_LNOISE_SET_OFF:
|
||
// Привод движется с номинальным полным шагом.
|
||
|
||
typedef enum {
|
||
LIN_LNOISE_SET_ON = 1,
|
||
LIN_LNOISE_SET_OFF = 0,
|
||
} eLnoise_SET;
|
||
|
||
// LIN_AUTOS_SET_ON:
|
||
// Actuator moves like a brushless DC actuator with maximum speed
|
||
// LIN_AUTOS_SET_OFF:
|
||
// Actuator moves in Steppmode
|
||
|
||
// LIN_AUTOS_SET_ON:
|
||
// Актуатор движется как бесщёточный актуатор постоянного тока с максимальной скоростью
|
||
// LIN_AUTOS_SET_OFF:
|
||
// Актуатор движется в пошаговом режиме
|
||
|
||
typedef enum {
|
||
LIN_AUTOS_SET_ON = 1,
|
||
LIN_AUTOS_SET_OFF = 0,
|
||
} eAutos_SET;
|
||
|
||
// Definition of the step frequency, that refers to the following speed of the output shaft
|
||
// Определение шаговой частоты, которая относится к последующей скорости выходного вала
|
||
|
||
typedef enum {
|
||
LIN_SPEED_SET_0 = 0, // 0 to 2,25 rpm
|
||
LIN_SPEED_SET_1 = 1, // > 2,25 to 3,0 rpm
|
||
LIN_SPEED_SET_2 = 2, // > 3,0 to 4,0 rpm
|
||
LIN_SPEED_SET_3 = 3 // > 4,0 to x rpm
|
||
} eSpeed_SET;
|
||
|
||
// 0
|
||
// short time coil supply 100ms (optional) кратковременное питание катушки 100 мс (опционально)
|
||
// no permanent coil supply (optional) нет постоянного питания катушки (опционально)
|
||
|
||
// 1
|
||
// long time coil supply 100ms (optional) длительное время питания катушки 100 мс (опционально)
|
||
// no permanent coil supply (optional) нет постоянного питания катушки (опционально)
|
||
|
||
// 2
|
||
// short time coil supply 100ms (optional) кратковременное питание катушки 100 мс (опционально)
|
||
// permanent coil supply for holding torque (optional) постоянное питание катушки для удерживающего момента (опционально)
|
||
|
||
// 3
|
||
// long time coil supply 100ms (optional) длительное время питания катушки 100 мс (опционально)
|
||
// permanent coil supply for holding torque (optional) постоянное питание катушки для удерживающего момента (опционально)
|
||
|
||
typedef enum {
|
||
LIN_COILS_STOP_SET_0 = 0, // 0 to 2,25 rpm
|
||
LIN_COILS_STOP_SET_1 = 1, // > 2,25 to 3,0 rpm
|
||
LIN_COILS_STOP_SET_2 = 2, // > 3,0 to 4,0 rpm
|
||
LIN_COILS_STOP_SET_3 = 3 // > 4,0 to x rpm
|
||
} eCoils_Stop_SET;
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint16_t FINAL_POS: 15;
|
||
uint8_t unused: 1;
|
||
uint8_t Unused_SET: 1;
|
||
eStall_SET Stall_SET: 1;
|
||
eLnoise_SET Lnoise_SET: 1;
|
||
eAutos_SET Autos_SET: 1;
|
||
eSpeed_SET Speed_SET: 2;
|
||
eCoils_Stop_SET Coils_Stop_SET: 2;
|
||
} ACT_CFR_SET;
|
||
|
||
// Using this service the master can switch an actuator to a needed functional mode.
|
||
// Используя эту услугу, мастер может переключить привод в необходимый режим работы.
|
||
|
||
typedef enum {
|
||
LIN_MODE_NORMAL = 0,
|
||
LIN_MODE_SERVICE = 1,
|
||
LIN_MODE_STOP = 2
|
||
} eMode_Mod;
|
||
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
eMode_Mod Mode_Slave: 2;
|
||
uint8_t Unused: 6; // Установить в 0xFF
|
||
uint8_t Data2_Mod; // Установить в 0xFF
|
||
uint8_t Data3_Mod; // Установить в 0xFF
|
||
} ACT_CFR_MOD;
|
||
|
||
|
||
// The ACT_DFR_STA sent by the master selects the actuator which must prepare its status response. This service is a combined one and requires that the
|
||
// next command to be send by the master will be the ACT_RFR_STA; Identifier: 0x A3, to poll the slave response. Only the actuator selected by the
|
||
// ACT_DFR_STA must answer to the ACT_RFR_STA.
|
||
|
||
// Сигнал ACT_DFR_STA, отправленный ведущим устройством, выбирает исполнительный механизм, который должен подготовить свой ответ о состоянии.
|
||
// Это комбинированная служба, требующая, чтобы следующей командой, отправленной ведущим устройством, была
|
||
// ACT_RFR_STA; Идентификатор: 0xA3, для опроса ответа ведомого устройства. Только исполнительный механизм, выбранный
|
||
// ACT_DFR_STA, должен ответить на сигнал ACT_RFR_STA.
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint8_t Data1_DFR_STA; // Установить в 0xFF
|
||
} ACT_DFR_STA;
|
||
|
||
// Emergency Run Conditions have been detected and will be indicated with the bit set to 0. No Emergency Run Conditions have been detected and that’s indicated with the bit set to 1.
|
||
// The flag will be reset to 1 with the correct sending of this status response to the master. The master can read this information only one time.
|
||
|
||
// Обнаружены условия аварийного запуска, что будет отображено битом, установленным в 0. Условия аварийного запуска не обнаружены, что будет отображено битом, установленным в 1.
|
||
// Флаг будет сброшен в 1 при корректной отправке этого ответа о состоянии ведущему устройству. Ведущее устройство может прочитать эту информацию только один раз.
|
||
|
||
typedef enum {
|
||
LIN_EMERGENCY_RUN_YES = 0,
|
||
LIN_EMERGENCY_RUN_NO = 1,
|
||
} eEmrf_Slave_STA;
|
||
|
||
|
||
// The actuator will set this bit, when it has detected an endstop or a block during its movement (Stall).
|
||
//The StD flag can only be set if the stall detection is enabled.
|
||
//When a stall is detected (StD flag = 1) the FPOS is set to CPOS. Thus the actuator will not move automatically after erase of the StD flag from master.
|
||
//The master has to send a _SET command to restart it.
|
||
//As long the STALL flag is set all _SET commands are ignored.
|
||
//The set flag will be reset with the correct sending of this status response to the master.
|
||
|
||
// Привод установит этот бит, когда обнаружит концевой упор или блокировку во время движения (остановку).
|
||
// Флаг StD может быть установлен только при включенном обнаружении остановки.
|
||
// При обнаружении остановки (флаг StD = 1) FPOS устанавливается в CPOS. Таким образом, привод не будет двигаться автоматически после стирания флага StD ведущим устройством.
|
||
// Для перезапуска ведущему устройству необходимо отправить команду _SET.
|
||
// Пока установлен флаг STALL, все команды _SET игнорируются.
|
||
// Флаг установки будет сброшен при корректной отправке этого ответа о состоянии ведущему устройству.
|
||
|
||
typedef enum {
|
||
LIN_STALL_STA_ON = 1,
|
||
LIN_STALL_STA_OFF = 0,
|
||
} eStall_STA;
|
||
|
||
|
||
// POR occurred, new initialisation required
|
||
// (1) These flags do activate the Error flag in the ISSRx when they are set
|
||
// The ResetIntern flag has to be set with each internal power on reset.
|
||
// The set flag will be reset with a defined ACT_CFR_INI. With that command the correct position has to be transferred or an initialisation routine has to be started.
|
||
|
||
// Произошла ошибка POR, требуется новая инициализация
|
||
// (1) Эти флаги активируют флаг ошибки в ISSRx, когда они установлены.
|
||
// Флаг ResetIntern должен быть установлен при каждом внутреннем сбросе при включении питания.
|
||
// Установленный флаг будет сброшен с помощью заданногоACT_CFR_INI. С помощью этой команды необходимо передать корректное положение или запустить процедуру инициализации.
|
||
|
||
typedef enum {
|
||
LIN_RESET_STA_ON = 1,
|
||
LIN_RESET_STA_OFF = 0,
|
||
} eReset_STA;
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint16_t CPOS_ALL: 15;
|
||
eEmrf_Slave_STA Emrf_Slave: 1;
|
||
eMode_Mod Mode_Slave: 2;
|
||
uint8_t Error1_Supply_Slave: 1;
|
||
uint8_t Error2_Communication_Slave: 1;
|
||
uint8_t Error3_Temperature_Slave: 1;
|
||
uint8_t Error4_Permanent_Electrical_Slave: 1;
|
||
eStall_STA Stall_Slave: 1;
|
||
eReset_STA Reset_Slave: 1;
|
||
} ACT_RFR_STA;
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint8_t Data1_DFR_IDE; // Установить в 0xFF
|
||
} ACT_DFR_IDE;
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint8_t IDE_ref;
|
||
uint8_t IDE_Sup;
|
||
uint8_t IDE_Har;
|
||
} ACT_RFR_IDE;
|
||
|
||
// This service is used to process the auto-addressing of the actuators. The process of current measurement will be done the ECU executes an extended Synch
|
||
// Break of more or equal of 18 Tbit, directly with the following command after this ACT_CFR_ADDR.
|
||
// A slaves participates in autoaddressing if the following conditions are fulfilled:
|
||
// The slave is in Service Mode
|
||
// The slave has not yet reseted its internal addressing flag during the current autoaddressing process. That means that the slaves has not yet detected himselve to be
|
||
// the last one in the chain and has not yet taken over a final address.
|
||
// The master must send the address 20h in data 0 of CFR_ADDR (Group, Item) as common address for both actuator groups during autoaddressing.
|
||
// The master has to make sure that the final address (data 1) is within the actuators address range (actuator group 1 and 2).
|
||
|
||
// Эта служба используется для обработки автоадресации исполнительных механизмов. Процесс измерения тока будет выполнен, когда ЭБУ выполняет расширенный синхроразрыв
|
||
// на 18 Тбит или более, непосредственно со следующей командой после ACT_CFR_ADDR.
|
||
// Ведомое устройство участвует в автоадресации, если выполнены следующие условия:
|
||
// Ведомое устройство находится в сервисном режиме
|
||
// Ведомое устройство еще не сбросило свой внутренний флаг адресации во время текущего процесса автоадресации. Это означает, что ведомое устройство еще не определило себя
|
||
// как последнее в цепочке и еще не приняло конечный адрес.
|
||
// Ведущее устройство должно отправить адрес 20h в поле данных 0 CFR_ADDR (Группа, Элемент) в качестве общего адреса для
|
||
// обеих групп исполнительных механизмов во время автоадресации.
|
||
// Ведущее устройство должно убедиться, что конечный адрес (данные 1) находится в диапазоне адресов исполнительных устройств (группы исполнительных устройств 1 и 2).
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint8_t BUS_NEW_ADR;
|
||
} ACT_CFR_ADDR;
|
||
|
||
// NOTL_DREH_Master:
|
||
// If enabled (see next paragraph), the Emergency Run (after general bus time out) has to be executed in direction to the high low end stop
|
||
// If enabled (see next paragraph), the Emergency Run (after general bus time out) has to be executed in direction to the low high end stop
|
||
// Thus the direction of turn of the output shaft during an emergency run depends on the ACT_CFR_PRG_Direction.
|
||
|
||
// Если включено (см. следующий абзац), аварийный ход (после истечения времени ожидания общей шины) должен быть выполнен в направлении к верхнему нижнему концевому упору.
|
||
// Если включено (см. следующий абзац), аварийный ход (после истечения времени ожидания общей шины) должен быть выполнен в направлении к нижнему верхнему концевому упору.
|
||
// Таким образом, направление вращения выходного вала во время аварийного хода зависит от ACT_CFR_PRG_Direction.
|
||
|
||
// NOTL_ENAB_Master:
|
||
// Аварийный запуск не требуется выполнять после истечения времени ожидания общей шины.
|
||
// Аварийный запуск должен выполняться после истечения времени ожидания общей шины.
|
||
// Во время аварийного запуска необходимо активировать функцию обнаружения опрокидывания, чтобы избежать механических повреждений и шума в концевом останове.
|
||
|
||
// DREH_Master:
|
||
// Actuator has to move cw with CPos > FPos
|
||
// Actuator has to move ccw with CPos < FPos
|
||
// Actuator has to move cw with CPos < FPos
|
||
// Actuator has to move ccw with CPos > FPos
|
||
|
||
// Актуатор должен двигаться по часовой стрелке с CPos > FPos
|
||
// Актуатор должен двигаться против часовой стрелки с CPos < FPos
|
||
// Актуатор должен двигаться по часовой стрелке с CPos < FPos
|
||
// Актуатор должен двигаться против часовой стрелки с CPos > FPos
|
||
|
||
// Motor, Baudrate, Free:
|
||
// These bits are free for actuator specific use. The definition is included in the Implementation chapter.
|
||
// Эти биты доступны для использования с конкретными приводами. Определение приведено в главе «Реализация».
|
||
|
||
// Version_CFR:
|
||
// ProductNumber
|
||
// This Reference of the product, has to be incremented each time major changes have been done on the hardware of the actuator (e.g. PCB, Mechanic, ASIC- HW, a.s.o.
|
||
// Этот артикул изделия необходимо увеличивать каждый раз после внесения существенных изменений в аппаратную часть привода (например, печатная плата, механика, ASIC-аппаратура и т.д.).
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint8_t BUS_NEW_ADR;
|
||
uint8_t NOTL_DREH_Master: 1;
|
||
uint8_t NOTL_ENAB_Master: 1;
|
||
uint8_t DREH_Master: 1;
|
||
uint8_t Motor: 3;
|
||
uint8_t Baudrate: 1;
|
||
uint8_t Free: 1;
|
||
uint8_t Version_CFR;
|
||
} ACT_CFR_PRG;
|
||
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint8_t Data1_DFR_PRG; // Установить в 0xFF
|
||
} ACT_DFR_PRG;
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BUS_ADR;
|
||
uint8_t BUS_NEW_ADR;
|
||
uint8_t NOTL_DREH_Master: 1;
|
||
uint8_t NOTL_ENAB_Master: 1;
|
||
uint8_t DREH_Slave: 1;
|
||
uint8_t ParitySlave: 1;
|
||
uint8_t Free: 4;
|
||
uint8_t Version_CFR;
|
||
} ACT_RFR_PRG;
|
||
|
||
|
||
// With this service the master can request a demanded actuator for the actual current position of it.
|
||
// The master sends an header which contains the address of the demanded actuator in the identifier.
|
||
// The information on the CPos in the response will be coded into 14 bits located in Data 0 and Data 1, with a resolution of 2 steps per LSB.
|
||
// In the reponse frame an additional information is included, if stall detection StD has occurred and / or if errors in the actuator have occurred.
|
||
|
||
// С помощью этой службы ведущее устройство может запросить требуемый исполнительный механизм для получения информации о его фактическом текущем положении.
|
||
// Ведущее устройство отправляет заголовок, содержащий адрес требуемого исполнительного механизма в идентификаторе.
|
||
// Информация о CPos в ответе будет закодирована в 14 бит, расположенных в Data 0 и Data 1, с разрешением 2 шага на младший значащий бит.
|
||
// В кадр ответа включается дополнительная информация, если произошло обнаружение срыва (StD) и/или произошли ошибки в исполнительном механизме.
|
||
|
||
// Actuators address without group definition, located in bit[0:4] of the identifier in the header. Reserved addresses are ISSR1 to ISSR22 and ISSR31 (default address of actuators).
|
||
// Remark: Addresses 23 to 30 are accessible by the
|
||
// Status Service _STA only.
|
||
|
||
// Адрес исполнительных устройств без определения группы, указанный в бите [0:4] идентификатора в заголовке. Зарезервированные адреса: ISSR1–ISSR22 и ISSR31 (адрес исполнительных устройств по умолчанию).
|
||
// Примечание: Адреса с 23 по 30 доступны только
|
||
// службе состояния _STA.
|
||
|
||
// BLOCK_MT:
|
||
// The actuator will set this bit, when it has detected an endstop or a block during its movement.
|
||
// The STALL flag can only be set if the stall detection is enabled.
|
||
// When a stall is detected (STALL flag = 1) the FPOS is set to CPOS. Thus the actuator will not move automatically after erase of the STALL flag from master. The master has to send a _SET command to restart it.
|
||
// As long the STALL flag is set all _SET commands are ignored.
|
||
|
||
// Привод установит этот бит, если обнаружит концевой упор или блокировку во время движения.
|
||
// Флаг STALL может быть установлен только при включенном обнаружении остановки.
|
||
// При обнаружении остановки (флаг STALL = 1) FPOS устанавливается в CPOS. Таким образом, привод не будет двигаться автоматически после стирания флага STALL ведущим устройством. Ведущее устройство должно отправить команду _SET для его перезапуска.
|
||
// Пока флаг STALL установлен, все команды _SET игнорируются.
|
||
|
||
// CPOS_1_LSB_MT, CPOS_1_MSB_MT:
|
||
// For CPos, give the relation with accuracy: if the real position is even, CPos = real position / 2; if the real position is odd, CPos = (real position - 1) / 2.
|
||
// The default value for CPos after a POR is the middle position of the possible range: CPOS = 0x1FFF (0x3FFF/2).
|
||
|
||
// Для CPos укажите отношение с точностью: если вещественная позиция чётная, CPos = вещественная позиция / 2; если вещественная позиция нечётная, CPos = (вещественная позиция - 1) / 2.
|
||
// Значение по умолчанию для CPos после POR — это средняя позиция возможного диапазона: CPOS = 0x1FFF (0x3FFF/2).
|
||
|
||
// DIAGNOSE_MT:
|
||
// The actuator will set this bit, when it has detected any error inside.
|
||
// The actuator has to set the _Error with each of the following bits and when they occur in each possible combination:
|
||
// •Power On Reset
|
||
// •Supply Error (over- / undervoltage)
|
||
// •Over Temperature
|
||
// •Permanent Electrical Defect
|
||
// •Emergency Run occurred (general bus time out)
|
||
|
||
// Привод установит этот бит при обнаружении любой внутренней ошибки.
|
||
// Привод должен установить _Error для каждого из следующих битов и при их возникновении в каждой возможной комбинации:
|
||
// •Сброс при включении питания
|
||
// •Ошибка питания (повышение/понижение напряжения)
|
||
// •Перегрев
|
||
// •Постоянная неисправность электрооборудования
|
||
// •Произошёл аварийный запуск (превышение времени ожидания на общей шине)
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t BLOCK_MT: 1;
|
||
uint8_t CPOS_1_LSB_MT: 7;
|
||
uint8_t CPOS_1_MSB_MT: 7;
|
||
uint8_t DIAGNOSE_MT: 1;
|
||
} ACT_RFR_ISSR;
|
||
|
||
#define LIN0_ISSR_ALL 0x09
|
||
#define LIN1_ISSR_ALL 0x06
|
||
#define LIN2_ISSR_ALL 0x08
|
||
|
||
typedef struct {
|
||
|
||
uint8_t BLOCK_MT;
|
||
uint8_t DIAGNOSE_MT;
|
||
|
||
uint16_t CPOS_ALL;
|
||
eEmrf_Slave_STA Emrf_Slave;
|
||
eMode_Mod Mode_Slave;
|
||
uint8_t Error1_Supply_Slave;
|
||
uint8_t Error2_Communication_Slave;
|
||
uint8_t Error3_Temperature_Slave;
|
||
uint8_t Error4_Permanent_Electrical_Slave;
|
||
eStall_STA Stall_Slave;
|
||
eReset_STA Reset_Slave;
|
||
|
||
uint8_t IDE_ref;
|
||
uint8_t IDE_Sup;
|
||
uint8_t IDE_Har;
|
||
|
||
uint8_t BUS_NEW_ADR;
|
||
uint8_t NOTL_DREH_Master;
|
||
uint8_t NOTL_ENAB_Master;
|
||
uint8_t DREH_Slave;
|
||
uint8_t ParitySlave;
|
||
uint8_t Version_CFR;
|
||
|
||
uint8_t error_connect;
|
||
|
||
} tLinStateFullActuator;
|
||
|
||
typedef struct {
|
||
|
||
uint16_t CPOS_ALL;
|
||
eEmrf_Slave_STA Emrf_Slave;
|
||
eMode_Mod Mode_Slave;
|
||
uint8_t Error1_Supply_Slave;
|
||
uint8_t Error2_Communication_Slave;
|
||
uint8_t Error3_Temperature_Slave;
|
||
uint8_t Error4_Permanent_Electrical_Slave;
|
||
eStall_STA Stall_Slave;
|
||
eReset_STA Reset_Slave;
|
||
|
||
|
||
} tLinStateActuator;
|
||
|
||
// POS - Позиция
|
||
|
||
// BUS_ADR - (3 бита [7..5] - Группа; 5 бит [4..0] - Адрес)
|
||
// Пример Широковещательный адрес группа 1: 0x20, 0x20, 0x20 .. 0x20
|
||
// Пример Обычный адрес: 0x01, 0x02, 0x03 .. 0x09
|
||
// Смешанный тип адреса не допустим
|
||
|
||
// COM - Команда
|
||
|
||
typedef enum {
|
||
LIN_ACT_CFR_NONE = 0,
|
||
LIN_ACT_CFR_MOD = 1,
|
||
LIN_ACT_CFR_INI = 2,
|
||
LIN_ACT_CFR_SET = 3
|
||
} eLinCOM;
|
||
|
||
typedef struct {
|
||
uint16_t POS;
|
||
uint8_t BUS_ADR;
|
||
eMode_Mod MODE;
|
||
eLinCOM COM; // Является защелкой (триггером), которую контроллер сбросит, когда заберет данные
|
||
eStall_SET Stall_SET;
|
||
eLnoise_SET Lnoise_SET;
|
||
eAutos_SET Autos_SET;
|
||
eSpeed_SET Speed_SET;
|
||
eCoils_Stop_SET Coils_Stop_SET;
|
||
|
||
uint16_t BUS_NEW_ADR;
|
||
uint8_t NOTL_DREH_Master;
|
||
uint8_t NOTL_ENAB_Master;
|
||
uint8_t DREH_Master;
|
||
uint8_t Motor;
|
||
uint8_t Baudrate;
|
||
uint8_t Version_CFR;
|
||
|
||
uint8_t isRFR_STA;
|
||
|
||
} tLinCommandActuator;
|
||
|
||
typedef struct {
|
||
|
||
tLinIO *linIo;
|
||
osMutexId_t access;
|
||
|
||
uint8_t busy; // Устройство занято
|
||
uint8_t error_connect; // Ошибка соединения (устройство не отвечает)
|
||
|
||
tLinStateFullActuator linStateActuator[9];
|
||
tLinCommandActuator linCommandActuator[9];
|
||
|
||
tLinData *linData;
|
||
|
||
struct {
|
||
osThreadId_t id;
|
||
uint32_t stack[1024];
|
||
StaticTask_t controlBlock;
|
||
osThreadAttr_t attr;
|
||
} thread;
|
||
|
||
} tLinTaskActuator;
|
||
|
||
void Lin_0_Init(tLinTaskActuator *env,
|
||
tLinData *linData,
|
||
tLinIO *linIO);
|
||
|
||
void Li0_StartThread(tLinTaskActuator *env);
|
||
|
||
void GetLin0CallbackHandler(tLinData *env, uint8_t u8LinIndex, void *state);
|
||
|
||
#endif //HVAC_LIN_TASKS_H
|