diff --git a/INT99DC_7C/DataStore.cs b/INT99DC_7C/DataStore.cs
index 2b6951a..1605996 100644
--- a/INT99DC_7C/DataStore.cs
+++ b/INT99DC_7C/DataStore.cs
@@ -1518,7 +1518,7 @@ namespace INT99DC_7C
{
this.m_JudgmentStatus = value;
- this.ProductionSpeedCalculation();
+ //this.ProductionSpeedCalculation();
if (value == DataStore.JudgmentStatus.Under)
{
@@ -3770,4 +3770,58 @@ namespace INT99DC_7C
#endregion
}
#endregion
+
+ #region CommunicationRespone
+ public class CommunicationRespone
+ {
+ #region Field
+ private bool m_IsFirst;
+
+ private string m_TransactionID;
+ private string m_TransferCount;
+ #endregion
+
+ #region Constructor
+ public CommunicationRespone()
+ {
+ this.Initialization();
+ }
+ #endregion
+
+ #region Property
+ public bool IsFirst
+ {
+ get { return this.m_IsFirst; }
+ set { this.m_IsFirst = value; }
+ }
+
+ ///
+ /// Data ID (0~9)
+ ///
+ public string TransactionID
+ {
+ get { return this.m_TransactionID; }
+ set { this.m_TransactionID = value; }
+ }
+ ///
+ /// 재전송 CNT (0~9)
+ ///
+ public string TransferCount
+ {
+ get { return this.m_TransferCount; }
+ set { this.m_TransferCount = value; }
+ }
+ #endregion
+
+ #region Method
+ public void Initialization()
+ {
+ this.IsFirst = false;
+
+ this.TransactionID = "a";
+ this.TransferCount = "a";
+ }
+ #endregion
+ }
+ #endregion
}
diff --git a/INT99DC_7C/Forms/FormMain.cs b/INT99DC_7C/Forms/FormMain.cs
index 8a05035..76fc06d 100644
--- a/INT99DC_7C/Forms/FormMain.cs
+++ b/INT99DC_7C/Forms/FormMain.cs
@@ -111,6 +111,8 @@ namespace INT99DC_7C.Forms
public List ListDllUserName;
// TotalPass Count
public Counter CurrentAlarmTotalPassCnt;
+ // Communication Respone
+ private CommunicationRespone CurrentComRespone;
// Collection
private Collection CollectionGraphData; // 판정설정 그래프 데이터
@@ -410,6 +412,7 @@ namespace INT99DC_7C.Forms
this.CurrentOptionParameterItem = new OptionParameterItem();
this.CurrentUserGroup = new UserGroup();
this.CurrentDataViewerFilter = new DataViewerFilter();
+ this.CurrentComRespone = new CommunicationRespone();
this.ListDllUserName = new List();
this.ListDllUserName.Clear();
@@ -908,6 +911,9 @@ namespace INT99DC_7C.Forms
else
this.timerOPT1.Enabled = false;
+ // Respone
+ this.CurrentComRespone.Initialization();
+
// Part 11
if (this.SystemConfig.IsPart11 == true)
this.SetTrackingHistoryData(DataStore.TrackingOperation.EquipmentStop, "");
@@ -980,7 +986,7 @@ namespace INT99DC_7C.Forms
private int ReceiveCommandS(string strTemp)
{
int ret = 0;
- string cmd = "", lane = "", receiveData = "";
+ string cmd = "", lane = "", receiveData = "", dataID = "", transferCNT = "";
// SIZE 확인
if (this.SizeCheck("S", strTemp) == false)
@@ -1004,6 +1010,8 @@ namespace INT99DC_7C.Forms
this.smartFileCommunicationLog.WriteString(string.Format("Receive ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, strTemp));
cmd = strTemp.Substring(0, 3);
+ dataID = strTemp.Substring(3, 1);
+ transferCNT = strTemp.Substring(4, 1);
lane = strTemp.Substring(5, 1);
receiveData = strTemp.Substring(10, strTemp.Length - 12);
@@ -1018,7 +1026,7 @@ namespace INT99DC_7C.Forms
return ret;
break;
case "SR0":
- if ((ret = this.ReceiveCommandSR0(lane, receiveData)) != 0)
+ if ((ret = this.ReceiveCommandSR0(lane, receiveData, dataID, transferCNT)) != 0)
return ret;
break;
case "SC0":
@@ -1193,6 +1201,23 @@ namespace INT99DC_7C.Forms
this.CurrentCalibrationItem.Constant11 = receiveData.Substring(91, 7).Trim();
this.CurrentCalibrationItem.Constant12 = receiveData.Substring(98, 7).Trim();
break;
+ case 15:
+ this.CurrentCalibrationItem.Constant1 = receiveData.Substring(21, 7).Trim();
+ this.CurrentCalibrationItem.Constant2 = receiveData.Substring(28, 7).Trim();
+ this.CurrentCalibrationItem.Constant3 = receiveData.Substring(35, 7).Trim();
+ this.CurrentCalibrationItem.Constant4 = receiveData.Substring(42, 7).Trim();
+ this.CurrentCalibrationItem.Constant5 = receiveData.Substring(49, 7).Trim();
+ this.CurrentCalibrationItem.Constant6 = receiveData.Substring(56, 7).Trim();
+ this.CurrentCalibrationItem.Constant7 = receiveData.Substring(63, 7).Trim();
+ this.CurrentCalibrationItem.Constant8 = receiveData.Substring(70, 7).Trim();
+ this.CurrentCalibrationItem.Constant9 = receiveData.Substring(77, 7).Trim();
+ this.CurrentCalibrationItem.Constant10 = receiveData.Substring(84, 7).Trim();
+ this.CurrentCalibrationItem.Constant11 = receiveData.Substring(91, 7).Trim();
+ this.CurrentCalibrationItem.Constant12 = receiveData.Substring(98, 7).Trim();
+ this.CurrentCalibrationItem.Constant13 = receiveData.Substring(105, 7).Trim();
+ this.CurrentCalibrationItem.Constant14 = receiveData.Substring(112, 7).Trim();
+ this.CurrentCalibrationItem.Constant15 = receiveData.Substring(119, 7).Trim();
+ break;
default:
break;
}
@@ -1460,7 +1485,7 @@ namespace INT99DC_7C.Forms
return ret;
}
// 운전시 중량
- private int ReceiveCommandSR0(string lane, string receiveData)
+ private int ReceiveCommandSR0(string lane, string receiveData, string transactionID, string transferCNT)
{
bool result = false;
int ret = 0;
@@ -1482,159 +1507,177 @@ namespace INT99DC_7C.Forms
{
case "Z":
#region Value Assign
- if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay)
+ if (this.CurrentComRespone.TransactionID != transactionID)
{
- if (this.SystemConfig.IsWeightViewForward == true)
+ this.CurrentComRespone.TransactionID = transactionID;
+ this.CurrentComRespone.TransferCount = transferCNT;
+
+ if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay)
{
- for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
+ if (this.SystemConfig.IsWeightViewForward == true)
{
- this.CollectionWeightData[i].JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(i * 12, 2));
- this.CollectionWeightData[i].Weight = Helper.StringToWeight(receiveData.Substring(i * 12 + 2, 5), this.SystemConfig.DecimalPlaces);
- this.CollectionWeightData[i].WeightString = receiveData.Substring(i * 12 + 2, 5);
- this.CollectionWeightData[i].ADCValue = receiveData.Substring(i * 12 + 7, 5);
-
- this.Update30000ModbusData(i);
+ for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
+ {
+ this.CollectionWeightData[i].JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(i * 7, 2));
+ this.CollectionWeightData[i].Weight = Helper.StringToWeight(receiveData.Substring(i * 7 + 2, 5), this.SystemConfig.DecimalPlaces);
+ this.CollectionWeightData[i].WeightString = receiveData.Substring(i * 7 + 2, 5);
+ //this.CollectionWeightData[i].ADCValue = receiveData.Substring(i * 12 + 7, 5);
+
+ if (this.SystemConfig.IsModbusEnable == true)
+ this.Update30000ModbusData(i);
+ }
+ }
+ else
+ {
+ for (int i = 1; i <= this.SystemConfig.EquipmentColumns; i++)
+ {
+ this.CollectionWeightData[this.CollectionWeightData.Count - i].JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring((i - 1) * 7, 2));
+ this.CollectionWeightData[this.CollectionWeightData.Count - i].Weight = Helper.StringToWeight(receiveData.Substring((i - 1) * 7 + 2, 5), this.SystemConfig.DecimalPlaces);
+ this.CollectionWeightData[this.CollectionWeightData.Count - i].WeightString = receiveData.Substring((i - 1) * 7 + 2, 5);
+ //this.CollectionWeightData[this.CollectionWeightData.Count - i].ADCValue = receiveData.Substring((i - 1) * 12 + 7, 5);
+
+ if (this.SystemConfig.IsModbusEnable == true)
+ this.Update30000ModbusData(this.CollectionWeightData.Count - i);
+ }
}
}
- else
+ else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest)
{
- for (int i = 1; i <= this.SystemConfig.EquipmentColumns; i++)
+ if (this.SystemConfig.IsWeightViewForward == true)
{
- this.CollectionWeightData[this.CollectionWeightData.Count - i].JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring((i - 1) * 12, 2));
- this.CollectionWeightData[this.CollectionWeightData.Count - i].Weight = Helper.StringToWeight(receiveData.Substring((i - 1) * 12 + 2, 5), this.SystemConfig.DecimalPlaces);
- this.CollectionWeightData[this.CollectionWeightData.Count - i].WeightString = receiveData.Substring((i - 1) * 12 + 2, 5);
- this.CollectionWeightData[this.CollectionWeightData.Count - i].ADCValue = receiveData.Substring((i - 1) * 12 + 7, 5);
-
- this.Update30000ModbusData(this.CollectionWeightData.Count - i);
+ for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
+ {
+ this.CollectionWeightDataTest[i].JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(i * 7, 2));
+ this.CollectionWeightDataTest[i].Weight = Helper.StringToWeight(receiveData.Substring(i * 7 + 2, 5), this.SystemConfig.DecimalPlaces);
+ //this.CollectionWeightDataTest[i].ADCValue = receiveData.Substring(i * 12 + 7, 5);
+ }
+ }
+ else
+ {
+ for (int i = 1; i <= this.SystemConfig.EquipmentColumns; i++)
+ {
+ this.CollectionWeightDataTest[this.CollectionWeightDataTest.Count - i].JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring((i - 1) * 7, 2));
+ this.CollectionWeightDataTest[this.CollectionWeightDataTest.Count - i].Weight = Helper.StringToWeight(receiveData.Substring((i - 1) * 7 + 2, 5), this.SystemConfig.DecimalPlaces);
+ //this.CollectionWeightDataTest[this.CollectionWeightDataTest.Count - i].ADCValue = receiveData.Substring((i - 1) * 12 + 7, 5);
+ }
}
}
- }
- else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest)
- {
- if (this.SystemConfig.IsWeightViewForward == true)
+
+ // 생산속도
+ try
{
- for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
- {
- this.CollectionWeightDataTest[i].JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(i * 12, 2));
- this.CollectionWeightDataTest[i].Weight = Helper.StringToWeight(receiveData.Substring(i * 12 + 2, 5), this.SystemConfig.DecimalPlaces);
- this.CollectionWeightDataTest[i].ADCValue = receiveData.Substring(i * 12 + 7, 5);
- }
+ this.CollectionWeightData[0].ProductionSpeed = int.Parse(receiveData.Substring(receiveData.Length - 4, 4).Trim());
}
- else
+ catch
{
- for (int i = 1; i <= this.SystemConfig.EquipmentColumns; i++)
- {
- this.CollectionWeightDataTest[this.CollectionWeightDataTest.Count - i].JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring((i - 1) * 12, 2));
- this.CollectionWeightDataTest[this.CollectionWeightDataTest.Count - i].Weight = Helper.StringToWeight(receiveData.Substring((i - 1) * 12 + 2, 5), this.SystemConfig.DecimalPlaces);
- this.CollectionWeightDataTest[this.CollectionWeightDataTest.Count - i].ADCValue = receiveData.Substring((i - 1) * 12 + 7, 5);
- }
+ this.CollectionWeightData[0].ProductionSpeed = 0;
}
- }
#endregion
- if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay)
- {
- #region 이중진입
- if (this.CurrentOptionParameterItem.DoubleEnter == "1")
+ if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay)
{
- // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP
- foreach (WeightData data in this.CollectionWeightData)
+ #region 이중진입
+ if (this.CurrentOptionParameterItem.DoubleEnter == "1")
{
- if (data.JudgmentStatus == DataStore.JudgmentStatus.Double)
+ // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP
+ foreach (WeightData data in this.CollectionWeightData)
{
- if (this.EquipmentStatus == DataStore.EquipmentStatus.Start)
+ if (data.JudgmentStatus == DataStore.JudgmentStatus.Double)
+ {
+ if (this.EquipmentStatus == DataStore.EquipmentStatus.Start)
+ {
+ this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
+ this.ChildFormMainDisplay.UpdateAlarmMessageDisplay();
+ break;
+ }
+ }
+ }
+ }
+ #endregion
+
+ #region Serial3
+ if (this.SystemConfig.Serial3Mode == 1) // OPT1 - ABFood 통신 피드백
+ {
+ #region Serial3 Mode1
+ // sensor error 이면 STOP
+ foreach (WeightData data in this.CollectionWeightData)
+ {
+ if (data.JudgmentStatus == DataStore.JudgmentStatus.SensorError || data.JudgmentStatus == DataStore.JudgmentStatus.Double)
+ {
+ if (this.EquipmentStatus == DataStore.EquipmentStatus.Start)
+ {
+ this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
+ break;
+ }
+ }
+ }
+
+ this.UartCom3TransferDataABFood(DataStore.ABFoodDataCommand.Normal, (int)DataStore.ABFoodDataStatus.Normal);
+ #endregion
+ }
+ else if (this.SystemConfig.Serial3Mode == 2) // OPT2 - 중량 데이터 피드백
+ this.SerialCH3OPT2(this.CollectionWeightData);
+ else if (this.SystemConfig.Serial3Mode == 4) // OPT3 - 중량 데이터 피드백 (중량설정값 포함)
+ this.SerialCH3OPT3(this.CollectionWeightData, this.CurrentProductItem);
+ #endregion
+
+ #region 화면 갱신, 데이터 백업
+ this.TrackingInspectionData(this.CollectionWeightData);
+ this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.EquipmentStatus, this.CollectionWeightData);
+ #endregion
+
+ #region 입력센서 연속 입력 시 정지
+ if (this.SystemConfig.IsEmergencyStopEntrySensorError == true)
+ {
+ foreach (WeightData data in this.CollectionWeightData)
+ {
+ if (data.JudgmentStatus == DataStore.JudgmentStatus.SensorError)
{
this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
- this.ChildFormMainDisplay.UpdateAlarmMessageDisplay();
+
+ // 메시지 11 - 입력센서 에러에 의해 정지하였습니다
+ this.StartThreadMessage1();
break;
}
}
}
- }
- #endregion
+ #endregion
- #region Serial3
- if (this.SystemConfig.Serial3Mode == 1) // OPT1 - ABFood 통신 피드백
- {
- #region Serial3 Mode1
- // sensor error 이면 STOP
- foreach (WeightData data in this.CollectionWeightData)
+ #region ACNC(Alarm Continuous Ng Count)
+ if (this.SystemConfig.IsAlarmContinuousNGEnable == true)
{
- if (data.JudgmentStatus == DataStore.JudgmentStatus.SensorError || data.JudgmentStatus == DataStore.JudgmentStatus.Double)
+ for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
{
- if (this.EquipmentStatus == DataStore.EquipmentStatus.Start)
+ if (this.CollectionWeightData[i].IsContinuousNG == true)
{
- this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
- break;
+ this.CollectionWeightData[i].ContinuousNG++;
+
+ if (this.CollectionWeightData[i].ContinuousNG >= this.SystemConfig.AlarmContinuousNG)
+ {
+ //this.CollectionWeightData[i].ContinuousNG = 0;
+ this.TransferData(CommunicationCommand.AlarmPulseNG, CommunicationID.MainBoard);
+ this.ChildFormMainDisplay.UpdateAlarmMessage3Display(true);
+ }
}
}
}
+ #endregion
- this.UartCom3TransferDataABFood(DataStore.ABFoodDataCommand.Normal, (int)DataStore.ABFoodDataStatus.Normal);
+ #region ATPC(Alarm Total Pass Count)
+ if (this.SystemConfig.IsAlarmTotalPassCntEnable == true)
+ {
+ result = this.CurrentAlarmTotalPassCnt.SetCountStic1(this.CollectionWeightData);
+
+ if (result == true)
+ this.TransferData(CommunicationCommand.AlarmPulseNG, CommunicationID.MainBoard);
+
+ this.ChildFormMainDisplay.UpdateAlarmTotalPassCountDisplay(this.CurrentAlarmTotalPassCnt);
+ }
#endregion
}
- else if (this.SystemConfig.Serial3Mode == 2) // OPT2 - 중량 데이터 피드백
- this.SerialCH3OPT2(this.CollectionWeightData);
- else if (this.SystemConfig.Serial3Mode == 4) // OPT3 - 중량 데이터 피드백 (중량설정값 포함)
- this.SerialCH3OPT3(this.CollectionWeightData, this.CurrentProductItem);
- #endregion
-
- #region 화면 갱신, 데이터 백업
- this.TrackingInspectionData(this.CollectionWeightData);
- this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.EquipmentStatus, this.CollectionWeightData);
- #endregion
-
- #region 입력센서 연속 입력 시 정지
- if (this.SystemConfig.IsEmergencyStopEntrySensorError == true)
+ else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest)
{
- foreach (WeightData data in this.CollectionWeightData)
- {
- if (data.JudgmentStatus == DataStore.JudgmentStatus.SensorError)
- {
- this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
-
- // 메시지 11 - 입력센서 에러에 의해 정지하였습니다
- this.StartThreadMessage1();
- break;
- }
- }
- }
- #endregion
-
- #region ACNC(Alarm Continuous Ng Count)
- if (this.SystemConfig.IsAlarmContinuousNGEnable == true)
- {
- for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
- {
- if (this.CollectionWeightData[i].IsContinuousNG == true)
- {
- this.CollectionWeightData[i].ContinuousNG++;
-
- if (this.CollectionWeightData[i].ContinuousNG >= this.SystemConfig.AlarmContinuousNG)
- {
- //this.CollectionWeightData[i].ContinuousNG = 0;
- this.TransferData(CommunicationCommand.AlarmPulseNG, CommunicationID.MainBoard);
- this.ChildFormMainDisplay.UpdateAlarmMessage3Display(true);
- }
- }
- }
+ this.ChildFormEquipmentTest.UpdateStartWeightDisplay(this.EquipmentStatus, this.CollectionWeightDataTest);
}
- #endregion
-
- #region ATPC(Alarm Total Pass Count)
- if (this.SystemConfig.IsAlarmTotalPassCntEnable == true)
- {
- result = this.CurrentAlarmTotalPassCnt.SetCountStic1(this.CollectionWeightData);
-
- if (result == true)
- this.TransferData(CommunicationCommand.AlarmPulseNG, CommunicationID.MainBoard);
-
- this.ChildFormMainDisplay.UpdateAlarmTotalPassCountDisplay(this.CurrentAlarmTotalPassCnt);
- }
- #endregion
- }
- else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest)
- {
- this.ChildFormEquipmentTest.UpdateStartWeightDisplay(this.EquipmentStatus, this.CollectionWeightDataTest);
}
break;
default:
@@ -1699,7 +1742,7 @@ namespace INT99DC_7C.Forms
// 판정설정 그래프
private int ReceiveCommandSG0(string lane, string receiveData)
{
- int ret = 0, temp = 12;
+ int ret = 0, temp = 20;
switch (lane)
{
@@ -8782,10 +8825,12 @@ namespace INT99DC_7C.Forms
//Console.WriteLine(string.Format("{0} : DefaultSetting2", DateTime.Now));
// Modbus Data Update
- this.Update30000ModbusData();
- for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
- this.Update30000ModbusData(i);
-
+ if (this.SystemConfig.IsModbusEnable == true)
+ {
+ this.Update30000ModbusData();
+ for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
+ this.Update30000ModbusData(i);
+ }
//Console.WriteLine(string.Format("{0} : Update30000ModbusData", DateTime.Now));
// UserManager 초기화
diff --git a/INT99DC_7C/Forms/FormMainDisplay.cs b/INT99DC_7C/Forms/FormMainDisplay.cs
index 58691f7..7ae8034 100644
--- a/INT99DC_7C/Forms/FormMainDisplay.cs
+++ b/INT99DC_7C/Forms/FormMainDisplay.cs
@@ -2019,6 +2019,14 @@ namespace INT99DC_7C.Forms
if (this.MainDisplayTable12 != null)
this.MainDisplayTable12.UpdateBypassDisplay(this.ParentForm.CollectionWeightData);
break;
+ case 15:
+ if (this.MainDisplayEachBarGraph15 != null)
+ this.MainDisplayEachBarGraph15.UpdateBypassDisplay(this.ParentForm.CollectionWeightData);
+ if (this.MainDisplayDotGraph15 != null)
+ this.MainDisplayDotGraph15.UpdateBypassDisplay(this.ParentForm.CollectionWeightData);
+ if (this.MainDisplayTable15 != null)
+ this.MainDisplayTable15.UpdateBypassDisplay(this.ParentForm.CollectionWeightData);
+ break;
default:
break;
}