Пример #1
0
        private bool couplerSafetyHandler(SCAppConstants.CouplerHPSafety safety, CouplerAddress coupler_address)
        {
            bool result = false;

            if (coupler_address != null)
            {
                if (safety == SCAppConstants.CouplerHPSafety.Safety)
                {
                    scApp.ReserveBLL.RemoveVehicle(unit.UNIT_ID + coupler_address.CouplerNum + "_v_car");
                    foreach (string seg_id in coupler_address.TrafficControlSegment)
                    {
                        ASEGMENT selectSeg = scApp.SegmentBLL.cache.GetSegment(seg_id);
                        if (selectSeg.STATUS == E_SEG_STATUS.Closed)
                        {
                            var ban_result = scApp.VehicleService.doEnableDisableSegment(selectSeg.SEG_ID.Trim(), E_PORT_STATUS.InService);
                            if (ban_result.isSuccess)
                            {
                                selectSeg.DISABLE_TIME = ban_result.segment.DISABLE_TIME;
                                selectSeg.STATUS       = ban_result.segment.STATUS;
                            }
                        }
                    }
                }
                else if (coupler_address.hasVh(scApp.VehicleBLL))
                {
                    //do nothing
                }
                else
                {
                    string msg = $"The coupler position Address{coupler_address.ADR_ID} is not safe ,begin coupler safe handle process.";
                    LogHelper.Log(logger: logger, LogLevel: LogLevel.Warn, Class: nameof(SubChargerValueDefMapAction), Device: Service.VehicleService.DEVICE_NAME_AGV,
                                  Data: msg);
                    bcf.App.BCFApplication.onErrorMsg(msg);
                    foreach (string seg_id in coupler_address.TrafficControlSegment)
                    {
                        ASEGMENT selectSeg = scApp.SegmentBLL.cache.GetSegment(seg_id);
                        if (selectSeg.STATUS == E_SEG_STATUS.Active && !selectSeg.PRE_DISABLE_FLAG)
                        {
                            var ban_result = scApp.VehicleService.doEnableDisableSegment(selectSeg.SEG_ID.Trim(), E_PORT_STATUS.OutOfService);
                            if (ban_result.isSuccess)
                            {
                                selectSeg.DISABLE_TIME = ban_result.segment.DISABLE_TIME;
                                selectSeg.STATUS       = ban_result.segment.STATUS;
                            }
                        }
                    }
                    var update_result = scApp.ReserveBLL.TryAddVehicleOrUpdate(unit.UNIT_ID + coupler_address.CouplerNum + "_v_car", coupler_address.ADR_ID, 90, Mirle.Hlts.Utils.HltDirection.NS);

                    if (!update_result.OK)
                    {
                        string message = $"The coupler position Address{coupler_address.ADR_ID} is not safe, vh:{update_result.VehicleID} need to stop";
                        LogHelper.Log(logger: logger, LogLevel: LogLevel.Warn, Class: nameof(SubChargerValueDefMapAction), Device: Service.VehicleService.DEVICE_NAME_AGV,
                                      Data: message,
                                      Details: update_result.Description,
                                      VehicleID: update_result.VehicleID);

                        AVEHICLE will_bumped_vh = scApp.VehicleBLL.cache.getVehicle(update_result.VehicleID);

                        //如果發生碰撞或踩入別人預約的不是虛擬車的話,則就要對兩台車下達EMS
                        if (!update_result.VehicleID.StartsWith(Service.VehicleService.VehicleVirtualSymbol))
                        {
                            //string cmd_id = will_bumped_vh.OHTC_CMD;
                            //if (!string.IsNullOrWhiteSpace(cmd_id))
                            //{
                            //    ACMD_OHTC cmd = scApp.CMDBLL.GetCMD_OHTCByID(cmd_id);
                            //    string cmdSourceAdr = cmd.SOURCE;
                            //    if (!string.IsNullOrWhiteSpace(cmdSourceAdr))
                            //    {
                            //        if(SCUtility.isMatche( cmd_id, coupler_address.))
                            //    }
                            //}


                            bcf.App.BCFApplication.onErrorMsg(message);
                            LogHelper.Log(logger: logger, LogLevel: LogLevel.Warn, Class: nameof(SubChargerValueDefMapAction), Device: Service.VehicleService.DEVICE_NAME_AGV,
                                          Data: $"The vehicles bumped coupler will happend. send pause to {update_result.VehicleID}",
                                          VehicleID: update_result.VehicleID);
                            scApp.VehicleService.doAbortCommand(will_bumped_vh, will_bumped_vh.OHTC_CMD, ProtocolFormat.OHTMessage.CMDCancelType.CmdEms);
                            //doAbortCommand(assign_vh, ohtc_cmd_id, actType); ;
                            //scApp.VehicleService.PauseRequest(will_bumped_vh.VEHICLE_ID, ProtocolFormat.OHTMessage.PauseEvent.Pause, SCAppConstants.OHxCPauseType.Safty);
                        }
                    }

                    result = true;
                }
            }

            return(result);
        }
Пример #2
0
 private void Charger_CouplerHPSafetyChaged(object sender, SCAppConstants.CouplerHPSafety e)
 {
     //try
     //{
     //    if (DebugParameter.isPassCouplerHPSafetySignal)
     //    {
     //        LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(VehicleChargerModule), Device: DEVICE_NAME,
     //           Data: $"pass coupler hp safey signal,flag:{DebugParameter.isPassCouplerHPSafetySignal}");
     //        return;
     //    }
     //    AUNIT charger = sender as AUNIT;
     //    if (charger == null)
     //    {
     //        LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(VehicleChargerModule), Device: DEVICE_NAME,
     //           Data: $"charger is null");
     //        return;
     //    }
     //    LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(VehicleChargerModule), Device: DEVICE_NAME,
     //       Data: $"Coupler hp safyte has changed,charger id:{charger.UNIT_ID} hp safety:{e}");
     //    var couplers = addressesBLL.cache.LoadCouplerAddresses(charger.UNIT_ID);
     //    var vhs = vehicleBLL.cache.loadAllVh();
     //    switch (e)
     //    {
     //        case SCAppConstants.CouplerHPSafety.NonSafety:
     //            vehicleService.ProcessAlarmReport(charger.UNIT_ID, AlarmBLL.AGVC_CHARGER_HP_NOT_SAFETY, ErrorStatus.ErrSet, $"Coupler position not safety.");
     //            break;
     //        case SCAppConstants.CouplerHPSafety.Safyte:
     //            vehicleService.ProcessAlarmReport(charger.UNIT_ID, AlarmBLL.AGVC_CHARGER_HP_NOT_SAFETY, ErrorStatus.ErrReset, $"Coupler position not safety.");
     //            break;
     //    }
     //    foreach (var coupler in couplers)
     //    {
     //        string coupler_adr_id = coupler.ADR_ID;
     //        LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(VehicleChargerModule), Device: DEVICE_NAME,
     //           Data: $"Coupler hp safyte has changed,coupler adr id:{coupler_adr_id}, start check has vh can pass...");
     //        foreach (var vh in vhs)
     //        {
     //            if (vh.isTcpIpConnect &&
     //                (vh.MODE_STATUS == VHModeStatus.AutoRemote ||
     //                 vh.MODE_STATUS == VHModeStatus.AutoCharging ||
     //                 vh.MODE_STATUS == VHModeStatus.AutoCharging)
     //               )
     //            {
     //                string vh_cur_adr_id = vh.CUR_ADR_ID;
     //                bool is_walkable = guideBLL.IsRoadWalkable(coupler_adr_id, vh_cur_adr_id);
     //                if (is_walkable)
     //                {
     //                    LogHelper.Log(logger: logger, LogLevel: LogLevel.Info, Class: nameof(VehicleChargerModule), Device: DEVICE_NAME,
     //                       Data: $"Coupler hp safyte has changed,coupler adr id:{coupler_adr_id} vh current adr:{vh_cur_adr_id}, is walkable start pause/continue action");
     //                    string vh_id = vh.VEHICLE_ID;
     //                    PauseType pauseType = PauseType.Normal;
     //                    PauseEvent pauseEvent = PauseEvent.Pause;
     //                    if (e == SCAppConstants.CouplerHPSafety.Safyte)
     //                    {
     //                        pauseEvent = PauseEvent.Continue;
     //                    }
     //                    else
     //                    {
     //                        pauseEvent = PauseEvent.Pause;
     //                    }
     //                    //Task.Run(() =>
     //                    //{
     //                    //    try
     //                    //    {
     //                    //        vehicleService.Send.Pause(vh_id, pauseEvent, pauseType);
     //                    //    }
     //                    //    catch (Exception ex)
     //                    //    {
     //                    //        logger.Error(ex, "Exception:");
     //                    //    }
     //                    //});
     //                }
     //            }
     //        }
     //    }
     //}
     //catch (Exception ex)
     //{
     //    logger.Error(ex, "Exception:");
     //}
 }
Пример #3
0
 public void onCouplerHPSafetyChaged(SCAppConstants.CouplerHPSafety couplerHPSafety)
 {
     CouplerHPSafetyChaged?.Invoke(this, couplerHPSafety);
 }