Example #1
0
        /// <summary>
        /// 1 运行 2待机 3报警 4急停
        /// </summary>
        /// <param name="handle"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        private int GetStatus2(ushort handle, out string error)
        {
            error = "";
            Focas1.ODBST2 statbuf = new Focas1.ODBST2();
            short         nRet    = Focas1.cnc_statinfo2(handle, statbuf);

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

            int iState = 0;

            if (statbuf.emergency > 0) //急停 1 : EMerGency 2 : ReSET
            {
                iState = 4;
            }
            else if (statbuf.alarm == 1) //故障 3报警  1 : ALarM  2 : BATtery low
            {
                iState = 3;
            }
            else if (statbuf.run > 0
                     ) //运行中 1 : STOP 2 : HOLD 3 : STaRT  4 : MSTR(during retraction and re-positioning of tool retraction and recovery, and operation of JOG MDI)
            {
                iState = 1;
            }
            else //待机
            {
                iState = 2;
            }

            return(iState);
        }
Example #2
0
        public void DisConnect()
        {
            Service1 main = new Service1();

            Focas1.cnc_freelibhndl(flib_Handle);
            //main.eventLog1.WriteEntry("已終止連線");
        }
Example #3
0
        public static void Connect(string[] args)
        {
            // If we didn't provide an IP address, use HSSB, otherwise use Ethernet
            if (CNCHardware.HasHSSB())
            {
                _ret = Focas1.cnc_allclibhndl(out _handle);
            }
            else
            {
                string ipaddr = "";

                // If we specified an ip address, get it from the args
                if (args.Length > 0)
                {
                    ipaddr = args[0];
                }

                _ret = Focas1.cnc_allclibhndl3(ipaddr, 8193, 6, out _handle);
            }

            // Write the result to the console
            if (_ret == Focas1.EW_OK)
            {
                Console.WriteLine("We are connected!");
            }
            else
            {
                Console.WriteLine("There was an error connecting. Return value: " + _ret);
            }

            // Free the Focas handle
            Focas1.cnc_freelibhndl(_handle);
        }
Example #4
0
 private void Form1_FormClosed(object sender, FormClosedEventArgs e)
 {
     if (cncHandle != 0)
     {
         Focas1.cnc_freelibhndl(cncHandle);
     }
 }
Example #5
0
        //写K地址
        private short WritePmcKAddr(ushort nAddr, short nRValue)
        {
            ushort _Flibhndl = 0;
            //建立连接
            short ret = Focas1.cnc_allclibhndl3(IP, 8193, 3, out _Flibhndl);

            if (ret == Focas1.EW_OK)                                                   //连接成功
            {
                Focas1.IODBPMC0 pmcdata1 = new Focas1.IODBPMC0();                      // for 1 Byte

                ret = Focas1.pmc_rdpmcrng(_Flibhndl, 7, 0, nAddr, nAddr, 9, pmcdata1); // D data of 1 Byte

                short value = pmcdata1.cdata[0];
                pmcdata1.cdata[0] = Convert.ToByte(nRValue);
                ret = Focas1.pmc_wrpmcrng(_Flibhndl, 9, pmcdata1);
                if (ret == 0)
                {
                    Focas1.cnc_freelibhndl(_Flibhndl);
                    return(ret);
                }
                else
                {
                    Focas1.cnc_freelibhndl(_Flibhndl);
                    throw new Exception("CNC写K地址写入出错" + ret);
                }
            }
            else
            {
                throw new Exception("CNC写K地址出错连接失败" + ret);
            }
        }
Example #6
0
        private string WritePmcLong(ushort flib, short adr_type, ushort adr, string data)
        {
            int  ltemp;
            bool ret_b = int.TryParse(data, out ltemp);

            if (ret_b == false)
            {
                return("写入PMC信号失败,数据格式错误");
            }

            Focas1.IODBPMC2 buf = new Focas1.IODBPMC2();
            buf.ldata    = new int[5];
            buf.ldata[0] = ltemp;
            buf.datano_s = (short)adr;
            buf.datano_e = (short)(adr + 3);
            buf.type_a   = adr_type;
            buf.type_d   = 2;
            var ret = Focas1.pmc_wrpmcrng(flib, 12, buf);

            if (ret != 0)
            {
                return($"写入PMC信号失败,返回:{ret}");
            }

            return(null);
        }
Example #7
0
 private void btnConnect_Click(object sender, EventArgs e)
 {
     try
     {
         Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_allclibhndl3("192.168.18.8", 8193, 5, out cncHandle); //¨ú±olibrary handle
         //Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(textBox_IP.Text, 8193, 5, out cncHandle); //¨ú±olibrary handle
         //textBox_IP
         if (ret != Focas1.focas_ret.EW_OK)
         {
             this.rdpara.Enabled      = false;
             this.btnFileDown.Enabled = false;
             this.btnUpload.Enabled   = false;
             throw new Exception("Can't connect to CNC controller!");
         }
         else
         {
             this.rdpara.Enabled      = true;
             this.btnFileDown.Enabled = true;
             this.btnUpload.Enabled   = true;
             btnConnect.Enabled       = false;
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Message");
     }
 }
Example #8
0
        /// <summary>
        /// Read Machine Position Data (MachineAbsolutePosition)
        /// </summary>
        /// <param name="axisNo">Axis No</param>
        private void CallAbsolute(short axisNo)
        {
            try
            {
                Focas1.ODBAXIS odbAxis = new Focas1.ODBAXIS();
                short          pAxisNo = (short)(axisNo + 1);

                focasReturn = Focas1.cnc_absolute2(fanucHandle, pAxisNo, 8, odbAxis);

                if (focasReturn == EW_OK)
                {
                    base.SetDictionary(base.AXIS_ABS, axisNo, Convert.ToDouble(odbAxis.data[0]) / 1000);

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallAbsolute(AxisNo = {2}) Success :: ABS = {1}", this.ToString(), base.AXIS_ABS[axisNo], axisNo));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallAbsolute(AxisNo = {1}) Fail :: SocketError", this.ToString(), axisNo));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallAbsolute(AxisNo = {2}) Fail :: ReturnCode = {1}", this.ToString(), focasReturn, axisNo));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallAbsolute(AxisNo = {2}) Exception :: Message = {1}", this.ToString(), ex.Message, axisNo));
            }
        }
Example #9
0
        /// <summary>
        /// Read Machine Spindle Loadmeter Data (MachineSpindleLoad)
        /// </summary>
        private void CallRdSpMeter()
        {
            try
            {
                Focas1.ODBSPLOAD odbSpLoad    = new Focas1.ODBSPLOAD();
                short            spindleCount = 1;

                focasReturn = Focas1.cnc_rdspmeter(fanucHandle, 0, ref spindleCount, odbSpLoad);

                if (focasReturn == EW_OK)
                {
                    base.SetDictionary(base.SPINDLE_LOAD, 0, odbSpLoad.spload1.spload.data);

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdSpMeter() Success :: SPINDLE LOAD = {1}", this.ToString(), base.SPINDLE_LOAD[0]));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdSpMeter() Fail :: SocketError", this.ToString()));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdSpMeter() Fail :: ReturnCode = {1}", this.ToString(), focasReturn));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdSpMeter() Exception :: Message = {1}", this.ToString(), ex.Message));
            }
        }
Example #10
0
        /// <summary>
        /// Read Machine Spindle RPM Data (MachineSpindle)
        /// </summary>
        private void CallActS()
        {
            try
            {
                Focas1.ODBACT odbAct = new Focas1.ODBACT();

                focasReturn = Focas1.cnc_acts(fanucHandle, odbAct);

                if (focasReturn == EW_OK)
                {
                    base.SetDictionary(base.SPINDLE, 0, odbAct.data);

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallActS() Success :: STATUS = {1}", this.ToString(), base.SPINDLE[0]));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallActS() Fail :: SocketError", this.ToString()));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallActS() Fail :: ReturnCode = {1}", this.ToString(), focasReturn));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallActS() Exception :: Message = {1}", this.ToString(), ex.Message));
            }
        }
Example #11
0
        /// <summary>
        /// Read Machine Modal Data (M Code, T Code)
        /// </summary>
        /// <param name="typeNo">Modal Type No</param>
        private void CallModal(short typeNo)
        {
            try
            {
                Focas1.ODBMDL odbMdl = new Focas1.ODBMDL();

                focasReturn = Focas1.cnc_modal(fanucHandle, typeNo, 0, odbMdl);

                if (focasReturn == EW_OK)
                {
                    base.SetDictionary(base.MODAL_VALUE, typeNo, odbMdl.modal.aux.aux_data);

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallModal(TypeNo = {2}) Success :: VALUE = {1}", this.ToString(), base.MODAL_VALUE[typeNo], typeNo));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallModal(TypeNo = {1}) Fail :: SocketError", this.ToString(), typeNo));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallModal(TypeNo = {2}) Fail :: ReturnCode = {1}", this.ToString(), focasReturn, typeNo));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallModal(TypeNo = {2}) Exception :: Message = {1}", this.ToString(), ex.Message, typeNo));
            }
        }
Example #12
0
        /// <summary>
        /// Read Machine Status Data (MachineMode, MachineStatus, MachineAlarmStatus)
        /// </summary>
        private void CallStatInfo()
        {
            try
            {
                Focas1.ODBST odbSt = new Focas1.ODBST();

                focasReturn = Focas1.cnc_statinfo(fanucHandle, odbSt);

                if (focasReturn == EW_OK)
                {
                    base.MODE   = GetDescription(machineType, "MODE", odbSt.aut.ToString());
                    base.STATUS = GetDescription(machineType, "STATUS", odbSt.run.ToString());
                    base.ALARM  = GetDescription(machineType, "ALARM", odbSt.alarm.ToString());

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Success :: MODE = {1}", this.ToString(), base.MODE));
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Success :: STATUS = {1}", this.ToString(), base.STATUS));
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Success :: ALARM = {1}", this.ToString(), base.ALARM));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Fail :: SocketError", this.ToString()));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Fail :: ReturnCode = {1}", this.ToString(), focasReturn));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Exception :: Message = {1}", this.ToString(), ex.Message));
            }
        }
Example #13
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));
            }
        }
Example #14
0
        //主程序名称
        private string GetProgComment(ushort handle, out string error)
        {
            error = "";
            //获得当前主程序号
            Focas1.ODBM macro = new Focas1.ODBM();
            short       nRet  = Focas1.cnc_rdmacro(handle, 4000, 10, macro);

            if (nRet == Focas1.EW_OK)
            {
                Focas1.PRGDIR3 buf1      = new Focas1.PRGDIR3();
                double         dSmall    = macro.dec_val * 1.0;
                double         top_prog  = macro.mcr_val / Math.Pow(10.0, dSmall);
                int            ntop_prog = Convert.ToInt32(top_prog);
                short          num_prog  = 1;
                nRet = Focas1.cnc_rdprogdir3(handle, 1, ref ntop_prog, ref num_prog, buf1);

                if (nRet == Focas1.EW_OK)
                {
                    return(buf1.dir1.comment);
                }
            }

            error = $"读取错误!错误代号[{nRet}]";
            return("");
        }
Example #15
0
        private string WritePmcByte(ushort flib, short adr_type, ushort adr, string data)
        {
            byte btemp;
            bool ret_b = byte.TryParse(data, out btemp);

            if (ret_b == false)
            {
                return("写入PMC信号失败,数据格式错误");
            }

            Focas1.IODBPMC0 buf = new Focas1.IODBPMC0();
            buf.cdata    = new byte[12];
            buf.cdata[0] = btemp;
            buf.datano_s = (short)adr;
            buf.datano_e = (short)adr;
            buf.type_a   = adr_type;
            buf.type_d   = 0;
            var ret = Focas1.pmc_wrpmcrng(flib, 9, buf);

            ret = Focas1.pmc_wrpmcrng(flib, 9, buf);
            if (ret != 0)
            {
                return($"写入PMC信号失败,返回:{ret}");
            }

            return(null);
        }
Example #16
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));
            }
        }
Example #17
0
        private string WritePmcWord(ushort flib, short adr_type, ushort adr, string data)
        {
            short itemp;
            bool  ret_b = short.TryParse(data, out itemp);

            if (ret_b == false)
            {
                return("写入PMC信号失败,数据格式错误");
            }

            Focas1.IODBPMC1 buf = new Focas1.IODBPMC1();
            buf.idata    = new short[5];
            buf.idata[0] = itemp;
            buf.datano_s = (short)adr;
            buf.datano_e = (short)(adr + 1);
            buf.type_a   = adr_type;
            buf.type_d   = 1;
            var ret = Focas1.pmc_wrpmcrng(flib, 10, buf);

            if (ret != 0)
            {
                return($"写入PMC信号失败,返回:{ret}");
            }

            return(null);
        }
Example #18
0
        /// <summary>
        /// Read Machine System Macro Data
        /// </summary>
        /// <param name="macroNo">System Macro No</param>
        private void CallRdMacro(short macroNo)
        {
            try
            {
                Focas1.ODBM odbM = new Focas1.ODBM();

                focasReturn = Focas1.cnc_rdmacro(fanucHandle, macroNo, 10, odbM);

                if (focasReturn == EW_OK)
                {
                    base.SetDictionary(base.MACRO_VALUE, macroNo, odbM.mcr_val / Math.Pow((double)10, (double)odbM.dec_val));

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdMacro(MacroNo = {2}) Success :: VALUE = {1}", this.ToString(), base.MACRO_VALUE[macroNo], macroNo));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdMacro(MacroNo = {1}) Fail :: SocketError", this.ToString(), macroNo));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdMacro(MacroNo = {2}) Fail :: ReturnCode = {1}", this.ToString(), focasReturn, macroNo));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdMacro(MacroNo = {2}) Exception :: Message = {1}", this.ToString(), ex.Message, macroNo));
            }
        }
Example #19
0
        private void btnSetParam_Click(object sender, EventArgs e)
        {
            short len    = 0;
            short prmNum = 20;
            //short type = 25;//11001
            //byte[] val = new byte[3] {1,2,3};
            byte value = 5;

            //if((type & 4) == 0)
            //{
            len = 4 + 1;//datano(2 bytes)+type(2 bytes)+cdata(1 byte)
            //prmData.datano = prmNum;
            //prmData.type = type;
            prmDataNoAxis.datano = prmNum;
            prmDataNoAxis.type   = 0;//No axis

            //if ((type & 3) == 1)
            //{
            //for (int i = 0; i < 3; i++)
            //   prmData.cdatas[i] = val[i];
            prmDataNoAxis.cdata = value;
            //}

            //Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_wrparam(cncHandle, len, prmData);
            Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_wrparam(cncHandle, len, prmDataNoAxis);
            if (ret == Focas1.focas_ret.EW_OK)
            {
                btnSetParam.Enabled = false;
            }
            //}
        }
Example #20
0
        /// <summary>
        /// Connect To Machine Using Library Method
        /// </summary>
        public override void Connect()
        {
            try
            {
                if (!base.isConnect)
                {
                    focasReturn = Focas1.cnc_allclibhndl3(commInfo.machineIp, commInfo.machinePort, 5, out fanucHandle);

                    if (focasReturn == EW_OK)
                    {
                        LogHandler.WriteLog(base.division, string.Format("{0} :: Connect() Success", this.ToString()));

                        base.isConnect = true;
                    }
                    else
                    {
                        LogHandler.WriteLog(base.division, string.Format("{0} :: Connect() Fail :: ReturnCode = {1}", this.ToString(), focasReturn));

                        base.isConnect = false;
                    }
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: Connect() Exception :: Message = {1}", this.ToString(), ex.Message));

                base.isConnect = false;
            }
        }
Example #21
0
        private void btnToolWrite_Click(object sender, EventArgs e)
        {
            StringBuilder sbShape = new StringBuilder();
            short         ret     = Focas1.cnc_wrtofs(cncHandle, 1, 1, 8, 1);//ÐÎ×´ XÖá


            ret = Focas1.cnc_wrtofs(cncHandle, 1, 3, 8, 1); //ÐÎ×´ ZÖá

            ret = Focas1.cnc_wrtofs(cncHandle, 1, 9, 8, 1); //ÐÎ×´ YÖá


            ret = Focas1.cnc_wrtofs(cncHandle, 1, 5, 8, 1);//ÐÎ×´ °ë¾¶R


            ret = Focas1.cnc_wrtofs(cncHandle, 1, 7, 8, 1);//ÐÎ×´ T


            //Ä¥Ëð²¹³¥¶ÁÈ¡
            ret = Focas1.cnc_wrtofs(cncHandle, 1, 0, 8, 1);//Ä¥Ëð XÖá


            ret = Focas1.cnc_wrtofs(cncHandle, 1, 2, 8, 1);//Ä¥Ëð ZÖá


            ret = Focas1.cnc_wrtofs(cncHandle, 1, 8, 8, 1);//Ä¥Ëð YÖá


            ret = Focas1.cnc_wrtofs(cncHandle, 1, 4, 8, 1);//Ä¥Ëð °ë¾¶R


            ret = Focas1.cnc_wrtofs(cncHandle, 1, 6, 8, 1);//Ä¥Ëð T

            MessageBox.Show("ÉèÖÃÍê³É");
        }
Example #22
0
        /// <summary>
        /// Read Machine Program No Data (MachineMainProgramNo, MachineCurrentProgramNo)
        /// </summary>
        private void CallRdPrgNum()
        {
            try
            {
                Focas1.ODBPRO odbPro = new Focas1.ODBPRO();

                focasReturn = Focas1.cnc_rdprgnum(fanucHandle, odbPro);

                if (focasReturn == EW_OK)
                {
                    base.MAIN_PRG_NO    = odbPro.mdata;
                    base.CURRENT_PRG_NO = odbPro.data;

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Success :: MAIN PRG NO = {1}", this.ToString(), base.MAIN_PRG_NO));
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Success :: CURRENT PRG NO = {1}", this.ToString(), base.CURRENT_PRG_NO));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Fail :: SocketError", this.ToString()));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Fail :: ReturnCode = {1}", this.ToString(), focasReturn));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Exception :: Message = {1}", this.ToString(), ex.Message));
            }
        }
Example #23
0
        //写M_macro地址
        private short WritePmcMacroAddr(short nAddr, int nRValue)
        {
            ushort _Flibhndl = 0;
            //建立连接
            short ret = Focas1.cnc_allclibhndl3(IP, 8193, 3, out _Flibhndl);

            if (ret == Focas1.EW_OK)//连接成功
            {
                ret = Focas1.cnc_wrmacro(_Flibhndl, nAddr, 10, nRValue * 10000, 4);
                if (ret == 0)
                {
                    Focas1.cnc_freelibhndl(_Flibhndl);
                    return(ret);
                }
                else
                {
                    Focas1.cnc_freelibhndl(_Flibhndl);
                    throw new Exception("CNC写M_macro地址写入出错" + ret);
                }
            }
            else
            {
                throw new Exception("CNC写M_macro地址出错连接失败" + ret);
            }
        }
Example #24
0
        /// <summary>
        /// Read Machine Program Name Data (MachineCurrentProgramName)
        /// </summary>
        private void CallExePrgName()
        {
            try
            {
                Focas1.ODBEXEPRG odbExePrg = new Focas1.ODBEXEPRG();

                focasReturn = Focas1.cnc_exeprgname(fanucHandle, odbExePrg);

                if (focasReturn == EW_OK)
                {
                    base.CURRENT_PRG_NAME = new string(odbExePrg.name);

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallExePrgName() Success :: CURRENT PRG NAME = {1}", this.ToString(), base.CURRENT_PRG_NAME));
                }
                else if (focasReturn == EW_SOCKET)
                {
                    base.isConnect = false;

                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallExePrgName() Fail :: SocketError", this.ToString()));
                }
                else
                {
                    LogHandler.WriteLog(base.division, string.Format("{0} :: CallExePrgName() Fail :: ReturnCode = {1}", this.ToString(), focasReturn));
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: CallExePrgName() Exception :: Message = {1}", this.ToString(), ex.Message));
            }
        }
Example #25
0
        /// <summary>
        /// 获得进给速度
        /// </summary>
        public string GetFeedingSpeed(ushort Flibhndl)
        {
            Focas1.ODBACT odbaxis = new Focas1.ODBACT();
            short         ret     = Focas1.cnc_actf(Flibhndl, odbaxis);

            return(odbaxis.data.ToString());
        }
Example #26
0
        /// <summary>
        /// DisConnect Machine Using Library Method
        /// </summary>
        public override void DisConnect()
        {
            try
            {
                if (base.isConnect)
                {
                    focasReturn = Focas1.cnc_freelibhndl(fanucHandle);

                    if (focasReturn == EW_OK)
                    {
                        LogHandler.WriteLog(base.division, string.Format("{0} :: DisConnect() Success", this.ToString()));

                        base.isConnect = false;
                    }
                    else
                    {
                        LogHandler.WriteLog(base.division, string.Format("{0} :: DisConnect() Fail :: ReturnCode = {1}", this.ToString(), focasReturn));

                        base.isConnect = true;
                    }
                }
            }
            catch (Exception ex)
            {
                LogHandler.WriteLog(base.division, string.Format("{0} :: DisConnect() Exception :: Message = {1}", this.ToString(), ex.Message));

                base.isConnect = true;
            }
        }
Example #27
0
        public double GetAllAxisAbsolutePositions()
        {
            if (_handle == 0)
            {
                return(0);
            }

            try
            {
                Focas1.ODBAXIS _axisPositionMachine = new Focas1.ODBAXIS();
                _ret = Focas1.cnc_absolute(_handle, -1, 4 + 4 * Focas1.MAX_AXIS, _axisPositionMachine);

                if (_ret != Focas1.EW_OK)
                {
                    return(_ret);
                }

                for (int i = 0; i < Focas1.MAX_AXIS; i++)
                {
                    Console.WriteLine(i.ToString() + " = " + _axisPositionMachine.data[i] / _scale);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            return(0);
        }
Example #28
0
        //PMC;adr_type;adr;num
        public Tuple <short, string> ReadPmcRange(ushort flib, short adr_type, ushort adr, int num, ref int[] data)
        {
            if (num > 1000)
            {
                return(new Tuple <short, string>(-100, "读取PMC信号错误,读取数量超限"));
            }
            if (data.Length < num)
            {
                return(new Tuple <short, string>(-100, "读取PMC信号错误,数据存储区域过小"));
            }

            Focas1.IODBPMC2 buf = new Focas1.IODBPMC2();
            buf.ldata = new int[num];
            ushort adr_end = (ushort)(adr + num * 4 - 1);
            ushort len     = (ushort)(8 + 8 * num);
            var    ret     = Focas1.pmc_rdpmcrng(flib, adr_type, 2, adr, adr_end, len, buf);

            if (ret == 0)
            {
                Array.Copy(buf.ldata, 0, data, 0, num);
                //  buf.ldata.Copy(data, 0);
                return(new Tuple <short, string>(0, null));
            }

            return(new Tuple <short, string>(ret, $"读取PMC信号错误,返回:{ret}"));
        }
        //Delete the NC Program from CNC Machine
        internal string DeleteProgram(String MacInv, string programNo)
        {
            string retStatus = null;

            Focas1.focas_ret retallclibhndl3 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out h);
            if (retallclibhndl3 == Focas1.focas_ret.EW_OK)
            {
                short ret;
                //MessageBox.Show("Inside DeleteMethod");
                String ProgCont = null;
                //GetProgramDataNC(programNo, out ProgCont);
                //SaveNCProg(ProgCont.ToString(), MacInv, programNo.ToString(), 2);
                short mainprogno = Convert.ToInt16(programNo.Substring(1));
                ret = Focas1.cnc_delete(h, mainprogno);
                switch (ret)
                {
                case 0:
                    retStatus = "Success";
                    break;

                case 5:
                    retStatus = "PROGRAM " + programNo + " doesn't exist.";
                    break;

                case 7:
                    retStatus = "Write protection on CNC side";
                    break;

                case -1:
                    retStatus = "Data is protected.";
                    break;

                default:
                    retStatus = "ErrorNo." + ret;
                    break;
                }
                Focas1.cnc_freelibhndl(h);
            }
            else
            {
                if (retallclibhndl3 == Focas1.focas_ret.EW_SOCKET)
                {
                    //retValueInt = (int)Focas1.focas_ret.EW_SOCKET;
                    retStatus = "Socket communication error. " + retallclibhndl3.ToString();
                }
                else if (retallclibhndl3 == Focas1.focas_ret.EW_NODLL)
                {
                    //retValueInt = (int)Focas1.focas_ret.EW_NODLL;
                    retStatus = "There is no DLL file for each CNC series . " + retallclibhndl3.ToString();
                }
                else if (retallclibhndl3 == Focas1.focas_ret.EW_HANDLE)
                {
                    //retValueInt = (int)Focas1.focas_ret.EW_HANDLE;
                    retStatus = "Allocation of handle number is failed. " + retallclibhndl3.ToString();
                }

                retStatus = retallclibhndl3.ToString();
            }
            return(retStatus);
        }
Example #30
0
        //释放Handel
        private bool FreeFocasHandle(out string error)
        {
            bool result = true;

            error = "";
            if (_Flibhndl != 0)
            {
                try
                {
                    short ret = Focas1.cnc_freelibhndl(_Flibhndl); //释放连接
                    if (ret != Focas1.EW_OK)                       //连接失败
                    {
                        result = false;
                        error  = "释放 Focas 失败. ret=" + ret;
                    }
                }
                catch (Exception ex)
                {
                    result = false;
                    error  = "释放 Focas 失败,错误为:" + ex.Message;
                }
            }

            _Flibhndl = 0;
            return(result);
        }