1. 알람 AUTO설정 時, 관련 오류수정 후 적용

2.    NullBalance 관련 요청사항(절대치로 비교) 적용

3.    알람목록의 '비고'컬럼에 알람수치 입력 기능 추가
This commit is contained in:
Arin(asus)
2025-06-21 11:24:18 +09:00
parent d4c6715811
commit b189af27c3
9 changed files with 241 additions and 219 deletions

View File

@@ -197,7 +197,7 @@ namespace vmsnet.HMI
public delegate void OnSetNBHandler(CGROUP grp, Single value);
public event OnAlamChangeHHandler OnAlamChange; //알람이 변경되었을경우(활성/비활성)
public delegate void OnAlamChangeHHandler(int ch, COMM.EALAMRAISETYPE raisetype, COMM.EALAMTYPE atype, String AM, Single value, Single maxvalue, Single minvalue);
public delegate void OnAlamChangeHHandler(int ch, COMM.EALAMRAISETYPE raisetype, COMM.EALAMTYPE atype, String AM, Single value, Single maxvalue, Single minvalue, string remark);
public event OnRaiseAlamChangeHHandler RaiseAlarm; //알람이 변경되었을경우(활성/비활성)
public delegate void OnRaiseAlamChangeHHandler(Boolean On);
@@ -615,7 +615,7 @@ namespace vmsnet.HMI
Item.alaml = grp.LOW;
Item.aalamh = grp.UP;
Item.aalaml = grp.UP;
Item.alamv = -999; /* 작성자: 이재웅, 작성일: 2025-06-11, 작성내용: 알람발생 원인으로 의심 -> 'Item.alamv = -999' 주석해제 */
//Item.alamv = -999; /* 작성자: 이재웅, 작성일: 2025-06-11, 작성내용: 알람발생 원인으로 의심 -> 'Item.alamv = -999' 주석해제 했다가 다시 원복 */
break;
case COMM.EALAMTYPE.:
Item.alamh = -999;
@@ -669,6 +669,7 @@ namespace vmsnet.HMI
//값의 저장소가 아에없다면?
//Boolean OverDATA = false;
var alarmRemark = string.Empty;
if (this.Values == null)
{
Item.value2 = 0;
@@ -728,7 +729,7 @@ namespace vmsnet.HMI
if (TimeStr != "" && TimeStr != "Not USE" && Item._p_onalamover == false)
{
String alamtimes = DateTime.Parse(TimeStr).ToString("yy-MM-dd HH:mm:ss");
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.OVER_ON, Item., "--", Item.CurValue, Item.alamh, Item.alaml);
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.OVER_ON, Item., "--", Item.CurValue, Item.alamh, Item.alaml, "over 32000");
Item._p_onalamover = true;
}
Item.CurValue = 0f;
@@ -744,7 +745,7 @@ namespace vmsnet.HMI
if (TimeStr != "" && TimeStr != "Not USE" && Item._p_onalamover == true)
{
String alamtimes = DateTime.Parse(TimeStr).ToString("yy-MM-dd HH:mm:ss");
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.OVER_OFF, Item., "--", Item.CurValue, Item.alamh, Item.alaml);
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.OVER_OFF, Item., "--", Item.CurValue, Item.alamh, Item.alaml, "");
Item._p_onalamover = false;
}
}
@@ -785,8 +786,9 @@ namespace vmsnet.HMI
case COMM.EALAMTYPE.:
if (grp.AlarmType == "AUTO")
{
/* 작성자: 이재웅, 작성일: 2025-06-11, 작성내용: 알람발생 원인으로 의심 -> '알람타입:그룹설정을따름' 일때 'Item.alamv == -999' 주석해제 */
if (Item.alamv == -999) Item.alamv = Item.CurValue;
//if (Item.alamv == -999) Item.alamv = Item.CurValue;
/* 작성자: 이재웅, 작성일: 2025-06-17, 작성내용: 'Item.alamv == 0' OR조건 추가 */
if (Item.alamv == -999 || Item.alamv == 0) Item.alamv = Item.CurValue;
Item. = "AUTO";
if (Item.CurValue > Item.alamv) //큰값이 있을경우 상한선을 확인한다.
@@ -797,6 +799,7 @@ namespace vmsnet.HMI
Item.onalamh = true;
Item.onalaml = false;
BackColor = Color.Orange; //BackColor0 = Color.LightPink;
alarmRemark = $"ref({Item.alamv})";
}
}
else if (Item.CurValue < Item.alamv)
@@ -807,6 +810,7 @@ namespace vmsnet.HMI
Item.onalamh = false;
Item.onalaml = true;
BackColor = Color.SkyBlue; //BackColor0 = Color.LightBlue;
alarmRemark = $"ref({Item.alamv})";
}
}
@@ -819,12 +823,14 @@ namespace vmsnet.HMI
Item.onalamh = true;
Item.onalaml = false;
BackColor = Color.Orange;// BackColor0 = Color.LightPink;
alarmRemark = $"ref({Item.alamh})";
}
else if (Item.CurValue < Item.alaml)
{
Item.onalamh = false;
Item.onalaml = true;
BackColor = Color.SkyBlue; //BackColor0 = Color.LightBlue;
alarmRemark = $"ref({Item.alaml})";
}
}
else
@@ -841,18 +847,22 @@ namespace vmsnet.HMI
Item.onalamh = true;
Item.onalaml = false;
BackColor = Color.Orange; //BackColor0 = Color.LightPink;
alarmRemark = $"ref({Item.alamh})";
}
else if (Item.CurValue < Item.alaml)
{
Item.onalamh = false;
Item.onalaml = true;
BackColor = Color.SkyBlue;// BackColor0 = Color.LightBlue;
alarmRemark = $"ref({Item.alaml})";
}
break;
case COMM.EALAMTYPE.:
Item. = "AUTO";
if (Item.alamv == -999) Item.alamv = Item.CurValue;
//if (Item.alamv == -999) Item.alamv = Item.CurValue; // 이전 코드
/* 작성자: 이재웅, 작성일: 2025-06-17, 작성내용: 'Item.alamv == 0' OR조건 추가 */
if (Item.alamv == -999 || Item.alamv == 0) Item.alamv = Item.CurValue;
if (Item.CurValue > Item.alamv) //큰값이 있을경우 상한선을 확인한다.
{
@@ -862,6 +872,7 @@ namespace vmsnet.HMI
Item.onalamh = true;
Item.onalaml = false;
BackColor = Color.Orange; //BackColor0 = Color.LightPink;
alarmRemark = $"ref({Item.alamv})";
}
}
else if (Item.CurValue < Item.alamv)
@@ -872,6 +883,7 @@ namespace vmsnet.HMI
Item.onalamh = false;
Item.onalaml = true;
BackColor = Color.SkyBlue; //BackColor0 = Color.LightBlue;
alarmRemark = $"ref({Item.alamv})";
}
}
break;
@@ -883,9 +895,10 @@ namespace vmsnet.HMI
if (Item. && init == true && (Item.onalaml != Item._p_onalaml || Item._p_onalamh != Item.onalamh)) //이전과 알람상태가 변경된경우다.
{
String alamtimes;
String alamtimes = "";
if (TimeStr != "" && TimeStr != "Not USE") alamtimes = DateTime.Parse(TimeStr).ToString("yy-MM-dd HH:mm:ss");
if (TimeStr != "" && TimeStr != "Not USE")
alamtimes = DateTime.Parse(TimeStr).ToString("yy-MM-dd HH:mm:ss");
else alamtimes = "";
Single AH, AL;
@@ -901,23 +914,22 @@ namespace vmsnet.HMI
}
if (Item.onalamh && !Item._p_onalamh)
{
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.HIGH_ON, Item., Item., Item.CurValue, AH, AL);
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.HIGH_ON, Item., Item., Item.CurValue, AH, AL, alarmRemark);
Item._p_onalamh = true;
}
else if (Item.onalaml && !Item._p_onalaml)
{
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.LOW_ON, Item., Item., Item.CurValue, AH, AL);
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.LOW_ON, Item., Item., Item.CurValue, AH, AL, alarmRemark);
Item._p_onalaml = true;
}
else if (!Item.onalamh && Item._p_onalamh)
{
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.HIGH_OFF, Item., Item., Item.CurValue, AH, AL);
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.HIGH_OFF, Item., Item., Item.CurValue, AH, AL, "");
Item._p_onalamh = false;
}
else if (!Item.onalaml && Item._p_onalaml)
{
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.LOW_OFF, Item., Item., Item.CurValue, AH, AL);
OnAlamChange(Item.idx, COMM.EALAMRAISETYPE.LOW_OFF, Item., Item., Item.CurValue, AH, AL, "");
Item._p_onalamh = false;
}
}
@@ -1338,12 +1350,15 @@ namespace vmsnet.HMI
Single imgheight = 30;
if (!(grp.nbh == 0 && grp.nbl == 0))
{
if (Math.Abs(nullvalue) > grp.nbl)
//if (Math.Abs(nullvalue) > grp.nbl) // a2영역보다 크다면
/* 작성자: 이재웅, 작성일: 2025-06-17, 작성내용: 'a2영역 절대값보다 클 경우'로 변경 */
if (Math.Abs(nullvalue) > Math.Abs(grp.nbl)) // a2영역 절대값보다 크다면
{
grp._nbalam_l = true; //a2 on
if (!grp._pre_nbalam_l)
{
if (grp.AlarmType != "STOP") OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A2_ON, COMM.EALAMTYPE., "NB", (Single)nullvalue, (Single)grp.nbl, (Single)grp.nbl);
if (grp.AlarmType != "STOP") OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A2_ON, COMM.EALAMTYPE., "NB",
(Single)nullvalue, (Single)grp.nbl, (Single)grp.nbl, $"> {grp.nbl}");
grp._pre_nbalam_l = true;
A2 = false;
blink2 = 0;
@@ -1376,18 +1391,21 @@ namespace vmsnet.HMI
if (grp._pre_nbalam_l) //이전에 a2알람이 켜져잇엇다면 알람을 끈다.
{
OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A2_OFF, COMM.EALAMTYPE., "NB", (Single)nullvalue, (Single)grp.nbl, (Single)grp.nbl);
OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A2_OFF, COMM.EALAMTYPE., "NB", (Single)nullvalue, (Single)grp.nbl, (Single)grp.nbl, "");
grp._pre_nbalam_l = false;
blink1 = 0;
}
if (Math.Abs(nullvalue) > grp.nbh) //a1영역보다 크다면
//if (Math.Abs(nullvalue) > grp.nbh) // a1영역보다 크다면
/* 작성자: 이재웅, 작성일: 2025-06-17, 작성내용: 'a1영역 절대값보다 클 경우'로 변경 */
if (Math.Abs(nullvalue) > Math.Abs(grp.nbh)) // a1영역 절대값보다 크다면
{
grp._nbalam_h = true;
if (!grp._pre_nbalam_h) //이전에 발생안햇다면
{
if (grp.AlarmType != "STOP") OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A1_ON, COMM.EALAMTYPE., "NB", (Single)nullvalue, (Single)grp.nbh, (Single)grp.nbh);
if (grp.AlarmType != "STOP") OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A1_ON, COMM.EALAMTYPE., "NB",
(Single)nullvalue, (Single)grp.nbh, (Single)grp.nbh, $"> {grp.nbh}");
grp._pre_nbalam_h = true;
blink1 = 0;
}
@@ -1418,7 +1436,7 @@ namespace vmsnet.HMI
grp._nbalam_h = false; //a1 off
if (grp._pre_nbalam_h) //이전에 a1알람이 켜져잇엇다면 알람을 끈다.
{
OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A1_OFF, COMM.EALAMTYPE., "NB", (Single)nullvalue, (Single)grp.nbl, (Single)grp.nbl);
OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A1_OFF, COMM.EALAMTYPE., "NB", (Single)nullvalue, (Single)grp.nbl, (Single)grp.nbl, "");
grp._pre_nbalam_h = false;
}
blink1 = 0;