optical/EMBOS/Users/EmbFunc/operator/operator.h
2025-09-04 09:45:08 +08:00

1552 lines
41 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __OPERATOR_H__
#define __OPERATOR_H__
#include "config.h"
#include "comm.h"
//------------------------------------------------------------------------
//------------------------------------------------------------------------
/*
通讯命令一览表
1. 上位机发送命令
名称 符号 代码 类型 回复 说明
读取机器信息 UCMD_GET_MC_INFO 0x0001 FLDP 有 机器信息包括机器种类,配置,控制系统版本等信息
读取机器状态 UCMD_GET_MC_STATUS 0x0002 FLDP 有 读取机器的运行状态,包括机器工作状态,常用输入状态,电机位置,工作进度,文件信息等。
读取机器参数 UCMD_GET_MC_PARAS 0x0003 FLDP 有 读取内存中机器参数列表
读取内存数据 UCMD_GET_MEM_DATA 0x0004 FLDP 有 读取机器存储器数据包括片内SRAM片外SRAMNAND FLASH等的内容
读取传感信号 UCMD_GET_SENSORS 0x0005 FLDP 有 读取IO信号状态及电机位置编码器位置等信息
读取文件信息 UCMD_GET_FILE_INFO 0x0006 FLDP 有 读取数据文件的信息
读取传输结果 UCMD_GET_TRANS_RESULT 0x0007 FLDP 有 读取文件传输的结果位图,包括数据文件和升级文件
设置机器配置 UCMD_SET_MC_CONFIG 0x0101 VLDP 无 设置机器的配置,包括信号使用的端口等信息
设置机器状态 UCMD_SET_MC_STATUS 0x0102 FLDP 无 设置机器的工作状态,包括是否允许工作,清除报警等。
设置机器参数 UCMD_SET_MC_PARAS 0x0103 VLDP 无 传输机器参数列表到下位机
设置内存数据 UCMD_SET_MEM_DATA 0x0104 FLDP 无 改变某个内存单元的数据内容==
手动控制命令 UCMD_ACT_BYHAND 0x0201 FLDP 无 手动控制电机转动OUTPUT信号开关等动作
机器工作命令 UCMD_MC_WORK 0x0202 FLDP 无 控制机器的工作命令,包括启动,停止,结束,或运动到某个位置等
移动XY命令 UCMD_MOVE_TO 0x0203 FLDP 无 移动XY到坐标
启动文件传输 UCMD_START_TRANS 0x0301 VLDP 无 启动文件传输
文件传输命令 UCMD_TRANS_FILE_DATA 0x0302 VLDP 无 传输文件数据包
下位机升级 UCMD_MC_UPDATE 0x0401 VLDP 无 升级主控
遍历命令 UCMD_TRA_BOARD 0x0501 FLDP 无 遍历总线中某种协议类型的节点
2. 下位机发送命令
名称 符号 代码 类型 回复 说明
发送机器信息 DCMD_SEND_MC_INFO 0x8001 VLDP 无 发送机器信息包括机器种类,配置,控制系统版本等信息
发送机器状态 DCMD_SEND_MC_STATUS 0x8002 VLDP 无 发送取机器的运行状态,包括机器工作状态,常用输入状态,电机位置,工作进度,文件信息等。
发送机器参数 DCMD_SEND_MC_PARAS 0x8003 VLDP 无 发送内存中机器参数列表
发送内存数据 DCMD_SEND_MEM_DATA 0x8004 VLDP 无 发送机器存储器数据包括片内SRAM片外SRAMNAND FLASH等的内容
发送传感信号 DCMD_SEND_SENSORS 0x8005 VLDP 无 发送IO信号状态及电机位置编码器位置等信息
发送文件信息 DCMD_SEND_FILE_INFO 0x8006 VLDP 无 发送数据文件的信息
发送传输结果 DCMD_SEND_TRANS_RESULT 0x8007 VLDP 无 发送文件传输的结果位图
*/
// 上位机发送命令
#define UCMD_GET_MC_INFO 0x0001 // 读取机器信息
#define UCMD_GET_MC_STATUS 0x0002 // 读取机器状态
#define UCMD_GET_MC_PARAS 0x0003 // 读取机器参数
#define UCMD_GET_MEM_DATA 0x0004 // 读取内存数据
#define UCMD_GET_SENSORS 0x0005 // 读取传感信号
#define UCMD_GET_FILE_INFO 0x0006 // 读取文件信息
#define UCMD_GET_TRANS_RESULT 0x0007 // 读取传输结果
#define UCMD_GET_SENSORS_BMP 0x0008 // 读取有效传感器位图
#define UCMD_GET_BOARD_VER 0x000A // 读取外围板程序版本
#define UCMD_GET_HEAD_PARA 0x000B // 读取机头板参数
#define UCMD_GET_COLOR_PARA 0x000C // 读取换色控制板参数
#define UCMD_GET_HEAD_NVPARAS 0x000D // 选择性读取机头参数
#define UCMD_SET_MC_CONFIG 0x0101 // 设置机器配置
#define UCMD_SET_MC_STATUS 0x0102 // 设置机器状态
#define UCMD_SET_MC_PARAS 0x0103 // 设置机器参数
#define UCMD_SET_MEM_DATA 0x0104 // 设置内存数据
#define UCMD_SET_FILE_PARAS 0x0105 // 设置文件参数
#define UCMD_SET_EXEC_PROGRESS 0x0106 // 设置执行进度
#define UCMD_SET_INSTALLMENT 0x0107 // 设置分期密码
#define UCMD_SET_ELAPSED_TIME 0x0108 // 设置经过的时间
#define UCMD_SET_DEF_PARA 0x0109 // 设置默认参数
#define UCMD_SET_HEADDEF_PARA 0x010A // 设置机头板默认参数
#define UCMD_SET_HEAD_PARA 0x010B // 设置机头板参数
#define UCMD_SET_COLOR_PARA 0x010C // 设置换色控制板参数
#define UCMD_SET_MVANGDEF_PARA 0x010D // 设置动框角度默认参数
#define UCMD_SET_COLORDEF_PARA 0x010E // 设置换色板默认参数
#define UCMD_SET_FILE_EXDATA 0x010F // 设置文件扩展数据
#define UCMD_SET_HEAD_NVPARA 0x0110 // 选择性设置机头参数
#define UCMD_ACT_BYHAND 0x0201 // 手动控制命令
#define UCMD_MC_WORK 0x0202 // 机器工作命令
#define UCMD_MOVE_TO 0x0203 // 移动XY到坐标
#define UCMD_MOVE_OFST 0x0205 // XY移动偏移量
#define UCMD_START_TRANS 0x0301 // 启动文件传输
#define UCMD_TRANS_FILE_DATA 0x0302 // 文件传输命令
#define UCMD_INVALID_FILE 0x0303 // 文件失效命令
#define UCMD_SET_FILE_LIST 0x0304 // 设置文件列表
#define UCMD_GET_FILE_LIST 0x0305 // 获取下位机文件列表
#define UCMD_MC_UPDATE 0x0401 // 下位机升级
#define UCMD_BOARD_UPDATE 0x0402 // 外围板升级
#define UCMD_TRA_BOARD 0x0501 // 遍历命令
// 下位机发送命令
#define DCMD_REQUEST_DAT 0x8000 // 请求文件数据
#define DCMD_SEND_MC_INFO 0x8001 // 发送机器信息
#define DCMD_SEND_MC_STATUS 0x8002 // 发送机器状态
#define DCMD_SEND_MC_PARAS 0x8003 // 发送机器参数
#define DCMD_SEND_MEM_DATA 0x8004 // 发送内存数据
#define DCMD_SEND_SENSORS 0x8005 // 发送传感信号
#define DCMD_SEND_FILE_INFO 0x8006 // 发送文件信息
#define DCMD_SEND_TRANS_RESULT 0x8007 // 发送传输结果
#define DCMD_SEND_SENSORS_BMP 0x8008 // 发送有效传感器位图
#define DCMD_SEND_BOARDVER 0x800A // 发送外围板程序版本
#define DCMD_SEND_HEADPARA 0x800B // 发送机头板参数
#define DCMD_SEND_COLORPARA 0x800C // 发送换色控制板参数
#define DCMD_SEND_HEAD_NVPARAS 0x800E // 选择性发送机头参数
#define DCMD_SEND_DEBUG_INFO 0x8010 // 调试信息发送
#define DCMD_SEND_FILE_LIST 0x8011 // 发送下位机文件列表
//------------------------------------------------------------------------
// 命令详解
//------------------------------------------------------------------------
// 读取机器信息
#ifdef UCMD_GET_MC_INFO
// 机器信息结构定义
#endif
//------------------------------------------------------------------------
// 读取机器状态
#ifdef UCMD_GET_MC_STATUS
/*
|-------------------------------------------------------------------|
|-------------------------------------------------------------------|
| B10 B11 | B12 B13 | 附加数据 |
|-------------------------------------------------------------------|
| 命令切换标志字 | 保留 | 附加数据 |
|-------------------------------------------------------------------|
| | | | |
| | | | |
|-------------------------------------------------------------------|
|-------------------------------------------------------------------|
*/
// 附加数据结构定义
// 机器信息结构定义
typedef struct
{
// 0
char fpgaHardVerStr[16]; // FPGA硬件版本
char fpgaSoftVerStr[16]; // FPGA软件版本
char softwareVerStr[48]; // 软件版本
char buildInfoStr[32]; // 编译日期信息
char boardId[32]; // 板卡ID
char installment[32]; // 最后一次的分期密码字符串
// 176
char rev1[512-176];
// 512
u32 localIP; // 板卡IP地址
u32 submask; // 子网掩码
u32 gateIP; // 网关IP
// 524
u8 rev2[1024-524];
} __attribute__ ((packed)) MCInfo;
//-------------------------------------------------------------------------------
#endif
//------------------------------------------------------------------------
// 读取机器参数
#ifdef UCMD_GET_MC_PARAS
#endif
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 读取传感信号
#ifdef UCMD_GET_SENSORS
#endif
//------------------------------------------------------------------------
// 读取文件信息
#ifdef UCMD_GET_FILE_INFO
#endif
//------------------------------------------------------------------------
// 读取传输结果
#ifdef UCMD_GET_TRANS_RESULT
#endif
//------------------------------------------------------------------------
// 设置机器配置
#ifdef UCMD_SET_MC_CONFIG
#endif
//------------------------------------------------------------------------
// 设置机器状态
#ifdef UCMD_SET_MC_STATUS
#define MC_STA_CLENA_ERR 0x0000 // 清除错误
#define MC_STA_EN_WORK 0x0001 // 允许工作(状态)
#define MC_STA_DIS_WORK 0x0002 // 禁止工作(状态)
#define MC_STA_EN_TIME 0x0003 // 允许工作(时间)
#define MC_STA_DIS_TIME 0x0004 // 禁止工作(时间)
#define MC_CLEAN_COUNT 0x0005 // 产量计数清零
#define MC_STA_MANUAL 0x0006 // 手动工作状态
#define MC_STA_AUTO 0x0007 // 自动工作状态
#define MC_FILE_SWITCH 0x0008 // 文件切换
#define MC_INVALID_FILE 0x0009 // 文件失效命令
#define MC_CLEAN_PARA_REF 0x000A // 清除刷新参数标志
#define MC_SET_TO_NORMAL 0x000B // 设置为正常工作状态
#define MC_SET_TO_SIMULATE 0x000C // 设置为模拟工作状态
#define MC_SET_ERR_STA 0x000D // 设置为错误状态(报错)
#define MC_SEL_WORK_HEADS 0x000E // 设置工作机头
#define MC_CLEAN_FIDX 0x000F // 索引复位
#define MC_CLEAN_BOBBIN 0x0010 // 底线计数复位
#define MC_SET_ENTER_SCAN_SENSOR 0x0011 // 设置为 进入 扫描传感器状态
#define MC_SET_EXIT_SCAN_SENSOR 0x0012 // 设置为 退出 扫描传感器状态
#define MC_SET_ENTER_TEST_OUTPUT 0x0013 // 设置为 进入 测试输出状态
#define MC_SET_EXIT_TEST_OUTPUT 0x0014 // 设置为 退出 测试输出状态
#define MC_CHANGE_HOOK_START 0x0020 // 进入换梭状态
#define MC_CHANGE_HOOK_END 0x0021 // 退出换梭状态
#define MC_STA_EXIT_TRA 0x0023 // 退出遍历状态
#define MC_STA_EXIT_THREADBK 0x0024 // 退出断线测试
#define MC_INVALID_FILEBLOCK 0x0026 // 文件数据块失效命令
#endif
//------------------------------------------------------------------------
// 设置机器参数
#ifdef UCMD_SET_MC_PARAS
#define SEW_MCPARA_MACH 0x00 // 机器配置参数
#define SEW_MCPARA_WORK 0x01 // 机器工作参数
#define EMB_MVSTANG_PARA 0x06 // 起始动框角度
#define EMB_PATCH_DATA_IDX 0x09 // 贴布绣数据,按针
#endif
//------------------------------------------------------------------------
// 读取内存数据
// 设置内存数据
#ifdef UCMD_GET_MEM_DATA
#ifdef UCMD_SET_MEM_DATA
// 对象 (作为基地址,最高字节)
#define MEM_INSRAM 0x01 // 片内存储器(只读)
#define INSRAM_ADDR_MIN 0
#define INSRAM_ADDR_MAX (0xFFFF)
#define MEM_EXSRAM 0x02 // 片外存储器(读写)
#define EXSRAM_ADDR_MIN 0
#define EXSRAM_ADDR_MAX ((512*1024+512*1024)-1)
#define MEM_NORFLASH 0x03 // 片外 norflash (读写)
#define NORFLASH_ADDR_MIN 0
#define NORFLASH_ADDR_MAX ((512*1024+512*1024)-1)
#define MEM_FRAM 0x04 // FRAM 存储器
#define FRAM_ADDR_MIN 0
#define FRAM_ADDR_MAX ((8*1024)-1)
#define MEM_GPIO 0x05 // IO 端口
#define GPIO_ADDR_MIN 0
#define GPIO_ADDR_MAX ((1*1024)-1)
#define MEM_MOTOS 0x06 // 电机控制
#define MOTOS_ADDR_MIN 0
#define MOTOS_ADDR_MAX (0x5F)
// 0x00--0x03 电机1位置
// 0x10--0x13 电机2位置
// 0x20--0x23 电机3位置
// 0x30--0x33 电机4位置
// 0x40--0x43 电机5位置
// 0x50--0x53 电机6位置
// 设置到某个位置,电机转动到这个位置,读取位置到达设定位置,运动结束
#define MEM_ECDS 0x07 // 编码器(只读)
#define ECDS_ADDR_MIN 0
#define ECDS_ADDR_MAX (0x2F)
// 0x00--0x03 编码器1计数
// 0x10--0x13 编码器2计数
// 0x20--0x23 MP计数
#define MEM_ADC 0x08 // AD值只读
#define ADC_ADDR_MIN 0
#define ADC_ADDR_MAX (0x1F)
// 0x00--0x01 ADC1值
// 0x10--0x11 ADC2值
#define MEM_COMM 0x09 // 通讯端口
#define COMM_ADDR_MIN 0
#define COMM_ADDR_MAX (0x1F)
// 0x00 -- 0x0F 232 串口1发送BUF
// 0x10 -- 0x1F 232 串口2发送BUF
// 0x20 -- 0x2F 485 串口3发送BUF
// 0x70 -- 0x7F CAN发送BUF
// 0x100 -- 0x10F 232 串口1接收BUF
// 0x110 -- 0x11F 232 串口2接收BUF
// 0x120 -- 0x12F 485 串口3接收BUF
// 0x170 -- 0x17F CAN接收BUF
#endif
#endif
//------------------------------------------------------------------------
// 设置文件参数
#ifdef UCMD_SET_FILE_PARAS
#endif
//------------------------------------------------------------------------
// 设置执行进度
#ifdef UCMD_SET_EXEC_PROGRESS
#endif
//------------------------------------------------------------------------
// 设置分期密码
#ifdef UCMD_SET_INSTALLMENT
#endif
//------------------------------------------------------------------------
// 设置经过时间
#ifdef UCMD_SET_ELAPSED_TIME
#endif
//------------------------------------------------------------------------
// 手动控制命令
#ifdef UCMD_ACT_BYHAND
/*
|-------------------------------------------------------------------|
|-------------------------------------------------------------------|
| B6 B7 | B8 B9 | B10 B11 | B12 B13 |
|-------------------------------------------------------------------|
| 控制动作代码 | 控制参数1 | 控制参数2 | 控制参数3 |
|-------------------------------------------------------------------|
| | | | |
| | | | |
| | | | |
|-------------------------------------------------------------------|
|-------------------------------------------------------------------|
*/
//--------------------------------------------------
// 控制动作定义
#define MOTO_TO_ZERO 0x0001 // 电机归零
#define MOVE_BY_HAND 0x0002 // 电机手动移动
#define OUTPUT_CTRL 0x0003 // 输出控制
#define MOTO_EN_CTRL 0x0004 // 电机使能控制
#define MANUAL_ACTION 0x0005 // 手动控制功能
#define TEST_THREADBK 0x0007 // 测试断线检测
#define SHAKE_FRAME_TEST 0x0008 // 抖框测试
// 参数1要看具体应用
// 手动移动的 控制参数2 定义
#define MT_MOVE_DIR_STOP 0x0000 // 停止转动
#define MT_MOVE_DIR_POSI 0x0001 // 正向移动x向右y向上升降向上
#define MT_MOVE_DIR_NEGA 0x0002 // 反向移动x向左y向下升降向下
// 手动移动的 控制参数3 定义
// 速度值rpm 或 mmps
// 电机使能的 控制参数2 定义
#define MT_SERVO_ON 0x0001 // 电机使能开
#define MT_SERVO_OFF 0x0002 // 电机使能关
// 手动控制功能的具体代码要看具体应用
#endif
//------------------------------------------------------------------------
// 机器工作命令
#ifdef UCMD_MC_WORK
/*
|-------------------------------------------------------|
|-------------------------------------------------------|
| B6 B7 | B8 B9 B10 B11 | B12 B13 |
|-------------------------------------------------------|
| 工作控制功能 | 控制参数1 | 控制参数2 |
|-------------------------------------------------------|
| | | |
| | | |
| | | |
|-------------------------------------------------------|
|-------------------------------------------------------|
*/
// 工作控制功能
#define WORK_START 0x0001 // 启动工作
#define WORK_PAUSE 0x0002 // 暂停工作
#define WORK_FINISH 0x0003 // 结束工作(流程复位)
#define WORK_FIND_ZERO 0x0004 // 自动找零
#define WORK_GOTO_START 0x0005 // 回起点
#define WORK_GOTO_ANCHOR 0x0006 // 回定位点
#define WORK_GOTO_OFFSET 0x0007 // 回偏移点
#define WORK_CHECK_FRAME 0x0008 // 边框检查
#define WORK_CUT_FRAME 0x0009 // 边框切割
#define WORK_CUT_XLINE 0x000A // 手动断布
#define WORK_FAST_JUMP 0x000B // 快速进退
#define WORK_GOTO_WKPOS 0x000C // 回工作点
#define WORK_GOTO_FEEDT 0x000D // 回穿线点
#define WORK_GOTO_CHGBO 0x000E // 回换梭位
#define WORK_FEED_MOVE 0x000F // 进料退料
#define WORK_DRAW_LATTICE 0x0010 // 画格子图
#define WORK_GOTO_FINISH 0x0011 // 回结束点
#define WORK_GOTO_ZERO 0x0012 // 回零点(回绣框原点)
#define WORK_RPM_CHG 0x0020 // 速度改变
#define WORK_FILE_IDX_CHG 0x0021 // 文件序号改变
#define WORK_SIMULATION_FRAME 0x0026 // 空走边框
#define WORK_GOTO_FEED 0x0027 // 回上料点
#define WORK_SET_OFFSET 0x0028 // 定偏移点
#define WORK_SET_FEED 0x0029 // 定上料点
#define WORK_ACT_OIL 0x0050 // 工作中加油
// 启动工作参数
#define WKMD_ONCE 0
#define WKMD_NORMAL 1 // 正常
#define WKMD_SIMULATION 2 // 模拟(空走)
#define WKMD_BACKWORD 3 // 回退
#endif
#ifdef UCMD_MOVE_TO
/*
|-------------------------------------------------------|
|-------------------------------------------------------|
| B6 B7 B8 B9 | B10 B11 B12 B13 |
|-------------------------------------------------------|
| x坐标 | Y坐标 |
|-------------------------------------------------------|
| | |
| | |
| | |
|-------------------------------------------------------|
|-------------------------------------------------------|
*/
#endif
//------------------------------------------------------------------------
// 启动文件传输
#ifdef UCMD_START_TRANS
#endif
//------------------------------------------------------------------------
// 文件传输命令
#ifdef UCMD_TRANS_FILE_DATA
#endif
//------------------------------------------------------------------------
#ifdef UCMD_INVALID_FILE // 文件失效命令
#endif
//------------------------------------------------------------------------
#ifdef UCMD_SET_FILE_LIST // 设置文件列表
#endif
//------------------------------------------------------------------------
#ifdef UCMD_TRA_BOARD
#endif
//------------------------------------------------------------------------
// 下位机升级
#ifdef UCMD_MC_UPDATE
#endif
//------------------------------------------------------------------------
// 发送传感信号
// u8 sendSensors.exData[MAX_EXDP_LEN]
#ifdef DCMD_SEND_SENSORS
#define DSS_DEF_IDX 0x03FE // 未使用接口定义地址
#define DSS_DEF_BIT 0x01 // 未使用接口定义位
//----------------------------------------------------------------
// 位:
#define DSS_BIT1 0x01 // idx1
#define DSS_BIT2 0x02 // idx2
#define DSS_BIT3 0x04 // idx3
#define DSS_BIT4 0x08 // idx4
#define DSS_BIT5 0x10 // idx5
#define DSS_BIT6 0x20 // idx6
#define DSS_BIT7 0x40 // idx7
#define DSS_BIT8 0x80 // idx8
// 机头1~16位:
#define DSS_HEAD_01 DSS_BIT1 // idx1
#define DSS_HEAD_02 DSS_BIT2 // idx2
#define DSS_HEAD_03 DSS_BIT3 // idx3
#define DSS_HEAD_04 DSS_BIT4 // idx4
#define DSS_HEAD_05 DSS_BIT5 // idx5
#define DSS_HEAD_06 DSS_BIT6 // idx6
#define DSS_HEAD_07 DSS_BIT7 // idx7
#define DSS_HEAD_08 DSS_BIT8 // idx8
#define DSS_HEAD_09 DSS_BIT1 // idx1
#define DSS_HEAD_10 DSS_BIT2 // idx2
#define DSS_HEAD_11 DSS_BIT3 // idx3
#define DSS_HEAD_12 DSS_BIT4 // idx4
#define DSS_HEAD_13 DSS_BIT5 // idx5
#define DSS_HEAD_14 DSS_BIT6 // idx6
#define DSS_HEAD_15 DSS_BIT7 // idx7
#define DSS_HEAD_16 DSS_BIT8 // idx8
//----------------------------------------------------------------
// 1.基础信号 0x0000~0x001F
#if (1)
//--------------------------------
#define DSS1_B_START_BT 0x0000 // 启动按钮(1~8)
#define DSS1_B_PAUSE_BT 0x0001 // 暂停按钮(1~8)
#define DSS1_B_JOG_BT 0x0002 // 点动按钮(1~8)
#define DSS1_B_FRMOP_BT 0x0003 // 开框按钮(1~8)
#define DSS1_B_AUTO_BT 0x0004 // 手动按钮(1~8)
#define DSS1_B_READY_BT 0x0005 // 就绪按钮(1~8)
#define DSS1_B_KEY_BT 0x0006 // 钥匙按钮(1~8)
#define DSS1_B_AIR_TEST 0x0007 // 气压检测(1~8)
#define DSS1_B_SAFE_TEST 0x0008 // 安全输入(1~8)
#define DSS1_B_TPLPOS 0x0009 // 模板到位(1~8)
#define DSS1_B_MOTO_ALM1 0x000A // 电机报警(1~8)
#define DSS1_B_MOTO_ALM2 0x000B // 电机报警(9~16)
#define DSS1_B_MOTO_ALM3 0x000C // 电机报警(17~24)
#define DSS1_B_MOTO_ALM4 0x000D // 电机报警(25~32)
#define DSS1_B_MOTO_ALM5 0x000E // 电机报警(33~40)
#define DSS1_B_MOTO_ALM6 0x000F // 电机报警(41~48)
#define DSS1_B_BASE_TEST 0x0010 // 安全输入(1~8)
#define DSS1_BASE_POW DSS_BIT1 // 加电信号
#define DSS1_B_OIL_BT 0x0011 // 加油按钮(1~8)
// 0x0011 ~ 0x001F // 基础信号 预留
#endif
//----------------------------------------------------------------
// 2.框位(轴)置信号 0x0020~0x007F
#if (1)
//--------------------------------
#define DSS2_F1_ZERO_POS 0x0020 // 框架(轴)1 零位
#define DSS2_F1_SLOW_POS 0x0021 // 框架(轴)1 降速
#define DSS2_F1_NLIMT_POS 0x0022 // 框架(轴)1 限位-
#define DSS2_F1_PLIMT_POS 0x0023 // 框架(轴)1 限位+
#define DSS2_F1_X DSS_BIT1 // X (主框架X)
#define DSS2_F1_Y DSS_BIT2 // Y (主框架Y)
#define DSS2_F1_Y2 DSS_BIT3 // Y (主框架Y2)
#define DSS2_F1_X2 DSS_BIT4 // X (主框架X2)
#define DSS2_F2_ZERO_POS 0x0024 // 框架(轴)2 零位
#define DSS2_F2_SLOW_POS 0x0025 // 框架(轴)2 降速
#define DSS2_F2_NLIMT_POS 0x0026 // 框架(轴)2 限位-
#define DSS2_F2_PLIMT_POS 0x0027 // 框架(轴)2 限位+
#define DSS2_F2_SP0 DSS_BIT1 // 备用2
#define DSS2_F2_SP1 DSS_BIT2 // 备用2
#define DSS2_F2_SP2 DSS_BIT3 // 备用2
#define DSS2_F2_SP3 DSS_BIT4 // 备用2
#define DSS2_F2_SP4 DSS_BIT5 // 备用2
#define DSS2_F2_SP5 DSS_BIT6 // 备用2
#define DSS2_F2_SP6 DSS_BIT7 // 备用2
#define DSS2_F2_SP7 DSS_BIT8 // 备用2
#define DSS2_F3_ZERO_POS 0x0028 // 框架(轴)3 零位
#define DSS2_F3_SLOW_POS 0x0029 // 框架(轴)3 降速
#define DSS2_F3_NLIMT_POS 0x002A // 框架(轴)3 限位-
#define DSS2_F3_PLIMT_POS 0x002B // 框架(轴)3 限位+
#define DSS2_F3_SP0 DSS_BIT1 // 备用3
#define DSS2_F3_SP1 DSS_BIT2 // 备用3
#define DSS2_F3_SP2 DSS_BIT3 // 备用3
#define DSS2_F3_SP3 DSS_BIT4 // 备用3
#define DSS2_F3_SP4 DSS_BIT5 // 备用3
#define DSS2_F3_SP5 DSS_BIT6 // 备用3
#define DSS2_F3_SP6 DSS_BIT7 // 备用3
#define DSS2_F3_SP7 DSS_BIT8 // 备用3
#define DSS2_F4_ZERO_POS 0x002C // 框架(轴)4 零位
#define DSS2_F4_SLOW_POS 0x002D // 框架(轴)4 降速
#define DSS2_F4_NLIMT_POS 0x002E // 框架(轴)4 限位-
#define DSS2_F4_PLIMT_POS 0x002F // 框架(轴)4 限位+
#define DSS2_F4_SP0 DSS_BIT1 // 备用4
#define DSS2_F4_SP1 DSS_BIT2 // 备用4
#define DSS2_F4_SP2 DSS_BIT3 // 备用4
#define DSS2_F4_SP3 DSS_BIT4 // 备用4
#define DSS2_F4_SP4 DSS_BIT5 // 备用4
#define DSS2_F4_SP5 DSS_BIT6 // 备用4
#define DSS2_F4_SP6 DSS_BIT7 // 备用4
#define DSS2_F4_SP7 DSS_BIT8 // 备用4
//--------------------------------
#define DSS2_RU_ZERO1_POS 0x0030 // 缝纫上旋转零位(1~8)
#define DSS2_RU_ZERO2_POS 0x0031 // 缝纫上旋转零位(9~16)
#define DSS2_RU_NLIMT1_POS 0x0032 // 缝纫上旋转限位-(1~8)
#define DSS2_RU_NLIMT2_POS 0x0033 // 缝纫上旋转限位-(9~16)
#define DSS2_RU_PLIMT1_POS 0x0034 // 缝纫上旋转限位+(1~8)
#define DSS2_RU_PLIMT2_POS 0x0035 // 缝纫上旋转限位+(9~16)
#define DSS2_RD_ZERO1_POS 0x0036 // 缝纫下旋转零位(1~8)
#define DSS2_RD_ZERO2_POS 0x0037 // 缝纫下旋转零位(9~16)
#define DSS2_RD_NLIMT1_POS 0x0038 // 缝纫下旋转限位-(1~8)
#define DSS2_RD_NLIMT2_POS 0x0039 // 缝纫下旋转限位-(9~16)
#define DSS2_RD_PLIMT1_POS 0x003A // 缝纫下旋转限位+(1~8)
#define DSS2_RD_PLIMT2_POS 0x003B // 缝纫下旋转限位+(9~16)
#define DSS2_CT_ZERO1_POS 0x003C // 裁刀旋转零位(1~8)
#define DSS2_CT_ZERO2_POS 0x003D // 裁刀旋转零位(9~16)
#define DSS2_PU_SP1_POS 0x003E // 冲孔旋转零位(1~8)
#define DSS2_PU_SP2_POS 0x003F // 冲孔旋转零位(9~16)
//--------------------------------
#define DSS2_UD_SU1_POS 0x0040 // 缝纫机头 高位(1~8)
#define DSS2_UD_SU2_POS 0x0041 // 缝纫机头 高位(9~16)
#define DSS2_UD_SD1_POS 0x0042 // 缝纫机头 低位(1~8)
#define DSS2_UD_SD2_POS 0x0043 // 缝纫机头 低位(9~16)
#define DSS2_UD_PU1_POS 0x0044 // 冲孔机头 高位(1~8)
#define DSS2_UD_PU2_POS 0x0045 // 冲孔机头 高位(9~16)
#define DSS2_UD_PD1_POS 0x0046 // 冲孔机头 低位(1~8)
#define DSS2_UD_PD2_POS 0x0047 // 冲孔机头 低位(9~16)
#define DSS2_UD_CU1_POS 0x0048 // 裁切机头 高位(1~8)
#define DSS2_UD_CU2_POS 0x0049 // 裁切机头 高位(9~16)
#define DSS2_UD_CD1_POS 0x004A // 裁切机头 低位(1~8)
#define DSS2_UD_CD2_POS 0x004B // 裁切机头 低位(9~16)
#define DSS2_UD_IU1_POS 0x004C // 画笔机头 高位(1~8)
#define DSS2_UD_IU2_POS 0x004D // 画笔机头 高位(9~16)
#define DSS2_UD_ID1_POS 0x004E // 画笔机头 低位(1~8)
#define DSS2_UD_ID2_POS 0x004F // 画笔机头 低位(9~16)
//--------------------------------
#define DSS2_UD_ZU1_POS 0x0050 // 压枣压头 高位(1~8)
#define DSS2_UD_ZU2_POS 0x0051 // 压枣压头 高位(9~16)
#define DSS2_UD_ZD1_POS 0x0052 // 压枣压头 低位(1~8)
#define DSS2_UD_ZD2_POS 0x0053 // 压枣压头 低位(9~16)
#define DSS2_UD_SP1U1_POS 0x0054 // 升降滑台备用 高位(1~8)
#define DSS2_UD_SP1U2_POS 0x0055 // 升降滑台备用 高位(9~16)
#define DSS2_UD_SP2D1_POS 0x0056 // 升降滑台备用 低位(1~8)
#define DSS2_UD_SP2D2_POS 0x0057 // 升降滑台备用 低位(9~16)
#define DSS2_UD_SP3U1_POS 0x0058 // 升降滑台备用 高位(1~8)
#define DSS2_UD_SP3U2_POS 0x0059 // 升降滑台备用 高位(9~16)
#define DSS2_UD_SP4D1_POS 0x005A // 升降滑台备用 低位(1~8)
#define DSS2_UD_SP4D2_POS 0x005B // 升降滑台备用 低位(9~16)
#define DSS2_UD_SP5U1_POS 0x005C // 升降滑台备用 高位(1~8)
#define DSS2_UD_SP5U2_POS 0x005D // 升降滑台备用 高位(9~16)
#define DSS2_UD_SP6D1_POS 0x005E // 升降滑台备用 低位(1~8)
#define DSS2_UD_SP6D2_POS 0x005F // 升降滑台备用 低位(9~16)
// 0x0060 ~ 0x007F // 框架位置信号 预留
#endif
//----------------------------------------------------------------
// 3.主轴位置信号 0x080~0x00BF
#if (1)
//--------------------------------
#define DSS3_HS_UZ1_POS 0x0080 // 缝纫针停车位(1~8)
#define DSS3_HS_UZ2_POS 0x0081 // 缝纫针停车位(9~16)
#define DSS3_HS_UG1_POS 0x0082 // 缝纫针勾线位(1~8)
#define DSS3_HS_UG2_POS 0x0083 // 缝纫针勾线位(9~16)
#define DSS3_HS_UU1_POS 0x0084 // 缝纫针上位(1~8)
#define DSS3_HS_UU2_POS 0x0085 // 缝纫针上位(9~16)
#define DSS3_HS_UL1_POS 0x0086 // 缝纫离合对位(1~8)
#define DSS3_HS_UL2_POS 0x0087 // 缝纫离合对位(9~16)
#define DSS3_HS_DZ1_POS 0x0088 // 缝纫梭停车位(1~8)
#define DSS3_HS_DZ2_POS 0x0089 // 缝纫梭停车位(9~16)
#define DSS3_HS_DG1_POS 0x008A // 缝纫梭勾线位(1~8)
#define DSS3_HS_DG2_POS 0x008B // 缝纫梭勾线位(9~16)
#define DSS3_HS_SP1_POS 0x008C // 缝纫主轴预留(1~8)
#define DSS3_HS_SP2_POS 0x008D // 缝纫主轴预留(9~16)
#define DSS3_HS_SP3_POS 0x008E // 缝纫主轴预留(1~8)
#define DSS3_HS_SP4_POS 0x008F // 缝纫主轴预留(9~16)
//--------------------------------
#define DSS3_HE_PZ1_POS 0x0090 // 冲孔主轴零位(1~8)
#define DSS3_HE_PZ2_POS 0x0091 // 冲孔主轴零位(9~16)
#define DSS3_HE_CZ1_POS 0x0092 // 裁刀主轴零位(1~8)
#define DSS3_HE_CZ2_POS 0x0093 // 裁刀主轴零位(9~16)
#define DSS3_HE_TNZ1_POS 0x0094 // 毛巾主轴针零位(1~8)
#define DSS3_HE_TNZ2_POS 0x0095 // 毛巾主轴针零位(9~16)
#define DSS3_HE_TSZ1_POS 0x0096 // 毛巾主轴梭零位(1~8)
#define DSS3_HE_TSZ2_POS 0x0097 // 毛巾主轴梭零位(9~16)
#define DSS3_HE_EZ1_POS 0x0098 // 绣花主轴零位(1~8)
#define DSS3_HE_EZ2_POS 0x0099 // 绣花主轴零位(9~16)
#define DSS3_HE_SP1_POS 0x009A // 非缝纫主轴预留(1~8)
#define DSS3_HE_SP2_POS 0x009B // 非缝纫主轴预留(9~16)
#define DSS3_HE_EH1_POS 0x009C // 绣花梭主轴零位(1~8)
#define DSS3_HE_EH2_POS 0x009D // 绣花梭主轴零位(9~16)
#define DSS3_HE_SP5_POS 0x009E // 非缝纫主轴预留(1~8)
#define DSS3_HE_SP6_POS 0x009F // 非缝纫主轴预留(9~16)
#define DSS3_HE_PMP1_POS 0x00A0 // 冲孔主轴位置(1~8)
#define DSS3_HE_PMP2_POS 0x00A1 // 冲孔主轴位置(9~16)
// 0x00A0 ~ 0x00BF // 主轴位置信号 预留
#endif
//----------------------------------------------------------------
// 4.机头按钮(开关)信号 0x00C0~0x00FF
#if (1)
//--------------------------------
#define DSS4_K_SU1_BT 0x00C0 // 缝纫升降按钮(1~8)
#define DSS4_K_SU2_BT 0x00C1 // 缝纫升降按钮(9~16)
#define DSS4_K_KU1_BT 0x00C2 // 冲孔升降按钮(1~8)
#define DSS4_K_KU2_BT 0x00C3 // 冲孔升降按钮(9~16)
#define DSS4_K_CU1_BT 0x00C4 // 裁刀升降按钮(1~8)
#define DSS4_K_CU2_BT 0x00C5 // 裁刀升降按钮(9~16)
#define DSS4_K_PU1_BT 0x00C6 // 画笔升降按钮(1~8)
#define DSS4_K_PU2_BT 0x00C7 // 画笔升降按钮(9~16)
#define DSS4_K_ZU1_BT 0x00C8 // 压枣升降按钮(1~8)
#define DSS4_K_ZU2_BT 0x00C9 // 压枣升降按钮(9~16)
#define DSS4_K_SL1_BT 0x00CA // 缝纫锁头按钮(1~8)
#define DSS4_K_SL2_BT 0x00CB // 缝纫锁头按钮(9~16)
#define DSS4_K_PL1_BT 0x00CC // 冲孔锁头按钮(1~8)
#define DSS4_K_PL2_BT 0x00CD // 冲孔锁头按钮(9~16)
#define DSS4_K_SR1_BT 0x00CE // 缝纫补缝按钮(1~8)
#define DSS4_K_SR2_BT 0x00CF // 缝纫补缝按钮(9~16)
#define DSS4_K_BLT_BT 0x00D0 // 传送带按钮
#define DSS4_K_BLT1 DSS_BIT1 // 传送带前进按钮
#define DSS4_K_BLT2 DSS_BIT2 // 传送带后退按钮
#define DSS4_K_BLT3 DSS_BIT3 // 上料传送带前进按钮
#define DSS4_K_BLT4 DSS_BIT4 // 上料传送带后退按钮
#define DSS4_K_BLT5 DSS_BIT5 // 缝纫传送带前进按钮
#define DSS4_K_BLT6 DSS_BIT6 // 缝纫传送带后退按钮
#define DSS4_K_BLT7 DSS_BIT7 // 备用
#define DSS4_K_BLT8 DSS_BIT8 // 备用
// 0x00D0 ~ 0x00FF // 机头按钮(开关)信号 预留
#endif
//----------------------------------------------------------------
// 5.机头检测信号 0x0100~0x01FF
#if (1)
//--------------------------------
// 5.1 绣花机 0x0100~0x016F
#if (1)
// 0x0100 ~ 0x016F // 绣花机机头检测信号 预留
#define DSS5_ST0_DCZ1 0x0100 // 绣花下剪线回位(1~8)
#define DSS5_ST0_DCZ2 0x0101 // 绣花下剪线回位(9~16)
#define DSS5_ST0_MAZP 0x0102 // M轴零位
#define DSS5_MA_CHENILLE DSS_BIT1 // 毛巾M轴零位
#define DSS5_MA_RING DSS_BIT2 // 毛巾打环零位
#define DSS5_MA_COIL DSS_BIT3 // 缠绕M轴零位
#define DSS5_MA_CAP DSS_BIT4 // 帽框到位
#define DSS5_ST0_DEVS 0x0103 // 装置信号
#define DSS5_ACS_ALM DSS_BIT1 // 自动换梭报警
#define DSS5_TR_ALM DSS_BIT2 // 跟踪绳绣报警
#define DSS5_ST0_QUI 0x0104 // 勾换零位
#define DSS5_SZ_HOOK DSS_BIT1 // 勾刀回位
#define DSS5_SZ_COLOR DSS_BIT2 // 换色零位
#define DSS5_SZ_CPOS1 DSS_BIT3 // 换色位置1
#define DSS5_SZ_CPOS2 DSS_BIT4 // 换色位置2
#define DSS5_SZ_CPOS3 DSS_BIT5 // 换色位置3
#define DSS5_SZ_CPOS4 DSS_BIT6 // 换色位置4
#define DSS5_SZ_FOOT DSS_BIT7 // 脚踏开关
#endif
//--------------------------------
// 5.2 缝纫机 0x0170~0x01AF
#if (1)
//--------------------------------
#define DSS5_ST1_BKU1 0x0170 // 缝纫面线断线检测(1~8)
#define DSS5_ST1_BKU2 0x0171 // 缝纫面线断线检测(9~16)
#define DSS5_ST1_BKD1 0x0172 // 缝纫底线断线检测(1~8)
#define DSS5_ST1_BKD2 0x0173 // 缝纫底线断线检测(9~16)
#define DSS5_ST1_DCZ1 0x0174 // 缝纫下剪线回位(1~8)
#define DSS5_ST1_DCZ2 0x0175 // 缝纫下剪线回位(9~16)
#define DSS5_ST1_FTZ1 0x0176 // 缝纫压脚提升零位(1~8)
#define DSS5_ST1_FTZ2 0x0177 // 缝纫压脚提升零位(9~16)
#define DSS5_ST1_JXH1 0x0178 // 缝纫夹线高位(1~8)
#define DSS5_ST1_JXH2 0x0179 // 缝纫夹线高位(9~16)
#define DSS5_ST1_JXL1 0x017A // 缝纫夹线低位(1~8)
#define DSS5_ST1_JXL2 0x017B // 缝纫夹线低位(9~16)
#define DSS5_ST1_JXO1 0x017C // 缝纫夹线开位(1~8)
#define DSS5_ST1_JXO2 0x017D // 缝纫夹线开位(9~16)
#define DSS5_ST1_JXC1 0x017E // 缝纫夹线合位(1~8)
#define DSS5_ST1_JXC2 0x017F // 缝纫夹线合位(9~16)
// 0x0180 ~ 0x01AF // 缝纫机机头检测信号 预留
#define DSS5_ST1_DCO1 0x0180 // 缝纫下剪线开位(1~8)
#define DSS5_ST1_DCO2 0x0181 // 缝纫下剪线开位(9~16)
#define DSS5_ST1_NLC1 0x0182 // 针板盖检测(1~8)
#define DSS5_ST1_NLC2 0x0183 // 针板盖检测(9~16)
#define DSS5_ST1_SNZ1 0x0184 // 摆针零位(1~8)
#define DSS5_ST1_SNZ2 0x0185 // 摆针零位(9~16)
#endif
// 0x0180 ~ 0x01AF // 缝纫机机头检测信号 预留
//--------------------------------
// 5.3 激光/裁床/铣切 0x01B0~0x01FF
#if (1)
//--------------------------------
// 0x01B0 ~ 0x01FF // 非缝绣机机头检测信号 预留
#endif
#endif
//----------------------------------------------------------------
// 6.通用检测信号(按机型划分) 0x0200~0x02FF
#if (1)
//--------------------------------
// 6.4 其他机型 0x02B0~0x02FF
#if (1)
//--------------------------------
// 0x02B0 ~ 0x02FF // 其他机型检测信号 预留
#define DSS6_ADDR_02B0 0x02B0 // 自动换梭信号
// BIT1 : 梭在位检测
// BIT2 : 扣线伸出位
// BIT3 : 换梭旋转伸出位
// BIT4 : 换梭旋转收回位
// BIT5 : 换梭推动伸出位
// BIT6 : 换梭推动收回位
// BIT7 : 换梭摆动伸出位
// BIT8 : 换梭摆动收回位
#define DSS6_ADDR_02B1 0x02B1 // 自动对边信号
// BIT1 : 对边1左限位
// BIT2 : 对边1左位置
// BIT3 : 对边1右位置
// BIT4 : 对边1右限位
// BIT5 : 对边2左限位
// BIT6 : 对边2左位置
// BIT7 : 对边2右位置
// BIT8 : 对边2右限位
#define DSS6_ADDR_02B2 0x02B2 // 自动上料架信号
// BIT1 : 上料架1缺料
// BIT2 : 上料架1满料
// BIT3 : 上料架1启动
// BIT4 : 预留4
// BIT5 : 上料架2缺料
// BIT6 : 上料架2满料
// BIT7 : 上料架2启动
// BIT8 : 预留8
#define DSS6_ADDR_02B3 0x02B3 // 主动送料信号
// BIT1 : 送料1启动
// BIT2 : 送料1停止
// BIT3 : 送料2启动
// BIT4 : 送料2停止
// BIT5 : 送料3启动
// BIT6 : 送料3停止
// BIT7 : 送料4启动
// BIT8 : 送料4停止
#define DSS6_ADDR_02B8 0x02B8 // 床笠裙边机信号
// BIT1 : 上机头零位
// BIT2 : 下机头零位
// BIT3 : 上机头断线检测
// BIT4 : 下机头断线检测
// BIT5 : 罗拉电机控制按钮
// BIT6 : 缺料检测
// BIT7 :
// BIT8 :
#define DSS6_ADDR_02B9 0x02B9 // 床笠裙边机信号
// BIT1 : 上料对边左限位
// BIT2 : 上料对边右限位
// BIT3 : 上料对边左检测
// BIT4 : 上料对边右检测
// BIT5 : 上机头对边左限位
// BIT6 : 上机头对边右限位
// BIT7 : 上机头对边左检测
// BIT8 : 上机头对边右检测
#endif
#endif
//----------------------------------------------------------------
// 7.个例检测信号(按添加日期划分) 0x0300~0x03FF
#if (1)
//--------------------------------
// 0x0300 ~ 0x030F
//--------------------------------
// 0x03D0 ~ 0x03DF
#if (1)
#endif
//--------------------------------
// 0x03E0 ~ 0x03EF
#if (1)
#endif
//--------------------------------
// 0x03F0 ~ 0x03FE
#if (1)
#endif
#endif
#endif //#ifdef DCMD_SEND_SENSORS // 发送传感信号
//------------------------------------------------------------------------
// 命令结构定义
typedef union
{
DataPacket packet;
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 toggle;
u8 rev[6];
u16 crc;
} __attribute__ ((packed)) getMcInfo; // 读取机器信息
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 toggle;
u8 rev[6];
u16 crc;
} __attribute__ ((packed)) getMcStatus; // 读取机器状态
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 paraType;
u16 paraId; // 0, 所有参数; 1--256, 对应的参数号
u8 rev[4];
u16 crc;
} __attribute__ ((packed)) getMcParas; // 读取机器参数
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u32 begAddr;
u16 rdSize;
u8 rev[2];
u16 crc;
} __attribute__ ((packed)) getMemData; // 读取内存数据
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 backType;
u8 rev[6];
u16 crc;
} __attribute__ ((packed)) getSensors; // 读取传感信号
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u8 fileType;
u8 fileIdx;
u8 rev[6];
u16 crc;
} __attribute__ ((packed)) getFileInfo; // 读取文件信息
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 fileId;
u8 rev[6];
u16 crc;
} __attribute__ ((packed)) getTransResult; // 读取传输结果
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u16 cfgItem;
u8 rev[2];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) setMcConfig; // 设置机器配置
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 staCode;
u16 para;
u8 rev[4];
u16 crc;
} __attribute__ ((packed)) setMcStatus; // 设置机器状态
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u16 paraType;
u16 paraId; // 0, 所有参数; 1--256, 对应的参数号
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) setParas; // 设置下位机参数
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u32 begAddr;
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) setMemData; // 设置内存数据
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 rev[4];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) setFileParas; // 设置文件参数
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 exDataType; // 扩展数据类型
u8 exDataIdx;
u8 rev[2];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) setFileExData; // 设置文件扩展数据
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u8 id;
u8 nodetype;
u8 rev[6];
u16 crc;
} __attribute__ ((packed)) setDefParas; // 设置默认参数
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 fileType;
u8 fileIdx;
u16 fileId;
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) setExecProgress; // 设置进度命令
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 rev[4];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) setInstallment; // 设置分期密码
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u8 type;
u32 time; // 单位秒
u8 rev[3];
u16 crc;
} __attribute__ ((packed)) setElapsedTime; // UCMD_SET_ELAPSED_TIME 设置经过的时间
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 actCode;
u16 para1;
u16 para2;
u16 para3;
u16 crc;
} __attribute__ ((packed)) actByhand; // 手动动作功能
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 workCode;
u32 para1;
u16 para2;
u16 crc;
} __attribute__ ((packed)) mcWork; // 机器工作命令
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
s32 posx;
s32 posy;
u16 crc;
} __attribute__ ((packed)) moveFrameTo; // 移动框架到位置命令
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 fileType;
u8 fileIdx;
u16 fileId;
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) startTrans; // 启动文件传输
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u16 pktIdx;
u16 fileId;
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) transFileData; // 文件数据传输
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u32 fileIdxMap;
u16 crc;
} __attribute__ ((packed)) setFilesList; // 设置文件列表
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 upObj;
u16 upFileID;
u8 rev[4];
u16 crc;
} __attribute__ ((packed)) mcUpdate; // 系统升级
//----------------------------------
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u8 fileType;
u8 fileIdx;
u16 fileId;
u32 datBlockIdx; // 数据包索引每个包1024字节)
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) requestDatBlock; // 请求文件数据
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u16 toggle;
u8 rev[2];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) sendMcInfo; // 发送机器信息
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u16 toggle;
u8 rev[2];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) sendMcStatus; // 发送机器状态
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u16 paraType;
u16 paraId; // 0, 所有参数; 1--256, 对应的参数号
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) sendMcParas; // 发送机器参数
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u32 begAddr;
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) sendMemData; // 发送内存数据
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 rev[4];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) sendSensors; // 发送传感信号
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 fileType;
u8 fileIdx;
u8 rev[2];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) sendFileInfo; // 发送文件信息
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u16 fileId;
u8 active;
u8 result;
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) sendTransResult; // 发送传输结果
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 rev[4];
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) sendDebugInfo; // 发送调试信息
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u8 protocolType; // 协议类型
u8 nodeType; // 遍历节点类型
u8 traNum; // 遍历个数
u8 nodeId; // 遍历起始节点ID
u8 rev[4];
u16 crc;
} __attribute__ ((packed)) traverse; // 遍历命令
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u8 rev[8];
u16 crc;
} __attribute__ ((packed)) rdBoardVer; // 读取外围板程序版本
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u8 protocolType; // 协议类型
u8 nodeId; // 节点ID
u8 nodetype; // 节点类型
u8 rev[5];
u16 crc;
} __attribute__ ((packed)) updateBoard; // 升级外围板
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 protocolType; // 协议类型
u8 nodeId; // 节点ID
u8 nodeType; // 节点类型
u8 rev;
u16 crc;
u32 ver[8];
u8 exData[MAX_EXDP_LEN-32];
} __attribute__ ((packed)) sendBoardVer; // 发送外围板程序版本
struct
{
u8 sync[DP_SYNC_LEN];
u16 cmdCode;
u16 exLen;
u16 exCrc;
u8 nodeId;
u8 nodeType;
u8 paraid;
u8 rev;
u16 crc;
u8 exData[MAX_EXDP_LEN];
} __attribute__ ((packed)) boardPara; // 发送外围板非易失性参数
}OperPacket;
//------------------------------------------------------------------------
void InitOperator(void);
void OperatorTask(void);
void OperatorTaskWhenRun(int revfile);
void OperatorTaskWhenBoot(void);
//------------------------------------------------------------------------
int IsNewOperCmd(void);
void SendMcStatus(int force);
void RequestFileData(u8 fileType, u8 fileIdx, u16 fileId, int datblockIdx);
int SendDebugInfo(char * pStr);
int SendFileParas(int beginX, int beginY);
//------------------------------------------------------------------------
#endif