修复modbus错误回传0长度报文 zsxfly20240820
This commit is contained in:
parent
33051e8fb3
commit
399d6f4f5f
File diff suppressed because it is too large
Load Diff
|
@ -93,8 +93,8 @@
|
||||||
<flags>0</flags>
|
<flags>0</flags>
|
||||||
<showCmd>1</showCmd>
|
<showCmd>1</showCmd>
|
||||||
<MinPosition>
|
<MinPosition>
|
||||||
<xPos>-1</xPos>
|
<xPos>-32000</xPos>
|
||||||
<yPos>-1</yPos>
|
<yPos>-32000</yPos>
|
||||||
</MinPosition>
|
</MinPosition>
|
||||||
<MaxPosition>
|
<MaxPosition>
|
||||||
<xPos>-1</xPos>
|
<xPos>-1</xPos>
|
||||||
|
@ -3714,9 +3714,9 @@
|
||||||
</Doc>
|
</Doc>
|
||||||
<Doc>
|
<Doc>
|
||||||
<Name>..\src\app_PAD.c</Name>
|
<Name>..\src\app_PAD.c</Name>
|
||||||
<ColumnNumber>0</ColumnNumber>
|
<ColumnNumber>25</ColumnNumber>
|
||||||
<TopLine>196</TopLine>
|
<TopLine>263</TopLine>
|
||||||
<CurrentLine>224</CurrentLine>
|
<CurrentLine>282</CurrentLine>
|
||||||
<Folding>1</Folding>
|
<Folding>1</Folding>
|
||||||
<ContractedFolders></ContractedFolders>
|
<ContractedFolders></ContractedFolders>
|
||||||
<PaneID>0</PaneID>
|
<PaneID>0</PaneID>
|
||||||
|
@ -3768,7 +3768,7 @@
|
||||||
</Doc>
|
</Doc>
|
||||||
<Doc>
|
<Doc>
|
||||||
<Name>..\src\app_modbus.c</Name>
|
<Name>..\src\app_modbus.c</Name>
|
||||||
<ColumnNumber>16</ColumnNumber>
|
<ColumnNumber>28</ColumnNumber>
|
||||||
<TopLine>238</TopLine>
|
<TopLine>238</TopLine>
|
||||||
<CurrentLine>258</CurrentLine>
|
<CurrentLine>258</CurrentLine>
|
||||||
<Folding>1</Folding>
|
<Folding>1</Folding>
|
||||||
|
|
|
@ -215,8 +215,18 @@ void app_PAD_CheckData(uint8_t *dat , uint8_t len){
|
||||||
case 0x06: //读 //12V输出状态
|
case 0x06: //读 //12V输出状态
|
||||||
sys_sta.O_12V = PAD_daraframe.data[0] & 0x01;
|
sys_sta.O_12V = PAD_daraframe.data[0] & 0x01;
|
||||||
break;
|
break;
|
||||||
|
case 0x10:
|
||||||
|
ret_data[length++] =BAT_Message.Bat_STA; // 电池状态
|
||||||
|
ret_data[length++] =BAT_Message.Bat_Voltage >> 8; //电池电压
|
||||||
|
ret_data[length++] =BAT_Message.Bat_Voltage & 0xff;
|
||||||
|
ret_data[length++] =get_in_acc_percent();// 当前油门百分比
|
||||||
|
ret_data[length++] =radar_data.radar_id;// 雷达ID
|
||||||
|
ret_data[length++] =radar_data.distance/100;// 雷达距离信息
|
||||||
|
ret_data[length++] =(sys_sta.IOgps <<0) | (sys_sta.I_back <<1) | (sys_sta.I_brake <<2)
|
||||||
|
| (sys_sta.IOmanager <<3) | (sys_sta.Manager <<4)
|
||||||
|
| (sys_sta.Tourist <<5) | (sys_sta.A_Speed_Cut <<6) | (sys_sta.A_brake <<7);
|
||||||
}
|
}
|
||||||
app_PAD_Sendcmd(PAD_daraframe.cmd_id ,0x01 ,ret_data ,length);
|
app_PAD_Sendcmd(PAD_daraframe.cmd_id ,PAD_daraframe.reg_addr ,ret_data ,length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,16 +56,19 @@ enum app_control{
|
||||||
typedef struct sys_sta{
|
typedef struct sys_sta{
|
||||||
// uint16_t Pmode:2;
|
// uint16_t Pmode:2;
|
||||||
union{
|
union{
|
||||||
uint8_t Pmode:2;
|
uint8_t Pmode;
|
||||||
uint8_t Smode:2;
|
|
||||||
struct{
|
struct{
|
||||||
uint8_t Tourist:1;
|
uint8_t Tourist:1;
|
||||||
uint8_t Manager:1;
|
uint8_t Manager:1;
|
||||||
uint8_t RES0 :2;
|
uint8_t RES_0:6;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
union{
|
||||||
|
uint8_t Smode;
|
||||||
|
struct{
|
||||||
uint8_t IOgps:1;
|
uint8_t IOgps:1;
|
||||||
uint8_t IOmanager:1;
|
uint8_t IOmanager:1;
|
||||||
uint8_t RES1 :2;
|
uint8_t RES_1:6;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
union{// 输入状态
|
union{// 输入状态
|
||||||
|
|
|
@ -90,7 +90,8 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_
|
||||||
|
|
||||||
MODBUS_Sent_BUF[len_count++] =MODBUS_ADDR;
|
MODBUS_Sent_BUF[len_count++] =MODBUS_ADDR;
|
||||||
MODBUS_Sent_BUF[len_count++] =CMDCode;
|
MODBUS_Sent_BUF[len_count++] =CMDCode;
|
||||||
if(CMDCode == 0x03){
|
if(CMDCode == 0x03){//寄存器个数计数
|
||||||
|
MODBUS_Sent_BUF[2] =0;
|
||||||
len_count++;
|
len_count++;
|
||||||
}else if(CMDCode == 0x06){
|
}else if(CMDCode == 0x06){
|
||||||
MODBUS_Sent_BUF[len_count++] =(reg_addr >> 8) & 0xff;
|
MODBUS_Sent_BUF[len_count++] =(reg_addr >> 8) & 0xff;
|
||||||
|
@ -359,6 +360,9 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_
|
||||||
len_count =0;
|
len_count =0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(len_count == 0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
app_modbus_SendData(MODBUS_Sent_BUF ,len_count);
|
app_modbus_SendData(MODBUS_Sent_BUF ,len_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#include "sys_config.h"
|
#include "sys_config.h"
|
||||||
|
|
||||||
#define DBG_RADAR_EN 1
|
#define DBG_RADAR_EN 0
|
||||||
|
|
||||||
#if (DBG_RADAR_EN)
|
#if (DBG_RADAR_EN)
|
||||||
#include "dbg.h"
|
#include "dbg.h"
|
||||||
|
@ -156,6 +156,8 @@ void app_radar_Sendcmd(uint8_t radar_id , uint8_t radar_mode){
|
||||||
|
|
||||||
// 雷达测离初始化
|
// 雷达测离初始化
|
||||||
void app_radar_init(void){
|
void app_radar_init(void){
|
||||||
|
radar_data.radar_id = RADAR_ID_Front;
|
||||||
|
radar_data.distance = 0;
|
||||||
// sftmr_init(); //main函数中已初始化
|
// sftmr_init(); //main函数中已初始化
|
||||||
sftmr_start(10, radar_timer_handler);
|
sftmr_start(10, radar_timer_handler);
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,8 +50,8 @@ void conf_init(void);
|
||||||
|
|
||||||
/**************************系统版本**************************/
|
/**************************系统版本**************************/
|
||||||
// 软件本号
|
// 软件本号
|
||||||
#define SOFTWARE_ID 0x0102
|
#define SOFTWARE_ID 0x0101
|
||||||
#define D_Modbus_addr 0x01
|
#define D_Modbus_addr 0x37
|
||||||
/************************油门(Unit:%)************************/
|
/************************油门(Unit:%)************************/
|
||||||
// 管理员模式默认油门极限(0-100%)
|
// 管理员模式默认油门极限(0-100%)
|
||||||
#define D_Manager_sLim 100
|
#define D_Manager_sLim 100
|
||||||
|
|
Loading…
Reference in New Issue