コード例 #1
0
        /// <summary>
        /// Read Machine Parameter Data
        /// </summary>
        /// <param name="paramNo">Parameter No</param>
        private void CallRdParam(short paramNo)
        {
            try
            {
                Focas1.IODBPSD_1 iOdbPsd = new Focas1.IODBPSD_1();

                focasReturn = Focas1.cnc_rdparam(fanucHandle, paramNo, 0, 8, iOdbPsd);

                if (focasReturn == EW_OK)
                {
                    base.SetDictionary(base.PARAM_VALUE, paramNo, iOdbPsd.ldata);

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdParam(ParamNo = {2}) Success :: VALUE = {1}", this.ToString(), base.PARAM_VALUE[paramNo], paramNo));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdParam(ParamNo = {1}) Fail :: SocketError", this.ToString(), paramNo));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdParam(ParamNo = {2}) Fail :: ReturnCode = {1}", this.ToString(), focasReturn, paramNo));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdParam(ParamNo = {2}) Exception :: Message = {1}", this.ToString(), ex.Message, paramNo));
            }
        }
コード例 #2
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]);
            }
            ;
        }
コード例 #3
0
        // Read Parameters
        private int ReadParameterValue(short para)
        {
            Focas1.IODBPSD_1 Param = new Focas1.IODBPSD_1();
            short            nRet2 = Focas1.cnc_rdparam(Flibhndl, para, -1, 4 + Focas1.MAX_AXIS, Param);

            if (nRet2 == 0)
            {
                return(Param.ldata);
            }
            else
            {
                throw new Exception("CNC读取Parameter出错" + nRet2);
            }
        }
コード例 #4
0
        //工件计数  num = 3901 工件数   3902 总工件数
        private long GetMacro(ushort handle, short num, out string error)
        {
            error = "";
            Focas1.IODBMR macror   = new Focas1.IODBMR();
            short         s_number = num;
            short         e_number = num;
            short         length   = 100;

            long  MacroValue = 0;
            short nRet       = Focas1.cnc_rdmacror(handle, s_number, e_number, length, macror);

            //short nRet2 = Focas1.cnc_rdparam(handle, 6712, -1, 4 + Focas1.MAX_AXIS, Param);

            if (nRet == Focas1.EW_OK)
            {
                MacroValue = macror.data.data1.mcr_val;
                for (int i = 0; i < macror.data.data1.dec_val; i++)
                {
                    MacroValue = MacroValue / 10;
                }
            }

            if ((MacroValue == 0) && (num == 3902))
            {
                //方法二工件总数
                Focas1.IODBPSD_1 Param = new Focas1.IODBPSD_1();
                nRet = Focas1.cnc_rdparam(handle, 6712, -1, 4 + Focas1.MAX_AXIS, Param);
                if (nRet == Focas1.EW_OK)
                {
                    MacroValue = Param.ldata;
                }
            }

            if (nRet != Focas1.EW_OK)
            {
                error = $"读取错误!错误代号[{nRet}]";
            }

            return(MacroValue);
        }
コード例 #5
0
        internal void ProgramReadError(ushort h, int readstart)
        {
            short ReadProgPar     = 3202;
            var   PreadProgParMe  = new Focas1.IODBPSD_1();
            var   readProgParMe   = new Focas1.IODBPSD_1();
            var   readProgParMeBU = new Focas1.IODBPSD_1();

            int ctti = Focas1.cnc_rdparam(h, ReadProgPar, 0, 4 + 8 * Focas1.MAX_AXIS, PreadProgParMe);

            var ProgParRead = PreadProgParMe.cdata;

            readProgParMeBU = PreadProgParMe;
            if (readstart == 1)
            {
                PreadProgParMe.cdata = 64;
            }
            else if (readstart == 0)
            {
                PreadProgParMe.cdata = 24;
            }

            ctti = Focas1.cnc_wrparam(h, 4 + 1 * 1, PreadProgParMe);
        }
コード例 #6
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());
        }