#ifndef __HEADCONTROL_H__ #define __HEADCONTROL_H__ #include "controlbus.h" #if (CONTROL_BUS == COMM_CAN) /* 机头板控制板 */ //------------------------------------------------------------------------------- typedef struct { u8 nodeTye; // 节点类型 u8 nodeId; // 节点ID CtrlBusPacket ctrlCmd; // 发给外围板的控制命令 CtrlBusPacket exbSta; // 外围板返回的状态命令 CtrlBusPacket busSta; // 外围板返回的总线状态命令 CtrlBusPacket traCmd; // 发给外围板的遍历命令 BoardRegVal regVal; // 外围板寄存器值 CtrlBusPacket rdReg; // 读取外围板寄存器值 u8 cmdFlag; // 有新命令标志 N5--接收到控制命令 u8 staFlag; // 有新状态标志 N5--发送BN_CMD_EXSTA u8 refSta; // 刷新状态标志 N5--接收BN_CMD_EXSTA u8 traFlag; // 有新命令标志 N5--接收到遍历命令 u8 busFlag; // 有新状态标志 N5--发送BN_CMD_BUSSTA u8 refVer; u8 verFlag; u8 transFlag; // 数据传输标志 发送数据 u8 exbupdateFlag; // 外围板程序升级标志 u8 refNvPara; // 刷新非易失性参数 u8 nvParaFlag; // 接收到非易失性参数标志 u8 refHeadPara; // 刷新机头参数 u8 headParaFlag; // 接收机头参数标志 }HeadControl; //------------------------------------------------------------------------------- typedef union { u8 buff[CAN_DATA_LEN]; struct { u16 cmd; u8 subcmd; u8 para[5]; } __attribute__ ((packed)) headCtrl; // 机头板控制 struct { u16 cmd; u8 needleNums; // 针杆数量 u8 currentNP; // 当前针位 u8 rev[4]; // 保留 } __attribute__ ((packed)) headPara; // 机头板参数 struct { u16 cmd; // 子命令 u8 parablockID; // 参数块ID u8 paraID; // 参数ID s32 paraval; // 参数值 } __attribute__ ((packed)) headNvPara; // 非易失性参数 struct { u32 staBits; // 状态位 u8 setedNP; // 设置的当前针位 u16 potValue; // 电位器数值(毛巾提升电机) s8 curHoistLevel; // 提升电机当前档位 } __attribute__ ((packed)) headSta; // 状态命令 struct { u32 staBits; // 状态位 u8 setedNP; // 设置的当前针位 s16 footmotopos; // 压脚电机位置 u8 rev; } __attribute__ ((packed)) footHeadSta; // 状态命令(独立压脚) struct { u16 cmd; u8 validFlag; // 有效标志 u16 msang; // 主轴角度 u8 nodetype; // 20220523 为了在原有基础上兼容毛巾控制,同时考虑后续增加的缠绕等.. // 节点类型(平绣机头,毛巾机头,缠绕机头) u8 para[2]; // 参数 } __attribute__ ((packed)) setmsang; // 设置主轴角度 struct { u16 cmd; u8 para[6]; } __attribute__ ((packed)) chenillePara; // 毛巾参数 struct { u16 cmd; u8 subcmd; u8 para1; s32 para2; } __attribute__ ((packed)) coilMCtrl; // 缠绕M轴控制 struct { u16 cmd; u8 currentNP; // 当前针位 u16 mrotCtnAng; // M轴旋转持续角度 u8 rev[3]; // 保留 } __attribute__ ((packed)) coilheadPara; // 缠绕机头板参数 struct { u32 staBits; // 状态位 s16 footmotopos; // 压脚电机位置 s16 swmotopos; // 摆嘴电机位置 } __attribute__ ((packed)) wireHeadSta; // 状态命令(布线机) }HeadCommand; //------------------------------------------------------------------------------- // 控制命令定义 #define CTRL_CMD_EMB_HEAD_CTRL 0x1000 // 平绣机头板控制 #define CTRL_CMD_EMB_HEAD_PARA 0x1001 // 平绣机头板参数设置 #define CTRL_CMD_HEAD_NVPARA 0x1002 // 平绣机头非易失性参数设置 #define CTRL_CMD_CHENILLE_HEAD_CTRL 0x1010 // 毛巾机头板控制 #define CTRL_CMD_CHENILLE_HEAD_PARA 0x1011 // 毛巾机头板参数设置 #define CTRL_CMD_CHENILLE_NVPARA 0x1012 // 毛巾机头非易失性参数设置 #define CTRL_CMD_COIL_HEAD_CTRL 0x1020 // 缠绕机头板控制 #define CTRL_CMD_COIL_HEAD_PARA 0x1021 // 缠绕机头板参数设置 #define CTRL_CMD_COIL_NVPARA 0x1022 // 缠绕机头非易失性参数设置 #define CTRL_CMD_PUNCH_HEAD_CTRL 0x1030 // 冲孔机头板控制 #define CTRL_CMD_PUNCH_HEAD_PARA 0x1031 // 冲孔机头板参数设置 #define CTRL_CMD_PUNCH_NVPARA 0x1032 // 冲孔机头非易失性参数设置 #define CTRL_CMD_HEAD_MSANG 0x1050 // 设置主轴角度 /* #define CTRL_CMD_COLOR_CTRL 0x1100 // 控制命令 #define CTRL_CMD_COLOR_PARA 0x1101 // 参数设置命令 #define CTRL_CMD_COLOR_NVPARA 0x1102 // 非易失性参数设置 */ //------------------------------------------------------------------------------- // 子控制命令定义 #define CTRL_SUBCMD_DISABLE 0x00 // 机头控制功能关闭 #define CTRL_SUBCMD_ENABLE 0x01 // 机头控制功能打开 #define CTRL_SUBCMD_MS_ACTIVE 0x02 // 主轴动态 #define CTRL_SUBCMD_MS_STATIC 0x03 // 主轴静态 #define CTRL_SUBCMD_LOCK_NEEDLE 0x04 // 锁定针杆 #define CTRL_SUBCMD_UNLOCK_NEEDLE 0x05 // 解锁针杆 #define CTRL_SUBCMD_TBD_ENABLE 0x06 // 断检允许 #define CTRL_SUBCMD_TBD_DISABLE 0x07 // 断检禁止 #define CTRL_SUBCMD_TBD_RESET 0x08 // 断检复位 #define CTRL_SUBCMD_TBD_DETE 0x09 // 断线检测测试 #define CTRL_SUBCMD_HOOK_THREAD 0x0A // 面线勾线 #define CTRL_SUBCMD_HOOK_TEST 0x0B // 勾刀测试功能 #define CTRL_SUBCMD_TRD_LOOSE_ON 0x0C // 面线松线开(放松) #define CTRL_SUBCMD_TRD_LOOSE_OFF 0x0D // 面线松线关(夹持) #define CTRL_SUBCMD_MEND_BEGIN 0x0E // 开始补绣 #define CTRL_SUBCMD_MEND_END 0x0F // 结束补绣 #define CTRL_SUBCMD_MEND_PAUSE 0x10 // 暂停补绣 #define CTRL_SUBCMD_BUS_DECT_BEG 0x11 // 总线检测开始(灭灯) #define CTRL_SUBCMD_BUS_DECTING 0x12 // 总线检测中(亮灯) #define CTRL_SUBCMD_BUS_DECT_END 0x13 // 总线检测结束(根据状态进行亮灭灯) #define CTRL_SUBCMD_SCATBEAD_PUSH_ON 0x14 // 散珠出珠 #define CTRL_SUBCMD_SCATBEAD_PUSH_OFF 0x15 // 散珠收珠 #define CTRL_SUBCMD_SCATBEAD_GET 0x16 // 散珠取珠 #define CTRL_SUBCMD_SCATBEAD_CHCO 0x17 // 散珠换色,换到哪个(附带取珠动作) #define CTRL_SUBCMD_SCBE_CHCOZERO 0x18 // 散珠换色找零 #define CTRL_SUBCMD_SCATBEAD_LIFT 0x19 // 散珠升降,1下降, 0升起 #define CTRL_SUBCMD_SCATBEAD_RESET 0x1A // 散珠复位 #define CTRL_SUBCMD_SCATBEAD_STA 0x1B // 散珠状态 #define CTRL_SUBCMD_SCATBEAD_FEED 0x1C // 散珠上料 #define CTRL_SUBCMD_SEQUIN_PARA 0x1D // 亮片参数设置 #define CTRL_SUBCMD_SEQUIN_ONCE 0x1E // 亮片出片 #define CTRL_SUBCMD_SEQUIN_PUSH 0x1F // 拨片 #define CTRL_SUBCMD_SEQUIN_CHCO 0x20 // 亮片换色,换到哪个 #define CTRL_SUBCMD_SEQUIN_CHCOZERO 0x21 // 亮片换色找零 #define CTRL_SUBCMD_SEQUIN_LIFT 0x22 // 亮片升降,1下降, 0升起 #define CTRL_SUBCMD_SEQUIN_CUT 0x23 // 亮片切片 #define CTRL_SUBCMD_BEADSEQ_CHANGE 0x24 // 珠片切换 #define CTRL_SUBCMD_EASY_CHENILLE_LIFT 0x25 // 简易毛巾升降 #define CTRL_SUBCMD_EASY_CHENILLE_CTRL 0x26 // 简易毛巾控制 #define CTRL_SUBCMD_TRACK_LIFT 0x27 // 跟踪绳绣升降 #define CTRL_SUBCMD_TRACK_TO_POS 0x28 // 跟踪绳绣旋转去某位置 #define CTRL_SUBCMD_TRACK_CHECK 0x29 // 跟踪绳绣检测 #define CTRL_SUBCMD_TRACK_RESET 0x2A // 跟踪绳绣复位 #define CTRL_SUBCMD_LASERLIGHT_ON 0x30 // 激光定位灯开 #define CTRL_SUBCMD_LASERLIGHT_OFF 0x31 // 激光定位灯关 #define CTRL_SUBCMD_LASER_ON 0x32 // 激光出光 #define CTRL_SUBCMD_LASER_OFF 0x33 // 激光关光 #define CTRL_SUBCMD_LASERBLOW_ON 0x34 // 激光吹气开 #define CTRL_SUBCMD_LASERBLOW_OFF 0x35 // 激光吹气关 #define CTRL_SUBCMD_HOIST_CTRL 0x40 // 毛巾提升电机控制 #define CTRL_SUBCMD_CUT_CTRL 0x41 // 毛巾剪线控制 #define CTRL_SUBCMD_SET_WORK_LEVEL 0x42 // 设置提升电机工作档位 #define CTRL_SUBCMD_GOTO_WORK_LEVEL 0x43 // 提升电机去工作档 #define CTRL_SUBCMD_MAXIS_CTRL 0x50 // 缠绕M轴控制 #define CTRL_SUBCMD_MAXIS_RUN 0x51 // 缠绕M轴运动 #define CTRL_SUBCMD_FOOT_CTRL 0x52 // 压脚控制 #define CTRL_SUBCMD_ZIGZAG_CTRL 0x53 // 锯齿控制 #define CTRL_SUBCMD_COIL_CTRL 0x54 // 缠绕控制 // 布线机 #define CTRL_SUBCMD_CLIPWIRE_CTRL 0x60 // 夹电阻丝控制 #define CTRL_SUBCMD_UPLINE_CTRL 0x61 // 夹面线控制 #define CTRL_SUBCMD_PRESSWIRE_CTRL 0x62 // 压电阻丝控制 #define CTRL_SUBCMD_UPCUT_CTRL 0x63 // 上剪线控制 #define CTRL_SUBCMD_WIREALARM_DECT 0x64 // 扎线报警检测 #define CTRL_SUBCMD_WIREALARM_RESET 0x65 // 扎线报警复位 #define CTRL_SUBCMD_STFED_ENABLE 0x66 // 起针检测送线允许 #define CTRL_SUBCMD_STFED_DISABLE 0x67 // 起针检测送线禁止 #define CTRL_SUBCMD_STFED_RESET 0x68 // 起针检测送线复位 #define CTRL_SUBCMD_HOLE_CTRL 0x69 // 打孔控制 #define CTRL_SUBCMD_HOLE_LIFT_CTRL 0x6A // 打孔升降控制 #define CTRL_SUBCMD_LIFT_CTRL 0x6B // 机头升降控制 // 换色电机 #define CTRL_SUBCMD_CON_SWITCH_NEEDLE 0x70 // 换色到针位 //------------------------------------------------------------------------------- // 状态位定义 #define HDSTA_HEAD_LOCK 0x00000001 // 锁头状态标志(无论按钮锁头或软件锁头) #define HDSTA_THREAD_BREAK 0x00000002 // 面线断线状态标志 #define HDSTA_DTHREAD_BREAK 0x00000004 // 底线断线状态标志 #define HDSTA_MEND_EMB 0x00000008 // 补绣状态 #define HDSTA_MEND_PAUSE 0x00000010 // 补绣暂停 #define HDSTA_MEND_WORK 0x00000020 // 补绣工作模式 #define HDSTA_CUT_POS 0x00000040 // 剪刀不在回位 #define HDSTA_SCBE_ALARM 0x00000080 // 散珠报警 #define HDSTA_TRACK_ALARM 0x00000100 // 跟踪绳绣报警 #define HDSTA_FOOT_DOWN 0x00000200 // 压脚下位 #define HDSTA_FOOT_UP 0x00000400 // 压脚上位 #define HDSTA_CUT_WORKPOS 0x00000800 // 剪刀出位(布线机) #define HDSTA_WIRE_ALARM 0x00001000 // 扎线报警(布线机) #define HDSTA_FEEDWIRE_TIMEOUT 0x00002000 // 送线超时(布线机) #define HDSTA_FEEDWIRE_ALARM 0x00004000 // 卡线(布线机) #define HDSTA_FEEDWIRE_NULL 0x00008000 // 起针未送线(布线机) #define HDSTA_HOLE_LIFT_UP 0x00010000 // 打孔升降高位(布线机) #define HDSTA_HOLE_LIFT_DOWN 0x00020000 // 打孔升降低位(布线机) #define HDSTA_LASER_ALM 0x00040000 // 激光报警(布线机) #define HDSTA_LIFT_UP 0x00080000 // 机头高位(布线机) #define HDSTA_LIFT_DOWN 0x00100000 // 机头低位(布线机) //------------------------------------------------------------------------------- // 机头类型定义 #define FLAT_EMB_HEAD 0x01 // 平绣机头 #define CHENILLE_HEAD 0x02 // 毛巾(上)机头 #define COIL_HEAD 0x03 // 缠绕机头 #define CHENILLE_DN_HEAD 0x04 // 毛巾下机头 #define LASER_HEAD 0x05 // 激光机头 //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- void InitHeadControl(HeadControl * pCtrl); void SendHeadCommand(HeadControl * pCtrl, HeadCommand * pCmd); void RequestHeadStatus(HeadControl * pCtrl); void RequestHeadVersion(HeadControl * pCtrl); void RequestHeadNvPara(HeadControl * pCtrl); //------------------------------------------------------------------------------- //------------------------------------------------------------------------------- #endif #endif