123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644 |
- using Aitex.Core.RT.DataCenter;
- using Aitex.Core.RT.Device;
- using Aitex.Core.RT.Device.Unit;
- using Aitex.Core.RT.Event;
- using Aitex.Core.RT.IOCore;
- using Aitex.Core.RT.OperationCenter;
- using Aitex.Core.RT.SCCore;
- using Aitex.Core.Util;
- using MECF.Framework.Common.Equipment;
- using MECF.Framework.Common.Event;
- using MECF.Framework.Common.SubstrateTrackings;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Xml;
- namespace Aitex.Core.RT.Device.Unit
- {
- public class IoBoat : BaseDevice, IDevice
- {
- public enum BoatPosition
- {
- Unknown,
- HomePosition,
- Position1,
- Position2,
- Position3,
- ProcessPosition,
- CapPosition,
- None,
- }
- public enum BoatRotationMode
- {
- None,
- Home,
- Continuously,
- Interval,
- Stop,
- }
- public enum BoatRotationDirection
- {
- Unknown,
- CW,
- CCW,
- }
- public IoBoat(string module, XmlElement node, string ioModule = "")
- {
- base.Module = string.IsNullOrEmpty(node.GetAttribute("module")) ? module : node.GetAttribute("module");
- base.Name = node.GetAttribute("id");
- base.Display = node.GetAttribute("display");
- base.DeviceID = node.GetAttribute("schematicId");
- _diZAxisAtHome = ParseDiNode("diZAxisAtHome", node, ioModule);
- _diZAxisAtProcessPosition = ParseDiNode("diZAxisAtProcessPosition", node, ioModule);
- _diZAxisAtPosition2 = ParseDiNode("diZAxisAtPosition2", node, ioModule);
- _diZAxisAtPosition1 = ParseDiNode("diZAxisAtPosition1", node, ioModule);
- _diHumanInterlockSensor = ParseDiNode("diHumanInterlockSensor", node, ioModule);
- _diZAxisMoving = ParseDiNode("diZAxisMoving", node, ioModule);
- _diRAxisMoving = ParseDiNode("diRAxisMoving", node, ioModule);
- _diRAxisHomed = ParseDiNode("diRAxisHomed", node, ioModule);
- _diError = ParseDiNode("diError", node, ioModule);
- _diServoOn = ParseDiNode("diServoOn", node, ioModule);
- _doZAxisBreak = ParseDoNode("doZAxisBreak", node, ioModule);
- _doZAxisMoveToPosition1 = ParseDoNode("doZAxisMoveToPosition1", node, ioModule);
- _doZAxisMoveToPosition2 = ParseDoNode("doZAxisMoveToPosition2", node, ioModule);
- _doZAxisMoveToProcessPosition = ParseDoNode("doZAxisMoveToProcessPosition", node, ioModule);
- _doZAxisMoveHomePosition = ParseDoNode("doZAxisMoveHomePosition", node, ioModule);
- _doRAxisRotateContinuous = ParseDoNode("doRAxisRotateContinuous", node, ioModule);
- _doRAxisRotateInterval = ParseDoNode("doRAxisRotateInterval", node, ioModule);
- _doRAxisRotateHome = ParseDoNode("doRAxisRotateHome", node, ioModule);
- _doRAxisRotateStop = ParseDoNode("doRAxisRotateStop", node, ioModule);
- _doZAxisStop = ParseDoNode("doZAxisStop", node, ioModule);
- _doRAxisCW = ParseDoNode("doRAxisCW", node, ioModule);
- _doRAxisCCW = ParseDoNode("doRAxisCCW", node, ioModule);
- _doELVPause = ParseDoNode("doELVPause", node, ioModule);
- _doResetError = ParseDoNode("doResetError", node, ioModule);
- _doServoOn = ParseDoNode("doServoOn", node, ioModule);
- _doPowerOn = ParseDoNode("doPowerOn", node, ioModule);
- _aiZAxisSpeed = ParseAiNode("aiZAxisSpeed", node, ioModule);
- _aiRAxisSpeed = ParseAiNode("aiRAxisSpeed", node, ioModule);
- _aiRAxisCurrentPos = ParseAiNode("aiRAxisCurrentPos", node, ioModule);
- _aiZAxisCurrentPos = ParseAiNode("aiZAxisCurrentPos", node, ioModule);
- _aiRAxisCurrentAngle = ParseAiNode("aiRAxisCurrentAngle", node, ioModule);
- _aoZAxisSpeed = ParseAoNode("aoZAxisSpeed", node, ioModule);
- _aoRAxisSpeed = ParseAoNode("aoRAxisSpeed", node, ioModule);
- _aoRAxisIntervalAngle = ParseAoNode("aoRAxisIntervalAngle", node, ioModule);
- }
- #region fields
- private DIAccessor _diHumanInterlockSensor;//1正常
- private DIAccessor _diZAxisAtPosition1;
- private DIAccessor _diZAxisAtPosition2;
- private DIAccessor _diZAxisAtProcessPosition;
- private DIAccessor _diZAxisAtHome;
- private DIAccessor _diZAxisMoving;
- private DIAccessor _diRAxisMoving;
- private DIAccessor _diRAxisHomed;
- private DIAccessor _diError;
- private DIAccessor _diServoOn;
- private DOAccessor _doZAxisBreak;
- private DOAccessor _doZAxisMoveToPosition1;
- private DOAccessor _doZAxisMoveToPosition2;
- private DOAccessor _doZAxisMoveToProcessPosition;
- private DOAccessor _doZAxisMoveHomePosition;
- private DOAccessor _doRAxisRotateContinuous;
- private DOAccessor _doRAxisRotateInterval;
- private DOAccessor _doRAxisRotateHome;
- private DOAccessor _doRAxisRotateStop;
- private DOAccessor _doZAxisStop;
- private DOAccessor _doRAxisCW;
- private DOAccessor _doRAxisCCW;
- private DOAccessor _doELVPause;
- private DOAccessor _doResetError;
- private DOAccessor _doServoOn;
- private DOAccessor _doPowerOn;
- private AIAccessor _aiZAxisSpeed;
- private AIAccessor _aiRAxisSpeed;
- private AIAccessor _aiRAxisCurrentPos;
- private AIAccessor _aiZAxisCurrentPos;
- private AIAccessor _aiRAxisCurrentAngle;
- private AOAccessor _aoZAxisSpeed;
- private AOAccessor _aoRAxisSpeed;
- private AOAccessor _aoRAxisIntervalAngle;
- private RD_TRIG _upLimitTrig = new RD_TRIG();
- private RD_TRIG _downLimitTrig = new RD_TRIG();
- private RD_TRIG _humanInterlockTrig = new RD_TRIG();
- #endregion
- public AlarmEventItem BoatZAxisMoveFailedForInterlock { get; set; }
- public AlarmEventItem BoatZAxisUpLimit { get; set; }
- public AlarmEventItem BoatZAxisDownLimit { get; set; }
- public AlarmEventItem BoatHumanInterlock { get; set; }
- public AlarmEventItem BoatZAxisMoveFailedForAutoShutterNotOpen { get; set; }
- public AlarmEventItem BoatZAxisMoveFailedForAutoShutterNotDown { get; set; }
- public AlarmEventItem BoatZAxisMoveFailedForTiltStatus { get; set; }
- public AlarmEventItem BoatZAxisMoveFailedForHumanInterlock { get; set; }
- public AlarmEventItem BoatZAxisMoveFailedForWaferRobotArmExtend { get; set; }
- public AlarmEventItem BoatZAxisMoveTimeOut { get; set; }
- public AlarmEventItem BoatRAxisMoveTimeOut { get; set; }
- public AlarmEventItem BoatRAxisMoveFailedForInterlock { get; set; }
- public AlarmEventItem BoatZAxisHomeFailed { get; set; }
- public AlarmEventItem BoatZAxisHomeTimeout { get; set; }
- public AlarmEventItem BoatRAxisHomeFailed { get; set; }
- public AlarmEventItem BoatRAxisHomeTimeout { get; set; }
- public bool IsZAxisMoving => _diZAxisMoving.Value;
- public bool IsRAxisRotating => _diRAxisMoving.Value;
- public bool IsRAxisAtHome => _diRAxisHomed.Value;
- public bool IsError => _diError.Value;
- public bool IsServoOn => _diServoOn.Value;
- public bool IsPause => _doELVPause.Value;
- #region properties
- public BoatPosition BoatCurrentPosition
- {
- get
- {
- if(_diZAxisAtHome != null && _diZAxisAtPosition1 != null && _diZAxisAtPosition2 != null && _diZAxisAtProcessPosition != null)
- {
- if (_diZAxisAtHome.Value && !_diZAxisAtPosition1.Value && !_diZAxisAtPosition2.Value && !_diZAxisAtProcessPosition.Value)
- return BoatPosition.HomePosition;
- if (!_diZAxisAtHome.Value && _diZAxisAtPosition1.Value && !_diZAxisAtPosition2.Value && !_diZAxisAtProcessPosition.Value)
- return BoatPosition.Position1;
- if (!_diZAxisAtHome.Value && !_diZAxisAtPosition1.Value && _diZAxisAtPosition2.Value && !_diZAxisAtProcessPosition.Value)
- return BoatPosition.Position2;
- if (!_diZAxisAtHome.Value && !_diZAxisAtPosition1.Value && !_diZAxisAtPosition2.Value && _diZAxisAtProcessPosition.Value)
- return BoatPosition.ProcessPosition;
- }
-
- return BoatPosition.Unknown;
- }
- }
- public BoatRotationMode BoatCurrentRotationMode
- {
- get
- {
- if (_diRAxisHomed != null && _diRAxisHomed.Value)
- return BoatRotationMode.Home;
- if (_doRAxisRotateContinuous != null && _doRAxisRotateContinuous.Value)
- return BoatRotationMode.Continuously;
- if (_doRAxisRotateInterval != null && _doRAxisRotateInterval.Value)
- return BoatRotationMode.Interval;
- return BoatRotationMode.Stop;
- }
- }
- #endregion
- public bool Initialize()
- {
- DATA.Subscribe(Name, "BoatPosition", () => BoatCurrentPosition.ToString());
- DATA.Subscribe(Name, "BoatCurrentRotationMode", () => BoatCurrentRotationMode.ToString());
- DATA.Subscribe(Name, "IsBoatRotating", () => _diRAxisMoving != null ?_diRAxisMoving.Value : false);
- DATA.Subscribe(Name, "BoatZAxisSpeed", () => _aiZAxisSpeed != null ? _aiZAxisSpeed.Value : 0);
- DATA.Subscribe(Name, "BoatRAxisSpeed", () => _aiRAxisSpeed != null ? _aiRAxisSpeed.Value : 0);
- DATA.Subscribe(Name, "BoatRAxisAngle", () => _aiRAxisCurrentAngle != null ? _aiRAxisCurrentAngle.Value : 0);
- DATA.Subscribe(Name, "BoatZCurrentPosition", () => _aiZAxisCurrentPos != null ? _aiZAxisCurrentPos.Value : 0);
- BoatZAxisMoveFailedForInterlock = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisMoveFailedForInterlock",
- Description = $"{Name} boat z axis move failed for interlock ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisUpLimit = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisUpLimit",
- Description = $"{Name} boat z axis up limit ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisDownLimit = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisDownLimit",
- Description = $"{Name} boat z axis down limit ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatHumanInterlock = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatHumanInterlock",
- Description = $"{Name} boat human interlock ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisMoveFailedForAutoShutterNotOpen = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisMoveFailedForAutoShutterNotOpen",
- Description = $"{Name} boat z axis move failed for auto shutter not open ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisMoveFailedForAutoShutterNotDown = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisMoveFailedForAutoShutterNotDown",
- Description = $"{Name} boat z axis move failed for auto shutter not down ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisMoveFailedForTiltStatus = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisMoveFailedForTiltStatus",
- Description = $"{Name} boat z axis move failed for tilt status ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisMoveFailedForHumanInterlock = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisMoveFailedForHumanInterlock",
- Description = $"{Name} boat z axis move failed for human interlock ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisMoveFailedForWaferRobotArmExtend = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisMoveFailedForWaferRobotArmExtend",
- Description = $"{Name} boat z axis move failed for wafer robot arm extend ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisMoveTimeOut = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisMoveTimeOut",
- Description = $"{Name} boat z axis move timeout ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatRAxisMoveTimeOut = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatRAxisMoveTimeOut",
- Description = $"{Name} boat r axis move timeout ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatRAxisMoveFailedForInterlock = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatRAxisMoveFailedForInterlock",
- Description = $"{Name} boat r axis move failed for interlock ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.Clear,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisHomeFailed = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisHomeFailed",
- Description = $"{Name} boat Z Axis home failed ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.ClearAndRetry,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatZAxisHomeTimeout = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatZAxisHomeTimeout",
- Description = $"{Name} boat Z Axis home timeout ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.ClearAndRetry,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatRAxisHomeFailed = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatRAxisHomeFailed",
- Description = $"{Name} boat R Axis home failed ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.ClearAndRetry,
- Category = "BoatAlarm",
- }, () => { return true; });
- BoatRAxisHomeTimeout = SubscribeAlarm(new AlarmEventItem()
- {
- EventEnum = $"{Name}.BoatRAxisHomeTimeout",
- Description = $"{Name} boat R Axis home timeout ",
- Solution = "No information available. Press[Clear] to delete alarm message.",
- Explaination = "No information available.",
- AutoRecovery = false,
- Level = EventLevel.Alarm,
- Action = EventAction.ClearAndRetry,
- Category = "BoatAlarm",
- }, () => { return true; });
- return true;
- }
- public void Monitor()
- {
- //if (_doZAxisBreak.Value != _diHumanInterlockSensor.Value)
- // _doZAxisBreak.SetValue(_diHumanInterlockSensor.Value, out _);
- //_upLimitTrig.CLK = !_diZAxisUpLimit.Value;
- //_downLimitTrig.CLK = !_diZAxisDownLimit.Value;
- //_humanInterlockTrig.CLK = !_diHumanInterlockSensor.Value;
- //if(_upLimitTrig.R)
- //{
- // SetZAxisStop();
- // _doZAxisMoveHomePosition.SetValue(false, out _);
- // _doZAxisMoveToPosition1.SetValue(false, out _);
- // _doZAxisMoveToPosition2.SetValue(false, out _);
- // _doZAxisMoveToProcessPosition.SetValue(false, out _);
- // BoatZAxisUpLimit.Set();
- //}
- //if (_downLimitTrig.R)
- //{
- // SetZAxisStop();
- // _doZAxisMoveHomePosition.SetValue(false, out _);
- // _doZAxisMoveToPosition1.SetValue(false, out _);
- // _doZAxisMoveToPosition2.SetValue(false, out _);
- // _doZAxisMoveToProcessPosition.SetValue(false, out _);
- // BoatZAxisDownLimit.Set();
- //}
- //if (_humanInterlockTrig.R)
- //{
- // SetZAxisStop();
- // _doZAxisMoveHomePosition.SetValue(false, out _);
- // _doZAxisMoveToPosition1.SetValue(false, out _);
- // _doZAxisMoveToPosition2.SetValue(false, out _);
- // _doZAxisMoveToProcessPosition.SetValue(false, out _);
- // BoatHumanInterlock.Set();
- //}
- }
- public void Reset()
- {
- }
- public void Terminate()
- {
- }
- public bool RAxisRotate(string mode, out string reason)
- {
- return RAxisRotate((BoatRotationMode)Enum.Parse(typeof(BoatRotationMode), mode), out reason);
- }
- public bool RAxisRotate(BoatRotationMode mode, out string reason)
- {
- reason = string.Empty;
- switch (mode)
- {
- case BoatRotationMode.None:
- return true;
- case BoatRotationMode.Home:
- _doRAxisRotateStop.SetValue(false, out _);
- _doRAxisRotateInterval.SetValue(false, out _);
- _doRAxisRotateContinuous.SetValue(false, out _);
- _doRAxisRotateHome.SetPulseValue(true, 1000);
- break;
- case BoatRotationMode.Continuously:
- _doRAxisRotateStop.SetValue(false, out _);
- _doRAxisRotateHome.SetValue(false, out _);
- _doRAxisRotateInterval.SetValue(false, out _);
- _doRAxisRotateContinuous.SetValue(true, out _);
- break;
- case BoatRotationMode.Interval:
- _doRAxisRotateStop.SetValue(false, out _);
- _doRAxisRotateHome.SetValue(false, out _);
- _doRAxisRotateContinuous.SetValue(false, out _);
- _doRAxisRotateInterval.SetValue(true, out _);
- break;
- case BoatRotationMode.Stop:
- _doRAxisRotateHome.SetValue(false, out _);
- _doRAxisRotateInterval.SetValue(false, out _);
- _doRAxisRotateContinuous.SetValue(false, out _);
- _doRAxisRotateStop.SetPulseValue(true, 1000);
- break;
- }
- return true;
- }
- public bool ZAxisMoveTo(string position, out string reason)
- {
- return ZAxisMoveTo((BoatPosition)Enum.Parse(typeof(BoatPosition), position), out reason);
- }
- public bool ZAxisMoveTo(BoatPosition position, out string reason)
- {
- reason = string.Empty;
- switch (position)
- {
- case BoatPosition.Unknown:
- reason = "invalid position";
- return false;
- case BoatPosition.HomePosition:
- _doZAxisStop.SetValue(false, out _);
- _doZAxisMoveToPosition1.SetValue(false, out _);
- _doZAxisMoveToPosition2.SetValue(false, out _);
- _doZAxisMoveToProcessPosition.SetValue(false, out _);
- _doZAxisMoveHomePosition.SetPulseValue(true, 1000);
- break;
- case BoatPosition.Position1:
- _doZAxisStop.SetValue(false, out _);
- _doZAxisMoveHomePosition.SetValue(false, out _);
- _doZAxisMoveToPosition2.SetValue(false, out _);
- _doZAxisMoveToProcessPosition.SetValue(false, out _);
- _doZAxisMoveToPosition1.SetPulseValue(true, 1000);
- break;
- case BoatPosition.Position2:
- _doZAxisStop.SetValue(false, out _);
- _doZAxisMoveHomePosition.SetValue(false, out _);
- _doZAxisMoveToPosition1.SetValue(false, out _);
- _doZAxisMoveToProcessPosition.SetValue(false, out _);
- _doZAxisMoveToPosition2.SetPulseValue(true, 1000);
- break;
- case BoatPosition.ProcessPosition:
- _doZAxisStop.SetValue(false, out _);
- _doZAxisMoveHomePosition.SetValue(false, out _);
- _doZAxisMoveToPosition1.SetValue(false, out _);
- _doZAxisMoveToPosition2.SetValue(false, out _);
- _doZAxisMoveToProcessPosition.SetPulseValue(true, 1000);
- break;
- }
- return true;
- }
- public void ZAxisMoveReset()
- {
- _doZAxisMoveHomePosition.SetValue(false, out _);
- _doZAxisMoveToPosition1.SetValue(false, out _);
- _doZAxisMoveToPosition2.SetValue(false, out _);
- _doZAxisMoveToProcessPosition.SetValue(false, out _);
- }
- public bool SetRAxisHome(out string reason)
- {
- reason = string.Empty;
- _doRAxisRotateStop.SetValue(false, out _);
- _doRAxisRotateInterval.SetValue(false, out _);
- _doRAxisRotateContinuous.SetValue(false, out _);
- _doRAxisRotateHome.SetPulseValue(true, 1000);
- return true;
- }
- public void SetZAxisSpeed(float speed)
- {
- _aoZAxisSpeed.Value = (short)speed;
- }
- public void SetRAxisSpeed(float speed)
- {
- _aoRAxisSpeed.Value = (short)speed;
- }
- public void SetRAxisIntervalPosition(float position)
- {
- _aoRAxisIntervalAngle.Value = (short)position;
- }
- public bool SetRAxisDirection(string direction, out string reason)
- {
- return SetRAxisDirection((BoatRotationDirection)Enum.Parse(typeof(BoatRotationDirection), direction), out reason);
- }
- public bool SetRAxisDirection(BoatRotationDirection direction, out string reason)
- {
- reason = string.Empty;
- switch (direction)
- {
- case BoatRotationDirection.Unknown:
- return true;
- case BoatRotationDirection.CW:
- _doRAxisCCW.SetValue(false, out reason);
- _doRAxisCW.SetValue(true, out reason);
- break;
- case BoatRotationDirection.CCW:
- _doRAxisCW.SetValue(false, out reason);
- _doRAxisCCW.SetValue(true, out reason);
- break;
- }
- return true;
- }
- public bool SetRAxisParam(float speed, string mode, string direction, out string reason)
- {
- reason = string.Empty;
- var md = (BoatRotationMode)Enum.Parse(typeof(BoatRotationMode), mode);
- if (md == BoatRotationMode.None)
- return true;
- _aoRAxisSpeed.Value = (short)speed;
- SetRAxisDirection(direction, out reason);
- RAxisRotate(md, out reason);
- return true;
- }
- public void SetZAxisStop()
- {
- _doZAxisMoveToPosition1.SetValue(false, out _);
- _doZAxisMoveToPosition2.SetValue(false, out _);
- _doZAxisMoveToProcessPosition.SetValue(false, out _);
- _doZAxisMoveHomePosition.SetValue(false, out _);
- _doZAxisStop.SetPulseValue(true, 1000);
- }
- public void SetRAxisStop()
- {
- _doRAxisRotateHome.SetValue(false, out _);
- _doRAxisRotateInterval.SetValue(false, out _);
- _doRAxisRotateContinuous.SetValue(false, out _);
- _doRAxisRotateStop.SetPulseValue(true, 1000);
- }
- public void SetReset()
- {
- _doResetError.SetPulseValue(true, 1000);
- }
- public void SetServoOn()
- {
- _doServoOn.SetValue(true, out _);
- _doPowerOn.SetValue(true, out _);
- }
- public void SetPauseResume(bool isPause)
- {
- _doELVPause.SetValue(isPause, out _);
- }
- }
- }
|