|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using HslCommunication;
|
|
|
using Module.Common;
|
|
|
using Module.Hsms.Model;
|
|
|
|
|
|
namespace Module.Plc.Profinet.Tool
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 采集设备状态值
|
|
|
/// </summary>
|
|
|
public class PlcPublicStatusUtils
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
/// 通道1设备状态变化事件
|
|
|
/// </summary>
|
|
|
public static event EventHandler<RecvedStatusEventArgs> T1StatusChanged;
|
|
|
/// <summary>
|
|
|
/// 通道2设备状态变化事件
|
|
|
/// </summary>
|
|
|
public static event EventHandler<RecvedStatusEventArgs> T2StatusChanged;
|
|
|
/// <summary>
|
|
|
/// 设置通道1设备状态变化事件字符串
|
|
|
/// </summary>
|
|
|
/// <param name="status">连接状态字符串。比如:“连接成功”</param>
|
|
|
private static void SetT1DevStatusEvent(HsmsEapStatusRpt eapStsRpt)
|
|
|
{
|
|
|
EventHandler<RecvedStatusEventArgs> StatusHandler;
|
|
|
StatusHandler = T1StatusChanged;
|
|
|
if (StatusHandler != null)
|
|
|
{
|
|
|
StatusHandler.Invoke(null, new RecvedStatusEventArgs() { EapStatusRpt = eapStsRpt });
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 设置通道2设备状态变化事件字符串
|
|
|
/// </summary>
|
|
|
/// <param name="status">连接状态字符串。比如:“连接成功”</param>
|
|
|
private static void SetT2DevStatusEvent(HsmsEapStatusRpt eapStsRpt)
|
|
|
{
|
|
|
EventHandler<RecvedStatusEventArgs> StatusHandler;
|
|
|
StatusHandler = T2StatusChanged;
|
|
|
if (StatusHandler != null)
|
|
|
{
|
|
|
StatusHandler.Invoke(null, new RecvedStatusEventArgs() { EapStatusRpt = eapStsRpt });
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取通道1设备状态值.0-Initial 1-Idle 2-Run 3-Pause 4-Alarm
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public static UInt16 GetT1EapDevStatusValue()
|
|
|
{
|
|
|
UInt16 result = 99;
|
|
|
try
|
|
|
{
|
|
|
if (PublicParams.T1ConnectPlc)
|
|
|
{
|
|
|
HslCommunication.OperateResult<bool[]> read01 = PlcCommon.DeltaTcpNetClient01.ReadBool("M910", 5);
|
|
|
if (read01.IsSuccess)
|
|
|
{
|
|
|
bool bAlarm = read01.Content[0]; //报警中Alarm
|
|
|
bool bRun = read01.Content[1]; //启动中Run
|
|
|
bool bPause = read01.Content[2]; //暂停中Pause
|
|
|
bool bFshed = read01.Content[3]; //完成/就绪Initial
|
|
|
bool bIdle = read01.Content[4]; //待机中Idle
|
|
|
|
|
|
result = bFshed ? (UInt16)0 : result;
|
|
|
result = bIdle ? (UInt16)1 : result;
|
|
|
result = bRun ? (UInt16)2 : result;
|
|
|
result = bPause ? (UInt16)3 : result;
|
|
|
result = bAlarm ? (UInt16)4 : result;
|
|
|
|
|
|
//设备状态变化,将事件发送给EAP
|
|
|
if(result!=EapPubParams._T1DEV_CURRENT_STATUS_VAL)
|
|
|
{
|
|
|
HsmsEapStatusRpt statusRpt = new HsmsEapStatusRpt();
|
|
|
statusRpt.F_Value = result;
|
|
|
switch (result)
|
|
|
{
|
|
|
case 0:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3009";
|
|
|
statusRpt.F_EventName = "PROCESS_END";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3009] = 1;
|
|
|
break;
|
|
|
}
|
|
|
case 1:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3007";
|
|
|
statusRpt.F_EventName = "PROCESS_START";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3007] = 1;
|
|
|
break;
|
|
|
}
|
|
|
case 2:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3007";
|
|
|
statusRpt.F_EventName = "PROCESS_START";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3007] = 1;
|
|
|
break;
|
|
|
}
|
|
|
case 3:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3008";
|
|
|
statusRpt.F_EventName = "PROCESS_PAUSE";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3008] = 1;
|
|
|
break;
|
|
|
}
|
|
|
case 4:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3010";
|
|
|
statusRpt.F_EventName = "ALARM_ TRIGGER";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3010] = 1;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
SetT1DevStatusEvent(statusRpt);
|
|
|
EapPubParams._T1DEV_CURRENT_STATUS_VAL = result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ex.ToString();
|
|
|
return 99;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取通道2设备状态值.0-Initial 1-Idle 2-Run 3-Pause 4-Alarm
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public static UInt16 GetT2EapDevStatusValue()
|
|
|
{
|
|
|
UInt16 result = 99;
|
|
|
try
|
|
|
{
|
|
|
if (PublicParams.T2ConnectPlc)
|
|
|
{
|
|
|
HslCommunication.OperateResult<bool[]> read01 = PlcCommon.DeltaTcpNetClient02.ReadBool("M90", 5);
|
|
|
if (read01.IsSuccess)
|
|
|
{
|
|
|
bool bAlarm = read01.Content[0]; //报警中Alarm
|
|
|
bool bRun = read01.Content[1]; //启动中Run
|
|
|
bool bPause = read01.Content[2]; //暂停中Pause
|
|
|
bool bFshed = read01.Content[3]; //完成/就绪Initial
|
|
|
bool bIdle = read01.Content[4]; //待机中Idle
|
|
|
|
|
|
result = bFshed ? (UInt16)0 : result;
|
|
|
result = bIdle ? (UInt16)1 : result;
|
|
|
result = bRun ? (UInt16)2 : result;
|
|
|
result = bPause ? (UInt16)3 : result;
|
|
|
result = bAlarm ? (UInt16)4 : result;
|
|
|
|
|
|
//设备状态变化,将事件发送给EAP
|
|
|
if (result != EapPubParams._T2DEV_CURRENT_STATUS_VAL)
|
|
|
{
|
|
|
HsmsEapStatusRpt statusRpt = new HsmsEapStatusRpt();
|
|
|
statusRpt.F_Value = result;
|
|
|
switch (result)
|
|
|
{
|
|
|
case 0:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3109";
|
|
|
statusRpt.F_EventName = "PROCESS_END";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3109] = 1;
|
|
|
break;
|
|
|
}
|
|
|
case 1:
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
case 2:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3107";
|
|
|
statusRpt.F_EventName = "PROCESS_START";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3107] = 1;
|
|
|
break;
|
|
|
}
|
|
|
case 3:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3108";
|
|
|
statusRpt.F_EventName = "PROCESS_PAUSE";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3108] = 1;
|
|
|
break;
|
|
|
}
|
|
|
case 4:
|
|
|
{
|
|
|
statusRpt.F_CEID = "3110";
|
|
|
statusRpt.F_EventName = "ALARM_ TRIGGER";
|
|
|
EapPubParams._HSMS_EAP_CEID_VALS[3110] = 1;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
SetT2DevStatusEvent(statusRpt);
|
|
|
EapPubParams._T2DEV_CURRENT_STATUS_VAL = result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ex.ToString();
|
|
|
return 99;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|