private void ServoOn(int ID) { if (btn_StartNetwork.BackColor != Color.YellowGreen) { MessageBox.Show("Please start network first!!"); return; } int ret = 0; Button btn_startMove; Button btn_move; if (ID == 0) { btn_startMove = btn_ServoOn_0; btn_move = btn_Move_0; } else { btn_startMove = btn_ServoOn_1; btn_move = btn_Move_1; } if (btn_startMove.Text == "Servo on") { ret = NexCoeMotion.NEC_CoE402SetOperationMode(mAxisId[ID], 1, 5000); if (ret != 0) { MessageBox.Show("NEC_CoE402SetOperationMode failed" + ret.ToString()); return; } ret = NexCoeMotion.NEC_CoE402ServoOn(mAxisId[ID], 1); if (ret != 0) { MessageBox.Show("NEC_CoE402ServoOn failed" + ret.ToString()); return; } ret = NexCoeMotion.NEC_CoE402Halt(mAxisId[ID], 0); if (ret != 0) { MessageBox.Show("NEC_CoE402Halt failed" + ret.ToString()); return; } btn_startMove.Text = "Servo off"; } else { ret = NexCoeMotion.NEC_CoE402ServoOn(mAxisId[ID], 0); if (ret != 0) { MessageBox.Show("NEC_CoE402ServoOn failed" + ret.ToString()); return; } btn_startMove.Text = "Servo on"; btn_move.Text = "Move"; } }
private void btn_startNetwork_Click(object sender, EventArgs e) { int ret = 0; if ((tb_EniPath.Text == null) || (tb_EniPath.Text == "")) { MessageBox.Show("Please load ENI first"); return; } if (btn_StartNetwork.BackColor != Color.YellowGreen) { ret = NexECM.NEC_StartDriver();//初始化函式庫 if (ret != 0) { MessageBox.Show("NEC_StartDriver failed" + ret.ToString()); return; } ret = NexECM.NEC_ResetEcMaster(MASTER_ID);//重置EC-Master if (ret != 0) { MessageBox.Show("NEC_ResetEcMaster failed" + ret.ToString()); return; } ret = NexECM.NEC_SetParameter(MASTER_ID, 0, 1000);//設定EC-Master參數 if (ret != 0) { MessageBox.Show("NEC_SetParameter failed" + ret.ToString()); return; } ret = NexCoeMotion.NEC_CoE402Reset();//重置函式庫 if (ret != 0) { MessageBox.Show("NexCoeMotion failed" + ret.ToString()); return; } ret = NexECM.NEC_StartNetworkEx(MASTER_ID, mEniPath, 1, 5000);//啟動EC-Master if (ret != 0) { MessageBox.Show("NEC_StartNetworkEx failed" + ret.ToString()); return; } ret = NexECM.NEC_GetSlaveCount(MASTER_ID, ref mSlaveCnt);//讀取線上EC-Slaves數量(2) if (ret != 0) { MessageBox.Show("NEC_GetSlaveCount failed" + ret.ToString()); return; } if (TOTAL_AXIS != mSlaveCnt) { MessageBox.Show("Please check ENI file and TOTAL_AXIS value!!"); return; } for (ushort i = 0; i < mSlaveCnt; i++) { ret = NexCoeMotion.NEC_CoE402GetAxisId(MASTER_ID, i, ref mAxisId[i]);//讀取驅動器ID if (ret != 0) { MessageBox.Show("NEC_CoE402GetAxisId failed" + ret.ToString()); return; } ret = NexCoeMotion.NEC_CoE402UpdatePdoMapping(mAxisId[i]);//更新PDO設定 if (ret != 0) { MessageBox.Show("NEC_CoE402UpdatePdoMapping failed" + ret.ToString()); return; } ret = NexCoeMotion.NEC_CoE402FaultReset(mAxisId[i], 5000);//清除重製驅動器錯誤 if (ret != 0) { MessageBox.Show("NEC_CoE402FaultReset failed" + ret.ToString()); return; } } btn_StartNetwork.BackColor = Color.YellowGreen; Timer1.Enabled = true; //? btn_StartNetwork.Text = "Stop Network"; btn_Browse.Enabled = false; //? } else { Timer1.Enabled = false;//? for (int i = 0; i < mSlaveCnt; i++) { ret = NexCoeMotion.NEC_CoE402ServoOn(mAxisId[i], 0);//設定驅動器消磁(disable) if (ret != 0) { MessageBox.Show("NEC_CoE402ServoOn diaable failed" + ret.ToString()); return; } } btn_ServoOn_0.Text = "Servo on"; btn_Move_0.Text = "Move"; btn_ServoOn_1.Text = "Servo on"; btn_Move_1.Text = "Move"; ret = NexECM.NEC_StopNetwork(MASTER_ID, 5000); if (ret != 0) { MessageBox.Show("NEC_StopNetwork failed" + ret.ToString()); return; } ret = NexECM.NEC_StopDriver(); if (ret != 0) { MessageBox.Show("NEC_StopDriver failed" + ret.ToString()); return; } btn_StartNetwork.Text = "Start Network"; btn_StartNetwork.BackColor = Color.WhiteSmoke; btn_Browse.Enabled = true; } }