306 lines
10 KiB
C
306 lines
10 KiB
C
|
|
#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
|