From ed21d0f37870ab1b2a512d0a9415e66549af2648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D1=8F=D1=87=D0=B5=D1=81=D0=BB=D0=B0=D0=B2=20=D0=A8?= =?UTF-8?q?=D1=82=D0=B5=D0=B9=D0=B1=D0=B5=D0=B7=D0=B0=D0=BD=D0=B4=D1=82?= Date: Wed, 25 Feb 2026 11:57:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B0=D1=8F=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D1=8F=20=D0=BF=D1=80=D0=BE=D1=82=D0=BE=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D0=B0=20CAN.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Пока без ответа на запрос в общее адресное пространство. --- Core/Inc/requester.h | 126 ++-- Core/Src/requester.c | 602 +++++++++--------- .../Src/stm32f1xx_hal_can.c | 2 +- MDK-ARM/CAN_Request-Response_protocol.uvoptx | 95 ++- extID_type/extID_type_from_new_can_protocol.h | 62 -- requester.xlsx | Bin 19188 -> 0 bytes Протокол CAN и ОАП.xlsx | Bin 0 -> 127617 bytes 7 files changed, 487 insertions(+), 400 deletions(-) delete mode 100644 extID_type/extID_type_from_new_can_protocol.h delete mode 100644 requester.xlsx create mode 100644 Протокол CAN и ОАП.xlsx diff --git a/Core/Inc/requester.h b/Core/Inc/requester.h index 223b65e..c9ca2d1 100644 --- a/Core/Inc/requester.h +++ b/Core/Inc/requester.h @@ -26,7 +26,10 @@ //CAN Filter #define ID_MAIN_DEVICE 0x000 -#define CURRENT_ID_DEVICE 0x002 + +#define CURRENT_TYPE_DEVICE 0b001 +#define CURRENT_ID_DEVICE 0b0010 + #define CAN_IDE_32 0b00000100 // Для 32-х битного масштаба #define CAN_DATA_TYPE_FILTER 0x1F000000 @@ -34,7 +37,7 @@ #define CAN_SENSOR_TYPE_FILTER 0x00F80000 #define CAN_SENSOR_ID_FILTER 0x0007FF00 -union Byte{ +typedef union{ struct bitfield{ unsigned bit0:1; unsigned bit1:1; @@ -46,7 +49,19 @@ union Byte{ unsigned bit7:1; }Bitfield; char AllBit; -}; +}Byte; + +/** + * @brief HAL Status structures definition + */ +typedef enum +{ + CRR_OK = 0x00U, + CRR_ERROR = 0x01U, + CRR_BUSY = 0x02U, + CRR_TIMEOUT = 0x03U +} CRR_Status; + _Bool IsLeapYear(uint8_t year); @@ -58,6 +73,10 @@ _Bool IsLeapYear(uint8_t year); #define HighByteOfWord(WORD) (WORD>>8)&0xFF #define LowByteOfWord(WORD) WORD&0xFF +//Priority level +#define PRIORITY_CRITICAL 0 +#define PRIORITY_STANDARD 1 + //Route mode #define ROUTE_MASTER 0 #define ROUTE_SLAVE 1 @@ -67,33 +86,34 @@ _Bool IsLeapYear(uint8_t year); #define DATA_TYPE_DISCRETE 0b0001 #define DATA_TYPE_ANALOG 0b0010 #define DATA_TYPE_MODBUS_COIL 0b0011 -#define DATA_TYPE_MODBUS_DISCRETE 0b0100 -#define DATA_TYPE_MODBUS_HOLDING 0b0101 -#define DATA_TYPE_MODBUS_INPUT 0b0110 -#define DATA_TYPE_ERROR 0b0111 +#define DATA_TYPE_GENERAL_ADDRESS_SPACE 0b0100 +#define DATA_TYPE_MODBUS_DISCRETE 0b0101 +#define DATA_TYPE_MODBUS_HOLDING 0b0110 +#define DATA_TYPE_MODBUS_INPUT 0b0111 +#define DATA_TYPE_ERROR 0b1000 #define DATA_TYPE_PULSE 0b1111 //Sensor Types for DATA_TYPE_BROADCAST -#define SENSOR_TYPE_BROADCAST_STATUS 0b00000 -#define SENSOR_TYPE_BROADCAST_ONOFF 0b00001 -#define SENSOR_TYPE_BROADCAST_RESTARTDEVICE 0b00010 -#define SENSOR_TYPE_BROADCAST_RTCSETUP 0b00011 +#define SENSOR_TYPE_BROADCAST_STATUS 0b000000000000 +#define SENSOR_TYPE_BROADCAST_ONOFF 0b000000000001 +#define SENSOR_TYPE_BROADCAST_RESTARTDEVICE 0b000000000010 +#define SENSOR_TYPE_BROADCAST_RTCSETUP 0b000000000011 //Sensor Types for DATA_TYPE_DISCRETE -#define SENSOR_TYPE_DISCRETE_ACCIDENT 0b00000 -#define SENSOR_TYPE_DISCRETE_WARNING 0b00001 -#define SENSOR_TYPE_DISCRETE_CONTROL_SIGNALS 0b00010 -#define SENSOR_TYPE_DISCRETE_FLAGS 0b00011 -#define SENSOR_TYPE_DISCRETE_RESET 0b00100 -#define SENSOR_TYPE_DISCRETE_CHANGE_MODE 0b00101 -#define SENSOR_TYPE_DISCRETE_REQUEST_LIST_OF_PARAMETERS 0b00110 +#define SENSOR_TYPE_DISCRETE_ACCIDENT 0b0000 +#define SENSOR_TYPE_DISCRETE_WARNING 0b0001 +#define SENSOR_TYPE_DISCRETE_CONTROL_SIGNALS 0b0010 +#define SENSOR_TYPE_DISCRETE_FLAGS 0b0011 +#define SENSOR_TYPE_DISCRETE_RESET 0b0100 +#define SENSOR_TYPE_DISCRETE_CHANGE_MODE 0b0101 +#define SENSOR_TYPE_DISCRETE_REQUEST_LIST_OF_PARAMETERS 0b0110 //Sensor Types for DATA_TYPE_ANALOG -#define SENSOR_TYPE_ANALOG_UNIVERSAL 0b00000 -#define SENSOR_TYPE_ANALOG_USTAVKI 0b00001 -#define SENSOR_TYPE_ANALOG_U 0b00010 -#define SENSOR_TYPE_ANALOG_I 0b00011 -#define SENSOR_TYPE_ANALOG_T 0b00100 +#define SENSOR_TYPE_ANALOG_UNIVERSAL 0b0000 +#define SENSOR_TYPE_ANALOG_USTAVKI 0b0001 +#define SENSOR_TYPE_ANALOG_U 0b0010 +#define SENSOR_TYPE_ANALOG_I 0b0011 +#define SENSOR_TYPE_ANALOG_T 0b0100 //Error Code #define NONEXISTENT_ELEMENT 0x01 @@ -129,21 +149,37 @@ union ext_ID_Modbus{ unsigned int BitAll:29; };*/ -typedef union _extID{ - struct extID_Standard_Fields{ - unsigned DeviceID:8; - unsigned SensorID:11; - unsigned SensorType:5; - unsigned DataType:4; +typedef union{ + struct extID_Fields{ + union{ + struct msgBody_Broadcast{ + unsigned Page:4; + unsigned BroadcastType:12; + }Broadcast; + struct msgBody_Discrete{ + unsigned Body:12; + unsigned Type:4; + }Discrete; + struct msgBody_Analog{ + unsigned SensorID:12; + unsigned SensorType:4; + }Analog; + struct msgBody_Modbus{ + unsigned RegCount:4; + unsigned StrAdr:12; + }Modbus; + struct msgBody_Error{ + unsigned ErrorCode:8; + unsigned Info:8; + }Error; + unsigned Body:16; + }Msg; + unsigned MsgType:4; + unsigned DeviceID:4; + unsigned DeviceType:3; unsigned Route:1; - }StandardFields; - struct extID_Modbus_Fields{ - unsigned DeviceID:8; - unsigned CountReg:8; - unsigned StrAdr:8; - unsigned DataType:4; - unsigned Route:1; - }ModbusFields; + unsigned Priority:1; + }Fields; unsigned int BitAll:29; }extID; @@ -260,20 +296,20 @@ void REQUESTER_Init(void); void REQUESTER_MainWhile(void); void Boot_SystemClock_Config(void); -void REQUESTER_AnalogProcessing(struct RXMsg _rxMsg); +CRR_Status REQUESTER_AnalogProcessing(struct RXMsg _rxMsg); HAL_StatusTypeDef CanRequestToAnalogUniversal(struct RXMsg _rxMsg); HAL_StatusTypeDef CanRequestToAnalogUSTAVKI(struct RXMsg _rxMsg); HAL_StatusTypeDef CanRequestToAnalogUSens(struct RXMsg _rxMsg); HAL_StatusTypeDef CanRequestToAnalogISens(struct RXMsg _rxMsg); HAL_StatusTypeDef CanRequestToAnalogTSens(struct RXMsg _rxMsg); -void REQUESTER_BroadcastProcessing(struct RXMsg _rxMsg); +CRR_Status REQUESTER_BroadcastProcessing(struct RXMsg _rxMsg); HAL_StatusTypeDef CanRequestToBroadcastStatus(struct RXMsg _rxMsg); void CanRequestToBroadcastOnOff(struct RXMsg _rxMsg); void CanRequestToBroadcastRestart(struct RXMsg _rxMsg); void CanRequestToBroadcastRtcSetup(struct RXMsg _rxMsg); -void REQUESTER_DiscreticProcessing(struct RXMsg _rxMsg); +CRR_Status REQUESTER_DiscreticProcessing(struct RXMsg _rxMsg); void CanRequestToDiscreteAccident(struct RXMsg _rxMsg); void CanRequestToDiscreteWarning(struct RXMsg _rxMsg); void CanRequestToDiscreteControlSignals(struct RXMsg _rxMsg); @@ -282,11 +318,11 @@ void CanRequestToDiscreteReset(struct RXMsg _rxMsg); void CanRequestToDiscreteChangeMode(struct RXMsg _rxMsg); void CanRequestToDiscreteRequestListOfParameters(struct RXMsg _rxMsg); -void REQUESTER_ModbusProcessing(struct RXMsg _rxMsg); -void CanRequestToModbusCoil(struct RXMsg _rxMsg); -void CanRequestToModbusDiscrete(struct RXMsg _rxMsg); -void CanRequestToModbusHolding(struct RXMsg _rxMsg); -void CanRequestToModbusInput(struct RXMsg _rxMsg); +CRR_Status REQUESTER_ModbusProcessing(struct RXMsg _rxMsg); +HAL_StatusTypeDef CanRequestToModbusCoil(struct RXMsg _rxMsg); +HAL_StatusTypeDef CanRequestToModbusDiscrete(struct RXMsg _rxMsg); +HAL_StatusTypeDef CanRequestToModbusHolding(struct RXMsg _rxMsg); +HAL_StatusTypeDef CanRequestToModbusInput(struct RXMsg _rxMsg); void REQUESTER_RTC_SYNC(uint8_t *data); void REQUESTER_Pulse_TIM_Handler(void); diff --git a/Core/Src/requester.c b/Core/Src/requester.c index 9661711..8ebc378 100644 --- a/Core/Src/requester.c +++ b/Core/Src/requester.c @@ -1,29 +1,13 @@ #include "requester.h" -static union Byte byte[2048][8]; -#define byte_modbusadr(x) byte[x/64][(x%64)/8] -#define _GET_MODBUS_BIT(x) byte[x/64][(x%64)/8].AllBit>>((x%64)%8) -#define _GET_MODBUS_ADR(SensorId, RequestedBytePosition, RequestedBitPosition) SensorId*64 + RequestedBytePosition*8 + RequestedBitPosition - -uint16_t ModbusFilters[COUNT_OF_MODBUS_SECTIONS][2]; - struct device CurrentDevice; -struct device Device_on_the_Network[32]; -struct data Data; +struct device Device_on_the_Network[8][16]; struct controlflags ControlFlags; -struct received_request ReceivedRequest; uint8_t CurrentStep = 0; uint8_t LastStep = 0; struct RXMsg rxMsg[CAN_RX_BUFFER_SIZE]; -#define MAX_NUM_OF_DEVICES_PER_LINE 4 -#define MAX_NUM_OF_REGISTERS_IN_DEVICE 255 - -//Регистр это слово (16 бит). uint16 -uint16_t ModbusDemonstration[MAX_NUM_OF_DEVICES_PER_LINE][MAX_NUM_OF_REGISTERS_IN_DEVICE]; -uint16_t ModbusAlternativeTable[MAX_NUM_OF_DEVICES_PER_LINE*MAX_NUM_OF_REGISTERS_IN_DEVICE]; - _Bool IsLeapYear(uint8_t year) { year+=2000; @@ -50,135 +34,94 @@ void REQUESTER_Init(void) ControlFlags.IsPulse = 1; MX_TIM7_Init(); MX_RTC_Init(); - - #ifdef _DEMO - int Reg_AltModbusTable; - //Тестовые значения регистров. Для отладки/демонстрации - for(int x = 0; x < MAX_NUM_OF_DEVICES_PER_LINE; x++) - { - for(int y = 0; y < MAX_NUM_OF_REGISTERS_IN_DEVICE; y++) - { - ModbusDemonstration[x][y] = x<<8 | y; - - Reg_AltModbusTable = x*MAX_NUM_OF_REGISTERS_IN_DEVICE+y; - - ModbusAlternativeTable[Reg_AltModbusTable] = x<<8 | y; - } - } - #endif } -int ProverkaDefinaResult; -int ProverkaDefinaItem = 0; -int ProverkaArbitors = 0; - /** * @brief Функция с обработкой полученных запросов -* @details В бесконечном цикле функция ожидает выставление флага о полученном запросе. +* @details В бесконечном цикле функция ожидает приёма сообщения. После этого сообщение распределяется в зависимости от DataType. * Обработка запроса аналоговых значений - REQUESTER_AnalogProcessing(). * Обработка широковещательных запросов - REQUESTER_BroadcastProcessing(). * Обработка запроса дискретных значений - REQUESTER_DiscreticProcessing(). * Обработка Modbus - REQUESTER_ModbusProcessing(). -* @note */ void REQUESTER_MainWhile(void) { - CAN_TxHeaderTypeDef TxHeader; - uint32_t TxMailBox = 0; - uint8_t data[8]; - extID eID; - eID.BitAll = 0; - eID.StandardFields.DeviceID = 2; - eID.StandardFields.DataType = DATA_TYPE_ANALOG; - eID.StandardFields.SensorType = 0x1F; - eID.StandardFields.SensorID = 0; - eID.StandardFields.Route = ROUTE_SLAVE; - - TxHeader.IDE = CAN_ID_EXT; - TxHeader.TransmitGlobalTime = DISABLE; - TxHeader.RTR = CAN_RTR_DATA; - TxHeader.ExtId = eID.BitAll; - int TxTest = 0; HAL_TIM_Base_Start_IT(&htim7); - + unsigned currentAttemptCount; while(1) { if(AvailableCanRxMsg()) { - if(rxMsg[CurrentStep].eID.StandardFields.DataType == DATA_TYPE_ANALOG) - { - REQUESTER_AnalogProcessing(rxMsg[CurrentStep]); - } - else if(rxMsg[CurrentStep].eID.StandardFields.DataType == DATA_TYPE_BROADCAST) - { - REQUESTER_BroadcastProcessing(rxMsg[CurrentStep]); - } - else if(rxMsg[CurrentStep].eID.StandardFields.DataType == DATA_TYPE_DISCRETE) - { - REQUESTER_DiscreticProcessing(rxMsg[CurrentStep]); - } - else if(rxMsg[CurrentStep].eID.StandardFields.DataType == DATA_TYPE_MODBUS_COIL || - rxMsg[CurrentStep].eID.StandardFields.DataType == DATA_TYPE_MODBUS_DISCRETE || - rxMsg[CurrentStep].eID.StandardFields.DataType == DATA_TYPE_MODBUS_HOLDING || - rxMsg[CurrentStep].eID.StandardFields.DataType == DATA_TYPE_MODBUS_INPUT) - { - REQUESTER_ModbusProcessing(rxMsg[CurrentStep]); - } + currentAttemptCount = 0; + if(rxMsg[CurrentStep].eID.Fields.MsgType == DATA_TYPE_ANALOG) + { + REQUESTER_AnalogProcessing(rxMsg[CurrentStep]); + } + else if(rxMsg[CurrentStep].eID.Fields.MsgType == DATA_TYPE_BROADCAST) + { + REQUESTER_BroadcastProcessing(rxMsg[CurrentStep]); + } + else if(rxMsg[CurrentStep].eID.Fields.MsgType == DATA_TYPE_DISCRETE) + { + REQUESTER_DiscreticProcessing(rxMsg[CurrentStep]); + } + else if(rxMsg[CurrentStep].eID.Fields.MsgType == DATA_TYPE_GENERAL_ADDRESS_SPACE) + { + + } + else if(rxMsg[CurrentStep].eID.Fields.MsgType == DATA_TYPE_MODBUS_COIL || + rxMsg[CurrentStep].eID.Fields.MsgType == DATA_TYPE_MODBUS_DISCRETE || + rxMsg[CurrentStep].eID.Fields.MsgType == DATA_TYPE_MODBUS_HOLDING || + rxMsg[CurrentStep].eID.Fields.MsgType == DATA_TYPE_MODBUS_INPUT) + { + REQUESTER_ModbusProcessing(rxMsg[CurrentStep]); + } CurrentStep = (uint16_t)(CurrentStep + 1) % CAN_RX_BUFFER_SIZE; } - /* - while(HAL_CAN_GetTxMailboxesFreeLevel(&hcan) == 0); - - if(HAL_CAN_AddTxMessage(&hcan, &TxHeader, data, &TxMailBox)!= HAL_OK) - { - ProverkaArbitors++; - } - */ -// eID.Fields.SensorID++; -// if(eID.Fields.SensorID>10) - //{ -// eID.Fields.SensorID = 0; -// } } } /** * @brief Функция обработки аналоговых запросов. -* @details Функция, формирующая и отправляющая ответ на запросы. Типы запросов: Универсальный, Уставки, Напряжение, Ток, Температура +* @param struct RXMsg _rxMsg - структура для полученного сообщения. +* @details Функция, формирующая и отправляющая ответ на запросы. Типы запросов: Универсальный, Уставки, Напряжение, Ток, Температура. + */ -void REQUESTER_AnalogProcessing(struct RXMsg _rxMsg) +CRR_Status REQUESTER_AnalogProcessing(struct RXMsg _rxMsg) { - switch (_rxMsg.eID.StandardFields.SensorType) + switch (_rxMsg.eID.Fields.Msg.Analog.SensorType) { case SENSOR_TYPE_ANALOG_UNIVERSAL: { - CanRequestToAnalogUniversal(_rxMsg); + return (CRR_Status)CanRequestToAnalogUniversal(_rxMsg); break; } case SENSOR_TYPE_ANALOG_USTAVKI: { - CanRequestToAnalogUSTAVKI(_rxMsg); + return (CRR_Status)CanRequestToAnalogUSTAVKI(_rxMsg); break; } case SENSOR_TYPE_ANALOG_U: { - CanRequestToAnalogUSens(_rxMsg); + return (CRR_Status)CanRequestToAnalogUSens(_rxMsg); break; } case SENSOR_TYPE_ANALOG_I: { - CanRequestToAnalogISens(_rxMsg); + return (CRR_Status)CanRequestToAnalogISens(_rxMsg); break; } case SENSOR_TYPE_ANALOG_T: { - CanRequestToAnalogTSens(_rxMsg); + return (CRR_Status)CanRequestToAnalogTSens(_rxMsg); break; } default: //RESERVE SENSOR TYPE + return CRR_ERROR; break; } + return CRR_ERROR; } __weak HAL_StatusTypeDef CanRequestToAnalogUniversal(struct RXMsg _rxMsg) @@ -191,7 +134,7 @@ __weak HAL_StatusTypeDef CanRequestToAnalogUniversal(struct RXMsg _rxMsg) TxHeader.RTR = CAN_RTR_DATA; extID tmp_eID; tmp_eID.BitAll = _rxMsg.eID.BitAll; - tmp_eID.StandardFields.Route = ROUTE_SLAVE; + tmp_eID.Fields.Route = ROUTE_SLAVE; TxHeader.ExtId = tmp_eID.BitAll; TxHeader.DLC = 6; data[0] = 'U'; @@ -213,7 +156,7 @@ __weak HAL_StatusTypeDef CanRequestToAnalogUSTAVKI(struct RXMsg _rxMsg) TxHeader.RTR = CAN_RTR_DATA; extID tmp_eID; tmp_eID.BitAll = _rxMsg.eID.BitAll; - tmp_eID.StandardFields.Route = ROUTE_SLAVE; + tmp_eID.Fields.Route = ROUTE_SLAVE; TxHeader.ExtId = tmp_eID.BitAll; TxHeader.DLC = 7; data[0] = 'U'; @@ -236,15 +179,15 @@ __weak HAL_StatusTypeDef CanRequestToAnalogUSens(struct RXMsg _rxMsg) TxHeader.RTR = CAN_RTR_DATA; extID tmp_eID; tmp_eID.BitAll = _rxMsg.eID.BitAll; - tmp_eID.StandardFields.Route = ROUTE_SLAVE; + tmp_eID.Fields.Route = ROUTE_SLAVE; TxHeader.ExtId = tmp_eID.BitAll; TxHeader.DLC = 6; data[0] = 'U'; - data[1] = ' '; - data[2] = 's'; - data[3] = 'e'; - data[4] = 'n'; - data[5] = 's'; + data[1] = 'S'; + data[2] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 1000; + data[3] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 100 % 10; + data[4] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 10 % 10; + data[5] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID % 10; return HAL_CAN_AddTxMessage(&_HCAN, &TxHeader, data, &TxMailBox); } @@ -258,15 +201,15 @@ __weak HAL_StatusTypeDef CanRequestToAnalogISens(struct RXMsg _rxMsg) TxHeader.RTR = CAN_RTR_DATA; extID tmp_eID; tmp_eID.BitAll = _rxMsg.eID.BitAll; - tmp_eID.StandardFields.Route = ROUTE_SLAVE; + tmp_eID.Fields.Route = ROUTE_SLAVE; TxHeader.ExtId = tmp_eID.BitAll; TxHeader.DLC = 6; data[0] = 'I'; - data[1] = ' '; - data[2] = 's'; - data[3] = 'e'; - data[4] = 'n'; - data[5] = 's'; + data[1] = 'S'; + data[2] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 1000; + data[3] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 100 % 10; + data[4] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 10 % 10; + data[5] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID % 10; return HAL_CAN_AddTxMessage(&_HCAN, &TxHeader, data, &TxMailBox); } @@ -280,30 +223,34 @@ __weak HAL_StatusTypeDef CanRequestToAnalogTSens(struct RXMsg _rxMsg) TxHeader.RTR = CAN_RTR_DATA; extID tmp_eID; tmp_eID.BitAll = _rxMsg.eID.BitAll; - tmp_eID.StandardFields.Route = ROUTE_SLAVE; + tmp_eID.Fields.Route = ROUTE_SLAVE; TxHeader.ExtId = tmp_eID.BitAll; TxHeader.DLC = 6; data[0] = 'T'; - data[1] = ' '; - data[2] = 's'; - data[3] = 'e'; - data[4] = 'n'; - data[5] = 's'; + data[1] = 'S'; + data[2] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 1000; + data[3] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 100 % 10; + data[4] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID / 10 % 10; + data[5] = 47 + _rxMsg.eID.Fields.Msg.Analog.SensorID % 10; return HAL_CAN_AddTxMessage(&_HCAN, &TxHeader, data, &TxMailBox); } /** * @brief Функция обработки широковещательных запросов. +* @param struct RXMsg _rxMsg - структура для полученного сообщения. * @details Функция, выполняющая команды, переданные в широковещательном формате с головного (master) устройства. Типы команд: Запрос статуса, запрос на включение или выключение, рестарт устройств, установка времени. */ -void REQUESTER_BroadcastProcessing(struct RXMsg _rxMsg) +CRR_Status REQUESTER_BroadcastProcessing(struct RXMsg _rxMsg) { - switch(_rxMsg.eID.StandardFields.SensorType) + switch(_rxMsg.eID.Fields.Msg.Broadcast.BroadcastType) { case SENSOR_TYPE_BROADCAST_STATUS: { //Обработка запроса статуса устройства - CanRequestToBroadcastStatus(_rxMsg); + if(CanRequestToBroadcastStatus(_rxMsg)!=HAL_OK) + { + return CRR_ERROR; + } break; } case SENSOR_TYPE_BROADCAST_ONOFF: @@ -326,8 +273,10 @@ void REQUESTER_BroadcastProcessing(struct RXMsg _rxMsg) } default: //RESERVE SENSOR TYPE. + return CRR_ERROR; break; } + return CRR_OK; } __weak HAL_StatusTypeDef CanRequestToBroadcastStatus(struct RXMsg _rxMsg) @@ -341,8 +290,9 @@ __weak HAL_StatusTypeDef CanRequestToBroadcastStatus(struct RXMsg _rxMsg) TxHeader.RTR = CAN_RTR_DATA; extID tmp_eID; tmp_eID.BitAll = _rxMsg.eID.BitAll; - tmp_eID.StandardFields.Route = ROUTE_SLAVE; - tmp_eID.StandardFields.DeviceID = CURRENT_ID_DEVICE; + tmp_eID.Fields.Route = ROUTE_SLAVE; + tmp_eID.Fields.DeviceType = CURRENT_TYPE_DEVICE; + tmp_eID.Fields.DeviceID = CURRENT_ID_DEVICE; TxHeader.ExtId = tmp_eID.BitAll; RTC_TimeTypeDef sTime = {0}; @@ -372,7 +322,7 @@ __weak void CanRequestToBroadcastRestart(struct RXMsg _rxMsg) { return; } - if(_rxMsg.eID.StandardFields.SensorID == (CURRENT_ID_DEVICE / (_rxMsg.DLC*8))) + if(_rxMsg.eID.Fields.Msg.Broadcast.Page == (CURRENT_ID_DEVICE / (_rxMsg.DLC*8))) { uint64_t page = 0; for(int i = 0; i < _rxMsg.DLC; i++) @@ -416,12 +366,13 @@ __weak void CanRequestToBroadcastRtcSetup(struct RXMsg _rxMsg) /** * @brief Функция обработки дискретных запросов. +* @param struct RXMsg _rxMsg - структура для полученного сообщения. * @details Функция, формирующая и отправляющая ответ на запросы. Типы запросов: Аварии, Предупреждения, Управляющие сигналы, Флаги, Рестарт устройства, Изменение режима работы устройства, Запрос на устройство. * @note Запрос на устройство. Головное (master) устройство запрашивает некоторое колличество параметров. В Data - 64 битовых адресса параметров, тип которых задаётся в Sensor ID. Имеется возможность запрашивать непоследовательные параметры. */ -void REQUESTER_DiscreticProcessing(struct RXMsg _rxMsg) +CRR_Status REQUESTER_DiscreticProcessing(struct RXMsg _rxMsg) { - switch(_rxMsg.eID.StandardFields.SensorType){ + switch(_rxMsg.eID.Fields.Msg.Discrete.Type){ case SENSOR_TYPE_DISCRETE_ACCIDENT: { CanRequestToDiscreteAccident(_rxMsg); @@ -459,8 +410,10 @@ void REQUESTER_DiscreticProcessing(struct RXMsg _rxMsg) } default: //RESERVE SENSOR TYPE. + return CRR_ERROR; break; } + return CRR_OK; } __weak void CanRequestToDiscreteAccident(struct RXMsg _rxMsg) @@ -499,116 +452,144 @@ __weak void CanRequestToDiscreteRequestListOfParameters(struct RXMsg _rxMsg) /** * @brief Функция обработки Modbus запросов. +* @param struct RXMsg _rxMsg - структура для полученного сообщения. * @details Функция, формирующая и отправляющая ответ на запросы. */ -void REQUESTER_ModbusProcessing(struct RXMsg _rxMsg) +CRR_Status REQUESTER_ModbusProcessing(struct RXMsg _rxMsg) { - switch(_rxMsg.eID.ModbusFields.DataType) + switch(_rxMsg.eID.Fields.MsgType) { case DATA_TYPE_MODBUS_COIL: { - CanRequestToModbusCoil(_rxMsg); + return (CRR_Status)CanRequestToModbusCoil(_rxMsg); break; } case DATA_TYPE_MODBUS_DISCRETE: { - CanRequestToModbusDiscrete(_rxMsg); + return (CRR_Status)CanRequestToModbusDiscrete(_rxMsg); break; } case DATA_TYPE_MODBUS_HOLDING: { - CanRequestToModbusHolding(_rxMsg); + return (CRR_Status)CanRequestToModbusHolding(_rxMsg); break; } case DATA_TYPE_MODBUS_INPUT: { - CanRequestToModbusInput(_rxMsg); + return (CRR_Status)CanRequestToModbusInput(_rxMsg); break; } default: //ERROR + return CRR_ERROR; break; } + return CRR_ERROR; } -__weak void CanRequestToModbusCoil(struct RXMsg _rxMsg) +__weak HAL_StatusTypeDef CanRequestToModbusCoil(struct RXMsg _rxMsg) { - return; + CAN_TxHeaderTypeDef TxHeader; + uint32_t TxMailBox = 0; + uint8_t data[8]; + TxHeader.IDE = CAN_ID_EXT; + TxHeader.TransmitGlobalTime = DISABLE; + TxHeader.RTR = CAN_RTR_DATA; + extID tmp_eID; + tmp_eID.BitAll = _rxMsg.eID.BitAll; + tmp_eID.Fields.Route = ROUTE_SLAVE; + TxHeader.ExtId = tmp_eID.BitAll; + TxHeader.DLC = 8; + data[0] = 'M'; + data[1] = 'C'; + data[2] = ' '; + data[3] = 'S'; + data[4] = _rxMsg.eID.Fields.Msg.Modbus.StrAdr; + data[5] = ' '; + data[6] = 'C'; + data[7] = _rxMsg.eID.Fields.Msg.Modbus.RegCount; + return HAL_CAN_AddTxMessage(&_HCAN, &TxHeader, data, &TxMailBox); } -__weak void CanRequestToModbusDiscrete(struct RXMsg _rxMsg) +__weak HAL_StatusTypeDef CanRequestToModbusDiscrete(struct RXMsg _rxMsg) { - return; + CAN_TxHeaderTypeDef TxHeader; + uint32_t TxMailBox = 0; + uint8_t data[8]; + TxHeader.IDE = CAN_ID_EXT; + TxHeader.TransmitGlobalTime = DISABLE; + TxHeader.RTR = CAN_RTR_DATA; + extID tmp_eID; + tmp_eID.BitAll = _rxMsg.eID.BitAll; + tmp_eID.Fields.Route = ROUTE_SLAVE; + TxHeader.ExtId = tmp_eID.BitAll; + TxHeader.DLC = 8; + data[0] = 'M'; + data[1] = 'D'; + data[2] = ' '; + data[3] = 'S'; + data[4] = _rxMsg.eID.Fields.Msg.Modbus.StrAdr; + data[5] = ' '; + data[6] = 'C'; + data[7] = _rxMsg.eID.Fields.Msg.Modbus.RegCount; + return HAL_CAN_AddTxMessage(&_HCAN, &TxHeader, data, &TxMailBox); } -__weak void CanRequestToModbusHolding(struct RXMsg _rxMsg) +__weak HAL_StatusTypeDef CanRequestToModbusHolding(struct RXMsg _rxMsg) { - return; + CAN_TxHeaderTypeDef TxHeader; + uint32_t TxMailBox = 0; + uint8_t data[8]; + TxHeader.IDE = CAN_ID_EXT; + TxHeader.TransmitGlobalTime = DISABLE; + TxHeader.RTR = CAN_RTR_DATA; + extID tmp_eID; + tmp_eID.BitAll = _rxMsg.eID.BitAll; + tmp_eID.Fields.Route = ROUTE_SLAVE; + TxHeader.ExtId = tmp_eID.BitAll; + TxHeader.DLC = 8; + data[0] = 'M'; + data[1] = 'H'; + data[2] = ' '; + data[3] = 'S'; + data[4] = _rxMsg.eID.Fields.Msg.Modbus.StrAdr; + data[5] = ' '; + data[6] = 'C'; + data[7] = _rxMsg.eID.Fields.Msg.Modbus.RegCount; + return HAL_CAN_AddTxMessage(&_HCAN, &TxHeader, data, &TxMailBox); } -__weak void CanRequestToModbusInput(struct RXMsg _rxMsg) +__weak HAL_StatusTypeDef CanRequestToModbusInput(struct RXMsg _rxMsg) { - return; + CAN_TxHeaderTypeDef TxHeader; + uint32_t TxMailBox = 0; + uint8_t data[8]; + TxHeader.IDE = CAN_ID_EXT; + TxHeader.TransmitGlobalTime = DISABLE; + TxHeader.RTR = CAN_RTR_DATA; + extID tmp_eID; + tmp_eID.BitAll = _rxMsg.eID.BitAll; + tmp_eID.Fields.Route = ROUTE_SLAVE; + TxHeader.ExtId = tmp_eID.BitAll; + TxHeader.DLC = 8; + data[0] = 'M'; + data[1] = 'I'; + data[2] = ' '; + data[3] = 'S'; + data[4] = _rxMsg.eID.Fields.Msg.Modbus.StrAdr; + data[5] = ' '; + data[6] = 'C'; + data[7] = _rxMsg.eID.Fields.Msg.Modbus.RegCount; + return HAL_CAN_AddTxMessage(&_HCAN, &TxHeader, data, &TxMailBox); } -/* СТАРЫЙ УЖАСНЫЙ МОДБАС - if((ReceivedRequest.SensorToModbus.Modbus.StrAdr>=0) && (ReceivedRequest.SensorToModbus.Modbus.StrAdr<=127)) - { - //Обращение к существующему в устройстве модбас регистру - CAN_TxHeaderTypeDef TxHeader; - uint32_t TxMailBox = 0; - uint8_t data[8]; - TxHeader.IDE = CAN_ID_EXT; - TxHeader.DLC = 8; - TxHeader.RTR = CAN_RTR_DATA; - - int RequestFromDLC; - for(RequestFromDLC = ReceivedRequest.SensorToModbus.Modbus.StrAdr; - (RequestFromDLC>11; - eID.StandardFields.SensorID = RequestFromDLC; - TxHeader.ExtId = eID.BitAll; - for(int DataFor = 0; DataFor < 8; DataFor+=2) - { - data[DataFor] = HighByteOfWord(ModbusDemonstration[CURRENT_ID_DEVICE][RequestFromDLC]); - data[DataFor+1] = LowByteOfWord(ModbusDemonstration[CURRENT_ID_DEVICE][RequestFromDLC]); - RequestFromDLC++; - TxHeader.DLC +=2; - if(!((RequestFromDLC> 13) ); // верхние 16 бит + canFilterConfig.FilterIdLow = (uint16_t)( (((idFilter & 0x1FFF) << 3) ) | CAN_IDE_32 ); // низкие 16 бит, + canFilterConfig.FilterMaskIdHigh = (uint16_t)(((idMask & 0xFFFF) >> 13) ); + canFilterConfig.FilterMaskIdLow = (uint16_t)( (((idMask & 0x1FFF) << 3) ) | CAN_IDE_32 ); + + if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) + { + Error_Handler(); + } +} + +#define BIT27 (1UL << 27) +#define BITS_20_23_MASK (0xFUL << 20) // 4 бита (20..23) +#define BITS_24_26_MASK (0x7UL << 24) // 3 бита (24..26) + +uint32_t filter1_id = BIT27 | CURRENT_TYPE_DEVICE | CURRENT_ID_DEVICE; +uint32_t filter1_mask = BIT27 | BITS_24_26_MASK | BITS_20_23_MASK; // все проверяемые биты + +#define BITS_16_19_MASK (0xFUL << 16) + +uint32_t filter2_id = DATA_TYPE_BROADCAST; +uint32_t filter2_mask = BITS_16_19_MASK; + +uint32_t filter3_id = DATA_TYPE_PULSE; +uint32_t filter3_mask = BITS_16_19_MASK; + void REQUESTER_CAN_FILTERS() { - //MAIN DEVICE - CAN_FilterTypeDef canFilterConfig; - canFilterConfig.FilterBank = 0; - canFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; - canFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; - /*Для ID устройства используются восемь младших битов. - Макс значение 0 устройство - 0x000, 1 - 0x002, 2 - 0x004, 3 - 0x006*/ - canFilterConfig.FilterIdHigh = (uint16_t)(ID_MAIN_DEVICE>>13); - canFilterConfig.FilterIdLow = (uint16_t)(ID_MAIN_DEVICE<<5) | CAN_IDE_32; - /*Маска 1.1111.1110.<...>. Нули - любые символы. Единицы - точное соответствие фильтру выше.*/ - canFilterConfig.FilterMaskIdHigh = (uint16_t)(CAN_DEVICE_ID_FILTER>>13); - canFilterConfig.FilterMaskIdLow = (uint16_t)(CAN_DEVICE_ID_FILTER<<3) | CAN_IDE_32; - canFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; - canFilterConfig.FilterActivation = ENABLE; - canFilterConfig.SlaveStartFilterBank = 14; - if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) - { - Error_Handler(); - } - - //CURRENT DEVICE - canFilterConfig.FilterBank = 1; - /*Для ID устройства используются восемь младших битов. - Макс значение 0 устройство - 0x000, 1 - 0x002, 2 - 0x004, 3 - 0x006*/ - canFilterConfig.FilterIdHigh = (uint16_t)(CURRENT_ID_DEVICE>>13); - canFilterConfig.FilterIdLow = (uint16_t)(CURRENT_ID_DEVICE<<5) | CAN_IDE_32; - /*Маска 1.1111.1110.<...>. Нули - любые символы. Единицы - точное соответствие фильтру выше.*/ - canFilterConfig.FilterMaskIdHigh = (uint16_t)(CAN_DEVICE_ID_FILTER>>13); - canFilterConfig.FilterMaskIdLow = (uint16_t)(CAN_DEVICE_ID_FILTER<<3) | CAN_IDE_32; - if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) - { - Error_Handler(); - } - - //MODBUS - canFilterConfig.FilterBank = 2; - canFilterConfig.FilterIdHigh = (uint16_t)(0x03000000>>13); - canFilterConfig.FilterIdLow = (uint16_t)(0x03000000<<5) | CAN_IDE_32; - canFilterConfig.FilterMaskIdHigh = (uint16_t)(CAN_DATA_TYPE_FILTER>>13); // we're checking only high 13 bits, that contained "key" - canFilterConfig.FilterMaskIdLow = (uint16_t)(CAN_DATA_TYPE_FILTER<<3) | CAN_IDE_32; // 1<<2 - set IDE bit - if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) - { - Error_Handler(); - } - - //PULSE - canFilterConfig.FilterBank = 3; - canFilterConfig.FilterIdHigh = (uint16_t)(HighIdFilter(DATA_TYPE_PULSE)>>13); - //canFilterConfig.FilterIdHigh = (uint16_t)(0x1F000000>>13); - canFilterConfig.FilterIdLow = (uint16_t)(HighIdFilter(DATA_TYPE_PULSE)<<5) | CAN_IDE_32; - canFilterConfig.FilterMaskIdHigh = (uint16_t)(CAN_DATA_TYPE_FILTER>>13); // we're checking only high 13 bits, that contained "key" - canFilterConfig.FilterMaskIdLow = (uint16_t)(CAN_DATA_TYPE_FILTER<<3) | CAN_IDE_32; // 1<<2 - set IDE bit - if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) - { - Error_Handler(); - } - - //DEBUG FILTER "ALL IDE WELCOME" - canFilterConfig.FilterBank = 4; - canFilterConfig.FilterIdHigh = (uint16_t)(HighIdFilter(0)>>13); - canFilterConfig.FilterIdLow = (uint16_t)(HighIdFilter(0)<<5) | CAN_IDE_32; - canFilterConfig.FilterMaskIdHigh = (uint16_t)(0>>13); // we're checking only high 13 bits, that contained "key" - canFilterConfig.FilterMaskIdLow = (uint16_t)(0<<3) | CAN_IDE_32; // 1<<2 - set IDE bit - if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) - { - Error_Handler(); - } + // Первый фильтр: проверяем 20-27 биты, где 27-й всегда 1 + CONFIG_CAN_FILTER(0, filter1_id, filter1_mask); + + // Второй фильтр: проверяем 16-19 биты, равны DATA_TYPE_BROADCASTE + CONFIG_CAN_FILTER(1, filter2_id, filter2_mask); + + // Третий фильтр: проверяем 16-19 биты, равны DATA_TYPE_PULSE + CONFIG_CAN_FILTER(2, filter3_id, filter3_mask); } + +//void REQUESTER_CAN_FILTERS() +//{ +// //MAIN DEVICE +// CAN_FilterTypeDef canFilterConfig; +// canFilterConfig.FilterBank = 0; +// canFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; +// canFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; +// /*Для ID устройства используются восемь младших битов. +// Макс значение 0 устройство - 0x000, 1 - 0x002, 2 - 0x004, 3 - 0x006*/ +// canFilterConfig.FilterIdHigh = (uint16_t)(ID_MAIN_DEVICE>>13); +// canFilterConfig.FilterIdLow = (uint16_t)(ID_MAIN_DEVICE<<5) | CAN_IDE_32; +// /*Маска 1.1111.1110.<...>. Нули - любые символы. Единицы - точное соответствие фильтру выше.*/ +// canFilterConfig.FilterMaskIdHigh = (uint16_t)(CAN_DEVICE_ID_FILTER>>13); +// canFilterConfig.FilterMaskIdLow = (uint16_t)(CAN_DEVICE_ID_FILTER<<3) | CAN_IDE_32; +// canFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; +// canFilterConfig.FilterActivation = ENABLE; +// canFilterConfig.SlaveStartFilterBank = 14; +// if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) +// { +// Error_Handler(); +// } +// +// //CURRENT DEVICE +// canFilterConfig.FilterBank = 1; +// /*Для ID устройства используются восемь младших битов. +// Макс значение 0 устройство - 0x000, 1 - 0x002, 2 - 0x004, 3 - 0x006*/ +// canFilterConfig.FilterIdHigh = (uint16_t)(CURRENT_ID_DEVICE>>13); +// canFilterConfig.FilterIdLow = (uint16_t)(CURRENT_ID_DEVICE<<5) | CAN_IDE_32; +// /*Маска 1.1111.1110.<...>. Нули - любые символы. Единицы - точное соответствие фильтру выше.*/ +// canFilterConfig.FilterMaskIdHigh = (uint16_t)(CAN_DEVICE_ID_FILTER>>13); +// canFilterConfig.FilterMaskIdLow = (uint16_t)(CAN_DEVICE_ID_FILTER<<3) | CAN_IDE_32; +// if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) +// { +// Error_Handler(); +// } +// +// //MODBUS +// canFilterConfig.FilterBank = 2; +// canFilterConfig.FilterIdHigh = (uint16_t)(0x03000000>>13); +// canFilterConfig.FilterIdLow = (uint16_t)(0x03000000<<5) | CAN_IDE_32; +// canFilterConfig.FilterMaskIdHigh = (uint16_t)(CAN_DATA_TYPE_FILTER>>13); // we're checking only high 13 bits, that contained "key" +// canFilterConfig.FilterMaskIdLow = (uint16_t)(CAN_DATA_TYPE_FILTER<<3) | CAN_IDE_32; // 1<<2 - set IDE bit +// if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) +// { +// Error_Handler(); +// } +// +// //PULSE +// canFilterConfig.FilterBank = 3; +// canFilterConfig.FilterIdHigh = (uint16_t)(HighIdFilter(DATA_TYPE_PULSE)>>13); +// canFilterConfig.FilterIdLow = (uint16_t)(HighIdFilter(DATA_TYPE_PULSE)<<5) | CAN_IDE_32; +// canFilterConfig.FilterMaskIdHigh = (uint16_t)(CAN_DATA_TYPE_FILTER>>13); // we're checking only high 13 bits, that contained "key" +// canFilterConfig.FilterMaskIdLow = (uint16_t)(CAN_DATA_TYPE_FILTER<<3) | CAN_IDE_32; // 1<<2 - set IDE bit +// if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) +// { +// Error_Handler(); +// } +// +// //DEBUG FILTER "ALL IDE WELCOME" +// canFilterConfig.FilterBank = 4; +// canFilterConfig.FilterIdHigh = (uint16_t)(HighIdFilter(0)>>13); +// canFilterConfig.FilterIdLow = (uint16_t)(HighIdFilter(0)<<5) | CAN_IDE_32; +// canFilterConfig.FilterMaskIdHigh = (uint16_t)(0>>13); // we're checking only high 13 bits, that contained "key" +// canFilterConfig.FilterMaskIdLow = (uint16_t)(0<<3) | CAN_IDE_32; // 1<<2 - set IDE bit +// if(HAL_CAN_ConfigFilter(&_HCAN, &canFilterConfig) != HAL_OK) +// { +// Error_Handler(); +// } +//} diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c index 331405e..dae2e77 100644 --- a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c @@ -403,7 +403,7 @@ HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan) } /* Set the automatic retransmission */ - if (hcan->Init.AutoRetransmission == ENABLE) + if (hcan->Init.AutoRetransmission == ENABLE) { CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_NART); } diff --git a/MDK-ARM/CAN_Request-Response_protocol.uvoptx b/MDK-ARM/CAN_Request-Response_protocol.uvoptx index 2ff3a6f..0a83236 100644 --- a/MDK-ARM/CAN_Request-Response_protocol.uvoptx +++ b/MDK-ARM/CAN_Request-Response_protocol.uvoptx @@ -117,6 +117,11 @@ Segger\JL2CM3.dll + + 0 + DLGUARM + В¬†wTІв TІв п;Зq + 0 ARMRTXEVENTFLAGS @@ -135,11 +140,7 @@ 0 JL2CM3 - -U -O14 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight JTAG-DP") -D00(4BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F103RG$Flash\STM32F10x_1024.FLM) - - - 0 - DLGUARM + -U-O14 -O14 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight JTAG-DP") -D00(4BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F103RG$Flash\STM32F10x_1024.FLM) 0 @@ -152,7 +153,79 @@ -U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F103RG$Flash\STM32F10x_1024.FLM) - + + + 0 + 0 + 30 + 1 +
134237984
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\Core\Src\requester.c + + \\CAN_Request_Response_protocol\../Core/Src/requester.c\30 +
+ + 1 + 0 + 52 + 1 +
134236608
+ 0 + 0 + 0 + 0 + 0 + 1 + ../Core/Src/can.c + + \\CAN_Request_Response_protocol\../Core/Src/can.c\52 +
+ + 2 + 0 + 334 + 1 +
134223362
+ 0 + 0 + 0 + 0 + 0 + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c + + \\CAN_Request_Response_protocol\../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c\334 +
+ + 3 + 0 + 1008 + 1 +
134224438
+ 0 + 0 + 0 + 0 + 0 + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c + + \\CAN_Request_Response_protocol\../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c\1008 +
+
+ + + 0 + 1 + sTime + + 0 @@ -195,6 +268,16 @@ + + + System Viewer\CAN + 35904 + + + System Viewer\RTC + 35905 + + 1 1 diff --git a/extID_type/extID_type_from_new_can_protocol.h b/extID_type/extID_type_from_new_can_protocol.h deleted file mode 100644 index 0e55288..0000000 --- a/extID_type/extID_type_from_new_can_protocol.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef _new_can_protocol_ID_struct -#define _new_can_protocol_ID_struct - -//Route mode -#define ROUTE_MASTER 0 -#define ROUTE_SLAVE 1 - -//Data Types -#define DATA_TYPE_BROADCAST 0b0000 -#define DATA_TYPE_DISCRETE 0b0001 -#define DATA_TYPE_ANALOG 0b0010 -#define DATA_TYPE_MODBUS_COIL 0b0011 -#define DATA_TYPE_MODBUS_DISCRETE 0b0100 -#define DATA_TYPE_MODBUS_HOLDING 0b0101 -#define DATA_TYPE_MODBUS_INPUT 0b0110 -#define DATA_TYPE_ERROR 0b0111 -#define DATA_TYPE_PULSE 0b1111 - -//Sensor Types for DATA_TYPE_BROADCAST -#define SENSOR_TYPE_BROADCAST_STATUS 0b00000 -#define SENSOR_TYPE_BROADCAST_ONOFF 0b00001 -#define SENSOR_TYPE_BROADCAST_RESTARTDEVICE 0b00010 -#define SENSOR_TYPE_BROADCAST_RTCSETUP 0b00011 - -//Sensor Types for DATA_TYPE_DISCRETE -#define SENSOR_TYPE_DISCRETE_ACCIDENT 0b00000 -#define SENSOR_TYPE_DISCRETE_WARNING 0b00001 -#define SENSOR_TYPE_DISCRETE_CONTROL_SIGNALS 0b00010 -#define SENSOR_TYPE_DISCRETE_FLAGS 0b00011 -#define SENSOR_TYPE_DISCRETE_RESET 0b00100 -#define SENSOR_TYPE_DISCRETE_CHANGE_MODE 0b00101 -#define SENSOR_TYPE_DISCRETE_REQUEST_LIST_OF_PARAMETERS 0b00110 - -//Sensor Types for DATA_TYPE_ANALOG -#define SENSOR_TYPE_ANALOG_UNIVERSAL 0b00000 -#define SENSOR_TYPE_ANALOG_USTAVKI 0b00001 -#define SENSOR_TYPE_ANALOG_U 0b00010 -#define SENSOR_TYPE_ANALOG_I 0b00011 -#define SENSOR_TYPE_ANALOG_T 0b00100 - -//Error Code -#define NONEXISTENT_ELEMENT 0x01 - -typedef union _extID{ - struct extID_Standard_Fields{ - unsigned DeviceID:8; - unsigned SensorID:11; - unsigned SensorType:5; - unsigned DataType:4; - unsigned Route:1; - }StandardFields; - struct extID_Modbus_Fields{ - unsigned DeviceID:8; - unsigned CountReg:8; - unsigned StrAdr:8; - unsigned DataType:4; - unsigned Route:1; - }ModbusFields; - unsigned int BitAll:29; -}extID; - -#endif \ No newline at end of file diff --git a/requester.xlsx b/requester.xlsx deleted file mode 100644 index bba010b717ab01f67dcf743959ccb504a62123fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19188 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 Pz+V!uVeSAW8|?o92>()K literal 0 HcmV?d00001