fix:修改UDP通讯中,取电变化上报机制
1、问题点:当RCU网络状态异常的情况下,网络还处于协商状态下,还未进入正常通讯环节时,取电变化不会进行判断。这会导致取电变化上报与实际产生取电状态时间点对不上。 2、将BLV_C1F_Module代码上传至Gitea,之前代码修改记录请查看 .\BasicCode\Readme.txt
This commit is contained in:
368
BasicCode/Drive/PB20/BLV_485_Dev_PB20_LED_Fun.c
Normal file
368
BasicCode/Drive/PB20/BLV_485_Dev_PB20_LED_Fun.c
Normal file
@@ -0,0 +1,368 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file BlV_Bus_Dev_PB20_LED_Fun.c
|
||||
* @author BLW RCU development Team
|
||||
* @version V1.0
|
||||
* @date 2023<32><33>10<31><30>19<31><39>
|
||||
* @brief
|
||||
* PB20_LED<45><44><EFBFBD><EFBFBD>
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
#if RS485_PB20_LD_Flag
|
||||
|
||||
/*<2A><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>忪ʼ*/
|
||||
void BLV_PB20_LED_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t loop,uint16_t start);
|
||||
uint16_t BLV_PB20_LED_Read_State(uint32_t devaddr,uint16_t loop);
|
||||
uint8_t BLV_PB20_LED_Rccv_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
|
||||
void BLV_PB20_LED_Dis(uint32_t dev_addr);
|
||||
|
||||
/*<2A><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
|
||||
void PB20_LED_AddToPB(uint32_t devaddr, Device_Public_Information_G *BUS_Public)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public_PB;
|
||||
RS485_PB20_INFO Rs485PB20;
|
||||
|
||||
if(devaddr != NULL)
|
||||
{
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PB,sizeof(Device_Public_Information_G),devaddr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(Rs485PB20.LEDDevNum < PB20_RELAY_MAX)
|
||||
{
|
||||
Rs485PB20.LED_List[Rs485PB20.LEDDevNum].Type = BUS_Public->type;
|
||||
Rs485PB20.LED_List[Rs485PB20.LEDDevNum].Addr = BUS_Public->addr;
|
||||
Rs485PB20.LED_List[Rs485PB20.LEDDevNum].Port = BUS_Public->port;
|
||||
|
||||
Rs485PB20.LEDDevNum++;
|
||||
}
|
||||
|
||||
BUS_Public_PB.check = 0x00;
|
||||
BUS_Public_PB.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20, sizeof(RS485_PB20_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G),devaddr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),devaddr+Dev_Privately);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PB20LED_SendFlag_Set(uint32_t devaddr, Device_Public_Information_G *BUS_Public)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public_PB;
|
||||
RS485_PB20_INFO Rs485PB20;
|
||||
|
||||
if(devaddr!=NULL)
|
||||
{
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PB,sizeof(Device_Public_Information_G),devaddr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(BUS_Public_PB.type != Dev_Rs485_PB20) {
|
||||
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"%s - Type Error %d",BUS_Public_PB.type);
|
||||
return ; //<2F>ж<EFBFBD><D0B6>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
}
|
||||
if(BUS_Public->addr<=31)
|
||||
{
|
||||
Rs485PB20.LED_Send_L_Flag |= (0x01<<BUS_Public->addr);
|
||||
}
|
||||
else if((BUS_Public->addr>=32)&&(BUS_Public->addr<=63))
|
||||
{
|
||||
Rs485PB20.LED_Send_H_Flag |= (0x01<<(BUS_Public->addr-32));
|
||||
}
|
||||
|
||||
BUS_Public_PB.check = 0x00;
|
||||
BUS_Public_PB.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20, sizeof(RS485_PB20_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G),devaddr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),devaddr+Dev_Privately);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @name : BLV_RS485_PB20_LED_Data_Init
|
||||
* @para :
|
||||
* DataLen :<3A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* Data: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @attention :<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_RS485_PB20_LED_Data_Init(uint8_t devaddr)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_LED_INFO Rs485PB20LED;
|
||||
|
||||
memset(&BUS_Public,0,sizeof(Device_Public_Information_G));
|
||||
memset(&Rs485PB20LED,0,sizeof(RS485_PB20_LED_INFO));
|
||||
|
||||
BUS_Public.addr = devaddr; //<2F>豸485<38><35>ַ
|
||||
BUS_Public.type = Dev_Rs485_PB20_LD; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
BUS_Public.baud = 0x00; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>9600
|
||||
// BUS_Public.retry_num = 0x03; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
// BUS_Public.wait_time = 0x0064; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
|
||||
BUS_Public.Protocol = 0x01; //<2F>豸Э<E8B1B8><D0AD>
|
||||
|
||||
BUS_Public.DevFunInfo.Dev_Data_Process = BLV_PB20_LED_Dis;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLV_PB20_LED_Control_State;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = BLV_PB20_LED_Read_State;
|
||||
|
||||
Rs485PB20LED.PB20DevType = 0x30;//Data[15];
|
||||
Rs485PB20LED.PB20DevAddr = 0x01;//Data[16];
|
||||
Rs485PB20LED.PB20DevPort = 0x03;//Data[17];
|
||||
Rs485PB20LED.PB20Addr = Find_AllDevice_List_Information2(Rs485PB20LED.PB20DevPort,Rs485PB20LED.PB20DevType,Rs485PB20LED.PB20DevAddr);
|
||||
|
||||
Rs485PB20LED.LoopValidNum = 4;
|
||||
Rs485PB20LED.DevOffline = Rs485PB20LED.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
|
||||
Rs485PB20LED.LED_DimTime = 10;
|
||||
|
||||
// switch(Data[2])
|
||||
// {
|
||||
// case 0x00:
|
||||
Add_Nor_Device_To_List2(&BUS_Public,(uint8_t *)&Rs485PB20LED,sizeof(RS485_PB20_LED_INFO));
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
|
||||
PB20_LED_AddToPB(Rs485PB20LED.PB20Addr,&BUS_Public);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @name : PB20LED<45>豸<EFBFBD><E8B1B8>ʼ<EFBFBD><CABC>
|
||||
* @para :
|
||||
* dev_info :<3A><EFBFBD><DFBC>ļ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* data :<3A><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* data_len :<3A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* @attention :<3A><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_RS485_PB20_LED_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_LED_INFO Rs485PB20LED;
|
||||
|
||||
memset(&BUS_Public,0,sizeof(Device_Public_Information_G));
|
||||
memset(&Rs485PB20LED,0,sizeof(RS485_PB20_LED_INFO));
|
||||
|
||||
BUS_Public.addr = dev_info->addr; //<2F>豸485<38><35>ַ
|
||||
BUS_Public.type = dev_info->type; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
BUS_Public.baud = dev_info->baud; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>9600
|
||||
// BUS_Public.retry_num = 0x03; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
// BUS_Public.wait_time = 0x0064; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
|
||||
BUS_Public.Protocol = dev_info->version; //Э<><D0AD><EFBFBD><EFBFBD>
|
||||
|
||||
BUS_Public.DevFunInfo.Dev_Data_Process = BLV_PB20_LED_Dis;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLV_PB20_LED_Control_State;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = BLV_PB20_LED_Read_State;
|
||||
|
||||
Rs485PB20LED.PB20DevType = dev_info->parent_type;
|
||||
Rs485PB20LED.PB20DevAddr = dev_info->parent_addr;
|
||||
Rs485PB20LED.PB20DevPort = dev_info->parent_port;
|
||||
Rs485PB20LED.PB20Addr = Find_AllDevice_List_Information2(Rs485PB20LED.PB20DevPort,Rs485PB20LED.PB20DevType,Rs485PB20LED.PB20DevAddr);
|
||||
|
||||
Rs485PB20LED.LoopValidNum = dev_info->output_num;
|
||||
Rs485PB20LED.DevOffline = Rs485PB20LED.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
|
||||
Rs485PB20LED.LED_DimTime = 10;
|
||||
|
||||
switch(dev_info->port)
|
||||
{
|
||||
case 0x00:
|
||||
Add_Nor_Device_To_List2(&BUS_Public,(uint8_t *)&Rs485PB20LED,sizeof(RS485_PB20_LED_INFO));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
PB20_LED_AddToPB(Rs485PB20LED.PB20Addr,&BUS_Public);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_LED_Control_State
|
||||
* Description : PB20LED<45><44><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
|
||||
* Input :
|
||||
devaddr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
loop : <20><>·
|
||||
start : ״̬
|
||||
* Return : <20><>
|
||||
* attention : temp1<70><31>0<EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_PB20_LED_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t loop,uint16_t start)
|
||||
{
|
||||
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"BLV_PB20_LED_Control_State:%08X",devaddr);
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_LED_INFO Rs485PB20LED;
|
||||
|
||||
uint8_t CtrlMode; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
uint8_t CtrlContect; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint8_t temp1 = 0x00;
|
||||
|
||||
if(devaddr == 0x00) return;
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20LED,sizeof(RS485_PB20_LED_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(loop >= Rs485PB20LED.LoopValidNum) //<2F><>Ч<EFBFBD><D0A7>·
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
CtrlMode = start&0x00ff; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
CtrlContect = start>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"PB20LED Ctrl mode:%d state:%d",CtrlMode,CtrlContect);
|
||||
|
||||
switch(CtrlMode)
|
||||
{
|
||||
case PB20_LED_LIGHT_OPEN: //<2F>ٷֱ<D9B7><D6B1><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD> - <20><>
|
||||
Rs485PB20LED.LightBuf[loop] = CtrlContect;
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_LED_LIGHT_CLOSE: //<2F>ٷֱ<D9B7><D6B1><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD> - <20><>
|
||||
Rs485PB20LED.LightBuf[loop] = 0x00;
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_LED_Ctrl_UpperLimit:
|
||||
case PB20_LED_Ctrl_LowerLimit:
|
||||
case PB20_LED_Cycle_Ctrl:
|
||||
case PB20_LED_Cycle_Stop:
|
||||
Rs485PB20LED.CtrlMode[loop] = CtrlMode;
|
||||
Rs485PB20LED.CtrlTime[loop] = CtrlContect;
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_LED_DimTime_Set: //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Rs485PB20LED.LED_DimTime = CtrlContect;
|
||||
temp1++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if(temp1 != 0x00)
|
||||
{
|
||||
BUS_Public.check = 0x00;
|
||||
BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20LED, sizeof(RS485_PB20_LED_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20LED,sizeof(RS485_PB20_LED_INFO),devaddr+Dev_Privately);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_LED_Read_State
|
||||
* Description : PB20LED״̬<D7B4><CCAC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
devaddr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
loop :<3A><>·
|
||||
* Return : <20><>
|
||||
*******************************************************************************/
|
||||
uint16_t BLV_PB20_LED_Read_State(uint32_t devaddr,uint16_t loop)
|
||||
{
|
||||
|
||||
if(devaddr == 0x00)
|
||||
return 0x00;
|
||||
|
||||
RS485_PB20_LED_INFO Rs485PB20LED;
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20LED,sizeof(RS485_PB20_LED_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(loop >= PB20_LED_BUFF_SIZE)
|
||||
{
|
||||
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_LED_Read_State loop >= PB20_LED_BUFF_SIZE");
|
||||
return 0x00; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ ֱ<>ӷ<EFBFBD><D3B7><EFBFBD>0
|
||||
}
|
||||
|
||||
return Rs485PB20LED.LightBuf[loop];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_LED_Dis
|
||||
* Description : PB20LED<45><44><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
dev_addr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
* Return :
|
||||
*******************************************************************************/
|
||||
void BLV_PB20_LED_Dis(uint32_t dev_addr)
|
||||
{
|
||||
uint8_t i; //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>·
|
||||
Device_Public_Information_G BUS_Public_PBLED;
|
||||
RS485_PB20_LED_INFO Rs485PB20LED;
|
||||
uint8_t KeepFlag = 0x00;
|
||||
|
||||
if(NULL == dev_addr)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PBLED,sizeof(Device_Public_Information_G),dev_addr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20LED,sizeof(RS485_PB20_LED_INFO),dev_addr+Dev_Privately);
|
||||
|
||||
|
||||
for(i = 0; i < PB20_LED_BUFF_SIZE; i++)
|
||||
{
|
||||
if(Rs485PB20LED.LightBuf_Last[i] != Rs485PB20LED.LightBuf[i])
|
||||
{
|
||||
Rs485PB20LED.LightBuf_Last[i] = Rs485PB20LED.LightBuf[i];
|
||||
Rs485PB20LED.Light_Flag |= (0x01<<i);
|
||||
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_LED Light_Flag:%d",Rs485PB20LED.Light_Flag);
|
||||
KeepFlag = 0x01;
|
||||
}
|
||||
|
||||
if(Rs485PB20LED.CtrlMode_Last[i] != Rs485PB20LED.CtrlMode[i])
|
||||
{
|
||||
Rs485PB20LED.CtrlMode_Last[i] = Rs485PB20LED.CtrlMode[i];
|
||||
Rs485PB20LED.Cycle_Flag |= (0x01<<i);
|
||||
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_LED Cycle_Flag:%d",Rs485PB20LED.Cycle_Flag);
|
||||
KeepFlag = 0x01;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if((Rs485PB20LED.Light_Flag!=0x00)||(Rs485PB20LED.Cycle_Flag!=0x00))
|
||||
{
|
||||
PB20LED_SendFlag_Set(Rs485PB20LED.PB20Addr,&BUS_Public_PBLED);
|
||||
}
|
||||
|
||||
|
||||
if(0x01 == KeepFlag)
|
||||
{
|
||||
BUS_Public_PBLED.check = 0x00;
|
||||
BUS_Public_PBLED.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PBLED, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20LED, sizeof(RS485_PB20_LED_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PBLED, sizeof(Device_Public_Information_G),dev_addr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20LED,sizeof(RS485_PB20_LED_INFO),dev_addr+Dev_Privately);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_LED_Rccv_Check
|
||||
* Description : PB20LED<45><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
dev_addr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
data_addr : <20><><EFBFBD>ݵ<EFBFBD>ַ
|
||||
len : <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* Return :
|
||||
0x00<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
0x01<30><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
*******************************************************************************/
|
||||
uint8_t BLV_PB20_LED_Rccv_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len)
|
||||
{
|
||||
|
||||
uint8_t rev = 0x01;
|
||||
|
||||
return rev;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
71
BasicCode/Drive/PB20/BLV_485_Dev_PB20_LED_Fun.h
Normal file
71
BasicCode/Drive/PB20/BLV_485_Dev_PB20_LED_Fun.h
Normal file
@@ -0,0 +1,71 @@
|
||||
#ifndef _BLV_485_DEV_PB20_LED_FUN_H_
|
||||
#define _BLV_485_DEV_PB20_LED_FUN_H_
|
||||
|
||||
#include "stdint.h"
|
||||
#include "BLV_485_Protocol.h"
|
||||
#include "BLV_All_Dev_Init.h"
|
||||
|
||||
#define PB20_LED_LIGHT_OPEN 0x01 //<2F><>
|
||||
#define PB20_LED_LIGHT_CLOSE 0x02 //<2F><>
|
||||
|
||||
#define PB20_LED_Ctrl_UpperLimit 0x05 //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_LED_Ctrl_LowerLimit 0x06 //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_LED_Cycle_Ctrl 0x07 //ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_LED_Cycle_Stop 0x08 //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
||||
|
||||
#define PB20_LED_DimTime_Set 0x09 //<2F><><EFBFBD>⽥<EFBFBD><E2BDA5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
#define PB20_LED_Dim_Up 0x1C //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
#define PB20_LED_Dim_Down 0x1D //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
|
||||
#define PB20_LED_Dim_Up_Limit 0x1A //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
#define PB20_LED_Dim_Down_Limit 0x1B //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
|
||||
#define PB20_LED_Cycle_Dim_Up 0x1E //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
#define PB20_LED_Cycle_Dim_Down 0x1F //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
|
||||
#define PB20_LED_Cycle_Dim_Up_Limit 0x20 //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_LED_Cycle_Dim_Down_Limit 0x21 //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
#define PB20_LED_BUFF_SIZE 0x04
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
|
||||
uint8_t DevSendCnt:4; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> ռ4λ
|
||||
uint8_t DevOffline:2; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ2λ
|
||||
uint8_t DevOfflineLast:2; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ2λ
|
||||
// uint8_t DevSendSN; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>SN<53><4E>
|
||||
|
||||
|
||||
uint16_t LoopValidNum;
|
||||
|
||||
uint8_t LightBuf[PB20_LED_BUFF_SIZE]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD>л<EFBFBD>·<EFBFBD><C2B7>״̬
|
||||
uint8_t LightBuf_Last[PB20_LED_BUFF_SIZE]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD>л<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
|
||||
|
||||
uint8_t CtrlMode[PB20_LED_BUFF_SIZE];
|
||||
uint8_t CtrlMode_Last[PB20_LED_BUFF_SIZE];
|
||||
|
||||
uint8_t CtrlTime[PB20_LED_BUFF_SIZE];
|
||||
uint8_t LED_DimTime; //<2F><><EFBFBD>ȿ<EFBFBD><C8BF>ƽ<EFBFBD><C6BD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
|
||||
uint8_t PB20DevType;
|
||||
uint8_t PB20DevAddr;
|
||||
uint8_t PB20DevPort;
|
||||
|
||||
uint8_t Light_Flag;
|
||||
uint8_t Cycle_Flag;
|
||||
|
||||
uint32_t PB20Addr;
|
||||
|
||||
}__attribute__ ((__packed__))RS485_PB20_LED_INFO;
|
||||
|
||||
|
||||
void BLV_RS485_PB20_LED_Data_Init(uint8_t devaddr);
|
||||
void BLV_RS485_PB20_LED_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
|
||||
|
||||
#endif
|
||||
|
||||
351
BasicCode/Drive/PB20/BLV_485_Dev_PB20_Relay_Fun.c
Normal file
351
BasicCode/Drive/PB20/BLV_485_Dev_PB20_Relay_Fun.c
Normal file
@@ -0,0 +1,351 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file BlV_Bus_Dev_PB20_Relay_Fun.c
|
||||
* @author BLW RCU development Team
|
||||
* @version V1.0
|
||||
* @date 2023<32><33>10<31><30>19<31><39>
|
||||
* @brief
|
||||
* PB20_Relay<61><79><EFBFBD><EFBFBD>
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
#if RS485_PB20_Relay_Flag
|
||||
|
||||
/*<2A><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>忪ʼ*/
|
||||
void BLV_PB20_Relay_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t loop,uint16_t start);
|
||||
uint16_t BLV_PB20_Relay_Read_State(uint32_t devaddr,uint16_t loop);
|
||||
uint8_t BLV_PB20_Relay_Rccv_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
|
||||
void BLV_PB20_Relay_Dis(uint32_t dev_addr);
|
||||
|
||||
/*<2A><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
|
||||
void PB20_Relay_AddToPB(uint32_t devaddr, Device_Public_Information_G *BUS_Public)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public_PB;
|
||||
RS485_PB20_INFO Rs485PB20;
|
||||
|
||||
if(devaddr != NULL)
|
||||
{
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PB,sizeof(Device_Public_Information_G),devaddr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(Rs485PB20.RelayDevNum < PB20_RELAY_MAX)
|
||||
{
|
||||
Rs485PB20.Relay_List[Rs485PB20.RelayDevNum].Type = BUS_Public->type;
|
||||
Rs485PB20.Relay_List[Rs485PB20.RelayDevNum].Addr = BUS_Public->addr;
|
||||
Rs485PB20.Relay_List[Rs485PB20.RelayDevNum].Port = BUS_Public->port;
|
||||
|
||||
Rs485PB20.RelayDevNum++;
|
||||
}
|
||||
|
||||
BUS_Public_PB.check = 0x00;
|
||||
BUS_Public_PB.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20, sizeof(RS485_PB20_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G),devaddr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),devaddr+Dev_Privately);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @name : BLV_RS485_PB20_Relay_Data_Init
|
||||
* @para :
|
||||
* DataLen :<3A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* Data: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @attention :<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_RS485_PB20_Relay_Data_Init(uint8_t devaddr)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_Relay_INFO Rs485PB20Relay;
|
||||
|
||||
memset(&BUS_Public,0,sizeof(Device_Public_Information_G));
|
||||
memset(&Rs485PB20Relay,0,sizeof(RS485_PB20_Relay_INFO));
|
||||
|
||||
BUS_Public.addr = devaddr; //<2F>豸485<38><35>ַ
|
||||
BUS_Public.type = Dev_Rs485_PB20_Relay; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
BUS_Public.baud = 0x00;//Data[3] + (Data[4]<<8) + (Data[5]<<16) + (Data[6]<<24); //<2F>豸<EFBFBD><E8B1B8><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>9600
|
||||
// BUS_Public.retry_num = 0x03; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
// BUS_Public.wait_time = 0x0064; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
|
||||
BUS_Public.Protocol = 0x01; //<2F>豸Э<E8B1B8><D0AD>
|
||||
|
||||
BUS_Public.DevFunInfo.Dev_Data_Process = BLV_PB20_Relay_Dis;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLV_PB20_Relay_Control_State;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = BLV_PB20_Relay_Read_State;
|
||||
|
||||
Rs485PB20Relay.PB20DevType = 0x30;
|
||||
Rs485PB20Relay.PB20DevAddr = 0x01;
|
||||
Rs485PB20Relay.PB20DevPort = 0x03;
|
||||
Rs485PB20Relay.PB20Addr = Find_AllDevice_List_Information2(Rs485PB20Relay.PB20DevPort,Rs485PB20Relay.PB20DevType,Rs485PB20Relay.PB20DevAddr);
|
||||
|
||||
Rs485PB20Relay.LoopValidNum = 0x04;
|
||||
Rs485PB20Relay.DevOffline = Rs485PB20Relay.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
|
||||
|
||||
// switch(Data[2])
|
||||
// {
|
||||
// case 0x00:
|
||||
Add_Nor_Device_To_List2(&BUS_Public,(uint8_t *)&Rs485PB20Relay,sizeof(RS485_PB20_Relay_INFO));
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
|
||||
PB20_Relay_AddToPB(Rs485PB20Relay.PB20Addr,&BUS_Public);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @name : PB20Relay<61>豸<EFBFBD><E8B1B8>ʼ<EFBFBD><CABC>
|
||||
* @para :
|
||||
* dev_info :<3A><EFBFBD><DFBC>ļ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* data :<3A><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* data_len :<3A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* @attention :<3A><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_RS485_PB20_Relay_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_Relay_INFO Rs485PB20Relay;
|
||||
|
||||
memset(&BUS_Public,0,sizeof(Device_Public_Information_G));
|
||||
memset(&Rs485PB20Relay,0,sizeof(RS485_PB20_Relay_INFO));
|
||||
|
||||
BUS_Public.addr = dev_info->addr; //<2F>豸485<38><35>ַ
|
||||
BUS_Public.type = dev_info->type; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
BUS_Public.baud = dev_info->baud; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>9600
|
||||
// BUS_Public.retry_num = 0x03; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
// BUS_Public.wait_time = 0x0064; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
|
||||
BUS_Public.Protocol = dev_info->version; //Э<><D0AD><EFBFBD><EFBFBD>
|
||||
|
||||
BUS_Public.DevFunInfo.Dev_Data_Process = BLV_PB20_Relay_Dis;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLV_PB20_Relay_Control_State;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = BLV_PB20_Relay_Read_State;
|
||||
|
||||
Rs485PB20Relay.PB20DevType = dev_info->parent_type;
|
||||
Rs485PB20Relay.PB20DevAddr = dev_info->parent_addr;
|
||||
Rs485PB20Relay.PB20DevPort = dev_info->parent_port;
|
||||
Rs485PB20Relay.PB20Addr = Find_AllDevice_List_Information2(Rs485PB20Relay.PB20DevPort,Rs485PB20Relay.PB20DevType,Rs485PB20Relay.PB20DevAddr);
|
||||
|
||||
Rs485PB20Relay.LoopValidNum = dev_info->output_num;
|
||||
Rs485PB20Relay.DevOffline = Rs485PB20Relay.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
|
||||
|
||||
switch(dev_info->port)
|
||||
{
|
||||
case 0x00:
|
||||
Add_Nor_Device_To_List2(&BUS_Public,(uint8_t *)&Rs485PB20Relay,sizeof(RS485_PB20_Relay_INFO));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
PB20_Relay_AddToPB(Rs485PB20Relay.PB20Addr,&BUS_Public);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Relay_Control_State
|
||||
* Description : PB20Relay<61><79><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
|
||||
* Input :
|
||||
devaddr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
loop : <20><>·
|
||||
start : ״̬
|
||||
* Return : <20><>
|
||||
* attention : temp1<70><31>0<EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_PB20_Relay_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t loop,uint16_t start)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_Relay_INFO Rs485PB20Relay;
|
||||
|
||||
uint8_t CtrlMode; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
// uint8_t CtrlContect; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint8_t temp1 = 0x00;
|
||||
|
||||
if(devaddr == 0x00) return;
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20Relay,sizeof(RS485_PB20_Relay_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(loop >= Rs485PB20Relay.LoopValidNum) //<2F><>Ч<EFBFBD><D0A7>·
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
CtrlMode = start&0x00ff; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
// CtrlContect = start>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
switch(CtrlMode)
|
||||
{
|
||||
case PB20_Relay_OPEN:
|
||||
case PB20_Relay_CLOSE:
|
||||
Rs485PB20Relay.RelayState[loop] = CtrlMode;
|
||||
//Dbg_Println(DBG_BIT_SYS_STATUS_bit,"PB20_Relay loop%d Ctrl:%d - %d",loop,Rs485PB20Relay.RelayState[loop],Rs485PB20Relay.RelayState_Last[loop]);
|
||||
temp1++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if(temp1 != 0x00)
|
||||
{
|
||||
BUS_Public.check = 0x00;
|
||||
BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20Relay, sizeof(RS485_PB20_Relay_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20Relay,sizeof(RS485_PB20_Relay_INFO),devaddr+Dev_Privately);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Relay_Read_State
|
||||
* Description : PB20Relay״̬<D7B4><CCAC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
devaddr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
loop :<3A><>·
|
||||
* Return : <20><>
|
||||
*******************************************************************************/
|
||||
uint16_t BLV_PB20_Relay_Read_State(uint32_t devaddr,uint16_t loop)
|
||||
{
|
||||
|
||||
if(devaddr == 0x00)
|
||||
return 0x00;
|
||||
|
||||
RS485_PB20_Relay_INFO Rs485PB20Relay;
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20Relay,sizeof(RS485_PB20_Relay_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(loop >= PB20_Relay_BUFF_SIZE)
|
||||
{
|
||||
//Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_Relay_Read_State loop >= PB20_Relay_BUFF_SIZE");
|
||||
return 0x00; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ ֱ<>ӷ<EFBFBD><D3B7><EFBFBD>0
|
||||
}
|
||||
|
||||
return Rs485PB20Relay.RelayState[loop];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Relay_Dis
|
||||
* Description : PB20Relay<61><79><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
dev_addr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
* Return :
|
||||
*******************************************************************************/
|
||||
void BLV_PB20_Relay_Dis(uint32_t dev_addr)
|
||||
{
|
||||
uint8_t i; //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>·
|
||||
Device_Public_Information_G BUS_Public_PBRelay;
|
||||
RS485_PB20_Relay_INFO Rs485PB20Relay;
|
||||
|
||||
Device_Public_Information_G BUS_Public_PB;
|
||||
RS485_PB20_INFO Rs485PB20;
|
||||
|
||||
uint8_t relay_flag = 0x00;
|
||||
uint8_t pb20_flag = 0x00;
|
||||
|
||||
|
||||
if(NULL == dev_addr)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PBRelay,sizeof(Device_Public_Information_G),dev_addr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20Relay,sizeof(RS485_PB20_Relay_INFO),dev_addr+Dev_Privately);
|
||||
|
||||
if(Rs485PB20Relay.PB20Addr == NULL)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
else
|
||||
{
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PB,sizeof(Device_Public_Information_G),Rs485PB20Relay.PB20Addr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),Rs485PB20Relay.PB20Addr+Dev_Privately);
|
||||
|
||||
if(BUS_Public_PB.type != Dev_Rs485_PB20) {
|
||||
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"%s - Type Error %d",BUS_Public_PB.type);
|
||||
return ; //<2F>ж<EFBFBD><D0B6>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(i = 0; i < PB20_Relay_BUFF_SIZE; i++)
|
||||
{
|
||||
if(Rs485PB20Relay.RelayState_Last[i] != Rs485PB20Relay.RelayState[i])
|
||||
{
|
||||
Rs485PB20Relay.RelayState_Last[i] = Rs485PB20Relay.RelayState[i];
|
||||
|
||||
|
||||
|
||||
|
||||
if(BUS_Public_PBRelay.addr < 8)
|
||||
{
|
||||
Rs485PB20.Relay_LoopCtrl_Flag[BUS_Public_PBRelay.addr] |= (0x01<<i);
|
||||
Rs485PB20.Relay_A00_07_LoopCtrl |= (0x01 << (BUS_Public_PBRelay.addr*4 + i));
|
||||
}
|
||||
else if((BUS_Public_PBRelay.addr >= 8) && (BUS_Public_PBRelay.addr <= 15))
|
||||
{
|
||||
Rs485PB20.Relay_LoopCtrl_Flag[BUS_Public_PBRelay.addr] |= (0x01<<i);
|
||||
Rs485PB20.Relay_A08_15_LoopCtrl |= (0x01 << (BUS_Public_PBRelay.addr*4 + i - 32));
|
||||
}
|
||||
|
||||
Rs485PB20.Relay_CtrlLoopNum++;
|
||||
|
||||
relay_flag = 0x01;
|
||||
pb20_flag = 0x01;
|
||||
|
||||
// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_Relay %d Loop:%d Flag:% 00_07_LoopCtrl:%08X 08_15_LoopCtrl:%08X",\
|
||||
// BUS_Public_PBRelay.addr,i,Rs485PB20.Relay_LoopCtrl_Flag[BUS_Public_PBRelay.addr],Rs485PB20.Relay_A00_07_LoopCtrl,Rs485PB20.Relay_A08_15_LoopCtrl);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(0x01 == relay_flag)
|
||||
{
|
||||
BUS_Public_PBRelay.check = 0x00;
|
||||
BUS_Public_PBRelay.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PBRelay, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20Relay, sizeof(RS485_PB20_Relay_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PBRelay, sizeof(Device_Public_Information_G),dev_addr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20Relay,sizeof(RS485_PB20_Relay_INFO),dev_addr+Dev_Privately);
|
||||
}
|
||||
|
||||
if(0x01 == pb20_flag)
|
||||
{
|
||||
BUS_Public_PB.check = 0x00;
|
||||
BUS_Public_PB.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20, sizeof(RS485_PB20_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G),Rs485PB20Relay.PB20Addr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),Rs485PB20Relay.PB20Addr+Dev_Privately);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Relay_Rccv_Check
|
||||
* Description : PB20Relay<61><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
dev_addr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
data_addr : <20><><EFBFBD>ݵ<EFBFBD>ַ
|
||||
len : <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* Return :
|
||||
0x00<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
0x01<30><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
*******************************************************************************/
|
||||
uint8_t BLV_PB20_Relay_Rccv_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len)
|
||||
{
|
||||
|
||||
uint8_t rev = 0x01;
|
||||
|
||||
return rev;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
42
BasicCode/Drive/PB20/BLV_485_Dev_PB20_Relay_Fun.h
Normal file
42
BasicCode/Drive/PB20/BLV_485_Dev_PB20_Relay_Fun.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef _BLV_485_DEV_PB20_RELAY_FUN_H_
|
||||
#define _BLV_485_DEV_PB20_RELAY_FUN_H_
|
||||
|
||||
#include "stdint.h"
|
||||
#include "BLV_485_Protocol.h"
|
||||
#include "BLV_All_Dev_Init.h"
|
||||
|
||||
#define PB20_Relay_OPEN 0x01
|
||||
#define PB20_Relay_CLOSE 0x02
|
||||
|
||||
#define PB20_Relay_BUFF_SIZE 0x04
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
|
||||
uint8_t DevSendCnt:4; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> ռ4λ
|
||||
uint8_t DevOffline:2; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ2λ
|
||||
uint8_t DevOfflineLast:2; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ2λ
|
||||
|
||||
uint8_t SendSn;
|
||||
uint8_t CtrlCnt;
|
||||
|
||||
uint16_t LoopValidNum;
|
||||
|
||||
uint8_t RelayState[PB20_Relay_BUFF_SIZE]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD>л<EFBFBD>·<EFBFBD><C2B7>״̬
|
||||
uint8_t RelayState_Last[PB20_Relay_BUFF_SIZE]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD>л<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬
|
||||
|
||||
uint8_t PB20DevType;
|
||||
uint8_t PB20DevAddr;
|
||||
uint8_t PB20DevPort;
|
||||
|
||||
|
||||
uint32_t PB20Addr;
|
||||
|
||||
}__attribute__ ((__packed__))RS485_PB20_Relay_INFO;
|
||||
|
||||
|
||||
void BLV_RS485_PB20_Relay_Data_Init(uint8_t devaddr);
|
||||
void BLV_RS485_PB20_Relay_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
|
||||
|
||||
#endif
|
||||
|
||||
788
BasicCode/Drive/PB20/BLV_485_Dev_PB20_Strip_Fun.c
Normal file
788
BasicCode/Drive/PB20/BLV_485_Dev_PB20_Strip_Fun.c
Normal file
@@ -0,0 +1,788 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file BlV_Bus_Dev_PB20_Strip_Fun.c
|
||||
* @author BLW RCU development Team
|
||||
* @version V1.0
|
||||
* @date 2023<32><33>10<31><30>19<31><39>
|
||||
* @brief
|
||||
* PB20_Strip<69><70><EFBFBD><EFBFBD>
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
#if RS485_PB20_LS_Flag
|
||||
|
||||
/*<2A><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>忪ʼ*/
|
||||
void BLV_PB20_Strip_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t loop,uint16_t start);
|
||||
uint16_t BLV_PB20_Strip_Read_State(uint32_t devaddr,uint16_t loop);
|
||||
uint8_t BLV_PB20_Strip_Rccv_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len);
|
||||
void BLV_PB20_Strip_Dis(uint32_t dev_addr);
|
||||
|
||||
/*<2A><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
|
||||
void PB20_Strip_AddToPB(uint32_t devaddr, Device_Public_Information_G *BUS_Public)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public_PB;
|
||||
RS485_PB20_INFO Rs485PB20;
|
||||
|
||||
if(devaddr != NULL)
|
||||
{
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PB,sizeof(Device_Public_Information_G),devaddr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(Rs485PB20.StripDevNum < PB20_STRIPLIST_MAX)
|
||||
{
|
||||
Rs485PB20.Strip_List[Rs485PB20.StripDevNum].Type = BUS_Public->type;
|
||||
Rs485PB20.Strip_List[Rs485PB20.StripDevNum].Addr = BUS_Public->addr;
|
||||
Rs485PB20.Strip_List[Rs485PB20.StripDevNum].Port = BUS_Public->port;
|
||||
|
||||
Rs485PB20.StripDevNum++;
|
||||
}
|
||||
|
||||
BUS_Public_PB.check = 0x00;
|
||||
BUS_Public_PB.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20, sizeof(RS485_PB20_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G),devaddr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),devaddr+Dev_Privately);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @name : BLV_RS485_PB20_Strip_Data_Init
|
||||
* @para :
|
||||
* DataLen :<3A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* Data: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @attention :<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_RS485_PB20_Strip_Data_Init(uint8_t devaddr)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_Strip_INFO Rs485PB20Strip;
|
||||
|
||||
memset(&BUS_Public,0,sizeof(Device_Public_Information_G));
|
||||
memset(&Rs485PB20Strip,0,sizeof(RS485_PB20_Strip_INFO));
|
||||
|
||||
BUS_Public.addr = devaddr; //<2F>豸485<38><35>ַ
|
||||
BUS_Public.type = Dev_Rs485_PB20_LS; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
BUS_Public.baud = 0x00;//Data[3] + (Data[4]<<8) + (Data[5]<<16) + (Data[6]<<24); //<2F>豸<EFBFBD><E8B1B8><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>9600
|
||||
// BUS_Public.retry_num = 0x03; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
// BUS_Public.wait_time = 0x0064; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
|
||||
BUS_Public.Protocol = 0x01; //<2F>豸Э<E8B1B8><D0AD>
|
||||
|
||||
BUS_Public.DevFunInfo.Dev_Data_Process = BLV_PB20_Strip_Dis;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLV_PB20_Strip_Control_State;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = BLV_PB20_Strip_Read_State;
|
||||
|
||||
Rs485PB20Strip.PB20DevType = 0x30;//Data[15];
|
||||
Rs485PB20Strip.PB20DevAddr = 0x01;//Data[16];
|
||||
Rs485PB20Strip.PB20DevPort = 0x03;//Data[17];
|
||||
Rs485PB20Strip.PB20Addr = Find_AllDevice_List_Information2(Rs485PB20Strip.PB20DevPort,Rs485PB20Strip.PB20DevType,Rs485PB20Strip.PB20DevAddr);
|
||||
|
||||
Rs485PB20Strip.LoopValidNum = 0x04;
|
||||
Rs485PB20Strip.DevOffline = Rs485PB20Strip.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
|
||||
Rs485PB20Strip.Strip_DimTime = 10;
|
||||
|
||||
//Ĭ<><C4AC> <20><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>״̬Ϊ - <20><>
|
||||
for(uint8_t i = 0; i < Rs485PB20Strip.LoopValidNum; i++)
|
||||
{
|
||||
Rs485PB20Strip.LightBuf[i] = 0x80;
|
||||
Rs485PB20Strip.LightBuf_Last[i] = 0x80;
|
||||
}
|
||||
|
||||
// switch(Data[2])
|
||||
// {
|
||||
// case 0x00:
|
||||
Add_Nor_Device_To_List2(&BUS_Public,(uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO));
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
|
||||
PB20_Strip_AddToPB(Rs485PB20Strip.PB20Addr,&BUS_Public);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @name : PB20Strip<69>豸<EFBFBD><E8B1B8>ʼ<EFBFBD><CABC>
|
||||
* @para :
|
||||
* dev_info :<3A><EFBFBD><DFBC>ļ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* data :<3A><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* data_len :<3A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* @attention :<3A><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_RS485_PB20_Strip_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_Strip_INFO Rs485PB20Strip;
|
||||
|
||||
memset(&BUS_Public,0,sizeof(Device_Public_Information_G));
|
||||
memset(&Rs485PB20Strip,0,sizeof(RS485_PB20_Strip_INFO));
|
||||
|
||||
BUS_Public.addr = dev_info->addr; //<2F>豸485<38><35>ַ
|
||||
BUS_Public.type = dev_info->type; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
BUS_Public.baud = dev_info->baud; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>9600
|
||||
// BUS_Public.retry_num = 0x03; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
// BUS_Public.wait_time = 0x0064; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
|
||||
BUS_Public.Protocol = dev_info->version; //Э<><D0AD><EFBFBD><EFBFBD>
|
||||
|
||||
BUS_Public.DevFunInfo.Dev_Data_Process = BLV_PB20_Strip_Dis;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLV_PB20_Strip_Control_State;
|
||||
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = BLV_PB20_Strip_Read_State;
|
||||
|
||||
Rs485PB20Strip.PB20DevType = dev_info->parent_type;
|
||||
Rs485PB20Strip.PB20DevAddr = dev_info->parent_addr;
|
||||
Rs485PB20Strip.PB20DevPort = dev_info->parent_port;
|
||||
Rs485PB20Strip.PB20Addr = Find_AllDevice_List_Information2(Rs485PB20Strip.PB20DevPort,Rs485PB20Strip.PB20DevType,Rs485PB20Strip.PB20DevAddr);
|
||||
|
||||
Rs485PB20Strip.LoopValidNum = dev_info->output_num;
|
||||
Rs485PB20Strip.DevOffline = Rs485PB20Strip.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
|
||||
Rs485PB20Strip.Strip_DimTime = 10;
|
||||
|
||||
//Ĭ<><C4AC> <20><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>״̬Ϊ - <20><>
|
||||
for(uint8_t i = 0; i < Rs485PB20Strip.LoopValidNum; i++)
|
||||
{
|
||||
Rs485PB20Strip.LightBuf[i] = 0x80;
|
||||
Rs485PB20Strip.LightBuf_Last[i] = 0x80;
|
||||
}
|
||||
|
||||
switch(dev_info->port)
|
||||
{
|
||||
case 0x00:
|
||||
Add_Nor_Device_To_List2(&BUS_Public,(uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
PB20_Strip_AddToPB(Rs485PB20Strip.PB20Addr,&BUS_Public);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Strip_Control_State
|
||||
* Description : PB20Strip<69><70><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
|
||||
* Input :
|
||||
devaddr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
loop : <20><>·
|
||||
start : ״̬
|
||||
* Return : <20><>
|
||||
* attention : temp1<70><31>0<EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_PB20_Strip_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t devaddr,uint16_t loop,uint16_t start)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_Strip_INFO Rs485PB20Strip;
|
||||
|
||||
uint8_t CtrlMode; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
uint8_t CtrlContect; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint8_t temp1 = 0x00;
|
||||
|
||||
if(devaddr == 0x00) return;
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(loop >= Rs485PB20Strip.LoopValidNum) //<2F><>Ч<EFBFBD><D0A7>·
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
CtrlMode = start&0x00ff; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
CtrlContect = start>>8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"PB20Strip %d Loop:%d Ctrl mode:%d state:%d Light:%d",BUS_Public.addr,loop,CtrlMode,CtrlContect,Rs485PB20Strip.LightBuf[loop] & 0x7f);
|
||||
|
||||
switch(CtrlMode)
|
||||
{
|
||||
case PB20_Strip_LIGHT_OPEN: //<2F><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD> + <20><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>
|
||||
Rs485PB20Strip.LightBuf[loop] |= (0x01 << 7);
|
||||
Rs485PB20Strip.LightBuf[loop] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf[loop] |= (CtrlContect & 0x7f);
|
||||
|
||||
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_LIGHT_CLOSE: //<2F><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD> + <20><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>
|
||||
Rs485PB20Strip.LightBuf[loop] &= ~(0x01 << 7);
|
||||
Rs485PB20Strip.LightBuf[loop] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf[loop] |= (CtrlContect & 0x7f);
|
||||
|
||||
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_OnlySwitch:
|
||||
if(CtrlContect == 0x01){
|
||||
|
||||
Rs485PB20Strip.LightBuf[loop] |= (0x01 << 7);
|
||||
|
||||
}else if(CtrlContect == 0x02){
|
||||
|
||||
Rs485PB20Strip.LightBuf[loop] &= ~(0x01 << 7);
|
||||
}
|
||||
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_OnlyBright:
|
||||
|
||||
Rs485PB20Strip.LightBuf[loop] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf[loop] |= (CtrlContect & 0x7f);
|
||||
|
||||
temp1++;
|
||||
break;
|
||||
// case PB20_Strip_Dim_Up: //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
// if((Rs485PB20Strip.LightBuf[loop] & 0x7f) + (CtrlContect & 0x7f) <= 100)
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[loop] += (CtrlContect & 0x7f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[loop] &= 0x80;
|
||||
// Rs485PB20Strip.LightBuf[loop] |= 0x64;
|
||||
// }
|
||||
|
||||
// temp1++;
|
||||
// break;
|
||||
// case PB20_Strip_Dim_Down: //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
// if((Rs485PB20Strip.LightBuf[loop] & 0x7f) > (CtrlContect & 0x7f))
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[loop] -= (CtrlContect & 0x7f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[loop] &= 0x80;
|
||||
// }
|
||||
|
||||
// temp1++;
|
||||
// break;
|
||||
// case PB20_Strip_Dim_Up_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
// if((Rs485PB20Strip.LightBuf[loop] & 0x7f) > 0)
|
||||
// {
|
||||
// if((Rs485PB20Strip.LightBuf[loop] & 0x7f) + (CtrlContect & 0x7f) <= 100)
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[loop] += (CtrlContect & 0x7f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[loop] &= 0x80;
|
||||
// Rs485PB20Strip.LightBuf[loop] |= 0x64;
|
||||
// }
|
||||
|
||||
// }
|
||||
//
|
||||
// temp1++;
|
||||
// break;
|
||||
// case PB20_Strip_Dim_Down_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
// if((Rs485PB20Strip.LightBuf[loop] & 0x7f) > 0)
|
||||
// {
|
||||
// if((Rs485PB20Strip.LightBuf[loop] & 0x7f) > (CtrlContect & 0x7f))
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[loop] -= (CtrlContect & 0x7f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[loop] &= 0x80;
|
||||
// }
|
||||
|
||||
// }
|
||||
// temp1++;
|
||||
// break;
|
||||
case PB20_Strip_Ctrl_UpperLimit: //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Ctrl_LowerLimit: //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Cycle_Dim_Up: //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
case PB20_Strip_Cycle_Dim_Down: //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
case PB20_Strip_Cycle_Stop: //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Dim_Up: //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> - <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
case PB20_Strip_Dim_Down: //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> - <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
case PB20_Strip_Dim_Up_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
case PB20_Strip_Dim_Down_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
case PB20_Strip_Dim_Cir: //<2F><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> - <20><><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Dim_OnCir: //<2F><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> - <20><><EFBFBD><EFBFBD> - Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
|
||||
Rs485PB20Strip.CtrlMode[loop] = CtrlMode;
|
||||
Rs485PB20Strip.CtrlTime[loop] = CtrlContect;
|
||||
|
||||
Rs485PB20Strip.AG_Flag |= ( 0x01 << loop);
|
||||
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_Cycle_Dim_Up_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Cycle_Dim_Down_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if((Rs485PB20Strip.LightBuf[loop] & 0x7f) > 0)
|
||||
{
|
||||
Rs485PB20Strip.CtrlMode[loop] = CtrlMode;
|
||||
Rs485PB20Strip.CtrlTime[loop] = CtrlContect;
|
||||
|
||||
Rs485PB20Strip.AG_Flag |= ( 0x01 << loop);
|
||||
|
||||
if(Rs485PB20Strip.CtrlMode[loop] == PB20_Strip_Cycle_Dim_Down_Limit)
|
||||
{
|
||||
Rs485PB20Strip.LightBuf[loop] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf_Last[loop] &= 0x80;
|
||||
}
|
||||
temp1++;
|
||||
}
|
||||
break;
|
||||
case PB20_Strip_DimTime_Set: //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Rs485PB20Strip.Strip_DimTime = CtrlContect;
|
||||
temp1++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if(temp1 != 0x00)
|
||||
{
|
||||
BUS_Public.check = 0x00;
|
||||
BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20Strip, sizeof(RS485_PB20_Strip_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO),devaddr+Dev_Privately);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Strip_Group_Control_State
|
||||
* Description : PB20StripȺ<70>ƺ<EFBFBD><C6BA><EFBFBD>
|
||||
* Input :
|
||||
devaddr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
loop : <20><>·
|
||||
start : ״̬
|
||||
* Return : <20><>
|
||||
* attention : temp1<70><31>0<EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
||||
*******************************************************************************/
|
||||
void BLV_PB20_Strip_Group_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr,uint32_t devaddr, uint32_t CtrlFlag, uint8_t CtrlNum,uint16_t *start)
|
||||
{
|
||||
Device_Public_Information_G BUS_Public;
|
||||
RS485_PB20_Strip_INFO Rs485PB20Strip;
|
||||
|
||||
uint8_t CtrlMode; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
uint8_t CtrlContect; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint8_t temp1 = 0x00;
|
||||
|
||||
uint8_t i = 0x00;
|
||||
|
||||
if(devaddr == 0x00) return;
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),devaddr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(CtrlNum >= Rs485PB20Strip.LoopValidNum) //<2F><>Ч<EFBFBD><D0A7>·
|
||||
{
|
||||
CtrlNum = Rs485PB20Strip.LoopValidNum;
|
||||
}
|
||||
|
||||
for(i = 0; i < CtrlNum; i++)
|
||||
{
|
||||
if(CtrlFlag&(0x0001<<i)) //<2F><>0Ϊ<30><CEAA><EFBFBD><EFBFBD>
|
||||
{
|
||||
CtrlMode = start[i] & 0x00ff; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
CtrlContect = start[i] >> 8; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
switch(CtrlMode)
|
||||
{
|
||||
case PB20_Strip_LIGHT_OPEN: //<2F><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD> + <20><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>
|
||||
Rs485PB20Strip.LightBuf[i] |= (0x01 << 7);
|
||||
Rs485PB20Strip.LightBuf[i] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf[i] |= (CtrlContect & 0x7f);
|
||||
|
||||
Rs485PB20Strip.LS_Flag |= ( 0x01 << i); //2025-07-08,YYW,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_LIGHT_CLOSE: //<2F><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD> + <20><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>
|
||||
Rs485PB20Strip.LightBuf[i] &= ~(0x01 << 7);
|
||||
|
||||
Rs485PB20Strip.LightBuf[i] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf[i] |= (CtrlContect & 0x7f);
|
||||
|
||||
Rs485PB20Strip.LS_Flag |= ( 0x01 << i); //2025-07-08,YYW,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_OnlySwitch:
|
||||
if(CtrlContect == 0x01){
|
||||
|
||||
Rs485PB20Strip.LightBuf[i] |= (0x01 << 7);
|
||||
|
||||
}else if(CtrlContect == 0x02){
|
||||
|
||||
Rs485PB20Strip.LightBuf[i] &= ~(0x01 << 7);
|
||||
}
|
||||
Rs485PB20Strip.SW_Flag |= ( 0x01 << i);
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_OnlyBright:
|
||||
|
||||
Rs485PB20Strip.LightBuf[i] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf[i] |= (CtrlContect & 0x7f);
|
||||
Rs485PB20Strip.LS_Flag |= ( 0x01 << i);
|
||||
temp1++;
|
||||
break;
|
||||
// case PB20_Strip_Dim_Up: //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
// if((Rs485PB20Strip.LightBuf[i] & 0x7f) + (CtrlContect & 0x7f) <= 100)
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[i] += (CtrlContect & 0x7f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[i] &= 0x80;
|
||||
// Rs485PB20Strip.LightBuf[i] |= 0x64;
|
||||
// }
|
||||
|
||||
// temp1++;
|
||||
// break;
|
||||
// case PB20_Strip_Dim_Down: //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
// if((Rs485PB20Strip.LightBuf[i] & 0x7f) > (CtrlContect & 0x7f))
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[i] -= (CtrlContect & 0x7f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[i] &= 0x80;
|
||||
// }
|
||||
|
||||
// temp1++;
|
||||
// break;
|
||||
// case PB20_Strip_Dim_Up_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
// if((Rs485PB20Strip.LightBuf[i] & 0x7f) > 0)
|
||||
// {
|
||||
// if((Rs485PB20Strip.LightBuf[i] & 0x7f) + (CtrlContect & 0x7f) <= 100)
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[i] += (CtrlContect & 0x7f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[i] &= 0x80;
|
||||
// Rs485PB20Strip.LightBuf[i] |= 0x64;
|
||||
// }
|
||||
|
||||
// }
|
||||
//
|
||||
// temp1++;
|
||||
// break;
|
||||
// case PB20_Strip_Dim_Down_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
// if((Rs485PB20Strip.LightBuf[i] & 0x7f) > 0)
|
||||
// {
|
||||
// if((Rs485PB20Strip.LightBuf[i] & 0x7f) > (CtrlContect & 0x7f))
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[i] -= (CtrlContect & 0x7f);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Rs485PB20Strip.LightBuf[i] &= 0x80;
|
||||
// }
|
||||
|
||||
// }
|
||||
// temp1++;
|
||||
// break;
|
||||
case PB20_Strip_Ctrl_UpperLimit: //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Ctrl_LowerLimit: //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Cycle_Dim_Up: //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
case PB20_Strip_Cycle_Dim_Down: //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
case PB20_Strip_Cycle_Stop: //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
||||
Rs485PB20Strip.CtrlMode[i] = CtrlMode; //2025-07-09,YYW:
|
||||
Rs485PB20Strip.CtrlTime[i] = CtrlContect;
|
||||
|
||||
Rs485PB20Strip.AG_Flag |= ( 0x01 << i);
|
||||
|
||||
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_Dim_Up: //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> - <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
case PB20_Strip_Dim_Down: //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> - <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
case PB20_Strip_Dim_Up_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
case PB20_Strip_Dim_Down_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
case PB20_Strip_Dim_Cir: //<2F><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> - <20><><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Dim_OnCir: //<2F><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> - <20><><EFBFBD><EFBFBD> - Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
|
||||
Rs485PB20Strip.CtrlMode[i] = CtrlMode;
|
||||
Rs485PB20Strip.CtrlTime[i] = CtrlContect;
|
||||
|
||||
Rs485PB20Strip.AG_Flag |= ( 0x01 << i);
|
||||
Rs485PB20Strip.LSIC_Flag |= ( 0x01 << i); //2025-07-09,YYW,<2C><><EFBFBD>Ե<EFBFBD><D4B5>ڱ<EFBFBD>־λ
|
||||
|
||||
|
||||
temp1++;
|
||||
break;
|
||||
case PB20_Strip_Cycle_Dim_Up_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case PB20_Strip_Cycle_Dim_Down_Limit: //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if((Rs485PB20Strip.LightBuf[i] & 0x7f) > 0)
|
||||
{
|
||||
Rs485PB20Strip.CtrlMode[i] = CtrlMode;
|
||||
Rs485PB20Strip.CtrlTime[i] = CtrlContect;
|
||||
|
||||
Rs485PB20Strip.AG_Flag |= ( 0x01 << i);
|
||||
|
||||
if(Rs485PB20Strip.CtrlMode[i] == PB20_Strip_Cycle_Dim_Down_Limit)
|
||||
{
|
||||
Rs485PB20Strip.LightBuf[i] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf_Last[i] &= 0x80;
|
||||
}
|
||||
temp1++;
|
||||
}
|
||||
break;
|
||||
case PB20_Strip_DimTime_Set: //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Rs485PB20Strip.Strip_DimTime = CtrlContect;
|
||||
temp1++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"PB20Strip %d Loop:%d Ctrl mode:%d state:%d Light:%d",BUS_Public.addr,i,CtrlMode,CtrlContect,Rs485PB20Strip.LightBuf[i] & 0x7f);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(temp1 != 0x00)
|
||||
{
|
||||
BUS_Public.check = 0x00;
|
||||
BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20Strip, sizeof(RS485_PB20_Strip_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),devaddr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO),devaddr+Dev_Privately);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Strip_Read_State
|
||||
* Description : PB20Strip״̬<D7B4><CCAC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
devaddr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
loop :<3A><>·
|
||||
* Return : <20><>
|
||||
*******************************************************************************/
|
||||
uint16_t BLV_PB20_Strip_Read_State(uint32_t devaddr,uint16_t loop)
|
||||
{
|
||||
|
||||
if(devaddr == 0x00)
|
||||
return 0x00;
|
||||
|
||||
RS485_PB20_Strip_INFO Rs485PB20Strip;
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO),devaddr+Dev_Privately);
|
||||
|
||||
if(loop >= PB20_Strip_BUFF_SIZE)
|
||||
{
|
||||
//Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_Strip_Read_State loop >= PB20_Strip_BUFF_SIZE");
|
||||
return 0x00; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ ֱ<>ӷ<EFBFBD><D3B7><EFBFBD>0
|
||||
}
|
||||
|
||||
|
||||
return Rs485PB20Strip.LightBuf[loop];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Strip_Dis
|
||||
* Description : PB20Strip<69><70><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
dev_addr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
* Return :
|
||||
*******************************************************************************/
|
||||
void BLV_PB20_Strip_Dis(uint32_t dev_addr)
|
||||
{
|
||||
uint8_t i; //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>·
|
||||
Device_Public_Information_G BUS_Public_PBStrip;
|
||||
RS485_PB20_Strip_INFO Rs485PB20Strip;
|
||||
|
||||
Device_Public_Information_G BUS_Public_PB;
|
||||
RS485_PB20_INFO Rs485PB20;
|
||||
|
||||
uint8_t strip_flag = 0x00;
|
||||
uint8_t pb20_flag = 0x00;
|
||||
|
||||
if(NULL == dev_addr)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PBStrip,sizeof(Device_Public_Information_G),dev_addr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO),dev_addr+Dev_Privately);
|
||||
|
||||
if(Rs485PB20Strip.PB20Addr == NULL)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
else
|
||||
{
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public_PB,sizeof(Device_Public_Information_G),Rs485PB20Strip.PB20Addr);
|
||||
SRAM_DMA_Read_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),Rs485PB20Strip.PB20Addr+Dev_Privately);
|
||||
|
||||
if(BUS_Public_PB.type != Dev_Rs485_PB20) {
|
||||
//Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"%s - Type Error %d",__func__,BUS_Public_PB.type);
|
||||
return ; //<2F>ж<EFBFBD><D0B6>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(i = 0; i < Rs485PB20Strip.LoopValidNum; i++)
|
||||
{
|
||||
|
||||
if( ((Rs485PB20Strip.LightBuf_Last[i] & 0x7F) != (Rs485PB20Strip.LightBuf[i] & 0x7F))||(Rs485PB20Strip.LS_Flag != 0x00) ){ //2025-07-09<30><39>YYW
|
||||
|
||||
Rs485PB20Strip.LS_Flag &= ~(0x01 << i);
|
||||
|
||||
Rs485PB20Strip.LightBuf_Last[i] &= 0x80;
|
||||
Rs485PB20Strip.LightBuf_Last[i] |= (Rs485PB20Strip.LightBuf[i] & 0x7F);
|
||||
// Rs485PB20Strip.Light_Flag |= (0x01 << i);
|
||||
|
||||
if(BUS_Public_PBStrip.addr < 8)
|
||||
{
|
||||
Rs485PB20.Strip_LLCtrl_Flag[BUS_Public_PBStrip.addr] |= (0x01 << i);
|
||||
Rs485PB20.Strip_A00_07_LLCtrl |= (0x01 << (BUS_Public_PBStrip.addr*4 + i));
|
||||
}
|
||||
else if((BUS_Public_PBStrip.addr >= 8) && (BUS_Public_PBStrip.addr <= 15))
|
||||
{
|
||||
Rs485PB20.Strip_LLCtrl_Flag[BUS_Public_PBStrip.addr] |= (0x01 << i);
|
||||
Rs485PB20.Strip_A08_15_LLCtrl |= (0x01 << (BUS_Public_PBStrip.addr*4 + i - 32));
|
||||
}
|
||||
|
||||
Rs485PB20.Strip_LL_CtrlLoopNum++;
|
||||
|
||||
strip_flag = 0x01;
|
||||
pb20_flag = 0x01;
|
||||
|
||||
// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_Strip %d Loop:%d Light_Flag:%d A00_07_LLCtrl:%08X A08_15_LLCtrl:%08X",\
|
||||
// BUS_Public_PBStrip.addr,i,Rs485PB20.Strip_LLCtrl_Flag[BUS_Public_PBStrip.addr],Rs485PB20.Strip_A00_07_LLCtrl,Rs485PB20.Strip_A08_15_LLCtrl);
|
||||
}
|
||||
|
||||
if( ((Rs485PB20Strip.LightBuf_Last[i] & 0x80) != (Rs485PB20Strip.LightBuf[i] & 0x80))||(Rs485PB20Strip.SW_Flag != 0x00) ){ //2025-07-09<30><39>YYW
|
||||
|
||||
Rs485PB20Strip.SW_Flag &= ~(0x01 << i);
|
||||
|
||||
Rs485PB20Strip.LightBuf_Last[i] &= 0x7F;
|
||||
Rs485PB20Strip.LightBuf_Last[i] |= (Rs485PB20Strip.LightBuf[i] & 0x80);
|
||||
// Rs485PB20Strip.Switch_Flag |= (0x01 << i);
|
||||
|
||||
if(BUS_Public_PBStrip.addr < 8)
|
||||
{
|
||||
Rs485PB20.Strip_LSCtrl_Flag[BUS_Public_PBStrip.addr] |= (0x01 << i);
|
||||
Rs485PB20.Strip_A00_07_LSCtrl |= (0x01 << (BUS_Public_PBStrip.addr*4 + i));
|
||||
}
|
||||
else if((BUS_Public_PBStrip.addr >= 8) && (BUS_Public_PBStrip.addr <= 15))
|
||||
{
|
||||
Rs485PB20.Strip_LSCtrl_Flag[BUS_Public_PBStrip.addr] |= (0x01 << i);
|
||||
Rs485PB20.Strip_A08_15_LSCtrl |= (0x01 << (BUS_Public_PBStrip.addr*4 + i - 32));
|
||||
}
|
||||
|
||||
Rs485PB20.Strip_LS_CtrlLoopNum++;
|
||||
|
||||
strip_flag = 0x01;
|
||||
pb20_flag = 0x01;
|
||||
|
||||
// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_Strip %d Loop:%d Switch_Flag:%d Strip_A00_07_LSCtrl:%08X Strip_A08_15_LSCtrl:%08X",\
|
||||
// BUS_Public_PBStrip.addr,i,Rs485PB20.Strip_LSCtrl_Flag[BUS_Public_PBStrip.addr],Rs485PB20.Strip_A00_07_LSCtrl,Rs485PB20.Strip_A08_15_LSCtrl);
|
||||
}
|
||||
|
||||
// if(Rs485PB20Strip.CtrlMode_Last[i] != Rs485PB20Strip.CtrlMode[i])
|
||||
if(Rs485PB20Strip.AG_Flag != 0x00)
|
||||
{
|
||||
// Rs485PB20Strip.CtrlMode_Last[i] = Rs485PB20Strip.CtrlMode[i];
|
||||
Rs485PB20Strip.AG_Flag &= ~(0x01 << i);
|
||||
|
||||
if(BUS_Public_PBStrip.addr < 8)
|
||||
{
|
||||
Rs485PB20.Strip_AGCtrl_Flag[BUS_Public_PBStrip.addr] |= (0x01 << i);
|
||||
Rs485PB20.Strip_A00_07_AGCtrl |= (0x01 << (BUS_Public_PBStrip.addr*4 + i));
|
||||
}
|
||||
else if((BUS_Public_PBStrip.addr >= 8) && (BUS_Public_PBStrip.addr <= 15))
|
||||
{
|
||||
Rs485PB20.Strip_AGCtrl_Flag[BUS_Public_PBStrip.addr] |= (0x01 << i);
|
||||
Rs485PB20.Strip_A08_15_AGCtrl |= (0x01 << (BUS_Public_PBStrip.addr*4 + i - 32));
|
||||
}
|
||||
|
||||
Rs485PB20.Strip_AG_CtrlLoopNum++;
|
||||
|
||||
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"YYW,LSIC_Flag :%d",Rs485PB20Strip.LSIC_Flag);
|
||||
if(Rs485PB20Strip.LSIC_Flag != 0x00)
|
||||
{
|
||||
Rs485PB20Strip.LSIC_Flag &= ~(0x01 << i);
|
||||
|
||||
Rs485PB20.Strip_AG_Flag = 0x01; //LS<4C><53><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
}
|
||||
|
||||
|
||||
strip_flag = 0x01;
|
||||
pb20_flag = 0x01;
|
||||
|
||||
// Dbg_Println(DBG_BIT_SYS_STATUS_bit,"BLV_PB20_Strip %d Loop:%d Cycle_Flag:%d Strip_A00_07_AGCtrl:%08X Strip_A08_15_AGCtrl:%08X",\
|
||||
// BUS_Public_PBStrip.addr,i,Rs485PB20.Strip_AGCtrl_Flag[BUS_Public_PBStrip.addr],Rs485PB20.Strip_A00_07_AGCtrl,Rs485PB20.Strip_A08_15_AGCtrl);
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>״̬*/
|
||||
if( Rs485PB20Strip.ReportLight[i] != Rs485PB20Strip.LightBuf[i] ){
|
||||
uint16_t report_state = 0;
|
||||
|
||||
Rs485PB20Strip.ReportLight[i] = Rs485PB20Strip.LightBuf[i];
|
||||
if((Rs485PB20Strip.ReportLight[i] & 0x80) != 0x00){
|
||||
report_state = Rs485PB20Strip.ReportLight[i] & 0x7F;
|
||||
report_state = (report_state << 8) | 0x0001;
|
||||
Udp_Addtion_Roomstate(PB20_Strip_Device_Type,BUS_Public_PBStrip.addr,i+1,report_state);
|
||||
}else{
|
||||
report_state = Rs485PB20Strip.ReportLight[i] & 0x7F;
|
||||
report_state = (report_state << 8) | 0x0002;
|
||||
Udp_Addtion_Roomstate(PB20_Strip_Device_Type,BUS_Public_PBStrip.addr,i+1,report_state);
|
||||
}
|
||||
|
||||
strip_flag = 0x01;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(0x01 == strip_flag)
|
||||
{
|
||||
BUS_Public_PBStrip.check = 0x00;
|
||||
BUS_Public_PBStrip.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PBStrip, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20Strip, sizeof(RS485_PB20_Strip_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PBStrip, sizeof(Device_Public_Information_G),dev_addr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20Strip,sizeof(RS485_PB20_Strip_INFO),dev_addr+Dev_Privately);
|
||||
}
|
||||
|
||||
if(0x01 == pb20_flag)
|
||||
{
|
||||
BUS_Public_PB.check = 0x00;
|
||||
BUS_Public_PB.check = DoubleData_CheckSum((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485PB20, sizeof(RS485_PB20_INFO));
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public_PB, sizeof(Device_Public_Information_G),Rs485PB20Strip.PB20Addr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
||||
SRAM_DMA_Write_Buff((uint8_t *)&Rs485PB20,sizeof(RS485_PB20_INFO),Rs485PB20Strip.PB20Addr+Dev_Privately);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : BLV_PB20_Strip_Rccv_Check
|
||||
* Description : PB20Strip<69><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
dev_addr : <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>ַ
|
||||
data_addr : <20><><EFBFBD>ݵ<EFBFBD>ַ
|
||||
len : <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* Return :
|
||||
0x00<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
0x01<30><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
*******************************************************************************/
|
||||
uint8_t BLV_PB20_Strip_Rccv_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t len)
|
||||
{
|
||||
|
||||
uint8_t rev = 0x01;
|
||||
|
||||
return rev;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
83
BasicCode/Drive/PB20/BLV_485_Dev_PB20_Strip_Fun.h
Normal file
83
BasicCode/Drive/PB20/BLV_485_Dev_PB20_Strip_Fun.h
Normal file
@@ -0,0 +1,83 @@
|
||||
#ifndef _BLV_485_DEV_PB20_STRIP_FUN_H_
|
||||
#define _BLV_485_DEV_PB20_STRIP_FUN_H_
|
||||
|
||||
#include "stdint.h"
|
||||
#include "BLV_485_Protocol.h"
|
||||
#include "BLV_All_Dev_Init.h"
|
||||
|
||||
#define PB20_Strip_Device_Type 0x32
|
||||
|
||||
#define PB20_Strip_LIGHT_OPEN 0x01
|
||||
#define PB20_Strip_LIGHT_CLOSE 0x02
|
||||
|
||||
#define PB20_Strip_Ctrl_UpperLimit 0x05 //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_Strip_Ctrl_LowerLimit 0x06 //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//#define PB20_Strip_Cycle_Ctrl 0x07 //ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_Strip_Cycle_Stop 0x08 //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
||||
#define PB20_Strip_DimTime_Set 0x09 //<2F><><EFBFBD>⽥<EFBFBD><E2BDA5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define PB20_Strip_OnlySwitch 0x11 //ֻ<><D6BB><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD>״̬
|
||||
#define PB20_Strip_OnlyBright 0x12 //ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_Strip_Dim_Up 0x1C //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> - <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
#define PB20_Strip_Dim_Down 0x1D //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> - <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
#define PB20_Strip_Dim_Cir 0x22 //<2F><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> - <20><><EFBFBD><EFBFBD>
|
||||
#define PB20_Strip_Dim_OnCir 0x23 //<2F><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>- <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ĵ<EFBFBD>
|
||||
|
||||
#define PB20_Strip_Dim_Up_Limit 0x1A //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
#define PB20_Strip_Dim_Down_Limit 0x1B //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
||||
|
||||
#define PB20_Strip_Cycle_Dim_Up 0x1E //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
#define PB20_Strip_Cycle_Dim_Down 0x1F //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
|
||||
#define PB20_Strip_Cycle_Dim_Up_Limit 0x20 //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_Strip_Cycle_Dim_Down_Limit 0x21 //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
#define PB20_Strip_BUFF_SIZE 0x04
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼
|
||||
uint8_t DevSendCnt:4; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> ռ4λ
|
||||
uint8_t DevOffline:2; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ2λ
|
||||
uint8_t DevOfflineLast:2; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ2λ
|
||||
|
||||
// uint8_t SendSn;
|
||||
// uint8_t CtrlCnt;
|
||||
|
||||
uint16_t LoopValidNum; //<2F><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
|
||||
|
||||
uint8_t LightBuf[PB20_Strip_BUFF_SIZE]; //<2F><>·<EFBFBD><C2B7>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
uint8_t LightBuf_Last[PB20_Strip_BUFF_SIZE]; //<2F><>·<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t ReportLight[PB20_Strip_BUFF_SIZE]; //<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
uint8_t CtrlMode[PB20_Strip_BUFF_SIZE]; //<2F><><EFBFBD><EFBFBD>/<2F>ݼ<EFBFBD><DDBC><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģʽ
|
||||
uint8_t CtrlMode_Last[PB20_Strip_BUFF_SIZE];
|
||||
|
||||
uint8_t CtrlTime[PB20_Strip_BUFF_SIZE]; //<2F><><EFBFBD><EFBFBD>/<2F>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
uint8_t Strip_DimTime; //<2F><>·<EFBFBD><C2B7><EFBFBD>ȿ<EFBFBD><C8BF>ƽ<EFBFBD><C6BD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
|
||||
|
||||
uint8_t PB20DevType; //<2F><><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
uint8_t PB20DevAddr; //<2F><><EFBFBD>豸458<35><38>ַ
|
||||
uint8_t PB20DevPort; //<2F><><EFBFBD>豸485<38>˿<EFBFBD>
|
||||
|
||||
uint32_t PB20Addr; //<2F><><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
|
||||
|
||||
uint8_t AG_Flag; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD>
|
||||
uint8_t LSIC_Flag; //LS<4C><53>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5>ڣ<EFBFBD>
|
||||
uint8_t LS_Flag; //<2F><><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD>
|
||||
uint8_t SW_Flag; //<2F><><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>
|
||||
|
||||
}__attribute__ ((__packed__))RS485_PB20_Strip_INFO;
|
||||
|
||||
|
||||
void BLV_RS485_PB20_Strip_Data_Init(uint8_t devaddr);
|
||||
void BLV_RS485_PB20_Strip_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
|
||||
|
||||
void BLV_PB20_Strip_Group_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr,uint32_t devaddr, uint32_t CtrlFlag, uint8_t CtrlNum,uint16_t *start);
|
||||
|
||||
#endif
|
||||
|
||||
3189
BasicCode/Drive/PB20/BLV_Bus_Dev_PB20Fun.c
Normal file
3189
BasicCode/Drive/PB20/BLV_Bus_Dev_PB20Fun.c
Normal file
File diff suppressed because it is too large
Load Diff
238
BasicCode/Drive/PB20/BLV_Bus_Dev_PB20Fun.h
Normal file
238
BasicCode/Drive/PB20/BLV_Bus_Dev_PB20Fun.h
Normal file
@@ -0,0 +1,238 @@
|
||||
#ifndef _BLV_BUS_DEV_PB20FUN_H_
|
||||
#define _BLV_BUS_DEV_PB20FUN_H_
|
||||
|
||||
#include "stdint.h"
|
||||
#include "BLV_485_Protocol.h"
|
||||
#include "BLV_All_Dev_Init.h"
|
||||
|
||||
/*<2A><><EFBFBD>ýӿ<C3BD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD>忪ʼ*/
|
||||
#define PB20_OWN_LS_STATE_OPEN 0x01 //<2F>Դ<EFBFBD><D4B4>ƴ<EFBFBD><C6B4><EFBFBD>
|
||||
#define PB20_OWN_LS_STATE_CLOSE 0x02 //<2F>Դ<EFBFBD><D4B4>ƴ<EFBFBD><C6B4><EFBFBD>
|
||||
#define PB20_Device_CHECK_OPEN 0x03 //PB<50>豸Ѳ<E8B1B8>쿪
|
||||
#define PB20_Device_CHECK_CLOSE 0x04 //PB<50>豸Ѳ<E8B1B8><D1B2><EFBFBD><EFBFBD>
|
||||
|
||||
#define PB20_OWN_LS_Ctrl_UpperLimit 0x05 //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_OWN_LS_Ctrl_LowerLimit 0x06 //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_OWN_LS_Cycle_Stop 0x08 //ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
||||
|
||||
#define PB20_OWN_LS_DimTime_Set 0x09 //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_Global_Light_Set 0x0A //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_GlobalLight_UpperLimit 0x0B //ȫ<>ֿɵ<D6BF><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_GlobalLight_LowerLimit 0x0C //ȫ<>ֿɵ<D6BF><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define PB20_OWN_LS_SWITCH_Ctrl 0x11 //ֻ<><D6BB><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD>״̬
|
||||
#define PB20_OWN_LS_LIGHT_Ctrl 0x12 //ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define PB20_OWN_LS_Dim_Up 0x1C //<2F><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
#define PB20_OWN_LS_Dim_Down 0x1D //<2F><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
|
||||
#define PB20_OWN_LS_Dim_Up_Limit 0x1A //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
#define PB20_OWN_LS_Dim_Down_Limit 0x1B //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20>ٷֱȿ<D6B1><C8BF><EFBFBD>
|
||||
|
||||
#define PB20_OWN_LS_Cycle_Dim_Up 0x1E //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
#define PB20_OWN_LS_Cycle_Dim_Down 0x1F //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
||||
|
||||
#define PB20_OWN_LS_Cycle_Dim_Up_Limit 0x20 //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_OWN_LS_Cycle_Dim_Down_Limit 0x21 //Ψ<><CEA8><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD> <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
/*<2A><><EFBFBD>ýӿ<C3BD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
/*PB20<32><30><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD>忪ʼ*/
|
||||
#define PB20_CMD_INQUIRE 0x20 //״̬<D7B4><CCAC>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
||||
#define PB20_CMD_OLS_LCTRL 0x21 //PB20<32>Դ<EFBFBD><D4B4>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD>
|
||||
#define PB20_CMD_OLS_ONOFF 0x22 //PB20<32>Դ<EFBFBD><D4B4>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>
|
||||
#define PB20_CMD_OLS_CCTRL 0x23 //PB20<32>Դ<EFBFBD><D4B4>ƴ<EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_CMD_GL_CTRL 0x28 //PB20ȫ<30>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define PB20_CMD_LD_LCTRL 0x35 //PB20-LD<4C><44><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD>
|
||||
#define PB20_CMD_LD_CCTRL 0x36 //PB20-LDѭ<44><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define PB20_CMD_LS_LLCTRL 0x40 //PB20-LS<4C><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_CMD_LS_AGCTRL 0x41 //PB20-LS<4C><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_CMD_LS_LSCTRL 0x42 //PB20-LS<4C><53><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
||||
#define PB20_CMD_LS_SCTRL 0x44 //PB20-LS<4C><53><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>
|
||||
#define PB20_CMD_LS_LCTRL 0x45 //PB20-LS<4C><53><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD>
|
||||
#define PB20_CMD_LS_CCTRL 0x46 //PB20-LSѭ<53><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_CMD_LS_RELCTRL 0x47 //PB20-LS<4C><53><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_CMD_LS_INRELCTRL 0x48 //PB20-LS<4C><53><EFBFBD>Ե<EFBFBD><D4B5>ڵ<EFBFBD><DAB5><EFBFBD>·
|
||||
|
||||
#define PB20_CMD_RELAY_ADDRCTRL 0x50 //PB20-Relay<61><79>ַ<EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||
#define PB20_CMD_RELAY_CTRL 0x52 //PB20-Relay<61><79><EFBFBD><EFBFBD>
|
||||
#define PB20_CMD_Relpy_OK 0x00
|
||||
#define PB20_CMD_Relpy_Busy 0x01
|
||||
/*PB20<32><30><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨<EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
|
||||
/*<2A>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ궨<D8BA>忪ʼ*/
|
||||
#define PB20_RETAYTIME_MAX 0x02 //Э<><D0AD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define PB20_OWN_LS_BUFF_SIZE 0x04 //<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
|
||||
#define PB20_RETRY_TIME 0x01 //PB20<32>·<EFBFBD><C2B7>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define DEV_CHECK_OPEN 0x01 //Ѳ<>쿪
|
||||
#define DEV_CHECK_CLOSE 0x02 //Ѳ<><D1B2><EFBFBD><EFBFBD>
|
||||
/*<2A>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ궨<D8BA><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
#define PB20_STRIPLIST_MAX 16
|
||||
#define PB20_LEDLIST_MAX 16
|
||||
#define PB20_RELAY_MAX 16
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t DevType; //Ѳ<><D1B2><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
uint8_t DevAddr; //Ѳ<><D1B2><EFBFBD>豸485<38><35>ַ
|
||||
uint16_t DevLoop; //Ѳ<><D1B2><EFBFBD>豸<EFBFBD><E8B1B8>·
|
||||
uint16_t LP_Limit; //Ѳ<><D1B2><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16_t UP_Limit; //Ѳ<><D1B2><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}__attribute__ ((__packed__))DEVCHECKMAP;
|
||||
|
||||
/*Ѳ<><D1B2>״̬<D7B4><CCAC>*/
|
||||
typedef enum
|
||||
{
|
||||
CLOSEALL = 0, //ȫ<><C8AB>
|
||||
FIRSTINQUIRE, //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
||||
OPENONE, //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>·
|
||||
SECONDINQUIRE, //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
||||
CHECKONE, //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>·
|
||||
CHECKEND, //<2F><><EFBFBD><EFBFBD>Ѳ<EFBFBD><D1B2>
|
||||
}CHECK_STATE;
|
||||
|
||||
|
||||
|
||||
#define CheckMapDevNumMax ((SRAM_CheckMap_List_End_Addr - SRAM_CheckMap_List_Start_Addr)/(sizeof(DEVCHECKMAP))) //Ѳ<><D1B2><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t Type;
|
||||
uint8_t Addr;
|
||||
uint8_t Port;
|
||||
}__attribute__ ((__packed__))SUBDEVICE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BLV_COMM_RECORD_G comm_record; //ͨѶ<CDA8><D1B6>¼ 37
|
||||
uint8_t DevSendCnt:4; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>лظ<D0BB><D8B8><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> ռ4λ
|
||||
uint8_t DevOffline:2; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ2λ
|
||||
uint8_t DevOfflineLast:2; //<2F>豸<EFBFBD><E8B1B8><EFBFBD>߱<EFBFBD>־ 1<><31><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> 0<><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> ռ2λ
|
||||
uint8_t DevSendSN; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>SN<53><4E> 39
|
||||
|
||||
uint8_t Global_Light; //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t GLight_UpperLimit; //ȫ<>ֿɵ<D6BF><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t GLight_LowerLimit; //ȫ<>ֿɵ<D6BF><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t GLight_Flag; //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD> 43
|
||||
|
||||
/*Own LS*/
|
||||
uint16_t LoopValidNum; //<2F><>Ч<EFBFBD><D0A7>· 44
|
||||
uint8_t CtrlMode[PB20_OWN_LS_BUFF_SIZE]; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģʽ
|
||||
uint8_t CtrlMode_Last[PB20_OWN_LS_BUFF_SIZE]; //<2F>ϴο<CFB4><CEBF><EFBFBD>ģʽ
|
||||
uint8_t LightBuf[PB20_OWN_LS_BUFF_SIZE]; //<2F><>ǰ<EFBFBD><C7B0>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ֵ
|
||||
uint8_t LightBuf_Last[PB20_OWN_LS_BUFF_SIZE]; //<2F>ϴλ<CFB4>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ֵ 60
|
||||
uint8_t ReportLight[PB20_OWN_LS_BUFF_SIZE]; //<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
uint8_t Own_Ls_Light_Flag; //<2F><><EFBFBD>ȿ<EFBFBD><C8BF>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Own_Ls_OnOff_Flag; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
||||
uint8_t Own_Ls_Cycle_Flag; //ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Own_Ls_Cycle_Time[PB20_OWN_LS_BUFF_SIZE]; //ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD>⽥<EFBFBD><E2BDA5>ʱ<EFBFBD><CAB1>
|
||||
uint8_t Own_Ls_DimTime; //<2F><><EFBFBD>ȿ<EFBFBD><C8BF>ƽ<EFBFBD><C6BD><EFBFBD>ʱ<EFBFBD><CAB1> 68
|
||||
/*Own LS*/
|
||||
|
||||
uint8_t Check_Flag; //Ѳ<><D1B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t Check_DevType; //Ѳ<><D1B2><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
uint8_t Check_Loop; //Ѳ<><D1B2><EFBFBD>豸<EFBFBD><E8B1B8>·
|
||||
uint8_t Check_State; //Ѳ<><D1B2>״̬<D7B4><CCAC>
|
||||
uint8_t Close_State; //Ѳ<><D1B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>״̬ 73
|
||||
// uint8_t Check_DevNum; //
|
||||
|
||||
uint8_t soft_version; //<2F><><EFBFBD><EFBFBD><EFBFBD>汾
|
||||
|
||||
uint16_t PS_vol; //<2F>ƴ<EFBFBD><C6B4><EFBFBD>ǰ<EFBFBD><C7B0>ѹ
|
||||
uint16_t Bus_Vol; //Bus<75><73>ǰ<EFBFBD><C7B0>ѹ
|
||||
uint16_t Bus_Vol_Last; //Bus<75>ϴε<CFB4>ѹ 80
|
||||
|
||||
uint16_t Bus_Ele; //Bus<75><73>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
uint16_t Bus_Ele_Last; //Bus<75>ϴε<CFB4><CEB5><EFBFBD>
|
||||
|
||||
uint32_t Bus_Power; //Bus<75><73>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
uint32_t Bus_Power_Last; //Bus<75>ϴι<CFB4><CEB9><EFBFBD>
|
||||
|
||||
uint32_t Wait_Tick; //<2F>ȴ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> 96
|
||||
uint32_t PB_Idle_Tick; //PB<50><42><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
#if RS485_PB20_LD_Flag
|
||||
SUBDEVICE LED_List[PB20_LEDLIST_MAX]; //LED<45>豸<EFBFBD><E8B1B8>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> 57
|
||||
uint8_t LEDDevNum; //<2F><><EFBFBD>ص<EFBFBD>LED<45><44><EFBFBD><EFBFBD>
|
||||
|
||||
uint32_t LED_Send_L_Flag; //<2F><><EFBFBD><EFBFBD>LED<45><44>ַ:0~31<33><31><EFBFBD>ݷ<EFBFBD><DDB7>ͱ<EFBFBD><CDB1><EFBFBD>
|
||||
uint32_t LED_Send_H_Flag; //<2F><><EFBFBD><EFBFBD>LED<45><44>ַ:32~63<36><33><EFBFBD>ݷ<EFBFBD><DDB7>ͱ<EFBFBD><CDB1><EFBFBD>
|
||||
#endif
|
||||
|
||||
|
||||
#if RS485_PB20_LS_Flag //124
|
||||
SUBDEVICE Strip_List[PB20_STRIPLIST_MAX]; //LS<4C>豸<EFBFBD><E8B1B8>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
||||
uint8_t StripDevNum; //<2F><><EFBFBD>ص<EFBFBD>LS<4C><53><EFBFBD><EFBFBD>
|
||||
|
||||
uint32_t Strip_A00_07_LLCtrl; //LS<4C><53>ַ0~7<><37>·<EFBFBD><C2B7><EFBFBD>ȿ<EFBFBD><C8BF>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint32_t Strip_A08_15_LLCtrl; //LS<4C><53>ַ8~15<31><35>·<EFBFBD><C2B7><EFBFBD>ȿ<EFBFBD><C8BF>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Strip_LLCtrl_Flag[PB20_STRIPLIST_MAX]; //LS<4C><53>ַ0~15<31><35><EFBFBD>ȿ<EFBFBD><C8BF>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Strip_LL_CtrlLoopNum; //LS<4C><53><EFBFBD>Ȼ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t Strip_A00_07_LLCtrl_Send; //LS<4C><53>ַ0~7<><37>·<EFBFBD><C2B7><EFBFBD>ȿ<EFBFBD><C8BF>Ʊ<EFBFBD><C6B1><EFBFBD> 2024-11-12 <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ʱ<EFBFBD>ѷ<EFBFBD><D1B7>͵Ŀ<CDB5><C4BF>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint32_t Strip_A08_15_LLCtrl_Send; //LS<4C><53>ַ8~15<31><35>·<EFBFBD><C2B7><EFBFBD>ȿ<EFBFBD><C8BF>Ʊ<EFBFBD><C6B1><EFBFBD> 2024-11-12 <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ʱ<EFBFBD>ѷ<EFBFBD><D1B7>͵Ŀ<CDB5><C4BF>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Strip_LL_CtrlLoopNum_Send; //LS<4C><53><EFBFBD>Ȼ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>ѷ<EFBFBD><D1B7><EFBFBD>) 2024-11-12
|
||||
|
||||
uint32_t Strip_A00_07_LSCtrl; //LS<4C><53>ַ0~7<><37>·<EFBFBD><C2B7><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint32_t Strip_A08_15_LSCtrl; //LS<4C><53>ַ8~15<31><35>·<EFBFBD><C2B7><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Strip_LSCtrl_Flag[PB20_STRIPLIST_MAX]; //LS<4C><53>ַ0~15<31><35><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Strip_LS_CtrlLoopNum; //LS<4C><53><EFBFBD><EFBFBD>״̬<D7B4><CCAC>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t Strip_A00_07_LSCtrl_Send; //LS<4C><53>ַ0~7<><37>·<EFBFBD><C2B7><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD> 2024-11-12
|
||||
uint32_t Strip_A08_15_LSCtrl_Send; //LS<4C><53>ַ8~15<31><35>·<EFBFBD><C2B7><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD> 2024-11-12
|
||||
uint8_t Strip_LS_CtrlLoopNum_Send; //LS<4C><53><EFBFBD><EFBFBD>״̬<D7B4><CCAC>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2024-11-12
|
||||
|
||||
uint32_t Strip_A00_07_AGCtrl; //LS<4C><53>ַ0~7<><37>·<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint32_t Strip_A08_15_AGCtrl; //LS<4C><53>ַ8~15<31><35>·<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Strip_AGCtrl_Flag[PB20_STRIPLIST_MAX]; //LS<4C><53>ַ0~15<31>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Strip_AG_CtrlLoopNum; //LS<4C><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint8_t Strip_AG_Flag; //LS<4C><53><EFBFBD>Ե<EFBFBD><D4B5>ڱ<EFBFBD>־λ<D6BE><CEBB>0x01,<2C><><EFBFBD>Ե<EFBFBD><D4B5>ڣ<EFBFBD>0x00,<2C><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if RS485_PB20_Relay_Flag //74
|
||||
SUBDEVICE Relay_List[PB20_RELAY_MAX]; //<2F><><EFBFBD>ؼ̵<D8BC><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t RelayDevNum; //<2F><><EFBFBD>ص<EFBFBD>Relay<61><79><EFBFBD><EFBFBD>
|
||||
|
||||
uint32_t Relay_A00_07_LoopCtrl; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ַ0~7<><37><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint32_t Relay_A08_15_LoopCtrl; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ַ8~15<31><35><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Relay_LoopCtrl_Flag[PB20_RELAY_MAX]; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ַ0~15<31><35><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
||||
uint8_t Relay_CtrlLoopNum; //<2F>̵<EFBFBD><CCB5><EFBFBD>״̬<D7B4><CCAC>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t Relay_A00_07_LoopCtrl_Send; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ַ0~7<><37><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD> 2024-11-12
|
||||
uint32_t Relay_A08_15_LoopCtrl_Send; //<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ַ8~15<31><35><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD> 2024-11-12
|
||||
uint8_t Relay_CtrlLoopNum_Send; //<2F>̵<EFBFBD><CCB5><EFBFBD>״̬<D7B4><CCAC>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2024-11-12
|
||||
|
||||
#endif
|
||||
|
||||
uint8_t PB20_Process_State; //PB20<32><30><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>״̬
|
||||
|
||||
}__attribute__ ((__packed__))RS485_PB20_INFO;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void BLV_RS485_PB20_Data_Init(uint16_t DataLen, uint8_t *Data);
|
||||
void BLV_RS485_PB20_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);
|
||||
|
||||
void BLV_PB20_Group_Control_State(uint32_t CfgDevAddIn, uint16_t DevInputAddr,uint32_t devaddr, uint32_t CtrlFlag, uint8_t CtrlNum,uint16_t *start);
|
||||
|
||||
void Dev_Check_Map_Add(uint8_t *DevBuf);
|
||||
|
||||
uint8_t Get_BLV_PB20_COMM_Version(uint32_t devaddr); //2024-05-22
|
||||
uint16_t Get_BLV_PB20_PS_Voltage(uint32_t devaddr); //2024-05-22
|
||||
uint16_t Get_BLV_PB20_BUS_Voltage(uint32_t devaddr); //2024-05-22
|
||||
uint16_t Get_BLV_PB20_BUS_Current(uint32_t devaddr); //2024-05-22
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user