#pragma once namespace DIOS::Dev::Detail::MachineryECOM { class DiosBoardCtrlParams { public: DiosBoardCtrlParams(); virtual ~DiosBoardCtrlParams(); }; enum NOTIFY_FRAME_ID { NOTIFY_FRAME_DEF = 0xFE, }; enum DIOSBOARD_OP { OP_SET = 0x01, //设置 OP_WRITE = 0x02, //写 OP_READ = 0x03, //读 }; enum GPIO_DO_ID { DO_ID_1 = 0x15, DO_ID_2 = 0x16, DO_ID_3 = 0x17, DO_ISO_ID_1 = 0x35, DO_ISO_ID_2 = 0x36, DO_ISO_ID_3 = 0x37, }; enum GPIO_DO_ATTRIBUTE { DO_ATTR_NONE = -1, DO_ATTR_SET_MODE = 0x01, //输出模式设置,GPIO_OUTPUT_MODE DO_ATTR_SET_LEVEL = 0x02, //有效电平设置,GPIO_ACTIVE_LEVEL DO_ATTR_SET_PWM_PARAM_TABLE = 0x03, //PWM参数(组)属性表设置 DO_ATTR_SET_PWM_SEPARATOR = 0x04, //PWM属性表分隔符设置 DO_ATTR_SET_PWM_DELETE = 0x05, //删除PWM属性表参数 DO_ATTR_SET_AUTO_UPLOAD = 0x20, //状态自动返回开关 }; enum GPIO_OUTPUT_MODE { GOM_DIGITAL = 0x00, //数字量 GOM_PWM = 0x10, //PWM }; enum GPIO_ACTIVE_LEVEL { GAL_HIGH = 0x00, //高电平有效 GAL_LOW = 0x10, //低电平有效 }; enum GPIO_DO_AUTO_UPLOAD_SWITCH { GAUTO_DO_UPLOAD_ON = 0x01, GAUTO_DO_UPLOAD_OFF = 0x00, }; enum GPIO_DI_ID { DI_ID_1 = 0x11, DI_ID_2 = 0x12, DI_ID_3 = 0x13, DI_ID_4 = 0x14, DI_ISO_ID_1 = 0x31, DI_ISO_ID_2 = 0x32, DI_ISO_ID_3 = 0x33, DI_ISO_ID_4 = 0x34, }; enum GPIO_DI_ATTRIBUTE { DI_ATTR_NONE = -1, DI_ATTR_SET_MODE = 0x01, //输入模式设置 DI_ATTR_SET_LEVEL = 0x02, //有效电平设置 DI_ATTR_SET_COUNT_CLEAR = 0x03, //有效电平捕获计数清零 DI_ATTR_SET_AUTO_UPLOAD = 0x20, //状态自动返回开关 DI_ATTR_SET_ASSOCIATE_CH1 = 0x30, //关联通道1设定 DI_ATTR_SET_ASSOCIATE_CH1_CANCEL = 0x31,//关联通道1解除 DI_ATTR_SET_ASSOCIATE_CH1_ATTR = 0x32, //关联通道1属性设定 DI_ATTR_SET_ASSOCIATE_CH2 = 0x40, //关联通道2设定 DI_ATTR_SET_ASSOCIATE_CH2_CANCEL = 0x41,//关联通道2解除 DI_ATTR_SET_ASSOCIATE_CH2_ATTR = 0x42, //关联通道2属性设定 DI_ATTR_SET_DELETE_ENCODER = 0x50, //删除编码器指令 }; enum GPIO_INPUT_MODE { GIM_DIGITAL = 0x00, //数字量 GIM_PULSE_COUNT = 0x10, //捕获脉冲计数 }; enum GPIO_DI_AUTO_UPLOAD_SWITCH { GAUTO_DI_UPLOAD_ON = 0x10, GAUTO_DI_UPLOAD_OFF = 0x00, }; //主通道触发电平设定 enum GPIO_DI_TRIGGER_LEVEL { GDI_TRIGGER_LEVEL_UP = 0x00, GDI_TRIGGER_LEVEL_DOWN = 0x01, GDI_TRIGGER_LEVEL_BOTH = 0x02, }; enum AD_ID { //AD1-AD7 AD_ID_1 = 0x21, AD_ID_2 = 0x22, AD_ID_3 = 0x23, AD_ID_4 = 0x24, AD_ID_5 = 0x25, AD_ID_6 = 0x26, AD_ID_7 = 0x27, //DAD/DT1-DAD/DT7 DAD_ID_1 = 0x29, DAD_ID_2 = 0x2A, DAD_ID_3 = 0x2B, DAD_ID_4 = 0x2C, DAD_ID_5 = 0x2D, DAD_ID_6 = 0x2E, DAD_ID_7 = 0x2F, }; enum AD_ATTRIBUTE { AD_ATTR_NONE = -1, AD_ATTR_ON_OFF = 0x01, //AD开关 AD_ATTR_AUTO_UPLOAD = 0x20, //AD采样值(或微分值)自动上传 AD_ATTR_AUTO_UPLOAD_CLEAR_TABLE = 0x21, //AD采样值(或微分值)自动上传值表清除 AD_ATTR_ASSOCIATE_CH1 = 0x30, //AD关联通道1 AD_ATTR_ASSOCIATE_CH1_CANCEL = 0x31, //AD关联通道1解除 AD_ATTR_ASSOCIATE_CH2 = 0x32, //AD关联通道2设定 AD_ATTR_ASSOCIATE_CH2_CANCEL = 0x33, //AD关联通道2解除 AD_ATTR_ASSOCIATE_CH1_TABLE_SET = 0x40, //AD关联通道1关联值(组)设定 AD_ATTR_ASSOCIATE_CH1_TABLE_DELETE = 0x41, //AD关联通道1关联值表删除 AD_ATTR_ASSOCIATE_CH2_TABLE_SET = 0x42, //AD关联通道2关联值(组)设定 AD_ATTR_ASSOCIATE_CH2_TABLE_DELETE = 0x43, //AD关联通道2关联值表删除 }; enum AD_SWITCH { ADSW_ON = 0x01, ADSW_OFF = 0x00, }; enum RS232_ID { RS232_ID_1 = 0x43, //RS232 }; enum RS232_ATTRIBUTE { RS232_ATTR_NONE = -1, //Ignored RS232_ATTR_ON_OFF = 0x01, //开关 RS232_ATTR_BAUD_RATE = 0x02, //波特率 RS232_ATTR_DATA_SET = 0x03, //数据格式 }; enum RS232_SWITCH { RS232_SW_ON = 0x01, RS232_SW_OFF = 0x00, }; enum RS232_BAUD_RATE { BAUD_RATE_9600 = 0x00, //9600bps BAUD_RATE_19200 = 0x10, //19200bps BAUD_RATE_38400 = 0x20, //38400bps BAUD_RATE_115200 = 0x30, //115200bps }; enum RS232_DATA_VALIDATE { RS232_DATA_VALIDATE_DEFAULT = 0x00, //字长8bit,停止位1bit,无校验 }; enum CAN_ID { CAN_ID_1 = 0x42, }; enum CAN_ATTRIBUTE { CAN_ATTR_NONE = -1, CAN_ATTR_ON_OFF = 0x01, CAN_ATTR_BAUD_RATE, }; enum CAN_SWITCH { CAN_SW_ON = 0x01, CAN_SW_OFF = 0x00, }; enum SEC_ID { SEC_ID_1 = 0xC1, SEC_ID_2 = 0xC2, SEC_ID_3 = 0xC3, SEC_ID_4 = 0xC4, }; enum SEC_ATTRIBUTE { SEC_ATTR_NONE = -1, SEC_ATTR_A_B_AXIS_BIND = 0x01, //编码器A、B轴绑定 SEC_ATTR_Z_AXIS_BIND = 0x02, //编码器Z轴绑定 SEC_ATTR_Z_AXIS_BIND_CANCEL = 0x03, //编码器Z轴解除绑定 SEC_ATTR_DELTE = 0x04, //删除编码器 SEC_ATTR_Z_AXIS_CLEAR_NOTIFY = 0x5, //编码器Z轴清零通知设置 SEC_ATTR_ASSOCIATE_CH1_SET = 0x10, //编码器关联通道1设定 SEC_ATTR_ASSOCIATE_CH1_CANCEL = 0x11, //编码器关联通道1解除 SEC_ATTR_ASSOCIATE_CH1_TABLE_SET = 0x12, //编码器关联通道1关联值(组)设定 SEC_ATTR_ASSOCIATE_CH1_TABLE_CLEAR = 0x13, //编码器关联通道1关联值(组)清除 SEC_ATTR_ASSOCIATE_CH2_SET = 0x20, //编码器关联通道2设定 SEC_ATTR_ASSOCIATE_CH2_CANCEL = 0x21, //编码器关联通道2解除 SEC_ATTR_ASSOCIATE_CH2_TABLE_SET = 0x22, //编码器关联通道2关联值(组)设定 SEC_ATTR_ASSOCIATE_CH2_TABLE_CLEAR = 0x23, //编码器关联通道2关联值(组)清除 }; enum SCL_ID { SCL_ID_1 = 0xD1, SCL_ID_2 = 0xD2, SCL_ID_3 = 0xD3, SCL_ID_4 = 0xD4, }; enum SCL_ATTRIBUTE { SCL_ATTR_SET = 0x01, //软件接口连锁器配置指令 }; enum SEC_Z_AXIS_NOTIFY_SWITCH { SEC_Z_NOTIFY_SW_ON = 0x01, SEC_Z_NOTIFY_SW_OFF = 0x00, }; enum EXPOSURE_ID { EXPOSURE_CTRL_ID = 0x41, }; enum MCU_ID { MCU_CTRL_ID = 0x48, }; enum MCU_ATTRIBUTE { MCU_ATTR_VERSION = 0x01, }; enum ENCODER_AXIS { ENCODER_AXIS_ID_1 = 0x51, ENCODER_AXIS_ID_2 = 0x52, ENCODER_AXIS_ID_3 = 0x53, }; union PWMPeriod { struct _stpwmperiod { unsigned char pwmperiod_lowbyte; unsigned char pwmperiod_highbyte; } pwmperiod_byte; unsigned short pwmperiod_short; }; union PWMstep { struct _stpwmstep { unsigned char pwmstep_lowbyte_0; unsigned char pwmstep_lowbyte_1; unsigned char pwmstep_highbyte_0; unsigned char pwmstep_highbyte_1; } pwmstep_byte; int pwmstep_int; }; struct GPIO_DO_PARAM : public DiosBoardCtrlParams { unsigned char output_mode; unsigned char active_level; unsigned char autoupload_switch; PWMPeriod peroid; PWMPeriod effective; PWMstep pwm_step; unsigned char padding[1]; }; struct GPIO_DI_PARAM : public DiosBoardCtrlParams { unsigned char input_mode; unsigned char autoupload_switch; unsigned char ch_associate_id; unsigned char filter_time; unsigned char trigger_level; unsigned char associate_ch_action; unsigned char active_level; union _pulseCount { struct _spulseCount { unsigned char pulse_count_lowbyte; unsigned char pulse_count_highbyte; } pulse_count_byte; unsigned short pulse_count_short; } pulse_count; unsigned char padding[3]; }; struct AD_PARAM : public DiosBoardCtrlParams { unsigned char ad_switch; union _lparam { struct _slparam { unsigned char auto_upload_value_lowbyte; unsigned char auto_upload_value_highbyte; } auto_upload_value_btye; unsigned short auto_upload_value_short; } auto_upload_value; unsigned char associate_ch_id; union _associate { struct _slparam { unsigned char associate_value_lowbyte; unsigned char associate_value_highbyte; } associate_value_btye; unsigned short associate_value_short; } associate_value; PWMPeriod peroid; PWMPeriod effective; PWMstep pwm_step; union _ladreadparam { struct _sadreadparam { unsigned char ad_lowbyte; unsigned char ad_highbyte; } ad_value_btye; unsigned short ad_value_short; } ad_value; }; struct RS232_PARAM : public DiosBoardCtrlParams { unsigned char rs232_switch; unsigned char rs232_baud_rate; unsigned char rs232_data_validate; std::basic_string rs485; unsigned char padding; }; struct CAN_PARAM : public DiosBoardCtrlParams { unsigned char can_switch; unsigned char can_baud_rate; unsigned short can_stdid; unsigned char can_dlc; std::basic_string candata; unsigned char padding[1]; }; enum CAN_BAUD_RATE { CAN_BAUD_RATE_100 = 0x1E, CAN_BAUD_RATE_125 = 0x18, CAN_BAUD_RATE_250 = 0xC, CAN_BAUD_RATE_500 = 0x6, CAN_BAUD_RATE_750 = 0x4, CAN_BAUD_RATE_1000 = 0x3, }; union ADLimit { struct _slparam { unsigned char limit_value_lowbyte; unsigned char limit_value_highbyte; } limit_value_btye; unsigned short limit_value_short; }; struct SEC_PARAM : public DiosBoardCtrlParams { unsigned char a_axis_bind_id; unsigned char b_axis_bind_id; unsigned char z_axis_bind_id; unsigned char z_axis_assistent_ad_id; ADLimit low_limit_value; ADLimit high_limit_value; unsigned char z_axis_clear_notify_switch; unsigned char associate_id; union _associate_value { struct { unsigned char associate_value_lowbyte_0; unsigned char associate_value_lowbyte_1; unsigned char associate_value_highbyte_0; unsigned char associate_value_highbyte_1; } associate_value_byte; int associate_value_int; } associate_value; union _encoder_value { struct { unsigned char encoder_lowbyte_0; unsigned char encoder_lowbyte_1; unsigned char encoder_highbyte_0; unsigned char encoder_highbyte_1; } encoder_value_byte; int encoder_value_int; } encoder_value; unsigned char use_ad_assistent; unsigned char padding[1]; }; struct SCL_PARAM : public DiosBoardCtrlParams { unsigned char a_id; unsigned char a_trigger_level; unsigned char b_id; unsigned char b_trigger_level; unsigned char f_id; }; struct MCU_PARAM : public DiosBoardCtrlParams { union _mcu_version { struct _lparam { unsigned char version_lowbyte; unsigned char version_highbyte; } version_byte; unsigned short version_short; } mcu_version; }; struct EXPOSURE_PARAM : public DiosBoardCtrlParams { unsigned char active_level; unsigned char padding[3]; }; }