public static void ServoOff() { for (ushort i = 0; i <= Instance.MaxAxis - 1; i++) { MCCL.MCC_SetServoOff(i, 0); } }
private void MainForm_Load(object sender, EventArgs e) { CBox_JOG.SelectedIndex = 0; MCCL.MCC_EnableLimitSwitchCheck(0); //連線EMP-Z MCCLManager.ConnectEMPZ(); PB_PowerLight.Image = Image.FromFile(Application.StartupPath + "\\Picture\\Power_Light2.png"); //執行緒 bgwThred.RunWorkerAsync(); //將所有分頁加載入MainPanel MainPanel.Controls.Add(coordinate); MainPanel.Controls.Add(gCode); MainPanel.Controls.Add(information); MainPanel.Controls.Add(monitor); MainPanel.Controls.Add(tool); //顯示所有分頁 coordinate.Show(); gCode.Show(); information.Show(); monitor.Show(); tool.Show(); //僅先顯示coordinate頁面 coordinate.Visible = true; gCode.Visible = false; information.Visible = false; monitor.Visible = false; tool.Visible = false; }
public void MCC_DefineMachining() { for (ushort i = 0; i < MaxAxis; i++) { MCCL.MCC_DefineOrigin(i, Group); } }
public static void ServoOff() { for (ushort i = 0; i <= 7; i++) { MCCL.MCC_SetServoOff(i, 0); } }
/// <summary> /// 主軸鬆刀 /// </summary> public static void UnClampTool() { short setValue = 0; uint Size = 2; IntPtr nTargetValue = Marshal.AllocHGlobal(2); Marshal.WriteInt16(nTargetValue, setValue); MCCL.MCC_EcatCoeSdoDownload(0, 0x2213, 0, nTargetValue, Size); }
public void SpindleOff() { short setValue = 1; uint Size = 2; IntPtr nTargetValue = Marshal.AllocHGlobal(2); Marshal.WriteInt16(nTargetValue, setValue); MCCL.MCC_EcatCoeSdoDownload(0, 0x2215, 0, nTargetValue, Size); }
public void DisConnectController() { try { MCCL.MCC_Close(); } catch { } }
public static void MCC_GoHome() { //只有XYZ需GOHOME MCCL.MCC_EcatSetHomeAxis(1, 1, 1, 0, 0, 0, 0, 0); for (int i = 0; i < 8; i++) { MCCL.MCC_EcatSetHomeMode(28, i); MCCL.MCC_EcatSetHomeSwitchSpeed(1000, i); MCCL.MCC_EcatSetHomeZeroSpeed(50, i); } MCCL.MCC_EcatHome(); }
public void ConnectController() { byte[] tmp = Encoding.ASCII.GetBytes(this.ControllerIP); int result = MCCL.MCC_Init(ref tmp[0], ref cardIndex, 8); if (result < 0) { Debug.WriteLine("Connect Error"); } else if (result > 0) { Debug.WriteLine("Connect Sucessful"); } else { Debug.WriteLine("result =" + result.ToString()); } }
/// <summary> /// 這函式是使用非同步方式檢查 MCCLManager 內,所有的 MCCL Function 回傳值 /// </summary> /// <param name="returnValue"></param> #region 控制器 public static void ConnectEMPZ() { string ip = "192.168.0.2"; byte[] tmp = Encoding.ASCII.GetBytes(ip); int cardInx = 0; int QQ = MCCL.MCC_Init(ref tmp[0], ref cardInx, 8); if (QQ < 0) { MessageBox.Show("Connect Error!"); return; } else { MessageBox.Show(tmp[0].ToString()); } }
private void LimitStatus() { //MCCL.MCC_EnableLimitSwitchCheck(); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.X, 0, 0, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.Y, 0, 1, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.Z, 0, 2, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.X, 1, 0, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.Y, 1, 1, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.Z, 1, 2, MCCL.CARDINDEX0); Debug.Print("limit-:" + PositiveLimitSwitchStatus.X.ToString()); if (PositiveLimitSwitchStatus.X != 0) { PB_LimitX.Image = Image.FromFile(Application.StartupPath + "\\Picture\\Limit_Light2.png"); Debug.Print("Y"); } else { PB_LimitX.Image = Image.FromFile(Application.StartupPath + "\\Picture\\Limit_Light.png"); Debug.Print("N"); } }
public void SetParamSetMachineParameter() { MCCL.SYS_MAC_PARAM stMacParam = new MCCL.SYS_MAC_PARAM(); MCCL.SYS_ENCODER_CONFIG stENCConfig = new MCCL.SYS_ENCODER_CONFIG(); MCCL.SYS_HOME_CONFIG stHomeConfig = new MCCL.SYS_HOME_CONFIG(); //MCCL物件參數初始化_機構參數 stMacParam.wPosToEncoderDir = 0; stMacParam.dwPPR = 1048576; stMacParam.wRPM = 3000; stMacParam.dfPitch = 8.23; stMacParam.dfGearRatio = 1.0; stMacParam.dfHighLimit = 50000.0; stMacParam.dfLowLimit = -50000.0; stMacParam.dfHighLimitOffset = 0; stMacParam.dfLowLimitOffset = 0; stMacParam.wPulseMode = MCCL.DDA_FMT_PD; stMacParam.wPulseWidth = 100; stMacParam.wCommandMode = 0; stMacParam.wOverTravelUpSensorMode = 0; stMacParam.wOverTravelDownSensorMode = 0; for (ushort wChannel = 0; wChannel < MaxAxis; wChannel++) { MCCL.MCC_SetMacParam(ref stMacParam, wChannel, 0); } MCCL.MCC_CloseAllGroups(); Group = (ushort)MCCL.MCC_CreateGroup(0, 1, 2, -1, -1, -1, -1, -1, CardIndex); if (Group < 0) { Debug.WriteLine("Create Group Fail"); MCCL.MCC_CloseAllGroups(); } MCCL.MCC_SetSysMaxSpeed(MachineMaxSpeed); }
public static void StartEMPZ() { //設定使用Card MCCL.SYS_CARD_CONFIG stCardConfig = new MCCL.SYS_CARD_CONFIG(); stCardConfig.wCardType = 4; MCCL.ErrorCode eRet; eRet = MCCL.MCC_InitSystem(1, ref stCardConfig, 1); if (eRet < 0) { MessageBox.Show("MCC_InitSystem Error :" + eRet.ToString()); return; } else { // CmdQueueSize設定 MCCL.MCC_SetCmdQueueSize(50000, 0); int sixe = MCCL.MCC_GetCmdQueueSize(0); MessageBox.Show("" + sixe.ToString()); //座標軸設定 //MCCL.MCC_SetIncrease(nGroupIndex); //相對 MCCL.MCC_SetAbsolute(nGroupIndex); //絕對 int eerocode = MCCL.MCC_GetCoordType(nGroupIndex); if (eerocode == 0) { MessageBox.Show("IncreaseOpen"); } else if (eerocode == 1) { MessageBox.Show("AbsoluteOpen"); } //DryRun設定 DryRun可 //MCCL.MCC_EnableDryRun(); MCCL.MCC_DisableDryRun(); eerocode = MCCL.MCC_CheckDryRun(); if (eerocode == 0) { MessageBox.Show("dryrunopen"); } else if (eerocode == 1) { MessageBox.Show("dryrunclose"); } //其他設定 //MCCL.MCC_SetUnit(MCCL.UNIT_MM, 0); // coordinate unit : mm // 4.過形成保護 //MCCL.MCC_EnableLimitSwitchCheck(); //MCCL.MCC_DisableLimitSwitchCheck(); //MCCL.MCC_SetOverTravelCheck(); //MCCL.MCC_GetOverTravelCheck(); //硬體極限 //MCCL.MCC_EnableLimitSwitchCheck(0); //開關平滑模式 MCCL.MCC_EnableBlend(nGroupIndex); //MCCL.MCC_DisableBlend(nGroupIndex); MCCL.MCC_CheckBlend(nGroupIndex); // set line, arc and circle motion's accleration time MCCL.MCC_SetAccType('S', nGroupIndex); //ST兩種模式而已 MCCL.MCC_GetAccType(nGroupIndex); MCCL.MCC_SetAccTime(200, nGroupIndex); // set accleration time to be 300 ms MCCL.MCC_GetAccTime(nGroupIndex); // set line, arc and circle motion's deceleration time MCCL.MCC_SetDecType('S', nGroupIndex); MCCL.MCC_GetDecType(0); MCCL.MCC_SetDecTime(200, nGroupIndex); // set decleration time to be 300 ms MCCL.MCC_GetDecTime(nGroupIndex); MCCL.MCC_SetFeedSpeed(10, nGroupIndex); // set line, arc and circle motion's feed rate (unit : mm/sec) MCCL.MCC_SetPtPAccType('S', 'S', 'S', 'S', 'S', 'S', 'S', 'S', nGroupIndex); //MCCL.MCC_GetPtPAccType(); //MCCL.MCC_SetPtPAccTime(); //MCCL.MCC_GetPtPAccTime(); MCCL.MCC_SetPtPDecType('S', 'S', 'S', 'S', 'S', 'S', 'S', 'S', nGroupIndex); //MCCL.MCC_GetPtPDecType(); //MCCL.MCC_SetPtPDecTime(); //MCCL.MCC_GetPtPDecTime(); MCCL.MCC_SetPtPSpeed(10, nGroupIndex); // set line, arc and circle motion's feed rate (unit : mm/sec) MCCL.MCC_GetPtPSpeed(nGroupIndex); //MCCL.MCC_SetPGain(60, 60, 60, 60, 60, 60, 60, 60, 0); // set appropriate P Gain } }
/// <summary> /// 從MCCL獲取資訊 /// </summary> /// <returns></returns> public static void GetMCCLData() { MCCL.MCC_GetCurRefPos(ref CurRefPos.X, ref CurRefPos.Y, ref CurRefPos.Z, ref CurRefPos.U, ref CurRefPos.V, ref CurRefPos.W, ref CurRefPos.A, ref CurRefPos.B, 0); MCCL.MCC_GetCurPos(ref CurPos.X, ref CurPos.Y, ref CurPos.Z, ref CurPos.U, ref CurPos.V, ref CurPos.W, ref CurPos.A, ref CurPos.B, 0); MCCL.MCC_GetSpeed(ref speed.X, ref speed.Y, ref speed.Z, ref speed.U, ref speed.V, ref speed.W, ref speed.A, ref speed.B, 0); MCCL.MCC_GetENCValue(ref ENCValue.X, 0, MCCL.CARDINDEX0); MCCL.MCC_GetENCValue(ref ENCValue.Y, 1, MCCL.CARDINDEX0); MCCL.MCC_GetENCValue(ref ENCValue.Z, 2, MCCL.CARDINDEX0); MCCL.MCC_GetENCValue(ref ENCValue.U, 3, MCCL.CARDINDEX0); MCCL.MCC_GetENCValue(ref ENCValue.V, 4, MCCL.CARDINDEX0); MCCL.MCC_GetENCValue(ref ENCValue.W, 5, MCCL.CARDINDEX0); MCCL.MCC_GetENCValue(ref ENCValue.A, 6, MCCL.CARDINDEX0); MCCL.MCC_GetENCValue(ref ENCValue.B, 7, MCCL.CARDINDEX0); MCCL.MCC_GetPulsePos(ref PulsePos.X, ref PulsePos.Y, ref PulsePos.Z, ref PulsePos.U, ref PulsePos.V, ref PulsePos.W, ref PulsePos.A, ref PulsePos.B, 0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.X, 0, 0, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.Y, 0, 1, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.Z, 0, 2, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.U, 0, 3, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.V, 0, 4, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.W, 0, 5, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.A, 0, 6, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref PositiveLimitSwitchStatus.B, 0, 7, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.X, 1, 0, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.Y, 1, 1, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.Z, 1, 2, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.U, 1, 3, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.V, 1, 4, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.W, 1, 5, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.A, 1, 6, MCCL.CARDINDEX0); MCCL.MCC_GetLimitSwitchStatus(ref NegativeLimitSwitchStatus.B, 1, 7, MCCL.CARDINDEX0); MCCL.MCC_GetHomeSensorStatus(ref HomeSensorStatus.X, 0, MCCL.CARDINDEX0); MCCL.MCC_GetHomeSensorStatus(ref HomeSensorStatus.Y, 1, MCCL.CARDINDEX0); MCCL.MCC_GetHomeSensorStatus(ref HomeSensorStatus.Z, 2, MCCL.CARDINDEX0); MCCL.MCC_GetHomeSensorStatus(ref HomeSensorStatus.U, 3, MCCL.CARDINDEX0); MCCL.MCC_GetHomeSensorStatus(ref HomeSensorStatus.V, 4, MCCL.CARDINDEX0); MCCL.MCC_GetHomeSensorStatus(ref HomeSensorStatus.W, 5, MCCL.CARDINDEX0); MCCL.MCC_GetHomeSensorStatus(ref HomeSensorStatus.A, 6, MCCL.CARDINDEX0); MCCL.MCC_GetHomeSensorStatus(ref HomeSensorStatus.B, 7, MCCL.CARDINDEX0); //進給率 CurFeedSpeed = MCCL.MCC_GetCurFeedSpeed(0); MCCL.MCC_GetEmgcStopStatus(ref EmgcStopStatus, MCCL.CARDINDEX0); Error = MCCL.MCC_GetErrorCode(0).ToString(); //MCCL.MCC_GetErrorCount(); UpdateCoordinateSystem(); }
public static void MCC_DefineMachining() { MCCL.MCC_DefineOrigin(0, nGroupIndex); MCCL.MCC_DefineOrigin(1, nGroupIndex); MCCL.MCC_DefineOrigin(2, nGroupIndex); }
public void EndController() { MCCL.MCC_CloseAllGroups(); MCCL.MCC_CloseSystem(); }
public static void MCC_AbortMotionEx() { MCCL.MCC_AbortMotionEx(200, 0); }
public static void JogConti(sbyte axis, sbyte direction) { MCCL.MCC_JogConti(direction, 10, (char)axis, 0); }
/// <summary> /// 主軸轉速改變 /// </summary> /// <param name="num">改變參數</param> public static void ToolRPMChange(float num) { //0~10? MCCL.MCC_EcatSetDacOutputValue(4, 1, num); }
public void JogSpace(sbyte axis, sbyte direction) { MCCL.MCC_JogSpace(direction, 10, (char)axis, 0); }
public static void DisConnectEMPZ() { try { MCCL.MCC_Close(); } catch { } }
public static void SetMachineParameter() { // MotorBox /* * //MCCL使用所需物件 * MCCL.SYS_MAC_PARAM stMacParam = new MCCL.SYS_MAC_PARAM(); * MCCL.SYS_ENCODER_CONFIG stENCConfig = new MCCL.SYS_ENCODER_CONFIG(); * MCCL.SYS_HOME_CONFIG stHomeConfig = new MCCL.SYS_HOME_CONFIG(); * * //MCCL物件參數初始化_機構參數 * stMacParam.wPosToEncoderDir = 0; * stMacParam.dwPPR = 8192; * stMacParam.wRPM = 6000; * stMacParam.dfPitch = 1.0; * stMacParam.dfGearRatio = 1.0; * stMacParam.dfHighLimit = 50000.0; * stMacParam.dfLowLimit = -50000.0; * stMacParam.dfHighLimitOffset = 0; * stMacParam.dfLowLimitOffset = 0; * stMacParam.wPulseMode = MCCL.DDA_FMT_PD; * stMacParam.wPulseWidth = 100; * stMacParam.wCommandMode = 0; * stMacParam.wOverTravelUpSensorMode = 0; * stMacParam.wOverTravelDownSensorMode = 0; * * //MCCL物件參數初始化_編碼器參數 * stENCConfig.wType = MCCL.ENC_TYPE_AB; * stENCConfig.wAInverse = MCCL._NO_; * stENCConfig.wBInverse = MCCL._NO_; * stENCConfig.wCInverse = MCCL._NO_; * stENCConfig.wABSwap = MCCL._NO_; * stENCConfig.wInputRate = 4; * //set encoder input rate : x4 * * //MCCL物件參數初始化_原點復歸參數 * stHomeConfig.wMode = 3; * stHomeConfig.wDirection = 1; * stHomeConfig.wSensorMode = MCCL.SL_NORMAL_CLOSE; * stHomeConfig.nIndexCount = 2; * stHomeConfig.dfAccTime = 300; * stHomeConfig.dfDecTime = 300; * stHomeConfig.dfHighSpeed = 10; * stHomeConfig.dfLowSpeed = 2; * stHomeConfig.dfOffset = 0; * stHomeConfig.wPaddel0 = 0; * stHomeConfig.nPaddel1 = 0; */ //--------------------------------------------------------------------------------------------- // CNC MCCL.SYS_MAC_PARAM stMacParam = new MCCL.SYS_MAC_PARAM(); MCCL.SYS_ENCODER_CONFIG stENCConfig = new MCCL.SYS_ENCODER_CONFIG(); MCCL.SYS_HOME_CONFIG stHomeConfig = new MCCL.SYS_HOME_CONFIG(); //MCCL物件參數初始化_機構參數 stMacParam.wPosToEncoderDir = 0; stMacParam.dwPPR = 1048576; stMacParam.wRPM = 3000; stMacParam.dfPitch = 8.23; stMacParam.dfGearRatio = 1.0; stMacParam.dfHighLimit = 50000.0; stMacParam.dfLowLimit = -50000.0; stMacParam.dfHighLimitOffset = 0; stMacParam.dfLowLimitOffset = 0; stMacParam.wPulseMode = MCCL.DDA_FMT_PD; stMacParam.wPulseWidth = 100; stMacParam.wCommandMode = 0; stMacParam.wOverTravelUpSensorMode = 0; stMacParam.wOverTravelDownSensorMode = 0; //MCCL物件參數初始化_編碼器參數 stENCConfig.wType = MCCL.ENC_TYPE_AB; stENCConfig.wAInverse = MCCL._NO_; stENCConfig.wBInverse = MCCL._NO_; stENCConfig.wCInverse = MCCL._NO_; stENCConfig.wABSwap = MCCL._NO_; stENCConfig.wInputRate = 4; //set encoder input rate : x4 //MCCL物件參數初始化_原點復歸參數 stHomeConfig.wMode = 3; stHomeConfig.wDirection = 1; stHomeConfig.wSensorMode = MCCL.SL_NORMAL_CLOSE; stHomeConfig.nIndexCount = 2; stHomeConfig.dfAccTime = 300; stHomeConfig.dfDecTime = 300; stHomeConfig.dfHighSpeed = 0.1; stHomeConfig.dfLowSpeed = 0.0001; stHomeConfig.dfOffset = 0; stHomeConfig.wPaddel0 = 0; stHomeConfig.nPaddel1 = 0; for (ushort wChannel = 0; wChannel <= 7; wChannel++) { MCCL.MCC_SetMacParam(ref stMacParam, wChannel, 0); //MCCL.MCC_SetEncoderConfig(ref stENCConfig, wChannel, 0); //MCCL.MCC_SetHomeConfig(ref stHomeConfig, wChannel, 0); } // 設定 Group MCCL.MCC_CloseAllGroups(); nGroupIndex = (ushort)MCCL.MCC_CreateGroup(0, 1, 2, -1, -1, -1, -1, -1, MCCL.CARDINDEX0); if (nGroupIndex < 0) { MessageBox.Show("Create GroupIndex Fail"); MCCL.MCC_CloseAllGroups(); return; } //設定最大速度 MCCL.MCC_SetSysMaxSpeed(100); // set max. feed rate }
public static void EndEMPZ() { MCCL.MCC_CloseAllGroups(); MCCL.MCC_CloseSystem(); }