兼容金川中心灌区代码

This commit is contained in:
2584532475@qq.com 2024-04-08 20:38:35 +08:00
parent f8591b8b99
commit 3a537f633c
14 changed files with 217 additions and 62 deletions

View File

@ -68,6 +68,7 @@ static void thread_entry (void *parameter)
//gCommEvents = rt_event_create ("gCommEvents", RT_IPC_FLAG_FIFO) ;
locktimer = rt_timer_create ("locktimer", locktimerouter, RT_NULL, 1000, RT_TIMER_FLAG_ONE_SHOT); // 异常检测定时器
RtcThreadStart ();
SluiceThreadStart(); // 闸门控制线程
U4851ThreadStart(); // 4851采集线程
U4852ThreadStart(); // 4852采集线程

View File

@ -64,10 +64,14 @@
#define CFG_THREAD_PRIORITY 13 // 优先级
#define CFG_THREAD_TIMESLICE 5
// UIÏß³Ì
// 升级
#define UPGRADE_THREAD_PRIORITY 12 // 优先级
#define UPGRADE_THREAD_TIMESLICE 5
// RTC
#define RTC_THREAD_PRIORITY 11 // 优先级
#define RTC_THREAD_TIMESLICE 5
int ThreadNewOsApp (void);
void SluiceThreadStart (void);
@ -84,6 +88,7 @@ void CAT1ThreadStart (void);
void ZS001ThreadStart (void);
void MJEth1ThreadStart (void);
void UpgradeThreadStart (void);
void RtcThreadStart (void);
#define EVENT_CTRL_SET_OPT_SLU (1U<< 0) // 发送开度控制到提闸线程
#define EVENT_CTRL_SET_STP_SLU (1U<< 1) // 发送停止控制到提闸线程
@ -118,6 +123,7 @@ void UpgradeThreadStart (void);
#define EVENT_TRIG_COMM_RX (1U << 6) // MQTT 接受到数据
#define EVENT_TRIG_COMM_RST (1U << 7) // MQTT 发送数据
#define EVENT_TRIG_UPGRADE_RX (1U << 8) // MQTT 接受到数据
#define EVENT_TRIG_NETMODE_TX2 (1U << 9) // 通过网络模块向通道2发送数据
#define MAIL_COMM_HEART 0
@ -127,6 +133,7 @@ void UpgradeThreadStart (void);
#define MAIL_COMM_UPACK 4 // 提闸的ACK
#define MAIL_COMM_SLACK 5 // 其他的ACK
#define MAIL_COMM_READPARA 6 // 读取参数
#define MAIL_COMM_ACK 7 // 读取参数
#define MAIL_SLUICE_OPT 0
#define MAIL_SLUICE_STP 1
@ -134,10 +141,10 @@ void UpgradeThreadStart (void);
#define MAIL_SLUICE_SDW 3
#define MAIL_CT_OPT 0
#define MAIL_CT_SUP 1
#define MAIL_CT_SDW 2
#define MAIL_CT_STP 3
#define MAIL_CT_OPT 0 // 执行
#define MAIL_CT_SUP 1 // 上升
#define MAIL_CT_SDW 2 // 下降
#define MAIL_CT_STP 3 // 停止
#define MAIL_VIEW_LOGIN 1 // 登录成功 需要跳转页面
#define MAIL_VIEW_FLUSH 2 // 刷新界面显示

View File

@ -3,6 +3,17 @@
/******************************************
*
******************************************/
volatile const char _makeData[] = __DATE__; //12字节编译日期
volatile const char _makeTime[] = __TIME__; //9字节
volatile const char cBootv[] = "Ver3.0.0"; //获取时添加上面两个时间信息最大长度64字节
char _versionTemp[64];
const StrIndex_t cDownDataType[] =
{
{"run",DownRun} ,
@ -14,7 +25,8 @@ const StrIndex_t cDownDataType[] =
{"update",DownUpdate},
{"reboot",DownReboot},
{"config",DownConfig},
{"read",DownRead}
{"read",DownRead} ,
{"fact",DownFact}
};
@ -24,20 +36,25 @@ const StrIndex_t cSiteType[] =
{"sluice",SiteSluice} ,
{"flow",SiteFlow} ,
{"press",SiteSee} ,
{"auto",SiteColl} ,
{"auto",SiteColl} , // 自动化采集站
{"trans",SiteServer} ,
{"level",SiteLevel}
{"level",SiteLevel},
{"skew",SiteSkew} //测斜仪
};
const StrIndex_t cMotorType[] =
{
{"mg1000",MT_MG_1000} ,
{"qh100",MT_QH_V100} ,
{"qh200",MT_QH_V200} ,
{"zs100",MT_ZS_V100} ,
{"dy100",MT_DY_V100} ,
{"kg100",MT_KG_V100}
{"qh100", MT_QH_V100} ,
{"qh200", MT_QH_V200} ,
{"zs100", MT_ZS_V100} ,
{"jz200", MT_JZ_V200} , // 金志 4-20 ma
{"dy100", MT_DY_V100}, // 大禹锥型阀
{"kg100", MT_KG_V100}, // 开关量模块
{"kr100", MT_KR_V100}, // 闸位计
{"asca3", MT_ASC_A3}, // A3 驱动器
{"ascws", MT_ASC_WS}, // A3 驱动器
};
const StrIndex_t c4851Type[] =
@ -47,6 +64,7 @@ const StrIndex_t c4851Type[] =
{"qh200",ST_QH_V200} ,
{"dy100",ST_DY_V100} ,
{"kg100",ST_KG_V100} ,
{"at100",ST_AT_V100} ,
};
const StrIndex_t cU485Type[] =
@ -54,6 +72,7 @@ const StrIndex_t cU485Type[] =
{"modbus",0}
};
// 485 2 通道
const StrIndex_t c4852Type[] =
{
{"rds600",ST_RDS_600} ,
@ -61,7 +80,8 @@ const StrIndex_t c4852Type[] =
{"ht100",ST_HT_V100} ,
{"zkjszk",ST_ZK_JSZK},
{"djx100",ST_DJX_100},
{"rds300",ST_RDS_300}
{"rds300",ST_RDS_300},
{"mi600",ST_MI_600} // 测斜仪
};
@ -98,7 +118,13 @@ const ParShallInfo_t ParShallTale[] =
SluiceData_t SluiceData[SLUICE_COUTN];
WaterData_t WaterData[WATER_COUTN];
InclinometerData_t IncData[6]; // 测斜仪数据
SysData_t SysData;
SOFTRTC_t g_SoftRtc = {
23,10,1,0,0,0
};
uint32_t g_ifconfig = 0;
uint32_t g_ifupdate = 0;
@ -186,6 +212,17 @@ int cSiteType2Index(char * str)
/**********************************************
boot版本信息
**********************************************/
void *GetVersion(void)
{
int i = rt_sprintf(_versionTemp,"%s-%s %s",cBootv, _makeData, _makeTime);
_versionTemp[i] = 0;
return (void*)_versionTemp;
}

View File

@ -3,8 +3,10 @@
#include <stdint.h>
#define SLUICE_COUTN 1// 当前处理几口闸
#define WATER_COUTN 6// 当前接入n个流量计
#define SUBTOPIC_COUNT 1 // 订阅topic 数量
#define SLUCIE_EXEC_COUNT 20// 闸门异常时间
@ -13,6 +15,9 @@
extern uint32_t g_ifconfig;
extern uint32_t g_ifupdate;
@ -78,18 +83,37 @@ typedef struct SysData_t
int fileSize; // 文件大小
} SysData_t;
typedef struct SOFTRTC_t
{
uint8_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minutes;
uint8_t second;
}SOFTRTC_t;
// 水量参数
typedef struct InclinometerData_t
{
uint8_t dir; // 方向
uint32_t data;// 数据
} InclinometerData_t;
// 测斜数据
typedef struct WaterData_t
{
int64_t ttWater; // 작셕직좆 데貫 m3
int32_t thisFlow; // 疆珂직좆 데貫 m3
int32_t thisLevel; // 彊貫
int32_t thisSpeed; // 직醵
int64_t ttWater; // 累计流量 单位 m3
int32_t thisFlow; // 瞬时流量 单位 m3
int32_t thisLevel; // 水位
int32_t thisSpeed; // 流速
int32_t thisPress; // 压力
int32_t thisTemp; // 温度
int retry ; // 重试次数
} WaterData_t;
@ -111,6 +135,8 @@ typedef enum MotorType_t
MT_DY_V100, // 大禹锥型阀
MT_KG_V100, // 开关量模块
MT_KR_V100, // 徐州正天闸位计
MT_ASC_A3, // A3驱动器
MT_ASC_WS, // 金昌无刷电机
} MotorType_t;
typedef enum S4851Type_t
@ -132,6 +158,7 @@ typedef enum S4852Type_t
ST_ZK_JSZK, // 精水中科多普勒
ST_DJX_100, // 丁家峡闸门 读取开度
ST_RDS_300, // 雷达流量计
ST_MI_600, // 鹦鸽嘴测斜仪
} S4852Type_t;
@ -151,7 +178,8 @@ typedef enum SiteType_t
SiteSee, // 渗流渗压站
SiteColl, // 采集站
SiteServer, // 串口服务器
SiteLevel // 彊貫籃
SiteLevel, // 水位站
SiteSkew // 测斜仪
}SiteType_t;
@ -167,6 +195,7 @@ typedef enum DownDataType_t
DownReboot = 7, // 重启
DownConfig = 8, // 修改参数
DownRead = 9, // 读取参数
DownFact = 10, // 读取参数
}DownDataType_t;
@ -185,9 +214,11 @@ typedef struct TypeIndexMail_t
extern SluiceData_t SluiceData[SLUICE_COUTN];
extern WaterData_t WaterData[WATER_COUTN];
extern InclinometerData_t IncData[6];
extern SysData_t SysData;
extern const WaterLeveInfo_t LeveInfo;
extern const ParShallInfo_t ParShallTale[];
extern SOFTRTC_t g_SoftRtc;
int cMotorGetType (char * str);
@ -208,6 +239,8 @@ int cDownType2Index(char * str);
int cSiteType2Index(char * str);
void *GetVersion(void);
#endif

View File

@ -1,39 +1,40 @@
#include "main.h"
#include "di-board.h"
int DiReadChann (int chann)
DIState_t MX_Din_Pull (int chann)
{
int ret = -1;
DIState_t ret;
switch (chann)
{
case 1:
{
ret = HAL_GPIO_ReadPin (DI1_GPIO_Port, DI1_Pin);
ret = (DIState_t) HAL_GPIO_ReadPin (DI1_GPIO_Port, DI1_Pin);
break;
}
case 2:
{
ret = HAL_GPIO_ReadPin (DI2_GPIO_Port, DI2_Pin);
ret = (DIState_t)HAL_GPIO_ReadPin (DI2_GPIO_Port, DI2_Pin);
break;
}
case 3:
{
ret = HAL_GPIO_ReadPin (DI3_GPIO_Port, DI4_Pin);
ret = (DIState_t)HAL_GPIO_ReadPin (DI3_GPIO_Port, DI3_Pin);
break;
}
case 4:
{
ret = HAL_GPIO_ReadPin (DI4_GPIO_Port, DI4_Pin);
ret = (DIState_t)HAL_GPIO_ReadPin (DI4_GPIO_Port, DI4_Pin);
break;
}
case 5:
{
ret = HAL_GPIO_ReadPin (DI5_GPIO_Port, DI5_Pin);
ret = (DIState_t)HAL_GPIO_ReadPin (DI5_GPIO_Port, DI5_Pin);
break;
}
case 6:
{
ret = HAL_GPIO_ReadPin (DI6_GPIO_Port, DI6_Pin);
ret = (DIState_t) HAL_GPIO_ReadPin (DI6_GPIO_Port, DI6_Pin);
break;
}
}

View File

@ -1,8 +1,14 @@
#ifndef _DI_BOARD_H
#define _DI_BOARD_H
typedef enum DIState_t
{
DI_HIGH = 1,
DI_LOW = 0
}DIState_t;
void DiInit (void);
int DiReadChann (int chann);
DIState_t MX_Din_Pull (int chann);
#endif

View File

@ -165,7 +165,7 @@ static CommRet_T cat1_sendcmd_and_responce (int time, char * tx, int size, char
{
if (RT_EOK == rt_event_recv (gUartEvents, EVENT_UART_GSM_RX, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, 0, RT_NULL))
{
// rt_kprintf ("[%.*s]", g_GSMDrv.rx_size, g_GSMDrv.rx_buffer) ;
//rt_kprintf ("[%.*s]", g_GSMDrv.rx_size, g_GSMDrv.rx_buffer) ;
if (NULL != rt_strstr ( (char *) g_GSMDrv.rx_buffer, ack))
{
if (call != NULL)
@ -278,6 +278,26 @@ CAT1RST:
rt_kprintf ("NET:+CME:ERROR QIRD\r\n");
goto CAT1RST;
}
// // 通过通道2上报数据
// if (RT_EOK == rt_event_recv (gTrigEvents, EVENT_TRIG_NETMODE_TX2, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_NO, RT_NULL)) // 需要发送数据
// {
// if (g_cat1Drv.txbuff != NULL)
// {
// rt_sprintf (at_cmd, "AT+QISEND=0,%d\r\n", g_cat1Drv.tx_size);
// rt_thread_mdelay (10);
// if (cat1_sendcmd_and_responce (1000, at_cmd, strlen (at_cmd), ">", NULL) != RetSucc)
// {
// rt_kprintf ("NET:+CME:ERROR QISEND\r\n");
// goto CAT1RST;
// }
// if (cat1_sendcmd_and_responce (3000, g_cat1Drv.txbuff, g_cat1Drv.tx_size, "SEND OK", NULL) != RetSucc)
// {
// rt_kprintf ("NET:+CME:ERROR QPUSH\r\n");
// goto CAT1RST;
// }
// }
// }
}
rt_thread_mdelay (3000);
}
@ -292,6 +312,14 @@ void cat1_service_tx (char * buff, int size)
rt_event_send (gTrigEvents, EVENT_TRIG_NETMODE_TX1) ;
}
// 通过网络通道2发送数据
void cat1_service2_tx (char * buff, int size)
{
rt_memcpy (g_cat1Drv.txbuff, buff, size);
g_cat1Drv.tx_size = size;
rt_event_send (gTrigEvents, EVENT_TRIG_NETMODE_TX2) ;
}
void CAT1ThreadStart (void)
{

View File

@ -26,15 +26,15 @@ int Json5MinFlowDataPacket (uint8_t * buffer)
cJSON_AddItemToObject (root, "site_type", cJSON_CreateString (p)); // 表示流量计
cJSON_AddItemToObject (root, "pver", cJSON_CreateString (PROTO_VER)); // 表示流量计
cJSON_AddItemToObject (root, "iccid", cJSON_CreateString (SysData.iccid)); // 表示流量计
cJSON_AddItemToObject (root, "ver", cJSON_CreateString (VERSION)); // ±íʾÁ÷Á¿¼Æ
cJSON_AddItemToObject (root, "ver", cJSON_CreateString (GetVersion())); // 表示流量计
cJSON_AddItemToObject (root, "vol", cJSON_CreateNumber (12.3)); // 表示电池电压
cJSON_AddItemToObject (root, "temp", cJSON_CreateNumber (32.5)); // 表示流量计
p = ef_get_env ("net_drv");
cJSON_AddItemToObject (root, "netdrv", cJSON_CreateString (p)); // 表示流量计
p = ef_get_env ("iap_app_filename");
//uint32_t max_open = atoi (p);
cJSON_AddItemToObject (root, "filename", cJSON_CreateString (p)); // 表示电池电压
cJSON_AddItemToObject (root, "chancnt", cJSON_CreateNumber (1)); // ±íʾµç³Øµçѹ
p = ef_get_env ("chancnt");
cJSON_AddItemToObject (root, "chancnt", cJSON_CreateString (p)); // 表示电池电压
//cJSON_AddItemToObject (root, "chancnt", cJSON_CreateNumber (1)); // 表示电池电压
// 瞬时流速
for (int i = 0; i < 6; i++)
@ -63,7 +63,7 @@ int Json5MinFlowDataPacket (uint8_t * buffer)
// 当前水位
for (int i = 0; i < 6; i++)
{
dbl[i] = WaterData[i].thisLevel;
dbl[i] = (double)WaterData[i].thisLevel/100;
}
cJSON * ArrNumLeve = cJSON_CreateDoubleArray (dbl, 6);
cJSON_AddItemToObject (root, "thisLeve", ArrNumLeve);
@ -82,6 +82,22 @@ int Json5MinFlowDataPacket (uint8_t * buffer)
}
cJSON * ArrNumTemp = cJSON_CreateDoubleArray (dbl, 6);
cJSON_AddItemToObject (root, "thistemp", ArrNumTemp);
// 当前测斜方向
for (int i = 0; i < 6; i++)
{
dbl[i] = IncData[i].dir;
}
cJSON * ArrNumIncDir = cJSON_CreateDoubleArray (dbl, 6);
cJSON_AddItemToObject (root, "thisincdir", ArrNumIncDir);
// 当前测斜数据
for (int i = 0; i < 6; i++)
{
dbl[i] = IncData[i].data;
}
cJSON * ArrNumIncData = cJSON_CreateDoubleArray (dbl, 6);
cJSON_AddItemToObject (root, "thisincdata", ArrNumIncData);
//---------------------------------------------以下不准修改
result = cJSON_PrintUnformatted (root);

View File

@ -7,9 +7,13 @@
#include <stdlib.h>
#include "data.h"
#include "os-app.h"
#include "main.h"
char config_list[16][32] = {NULL};
int config_list_size = 0;
// 用于远程出厂设置时保留配置
char backdevice_id[12] = {0};
char backnetdrv[12] = {0};
@ -66,6 +70,7 @@ void JsonUnPacket (int index, char *buff)
UpgradeThreadStart();
break;
case DownReboot :
HAL_NVIC_SystemReset();
break;
case DownConfig: // 设置参数
// 读取参数列表
@ -80,6 +85,9 @@ void JsonUnPacket (int index, char *buff)
ef_set_env (key, value);
}
}
mail.Type = MAIL_COMM_ACK;
mail.index = index + 1; // 0通道用来升级的通道
rt_mb_send (gTCommMail, * ( (uint32_t*) &mail));
break;
case DownRead: // 读取参数
list = cJSON_GetObjectItem (root, "list");
@ -94,6 +102,18 @@ void JsonUnPacket (int index, char *buff)
rt_mb_send (gTCommMail, * ( (uint32_t*) &mail));
// 读取参数列表
break;
case DownFact:
p = ef_get_env("device_id");
rt_sprintf(backdevice_id,"%s",p);
p = ef_get_env("net_drv") ;
rt_sprintf(backnetdrv,"%s",p);
ef_env_set_default();
ef_set_env("device_id",backdevice_id) ;
ef_set_env("net_drv",backnetdrv) ;
mail.Type = MAIL_COMM_ACK;
mail.index = index + 1; // 0通道用来升级的通道
rt_mb_send (gTCommMail, * ( (uint32_t*) &mail));
break;
default:
break;
}

View File

@ -179,6 +179,8 @@ INIT:
break;
case SiteFlow:
case SiteSee:
case SiteLevel:
case SiteSkew:
gMqttDrv.tx_size = Json5MinFlowDataPacket ( (uint8_t *) gMqttDrv.txbuff);
break;
case SiteColl:

File diff suppressed because one or more lines are too long

@ -1 +1 @@
Subproject commit 38d2e6b239cf12f35cc10a3b03de211c06d34aad
Subproject commit 78a5f69493722a6684d30182e7a383e004652721

View File

@ -34,12 +34,12 @@
#ifdef EF_USING_ENV
/* Auto update ENV to latest default when current ENV version number is changed. */
/* #define EF_ENV_AUTO_UPDATE */
#define EF_ENV_AUTO_UPDATE
/**
* ENV version number defined by user.
* Please change it when your firmware add a new ENV to default_env_set.
*/
#define EF_ENV_VER_NUM 0 /* @note you must define it for a value, such as 0 */
#define EF_ENV_VER_NUM 3 /* @note you must define it for a value, such as 0 */
/* MCU Endian Configuration, default is Little Endian Order. */
/* #define EF_BIG_ENDIAN */

View File

@ -98,7 +98,11 @@ static const ef_env default_env_set[] = {
{"site_type", "sluice"}, // 0,闸门站1流量站2渗流渗压站3自动化采集站4串口服务器
{"level","[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]"},
{"flow", "[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]"},
{"wsid","[128,2,3,4,5,6]"},
{"wsid","[1,2,3,4,5,6]"},
{"sl427ip","116.176.77.72"},
{"sl427port","6200"},
{"sl427code","0000000002"},
// 水位流量关系表 配置10 个点