ソースを参照

GSI현장 업데이트

SK.Kang 6 年 前
コミット
8214fc76d6

+ 2 - 0
Dev/OHV/OHV.Common/Events/MessageEventArgs.cs

@@ -69,6 +69,7 @@ namespace OHV.Common.Events
             ReqMachineModeChg,
 
             ReqAddCommand,
+            ReqTest,
         }
 
         public eVCSMessageKind Kind { get; set; }
@@ -124,6 +125,7 @@ namespace OHV.Common.Events
         public eEventDir Dir { get; set; }
         public eAxisControlKind Kind { get; set; }
         public eJogMoveDir JogDir { get; set; }
+        public int JogVelocity { get; set; }
         public string AxisName { get; set; }
         public double CurrentPosition { get; set; }
 

+ 106 - 64
Dev/OHV/OHV.Module.Interactivity/PopUp/LockServoViewModel.cs

@@ -49,7 +49,7 @@ namespace OHV.Module.Interactivity.PopUp
             }
         }
 
-        double _jogVelocity;
+        double _jogVelocity = 5;
         public double JogVelocity
         {
             get { return this._jogVelocity; }
@@ -278,41 +278,65 @@ namespace OHV.Module.Interactivity.PopUp
             {
                 if ( r.Result == ButtonResult.OK )
                 {
-                    if ( this.SelectAxis == ConstString.AXIS_CARRIER_LOCK_LEFT )
+                    switch ( this.SelectedPosition )
                     {
-                        switch ( this.SelectedPosition )
-                        {
-                            case ConstString.TEACH_POSITION_LOCK:
-                                dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
-                                break;
-                            case ConstString.TEACH_POSITION_UNLOCK:
-                                dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
-                                break;
-                        }
-
-                        var sqlAxisLeft = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();
-                        //sqlAxisLeft.Value = this.CurrentLockLeft;
-                        sqlAxisLeft.Value = this.TargetPosLockLeft;
-                        sql.AxisPositionDataDAL.Update( sqlAxisLeft );
-                    }
-                    else if ( this.SelectAxis == ConstString.AXIS_CARRIER_LOCK_RIGHT )
-                    {
-                        switch ( this.SelectedPosition )
-                        {
-                            case ConstString.TEACH_POSITION_LOCK:
-                                dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
-                                break;
-                            case ConstString.TEACH_POSITION_UNLOCK:
-                                dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
-                                break;
-                        }
-                        var sqlAxisRight = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single();
-                        //sqlAxisRight.Value = this.CurrentLockRight;
-                        sqlAxisRight.Value = this.TargetPosLockRight;
-                        sql.AxisPositionDataDAL.Update( sqlAxisRight );
+                        case ConstString.TEACH_POSITION_LOCK:
+                            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+                            break;
+                        case ConstString.TEACH_POSITION_UNLOCK:
+                            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
+                            break;
                     }
-                    else
-                    { }
+
+                    var sqlAxisLeft = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();
+                    //sqlAxisLeft.Value = this.CurrentLockLeft;
+                    sqlAxisLeft.Value = this.TargetPosLockLeft;
+                    sql.AxisPositionDataDAL.Update( sqlAxisLeft );
+
+                    var sqlAxisRight = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single();
+                    //sqlAxisRight.Value = this.CurrentLockRight;
+                    sqlAxisRight.Value = this.TargetPosLockRight;
+                    sql.AxisPositionDataDAL.Update( sqlAxisRight );
+                    //if ( this.SelectAxis == ConstString.AXIS_CARRIER_LOCK_LEFT )
+                    //{
+                    //    switch ( this.SelectedPosition )
+                    //    {
+                    //        case ConstString.TEACH_POSITION_LOCK:
+                    //            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+                    //            break;
+                    //        case ConstString.TEACH_POSITION_UNLOCK:
+                    //            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
+                    //            break;
+                    //    }
+
+                    //    var sqlAxisLeft = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();
+                    //    //sqlAxisLeft.Value = this.CurrentLockLeft;
+                    //    sqlAxisLeft.Value = this.TargetPosLockLeft;
+                    //    sql.AxisPositionDataDAL.Update( sqlAxisLeft );
+
+                    //    var sqlAxisRight = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single();
+                    //    //sqlAxisRight.Value = this.CurrentLockRight;
+                    //    sqlAxisRight.Value = this.TargetPosLockRight;
+                    //    sql.AxisPositionDataDAL.Update( sqlAxisRight );
+                    //}
+                    //else if ( this.SelectAxis == ConstString.AXIS_CARRIER_LOCK_RIGHT )
+                    //{
+                    //    switch ( this.SelectedPosition )
+                    //    {
+                    //        case ConstString.TEACH_POSITION_LOCK:
+                    //            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+                    //            break;
+                    //        case ConstString.TEACH_POSITION_UNLOCK:
+                    //            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
+                    //            break;
+                    //    }
+                    //    var sqlAxisRight = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single();
+                    //    //sqlAxisRight.Value = this.CurrentLockRight;
+                    //    sqlAxisRight.Value = this.TargetPosLockRight;
+                    //    sql.AxisPositionDataDAL.Update( sqlAxisRight );
+                    //}
+                    //else
+                    //{ }
                 }
             } );
         }
@@ -327,9 +351,10 @@ namespace OHV.Module.Interactivity.PopUp
 
             var msg = new AxisControlEventArgs
             {
-                Dir = AxisControlEventArgs.eEventDir.ToBack ,
-                Kind = AxisControlEventArgs.eAxisControlKind.Jog ,
-                AxisName = this.SelectAxis ,
+                Dir = AxisControlEventArgs.eEventDir.ToBack,
+                Kind = AxisControlEventArgs.eAxisControlKind.Jog,
+                AxisName = this.SelectAxis,
+                JogVelocity = Convert.ToInt32( this.JogVelocity ),
             };
 
             if ( obj.ToString().Equals( "+" ) )
@@ -521,6 +546,7 @@ namespace OHV.Module.Interactivity.PopUp
                   {
                       var msg = new AxisControlEventArgs();
                       msg.Kind = AxisControlEventArgs.eAxisControlKind.Move;
+                      msg.AxisName = this.SelectAxis;
 
                       if ( SelectedPosition.Equals( ConstString.TEACH_POSITION_LOCK ) )
                           msg.PosDir = AxisControlEventArgs.ePosDir.Lock;
@@ -534,7 +560,7 @@ namespace OHV.Module.Interactivity.PopUp
 
         private void ExecuteSelectPosCommand( object obj )
         {
-            List<Common.Model.AxisPositionData> dataList = null;
+            List<Common.Model.AxisPositionData> positionList = null;
             this.SelectedPosition = obj.ToString();
 
             if ( obj.Equals( ConstString.TEACH_POSITION_LOCK ) )
@@ -548,34 +574,50 @@ namespace OHV.Module.Interactivity.PopUp
                 this.PosUnlockBrush = Brushes.Orange;
             }
 
-            if ( this.SelectAxis == ConstString.AXIS_CARRIER_LOCK_LEFT )
-            {
-                switch ( this.SelectedPosition )
-                {
-                    case ConstString.TEACH_POSITION_LOCK:
-                        dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
-                        break;
-                    case ConstString.TEACH_POSITION_UNLOCK:
-                        dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
-                        break;
-                }
-                var sqlAxisLeft = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();
-                this.TargetPosLockLeft = sqlAxisLeft.Value;
-            }
-            else
+
+            switch ( this.SelectedPosition )
             {
-                switch ( this.SelectedPosition )
-                {
-                    case ConstString.TEACH_POSITION_LOCK:
-                        dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
-                        break;
-                    case ConstString.TEACH_POSITION_UNLOCK:
-                        dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
-                        break;
-                }
-                var sqlAxisRight = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single();
-                this.TargetPosLockRight = sqlAxisRight.Value;
+                case ConstString.TEACH_POSITION_LOCK:
+                    positionList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+                    break;
+                case ConstString.TEACH_POSITION_UNLOCK:
+                    positionList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
+                    break;
             }
+            var sqlAxisLeft = positionList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();
+            this.TargetPosLockLeft = sqlAxisLeft.Value;
+
+            var sqlAxisRight = positionList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single();
+            this.TargetPosLockRight = sqlAxisRight.Value;
+
+            //if ( this.SelectAxis == ConstString.AXIS_CARRIER_LOCK_LEFT )
+            //{
+            //    switch ( this.SelectedPosition )
+            //    {
+            //        case ConstString.TEACH_POSITION_LOCK:
+            //            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+            //            break;
+            //        case ConstString.TEACH_POSITION_UNLOCK:
+            //            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
+            //            break;
+            //    }
+            //    var sqlAxisLeft = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();
+            //    this.TargetPosLockLeft = sqlAxisLeft.Value;
+            //}
+            //else
+            //{
+            //    switch ( this.SelectedPosition )
+            //    {
+            //        case ConstString.TEACH_POSITION_LOCK:
+            //            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+            //            break;
+            //        case ConstString.TEACH_POSITION_UNLOCK:
+            //            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
+            //            break;
+            //    }
+            //    var sqlAxisRight = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single();
+            //    this.TargetPosLockRight = sqlAxisRight.Value;
+            //}
         }
 
         private void ExecuteSelectAxisCommand( object obj )

+ 9 - 6
Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs

@@ -227,7 +227,7 @@ namespace OHV.Vehicle.Concept
             //this.VehicleIP = sql.ConfigDal.GetK( ConstString.Addr ).Value;
             this.OcsIP = sql.ConfigDal.GetK( ConstString.Addr ).Value;
 
-            //this.TestCommand = new DelegateCommand( ExecuteTextCommand );
+            this.TestCommand = new DelegateCommand( ExecuteTextCommand );
             this.NavigateCommand = new DelegateCommand<object>(this.Navigate);
             this.SystemOffCommand = new DelegateCommand(ExecuteSystemOffCommand);
             this.ChangeLanguage = new DelegateCommand(Execte_ChangeLanguage);
@@ -288,6 +288,8 @@ namespace OHV.Vehicle.Concept
                 Kind = VCSMessageEventArgs.eVCSMessageKind.ReqBuzzerStop ,
             };
             vcsMessagePublisher.Publish( msg );
+
+            this.ExecuteTextCommand();
         }
 
         private void Execte_ChangeLanguage()
@@ -495,12 +497,13 @@ namespace OHV.Vehicle.Concept
 
         private void ExecuteTextCommand()
         {
-            //var m = new VCSMessageEventArgs();
-            //m.MessageKey = 1234;
-            //m.MessageText = "Test Message";
-            //m.Command = new Common.Model.Command() { CommandID = "TestCommand123", Type = Common.Shareds.eCommandType.Move };
+            var m = new VCSMessageEventArgs();
+            m.MessageKey = "";
+            m.MessageText = "Test Message";
+            m.Kind = VCSMessageEventArgs.eVCSMessageKind.ReqTest;
+            m.Command = new Common.Model.Command() { CommandID = "TestCommand123", Type = Common.Shareds.eCommandType.Move };
 
-            //this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish(m);
+            this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish( m );
         }
 
         public void InitViewModel()

+ 1 - 1
Dev/OHV/OHV.Vehicle/OHV.Vehicle.csproj

@@ -54,7 +54,7 @@
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Remote|AnyCPU'">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>\\Ohv_001\VCS\</OutputPath>
+    <OutputPath>\\192.168.127.10\VCS\</OutputPath>
     <DefineConstants>TRACE;DEBUG</DefineConstants>
     <DebugType>full</DebugType>
     <PlatformTarget>AnyCPU</PlatformTarget>

+ 0 - 1
Dev/OHV/VehicleControlSystem/ControlLayer/Axis/EzAxis.cs

@@ -255,7 +255,6 @@ namespace VehicleControlSystem.ControlLayer.Axis
             else
                 uiVelocity = (uint)Convert.ToInt32( dVelocity / this.Config.Scale );
 
-            uiVelocity = 50;
             if( dir == E_JogMoveDir.Positive )
                 return EziMOTIONPlusELib.FAS_MoveVelocity( Config.AxisNo, uiVelocity, EziSERVO2PlusE.DIR_INC );
             else

+ 5 - 4
Dev/OHV/VehicleControlSystem/ControlLayer/Clamp.cs

@@ -294,10 +294,11 @@ namespace VehicleControlSystem.ControlLayer
 
         void ReqJog(AxisControlEventArgs arg)
         {
+            var velocity = arg.JogVelocity;
             if (arg.JogDir == AxisControlEventArgs.eJogMoveDir.Positive)
-                this.JogMove(arg.AxisName, E_JogMoveDir.Positive, 0);
+                this.JogMove(arg.AxisName, E_JogMoveDir.Positive, velocity);
             else
-                this.JogMove(arg.AxisName, E_JogMoveDir.Negative, 0);
+                this.JogMove(arg.AxisName, E_JogMoveDir.Negative, velocity);
         }
 
         void ReqOriginReturn(AxisControlEventArgs arg)
@@ -330,7 +331,7 @@ namespace VehicleControlSystem.ControlLayer
 
             if (arg.PosDir == AxisControlEventArgs.ePosDir.Lock)
             {
-                result = Lock_Sync();
+                result = this.MoveToLockPosition( arg.AxisName );
                 if (result != 0)
                 {
                     var alarm = this.sql.AlarmDAL.GetK(result);
@@ -347,7 +348,7 @@ namespace VehicleControlSystem.ControlLayer
             }
             else
             {
-                result = Unlock_Sync();
+                result = this.MoveToUnlockPosition( arg.AxisName );
                 if (result != 0)
                 {
                     var alarm = this.sql.AlarmDAL.GetK(result);

+ 11 - 10
Dev/OHV/VehicleControlSystem/ControlLayer/IO/EzIO.cs

@@ -92,7 +92,6 @@ namespace VehicleControlSystem.ControlLayer.IO
                     this.qQ.Enqueue(new QoDiconnected());
                 else
                     this.qQ.Enqueue(new QoConnected());
-
             }
         }
 
@@ -453,22 +452,23 @@ namespace VehicleControlSystem.ControlLayer.IO
                             if (EziMOTIONPlusELib.FAS_GetAllStatus(board.BoardID, ref axisDIn, ref axisDOut, ref axisStatus,
                                 ref cmdPos, ref actPos, ref posErr, ref actVel, ref posItemNo) == EziMOTIONPlusELib.FMM_OK)
                             {
+                                //if ( this._inPutIOList.Where( x => x.BoardNo == board.BoardID ).Count() <= 0 ) break;
 
-                                if ( this._inPutIOList.Where( x => x.BoardNo == board.BoardID ).Count() <= 0 ) break;
-
-                                var input = this._inPutIOList.Where( x => x.BoardNo == board.BoardID ).DefaultIfEmpty().ToList();
+                                var input = this._inPutIOList.Where( x => x.BoardNo == board.BoardID ).ToList();
                                 input.ForEach(i =>
                                {
                                    var isOn = Convert.ToBoolean(axisDIn & this.servoAmpInputBitOnMask[i.Index]) ? true : false;
-                                   if (i.IsBitOn != isOn) i.IsChanged = true;
+                                   if (i.IsBitOn != isOn) 
+                                       i.IsChanged = true;
                                    i.IsBitOn = isOn;
                                });
 
-                                var output = this._outPutIOList.Where(x => x.BoardNo == board.BoardID).DefaultIfEmpty().ToList();
+                                var output = this._outPutIOList.Where(x => x.BoardNo == board.BoardID).ToList();
                                 output.ForEach(o =>
                                {
                                    var isOn = Convert.ToBoolean(axisDOut & this.servoAmpOutputBitMask[o.Index]) ? true : false;
-                                   if (o.IsBitOn != isOn) o.IsChanged = true;
+                                   if (o.IsBitOn != isOn) 
+                                       o.IsChanged = true;
                                    o.IsBitOn = isOn;
                                });
                             }
@@ -482,11 +482,12 @@ namespace VehicleControlSystem.ControlLayer.IO
                             result = EziMOTIONPlusELib.FAS_GetInput(board.BoardID, ref inValue, ref latchValue);
                             if (result == EziMOTIONPlusELib.FMM_OK)
                             {
-                                var input = this._inPutIOList.Where(x => x.BoardNo == board.BoardID).DefaultIfEmpty().ToList();
+                                var input = this._inPutIOList.Where(x => x.BoardNo == board.BoardID).ToList();
                                 input.ForEach(i =>
                                {
                                    var isOn = Convert.ToBoolean(inValue & this.bitOnMask[i.Index]) ? true : false;
-                                   if (i.IsBitOn != isOn) i.IsChanged = true;
+                                   if (i.IsBitOn != isOn) 
+                                       i.IsChanged = true;
                                    i.IsBitOn = isOn;
                                });
                             }
@@ -502,7 +503,7 @@ namespace VehicleControlSystem.ControlLayer.IO
                             result = EziMOTIONPlusELib.FAS_GetOutput(board.BoardID, ref outValue, ref outStatus);
                             if (result == EziMOTIONPlusELib.FMM_OK)
                             {
-                                var output = this._outPutIOList.Where(x => x.BoardNo == board.BoardID).DefaultIfEmpty().ToList();
+                                var output = this._outPutIOList.Where(x => x.BoardNo == board.BoardID).ToList();
                                 output.ForEach(o =>
                                {
                                    var isOn = Convert.ToBoolean(outValue & this.bitOnMask[o.Index]) ? true : false;

+ 11 - 10
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -408,10 +408,10 @@ namespace VehicleControlSystem.ControlLayer
 
         private void ReqConveyor( DriveControlEventArgs args )
         {
-            if ( args.CvDir == DriveControlEventArgs.eCvDir.CW )
-                this.OnOffConveyor( true, true );
-            else if ( args.CvDir == DriveControlEventArgs.eCvDir.CCW )
+            if ( args.CvDir == DriveControlEventArgs.eCvDir.CW ) //Load
                 this.OnOffConveyor( true, false );
+            else if ( args.CvDir == DriveControlEventArgs.eCvDir.CCW ) //Unload
+                this.OnOffConveyor( true, true );
             else if ( args.CvDir == DriveControlEventArgs.eCvDir.STOP )
                 this.OnOffConveyor( false, false );
         }
@@ -688,6 +688,7 @@ namespace VehicleControlSystem.ControlLayer
         #region Control Action Method
         public void EStop()
         {
+            OnOffConveyor( false );
             //Clamp EStop
             this.clamp.ClampEStop();
             this.motion.EStop();
@@ -1036,17 +1037,17 @@ namespace VehicleControlSystem.ControlLayer
         /// (Run = true, CW = true CCW = false)
         /// </summary>
         /// <param name="isOn"></param>
-        /// <param name="isCW"></param>
+        /// <param name="isLoad">bit On 시 Unload 방향 진행.</param>
         /// <returns></returns>
-        int OnOffConveyor( bool isOn, bool isCW = false )
+        int OnOffConveyor( bool isOn, bool isLoad = false )
         {
             if ( IsInverterError() )
                 return 16;
 
-            if ( isCW )
-                this.iO.OutputOn( "OUT_CV_CWCCW" );
-            else
+            if ( isLoad )
                 this.iO.OutputOff( "OUT_CV_CWCCW" );
+            else
+                this.iO.OutputOn( "OUT_CV_CWCCW" );
 
             if ( isOn )
                 this.iO.OutputOn( "OUT_CV_RUN" );
@@ -1113,14 +1114,14 @@ namespace VehicleControlSystem.ControlLayer
             if ( !IsDetectedLoadStart() )
                 return 11;
 
-            OnOffConveyor( true, true );
+            OnOffConveyor( true, false );
 
             long sTime = SwUtils.CurrentTimeMillis;
             while ( true )
             {
                 if ( SwUtils.Gt( sTime, 20 * ConstUtils.ONE_SECOND ) ) //Wait 20Sec
                 {
-                    OnOffConveyor( false, true );
+                    OnOffConveyor( false, false );
                     return 12;
                 }
 

+ 18 - 1
Dev/OHV/VehicleControlSystem/VCSystem.cs

@@ -6,6 +6,7 @@ using System.Text;
 using System.Threading.Tasks;
 using GSG.NET;
 using GSG.NET.Extensions;
+using GSG.NET.Logging;
 using GSG.NET.ObjectBase;
 using GSG.NET.Quartz;
 using OHV.Common.Events;
@@ -24,6 +25,8 @@ namespace VehicleControlSystem
     [Module(ModuleName = "VCSystem")]
     public class VCSystem : IModule, IDisposable
     {
+        Logger logger = Logger.GetLogger();
+
         Scheduler scheduler = null;
         IEventAggregator eventAggregator = null;
         public IIO IO = null;
@@ -139,13 +142,27 @@ namespace VehicleControlSystem
                     ReqBuzzerStop();
                     break;
                 case VCSMessageEventArgs.eVCSMessageKind.ReqMachineModeChg:
-                    ReqMachineModeChg(msg);
+                    ReqMachineModeChg( msg );
+                    break;
+                case VCSMessageEventArgs.eVCSMessageKind.ReqAddCommand:
+                    break;
+                case VCSMessageEventArgs.eVCSMessageKind.ReqTest:
+                    ReqTest();
                     break;
                 default:
                     break;
             }
         }
 
+        private void ReqTest()
+        {
+            logger.D( "Test Request" );
+            if ( this.IO.WaitChangeInputIO( true, 30000, "IN_CV_DETECT_00" ) )
+                logger.D( "Test - Time in" );
+            else
+                logger.D( "Test - Time out" );
+        }
+
         private void ReqMachineModeChg( VCSMessageEventArgs msg )
         {
             var reply = new GUIMessageEventArgs();