123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- #pragma once
- #define SINO_Com_NormalLen 30
- //*************************设备状态*************************************************
- typedef enum _Ccos_SINO_Status
- {
- SINO_STATUS_PowerOn = 1,//开机状态 对应 GENERATOR_STATUS_INIT
- SINO_STATUS_SysCooling = 2,//准备状态 对应 GENERATOR_STATUS_SLEEP
- SINO_STATUS_Standby = 4,//等待曝光状态 对应 GENERATOR_STATUS_STANDBY
- SINO_STATUS_EXP = 5,//曝光状态 对应 GENERATOR_STATUS_EXP
- SINO_STATUS_Error = 6,//系统报警状态 对应 GENERATOR_STATUS_ERROR
- }SINO_STATUS;
- //*************************指令格式*************************************************
- //指令头尾
- #define SINO_WS_STX 0xA5 //模块头
- #define SINO_WS_ETX 0x5A //模块尾
- #define SINO_MU_STX 0xCF //设备头
- #define SINO_MU_ETX 0xFC //设备尾
- //发送
- #define SINO_TYPE_SEND 0x00 //主动发送的指令
- #define SINO_TYPE_BACK 0x01 //指令设置成功后,返回的数据,需要对方返回确认指令
- #define SINO_TYPE_CONFIRM 0x02 //确认指令,不需要反馈
- //应答状态
- #define SINO_CONFIRM_OK 0x00 //数据成功接收并设置
- #define SINO_CONFIRM_FAIL 0x01 //数据不正确,未成功设置
- //*************************指令ID*************************************************
- //WS->MU
- #define SINO_DataQuery 0x06 //数据查询命令
- enum SINO_QueryType{
- EM_Query_STATUS = 0x01, //请求MU发送当前系统状态信息参数
- EM_Query_LASTEXPOSURE = 0x02, //请求MU发送本次曝光的曝光参数
- EM_Query_READY = 0x03, //WS反馈当前WS状态 READY,可以进行曝光
- EM_Query_NOREADY = 0x04, //WS反馈当前WS状态 NOT READY,不可以进行曝光
- };
- #define SINO_SetMASPreEXP 0x09 //AEC/OpDose模式下,完成预曝光后WS需反馈此值
- #define SINO_StatusQuery 0x30 //状态查询
- #define SINO_SetPatam 0x31 //配置参数
- #define SINO_ComInquiry 0xA0 //通信问询
- enum SINO_ComInquiryType {
- EM_ComInquiry_PowerOn = 0x01, //系统上电通信问询
- EM_ComInquiry_handshake = 0x02, //空闲时通信握手问询
- };
- //MU->WS
- #define SINO_RackPosition 0x01 //机架位置
- #define SINO_DataFeedback 0x07 //MU反馈WS数据
- enum SINO_FilterType {
- EM_Mo_Filtration = 0x01, //系统上电通信问询
- EM_Rh_Filtration = 0x02, //空闲时通信握手问询
- };
- #define SINO_PostFeedback 0x08 //MU曝光完成反馈
- #define SINO_SystemStatus 0x0A //系统状态
- enum SINO_SysStatusType {
- EM_SysStatus001 = 0x01, //C臂正在做旋转运动
- EM_SysStatus002 = 0x02, //C臂旋转运动停止
- EM_SysStatus003 = 0x03, //C臂正在做升降运动
- EM_SysStatus004 = 0x04, //C臂升降运动停止
- EM_SysStatus005 = 0x05, //急停开关按下
- EM_SysStatus006 = 0x06, //急停开关弹起
- EM_SysStatus016 = 0x10, //压迫器正在做升降运动
- EM_SysStatus017 = 0x11, //压迫器升降运动停止
- EM_SysStatus018 = 0x12, //达到最佳压力停止
- EM_SysStatus019 = 0x13, //解除达到最佳压力停止
- EM_SysStatus020 = 0x14, //压迫器上升
- EM_SysStatus021 = 0x15, //压迫器下降
- EM_SysStatus022 = 0x16, //压迫器停止
- EM_SysStatus032 = 0x20, //准直器滤过正在切换
- EM_SysStatus033 = 0x21, //准直器滤过切换完毕
- EM_SysStatus034 = 0x22, //准直器摄野范围正在调整
- EM_SysStatus035 = 0x23, //准直器摄野范围调整完毕
- EM_SysStatus036 = 0x24, //摄野灯点亮
- EM_SysStatus037 = 0x25, //摄野灯熄灭
- EM_SysStatus064 = 0x40, //允许曝光板开启曝光功能
- EM_SysStatus065 = 0x41, //禁止曝光板开启曝光功能
- EM_SysStatus066 = 0x42, //采集工作站启动曝光按钮
- EM_SysStatus067 = 0x43, //曝光手闸按下
- EM_SysStatus068 = 0x44, //系统曝光预热状态
- EM_SysStatus070 = 0x46, //滤线栅同步命令(预留)
- EM_SysStatus071 = 0x47, //AEC/Opdose模式开启高压预曝光
- EM_SysStatus073 = 0x49, //AEC/Opdose模式高压预曝光结束
- EM_SysStatus075 = 0x4B, //开启高压,系统开始正常曝光
- EM_SysStatus077 = 0x4D, //曝光进程中断
- EM_SysStatus078 = 0x4E, //曝光完成开始冷却
- EM_SysStatus079 = 0x4F, //系统冷却完成
- EM_SysStatus080 = 0x50, //屏蔽房间门处于闭合状态
- EM_SysStatus081 = 0x51, //屏蔽房间门处于敞开状态
- EM_SysStatus160 = 0xA0, //MU初始化中
- EM_SysStatus161 = 0xA1, //MU初始化完成
- EM_SysStatus162 = 0xA2, //MU各个状态 READY,可以进行曝光
- EM_SysStatus163 = 0xA3, //MU 各状态NOT READY,不可以进行曝光
- };
- #define SINO_SystemWarning 0x10 //报警信息
- enum SINO_SysWarnType {
- EM_SysWarn001 = 0x01, //球管温度过高报警
- EM_SysWarn002 = 0x02, //高压发生器高压输出未允许报警
- EM_SysWarn003 = 0x03, //球管高速启动故障报警
- EM_SysWarn004 = 0x04, //高压发生器产生高压电弧故障报警
- EM_SysWarn005 = 0x05, //无效曝光参数设置导致高压输出大于5KW报警
- EM_SysWarn006 = 0x06, //AEC曝光控制超时报警
- EM_SysWarn007 = 0x07, //高压发生器反馈的mAs超出设置值报警
- EM_SysWarn008 = 0x08, //曝光周期中间歇时间未完成就进行曝光报警
- EM_SysWarn009 = 0x09, //高压发生器输出KV大于42765V且时间超过1ms报警
- EM_SysWarn010 = 0x0A, //高压发生器输出mA大于213.828 mA且时间超过100ms报警
- EM_SysWarn011 = 0x0B, //高压发生器输出KV或mA大于设置值的%25导致报警
- EM_SysWarn012 = 0x0C, //高压发生器反馈球管灯丝开路报警
- EM_SysWarn013 = 0x0D, //高压发生器反馈球管过流报警
- EM_SysWarn014 = 0x0E, //高压发生器AD/DC输入电压过低报警
- EM_SysWarn015 = 0x0F, //高压发生器强制超出曝光任务周期报警
- EM_SysWarn016 = 0x10, //高压发生器管电压、管电流检测报警
- EM_SysWarn017 = 0x11, //高压发生器强制恢复过压异常报警
- EM_SysWarn018 = 0x12, //解除高压发生器报警
- EM_SysWarn019 = 0x13, //曝光按钮短路或者未释放报警
- EM_SysWarn020 = 0x14, //解除手闸短路报警命令
- EM_SysWarn021 = 0x15, //曝光没有到设定时间提前松开手闸报警
- EM_SysWarn022 = 0x16, //消除提前松开手闸报警
- EM_SysWarn023 = 0x17, //自动测试模式时,检测到没有短接跳线报警
- EM_SysWarn024 = 0x18, //解除自动测试跳线帽未短接报警
- EM_SysWarn025 = 0x19, //曝光时,未收到运动板发来的滤线栅抖动信号
- EM_SysWarn032 = 0x20, //高压通信超时
- EM_SysWarn048 = 0x30, //运动控制板自检不通过报警
- EM_SysWarn049 = 0x31, //解除运动控制板自检不通过报警
- EM_SysWarn052 = 0x34, //运动控制板存储器读写数据失败报警
- EM_SysWarn054 = 0x36, //解除运动控制板存储器读写数据失败报警
- EM_SysWarn055 = 0x37, //急停开关按下时,运动控制键被按下报警
- EM_SysWarn056 = 0x38, //解除急停开关按下时,运动控制键被按下错误
- EM_SysWarn057 = 0x39, //脚踏开关自检未完成时被踩下报警
- EM_SysWarn058 = 0x3A, //解除脚踏开关自检未完成时被踩下报警
- EM_SysWarn059 = 0x3B, //旋转运动二次限位保护开关触发报警
- EM_SysWarn060 = 0x3C, //旋转运动二次限位保护开关触发报警解除
- EM_SysWarn061 = 0x3D, //C臂旋转方向控制引脚失效报警
- EM_SysWarn062 = 0x3E, //解除C臂旋转方向控制引脚失效报警
- EM_SysWarn063 = 0x3F, //C臂旋转或者升降按键在自检未完成时按下报警
- EM_SysWarn064 = 0x40, //解除C臂旋转或者升降按键在自检未完成时按下报警
- EM_SysWarn065 = 0x41, //C臂旋转电机驱动器报警
- EM_SysWarn066 = 0x42, //解除C臂旋转电机驱动器报警
- EM_SysWarn067 = 0x43, //C臂电机位置超差报警
- EM_SysWarn068 = 0x44, //解除C臂电机位置超差报警
- EM_SysWarn069 = 0x45, //升降运动二次限位保护开关触发报警
- EM_SysWarn070 = 0x46, //升降运动二次限位保护开关触发报警解除
- EM_SysWarn071 = 0x47, //升降电机方向控制引脚失效报警
- EM_SysWarn072 = 0x48, //解除升降电机方向控制引脚失效报警
- EM_SysWarn073 = 0x49, //机架升降电机驱动器报警
- EM_SysWarn074 = 0x4A, //解除机架升降电机驱动器报警
- EM_SysWarn075 = 0x4B, //升降电机位置超差报警
- EM_SysWarn076 = 0x4C, //解除升降电机位置超差报警
- EM_SysWarn077 = 0x4D, //角度校准板失效报警
- EM_SysWarn078 = 0x4E, //解除角度校准板失效报警
- EM_SysWarn096 = 0x60, //压迫器运动二次限位保护开关触发
- EM_SysWarn097 = 0x61, //压迫器运动二次限位保护开关触发解除
- EM_SysWarn098 = 0x62, //压迫器方向控制引脚失效
- EM_SysWarn099 = 0x63, //解除压迫器方向控制引脚失效
- EM_SysWarn100 = 0x64, //压迫器升降电机驱动器报警
- EM_SysWarn101 = 0x65, //解除压迫器升降电机驱动器报警
- EM_SysWarn102 = 0x66, //开机检测到压力报错
- EM_SysWarn103 = 0x67, //解除开机检测到压力报错
- EM_SysWarn104 = 0x68, //压力传感器故障报警
- EM_SysWarn105 = 0x69, //解除压力传感器故障报警
- EM_SysWarn106 = 0x6A, //压迫器电机位置超差报警
- EM_SysWarn107 = 0x6B, //解除压迫器电机位置超差报警
- EM_SysWarn108 = 0x6C, //压迫器高度过低时插入放大架报警
- EM_SysWarn109 = 0x6D, //解除压迫器高度过低时插入放大架报警
- EM_SysWarn110 = 0x6E, //远端压迫器自动释放按钮被开机时按下报警
- EM_SysWarn111 = 0x6F, //解除远端压迫器自动释放按钮被开机时按下报警
- EM_SysWarn112 = 0x70, //压力超限报警
- EM_SysWarn113 = 0x71, //解除压力超限报警
- EM_SysWarn128 = 0x80, //滤线栅控制电路错误
- EM_SysWarn129 = 0x81, //解除滤线栅电路错误
- EM_SysWarn152 = 0x98, //准直器滤片切换超时报警
- EM_SysWarn153 = 0x99, //解除准直器滤片切换超时报警
- EM_SysWarn154 = 0x9A, //准直器摄野调节超时报警
- EM_SysWarn155 = 0x9B, //解除准直器摄野调节超时报警
- EM_SysWarn156 = 0x9C, //准直器存储器读数据错误报警
- EM_SysWarn157 = 0x9D, //解除准直器存储器读数据错误报警
- EM_SysWarn161 = 0xA1, //曝光控制板通信异常
- EM_SysWarn162 = 0xA2, //压迫器控制板通信异常
- EM_SysWarn163 = 0xA3, //准直器控制板通信异常
- EM_SysWarn165 = 0xA5, //底座显示板通信异常
- EM_SysWarn166 = 0xA6, //远端控制盒通信异常
- EM_SysWarn168 = 0xA8, //解除通信报警
- };
- //WS<->MU
- #define SINO_Compressor 0x02 //压迫器
- enum SINO_CompressionPlateType{
- EM_PlateType1 = 0x01, //24x30 cm 压迫板
- EM_PlateType2 = 0x02, //1.5倍放大架压迫板
- EM_PlateType3 = 0x03, //9x9cm点压板
- };
- enum SINO_AutoRelSwitchType {
- EM_AutoRelSwitch_Off = 0x00, //关闭自动释放功能
- EM_AutoRelSwitch_On = 0x01, //开启自动释放功能
- };
- #define SINO_Collimator 0x03 //准直器
- #define SINO_ExpoParam 0x04 //曝光参数
- enum SINO_FocusType{
- EM_Focus_Large = 0x01, //大焦点
- EM_Focus_Small = 0x02, //小焦点
- };
- enum SINO_EXPMode{
- EM_EXPMode_MAN = 0x01, //MAN曝光模式
- EM_EXPMode_AEC = 0x02, //AEC曝光模式
- EM_EXPMode_Opdose = 0x03, //Opdose曝光模式
- };
- #define SINO_TubeHeat 0x05 //球管热容量状态
- enum SINO_TubeHeatState{
- EM_THState_1 = 0x01, //球管热容量处于低温阶段
- EM_THState_2 = 0x02, //球管热容量处于正常温度阶段
- EM_THState_3 = 0x03, //球管热容量处于正常偏高温阶段
- EM_THState_4 = 0x04, //球管热容量处于中温阶段
- EM_THState_5 = 0x05, //球管热容量处于高温阶段
- EM_THState_6 = 0x06, //当前球管热容量超出最大允许热容量,禁止曝光
- };
- struct SINOCommand //as same as Exposure Parameter via query
- {
- char Command[SINO_Com_NormalLen] = {0};
- SINOCommand()
- {
- Command[0] = SINO_WS_STX;
- Command[3] = 7;
- Command[6] = SINO_WS_ETX;
- }
- SINOCommand(const char *CMDd)
- {
- int lengh = CMDd[3];
- if (lengh < SINO_Com_NormalLen)
- {
- memcpy(Command, CMDd, lengh);
- }
- else
- {
- memcpy(Command, CMDd, SINO_Com_NormalLen-1);
- }
- }
- SINOCommand(const char* CMDd,int lengh)
- {
- if (lengh < SINO_Com_NormalLen)
- {
- memcpy(Command, CMDd, lengh);
- }
- }
- SINOCommand(char CMDd,char type,int size)
- {
- if (size >= 6)
- {
- Command[0] = SINO_WS_STX;
- Command[1] = type;
- Command[2] = CMDd;
- Command[3] = size;
- Command[size - 1] = SINO_WS_ETX;
- }
- }
- void SetAt(int pos,char value)
- {
- --pos;
- if (pos >= 0 && pos <= Command[3] - 1)
- {
- Command[pos] = value;
- }
- }
- char GetAt(int pos)
- {
- --pos;
- if (pos >= 0 && pos <= Command[3] - 1)
- {
- return Command[pos];
- }
- return Command[SINO_Com_NormalLen - 1];
- }
- const char* Get_Hex_Log()
- {
- char temp[5] = {0};
- string log;
- for (int i = 0; i < Command[3]; i++)
- {
- if (i == Command[3]-1)
- {
- sprintf_s(temp, 4, "%02x", (UINT8)Command[i]);
- }
- else
- sprintf_s(temp,4,"%02x ", (UINT8)Command[i]);
- log += temp;
- }
- return log.c_str();
- }
- void SetCRC(char (*fun)(char* cmdData, int size))
- {
- char Checksum = fun(Command, Command[3]);
- Command[Command[3] - 2] = Checksum;
- }
- operator const char* () const { return Command; }
- };
|