Merge branch 'release/SiemensSW_01'

This commit is contained in:
Samuele Locatelli
2025-08-01 15:50:31 +02:00
16 changed files with 1097 additions and 921 deletions
+2 -2
View File
@@ -51,9 +51,9 @@ namespace IOB_UT_NEXT.Config.Base
public string MultiIobList { get; set; } = "";
/// <summary>
/// Tempo di attesa (in minuti) x lettura contapezzi standard
/// Tempo di attesa (in minuti) x lettura contapezzi standard (default 30 sec)
/// </summary>
public double DelayReadPzCount { get; set; } = 0;
public double DelayReadPzCount { get; set; } = 0.5;
/// <summary>
/// Disabilitazione invio DynData di WDST (WatchDogStateTransfer)
+5
View File
@@ -581,6 +581,11 @@ namespace IOB_UT_NEXT
/// </summary>
OpcUaSiemensRama,
/// <summary>
/// Adapter OPC-UA macchne SW
/// </summary>
OpcUaSiemensSW,
/// <summary>
/// Adapter OPC-UA Ulma (packaging, Giacovelli)
/// </summary>
+22
View File
@@ -401,6 +401,18 @@ namespace IOB_UT_NEXT
/// </summary>
public string keyPartCount { get; set; } = "";
#if true
/// <summary>
/// Indica se sia una macchina MULTI (con varie Tavole/Pallet)
/// </summary>
public bool isMulti { get; set; } = false;
/// <summary>
/// Dizionario variabili x pezzi FATTI se multi tavola
/// </summary>
public Dictionary<string, string> keyPartCountTav { get; set; } = null;
#endif
/// <summary>
/// Nome variabile x Codice Articolo
/// </summary>
@@ -804,6 +816,16 @@ namespace IOB_UT_NEXT
/// </summary>
public diCheckCondSetup condSetup { get; set; } = new diCheckCondSetup();
/// <summary>
/// Struttura dati x check condizione Tavola 1 attiva
/// </summary>
public diCheckCondSetup condActTav1 { get; set; } = new diCheckCondSetup();
/// <summary>
/// Struttura dati x check condizione Tavola 2 attiva
/// </summary>
public diCheckCondSetup condActTav2 { get; set; } = new diCheckCondSetup();
/// <summary>
/// Struttura dati x check condizione WarmUp - CoolDown
/// </summary>
File diff suppressed because it is too large Load Diff
+5
View File
@@ -119,6 +119,11 @@ namespace IOB_WIN_OPC_UA
btnStart.Enabled = true;
break;
case tipoAdapter.OpcUaSiemensSW:
iobObj = new IobOpc.OpcUaSiemensSW(this, IOBConfFull);
btnStart.Enabled = true;
break;
case tipoAdapter.OpcUaUlma:
iobObj = new IobOpc.OpcUaUlma(this, IOBConfFull);
btnStart.Enabled = true;
+2 -2
View File
@@ -2,7 +2,7 @@
"BrowseFullVal": "ns=4;s=NxController.GlobalVars",
"BrowseNSIndex": 4,
"BrowseValue": 5001,
"keyPartCount": "ext_prod_parziale_robot4",
"keyPartCount": "ext_prod_parziale_mes_robot4",
"keyPartReq": "",
"keyPartId": "",
"keyProgName": "",
@@ -168,7 +168,7 @@
"ns=4;s=ext_prod_parziale_robot1",
"ns=4;s=ext_prod_parziale_robot2",
"ns=4;s=ext_prod_parziale_robot3",
"ns=4;s=ext_prod_parziale_robot4",
"ns=4;s=ext_prod_parziale_mes_robot4",
"ns=4;s=ext_prod_totale_robot1",
"ns=4;s=ext_prod_totale_robot2",
"ns=4;s=ext_prod_totale_robot3",
+9 -12
View File
@@ -1,20 +1,20 @@
;Configurazione IOB-WIN
[IOB]
;Centro di lavoro OpcUa
CNCTYPE=OpcUaSiemens
[IOB]
;Centro di lavoro OpcUa Siemens SW
CNCTYPE=OpcUaSiemensSW
;CNCTYPE=OpcUa
PING_MS_TIMEOUT=500
[MACHINE]
VENDOR=EMCO
MODEL=750
VENDOR=SW Machines
MODEL=1169
[CNC]
IP=192.168.51.216
PORT=4840
IP=192.168.51.219
PORT=51210
GETPRGNAME=true
[SERVER]
[SERVER]
MPIP=http://192.168.51.77
MPURL=/MP/IO
CMDBASE=/IOB/input/
@@ -71,12 +71,9 @@ ENABLE_CLI_RESTART=TRUE
SEND_PZCNT_MODE=DIRECT
;SEND_PZCNT_MODE=TASK
VETO_SIG_IN=false
BASE_SAMPLE_PERIOD=600
DISABLE_SEND_WDST=TRUE
; conf parametri memoria READ/WRITE
OPC_PARAM_CONF=2015.json
OPC_PARAM_CONF=2016.json
[BRANCH]
NAME=master
+160 -320
View File
@@ -1,31 +1,60 @@
{
"BrowseFullVal": "ns=2;s=Sinumerik",
"BrowseNSIndex": 4,
"BrowseFullVal": "ns=1;s=/swcp-assets",
"BrowseNSIndex": 1,
"BrowseValue": 5001,
"keyPartCount": "QUANTITA_PRODOTTA",
"keyPartCount": "",
"isMulti": true,
"keyPartCountTav": {
"TAV1": "MES A PIECE COUNTER",
"TAV2": "MES U PIECE COUNTER"
},
"keyPartReq": "",
"keyPartId": "",
"keyProgName": "progName",
"keyRunMode": "acProg",
"keyProgName": "",
"keyRunMode": "",
"pingAsPowerOn": true,
"Identity": {
"UserName": "DONATI_1",
"Passwd": "DONATI_1"
},
"Identity": {},
"condWork": [
{
"keyName": "acProg",
"targetValue": "2"
"keyName": "WarningLight Green",
"targetValue": "True"
}
],
"condWorkOpc": {
"checkMode": "AND",
"checkList": [
{
"keyName": "WarningLight Green",
"targetValue": "True"
}
]
},
"condAreaTav1": {
"checkMode": "AND",
"checkList": [
{
"keyName": "T1 WorkingArea",
"targetValue": "true"
}
]
},
"condAreaTav2": {
"checkMode": "AND",
"checkList": [
{
"keyName": "T2 WorkingArea",
"targetValue": "true"
}
]
},
"condPowerOn": {
},
"condReady": {
"checkMode": "AND",
"checkList": [
{
"keyName": "acProg",
"targetValue": "3"
"keyName": "WarningLight Blue",
"targetValue": "True"
}
]
},
@@ -33,8 +62,8 @@
"checkMode": "AND",
"checkList": [
{
"keyName": "acProg",
"targetValue": "4"
"keyName": "WarningLight Yellow",
"targetValue": "True"
}
]
},
@@ -42,8 +71,8 @@
"checkMode": "AND",
"checkList": [
{
"keyName": "aStopesi",
"targetValue": "0"
"keyName": "Emergency Stop",
"targetValue": "False"
}
]
},
@@ -51,8 +80,8 @@
"checkMode": "AND",
"checkList": [
{
"keyName": "acProg",
"targetValue": "1"
"keyName": "WarningLight Red",
"targetValue": "True"
}
]
},
@@ -86,336 +115,147 @@
"paramsContainsThresh": {
},
"filterItemsNodeId": [
"ns=2;s=/Axis",
"ns=2;s=/Bag",
"ns=2;s=/Channel/State/actProgNetTime",
"ns=2;s=/Channel/AuxiliaryFunctions",
"ns=2;s=/Channel/GenericCoupling",
"ns=2;s=/Channel/Diagnose",
"ns=2;s=/Channel/ChannelDiagnose",
"ns=2;s=/Channel/ProtocolEvent",
"ns=2;s=/Channel/ActualFrame",
"ns=2;s=/Channel/BaseFrame",
"ns=2;s=/Channel/ExternFrame",
"ns=2;s=/Channel/GrindingFrame",
"ns=2;s=/Channel/SystemFrame",
"ns=2;s=/Channel/UserFrame",
"ns=2;s=/Channel/Drive",
"ns=2;s=/Channel/Nibbling",
"ns=2;s=/Channel/Parameter",
"ns=2;s=/Channel/ProtectedArea",
"ns=2;s=/Channel/Settings",
"ns=2;s=/Channel/GeometricAxis",
"ns=2;s=/Channel/MachineAxis",
"ns=2;s=/Channel/ProgramModification",
"ns=2;s=/Channel/SelectedFunctions",
"ns=2;s=/Channel/Search",
"ns=2;s=/Channel/InterruptionSearch",
"ns=2;s=/Channel/ProgramPointer",
"ns=2;s=/Channel/LogicalSpindle",
"ns=2;s=/Channel/Compensation",
"ns=2;s=/Channel/SelectedFunctionData",
"ns=2;s=/Channel/CoordSysWorkAreaLimits",
"ns=2;s=/Channel/Configuration",
"ns=2;s=/Channel/Spindle",
"ns=2;s=/DriveVsa",
"ns=2;s=Sinumerik/FileSystem",
"ns=2;s=/Methods",
"ns=2;s=/NC",
"ns=2;s=/NC/_N_NC_GD1_ACX",
"ns=2;s=/NC/_N_NC_GD4_ACX",
"ns=2;s=/NC/_N_CH_GD1_ACX",
"ns=2;s=/NC/_N_CH_GD4_ACX",
"ns=2;s=/HMI",
"ns=2;s=/Random",
"ns=2;s=/SEA",
"ns=2;s=/TEA",
"ns=2;s=/Tool",
"ns=2;s=/Plc/Clock",
"ns=2;s=/Plc/C",
"ns=2;s=/Plc/T",
"ns=2;s=/Plc/I",
"ns=2;s=/Plc/IB",
"ns=2;s=/Plc/IW",
"ns=2;s=/Plc/ID",
"ns=2;s=/Plc/M",
"ns=2;s=/Plc/MB",
"ns=2;s=/Plc/MW",
"ns=2;s=/Plc/MD",
"ns=2;s=/Plc/Q",
"ns=2;s=/Plc/QB",
"ns=2;s=/Plc/QW",
"ns=2;s=/Plc/QD",
"ns=2;s=/Plc/ID",
"ns=2;s=/Plc/ID",
"ns=2;s=IArea",
"ns=2;s=QArea",
"ns=2;s=MArea",
"ns=2;s=/Plc/DB1",
"ns=2;s=/Plc/DB2",
"ns=2;s=/Plc/DB3",
"ns=2;s=/Plc/DB4",
"ns=2;s=/Plc/DB5",
"ns=2;s=/Plc/DB6",
"ns=2;s=/Plc/DB7",
"ns=2;s=/Plc/DB8",
"ns=2;s=/Plc/DB9",
"ns=2;s=/Plc/DB10",
"ns=2;s=/Plc/DB11",
"ns=2;s=/Plc/DB15",
"ns=2;s=/Plc/DB16",
"ns=2;s=/Plc/DB17",
"ns=2;s=/Plc/DB18",
"ns=2;s=/Plc/DB19",
"ns=2;s=/Plc/DB20",
"ns=2;s=/Plc/DB21",
"ns=2;s=/Plc/DB31",
"ns=2;s=/Plc/DB32",
"ns=2;s=/Plc/DB33",
"ns=2;s=/Plc/DB34",
"ns=2;s=/Plc/DB35",
"ns=2;s=/Plc/DB36",
"ns=2;s=/Plc/DB53",
"ns=2;s=/Plc/DB62",
"ns=2;s=/Plc/DB63",
"ns=2;s=/Plc/DB64",
"ns=2;s=/Plc/DB65",
"ns=2;s=/Plc/DB66",
"ns=2;s=/Plc/DB71",
"ns=2;s=/Plc/DB72",
"ns=2;s=/Plc/DB74",
"ns=2;s=/Plc/DB75",
"ns=2;s=/Plc/DB76",
"ns=2;s=/Plc/DB77",
"ns=2;s=/Plc/DB78",
"ns=2;s=/Plc/DB92",
"ns=2;s=/Plc/DB93",
"ns=2;s=/Plc/DB100",
"ns=2;s=/Plc/DB101",
"ns=2;s=/Plc/DB102",
"ns=2;s=/Plc/DB103",
"ns=2;s=/Plc/DB104",
"ns=2;s=/Plc/DB105",
"ns=2;s=/Plc/DB111",
"ns=2;s=/Plc/DB114",
"ns=2;s=/Plc/DB115",
"ns=2;s=/Plc/DB116",
"ns=2;s=/Plc/DB120",
"ns=2;s=/Plc/DB121",
"ns=2;s=/Plc/DB140",
"ns=2;s=/Plc/DB154",
"ns=2;s=/Plc/DB170",
"ns=2;s=/Plc/DB171",
"ns=2;s=/Plc/DB172",
"ns=2;s=/Plc/DB173",
"ns=2;s=/Plc/DB174",
"ns=2;s=/Plc/DB200",
"ns=2;s=/Plc/DB201",
"ns=2;s=/Plc/DB202",
"ns=2;s=/Plc/DB203",
"ns=2;s=/Plc/DB204",
"ns=2;s=/Plc/DB213",
"ns=2;s=/Plc/DB272",
"ns=2;s=/Plc/DB283",
"ns=2;s=/Plc/DB284",
"ns=2;s=/Plc/DB310",
"ns=2;s=/Plc/DB325",
"ns=2;s=/Plc/DB326",
"ns=2;s=/Plc/DB332",
"ns=2;s=/Plc/DB333",
"ns=2;s=/Plc/DB334",
"ns=2;s=/Plc/DB335",
"ns=2;s=/Plc/DB336",
"ns=2;s=/Plc/DB505",
"ns=2;s=/Plc/DB506",
"ns=2;s=/Plc/DB507",
"ns=2;s=/Plc/DB508",
"ns=2;s=/Plc/DB509",
"ns=2;s=/Plc/DB510",
"ns=2;s=/Plc/DB650",
"ns=2;s=/Plc/DB651",
"ns=2;s=/Plc/DB1000",
"ns=2;s=/Plc/DB1001",
"ns=2;s=/Plc/DB1002",
"ns=2;s=/Plc/DB1071",
"ns=2;s=/Plc/DB1072"
"ns=2;s=/Axis"
],
"subscribedItems": [
"ns=2;s=/Channel/State/actParts",
"ns=2;s=/Channel/State/acProg",
"ns=2;s=/Channel/State/oldProgNetTime",
"ns=2;s=/Channel/State/oldProgNetTimeCounter",
"ns=2;s=/Channel/State/chanAlarm",
"ns=2;s=/Channel/State/actTNumber",
"ns=2;s=/Channel/ProgramInfo/selectedWorkPProg",
"ns=2;s=/Channel/ProgramInfo/progName",
"ns=2;s=/Channel/State/acTotalOvr",
"ns=2;s=/Channel/State/feedRateIpoOvr",
"ns=2;s=/Nck/State/aStopesi",
"ns=2;s=/NC/_N_CH_GD2_ACX/CODICE_ARTICOLO",
"ns=2;s=/NC/_N_CH_GD2_ACX/CODICE_COMMESSA",
"ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_PRODOTTA",
"ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_RICHIESTA"
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/Actual_CycleTime_T1",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/Actual_CycleTime_T2",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/AXIS_X_LOAD",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/AXIS_Y1_LOAD",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/AXIS_Z_LOAD",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/Emergency_Stop",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/FEEDRATE_OVERRIDE",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_A_PIECE_COUNTER",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_A_PIECE_TARGET",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_A_RESET_COUNTER_TRIGGER",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_A_STRING1",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_A_STRING2",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_A_STRING3",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_OPTIONAL_STRING_NAME1",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_OPTIONAL_STRING_NAME2",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_OPTIONAL_STRING_NAME3",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_ORDER_A",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_ORDER_U",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_U_PIECE_TARGET",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_U_RESET_COUNTER_TRIGGER",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_U_STRING1",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_U_STRING2",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_U_STRING3",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_U_PIECE_COUNTER",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/NC_PROGRAM_PATH",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/NUMBER_ALARMS",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/OM_AUTO_Activ",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/OM_JOG_Activ",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/OM_MDA_Activ",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/OPERATION_MODE",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/PART_NUMBER",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/Producing_Machine",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/Producing_Machine_Auto",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/SPINDLE_1_LOAD",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/SPINDLE_2_LOAD",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/SPINDLE_OVERRIDE",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/SYSTEM_OPERATION_TIME",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/T1_WorkingArea",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/T2_WorkingArea",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/TEMPERATURE_ELECTRIC_CABINET",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/TEMPERATURE_HYDRAULIC_OIL",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/TEMPERATURE_SURROUNDING",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/Tot_Parts_Counter_NOK",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/Tot_Parts_Counter_OK",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/WORKING_TIME",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/WarningLight_Blue",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/WarningLight_Green",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/WarningLight_Red",
"ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/WarningLight_Yellow"
],
"mMapWrite": {
"setComm": {
"name": "setComm",
"description": "Commessa",
"setComm#TAV1": {
"name": "setComm#TAV1",
"description": "Commessa TAV1 (A)",
"tipoMem": "String",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/CODICE_COMMESSA",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_ORDER_A",
"index": 0,
"size": 20
},
"setArt": {
"name": "setArt",
"description": "Articolo",
"setArt#TAV1": {
"name": "setArt#TAV1",
"description": "Articolo TAV1 (A)",
"tipoMem": "String",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/CODICE_ARTICOLO",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_A_STRING1",
"index": 0,
"size": 20
},
"setPzComm": {
"name": "setPzComm",
"description": "Qty",
"setPzComm#TAV1": {
"name": "setPzComm#TAV1",
"description": "Qty TAV1 (A)",
"tipoMem": "Int",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_RICHIESTA",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_A_STRING2",
"index": 0,
"size": 4
},
"forceResetPzCount": {
"name": "forceResetPzCount",
"description": "Set Contapezzi",
"forceResetPzCount#TAV1": {
"name": "forceResetPzCount#TAV1",
"description": "Reset Contapezzi TAV1 (A)",
"tipoMem": "Int",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_PRODOTTA",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_A_RESET_COUNTER_TRIGGER",
"index": 0,
"size": 4
},
"forceSetPzCount": {
"name": "forceSetPzCount",
"description": "Set Contapezzi",
"setComm#TAV2": {
"name": "setComm#TAV2",
"description": "Commessa TAV2 (U)",
"tipoMem": "String",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_ORDER_U",
"index": 0,
"size": 20
},
"setArt#TAV2": {
"name": "setArt#TAV2",
"description": "Articolo TAV2 (U)",
"tipoMem": "String",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_U_STRING1",
"index": 0,
"size": 20
},
"setPzComm#TAV2": {
"name": "setPzComm#TAV2",
"description": "Qty TAV2 (U)",
"tipoMem": "Int",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_PRODOTTA",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_U_STRING2",
"index": 0,
"size": 4
},
"forceResetPzCount#TAV2": {
"name": "forceResetPzCount#TAV2",
"description": "Reset Contapezzi TAV2 (U)",
"tipoMem": "Int",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_OUT_U_RESET_COUNTER_TRIGGER",
"index": 0,
"size": 4
}
},
"mMapRead": {
"OPC_Status": {
"name": "OPC_Status",
"description": "Stato",
"OPC_MES_A_PIECE_COUNTER": {
"name": "OPC_MES_A_PIECE_COUNTER",
"description": "Contatore Tavola 1 (A)",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_A_PIECE_COUNTER",
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/State/acProg",
"index": 0,
"size": 1
"func": "POINT",
"period": 60,
"factor": 1,
"unit": "#",
"displOrdinal": 1
},
"OPC_Alarm": {
"name": "OPC_Alarm",
"description": "Allarme",
"OPC_MES_U_PIECE_COUNTER": {
"name": "OPC_MES_U_PIECE_COUNTER",
"description": "Contatore Tavola 1 (U)",
"memAddr": "ns=1;s=/swcp-assets/137eada7-bd15-474d-8aaf-4e6f2f8ea72a/MES_U_PIECE_COUNTER",
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/State/chanAlarm",
"index": 0,
"size": 1
},
"OPC_ToolNum": {
"name": "OPC_ToolNum",
"description": "Tool Number",
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/State/actTNumber",
"index": 0,
"size": 1
},
"OPC_SelProg": {
"name": "OPC_SelProg",
"description": "Prog Selezionato",
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/ProgramInfo/selectedWorkPProg",
"index": 0,
"size": 50
},
"OPC_ProgName": {
"name": "OPC_ProgName",
"description": "Nome Programma",
"tipoMem": "String",
"memAddr": "ns=2;s=/Channel/ProgramInfo/progName",
"index": 0,
"size": 50
},
"OPC_ActFeedRateOvr": {
"name": "OPC_ActFeedRateOvr",
"description": "FeedRate Act Override",
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/State/actFeedRateIpoOvr",
"index": 0,
"size": 1
},
"OPC_FeedRateOvr": {
"name": "OPC_FeedRateOvr",
"description": "FeedRate Override",
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/State/feedRateIpoOvr",
"index": 0,
"size": 1
},
"OPC_actParts": {
"name": "OPC_actParts",
"description": "Contapezzi",
"func": "MEDIAN",
"period": 600,
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/State/actParts",
"index": 0,
"size": 1
},
"OPC_oldProgNetTime": {
"name": "OPC_oldProgNetTime",
"description": "Ultimo TCiclo",
"func": "MEDIAN",
"period": 600,
"tipoMem": "Int",
"memAddr": "ns=2;s=/Channel/State/oldProgNetTime",
"index": 0,
"size": 1
},
"OPC_QUANTITA_PRODOTTA": {
"name": "OPC_QUANTITA_PRODOTTA",
"description": "QUANTITA PRODOTTA",
"func": "MEDIAN",
"period": 600,
"tipoMem": "Int",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_PRODOTTA",
"index": 0,
"size": 1
},
"OPC_QUANTITA_RICHIESTA": {
"name": "OPC_QUANTITA_RICHIESTA",
"description": "QUANTITA RICHIESTA",
"func": "MEDIAN",
"period": 600,
"tipoMem": "Int",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/QUANTITA_RICHIESTA",
"index": 0,
"size": 1
},
"OPC_CODICE_ARTICOLO": {
"name": "OPC_CODICE_ARTICOLO",
"description": "CODICE ARTICOLO",
"func": "MEDIAN",
"period": 600,
"tipoMem": "Int",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/CODICE_ARTICOLO",
"index": 0,
"size": 1
},
"OPC_CODICE_COMMESSA": {
"name": "OPC_CODICE_COMMESSA",
"description": "CODICE_COMMESSA",
"func": "MEDIAN",
"period": 600,
"tipoMem": "Int",
"memAddr": "ns=2;s=/NC/_N_CH_GD2_ACX/CODICE_COMMESSA",
"index": 0,
"size": 1
"func": "POINT",
"period": 60,
"factor": 1,
"unit": "#",
"displOrdinal": 1
}
}
}
+1 -1
View File
@@ -29,6 +29,6 @@ CLI_INST=SteamWareSim
;STARTLIST=TFT_RAMA_001
;STARTLIST=SIM_DP_02
;STARTLIST=1042
STARTLIST=2015
STARTLIST=2016
MAXCNC=10
+1
View File
@@ -165,6 +165,7 @@
<Compile Include="IobOpc\OpcUaKpwRama.cs" />
<Compile Include="IobOpc\OpcUaMBH.cs" />
<Compile Include="IobOpc\OpcUaMBHCimolai.cs" />
<Compile Include="IobOpc\OpcUaSiemensSW.cs" />
<Compile Include="IobOpc\OpcUaOmron.cs" />
<Compile Include="IobOpc\OpcUaOmronGhidini.cs" />
<Compile Include="IobOpc\OpcUaOmronIcoel.cs" />
+32 -10
View File
@@ -58,16 +58,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
#endregion Public Constructors
/// <summary>
/// Recupero programma in lavorazione
/// </summary>
/// <returns></returns>
public override string getPrgName()
{
string prgName = getDataItemValue(opcUaParams.keyProgName);
return prgName;
}
#region Public Methods
/// <summary>
@@ -442,6 +432,16 @@ namespace IOB_WIN_OPC_UA.IobOpc
return outVal;
}
/// <summary>
/// Recupero programma in lavorazione
/// </summary>
/// <returns></returns>
public override string getPrgName()
{
string prgName = getDataItemValue(opcUaParams.keyProgName);
return prgName;
}
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -1199,6 +1199,28 @@ namespace IOB_WIN_OPC_UA.IobOpc
/// </summary>
protected bool doByteRead { get; set; } = false;
/// <summary>
/// Verifico se abbia TAV 1 attiva...
/// </summary>
protected bool hasActiveTav1
{
get
{
return checkMultiCondition(opcUaParams.condActTav1);
}
}
/// <summary>
/// Verifico se abbia TAV 2 attiva...
/// </summary>
protected bool hasActiveTav2
{
get
{
return checkMultiCondition(opcUaParams.condActTav2);
}
}
/// <summary>
/// Verifico se abbia ALMENO un errore...
/// </summary>
+1 -1
View File
@@ -51,7 +51,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
{
bool answ;
lgInfo("iobGetSendDossier: Inizio scrittura dati a KepWare");
lgInfo("iobGetSendOdlDP: Inizio scrittura dati a KepWare");
/*-----------------------------------------
* STEPS processo:
* - recupero ARTICOLI (solo quelli dei PODL attivi)
+1 -1
View File
@@ -122,7 +122,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
{
bool answ;
lgInfo("iobGetSendDossier: Inizio scrittura dati a server OPC-UA");
lgInfo("iobGetSendOdlDP: Inizio scrittura dati a server OPC-UA");
/*-----------------------------------------
* STEPS processo:
* - recupero ARTICOLI (solo quelli dei PODL attivi)
+223
View File
@@ -0,0 +1,223 @@
using IOB_UT_NEXT;
using IOB_UT_NEXT.Config;
using MapoSDK;
using Newtonsoft.Json;
using Opc.Ua;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Threading.Tasks;
using static IOB_UT_NEXT.CustomObj;
namespace IOB_WIN_OPC_UA.IobOpc
{
public class OpcUaSiemensSW : OpcUaSiemens
{
#region Public Constructors
/// <summary>
/// Estende l'init della classe base, impiegando il pacchetto Nuget OPC-UA foundation con la
/// gestione specifica per macchine SW (Donati Lavorazioni)
/// https://github.com/OPCFoundation/UA-.NETStandard
/// </summary>
/// <param name="caller">Form chiamante</param>
/// <param name="IobConfFull">Configurazione (v 4.x)</param>
public OpcUaSiemensSW(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
sendKeyRichiesta = true;
lgInfo("Avvio OpcUa Siemens versione SW Machines");
}
#endregion Public Constructors
#region Public Methods
#if false
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
/// </summary>
/// <returns></returns>
public override bool resetContapezziPLC()
{
bool answ = false;
// verifico se richiesta è per tav 1 o 2...
Dictionary<string, string> task2add = new Dictionary<string, string>();
task2add.Add("forceResetPzCount#TAV1", $"{0}");
executeTasks(task2add);
return answ;
}
#endif
#endregion Public Methods
#region Protected Methods
/// <summary>
/// Effettua decodifica aree memoria alla bitmap usata x MAPO
/// </summary>
protected override void decodeToBaseBitmap()
{
DateTime adesso = DateTime.Now;
// init a zero...
B_input = 0;
/* -----------------------------------------------------
* STATE MACHINE 60 STD / SIMULA + gestione doppia tavola
*------------------------------------------------------
* bitmap MAPO
* B0: POWER_ON
* B1: RUN
* B2: pzCount
* B3: allarme
* B4: manuale
* B5: SlowTC (NON gestito qui)
* B6: warm-up / cool-down / setup
* B7: emergenza ARMATA (1=ok, 0 = premuta)
* B8: TAV 1 attiva (A)
* B9: TAV 2 attiva (U)
---------------------------------------------------- */
// se valido il check ping lo eseguo... altrimenti lo do x buono
bool checkPing = !opcUaParams.pingAsPowerOn;
string currRun = "N.A.";
if (!checkPing)
{
checkPing = (testPingMachine == IPStatus.Success);
}
// bit 0 (poweron) imposto a 1 SE pingo + PowerOn=="ON"...
bool powerOnOk = checkPing && hasPowerOn;
// procedo SOLO SE mi da ping OK...
if (checkPing)
{
B_input = powerOnOk ? 1 : 0;
procRunMode(ref currRun);
// salvo running come = working...
isRunning = isWorking;
// se ho emergenza premuta --> emergenza!
if (hasEStopArmed)
{
B_input += (1 << 7);
}
// se ho emergenza premuta --> emergenza!
if (isWarmUpCoolDown)
{
B_input += (1 << 6);
}
// se ho almeno 1 allarme E NON SONO IN AUTO --> ALARM!
if (hasError)
{
B_input += (1 << 3);
}
if (isWorking)
{
// RUN = LAVORA!
B_input += (1 << 1);
}
else if (powerOnOk && (!isReady || isManual))
{
// se NON ready --> manual
B_input += (1 << 4);
}
// verifica speciale dei BIT della tavola corrente
if (opcUaParams.isMulti)
{
if (hasActiveTav1)
{
B_input += (1 << 8);
}
if (hasActiveTav2)
{
B_input += (1 << 9);
}
}
}
// se abilitato watchdog...
if (opcUaParams.WatchDog.IsEnabled)
{
if (adesso.Subtract(lastWatchDogPLC).TotalSeconds > 2)
{
lastWatchDogPLC = adesso;
WatchDog++;
WatchDog = WatchDog > opcUaParams.WatchDog.MaxVal ? 0 : WatchDog;
lgTrace($"WatchDog val: {WatchDog}");
try
{
WriteValue commWriteVal = new WriteValue();
commWriteVal.NodeId = new NodeId(opcUaParams.WatchDog.MemConfWrite);
commWriteVal.AttributeId = Attributes.Value;
commWriteVal.Value = new DataValue();
commWriteVal.Value.Value = WatchDog;
List<WriteValue> nodes2Write = new List<WriteValue>();
nodes2Write.Add(commWriteVal);
UA_ref.WriteNodes(nodes2Write);
}
catch (Exception exc)
{
lgError($"Eccezione in gestione WatchDog, valore attuale {WatchDog}{Environment.NewLine}{exc}");
}
}
}
else
{
lgTrace("WatchDog disabilitato");
}
// controllo se sono poweroff e se non ho dati buoni da > 2 minuti --> disconnetto
if (!powerOnOk && adesso.Subtract(lastCurrent).TotalMinutes > 2)
{
tryDisconnect();
}
// solo se non ho veto check
int vFactor = 2;
if (vetoCheckStatus < adesso)
{
lgDebug($"Stato variabili checkPing: {testPingMachine}");
// imposto veto per vetoSeconds...
vetoCheckStatus = adesso.AddSeconds(vetoSeconds * vFactor);
}
// log opzionale!
if (verboseLog)
{
lgDebug($"Trasformazione checkPing: {checkPing} | hasPowerOn: {hasPowerOn} | B_input: {B_input} | currRun = {currRun}");
}
}
/// <summary>
/// Effettua sync dati inviando info per la doppia tavola
/// </summary>
protected override void processDataSync()
{
lgInfo("--------------------------------------------");
lgInfo($"executeTasks --> syncDbData --> processDataSync");
lgInfo("--------------------------------------------");
// effettua sync scrivendo cablate le info x art/num pezzi + dati ODL
var taskGet = iobGetSendOdlDP();
}
#endregion Protected Methods
#region Private Methods
/// <summary>
/// Recupero dati da server x invio dati ODL delle 2 tavole A/U
/// </summary>
/// <returns></returns>
private bool iobGetSendOdlDP()
{
bool answ = false;
return answ;
}
#endregion Private Methods
}
}
+62
View File
@@ -0,0 +1,62 @@
;Configurazione IOB-WIN
[IOB]
CNCTYPE=PingWatchdog
PING_MS_TIMEOUT=500
IOB_NAME=3023
[MACHINE]
VENDOR=STEAMWARE
MODEL=WATCHDOG
[CNC]
IP=192.168.1.151
;IP=192.168.1.7
PORT=0000
[SERVER]
MPIP=http://192.168.1.7
MPURL=/MP/IO
CMDBASE=/IOB/input/
CMDFLOG=/IOB/flog/
CMDALIVE=/IOB
CMDENABLED=/IOB/enabled/
CMDADV1=?valore=
CMDREBO=/sendReboot.aspx?idxMacchina=
CMD_ODL_STARTED=/IOB/getCurrOdlStart/
CMD_FORCLE_SPLIT_ODL=/IOB/forceSplitOdlFull/
CMD_IDLE_TIME=/IOB/getIdlePeriod/
[MEMORY]
[BLINK]
MAX_COUNTER_BLINK = 15
BLINK_FILT=0
[OPTPAR]
timerIntMs=300
VETO_QUEUE_IN=15
AUTO_CHANGE_ODL=false
POWEROFF_TIMEOUT_SEC=60
DISABLE_PZCOUNT=TRUE
;; gestioni PING
;MAX_TRY_PING=3
;VETO_QUEUE_IN=4
;VETO_PING_SEC=4
;VETO_CHECKDIR_SEC=10
;MAX_ELAPSED_TIME_SEC=60
;VETO_SEND_SNAPSHOT=3
VETO_SIG_IN=false
B_IN_OFF=0
B_IN_ON=129
VETO_PING_SEC=6
VETO_SCADUTO=TRUE
[BRANCH]
NAME=master
; Tags manuali
[TAGS]
Customer=JETCO
HostOS=WIN
HostName=IOB-WIN-09
HostAddr=192.168.1.133
+2 -3
View File
@@ -142,9 +142,8 @@
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="DATA\CONF\3024-PING.ini">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\3024-PING.ini" />
<None Include="DATA\CONF\3023-PING.ini" />
<None Include="DATA\CONF\SIMUL_07.ini" />
<None Include="DATA\CONF\SIMUL_07.json" />
<None Include="DATA\CONF\SIMUL_08.ini">