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); }
/// <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)); } }
public void Callback(object sender, EventArgs e) { MySqlConnection conn = connSql(); conn.Open(); #region cnc_machine Focas1.ODBAXIS odbaxis = new Focas1.ODBAXIS(); for (short i = 0; i < 3; i++) { int ret = Focas1.cnc_machine(Flibhndl, (short)(i + 1), 8, odbaxis); Console.WriteLine(odbaxis.data[0] * Math.Pow(10, -3)); listView1.Items.Add(new ListViewItem(i.ToString())); try { //MessageBox.Show("已经建立与数据库之间的连接"); string sql = "insert into user(username,password,registerdate) values('" + count++.ToString() + "','123','" + DateTime.Now + "')"; MySqlCommand cmd = new MySqlCommand(sql, conn); int result = cmd.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show("发生错误:" + ex.Message); //Console.WriteLine("发生错误:"+ex.Message); //在控制台下使用这种方式 } } #endregion }
//读待走移动量 #region cnc_distance void IMachineFanuc.GetDistanceToGo(double[] distanceCoor) { Focas1.ODBAXIS odbaxis_Distance = new Focas1.ODBAXIS(); for (short i = 1; i <= 4; i++) { Focas1.cnc_distance(mFlibhndl, i, 8, odbaxis_Distance); distanceCoor[i - 1] = odbaxis_Distance.data[0] * Math.Pow(10, -3); } }
//读取相对位置坐标 #region cnc_relative2 void IMachineFanuc.GetRelativeCoor(double[] relativeCoor) { Focas1.ODBAXIS odbaxis_RelativeCoor = new Focas1.ODBAXIS(); for (short i = 1; i <= 4; i++) { Focas1.cnc_relative2(mFlibhndl, i, 8, odbaxis_RelativeCoor); relativeCoor[i - 1] = odbaxis_RelativeCoor.data[0] * Math.Pow(10, -3); } }
//获取绝对位置坐标 #region cnc_absolute2 void IMachineFanuc.GetAbsoluteCoor(double[] absoluteCoor) { Focas1.ODBAXIS odbaxis_AbsoCoor = new Focas1.ODBAXIS(); for (short i = 1; i <= 4; i++) { Focas1.cnc_absolute2(mFlibhndl, i, 8, odbaxis_AbsoCoor); absoluteCoor[i - 1] = odbaxis_AbsoCoor.data[0] * Math.Pow(10, -3); } }
//获取机械坐标 #region cnc_machine void IMachineFanuc.GetMachineCoor(double[] machCoor) { Focas1.ODBAXIS odbaxis_MachCoor = new Focas1.ODBAXIS(); for (short i = 0; i <= 3; i++) { Focas1.cnc_machine(mFlibhndl, (short)(i + 1), 8, odbaxis_MachCoor); machCoor[i] = odbaxis_MachCoor.data[0] * Math.Pow(10, -3); } }
/// <summary> /// 获得机床相对坐标 /// </summary> public double GetRelativeCorX(ushort Flibhndl) //获得相对X轴 { Focas1.ODBST odbst = new Focas1.ODBST(); Focas1.ODBAXIS odbaxis = new Focas1.ODBAXIS(); short ret2 = Focas1.cnc_relative2(Flibhndl, 1, 16, odbaxis); string relative2X = odbaxis.data[0].ToString(); double x = Convert.ToDouble(relative2X) / 1000; return(x); }
public double GetMachineCor3(ushort Flibhndl) //Z轴 { double cor3; Focas1.ODBAXIS odbaxis = new Focas1.ODBAXIS(); short ret = Focas1.cnc_machine(Flibhndl, (short)(3), 8, odbaxis); cor3 = odbaxis.data[0] * Math.Pow(10, -3); return(cor3); }
public double GetMachineCor2(ushort Flibhndl) //Y轴 { double cor2; Focas1.ODBAXIS odbaxis = new Focas1.ODBAXIS(); short ret = Focas1.cnc_machine(Flibhndl, (short)(2), 8, odbaxis); cor2 = odbaxis.data[0] * Math.Pow(10, -4); return(cor2 * 10); }
public static void connectToFanucDevice(string ip, string port, int timeout) { int ret; int status; Focas1.ODBST fanbuf; // CNC Status ret = Focas1.cnc_allclibhndl3(ip, Convert.ToUInt16(port), timeout, out handleFanuc); if (ret != Focas1.EW_OK) { Console.WriteLine("Fanuc lathe connection error£¡"); return; } //coordination of the arm Focas1.ODBAXIS odbaxis = new Focas1.ODBAXIS(); for (short i = 0; i < 3; i++) { ret = Focas1.cnc_machine(handleFanuc, (short)(i + 1), 8, odbaxis); Console.WriteLine(odbaxis.data[0] * Math.Pow(10, -4)); } fanbuf = new Focas1.ODBST(); ret = Focas1.cnc_statinfo(handleFanuc, fanbuf); if (ret == Focas1.EW_OK) { status = fanbuf.run; switch (status) { case 0: Console.WriteLine("Fanuc lathe in shutdown mode£¡"); break; case 1: Console.WriteLine("Fanuc lathe in standby mode£¡"); break; case 2: Console.WriteLine("Fanuc lathe in hold mode£¡"); break; case 3: Console.WriteLine("Fanuc lathe in start mode£¡"); break; case 4: Console.WriteLine("Fanuc lathe in manual mode, retraction and re-positioning of tools"); break; } } }
public double MachinePosition() { if (_handle == 0) { return(0); } Focas1.ODBAXIS _axisPositionMachine = new Focas1.ODBAXIS(); _ret = Focas1.cnc_machine(_handle, 88, 8, _axisPositionMachine); if (_ret != Focas1.EW_OK) { return(_ret); } return(_axisPositionMachine.data[0] / _scale); }
public double RelativePosition() { if (_handle == 0) { return(0); } Focas1.ODBAXIS _axisPositionRelative = new Focas1.ODBAXIS(); _ret = Focas1.cnc_relative2(_handle, 88, 8, _axisPositionRelative); if (_ret != Focas1.EW_OK) { return(_ret); } return(_axisPositionRelative.data[0] / _scale); }
public double AbsolutePosition() { if (_handle == 0) { return(0); } Focas1.ODBAXIS _axisPositionAbsolute = new Focas1.ODBAXIS(); _ret = Focas1.cnc_absolute2(_handle, 88, 8, _axisPositionAbsolute); if (_ret != Focas1.EW_OK) { return(_ret); } return(_axisPositionAbsolute.data[0] / _scale); }
public Tuple <short, string> ReadParaReferencePositionRange(ushort flib, int start, int num, ref double[,] data) { if (start > 4 || start < 1) { return(new Tuple <short, string>(-100, "读取参考点数据错误,参考点参数数据设定错误")); } if ((start + num - 1) > 4 || (start + num - 1) < 1) { return(new Tuple <short, string>(-100, "读取参考点数据错误,参考点参数数据设定错误")); } if (data.Length < Focas1.MAX_AXIS * 4) { return(new Tuple <short, string>(-100, "读取参考点数据错误,数据存储区域过小")); } Focas1.ODBAXIS buf = new Focas1.ODBAXIS(); buf.data = new int[Focas1.MAX_AXIS]; short ret = -100; short s_number = (short)(start + 1239); short e_number = (short)(s_number + num - 1); short length = (short)((4 + 8 * Focas1.MAX_AXIS + 2) * num); Focas1.IODBPSD_0IF param = new Focas1.IODBPSD_0IF(); ret = Focas1.cnc_rdparar(flib, ref s_number, -1, ref e_number, ref length, param); if (ret == 0) { for (int i = 0; i < num; i++) { string strdata = "data" + (i + 1).ToString(); object obj = param.GetType().GetField(strdata).GetValue(param); var u = (Focas1.IODBPSD_U)obj.GetType().GetField("u").GetValue(obj); for (int j = 0; j < Focas1.MAX_AXIS; j++) { data[start + i - 1, j] = u.rdatas[j].prm_val * Math.Pow(-10, u.rdatas[j].dec_val); } } return(new Tuple <short, string>(0, null)); } return(new Tuple <short, string>(ret, $"读取参考点数据错误,返回:{ret}")); }
public Tuple <short, string> ReadPositionRange(ushort flib, CncPositionTypeEnum pos_type, ref int[] data) { if (data.Length < Focas1.MAX_AXIS) { return(new Tuple <short, string>(-100, "读取位置信息错误,数据存储区域过小")); } Focas1.ODBAXIS buf = new Focas1.ODBAXIS(); buf.data = new int[Focas1.MAX_AXIS]; short ret = -100; switch (pos_type) { case CncPositionTypeEnum.Absolute: ret = Focas1.cnc_absolute(flib, -1, 132, buf); break; case CncPositionTypeEnum.Machine: ret = Focas1.cnc_machine(flib, -1, 132, buf); break; case CncPositionTypeEnum.Relative: ret = Focas1.cnc_relative(flib, -1, 132, buf); break; case CncPositionTypeEnum.Distance: ret = Focas1.cnc_distance(flib, -1, 132, buf); break; default: ret = -100; break; } if (ret == 0) { buf.data.CopyTo(data, 0); return(new Tuple <short, string>(0, null)); } return(new Tuple <short, string>(ret, $"读取位置信号错误,返回:{ret}")); }