KeySlave485.h 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  1. #ifndef __KEYSLAVE485_H
  2. #define __KEYSLAVE485_H
  3. #include "stm32f7xx_hal.h"
  4. //必须配置三项参数:看门狗,液位计类型,油品类型。李伟修改 20210420
  5. //0----关闭看门狗SP706 1----打开看门狗SP706--------------必须配置的参数1/3
  6. //#define WatchDogOn 1 //是否打开看门狗
  7. //#define WatchDogOn 0 //是否打开看门狗
  8. #define TIME_OF_Break_seal_cnt 1 //30 连续破封判断次数
  9. #define En_AnHuiKaiLe 0 //安徽开乐产品试用增加温度 压力显示
  10. #define En_XieYouFa_OverSample 1 //卸油阀优化 增加一次读取
  11. #define ElecFence_AutoSeal_EN 1 //电子围栏自动施封
  12. #define DisplaySensorData_En 1 //是否允许模拟量传感器数据显示,比如温度压力等参数
  13. #define Max_Usart2_ErrorTime 32 //最大读取错误次数
  14. #define VoicePlay_En 0 //串口4上的语音播报;已经有打印机、按键两个设备
  15. #define Printer_En 1 //串口4上的打印机是否启用 新疆项目则启用;北京部队试用不启用
  16. #define KeyPad_Set_SealState_En 1 //允许按键修改电子铅封的状态
  17. /* Base address of the Flash sectors */
  18. #define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* Base address of Sector 0, 32 Kbytes */
  19. #define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08008000) /* Base address of Sector 1, 32 Kbytes */
  20. #define ADDR_FLASH_SECTOR_2 ((uint32_t)0x08010000) /* Base address of Sector 2, 32 Kbytes */
  21. #define ADDR_FLASH_SECTOR_3 ((uint32_t)0x08018000) /* Base address of Sector 3, 32 Kbytes */
  22. #define ADDR_FLASH_SECTOR_4 ((uint32_t)0x08020000) /* Base address of Sector 4, 128 Kbytes */
  23. #define ADDR_FLASH_SECTOR_5 ((uint32_t)0x08040000) /* Base address of Sector 5, 256 Kbytes */
  24. #define ADDR_FLASH_SECTOR_6 ((uint32_t)0x08080000) /* Base address of Sector 6, 256 Kbytes */
  25. #define ADDR_FLASH_SECTOR_7 ((uint32_t)0x080C0000) /* Base address of Sector 7, 256 Kbytes */
  26. #define StartBytes_IAP ((uint32_t)0xA55A55AA) //远程升级的起始字节
  27. #define EndBytes_IAP ((uint32_t)0x5AA5AA55) //远程升级的结束字节
  28. #define New236Byte_En_0x1121 0 //新增的236字节传输1-4仓、5-8仓协议
  29. #define New150Byte_En_0x1193 1 //新增的150字节传输每仓所有传感器的协议,一帧数据中传输每仓铅封、IO、模拟量数据
  30. #define New64Byte_En_0x0013 1 //阀门状态或运算之后进行传输
  31. #define New80Byte_En_0x119B 1 //新增的传输整车传感器,倾角、备电、等
  32. #define New64Byte_En_0x0020 1 //北京部队试用新增的一组64字节的阀门状态传输协议
  33. #define ExtAddr_ControllBoard 0x95020002 //控制板的4字节地址 扩展地址
  34. #define ExtAddr_ControllBoard2 0x95500002 //控制板的4字节地址 扩展地址
  35. #define Length_Of_PayLoad_RemCali 44 //远程标定的有效载荷长度 帧长度64,有效载荷44字节
  36. #define DataMode_For_RemCali 0x01 //远程标定的数据模式,00=ASCII,01=HEX
  37. #define Length_Of_Reply_RemCali 67 //远程标定返回的数据长度,分别为131和67;十六进制模式下为67
  38. #define F2_and_key4 0xbffb
  39. //20210120新增 液位计类型 --------------必须配置的参数2/3
  40. //01--磁致伸缩液位计; 02————雷达液位计
  41. #define TypeOf_YeWeiJi 0x02
  42. //#define TypeOf_YeWeiJi 0x01
  43. /////////油品配置!!!必须要配置!!! --------------必须配置的参数3/3
  44. //0.08%为柴油的膨胀系数 0.12%为汽油的膨胀系数
  45. //20210419 --56454为柴油车;54021为汽油车
  46. #define SCL_Factor_diesel ((float)0.08) //柴油与汽油的膨胀系数 0808车为柴油,56454柴油
  47. #define SCL_ControllToPlatForm (1000.00f)
  48. //屏幕唤醒的休眠时间间隔 20210408 同北京迪文屏供应商联系之后确认40ms是屏幕的刷新间隔,留下10ms余量
  49. #define LCD_TimeOfWake 50
  50. #define ShowPassword_JieFeng_En 0 //是否在屏幕上显示密码
  51. #define ShowCang02_IO_EN 1 //是否在屏幕上显示2仓阀门开关信息
  52. #define Show_Sys_Info_EN 1 //是否在屏幕上显示运行信息
  53. //采集器上传给控制器的液位、温度数据,int16格式传输,精度为0.1mm 所以要缩小10倍
  54. #define SCL_Yewei_Collect2Contr (0.1f)
  55. #define SCL_Temp_Collect2Contr (0.1f)
  56. #define SCL_Angle (180.0f/32768.0f)
  57. //三点式温度传感器,1=启用;0=未安装或者未启用
  58. #define TriTempSensorOn 1
  59. //是否打印日期和时间 调试比武期间不打印时间信息,手写出库、到站信息
  60. #define PrintDateTime 0
  61. //读取采集器的时间间隔 单位为毫秒ms
  62. #define READ_COLLECT_INTERVAL ((uint16_t)500U)
  63. //远程标定的时间
  64. //#define SPAN_RemoteCali_INTERVAL ((uint32_t)(600000)) //600秒
  65. #define SPAN_RemoteCali_INTERVAL ((uint32_t)(10000)) //10秒
  66. #define SPAN_ControllerAndCollector_INTERVAL_100 ((uint32_t)(100)) //150ms 采集器的命令响应时间
  67. #define SPAN_ControllerAndCollector_INTERVAL_120 ((uint32_t)(120)) //120ms 采集器的命令响应时间
  68. #define SPAN_ControllerAndCollector_INTERVAL_180 ((uint32_t)(180)) //180ms 采集器的命令响应时间
  69. //手工输入温度制后默认的保持时间 20210303调整为60分钟
  70. #define SPAN_Manual_Input_Temp ((uint32_t)(3600000)) //40分钟=2400s换算为ms
  71. //#define SPAN_Manual_Input_Temp ((uint32_t)(1200000)) //20分钟=1200s换算为ms
  72. //任何按键按下后默认的保持时间 ----控制屏幕强制唤醒的时间
  73. #define SPAN_KeyPress_Time ((uint32_t)(600000)) //600秒
  74. ///////异常状态标志
  75. #define ADDR_DWIN_StateYiChang_CoverSmall 0x1046 //迪文屏幕人孔小盖地址
  76. #define ADDR_DWIN_StateYiChang_CoverBig 0x1048 //迪文屏幕人孔大盖地址
  77. #define ADDR_DWIN_StateYiChang_XieYouFa 0x1042 //迪文屏幕卸油阀地址
  78. #define ADDR_DWIN_StateYiChang_HaiDiFa 0x1044 //迪文屏幕海底阀地址
  79. #define ADDR_DWIN_Seal_Lock 0x100C //迪文屏幕施封图标(关闭的锁)地址
  80. #define ADDR_DWIN_Seal_UnLock 0x100F //迪文屏幕破封图标(打开的锁)地址
  81. #define ADDR_DWIN_Car_State 0x1022 //迪文屏幕车辆状态图标地址
  82. #define ADDR_DWIN_Operation_State 0x1024 //迪文屏幕操作状态状态图标地址 装油 卸油 空闲
  83. #define ADDR_DWIN_Loading_Oil_Mode 0x1028 //迪文屏幕装油模式图标地址 上装 下装
  84. #define ADDR_DWIN_UnLoading_Oil_Mode 0x102a //迪文屏幕卸油动画图标地址 上装 下装
  85. #define ADDR_DWIN_Num_Of_CangId 0x103A //迪文屏幕仓号图标地址 1--8
  86. #define ADDR_DWIN_CoverSmall 0x1000 //迪文屏幕人孔小盖开关地址 打开或者关闭
  87. #define ADDR_DWIN_CoverBig 0x1003 //迪文屏幕人孔大盖开关地址 打开或者关闭
  88. #define ADDR_DWIN_HaiDiFa 0x1006 //迪文屏幕海底阀开关地址 打开或者关闭
  89. #define ADDR_DWIN_XieYouFa 0x1009 //迪文屏幕卸油阀开关地址 打开或者关闭
  90. #define ADDR_DWIN_Seal_UnLock 0x100F //迪文屏幕破封图标(打开的锁)地址
  91. #define ADDR_DWIN_Loading_Oil 0x1012 //迪文屏幕装油动画图标(打开的锁)地址第一仓,后边每仓地址+2
  92. #define ADDR_DWIN_Text01 0x1070 //迪文屏幕显示文本框的地址
  93. #define ADDR_DWIN_Text02 0x1270 //迪文屏幕显示文本框的地址
  94. #define ADDR_DWIN_Text03_sysInfo 0x1470 //迪文屏幕显示文本框的地址----------系统运行信息
  95. #define ADDR_DWIN_Text04 0x1670 //迪文屏幕显示文本框的地址
  96. #define ADDR_DWIN_Text05 0x1870 //迪文屏幕显示文本框的地址---启动界面的版本信息
  97. //#define ADDR_DWIN_Title_IO 0x1B00 //阀门名称标志
  98. //#define ADDR_DWIN_Cang01_IO 0x1C00 //仓1的阀门状态信息
  99. //#define ADDR_DWIN_Cang02_IO 0x1A00 //仓2的阀门状态信息
  100. //#define ADDR_DWIN_Cang03_IO 0x1D00 //仓3的阀门状态信息
  101. //#define ADDR_DWIN_Cang04_IO 0x1E00 //仓4的阀门状态信息
  102. #define ADDR_DWIN_Title_IO 0x1A00 //阀门名称标志
  103. #define ADDR_DWIN_Cang01_IO 0x1B00 //仓1的阀门状态信息
  104. #define ADDR_DWIN_Cang02_IO 0x1C00 //仓2的阀门状态信息
  105. #define ADDR_DWIN_Cang03_IO 0x1D00 //仓3的阀门状态信息
  106. #define ADDR_DWIN_Cang04_IO 0x1E00 //仓4的阀门状态信息
  107. #define ADDR_DWIN_SensorInfo 0x2100 //模拟传感器类信息描述指针
  108. #define ADDR_DWIN_SensorInfoAll 0x3100 //
  109. #define ADDR_DWIN_Text01_SP 0x5000 //迪文屏幕显示文本框的描述指针地址
  110. #define ADDR_DWIN_Text02_SP 0x5010
  111. #define ADDR_DWIN_Text03_SP 0x5020
  112. #define ADDR_DWIN_Text04_SP 0x5030
  113. #define ADDR_DWIN_Text05_SP 0x5040
  114. #define ADDR_DWIN_Title_IO_SP 0x5050 //阀门名称描述指针
  115. #define ADDR_DWIN_Cang01_IO_SP 0x5060 //仓1的阀门状态信息描述指针
  116. #define ADDR_DWIN_Cang02_IO_SP 0x5070 //仓2的阀门状态信息描述指针
  117. #define ADDR_DWIN_Cang03_IO_SP 0x5080 //仓3的阀门状态信息描述指针
  118. #define ADDR_DWIN_Cang04_IO_SP 0x5090 //仓4的阀门状态信息描述指针
  119. #define ADDR_DWIN_SensorInfo_SP 0x50A0 //模拟传感器类信息描述指针
  120. #define ADDR_DWIN_Tempe01 0x2040 //1仓温度数据
  121. #define ADDR_DWIN_Pressure01 0x2044 //1仓压力数据
  122. #define ADDR_DWIN_Yewei01_Cang01 0x2048 //1仓液位数据
  123. #define ADDR_DWIN_Qingjiao01 0x204c //倾角1数据
  124. #define ADDR_DWIN_Qingjiao02 0x207c //倾角2数据
  125. #define ADDR_DWIN_Zhongliang 0x2050 //1仓重量数据,或等于整车油品重量
  126. #define ADDR_DWIN_TempeManualInput 0x2080 //手工输入的1仓温度;主要用于新疆现场比武
  127. #define ADDR_DWIN_Yewei01_Cang02 0x2060 //2仓液位数据
  128. #define ADDR_DWIN_Yewei01_Cang03 0x2064 //3仓液位数据
  129. #define ADDR_DWIN_Yewei01_Cang04 0x2068 //4仓液位数据
  130. #define ADDR_DWIN_Vt_Cang01 0x2054 //第1仓的Vt数据
  131. #define ADDR_DWIN_Vt_Cang02 0x20A0 //第2仓的Vt数据
  132. #define ADDR_DWIN_Vt_Cang03 0x20A4 //第3仓的Vt数据
  133. #define ADDR_DWIN_Vt_Cang04 0x20A8 //第4仓的Vt数据
  134. #define ADDR_DWIN_V20_Cang01 0x2058 //第一仓的V20数据
  135. #define ADDR_DWIN_Tempe01_Cang01 0x2084 //第一仓的温度测量点1
  136. #define ADDR_DWIN_Tempe02_Cang01 0x2088 //第一仓的温度测量点2
  137. #define ADDR_DWIN_Tempe03_Cang01 0x208c //第一仓的温度测量点3
  138. #define ADDR_DWIN_Density_Cang01 0x2090 //第一仓的密度数据
  139. /////////////////以下内容不需要修改!!!!!!!
  140. //将会根据上述液位计类型修改相应的参数
  141. /*
  142. #if(TypeOf_YeWeiJi==0x02)
  143. //注释掉柴油的膨胀系数则切换为汽油,否则自动切换为柴油
  144. #define SCL_Factor_diesel ((float)0.08) //柴油的膨胀系数 0808车为柴油
  145. #endif
  146. */
  147. //Fram中存储的所有参数
  148. #define ADDR_Extended_ContBoard 0x0000 // 0 95010001 扩展地址
  149. #define ADDR_Version_ContBoard 0x0004 // 4 STM32F746VGT6+2021v1.06 版本号
  150. #define ADDR_AutoSealed_Time 0x0024 // 36 自动施封时长
  151. #define ADDR_DataSource_LiquidoMeter 0x002C // 44 液晶屏数据显示来源——液位参数
  152. #define ADDR_DataSource_ElecSeal 0x0030 // 48 液晶屏数据显示来源——铅封参数
  153. #define ADDR_V20_Point 0x0034 // 52 V20计算温度点的选择
  154. #define ADDR_CarPlate_Number 0x0044 // 68 车牌号
  155. #define ADDR_Zero_Of_LiquidMeter 0x0064 // 100 兼容8仓 液位计零点
  156. #define ADDR_Zero_Of_TankCapacity 0x0084 // 132 罐容Vt零点
  157. #define ADDR_ManHoLe_Number 0x00A4 // 164 人孔盖卸油阀数量
  158. //add poly 20221027 FRAM地址与ADDR_OiLType_Data地址冲突,将外部地址也内部地址分离
  159. #define FRAM_ADDR_Scan_Param 0x00C4 // 196 长度16字节,存储主动发送配置参数
  160. #define FRAM_ADDR_Scan_flowID 0x00D4 // 212 长度4字节,发送序列ID存储
  161. #define IDEX_ADDR_Read_WorkSt 0x00D8 // 216 用于响应上位机下发的运行状态数据帧
  162. #define ADDR_OiLType_Data 0x00E4 // 228 油品参数 膨胀系数 0.0008 0.0012
  163. #define IDEX_ADDR_Scan_Param 0x00F4 // xy, 以此首地址的16字节区域,存放类F3协议终端功能的传感器轮询参数配置
  164. #define ADDR_Zero_Of_TempSensor 0x0104 // 260 温度偏移参数
  165. #define ADDR_TankShape_01 0x0124 // 292 1—4仓 罐车参数1
  166. #define ADDR_TankShape_02 0x0164 // 356 5—8仓 罐车参数2
  167. #define ADDR_SampIntervaL_Collector 0x01A4 // 420 单位为毫秒。取值范围为 同采集板的采样间隔
  168. #define ADDR_CommuIntervaL_ScreenDwin 0x01B4 // 436 同迪文屏的通信间隔
  169. #define ADDR_SleepTime_ScreenDwin 0x01C4 // 452 屏幕休眠时间
  170. #define ADDR_RTC_ScreenDwin 0x01CC // 460 屏幕RTC标定
  171. #define FRAM_ADDR_TIME_record 0x01CC // 460 存储当前RTC时间
  172. #define ADDR_TiltAngle_Sensor 0x01DC // 476 倾角补偿参数
  173. #define ADDR_WarningOf_TiltAngle 0x01EC // 492 x报警门限5度,y报警门限5度,启用报警。 倾角报警门限
  174. #define ADDR_Auto_OilStatic_Judgement 0x01FC // 508 10s滑动窗口时间,3mm液位波动,启用自动稳油 自动稳油参数/打印机自动稳油判断
  175. #define ADDR_Restart_ContBoard 0x020C // 524 复位指令
  176. #define ADDR_Unique_ID_ContBoard 0x0210 // 528 唯一ID
  177. #define ADDR_VersionOf_Software 0x0220 // 544 1.0.0.0 软件版本号
  178. #define ADDR_VersionOf_Hardware 0x0240 // 576 1.0.0.1 硬件版本号
  179. #define ADDR_VersionOf_LCD 0x0260 //608
  180. #define ADDR_FactoryParam_ContBoard 0x0280 // 640 所有参数恢复为默认值 出厂参数
  181. #define ADDR_SelfTest_ContBoard 0x0284 // 644 自检结果
  182. #define ADDR_BaudRate_ContBoard 0x0288 // 648 波特率
  183. #define ADDR_Zero001_ContBoard 0x0298 // 664 零点参数
  184. #define ADDR_Scale001_ContBoard 0x02A8 // 680 灵敏度参数
  185. #define ADDR_ThreshHold001_ContBoard 0x02B8 // 696 阈值参数
  186. #define ADDR_Precision_ContBoard 0x02C8 // 712 精度
  187. #define ADDR_TempFactor_ContBoard 0x02D8 // 728 温度补偿系数
  188. #define ADDR_YmodemMode_ContBoard 0x02E8 // 744 Ymodem模式
  189. #define ADDR_Reserve001_ContBoard 0x02EC // 748 Res001
  190. //李伟修改 20211130 压力报警上限、下限、温度上限、下限、温度修正、压力窗口时长、压力正偏门限、负偏门限、压力修正、算法类型等
  191. //数据格式统一标准化未浮点数,每个数据占用4字节。平台下发数据均为浮点数格式,控制板根据需要进行强制类型转换。
  192. #define ADDR_RunAn_AlarmThreshold 0x02EC // 748 Res001 44个字节
  193. //诸正龙增加 20220113
  194. #define ADDR_USART1_RE_TIMEOUT 0x0318 //终端通信多少时间无接收重启 4字节
  195. #define ADDR_DISP_VT_TYPE 0x031C //VT 20的显示数据来源
  196. #define ADDR_Reserve002_ContBoard 0x02F0 // 752 Res002
  197. #define ADDR_Reserve003_ContBoard 0x02F4 // 756 Res003
  198. #define ADDR_Reserve004_ContBoard 0x02F8 // 760 Res004
  199. #define ADDR_Reserve005_ContBoard 0x02FC // 764 Res005
  200. #define ADDR_Reserve006_ContBoard 0x0300 // 768 Res006
  201. #define ADDR_Reserve007_ContBoard 0x0304 // 772 Res007
  202. #define ADDR_Reserve008_ContBoard 0x0308 // 776 Res008
  203. #define ADDR_ElecSealData_BulkTrans_ContBoard 0x030C // 780 铅封液位批量上传
  204. #define ADDR_Cabinet01_ContBoard 0x0310 // 784 32个浮点数参数或者64个int16类型数据,4字节对齐。一帧数据128*2=256字符上发给平台. 仓1
  205. #define ADDR_Cabinet02_ContBoard 0x0390 // 912 仓2
  206. #define ADDR_Cabinet03_ContBoard 0x0410 // 1040 仓3
  207. #define ADDR_Cabinet04_ContBoard 0x0490 // 1168 仓4
  208. #define ADDR_Cabinet05_ContBoard 0x0510 // 1296 仓5
  209. #define ADDR_Cabinet06_ContBoard 0x0530 // 1328 仓6
  210. #define ADDR_Cabinet07_ContBoard 0x0550 // 1360 仓7
  211. #define ADDR_Cabinet08_ContBoard 0x0570 // 1392 仓8
  212. #define ADDR_AuthorizeCode 0x0590 // 1424 8仓,每仓4字节 授权解封密码
  213. #define ADDR_Is_In_ElecFence 0x05D0 // 1488 车是否在电子围栏内
  214. #define ADDR_TankCapacity_Table 0x05D4 // 1492 200cm高度,200个u16数据 罐容表标定
  215. #define ADDR_Auto_sealedOK_ID 0x0764 // 1892 原控制板兼容地址
  216. #define ADDR_Break_sealing_Id 0x0768 // 1896 原控制板兼容地址
  217. #define ADDR_Config_fun_id 0x076C // 1900 原控制板兼容地址
  218. #define ADDR_Auto_Seal_Time 0x0770 // 1904 原控制板兼容地址
  219. #define ADDR_Baseval_ID 0x0774 // 1908 原控制板兼容地址
  220. #define ADDR_StoreNumber 0x0778 // 1912 原控制板兼容地址
  221. #define ADDR_ManHole_Big_info 0x077C // 1916 原控制板兼容地址
  222. #define ADDR_ManHole_small_info 0x0780 // 1920 原控制板兼容地址
  223. #define ADDR_Dump_info 0x0784 // 1924 原控制板兼容地址
  224. #define ADDR_Foot_info 0x0788 // 1928 原控制板兼容地址
  225. #define ADDR_DebugControll 0x078C // 1932 调试信息控制
  226. #define ADDR_TotalRunTime 0x0794 //1940累计运行时间计数器
  227. #define ADDR_State_ElecSeal_FSM 0x0798 // 1944 基于状态机的电子铅封状态
  228. #define ADDR_SW_Voice_Printer 0x07A0 // 1952 是否开启打印机,语音播报-----每个bit表示一个外设;4个字节,最多支持32个外接设备
  229. #define ADDR_Enable_BlankSeal 0x07A4 // 1956 是否允许空仓施封
  230. #define ADDR_Enable_DispSysInfo 0x07A8 // 1960 是否允许显示系统信息等
  231. #define ADDR_Sensor_Scan_FRAM 0x07f4 // 2036 是否允许显示系统信息等
  232. //add boly 20221021
  233. #define IDEX_ADDR_JT808_DataBack 0x0941 // 2369 控制板 平台确定808-串口透传的传感器数据上报
  234. //end boly
  235. //以下参数不用保存在FRAM中,地址跟实际的存储地址无关联,仅用于功能跳转 --开启液位传感器,压力传感器,断电保存,两边有油算法,允许重复施封,液晶类型,保留字,自动施封
  236. #define ADDR_Enable_ReSeal 0x4000 // 16384 是否允许显示系统信息等
  237. //////最高地址不大于0x07ff=2047
  238. #define ADDR_Sw_VoicePlay 0x8000 //切换语音播报功能
  239. #define ADDR_Sw_ValveRaw 0x8001 ////切换阀门的原始数据或者汉字数据
  240. //新增密码存储地址
  241. //-----按键功能码
  242. #define DebugFun_LCD_Version 90004 // 1920 版本信息
  243. #define DebugFun_LCD_SleepTime 90002 // LCD 休眠时间
  244. #define DebugFun_DS1302Time 90003 // 1928 显示DS1302时间
  245. #define DebugFun_CarLicensePlate 90068 // 显示车牌号
  246. #define DebugFun_CarLicensePlate1 90005 // 显示车牌号
  247. #define DebugFun__Restart_ContBoard00 90523 //立即重启
  248. #define DebugFun__Restart_ContBoard01 90524 //可以取消的重启
  249. #define DebugFun_VersionOf_Software 90544 //软件版本号
  250. //强制清除各仓的显示信息,避免乱码无法消除----因为正常只有39字符,原始数字较长,所以后边有残余
  251. #define DebugFun_Clear_Valve_Info 99997
  252. #define DebugFun_Show_product_ID 99998 //显示产品ID
  253. #define DebugFun_Show_Terminal 99999 //显示来自终端的命令信息
  254. #define DebugFun_Sw_VoicePlay 98000 //切换语音播报功能
  255. #define DebugFun_Sw_ValveRaw 98001 //切换阀门的原始数据或者汉字数据
  256. #define DebugFun_Sw_DisplaySensorData 98002 //切换是否显示模拟量类的传感器数据 flag_Sw_DisplaySensorData
  257. #define DebugFun_Refresh_Title_IO 98003 //强制刷新一次阀门名称显示
  258. #define DebugFun_Sw_DispSysInfo 98004 //是否实时显示系统运行信息等
  259. #define DebugFun_Disp_Valve_Info_Bit 98005 //在1仓的位置显示老协议的阀门信息,每个bit表示一个阀门状态,帧标志为0xA1
  260. #define DebugFun_Set_Cang_NUM01 98101 //手动设定为1仓1阀门
  261. #define DebugFun_Set_Cang_NUM02 98102 //手动设定为2仓2阀门
  262. #define DebugFun_Set_Cang_NUM03 98103 //手动设定为3仓3阀门
  263. #define DebugFun_Set_Cang_NUM04 98104 //手动设定为4仓4阀门
  264. #define DebugFun_Set_Cang_NUM05 98105 //手动设定为5仓5阀门
  265. #define DebugFun_Set_Cang_NUM06 98106 //手动设定为6仓6阀门
  266. #define DebugFun_Set_Cang_NUM07 98107 //手动设定为7仓7阀门
  267. #define DebugFun_Set_Cang_NUM08 98108 //手动设定为8仓8阀门
  268. #define DebugFun_Set_BlankSeal_Enable 98109 //手动设定空仓允许施封
  269. #define DebugFun_Set_BlankSeal_Disable 98110 //手动设定空仓禁止施封
  270. #define DebugFun_Set_Cang_NUM01_Seal 98111 //手动强制施封1仓
  271. #define DebugFun_Set_Cang_NUM02_Seal 98112 //手动强制施封2仓
  272. #define DebugFun_Set_Cang_NUM03_Seal 98113 //手动强制施封3仓
  273. #define DebugFun_Set_Cang_NUM04_Seal 98114 //手动强制施封4仓
  274. #define DebugFun_Set_Cang_NUM05_Seal 98115 //手动强制施封5仓
  275. #define DebugFun_Set_Cang_NUM06_Seal 98116 //手动强制施封6仓
  276. #define DebugFun_Set_Cang_NUM07_Seal 98117 //手动强制施封7仓
  277. #define DebugFun_Set_Cang_NUM08_Seal 98118 //手动强制施封8仓
  278. #define DebugFun_Set_Cang_NUM01_Broken 98121 //手动强制破封1仓
  279. #define DebugFun_Set_Cang_NUM02_Broken 98122 //手动强制破封2仓
  280. #define DebugFun_Set_Cang_NUM03_Broken 98123 //手动强制破封3仓
  281. #define DebugFun_Set_Cang_NUM04_Broken 98124 //手动强制破封4仓
  282. #define DebugFun_Set_Cang_NUM05_Broken 98125 //手动强制破封5仓
  283. #define DebugFun_Set_Cang_NUM06_Broken 98126 //手动强制破封6仓
  284. #define DebugFun_Set_Cang_NUM07_Broken 98127 //手动强制破封7仓
  285. #define DebugFun_Set_Cang_NUM08_Broken 98128 //手动强制破封8仓
  286. #define DebugFun_Set_Cang_NUM01_JieFeng 98131 //手动强制解封1仓
  287. #define DebugFun_Set_Cang_NUM02_JieFeng 98132 //手动强制解封2仓
  288. #define DebugFun_Set_Cang_NUM03_JieFeng 98133 //手动强制解封3仓
  289. #define DebugFun_Set_Cang_NUM04_JieFeng 98134 //手动强制解封4仓
  290. #define DebugFun_Set_Cang_NUM05_JieFeng 98135 //手动强制解封5仓
  291. #define DebugFun_Set_Cang_NUM06_JieFeng 98136 //手动强制解封6仓
  292. #define DebugFun_Set_Cang_NUM07_JieFeng 98137 //手动强制解封7仓
  293. #define DebugFun_Set_Cang_NUM08_JieFeng 98138 //手动强制解封8仓
  294. #define DebugFun_Set_Enable_ReSeal 98139 // 允许重复施封
  295. #define DebugFun_Set_Disable_ReSeal 98140 //
  296. #define DebugFun_SW_ExpansionRatio 80228 //显示8仓的膨胀系数
  297. #define DebugFun_SW_ExtAddr_ControllBoard 80000 //显示控制板的扩展地址
  298. #define DebugFun_SW_ExtAddr_IO_OnOff_Group 80001 //显示分组后的阀门开关状态0x91打包用
  299. #define DebugFun_SW_ExtAddr_IO_Exception_Group 80002 ////显示分组后的阀门异常状态0x91打包用
  300. #define DebugFun_SW_ExtAddr_ControllBoardtmp 80003 //显示控制板的扩展地址
  301. #define DebugFun_SW_ValveState_PoFeng0x13 80004 //显示破封时的阀门状态
  302. #define DebugFun_SW_ValveState_PoFeng0x20 80005 //显示破封时的阀门状态
  303. #define DebugFun_Show_Sensor001 91001 //显示地址为001的传感器的状态
  304. #define DebugFun_Show_Sensor002 91002
  305. #define DebugFun_Show_Sensor003 91003
  306. #define DebugFun_Show_Sensor004 91004
  307. #define DebugFun_Show_Sensor005 91005
  308. #define DebugFun_Show_Sensor006 91006
  309. #define DebugFun_Show_Sensor007 91007
  310. #define DebugFun_Show_Sensor008 91008
  311. #define DebugFun_Show_Sensor009 91009
  312. #define DebugFun_Show_Sensor010 91010
  313. #define DebugFun_Show_Sensor011 91011
  314. #define DebugFun_Show_Sensor012 91012
  315. #define DebugFun_Show_Sensor013 91013
  316. #define DebugFun_Show_Sensor014 91014
  317. #define DebugFun_Show_Sensor015 91015
  318. #define DebugFun_Show_Sensor016 91016
  319. #define Set_Level_Alarm_Sensor001 99001
  320. #define Set_Level_Alarm_Sensor002 99002
  321. #define Set_Level_Alarm_Sensor003 99003
  322. #define Set_Level_Alarm_Sensor011 99101
  323. #define Set_Level_Alarm_Sensor012 99102
  324. #define Set_Level_Alarm_Sensor013 99103
  325. #define Set_Level_Alarm_Sensor021 99201
  326. #define Set_Level_Alarm_Sensor022 99202
  327. #define Set_Level_Alarm_Sensor023 99203
  328. #define Set_Level_Alarm_Sensor031 99301
  329. #define Set_Level_Alarm_Sensor032 99302
  330. #define Set_Level_Alarm_Sensor033 99303
  331. //李伟修改 20200209 空气温度修正为实际油品温度
  332. #define SCL_Air_To_Oil (1.000001f)
  333. //李伟修改 20200210 同龚经理商定后 当温度超过10度之后直接加上49℃
  334. #define Offset_diesel (49.001f)
  335. #define SCL_Factor_petrol ((float)0.12) //汽油的膨胀系数 0817车为汽油
  336. //运输的油品的最大可能的温度---已经观察到的可以的达到65度
  337. #define Max_Oil_Tempe ((float)120.01)
  338. //运输的油品的最大可能的温度---已经观察到的可以的达到65度
  339. #define Max_Oil_Height ((float)2.54321)
  340. //运输的油品的最低可能的温度---极限低温为-60.01
  341. #define Min_Oil_Tempe ((float)-60.01)
  342. //控制器显示的数据源;0x00表示本机数据;0x01表示显示服务器下发的数据
  343. #define DWIN_Display_Source 0x00
  344. #define Key_F1 0x1b
  345. #define Key_F2 0x02
  346. #define Key_F3 0x03
  347. #define Key_F4 0x06
  348. #define Key_00 0x30
  349. #define Key_01 0x31
  350. #define Key_02 0x32
  351. #define Key_03 0x33
  352. #define Key_04 0x34
  353. #define Key_05 0x35
  354. #define Key_06 0x36
  355. #define Key_07 0x37
  356. #define Key_08 0x38
  357. #define Key_09 0x39
  358. #define Key_CLR 0x7f
  359. #define Key_POT 0x2e
  360. //功能码
  361. #define FrameHeader_Collect 0xAA
  362. #define EquipmentNum_Collect 0x00
  363. #define ValveState_Fuction 0x01
  364. #define SensorValue_Function 0x02
  365. #define WriteStore_Function 0x03
  366. #define PlatformCal_Function 0x04
  367. #define PlatformRestartCllect 0x05
  368. #define PlatformSetOilStyle 0x06//新增
  369. #define PlatformExceptionHandling 0x07//新增
  370. #define FrameHeader_Collect02 0x39
  371. #define EquipmentNum_Collect02 0x01
  372. #define ValveState_Fuction02 0x01
  373. #define SensorValue_Function02 0x02
  374. #define WriteStore_Function02 0x03
  375. #define PlatformCal_Function02 0x04
  376. #define PlatformRestartCllect02 0x05
  377. #define PlatformSetOilStyle02 0x06//新增
  378. #define PlatformExceptionHandling02 0x07//新增
  379. #define Collector_Reset 0x0010 //采集器复位
  380. #define Collector_Get_Valve_State 0x0020 //0x3901标定命令的功能码 读取阀门状态
  381. #define Collector_Get_Sensor_State 0x0027 //3. 读取某仓阀门之外传感器数据
  382. #define Collector_Set_XieYouFa_Closed 0x0050 //4. 卸油阀标定为关
  383. #define Collector_Set_XieYouFa_MenXian 0x0051 //5. 设置卸油阀门限
  384. #define Collector_Set_RenKongGai_Zero 0x0052 //6. 人孔盖传感器置零
  385. #define Collector_GetSensor_From485Addr 0x0055 //7. 读取液位温度传感器数据(模拟量类的) ----需要指定485地址
  386. #define Collector_Set_RenKongGai_MenXian 0x0072 //8. 设置人孔盖门限
  387. #define Collector_Set_PanDuanCiShu 0x0073 //9. 设置传感器判断次数(主要是人孔盖)
  388. #define Collector_Set_CangFaMen_Num 0x0074 //10. 设置采集器参数—仓数,每仓阀门数量
  389. #define Collector_Set_RenKongGai_Num 0x0075 //11. 设置人孔盖种类数量----实际就是人孔大盖数量
  390. #define Collector_Set_XieYouFa_Num 0x0076 //12. 设置卸油阀种类数量
  391. #define Collector_Set_HaiDiFa_Num 0x0077 //13. 设置海底阀种类数量
  392. #define Collector_Get_Wendu_Data 0x0121 //从采集板读取温度数据---8仓数据,float类型有效32字节 李伟修改20210928
  393. #define Collector_Get_Yewei_Data 0x0122 //从采集板读取液位数据---8仓数据,float类型有效32字节 李伟修改20210928
  394. //从采集板一次性读取读取温度、液位数据、体积、压力等---8仓数据,float类型有效
  395. //16字节帧头
  396. //液位,平均温度,温度1,温度2,温度3,Vt,压力,参数1,参数2,参数3.。。。,参数N共11个。
  397. //前16字节为固定帧头,接下来8字节为保留待扩展,接下来8个参数32字节为整车模拟量信息(倾角、速度等),
  398. //最后为4仓的模拟量参数与校验信息。总长度:16+8+32+4*4*11+4=236字节。
  399. #define Collector_Get_WenduYewei_Data_1to4 0x1121 //1--4仓数据
  400. #define Collector_Get_WenduYewei_Data_5to8 0x1122 //5--8仓数据
  401. #define Collector_Get_All_Sensor_Data_Cang01 0x1193 //传送1仓所有传感器命令,每个传感器4字节,不区分IO类或者模拟量类,详见《淡仓数据传输协议》
  402. #define Collector_Get_All_Sensor_Data_Cang02 0x1194 //传送2仓所有传感器命令
  403. #define Collector_Get_All_Sensor_Data_Cang03 0x1195 //传送3仓所有传感器命令
  404. #define Collector_Get_All_Sensor_Data_Cang04 0x1196 //传送4仓所有传感器命令
  405. #define Collector_Get_All_Sensor_Data_Cang05 0x1197 //传送5仓所有传感器命令
  406. #define Collector_Get_All_Sensor_Data_Cang06 0x1198 //传送6仓所有传感器命令
  407. #define Collector_Get_All_Sensor_Data_Cang07 0x1199 //传送7仓所有传感器命令
  408. #define Collector_Get_All_Sensor_Data_Cang08 0x119A //传送8仓所有传感器命令
  409. #define Collector_Get_All_Sensor_Data_WholeCar 0x119B //传送8仓所有传感器命令
  410. #define Collector_Get_Valve_OldFormat 0x0013 //14. 读取运算后的阀门状态,兼容之前的阀门协议,每个bit表示一个状态
  411. #define Get_IO_State_New64Byte 0x20//20210712新增 获取每个仓位的阀门状态
  412. #define SetPara_Yewei_Offset 0x10//20210122新增 调节液位传感器的高度,间隔1s向控制板发送数据
  413. #define GuanRongMenXian 50//当液位高度大于某一门限值强制进行罐容修正
  414. //////////////////////////////////////////////////////////////////////////////////
  415. /*********此处关于设置参数以及参数设置后赋值处理,后续有更合适的方法时配置代码不应在按键串口里(如在终端里配置)**************/
  416. typedef struct //配置的阀门信息
  417. {
  418. uint8_t Config_fun_id;//功能配置ID--是否具备液位传感器;压力传感器;有油无油算法;自动施封
  419. uint8_t Collection_id;//采集器ID
  420. uint8_t All_number ;//所有的仓数
  421. uint8_t ManHole_Big_info; //人孔盖信息
  422. uint8_t ManHole_small_info; //人孔小盖信息
  423. uint8_t Dump_info; //卸油阀信息
  424. uint8_t HaiDiFa_info; //海底阀信息
  425. uint16_t Auto_Seal_Time;
  426. }Config_INFO_TypeDef;
  427. extern Config_INFO_TypeDef Config_info_all;
  428. extern uint8_t Baseval_ID;
  429. extern uint8_t Set_CollectPara_Flag;
  430. extern uint16_t FnKey;//=0x0000;//组合键
  431. extern uint8_t Auto_sealedOK_ID_bak;
  432. extern float V20_Seal[8],Vt_Seal[8],Ht_Seal[8];
  433. extern float V20_Break[8],Vt_Break[8],Ht_Break[8];
  434. //extern float Vt_Local,V20_Local;//控制器计算的结果或者采集器传来的结果
  435. extern float Vt_Local[8];
  436. extern float V20_Local[8];
  437. //extern float Vt_Local_Disp;
  438. //extern float Vt_Disp,V20_Disp;
  439. extern float Vt_Disp[8],V20_Disp[8];//[8]
  440. extern float ExpansionRatio[8];
  441. extern float Tempe_For_V20[8];
  442. extern float Vt_Local_Disp,V20_Local_Disp;
  443. extern uint32_t data_Src_To_Disp;
  444. /******************************************END**********************************************************************/
  445. extern uint8_t flag_Seal_Break;//破封标志,按键板破封蜂鸣器响
  446. extern uint16_t Sleep_Timer_cnt3;
  447. extern uint16_t tmrForPrinter;
  448. extern uint32_t tmrForKeyPad;
  449. extern uint32_t tmrForRemoteCali;
  450. extern uint32_t tmrForTemp_ManualInput;
  451. extern uint8_t dbgArray[8];
  452. extern uint8_t flag_exitReset;
  453. extern uint8_t flag_Uart4_Busy;
  454. extern uint8_t flag_Sw_VoicePlay;
  455. extern uint8_t product_ID[20];
  456. extern uint8_t flag_ShowValveRaw;//是否显示阀门的原始信息00,01等
  457. extern uint8_t flag_Sw_DispSysInfo;//是否显示系统运行信息
  458. extern char PrintBuff[64];
  459. extern uint16_t PrintCnt;
  460. extern uint8_t flag_En_BlankSeal;
  461. extern int16_t OffsetYewei[8];//offsetLeiDa004;
  462. //extern int16_t offsetLeiDa005;
  463. extern int16_t OffsetTankCapacity[8];//1仓罐容零点,两字节定时发给采集器
  464. //李伟修改 湖南润安项目 新增传感器与报警信息
  465. extern float AlarmOfTempeThreshold_Upper,AlarmOfTempeThreshold_Lower;
  466. extern float AlarmOfPressureThreshold_Upper,AlarmOfPressureThreshold_Lower;
  467. extern float AlarmArrayData[11];
  468. extern float BiasOfTempe;//温度修正
  469. extern float PressureWindowsSpan;//压力窗口时长
  470. extern float PressurePositiveThreshold;//压力正偏门限
  471. extern float PressureNegativeThreshold;//压力负偏门限
  472. extern float BiasOfPressure;//压力修正
  473. extern uint32_t AlgType;//算法类型配置
  474. extern uint32_t usart_timeout,usart_timesec;
  475. extern uint8_t vt_disp_type;
  476. extern char Version_software[30];
  477. extern uint8_t Version_hardware[];
  478. extern uint8_t product_ID[20];
  479. extern uint32_t FunDebugCode;
  480. extern uint32_t input_ArrFunDebugCode[5];
  481. extern uint32_t Version_Soft[8];
  482. void TestUsart4_Receive(void);
  483. void KeySlave485_Init(uint32_t bound);
  484. void KeySlave485_Send_Data(uint8_t *buf,uint8_t len);
  485. void KeySlave485_TX_Set(uint8_t en);
  486. uint8_t Get_keyvalue(void );
  487. void Mode_key_pageID(void );
  488. void Send_alarm10S(void);
  489. //void About_KeyFunction(void);
  490. #endif