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();
//过滤出每台机床的报警信息

 

posted on 2025-04-22 13:25  张彦山  阅读(40)  评论(0)    收藏  举报