123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- #ifndef __plan_H
- #define __plan_H
- #include "weight.h"
- /*
- *
- 铲车协议示例
- 旧:
- 显示:
- 7E 15 02 F1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 20 20 20 30 A0
- 1号键:
- 7E 05 01 14 01 03 63
- 2号键:
- 7E 05 01 14 02 04 61
- 新:
- 显示:
- 7E 15 01 A1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 20 20 20 30 F1
- 1号键:
- 7E 05 01 A2 01 01 D7
- 2号键:
- 7E 05 01 A2 02 00 D7
- *
- * 数据需要insert 0x7D and follow it with the byte to be escaped XOR’d with 0x20:
- ? 0x7E – Frame Delimiter
- ? 0x7D – Escape
- ? 0x11 – XON
- ? 0x13 – XOFF
- Example - Raw serial data frame (before escaping interfering bytes): ?
- 0x7E 0x00 0x02 0x23 0x11 0xCB
- 0x11 needs to be escaped which results in the following frame: ?
- 0x7E 0x00 0x02 0x23 0x7D 0x31 0xCB
- Note: In the above example, the length of the raw data (excluding the checksum) is 0x0002 and the
- checksum of the non-escaped da ta (excluding frame delimiter and length) is calculated as:?
- 0xFF - (0x23 + 0x11) = (0xFF - 0x34) = 0xCB.
- * ---------------------------------------上传协议------------------------------------------------------------------------------
- * key0 协议(上报实时重量):0x7E 0x0A 0x01 0xF0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 28位重量(四段) + 1帧编号 + 1校验
- * key1 协议(上报1号按键):0x7E 0x0B 0x01 0xF1 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 7位重量 + 1位任务顺序号 + 1帧编号 + 1校验
- * 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校验
- * 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校验
- * key8 协议(取时间):0x7E 0x02 0x01 0xF8 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 1帧编号 + 1校验
- * ---------------------------------------设置协议------------------------------------------------------------------
- * key17 协议(设置WeightConst_SBType):0x7E 0x0C 0xFF 0x17 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 8位地址 + 1位帧编号 + 1校验
- *
- * key16 协议(设置无线API模式):0x7E 0x05 0xFF 0x16 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位api + 1位帧编号 + 1校验
- * key18 协议(设置时间):0x7E 0x09 0xFF 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 5位时间 + 1位上次上传的帧编号 + 1校验
- *
- * key19 协议(设置地址):0x7E 0x05 0x01 0x19 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验
- *
- * key1A 协议(设置提取类型地址):0x7E 0x05 0x01 0x1A 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验
- * key1B 协议(设置网络地址):0x7E 0x05 0x01 0x1A 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验
- *
- * ---------------------------------------铲车协议---------------------------------------------------------------------------------------
- * key14 协议(无线按键): 7E 05 01 A2 02 01 64 二号键 7E 05 01 A2 01 01 65 一号键 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
- * keyF4 协议(回复无线按键): 7E 05 01 A3 02 01 85 二号键 7E 05 01 A3 01 01 86 一号键 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
- * 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校验
- * ---------------------------------------下载协议---------------------------------------------------------------------------------------
- *
- * key10 协议(回复实时重量):0x7E 0x04 0x01 0x10 0x00 0x01 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
- * key11 协议(回复1号按键): 0x7E 0x04 0x01 0x11 0x00 0x01 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
- * key12 协议(回复2号按键): 0x7E 0x19 0x01 0x12 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 23位
- //////////////////
- 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
- key10 Output:7E 04 05 10 28 40
- F1/F2/f3 7E 0F 03 F3 51 74 C3 14 8A D0 00 00 00 01 00 0B 7A
- key11 Output:7E 04 03 11 0B 5E
- F4/f5 7E 0F 01 F4 51 74 BD 2E 00 00 00 00 00 00 00 01 CC
- 7E 0F 01 F5 51 74 BD 2F 00 00 00 00 00 01 00 02 C8
- Key12 Output:7E 0D 01 12 D2 BB 31 33 A0 0F 20 08 01 11 87
- 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
- F8 7E 04 01 F8 00 84
- 18 Output:7E 08 01 18 51 74 BB E5 01 FA
- 16/17/19/1a/1b 0x7E 0x05 0x01 0x19 0x01 0x00 0x00 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验
- */
- //////////////////
- /*
- * ---------------------------------------铲车协议---------------------------------------------------------------------------------------
- * key14 协议(无线按键): 7E 05 01 A2 02 01 64 二号键 7E 05 01 A2 01 01 65 一号键 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
- * keyF4 协议(回复无线按键): 7E 05 01 A3 02 01 85 二号键 7E 05 01 A3 01 01 86 一号键 1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验
- * 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校验
- */
- union frameinit_t {
- struct {
- uint8_t frameHead;//帧头
- uint8_t frameLen;//数据长度Number of bytes between length and checksum fields.
- uint8_t addr;//器件ID
- uint8_t frameType;//帧类型,Transmit Request
- }__attribute__((packed)) data;
- uint8_t Buffer[4];
- };
- //计划结构
- union plan_comp_t
- {
- struct {
- uint16_t sumweight:16; // 总重
- uint8_t reget:1; // =0 第一次,=1 重取
- uint8_t shifts:2; // 班次
- uint8_t reserved:1; // 保留
- uint8_t swpos:4; // 总重量小数位数,=0 无小数点,=1 1位小数,=2 2位小数,=3 3位小数
- uint8_t incount:8; // 上料数
- uint8_t outcount:8; // 发料数
- uint8_t frameid:4; // 本协议帧编号
- uint8_t frameid_l:4; //对应回复的id
- }__attribute__((packed)) data;
- uint8_t Buffer[6];
- };
- //配方复合标志的结构
- union pf_comp_t
- {
- struct {
- uint8_t az_pos:2; // 跳转域绝对值小数位数,=0 无小数点,=1 1位小数,=2 2位小数,=3 3位小数
- uint8_t autosecond:2; // =0 不进行自动判断,=1 合理阶段停留3秒,=2 合理停留6秒,=3 合理停留9秒
- uint8_t tw_pos:2; // 目标重量小数位数,=0 无小数点,=1 1位小数,=2 2位小数,=3 3位小数
- uint8_t tW_minus:1; // 目标重量的正负,=0 正数 bit6=1 负数
- uint8_t addorout:1; // 加投料说明,=0 加料 bit7=1 投料
-
- uint8_t autozone:8; // 跳转域
-
- uint8_t firstReget:1; // 本计划是重取计划的第一个料或舍
- uint8_t isMix:1; // 是否混合料
- uint8_t JMP:1; //是否一旦超过设置重量,就自动跳转
- uint8_t delaytime:4;
- uint8_t needBegin:1; //
-
- uint8_t pfsort:8; // 操作ID 操作ID就是一个计划中的每一步的唯一标识,不同计划的操作ID可以相同,同一计划中的ID不可以相同
- // 有效范围是0-200,如果=0xFE,则本计划结束,如果=0xFF,则当天计划结束
-
- uint8_t frameid:4; // 本协议帧编号
- uint8_t frameid_l:4; // 对应0x16帧编号
-
- }__attribute__((packed)) data;
- uint8_t Buffer[5];
- };
- //按键重量的结构
- union TimeConst_t
- {
- struct datetime_t data;
- uint8_t Buffer[4];
- };
- extern union frameinit_t dataframehead;
- extern union plan_comp_t plan_comp;
- extern union pf_comp_t pf_comp;
- extern unsigned char WeightConst_product[40];
- extern uint8_t WeightConst_feed[40]; //原料名称
- extern unsigned char WeightConst_Nextfeed[40]; //临时表
- extern signed short WeightConst_NextWeightTarget; //目标重量
- extern signed short WeightConst_WeightTarget; //目标重量
- extern signed short WeightConst_WeightTargetTemp;
- extern unsigned char CompleteTarget_order; //已完成的顺序
- extern unsigned char XbeeConst_lastinorout;
- extern signed short WeightConst_WeightTargetAllowMin; //目标重量的允许跳转范围
- extern short WeightConst_WeightTargetAllowMax; //目标重量的允许跳转范围
- extern unsigned char WeightConst_PlantempList[40]; //计划临时表
- extern unsigned char WeightConst_PlanLastList[40]; //计划临时表
- extern unsigned char XbeeConst_FrameNum;
- extern unsigned short WeightConst_DELAYTIME;
- extern unsigned char WeightConst_WeightHaveBegin; //已经确认开始
- extern unsigned char WeightConst_Product_JS;
- extern unsigned char WeightConst_Stop;
- extern unsigned short WeightConst_DELAYON;
- extern unsigned char XbeeConst_CanSend;
- extern unsigned char XbeeConst_lastsort;
- extern unsigned char WeightConst_Product_Run; //开始运行
- extern unsigned short WeightConst_Product_Run_time; //开始运行时间
- extern unsigned char WeightConst_Run; //整体开始运行
- extern unsigned char getPlaning;
- extern unsigned char WeightConst_AutoSingleNSecondPoint;
- extern rt_sem_t pop_product_sem;
- extern rt_sem_t setTIME_lock;
- extern rt_sem_t delay_key_sem;
- extern unsigned char delayKeying;
- extern void setTIME_thread(void);
- extern void sendgetTime(void);
- extern void SendWifi_thread(void);
- extern void sendkey1(int BtnType, int remote);
- extern void sendkey2(int BtnType);
- extern void setWeightConst_initProduct(void);
- extern void getTargetWeight(void);
- extern void pop_product_thread(void);
- extern void delay_key_thread(void);
- extern void setSendFrame_t(unsigned char Broadcast,unsigned char Radius,unsigned char TO);
- extern void Planback(void);
- extern union TimeConst_t TimeConst;
- #endif
|