SK.Kang 6 lat temu
rodzic
commit
29798ff461

BIN
Dev/OHV/Assambly/OHVConnector.dll


BIN
Dev/OHV/Assambly/OHVConnector.pdb


+ 2 - 2
Dev/OHV/OHV.Module.Interactivity/PopUp/ConfigView.xaml

@@ -9,7 +9,7 @@
              prism:ViewModelLocator.AutoWireViewModel="True"
              xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
 
-             d:DesignHeight="350" d:DesignWidth="450" Foreground="White" Width="500" Height="400">
+             d:DesignHeight="350" d:DesignWidth="450" Foreground="White" Width="700" Height="500">
 
     <prism:Dialog.WindowStyle>
         <Style TargetType="Window">
@@ -54,7 +54,7 @@
                     </Style>
                 </DataGrid.Resources>
                 <DataGrid.Columns>
-                    <materialDesign:DataGridTextColumn Header="Name" Binding="{Binding Name}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}" IsReadOnly="True"></materialDesign:DataGridTextColumn>
+                    <materialDesign:DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="300" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}" IsReadOnly="True"></materialDesign:DataGridTextColumn>
                     <materialDesign:DataGridTextColumn Header="Value" Binding="{Binding Value}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}"></materialDesign:DataGridTextColumn>
                 </DataGrid.Columns>
             </DataGrid>

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

@@ -173,6 +173,7 @@ namespace OHV.SqliteDAL
                 new Alarm { AlarmId = 6, Kind = eAlarmKind.Axis,  Name = "LeftClampServo", Text="Is Not Origin Return",                    Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 7, Kind = eAlarmKind.Axis,  Name = "RightClamServo", Text="Origin Return Fail",                      Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 8, Kind = eAlarmKind.Axis,  Name = "LeftClampServo", Text="Origin Return Fail",                      Solution="", Description="", Level = eAlarmLevel.Falut, },
+
                 new Alarm { AlarmId = 9, Kind = eAlarmKind.Axis,  Name = "Conveyor",       Text="Already Exist Carrier",                   Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 10, Kind = eAlarmKind.Axis, Name = "Conveyor",       Text="Loading Time Over",                       Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 11, Kind = eAlarmKind.Axis, Name = "Conveyor",       Text="Not Exist Carrier",                       Solution="", Description="", Level = eAlarmLevel.Falut, },
@@ -181,28 +182,35 @@ namespace OHV.SqliteDAL
                 new Alarm { AlarmId = 14, Kind = eAlarmKind.Axis, Name = "Conveyor",       Text="Lifter Not Loading Position",             Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 15, Kind = eAlarmKind.Axis, Name = "Conveyor",       Text="Lifter have not Carrier",                 Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 16, Kind = eAlarmKind.Axis, Name = "Conveyor",       Text="Inverter Error",                          Solution="", Description="", Level = eAlarmLevel.Falut, },
+
                 new Alarm { AlarmId = 17, Kind = eAlarmKind.Axis, Name = "PIO",            Text="Port PIO Ready Off",                      Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 18, Kind = eAlarmKind.Axis, Name = "PIO",            Text="Port PIO Time Out",                       Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 19, Kind = eAlarmKind.Axis, Name = "PIO",            Text="Port PIO InterLock On",                   Solution="", Description="", Level = eAlarmLevel.Falut, },
+
                 new Alarm { AlarmId = 20, Kind = eAlarmKind.Axis, Name = "Conveyor",       Text="Loading Position Wrong",                  Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 21, Kind = eAlarmKind.Axis, Name = "Conveyor",       Text="Unloading Position Wrong",                Solution="", Description="", Level = eAlarmLevel.Falut, },
+
                 new Alarm { AlarmId = 22, Kind = eAlarmKind.Axis, Name = "Init",           Text="Vehicle Drive Error",                     Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 23, Kind = eAlarmKind.Axis, Name = "EStop",          Text="EStop",                                   Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 24, Kind = eAlarmKind.Axis, Name = "Vehicle Move Error", Text="while Vehicle Move Obstacle Detected",Solution="", Description="", Level = eAlarmLevel.Falut, },
+
                 new Alarm { AlarmId = 25, Kind = eAlarmKind.Axis, Name = "Charge", Text="Charge Point Not Ready",                          Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 26, Kind = eAlarmKind.Axis, Name = "Charge", Text="Charge Point PIO Error",                          Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 27, Kind = eAlarmKind.Axis, Name = "Charge", Text="while Vehicle Move Obstacle Detected",Solution="", Description="", Level = eAlarmLevel.Falut, },
+
                 new Alarm { AlarmId = 28, Kind = eAlarmKind.Axis, Name = "System", Text="E - Stop Switch On",Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 29, Kind = eAlarmKind.Axis, Name = "System", Text="MC Off",Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 30, Kind = eAlarmKind.Axis, Name = "System", Text="CP Off 24V",Solution="", Description="", Level = eAlarmLevel.Falut, },
                 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, },
+
+                new Alarm { AlarmId = 34, Kind = eAlarmKind.Drive, Name = "PIO", Text="Battery Charge PIO Not Ready On",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 35, Kind = eAlarmKind.Drive, Name = "PIO", Text="Battery Charge PIO Not SEND_RUN On TimeOver",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 36, Kind = eAlarmKind.Drive, Name = "PIO", Text="Battery Charge PIO Not SEND_COMPLETE On TimeOver",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 37, Kind = eAlarmKind.Drive, Name = "PIO", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 38, Kind = eAlarmKind.Drive, Name = "PIO", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
             } );
 
             //context.Set<HisAlarm>().Add(new HisAlarm { AlarmId = 1, OccurTime = DateTime.Now.AddDays(-10) });

+ 1 - 9
Dev/OHV/VehicleControlSystem/ControlLayer/Conveyor.cs

@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
+using System.Threading;
 using GSG.NET.Logging;
 using GSG.NET.Utils;
 using VehicleControlSystem.ControlLayer.IO;
@@ -22,9 +17,6 @@ namespace VehicleControlSystem.ControlLayer
 
         public int OnOffConveyor( bool isOn, bool isLoad = false )
         {
-            if ( IsInverterError() )
-                return 16;
-
             if ( isLoad )
                 this.ezIO.OutputOn( "OUT_CV_CWCCW" );
             else

+ 0 - 1
Dev/OHV/VehicleControlSystem/ControlLayer/Steering.cs

@@ -75,7 +75,6 @@ namespace VehicleControlSystem.ControlLayer
                 this.SteeringState = eSteeringState.None;
         }
 
-        object lockObj = new object();
         bool isExecuteSteering = false;
         public int ControlSteering( bool isLeft = false )
         {

+ 47 - 9
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -421,14 +421,17 @@ namespace VehicleControlSystem.ControlLayer
                     case DriveControlEventArgs.eControlKind.MOVE:
                         this.ReqMoveToPos( _args );
                         break;
+
                     case DriveControlEventArgs.eControlKind.STOP:
                         break;
+
                     case DriveControlEventArgs.eControlKind.Steering:
                         if ( msg.MoveDir == DriveControlEventArgs.eMoveDir.LEFT )
                             this.steering.ControlSteering( true );
                         else
                             this.steering.ControlSteering();
                         break;
+
                     case DriveControlEventArgs.eControlKind.SteeringState:
                         {
                             var reply = new DriveControlEventArgs();
@@ -444,37 +447,47 @@ namespace VehicleControlSystem.ControlLayer
                                 reply.Result = FluentResults.Results.Ok();
                             }
                             else
-                                reply.Result = FluentResults.Results.Fail(new Error());
+                                reply.Result = FluentResults.Results.Fail( new Error() );
 
                             this.DriveControlEventPublish( reply );
                         }
                         break;
+
                     case DriveControlEventArgs.eControlKind.ReqCurrentPos:
                         //this.ReqCurrentPos();
                         break;
+
                     case DriveControlEventArgs.eControlKind.ReqStopCurrentPos:
                         //this.taskCancel.Cancel();
                         //this.taskCancel.WaitAll();
                         break;
+
                     case DriveControlEventArgs.eControlKind.FaultReset:
                         this.ReqFaultReset( _args );
                         break;
+
                     case DriveControlEventArgs.eControlKind.DriveON:
                         this.ReqDriveOn( _args );
                         break;
+
                     case DriveControlEventArgs.eControlKind.DriveOFF:
                         this.ReqDriveOff( _args );
                         break;
+
                     case DriveControlEventArgs.eControlKind.JOG:
                         this.ReqJog( _args );
                         break;
+
                     case DriveControlEventArgs.eControlKind.VehicleState:
                         ReqVehicleState( _args );
                         break;
+
                     case DriveControlEventArgs.eControlKind.NONE:
                         break;
+
                     case DriveControlEventArgs.eControlKind.Conveyor:
                         break;
+
                     default:
                         break;
                 }
@@ -781,6 +794,18 @@ namespace VehicleControlSystem.ControlLayer
         #region For Moving
         void Move( SubCmd sub )
         {
+            //Move 시작 시 충전 중이면 충전 중지 실행.
+            int result = 0;
+            if ( this.IsCharging() )
+            {
+                result = this.StopBatteryCharge();
+                if ( result != 0 )
+                {
+                    OccurVehicleAlarm( result );
+                    return;
+                }
+            }
+
             if ( this.MoveTo( sub.TargetID ) )
             {
             }
@@ -1104,7 +1129,7 @@ namespace VehicleControlSystem.ControlLayer
             {
                 PIOClear();
                 loggerPIO.E( "[Port] - 4 Ready Time Out" );
-                return 9999;
+                return 34;
             }
             loggerPIO.E( "[Port] - 4 Ready On" );
 
@@ -1115,11 +1140,11 @@ namespace VehicleControlSystem.ControlLayer
             {
                 PIOClear();
                 loggerPIO.E( "[Port] - 5 Sending Run Time Out" );
-                return 9999;
+                return 35;
             }
             loggerPIO.I( "[Port] - 5 Sending Run On" );
 
-            this.iO.WriteOutputIO( "OUT_PIO_RECEIVE_RUN", true ); 
+            this.iO.WriteOutputIO( "OUT_PIO_RECEIVE_RUN", true );
             loggerPIO.I( "[Vehicle] - 5 Receive Run On" );
 
             this.VehicleStateProperty = eVehicleState.Charge;
@@ -1142,7 +1167,7 @@ namespace VehicleControlSystem.ControlLayer
             {
                 this.iO.WriteOutputIO( "OUT_PIO_RECIVE_COMPLITE", false );
                 loggerPIO.E( "[Port]  IN_PIO_SEND_COMPLITE On Time Out" );
-                return 9999;
+                return 36;
             }
             loggerPIO.I( "[Port] Send Complete On" );
 
@@ -1209,6 +1234,13 @@ namespace VehicleControlSystem.ControlLayer
         /// Out Put 을 Off 이면 Sensor On
         /// </summary>
         public void PIOSensorOff() => this.iO.OutputOn( "OUT_PIO_SENSOR_ONOFF" );
+
+        /// <summary>
+        /// 충전 중일때 MTL PIO Bit 가 살아 있다 
+        /// 이걸 보고 판단 하자. 충전 단자 전진 상태임.
+        /// </summary>
+        /// <returns></returns>
+        public bool IsCharging() => this.iO.IsOn( "IN_PIO_SEND_RUN" ) && this.iO.IsOn( "IN_PIO_SENDABLE" );
         #endregion
 
         #region Drive
@@ -1217,7 +1249,7 @@ namespace VehicleControlSystem.ControlLayer
         #endregion
 
         #region Conveyor
-
+        public void ConveyorOff() => this.conveyor.OnOffConveyor( false );
         public int ConveyorLoad() => this.conveyor.ConveyorLoad();
 
         public int ConveyorUnload() => this.conveyor.ConveyorUnload();
@@ -1680,10 +1712,16 @@ namespace VehicleControlSystem.ControlLayer
             return BitUtils.ChgInt32( bitArray );
         }
 
+        /// <summary>
+        /// Vehicle 이동 및 동작 중 Alarm 발생 시 처리
+        /// </summary>
+        /// <param name="alarmID"></param>
         void OccurVehicleAlarm( int alarmID )
         {
             this.MachineMode = eMachineMode.LocalMode;
             this.VehicleStateProperty = eVehicleState.Abnormal;
+            this.ConveyorOff();
+
             this.autoManager.ProcessAlarm( alarmID );
         }
 
@@ -1810,7 +1848,7 @@ namespace VehicleControlSystem.ControlLayer
                 case "IN_MC_ON":
                     if ( bit.IsBitOn )
                     {
-                        if (!this.iO.IsOn( "IN_EMS_SW" ) && this.iO.IsOn( "IN_CP_ON_SAFETY" ) && this.iO.IsOn( "IN_CP_ON_24V" ) )
+                        if ( !this.iO.IsOn( "IN_EMS_SW" ) && this.iO.IsOn( "IN_CP_ON_SAFETY" ) && this.iO.IsOn( "IN_CP_ON_24V" ) )
                             this.VehicleStateProperty = eVehicleState.Idle;
                     }
                     else
@@ -1818,12 +1856,12 @@ namespace VehicleControlSystem.ControlLayer
                     break;
 
                 case "IN_EMS_SW":
-                    if ( bit.IsBitOn)
+                    if ( bit.IsBitOn )
                         this.OccurVehicleAlarm( 28 );
                     break;
 
                 case "IN_CP_ON_SAFETY":
-                    if ( !bit.IsBitOn)
+                    if ( !bit.IsBitOn )
                         this.OccurVehicleAlarm( 31 );
                     break;
 

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

@@ -186,7 +186,6 @@ namespace VehicleControlSystem
             }
         }
 
-
         void ReqBatteryState()
         {
             BatteryInfo battery = new BatteryInfo();