225 lines
4.7 KiB
C
225 lines
4.7 KiB
C
|
#ifndef _requester
|
|||
|
#define _requester
|
|||
|
#include "main.h"
|
|||
|
#include "can.h"
|
|||
|
#include "rtc.h"
|
|||
|
#include "tim.h"
|
|||
|
|
|||
|
#define _DEMO
|
|||
|
|
|||
|
#define ONLINE 1;
|
|||
|
#define OFFLINE 0;
|
|||
|
|
|||
|
#define TIM_REQUESTER_Prescaler 64000
|
|||
|
|
|||
|
//CAN Filter
|
|||
|
#define ID_MAIN_DEVICE 0x000
|
|||
|
#define CURRENT_ID_DEVICE 0x002
|
|||
|
#define CAN_IDE_32 0b00000100 // Для 32-х битного масштаба
|
|||
|
|
|||
|
#define CAN_DATA_TYPE_FILTER 0x1F000000
|
|||
|
#define CAN_DEVICE_ID_FILTER 0x000000FF
|
|||
|
#define CAN_SENSOR_TYPE_FILTER 0x00F80000
|
|||
|
#define CAN_SENSOR_ID_FILTER 0x0007FF00
|
|||
|
|
|||
|
|
|||
|
void REQUESTER_Init(void);
|
|||
|
void REQUESTER_MainWhile(void);
|
|||
|
void Boot_SystemClock_Config(void);
|
|||
|
void REQUESTER_AnalogProcessing(void);
|
|||
|
void REQUESTER_BroadcastProcessing(void);
|
|||
|
void REQUESTER_DiscreticProcessing(void);
|
|||
|
void REQUESTER_ModbusProcessing(void);
|
|||
|
void REQUESTER_RTC_SYNC(uint8_t *data);
|
|||
|
void REQUESTER_Pulse_TIM_Handler(void);
|
|||
|
void Boot_SystemClock_Config(void);
|
|||
|
void REQUESTER_CAN_FILTERS(void);
|
|||
|
|
|||
|
union Byte{
|
|||
|
struct bitfield{
|
|||
|
unsigned bit0:1;
|
|||
|
unsigned bit1:1;
|
|||
|
unsigned bit2:1;
|
|||
|
unsigned bit3:1;
|
|||
|
unsigned bit4:1;
|
|||
|
unsigned bit5:1;
|
|||
|
unsigned bit6:1;
|
|||
|
unsigned bit7:1;
|
|||
|
}Bitfield;
|
|||
|
char AllBit;
|
|||
|
};
|
|||
|
|
|||
|
_Bool IsLeapYear(uint8_t year);
|
|||
|
|
|||
|
#define COUNT_OF_MODBUS_SECTIONS 1
|
|||
|
#define MODBUS_SECTION_MASK 0
|
|||
|
#define MODBUS_SECTION_FILTER 1
|
|||
|
|
|||
|
#define SensorToModbusRegister(SensorType, SensorID) SensorType << 11 | SensorID
|
|||
|
#define HighByteOfWord(WORD) (WORD>>8)&0xFF
|
|||
|
#define LowByteOfWord(WORD) WORD&0xFF
|
|||
|
|
|||
|
//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_STATUS 0b00000
|
|||
|
#define SENSOR_TYPE_ONOFF 0b00001
|
|||
|
#define SENSOR_TYPE_RTCSETUP 0b00010
|
|||
|
|
|||
|
//Sensor Types for DATA_TYPE_DISCRETE
|
|||
|
#define SENSOR_TYPE_ACCIDENT 0b00000
|
|||
|
#define SENSOR_TYPE_WARNING 0b00001
|
|||
|
#define SENSOR_TYPE_CONTROL_SIGNALS 0b00010
|
|||
|
#define SENSOR_TYPE_FLAGS 0b00011
|
|||
|
#define SENSOR_TYPE_RESET 0b00100
|
|||
|
#define SENSOR_TYPE_CHANGE_MODE 0b00101
|
|||
|
#define SENSOR_TYPE_REQUEST_LIST_OF_PARAMETERS 0b00110
|
|||
|
|
|||
|
//Sensor Types for DATA_TYPE_ANALOG
|
|||
|
#define SENSOR_TYPE_UNIVERSAL 0b00000
|
|||
|
#define SENSOR_TYPE_U 0b00001
|
|||
|
#define SENSOR_TYPE_I 0b00010
|
|||
|
#define SENSOR_TYPE_T 0b00011
|
|||
|
|
|||
|
//Error Code
|
|||
|
#define NONEXISTENT_ELEMENT 0x01
|
|||
|
|
|||
|
#define HighIdFilter(x) x<<24
|
|||
|
|
|||
|
|
|||
|
struct controlflags{
|
|||
|
unsigned IsPulse:1;
|
|||
|
unsigned IsRtrMode:1;
|
|||
|
};
|
|||
|
|
|||
|
//Device settings
|
|||
|
union ext_ID{
|
|||
|
struct ext_ID_fields{
|
|||
|
unsigned DeviceID:8;
|
|||
|
unsigned SensorID:11;
|
|||
|
unsigned SensorType:5;
|
|||
|
unsigned DataType:4;
|
|||
|
unsigned Route:1;
|
|||
|
}Fields;
|
|||
|
unsigned int BitAll:29;
|
|||
|
};
|
|||
|
|
|||
|
union ext_ID_Modbus{
|
|||
|
struct ext_ID_Modbus_fields{
|
|||
|
unsigned DeviceID:8;
|
|||
|
unsigned CountReg:8;
|
|||
|
unsigned StrAdr:8;
|
|||
|
unsigned DataType:4;
|
|||
|
unsigned Route;
|
|||
|
}Fields;
|
|||
|
unsigned int BitAll:29;
|
|||
|
};
|
|||
|
|
|||
|
struct device
|
|||
|
{
|
|||
|
unsigned Status:1;
|
|||
|
union ext_ID ExtID;
|
|||
|
unsigned TimeFromLastPulse;
|
|||
|
unsigned LastPulseStep;
|
|||
|
};
|
|||
|
|
|||
|
struct data
|
|||
|
{
|
|||
|
struct T_sens{
|
|||
|
char info[256];
|
|||
|
unsigned SensID;
|
|||
|
unsigned AvrgValue;
|
|||
|
unsigned LastTenValues[10];
|
|||
|
}TS;
|
|||
|
|
|||
|
struct U_sens{
|
|||
|
char info[256];
|
|||
|
unsigned SensID;
|
|||
|
unsigned AvrgValue;
|
|||
|
unsigned LastTenValues[10];
|
|||
|
}Uu, Uv, Uw;
|
|||
|
|
|||
|
struct I_sens{
|
|||
|
char info[256];
|
|||
|
unsigned SensID;
|
|||
|
unsigned AvrgValue;
|
|||
|
unsigned LastTenValues[10];
|
|||
|
}Iu, Iv, Iw;
|
|||
|
};
|
|||
|
|
|||
|
struct received_request{
|
|||
|
union ext_ID RequestedExtID;
|
|||
|
unsigned RequestedDLC;
|
|||
|
uint8_t RxData[8];
|
|||
|
|
|||
|
//DATA_TYPE_DISCRETIC
|
|||
|
union discreticflags{
|
|||
|
struct discretictype{
|
|||
|
unsigned Request_Accident:1;
|
|||
|
unsigned Request_Warning:1;
|
|||
|
unsigned Request_Control_Signals:1;
|
|||
|
unsigned Request_Flags:1;
|
|||
|
unsigned Request_Reset:1;
|
|||
|
unsigned Request_List_of_Parameters:1;
|
|||
|
}DiscreticType;
|
|||
|
unsigned AllFlags:5;
|
|||
|
}DiscreticFlags;
|
|||
|
|
|||
|
//DATA_TYPE_BROADCAST
|
|||
|
union broadcastflags{
|
|||
|
struct broadcasttype{
|
|||
|
unsigned Request_Status:1;
|
|||
|
unsigned Request_OnOff:1;
|
|||
|
unsigned Request_RTC_Setup:1;
|
|||
|
}BroadcastType;
|
|||
|
unsigned AllFlags:3;
|
|||
|
}BroadcastFlags;
|
|||
|
|
|||
|
//DATA_TYPE_ANALOG
|
|||
|
union analogflags{
|
|||
|
struct analogtype{
|
|||
|
unsigned Request_Universal_Sens:1;
|
|||
|
unsigned Request_U_Sens:1;
|
|||
|
unsigned Request_I_Sens:1;
|
|||
|
unsigned Request_T_Sens:1;
|
|||
|
}AnalogType;
|
|||
|
unsigned AllFlags:4;
|
|||
|
}AnalogFlags;
|
|||
|
|
|||
|
//DATA_TYPE_MODBUS
|
|||
|
union modbusflags{
|
|||
|
struct modbustype{
|
|||
|
unsigned Coil:1;
|
|||
|
unsigned Discrete:1;
|
|||
|
unsigned Holding:1;
|
|||
|
unsigned Input:1;
|
|||
|
}ModbusType;
|
|||
|
unsigned AllFlags:4;
|
|||
|
}ModbusFlags;
|
|||
|
|
|||
|
union sensor_To_Modbus{
|
|||
|
struct modbus{
|
|||
|
unsigned Count:8;
|
|||
|
unsigned StrAdr:8;
|
|||
|
}Modbus;
|
|||
|
unsigned Sensor:16;
|
|||
|
}SensorToModbus;
|
|||
|
|
|||
|
unsigned ModbusFlag:1;
|
|||
|
};
|
|||
|
|
|||
|
#endif
|