/// <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)); } }
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]); } ; }
// 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); } }
//工件计数 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); }
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); }
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()); }