Aggiunta preliminare progetto IOB-WIN-FILE
This commit is contained in:
+13
-13
@@ -14,7 +14,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB-UT-NEXT", "IOB-UT-NEXT\
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB-WIN-FORM", "IOB-WIN-FORM\IOB-WIN-FORM.csproj", "{9BA331BB-9BF1-40E0-AC03-74B43D73A097}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB-WIN-FTP", "IOB-WIN-FTP\IOB-WIN-FTP.csproj", "{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB-WIN-FILE", "IOB-WIN-FILE\IOB-WIN-FILE.csproj", "{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@@ -61,18 +61,18 @@ Global
|
||||
{9BA331BB-9BF1-40E0-AC03-74B43D73A097}.Remote_DEBUG|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9BA331BB-9BF1-40E0-AC03-74B43D73A097}.Remote_DEBUG|x86.ActiveCfg = Release|Any CPU
|
||||
{9BA331BB-9BF1-40E0-AC03-74B43D73A097}.Remote_DEBUG|x86.Build.0 = Release|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Remote_DEBUG|Any CPU.ActiveCfg = Release_DEBUG|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Remote_DEBUG|Any CPU.Build.0 = Release_DEBUG|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Remote_DEBUG|x86.ActiveCfg = Release|Any CPU
|
||||
{3ED97EEA-9EAB-480D-8E53-EDB3662DCB79}.Remote_DEBUG|x86.Build.0 = Release|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Remote_DEBUG|Any CPU.ActiveCfg = Remote_DEBUG|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Remote_DEBUG|Any CPU.Build.0 = Remote_DEBUG|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Remote_DEBUG|x86.ActiveCfg = Release|Any CPU
|
||||
{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}.Remote_DEBUG|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
using IOB_UT_NEXT;
|
||||
using IOB_WIN_FILE.Iob;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IOB_WIN_FILE
|
||||
{
|
||||
public class AdapterFormNext: IOB_WIN_FORM.AdapterForm
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Avvio MainForm
|
||||
/// </summary>
|
||||
/// <param name="codIOB"></param>
|
||||
public AdapterFormNext(string codIOB): base(codIOB)
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// carica IOB richiesto
|
||||
/// </summary>
|
||||
protected override void loadIobType()
|
||||
{
|
||||
if (IOBConf != null)
|
||||
{
|
||||
switch (tipoScelto)
|
||||
{
|
||||
case tipoAdapter.FILE_GEN:
|
||||
iobObj = new IobFile.FileGen(this, IOBConf);
|
||||
btnStart.Enabled = true;
|
||||
break;
|
||||
|
||||
case tipoAdapter.FILE_EUROM63:
|
||||
iobObj = new IobFile.FileEurom63(this, IOBConf);
|
||||
btnStart.Enabled = true;
|
||||
break;
|
||||
|
||||
case tipoAdapter.FILE_SOITAAB:
|
||||
iobObj = new IobFile.IobFileSoitaab(this, IOBConf);
|
||||
btnStart.Enabled = true;
|
||||
break;
|
||||
|
||||
case tipoAdapter.SIMULA:
|
||||
case tipoAdapter.ND:
|
||||
default:
|
||||
iobObj = new IOB_WIN_FORM.Iob.Simula(this, IOBConf);
|
||||
btnStart.Enabled = false;
|
||||
break;
|
||||
}
|
||||
lblCncText = $"CNC: {IOBConf.tipoIob} [{IOBConf.cncIpAddr}:{IOBConf.cncPort}]";
|
||||
lblSrvUrlText = $"SRV: {IOBConf.serverData.MPIP} | URL: {IOBConf.serverData.MPURL}{IOBConf.serverData.CMDBASE}";
|
||||
|
||||
// aggancio evento refresh
|
||||
iobObj.eh_refreshed += IobObj_eh_refreshed;
|
||||
|
||||
// carico i default values su interfaccia
|
||||
setDefaults();
|
||||
|
||||
displayTaskAndLog($"Caricata conf per adapter {tipoScelto}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- For more information on using transformations
|
||||
see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
|
||||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
|
||||
<appSettings>
|
||||
<add key="autoLoadConf" value="true" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<!--<add key="DemoIn" value="true" xdt:Transform="Replace" xdt:Locator="Match(key)"/>-->
|
||||
<!--<add key="DemoOut" value="true" xdt:Transform="Replace" xdt:Locator="Match(key)"/>-->
|
||||
</appSettings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- For more information on using transformations
|
||||
see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
|
||||
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
|
||||
<appSettings>
|
||||
<add key="autoLoadConf" value="true" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="DemoIn" value="false" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="DemoOut" value="false" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
<add key="verbose" value="false" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
|
||||
</appSettings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,186 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
|
||||
</startup>
|
||||
<appSettings>
|
||||
<add key="appName" value="IOB-WIN-FILE" />
|
||||
<add key="enableTest" value="false" />
|
||||
<add key="enableContapezzi" value="true" />
|
||||
<add key="enableMode" value="true" />
|
||||
<add key="enableOverrides" value="false" />
|
||||
<add key="enableTSVC" value="true" />
|
||||
<add key="enableDynData" value="false" />
|
||||
<add key="enableSysInfo" value="false" />
|
||||
<add key="enableAlarms" value="true" />
|
||||
<add key="doStartMemDump" value="false" />
|
||||
<add key="doSampleMemory" value="false" />
|
||||
<add key="basePrgMemPath" value="CNCMEMUSER" />
|
||||
<add key="pingMsTimeout" value="1500" />
|
||||
<add key="serverPingDisabled" value="false" />
|
||||
<add key="urlCallTOut" value="9999" />
|
||||
<add key="urlRandWait" value="200" />
|
||||
<!-- ciclo corto x invio a server: ms -->
|
||||
<add key="timerIntMs" value="10" />
|
||||
<add key="fastCount" value="20" />
|
||||
<add key="normCount" value="200" />
|
||||
<add key="slowCount" value="500" />
|
||||
<add key="verySlowCount" value="3000" />
|
||||
<add key="sampleMemCount" value="6000" />
|
||||
<add key="waitEndCycle" value="0" />
|
||||
<add key="comCheckTOut" value="10" />
|
||||
<!-- watchdog, ping, check disconnesso -->
|
||||
<add key="nMaxSend" value="10" />
|
||||
<add key="pingTestSec" value="5" />
|
||||
<add key="watchdogMaxSec" value="90" />
|
||||
<add key="disconMaxSec" value="30" />
|
||||
<add key="defIOB" value="2999" />
|
||||
<add key="pauseSendMSec" value="2000" />
|
||||
<add key="sendStartFLog" value="false" />
|
||||
<!--gestione coda-->
|
||||
<add key="maxQueueFLog" value="16384" />
|
||||
<add key="maxQueueRawTransf" value="1024" />
|
||||
<!--gestione max num errori-->
|
||||
<add key="maxAliveErrors" value="1000" />
|
||||
<add key="maxErroriCheck" value="300" />
|
||||
<add key="maxSendErrors" value="100" />
|
||||
<add key="maxReadErrors" value="20" />
|
||||
<!--parametri SIM-->
|
||||
<add key="waitSimPar" value="30" />
|
||||
<!--<add key="waitSimPar" value="45" />-->
|
||||
<!--gestione REDIS-->
|
||||
<add key="RedisConn" value="localhost,abortConnect=false,ssl=false" />
|
||||
<add key="RedisConnAdmin" value="localhost,abortConnect=false,ssl=false" />
|
||||
<add key="redisDb" value="10" />
|
||||
<!--gestione invio dati in blocchi Json-->
|
||||
<add key="minJsonData" value="2" />
|
||||
<add key="maxJsonData" value="100" />
|
||||
<add key="maxJsonDataEv" value="25" />
|
||||
<!--gestione multithread-->
|
||||
<add key="sendDataByThread" value="false" />
|
||||
<!--Modalità DEMO: DemoOUT indica che NON invia davvero al server e DemoIN che simula e NON legge da PLC-->
|
||||
<add key="DemoIn" value="false" />
|
||||
<add key="DemoInSample" value="false" />
|
||||
<add key="DemoOut" value="false" />
|
||||
<!--definizione invio dati molto variabili-->
|
||||
<add key="SendAxPos" value="false" />
|
||||
<add key="SendFeedSpeed" value="false" />
|
||||
<!--Definizione avvio Adapter-->
|
||||
<add key="autoLoadConf" value="true" />
|
||||
<add key="autoStartOnLoad" value="true" />
|
||||
<add key="startMinimized" value="false" />
|
||||
<add key="windowCanMax" value="true" />
|
||||
<add key="trayClose" value="true" />
|
||||
<add key="autoSaveSec" value="60" />
|
||||
<add key="waitRecMSec" value="60000" />
|
||||
<add key="testCharSep" value="|" />
|
||||
<add key="delayShowLogMs" value="500" />
|
||||
<add key="vetoSeconds" value="5" />
|
||||
<!--conf file-->
|
||||
<add key="dataPath" value="DATA" />
|
||||
<add key="dataConfPath" value="DATA\CONF" />
|
||||
<add key="dataDatPath" value="DATA\DAT" />
|
||||
<add key="resxPath" value="Resources" />
|
||||
<add key="mainConfFile" value="MAIN.ini" />
|
||||
<add key="defaultPersLayerFile" value="PersistData.dat" />
|
||||
<!--<add key="simDataFile" value="SimData.dat" />-->
|
||||
<!--<add key="memDumpFile" value="MemoryDump.dat" />-->
|
||||
<add key="numSim" value="1" />
|
||||
<add key="AUpdAsAdm" value="true" />
|
||||
<add key="ConfToCloud" value="false" />
|
||||
<add key="CacheConfToCloudDuratHour" value="24" />
|
||||
<!--logging-->
|
||||
<add key="recTime" value="true" />
|
||||
<add key="verbose" value="false" />
|
||||
<add key="logEvery" value="100" />
|
||||
<add key="zipLogOldDay" value="1" />
|
||||
<add key="maxLogDirSize" value="300" />
|
||||
<add key="maxLogDays" value="400" />
|
||||
<add key="numRowConsole" value="50" />
|
||||
<add key="verboseLogTOut" value="60" />
|
||||
<!--conf x FANUC-->
|
||||
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
||||
<add key="pzCountDelay" value="2000" />
|
||||
</appSettings>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<probing privatePath="lib;libs" xmlns="urn:schemas-microsoft-com:asm.v1" />
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Web.WebView2.WinForms" publicKeyToken="2a8ab48044d2601e" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.0.2903.40" newVersion="1.0.2903.40" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Web.WebView2.Core" publicKeyToken="2a8ab48044d2601e" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.0.2903.40" newVersion="1.0.2903.40" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.1.5.0" newVersion="4.1.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<system.web>
|
||||
<membership defaultProvider="ClientAuthenticationMembershipProvider">
|
||||
<providers>
|
||||
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
|
||||
</providers>
|
||||
</membership>
|
||||
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
|
||||
<providers>
|
||||
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
|
||||
</providers>
|
||||
</roleManager>
|
||||
</system.web>
|
||||
</configuration>
|
||||
@@ -0,0 +1,70 @@
|
||||
;Configurazione IOB-WIN
|
||||
[IOB]
|
||||
;MAcchina con protocollo Euromap63 PlasticMetal NPM
|
||||
CNCTYPE=FILE_EUROM63
|
||||
PING_MS_TIMEOUT=500
|
||||
|
||||
[MACHINE]
|
||||
VENDOR=PlasticMetal
|
||||
MODEL=MPW280SP
|
||||
|
||||
[CNC]
|
||||
IP=10.74.82.253
|
||||
;IP=192.168.1.151
|
||||
|
||||
[SERVER]
|
||||
MPIP=http://10.74.82.218
|
||||
;MPIP=http://192.168.1.150
|
||||
MPURL=/MP/IO
|
||||
CMDBASE=/IOB/input/
|
||||
CMDFLOG=/IOB/flog/
|
||||
CMDALIVE=/IOB
|
||||
CMDENABLED=/IOB/enabled/
|
||||
CMDADV1=?valore=
|
||||
CMDREBO=/sendReboot.aspx?idxMacchina=
|
||||
|
||||
[MEMORY]
|
||||
ADDR_READ=DB0.DBB0
|
||||
ADDR_WRITE=DB0.DBB0
|
||||
SIZE_READ=1
|
||||
SIZE_WRITE=0
|
||||
;BIT0=CONN
|
||||
BIT1=DB0.DBB1
|
||||
;BIT2=PZCOUNT.STD.DB700.DBW22
|
||||
BIT3=DB0.DBB3
|
||||
BIT4=DB0.DBB4
|
||||
|
||||
|
||||
[BLINK]
|
||||
;MAX_COUNTER_BLINK = 30
|
||||
MAX_COUNTER_BLINK = 15
|
||||
;bit0 = 0
|
||||
;bit1 = 0
|
||||
;bit2 = 1
|
||||
;bit3 = 1
|
||||
;bit4 = 1
|
||||
;bit5 = 0
|
||||
;bit6 = 0
|
||||
;bit7 = 0
|
||||
BLINK_FILT=0
|
||||
;BLINK_FILT=28
|
||||
|
||||
[OPTPAR]
|
||||
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
|
||||
; attenzione memoria sempre base BYTE (1604 DW --> 6416...)
|
||||
;PZCOUNT_MODE=STD.DB550.DBDW0
|
||||
PZCOUNT_MODE=NONE
|
||||
DISABLE_PZCOUNT=TRUE
|
||||
ENABLE_DYN_DATA=TRUE
|
||||
FORCE_DYN_DATA=TRUE
|
||||
ENABLE_SEND_PZC_BLOCK=TRUE
|
||||
MIN_SEND_PZC_BLOCK=0
|
||||
MAX_SEND_PZC_BLOCK=1200
|
||||
MAX_DELAY_SEC=30
|
||||
CACHE_MULT=6
|
||||
; CONF variabili da recuperare in WebPage (stato macchina, contatori, variabili, ...)
|
||||
LUT_CONF=EM63.json
|
||||
timerIntMs=10
|
||||
|
||||
[BRANCH]
|
||||
NAME=master
|
||||
@@ -0,0 +1,188 @@
|
||||
{
|
||||
"BaseDir": "C:\\NPM_E63\\E63\\MPW280SP",
|
||||
"CleanupExt": [
|
||||
"*.dat",
|
||||
"*.job",
|
||||
"*.log",
|
||||
"*.req",
|
||||
"*.rsp"
|
||||
],
|
||||
"DynData": [
|
||||
{
|
||||
"key": "CLOCK_1",
|
||||
"name": "CLOCK_1",
|
||||
"val": "ct4",
|
||||
"unit": "DateTime",
|
||||
"func": "CHANGE",
|
||||
"sPeriod": 10
|
||||
},
|
||||
{
|
||||
"key": "CLOCK_2",
|
||||
"name": "CLOCK_2",
|
||||
"val": "ct4",
|
||||
"unit": "DateTime",
|
||||
"func": "SAMPLE",
|
||||
"sPeriod": 10
|
||||
}
|
||||
],
|
||||
"PzPallet": 24,
|
||||
"ActiveSessions": {
|
||||
"0": {
|
||||
"Cycle": false,
|
||||
"Description": "Check Connection Status",
|
||||
"Max2Keep": 10,
|
||||
"RetrySec": 20,
|
||||
"SessionName": "SESS0000",
|
||||
"SessionType": "IsConnected",
|
||||
"StepOrder": 0,
|
||||
"ValidityMinutes": 0.0,
|
||||
"FileList": [
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0000.REQ",
|
||||
"OprReq": "Copy"
|
||||
}
|
||||
]
|
||||
},
|
||||
"1": {
|
||||
"Cycle": false,
|
||||
"Description": "Get ID data",
|
||||
"Max2Keep": 10,
|
||||
"RetrySec": 10,
|
||||
"SessionName": "SESS0001",
|
||||
"SessionType": "GetId",
|
||||
"StepOrder": 1,
|
||||
"ValidityMinutes": 0.0,
|
||||
"FileList": [
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0001.JOB",
|
||||
"OprReq": "Copy"
|
||||
},
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0001.REQ",
|
||||
"OprReq": "Copy"
|
||||
}
|
||||
]
|
||||
},
|
||||
"2": {
|
||||
"Cycle": false,
|
||||
"Description": "Set DateTime on machine at start",
|
||||
"RetrySec": 10,
|
||||
"SessionName": "SESS0002",
|
||||
"SessionType": "SetDateTime",
|
||||
"ValidityMinutes": 0.0,
|
||||
"Max2Keep": 10,
|
||||
"StepOrder": 2,
|
||||
"FileList": [
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0002.JOB",
|
||||
"OprReq": "ReplaceAndCopy"
|
||||
},
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0002.REQ",
|
||||
"OprReq": "Copy"
|
||||
}
|
||||
]
|
||||
},
|
||||
"3": {
|
||||
"Cycle": false,
|
||||
"Description": "Abort All prev requests",
|
||||
"RetrySec": 10,
|
||||
"SessionName": "SESS0003",
|
||||
"SessionType": "AbortAll",
|
||||
"ValidityMinutes": 0.0,
|
||||
"Max2Keep": 10,
|
||||
"StepOrder": 3,
|
||||
"FileList": [
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0003.JOB",
|
||||
"OprReq": "Copy"
|
||||
},
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0003.REQ",
|
||||
"OprReq": "Copy"
|
||||
}
|
||||
]
|
||||
},
|
||||
"4": {
|
||||
"Cycle": true,
|
||||
"Description": "Get Machine Status",
|
||||
"RetrySec": 30,
|
||||
"SessionName": "SESS0004",
|
||||
"SessionType": "GetStatus",
|
||||
"ValidityMinutes": 10.0,
|
||||
"Max2Keep": 120,
|
||||
"StepOrder": 4,
|
||||
"FileList": [
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0004.JOB",
|
||||
"OprReq": "Copy"
|
||||
},
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0004.REQ",
|
||||
"OprReq": "Copy"
|
||||
}
|
||||
]
|
||||
},
|
||||
"5": {
|
||||
"Cycle": true,
|
||||
"Description": "Get Production",
|
||||
"RespOk": "PROCESSED|already running",
|
||||
"RetrySec": 30,
|
||||
"SessionName": "SESS0005",
|
||||
"SessionType": "GetProduction",
|
||||
"ValidityMinutes": 10.0,
|
||||
"Max2Keep": 120,
|
||||
"StepOrder": 5,
|
||||
"FileList": [
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0005.JOB",
|
||||
"OprReq": "Copy"
|
||||
},
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0005.REQ",
|
||||
"OprReq": "Copy"
|
||||
}
|
||||
]
|
||||
},
|
||||
"10": {
|
||||
"Cycle": false,
|
||||
"Description": "Set Param ODL at Setup",
|
||||
"RetrySec": 30,
|
||||
"SessionName": "SESS0010",
|
||||
"SessionType": "SetParamOdl",
|
||||
"ValidityMinutes": 0.0,
|
||||
"Max2Keep": 10,
|
||||
"StepOrder": 10,
|
||||
"FileList": [
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0010.JOB",
|
||||
"OprReq": "ReplaceAndCopy"
|
||||
},
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0010.REQ",
|
||||
"OprReq": "Copy"
|
||||
}
|
||||
]
|
||||
},
|
||||
"19": {
|
||||
"Cycle": false,
|
||||
"Description": "Get INFO data",
|
||||
"Max2Keep": 10,
|
||||
"RetrySec": 30,
|
||||
"SessionName": "SESS0019",
|
||||
"SessionType": "GetInfo",
|
||||
"StepOrder": 19,
|
||||
"ValidityMinutes": 0.0,
|
||||
"FileList": [
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0019.JOB",
|
||||
"OprReq": "Copy"
|
||||
},
|
||||
{
|
||||
"Path": "EUR63_JOB\\SESS0019.REQ",
|
||||
"OprReq": "Copy"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
;Configurazione IOB-WIN
|
||||
[IOB]
|
||||
;Accesso gestione sync con FILE SOITAAB
|
||||
CNCTYPE=FILE_SOITAAB
|
||||
PING_MS_TIMEOUT=500
|
||||
MinDeltaSec=5
|
||||
IOB_NAME=IMI_SOITAAB_Z2342
|
||||
DIS_EXE_TASK=TRUE
|
||||
DIS_STATE_CH=FALSE
|
||||
|
||||
[MACHINE]
|
||||
VENDOR=SOITAAB
|
||||
MODEL=Ossitaglio Z2342
|
||||
|
||||
[CNC]
|
||||
;IP=ecs900
|
||||
IP=172.28.30.53
|
||||
PORT=0
|
||||
GETPRGNAME=false
|
||||
|
||||
[SERVER]
|
||||
MPIP=http://192.168.0.110
|
||||
MPURL=/MP/IO
|
||||
CMDBASE=/IOB/input/
|
||||
CMDFLOG=/IOB/flog/
|
||||
CMDALIVE=/IOB
|
||||
CMDENABLED=/IOB/enabled/
|
||||
CMDADV1=?valore=
|
||||
CMDREBO=/sendReboot.aspx?idxMacchina=
|
||||
CMDRAWTRANSF=/IOB/rawTransfJson/
|
||||
|
||||
[MEMORY]
|
||||
ADDR_READ=DB9999.DBB0
|
||||
ADDR_WRITE=DB9999.DBB0
|
||||
SIZE_READ=0
|
||||
SIZE_WRITE=0
|
||||
;BIT0=CONN
|
||||
;BIT1=DB60.DBB1
|
||||
;BIT2=PZCOUNT.STD.DB700.DBW22
|
||||
;BIT3=DB60.DBB3
|
||||
;BIT4=DB60.DBB4
|
||||
|
||||
|
||||
[BLINK]
|
||||
;MAX_COUNTER_BLINK = 30
|
||||
MAX_COUNTER_BLINK = 15
|
||||
;bit0 = 0
|
||||
;bit1 = 0
|
||||
;bit2 = 1
|
||||
;bit3 = 1
|
||||
;bit4 = 1
|
||||
;bit5 = 0
|
||||
;bit6 = 0
|
||||
;bit7 = 0
|
||||
BLINK_FILT=0
|
||||
;BLINK_FILT=28
|
||||
|
||||
[OPTPAR]
|
||||
AUTO_CHANGE_ODL=false
|
||||
CHANGE_ODL_MODE=TIME
|
||||
CHANGE_ODL_HOURS=24
|
||||
CHANGE_ODL_IDLE_MIN=5
|
||||
PZCOUNT_MODE=SOITAAB
|
||||
DISABLE_PZCOUNT=FALSE
|
||||
ENABLE_SEND_PZC_BLOCK=TRUE
|
||||
MIN_SEND_PZC_BLOCK=0
|
||||
MAX_SEND_PZC_BLOCK=100
|
||||
ENABLE_DYN_DATA=TRUE
|
||||
FORCE_DYN_DATA=TRUE
|
||||
DEM_FACT_DYN_DATA=5
|
||||
ENABLE_DATA_FILTER=TRUE
|
||||
ENABLE_CLI_RESTART=TRUE
|
||||
DISABLE_SEND_WDST=TRUE
|
||||
VetoReadSec=5
|
||||
EnabelPodlManFull=true
|
||||
CodGruppoIob=GRP-CC-025
|
||||
; invio flux alla lettura file
|
||||
sendFluxOnRead=true
|
||||
|
||||
; clock base (da 10ms)
|
||||
timerIntMs=20
|
||||
|
||||
; conf parametri memoria READ/WRITE
|
||||
PARAM_CONF=IMI_SOITAAB_Z2342_02.json
|
||||
|
||||
[BRANCH]
|
||||
NAME=master
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"mMapWrite": {
|
||||
},
|
||||
"mMapRead": {
|
||||
},
|
||||
"optKVP": {
|
||||
//"path-remBase": "C:\\Temp"
|
||||
"path-remBase": "\\\\ecs900\\Logs"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
;Configurazione IOB-WIN GENERALE
|
||||
[BRANCH]
|
||||
NAME=master
|
||||
|
||||
[SERVER]
|
||||
|
||||
; Server Steamware
|
||||
MPIP=10.74.82.218
|
||||
MPURL=/MP/IO
|
||||
CMDREBO=/IOB/sendRebootGateway?GWIP=
|
||||
CMDIOB2CALL=/IOB/getIob2call?GWIP=
|
||||
|
||||
;Client Install
|
||||
CLI_INST=SteamWareSim
|
||||
|
||||
[IOB]
|
||||
;--- TEST sul campo
|
||||
; SIMULAZIONE verso server ufficio
|
||||
;STARTLIST=SIMUL_01,SIMUL_02,SIMUL_03,SIMUL_04
|
||||
;STARTLIST=IMI_SOITAAB_Z2342_02
|
||||
STARTLIST=IMI_SOITAAB_Z2342_02
|
||||
|
||||
|
||||
MAXCNC=10
|
||||
@@ -0,0 +1,120 @@
|
||||
;Configurazione IOB-WIN
|
||||
[IOB]
|
||||
CNCTYPE=SIMULA
|
||||
PING_MS_TIMEOUT=500
|
||||
MinDeltaSec=5
|
||||
EnableRedisQueue=true
|
||||
;IOB_NAME=TFT_RAMA_001
|
||||
|
||||
[MACHINE]
|
||||
VENDOR=STEAMWARE
|
||||
MODEL=DEMO_SIMULATOR
|
||||
|
||||
[CNC]
|
||||
IP=127.0.0.1
|
||||
PORT=0000
|
||||
|
||||
[SERVER]
|
||||
MPIP=http://10.74.82.218
|
||||
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]
|
||||
DISABLE_SEND_WDST=TRUE
|
||||
AUTO_CHANGE_ODL=true
|
||||
AUTO_SNAPSHOT_DOSSIER=true
|
||||
CHANGE_ODL_HOURS=24
|
||||
CHANGE_ODL_IDLE_MIN=0
|
||||
CHANGE_ODL_MODE=SIMUL
|
||||
; gestione custom timer
|
||||
timerIntMs=100
|
||||
;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice
|
||||
PZCOUNT_MODE=BIT
|
||||
ENABLE_PZ_RESET=TRUE
|
||||
;gestione invio pezzi in blocco
|
||||
ENABLE_SEND_PZC_BLOCK=TRUE
|
||||
MIN_SEND_PZC_BLOCK=0
|
||||
MAX_SEND_PZC_BLOCK=100
|
||||
; gestione cambio ODL automatico (minuti minimi durata)
|
||||
MIN_DURATA_ODL=960
|
||||
; per il simulatore: 50|1 = WAIT 50, DURATION 1 con riferimento al PERIODO base (PER_BASE in ms, default 10 secondi)
|
||||
PER_BASE=10100
|
||||
SIM_PZCNT=5|1
|
||||
SIM_ALARM=100|10
|
||||
SIM_MANU=50|6
|
||||
; indica gestione e simulazione bit 5 --> slow
|
||||
SIM_SLOW=3600|20
|
||||
; indica gestione e simulazione bit 6 --> warmup/cooldown
|
||||
SIM_WUCD=8000|20
|
||||
; indica gestione e simulazione bit 7 --> emergenza
|
||||
SIM_EMRG=4000|10
|
||||
; indica simulazione delle funzionalità power ON/ OFF
|
||||
SIM_POW_ON_OFF=true
|
||||
T_ON=7
|
||||
T_OFF=22
|
||||
; indica simulazione controlli utente
|
||||
SIM_RC=81|1
|
||||
; indica simulazione registro scarti
|
||||
SIM_RS=161|1
|
||||
; indica simulazione dichiarazioni (note) utente
|
||||
SIM_DICH=261|1
|
||||
; indica matricola opr simulata
|
||||
SIM_MATR_OPR=1
|
||||
|
||||
; test x datasync...
|
||||
DATA_SYNC_AT_START=true
|
||||
; test sim dossiers tipo Kepware
|
||||
SIM_KWP=true
|
||||
|
||||
; gestione DynData simulati
|
||||
ENABLE_DYN_DATA=TRUE
|
||||
FORCE_DYN_DATA=TRUE
|
||||
NEW_DYN_DATA=TRUE
|
||||
; indica parametri gestione TcMan
|
||||
TC_MAX_TC_FACTOR=3.9
|
||||
TC_LAMBDA=0.4
|
||||
TC_MAX_INCR=5
|
||||
MAX_PZ_INCR_PERC=1000
|
||||
; conf parametri memoria READ/WRITE
|
||||
PARAM_CONF=SIMUL_01.json
|
||||
ALARM_CONF=SIMUL_01_alarm.json
|
||||
;test gestione logfile (eg: soitaab)
|
||||
EnabelPodlManFull=true
|
||||
CodGruppoIob=STEAMWARE-SIM-FASE-01
|
||||
; invio flux alla lettura file
|
||||
sendFluxOnRead=true
|
||||
|
||||
;conf test FTP
|
||||
FTP_SERVER=ftp.steamware.net
|
||||
FTP_USER=testftpuser
|
||||
FTP_PWD=we4reFromB3rghem!
|
||||
FTP_CERT=
|
||||
FTP_SKIP=TRUE
|
||||
FTP_LOC_DIR=temp\csv
|
||||
FTP_REM_DIR=
|
||||
CSV_ADD_HEADER=true
|
||||
|
||||
|
||||
[BRANCH]
|
||||
NAME=master
|
||||
|
||||
; Tags manuali
|
||||
[TAGS]
|
||||
Customer=Steamware
|
||||
HostOS=WIN
|
||||
HostName=IOB-WIN-SIMULA
|
||||
HostAddr=10.74.82.76
|
||||
@@ -0,0 +1,410 @@
|
||||
{
|
||||
"mMapWrite": {
|
||||
"setArt": {
|
||||
"name": "setArt",
|
||||
"description": "Articolo",
|
||||
"memAddr": "DB150.DBB12",
|
||||
"tipoMem": "String",
|
||||
"index": 12,
|
||||
"size": 20,
|
||||
"displOrdinal": 1
|
||||
},
|
||||
"setArtNum": {
|
||||
"name": "setArtNum",
|
||||
"description": "# Num Articolo",
|
||||
"memAddr": "DB150.DBB112",
|
||||
"tipoMem": "Int",
|
||||
"index": 112,
|
||||
"size": 4,
|
||||
"displOrdinal": 1
|
||||
},
|
||||
"setComm": {
|
||||
"name": "setComm",
|
||||
"description": "Commessa",
|
||||
"memAddr": "DB150.DBB32",
|
||||
"tipoMem": "String",
|
||||
"index": 32,
|
||||
"size": 20,
|
||||
"displOrdinal": 2
|
||||
},
|
||||
"setCommNum": {
|
||||
"name": "setCommNum",
|
||||
"description": "# NumCommessa",
|
||||
"memAddr": "DB150.DBB132",
|
||||
"tipoMem": "Int",
|
||||
"index": 132,
|
||||
"size": 4,
|
||||
"displOrdinal": 2
|
||||
},
|
||||
"setPzComm": {
|
||||
"name": "setPzComm",
|
||||
"description": "Qta Richiesta",
|
||||
"memAddr": "DB150.DBB8",
|
||||
"tipoMem": "Int",
|
||||
"index": 8,
|
||||
"size": 4,
|
||||
"displOrdinal": 3
|
||||
},
|
||||
"forceSetPzCount": {
|
||||
"name": "forceSetPzCount",
|
||||
"description": "Imposta Qta",
|
||||
"memAddr": "DB150.DBB8",
|
||||
"tipoMem": "Int",
|
||||
"index": 8,
|
||||
"size": 4,
|
||||
"displOrdinal": 11
|
||||
},
|
||||
//"OPC_Set Point.Chain Spped": {
|
||||
// "name": "OPC_Set Point.Chain Spped",
|
||||
// "description": "Chain Spped",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Chain Spped",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Top Overfeeding": {
|
||||
// "name": "OPC_Set Point.Top Overfeeding",
|
||||
// "description": "Top Overfeeding",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Top Overfeeding",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Bottom Overfeeding": {
|
||||
// "name": "OPC_Set Point.Bottom Overfeeding",
|
||||
// "description": "Bottom Overfeeding",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Bottom Overfeeding",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Width Master": {
|
||||
// "name": "OPC_Set Point.Width Master",
|
||||
// "description": "Width Master",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Width Master",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Thermoset Time": {
|
||||
// "name": "OPC_Set Point.Thermoset Time",
|
||||
// "description": "Thermoset Time",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Thermoset Time",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Thermoset Temperature": {
|
||||
// "name": "OPC_Set Point.Thermoset Temperature",
|
||||
// "description": "Thermoset Temperature",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Thermoset Temperature",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Take Off Overfeeding": {
|
||||
// "name": "OPC_Set Point.Take Off Overfeeding",
|
||||
// "description": "Take Off Overfeeding",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Take Off Overfeeding",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Small Roller Overfeeding": {
|
||||
// "name": "OPC_Set Point.Small Roller Overfeeding",
|
||||
// "description": "Small Roller Overfeeding",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Small Roller Overfeeding",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Scroll Roller Overfeeding": {
|
||||
// "name": "OPC_Set Point.Scroll Roller Overfeeding",
|
||||
// "description": "Scroll Roller Overfeeding",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Scroll Roller Overfeeding",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Right Whell Overfeeding": {
|
||||
// "name": "OPC_Set Point.Right Whell Overfeeding",
|
||||
// "description": "Right Whell Overfeeding",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Right Whell Overfeeding",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Plaiter Overfeeding": {
|
||||
// "name": "OPC_Set Point.Plaiter Overfeeding",
|
||||
// "description": "Plaiter Overfeeding",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Plaiter Overfeeding",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Load cell Weight": {
|
||||
// "name": "OPC_Set Point.Load cell Weight",
|
||||
// "description": "Load cell Weight",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Load cell Weight",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Left Wheel Overfeeding": {
|
||||
// "name": "OPC_Set Point.Left Wheel Overfeeding",
|
||||
// "description": "Left Wheel Overfeeding",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Left Wheel Overfeeding",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Fan 105A Speed": {
|
||||
// "name": "OPC_Set Point.Fan 105A Speed",
|
||||
// "description": "Fan 105A Speed",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 105A Speed",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Fan 105 Speed": {
|
||||
// "name": "OPC_Set Point.Fan 105 Speed",
|
||||
// "description": "Fan 105 Speed",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 105 Speed",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Fan 103A Speed": {
|
||||
// "name": "OPC_Set Point.Fan 103A Speed",
|
||||
// "description": "Fan 103A Speed",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 103A Speed",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Fan 103 Speed": {
|
||||
// "name": "OPC_Set Point.Fan 103 Speed",
|
||||
// "description": "Fan 103 Speed",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 103 Speed",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Fan 101A Speed": {
|
||||
// "name": "OPC_Set Point.Fan 101A Speed",
|
||||
// "description": "Fan 101A Speed",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 101A Speed",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Fan 101 Speed": {
|
||||
// "name": "OPC_Set Point.Fan 101 Speed",
|
||||
// "description": "Fan 101 Speed",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Fan 101 Speed",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Exhaust Fan 1 Speed": {
|
||||
// "name": "OPC_Set Point.Exhaust Fan 1 Speed",
|
||||
// "description": "Exhaust Fan 1 Speed",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Exhaust Fan 1 Speed",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Differentiation Spindle 5": {
|
||||
// "name": "OPC_Set Point.Differentiation Spindle 5",
|
||||
// "description": "Differentiation Spindle 5",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 5",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Differentiation Spindle 4": {
|
||||
// "name": "OPC_Set Point.Differentiation Spindle 4",
|
||||
// "description": "Differentiation Spindle 4",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 4",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Differentiation Spindle 3": {
|
||||
// "name": "OPC_Set Point.Differentiation Spindle 3",
|
||||
// "description": "Differentiation Spindle 3",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 3",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Differentiation Spindle 2": {
|
||||
// "name": "OPC_Set Point.Differentiation Spindle 2",
|
||||
// "description": "Differentiation Spindle 2",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 2",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Differentiation Spindle 1": {
|
||||
// "name": "OPC_Set Point.Differentiation Spindle 1",
|
||||
// "description": "Differentiation Spindle 1",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Differentiation Spindle 1",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Cooling Cell 1 Speed": {
|
||||
// "name": "OPC_Set Point.Cooling Cell 1 Speed",
|
||||
// "description": "Cooling Cell 1 Speed",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Cooling Cell 1 Speed",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Burner 6 Temperature": {
|
||||
// "name": "OPC_Set Point.Burner 6 Temperature",
|
||||
// "description": "Burner 6 Temperature",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 6 Temperature",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Burner 5 Temperature": {
|
||||
// "name": "OPC_Set Point.Burner 5 Temperature",
|
||||
// "description": "Burner 5 Temperature",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 5 Temperature",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Burner 4 Temperature": {
|
||||
// "name": "OPC_Set Point.Burner 4 Temperature",
|
||||
// "description": "Burner 4 Temperature",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 4 Temperature",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Burner 3 Temperature": {
|
||||
// "name": "OPC_Set Point.Burner 3 Temperature",
|
||||
// "description": "Burner 3 Temperature",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 3 Temperature",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Burner 2 Temperature": {
|
||||
// "name": "OPC_Set Point.Burner 2 Temperature",
|
||||
// "description": "Burner 2 Temperature",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 2 Temperature",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Burner 1 Temperature": {
|
||||
// "name": "OPC_Set Point.Burner 1 Temperature",
|
||||
// "description": "Burner 1 Temperature",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Burner 1 Temperature",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//},
|
||||
//"OPC_Set Point.Air Humidity Preset Esa 1": {
|
||||
// "name": "OPC_Set Point.Air Humidity Preset Esa 1",
|
||||
// "description": "Air Humidity Preset Esa 1",
|
||||
// "tipoMem": "String",
|
||||
// "memAddr": "ns=2;s=RamosaETN21.RamosaCJ2.Recipe.Air Humidity Preset Esa 1",
|
||||
// "index": 0,
|
||||
// "size": 0
|
||||
//}
|
||||
},
|
||||
"mMapRead": {
|
||||
"TEMP_01": {
|
||||
"name": "TEMP_01",
|
||||
"description": "Temperatura 01",
|
||||
"tipoMem": "Real",
|
||||
"minVal": 18,
|
||||
"maxVal": 24,
|
||||
"displOrdinal": 4
|
||||
},
|
||||
"POWER_01": {
|
||||
"name": "POWER_01",
|
||||
"description": "Potenza impianto",
|
||||
"tipoMem": "Int",
|
||||
"minVal": 40,
|
||||
"maxVal": 80,
|
||||
"displOrdinal": 5
|
||||
},
|
||||
"FEED_OVER": {
|
||||
"name": "FEED_OVER",
|
||||
"description": "FEED override",
|
||||
"tipoMem": "Int",
|
||||
"minVal": 0,
|
||||
"maxVal": 100,
|
||||
"displOrdinal": 6
|
||||
},
|
||||
"RAPID_OVER": {
|
||||
"name": "RAPID_OVER",
|
||||
"description": "RAPID override",
|
||||
"tipoMem": "Int",
|
||||
"minVal": 50,
|
||||
"maxVal": 120,
|
||||
"displOrdinal": 7
|
||||
},
|
||||
"POS_X": {
|
||||
"name": "POS_X",
|
||||
"description": "Asse X",
|
||||
"tipoMem": "Int",
|
||||
"minVal": -2000,
|
||||
"maxVal": 2000,
|
||||
"displOrdinal": 8
|
||||
},
|
||||
"POS_Y": {
|
||||
"name": "POS_Y",
|
||||
"description": "Asse Y",
|
||||
"tipoMem": "Int",
|
||||
"minVal": 0,
|
||||
"maxVal": 2000,
|
||||
"displOrdinal": 9
|
||||
},
|
||||
"POS_Z": {
|
||||
"name": "POS_Z",
|
||||
"description": "Asse Z",
|
||||
"tipoMem": "Int",
|
||||
"minVal": 0,
|
||||
"maxVal": 1500,
|
||||
"displOrdinal": 10
|
||||
}
|
||||
},
|
||||
"optKVP": {
|
||||
"fluxLogReduce": true,
|
||||
"fluxLogRedDeadBand": 1.5,
|
||||
"fluxLogResendPeriod": 15,
|
||||
"hasRecipe": true,
|
||||
"maxPodlQty": 530,
|
||||
"useLocalRecipe": true,
|
||||
"path-locBase": "C:\\MesData\\",
|
||||
"path-00-Arch": "ArchivioRicette\\FIMAT",
|
||||
"path-01-Temp": "01-Temp\\FIMAT",
|
||||
"path-02-Sent": "02-Inviate\\FIMAT",
|
||||
"path-03-Recv": "03-Ricevute\\FIMAT",
|
||||
"path-04-remReq": "Y:\\",
|
||||
"path-05-remExe": "C:\\MesData\\Remote\\Dosed",
|
||||
"path-06-remRec": "R:\\",
|
||||
"path-outReport": "C:\\MesData\\Report",
|
||||
"path-confSetup": "C:\\MesData\\Setup\\setupConsumi.json",
|
||||
"replace-<Variant>": "<Variant>{{PODL}}",
|
||||
"replace-<Info1>": "<Info1>Kg{{Qty}} | {{Note}}"
|
||||
}, //,
|
||||
//"BaseKeyTranslate": "ns=2;s=RamosaETN21.RamosaCJ2",
|
||||
//"RecipeKeyTranslate": {
|
||||
// "Present Value.General Fan": "Recipe.Chain Spped",
|
||||
// "Present Value.Bottom Overfeeding": "Recipe.Bottom Overfeeding",
|
||||
// "Present Value.Top Overfeeding": "Recipe.Top Overfeeding"
|
||||
//}
|
||||
"mMapWriteLink": {
|
||||
"setArt": "setArtNum",
|
||||
"setComm": "setCommNum"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
;Configurazione IOB-WIN
|
||||
[IOB]
|
||||
CNCTYPE=PingWatchdog
|
||||
PING_MS_TIMEOUT=500
|
||||
; attenzione che alcuni eventi vengo scritti cmq nel log di SIMUL_01 invece di SIMUL_01_WD
|
||||
IOB_NAME=SIMUL_01
|
||||
|
||||
[MACHINE]
|
||||
VENDOR=STEAMWARE
|
||||
MODEL=WATCHDOG
|
||||
|
||||
[CNC]
|
||||
; ping vs WIN10-VPN-03 per test
|
||||
IP=10.74.83.203
|
||||
PORT=0000
|
||||
|
||||
[SERVER]
|
||||
MPIP=http://10.74.82.218
|
||||
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]
|
||||
AUTO_CHANGE_ODL=false
|
||||
POWEROFF_TIMEOUT_SEC=60
|
||||
ENABLE_SEND_PZC_BLOCK=TRUE
|
||||
MIN_SEND_PZC_BLOCK=0
|
||||
MAX_SEND_PZC_BLOCK=100
|
||||
|
||||
[BRANCH]
|
||||
NAME=master
|
||||
|
||||
; Tags manuali
|
||||
[TAGS]
|
||||
Customer=Steamware
|
||||
HostOS=WIN
|
||||
HostName=IOB-WIN-SIMULA
|
||||
HostAddr=10.74.82.76
|
||||
@@ -0,0 +1,859 @@
|
||||
[
|
||||
{
|
||||
"description": "Alarm Word 0 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 0",
|
||||
"index": 0,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"1,ALLARME INVERTER CATENA TRASP. TESSUTO",
|
||||
"2,ALLARME INVERTER CILINDRO SOVRALIMENTAZIONE SUPERIORE",
|
||||
"3,ALLARME INVERTER CILINDRO SOVRALIMENTAZIONE INFERIORE",
|
||||
"4,ALLARME INVERTER RUOTA SOVRALIMENTAZIONE SINISTRA",
|
||||
"5,ALLARME INVERTER RUOTA SOVRALIMENTAZIONE DESTRA",
|
||||
"6,ALLARME INVERTER STACCAPEZZA",
|
||||
"7,ALLARME INVERTER FALDAROTOLATORE",
|
||||
"8,ALLARME INVERTER FALDERUOLE",
|
||||
"9,ALLARME INVERTER ESAUSTORE 1 ",
|
||||
"10,ALLARME FUNE SICUREZZA USCITA",
|
||||
"11,ALLARME VENTILATORE 1 (BASSO)",
|
||||
"12, ALLARME VENTILATORE 2 (BASSO)",
|
||||
"13,ALLARME F.C. MINIMO CAMPO MASTER",
|
||||
"14,ALLARME F.C. MASSIMO CAMPO MASTER",
|
||||
"15,ALLARME PROTEZIONE TAPPETO INGRESSO",
|
||||
"16,RIFERIMENTO POTENZIOMETRI CAMPI ASSENTE"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 1 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 1",
|
||||
"index": 1,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"17,ALLARME CONDIZIONATORI",
|
||||
"18,EMERGENZA IN CORSO !!!",
|
||||
"19,ALLARME PROTEZIONE RECUPERO CALORE - GRUPPO 2 POMPA 1",
|
||||
"20,ALLARME POMPA RECUPERO CALORE 3",
|
||||
"21,CONTROLLO UMIDITA' : FUORI CAMPO",
|
||||
"22,ALLARME RILEVATORE ALTEZZA TESSUTO",
|
||||
"23,ALLARME NON RILASCIO TESSUTO SINISTRO",
|
||||
"24,ALLARME NON RILASCIO TESSUTO DESTRO",
|
||||
"25,ALLARME ALIMENTAZIONE 24VAC QUADRO",
|
||||
"26,ALLARME APRICIMOSSE",
|
||||
"27,ALLARME ASCIUGACIMOSSE A INFRAROSSI",
|
||||
"28,ALLARME PROTEZIONE CELLA DI RAFFREDDAMENTO 1",
|
||||
"29,CAMPO PARALLELO 2 ALLARME PROTEZIONE",
|
||||
"30,ALLARME VENTILATORE 3 (BASSO)",
|
||||
"31,ALLARME VENTILATORE 4 (BASSO)",
|
||||
"32,CAMPO PARALLELO 1 ALLARME PROTEZIONE"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 2 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 2",
|
||||
"index": 2,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"33,CAMPO PARALLELO 3 ALLARME PROTEZIONE",
|
||||
"34,RAGGIUNTO MASSIMO CARICO CELLA DI CARICO TAPPETO",
|
||||
"35,ALLARME FALLOPEZZA SINISTRO",
|
||||
"36,ALLARME FALLOPEZZA DESTRO",
|
||||
"37,PARATIE ANTERIORI APERTE",
|
||||
"38,ALLARME AZIONAMENTO CAMPO CONICO",
|
||||
"39,BLOCCO BRUCIATORE 9",
|
||||
"40,CAMPO MASTER ALLARME PROTEZIONE ",
|
||||
"41,ALLARME PRESSOSTATO TENDICATENA SINISTRO",
|
||||
"42,ALLARME PRESSOSTATO TENDICATENA DESTRO",
|
||||
"43,ALLARME MASSIMO ALLUNGAMENTO CATENA",
|
||||
"44,ALLARME TIPO LAVORO USCITA NON SELEZIONATO",
|
||||
"45,ALLARME RADDRIZZATRAMA",
|
||||
"46,ALLARME SPREMITORE 1",
|
||||
"47,BLOCCO BRUCIATORE 10",
|
||||
"48,BLOCCO BRUCIATORE 11"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 3 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 3",
|
||||
"index": 3,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"49,BLOCCO BRUCIATORE 12",
|
||||
"50,BLOCCO BRUCIATORE 1",
|
||||
"51,BLOCCO BRUCIATORE 2",
|
||||
"52,BLOCCO BRUCIATORE 3",
|
||||
"53,BLOCCO BRUCIATORE 4",
|
||||
"54,BIELLE FUORI POSIZIONE",
|
||||
"55,GRUPPO FALDATORE FUORI POSIZIONE",
|
||||
"56,SERIE ARRESTI APERTA",
|
||||
"57,MANCANZA LUBRIFICANTE CATENA TRASP. TESSUTO",
|
||||
"58,ALLARME INVERTER PICCOLO ROTOLO",
|
||||
"59,ALLARME PROTEZIONE ALLARGATORI",
|
||||
"60,ALLARME PROTEZIONE ASPIRACIMOSSE",
|
||||
"61,ALLARME TAGLIACIMOSSE SINISTRA",
|
||||
"62,ALLARME TAGLIACIMOSSE DESTRA",
|
||||
"63,ALLARME INVERTER VENTILATORI INV101",
|
||||
"64,ALLARME INVERTER VENTILATORI INV103"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 4 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 4",
|
||||
"index": 4,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"65,ALLARME TIMEOUT VITE CAMPO MASTER",
|
||||
"66,ALLARME TIMEOUT VITE CAMPO PARALLELO 1",
|
||||
"67,ALLARME TIMEOUT VITE CAMPO PARALLELO 2",
|
||||
"68,ALLARME TIMEOUT VITE CAMPO PARALLELO 3",
|
||||
"69,ALLARME TIMEOUT VITE CAMPO PARALLELO 4",
|
||||
"70,ALLARME TIMEOUT VITE CAMPO PARALLELO 5",
|
||||
"71,ALLARME TIMEOUT VITE CAMPO PARALLELO 6",
|
||||
"72,ALLARME TIMEOUT VITE CAMPO PARALLELO 7",
|
||||
"73,ALLARME TIMEOUT VITE CAMPO PARALLELO 8",
|
||||
"74,ALLARME TIMEOUT VITE CAMPO PARALLELO 9",
|
||||
"75,ALLARME DEVICE_NET ADDR. 32 DA BANCHETTO DI SPALMATURA",
|
||||
"76,ALLARME INVERTER DOGAL ",
|
||||
"77,ALLARME FOTOCELLULA TAPPETO USCITA PIENO",
|
||||
"78,TEMPO DI CICLO PLC SOPRA MASSIMO IMPOSTATO",
|
||||
"79,ERRORE INDIRIZZI SONDE BRUCIATORI",
|
||||
"80,ALLARME VENTILATORE 4 (ALTO)"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 5 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 5",
|
||||
"index": 5,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"81,ALLARME VENTILATORE 5 (ALTO)",
|
||||
"82,ALLARME VENTILATORE 6 (ALTO)",
|
||||
"83,ALLARME VENTILATORE 7 (ALTO)",
|
||||
"84,SONDA BRUCIATORE 1 INTERROTTA",
|
||||
"85,SONDA BRUCIATORE 2 INTERROTTA",
|
||||
"86,SONDA BRUCIATORE 3 INTERROTTA",
|
||||
"87,SONDA BRUCIATORE 4 INTERROTTA",
|
||||
"88,ALLARME DEVICE_NET ADDR. 0",
|
||||
"89,ALLARME DEVICE_NET ADDR. 1",
|
||||
"90,ALLARME DEVICE_NET ADDR. 2",
|
||||
"91,ALLARME DEVICE_NET ADDR. 3",
|
||||
"92,ALLARME DEVICE_NET ADDR. 4",
|
||||
"93,ALLARME DEVICE_NET ADDR. 5",
|
||||
"94,ALLARME DEVICE_NET ADDR. 6",
|
||||
"95,ALLARME DEVICE_NET ADDR. 7",
|
||||
"96,ALLARME DEVICE_NET ADDR. 8"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 6 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 6",
|
||||
"index": 6,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"97,ALLARME DEVICE_NET ADDR. 9",
|
||||
"98,ALLARME DEVICE_NET ADDR. 10",
|
||||
"99,ALLARME DEVICE_NET ADDR. 11",
|
||||
"100,ALLARME DEVICE_NET ADDR. 12",
|
||||
"101,ALLARME DEVICE_NET ADDR. 13",
|
||||
"102,ALLARME DEVICE_NET ADDR. 14",
|
||||
"103,ALLARME DEVICE_NET ADDR. 15",
|
||||
"104,ALLARME DEVICE_NET ADDR. 16",
|
||||
"105,ALLARME DEVICE_NET ADDR. 17",
|
||||
"106,ALLARME DEVICE_NET ADDR. 18",
|
||||
"107,ALLARME DEVICE_NET ADDR. 19",
|
||||
"108,ALLARME DEVICE_NET ADDR. 20",
|
||||
"109,ALLARME DEVICE_NET ADDR. 21",
|
||||
"110,ALLARME DEVICE_NET ADDR. 22",
|
||||
"111,ALLARME DEVICE_NET ADDR. 23",
|
||||
"112,ALLARME DEVICE_NET ADDR. 24"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 7 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 7",
|
||||
"index": 7,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"113,ALLARME DEVICE_NET ADDR. 25",
|
||||
"114,ALLARME DEVICE_NET ADDR. 26",
|
||||
"115,BLOCCO BRUCIATORE 5",
|
||||
"116,BLOCCO BRUCIATORE 6",
|
||||
"117,BLOCCO BRUCIATORE 7",
|
||||
"118,BLOCCO BRUCIATORE 8",
|
||||
"119,SOVRATEMPERATURA BRUCIATORE 1",
|
||||
"120,SOVRATEMPERATURA BRUCIATORE 2",
|
||||
"121,SOVRATEMPERATURA BRUCIATORE 3",
|
||||
"122,SOVRATEMPERATURA BRUCIATORE 4",
|
||||
"123,SOVRATEMPERATURA BRUCIATORE 5",
|
||||
"124,SOVRATEMPERATURA BRUCIATORE 6",
|
||||
"125,SOVRATEMPERATURA BRUCIATORE 7",
|
||||
"126,SOVRATEMPERATURA BRUCIATORE 8",
|
||||
"127,SONDA BRUCIATORE 5 INTERROTTA",
|
||||
"128,SONDA BRUCIATORE 6 INTERROTTA"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 8 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 8",
|
||||
"index": 8,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"129,SONDA BRUCIATORE 7 INTERROTTA",
|
||||
"130,SONDA BRUCIATORE 8 INTERROTTA",
|
||||
"131,SONDA BRUCIATORE 9 INTERROTTA",
|
||||
"132,SONDA BRUCIATORE 10 INTERROTTA",
|
||||
"133,SONDA BRUCIATORE 11 INTERROTTA",
|
||||
"134,SONDA BRUCIATORE 12 INTERROTTA",
|
||||
"135,SOVRATEMPERATURA BRUCIATORE 9",
|
||||
"136,SOVRATEMPERATURA BRUCIATORE 10",
|
||||
"137,SOVRATEMPERATURA BRUCIATORE 11",
|
||||
"138,SOVRATEMPERATURA BRUCIATORE 12",
|
||||
"139,ALLARME INVERTER VENTILATORI INV105",
|
||||
"140,ALLARME INVERTER VENTILATORI INV107",
|
||||
"141,ALLARME INVERTER VENTILATORI INV109",
|
||||
"142,ALLARME INVERTER VENTILATORI INV111",
|
||||
"143,ALLARME VENTILATORE 5 (BASSO)",
|
||||
"144,ALLARME VENTILATORE 6 (BASSO)"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 9 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 9",
|
||||
"index": 9,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"145,ALLARME VENTILATORE 7 (BASSO)",
|
||||
"146,ALLARME VENTILATORE 8 (BASSO)",
|
||||
"147,ALLARME VENTILATORE 9 (BASSO)",
|
||||
"148,ALLARME VENTILATORE 10 (BASSO)",
|
||||
"149,ALLARME VENTILATORE 11 (BASSO)",
|
||||
"150,ALLARME VENTILATORE 12 (BASSO)",
|
||||
"151,ALLARME INVERTER ESAUSTORE 2",
|
||||
"152,CAMPO PARALLELO 4 ALLARME PROTEZIONE",
|
||||
"153,CAMPO PARALLELO 5 ALLARME PROTEZIONE",
|
||||
"154,CAMPO PARALLELO 6 ALLARME PROTEZIONE",
|
||||
"155,CAMPO PARALLELO 7 ALLARME PROTEZIONE",
|
||||
"156,CAMPO PARALLELO 8 ALLARME PROTEZIONE",
|
||||
"157,ALLARME INSEGUIMENTO VITE MASTER AGGIUNTA",
|
||||
"158,ALLARME INVERTER CILINDRO RAFFREDDAMENTO",
|
||||
"159,ALLARME TEMPERATURA ESAUSTORI",
|
||||
"160,ALLARME INVERTER RECUPERO CALORE GRUPPO 1 "
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 10 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 10",
|
||||
"index": 10,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"161,ALLARME FINECORSA SX TAPPETO USCITA",
|
||||
"162,ALLARME FINECORSA DX TAPPETO USCITA",
|
||||
"163,ALLARME INVERTER RECUPERO CALORE GRUPPO 2",
|
||||
"164,ALLARME DEVICE_NET ADDR. 31",
|
||||
"165,ALLARME CENTRATORE USCITA",
|
||||
"166,COMPATTATORE NON PRONTO",
|
||||
"167,ALLARME CONTROLLO PIROMETRI",
|
||||
"168,ALLARME ALLARGATORE SU TAPPETO USCITA",
|
||||
"169,ALLARME CONTROLLO FUMI",
|
||||
"170,ALLARME FINECORSA BALLERINO ALTO",
|
||||
"171,ALLARME FINECORSA BALLERINO BASSO",
|
||||
"172,ALLARME PROTEZIONE ASPIRATORE VAPORIZZO INTENSIVO",
|
||||
"173,ALLARME PROTEZIONE BRUCIATORE 1",
|
||||
"174,ALLARME PROTEZIONE BRUCIATORE 2",
|
||||
"175,ALLARME PROTEZIONE BRUCIATORE 3",
|
||||
"176,ALLARME PROTEZIONE BRUCIATORE 4"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 11 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 11",
|
||||
"index": 11,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"177,ALLARME PROTEZIONE BRUCIATORE 5",
|
||||
"178,ALLARME PROTEZIONE BRUCIATORE 6",
|
||||
"179,ALLARME PROTEZIONE BRUCIATORE 7",
|
||||
"180,ALLARME PROTEZIONE BRUCIATORE 8",
|
||||
"181,ALLARME PROTEZIONE BRUCIATORE 9",
|
||||
"182,ALLARME PROTEZIONE BRUCIATORE 10",
|
||||
"183,ALLARME PROTEZIONE BRUCIATORE 11",
|
||||
"184,ALLARME PROTEZIONE BRUCIATORE 12",
|
||||
"185,TERMOFISSAGGIO O ESSICCAZIONE: TEMPERATURA FUORI CAMPO",
|
||||
"186,TERMOFISSAGGIO O ESSICCAZIONE: VELOCITA' FUORI CAMPO",
|
||||
"187,TERMOFISSAGGIO O ESSICCAZIONE: TEMPO FUORI CAMPO",
|
||||
"188,SISTEMA CAMPI PARALLELI NON TARATO",
|
||||
"189,ALLARME PROTEZIONE VENTOLE BRUCIATORI",
|
||||
"190,CAMPO CONICO SINISTRO SU LIMITE CHIUSURA",
|
||||
"191,CAMPO CONICO SINISTRO SU LIMITE APERTURA",
|
||||
"192,CAMPO CONICO DESTRO SU LIMITE APERTURA"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 12 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 12",
|
||||
"index": 12,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"193,CAMPO CONICO DESTRO SU LIMITE CHIUSURA",
|
||||
"194,FINECORSA CAMPO CONICO DESTRO SU TRAVERSA",
|
||||
"195,FINECORSA CAMPO CONICO SINISTRO SU TRAVERSA",
|
||||
"196,ALLARME PROTEZIONE INVERTER CAMPO CONICO SINISTRO",
|
||||
"197,ALLARME PROTEZIONE INVERTER CAMPO CONICO DESTRO",
|
||||
"198,ALLARME DEVICE_NET ADDR. 27",
|
||||
"199,ALLARME VENTILATORE 8 (ALTO)",
|
||||
"200,ALLARME VENTILATORE 9 (ALTO)",
|
||||
"201,ALLARME VENTILATORE 10 (ALTO)",
|
||||
"202,ALLARME VENTILATORE 11 (ALTO)",
|
||||
"203,ALLARME VENTILATORE 12 (ALTO)",
|
||||
"204,ALLARME VENTILATORE 1 (ALTO)",
|
||||
"205,ALLARME VENTILATORE 2 (ALTO)",
|
||||
"206,ALLARME VENTILATORE 3 (ALTO)",
|
||||
"207,ALLARME PROTEZIONE CELLA DI RAFFREDDAMENTO 2",
|
||||
"208,ALLARME FINECORSA TANDEM CONTROLLO ANSA TESSUTO"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 13 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 13",
|
||||
"index": 13,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"209,ALLARME FUNE SICUREZZA / PROTEZIONE RIBALTABILE ANTERIORE",
|
||||
"210,ALLARME INVERTER VENTILATORI INV101A",
|
||||
"211,ALLARME INVERTER VENTILATORI INV103A",
|
||||
"212,ALLARME INVERTER VENTILATORI INV105A",
|
||||
"213,ALLARME INVERTER VENTILATORI INV107A",
|
||||
"214,ALLARME INVERTER VENTILATORI INV109A",
|
||||
"215,ALLARME INVERTER VENTILATORI INV111A",
|
||||
"216,ALLARME DA BANCHETTO DI SPALMATURA",
|
||||
"217,ALLARME DEVICE_NET ADDR. 28",
|
||||
"218,STOP JOG USCITA PER PESO RAGGIUNTO SU CELLA DI CARICO",
|
||||
"219,DOGAL NON PRONTO",
|
||||
"220,ALLARME PROTEZIONE CELLA RAFFREDDAMENTO 91A",
|
||||
"221,MALFUNZIONAMENTO RECUPERO CALORE GRUPPO 1",
|
||||
"222,ALLARME PROTEZIONE SOSTEGNO TESSUTO",
|
||||
"223,TARATURA CAMPI CONICI NON EFFETTUATA!",
|
||||
"224,ALLARME TIMEOUT VITE CAMPO PARALLELO 10"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 14 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 14",
|
||||
"index": 14,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"225,CAMPO PARALLELO 9 ALLARME PROTEZIONE",
|
||||
"226,CAMPO PARALLELO 10 ALLARME PROTEZIONE",
|
||||
"227,CAMPO PARALLELO 11 ALLARME PROTEZIONE",
|
||||
"228,CAMPO PARALLELO 12 ALLARME PROTEZIONE",
|
||||
"229,ALLARME FLUSSOSTATO RECUPERO CALORE 1",
|
||||
"230,ALLARME FLUSSOSTATO RECUPERO CALORE 2",
|
||||
"231,ALLARME FLUSSOSTATO RECUPERO CALORE 3",
|
||||
"232,ALLARME PROTEZIONE VENTILATORE ASCIUGACIMOSSE",
|
||||
"233,ALLARME PROTEZIONE RESISTENZE ASCIUGACIMOSSE",
|
||||
"234,ALLARME PROTEZIONE RECUPERO CALORE - GRUPPO 1 POMPA 1 ",
|
||||
"235,ALLARME INCENDIO",
|
||||
"236,ATTENZIONE ! ALLARME PRESENTE SU BANCHETTO DI SPALMATURA",
|
||||
"237,MALFUNZIONAMENTO RECUPERO CALORE GRUPPO 2",
|
||||
"238,ALLARME PROTEZIONE CELLA RAFFREDDAMENTO 91B",
|
||||
"239,ALLARME PROTEZIONE PULISCISPILLI",
|
||||
"240,BATTERIA PLC - LIVELLO BASSO"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 15 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 15",
|
||||
"index": 15,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"241,ALLARME CONTEMPORANEIT? TERMOSTATI SICUREZZA BRUCIATORI",
|
||||
"242,BLOCCO VERSIONE SOFTWARE",
|
||||
"243,SROTOLATORE NON PRONTO",
|
||||
"244,ERRORE DI COMUNICAZIONE PROTOCOL MACRO",
|
||||
"245,ALLARME TAGLIERINA URBAN",
|
||||
"246,FINE TESSUTO IN INGRESSO",
|
||||
"247,ALLARME PROTEZIONE SERVOVENTILAZIONI MOTORI",
|
||||
"248,ALLARME INVERTER ARROTOLATORE TANGENZIALE",
|
||||
"249,ALLARME SPREMITORE 2",
|
||||
"250,ALLARME FS-91ER PLEVA",
|
||||
"251,ALLARME LINEA EMERGENZA ARROTOLATORE",
|
||||
"252,ALLARME FOTOCELLULE ARROTOLATORE",
|
||||
"253,PORTA CASSETTA USCITA RAMOSA APERTA",
|
||||
"254,ALLARME FINECORSA CILINDRO PROTEZIONE ARROTOLATORE ASSIALE",
|
||||
"255,ALLARME PRESSOSTATI GRUPPO VALVOLE USCITA",
|
||||
"256,ARROTOLATORE NON PRONTO"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 16 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 16",
|
||||
"index": 16,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"257,FINECORSA GRUPPO FALDATORE AVANTI",
|
||||
"258,FINECORSA GRUPPO FALDATORE INDIETRO",
|
||||
"259,ALLARME BATTERIA ELETTRICA 1",
|
||||
"260,SOVRATEMPERATURA BATTERIA ELETTRICA 5",
|
||||
"261,ALLARME BATTERIA ELETTRICA 2",
|
||||
"262,RISCALDAMENTO QUADRO SPENTO",
|
||||
"263,SOVRATEMPERATURA BATTERIA ELETTRICA 1",
|
||||
"264,SOVRATEMPERATURA BATTERIA ELETTRICA 2",
|
||||
"265,ALLARME BATTERIA ELETTRICA 3",
|
||||
"266,EMERGENZA DA SPALMATRICE",
|
||||
"267,ALLARME BATTERIA ELETTRICA 4",
|
||||
"268,ALLARME BATTERIA ELETTRICA 5",
|
||||
"269,SOVRATEMPERATURA BATTERIA ELETTRICA 3",
|
||||
"270,SOVRATEMPERATURA BATTERIA ELETTRICA 4",
|
||||
"271,ALLARME IDROSTATO RECUPERO CALORE 1",
|
||||
"272,ALLARME SENSORE LIVELLO RECUPERO CALORE 1 : AGGIUNGERE LIQUIDO !"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 17 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 17",
|
||||
"index": 17,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"273,ALLARME RELE' CONTROLLO FASI",
|
||||
"274,ALLARME DEVICE NET ADDR. 40 - MODULO GRT1-DRT USCITA RAMOSA",
|
||||
"275,ALLARME PRESSOSTATO LINEA ENTRATA MACCHINA",
|
||||
"276,ALLARME PRESSOSTATO LINEA USCITA MACCHINA",
|
||||
"277,CAMPO CANNOCCHIALI 1 BLOCCATO",
|
||||
"278,CAMPO CANNOCCHIALI 2 BLOCCATO",
|
||||
"279,ALLARME DISCONTINUITA' CAMPI PARALLELI",
|
||||
"280,ALLARME INSEGUIMENTO CAMPI PARALLELI - VITE LENTA",
|
||||
"281,ALLARME LIMITE VITI",
|
||||
"282,RAGGIUNTO MASSIMO CARICO SU CELLA DI CARICO",
|
||||
"283,ALLARME PRESSOSTATO ESAUSTORE",
|
||||
"284,EMERGENZA MOVIMENTO TESSUTO",
|
||||
"285,EMERGENZA DA SPREMITORE 1",
|
||||
"286,EMERGENZA DA RADDRIZZATRAMA",
|
||||
"287,EMERGENZA DA SROTOLATORE",
|
||||
"288,EMERGENZA DA ARROTOLATORE"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 18 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 18",
|
||||
"index": 18,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"289,ALLARME SICUREZZA BRUCIATORE 1",
|
||||
"290,ALLARME SICUREZZA BRUCIATORE 2",
|
||||
"291,ALLARME SICUREZZA BRUCIATORE 3",
|
||||
"292,ALLARME SICUREZZA BRUCIATORE 4",
|
||||
"293,ALLARME SICUREZZA BRUCIATORE 5",
|
||||
"294,ALLARME SICUREZZA BRUCIATORE 6",
|
||||
"295,ALLARME SICUREZZA BRUCIATORE 7",
|
||||
"296,ALLARME SICUREZZA BRUCIATORE 8",
|
||||
"297,ALLARME SICUREZZA BRUCIATORE 9",
|
||||
"298,ALLARME SICUREZZA BRUCIATORE 10",
|
||||
"299,ALLARME SICUREZZA BRUCIATORE 11",
|
||||
"300,ALLARME SICUREZZA BRUCIATORE 12",
|
||||
"301,ALLARME BRUCIATORE 1 SPENTO",
|
||||
"302,ALLARME BRUCIATORE 2 SPENTO",
|
||||
"303,ALLARME BRUCIATORE 3 SPENTO",
|
||||
"304,ALLARME BRUCIATORE 4 SPENTO"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 19 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 19",
|
||||
"index": 19,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"305,ALLARME BRUCIATORE 5 SPENTO",
|
||||
"306,ALLARME BRUCIATORE 6 SPENTO",
|
||||
"307,ALLARME BRUCIATORE 7 SPENTO",
|
||||
"308,ALLARME BRUCIATORE 8 SPENTO",
|
||||
"309,ALLARME BRUCIATORE 9 SPENTO",
|
||||
"310,ALLARME BRUCIATORE 10 SPENTO",
|
||||
"311,ALLARME BRUCIATORE 11 SPENTO",
|
||||
"312,ALLARME BRUCIATORE 12 SPENTO",
|
||||
"313,ALLARME SENSORE LIVELLO RECUPERO CALORE 2 : AGGIUNGERE LIQUIDO !",
|
||||
"314,ALLARME DA MIXER",
|
||||
"315,ALLARME PRESSOSTATI LUBRIFICAZIONE",
|
||||
"316,ALLARME ABBATTITORE FUMI",
|
||||
"317,MACCHINA 1 NON IN LINEA",
|
||||
"318,MACCHINA 2 NON IN LINEA",
|
||||
"319,MACCHINA 3 NON IN LINEA",
|
||||
"320,MACCHINA 4 NON IN LINEA"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 20 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 20",
|
||||
"index": 20,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"321,MACCHINA 5 NON IN LINEA",
|
||||
"322,MACCHINA 6 NON IN LINEA",
|
||||
"323,MACCHINA 7 NON IN LINEA",
|
||||
"324,MACCHINA 8 NON IN LINEA",
|
||||
"325,NON STOP NON PRONTO",
|
||||
"326,EMERGENZA DA NON STOP",
|
||||
"327,ALLARME DISCONTINUITA' CAMPO MASTER",
|
||||
"328,ALLARME DISCONTINUITA' CAMPO PARALLELO 1",
|
||||
"329,ALLARME DISCONTINUITA' CAMPO PARALLELO 2",
|
||||
"330,ALLARME DISCONTINUITA' CAMPO PARALLELO 3",
|
||||
"331,ALLARME DISCONTINUITA' CAMPO PARALLELO 4",
|
||||
"332,ALLARME DISCONTINUITA' CAMPO PARALLELO 5",
|
||||
"333,ALLARME DISCONTINUITA' CAMPO PARALLELO 6",
|
||||
"334,ALLARME DISCONTINUITA' CAMPO PARALLELO 7",
|
||||
"335,ALLARME DISCONTINUITA' CAMPO PARALLELO 8",
|
||||
"336,ALLARME DISCONTINUITA' CAMPO PARALLELO 9"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 21 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 21",
|
||||
"index": 21,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"337,ALLARME DISCONTINUITA' CAMPO PARALLELO 10",
|
||||
"338,PROTEZIONI INGRESSO APERTE",
|
||||
"339,PROTEZIONI USCITA APERTE",
|
||||
"340,ALLARME PROTEZIONE ESTRATTORE FUMI 1",
|
||||
"341,ALLARME PROTEZIONE ESTRATTORE FUMI 2",
|
||||
"342,MANCANZA PRESSOSTATO ESTRATTORE FUMI 1",
|
||||
"343,MANCANZA PRESSOSTATO ESTRATTORE FUMI 2",
|
||||
"344,EMERGENZA DA MIXER",
|
||||
"345,EMERGENZA DA SPREMITORE 2",
|
||||
"346,ALLARME PROTEZIONE VENTILATORE RECUPERO CALORE 1",
|
||||
"347,ALLARME PROTEZIONE VENTILATORE RECUPERO CALORE 2",
|
||||
"348,ALLARME MODULO VELOCITA? ZERO CATENA TRASP. TESSUTO",
|
||||
"349,ALLARME RILEVAMENTO TESSUTO SINISTRO USCITA",
|
||||
"350,ALLARME RILEVAMENTO TESSUTO DESTRO USCITA",
|
||||
"351,ALLARME FINECORSA SOLLEVAMENTO CAMPI CONICI",
|
||||
"352,ALLARME IDROSTATO RECUPERO CALORE 2"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 22 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 22",
|
||||
"index": 22,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"353,ALLARME FUNE DI PROTEZIONE IN USCITA",
|
||||
"354,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 1",
|
||||
"355,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 2",
|
||||
"356,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 3",
|
||||
"357,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 4",
|
||||
"358,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 5",
|
||||
"359,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 6",
|
||||
"360,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 7",
|
||||
"361,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 8",
|
||||
"362,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 9",
|
||||
"363,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 10",
|
||||
"364,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 11",
|
||||
"365,ALLARME PROTEZIONE VENTOLA BRUCIATORE MAXON 12",
|
||||
"366,OLIO CATENA - PRESSIONE MINIMA",
|
||||
"367,POMPA OLIO CATENA - ALLARME PROTEZIONE",
|
||||
"368,JBOX INGRESSO - BALLERINO BASSO"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 23 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 23",
|
||||
"index": 23,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"369,JBOX INGRESSO - FINE TESSUTO",
|
||||
"370,JBOX INGRESSO - PIENO",
|
||||
"371,JBOX INGRESSO - BALLERINO ALTO",
|
||||
"372,JBOX INGRESSO - VUOTO",
|
||||
"373,JBOX USCITA - BALLERINO BASSO",
|
||||
"374,JBOX USCITA - FINE TESSUTO",
|
||||
"375,JBOX USCITA - PIENO",
|
||||
"376,JBOX USCITA - BALLERINO ALTO",
|
||||
"377,JBOX USCITA - VUOTO",
|
||||
"378,JBOX USCITA - ALLARME PRESSOSTATO",
|
||||
"379,JBOX ENTRATA - ALLARME PRESSOSTATO",
|
||||
"380,ALLARME PROTEZIONE CARRELLO FALDATORE",
|
||||
"381,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 1",
|
||||
"382,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 2",
|
||||
"383,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 3",
|
||||
"384,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 4"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 24 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 24",
|
||||
"index": 24,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"385,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 5",
|
||||
"386,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 6",
|
||||
"387,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 7",
|
||||
"388,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 8",
|
||||
"389,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 9",
|
||||
"390,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 10",
|
||||
"391,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 11",
|
||||
"392,RISCALDAMENTO INDIRETTO - ALLARME FEEDBACK SERRANDA BR. 12",
|
||||
"393,ESTRATTORE FUMI RISC. INDIRETTO 1 - ALLARME PROTEZIONE",
|
||||
"394,ESTRATTORE FUMI RISC. INDIRETTO 2 - ALLARME PROTEZIONE",
|
||||
"395,ESTRATTORE FUMI RISC. INDIRETTO 3 - ALLARME PROTEZIONE",
|
||||
"396,ESTRATTORE FUMI RISC. INDIRETTO 4 - ALLARME PROTEZIONE",
|
||||
"397,ESTRATTORE FUMI RISC. INDIRETTO 5 - ALLARME PROTEZIONE",
|
||||
"398,ESTRATTORE FUMI RISC. INDIRETTO 6 - ALLARME PROTEZIONE",
|
||||
"399,TAGLIERINA SINISTRA - FUORI POSIZIONE",
|
||||
"400,TAGLIERINA DESTRA - FUORI POSIZIONE"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 25 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 25",
|
||||
"index": 25,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"401,ALLARME PROTEZIONE CILINDRO CONTRASTO TAGLIERINE",
|
||||
"402,JBOX INGRESSO - TESSUTO INCROCIATO",
|
||||
"403,JBOX USCITA - TESSUTO INCROCIATO",
|
||||
"404,ALLARME DEVICE_NET STAZIONE ADDR.38 - JBOX INGRESSO",
|
||||
"405,ALLARME DEVICE_NET STAZIONE ADDR.39 - JBOX USCITA",
|
||||
"406,JBOX INGRESSO - ALLARME INVERTER",
|
||||
"407,JBOX USCITA - ALLARME INVERTER",
|
||||
"408,ALLARGA/CENTRATORE A/B SU IMBARRAGGIO - ALLARME PROTEZIONE",
|
||||
"409,ALLARME TIMEOUT VITE CAMPO PARALLELO 11",
|
||||
"410,ALLARME TIMEOUT VITE CAMPO PARALLELO 12",
|
||||
"411,FRENO JBOX INGRESSO - ALLARME PROTEZIONE",
|
||||
"412,FRENO JBOX USCITA - ALLARME PROTEZIONE",
|
||||
"413,ALLARME PROTEZIONE FRENO CAMPO CONICO SINISTRO",
|
||||
"414,ALLARME PROTEZIONE FRENO CAMPO CONICO DESTRO",
|
||||
"415,VERIFICA PRESSOSTATO 1 FALLITA",
|
||||
"416,VERIFICA PRESSOSTATO 2 FALLITA"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 26 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 26",
|
||||
"index": 26,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"417,ALLARME TERMOSTATO INTERNO QUADRO",
|
||||
"418,ALLARME PROTEZIONE RECUPERO CALORE - GRUPPO 1 POMPA 2",
|
||||
"419,ALLARME PROTEZIONE RECUPERO CALORE - GRUPPO 2 POMPA 2",
|
||||
"420,PROTEZIONE RIBALTABILE INGRESSO",
|
||||
"421,FUNE EMERGENZA INGRESSO",
|
||||
"422,PARATIA SCORREVOLE INGRESSO SINISTRA",
|
||||
"423,PARATIA SCORREVOLE INGRESSO DESTRA",
|
||||
"424,CANCELLO SINISTRO ENTRATA ANTERIORE",
|
||||
"425,CANCELLO SINISTRO ENTRATA POSTERIORE",
|
||||
"426,CANCELLO DESTRO ENTRATA ANTERIORE",
|
||||
"427,CANCELLO DESTRO ENTRATA POSTERIORE",
|
||||
"428,CANCELLO SINISTRO USCITA",
|
||||
"429,CANCELLO DESTRO USCITA",
|
||||
"430,TENSIONATORE FUNE EMERGENZA SINISTRA ZONA FORNO",
|
||||
"431,TENSIONATORE FUNE EMERGENZA DESTRA ZONA FORNO",
|
||||
"432,FUNE EMERGENZA SINISTRA ZONA FORNO"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 27 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 27",
|
||||
"index": 27,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"433,FUNE EMERGENZA DESTRA ZONA FORNO",
|
||||
"434,ALLARME FEEDBACK SCARICO ARIA ENTRATA MACCHINA (1)",
|
||||
"435,ALLARME FEEDBACK SCARICO ARIA ENTRATA MACCHINA (2)",
|
||||
"436,ALLARME FEEDBACK SCARICO ARIA USCITA MACCHINA (1)",
|
||||
"437,ALLARME FEEDBACK SCARICO ARIA USCITA MACCHINA (2)",
|
||||
"438,ALLARME FEEDBACK EMERGENZA GENERALE DA SCARICO ARIA",
|
||||
"439,BYPASS SPORTELLI ARMADIO ATTIVO",
|
||||
"440,TIMEOUT ENCODER CAMPO CONICO SINISTRO",
|
||||
"441,TIMEOUT ENCODER CAMPO CONICO DESTRO",
|
||||
"442,ALLARME BALLERINO ALTO SPREMITORE 1",
|
||||
"443,ALLARME BALLERINO ALTO SPREMITORE 2",
|
||||
"444,",
|
||||
"445,",
|
||||
"446,",
|
||||
"447,",
|
||||
"448,"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 28 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 28",
|
||||
"index": 28,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"449,",
|
||||
"450,",
|
||||
"451,",
|
||||
"452,",
|
||||
"453,",
|
||||
"454,",
|
||||
"455,",
|
||||
"456,",
|
||||
"457,",
|
||||
"458,",
|
||||
"459,",
|
||||
"460,ALLARME PROTEZIONE BARRE ANTISTATICHE",
|
||||
"461,ALLARME PROTEZIONE VENTILAZIONE INTERNO QUADRO",
|
||||
"462,BORDO SENSIBILE ",
|
||||
"463,FALDAROTOLATORE_SICUREZZA SX/DX ",
|
||||
"464,FALDAROTOLATORE_EMERGENZA TESSUTO "
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 29 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 29",
|
||||
"index": 29,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"465,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.1",
|
||||
"466,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.2",
|
||||
"467,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.3",
|
||||
"468,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.4",
|
||||
"469,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.5",
|
||||
"470,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.6",
|
||||
"471,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.7",
|
||||
"472,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.8",
|
||||
"473,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.9",
|
||||
"474,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.10",
|
||||
"475,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.11",
|
||||
"476,ALLARME DEPRESSIONE RISCALDAMENTO INDIRETTO BR.12",
|
||||
"477,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 1/2",
|
||||
"478,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 3/4",
|
||||
"479,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 5/6",
|
||||
"480,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 7/8"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 30 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 30",
|
||||
"index": 30,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"481,MALFUNZIONAMNETO PRESSOSTATO ESTRATTORE FUMI 9/10",
|
||||
"482,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 1",
|
||||
"483,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 2",
|
||||
"484,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 3",
|
||||
"485,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 4",
|
||||
"486,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 5",
|
||||
"487,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 6",
|
||||
"488,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 7",
|
||||
"489,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 8",
|
||||
"490,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 9",
|
||||
"491,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 10",
|
||||
"492,TRASDUTTORE PRESSIONE BR 1 INTERROTTO",
|
||||
"493,TRASDUTTORE PRESSIONE BR 2 INTERROTTO",
|
||||
"494,TRASDUTTORE PRESSIONE BR 3 INTERROTTO",
|
||||
"495,TRASDUTTORE PRESSIONE BR 4 INTERROTTO",
|
||||
"496,TRASDUTTORE PRESSIONE BR 5 INTERROTTO"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 31 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 31",
|
||||
"index": 31,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"497,TRASDUTTORE PRESSIONE BR 6 INTERROTTO",
|
||||
"498,TRASDUTTORE PRESSIONE BR 7 INTERROTTO",
|
||||
"499,TRASDUTTORE PRESSIONE BR 8 INTERROTTO",
|
||||
"500,TRASDUTTORE PRESSIONE BR 9 INTERROTTO",
|
||||
"501,TRASDUTTORE PRESSIONE BR 10 INTERROTTO",
|
||||
"502,TRASDUTTORE PRESSIONE BR 11 INTERROTTO",
|
||||
"503,TRASDUTTORE PRESSIONE BR 12 INTERROTTO",
|
||||
"504,ERRORE TRASDUTTORE DI PRESSIONE RC1",
|
||||
"505,ERRORE TRASDUTTORE DI PRESSIONE RC2",
|
||||
"506,ALLARME INVERTER RIPRISTINO PRESSIONE GRUPPO 1 RC",
|
||||
"507,ALLARME INVERTER RIPRISTINO PRESSIONE GRUPPO 2 RC",
|
||||
"508,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 11",
|
||||
"509,MALFUNZIONAMENTO PRESSOSTATO SICUREZZA BRUCIATORE 12",
|
||||
"510,ALLARME PRESSOSTATO TAGLIERINE",
|
||||
"511,BALLERINO ALTO - SROTOLATORE - ALLARME",
|
||||
"512,EMERGENZA DA LINEA ENTRATA RAMOSA"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"description": "Alarm Word 32 ",
|
||||
"tipoMem": "Byte",
|
||||
"memAddr": "Alarm Word 32",
|
||||
"index": 32,
|
||||
"size": 2,
|
||||
"messages": [
|
||||
"513,LINEA ENTRATA RAMOSA NON PRONTA",
|
||||
"514,EMERGENZA DA LINEA USCITA RAMOSA",
|
||||
"515,LINEA USCITA RAMOSA NON PRONTA",
|
||||
"516,TAGLIERINA CENTRALE FUORI POSIZIONE",
|
||||
"517,TIRACIMOSSE NON PRONTO",
|
||||
"518,JBOX INGRESSO IN EMERGENZA",
|
||||
"519,JBOX INGRESSO NON PRONTO",
|
||||
"520,JBOX USCITA IN EMERGENZA",
|
||||
"521,JBOX USCITA NON PRONTO",
|
||||
"522,ALLARME D-NET 41 RISCALDAMENTO INDIRETTO",
|
||||
"523,SPAZZOLATRICE IN EMERGENZA",
|
||||
"524,SPAZZOLATRICE NON PRONTA",
|
||||
"525,ALLARME FUNE DI SICUREZZA USCITA STACCAPEZZA",
|
||||
"526,ALLARME FUNE DI SICUREZZA USCITA FALDAROTOLATORE",
|
||||
"527,ALLARME FUNE DI SICUREZZA CAMPO CONICO SINISTRO",
|
||||
"528,ALLARME FUNE DI SICUREZZA CAMPO CONICO DESTRO"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,196 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{FBA5A5AE-9CBE-4DC9-AC1B-44E9B087BBCA}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>IOB_WIN_FILE</RootNamespace>
|
||||
<AssemblyName>IOB-WIN-FILE</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Remote_DEBUG|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\Remote_DEBUG\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="MapoSDK, Version=6.14.2411.518, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MapoSDK.6.14.2411.518\lib\MapoSDK.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\VersGen\VersGen.cs">
|
||||
<Link>VersGen.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="AdapterFormNext.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="IobFile\FileEurom63.cs" />
|
||||
<Compile Include="IobFile\FileGen.cs" />
|
||||
<Compile Include="IobFile\IobFileSoitaab.cs" />
|
||||
<Compile Include="Iob\GenericNext.cs" />
|
||||
<Compile Include="MainFormNext.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Content Include="Resources\STEAM-IOB-WIN.xml">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\SteamWare.ico">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="App.Debug.config">
|
||||
<DependentUpon>App.config</DependentUpon>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="App.Release.config">
|
||||
<DependentUpon>App.config</DependentUpon>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="DATA\CONF\EM63.ini" />
|
||||
<None Include="DATA\CONF\EM63.json" />
|
||||
<None Include="DATA\CONF\IMI_SOITAAB_Z2342_02.ini" />
|
||||
<None Include="DATA\CONF\IMI_SOITAAB_Z2342_02.json" />
|
||||
<None Include="DATA\CONF\MAIN.ini">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="DATA\CONF\SIMUL_01.ini">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="DATA\CONF\SIMUL_01.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="DATA\CONF\SIMUL_01_alarm.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="DATA\CONF\SIMUL_01_WD.ini">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="NLog.config">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
<None Include="postBuildTgt.bat" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Content Include="Resources\Start-IOB-WIN.bat">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="setupTgt.bat" />
|
||||
<None Include="temp\.placeholder">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config">
|
||||
<SubType>Designer</SubType>
|
||||
<TransformOnBuild>true</TransformOnBuild>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="logs\.placeholder.txt">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\ChangeLog.html">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\Circuit.ico" />
|
||||
<Content Include="Resources\logoSteamware.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\manifest.xml">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\Net.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\IOB-UT-NEXT\IOB-UT-NEXT.csproj">
|
||||
<Project>{90512e12-29fc-460d-94cc-648c2a072dbd}</Project>
|
||||
<Name>IOB-UT-NEXT</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\IOB-WIN-FORM\IOB-WIN-FORM.csproj">
|
||||
<Project>{9ba331bb-9bf1-40e0-ac03-74b43d73a097}</Project>
|
||||
<Name>IOB-WIN-FORM</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="AfterBuild">
|
||||
<ItemGroup>
|
||||
<MoveToLibFolder Include="$(OutputPath)*.dll ; $(OutputPath)*.pdb ; $(OutputPath)*.xml; $(OutputPath)*.so; $(OutputPath)*.dylib" />
|
||||
</ItemGroup>
|
||||
<Move SourceFiles="@(MoveToLibFolder)" DestinationFolder="$(OutputPath)lib" OverwriteReadOnlyFiles="true" />
|
||||
</Target>
|
||||
<Target Name="FinalBuild" AfterTargets="AfterBuild">
|
||||
<Exec Command="$(ProjectDir)postBuildTgt.bat $(ConfigurationName) $(TargetDir)">
|
||||
</Exec>
|
||||
</Target>
|
||||
<Import Project="..\packages\Microsoft.VisualStudio.SlowCheetah.4.0.50\build\Microsoft.VisualStudio.SlowCheetah.targets" Condition="Exists('..\packages\Microsoft.VisualStudio.SlowCheetah.4.0.50\build\Microsoft.VisualStudio.SlowCheetah.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Microsoft.VisualStudio.SlowCheetah.4.0.50\build\Microsoft.VisualStudio.SlowCheetah.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VisualStudio.SlowCheetah.4.0.50\build\Microsoft.VisualStudio.SlowCheetah.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -0,0 +1,17 @@
|
||||
using IOB_UT_NEXT;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace IOB_WIN_FILE.Iob
|
||||
{
|
||||
public class GenericNext : IOB_WIN_FORM.Iob.Generic
|
||||
{
|
||||
|
||||
public GenericNext(AdapterFormNext caller, IobConfiguration IOBConf): base((IOB_WIN_FORM.AdapterForm)caller, IOBConf)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,923 @@
|
||||
using IOB_UT_NEXT;
|
||||
using MapoSDK;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace IOB_WIN_FILE.IobFile
|
||||
{
|
||||
public class FileEurom63 : IobFile.FileGen
|
||||
{
|
||||
#region Public Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Estende l'init della classe base...
|
||||
/// </summary>
|
||||
/// <param name="caller"></param>
|
||||
/// <param name="adpConf"></param>
|
||||
public FileEurom63(AdapterFormNext caller, IobConfiguration IOBConf) : base(caller, IOBConf)
|
||||
{
|
||||
lgInfo("INIT IobFileEurom63");
|
||||
appPath = Path.GetDirectoryName(Application.ExecutablePath);
|
||||
|
||||
string MAX_DELAY_SEC = getOptPar("MAX_DELAY_SEC");
|
||||
string CACHE_MULT = getOptPar("CACHE_MULT");
|
||||
int.TryParse(MAX_DELAY_SEC, out maxDelaySec);
|
||||
int.TryParse(CACHE_MULT, out cacheMult);
|
||||
|
||||
#if DEBUG
|
||||
maxDelaySec = 60 * 60 * 24;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Effettua vero processing contapezzi
|
||||
/// </summary>
|
||||
public override void processContapezzi()
|
||||
{
|
||||
if (utils.CRB("enableContapezzi"))
|
||||
{
|
||||
try
|
||||
{
|
||||
// controllo se sono in sampling della produzione
|
||||
if (actLevel >= Eurom63.ComLevel.ProdRequested)
|
||||
{
|
||||
/************************************************************
|
||||
*
|
||||
* EXAMPLE
|
||||
* DATE, TIME, ActCntCyc, ActTimCyc, ActTimFill, @OutXhour, SetDescJob
|
||||
* 20201007, 21:29:52, 5302, 8.61, 0.50, 10058, Nr. 1000987654.01
|
||||
*
|
||||
* devo prendere il 3° valore
|
||||
*
|
||||
*
|
||||
************************************************************/
|
||||
|
||||
// leggo il file della produzione HARD CODED...
|
||||
var sessProd = confE63.ActiveSessions[5];
|
||||
string currPzCount = "";
|
||||
if (sessProd != null)
|
||||
{
|
||||
if (sessProd.Active)
|
||||
{
|
||||
// nome file...
|
||||
string fileName = $"{BaseDir}\\{sessProd.SessionName}.DAT";
|
||||
if (File.Exists(fileName))
|
||||
{
|
||||
string rawData = "";
|
||||
using (var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
using (var textReader = new StreamReader(fileStream))
|
||||
{
|
||||
rawData = textReader.ReadToEnd();
|
||||
}
|
||||
// ora splitto in linee
|
||||
string[] rawLines = Regex.Split(rawData, "\r\n|\r|\n");
|
||||
int numRow = rawLines.Length;
|
||||
|
||||
// devo avere almeno 2 righe...
|
||||
if (numRow >= 2)
|
||||
{
|
||||
string[] statusData = rawLines[1].Split(',');
|
||||
currPzCount = statusData[2].Trim();
|
||||
// salvo se valido
|
||||
if (!string.IsNullOrEmpty(currPzCount))
|
||||
{
|
||||
int newVal = -1;
|
||||
Int32.TryParse(currPzCount, out newVal);
|
||||
// verifico SE il contapezzi vada moltiplicato x il
|
||||
// fattore pzPallet...
|
||||
if (confE63.PzPallet > 1)
|
||||
{
|
||||
newVal = newVal * confE63.PzPallet;
|
||||
}
|
||||
// aggiorno contapezzi
|
||||
contapezziPLC = newVal > -1 ? newVal : contapezziPLC;
|
||||
}
|
||||
// ora verifico SE siano validi anche le dataora dei valori
|
||||
// letti (< 20 sec ritardo da ora...)
|
||||
string data = statusData[0].Trim();
|
||||
string ora = statusData[1].Trim();
|
||||
DateTime adesso = DateTime.Now;
|
||||
DateTime lastPub = adesso.AddMinutes(-1);
|
||||
CultureInfo provider = CultureInfo.InvariantCulture;
|
||||
try
|
||||
{
|
||||
lastPub = DateTime.ParseExact($"{data} {ora}", "yyyyMMdd HH:mm:ss", provider);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (Math.Abs(lastPub.Subtract(adesso).TotalSeconds) > maxDelaySec)
|
||||
{
|
||||
sessProd.SessionValidUntil = adesso;
|
||||
// elimino file RSP...
|
||||
cleanupResp(sessProd.SessionName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
actLevel = Eurom63.ComLevel.StatusRequested;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
actLevel = Eurom63.ComLevel.StatusRequested;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError($"Eccezione in processContapezzi:{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua lettura semafori principale <paramref name="currDispData">Parametri da
|
||||
/// aggiornare x display in form</paramref>
|
||||
/// </summary>
|
||||
public override void readSemafori(ref newDisplayData currDispData)
|
||||
{
|
||||
base.readSemafori(ref currDispData);
|
||||
// in primis controllo status...
|
||||
checkCommStatus();
|
||||
|
||||
// init a zero...
|
||||
B_input = 0;
|
||||
string currStatus = "99999";
|
||||
bool readDone = false;
|
||||
DateTime adesso = DateTime.Now;
|
||||
// leggo il file dela produzione HARD CODED...
|
||||
var sessStatus = confE63.ActiveSessions[4];
|
||||
// ciclo!
|
||||
try
|
||||
{
|
||||
// controllo se sono in sampling dello stato
|
||||
if (actLevel >= Eurom63.ComLevel.StatusRequested)
|
||||
{
|
||||
/* -----------------------------------------------------
|
||||
* bitmap MAPO
|
||||
* B0: POWER_ON
|
||||
* B1: RUN
|
||||
* B2: pzCount
|
||||
* B3: allarme
|
||||
* B4: manuale
|
||||
* B5: allarme TCiclo (SLOW)
|
||||
* B6: avvio/spegnimento
|
||||
* B7: Emergenza armata (1= pronto, 0 = emergenza) --> DA INVIARE!!!
|
||||
----------------------------------------------------- */
|
||||
|
||||
/******************************************************************
|
||||
*
|
||||
* EXAMPLE file content
|
||||
* DATE, TIME, ActStsMach
|
||||
* 20201007, 21:28:10, 0A000
|
||||
*
|
||||
* Configurazione array status: 5 char status decoding
|
||||
*
|
||||
* Pos1: (status)
|
||||
* 0: poweron
|
||||
* 1: poweroff
|
||||
*
|
||||
* Pos2: (mode)
|
||||
* A: AUTO
|
||||
* S: SEMI auto
|
||||
* M: Manual
|
||||
* U: Setup
|
||||
* H: Hord
|
||||
* C: Maintenance
|
||||
* 0: Unknown
|
||||
* I: Idle
|
||||
*
|
||||
* Pos3: (assist call)
|
||||
* 0: No assistance
|
||||
* 2: Assistance required
|
||||
*
|
||||
* Pos4: (Bad part)
|
||||
* 0: last cycle not bad
|
||||
* 1: last cycle bad
|
||||
*
|
||||
* Pos5: Active Alarm
|
||||
* 0: No alarm
|
||||
* 1: Alarm
|
||||
*
|
||||
*
|
||||
*
|
||||
*******************************************************************/
|
||||
|
||||
if (sessStatus != null)
|
||||
{
|
||||
if (sessStatus.Active)
|
||||
{
|
||||
// nome file...
|
||||
string fileName = $"{BaseDir}\\{sessStatus.SessionName}.DAT";
|
||||
if (File.Exists(fileName))
|
||||
{
|
||||
string rawData = "";
|
||||
using (var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
using (var textReader = new StreamReader(fileStream))
|
||||
{
|
||||
rawData = textReader.ReadToEnd();
|
||||
}
|
||||
if (!string.IsNullOrEmpty(rawData))
|
||||
{
|
||||
// ora splitto in linee
|
||||
string[] rawLines = Regex.Split(rawData, "\r\n|\r|\n");
|
||||
int numRow = rawLines.Length;
|
||||
|
||||
// devo avere almeno 2 righe...
|
||||
if (numRow >= 2)
|
||||
{
|
||||
string[] statusData = rawLines[1].Split(',');
|
||||
if (statusData.Length >= 3)
|
||||
{
|
||||
currStatus = statusData[2].Trim();
|
||||
if (!string.IsNullOrEmpty(currStatus))
|
||||
{
|
||||
currDispData.semIn = Semaforo.SV;
|
||||
}
|
||||
// salvo in cache!
|
||||
Last_CurrStatus.Value = currStatus;
|
||||
Last_CurrStatus.ValidUntil = DateTime.Now.AddSeconds(maxDelaySec * cacheMult);
|
||||
|
||||
// ora verifico SE siano validi anche le dataora dei
|
||||
// valori letti (< 20 sec ritardo da ora...)
|
||||
string data = statusData[0].Trim();
|
||||
string ora = statusData[1].Trim();
|
||||
DateTime lastPub = adesso.AddMinutes(-1);
|
||||
CultureInfo provider = CultureInfo.InvariantCulture;
|
||||
try
|
||||
{
|
||||
lastPub = DateTime.ParseExact($"{data} {ora}", "yyyyMMdd HH:mm:ss", provider);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (Math.Abs(lastPub.Subtract(adesso).TotalSeconds) > maxDelaySec)
|
||||
{
|
||||
sessStatus.SessionValidUntil = adesso;
|
||||
// elimino file RSP...
|
||||
cleanupResp(sessStatus.SessionName);
|
||||
}
|
||||
readDone = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
lgError($"Decodifica StatusData in errore: trovati {statusData.Length} campi in {rawLines}");
|
||||
// se valido RILEGGO ultimo curr status
|
||||
if (Last_CurrStatus.ValidUntil > adesso)
|
||||
{
|
||||
currStatus = Last_CurrStatus.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lgError($"Lettura file stato in errore: trovate {numRow} linee");
|
||||
}
|
||||
}
|
||||
// se valido RILEGGO ultimo curr status
|
||||
if (Last_CurrStatus.ValidUntil > adesso)
|
||||
{
|
||||
currStatus = Last_CurrStatus.Value;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// se valido RILEGGO ultimo curr status
|
||||
if (Last_CurrStatus.ValidUntil > adesso)
|
||||
{
|
||||
currStatus = Last_CurrStatus.Value;
|
||||
}
|
||||
// abbasso status...
|
||||
actLevel--;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// se valido RILEGGO ultimo curr status
|
||||
if (Last_CurrStatus.ValidUntil > adesso)
|
||||
{
|
||||
currStatus = Last_CurrStatus.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// se valido RILEGGO ultimo curr status
|
||||
if (Last_CurrStatus.ValidUntil > adesso)
|
||||
{
|
||||
currStatus = Last_CurrStatus.Value;
|
||||
}
|
||||
}
|
||||
|
||||
// processo il currentStatus... parto da poweron
|
||||
B_input = currStatus[0] == '1' ? 0 : 1;
|
||||
|
||||
// aggiungo il bit NON emergenza
|
||||
B_input += (1 << 7);
|
||||
|
||||
// ora MODE
|
||||
switch (currStatus[1])
|
||||
{
|
||||
case 'A':
|
||||
B_input += (1 << 1);
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
case 'M':
|
||||
case 'U':
|
||||
B_input += (1 << 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
// loggo cosa trovo (CREDO
|
||||
break;
|
||||
}
|
||||
// ora cerco allarmi
|
||||
if (currStatus[4] == '1')
|
||||
{
|
||||
B_input += (1 << 3);
|
||||
}
|
||||
// controllo se diverso faccio log!
|
||||
if (!B_input.Equals(Last_B_Input.Value))
|
||||
{
|
||||
lgInfo($"B_Input variato: {Last_B_Input.Value} --> {B_input} | currStatus: {currStatus}");
|
||||
}
|
||||
// salvo B_Input in cache!
|
||||
Last_B_Input.Value = B_input;
|
||||
Last_B_Input.ValidUntil = DateTime.Now.AddSeconds(maxDelaySec * cacheMult);
|
||||
}
|
||||
// se disponibile riporto B_Input precedente
|
||||
else
|
||||
{
|
||||
if (Last_B_Input.ValidUntil > adesso)
|
||||
{
|
||||
B_input = Last_B_Input.Value;
|
||||
}
|
||||
}
|
||||
// riporto bitmap...
|
||||
reportRawInput(ref currDispData);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Errore in readSemafori x IOB FILE");
|
||||
if (currDispData != null)
|
||||
currDispData.semIn = Semaforo.SR;
|
||||
}
|
||||
|
||||
// ultimo controllo...
|
||||
if (!readDone)
|
||||
{
|
||||
// se valido RILEGGO ultimo B_INPUT
|
||||
if (Last_B_Input.ValidUntil > adesso)
|
||||
{
|
||||
B_input = Last_B_Input.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua reset del contapezzi, NON PERMESSO per EM63 (read only)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override bool resetContapezziPLC()
|
||||
{
|
||||
bool answ = false;
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua IMPOSTAZIONE FORZATA del contapezzi, NON PERMESSO per EM63 (read only)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override bool setcontapezziPLC(int newPzCount)
|
||||
{
|
||||
bool answ = false;
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Connessione
|
||||
/// </summary>
|
||||
public override void tryConnect()
|
||||
{
|
||||
var nextLevel = Eurom63.ComLevel.IsConnected;
|
||||
var connectSession = confE63.ActiveSessions[0];
|
||||
processSession(nextLevel, ref connectSession);
|
||||
queueInEnabCurr = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disconnessione
|
||||
/// </summary>
|
||||
public override void tryDisconnect()
|
||||
{
|
||||
connectionOk = false;
|
||||
queueInEnabCurr = false;
|
||||
try
|
||||
{
|
||||
abortPrevJob();
|
||||
cleanupFolder();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Eccezione in tryDisconnect");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Internal Methods
|
||||
|
||||
/// <summary>
|
||||
/// Metodi preliminari x comunicazione:
|
||||
/// - richiesta connessione
|
||||
/// - richiesta stato attivo
|
||||
/// </summary>
|
||||
internal void checkCommStatus()
|
||||
{
|
||||
// init obj display
|
||||
newDisplayData currDispData = new newDisplayData();
|
||||
currDispData.semIn = Semaforo.ND;
|
||||
|
||||
switch (actLevel)
|
||||
{
|
||||
case Eurom63.ComLevel.None:
|
||||
tryConnect();
|
||||
currDispData.semIn = Semaforo.SS;
|
||||
break;
|
||||
|
||||
case Eurom63.ComLevel.IsConnected:
|
||||
requestInfo();
|
||||
currDispData.semIn = Semaforo.SS;
|
||||
break;
|
||||
|
||||
case Eurom63.ComLevel.HasInfo:
|
||||
setMachineTime();
|
||||
currDispData.semIn = Semaforo.SS;
|
||||
break;
|
||||
|
||||
case Eurom63.ComLevel.TimeSet:
|
||||
abortPrevJob();
|
||||
currDispData.semIn = Semaforo.SG;
|
||||
break;
|
||||
|
||||
case Eurom63.ComLevel.ChannelOk:
|
||||
requestStatusData();
|
||||
currDispData.semIn = Semaforo.SG;
|
||||
break;
|
||||
|
||||
case Eurom63.ComLevel.StatusRequested:
|
||||
requestProdData();
|
||||
currDispData.semIn = Semaforo.SV;
|
||||
break;
|
||||
|
||||
case Eurom63.ComLevel.ProdRequested:
|
||||
checkSampling();
|
||||
currDispData.semIn = Semaforo.SV;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (utils.CRB("verbose"))
|
||||
{
|
||||
lgInfo($"DONE checkCommStatus | actLevel {actLevel}");
|
||||
}
|
||||
raiseRefresh(currDispData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pulizia preliminare folder comunicazione
|
||||
/// </summary>
|
||||
internal override void cleanupFolder()
|
||||
{
|
||||
// elimino OGNI file per tipo configurato
|
||||
foreach (var cleanExt in confE63.cleanupExt)
|
||||
{
|
||||
string[] file2del = Directory.GetFiles(BaseDir, cleanExt);
|
||||
foreach (var file in file2del)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(file);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pulizia folder dai file RSP della sessione
|
||||
/// </summary>
|
||||
internal void cleanupResp(string sessionName)
|
||||
{
|
||||
string[] file2del = Directory.GetFiles(BaseDir, $"{sessionName}.RSP");
|
||||
foreach (var file in file2del)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(file);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ricarica conf adapter...
|
||||
/// </summary>
|
||||
internal override void reloadAdapterConf()
|
||||
{
|
||||
// init obj display
|
||||
newDisplayData currDispData = new newDisplayData();
|
||||
lgInfo("BEGIN reloadAdapterConf");
|
||||
// inizializzo LUT decodifica
|
||||
string jsonConf = getOptPar("LUT_CONF");
|
||||
if (!string.IsNullOrEmpty(jsonConf))
|
||||
{
|
||||
string jsonFullPath = $"{Application.StartupPath}/DATA/CONF/{jsonConf}";
|
||||
lgInfo($"Apertura file {jsonFullPath}");
|
||||
StreamReader reader = new StreamReader(jsonFullPath);
|
||||
string jsonData = reader.ReadToEnd();
|
||||
if (!string.IsNullOrEmpty(jsonData))
|
||||
{
|
||||
try
|
||||
{
|
||||
confE63 = JsonConvert.DeserializeObject<Eurom63.ProtoConf>(jsonData);
|
||||
|
||||
// salvo baseUri
|
||||
BaseDir = confE63.BaseDir;
|
||||
lgInfo($"baseDir = {BaseDir}");
|
||||
// imposto a zero la bitmap x riavvio!
|
||||
B_input = 0;
|
||||
// FORZO invio dati...
|
||||
accodaSigIN(ref currDispData);
|
||||
// loggo!
|
||||
lgInfo($"init input bitmap to zero: {B_input}");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Eccezione in decodifica conf json");
|
||||
}
|
||||
}
|
||||
reader.Dispose();
|
||||
}
|
||||
lgInfo("DONE reloadAdapterConf");
|
||||
raiseRefresh(currDispData);
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected static DateTime lastStatusDecr = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// step di comunicazione attivo
|
||||
/// </summary>
|
||||
protected Eurom63.ComLevel actLevel = Eurom63.ComLevel.None;
|
||||
|
||||
/// <summary>
|
||||
/// DIrectory eseguibile corrente
|
||||
/// </summary>
|
||||
protected string appPath = Directory.GetCurrentDirectory();
|
||||
|
||||
/// <summary>
|
||||
/// Moltiplicatore durata cache
|
||||
/// </summary>
|
||||
protected int cacheMult = 4;
|
||||
|
||||
/// <summary>
|
||||
/// Oggetti decodificati da pagina
|
||||
/// </summary>
|
||||
protected Eurom63.ProtoConf confE63;
|
||||
|
||||
/// <summary>
|
||||
/// Valore currStatus validato (per gestione "disconnessioni")
|
||||
/// </summary>
|
||||
protected CachedInt Last_B_Input = new CachedInt() { Value = 0 };
|
||||
|
||||
/// <summary>
|
||||
/// Valore currStatus validato (per gestione "disconnessioni")
|
||||
/// </summary>
|
||||
protected CachedString Last_CurrStatus = new CachedString() { Value = "00000" };
|
||||
|
||||
/// <summary>
|
||||
/// Massimo delay lettura dati prima di considerarli scaduti (30 sec, ma x test 1 gg)
|
||||
/// </summary>
|
||||
protected int maxDelaySec = 30;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void abortPrevJob()
|
||||
{
|
||||
var nextLevel = Eurom63.ComLevel.ChannelOk;
|
||||
var connectSession = confE63.ActiveSessions[3];
|
||||
processSession(nextLevel, ref connectSession);
|
||||
#if false
|
||||
// qui per sicurezza PULISCE TUTTO
|
||||
cleanupFolder();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifica una sessione configurata (ovvero la comunicazione su TUTTI i file associati)
|
||||
/// </summary>
|
||||
/// <param name="session"></param>
|
||||
/// <returns></returns>
|
||||
protected bool checkRequest(Eurom63.Session session)
|
||||
{
|
||||
bool answ = false;
|
||||
string fileName = "";
|
||||
if (session != null)
|
||||
{
|
||||
fileName = $"{BaseDir}\\{session.SessionName}.REQ";
|
||||
answ = File.Exists(fileName);
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifica se ci sia una risposta POSITIVA
|
||||
/// </summary>
|
||||
/// <param name="session"></param>
|
||||
/// <returns></returns>
|
||||
protected bool checkResp(Eurom63.Session session)
|
||||
{
|
||||
bool answ = false;
|
||||
string fileName = "";
|
||||
if (session != null)
|
||||
{
|
||||
fileName = $"{BaseDir}\\{session.SessionName}.RSP";
|
||||
if (File.Exists(fileName))
|
||||
{
|
||||
// verifico contenuto
|
||||
//string rawData = File.ReadAllText(fileName);
|
||||
string rawData = "";
|
||||
// lettura in modo NON esclusivo...
|
||||
using (var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
using (var textReader = new StreamReader(fileStream))
|
||||
{
|
||||
rawData = textReader.ReadToEnd();
|
||||
}
|
||||
// se la stringa session.RespOk contiene | significa ci sono + valori ammessi e
|
||||
// li controlla tutti
|
||||
if (session.RespOk.Contains("|"))
|
||||
{
|
||||
// splitto e testo tutti...
|
||||
string[] validRespOk = session.RespOk.Split('|');
|
||||
foreach (var item in validRespOk)
|
||||
{
|
||||
answ = answ || rawData.Contains(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
answ = rawData.Contains(session.RespOk);
|
||||
}
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// verifica periodica dei campionamenti:
|
||||
/// - i due jobs devono essere attivi e non scaduti
|
||||
/// - non devo aver già resettato...
|
||||
/// </summary>
|
||||
protected void checkSampling()
|
||||
{
|
||||
var currSession = confE63.ActiveSessions[4];
|
||||
checkSessionActive(currSession, Eurom63.ComLevel.ChannelOk);
|
||||
|
||||
currSession = confE63.ActiveSessions[5];
|
||||
checkSessionActive(currSession, Eurom63.ComLevel.ChannelOk);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elimina i file della sessione indicata (SE è un task ciclico --> solo RSP)
|
||||
/// </summary>
|
||||
/// <param name="session"></param>
|
||||
/// <returns></returns>
|
||||
protected bool cleanupSession(Eurom63.Session session)
|
||||
{
|
||||
bool answ = false;
|
||||
if (session != null)
|
||||
{
|
||||
// solo se scaduta validità...
|
||||
if (session.SessionValidUntil < DateTime.Now)
|
||||
{
|
||||
string searchPattern = $"{session.SessionName}.*";
|
||||
// task ciclico?
|
||||
if (session.Cycle)
|
||||
{
|
||||
// solo risposta!
|
||||
searchPattern = $"{session.SessionName}.RSP";
|
||||
}
|
||||
string[] file2del = Directory.GetFiles(BaseDir, searchPattern);
|
||||
foreach (var file in file2del)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(file);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Processa una sessione
|
||||
/// - andando a verificare l'esistenza della REQ + se esito positivo pulizia
|
||||
/// - andando a richeidere di nuovo risposta
|
||||
/// </summary>
|
||||
/// <param name="nextLevel"></param>
|
||||
/// <param name="connectSession"></param>
|
||||
protected void processSession(Eurom63.ComLevel nextLevel, ref Eurom63.Session connectSession)
|
||||
{
|
||||
if (connectSession != null)
|
||||
{
|
||||
// controllo esistenza directory --> segno connected...
|
||||
connectionOk = Directory.Exists(BaseDir);
|
||||
DateTime adesso = DateTime.Now;
|
||||
if (connectionOk)
|
||||
{
|
||||
// verifico se ci sia risp CONNECT
|
||||
if (checkResp(connectSession))
|
||||
{
|
||||
// aggiorno livello
|
||||
actLevel = nextLevel;
|
||||
parentForm.displayTaskAndLog($"Adp Level: {nextLevel}");
|
||||
// elimino file sessione
|
||||
cleanupSession(connectSession);
|
||||
connectSession.Active = connectSession.Cycle;
|
||||
connectSession.Passed = true;
|
||||
}
|
||||
// verifico SE ci sia la richiesta sennò la chiedo...
|
||||
else if (!checkRequest(connectSession))
|
||||
{
|
||||
copyRequestFiles(connectSession, adesso);
|
||||
}
|
||||
// richiedo SE non ci fosse i dati CONNECT...
|
||||
else
|
||||
{
|
||||
// evito di richiedere SE non fosse già scaduta richiesta...
|
||||
if (adesso > connectSession.RetryVeto || !checkRequest(connectSession))
|
||||
{
|
||||
// pulisco eventuali risp vecchie
|
||||
cleanupResp(connectSession.SessionName);
|
||||
copyRequestFiles(connectSession, adesso);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// aspetto prima di riprovare...
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// aspetto prima di riprovare...
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Processa i file della sessione indicata (copy + transform)
|
||||
/// </summary>
|
||||
/// <param name="session"></param>
|
||||
/// <returns></returns>
|
||||
protected bool processSessionFile(Eurom63.Session session)
|
||||
{
|
||||
bool answ = false;
|
||||
if (session != null)
|
||||
{
|
||||
string fileFrom = "";
|
||||
string fileTo = "";
|
||||
// processo OGNI file sessione x farne copia
|
||||
foreach (var file2Proc in session.FileList)
|
||||
{
|
||||
fileFrom = $"{appPath}\\{file2Proc.Path}";
|
||||
fileTo = $"{BaseDir}\\{Path.GetFileName(file2Proc.Path)}";
|
||||
string rawData = File.ReadAllText(fileFrom);
|
||||
|
||||
if (file2Proc.OprReq == Eurom63.FileOpr.Copy)
|
||||
{
|
||||
// scrivo!
|
||||
File.WriteAllText(fileTo, rawData);
|
||||
}
|
||||
else
|
||||
{
|
||||
// leggo file originale... e processo sostituzioni
|
||||
rawData = rawData.Replace("{DTNow}", DateTime.Now.ToString("HHmmssyyyyMMdd"));
|
||||
// ora in posizione definitiva
|
||||
File.WriteAllText(fileTo, rawData);
|
||||
}
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua richiesta info x macchina (validare startup process)
|
||||
/// </summary>
|
||||
protected void requestInfo()
|
||||
{
|
||||
var nextLevel = Eurom63.ComLevel.HasInfo;
|
||||
var connectSession = confE63.ActiveSessions[1];
|
||||
processSession(nextLevel, ref connectSession);
|
||||
}
|
||||
|
||||
protected void requestProdData()
|
||||
{
|
||||
var nextLevel = Eurom63.ComLevel.ProdRequested;
|
||||
var connectSession = confE63.ActiveSessions[5];
|
||||
processSession(nextLevel, ref connectSession);
|
||||
}
|
||||
|
||||
protected void requestStatusData()
|
||||
{
|
||||
var nextLevel = Eurom63.ComLevel.StatusRequested;
|
||||
var connectSession = confE63.ActiveSessions[4];
|
||||
processSession(nextLevel, ref connectSession);
|
||||
}
|
||||
|
||||
protected void setMachineTime()
|
||||
{
|
||||
var nextLevel = Eurom63.ComLevel.TimeSet;
|
||||
var connectSession = confE63.ActiveSessions[2];
|
||||
processSession(nextLevel, ref connectSession);
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Se la sessione fosse scaduta o non attiva --> torna al livello indicato
|
||||
/// </summary>
|
||||
/// <param name="currSession"></param>
|
||||
private void checkSessionActive(Eurom63.Session currSession, Eurom63.ComLevel nextLevel)
|
||||
{
|
||||
// SOLO SE ha senso che controllo (sono in sampling...)
|
||||
if (actLevel > Eurom63.ComLevel.HasInfo)
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
// devono essere ATTIVE le sessioni di campionamento... e NON scadute
|
||||
if (!currSession.Active || currSession.SessionValidUntil < adesso)
|
||||
{
|
||||
// controllo ultimo downgrade status
|
||||
if (lastStatusDecr.AddSeconds(3) < adesso)
|
||||
{
|
||||
// elimino TUTTE le risposte...
|
||||
cleanupResp(currSession.SessionName);
|
||||
// registro downgrade status...
|
||||
lastStatusDecr = adesso;
|
||||
// imposto livellotornando indietro di 1 alla volta... senza andare in negativoS
|
||||
actLevel = actLevel - 1;
|
||||
actLevel = actLevel > 0 ? actLevel : 0;
|
||||
lgInfo($"Sessione inattiva, {actLevel + 1} --> {actLevel}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua copia file richeiste + update timing
|
||||
/// </summary>
|
||||
/// <param name="connectSession"></param>
|
||||
/// <param name="adesso"></param>
|
||||
private void copyRequestFiles(Eurom63.Session connectSession, DateTime adesso)
|
||||
{
|
||||
// processo richiesta
|
||||
processSessionFile(connectSession);
|
||||
if (adesso > connectSession.SessionValidUntil)
|
||||
{
|
||||
connectSession.Active = !connectSession.Cycle;
|
||||
}
|
||||
connectSession.Passed = false;
|
||||
connectSession.SessionStarted = adesso;
|
||||
connectSession.SessionValidUntil = adesso.AddMinutes(connectSession.ValidityMinutes);
|
||||
connectSession.RetryVeto = adesso.AddSeconds(connectSession.RetrySec);
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,358 @@
|
||||
using IOB_UT_NEXT;
|
||||
using MapoSDK;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
|
||||
namespace IOB_WIN_FILE.IobFile
|
||||
{
|
||||
/// <summary>
|
||||
/// Generica classe per implementare IOB basato su scambio FILE
|
||||
/// </summary>
|
||||
public class FileGen : Iob.GenericNext, IDisposable
|
||||
{
|
||||
/* --------------------------------------------------------------------------------
|
||||
* Controlli dotati di GENERICA funzionalità scambio info tramite file
|
||||
*
|
||||
* -------------------------------------------------------------------------------- */
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Estende l'init della classe base...
|
||||
/// </summary>
|
||||
/// <param name="caller"></param>
|
||||
/// <param name="adpConf"></param>
|
||||
public FileGen(AdapterFormNext caller, IobConfiguration IOBConf) : base(caller, IOBConf)
|
||||
{
|
||||
lgInfo("INIT FileGen");
|
||||
//reloadAdapterConf();
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupero dati dinamici in formato dictionary
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override Dictionary<string, string> getDynData()
|
||||
{
|
||||
lgInfo("Chiamata getDynData x IOB FILE!");
|
||||
Dictionary<string, string> outVal = new Dictionary<string, string>();
|
||||
#if false
|
||||
try
|
||||
{
|
||||
/* ----------------------------------------------------------
|
||||
* Recupero dalla TUTTE le chiavi richieste...
|
||||
* */
|
||||
|
||||
string cKey = "";
|
||||
string cVal = "";
|
||||
// processo tutti i DynData...
|
||||
foreach (var item in monitoredItems.DynData)
|
||||
{
|
||||
// cerco elemento indicato
|
||||
element = driver.FindElement(By.Id(item.val));
|
||||
cVal = element.Text;
|
||||
// verifico nome o key...
|
||||
if (!string.IsNullOrEmpty(item.name))
|
||||
{
|
||||
cKey = item.name;
|
||||
}
|
||||
else
|
||||
{
|
||||
element = driver.FindElement(By.Id(item.key));
|
||||
cKey = element.Text;
|
||||
}
|
||||
// controllo se devo inviare (per tipo di dato, x scadenza)
|
||||
if (monItem2Send(cVal, item))
|
||||
{
|
||||
item.actVal = cVal;
|
||||
item.DTScad = DateTime.Now.AddSeconds(item.sPeriod);
|
||||
// accodo!
|
||||
outVal.Add(cKey, cVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Errore in getDynData x IOB FILE");
|
||||
}
|
||||
#endif
|
||||
return outVal;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua processing del recupero delle OVERRIDE (spindle, feedrate, rapid)
|
||||
/// </summary>
|
||||
public override void processOverride()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua lettura semafori principale
|
||||
/// <paramref name="currDispData">Parametri da aggiornare x display in form</paramref>
|
||||
/// </summary>
|
||||
public override void readSemafori(ref newDisplayData currDispData)
|
||||
{
|
||||
base.readSemafori(ref currDispData);
|
||||
// init a zero...
|
||||
B_input = 0;
|
||||
// ciclo!
|
||||
try
|
||||
{
|
||||
#if false
|
||||
// controllo SE il driver SIA attivo...
|
||||
if (driver != null)
|
||||
{
|
||||
string cKey = "";
|
||||
string cVal = "";
|
||||
// IPOTESI: un UNICO oggetto decodifica status
|
||||
if (monitoredItems.Status.Count == 1)
|
||||
{
|
||||
var item = monitoredItems.Status[0];
|
||||
// cerco elemento indicato
|
||||
element = driver.FindElement(By.Id(item.val));
|
||||
cKey = element.Text;
|
||||
// verifico se mancasse il mapping...
|
||||
if (!item.codeMapping.ContainsKey(cKey))
|
||||
{
|
||||
processUnknStatus(cKey);
|
||||
}
|
||||
else
|
||||
{
|
||||
// ora decodifico da variabile status a valore secondo impostazione "codeMapping"
|
||||
cVal = item.codeMapping[cKey];
|
||||
B_input = int.Parse(cVal, System.Globalization.NumberStyles.HexNumber);
|
||||
if (currDispData != null)
|
||||
{
|
||||
currDispData.semIn = Semaforo.SV;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lgError("Errore: driver non pronto (null)");
|
||||
}
|
||||
#endif
|
||||
// riporto bitmap...
|
||||
reportRawInput(ref currDispData);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Errore in readSemafori x IOB FILE");
|
||||
if (currDispData != null)
|
||||
currDispData.semIn = Semaforo.SR;
|
||||
}
|
||||
}
|
||||
|
||||
public override void startAdapter(bool resetQueue)
|
||||
{
|
||||
// in primis RICARICO conf specifica...
|
||||
reloadAdapterConf();
|
||||
// pulizia preliminare folder
|
||||
cleanupFolder();
|
||||
// continuo con start...
|
||||
base.startAdapter(resetQueue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Override x chiusura driver...
|
||||
/// </summary>
|
||||
/// <param name="tryRestart"></param>
|
||||
/// <param name="forceDequeue"></param>
|
||||
public override void stopAdapter(bool tryRestart, bool forceDequeue)
|
||||
{
|
||||
try
|
||||
{
|
||||
#if false
|
||||
// in primis chiudo driver...
|
||||
if (driver != null)
|
||||
{
|
||||
driver.Quit();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Eccezione in tryDisconnect");
|
||||
}
|
||||
// continuo
|
||||
base.stopAdapter(tryRestart, forceDequeue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Connessione
|
||||
/// </summary>
|
||||
public override void tryConnect()
|
||||
{
|
||||
// controllo ping --> segno connected...
|
||||
connectionOk = Directory.Exists(BaseDir);
|
||||
if (connectionOk)
|
||||
{
|
||||
queueInEnabCurr = true;
|
||||
#if false
|
||||
try
|
||||
{
|
||||
// modalità sincrona
|
||||
startDriver();
|
||||
lgInfo("Completato start driver");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Eccezione in tryConnect");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
// aspetto prima di riprovare...
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disconnessione
|
||||
/// </summary>
|
||||
public override void tryDisconnect()
|
||||
{
|
||||
connectionOk = false;
|
||||
queueInEnabCurr = false;
|
||||
try
|
||||
{
|
||||
#if false
|
||||
// in primis chiudo driver...
|
||||
if (driver != null)
|
||||
//if (driver != null && driver.WindowHandles.Count > 0)
|
||||
{
|
||||
driver.Quit();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Eccezione in tryDisconnect");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Internal Methods
|
||||
|
||||
/// <summary>
|
||||
/// Pulizia preliminare folder comunicazione
|
||||
/// </summary>
|
||||
internal virtual void cleanupFolder()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ricarica conf adapter...
|
||||
/// </summary>
|
||||
internal virtual void reloadAdapterConf()
|
||||
{
|
||||
#if false
|
||||
// init obj display
|
||||
newDisplayData currDispData = new newDisplayData();
|
||||
lgInfo("BEGIN reloadAdapterConf");
|
||||
// inizializzo LUT decodifica
|
||||
string jsonConf = getOptPar("LUT_CONF");
|
||||
if (!string.IsNullOrEmpty(jsonConf))
|
||||
{
|
||||
string jsonFullPath = $"{Application.StartupPath}/DATA/CONF/{jsonConf}";
|
||||
lgInfo($"Apertura file {jsonFullPath}");
|
||||
StreamReader reader = new StreamReader(jsonFullPath);
|
||||
string jsonData = reader.ReadToEnd();
|
||||
if (!string.IsNullOrEmpty(jsonData))
|
||||
{
|
||||
try
|
||||
{
|
||||
monitoredItems = JsonConvert.DeserializeObject<MonitoredItemsConf>(jsonData);
|
||||
// salvo baseUri
|
||||
baseDir = monitoredItems.SrvData.baseUri;
|
||||
lgInfo($"baseUri = {baseDir}");
|
||||
// imposto a zero la bitmap x riavvio!
|
||||
B_input = 0;
|
||||
// FORZO invio dati...
|
||||
accodaSigIN(ref currDispData);
|
||||
// loggo!
|
||||
lgInfo($"init input bitmap to zero: {B_input}");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Eccezione in decodifica conf json");
|
||||
}
|
||||
}
|
||||
reader.Dispose();
|
||||
}
|
||||
lgInfo("DONE reloadAdapterConf");
|
||||
raiseRefresh(currDispData);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion Internal Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
/// <summary>
|
||||
/// Cartella di base per interscambio
|
||||
/// </summary>
|
||||
protected string BaseDir = @"C:\Steamware";
|
||||
|
||||
/// <summary>
|
||||
/// Array di configurazione degli oggetti da cercare x decodifica e recupero info
|
||||
/// </summary>
|
||||
protected Dictionary<string, string> dataLocatorLUT;
|
||||
|
||||
/// <summary>
|
||||
/// Vettore della frequenza di ogni status trovato... invio ogni 100 rilevazioni (modulo
|
||||
/// 100, resto == 1)
|
||||
/// </summary>
|
||||
protected Dictionary<string, int> freqUnknStatus = new Dictionary<string, int>();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Processo stati unknown...
|
||||
/// </summary>
|
||||
/// <param name="cKey"></param>
|
||||
private void processUnknStatus(string cKey)
|
||||
{
|
||||
// cerco se avevo già una key nella dictionary...
|
||||
if (freqUnknStatus.ContainsKey(cKey))
|
||||
{
|
||||
freqUnknStatus[cKey]++;
|
||||
// se è 1 ogni 100 (%100, resto ==1) --> loggo...
|
||||
if (freqUnknStatus[cKey] % 100 == 1)
|
||||
{
|
||||
lgInfo($"Errore in decodifica status: MAPPING non trovato per {cKey} | freq: {freqUnknStatus[cKey]}");
|
||||
// accodo come invio di tipo FLOG...
|
||||
string sVal = string.Format("[UnknStatus] {0}, freq: {1}", cKey, freqUnknStatus);
|
||||
// chiamo accodamento...
|
||||
accodaFLog(sVal, qEncodeFLog("UnknStatus", sVal));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// creo chiave con freq = 1
|
||||
freqUnknStatus.Add(cKey, 1);
|
||||
// log iniziale
|
||||
lgInfo($"Errore in decodifica status: MAPPING non trovato per {cKey}");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,629 @@
|
||||
#if false
|
||||
using EgwProxy.SqlDb.DbModels;
|
||||
#endif
|
||||
using IOB_UT_NEXT;
|
||||
using MapoSDK;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.NetworkInformation;
|
||||
using static IOB_UT_NEXT.CustomObj;
|
||||
|
||||
namespace IOB_WIN_FILE.IobFile
|
||||
{
|
||||
/// <summary>
|
||||
/// Adapter specializzato per SOITAAB x la SOLA lettura stato macchina da log, da accoppiare a
|
||||
/// adapter x IOB LANTEK x scrittura PODL
|
||||
/// - IN: LOGFile macchina diretto
|
||||
/// - OUT: --> sigLog
|
||||
/// --> fluxLog
|
||||
/// </summary>
|
||||
|
||||
public class IobFileSoitaab : Iob.GenericNext
|
||||
{
|
||||
#region Public Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Costruttore dell'IOB FileBased SOITAAB
|
||||
/// </summary>
|
||||
/// <param name="caller">AdapterForm chiamante</param>
|
||||
/// <param name="IOBConf">Configurazione IOB per avvio</param>
|
||||
public IobFileSoitaab(AdapterFormNext caller, IobConfiguration IOBConf) : base(caller, IOBConf)
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
string VetoReadSec = getOptPar("VetoReadSec");
|
||||
|
||||
setupSpecialParams();
|
||||
if (pathList.ContainsKey("path-remBase"))
|
||||
{
|
||||
logDirPath = pathList["path-remBase"];
|
||||
}
|
||||
// fix parametri veto
|
||||
if (!string.IsNullOrEmpty(VetoReadSec))
|
||||
{
|
||||
int.TryParse(VetoReadSec, out vetoReadFileSec);
|
||||
}
|
||||
|
||||
string sFluxOnRead = getOptPar("sendFluxOnRead");
|
||||
if (!string.IsNullOrEmpty("sendFluxOnRead"))
|
||||
{
|
||||
bool.TryParse(sFluxOnRead, out sendFluxOnRead);
|
||||
}
|
||||
|
||||
// init a zero....
|
||||
B_input = 0;
|
||||
|
||||
// provo prima lettura logfile
|
||||
try
|
||||
{
|
||||
// eseguo subito un ciclo acquisizione log + processing
|
||||
bool acquireLog = getRemoteLog();
|
||||
if (acquireLog)
|
||||
{
|
||||
bool sentSignLog = processSignLogTable(adesso);
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError($"Eccezione in IobFileSoitaab{Environment.NewLine}{exc}");
|
||||
}
|
||||
|
||||
lastPING = DateTime.Now.AddHours(-1);
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Implementazione custom esecuzione task specifici
|
||||
/// </summary>
|
||||
/// <param name="task2exe"></param>
|
||||
/// <returns></returns>
|
||||
public override Dictionary<string, string> executeTasks(Dictionary<string, string> task2exe)
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
// NON fa nulla... anche se non dovrebbe richiamarlo
|
||||
Dictionary<string, string> taskDone = new Dictionary<string, string>();
|
||||
lastReadPLC = DateTime.Now;
|
||||
return taskDone;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupero dati dinamici...
|
||||
/// </summary>
|
||||
public override Dictionary<string, string> getDynData()
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
// dizionario vuoto / faccio direttamente accodamento in FluxLog
|
||||
Dictionary<string, string> outVal = new Dictionary<string, string>();
|
||||
// processo ed accodo!
|
||||
processFluxLogTable(adesso);
|
||||
lastReadPLC = DateTime.Now;
|
||||
return outVal;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua lettura semafori principale <paramref name="currDispData">Parametri da
|
||||
/// aggiornare x display in form</paramref>
|
||||
/// </summary>
|
||||
public override void readSemafori(ref newDisplayData currDispData)
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
if (connectionOk)
|
||||
{
|
||||
// controllo veto checkDB
|
||||
if (adesso > vetoDataRead)
|
||||
{
|
||||
// predispongo prox veto...
|
||||
vetoDataRead = adesso.AddSeconds(vetoReadFileSec);
|
||||
// semaforo
|
||||
currDispData.semIn = Semaforo.SV;
|
||||
// verifico SignLog e processo
|
||||
bool acquireLog = getRemoteLog();
|
||||
bool sentSignLog = processSignLogTable(adesso);
|
||||
// verifico ProdData e processo
|
||||
bool sentProdData = processProdDataTable(adesso);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
B_input = 0;
|
||||
currDispData.semIn = Semaforo.SR;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Override connessione
|
||||
/// </summary>
|
||||
public override void tryConnect()
|
||||
{
|
||||
if (!connectionOk)
|
||||
{
|
||||
// controllo che il ping sia stato tentato almeno pingTestSec fa...
|
||||
if (DateTime.Now.Subtract(lastPING).TotalSeconds > utils.CRI("pingTestSec"))
|
||||
{
|
||||
if (verboseLog || periodicLog)
|
||||
{
|
||||
lgInfo("FileSoitaab: ConnKO - tryConnect");
|
||||
}
|
||||
// in primis salvo data ping...
|
||||
lastPING = DateTime.Now;
|
||||
// se passa il ping faccio il resto...
|
||||
if (testPingMachine == IPStatus.Success)
|
||||
{
|
||||
string szStatusConnection = "";
|
||||
try
|
||||
{
|
||||
// ora provo connessione...
|
||||
parentForm.commPlcActive = true;
|
||||
|
||||
// connessione OK se oltre al PING riesco a leggere la folder di base
|
||||
if (Directory.Exists(logDirPath))
|
||||
{
|
||||
parentForm.commPlcActive = false;
|
||||
connectionOk = true;
|
||||
}
|
||||
// refresh stato connessione!!!
|
||||
if (connectionOk)
|
||||
{
|
||||
queueInEnabCurr = true;
|
||||
if (adpRunning)
|
||||
{
|
||||
lgInfo($"Connessione OK alla folder {logDirPath}");
|
||||
lastReadPLC = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lgError("Impossibile procedere, connessione mancante...");
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgFatal($"Errore nella connessione all'adapter IobFileSoitaab: {szStatusConnection}{Environment.NewLine}{exc}");
|
||||
connectionOk = false;
|
||||
lgInfo($"Eccezione in TryConnect, Adapter IobFileSoitaab NON running, pausa di {utils.CRI("waitRecMSec")} msec prima di ulteriori tentativi di riconnessione");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// loggo no risposta ping ...
|
||||
connectionOk = false;
|
||||
B_input = 0;
|
||||
if (verboseLog || periodicLog)
|
||||
{
|
||||
lgInfo($"Attenzione: IobFileSoitaab controllo PING fallito per IP {cIobConf.cncPingAddr}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
needRefresh = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void tryDisconnect()
|
||||
{
|
||||
// registro solo che è disconnesso
|
||||
connectionOk = false;
|
||||
queueInEnabCurr = false;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected bool sendFluxOnRead = false;
|
||||
protected int vetoReadFileSec = 3;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Stato di sync delle tab gestite
|
||||
/// </summary>
|
||||
protected List<SyncStateModel> elencoSyncState { get; set; } = new List<SyncStateModel>();
|
||||
#endif
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
/// <summary>
|
||||
/// Conversione string row in log generico
|
||||
/// </summary>
|
||||
/// <param name="dailyLog"></param>
|
||||
/// <returns></returns>
|
||||
protected override GenLogRow convertToMachineLog(string dailyLog)
|
||||
{
|
||||
GenLogRow answ = new GenLogRow();
|
||||
if (!string.IsNullOrEmpty(dailyLog))
|
||||
{
|
||||
// preventivamente: doppio ";;" --> ";"
|
||||
dailyLog = dailyLog.Replace(";;", ";");
|
||||
var sSplit = dailyLog.Split(';');
|
||||
answ.dtRif = DateTime.ParseExact($"{sSplit[0]} {sSplit[1]}", "yyyy-M-d HH:mm:ss", null);
|
||||
answ.valString = $"{sSplit[2]};{sSplit[3]}";
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupera file log da analizzare
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override bool getRemoteLog()
|
||||
{
|
||||
bool answ = false;
|
||||
bool pingOk = testPingMachine == IPStatus.Success;
|
||||
if (pingOk && Directory.Exists(logDirPath))
|
||||
{
|
||||
string filePath = Path.Combine(logDirPath, $"Report-{DateTime.Today.Day}.txt");
|
||||
bool hasDaily = File.Exists(filePath);
|
||||
// cerco file quotidiano...
|
||||
if (!hasDaily)
|
||||
{
|
||||
var fileList = Directory.GetFiles(logDirPath, "Report-*.txt");
|
||||
DateTime lastMod = DateTime.Today.AddYears(-1);
|
||||
foreach (var cFile in fileList)
|
||||
{
|
||||
var tempFile = Path.Combine(logDirPath, cFile);
|
||||
var lwTime = File.GetLastWriteTime(tempFile);
|
||||
if (lwTime >= lastMod)
|
||||
{
|
||||
lastMod = lwTime;
|
||||
filePath = tempFile;
|
||||
}
|
||||
}
|
||||
}
|
||||
// leggo file
|
||||
string rawVal = File.ReadAllText(Path.Combine(logDirPath, filePath));
|
||||
if (!string.IsNullOrEmpty(rawVal))
|
||||
{
|
||||
// salvo in redis
|
||||
string redKey = redisMan.redHash($"IOB:CurrData:{cIobConf.codIOB}:LogFile:Act");
|
||||
redisMan.setRSV(redKey, rawVal);
|
||||
answ = true;
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private string logDirPath { get; set; } = "\\\\ecs900\\Logs";
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private static int decodeSoitaabLog(string val2test)
|
||||
{
|
||||
// di default NON EMERGENZA...
|
||||
int valInt = 128;
|
||||
switch (val2test)
|
||||
{
|
||||
case "START;1":
|
||||
valInt = 1 + 2 + 128;
|
||||
break;
|
||||
|
||||
case "END;1":
|
||||
valInt = 1 + 128;
|
||||
break;
|
||||
|
||||
case "START;0":
|
||||
case "END;0":
|
||||
case "HOLD;":
|
||||
valInt = 1 + 16 + 128;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return valInt;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue processing + invio dati tab SignLog
|
||||
/// </summary>
|
||||
/// <param name="adesso"></param>
|
||||
/// <returns></returns>
|
||||
private bool processFluxLogTable(DateTime adesso)
|
||||
{
|
||||
bool fatto = false;
|
||||
// leggo eventuali dati di fluxlog ed invio...
|
||||
if (fluxLogData != null && fluxLogData.Count > 0)
|
||||
{
|
||||
string sVal = "";
|
||||
foreach (var fLog2send in fluxLogData)
|
||||
{
|
||||
var kvpFlux = fLog2send.valString.Split(';');
|
||||
if (kvpFlux.Count() > 1)
|
||||
{
|
||||
sVal = $"[DYNDATA] |{fLog2send.dtRif:yyyy-MM-dd HH:mm:ss}|{kvpFlux[0]}|{kvpFlux[1]}";
|
||||
// chiamo accodamento con dataora corretta...
|
||||
accodaFLog(sVal, qEncodeFLog(fLog2send.dtRif, kvpFlux[0], kvpFlux[1]));
|
||||
}
|
||||
}
|
||||
// svuoto coda invio fluxlog...
|
||||
fluxLogData = new List<GenLogRow>();
|
||||
// fatto!
|
||||
fatto = true;
|
||||
}
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue processing + invio dati tab ProdData
|
||||
/// </summary>
|
||||
/// <param name="adesso"></param>
|
||||
/// <returns></returns>
|
||||
private bool processProdDataTable(DateTime adesso)
|
||||
{
|
||||
bool fatto = false;
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue processing + invio dati tab SignLog
|
||||
/// </summary>
|
||||
/// <param name="adesso"></param>
|
||||
/// <returns></returns>
|
||||
private bool processSignLogTable(DateTime adesso)
|
||||
{
|
||||
bool fatto = false;
|
||||
// init oggetto x processing
|
||||
Dictionary<DateTime, int> sigLogFromFile = new Dictionary<DateTime, int>();
|
||||
// recupero i dati dai logs files, attuale e nuovo...
|
||||
string fileAct = redisMan.getRSV(redKeyLogfileAct);
|
||||
string fileLast = redisMan.getRSV(redKeyLogfileLast);
|
||||
// confronto con i dati dell'ultimo LOG FILE processato
|
||||
int lenghtAct = fileAct != null ? fileAct.Length : 0;
|
||||
int lenghtLast = fileLast != null ? fileLast.Length : 0;
|
||||
//if (lenghtAct > 0 && lenghtAct != lenghtLast)
|
||||
if (lenghtAct > 0)
|
||||
{
|
||||
List<GenLogRow> logNew = new List<GenLogRow>();
|
||||
List<GenLogRow> sigLogData = new List<GenLogRow>();
|
||||
List<GenLogRow> logLast = getGenLogFromMachineLog(fileLast);
|
||||
List<GenLogRow> logAct = getGenLogFromMachineLog(fileAct);
|
||||
// SE c'è prendo ultima riga inviata x confronto...
|
||||
var fileLastEnd = logLast.LastOrDefault();
|
||||
if (fileLastEnd != null)
|
||||
{
|
||||
// ora prendo SOLAMENTE le righe nuove
|
||||
logNew = logAct
|
||||
.Where(x => x.dtRif > fileLastEnd.dtRif)
|
||||
.OrderBy(x => x.dtRif)
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
logNew = logAct;
|
||||
}
|
||||
// solo SE ho nuovi dati....
|
||||
if (logNew.Count > 0)
|
||||
{
|
||||
// processo le righe nuove e le accodo in redis come elenco FluxLog da inviare
|
||||
// (appoggio in redis)... andando ad accodarle...
|
||||
var currFLD = fluxLogData;
|
||||
currFLD.AddRange(logNew);
|
||||
fluxLogData = currFLD;
|
||||
|
||||
// estraggo solo info x sig log
|
||||
sigLogData = logNew
|
||||
.Where(x => x.valString.StartsWith("START") || x.valString.StartsWith("HOLD") || x.valString.StartsWith("END"))
|
||||
.OrderBy(x => x.dtRif)
|
||||
.ToList();
|
||||
|
||||
// processo le righe nuove trasformando al volo SOLO eventi...
|
||||
foreach (var sLog2send in sigLogData)
|
||||
{
|
||||
/* -----------------------------------------------------
|
||||
* bitmap MAPO STANDARD 60
|
||||
* B0: 001 POWER_ON
|
||||
* B1: 002 RUN
|
||||
* B2: 004 pzCount
|
||||
* B3: 008 allarme
|
||||
* B4: 016 manuale
|
||||
* B5: 032 slowTC
|
||||
* B6: 064 WarmUpCoolDown
|
||||
* B7: 128 EmergArmata
|
||||
*
|
||||
----------------------------------------------------- */
|
||||
|
||||
int valInt = decodeSoitaabLog(sLog2send.valString);
|
||||
|
||||
string currVal = getEncodSigLog(sLog2send.dtRif, valInt, counterSigIN);
|
||||
// verifico non sia in veto invio iniziale...
|
||||
if (queueInEnabCurr)
|
||||
{
|
||||
// --> accodo (valore già formattato)!
|
||||
QueueIN.Enqueue(currVal);
|
||||
// loggo!
|
||||
lgTrace(string.Format("[QUEUE-IN] {0}", currVal));
|
||||
counterSigIN++;
|
||||
if (counterSigIN > 9999)
|
||||
{
|
||||
counterSigIN = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lgDebug($"[VETO FOR QUEUE-IN] | {currVal} - MESSAGE NOT SENT | {adesso:yyyyMMdd_HHmmss}");
|
||||
checkVetoQueueIn();
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------
|
||||
* processo righe x costruire una lista di eventi produzione:
|
||||
* - elenco di eventi contapezzi
|
||||
* - lista xODL come articolo + quantità prodotta (_1, _2, ...)
|
||||
* - eventuale ultimo xODL che resta aperto
|
||||
*
|
||||
* successivamente processing + invio info raccolte
|
||||
* - recupero PODL aperti
|
||||
* - apertura/chiusura PODL esistenti
|
||||
* - creazione PODL mancanti
|
||||
* - dichiarazione contapezzi
|
||||
*
|
||||
* ---------------------------------------------------------- */
|
||||
|
||||
string sVal = "";
|
||||
string descrArt = "";
|
||||
List<ProdBatchData> elencoProdBatch = new List<ProdBatchData>();
|
||||
ProdBatchData lastProdBatch = new ProdBatchData();
|
||||
|
||||
// ora processo TUTTO x il generico caso fluxLog......
|
||||
foreach (var fLog2send in logNew)
|
||||
{
|
||||
// separo per ";"
|
||||
var currData = fLog2send.valString.Split(';');
|
||||
if (currData.Length > 1)
|
||||
{
|
||||
if (sendFluxOnRead)
|
||||
{
|
||||
// per prima cosa fluxLog a prescindere...
|
||||
sVal = $"[LOGFILE]{currData[0]}|{currData[1]}";
|
||||
// ...e chiamo accodamento
|
||||
accodaFLog(sVal, qEncodeFLog(fLog2send.dtRif, currData[0], currData[1]));
|
||||
}
|
||||
|
||||
switch (currData[0])
|
||||
{
|
||||
case "END":
|
||||
// se è un end --> è comunque NON + runnning
|
||||
isRunningState = false; // chiudo batch precedente + in elenco (SE era valido...)
|
||||
if (!string.IsNullOrEmpty(lastProdBatch.codArt))
|
||||
{
|
||||
lastProdBatch.dtEnd = fLog2send.dtRif;
|
||||
elencoProdBatch.Add(lastProdBatch);
|
||||
}
|
||||
// reset articolo..
|
||||
lastArtDescr = "";
|
||||
// nuovo batch VUOTO
|
||||
lastProdBatch = new ProdBatchData();
|
||||
contapezziPLC = 0;
|
||||
break;
|
||||
|
||||
case "START":
|
||||
isRunningState = currData[1] == "1";
|
||||
break;
|
||||
|
||||
case "PARTCODE":
|
||||
// inizio confronto articolo con precedente x capire se sia NUOVO
|
||||
descrArt = currData[1];
|
||||
// devo scartare i "doppi percorsi"
|
||||
if (descrArt != lastArtDescr)
|
||||
{
|
||||
// verifico se sia DAVVERO cambiato articolo... prendo
|
||||
// articolo senza indice (_1, _2, _3, ...)
|
||||
var artDataLast = lastArtDescr.Split('_');
|
||||
var artDataNew = descrArt.Split('_');
|
||||
// nuovo articolo (NON vuoto)
|
||||
if (!string.IsNullOrEmpty(artDataNew[0]) && artDataLast[0] != artDataNew[0])
|
||||
{
|
||||
// chiudo batch precedente + in elenco (SE era valido...)
|
||||
if (!string.IsNullOrEmpty(lastProdBatch.codArt))
|
||||
{
|
||||
// chiudo prod
|
||||
lastProdBatch.dtEnd = fLog2send.dtRif;
|
||||
elencoProdBatch.Add(lastProdBatch);
|
||||
}
|
||||
// nuovo batch
|
||||
lastProdBatch = new ProdBatchData()
|
||||
{
|
||||
codArt = artDataNew[0],
|
||||
dtStart = fLog2send.dtRif,
|
||||
numPz = 1
|
||||
};
|
||||
}
|
||||
// solo nuova copia articolo
|
||||
else
|
||||
{
|
||||
// aumento numPezzi batch
|
||||
lastProdBatch.numPz++;
|
||||
}
|
||||
|
||||
// salvo nuovo art processato
|
||||
lastArtDescr = descrArt;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// recupero elenco PODL corrente...
|
||||
List<PODLModel> reqPOdlList = MachineNextPodl();
|
||||
// adesso processo tutti i prodBatch collezionati x invio
|
||||
foreach (var item in elencoProdBatch)
|
||||
{
|
||||
int currIdxPOdl = 0;
|
||||
// cerco se articolo sia in elenco PODL
|
||||
var listPOdl = reqPOdlList
|
||||
.Where(x => x.CodArticolo.Equals(item.codArt, StringComparison.InvariantCultureIgnoreCase))
|
||||
.ToList();
|
||||
|
||||
// se trovato --> invio start/stop PODL
|
||||
if (listPOdl != null && listPOdl.Count > 0)
|
||||
{
|
||||
var currPodl = listPOdl.FirstOrDefault();
|
||||
if (currPodl != null)
|
||||
{
|
||||
currIdxPOdl = currPodl.IdxPromessa;
|
||||
// elimino da elenco PODL
|
||||
reqPOdlList.Remove(currPodl);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// se NON trovato --> creo PODL, poi avvio/chiudo
|
||||
currIdxPOdl = TryCreatePodl(item.codArt, CodGruppoIob, item.numPz);
|
||||
}
|
||||
// se idxPOdl valido
|
||||
if (currIdxPOdl > 0)
|
||||
{
|
||||
// mando apertura PODL
|
||||
SendStartPodl(currIdxPOdl, item.dtStart);
|
||||
// chiudo PODL...
|
||||
if (item.dtEnd != null)
|
||||
{
|
||||
// invio pezzi 3 sec prima di chiusura
|
||||
SendPzIncrAtDate(item.numPz, ((DateTime)item.dtEnd).AddSeconds(-3));
|
||||
// chiudo
|
||||
SendClosePOdl(currIdxPOdl, (DateTime)item.dtEnd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// salvo in last il valore di act...
|
||||
redisMan.setRSV(redKeyLogfileLast, fileAct);
|
||||
|
||||
// calcolo B_input valido
|
||||
var lastRec = sigLogData.LastOrDefault();
|
||||
if (lastRec != null)
|
||||
{
|
||||
// salvo in B_input ultimo valore letto...
|
||||
int lastValInt = decodeSoitaabLog(lastRec.valString);
|
||||
B_input = lastValInt;
|
||||
}
|
||||
}
|
||||
fatto = true;
|
||||
}
|
||||
return fatto;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using IOB_UT_NEXT;
|
||||
using IOB_WIN_FILE.Iob;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IOB_WIN_FILE
|
||||
{
|
||||
public class MainFormNext : IOB_WIN_FORM.MainForm
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Avvio MainForm
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
public MainFormNext(string[] args) : base(args)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Apre la finestra child con conf
|
||||
/// </summary>
|
||||
protected override void openChild(string IOB)
|
||||
{
|
||||
if (IOB == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(IOB));
|
||||
}
|
||||
|
||||
AdapterFormNext child = new AdapterFormNext(IOB);
|
||||
child.MdiParent = this;
|
||||
child.Text = IOB;
|
||||
child.Show();
|
||||
child.Shown += Child_Shown;
|
||||
child.FormClosed += Child_FormClosed;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
|
||||
autoReload="true"
|
||||
throwExceptions="false"
|
||||
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
|
||||
|
||||
<variable name="logDir" value="${basedir}/logs"/>
|
||||
<targets>
|
||||
<target xsi:type="File"
|
||||
name="f_base"
|
||||
fileName="${logDir}/${var:codIOB:default=0000}/${shortdate}.log"
|
||||
layout="${longdate} [${uppercase:${level}}] ${logger:shortName=true} | ${message}"
|
||||
archiveFileName="${logDir}/${var:codIOB:default=0000}/${shortdate}.{###}.log"
|
||||
archiveNumbering="Sequence"
|
||||
archiveAboveSize="10240000"
|
||||
maxArchiveFiles="90"
|
||||
enableArchiveFileCompression="false"
|
||||
keepFileOpen="false"
|
||||
/>
|
||||
<target xsi:type="File"
|
||||
name="f_error"
|
||||
fileName="${logDir}/${var:codIOB:default=0000}/${shortdate}_err.log"
|
||||
layout="${longdate} [${uppercase:${level}}] ${logger:shortName=true} | ${message}${newline}${exception:format=tostring}"
|
||||
archiveFileName="${logDir}/${var:codIOB:default=0000}/${shortdate}_err.{###}.log"
|
||||
archiveNumbering="Sequence"
|
||||
archiveAboveSize="10240000"
|
||||
maxArchiveFiles="90"
|
||||
enableArchiveFileCompression="false"
|
||||
keepFileOpen="false"
|
||||
/>
|
||||
</targets>
|
||||
<rules>
|
||||
<!-- Logging Levels (Trace, Debug, Info, Warn, Error, Fatal)-->
|
||||
<logger name="*" minlevel="Trace" maxlevel="Warn" final="true" writeTo="f_base" />
|
||||
<logger name="*" minlevel="Error" writeTo="f_error" />
|
||||
</rules>
|
||||
</nlog>
|
||||
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace IOB_WIN_FILE
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Punto di ingresso principale dell'applicazione.
|
||||
/// <paramref name="args">Parametri di avvio</paramref>
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainFormNext(args));
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("IOB-WIN-FILE")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyProduct("IOB-WIN-FILE")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace IOB_WIN_FILE.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IOB_WIN_FILE.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace IOB_WIN_FILE.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,120 @@
|
||||
<body>
|
||||
<h3>MAPO-IOB-WIN</h3>
|
||||
<b>v: {{CURRENT-REL}}</b>
|
||||
<br />
|
||||
<i>Acquisitore MAPO-IOB per sistemi Windows</i>
|
||||
<br />
|
||||
Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
<b>v.3.1.* → v.3.2.*</b>
|
||||
<ul>
|
||||
<li>Nuovi simulatori con gestione emergenza</li>
|
||||
<li>Fix gestione invio dati Redis</li>
|
||||
<li>Implementazione IOB Eurom63</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>v.2.6.* → v.3.0.*</b>
|
||||
<ul>
|
||||
<li>revisione sistema metodi invio in blocco</li>
|
||||
<li>Gestione invio contapezzi in step > 1</li>
|
||||
<li>Gestione eventi in blocco (indipendente e prioritario su EvBlock)</li>
|
||||
<li>Gestione limite eventi memorizzabili</li>
|
||||
<li>Integrazione REDIS</li>
|
||||
<li>Integrazione IOB-MAN</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>v.2.5.* → v.2.6.*</b>
|
||||
<ul>
|
||||
<li>revisione sistema timeout Ping</li>
|
||||
<li>Gestione AutoODL in prod generale (non solo SIM)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>v.2.4.* → v.2.5.*</b>
|
||||
<ul>
|
||||
<li>Aggiunto adapter MTConnect</li>
|
||||
<li>Ottimizzazione gestione SIEMENS</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>v.2.3.* → v.2.4.*</b>
|
||||
<ul>
|
||||
<li>inserita gestione conf json x Flog acquisiti</li>
|
||||
<li>gestione invio Json blocchi dati FLog</li>
|
||||
<li>ottimizzazioni varie adapter Siemens</li>
|
||||
<li>ottimizzazione processo svuotamento code</li>
|
||||
<li>riduzione interferenza e interblocchi in fase di PLC assente</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>Ultime modifiche:</b>
|
||||
<ul>{{LAST-CHANGES}}</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>v.1.18.* → v.2.3.*</b>
|
||||
<ul>
|
||||
<li>inserimento WPS x acontrolli WebPage human readable</li>
|
||||
<li>fix gestione task2exe</li>
|
||||
<li>aggiunte varie versioni PLC siemens</li>
|
||||
<li>aggiunto PLC WPS x generiche web pages</li>
|
||||
<li>revisitazione LOG ODL e contapezzi</li>
|
||||
<li>modifica pagina presentazione dati (master) x resize</li>
|
||||
<li>Attivazione IOB SIMULATOR per test di carico (sostituito type DEMO)</li>
|
||||
<li>Aggiunto simulatore macchine MULTI pallet</li>
|
||||
<li>Ottimizzazione simulatore</li>
|
||||
<li>Ottimizzazioni PLC Siemens x riavvio post disconnessione (es spegnimento notturno)</li>
|
||||
<li>Ottimizzazione processo chiusura in update applicazione</li>
|
||||
<li>Aggiunta simulazione spegnimento con WU/CD</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>v.1.11.* → v.1.18.*</b>
|
||||
<ul>
|
||||
<li>Inserimento controller SIEMENS con S7+ library</li>
|
||||
<li>Inserimento nuove letture FANUC x programmi</li>
|
||||
<li>Inserimento nuove letture FANUC x SysEx (informazioni sistema)</li>
|
||||
<li>Inserimento invio FluxLog x parametri estesi (es SysEx, ProgName,...)</li>
|
||||
<li>FIX visualizzazione dati FluxLog e URL inviati</li>
|
||||
<li>FIX MAIN program da FANUC (non il current)</li>
|
||||
<li>Inserita modalita' DUMP memoria (iniziale full + periodica)</li>
|
||||
<li>Inserimento gestione contapezzi standard/checkBit in IOB.cfg</li>
|
||||
<li>Inserimento contapezzi da area memoria X</li>
|
||||
<li>NUOVA Gestione rami cliente e URL di update</li>
|
||||
<li>Gestione modi CNC</li>
|
||||
<li>Lettura dari dinamycs FANUC (feed, speed)</li>
|
||||
<li> aggiunta gestione aree G0..G30 (overrides?)</li>
|
||||
<li>fix errore disconnessione FANUC (allo spegnimento dl CNC) e memoria valori persistente a 1</li>
|
||||
<li>fix globali x gestione log IN / FLOG + ottimizzaizone check FANUC (PING)</li>
|
||||
<li>ottimizzazione fasi di restart in caso di assenza del server (evita reinvii inutili e migliora tempo ripartenza invio)</li>
|
||||
<li>review procedure controllo connessione x FANUC (es Tornos II)</li>
|
||||
<li>non richeide più privilegi admin x fare update</li>
|
||||
<li> gestione segnali inverted</li>
|
||||
<li>completata gestione configurabilità parametrica segnali (Tornos, CMZ, Biglia)</li>
|
||||
<li>revisitazione LOG x distinguere processi IOB</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>v.0.1.* → v.0.10.*</b>
|
||||
<ul>
|
||||
<li>Testato in produzione x update ad avvio e su richiesta</li>
|
||||
<li>Testato in produzione x lettura dati da Fanuc</li>
|
||||
<li>Inizio deploy con copia file su area IIS</li>
|
||||
<li>Prima versione con autoupdate</li>
|
||||
<li>Test PrettyBin x spostamento dll</li>
|
||||
<li>Base acquisitore FANUC</li>
|
||||
<li>Sistema base sw controllo in tray</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div>
|
||||
<div style="float: left;">
|
||||
<img src="logoSteamware.png" />
|
||||
</div>
|
||||
<div style="float: right;">
|
||||
<a href="https://www.steamware.net/IOT" target="_blank">© Steamware 2006-{{CURR-YEAR}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 160 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 102 KiB |
Binary file not shown.
@@ -0,0 +1,15 @@
|
||||
@ECHO OFF
|
||||
|
||||
SET EXEName=IOB-WIN.exe
|
||||
SET EXEFullPath=C:\Steamware\IOB-WIN\IOB-WIN.exe
|
||||
|
||||
TASKLIST | FINDSTR /I "%EXEName%"
|
||||
IF ERRORLEVEL 1 GOTO :StartIobWin
|
||||
|
||||
REM "Programma ancora in run, nessuna azione necessaria"
|
||||
timeout /T 2
|
||||
GOTO :EOF
|
||||
|
||||
:StartIobWin
|
||||
START "" "%EXEFullPath%"
|
||||
GOTO :EOF
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 273 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>1.0.0.0</version>
|
||||
<url>http://seriate.steamware.net:8083/SWS/MAPO/IOB-WIN/{{BRANCHNAME}}/MAPO-IOB-WIN.zip</url>
|
||||
<changelog>http://seriate.steamware.net:8083/SWS/MAPO/IOB-WIN/{{BRANCHNAME}}/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
</item>
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="MapoSDK" version="6.14.2411.518" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="9.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.Logging.Abstractions" version="9.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.VisualStudio.SlowCheetah" version="4.0.50" targetFramework="net462" developmentDependency="true" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
|
||||
<package id="NLog" version="5.3.4" targetFramework="net462" />
|
||||
<package id="Pipelines.Sockets.Unofficial" version="2.2.8" targetFramework="net462" />
|
||||
<package id="StackExchange.Redis" version="2.8.24" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="9.0.0" targetFramework="net462" />
|
||||
<package id="System.Diagnostics.PerformanceCounter" version="9.0.0" targetFramework="net462" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
|
||||
<package id="System.IO.Pipelines" version="9.0.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
|
||||
<package id="System.Threading.Channels" version="9.0.0" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.6.0" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -0,0 +1,52 @@
|
||||
@echo off
|
||||
echo Inizio processing After Build: configurazione %1 , directory %2
|
||||
|
||||
if %1 == "Release" goto ReleaseExec
|
||||
if %1 == Release goto ReleaseExec
|
||||
if %1 == "Debug" goto DebugExec
|
||||
if %1 == Debug goto DebugExec
|
||||
if %1 == "Remote_DEBUG" goto RemoteDebugExec
|
||||
if %1 == Remote_DEBUG goto RemoteDebugExec
|
||||
|
||||
:ReleaseExec
|
||||
echo Release processing...
|
||||
del /S %2"*.pdb""
|
||||
del /S %2"*.xml""
|
||||
del /S %2"lib/*.pdb""
|
||||
echo Release: eliminato pdb + xml!!!
|
||||
goto END
|
||||
|
||||
:DebugExec
|
||||
echo Debug processing...
|
||||
|
||||
goto END
|
||||
|
||||
|
||||
:RemoteDebugExec
|
||||
echo Remote_DEBUG processing, effettuo copia script verso server remoto (ROBOCOPY)
|
||||
REM copia script verso server remoto
|
||||
REM echo Debug remoto: effettuo robocopy sync (verificare remote per cliente)
|
||||
|
||||
REM FINASSI
|
||||
REM ROBOCOPY %2 \\10.150.0.1\Steamware\IOB-WIN-FILE-DEB /MIR
|
||||
REM Baglietto
|
||||
REM ROBOCOPY %2 \\192.168.60.15\Steamware\IOB-WIN-FILE-DEB /MIR
|
||||
REM GIACOVELLI LOCOROTONDO
|
||||
REM ROBOCOPY %2 \\192.168.1.93\Steamware\IOB-WIN-FILE-DEB /MIR
|
||||
REM IMI Remosa
|
||||
REM ROBOCOPY %2 \\192.168.0.12\Steamware\IOB-WIN-FILE-DEB /MIR
|
||||
|
||||
REM IOB-WIN-SIM
|
||||
REM ROBOCOPY %2 \\IOB-WIN-SIMULA\Steamware\IOB-WIN-FILE-DEB /MIR
|
||||
|
||||
REM IOBVPN4MACHINE
|
||||
REM ROBOCOPY %2 \\10.51.90.5\Steamware\IOB-WIN-FILE-DEB /MIR
|
||||
REM ROBOCOPY %2 \\10.51.90.5\Steamware\IOB-WIN-FILE-DEB /MIR /log:RobocopyTransfer.log
|
||||
REM ROBOCOPY %2 Z:\IOB-WIN-FILE-DEB /MIR
|
||||
REM ROBOCOPY %2 \\10.51.90.10\Steamware\IOB-WIN-FILE-DEB /MIR
|
||||
ROBOCOPY %2 \\10.51.90.9\Steamware\IOB-WIN-FILE-DEB /MIR
|
||||
|
||||
goto END
|
||||
|
||||
:END
|
||||
echo Fatto!
|
||||
@@ -0,0 +1,25 @@
|
||||
@echo off
|
||||
echo Effettua setup dei file specifici per i vari ambienti pre build installer: verifica da nome configurazione %1
|
||||
|
||||
|
||||
if %1 == "Release" goto Release
|
||||
if %1 == "Debug" goto Debug
|
||||
if %1 == "Remote_DEBUG" goto RemoteDebug
|
||||
|
||||
:Release
|
||||
echo Release: nulla da copiare
|
||||
goto END
|
||||
|
||||
:Debug
|
||||
echo Debug: copia file ini x simulazione Debug
|
||||
REM del %2"DATA\CONF\EsaKvara.ini"
|
||||
REM copy %2"Resources\SCM\EsaKvara_SIM.ini" %2"DATA\CONF\EsaKvara.ini"
|
||||
goto END
|
||||
|
||||
|
||||
:RemoteDebug
|
||||
echo RemoteDebug: nulla da copiare
|
||||
goto END
|
||||
|
||||
:END
|
||||
echo Fatto!
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace IOB_WIN_NEXT
|
||||
btnStart.Enabled = true;
|
||||
break;
|
||||
|
||||
#if false
|
||||
case tipoAdapter.FILE_GEN:
|
||||
iobObj = new IobFile.FileGen(this, IOBConf);
|
||||
btnStart.Enabled = true;
|
||||
@@ -54,7 +55,6 @@ namespace IOB_WIN_NEXT
|
||||
btnStart.Enabled = true;
|
||||
break;
|
||||
|
||||
#if false
|
||||
case tipoAdapter.FILE_SOITAAB:
|
||||
iobObj = new IobFile.IobFileSoitaab(this, IOBConf);
|
||||
btnStart.Enabled = true;
|
||||
|
||||
@@ -395,10 +395,8 @@
|
||||
<Compile Include="TcAdsClient.cs" />
|
||||
<Compile Include="GlobalSuppressions.cs" />
|
||||
<Compile Include="IobBeckhoff\BeckhoffCpa.cs" />
|
||||
<Compile Include="IobFile\FileEurom63.cs" />
|
||||
<Compile Include="Iob\Omron.cs" />
|
||||
<Compile Include="IobBeckhoff\Beckhoff.cs" />
|
||||
<Compile Include="IobFile\FileGen.cs" />
|
||||
<Compile Include="Iob\OSAI.cs" />
|
||||
<Compile Include="Iob\Kawasaki.cs" />
|
||||
<Compile Include="Output.cs" />
|
||||
@@ -543,8 +541,6 @@
|
||||
<None Include="DATA\CONF\MMapW.map">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="DATA\CONF\EM63.ini" />
|
||||
<None Include="DATA\CONF\EM63.json" />
|
||||
<None Include="DATA\DAT\PersistData.dat">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
@@ -600,6 +596,7 @@
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="IobFile\" />
|
||||
<Folder Include="IobSql\" />
|
||||
<Folder Include="prog\" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -1,51 +1,6 @@
|
||||
@echo off
|
||||
echo Inizio processing After Build: configurazione %1 , directory %2
|
||||
|
||||
RD /S /Q %2"\lib\ar"
|
||||
RD /S /Q %2"\lib\cs"
|
||||
RD /S /Q %2"\lib\da"
|
||||
RD /S /Q %2"\lib\de"
|
||||
RD /S /Q %2"\lib\es"
|
||||
RD /S /Q %2"\lib\fr"
|
||||
RD /S /Q %2"\lib\it"
|
||||
RD /S /Q %2"\lib\ja-JP"
|
||||
RD /S /Q %2"\lib\ko"
|
||||
RD /S /Q %2"\lib\lv"
|
||||
RD /S /Q %2"\lib\nl"
|
||||
RD /S /Q %2"\lib\pl"
|
||||
RD /S /Q %2"\lib\pt"
|
||||
RD /S /Q %2"\lib\pt-BR"
|
||||
RD /S /Q %2"\lib\ru"
|
||||
RD /S /Q %2"\lib\sk"
|
||||
RD /S /Q %2"\lib\sv"
|
||||
RD /S /Q %2"\lib\th"
|
||||
RD /S /Q %2"\lib\tr"
|
||||
RD /S /Q %2"\lib\zh"
|
||||
RD /S /Q %2"\lib\zh-TW"
|
||||
|
||||
MOVE /Y %2"ar" %2"lib\"
|
||||
MOVE /Y %2"cs" %2"lib\"
|
||||
MOVE /Y %2"da" %2"lib\"
|
||||
MOVE /Y %2"de" %2"lib\"
|
||||
MOVE /Y %2"es" %2"lib\"
|
||||
MOVE /Y %2"fr" %2"lib\"
|
||||
MOVE /Y %2"it" %2"lib\"
|
||||
MOVE /Y %2"ja-JP" %2"lib\"
|
||||
MOVE /Y %2"ko" %2"lib\"
|
||||
MOVE /Y %2"lv" %2"lib\"
|
||||
MOVE /Y %2"nl" %2"lib\"
|
||||
MOVE /Y %2"pl" %2"lib\"
|
||||
MOVE /Y %2"pt" %2"lib\"
|
||||
MOVE /Y %2"pt-BR" %2"lib\"
|
||||
MOVE /Y %2"ru" %2"lib\"
|
||||
MOVE /Y %2"sk" %2"lib\"
|
||||
MOVE /Y %2"sv" %2"lib\"
|
||||
MOVE /Y %2"th" %2"lib\"
|
||||
MOVE /Y %2"tr" %2"lib\"
|
||||
MOVE /Y %2"zh" %2"lib\"
|
||||
MOVE /Y %2"zh-TW" %2"lib\"
|
||||
|
||||
|
||||
if %1 == "Release" goto ReleaseExec
|
||||
if %1 == Release goto ReleaseExec
|
||||
if %1 == "Debug" goto DebugExec
|
||||
|
||||
Reference in New Issue
Block a user