Pārlūkot izejas kodu

OCS Message 추가

DESKTOP-Kang 5 gadi atpakaļ
vecāks
revīzija
c0c2478539

+ 18 - 0
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -36,6 +36,7 @@ namespace VehicleControlSystem.ControlLayer
         public Steering Steering { get; set; }
         public BMUManager BMUManager { get; set; }
         public ZmqManager ZmqManager { get; set; }
+        public List<Alarm> Alarms { get; set; }
     }
 
     /// <summary>
@@ -1973,6 +1974,23 @@ namespace VehicleControlSystem.ControlLayer
         /// <param name="alarmID"></param>
         public void OccurVehicleAlarm( int alarmID )
         {
+            var alarm = refObjects.Alarms.Where( x => x.AlarmId == alarmID ).FirstOrDefault();
+            if ( alarm != null )
+            {
+                if ( alarm.Level == eAlarmLevel.Warn )
+                {
+                    HisAlarm hisAlarm = new HisAlarm();
+                    hisAlarm.AlarmId = alarmID;
+                    hisAlarm.Text = alarm.Name + " - " + alarm.Text;
+                    hisAlarm.Solution = alarm.Solution;
+
+                    var clone = ObjectCopyUtils.DeepClone<Alarm>( alarm );
+                    sql.HisAlarmDAL.Insert( hisAlarm );
+
+                    return;
+                }
+            }
+
             this.MachineMode = eMachineMode.LocalMode;
             this.VehicleStateProperty = eVehicleState.Abnormal;
             this.ConveyorOff();

+ 6 - 3
Dev/OHV/VehicleControlSystem/Managers/AutoManager.cs

@@ -55,6 +55,7 @@ namespace VehicleControlSystem.Managers
                 }
             }
         }
+
         public event Action<int> OnOccurAlarm;
         public event Action<int> OnClearAlarm;
         Alarm activeAlarm = null;
@@ -63,7 +64,7 @@ namespace VehicleControlSystem.Managers
         List<Alarm> Alarms { get; set; }
 
         //현재 발생 된 알람 리스트
-        List<Alarm> ActiveAlarms { get; set; }
+        public List<Alarm> ActiveAlarms { get; set; }
 
         IEventAggregator eventAggregator = null;
         SqliteManager sql = null;
@@ -336,7 +337,9 @@ namespace VehicleControlSystem.Managers
             if ( this.ActiveAlarms == null )
                 return;
 
-            this.ActiveAlarms.Add( alarm );
+            var cloneAlarm = ObjectCopyUtils.DeepClone<Alarm>( alarm );
+
+            this.ActiveAlarms.Add( cloneAlarm );
             this.OnOccurAlarm?.BeginInvoke( alarm.AlarmId, null, null );
 
             //UI 로는 처음 발생한 Error 만 전송한다.
@@ -348,7 +351,7 @@ namespace VehicleControlSystem.Managers
             this.sql.CommandDAL.Clean();
             this.sql.SubCmdDAL.Clean();
 
-            this.activeAlarm = ObjectCopyUtils.DeepClone<Alarm>( alarm );
+            this.activeAlarm = cloneAlarm;
 
             IsErrorProcessing = true;
 

+ 56 - 10
Dev/OHV/VehicleControlSystem/Managers/HostManager.cs

@@ -26,15 +26,21 @@ namespace VehicleControlSystem.Managers
         IEventAggregator eventAggregator = null;
         Vehicle vehicle = null;
         SqliteManager sql = null;
+        AutoManager autoManager;
 
         public HostManager( IEventAggregator ea, Vehicle vehicle, SqliteManager sqlite, AutoManager autoManager, Scheduler scheduler )
         {
             this.eventAggregator = ea;
+
             this.vehicle = vehicle;
             this.vehicle.PropertyChanged += Vehicle_PropertyChanged;
+
             this.sql = sqlite;
-            autoManager.OnOccurAlarm += AutoManager_OnOccurAlarm;
-            autoManager.OnClearAlarm += AutoManager_OnClearAlarm;
+
+            this.autoManager = autoManager;
+            this.autoManager.OnOccurAlarm += AutoManager_OnOccurAlarm;
+            this.autoManager.OnClearAlarm += AutoManager_OnClearAlarm;
+
             scheduler.OnMaualAddedCommand += Scheduler_OnMaualAddedCommand;
         }
 
@@ -434,24 +440,55 @@ namespace VehicleControlSystem.Managers
             this.Reply( msg );
 
             if ( msg.SubCode.Equals( "100" ) )
-            {
                 Send_Scmd( );
-            }
+            
             if ( msg.SubCode.Equals( "010" ) )
-            {
                 Send_Bcmd( this.vehicle.BatteryVoltage );
+
+            if ( msg.SubCode.Equals( "011" ) )
+            {
+                this.autoManager.ActiveAlarms.ForEach( x =>
+                 {
+                     Send_Ecmd(x.AlarmId);
+                 } );
+            }
+
+            if ( msg.SubCode.Equals( "111" ) )
+            {
+                var reply = new OCSMessage();
+
+                var mode = this.vehicle.MachineMode;
+                if ( mode == eMachineMode.HostMode )
+                {
+                    reply.Kind = eKind.I;
+                    reply.Tag = this.vehicle.CurrentTag.ToString( "0000" );
+                    reply.IsSubCode1 = this.vehicle.IsContain;
+                    reply.IsSubCode2 = vehicle.IsMoving;
+                    reply.IsSubCode3 = vehicle.IsError;
+                }
+                else
+                {
+                    reply.Kind = eKind.O;
+                    reply.Tag = this.vehicle.CurrentTag.ToString( "0000" );
+                    reply.IsSubCode1 = this.vehicle.IsContain;
+                    reply.IsSubCode2 = vehicle.IsMoving;
+                    reply.IsSubCode3 = vehicle.IsError;
+                }
+
+                this.manager.Send( msg );
             }
         }
 
         private void ReceiveMCommand( OCSMessage msg )
         {
-            this.Reply( msg );
-
             var cmd = new Command();
 
             var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
             if ( info.MachineMode == eMachineMode.LocalMode )
             {
+                msg.SubCode = "999";
+                this.Reply( msg );
+
                 loggerHost.E( $"[OCS] Cmd - Current Mode Local Mode " );
                 return;
             }
@@ -475,9 +512,11 @@ namespace VehicleControlSystem.Managers
                         case "003": //Move and Charge
                             cmd.Type = eCommandType.Charging;
                             break;
-                        case "004": //Cancel
+                        case "010": //Cancel
                             cmd.Type = eCommandType.Cancel;
-                            break;
+                            sql.CommandDAL.Clean();
+                            this.Reply( msg );
+                            return;
                         default:
                             return;
                     }
@@ -494,6 +533,9 @@ namespace VehicleControlSystem.Managers
                 }
                 else
                 {
+                    msg.SubCode = "999";
+                    this.Reply( msg );
+
                     loggerHost.E( $"[OCS] Cmd - {msg.Kind} Message Tag [{msg.Tag}] - Already Load/Unload " );
                     return;
                 }
@@ -516,6 +558,10 @@ namespace VehicleControlSystem.Managers
                     case "003": //Cancel
                         cmd.Type = eCommandType.Charging;
                         break;
+                    case "010": //Cancel
+                        cmd.Type = eCommandType.Cancel;
+                        this.Reply( msg );
+                        return;
                     default:
                         return;
                 }
@@ -526,7 +572,7 @@ namespace VehicleControlSystem.Managers
                 logger.I( $"[Command] - Add Host : Target {cmd.TargetID} / Type {cmd.Type}" );
 
             }
-
+            this.Reply( msg );
         }
 
         private void Manager_OnT3Timeout( OHVConnector.OCSMessage msg )

+ 11 - 26
Dev/OHV/VehicleControlSystem/VCSystem.cs

@@ -65,24 +65,20 @@ namespace VehicleControlSystem
 
         public void Init()
         {
-            string warningList = "4094/0xff/0x00/0x00/0x01";
+            //string warningList = "4094/0xff/0x00/0x00/0x01";
 
-            var v = warningList.Split( '/' );
-
-            var mb = new MemoryBuffer();
-            for ( int i = 1; i < v.Length; i++ )
-            {
-                var _2b = v[i].Replace( "0x", "" );
-                mb.Append( HexaUtils.StringToByte( _2b ) );
-            }
-
-            var bs = mb.ToBytes;
-
-            var bitA = new BitArray( bs );
-            
+            //var v = warningList.Split( '/' );
 
+            //var mb = new MemoryBuffer();
+            //for ( int i = 1; i < v.Length; i++ )
+            //{
+            //    var _2b = v[i].Replace( "0x", "" );
+            //    mb.Append( HexaUtils.StringToByte( _2b ) );
+            //}
 
+            //var bs = mb.ToBytes;
 
+            //var bitA = new BitArray( bs );
 
             QuartzUtils.Invoke( "HIS_ALARM", QuartzUtils.GetExpnHour( 5 ), this.CleanHisAlarm );
 
@@ -136,6 +132,7 @@ namespace VehicleControlSystem
             refObject.Clamp = this.clamp;
             refObject.Steering = this.steering;
             refObject.ZmqManager = this.zmqManager;
+            refObject.Alarms = this.Alarms;
 
             //Process
             this.autoManager = new AutoManager( this.IO, this.eventAggregator, this.sql, this.Alarms );
@@ -150,18 +147,6 @@ namespace VehicleControlSystem
             this.vehicle.Init();
             this.scheduler.Init();
             this.autoManager.Init( this.vehicle );
-
-            //Command cmd = new Command();
-            //cmd.TargetList = new List<string>();
-            //cmd.TargetList.Add( "1" );
-            //cmd.TargetList.Add( "2" );
-            //cmd.TargetList.Add( "3" );
-            //cmd.TargetList.Add( "4" );
-            //cmd.TargetList.Add( "5" );
-
-            //this.sql.CommandDAL.Insert( cmd );
-
-            //var cll = this.sql.CommandDAL.GetAll();
         }