internal void AddFanucMac(out int connected, out String ControllerType, out int NoOfAxis, out int CurrentControlAxis, out String ModelType)
 {
     connected          = 0;
     ControllerType     = "";
     NoOfAxis           = 0;
     CurrentControlAxis = 0;
     ModelType          = "";
     Focas1.focas_ret retallclibhndl3 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out h);
     if (retallclibhndl3 == Focas1.focas_ret.EW_OK)
     {
         Focas1.ODBSYS MacInfo    = new Focas1.ODBSYS();
         short         SysInfoRet = Focas1.cnc_sysinfo(h, MacInfo);
         if (SysInfoRet == 0)
         {
             connected      = 1;
             ControllerType = (MacInfo.cnc_type[0].ToString() + MacInfo.cnc_type[1].ToString()).ToString().Trim();
             NoOfAxis       = MacInfo.max_axis;
             ModelType      = (MacInfo.mt_type[0].ToString() + MacInfo.mt_type[1].ToString()).ToString().Trim();
             //NoOfAxis = Convert.ToInt32(MacInfo.axes.ToString());
             CurrentControlAxis = Convert.ToInt32((MacInfo.axes[0].ToString() + MacInfo.axes[1].ToString()).ToString().Trim());
             String MacSeries  = MacInfo.series.ToString().Trim();
             String MacVersion = MacInfo.version.ToString().Trim();
         }
     }
 }
Beispiel #2
0
        /// <summary>
        /// Read Machine Info Data (MachineType, MachineAxesCount)
        /// </summary>
        private void CallSysInfo()
        {
            try
            {
                Focas1.ODBSYS odbSys = new Focas1.ODBSYS();

                focasReturn = Focas1.cnc_sysinfo(fanucHandle, odbSys);

                if (focasReturn == EW_OK)
                {
                    machineType      = Convert.ToInt32(new string(odbSys.cnc_type));
                    machineAxesCount = Convert.ToInt32(new string(odbSys.axes));

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Success :: MACHINE TYPE = {1}", this.ToString(), machineType));
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Success :: AXES COUNT = {1}", this.ToString(), machineAxesCount));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Fail :: SocketError", this.ToString()));

                    isConnect = false;
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Fail :: ReturnCode = {1}", this.ToString(), focasReturn));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Exception :: Message = {1}", this.ToString(), ex.Message));
            }
        }
Beispiel #3
0
        private void rdpara_Click(object sender, EventArgs e)
        {
            short ret, idx, axno;
            short start = 1, end1 = 1000, axno1 = -1, length = 10000;

            Focas1.ODBSYS     info    = new Focas1.ODBSYS();
            Focas1.IODBPSD_1  param   = new Focas1.IODBPSD_1();
            Focas1.IODBPSD_3  param1  = new Focas1.IODBPSD_3();
            Focas1.ODBPARANUM paranum = new Focas1.ODBPARANUM();
            ret = Focas1.cnc_rdparanum(cncHandle, paranum);
            //start = (short)(paranum.para_min+1);
            //end1 = (short)paranum.total_no;
            ret = Focas1.cnc_rdparar(cncHandle, ref start, end1, ref axno1, ref length, param1);

            Focas1.ODBPARAIF paraif = new Focas1.ODBPARAIF();
            Focas1.cnc_sysinfo(cncHandle, info);
            axno = 3;
            Focas1.cnc_rdparainfo(cncHandle, 0, 1, paraif);
            bool withaxs;

            while (paraif.next_no != 0)
            {
                Focas1.cnc_rdparainfo(cncHandle, paraif.next_no, 1, paraif);
                string temp_string = Convert.ToString(paraif.info.info1.prm_type, 2);
                int    temp_type   = Convert.ToInt16(temp_string[temp_string.Length - 1]) - 48;
                if (temp_string.Length > 1)
                {
                    temp_type = temp_type + (Convert.ToInt16(temp_string[temp_string.Length - 2]) - 48) * 2;
                }
                if (temp_string.Length > 2)
                {
                    withaxs = Convert.ToInt16(temp_string[temp_string.Length - 3]) == 48;
                }
                else
                {
                    withaxs = false;
                }
                if (withaxs)
                {
                    ret = Focas1.cnc_rdparam(cncHandle, paraif.info.info1.prm_no, -1, (short)(4 + 1 * Focas1.MAX_AXIS), param);//(short)(4 + 1 * MAX_AXIS)
                }
                else
                {
                    ret = Focas1.cnc_rdparam(cncHandle, paraif.info.info1.prm_no, -1, (short)(4 + 1 * Focas1.MAX_AXIS), param1);//(short)(4 + 1 * MAX_AXIS)
                }
            }
            for (idx = 0; idx < axno; idx++)
            {
                //printf("#%d", idx + 1);
                //printf("%c\n", param.u.cdatas[idx]);
            }
            ;
        }
Beispiel #4
0
        private void button2_Click(object sender, EventArgs e)
        {
            Fanuc.ODBSYS odbsys = new Focas1.ODBSYS();
            int          ret    = Fanuc.cnc_sysinfo(Fanuc.h, odbsys);

            if (ret == Fanuc.EW_OK)
            {
                short  addinfo = odbsys.addinfo;
                char[] axes    = odbsys.axes;
                char[] cnctype = odbsys.cnc_type;
                short  maxaxis = odbsys.max_axis;
                char[] mttype  = odbsys.mt_type;
                char[] series  = odbsys.series;
                char[] version = odbsys.version;
            }
            else
            {
                MessageBox.Show(ret + "");
            }
        }
Beispiel #5
0
        public string read()
        {
            if (!isOpened)
            {
                throw new Exception("Must open cnc connection first!");
            }
            // logger.Info("Target ip: " + host + "; port: " + port);
            JObject resp = new JObject();

            resp["systemtime"]               = DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString();
            resp["centername"]               = "加工中心";
            resp["txtip"]                    = host;
            resp["machinename"]              = "FANUC Series 32i";
            resp["spec"]                     = "5505";
            resp["x_relative"]               = null;
            resp["z_relative"]               = null;
            resp["c_relative"]               = null;
            resp["v_relative"]               = null;
            resp["x_absolute"]               = null;
            resp["z_absolute"]               = null;
            resp["c_absolute"]               = null;
            resp["v_absolute"]               = null;
            resp["x_machine"]                = null;
            resp["z_machine"]                = null;
            resp["c_machine"]                = null;
            resp["v_machine"]                = null;
            resp["x_distancetogo"]           = null;
            resp["z_distancetogo"]           = null;
            resp["c_distancetogo"]           = null;
            resp["v_distancetogo"]           = null;
            resp["spindle_name"]             = null;
            resp["spindlenumber"]            = 1;
            resp["spindleload"]              = null;
            resp["spindlespeed"]             = null;
            resp["sv1_load"]                 = null;
            resp["sv2_load"]                 = null;
            resp["sv3_load"]                 = null;
            resp["sv4_load"]                 = null;
            resp["cnc_status"]               = null;
            resp["runningmode"]              = null;
            resp["currentrunningprogramnum"] = null;
            resp["mainprogramnumber"]        = null;
            resp["currentrunningncprogram"]  = null;
            resp["currenttoolgroupnum"]      = null;
            resp["currenttoolnum"]           = null;
            resp["svnum"]                    = null;
            resp["cnc_versionnum"]           = "3C7B5D01";
            resp["relfeedrate"]              = null;
            resp["alarm_status"]             = null;
            resp["alarmnum"]                 = null;
            resp["alarmtype"]                = null;
            resp["alarmmessage"]             = null;
            resp["operatingtime"]            = null;
            resp["circlingtime"]             = null;
            resp["cuttingtime"]              = null;
            resp["powerontime"]              = null;
            resp["totalparts"]               = null;
            resp["cnc_turn_on"]              = "开机";
            short code;

            {
                short         number = Focas1.MAX_AXIS;
                Focas1.ODBPOS pos    = new Focas1.ODBPOS();
                code = Focas1.cnc_rdposition(pHdl, -1, ref number, pos);
                if (code == 0)
                {
                    resp["x_relative"]     = pos.p1.rel.data * Math.Pow(10, -pos.p1.rel.dec);
                    resp["z_relative"]     = pos.p2.rel.data * Math.Pow(10, -pos.p2.rel.dec);
                    resp["c_relative"]     = pos.p4.rel.data * Math.Pow(10, -pos.p4.rel.dec);
                    resp["v_relative"]     = pos.p5.rel.data * Math.Pow(10, -pos.p5.rel.dec);
                    resp["x_absolute"]     = pos.p1.abs.data * Math.Pow(10, -pos.p1.abs.dec);
                    resp["z_absolute"]     = pos.p2.abs.data * Math.Pow(10, -pos.p2.abs.dec);
                    resp["c_absolute"]     = pos.p4.abs.data * Math.Pow(10, -pos.p4.abs.dec);
                    resp["v_absolute"]     = pos.p5.abs.data * Math.Pow(10, -pos.p5.abs.dec);
                    resp["x_machine"]      = pos.p1.mach.data * Math.Pow(10, -pos.p1.mach.dec);
                    resp["z_machine"]      = pos.p2.mach.data * Math.Pow(10, -pos.p2.mach.dec);
                    resp["c_machine"]      = pos.p4.mach.data * Math.Pow(10, -pos.p4.mach.dec);
                    resp["v_machine"]      = pos.p5.mach.data * Math.Pow(10, -pos.p5.mach.dec);
                    resp["x_distancetogo"] = pos.p1.dist.data * Math.Pow(10, -pos.p1.dist.dec);
                    resp["z_distancetogo"] = pos.p2.dist.data * Math.Pow(10, -pos.p2.dist.dec);
                    resp["c_distancetogo"] = pos.p4.dist.data * Math.Pow(10, -pos.p4.dist.dec);
                    resp["v_distancetogo"] = pos.p5.dist.data * Math.Pow(10, -pos.p5.dist.dec);
                }
            }
            {
                short number = 32;
                Focas1.ODBEXAXISNAME spindleName = new Focas1.ODBEXAXISNAME();
                code = Focas1.cnc_exaxisname(pHdl, 1, ref number, spindleName);
                if (code == 0)
                {
                    resp["spindle_name"] = spindleName.axname1;
                }
            }
            {
                Focas1.ODBSVLOAD sv    = new Focas1.ODBSVLOAD();
                Focas1.ODBSPLOAD sp    = new Focas1.ODBSPLOAD();
                short            a     = 6;
                short            code0 = Focas1.cnc_rdsvmeter(pHdl, ref a, sv);
                short            code1 = Focas1.cnc_rdspmeter(pHdl, 1, ref a, sp);
                if (code0 == 0)
                {
                    resp["sv1_load"] = sv.svload1.data;
                    resp["sv2_load"] = sv.svload2.data;
                    resp["sv3_load"] = sv.svload3.data;
                    resp["sv4_load"] = sv.svload4.data;
                }
                if (code1 == 0)
                {
                    resp["spindleload"] = sp.spload1.spload.data;
                }
            }
            {
                Focas1.ODBACT pindle = new Focas1.ODBACT();
                code = Focas1.cnc_acts(pHdl, pindle);
                if (code == 0)
                {
                    resp["spindlespeed"] = pindle.data;
                }
            }
            {
                Focas1.ODBST obst = new Focas1.ODBST();
                code = Focas1.cnc_statinfo(pHdl, obst);
                if (code == 0)
                {
                    resp["cnc_status"]   = obst.run;
                    resp["runningmode"]  = obst.tmmode;
                    resp["alarm_status"] = obst.alarm;
                }
            }
            {
                Focas1.ODBDY2_1 dynadata = new Focas1.ODBDY2_1();
                Focas1.ODBPRO   pro      = new Focas1.ODBPRO();
                Focas1.ODBSEQ   seqnum   = new Focas1.ODBSEQ();
                code = Focas1.cnc_rdprgnum(pHdl, pro);
                if (code == 0)
                {
                    resp["currentrunningprogramnum"] = pro.data;
                    resp["mainprogramnumber"]        = pro.mdata;
                }
                code = Focas1.cnc_rdseqnum(pHdl, seqnum);
                if (code == 0)
                {
                    resp["currentrunningncprogram"] = seqnum.data;
                }
            }
            {
                Focas1.ODBTG     btg = new Focas1.ODBTG();
                Focas1.ODBUSEGRP grp = new Focas1.ODBUSEGRP();
                code = Focas1.cnc_rdtlusegrp(pHdl, grp);
                short a = Convert.ToInt16(grp.use);
                code = Focas1.cnc_rdtoolgrp(pHdl, a, 20 + 20 * 1, btg);
                resp["currenttoolgroupnum"] = a;
                resp["currenttoolnum"]      = btg.data.data1.tool_num;
            }
            {
                Focas1.ODBSYS odbsys = new Focas1.ODBSYS();
                code = Focas1.cnc_sysinfo(pHdl, odbsys);
                if (code == 0)
                {
                    resp["svnum"] = odbsys.axes[1];
                }
            }
            {
                Focas1.ODBACT odbact = new Focas1.ODBACT();
                code = Focas1.cnc_actf(pHdl, odbact);
                if (code == 0)
                {
                    resp["relfeedrate"] = odbact.data;
                }
            }
            {
                short             b   = 8;
                Focas1.ODBALMMSG2 msg = new Focas1.ODBALMMSG2();
                code = Focas1.cnc_rdalmmsg2(pHdl, -1, ref b, msg);
                if (code == 0)
                {
                    resp["alarmnum"]     = msg.msg2.alm_no;
                    resp["alarmmessage"] = msg.msg2.alm_msg;
                }
            }
            {
                int alarm = 0;
                code = Focas1.cnc_alarm2(pHdl, out alarm);
                if (code == 0)
                {
                    resp["alarmtype"] = alarmTypeMapper.ContainsKey(alarm) ? alarmTypeMapper[alarm] : null;
                }
            }
            {
                Focas1.IODBPSD_1 param6751 = new Focas1.IODBPSD_1();
                Focas1.IODBPSD_1 param6752 = new Focas1.IODBPSD_1();
                code = Focas1.cnc_rdparam(pHdl, 6751, 0, 8, param6751);
                if (code == 0)
                {
                    int workingTimeSec = param6751.ldata / 1000;
                    code = Focas1.cnc_rdparam(pHdl, 6752, 0, 8, param6752);
                    if (code == 0)
                    {
                        int workingTimeMin = param6752.ldata;
                        int workingTime    = workingTimeMin * 60 + workingTimeSec;
                        resp["operatingtime"] = workingTime;
                    }
                }
            }
            {
                Focas1.IODBPSD_1 param6757 = new Focas1.IODBPSD_1();
                Focas1.IODBPSD_1 param6758 = new Focas1.IODBPSD_1();
                code = Focas1.cnc_rdparam(pHdl, 6757, 0, 8, param6757);
                if (code == 0)
                {
                    int circlingTimeSec = param6757.ldata / 1000;
                    code = Focas1.cnc_rdparam(pHdl, 6758, 0, 8, param6758);
                    if (code == 0)
                    {
                        int circlingTimeMin = param6758.ldata;
                        int workingTime     = circlingTimeMin * 60 + circlingTimeSec;
                        resp["circlingtime"] = workingTime;
                    }
                }
            }
            {
                Focas1.IODBPSD_1 param6753 = new Focas1.IODBPSD_1();
                Focas1.IODBPSD_1 param6754 = new Focas1.IODBPSD_1();
                code = Focas1.cnc_rdparam(pHdl, 6753, 0, 8 + 32, param6753);
                if (code == 0)
                {
                    int cuttingTimeSec = param6753.ldata / 1000;
                    code = Focas1.cnc_rdparam(pHdl, 6754, 0, 8 + 32, param6754);
                    if (code == 0)
                    {
                        int cuttingTimeMin = param6754.ldata;
                        int workingTime    = cuttingTimeMin * 60 + cuttingTimeSec;
                        resp["cuttingtime"] = workingTime;
                    }
                }
            }
            {
                Focas1.IODBPSD_1 param6750 = new Focas1.IODBPSD_1();
                code = Focas1.cnc_rdparam(pHdl, 6750, 0, 8 + 32, param6750);
                if (code == 0)
                {
                    int powerOnTime = param6750.ldata * 60;
                    resp["powerontime"] = powerOnTime;
                }
            }
            {
                Focas1.IODBPSD_1 param6712 = new Focas1.IODBPSD_1();
                code = Focas1.cnc_rdparam(pHdl, 6712, 0, 8, param6712);
                if (code == 0)
                {
                    resp["totalparts"] = param6712.ldata;
                }
            }
            return(resp.ToString());
        }