224 lines
5.8 KiB
C#
224 lines
5.8 KiB
C#
//using System;
|
|
//using System.Collections.Generic;
|
|
//using System.Linq;
|
|
//using System.Text;
|
|
//using System.Threading.Tasks;
|
|
//using MTC;
|
|
using MTC;
|
|
using MTConnect;
|
|
|
|
namespace SCMA.AdapterCom
|
|
{
|
|
public class GatewayMTC : Gateway
|
|
{
|
|
#region ogetti specifici MTC
|
|
|
|
#region Conditions
|
|
|
|
#if false
|
|
// vettori vari: allarmi sistema, PLC, CNC
|
|
public Condition mAlarmCNC = new Condition("CNC");
|
|
public Condition mAlarmPLC = new Condition("PLC");
|
|
|
|
#endif
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region override metodi
|
|
|
|
public GatewayMTC()
|
|
{
|
|
protocollo = gwProtocol.MTC;
|
|
}
|
|
/// <summary>
|
|
/// adapter globale MTC
|
|
/// </summary>
|
|
public Adapter mAdapter = new Adapter();
|
|
/// <summary>
|
|
/// Effettua chiamata VERA su adapter MTConnect...
|
|
/// </summary>
|
|
/// <param name="newItem"></param>
|
|
public override void addItemNode(object newItem)
|
|
{
|
|
mAdapter.AddDataItem((DataItem)newItem);
|
|
}
|
|
/// <summary>
|
|
/// Wrapper metodo rimozione di TUTTI gli ITEMS
|
|
/// </summary>
|
|
public override void removeAllItemNodes()
|
|
{
|
|
mAdapter.RemoveAllDataItems();
|
|
}
|
|
/// <summary>
|
|
/// Wrapper metodo rimozione ITEMS
|
|
/// </summary>
|
|
/// <param name="anItem"></param>
|
|
public override void removeItemNode(object anItem)
|
|
{
|
|
mAdapter.RemoveDataItem((DataItem)anItem);
|
|
}
|
|
/// <summary>
|
|
/// wrapper aggiunta condizione
|
|
/// </summary>
|
|
/// <param name="key"></param>
|
|
/// <param name="value"></param>
|
|
public override void addConditionNode(string key, object value)
|
|
{
|
|
conditionNodes.Add(key, value);
|
|
// aggiungo ad adapter
|
|
mAdapter.AddDataItem((Condition)value);
|
|
}
|
|
/// <summary>
|
|
/// Wrapper metodo Begin
|
|
/// </summary>
|
|
public override void beginDataCollect()
|
|
{
|
|
mAdapter.Begin();
|
|
}
|
|
/// <summary>
|
|
/// Wrapper metodo SendChanged
|
|
/// </summary>
|
|
public override void sendChanged()
|
|
{
|
|
mAdapter.SendChanged();
|
|
}
|
|
/// <summary>
|
|
/// Wrapper metodo imposta tutto a UNAVAILABLE
|
|
/// </summary>
|
|
public override void setAllUnavailable()
|
|
{
|
|
mAdapter.Unavailable();
|
|
}
|
|
/// <summary>
|
|
/// Wrapper metodo START
|
|
/// </summary>
|
|
public override void start()
|
|
{
|
|
mAdapter.Port = port;
|
|
mAdapter.Start();
|
|
}
|
|
/// <summary>
|
|
/// Wrapper metodo STOP
|
|
/// </summary>
|
|
public override void stop()
|
|
{
|
|
mAdapter.Stop();
|
|
}
|
|
/// <summary>
|
|
/// Speciofica implementazione x formattazione ALLARMI
|
|
/// </summary>
|
|
/// <param name="currAllarm"></param>
|
|
public override void addAlarm(allarme currAllarm)
|
|
{
|
|
// in base al tipo di allarme decodifico condizione...
|
|
Condition.Level livello = Condition.Level.NORMAL;
|
|
switch (currAllarm.livello)
|
|
{
|
|
case "WARNING":
|
|
livello = Condition.Level.WARNING;
|
|
break;
|
|
case "FAULT":
|
|
default:
|
|
livello = Condition.Level.FAULT;
|
|
break;
|
|
}
|
|
if (conditionNodes.ContainsKey(currAllarm.gruppo))
|
|
{
|
|
Condition mAlarm = (Condition)conditionNodes[currAllarm.gruppo];
|
|
mAlarm.Add(livello, currAllarm.descrizione, currAllarm.codNum, "", "");
|
|
}
|
|
#if false
|
|
// in base al gruppo decido dove assegnare come CONDITION...
|
|
switch (currAllarm.gruppo)
|
|
{
|
|
case "PLC":
|
|
mAlarmPLC.Add(livello, currAllarm.descrizione, currAllarm.codNum, "", "");
|
|
break;
|
|
case "CNC":
|
|
default:
|
|
mAlarmCNC.Add(livello, currAllarm.descrizione, currAllarm.codNum, "", "");
|
|
break;
|
|
}
|
|
#endif
|
|
}
|
|
/// <summary>
|
|
/// Speciofica implementazione x formattazione ALLARMI
|
|
/// </summary>
|
|
/// <param name="currAllarm"></param>
|
|
/// <param name="alarmNode">Generico nodo di tipo condition</param>
|
|
public override void addAlarm(object alarmNode, allarme currAllarm)
|
|
{
|
|
// in base al tipo di allarme decodifico condizione...
|
|
Condition.Level livello = Condition.Level.NORMAL;
|
|
switch (currAllarm.livello)
|
|
{
|
|
case "WARNING":
|
|
livello = Condition.Level.WARNING;
|
|
break;
|
|
case "FAULT":
|
|
default:
|
|
livello = Condition.Level.FAULT;
|
|
break;
|
|
}
|
|
Condition mAlarm = (Condition)alarmNode;
|
|
mAlarm.Add(livello, currAllarm.descrizione, currAllarm.codNum, "", "");
|
|
|
|
#if false
|
|
// in base al gruppo decido dove assegnare come CONDITION...
|
|
switch (currAllarm.gruppo)
|
|
{
|
|
case "PLC":
|
|
mAlarmPLC.Add(livello, currAllarm.descrizione, currAllarm.codNum, "", "");
|
|
break;
|
|
case "CNC":
|
|
default:
|
|
mAlarmCNC.Add(livello, currAllarm.descrizione, currAllarm.codNum, "", "");
|
|
break;
|
|
}
|
|
#endif
|
|
}
|
|
/// <summary>
|
|
/// Wrapper setup obj allarmi
|
|
/// </summary>
|
|
public override void addAlarmNodes()
|
|
{
|
|
// registro
|
|
Condition newCondNode;
|
|
newCondNode = new Condition("CNC");
|
|
addConditionNode("CNC", newCondNode);
|
|
newCondNode = new Condition("PLC");
|
|
addConditionNode("PLC", newCondNode);
|
|
}
|
|
/// <summary>
|
|
/// Wrapper inizializzazione allarmi
|
|
/// </summary>
|
|
public override void initAlarms()
|
|
{
|
|
// trasformo i nodi in elenchi conditions e li aggiungo...
|
|
foreach (var item in conditionNodes)
|
|
{
|
|
((Condition)item.Value).Normal();
|
|
}
|
|
#if false
|
|
//mAlarmSystem.Normal();
|
|
mAlarmCNC.Normal();
|
|
mAlarmPLC.Normal();
|
|
//mAlarmGeneral.Normal();
|
|
#endif
|
|
}
|
|
/// <summary>
|
|
/// inizializazione allarme a normal
|
|
/// </summary>
|
|
/// <param name="alarmNode"></param>
|
|
public override void initAlarm(object alarmNode)
|
|
{
|
|
Condition mAlarm = (Condition)alarmNode;
|
|
mAlarm.Normal();
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|