plan.h 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. #ifndef __plan_H
  2. #define __plan_H
  3. #include "weight.h"
  4. /*
  5. *
  6. 铲车协议示例
  7. 旧:
  8. 显示:
  9. 7E 15 02 F1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 20 20 20 30 A0
  10. 1号键:
  11. 7E 05 01 14 01 03 63
  12. 2号键:
  13. 7E 05 01 14 02 04 61
  14. 新:
  15. 显示:
  16. 7E 15 01 A1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 20 20 20 30 F1
  17. 1号键:
  18. 7E 05 01 A2 01 01 D7
  19. 2号键:
  20. 7E 05 01 A2 02 00 D7
  21. *
  22. * 数据需要insert 0x7D and follow it with the byte to be escaped XOR’d with 0x20:
  23. ? 0x7E – Frame Delimiter
  24. ? 0x7D – Escape
  25. ? 0x11 – XON
  26. ? 0x13 – XOFF
  27. Example - Raw serial data frame (before escaping interfering bytes): ?
  28. 0x7E 0x00 0x02 0x23 0x11 0xCB
  29. 0x11 needs to be escaped which results in the following frame: ?
  30. 0x7E 0x00 0x02 0x23 0x7D 0x31 0xCB
  31. Note: In the above example, the length of the raw data (excluding the checksum) is 0x0002 and the
  32. checksum of the non-escaped da ta (excluding frame delimiter and length) is calculated as:?
  33. 0xFF - (0x23 + 0x11) = (0xFF - 0x34) = 0xCB.
  34. * ---------------------------------------上传协议------------------------------------------------------------------------------
  35. * key0 协议(上报实时重量):0x7E 0x0A 0x01 0xF0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 28位重量(四段) + 1帧编号 + 1校验
  36. * key1 协议(上报1号按键):0x7E 0x0B 0x01 0xF1 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 7位重量 + 1位任务顺序号 + 1帧编号 + 1校验
  37. * key2 协议(上报2号按键):0x7E 0x0B 0x01 0xF2 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 7位重量 + 1上次接收顺序号 + 1帧上次inorout + 1帧编号 + 1校验
  38. * key5 协议(上报5号按键):0x7E 0x0B 0x01 0xF5 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 7位重量 + 1上次接收顺序号 + 1帧上次inorout + 1帧编号 + 1校验
  39. * key8 协议(取时间):0x7E 0x02 0x01 0xF8 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 1帧编号 + 1校验
  40. * ---------------------------------------设置协议------------------------------------------------------------------
  41. * key17 协议(设置WeightConst_SBType):0x7E 0x0C 0xFF 0x17 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 8位地址 + 1位帧编号 + 1校验
  42. *
  43. * key16 协议(设置无线API模式):0x7E 0x05 0xFF 0x16 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位api + 1位帧编号 + 1校验
  44. * key18 协议(设置时间):0x7E 0x09 0xFF 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 5位时间 + 1位上次上传的帧编号 + 1校验
  45. *
  46. * key19 协议(设置地址):0x7E 0x05 0x01 0x19 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验
  47. *
  48. * key1A 协议(设置提取类型地址):0x7E 0x05 0x01 0x1A 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验
  49. * key1B 协议(设置网络地址):0x7E 0x05 0x01 0x1A 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验
  50. *
  51. * ---------------------------------------铲车协议---------------------------------------------------------------------------------------
  52. * key14 协议(无线按键): 7E 05 01 A2 02 01 64 二号键 7E 05 01 A2 01 01 65 一号键 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
  53. * keyF4 协议(回复无线按键): 7E 05 01 A3 02 01 85 二号键 7E 05 01 A3 01 01 86 一号键 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
  54. * keyF1 协议(铲车显示): 7E 15 01 A1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 32 35 33 33 63 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 18位内容 + 1校验
  55. * ---------------------------------------下载协议---------------------------------------------------------------------------------------
  56. *
  57. * key10 协议(回复实时重量):0x7E 0x04 0x01 0x10 0x00 0x01 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
  58. * key11 协议(回复1号按键): 0x7E 0x04 0x01 0x11 0x00 0x01 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
  59. * key12 协议(回复2号按键): 0x7E 0x19 0x01 0x12 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 23位
  60. //////////////////
  61. F0 7E 20 05 F0 51 76 A8 EF 01 CA 00 51 76 A9 02 00 80 00 51 76 A9 11 FF F2 00 51 76 A9 20 FF F2 00 28 36
  62. key10 Output:7E 04 05 10 28 40
  63. F1/F2/f3 7E 0F 03 F3 51 74 C3 14 8A D0 00 00 00 01 00 0B 7A
  64. key11 Output:7E 04 03 11 0B 5E
  65. F4/f5 7E 0F 01 F4 51 74 BD 2E 00 00 00 00 00 00 00 01 CC
  66. 7E 0F 01 F5 51 74 BD 2F 00 00 00 00 00 01 00 02 C8
  67. Key12 Output:7E 0D 01 12 D2 BB 31 33 A0 0F 20 08 01 11 87
  68. key15 Output:7E 1A 01 15 BA C3 DC D9 DE A3 B2 DD 20 20 20 20 20 20 20 20 01 8F 08 0C 80 01 11 D9
  69. F8 7E 04 01 F8 00 84
  70. 18 Output:7E 08 01 18 51 74 BB E5 01 FA
  71. 16/17/19/1a/1b 0x7E 0x05 0x01 0x19 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验
  72. */
  73. //////////////////
  74. /*
  75. * ---------------------------------------铲车协议---------------------------------------------------------------------------------------
  76. * key14 协议(无线按键): 7E 05 01 A2 02 01 64 二号键 7E 05 01 A2 01 01 65 一号键 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
  77. * keyF4 协议(回复无线按键): 7E 05 01 A3 02 01 85 二号键 7E 05 01 A3 01 01 86 一号键 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
  78. * keyF1 协议(铲车显示): 7E 15 01 A1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 32 35 33 33 63 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 18位内容 + 1校验
  79. */
  80. union frameinit_t {
  81. struct {
  82. uint8_t frameHead;//帧头
  83. uint8_t frameLen;//数据长度Number of bytes between length and checksum fields.
  84. uint8_t addr;//器件ID
  85. uint8_t frameType;//帧类型,Transmit Request
  86. }__attribute__((packed)) data;
  87. uint8_t Buffer[4];
  88. };
  89. //计划结构
  90. union plan_comp_t
  91. {
  92. struct {
  93. uint16_t sumweight:16; // 总重
  94. uint8_t reget:1; // =0 第一次,=1 重取
  95. uint8_t shifts:2; // 班次
  96. uint8_t reserved:1; // 保留
  97. uint8_t swpos:4; // 总重量小数位数,=0 无小数点,=1 1位小数,=2 2位小数,=3 3位小数
  98. uint8_t incount:8; // 上料数
  99. uint8_t outcount:8; // 发料数
  100. uint8_t frameid:4; // 本协议帧编号
  101. uint8_t frameid_l:4; //对应回复的id
  102. }__attribute__((packed)) data;
  103. uint8_t Buffer[6];
  104. };
  105. //配方复合标志的结构
  106. union pf_comp_t
  107. {
  108. struct {
  109. uint8_t az_pos:2; // 跳转域绝对值小数位数,=0 无小数点,=1 1位小数,=2 2位小数,=3 3位小数
  110. uint8_t autosecond:2; // =0 不进行自动判断,=1 合理阶段停留3秒,=2 合理停留6秒,=3 合理停留9秒
  111. uint8_t tw_pos:2; // 目标重量小数位数,=0 无小数点,=1 1位小数,=2 2位小数,=3 3位小数
  112. uint8_t tW_minus:1; // 目标重量的正负,=0 正数 bit6=1 负数
  113. uint8_t addorout:1; // 加投料说明,=0 加料 bit7=1 投料
  114. uint8_t autozone:8; // 跳转域
  115. uint8_t firstReget:1; // 本计划是重取计划的第一个料或舍
  116. uint8_t isMix:1; // 是否混合料
  117. uint8_t JMP:1; //是否一旦超过设置重量,就自动跳转
  118. uint8_t delaytime:4;
  119. uint8_t needBegin:1; //
  120. uint8_t pfsort:8; // 操作ID 操作ID就是一个计划中的每一步的唯一标识,不同计划的操作ID可以相同,同一计划中的ID不可以相同
  121. // 有效范围是0-200,如果=0xFE,则本计划结束,如果=0xFF,则当天计划结束
  122. uint8_t frameid:4; // 本协议帧编号
  123. uint8_t frameid_l:4; // 对应0x16帧编号
  124. }__attribute__((packed)) data;
  125. uint8_t Buffer[5];
  126. };
  127. //按键重量的结构
  128. union TimeConst_t
  129. {
  130. struct datetime_t data;
  131. uint8_t Buffer[4];
  132. };
  133. extern union frameinit_t dataframehead;
  134. extern union plan_comp_t plan_comp;
  135. extern union pf_comp_t pf_comp;
  136. extern unsigned char WeightConst_product[40];
  137. extern uint8_t WeightConst_feed[40]; //原料名称
  138. extern unsigned char WeightConst_Nextfeed[40]; //临时表
  139. extern signed short WeightConst_NextWeightTarget; //目标重量
  140. extern signed short WeightConst_WeightTarget; //目标重量
  141. extern signed short WeightConst_WeightTargetTemp;
  142. extern unsigned char CompleteTarget_order; //已完成的顺序
  143. extern unsigned char XbeeConst_lastinorout;
  144. extern signed short WeightConst_WeightTargetAllowMin; //目标重量的允许跳转范围
  145. extern short WeightConst_WeightTargetAllowMax; //目标重量的允许跳转范围
  146. extern unsigned char WeightConst_PlantempList[40]; //计划临时表
  147. extern unsigned char WeightConst_PlanLastList[40]; //计划临时表
  148. extern unsigned char XbeeConst_FrameNum;
  149. extern unsigned short WeightConst_DELAYTIME;
  150. extern unsigned char WeightConst_WeightHaveBegin; //已经确认开始
  151. extern unsigned char WeightConst_Product_JS;
  152. extern unsigned char WeightConst_Stop;
  153. extern unsigned short WeightConst_DELAYON;
  154. extern unsigned char XbeeConst_CanSend;
  155. extern unsigned char XbeeConst_lastsort;
  156. extern unsigned char WeightConst_Product_Run; //开始运行
  157. extern unsigned short WeightConst_Product_Run_time; //开始运行时间
  158. extern unsigned char WeightConst_Run; //整体开始运行
  159. extern unsigned char getPlaning;
  160. extern unsigned char WeightConst_AutoSingleNSecondPoint;
  161. extern rt_sem_t pop_product_sem;
  162. extern rt_sem_t setTIME_lock;
  163. extern rt_sem_t delay_key_sem;
  164. extern unsigned char delayKeying;
  165. extern void setTIME_thread(void);
  166. extern void sendgetTime(void);
  167. extern void SendWifi_thread(void);
  168. extern void sendkey1(int BtnType, int remote);
  169. extern void sendkey2(int BtnType);
  170. extern void setWeightConst_initProduct(void);
  171. extern void getTargetWeight(void);
  172. extern void pop_product_thread(void);
  173. extern void delay_key_thread(void);
  174. extern void setSendFrame_t(unsigned char Broadcast,unsigned char Radius,unsigned char TO);
  175. extern void Planback(void);
  176. extern union TimeConst_t TimeConst;
  177. #endif