using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using AR; namespace Project { public partial class FMain { public Boolean[] DisableMotion; private void Mot_PositionChanged(object sender, arDev.MOT.PositionChangeEventArgs e) { eAxis mot = (eAxis)e.Axis; if (mot == eAxis.PX_PICK) { } //모터 위치가 변경되면 로더 컨트롤에 입력한다 hmi1.arMotorPosition[e.Axis] = e.Actual; } void mot_StatusChanged(object sender, arDev.MOT.StatusChangeEventArags e) { if (e.Axis >= SETTING.System.MotaxisCount) return; if (e.Status == arDev.MOT.MOTION_STATUS.SERVOALARM) hmi1.arMOT_Alm[e.Axis] = e.Value; else if (e.Status == arDev.MOT.MOTION_STATUS.LIMITN) hmi1.arMOT_LimDn[e.Axis] = e.Value; else if (e.Status == arDev.MOT.MOTION_STATUS.LIMITP) hmi1.arMOT_LimUp[e.Axis] = e.Value; else if (e.Status == arDev.MOT.MOTION_STATUS.ORIGIN) hmi1.arMOT_Origin[e.Axis] = e.Value; else if (e.Status == arDev.MOT.MOTION_STATUS.SERVROON) hmi1.arMOT_SVOn[e.Axis] = e.Value; } private void Mot_EndStatusChanged(object sender, arDev.MOT.EndStatusChangeEventArgs e) { if (AR.SETTING.Data.Enable_Log_MotStopReason == false) return; //210112 var bitstatus = Convert.ToString(e.Value, 2).PadLeft(16, '0'); List lst = new List(); for (byte i = 0; i < 15; i++) { var offset = (ushort)(Math.Pow(2, i)); if ((e.Value & offset) > 0) lst.Add((FS_END_STATUS)offset); } var reason = string.Join(",", lst); PUB.log.Add("MOT", $"Motor stop reason ({e.axis}): {reason}: bit={bitstatus}"); } void mot_HomeStatusChanged(object sender, arDev.MOT.HomeStatusChangeEventArgs e) { if (PUB.sm.Step == eSMStep.HOME_FULL) { hmi1.arHomeProgress[e.Axis] = e.Progress; if (e.NewStatus == arDev.MOT.HOME_RESULT.HOME_ERR_NOT_DETECT) { //홈 검색시 오류가 발생했다 사용자에게 알림을 해야 함 PUB.Result.SetResultMessage(eResult.MOTION, eECode.MOT_HSET, eNextStep.ERROR, e.Axis); } else if (e.NewStatus == arDev.MOT.HOME_RESULT.HOME_SUCCESS) { PUB.log.AddI(string.Format("Home search completed for axis: {0}", e.Axis)); } } } void mot_Message(object sender, arDev.MOT.MessageEventArgs e) { if (e.IsError) { if (e.Message.IndexOf("same position") != -1 || e.Message.IndexOf("inposition") != -1) { // Pub.log.AddAT("MOT:" + e.Message); } else PUB.log.AddE("MOT:" + e.Message); } else PUB.log.Add("MOT:" + e.Message); } } }