DESKTOP-Kang 6 anni fa
parent
commit
69f1ba753f

+ 0 - 3
Dev/Connection/OHVProtocolServer/OHVConnector/OCSMessage.cs

@@ -46,7 +46,6 @@ namespace OHVConnector
         public string Tag { get; set; }
         public string SubCode { get; set; }
         public string CheckSum { get; set; }
-        string checkSum = string.Empty;
 
         public IList<string> ViaRouteList { get; set; }
 
@@ -132,8 +131,6 @@ namespace OHVConnector
             mb.AppendAscii( this.Tag );
             mb.AppendAscii( MakeSubcode() );
 
-            //string checkSum = Convert.ToString( GetCheckSum( mb.ToBytes ), 16 ).ToLower();
-
             return GetCheckSum( mb.ToBytes );
         }
 

BIN
Dev/OHV/Assambly/OHVConnector.dll


BIN
Dev/OHV/Assambly/OHVConnector.pdb


+ 5 - 0
Dev/OHV/OHV.SqliteDAL/OHVDbInitializer.cs

@@ -198,6 +198,11 @@ namespace OHV.SqliteDAL
                 new Alarm { AlarmId = 31, Kind = eAlarmKind.Axis, Name = "System", Text="CP Off Safety",Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 32, Kind = eAlarmKind.Axis, Name = "BMS", Text="Battery Manage System Disconnected",Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 33, Kind = eAlarmKind.Axis, Name = "Steering", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 34, Kind = eAlarmKind.Drive, Name = "Drive", Text="Drive Fault State",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 35, Kind = eAlarmKind.Drive, Name = "Drive", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 36, Kind = eAlarmKind.Drive, Name = "Drive", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 37, Kind = eAlarmKind.Drive, Name = "Drive", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 38, Kind = eAlarmKind.Drive, Name = "Drive", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
             } );
 
             //context.Set<HisAlarm>().Add(new HisAlarm { AlarmId = 1, OccurTime = DateTime.Now.AddDays(-10) });

+ 86 - 6
Dev/OHV/VehicleControlSystem/ControlLayer/DB/Redis.cs

@@ -1,12 +1,10 @@
-using GSG.NET.ObjectBase;
+using GSG.NET.Extensions;
+using GSG.NET.ObjectBase;
 using StackExchange.Redis;
 using StackExchange.Redis.Extensions.Core;
 using StackExchange.Redis.Extensions.Newtonsoft;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Threading;
 
 namespace VehicleControlSystem.ControlLayer.DB
 {
@@ -37,5 +35,87 @@ namespace VehicleControlSystem.ControlLayer.DB
         public string GetValue( string key ) => database.StringGet( key );
         public int GetIntValue( string key ) => cacheClient.Get<int>( key );
 
-    }
+
+        #region GetLogData
+        public double TorqueFront()
+        {
+            var ret = database.HashGet( "7026", "7" );
+            return CastTo<double>.From<RedisValue>( ret );
+        }
+        public double TorqueRear()
+        {
+            var ret = database.HashGet( "7026", "8" );
+            return CastTo<double>.From<RedisValue>( ret );
+        }
+        public double ActualVelocityToFrontRPM()
+        {
+            var ret = database.HashGet( "7025", "8" );
+            return CastTo<double>.From<RedisValue>( ret );
+        }
+        public double ActualVelocityToRearRPM()
+        {
+            var ret = database.HashGet( "7025", "10" );
+            return CastTo<double>.From<RedisValue>( ret );
+        }
+        public double ActualVelocityToSpeed()
+        {
+            var ret = database.HashGet( "4034", "7" );
+            return CastTo<double>.From<RedisValue>( ret );
+        }
+        #endregion
+
+        #region Event
+        /// <summary>
+        /// Jog 사용 시
+        /// </summary>
+        /// <param name="dir">1=Forward, -1=Backward, 0=Stop</param>
+        /// <returns></returns>
+        public bool SetManualOPCommand(int dir ) => database.HashSet( "4091", "7", dir.ToString() );
+
+        /// <summary>
+        ///  Servo Motor Control
+        /// </summary>
+        /// <param name="cmd">1=On, 2=Off, 3=Stop, -1=Fault Reset</param>
+        /// <returns></returns>
+        public bool SetServoCommand( int cmd ) => database.HashSet( "4092", "7", cmd.ToString() );
+
+        /// <summary>
+        /// System Operation Change
+        /// </summary>
+        /// <param name="op">-1=NoEvent, 0=open, 1=start, 2=goAutoOP, 3=goManualOP, 4=close, 5=finish</param>
+        /// <returns></returns>
+        public bool SetSystemOperation( int op ) => database.HashSet( "112", "7", op.ToString() );
+
+        public bool RouteMapMoveTo(string point )
+        {
+            database.HashSet( "3033", "7", point );
+            Thread.Sleep( 50 );
+            return database.HashSet( "3031", "7", 1 );
+        }
+
+        #endregion
+
+        /// <summary>
+        /// Streering 뱡향 요청
+        /// </summary>
+        /// <returns>1=Left, -1=Right, 0=현상유지</returns>
+        public int GetSteering()
+        {
+            var ret = database.HashGet( "3050", "7" );
+            return CastTo<int>.From<RedisValue>(ret);
+        }
+
+        /// <summary>
+        /// System State
+        /// </summary>
+        /// <returns>0=StartUp, 1=DeviceOpened, 2=DiviceOpenFailed, 3=ManualOP, 4=AutomaticOp, 5=DeviceCloseed, 6=Finished</returns>
+        public int GetSystemState()
+        {
+            var ret = database.HashGet( "111", "7" );
+            return CastTo<int>.From<RedisValue>(ret);
+        }
+
+
+
+}
 }

+ 43 - 136
Dev/OHV/VehicleControlSystem/ControlLayer/Motion/GSIDrive.cs

@@ -1,15 +1,9 @@
 using GSG.NET.Concurrent;
-using GSG.NET.Extensions;
 using GSG.NET.Logging;
 using OHV.Common.Shareds;
 using OHV.SqliteDAL;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
+using VehicleControlSystem.ControlLayer.DB;
 
 namespace VehicleControlSystem.ControlLayer.Drive
 {
@@ -25,73 +19,6 @@ namespace VehicleControlSystem.ControlLayer.Drive
             None,
         }
 
-
-        #region Dll Import
-        [DllImport( "OHVdrive.dll" )]
-        static extern void OHVdriveCreate();
-
-        [DllImport( "OHVdrive.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl )]
-        static extern void OHVdriveBegin();
-
-        [DllImport( "OHVdrive.dll" )]
-        static extern void OHVdriveEnd();
-
-        [DllImport( "OHVdrive.dll" )]
-        static extern void OHVdriveDelete();
-
-        //
-        [DllImport( "OHVdrive.dll" )]
-        static extern int OHVdriveGetTargetSteering();
-
-        // driving servo driver
-        // - servo_num = 1 = front, -1 = rear
-        // - return value
-        //   0 = wrong servo_num
-        //   1 = Servo On
-        //   2 = Servo Off
-        //   3 = Servo Stop
-        //   -1 = Servo Fault Reset
-        //   others = do nothing
-        [DllImport( "OHVdrive.dll" )]
-        static extern int OHVdriveGetServoState( int servo_num );
-
-        // driving servo driver
-        // - return value
-        //   1 = Servo On
-        //   2 = Servo Off
-        //   3 = Servo Stop
-        //  -1 = Servo Fault Reset
-        // others = do nothing
-        [DllImport( "OHVdrive.dll" )]
-        static extern void OHVdriveSetServoCommand( int command );
-
-        // command when manual operation
-        // 1 = go forward
-        // -1 = go backward
-        // 0 or others = stop
-        [DllImport( "OHVdrive.dll" )]
-        static extern void OHVdriveSetManualOperationCommand( int command );
-
-        // operation mode change (manual mode, automatic mode)
-        // 1 = change to automatic mode
-        // -1 = change to manual mode
-        // others = not change
-        [DllImport( "OHVdrive.dll" )]
-        static extern void OHVdriveSetOperationMode( int mode );
-
-        [DllImport( "OHVdrive.dll" )]
-        static extern int OHVdriveGetOperationMode();
-
-        // state of the laser scanner for detecting obstacles
-        // 0 = normal (no obstacles)
-        // 1 = field 1  (e-stop)
-        // 2 = field 2  (stop)
-        // 3 = filed 3  (slow)
-        [DllImport( "OHVdrive.dll" )]
-        static extern int OHVdriveSetLaserScannerField( int field );
-
-        #endregion
-
         Logger logger = Logger.GetLogger();
 
         public bool IsStop { get; set; }
@@ -133,28 +60,17 @@ namespace VehicleControlSystem.ControlLayer.Drive
 
         public void Init()
         {
-#if SIMULATION
-            return;
-#else
-            //OHVdriveCreate();
-            //OHVdriveBegin();
-
-            //this.threadCancel.AddGo( Thread_DriveStateChcker );
-#endif
+            Redis.Instance.Init();
+            this.threadCancel.AddGo( Thread_DriveStateChcker );
         }
 
         public void Dispose()
         {
-#if SIMULATION
-            return;
-#else
-            //this.threadCancel.Cancel();
-            //LockUtils.Wait( 50 );
-            //this.threadCancel.StopWaitAll();
-
-            //OHVdriveEnd();
-            //OHVdriveDelete();
-#endif
+            Redis.Instance.Dispose();
+
+            this.threadCancel.Cancel();
+            LockUtils.Wait( 50 );
+            this.threadCancel.StopWaitAll();
         }
 
         void Thread_DriveStateChcker()
@@ -180,66 +96,58 @@ namespace VehicleControlSystem.ControlLayer.Drive
 
         void GetReqSteeringState()
         {
-            var gV = OHVdriveGetTargetSteering();
-            if ( gV == -1 )
-                this.ReqSteeringState = eSteeringState.Right;
-            else if ( gV == 1 )
+            var ret = Redis.Instance.GetSteering();
+            if ( ret == 1 )// Left
                 this.ReqSteeringState = eSteeringState.Left;
-            else { }
+            else if ( ret == -1 ) //Right
+                this.ReqSteeringState = eSteeringState.Right;
+            else if ( ret == 0 ) // Do Nothing
+            { }
+            else 
+            { }
         }
 
-        void GetServoState()
+        bool IsDriveFault()
         {
-            int fState = OHVdriveGetServoState( 1 );
-            int rState = OHVdriveGetServoState( -1 );
-
-            if ( fState == 1 && rState == 1 )
-                this.DriveServoState = eDriveServoState.ServoOn;
-            else if ( fState == 2 && rState == 2 )
-                this.DriveServoState = eDriveServoState.ServoOff;
-            else if ( fState == 3 && rState == 3 )
-                this.DriveServoState = eDriveServoState.ServoStop;
-            else if ( fState == -1 || rState == -1 )
-                this.DriveServoState = eDriveServoState.ServoFault;
-            else
-                this.DriveServoState = eDriveServoState.None;
+            var ret = Redis.Instance.GetSystemState();
+            return ret == 2 ? true : false;
         }
 
         public void SetDriveOperationMode( eOperatationMode mode )
         {
-#if SIMULATION
-#else
-            return;
 
             if ( mode == eOperatationMode.ManualMode )
-                OHVdriveSetOperationMode( -1 );
+                Redis.Instance.SetSystemOperation( 3 );
             else if ( mode == eOperatationMode.AutoMode )
-                OHVdriveSetOperationMode( 1 );
+                Redis.Instance.SetSystemOperation( 2 );
             else { }
-#endif
         }
 
         public eOperatationMode GetDriveOperationMode()
         {
-            eOperatationMode mode = eOperatationMode.InitialMode;
-
-            int result = OHVdriveGetOperationMode();
-            if ( result == 1 )
-                mode = eOperatationMode.AutoMode;
-            else if ( result == -1 )
-                mode = eOperatationMode.ManualMode;
-            else { }
+            var ret = Redis.Instance.GetSystemState();
 
-            return mode;
+            if ( ret == 3 )
+                return eOperatationMode.ManualMode;
+            else if ( ret == 4 )
+                return eOperatationMode.AutoMode;
+            else
+                return eOperatationMode.InitialMode;
         }
 
         public int MoveToPoint( string point, double velocity )
         {
-            if ( this.DriveServoState != eDriveServoState.ServoStop )
-                return 9999;
+            //if ( this.DriveServoState != eDriveServoState.ServoStop )
+            //    return 9999;
 
+            //Drive Fault 상태 확인
+            if ( IsDriveFault() )
+                return 34;
 
             //ToDo: 이동 명령 실행.
+            int result = 0;
+            result = Redis.Instance.RouteMapMoveTo( point );
+
 
             return 0;
         }
@@ -247,25 +155,25 @@ namespace VehicleControlSystem.ControlLayer.Drive
         /// <summary>
         /// 급정시 사용.
         /// </summary>
-        public void EStop() => OHVdriveSetServoCommand(3);
+        //public void EStop() => OHVdriveSetServoCommand(3);
 
         /// <summary>
         /// Manual 상태에서 가감속 Stop
         /// </summary>
         public void Stop()
         {
-            OHVdriveSetManualOperationCommand( 0 );
         }
 
-        public void JogForWard() => OHVdriveSetManualOperationCommand( 1 );
-        public void JogBackward() => OHVdriveSetManualOperationCommand( -1 );
-        public void ServoOn() => OHVdriveSetServoCommand( 1 );
-        public void ServoOff() => OHVdriveSetServoCommand( 2 );
-        public void AmpFaultReset() => OHVdriveSetServoCommand( -1 );
+        //public void JogForWard() => OHVdriveSetManualOperationCommand( 1 );
+        //public void JogBackward() => OHVdriveSetManualOperationCommand( -1 );
+        //public void ServoOn() => OHVdriveSetServoCommand( 1 );
+        //public void ServoOff() => OHVdriveSetServoCommand( 2 );
+        //public void AmpFaultReset() => OHVdriveSetServoCommand( -1 );
 
         public void SetObstacleState( eObstacleState state )
         {
             int field = 0;
+
             switch ( state )
             {
                 case eObstacleState.Normal:
@@ -283,7 +191,6 @@ namespace VehicleControlSystem.ControlLayer.Drive
                 default:
                     break;
             }
-            OHVdriveSetLaserScannerField( field );
         }
 
         public bool VelocityChainge( double velocity )

+ 2 - 2
Dev/OHV/VehicleControlSystem/ControlLayer/Steering.cs

@@ -145,8 +145,8 @@ namespace VehicleControlSystem.ControlLayer
         {
             this.iO.WriteOutputIO( "OUT_F_STEERING_DA" , true );
             this.iO.WriteOutputIO( "OUT_R_STEERING_DA" , true );
-            this.iO.WriteOutputIO( "OUT_F_STEERING_DA" , false , 500 );
-            this.iO.WriteOutputIO( "OUT_R_STEERING_DA" , false , 500 );
+            this.iO.WriteOutputIO( "OUT_F_STEERING_DA" , false , 800 );
+            this.iO.WriteOutputIO( "OUT_R_STEERING_DA" , false , 800 );
         }
 
         bool IsFrontLeft( ) => this.iO.IsOn( "IN_F_STEERING_DETECT_LEFT" );

+ 5 - 5
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -603,11 +603,11 @@ namespace VehicleControlSystem.ControlLayer
         {
             if ( _args.JogDir == DriveControlEventArgs.eJogMoveDir.Positive )
             {
-                this.drive.JogForWard();
+                //this.drive.JogForWard();
             }
             else
             {
-                this.drive.JogBackward();
+                //this.drive.JogBackward();
             }
         }
 
@@ -773,7 +773,7 @@ namespace VehicleControlSystem.ControlLayer
             this.conveyor.OnOffConveyor( false );
             //Clamp EStop
             this.clamp.ClampEStop();
-            this.drive.EStop();
+            //this.drive.EStop();
 
             this.OccurVehicleAlarm( 23 );
         }
@@ -1212,8 +1212,8 @@ namespace VehicleControlSystem.ControlLayer
         #endregion
 
         #region Drive
-        public void DriveServoOff() => this.drive.ServoOff();
-        public void DriveServoOn() => this.drive.ServoOn();
+        //public void DriveServoOff() => this.drive.ServoOff();
+        //public void DriveServoOn() => this.drive.ServoOn();
         #endregion
 
         #region Conveyor

+ 0 - 1
Dev/OHV/VehicleControlSystem/Managers/HostManager.cs

@@ -426,7 +426,6 @@ namespace VehicleControlSystem.Managers
                     logger.E( $"[OCS] Cmd - {msg.Kind} Message Tag [{msg.Tag}] - Already Load/Unload " );
                     return;
                 }
-
             }
 
             var cmd = new Command();