109 lines
4.1 KiB
C#
109 lines
4.1 KiB
C#
using Aurora;
|
|
using Aurora.Api;
|
|
using AuroraChiller;
|
|
using AuroraIO;
|
|
using ILSOS_KS.Sequences;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using WeldingCommon;
|
|
using WeldingCommon.Alarm;
|
|
using WeldingCommon.Settings;
|
|
using static ILSOS_KS.Device.IOController_KS;
|
|
|
|
namespace ILSOS_KS.Alarm
|
|
{
|
|
internal class AlarmHelper
|
|
{
|
|
internal static void ExternalDeviceActivatedCheckWithIO(SequenceContext context)
|
|
{
|
|
var sequenceSetting = context.GetSetting<SequenceSetting>(CommonSettingIds.Sequence);
|
|
var _io = context.GetIOUnit();
|
|
|
|
// AlarmMonitoring 에서 Device 상태 check 를 IO 로 하는 로직 구현
|
|
// 1. Scanner
|
|
if (sequenceSetting.ScannerActivatedWithIO) {
|
|
|
|
}
|
|
|
|
// 2. Laser
|
|
if (sequenceSetting.LaserActivatedWithIO) {
|
|
//Laser Disconnect Check 조건문 변경 필요
|
|
if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserAssigned))) {
|
|
AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_DISCONNECT);
|
|
}
|
|
if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserError))) {
|
|
AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_ERROR);
|
|
}
|
|
if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.Warning))) {
|
|
AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_WARNING);
|
|
}
|
|
|
|
//Laser EMO IO Map 확인 필요
|
|
//if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserEMO_1)) || !_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LaserEMO_2))) {
|
|
// AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LASER_EMO);
|
|
//}
|
|
}
|
|
|
|
// 3. LBAD
|
|
if (sequenceSetting.LbadActivatedWithIO) {
|
|
if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LBADReadyStatus))) {
|
|
AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LBAD_ERROR);
|
|
}
|
|
}
|
|
|
|
// 4. OCT
|
|
//if (sequenceSetting.OctActivatedWithIO) {
|
|
// if (!_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LDDError))) {
|
|
// AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_OCT_ERROR);
|
|
// }
|
|
//}
|
|
|
|
// 5. Chiller
|
|
if (sequenceSetting.ChillerActivatedWithIO)
|
|
{
|
|
|
|
var devManager = System.Windows.Application.Current.AuroraEnv().DeviceManager;
|
|
ISmcChiller chiller = devManager["Chiller"] as ISmcChiller;
|
|
|
|
if (chiller != null)
|
|
{
|
|
DateTime _CheckTime = DateTime.Now.AddSeconds(5);
|
|
if (DateTime.Now < _CheckTime)
|
|
{
|
|
if (!chiller.GetConnected())
|
|
{
|
|
try
|
|
{
|
|
var chillerDevice = chiller as AuroraChiller.SmcChiller_HRL;
|
|
if (chillerDevice != null)
|
|
{
|
|
chillerDevice.Open(chillerDevice._Config);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//Log.E($"Chiller reconnection failed: {ex.Message}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// 6. LeakSensor
|
|
//Leak Sensor IO Map 추가 필요
|
|
//if (sequenceSetting.LeakSensorActivatedWithIO) {
|
|
// if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LeakSensorHead))) {
|
|
// AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LEAK_SENSOR_DETECT_SCANNER);
|
|
// }
|
|
// if (_io._iOUnit.ReadDiBit(Convert.ToInt32(eADIAddress.LeakSensorChiller))) {
|
|
// AlarmManager.Alarm(AlarmCode.ALARM_DEVICE_IO_LEAK_SENSOR_DETECT_CHILLER);
|
|
// }
|
|
//}
|
|
}
|
|
}
|
|
}
|