c#调度采集逻辑2--机床连接成功后逻辑
一、机床状态 enum focas_ret
EW_PROTOCOL=(-17),/*协议错误*/ EW_SOCKET=(-16),/*Windows套接字错误*/ EW_NODLL=(-15),/*DLL不存在错误*/ EW_BUS=(-11),/*总线错误*/ EW_SYSTEM2=(-10),/*系统错误*/ EW_HSSB=(-9),/*HSSB通信错误*/ EW_HANDLE=(-8),/*Windows库句柄错误*/ EW_VERSION=(-7),/*CNC/PMC版本不匹配*/ EW_UNEXP=(-6),/*异常错误*/ EW_SYSTEM=(-5),/*系统错误*/ EW_PARITY=(-4),/*共享RAM奇偶校验错误*/ EW_MMCSYS=(-3),/*emm386或MMCSYS安装错误*/ EW_RESET=(-2),/*重置或停止发生错误*/ EW_BUSY=(-1),/*忙错误*/ EW_OK=0,/*没问题*/ EW_FUNC=1,/*命令准备错误*/ EW_NOPMC=1,/*pmc不存在*/ EW_LENGTH=2,/*数据块长度错误*/ EW_NUMBER=3,/*数据编号错误*/ EW_RANGE=3,/*地址范围错误*/ EW_ATTRIB=4,/*数据属性错误*/ EW_TYPE=4,/*数据类型错误*/ EW_DATA=5,/*数据错误*/ EW_NOOPT=6,/*无选项错误*/ EW_PROT=7,/*写保护错误*/ EW_OVRFLOW=8,/*内存溢出错误*/ EW_MAM=9,/*cnc参数不正确错误*/ EW_BUFFER=10,/*缓冲区错误*/ EW_PATH=11,/*路径错误*/ EW_MODE=12,/*数控模式错误*/ EW_REJECT=13,/*执行被拒绝错误*/ EW_DTSRVR=14,/*数据服务器错误*/ EW_ALARM=15,/*已发生报警*/ EW_STOP=16,/*CNC未运行*/ EW_PASSWD=17,/*保护数据错误*/
if (ret != Focas1.EW_OK)
if (dvMachinery != null && dvMachinery.status != "STOP")//存在,且不是停止状态 TimeSpan ts = nowTime - last;//当前时间-最后时间 if (ts.TotalMinutes > 20)//总分钟数超过20分钟
如果机床有问题,并且不是停止状态,则停止机床
9、DvMachineryTimeLog 设备开关机记录表

SELECT * FROM `dv_machinery_time_log` Where machinery_id=1823198452095258626 and start_time<>null and stop_time=null ORDER BY id DESC
DvMachineryTimeLog dv = db.Queryable<DvMachineryTimeLog>().Where(u => u.machinery_id == machinery.machinery_id && u.start_time != null && u.stop_time == null).OrderByDescending(u => u.id).First(); if (dv != null) { dv.stop_time = nowTime; dv.update_user = "1543837863788879871"; dv.update_time = nowTime; db.Updateable(dv).ExecuteCommand(); } else { DvMachineryTimeLog dvMachineryTimeLog = new DvMachineryTimeLog(); dvMachineryTimeLog.id = SnowFlakeSingle.Instance.NextId(); dvMachineryTimeLog.machinery_id = machinery.machinery_id; dvMachineryTimeLog.start_time = nowTime; dvMachineryTimeLog.delete_flag = 0; dvMachineryTimeLog.create_time = DateTime.Now; dvMachineryTimeLog.create_user = "1543837863788879871"; dvMachineryTimeLog.update_user = "1543837863788879871"; dvMachineryTimeLog.id = SnowFlakeSingle.Instance.NextId(); dvMachineryTimeLog.update_time = DateTime.Now; db.Insertable(dvMachineryTimeLog).ExecuteCommand(); }
如果存在正在运行的机床,则更新结束时间 stop_time = nowTime;
不存在则创建 设备开关机记录表 start_time = nowTime;
10、DvMachineryLog
新增设备记录
//设备状态变更,更新老的,新增一条记录
11、fanuc机床连接成功
设备状态的判定方法:如果Alarm不为0则有报警。当没有报警时,如果run=3认为是在运行,其他都为待机
ret = Focas1.cnc_statinfo(h, statinfo); if (ret == Focas1.EW_OK) { //设备状态的判定方法:如果Alarm不为0则有报警。当没有报警时,如果run=3认为是在运行,其他都为待机 run = statinfo.run; Alarm = statinfo.alarm; //MTMode = statinfo.tmmode; if (Alarm != 0) run = 5;//5为设备报警状态 //this.txtDevStatus.Text = run.ToString(); runText = getFanucDeviceStatus(run); }
private String getFanucDeviceStatus(short run) { string status = string.Empty; switch (run) { case 3: status = "WORKING"; break; case 5: status = "ALARM"; break; default: status = "IDLESTATE"; break; } return status; }
DvMachineryAlarm dvMachineryAlarm = db.Queryable<DvMachineryAlarm>()
.Where(u => u.machinery_id == machinery.machinery_id && u.alarm_type == 23 && u.alarm_end_time == null && u.alarm_name == machinealertText + "报警")
.OrderByDescending(u => u.line_id).First();
//过滤出每台机床的报警信息
浙公网安备 33010602011771号