Merge remote-tracking branch 'origin/Thermocamera' into develop

This commit is contained in:
Nicola
2020-10-23 16:31:24 +02:00
103 changed files with 4033 additions and 1099 deletions
+2 -1
View File
@@ -8,9 +8,10 @@
<OutputType>Library</OutputType>
<RootNamespace>Client.Chromium</RootNamespace>
<AssemblyName>Client.Chromium</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
+2 -1
View File
@@ -128,7 +128,8 @@
<HintPath>..\packages\Microsoft.WindowsAPICodePack-Shell.1.1.0.0\lib\Microsoft.WindowsAPICodePack.ShellExtensions.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
+1
View File
@@ -172,6 +172,7 @@ namespace Active_Client
e.CommandLine.AppendSwitch("--enable-usermedia-screen-capture");
e.CommandLine.AppendSwitch("--no-proxy-server");
e.CommandLine.AppendSwitch("--ignore-certificate-errors-spki-list");
e.CommandLine.AppendSwitch("--ignore-certificate-errors");
e.CommandLine.AppendSwitch("--ignore-ssl-errors");
}
+1 -1
View File
@@ -3,5 +3,5 @@
<package id="MetroModernUI" version="1.4.0.0" targetFramework="net462" />
<package id="Microsoft.WindowsAPICodePack-Core" version="1.1.0.2" targetFramework="net462" />
<package id="Microsoft.WindowsAPICodePack-Shell" version="1.1.0.0" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
</packages>
@@ -0,0 +1,36 @@
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("THermo.Active.Thermocamera")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("THermo.Active.Thermocamera")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[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)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("8d8ec91a-3a15-4a1d-951b-a35e7068debd")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,49 @@
<?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>{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>THermo.Active.Thermocamera</RootNamespace>
<AssemblyName>THermo.Active.Thermocamera</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<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' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<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.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="ThermocameraComunicator.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -0,0 +1,181 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.IO.MemoryMappedFiles;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
namespace Thermo.Active.Thermocamera
{
public class ThermocameraComunicator
{
const string MMF_REQ = "CMS_MMF_REQ";
const string MMF_RES = "CMS_MMF_RES";
const int NUM_CHAR_MSG = 5000;
const int REQ = 1;
const int RES = 2;
const int DIM_MMF = NUM_CHAR_MSG * 2 + 2;
MemoryMappedFile mmf;
MemoryMappedFile mmfRes;
MemoryMappedViewAccessor accessor;
MemoryMappedViewAccessor accessorResp;
private static ThermocameraComunicator _instance;
public static ThermocameraComunicator getInstance()
{
if (_instance == null)
_instance = new ThermocameraComunicator();
return _instance;
}
private ThermocameraComunicator()
{
mmf = MemoryMappedFile.CreateOrOpen(MMF_REQ, DIM_MMF);
mmfRes = MemoryMappedFile.CreateOrOpen(MMF_RES, DIM_MMF);
accessor = mmf.CreateViewAccessor();
accessorResp = mmfRes.CreateViewAccessor();
}
public bool takePicture(int timeoutMS)
{
const string tempCommand = "SetParameter_Integer";
string response;
if (!writeCommand(accessor, tempCommand + ";TAKE_IMAGE;"))
return false;
if (!readCommand(accessorResp, tempCommand, timeoutMS, out response))
return false;
if (response != "True;")
return false;
return true;
}
public bool showWindow(int x, int y, int dimX, int dimY, int timeoutMS)
{
const string tempCommand = "ShowWindow";
string response;
if (!writeCommand(accessor, tempCommand + ";" + x + ";" + y + ";" + dimX + ";" + dimY + ";"))
return false;
if (!readCommand(accessorResp, tempCommand, timeoutMS, out response))
return false;
if (response != "1;")
return false;
return true;
}
public bool readTemperature(int x, int y, int timeoutMS, out float temp)
{
temp = 0f;
const string tempCommand = "GetTemperature";
string response;
if (!writeCommand(accessor, tempCommand + ";" + x + ";" + y + ";"))
return false;
if (!readCommand(accessorResp, tempCommand, timeoutMS, out response))
return false;
response = response.TrimEnd(';');
if (!float.TryParse(response, NumberStyles.Float, CultureInfo.InvariantCulture, out temp))
return false;
return true;
}
public bool readMultiTemperatures(IEnumerable<Point> points, int timeoutMS, out List<float> temp)
{
temp = new List<float>();
const string tempCommand = "GetTemperature";
string response;
string cmdRead = "";
foreach (Point point in points)
{
cmdRead += point.X + ";" + point.Y + ";";
}
if (!writeCommand(accessor, tempCommand + ";" + cmdRead))
return false;
if (!readCommand(accessorResp, tempCommand, timeoutMS, out response))
return false;
string[] respSplitted = response.Split(';');
foreach (string str in respSplitted)
{
float tmp;
if (str.Trim() != "")
{
if (float.TryParse(str.Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out tmp))
temp.Add(tmp);
else
return false;
}
}
return true;
}
private bool writeCommand(MemoryMappedViewAccessor accessor, string command)
{
char[] bufferToClean = Enumerable.Repeat('\0', NUM_CHAR_MSG).ToArray();
accessor.WriteArray(0, bufferToClean, 0, bufferToClean.Length);
char[] bufferToWrite = command.ToCharArray();
//Write Pre-Command
accessor.Write(0, REQ);
//Write Command
accessor.WriteArray(1, bufferToWrite, 0, bufferToWrite.Length);
return true;
}
private bool readCommand(MemoryMappedViewAccessor accessor, string command, int timeoutMS, out string resp)
{
resp = "";
byte response = 0;
int totalCycle = 0;
int sleepTime = 500;
byte[] bytesToRead = new byte[NUM_CHAR_MSG];
if (!accessor.CanRead) return false;
//Read Pre-Command
while (response != RES)
{
totalCycle++;
accessor.Read(0, out response);
if (response != RES)
Thread.Sleep(sleepTime);
if (totalCycle * sleepTime > timeoutMS)
return false;
}
//Read Command
accessor.ReadArray(1, bytesToRead, 0, bytesToRead.Length);
//Elaborate String
string textRecieved = Encoding.UTF8.GetString(bytesToRead);
if (textRecieved == null) return false;
string[] textSplitted = textRecieved.Replace("\0", string.Empty).Split(';');
if (textSplitted.Length < 2) return false;
if (textSplitted[0] != command) return false;
char[] bufferToClean = Enumerable.Repeat('\0', NUM_CHAR_MSG).ToArray();
accessor.WriteArray(0, bufferToClean, 0, bufferToClean.Length);
//Output
textSplitted = textSplitted.Skip(1).ToArray();
resp = String.Join(";", textSplitted);
return true;
}
}
}
@@ -0,0 +1,122 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Thermo.Active.Model.DTOModels.AlarmModels;
using YamlDotNet.Core.Tokens;
namespace Thermo.Active.CmsConnectGateway
{
public static class CMSConnectConstants
{
public const string IP_ADDR_LABEL = "IP_ADDRESS=";
public const string GATEWAY_LABEL = "DEFAULT_GATEWAY=";
public const string DNSIP_LABEL = "DNS_IP=";
public const string DNSPREFIX_LABEL = "DNS_SUFFIX=";
public const string PROXY_ADDR_LABEL = "PROXY=";
public const string NO_PROXY_LABEL = "NO_PROXY=";
public const string UNDEF_VALUE = "none";
public const string CONNECTION_OK_VALUE = "OK";
public const string CONNECTION_NOWEB_VALUE = "NO_WEB";
public const string CONNECTION_NOPORT_VALUE = "NO_PORTS";
public const int REBOOT_MINUTES_MAX = 2;
public const int REBOOT_MSWAIT_BETWEEN_OP = 500;
public const string ADMIN_COMMAND = "sudo ";
public const string SSH_SET_PROXY_COMMAND = ADMIN_COMMAND + "./setProxy.sh ";
public const string SSH_SET_DNSIP_COMMAND = ADMIN_COMMAND + "./setDnsIp.sh ";
public const string SSH_SET_DNSSUFFIX_COMMAND = ADMIN_COMMAND + "./setDnsSuffix.sh ";
public const string SSH_SET_NETWORK_COMMAND = ADMIN_COMMAND + "./setNetwork.sh ";
public const string SSH_GET_NETWORK_COMMAND = ADMIN_COMMAND + "./getNetworkConfiguration.sh ";
public const string SSH_GET_PROXY_COMMAND = ADMIN_COMMAND + "./getProxyConfiguration.sh ";
public const string SSH_TEST_CONNECTION_COMMAND = ADMIN_COMMAND + "./testConnection.sh ";
public const string SSH_GW_REBOOT_COMMAND = ADMIN_COMMAND + "./gatewayReboot.sh ";
public const string YAML_CONFIG_FILE = "./example-mconnect.conf.yaml";
public const string CONNECT_UNDEFINED = "UNDEFINED";
public const string CONNECT_MACHINE_STAUTS_EXE = "EXE";
public const string CONNECT_MACHINE_STAUTS_READY = "READY";
public const string CONNECT_MACHINE_STAUTS_SETUP = "SETUP";
public const string CONNECT_MACHINE_STAUTS_FAIL = "FAIL";
public const string CONNECT_MACHINE_STAUTS_POWEROFF = "POWER_OFF";
public const string CONNECT_PROC_STAUTS_EXE = "EXE";
public const string CONNECT_PROC_STAUTS_READY = "READY";
public const string CONNECT_PROC_STAUTS_HOLD = "HOLD";
public const string CONNECT_PROC_STAUTS_FHOLD = "FEED_HOLD";
public const string CONNECT_PROC_STAUTS_OSTOP = "OPTIONAL_STOP";
public const string CONNECT_PROC_STAUTS_PSTOPPED = "PROGRAM_STOPPED";
public const string CONNECT_PROC_MODE_AUTO = "AUTOMATIC";
public const string CONNECT_PROC_MODE_EDIT = "EDIT";
public const string CONNECT_PROC_MODE_JOG = "MANUAL_JOG";
public static string ConvertThermoToConnectStatus(int status)
{
switch (status)
{
case 0: return CONNECT_MACHINE_STAUTS_POWEROFF;
case 1: return CONNECT_MACHINE_STAUTS_READY;
case 2: return CONNECT_MACHINE_STAUTS_EXE;
case 4: return CONNECT_MACHINE_STAUTS_SETUP;
case 8: return CONNECT_MACHINE_STAUTS_FAIL;
case 16: return CONNECT_MACHINE_STAUTS_READY;
case 128: return CONNECT_MACHINE_STAUTS_FAIL;
default: return CONNECT_UNDEFINED;
}
}
public static string ConvertThermoToConnectProcessStatus(int status)
{
switch (status)
{
case 0: return CONNECT_PROC_STAUTS_READY;
case 1: return CONNECT_PROC_STAUTS_READY;
case 2: return CONNECT_PROC_STAUTS_EXE;
case 4: return CONNECT_PROC_STAUTS_FHOLD;
case 8: return CONNECT_PROC_STAUTS_OSTOP;
case 16: return CONNECT_PROC_STAUTS_HOLD;
case 128: return CONNECT_PROC_STAUTS_HOLD;
default: return CONNECT_UNDEFINED;
}
}
public static string ConvertThermoToConnectProcessMode(int status)
{
switch (status)
{
case 1: return CONNECT_PROC_MODE_EDIT;
case 2: return CONNECT_PROC_MODE_AUTO;
case 4: return CONNECT_PROC_MODE_JOG;
default: return CONNECT_UNDEFINED;
}
}
public static bool ConvertThermoToConnectPower(int status)
{
switch (status)
{
case 0: return false;
default: return true;
}
}
public static bool ConvertThermoToConnectMachineAlarm(DTOAlarmsModel alarms)
{
return alarms.PlcAlarms.Count > 0;
}
public static string ConvertThermoToConnectAlarms(DTOAlarmsModel alarms)
{
List<string> alms = new List<string>();
foreach (DTOPlcAlarmModel alarm in alarms.PlcAlarms) {
int severity = alarm.IsWarning ? 500 : 900;
alms.Add(alarm.Id.ToString("D6") + "|" + severity);
}
return string.Join(",", alms);
}
}
}
@@ -0,0 +1,13 @@
---------------------------------------------------------------
------- MConnect Client SDK -------
---------------------------------------------------------------
Libreria di utility per connessione con il cloud di Maestro Connect.
Le dipendenze inserite sono necessarie al funzionamento dell'SDK.
Sono inclusi a titolo di esempio due files:
* example-mconnect.conf.yaml
* example-NLog.config
Attenzione a configurare correttamente il file NLog.xml includendo il rule per la classe, vedere ad esempio il file example-NLog.config allegato.
@@ -9,8 +9,9 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Thermo.Active.CmsConnectGateway</RootNamespace>
<AssemblyName>Thermo.Active.CmsConnectGateway</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -30,23 +31,84 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MConnectSDK, Version=1.2.2007.218, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MConnectSDK.1.2.2007.218\lib\net462\MConnectSDK.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.1\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.6.7\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="Pipelines.Sockets.Unofficial, Version=1.0.0.0, Culture=neutral, PublicKeyToken=42ea0a778e13fbe2, processorArchitecture=MSIL">
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.1.16\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
</Reference>
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Net.IPNetwork, Version=2.4.0.126, Culture=neutral, PublicKeyToken=717343cc2c25edcf, processorArchitecture=MSIL">
<HintPath>..\packages\IPNetwork2.2.4.0.126\lib\net46\System.Net.IPNetwork.dll</HintPath>
<Reference Include="StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46, processorArchitecture=MSIL">
<HintPath>..\packages\StackExchange.Redis.2.1.58\lib\net461\StackExchange.Redis.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.PerformanceCounter, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.4.7.0\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Pipelines, Version=4.0.2.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.4.7.3\lib\net461\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.IPNetwork, Version=2.5.226.0, Culture=neutral, PublicKeyToken=717343cc2c25edcf, processorArchitecture=MSIL">
<HintPath>..\packages\IPNetwork2.2.5.226\lib\net46\System.Net.IPNetwork.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Threading.Channels, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Channels.4.7.1\lib\net461\System.Threading.Channels.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="YamlDotNet, Version=7.0.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e, processorArchitecture=MSIL">
<HintPath>..\packages\YamlDotNet.7.0.0\lib\net45\YamlDotNet.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Builders\iBuilder.cs" />
<Compile Include="CMSConnectConstants.cs" />
<Compile Include="GatewayAdapter.cs" />
<Compile Include="Events\GatewayRebootEventHandlerArgs.cs" />
<Compile Include="Exceptions\GatewayException.cs" />
@@ -56,8 +118,23 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="example-mconnect.conf.yaml" />
<None Include="example-NLog.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="README.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj">
<Project>{4abf8eef-2b23-483e-acdc-53214fe28681}</Project>
<Name>CMS_CORE_Library</Name>
</ProjectReference>
<ProjectReference Include="..\Thermo.Active.Model\Thermo.Active.Model.csproj">
<Project>{631375dd-06d3-49bb-8130-d9ddb34c429d}</Project>
<Name>Thermo.Active.Model</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.2" newVersion="4.0.2.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.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>
</configuration>
@@ -0,0 +1,31 @@
<?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" >
<!-- optional, add some variabeles
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets async="true">
<target xsi:type="File"
name="mconnect_sdk"
fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}"
/>
</targets>
<rules>
<logger name="MConnectSDK.*" minlevel="Debug" writeTo="mconnect_sdk" />
</rules>
</nlog>
@@ -0,0 +1,14 @@
#File di conf per MConnectClientSDK
conf:
Client_ID: "test"
MachineID: "cjpjwuas400cb0slxs5zfj4yh"
PingTarget: "stg.api.maestroconnect.scmgroup.com"
AliveTarget: "https://stg.api.maestroconnect.scmgroup.com/health"
BaseUrl: "https://stg.api.maestroconnect.scmgroup.com/api"
UploadUrl: "https://stg.api.maestroconnect.scmgroup.com/storage-api/backups"
WebAppUrl: "https://stg.maestroconnect.scmgroup.com/settings/machine-activation?user_code={0}&machine_id={1}"
MemoryLayer:
Redis:
ConnectionString: "127.0.0.1,abortConnect=false,ssl=false"
DbIndex: 1
Module: "MCC"
@@ -1,5 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="IPNetwork2" version="2.4.0.126" targetFramework="net461" />
<package id="IPNetwork2" version="2.5.226" targetFramework="net462" />
<package id="MConnectSDK" version="1.2.2007.218" targetFramework="net462" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
<package id="NLog" version="4.6.7" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="2.1.16" targetFramework="net462" />
<package id="SSH.NET" version="2016.1.0" targetFramework="net461" />
<package id="StackExchange.Redis" version="2.1.58" targetFramework="net462" />
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
<package id="System.Diagnostics.PerformanceCounter" version="4.7.0" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
<package id="System.IO.Pipelines" version="4.7.3" targetFramework="net462" />
<package id="System.Memory" version="4.5.4" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.1" targetFramework="net462" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
<package id="System.Threading.Channels" version="4.7.1" targetFramework="net462" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
<package id="YamlDotNet" version="7.0.0" targetFramework="net462" />
</packages>
+112
View File
@@ -0,0 +1,112 @@
<ModelDesign>
<Machine>
<Property SymbolicName="Model" BrowseName="Model" DataType="ua:String" ValueRank="Scalar" Value="EIDOS" />
<Property SymbolicName="Manufacturer" BrowseName="Manufacturer" DataType="ua:String" ValueRank="Scalar" Value="CMS Industries" />
<Property SymbolicName="Serial" BrowseName="Serial" DataType="ua:String" ValueRank="Scalar" Value="9943" />
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="CNC_MACHINE" />
<Property SymbolicName="BuildYear" BrowseName="BuildYear" DataType="ua:String" ValueRank="Scalar" Value="2020" />
<Variable SymbolicName="Status" BrowseName="Status" DataType="ua:String" ValueRank="Scalar" Units="Enum" />
<Variable SymbolicName="Alarm" BrowseName="Alarm" DataType="ua:Boolean" ValueRank="Scalar" Units="Bool" />
<Variable SymbolicName="Emergency" BrowseName="Emergency" DataType="ua:Boolean" ValueRank="Scalar" Units="Bool" />
<Variable SymbolicName="Power" BrowseName="Power" DataType="ua:Boolean" ValueRank="Scalar" Units="Bool" />
<Variable SymbolicName="ActiveTime" BrowseName="ActiveTime" DataType="ua:Float" ValueRank="Scalar" Units="h" CmsDataType="CounterList" CmsDataIndex="001" CmsDataOpt="HOURS" />
<Variable SymbolicName="ActiveWorkingTime" BrowseName="ActiveWorkingTime" DataType="ua:Float" ValueRank="Scalar" Units="h" CmsDataType="CounterList" CmsDataIndex="002" CmsDataOpt="HOURS" />
<Component Name="Cnc">
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="SIEMENS" />
<Property SymbolicName="Version" BrowseName="Version" DataType="ua:String" ValueRank="Scalar" Value="S71500" />
<Condition SymbolicName="Condition" BrowseName="Condition" DataType="ua:String" ValueRank="Scalar" Type="OffNormalAlarmState" Units="" />
<Component Name="CncProcesses">
<Component Name="01">
<Variable SymbolicName="Mode" BrowseName="Mode" DataType="ua:String" ValueRank="Scalar" Units="Enum" />
<Variable SymbolicName="SubMode" BrowseName="SubMode" DataType="ua:String" ValueRank="Scalar" Units="" />
<Variable SymbolicName="Status" BrowseName="Status" DataType="ua:String" ValueRank="Scalar" Units="Enum" />
<Variable SymbolicName="FeedOverride" BrowseName="FeedOverride" DataType="ua:String" ValueRank="Scalar" Units="Perc" />
<Variable SymbolicName="RapidOverride" BrowseName="RapidOverride" DataType="ua:String" ValueRank="Scalar" Units="Perc" />
<Variable SymbolicName="SpeedOverride" BrowseName="SpeedOverride" DataType="ua:String" ValueRank="Scalar" Units="Perc" />
</Component>
</Component>
</Component>
<Component Name="Plc">
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="SIEMENS" />
<Property SymbolicName="Version" BrowseName="Version" DataType="ua:String" ValueRank="Scalar" Value="" />
<Condition SymbolicName="Condition" BrowseName="Condition" DataType="ua:String" ValueRank="Scalar" Type="OffNormalAlarmState" Units="" />
</Component>
<Component Name="Hmi">
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="CMS Active" />
<Variable SymbolicName="Version" BrowseName="Version" DataType="ua:String" ValueRank="Scalar" Value="" />
<Variable SymbolicName="User" BrowseName="User" DataType="ua:String" ValueRank="Scalar" Units="" />
</Component>
<Component Name="Axes">
<Component Name="01">
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="X" />
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
</Component>
<Component Name="02">
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="Y" />
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
</Component>
<Component Name="03">
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="Z" />
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
</Component>
<Component Name="04">
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="V" />
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
</Component>
<Component Name="05">
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="B" />
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
</Component>
<Component Name="06">
<Property SymbolicName="Type" BrowseName="Type" DataType="ua:String" ValueRank="Scalar" Value="LINEAR" />
<Property SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Value="C" />
<Property SymbolicName="Role" BrowseName="Role" DataType="ua:String" ValueRank="Scalar" Value="MASTER" />
<Property SymbolicName="MasterId" BrowseName="MasterId" DataType="ua:String" ValueRank="Scalar" Value="0" />
<Variable SymbolicName="Load" BrowseName="Load" DataType="ua:Float" ValueRank="Scalar" Units="Perc"/>
<Variable SymbolicName="CurrentPos" BrowseName="CurrentPos" DataType="ua:Float" ValueRank="Scalar" Units="mm" SGroup="2" DBand="1" VGroup="P" />
<Variable SymbolicName="FeedRate" BrowseName="FeedRate" DataType="ua:Float" ValueRank="Scalar" Units="m/min" SGroup="4" DBand="1" VGroup="P" />
</Component>
</Component>
<Component Name="OperatingGroups">
</Component>
<Component Name="AuxiliaryGroups">
</Component>
<Component Name="ProductionProcesses">
<Component Name="01">
<Component Name="Programs">
<Component Name="01">
<Variable SymbolicName="Name" BrowseName="Name" DataType="ua:String" ValueRank="Scalar" Units="" />
</Component>
</Component>
</Component>
</Component>
</Machine>
</ModelDesign>
@@ -1,33 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<inputsOperator>
<buttonsListModal>
<simpleModal>
<id>1</id>
<title>
<lang langKey="it">Hai rimosso manualmente anche il pezzo lavorato ?</lang>
<lang langKey="en">Have you also manually removed the workpiece ?</lang>
<lang langKey="it">Attesa carico/scarico lastra</lang>
<lang langKey="en">Waiting sheet load/unload</lang>
</title>
<buttons>
<button>
<value>0</value>
<title>
<lang langKey="it">No</lang>
<lang langKey="en">No</lang>
</title>
</button>
<button>
<value>1</value>
<title>
<lang langKey="it">Si</lang>
<lang langKey="en">Yes</lang>
</title>
</button>
</buttons>
</buttonsListModal>
</simpleModal>
<simpleModal>
<id>2</id>
<title>
<lang langKey="it">DUE Hai rimosso manualmente anche il pezzo lavorato ?</lang>
<lang langKey="en">DUE Have you also manually removed the workpiece ?</lang>
<lang langKey="it">Attesa carico/scarico pezzo</lang>
<lang langKey="en">Waiting piece load/unload</lang>
</title>
</simpleModal>
<simpleModal>
<id>3</id>
<title>
<lang langKey="it">Pausa ciclo attiva</lang>
<lang langKey="en">Pause cycle active</lang>
</title>
</simpleModal>
<simpleModal>
<id>4</id>
<title>
<lang langKey="it">Ciclo parcheggio in corso</lang>
<lang langKey="en">Parking cycle ongoing</lang>
</title>
</simpleModal>
<realValueModal>
@@ -8,6 +8,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>1</priority>
<category>Positions</category>
<subCategory_1>Frame</subCategory_1>
</block>
<block>
<id>2</id>
@@ -44,6 +46,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>1</priority>
<category>Positions</category>
<subCategory_1>Mould</subCategory_1>
</block>
<block>
<id>6</id>
@@ -53,6 +57,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>2</priority>
<category>Heats</category>
<subCategory_1>LowerHeaters</subCategory_1>
</block>
<block>
<id>7</id>
@@ -62,6 +68,8 @@
<idParam>0</idParam>
<showDelay>false</showDelay>
<priority>1</priority>
<category>Heats</category>
<subCategory_1>UpperHeaters</subCategory_1>
</block>
<block>
<id>8</id>
@@ -73,7 +81,6 @@
<priority>3</priority>
<category>Pyrometer</category>
<subCategory_1>Pyrometer</subCategory_1>
<subCategory_2></subCategory_2>
</block>
<block>
<id>9</id>
@@ -83,6 +90,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>4</priority>
<category>Heats</category>
<subCategory_1>DecomSustain</subCategory_1>
</block>
<block>
<id>10</id>
@@ -92,6 +101,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>5</priority>
<category>Cycle</category>
<subCategory_1>AcrylicFrame</subCategory_1>
</block>
<block>
<id>11</id>
@@ -110,6 +121,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>1</priority>
<category>Cycle</category>
<subCategory_1>UpperOverheating</subCategory_1>
</block>
<block>
<id>13</id>
@@ -120,8 +133,6 @@
<showDelay>true</showDelay>
<priority>2</priority>
<category>Drawing</category>
<subCategory_1></subCategory_1>
<subCategory_2></subCategory_2>
</block>
<block>
<id>14</id>
@@ -131,6 +142,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>1</priority>
<category>Positions</category>
<subCategory_1>Mould</subCategory_1>
</block>
<block>
<id>15</id>
@@ -149,6 +162,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>3</priority>
<category>Cooling</category>
<subCategory_1>Blowing</subCategory_1>
</block>
<block>
<id>17</id>
@@ -160,16 +175,17 @@
<priority>4</priority>
<category>Cooling</category>
<subCategory_1>Pyrometer</subCategory_1>
<subCategory_2></subCategory_2>
</block>
<block>
<id>19</id>
<label>MB_Mod_Vuoto</label>
<type>VACUUM</type>
<section>FORMING</section>
<idParam>-1</idParam>
<idParam>189</idParam>
<showDelay>true</showDelay>
<priority>5</priority>
<category>Vacuum</category>
<subCategory_1>Main</subCategory_1>
</block>
<block>
<id>21</id>
@@ -179,6 +195,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>6</priority>
<category>Vacuum</category>
<subCategory_1>Direct</subCategory_1>
</block>
<block>
<id>23</id>
@@ -187,8 +205,9 @@
<section>FORMING</section>
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>7</priority>
<category>Vacuum</category>
<subCategory_1>Aux</subCategory_1>
</block>
<block>
<id>25</id>
@@ -198,6 +217,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>8</priority>
<category>Cooling</category>
<subCategory_1>Nebulizer</subCategory_1>
</block>
<block>
<id>26</id>
@@ -216,6 +237,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>9</priority>
<category>Positions</category>
<subCategory_1>UpperPlate</subCategory_1>
</block>
<block>
<id>29</id>
@@ -225,6 +248,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>9</priority>
<category>UpperPlate</category>
<subCategory_1>Cycle</subCategory_1>
</block>
<block>
<id>30</id>
@@ -234,6 +259,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>9</priority>
<category>Positions</category>
<subCategory_1>UpperPlate</subCategory_1>
</block>
<block>
<id>31</id>
@@ -243,6 +270,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>10</priority>
<category>UpperPlate</category>
<subCategory_1>Air</subCategory_1>
</block>
<block>
<id>33</id>
@@ -252,6 +281,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>11</priority>
<category>UpperPlate</category>
<subCategory_1>Vacuum</subCategory_1>
</block>
<block>
<id>34</id>
@@ -279,6 +310,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>10</priority>
<category>UpperPlate</category>
<subCategory_1>Extraction</subCategory_1>
</block>
<block>
<id>38</id>
@@ -297,6 +330,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>2</priority>
<category>Extraction</category>
<subCategory_1>Main</subCategory_1>
</block>
<block>
<id>40</id>
@@ -306,6 +341,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>1</priority>
<category>Positions</category>
<subCategory_1>Mould</subCategory_1>
</block>
<block>
<id>41</id>
@@ -324,6 +361,8 @@
<idParam>-1</idParam>
<showDelay>false</showDelay>
<priority>1</priority>
<category>Positions</category>
<subCategory_1>Frame</subCategory_1>
</block>
<block>
<id>43</id>
@@ -360,6 +399,8 @@
<idParam>-1</idParam>
<showDelay>true</showDelay>
<priority>6</priority>
<category>Vacuum</category>
<subCategory_1>Pre</subCategory_1>
</block>
<block>
<id>47</id>
File diff suppressed because it is too large Load Diff
+34 -36
View File
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<serverConfig>
<ncConfig>
<ncVendor>S7NET</ncVendor>
<!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
<ncVendor>S7NET</ncVendor> <!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
<showNcHMI>false</showNcHMI>
<ncIpAddress>192.168.0.102</ncIpAddress>
<ncPort>102</ncPort>
@@ -28,36 +27,22 @@
<textEditorPath>C:\Windows\System32\notepad.exe</textEditorPath>
<MTCFolderPath>C:\CMS\MTC\ADAPTER\</MTCFolderPath>
<MTCApplicationName>SCMA</MTCApplicationName>
<CMSConnectReady>false</CMSConnectReady>
<CMSConnectReady>true</CMSConnectReady>
<maxAlarmsRows>50000</maxAlarmsRows>
<alarmToDelete>5000</alarmToDelete>
</serverConfig>
<extSoftwares>
<software>
<longName>Calculator</longName>
<shortName>CAL</shortName>
<path>C:\Windows\System32\calc.exe</path>
<arguments></arguments>
<inMainMenuBar>true</inMainMenuBar>
</software>
<software>
<longName>NotePad</longName>
<shortName>NP</shortName>
<path>C:\Windows\System32\notepad.exe</path>
<arguments></arguments>
<inMainMenuBar>true</inMainMenuBar>
</software>
<software>
<longName>MsPaint</longName>
<shortName>PA</shortName>
<path>C:\Windows\System32\mspaint.exe</path>
<longName>HC-DIAG2</longName>
<shortName>HD2</shortName>
<path>C:\Program Files (x86)\HC-DIAG2\HC-DIAG2.exe</path>
<arguments></arguments>
<inMainMenuBar>false</inMainMenuBar>
</software>
<software>
<longName>NotePad2</longName>
<shortName>NP2</shortName>
<path>C:\Windows\System32\notepad.exe</path>
<longName>Calc</longName>
<shortName>NP</shortName>
<path>C:\Windows\System32\calc.exe</path>
<arguments></arguments>
<inMainMenuBar>false</inMainMenuBar>
</software>
@@ -81,7 +66,7 @@
</entry>
<entry>
<key>warmerAutocompStartValue</key>
<value>30</value>
<value>50</value>
</entry>
<entry>
<key>warmerAutocompStep</key>
@@ -89,21 +74,34 @@
</entry>
<entry>
<key>LoaderXsize</key>
<value>1900</value>
<value>1400</value>
</entry>
<entry>
<key>ThermoCameraXpos</key>
<value>68</value>
</entry>
<entry>
<key>ThermoCameraYpos</key>
<value>728</value>
</entry>
<entry>
<key>ThermoCameraXdim</key>
<value>828</value>
</entry>
<entry>
<key>ThermoCameraYdim</key>
<value>1004</value>
</entry>
</additionalParameters>
<unitOfMeasures>
<unitOfMeasure id="0" value="" />
<unitOfMeasure id="1" value="%" />
<unitOfMeasure id="2" value="mm" />
<unitOfMeasure id="1" value="mm" />
<unitOfMeasure id="2" value="Nm" />
<unitOfMeasure id="3" value="°C" />
<unitOfMeasure id="4" value="Nm" />
<unitOfMeasure id="5" value="Bar" />
<unitOfMeasure id="6" value="mm/s" />
<unitOfMeasure id="7" value="mm/10" />
<unitOfMeasure id="8" value="Bar/10" />
<unitOfMeasure id="9" value="°C/10" />
<unitOfMeasure id="10" value="Nm/10" />
<unitOfMeasure id="4" value="mm/s" />
<unitOfMeasure id="5" value="ms" />
<unitOfMeasure id="6" value="s" />
<unitOfMeasure id="7" value="%" />
</unitOfMeasures>
<sampling>
<thread name="alarms" value="200" />
@@ -118,13 +116,13 @@
<thread name="powerOn" value="500" />
<thread name="prodCycle" value="1000" />
<thread name="prodInfo" value="1000" />
<thread name="prodPanel" value="1000" />
<thread name="prodPanel" value="500" />
<thread name="modules" value="200" />
<thread name="recipe" value="400" />
<thread name="scada" value="1000" />
<thread name="statusCommand" value="250" />
<thread name="userSK" value="250" />
<thread name="warmers" value="1500" />
<thread name="warmers" value="500" />
<thread name="watchdog" value="250" />
</sampling>
</serverConfig>
@@ -18,7 +18,7 @@
<scaleFactor>1000</scaleFactor>
<numDec>1</numDec>
<minVal>0</minVal>
<maxVal>5000000</maxVal>
<maxVal>2000000</maxVal>
</parameter>
<parameter>
<category>GAUGE</category>
@@ -2,7 +2,7 @@
<userSoftKeys>
<softKey_procedure>
<active>true</active>
<active>false</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>1</plcId>
@@ -22,7 +22,7 @@
<lang langKey="en">Refresh alarms</lang>
<lang langKey="it">Refresh allarmi</lang>
</localizedNames>
<visible>true</visible>
<visible>false</visible>
</softKey_procedure>
<softKey_procedure>
@@ -114,7 +114,6 @@
<lang langKey="it">Pompe vuoto</lang>
</localizedNames>
<visible>true</visible>
<starred>true</starred>
</softKey_procedure>
<softKey_procedure>
@@ -123,20 +122,20 @@
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>10</plcId>
<localizedNames>
<lang langKey="en">Last cycle</lang>
<lang langKey="it">Ultimo ciclo</lang>
<lang langKey="en">Last load</lang>
<lang langKey="it">Ultimo carico</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>false</active>
<active>true</active>
<category>10</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>11</plcId>
<localizedNames>
<lang langKey="en">START Cycle</lang>
<lang langKey="it">START Ciclo</lang>
<lang langKey="en">Gantry realignment</lang>
<lang langKey="it">Riallineamento gantry</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
@@ -427,7 +426,18 @@
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>35</plcId>
<localizedNames>
<lang langKey="en">Heating pyrometer</lang>
<lang langKey="it">Pirometro riscaldo</lang>
</localizedNames>
<visible>true</visible>
<starred>true</starred>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
@@ -435,8 +445,8 @@
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>36</plcId>
<localizedNames>
<lang langKey="en">Dashboard Setpoint Plus</lang>
<lang langKey="it">Dashboard Setpoint Plus</lang>
<lang langKey="en">Pyrometer +1</lang>
<lang langKey="it">Pirometro +1</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>dash_setpoint_plus</refCallParam>
@@ -449,8 +459,8 @@
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>37</plcId>
<localizedNames>
<lang langKey="en">Dashboard Setpoint Minus</lang>
<lang langKey="it">Dashboard Setpoint Minus</lang>
<lang langKey="en">Pyrometer -1</lang>
<lang langKey="it">Pirometro -1</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>dash_setpoint_minus</refCallParam>
+3
View File
@@ -65,6 +65,9 @@ namespace Thermo.Active.Config
public static List<RiskChannelModel> RiskChannelConfig;
public static List<RiskBoardModel> RiskBoardConfig;
public static List<AxesConfigModel> AxesConfig;
public static Dictionary<string,string> CMSConnectEntry;
public static string CMSConnectDataModel;
}
@@ -5,6 +5,7 @@ using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Xml;
using System.Xml.Linq;
@@ -43,6 +44,7 @@ namespace Thermo.Active.Config
ReadMacros();
ReadScadaFile();
ReadM156();
ReadDataModel();
}
catch (XmlException ex)
{
@@ -86,6 +88,14 @@ namespace Thermo.Active.Config
return xmlConfigFile;
}
private static XDocument GetXmlHandler(string configFilePath, bool isFullPath = false)
{
// Open file reader
XDocument xmlConfigFile = XDocument.Load((!isFullPath ? BASE_PATH + "\\" : "") + configFilePath);
return xmlConfigFile;
}
private static void validateScada(string configSchemaFilePath, string configFilePath)
{
// Create new instance
@@ -281,7 +291,33 @@ namespace Thermo.Active.Config
})
.ToList();
}
private static void ReadDataModel()
{
XDocument xmlConfigFile = GetXmlHandler(CONNECT_DATAMODEL_CONFIG_PATH);
XElement el = xmlConfigFile.Descendants("Machine").First();
CMSConnectEntry = new Dictionary<string, string>();
ElaborateDataModel(el,el.Name.LocalName, ref CMSConnectEntry);
CMSConnectDataModel = File.ReadAllText(CONNECT_DATAMODEL_CONFIG_PATH);
}
private static void ElaborateDataModel(XElement el, string Parent, ref Dictionary<string, string> Paths)
{
List<XElement> intEl = el.Elements().ToList();
foreach (XElement elem in intEl)
{
if (elem.Name.LocalName == "Component")
ElaborateDataModel(elem, Parent + ":" + elem.Attribute("Name").Value, ref Paths);
else if(elem.Name.LocalName == "Property")
Paths.Add(Parent + ":" + elem.Attribute("SymbolicName").Value, elem.Attribute("Value").Value);
else
{
if(elem.Attribute("SymbolicName") != null && elem.Attribute("SymbolicName").Value == "Condition")
Paths.Add(Parent + ":" + elem.Attribute("SymbolicName").Value, "");
else
Paths.Add(Parent + ":" + elem.Attribute("SymbolicName").Value, "UNAVAILABLE");
}
}
}
public static string GetInputOperatoType(string tagName)
{
@@ -51,6 +51,9 @@
<Content Include="Config\axesConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\DataModel.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\inputOperatorConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+18
View File
@@ -1140,6 +1140,24 @@ public static class ThreadsFunctions
NcAdapter ncAdapter = new NcAdapter();
try
{
//Write all the datamodel
if (!RedisController.WriteDatamodel(CMSConnectDataModel))
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
//Write all the default entries
if (!RedisController.WriteDefaultEntry(CMSConnectEntry))
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
//Write the Active Version
if (!RedisController.WriteActiveVersion(SupportFunctions.GetSoftwareVersionAndBuildDate()))
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
//Write the Overrides
if (!RedisController.WriteFakeOverrides(1))
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
List<DTOLanguageModel> availableLanguages = LanguageController.GetLanguageListFromDirectory();
if (availableLanguages == null)
return;
-8
View File
@@ -38,7 +38,6 @@ namespace Thermo.Active.Core
ThreadsFunctions.ReadM154Data // levare?
};
private static Action ThreadSetupCmsConnect = ThreadsFunctions.SetupCmsConnect;
private volatile static List<Thread> RunningThreadsList = new List<Thread>();
public static Thread StartClient;
@@ -48,13 +47,6 @@ namespace Thermo.Active.Core
public static void Start()
{
ThreadsFunctions.RestoreConnection();
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady)
{
Thread t = new Thread(() => ThreadSetupCmsConnect());
t.Start();
Thread.Sleep(30);
}
}
public static void StartWorkers()
+32
View File
@@ -6,6 +6,38 @@
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.10.4.0" newVersion="6.10.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.2" newVersion="4.0.2.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.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>
</configuration>
+32
View File
@@ -25,6 +25,38 @@
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.10.4.0" newVersion="6.10.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.2" newVersion="4.0.2.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.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>
</configuration>
@@ -1,5 +1,7 @@
using System.Collections.Generic;
using Thermo.Active.Database.Redis;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.Model.DTOModels.ThAxes;
namespace Thermo.Active.Database.Controllers
{
@@ -12,6 +14,26 @@ namespace Thermo.Active.Database.Controllers
private const string redisAlmCurr = "AdpConf:Plc:Condition:Curr";
private const string redisAlmIt = "AdpConf:Plc:Condition:It";
private const string redisAlmEn = "AdpConf:Plc:Condition:En";
private const string currentUserPath = "Machine:Hmi:User";
private const string machineMessagePath = "Machine:Messages";
private const string machineStatusPath = "Machine:Status";
private const string machinePowerPath = "Machine:Power";
private const string machineAlarmPath = "Machine:Alarm";
private const string machineEmergencyPath = "Machine:Emergency";
private const string alarmsPath = "Machine:Plc:Condition";
private const string processStatusPath = "Machine:Cnc:CncProcesses:%NN%:Status";
private const string processModePath = "Machine:Cnc:CncProcesses:%NN%:Mode";
private const string processFeedOverridePath = "Machine:Cnc:CncProcesses:%NN%:FeedOverride";
private const string processRapidOverridePath = "Machine:Cnc:CncProcesses:%NN%:RapidOverride";
private const string processSpeedOverridePath = "Machine:Cnc:CncProcesses:%NN%:SpeedOverride";
private const string datamodelPath = "AdpConf:DataModel";
private const string currentActiveVersionPath = "Machine:Hmi:Version";
private const string machineAxisPosition = "Machine:Axes:%NN%:CurrentPos";
private const string machineAxisSpeed = "Machine:Axes:%NN%:FeedRate";
private const string machineAxisLoad = "Machine:Axes:%NN%:Load";
private const string machineAxisName = "Machine:Axes:%NN%:Name";
private const string machineEventKpis = "Machine:Events:Kpis";
public static void WriteProductionNotification(uint ProductionProcess, string Notification)
{
@@ -49,12 +71,141 @@ namespace Thermo.Active.Database.Controllers
return redUtil.man.redSaveHashDict(redisHash, alarms);
}
public static bool WriteDatamodel(string datamodel)
{
string redisHash = redUtil.man.redHash(datamodelPath);
return redUtil.man.setRSV(redisHash, datamodel.ToString());
}
public static bool WriteDefaultEntry(Dictionary<string, string> entries)
{
foreach (KeyValuePair<string,string> entry in entries)
{
if (!redUtil.man.setRSV(redUtil.man.redHash(entry.Key), entry.Value))
return false;
}
return true;
}
public static bool WriteAlarmsConfigIt(Dictionary<string, string> alarms)
{
string redisHash = redUtil.man.redHash(redisAlmIt);
return redUtil.man.redSaveHashDict(redisHash, alarms);
}
public static bool WriteCurrentUser(string User)
{
string redisHash = redUtil.man.redHash(currentUserPath);
return redUtil.man.setRSV(redisHash, User.ToString());
}
public static bool WriteActiveVersion(string version)
{
string redisHash = redUtil.man.redHash(currentActiveVersionPath);
return redUtil.man.setRSV(redisHash, version.ToString());
}
public static bool SendMessage(DTOMessageModel message)
{
string redisHash = redUtil.man.redHash(machineMessagePath);
return redUtil.man.setJson(redisHash, message);
}
public static bool WriteCurrentMachineStatus(string status)
{
string redisHash = redUtil.man.redHash(machineStatusPath);
return redUtil.man.setRSV(redisHash, status.ToString());
}
public static bool WriteCurrentProcessStatus(uint ProductionProcess, string status)
{
string redisHash = redUtil.man.redHash(processStatusPath).Replace("%NN%", ProductionProcess.ToString("00"));
return redUtil.man.setRSV(redisHash, status.ToString());
}
public static bool WriteCurrentProcessMode(uint ProductionProcess, string status)
{
string redisHash = redUtil.man.redHash(processModePath).Replace("%NN%", ProductionProcess.ToString("00"));
return redUtil.man.setRSV(redisHash, status.ToString());
}
public static bool WriteFakeOverrides(uint ProductionProcess)
{
string redisHash = redUtil.man.redHash(processFeedOverridePath).Replace("%NN%", ProductionProcess.ToString("00"));
if (!redUtil.man.setRSV(redisHash, "100"))
return false;
redisHash = redUtil.man.redHash(processRapidOverridePath).Replace("%NN%", ProductionProcess.ToString("00"));
if (!redUtil.man.setRSV(redisHash, "100"))
return false;
redisHash = redUtil.man.redHash(processSpeedOverridePath).Replace("%NN%", ProductionProcess.ToString("00"));
if(!redUtil.man.setRSV(redisHash, "100"))
return false;
return true;
}
public static bool WriteCurrentMachinePowerPath(bool status)
{
string redisHash = redUtil.man.redHash(machinePowerPath);
if(status)
return redUtil.man.setRSV(redisHash, "true");
else
return redUtil.man.setRSV(redisHash, "false");
}
public static bool WriteCurrentMachineAlarmPath(bool status)
{
string redisHash = redUtil.man.redHash(machineAlarmPath);
if (status)
return redUtil.man.setRSV(redisHash, "true");
else
return redUtil.man.setRSV(redisHash, "false");
}
public static bool WriteCurrentMachineEmergencyPath(bool status)
{
string redisHash = redUtil.man.redHash(machineEmergencyPath);
if (status)
return redUtil.man.setRSV(redisHash, "true");
else
return redUtil.man.setRSV(redisHash, "false");
}
public static bool WriteCurrentAlarms(string alarms)
{
string redisHash = redUtil.man.redHash(alarmsPath);
return redUtil.man.setRSV(redisHash, alarms);
}
public static bool WriteMachineEventKpis(string alarms)
{
string redisHash = redUtil.man.redHash(machineEventKpis);
redUtil.man.ListPush(redisHash, alarms);
return true;
}
public static bool WriteCurrentAxisStatus(Dictionary<int, DTOAxisInfoModel> axis)
{
foreach(KeyValuePair<int, DTOAxisInfoModel> asse in axis)
{
string redisHash = redUtil.man.redHash(machineAxisName).Replace("%NN%", asse.Value.ID.ToString("00"));
if(redUtil.man.getRSV(redisHash) != null)
{
redisHash = redUtil.man.redHash(machineAxisPosition).Replace("%NN%", asse.Value.ID.ToString("00"));
if (!redUtil.man.setRSV(redisHash, asse.Value.position.ToString()))
return false;
redisHash = redUtil.man.redHash(machineAxisSpeed).Replace("%NN%", asse.Value.ID.ToString("00"));
if (!redUtil.man.setRSV(redisHash, asse.Value.speed.ToString()))
return false;
redisHash = redUtil.man.redHash(machineAxisLoad).Replace("%NN%", asse.Value.ID.ToString("00"));
if (!redUtil.man.setRSV(redisHash, asse.Value.load.ToString()))
return false;
}
}
return true;
}
}
}
+90
View File
@@ -1,4 +1,6 @@

using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using NLog;
using StackExchange.Redis;
using System;
@@ -199,6 +201,29 @@ namespace Thermo.Active.Database.Redis
/// </summary>
/// <param name="chiave"></param>
/// <returns></returns>
///
/// <summary>
/// Scrive un oggtto json in Redis
/// </summary>
/// <param name="chiave"></param>
/// <returns></returns>
public bool setJson(string chiave, object valore)
{
try
{
string json = JsonConvert.SerializeObject(valore, new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
return setRSV(chiave, json);
}
catch
{
return false;
}
}
public long setRCntI(string chiave)
{
long answ = 0;
@@ -801,5 +826,70 @@ namespace Thermo.Active.Database.Redis
#endregion
#region gestione Stack / List
/// <summary>
/// Lunghezza Stack
/// </summary>
/// <param name="stackName"></param>
/// <returns></returns>
public long StackLen(string stackName)
{
return connRedis.GetDatabase().ListLength((RedisKey)stackName);
}
/// <summary>
/// Mette in Stack un valore (F.I.L.O.)
/// </summary>
/// <param name="stackName"></param>
/// <param name="value"></param>
public void StackPush(string stackName, string value)
{
connRedis.GetDatabase().ListRightPush((RedisKey)stackName, (RedisValue)value);
}
/// <summary>
/// Recupera valore da Stack (F.I.L.O.)
/// </summary>
/// <param name="stackName"></param>
/// <returns></returns>
public string StackPop(string stackName)
{
return connRedis.GetDatabase().ListRightPop((RedisKey)stackName).ToString();
}
/// <summary>
/// Lunghezza List
/// </summary>
/// <param name="queueName"></param>
/// <returns></returns>
public long ListLen(string queueName)
{
return connRedis.GetDatabase().ListLength((RedisKey)queueName);
}
/// <summary>
/// Mette un valore in List (F.I.F.O.)
/// </summary>
/// <param name="queueName"></param>
/// <returns></returns>
public void ListPush(string queueName, string value)
{
connRedis.GetDatabase().ListRightPush((RedisKey)queueName, (RedisValue)value);
}
/// <summary>
/// Recupera valore da List (F.I.F.O.)
/// </summary>
/// <param name="queueName"></param>
/// <returns></returns>
public string ListPop(string queueName)
{
return connRedis.GetDatabase().ListLeftPop((RedisKey)queueName).ToString();
}
#endregion gestione Stack / List
}
}
@@ -50,6 +50,9 @@
<Reference Include="Microsoft.AspNet.Identity.EntityFramework, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.1\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="MySql.Data">
<HintPath>..\packages\MySql.Data.6.10.4\lib\net452\MySql.Data.dll</HintPath>
<Private>True</Private>
@@ -57,47 +60,55 @@
<Reference Include="MySql.Data.Entity.EF6, Version=6.9.10.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.Entity.6.9.10\lib\net45\MySql.Data.Entity.EF6.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.5.11\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.6.7\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="Pipelines.Sockets.Unofficial, Version=1.0.0.0, Culture=neutral, PublicKeyToken=42ea0a778e13fbe2, processorArchitecture=MSIL">
<HintPath>..\packages\Pipelines.Sockets.Unofficial.1.0.7\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.1.16\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
</Reference>
<Reference Include="StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46, processorArchitecture=MSIL">
<HintPath>..\packages\StackExchange.Redis.2.0.519\lib\net461\StackExchange.Redis.dll</HintPath>
<HintPath>..\packages\StackExchange.Redis.2.1.58\lib\net461\StackExchange.Redis.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.PerformanceCounter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.4.5.0\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
<Reference Include="System.Diagnostics.PerformanceCounter, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.4.7.0\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Pipelines, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.4.5.1\lib\netstandard2.0\System.IO.Pipelines.dll</HintPath>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.1\lib\netstandard2.0\System.Memory.dll</HintPath>
<Reference Include="System.IO.Pipelines, Version=4.0.2.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.4.7.3\lib\net461\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Threading.Channels, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Channels.4.5.0\lib\netstandard2.0\System.Threading.Channels.dll</HintPath>
<Reference Include="System.Threading.Channels, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Channels.4.7.1\lib\net461\System.Threading.Channels.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.Web.Helpers.Crypto, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+15 -11
View File
@@ -3,18 +3,22 @@
<package id="EntityFramework" version="6.2.0" targetFramework="net462" />
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net461" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net461" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.1" targetFramework="net462" />
<package id="MySql.Data" version="6.10.4" targetFramework="net462" />
<package id="MySql.Data.Entity" version="6.9.10" targetFramework="net462" />
<package id="NLog" version="4.5.11" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="1.0.7" targetFramework="net462" />
<package id="StackExchange.Redis" version="2.0.519" targetFramework="net462" />
<package id="System.Buffers" version="4.4.0" targetFramework="net462" />
<package id="System.Diagnostics.PerformanceCounter" version="4.5.0" targetFramework="net462" />
<package id="System.IO.Pipelines" version="4.5.1" targetFramework="net462" />
<package id="System.Memory" version="4.5.1" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.0" targetFramework="net462" />
<package id="System.Threading.Channels" version="4.5.0" targetFramework="net462" />
<package id="System.Threading.Tasks.Extensions" version="4.5.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
<package id="NLog" version="4.6.7" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="2.1.16" targetFramework="net462" />
<package id="StackExchange.Redis" version="2.1.58" targetFramework="net462" />
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
<package id="System.Diagnostics.PerformanceCounter" version="4.7.0" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
<package id="System.IO.Pipelines" version="4.7.3" targetFramework="net462" />
<package id="System.Memory" version="4.5.4" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.1" targetFramework="net462" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
<package id="System.Threading.Channels" version="4.7.1" targetFramework="net462" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
<package id="System.Web.Helpers.Crypto" version="3.2.3" targetFramework="net462" />
</packages>
+3
View File
@@ -268,6 +268,9 @@ namespace Thermo.Active.Model
public const string M156_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "inputOperatorConfigValidator.xsd";
public const string M156_CONFIG_PATH = CONFIG_DIRECTORY + "inputOperatorConfig.xml";
public const string CONNECT_DATAMODEL_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "dataModelConfigValidator.xsd";
public const string CONNECT_DATAMODEL_CONFIG_PATH = CONFIG_DIRECTORY + "DataModel.xml";
public const string MAINTENANCES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "maintenancesConfigValidator.xsd";
public const string CUSTOMER_CONTACTS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "customerContactConfigValidator.xsd";
public const string MAINTENANCES_CONFIG_PATH = CONFIG_DIRECTORY + "maintenancesConfig.xml";
@@ -0,0 +1,19 @@
using System;
namespace Thermo.Active.Model.DTOModels
{
public class DTOMessageModel
{
public string Message { get; set; }
public int EstimateTime { get; set; }
public string Department { get; set; }
public DateTime TimeStamp { get; set; }
public string UserId { get; set; }
public Guid Id { get; set; }
}
}
@@ -9,13 +9,15 @@ namespace Thermo.Active.Model.DTOModels.ThProd
{
public short NumTarget { get; set; } = 0;
public short NumDone { get; set; } = 0;
public DateTime InizioProd { get; set; } = DateTime.Now;
public short NumPreHot { get; set; } = 0;
public DateTime? InizioProd { get; set; } = null;
public double StimaDurata { get; set; } = 0;
public double TempAct { get; set; } = 0;
public double TempSetpoint { get; set; } = 0;
public string NomeRicetta { get; set; } = "";
public double LastCadenza { get; set; } = 0;
public double LastTCiclo { get; set; } = 0;
public double LastTCicloNetto { get; set; } = 0;
public Dictionary<int, double> TS_Cadenza { get; set; } = new Dictionary<int, double>();
public Dictionary<int, double> TS_TCiclo { get; set; } = new Dictionary<int, double>();
@@ -28,6 +30,8 @@ namespace Thermo.Active.Model.DTOModels.ThProd
return false;
if (NumDone != item.NumDone)
return false;
if (NumPreHot != item.NumPreHot)
return false;
if (InizioProd != item.InizioProd)
return false;
if (Math.Round(Math.Abs(StimaDurata - item.StimaDurata), 1) >= Constants.EPSILON)
@@ -42,6 +46,8 @@ namespace Thermo.Active.Model.DTOModels.ThProd
return false;
if (Math.Round(Math.Abs(LastTCiclo - item.LastTCiclo), 1) >= Constants.EPSILON)
return false;
if (Math.Round(Math.Abs(LastTCicloNetto - item.LastTCicloNetto), 1) >= Constants.EPSILON)
return false;
if (!Enumerable.SequenceEqual(TS_Cadenza, item.TS_Cadenza))
return false;
if (!Enumerable.SequenceEqual(TS_TCiclo, item.TS_TCiclo))
@@ -22,7 +22,8 @@ namespace Thermo.Active.Model.DTOModels.ThProd
if (!Category.Equals(item.Category))
return false;
if (Math.Round(Math.Abs(Value - item.Value), 1) >= Constants.EPSILON)
// poiché il vuoto è con 2 decimali serve 10 volte risoluzione risp altro...
if (Math.Round(Math.Abs(Value - item.Value), 2) >= Constants.EPSILON / 10)
return false;
if (Name != item.Name)
return false;
@@ -2,8 +2,17 @@
{
public class DTOWarmers
{
/// <summary>
/// Channel Unique ID (from risk2007)
/// </summary>
public int IdChannel { get; set; } = 0;
/// <summary>
/// Reflector ID
/// </summary>
public int IdReflector { get; set; } = 0;
/// <summary>
/// Setpoint from HMI (%)
/// </summary>
public int SetpointHMI { get; set; } = 0;
public int SetpointTermocam { get; set; } = 0;
public int SetpointPLC { get; set; } = 0;
@@ -46,7 +46,8 @@
<HintPath>..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
@@ -108,6 +109,7 @@
<Compile Include="DTOModels\DTOAxesModel.cs" />
<Compile Include="DTOModels\DTOClientConfigurationModel.cs" />
<Compile Include="DTOModels\DTOM156InputModel.cs" />
<Compile Include="DTOModels\DTOMessageModel.cs" />
<Compile Include="DTOModels\ThAxes\DTOAxisInfoModel.cs" />
<Compile Include="DTOModels\ThModules\DTOModulesBlock.cs" />
<Compile Include="DTOModels\ThProd\DTOProdInfo.cs" />
+1 -1
View File
@@ -3,5 +3,5 @@
<package id="EntityFramework" version="6.2.0" targetFramework="net462" />
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net462" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
</packages>
+88 -59
View File
@@ -48,10 +48,18 @@ namespace Thermo.Active.NC
/// </summary>
protected DateTime lastProdEnd;
/// <summary>
/// Ultimo ciclo registrato(secondi)
/// Ultimo ciclo registrato (secondi)
/// </summary>
protected double lastCycle = 9999;
/// <summary>
/// Ultimo ciclo NETTO registrato (secondi)
/// </summary>
protected double lastCycleNet = 9999;
/// <summary>
/// Indica che per i dati del prodPanel è necessario rileggere il DB (modificato)
/// </summary>
protected static bool forceProdPanelDbReload = false;
/// <summary>
/// Recipe Live data
/// </summary>
public static LiveData RecipeLiveData = new LiveData();
@@ -1499,7 +1507,11 @@ namespace Thermo.Active.NC
return libraryError;
}
/// <summary>
/// Lettura dati ProdPanel
/// </summary>
/// <param name="currentProdPanel"></param>
/// <returns></returns>
public CmsError ReadProdPanel(out DTOThermoPanelProd currentProdPanel)
{
// preparo oggetti OUT
@@ -1510,11 +1522,6 @@ namespace Thermo.Active.NC
bool dataChanged = false;
int numTcOk = 0;
// inizio da ncAdapter.lottoStart
if (lottoStart > currentProdPanel.InizioProd)
{
currentProdPanel.InizioProd = lottoStart;
}
// dati ricetta da live
currentProdPanel.NomeRicetta = NcFileAdapter.RecipeLiveData.RecipeName;
// se NON HO dati già letti --> cambiati devo rileggere
@@ -1543,7 +1550,8 @@ namespace Thermo.Active.NC
}
bool changeNumPz = LastProdPanelData.NumDone != lastProdInfoData.NumDone;
bool changeNumTarget = lastProdInfoData.NumTarget != LastProdPanelData.NumTarget;
dataChanged = changeNumPz || changeSetpoint || changeNumTarget;
bool changeNumPreHot = lastProdInfoData.NumPreHot != LastProdPanelData.NumPreHot;
dataChanged = changeNumPz || changeSetpoint || changeNumTarget || changeNumPreHot || forceProdPanelDbReload;
}
}
if (dataChanged)
@@ -1553,39 +1561,7 @@ namespace Thermo.Active.NC
{
currentProdPanel.NumDone = lastProdInfoData.NumDone;
currentProdPanel.NumTarget = lastProdInfoData.NumTarget;
currentProdPanel.LastTCiclo = Math.Round((double)lastProdInfoData.TimeCycleGross / 1000, 2);
if (lastProdInfoData.TimeCycleGross > 0)
{
currentProdPanel.LastCadenza = Math.Round((double)3600000 / lastProdInfoData.TimeCycleGross, 2);
}
// se NON HO un last value...
if (lastCycle == 0)
{
lastCycle = currentProdPanel.LastTCiclo;
}
// se il valore SALVATO è > 3 * valore rilevato --> uso SOLO ultimo
else if (lastCycle > 3 * currentProdPanel.LastTCiclo)
{
lastCycle = currentProdPanel.LastTCiclo;
}
// altrimenti EWMA da parametro calcolato standard, default 50%
else
{
//lastCycle = 0.5 * lastCycle + 0.5 * lastDuration;
lastCycle = ewmaLambda * currentProdPanel.LastTCiclo + (1 - ewmaLambda) * lastCycle;
}
// salvo anche nei live data della ricetta...
RecipeLiveData.TC_last = lastCycle;
// stima durata da pz fatti... SOLO SE il NumTarget è > 0
currentProdPanel.StimaDurata = 0;
if (currentProdPanel.NumTarget > 0)
{
// 2020.09.03 uso dati da ricetta corrente... stimata con EWMA, in SECONDI!
currentProdPanel.StimaDurata = Math.Round((currentProdPanel.NumTarget - currentProdPanel.NumDone) * lastCycle, 2) / 60;
}
// se stima negativa (+ pezzi di quanti richiesti...) --> ZERO!
currentProdPanel.StimaDurata = currentProdPanel.StimaDurata < 0 ? 0 : currentProdPanel.StimaDurata;
currentProdPanel.NumPreHot = lastProdInfoData.NumPreHot;
}
// dai parametri sistemo i setpoints
if (lastRecipe != null)
@@ -1599,10 +1575,60 @@ namespace Thermo.Active.NC
// dal DB recupero i dati dei TC storici... cablato a last 30 x ora... ma CALCOLO SOLO i cicli "positivi" = NON i riscaldi...
if (currentProdPanel.NumDone > 0)
{
// parto dai dati di lastProdInfoData...
if (lastProdInfoData != null)
{
currentProdPanel.LastTCiclo = Math.Round((double)lastProdInfoData.TimeCycleGross / 1000, 2);
if (lastProdInfoData.TimeCycleGross > 0)
{
currentProdPanel.LastCadenza = Math.Round((double)3600000 / lastProdInfoData.TimeCycleGross, 2);
}
// 2020.10.19 aggiungo TCicloNetto
currentProdPanel.LastTCicloNetto = Math.Round((double)lastProdInfoData.TimeCycleNet / 1000, 2);
// se NON HO un last value...
if (lastCycle == 0)
{
lastCycle = currentProdPanel.LastTCiclo;
lastCycleNet = currentProdPanel.LastTCicloNetto;
}
// se il valore SALVATO è > 3 * valore rilevato --> uso SOLO ultimo
else if (lastCycle > 3 * currentProdPanel.LastTCiclo)
{
lastCycle = currentProdPanel.LastTCiclo;
lastCycleNet = currentProdPanel.LastTCicloNetto;
}
// altrimenti EWMA da parametro calcolato standard, default 50%
else
{
//lastCycle = 0.5 * lastCycle + 0.5 * lastDuration;
lastCycle = ewmaLambda * currentProdPanel.LastTCiclo + (1 - ewmaLambda) * lastCycle;
lastCycleNet = ewmaLambda * currentProdPanel.LastTCicloNetto + (1 - ewmaLambda) * lastCycleNet;
// sistemo ponderato il ciclo netto rilevato
currentProdPanel.LastTCicloNetto = lastCycleNet;
}
// salvo anche nei live data della ricetta...
RecipeLiveData.TC_last = lastCycle;
// stima durata da pz fatti... SOLO SE il NumTarget è > 0
currentProdPanel.StimaDurata = 0;
if (currentProdPanel.NumTarget > 0)
{
// 2020.09.03 uso dati da ricetta corrente... stimata con EWMA, in SECONDI!
currentProdPanel.StimaDurata = Math.Round((currentProdPanel.NumTarget - currentProdPanel.NumDone) * lastCycle, 2) / 60;
}
// se stima negativa (+ pezzi di quanti richiesti...) --> ZERO!
currentProdPanel.StimaDurata = currentProdPanel.StimaDurata < 0 ? 0 : currentProdPanel.StimaDurata;
}
libraryError = GetHistProdInfoDataDesc(out List<ThermoModels.ProdInfoModel> prodInfoDataList, currentProdPanel.NumDone, numRecProdPanelGraph);
// se ci sono dati --> creo le 2 TS!
if (prodInfoDataList != null)
{
// annullo richiesta reload Db (eventuale)
forceProdPanelDbReload = false;
// ciclo
foreach (var item in prodInfoDataList)
{
if (TS_TC.ContainsKey(item.NumDone))
@@ -1635,12 +1661,15 @@ namespace Thermo.Active.NC
// cerco in ordine INVERSO
libraryError = GetHistProdInfoDataAsc(out List<ThermoModels.ProdInfoModel> prodInfoFirstAsc, 1, 1);
// se ci sono dati --> fix start
ThermoModels.ProdInfoModel dataRecord = new ThermoModels.ProdInfoModel();
if (prodInfoFirstDesc != null && prodInfoFirstDesc.Count > 0)
{
try
{
currentProdPanel.InizioProd = prodInfoFirstDesc.FirstOrDefault().DtEvent;
lottoStart = currentProdPanel.InizioProd;
// sottraggo ad inizio il tempo ciclo in secondi...
dataRecord = prodInfoFirstDesc.FirstOrDefault();
currentProdPanel.InizioProd = dataRecord.DtEvent.AddSeconds(-dataRecord.TimeCycleGross / 1000);
lottoStart = currentProdPanel.InizioProd != null ? Convert.ToDateTime(currentProdPanel.InizioProd) : lottoStart;
}
catch
{ }
@@ -1649,8 +1678,9 @@ namespace Thermo.Active.NC
{
try
{
currentProdPanel.InizioProd = prodInfoFirstAsc.FirstOrDefault().DtEvent;
lottoStart = currentProdPanel.InizioProd;
dataRecord = prodInfoFirstAsc.FirstOrDefault();
currentProdPanel.InizioProd = dataRecord.DtEvent.AddSeconds(-dataRecord.TimeCycleGross / 1000);
lottoStart = currentProdPanel.InizioProd != null ? Convert.ToDateTime(currentProdPanel.InizioProd) : lottoStart;
}
catch
{ }
@@ -1675,7 +1705,6 @@ namespace Thermo.Active.NC
/// <returns></returns>
public CmsError ReadProdInfoData(out DTOProdInfo prodInfoData)
{
bool dataChanged = false;
prodInfoData = new DTOProdInfo();
ThermoModels.ProdInfoModel prodInfoRawData = new ThermoModels.ProdInfoModel();
CmsError libraryError = numericalControl.PLC_RProdInfo(ref prodInfoRawData);
@@ -1688,38 +1717,38 @@ namespace Thermo.Active.NC
// 2020.09.02: incremento di 1 il NUMERO dei pezzi, in modo che mostro il pezzo corrente (n=fatti + 1)
prodInfoData.NumDone++;
//// popolo il valore LAST se ho una delle condizioni missing, num fatti = 0, riscaldi > 0
//if (lastProdInfoData == null || (lastProdInfoData.NumDone == 0) || prodInfoData.NumDone == 0 || prodInfoData.NumPreHot > 0)
// se nullo lo popolo
if (lastProdInfoData == null)
{
lastProdInfoData = prodInfoRawData;
}
// se ho update da strobe... sennò restituisco ultima lettura...
if (ThermoProdUpdatedStr)
{
// do comparison with old record and if changed --> persist on DB!
if (!prodInfoRawData.Equals(lastProdInfoData))
{
// update last info data
lastProdInfoData = prodInfoRawData;
}
else
{
prodInfoRawData = lastProdInfoData;
}
// se ho update da strobe... sennò restituisco ultima lettura...
if (ThermoProdUpdatedStr)
{
// save on DB! attenzione: RAW DATA perché salvo pezzo PRECEDENTE...
using (ProdInfoController prodInfoController = new ProdInfoController())
{
prodInfoController.Create(prodInfoRawData.NumTarget, prodInfoRawData.NumDone, prodInfoRawData.TimeWarm, prodInfoRawData.TimeVent, prodInfoRawData.TimeVacuum, prodInfoRawData.TimeCycleGross, prodInfoRawData.TimeCycleNet, prodInfoRawData.MaterialTempEndWarm, prodInfoRawData.MaterialTempEndVent, prodInfoRawData.MoldTemp, prodInfoRawData.VacuumReadVal, prodInfoRawData.MouldEnergyOUT, prodInfoRawData.MouldEnergyIN, false);
// indico di rileggere il DB...
forceProdPanelDbReload = true;
}
// update last info data
lastProdInfoData = prodInfoRawData;
// manage strobe/ack!
libraryError = numericalControl.PLC_WAckProdUpdate();
if (libraryError.IsError())
return libraryError;
}
}
else
{
prodInfoRawData = lastProdInfoData;
}
// ora controllo inizio/fine produzione
if (ThermoProdStartStr)
+5
View File
@@ -772,6 +772,11 @@ namespace Thermo.Active.NC
Directory.CreateDirectory(dir);
}
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady)
{
RedisController.WriteProductionName(1, RecipeLiveData.RecipeName);
}
answ = true;
}
catch
+32
View File
@@ -6,6 +6,38 @@
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.10.4.0" newVersion="6.10.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.2" newVersion="4.0.2.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.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>
</configuration>
+32
View File
@@ -6,6 +6,38 @@
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.10.4.0" newVersion="6.10.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.2" newVersion="4.0.2.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.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>
</configuration>
@@ -36,10 +36,11 @@
<HintPath>..\packages\MySql.Data.6.10.4\lib\net452\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.5.11\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.6.7\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
+10 -1
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Automatically generated by nicola.carminati: 2020-10-12 -->
<!-- Automatically generated by nicola.carminati: 2020-10-15 -->
<root>
<language_it>Italiano</language_it>
<header_maintainance_request>Effettuare manutenzione</header_maintainance_request>
@@ -314,4 +314,13 @@
<confirm_request_confirm>Conferma</confirm_request_confirm>
<confirm_request_cancel>Annulla</confirm_request_cancel>
<lbl_loader_load_area>Area di carico</lbl_loader_load_area>
<avvio_prod_lbl_title>Avvio produione</avvio_prod_lbl_title>
<new_production>Nuovo lotto produttivo</new_production>
<warmup_cycles>Cicli di warmup</warmup_cycles>
<warmup_cycles_pieces>Numero di cicli:</warmup_cycles_pieces>
<modal_start_button>Avvio</modal_start_button>
<edit_prod_lbl_title>Modifica produione</edit_prod_lbl_title>
<production_management>Lotto di produzione</production_management>
<production_enabling>Setta numeto max di pezzi</production_enabling>
<mock_pieces>Numero di pezzi:</mock_pieces>
</root>
+10 -1
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Automatically generated by nicola.carminati: 2020-10-12 -->
<!-- Automatically generated by nicola.carminati: 2020-10-15 -->
<root>
<language_it>English</language_it>
<header_maintainance_request>Maintenance request</header_maintainance_request>
@@ -314,4 +314,13 @@
<confirm_request_confirm>Confirm</confirm_request_confirm>
<confirm_request_cancel>Cancel</confirm_request_cancel>
<lbl_loader_load_area>Loading area</lbl_loader_load_area>
<avvio_prod_lbl_title>Start Production</avvio_prod_lbl_title>
<new_production>New production lot</new_production>
<warmup_cycles>Warmup cycles</warmup_cycles>
<warmup_cycles_pieces>Number of cycles:</warmup_cycles_pieces>
<modal_start_button>Start</modal_start_button>
<edit_prod_lbl_title>Edit Production</edit_prod_lbl_title>
<production_management>Production lot</production_management>
<production_enabling>Set the max num of pieces</production_enabling>
<mock_pieces>Number of pieces:</mock_pieces>
</root>
+2 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MySql.Data" version="6.10.4" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net462" />
<package id="NLog" version="4.5.11" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
<package id="NLog" version="4.6.7" targetFramework="net462" />
</packages>
+15
View File
@@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CMS_CORE_Library", "..\cms_
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client2020", "Client2020\Client2020.csproj", "{0780047F-12E4-4FCC-9748-6B23F0FD3711}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thermo.Active.Thermocamera", "THermo.Active.Thermocamera\Thermo.Active.Thermocamera.csproj", "{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -219,6 +221,18 @@ Global
{0780047F-12E4-4FCC-9748-6B23F0FD3711}.Release|x64.Build.0 = Release|x64
{0780047F-12E4-4FCC-9748-6B23F0FD3711}.Release|x86.ActiveCfg = Release|Any CPU
{0780047F-12E4-4FCC-9748-6B23F0FD3711}.Release|x86.Build.0 = Release|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Debug|x64.ActiveCfg = Debug|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Debug|x64.Build.0 = Debug|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Debug|x86.ActiveCfg = Debug|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Debug|x86.Build.0 = Debug|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Release|Any CPU.Build.0 = Release|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Release|x64.ActiveCfg = Release|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Release|x64.Build.0 = Release|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Release|x86.ActiveCfg = Release|Any CPU
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -237,6 +251,7 @@ Global
{F9F17F23-660E-488C-A7FA-6A5B35D64313} = {2F873243-A483-40B6-A0F7-65FC3541A269}
{49B04D99-0ECD-4900-86D3-7098D61314D7} = {0769EE3C-4259-4C72-97B4-0CCAEBFA7724}
{0780047F-12E4-4FCC-9748-6B23F0FD3711} = {2F873243-A483-40B6-A0F7-65FC3541A269}
{8D8EC91A-3A15-4A1D-951B-A35E7068DEBD} = {0769EE3C-4259-4C72-97B4-0CCAEBFA7724}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {51D459FB-B45B-4A47-984E-46C35F933A82}
+36
View File
@@ -77,6 +77,42 @@
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
<probing privatePath="lib;libs" />
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.2" newVersion="4.0.2.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.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>
<connectionStrings>
@@ -71,11 +71,14 @@ namespace Thermo.Active
machineId = session.MachineUser.MachineId;
userId = session.MachineUser.UserId;
MachineUserModel machineUser = new MachineUserModel();
using (MachinesUsersController machineUsersController = new MachinesUsersController())
{
// Find machineUser data and joined to user data, role data, machine data
machineUser = machineUsersController.FindByIdWithData(session.MachineUserId);
RedisController.WriteCurrentUser(machineUser.User.Username);
}
using (FunctionsAccessController acController = new FunctionsAccessController())
@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using Thermo.Active.Database.Controllers;
using Thermo.Active.Listeners;
using Thermo.Active.Model.DatabaseModels;
using Thermo.Active.Model.DTOModels.AlarmModels;
using Thermo.Active.Provider;
using Thermo.Active.Thermocamera;
using static Thermo.Active.Config.ServerConfig;
using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Controllers.WebApi
{
[RoutePrefix("api/thermocamera")]
public class ThermocameraController : ApiController
{
[Route("show"), HttpPost]
public IHttpActionResult GetDataPaginated()
{
String ThermoCameraXpos = AdditionalParametersConfig["ThermoCameraXpos"];
String ThermoCameraYpos = AdditionalParametersConfig["ThermoCameraYpos"];
String ThermoCameraXdim = AdditionalParametersConfig["ThermoCameraXdim"];
String ThermoCameraYdim = AdditionalParametersConfig["ThermoCameraYdim"];
if(ThermoCameraXpos != null && ThermoCameraYpos != null && ThermoCameraXdim != null && ThermoCameraYdim != null)
{
if (ThermocameraComunicator.getInstance().showWindow(Int32.Parse(ThermoCameraXpos), Int32.Parse(ThermoCameraYpos), Int32.Parse(ThermoCameraXdim), Int32.Parse(ThermoCameraYdim), 3000))
return Ok();
else
return BadRequest();
}
return BadRequest();
}
}
}
@@ -43,6 +43,7 @@ namespace Thermo.Active.Controllers.WebApi
context.Clients.All.logout(new { id = userId.Value });
ThermoActiveLogger.LogMessage("Logout: " + userId.Value + "Date:" + DateTime.Now, ERROR_LEVEL.INFO);
RedisController.WriteCurrentUser("");
return Ok();
}
+48
View File
@@ -0,0 +1,48 @@
general_sizes_sheet_material_RE_00,ABS
general_sizes_sheet_material_RE_01,PMMA
general_sizes_sheet_material_RE_02,HDPE
general_sizes_plate_type_RE_00,1500x1200 : 500x700
general_sizes_plate_type_RE_01,Windowplate 2
general_sizes_plate_type_RE_02,Windowplate 3
general_sizes_frame_traverses_RE_00,1200 : 460
general_sizes_frame_traverses_RE_01,Crossbar B
general_sizes_frame_traverses_RE_02,Crossbar C
cycle_forming_type_RE_00,Normal
cycle_forming_type_RE_01,Special
cycle_forming_type_RE_02,Thermocoating
cycle_crystallisation_type_RE_00, Disabled
cycle_crystallisation_type_RE_01,Only lower heater
cycle_crystallisation_type_RE_02,Both heaters
heats_decomsustain_type_RE_00,Time
heats_decomsustain_type_RE_01,With photocell
heats_decomsustain_type_RE_02,Sust/Dec automatic
drawing_type_RE_00,Time
drawing_type_RE_01,Controlled by PEC
drawing_type_RE_04,Negative
drawing_photocell_RE_00,Micron
drawing_photocell_RE_01,Wenglor
drawing_photocell_RE_02,Manual
upperplate_cycle_type_RE_00,Disabled
upperplate_cycle_type_RE_01,Immediate
upperplate_cycle_type_RE_02,Mould high
cooling_blowing_type_RE_00,No coolers
cooling_blowing_type_RE_01,Central
cooling_blowing_type_RE_02,Central + Extern
cooling_nebulizer_type_RE_00,Disabled
cooling_nebulizer_type_RE_01,Central
cooling_nebulizer_type_RE_02,Central + Extern
vacuum_main_start_RE_00,Immediate
vacuum_main_start_RE_01,Mould high
vacuum_main_start_RE_02,Upperplate low
vacuum_main_start_RE_03,Mould slowing
extraction_main_type_RE_00,Time
extraction_main_type_RE_01,With upperplate
extraction_main_type_RE_02,Frameless
options_undercutmould_1_mode_RE_00,Disabled
options_undercutmould_1_mode_RE_01,During vacuum
options_undercutmould_1_mode_RE_02,During extraction
options_undercutmould_1_mode_RE_03,Programmable position
options_undercutupperplate_1_mode_RE_00,Disabled
options_undercutupperplate_1_mode_RE_01,During vacuum
options_undercutupperplate_1_mode_RE_02,During extraction
options_undercutupperplate_1_mode_RE_03,Programmable position
+16 -68
View File
@@ -1,10 +1,10 @@
general_sizes_sheet_material_RE_00,Materiale A
general_sizes_sheet_material_RE_01,Materiale B
general_sizes_sheet_material_RE_02,Materiale C
general_sizes_plate_type_RE_00,Piastra A
general_sizes_plate_type_RE_01,Piastra B
general_sizes_plate_type_RE_02,Piastra C
general_sizes_frame_traverses_RE_00,Traversino A
general_sizes_sheet_material_RE_00,ABS
general_sizes_sheet_material_RE_01,PMMA
general_sizes_sheet_material_RE_02,HDPE
general_sizes_plate_type_RE_00,1500x1200 : 500x700
general_sizes_plate_type_RE_01,Piastra 2
general_sizes_plate_type_RE_02,Piastra 3
general_sizes_frame_traverses_RE_00,1200 : 460
general_sizes_frame_traverses_RE_01,Traversino B
general_sizes_frame_traverses_RE_02,Traversino C
cycle_forming_type_RE_00,Normale
@@ -15,7 +15,7 @@ cycle_crystallisation_type_RE_01,Solo riscaldo inferiore
cycle_crystallisation_type_RE_02,Entrambi riscaldi
heats_decomsustain_type_RE_00,A tempo
heats_decomsustain_type_RE_01,Con fotocellula
heats_decomsustain_type_RE_02,Sostentamento e decompressione automatici
heats_decomsustain_type_RE_02,Sost/Dec automatici
drawing_type_RE_00,A tempo
drawing_type_RE_01,Mantenuta
drawing_type_RE_04,Negativa
@@ -38,63 +38,11 @@ vacuum_main_start_RE_03,Con rallentamento stampo
extraction_main_type_RE_00,A tempo
extraction_main_type_RE_01,Assistita con controstampo
extraction_main_type_RE_02,Senza cornice
options_undercutmould_1_mode_RE_00,Valore UNO
options_undercutmould_1_mode_RE_01,Valore DUE
options_undercutmould_1_mode_RE_02,Valore TRE
options_undercutmould_2_mode_RE_00,Valore UNO
options_undercutmould_2_mode_RE_01,Valore DUE
options_undercutmould_2_mode_RE_02,Valore TRE
options_undercutmould_3_mode_RE_00,Valore UNO
options_undercutmould_3_mode_RE_01,Valore DUE
options_undercutmould_3_mode_RE_02,Valore TRE
options_undercutmould_4_mode_RE_00,Valore UNO
options_undercutmould_4_mode_RE_01,Valore DUE
options_undercutmould_4_mode_RE_02,Valore TRE
options_undercutmould_5_mode_RE_00,Valore UNO
options_undercutmould_5_mode_RE_01,Valore DUE
options_undercutmould_5_mode_RE_02,Valore TRE
options_undercutmould_6_mode_RE_00,Valore UNO
options_undercutmould_6_mode_RE_01,Valore DUE
options_undercutmould_6_mode_RE_02,Valore TRE
options_undercutmould_7_mode_RE_00,Valore UNO
options_undercutmould_7_mode_RE_01,Valore DUE
options_undercutmould_7_mode_RE_02,Valore TRE
options_undercutmould_8_mode_RE_00,Valore UNO
options_undercutmould_8_mode_RE_01,Valore DUE
options_undercutmould_8_mode_RE_02,Valore TRE
options_undercutmould_9_mode_RE_00,Valore UNO
options_undercutmould_9_mode_RE_01,Valore DUE
options_undercutmould_9_mode_RE_02,Valore TRE
options_undercutmould_10_mode_RE_00,Valore UNO
options_undercutmould_10_mode_RE_01,Valore DUE
options_undercutmould_10_mode_RE_02,Valore TRE
options_undercutupperplate_1_mode_RE_00,Valore UNO
options_undercutupperplate_1_mode_RE_01,Valore DUE
options_undercutupperplate_1_mode_RE_02,Valore TRE
options_undercutupperplate_2_mode_RE_00,Valore UNO
options_undercutupperplate_2_mode_RE_01,Valore DUE
options_undercutupperplate_2_mode_RE_02,Valore TRE
options_undercutupperplate_3_mode_RE_00,Valore UNO
options_undercutupperplate_3_mode_RE_01,Valore DUE
options_undercutupperplate_3_mode_RE_02,Valore TRE
options_undercutupperplate_4_mode_RE_00,Valore UNO
options_undercutupperplate_4_mode_RE_01,Valore DUE
options_undercutupperplate_4_mode_RE_02,Valore TRE
options_undercutupperplate_5_mode_RE_00,Valore UNO
options_undercutupperplate_5_mode_RE_01,Valore DUE
options_undercutupperplate_5_mode_RE_02,Valore TRE
options_undercutupperplate_6_mode_RE_00,Valore UNO
options_undercutupperplate_6_mode_RE_01,Valore DUE
options_undercutupperplate_6_mode_RE_02,Valore TRE
options_undercutupperplate_7_mode_RE_00,Valore UNO
options_undercutupperplate_7_mode_RE_01,Valore DUE
options_undercutupperplate_7_mode_RE_02,Valore TRE
options_undercutupperplate_8_mode_RE_00,Valore UNO
options_undercutupperplate_8_mode_RE_01,Valore DUE
options_undercutupperplate_8_mode_RE_02,Valore TRE
options_undercutupperplate_9_mode_RE_00,Valore UNO
options_undercutupperplate_9_mode_RE_01,Valore DUE
options_undercutupperplate_9_mode_RE_02,Valore TRE
options_undercutupperplate_10_mode_RE_00,Valore UNO
options_undercutupperplate_10_mode_RE_01,Valore DUE
options_undercutupperplate_10_mode_RE_02,Valore TRE
options_undercutmould_1_mode_RE_00,Disattivato
options_undercutmould_1_mode_RE_01,Durante vuoto
options_undercutmould_1_mode_RE_02,Durante estrazione
options_undercutmould_1_mode_RE_03,Programmabile con quota
options_undercutupperplate_1_mode_RE_00,Disattivato
options_undercutupperplate_1_mode_RE_01,Durante vuoto
options_undercutupperplate_1_mode_RE_02,Durante estrazione
options_undercutupperplate_1_mode_RE_03,Programmabile con quota
+350
View File
@@ -0,0 +1,350 @@
mb_DiscesaCZ, ↓ Frame
mb_MembDiscesaZ, ↓ Upperplate
mb_MembZ, Upperplate
mb_Mod_MembSalitaZ, ↑ Upperplate
mb_Mod_AppoggioDiscesaW, ↓ Mould
mb_Mod_RiscaldoInf, Lower heater
mb_Mod_RiscaldoSup, Upper heater
mb_Mod_PirometroRisc, Heating pyrometer
mb_Mod_DecompSustain, Decomp./Sustain
mb_Mod_Acrilico, Acrylic
mb_Mod_RiscaldiIndietro, ← Heaters
mb_Mod_ExtraR, Extra upper heater
mb_Mod_Imbutitura, Drawing
mb_Mod_SalitaW, ↑ Mould
mb_Mod_AttesaStampo, Mould wait
mb_Mod_Raffreddamento, Cooling
mb_Mod_PirometroRaffr, Cooling pyrometer
mb_Mod_Vuoto, Vacuum
mb_Mod_VuotoDiretto, Direct vacuum
mb_Mod_VuotoAux, Aux vacuum
mb_Mod_Nebulizz, Nebulizer
mb_Mod_AttesaPartenzaZ, Wait upperplate
mb_Mod_DiscesaZ, ↓ Upperplate
mb_Mod_Z, Upperplate low
mb_Mod_SalitaZ, ↑ Upperplate
mb_Mod_AriaZ, Upperplate air
mb_Mod_VuotoZ, Upperplate vacuum
mb_Mod_ScaricoVuotoZ, Upperplate vacuum release
mb_Mod_ScaricoVuoto, Vacuum release
mb_Mod_EstrazioneZ, Upperplate extraction
mb_Mod_DiscesaAssistZ, ↓ Upperplate
mb_Mod_Estrazione, Extraction
mb_Mod_DiscesaW, ↓ Mould
mb_Mod_RiscaldiIndietro2, ← Heaters
mb_Mod_SalitaCZ, ↑ Frame
mb_Mod_Riscaldi2, Second heating
mb_Mod_Estrazione_Aux_W, Aux extraction
mb_Mod_Attesa_Pirometro, Waiting pyrometer
mb_Mod_Prevuoto, Prevacuum
mb_Mod_SalitaAssistZ, ↑ Upperplate
general_sizes_mould_dim_x, Mould width
general_sizes_mould_dim_y, Mould depth
general_sizes_mould_max_height, Mould max height
general_sizes_mould_min_height, Mould negative height
general_sizes_mould_base_height, Mould base height
general_sizes_sheet_material, Material
general_sizes_sheet_dim_x, Sheet width
general_sizes_sheet_dim_y, Sheet depth
general_sizes_sheet_thickness, Sheet thickness
general_sizes_plate_type, Windowplate
general_sizes_plate_dim_x, Windowplate width
general_sizes_plate_dim_x_button, Move
general_sizes_plate_dim_y, Windowplate depth
general_sizes_plate_dim_y_button, Move
general_sizes_frame_traverses, Crossbar
general_sizes_frame_dim_x, Frame width
general_sizes_frame_dim_x_button, Move
general_sizes_frame_dim_y, Frame depth
general_sizes_frame_dim_y_button, Move
general_sizes_upperplate_max_height, Upperplate height
general_area_working_dxsx, Working zone
positions_mould_lower_position, Mould low position
positions_mould_lower_speed, Descend speed
positions_mould_intermediate_position, Mould mid position
positions_mould_upper_position, Mould high position
positions_mould_upper_speed, Ascend speed
positions_mould_upperdeceleration_position, Ascend slowdown stroke
positions_mould_upperdeceleration_speed, Ascend slowdown speed
positions_mould_lowerdeceleration_position, Discend slowdown stroke
positions_mould_lowerdeceleration_speed, Discend slowdown speed
positions_frame_lower_position, Frame low position
positions_frame_lower_speed, Descend speed
positions_frame_upper_position, Frame high position
positions_frame_upper_speed, Ascend speed
positions_frame_intermediate_position, Frame mid position
positions_frame_intermediate_speed, Frame mid speed
positions_frame_unload_position, Frame unload position
positions_upperplate_lower_position, Upperplate low position
positions_upperplate_lower_speed, Mould descend speed
positions_upperplate_upper_position, Upperplate high position
positions_upperplate_upper_speed, Upperplate ascend speed
positions_upperplate_upperdeceleration_position, Upperplate ascend slowdown stroke
positions_upperplate_upperdeceleration_speed, Upperplate ascend slowdown speed
positions_upperplate_lowerdeceleration_position, Upperplate descend slowdown stroke
positions_upperplate_lowerdeceleration_speed, Upperplate descend slowdown speed
cycle_forming_type, Cycle type
cycle_forming_pause_cycle, Cycle pause
cycle_forming_cooling_enabled, Cooling at cycle end
cycle_forming_blowingbox_enabled, Box cooling at cycle end
cycle_acrylicframe_enabled, Acrylic
cycle_acrylicframe_time, Acrylic time
cycle_upperoverheating_enabled, Extra upper heater enable
cycle_upperoverheating_time, Extra upper heater time
cycle_crystallisation_type, Second heating
cycle_crystallisation_time, Second heating time
cycle_loader_enable, Loader
cycle_loader_lifter_lowerposition_delay, Loader descend delay
cycle_loader_lifter_upperposition_delay, Loader ascend delay
cycle_loader_split_sheet_time, Plate detachment delay
cycle_loader_ejector_position, Expeller position
cycle_loader_pallet_height, Pallet height
cycle_loader_center_x, Centering X
cycle_loader_center_y, Centering Y
cycle_loader_checktichness_enabled, Check sheet thickness
cycle_loader_suckers_vacuum, Suckers vacuum
cycle_loader_ionizer_enabled, Ionizer enable
cycle_loader_manualunloading_enabled, Manual unloading
heats_lowerheaters_max_time, Lower heater time
heats_lowerheaters_movement_enabled, Lower heater enable
heats_lowerheaters_enabled, Lower heater ON
heats_lowerheaters_oscillation, Lower heater Swing
heats_upperheaters_max_time, Upper heater time
heats_upperheaters_movement_enabled, Upper heater enable
heats_upperheaters_enabled, Upper heater ON
heats_upperheaters_oscillation, Upper heater swing
heats_decomsustain_type, Type
heats_decomsustain_decompression_flow, Sustain flow
heats_decomsustain_min_blowing_time, Min blow time
heats_decomsustain_sustain_delay, Sustain delay
heats_decomsustain_decompression_delay, Decompression delay
heats_decomsustain_decompression_duration, Decompression time
heats_decomsustain_smoke_function_enabled, Smoke function
pyrometer_pyrometer_enabled, Pyrometer enable
pyrometer_pyrometer_setpoint, Pyrometer setpoint
pyrometer_pyrometer_delay, Pyrometer delay
pyrometer_upperthermoregulator_start_adjustment, Thermoregulation start
pyrometer_upperthermoregulator_end_adjustment, Thermoregulation end
pyrometer_upperthermoregulator_min_percentage, Min percentage
pyrometer_upperthermoregulator_max_percentage, Max percentage
pyrometer_upperthermoregulator_sleep_enabled, Sleep enable
pyrometer_upperthermoregulator_sleep_percentage, Sleep percentage
pyrometer_lowerthermoregulator_start_adjustment, Thermoregulation start
pyrometer_lowerthermoregulator_end_adjustment, Thermoregulation end
pyrometer_lowerthermoregulator_min_percentage, Min percentage
pyrometer_lowerthermoregulator_max_percentage, Max percentage
pyrometer_lowerthermoregulator_sleep_enabled, Sleep enable
pyrometer_lowerthermoregulator_sleep_percentage, Sleep percentage
pyrometer_upperthermoregulator_sleep_temperature, Sleep temperature
pyrometer_upperthermoregulator_working_temperature, Working temperature
pyrometer_lowerthermoregulator_sleep_temperature, Sleep temperature
pyrometer_lowerthermoregulator_working_temperature, Working temperature
drawing_type, Drawing type
drawing_height, Bubble height
drawing_delay, Drawing delay
drawing_1_chart_setpointx, Time
drawing_1_chart_setpointy, Flow
drawing_photocell, Sensor
drawing_mantaining_flow, Holding flow
drawing_manual, Manual flow
drawing_mould_up_delay, Mould ascend delay
upperplate_cycle_type, Upperplate cycle
upperplate_cycle_delay, Delay
upperplate_cycle_time, Time
upperplate_air_enable, Enable
upperplate_air_delay, Delay
upperplate_air_max_time, Max time
upperplate_air_1_chart_setpointx, Time 1
upperplate_air_1_chart_setpointy, Flow 1
upperplate_air_2_chart_setpointx, Time 2
upperplate_air_2_chart_setpointy, Flow 2
upperplate_air_3_chart_setpointx, Time 3
upperplate_air_3_chart_setpointy, Flow 3
upperplate_air_manual, Manual flow
upperplate_vacuum_enable, Enable
upperplate_vacuum_delay, Delay
upperplate_vacuum_max_time, Max Time
upperplate_vacuum_1_chart_setpointx, Time 1
upperplate_vacuum_1_chart_setpointy, Flow 1
upperplate_vacuum_2_chart_setpointx, Time 2
upperplate_vacuum_2_chart_setpointy, Flow 2
upperplate_vacuum_3_chart_setpointx, Time 3
upperplate_vacuum_3_chart_setpointy, Flow 3
upperplate_vacuum_manual, Manual flow
upperplate_extraction_enable, Enable
upperplate_extraction_delay, Delay
upperplate_extraction_1_chart_setpointx, Time
upperplate_extraction_1_chart_setpointy, Flow
upperplate_extraction_manual, Manual flow
cooling_blowing_type, Coolers
cooling_blowing_delay, Delay
cooling_blowing_time, Time
cooling_pyrometer_enabled, Enable
cooling_pyrometer_setpoint, Setpoint
cooling_pyrometer_delay, Delay
cooling_nebulizer_type, Nebulizer
cooling_nebulizer_delay, Delay
cooling_nebulizer_time, Time
cooling_telescopic_enable, Telescopic
cooling_telescopic_position, Position 1
cooling_telescopic_swing_enable, Swing
cooling_telescopic_swing_stroke, Position 2
cooling_shutter_1_opening_perc, Opening 1
cooling_shutter_2_opening_perc, Opening 2
cooling_shutter_3_opening_perc, Opening 3
cooling_shutter_4_opening_perc, Opening 4
cooling_shutter_5_opening_perc, Opening 5
cooling_shutter_6_opening_perc, Opening 6
cooling_shutter_7_opening_perc, Opening 7
cooling_shutter_8_opening_perc, Opening 8
cooling_shutter_9_opening_perc, Opening 9
cooling_shutter_10_opening_perc, Opening 10
cooling_shutter_11_opening_perc, Opening 11
cooling_shutter_12_opening_perc, Opening 12
cooling_shutter_13_opening_perc, Opening 13
cooling_shutter_14_opening_perc, Opening 14
cooling_shutter_15_opening_perc, Opening 15
cooling_shutter_16_opening_perc, Opening 16
vacuum_main_start, Start
vacuum_main_delay, Delay
vacuum_main_max_time, Max time
vacuum_main_1_chart_setpointx, Time 1
vacuum_main_1_chart_setpointy, Flow 1
vacuum_main_2_chart_setpointx, Time 2
vacuum_main_2_chart_setpointy, Flow 2
vacuum_main_3_chart_setpointx, Time 3
vacuum_main_3_chart_setpointy, Flow 3
vacuum_main_manual, Manual flow
vacuum_direct_enabled, Enable
vacuum_direct_delay, Delay
vacuum_direct_time, Time
vacuum_aux_enabled, Enable
vacuum_aux_delay, Delay
vacuum_aux_max_time, Max Time
vacuum_aux_1_chart_setpointx, Time 1
vacuum_aux_1_chart_setpointy, Flow 1
vacuum_aux_2_chart_setpointx, Time 2
vacuum_aux_2_chart_setpointy, Flow 2
vacuum_aux_3_chart_setpointx, Time 3
vacuum_aux_3_chart_setpointy, Flow 3
vacuum_aux_manual, Manual flow
vacuum_pre_enabled, Enable
vacuum_pre_delay, Delay
vacuum_pre_max_time, Max Time
vacuum_pre_1_chart_setpointx, Time 1
vacuum_pre_1_chart_setpointy, Flow 1
vacuum_pre_2_chart_setpointx, Time 2
vacuum_pre_2_chart_setpointy, Flow 2
vacuum_pre_3_chart_setpointx, Time 3
vacuum_pre_3_chart_setpointy, Flow 3
extraction_main_type, Type
extraction_main_mould_dw_delay, Mould descend delay
extraction_main_delay, Delay
extraction_main_1_chart_setpointx, Time
extraction_main_1_chart_setpointy, Flow
extraction_main_manual, Manual flow
extraction_aux_enabled, Enable
extraction_aux_delay, Delay
extraction_aux_1_chart_setpointx, Time
extraction_aux_1_chart_setpointy, Flow
extraction_aux_manual, Manual flow
options_undercutmould_1_mode, Mode
options_undercutmould_1_position, Position
options_undercutmould_1_delay_acti, ON delay
options_undercutmould_1_delay_dis, OFF delay
options_undercutmould_2_mode, Mode
options_undercutmould_2_position, Position
options_undercutmould_2_delay_acti, ON delay
options_undercutmould_2_delay_dis, OFF delay
options_undercutmould_3_mode, Mode
options_undercutmould_3_position, Position
options_undercutmould_3_delay_acti, ON delay
options_undercutmould_3_delay_dis, OFF delay
options_undercutmould_4_mode, Mode
options_undercutmould_4_position, Position
options_undercutmould_4_delay_acti, ON delay
options_undercutmould_4_delay_dis, OFF delay
options_undercutmould_5_mode, Mode
options_undercutmould_5_position, Position
options_undercutmould_5_delay_acti, ON delay
options_undercutmould_5_delay_dis, OFF delay
options_undercutmould_6_mode, Mode
options_undercutmould_6_position, Position
options_undercutmould_6_delay_acti, ON delay
options_undercutmould_6_delay_dis, OFF delay
options_undercutmould_7_mode, Mode
options_undercutmould_7_position, Position
options_undercutmould_7_delay_acti, ON delay
options_undercutmould_7_delay_dis, OFF delay
options_undercutmould_8_mode, Mode
options_undercutmould_8_position, Position
options_undercutmould_8_delay_acti, ON delay
options_undercutmould_8_delay_dis, OFF delay
options_undercutmould_9_mode, Mode
options_undercutmould_9_position, Position
options_undercutmould_9_delay_acti, ON delay
options_undercutmould_9_delay_dis, OFF delay
options_undercutmould_10_mode, Mode
options_undercutmould_10_position, Position
options_undercutmould_10_delay_acti, ON delay
options_undercutmould_10_delay_dis, OFF delay
options_undercutupperplate_1_mode, Mode
options_undercutupperplate_1_position, Position
options_undercutupperplate_1_delay_acti, ON delay
options_undercutupperplate_1_delay_dis, OFF delay
options_undercutupperplate_2_mode, Mode
options_undercutupperplate_2_position, Position
options_undercutupperplate_2_delay_acti, ON delay
options_undercutupperplate_2_delay_dis, OFF delay
options_undercutupperplate_3_mode, Mode
options_undercutupperplate_3_position, Position
options_undercutupperplate_3_delay_acti, ON delay
options_undercutupperplate_3_delay_dis, OFF delay
options_undercutupperplate_4_mode, Mode
options_undercutupperplate_4_position, Position
options_undercutupperplate_4_delay_acti, ON delay
options_undercutupperplate_4_delay_dis, OFF delay
options_undercutupperplate_5_mode, Mode
options_undercutupperplate_5_position, Position
options_undercutupperplate_5_delay_acti, ON delay
options_undercutupperplate_5_delay_dis, OFF delay
options_undercutupperplate_6_mode, Mode
options_undercutupperplate_6_position, Position
options_undercutupperplate_6_delay_acti, ON delay
options_undercutupperplate_6_delay_dis, OFF delay
options_undercutupperplate_7_mode, Mode
options_undercutupperplate_7_position, Position
options_undercutupperplate_7_delay_acti, ON delay
options_undercutupperplate_7_delay_dis, OFF delay
options_undercutupperplate_8_mode, Mode
options_undercutupperplate_8_position, Position
options_undercutupperplate_8_delay_acti, ON delay
options_undercutupperplate_8_delay_dis, OFF delay
options_undercutupperplate_9_mode, Mode
options_undercutupperplate_9_position, Position
options_undercutupperplate_9_delay_acti, ON delay
options_undercutupperplate_9_delay_dis, OFF delay
options_undercutupperplate_10_mode, Mode
options_undercutupperplate_10_position, Position
options_undercutupperplate_10_delay_acti, ON delay
options_undercutupperplate_10_delay_dis, OFF delay
options_thermoregulator_1_enabled, Enable
options_thermoregulator_1_setpoint, Setpoint
options_thermoregulator_2_enabled, Enable
options_thermoregulator_2_setpoint, Setpoint
options_thermoregulator_3_enabled, Enable
options_thermoregulator_3_setpoint, Setpoint
options_thermoregulator_4_enabled, Enable
options_thermoregulator_4_setpoint, Setpoint
options_thermoregulator_5_enabled, Enable
options_thermoregulator_5_setpoint, Setpoint
options_thermoregulator_6_enabled, Enable
options_thermoregulator_6_setpoint, Setpoint
options_thermoregulator_7_enabled, Enable
options_thermoregulator_7_setpoint, Setpoint
options_thermoregulator_8_enabled, Enable
options_thermoregulator_8_setpoint, Setpoint
options_thermoregulator_9_enabled, Enable
options_thermoregulator_9_setpoint, Setpoint
options_thermoregulator_10_enabled, Enable
options_thermoregulator_10_setpoint, Setpoint
+350 -346
View File
@@ -1,346 +1,350 @@
mb_DiscesaCZ,↓ Cornice
mb_MembDiscesaZ,↓ Controstampo
mb_MembZ,Controstampo
mb_Mod_MembSalitaZ,↑ Controstampo
mb_Mod_AppoggioDiscesaW,↓ Stampo
mb_Mod_RiscaldoInf,Riscaldo inferiore
mb_Mod_RiscaldoSup,Riscaldo superiore
mb_Mod_PirometroRisc,Pirometro riscaldo
mb_Mod_DecompSustain,Decompressione/Sostentamento
mb_Mod_Acrilico,Acrilico
mb_Mod_RiscaldiIndietro,← Riscaldi
mb_Mod_ExtraR,Riscaldo superiore aggiuntivo
mb_Mod_Imbutitura,Imbutitura
mb_Mod_SalitaW,↑ Stampo
mb_Mod_AttesaStampo,Attesa stampo
mb_Mod_Raffreddamento,Raffreddamento
mb_Mod_PirometroRaffr,Pirometro raffreddamento
mb_Mod_Vuoto,Vuoto
mb_Mod_VuotoDiretto,Vuoto diretto
mb_Mod_VuotoAux,Vuoto ausiliario
mb_Mod_Nebulizz,Nebulizzatori
mb_Mod_AttesaPartenzaZ,Attesa partenza Z
mb_Mod_DiscesaZ,↓ Controstampo
mb_Mod_Z,Controstampo basso
mb_Mod_SalitaZ,↑ Controstampo
mb_Mod_AriaZ,Aria controstampo
mb_Mod_VuotoZ,Vuoto controstampo
mb_Mod_ScaricoVuotoZ,Scarico vuoto controstampo
mb_Mod_ScaricoVuoto,Scarico vuoto
mb_Mod_EstrazioneZ,Estrazione controstampo
mb_Mod_DiscesaAssistZ,↓ Controstampo
mb_Mod_Estrazione,Estrazione
mb_Mod_DiscesaW,↓ Stampo
mb_Mod_RiscaldiIndietro2,← Riscaldi
mb_Mod_SalitaCZ,↑ Cornice
mb_Mod_Riscaldi2,Secondo riscaldo
mb_Mod_Estrazione_Aux_W,Estrazione ausiliaria
mb_Mod_Attesa_Pirometro,Attesa pirometro
mb_Mod_Prevuoto,Prevuoto
mb_Mod_SalitaAssistZ,↑ Controstampo
general_sizes_mould_dim_x,Larghezza stampo
general_sizes_mould_dim_y,Profondità stampo
general_sizes_mould_max_height,Altezza massima stampo
general_sizes_mould_min_height,Altezza minima stampo
general_sizes_mould_base_height,Altezza base stampo
general_sizes_sheet_material,Materiale
general_sizes_sheet_dim_x,Larghezza lastra
general_sizes_sheet_dim_y,Profondità lastra
general_sizes_sheet_thickness,Spessore lastra
general_sizes_plate_type,Piastrafinestra
general_sizes_plate_dim_x,Larghezza piastrafinestra
general_sizes_plate_dim_y,Profondità piastrafinestra
general_sizes_frame_traverses,Traversino
general_sizes_frame_dim_x,Larghezza cornice
general_sizes_frame_dim_y,Profondità cornice
general_sizes_upperplate_max_height,Altezza controstampo
general_area_working_dxsx,Zona di lavoro
positions_mould_lower_position,Quota stampo basso
positions_mould_lower_speed,Velocità discesa
positions_mould_intermediate_position,Quota stampo intermedio
positions_mould_upper_position,Quota stampo alto
positions_mould_upper_speed,Velocità salita
positions_mould_upperdeceleration_position,Quota rallentamento salita
positions_mould_upperdeceleration_speed,Velocità rallentamento salita
positions_mould_lowerdeceleration_position,Quota rallentamento discesa
positions_mould_lowerdeceleration_speed,Velocità rallentamento discesa
positions_frame_lower_position,Quota cornice bassa
positions_frame_lower_speed,Velocità discesa
positions_frame_upper_position,Quota cornice alta
positions_frame_upper_speed,Velocità salita
positions_frame_intermediate_position,Quota cornice intermedia
positions_frame_intermediate_speed,Velocità per quota intermedia
positions_frame_unload_position,Quota cornice scarico
positions_upperplate_lower_position,Quota controstampo basso
positions_upperplate_lower_speed,Velocità discesa stampo
positions_upperplate_upper_position,Quota controstampo alto
positions_upperplate_upper_speed,Velocità salita controstampo
positions_upperplate_upperdeceleration_position,Quota rallentamento salita controstampo
positions_upperplate_upperdeceleration_speed,Velocità rallentamento salita controstampo
positions_upperplate_lowerdeceleration_position,Quota rallentamento discesa controstampo
positions_upperplate_lowerdeceleration_speed,Velocità rallentamento diescesa controstampo
cycle_forming_type,Tipo ciclo
cycle_forming_pause_cycle,Pausa ciclo
cycle_forming_cooling_enabled,Raffreddamento a fine ciclo
cycle_forming_blowingbox_enabled,Ventilazione cassone a fine ciclo
cycle_acrylicframe_enabled,Acrilico
cycle_acrylicframe_time,Durata acrilico
cycle_upperoverheating_enabled,Abilitazione riscaldo superiore supplementare
cycle_upperoverheating_time,Durata riscaldo superiore supplementare
cycle_crystallisation_type,Secondo riscaldo
cycle_crystallisation_time,Durata secondo riscaldo
cycle_loader_enable,Caricatore
cycle_loader_lifter_lowerposition_delay,Ritardo discesa sollevatore
cycle_loader_lifter_upperposition_delay,Ritardo salita sollevatore
cycle_loader_split_sheet_time,Ritardo distacco lastra
cycle_loader_ejector_position,Quota espulsione
cycle_loader_pallet_height,Altezza bancale
cycle_loader_center_x,Centratura X
cycle_loader_center_y,Centratura Y
cycle_loader_checktichness_enabled,Controllo spessore
cycle_loader_suckers_vacuum,Abilitazione vuoto ventose
cycle_loader_ionizer_enabled,Abilitazione ionizzatore
cycle_loader_manualunloading_enabled,Scarico manuale
heats_lowerheaters_max_time,Durata massima riscaldo inferiore
heats_lowerheaters_movement_enabled,Movimento riscaldo inferiore
heats_lowerheaters_enabled,Accensione riscaldo inferiore
heats_lowerheaters_oscillation,Oscillazione riscaldo inferiore
heats_upperheaters_max_time,Durata massima riscaldo superiore
heats_upperheaters_movement_enabled,Movimento riscaldo superiore
heats_upperheaters_enabled,Accensione riscaldo superiore
heats_upperheaters_oscillation,Oscillazione riscaldo superiore
heats_decomsustain_type,Tipo decompressione/sostentamento
heats_decomsustain_decompression_flow,Portata sostentamento
heats_decomsustain_min_blowing_time,Durata minimo soffio
heats_decomsustain_sustain_delay,Ritardo sostentamento
heats_decomsustain_decompression_delay,Ritardo decompressione
heats_decomsustain_decompression_duration,Durata decompressione
heats_decomsustain_smoke_function_enabled,Funzione fumo
pyrometer_pyrometer_enabled,Abilitazione pirometro
pyrometer_pyrometer_setpoint,Setpoint pirometro
pyrometer_pyrometer_delay,Ritardo pirometro
pyrometer_upperthermoregulator_start_adjustment,Inizio termoregolazione
pyrometer_upperthermoregulator_end_adjustment,Fine termoregolazione
pyrometer_upperthermoregulator_min_percentage,Percentuale minima
pyrometer_upperthermoregulator_max_percentage,Percentuale massima
pyrometer_upperthermoregulator_sleep_enabled,Abilitazione riposo
pyrometer_upperthermoregulator_sleep_percentage,Percentuale riposo
pyrometer_lowerthermoregulator_start_adjustment,Inizio termoregolazione
pyrometer_lowerthermoregulator_end_adjustment,Fine termoregolazione
pyrometer_lowerthermoregulator_min_percentage,Percentuale minima
pyrometer_lowerthermoregulator_max_percentage,Percentuale massima
pyrometer_lowerthermoregulator_sleep_enabled,Abilitazione riposo
pyrometer_lowerthermoregulator_sleep_percentage,Percentuale riposo
pyrometer_upperthermoregulator_sleep_temperature,Temperatura riposo
pyrometer_upperthermoregulator_working_temperature,Temperatura lavoro
pyrometer_lowerthermoregulator_sleep_temperature,Temperatura riposo
pyrometer_lowerthermoregulator_working_temperature,Temperatura lavoro
drawing_type,Tipo imbutitura
drawing_height,Altezza bolla
drawing_delay,Ritardo imbutitura
drawing_1_chart_setpointx,Durata
drawing_1_chart_setpointy,Portata
drawing_photocell,Scelta fotocellula
drawing_mantaining_flow,Portata mantenimento
drawing_manual,Portata manuale
drawing_mould_up_delay,Ritardo salita stampo
upperplate_cycle_type,Tipo ciclo controstampo
upperplate_cycle_delay,Ritardo ciclo controstampo
upperplate_cycle_time,Durata ciclo controstampo
upperplate_air_enable,Abilitazione
upperplate_air_delay,Ritardo
upperplate_air_max_time,Durata massima
upperplate_air_1_chart_setpointx,Durata 1
upperplate_air_1_chart_setpointy,Portata 1
upperplate_air_2_chart_setpointx,Durata 2
upperplate_air_2_chart_setpointy,Portata 2
upperplate_air_3_chart_setpointx,Durata 3
upperplate_air_3_chart_setpointy,Portata 3
upperplate_air_manual,Portata manuale
upperplate_vacuum_enable,Abilitazione
upperplate_vacuum_delay,Ritardo
upperplate_vacuum_max_time,Durata massima
upperplate_vacuum_1_chart_setpointx,Durata 1
upperplate_vacuum_1_chart_setpointy,Portata 1
upperplate_vacuum_2_chart_setpointx,Durata 2
upperplate_vacuum_2_chart_setpointy,Portata 2
upperplate_vacuum_3_chart_setpointx,Durata 3
upperplate_vacuum_3_chart_setpointy,Portata 3
upperplate_vacuum_manual,Portata manuale
upperplate_extraction_enable,Abilitazione
upperplate_extraction_delay,Ritardo
upperplate_extraction_1_chart_setpointx,Durata
upperplate_extraction_1_chart_setpointy,Portata
upperplate_extraction_manual,Portata manuale
cooling_blowing_type,Ventilatori
cooling_blowing_delay,Ritardo
cooling_blowing_time,Durata
cooling_pyrometer_enabled,Abilitazione
cooling_pyrometer_setpoint,Setpoint
cooling_pyrometer_delay,Ritardo
cooling_nebulizer_type,Nebulizzatori
cooling_nebulizer_delay,Ritardo
cooling_nebulizer_time,Durata
cooling_telescopic_enable,Abilitazione telescopici
cooling_telescopic_position,Posizione telescopici
cooling_telescopic_swing_enable,Oscillazione telescopici
cooling_telescopic_swing_stroke,Corsa oscillazione
cooling_shutter_1_opening_perc,Apertura 1
cooling_shutter_2_opening_perc,Apertura 2
cooling_shutter_3_opening_perc,Apertura 3
cooling_shutter_4_opening_perc,Apertura 4
cooling_shutter_5_opening_perc,Apertura 5
cooling_shutter_6_opening_perc,Apertura 6
cooling_shutter_7_opening_perc,Apertura 7
cooling_shutter_8_opening_perc,Apertura 8
cooling_shutter_9_opening_perc,Apertura 9
cooling_shutter_10_opening_perc,Apertura 10
cooling_shutter_11_opening_perc,Apertura 11
cooling_shutter_12_opening_perc,Apertura 12
cooling_shutter_13_opening_perc,Apertura 13
cooling_shutter_14_opening_perc,Apertura 14
cooling_shutter_15_opening_perc,Apertura 15
cooling_shutter_16_opening_perc,Apertura 16
vacuum_main_start,Partenza vuoto
vacuum_main_delay,Ritardo vuoto
vacuum_main_max_time,Durata massima
vacuum_main_1_chart_setpointx,Durata 1
vacuum_main_1_chart_setpointy,Portata 1
vacuum_main_2_chart_setpointx,Durata 2
vacuum_main_2_chart_setpointy,Portata 2
vacuum_main_3_chart_setpointx,Durata 3
vacuum_main_3_chart_setpointy,Portata 3
vacuum_main_manual,Portata manuale
vacuum_direct_enabled,Abilitazione
vacuum_direct_delay,Ritardo
vacuum_direct_time,Durata
vacuum_aux_enabled,Abilitazione
vacuum_aux_delay,Ritardo
vacuum_aux_max_time,Durata massima
vacuum_aux_1_chart_setpointx,Durata 1
vacuum_aux_1_chart_setpointy,Portata 1
vacuum_aux_2_chart_setpointx,Durata 2
vacuum_aux_2_chart_setpointy,Portata 2
vacuum_aux_3_chart_setpointx,Durata 3
vacuum_aux_3_chart_setpointy,Portata 3
vacuum_aux_manual,Portata manuale
vacuum_pre_enabled,Abilitazione
vacuum_pre_delay,Ritardo
vacuum_pre_max_time,Durata massima
vacuum_pre_1_chart_setpointx,Durata 1
vacuum_pre_1_chart_setpointy,Portata 1
vacuum_pre_2_chart_setpointx,Durata 2
vacuum_pre_2_chart_setpointy,Portata 2
vacuum_pre_3_chart_setpointx,Durata 3
vacuum_pre_3_chart_setpointy,Durata 3
extraction_main_type,Tipo estrazione
extraction_main_mould_dw_delay,Ritardo discesa stampo
extraction_main_delay,Ritardo
extraction_main_1_chart_setpointx,Durata
extraction_main_1_chart_setpointy,Portata
extraction_main_manual,Portata manuale
extraction_aux_enabled,Abilitazione
extraction_aux_delay,Ritardo
extraction_aux_1_chart_setpointx,Durata
extraction_aux_1_chart_setpointy,Portata
extraction_aux_manual,Portata manuale
options_undercutmould_1_mode,Modalità
options_undercutmould_1_position,Quota
options_undercutmould_1_delay_acti,Ritardo attivazione
options_undercutmould_1_delay_dis,Ritardo disattivazione
options_undercutmould_2_mode,Modalità
options_undercutmould_2_position,Quota
options_undercutmould_2_delay_acti,Ritardo attivazione
options_undercutmould_2_delay_dis,Ritardo disattivazione
options_undercutmould_3_mode,Modalità
options_undercutmould_3_position,Quota
options_undercutmould_3_delay_acti,Ritardo attivazione
options_undercutmould_3_delay_dis,Ritardo disattivazione
options_undercutmould_4_mode,Modalità
options_undercutmould_4_position,Quota
options_undercutmould_4_delay_acti,Ritardo attivazione
options_undercutmould_4_delay_dis,Ritardo disattivazione
options_undercutmould_5_mode,Modalità
options_undercutmould_5_position,Quota
options_undercutmould_5_delay_acti,Ritardo attivazione
options_undercutmould_5_delay_dis,Ritardo disattivazione
options_undercutmould_6_mode,Modalità
options_undercutmould_6_position,Quota
options_undercutmould_6_delay_acti,Ritardo attivazione
options_undercutmould_6_delay_dis,Ritardo disattivazione
options_undercutmould_7_mode,Modalità
options_undercutmould_7_position,Quota
options_undercutmould_7_delay_acti,Ritardo attivazione
options_undercutmould_7_delay_dis,Ritardo disattivazione
options_undercutmould_8_mode,Modalità
options_undercutmould_8_position,Quota
options_undercutmould_8_delay_acti,Ritardo attivazione
options_undercutmould_8_delay_dis,Ritardo disattivazione
options_undercutmould_9_mode,Modalità
options_undercutmould_9_position,Quota
options_undercutmould_9_delay_acti,Ritardo attivazione
options_undercutmould_9_delay_dis,Ritardo disattivazione
options_undercutmould_10_mode,Modalità
options_undercutmould_10_position,Quota
options_undercutmould_10_delay_acti,Ritardo attivazione
options_undercutmould_10_delay_dis,Ritardo disattivazione
options_undercutupperplate_1_mode,Modalità
options_undercutupperplate_1_position,Quota
options_undercutupperplate_1_delay_acti,Ritardo attivazione
options_undercutupperplate_1_delay_dis,Ritardo disattivazione
options_undercutupperplate_2_mode,Modalità
options_undercutupperplate_2_position,Quota
options_undercutupperplate_2_delay_acti,Ritardo attivazione
options_undercutupperplate_2_delay_dis,Ritardo disattivazione
options_undercutupperplate_3_mode,Modalità
options_undercutupperplate_3_position,Quota
options_undercutupperplate_3_delay_acti,Ritardo attivazione
options_undercutupperplate_3_delay_dis,Ritardo disattivazione
options_undercutupperplate_4_mode,Modalità
options_undercutupperplate_4_position,Quota
options_undercutupperplate_4_delay_acti,Ritardo attivazione
options_undercutupperplate_4_delay_dis,Ritardo disattivazione
options_undercutupperplate_5_mode,Modalità
options_undercutupperplate_5_position,Quota
options_undercutupperplate_5_delay_acti,Ritardo attivazione
options_undercutupperplate_5_delay_dis,Ritardo disattivazione
options_undercutupperplate_6_mode,Modalità
options_undercutupperplate_6_position,Quota
options_undercutupperplate_6_delay_acti,Ritardo attivazione
options_undercutupperplate_6_delay_dis,Ritardo disattivazione
options_undercutupperplate_7_mode,Modalità
options_undercutupperplate_7_position,Quota
options_undercutupperplate_7_delay_acti,Ritardo attivazione
options_undercutupperplate_7_delay_dis,Ritardo disattivazione
options_undercutupperplate_8_mode,Modalità
options_undercutupperplate_8_position,Quota
options_undercutupperplate_8_delay_acti,Ritardo attivazione
options_undercutupperplate_8_delay_dis,Ritardo disattivazione
options_undercutupperplate_9_mode,Modalità
options_undercutupperplate_9_position,Quota
options_undercutupperplate_9_delay_acti,Ritardo attivazione
options_undercutupperplate_9_delay_dis,Ritardo disattivazione
options_undercutupperplate_10_mode,Modalità
options_undercutupperplate_10_position,Quota
options_undercutupperplate_10_delay_acti,Ritardo attivazione
options_undercutupperplate_10_delay_dis,Ritardo disattivazione
options_thermoregulator_1_enabled,Abilitazione
options_thermoregulator_1_setpoint,Setpoint
options_thermoregulator_2_enabled,Abilitazione
options_thermoregulator_2_setpoint,Setpoint
options_thermoregulator_3_enabled,Abilitazione
options_thermoregulator_3_setpoint,Setpoint
options_thermoregulator_4_enabled,Abilitazione
options_thermoregulator_4_setpoint,Setpoint
options_thermoregulator_5_enabled,Abilitazione
options_thermoregulator_5_setpoint,Setpoint
options_thermoregulator_6_enabled,Abilitazione
options_thermoregulator_6_setpoint,Setpoint
options_thermoregulator_7_enabled,Abilitazione
options_thermoregulator_7_setpoint,Setpoint
options_thermoregulator_8_enabled,Abilitazione
options_thermoregulator_8_setpoint,Setpoint
options_thermoregulator_9_enabled,Abilitazione
options_thermoregulator_9_setpoint,Setpoint
options_thermoregulator_10_enabled,Abilitazione
options_thermoregulator_10_setpoint,Setpoint
mb_DiscesaCZ, ↓ Cornice
mb_MembDiscesaZ, ↓ Controstampo
mb_MembZ, Controstampo
mb_Mod_MembSalitaZ, ↑ Controstampo
mb_Mod_AppoggioDiscesaW, ↓ Stampo
mb_Mod_RiscaldoInf, Riscaldo inferiore
mb_Mod_RiscaldoSup, Riscaldo superiore
mb_Mod_PirometroRisc, Pirometro riscaldo
mb_Mod_DecompSustain, Decompressione/Sostentamento
mb_Mod_Acrilico, Acrilico
mb_Mod_RiscaldiIndietro, ← Riscaldi
mb_Mod_ExtraR, Riscaldo superiore aggiuntivo
mb_Mod_Imbutitura, Imbutitura
mb_Mod_SalitaW, ↑ Stampo
mb_Mod_AttesaStampo, Attesa stampo
mb_Mod_Raffreddamento, Raffreddamento
mb_Mod_PirometroRaffr, Pirometro raffreddamento
mb_Mod_Vuoto, Vuoto
mb_Mod_VuotoDiretto, Vuoto diretto
mb_Mod_VuotoAux, Vuoto ausiliario
mb_Mod_Nebulizz, Nebulizzatori
mb_Mod_AttesaPartenzaZ, Attesa partenza Z
mb_Mod_DiscesaZ, ↓ Controstampo
mb_Mod_Z, Controstampo basso
mb_Mod_SalitaZ, ↑ Controstampo
mb_Mod_AriaZ, Aria controstampo
mb_Mod_VuotoZ, Vuoto controstampo
mb_Mod_ScaricoVuotoZ, Scarico vuoto controstampo
mb_Mod_ScaricoVuoto, Scarico vuoto
mb_Mod_EstrazioneZ, Estrazione controstampo
mb_Mod_DiscesaAssistZ, ↓ Controstampo
mb_Mod_Estrazione, Estrazione
mb_Mod_DiscesaW, ↓ Stampo
mb_Mod_RiscaldiIndietro2, ← Riscaldi
mb_Mod_SalitaCZ, ↑ Cornice
mb_Mod_Riscaldi2, Secondo riscaldo
mb_Mod_Estrazione_Aux_W, Estrazione ausiliaria
mb_Mod_Attesa_Pirometro, Attesa pirometro
mb_Mod_Prevuoto, Prevuoto
mb_Mod_SalitaAssistZ, ↑ Controstampo
general_sizes_mould_dim_x, Larghezza stampo
general_sizes_mould_dim_y, Profondità stampo
general_sizes_mould_max_height, Altezza massima stampo
general_sizes_mould_min_height, Altezza negativa stampo
general_sizes_mould_base_height, Altezza base stampo
general_sizes_sheet_material, Materiale
general_sizes_sheet_dim_x, Larghezza lastra
general_sizes_sheet_dim_y, Profondità lastra
general_sizes_sheet_thickness, Spessore lastra
general_sizes_plate_type, Piastrafinestra
general_sizes_plate_dim_x, Larghezza piastrafinestra
general_sizes_plate_dim_x_button, Muovi
general_sizes_plate_dim_y, Profondità piastrafinestra
general_sizes_plate_dim_y_button, Muovi
general_sizes_frame_traverses, Traversino
general_sizes_frame_dim_x, Larghezza cornice
general_sizes_frame_dim_x_button, Muovi
general_sizes_frame_dim_y, Profondità cornice
general_sizes_frame_dim_y_button, Muovi
general_sizes_upperplate_max_height, Altezza controstampo
general_area_working_dxsx, Zona di lavoro
positions_mould_lower_position, Quota stampo basso
positions_mould_lower_speed, Velocità discesa
positions_mould_intermediate_position, Quota stampo intermedio
positions_mould_upper_position, Quota stampo alto
positions_mould_upper_speed, Velocità salita
positions_mould_upperdeceleration_position, Corsa rallentamento salita
positions_mould_upperdeceleration_speed, Velocità rallentamento salita
positions_mould_lowerdeceleration_position, Corsa rallentamento discesa
positions_mould_lowerdeceleration_speed, Velocità rallentamento discesa
positions_frame_lower_position, Quota cornice bassa
positions_frame_lower_speed, Velocità discesa
positions_frame_upper_position, Quota cornice alta
positions_frame_upper_speed, Velocità salita
positions_frame_intermediate_position, Quota cornice intermedia
positions_frame_intermediate_speed, Velocità per quota intermedia
positions_frame_unload_position, Quota cornice scarico
positions_upperplate_lower_position, Quota controstampo basso
positions_upperplate_lower_speed, Velocità discesa stampo
positions_upperplate_upper_position, Quota controstampo alto
positions_upperplate_upper_speed, Velocità salita controstampo
positions_upperplate_upperdeceleration_position, Corsa rallentamento salita controstampo
positions_upperplate_upperdeceleration_speed, Velocità rallentamento salita controstampo
positions_upperplate_lowerdeceleration_position, Corsa rallentamento discesa controstampo
positions_upperplate_lowerdeceleration_speed, Velocità rallentamento discesa controstampo
cycle_forming_type, Tipo ciclo
cycle_forming_pause_cycle, Pausa ciclo
cycle_forming_cooling_enabled, Raffreddamento a fine ciclo
cycle_forming_blowingbox_enabled, Ventilazione cassone a fine ciclo
cycle_acrylicframe_enabled, Acrilico
cycle_acrylicframe_time, Durata acrilico
cycle_upperoverheating_enabled, Abilitazione riscaldo superiore supplementare
cycle_upperoverheating_time, Durata riscaldo superiore supplementare
cycle_crystallisation_type, Secondo riscaldo
cycle_crystallisation_time, Durata secondo riscaldo
cycle_loader_enable, Caricatore
cycle_loader_lifter_lowerposition_delay, Ritardo discesa sollevatore
cycle_loader_lifter_upperposition_delay, Ritardo salita sollevatore
cycle_loader_split_sheet_time, Ritardo distacco lastra
cycle_loader_ejector_position, Quota espulsione
cycle_loader_pallet_height, Altezza bancale
cycle_loader_center_x, Centratura X
cycle_loader_center_y, Centratura Y
cycle_loader_checktichness_enabled, Controllo spessore
cycle_loader_suckers_vacuum, Abilitazione vuoto ventose
cycle_loader_ionizer_enabled, Abilitazione ionizzatore
cycle_loader_manualunloading_enabled, Scarico manuale
heats_lowerheaters_max_time, Durata massima riscaldo inferiore
heats_lowerheaters_movement_enabled, Movimento riscaldo inferiore
heats_lowerheaters_enabled, Accensione riscaldo inferiore
heats_lowerheaters_oscillation, Oscillazione riscaldo inferiore
heats_upperheaters_max_time, Durata massima riscaldo superiore
heats_upperheaters_movement_enabled, Movimento riscaldo superiore
heats_upperheaters_enabled, Accensione riscaldo superiore
heats_upperheaters_oscillation, Oscillazione riscaldo superiore
heats_decomsustain_type, Tipo
heats_decomsustain_decompression_flow, Portata sostentamento
heats_decomsustain_min_blowing_time, Durata minimo soffio
heats_decomsustain_sustain_delay, Ritardo sostentamento
heats_decomsustain_decompression_delay, Ritardo decompressione
heats_decomsustain_decompression_duration, Durata decompressione
heats_decomsustain_smoke_function_enabled, Funzione fumo
pyrometer_pyrometer_enabled, Abilitazione pirometro
pyrometer_pyrometer_setpoint, Setpoint pirometro
pyrometer_pyrometer_delay, Ritardo pirometro
pyrometer_upperthermoregulator_start_adjustment, Inizio termoregolazione
pyrometer_upperthermoregulator_end_adjustment, Fine termoregolazione
pyrometer_upperthermoregulator_min_percentage, Percentuale minima
pyrometer_upperthermoregulator_max_percentage, Percentuale massima
pyrometer_upperthermoregulator_sleep_enabled, Abilitazione riposo
pyrometer_upperthermoregulator_sleep_percentage, Percentuale riposo
pyrometer_lowerthermoregulator_start_adjustment, Inizio termoregolazione
pyrometer_lowerthermoregulator_end_adjustment, Fine termoregolazione
pyrometer_lowerthermoregulator_min_percentage, Percentuale minima
pyrometer_lowerthermoregulator_max_percentage, Percentuale massima
pyrometer_lowerthermoregulator_sleep_enabled, Abilitazione riposo
pyrometer_lowerthermoregulator_sleep_percentage, Percentuale riposo
pyrometer_upperthermoregulator_sleep_temperature, Temperatura riposo
pyrometer_upperthermoregulator_working_temperature, Temperatura lavoro
pyrometer_lowerthermoregulator_sleep_temperature, Temperatura riposo
pyrometer_lowerthermoregulator_working_temperature, Temperatura lavoro
drawing_type, Tipo imbutitura
drawing_height, Altezza pallone
drawing_delay, Ritardo imbutitura
drawing_1_chart_setpointx, Durata
drawing_1_chart_setpointy, Portata
drawing_photocell, Scelta fotocellula
drawing_mantaining_flow, Portata mantenimento
drawing_manual, Portata manuale
drawing_mould_up_delay, Ritardo salita stampo
upperplate_cycle_type, Tipo ciclo controstampo
upperplate_cycle_delay, Ritardo
upperplate_cycle_time, Durata
upperplate_air_enable, Abilitazione
upperplate_air_delay, Ritardo
upperplate_air_max_time, Durata massima
upperplate_air_1_chart_setpointx, Durata 1
upperplate_air_1_chart_setpointy, Portata 1
upperplate_air_2_chart_setpointx, Durata 2
upperplate_air_2_chart_setpointy, Portata 2
upperplate_air_3_chart_setpointx, Durata 3
upperplate_air_3_chart_setpointy, Portata 3
upperplate_air_manual, Portata manuale
upperplate_vacuum_enable, Abilitazione
upperplate_vacuum_delay, Ritardo
upperplate_vacuum_max_time, Durata massima
upperplate_vacuum_1_chart_setpointx, Durata 1
upperplate_vacuum_1_chart_setpointy, Portata 1
upperplate_vacuum_2_chart_setpointx, Durata 2
upperplate_vacuum_2_chart_setpointy, Portata 2
upperplate_vacuum_3_chart_setpointx, Durata 3
upperplate_vacuum_3_chart_setpointy, Portata 3
upperplate_vacuum_manual, Portata manuale
upperplate_extraction_enable, Abilitazione
upperplate_extraction_delay, Ritardo
upperplate_extraction_1_chart_setpointx, Durata
upperplate_extraction_1_chart_setpointy, Portata
upperplate_extraction_manual, Portata manuale
cooling_blowing_type, Ventilatori
cooling_blowing_delay, Ritardo
cooling_blowing_time, Durata
cooling_pyrometer_enabled, Abilitazione
cooling_pyrometer_setpoint, Setpoint
cooling_pyrometer_delay, Ritardo
cooling_nebulizer_type, Nebulizzatori
cooling_nebulizer_delay, Ritardo
cooling_nebulizer_time, Durata
cooling_telescopic_enable, Telescopici
cooling_telescopic_position, Quota 1
cooling_telescopic_swing_enable, Oscillazione ventilatori
cooling_telescopic_swing_stroke, Quota 2
cooling_shutter_1_opening_perc, Apertura 1
cooling_shutter_2_opening_perc, Apertura 2
cooling_shutter_3_opening_perc, Apertura 3
cooling_shutter_4_opening_perc, Apertura 4
cooling_shutter_5_opening_perc, Apertura 5
cooling_shutter_6_opening_perc, Apertura 6
cooling_shutter_7_opening_perc, Apertura 7
cooling_shutter_8_opening_perc, Apertura 8
cooling_shutter_9_opening_perc, Apertura 9
cooling_shutter_10_opening_perc, Apertura 10
cooling_shutter_11_opening_perc, Apertura 11
cooling_shutter_12_opening_perc, Apertura 12
cooling_shutter_13_opening_perc, Apertura 13
cooling_shutter_14_opening_perc, Apertura 14
cooling_shutter_15_opening_perc, Apertura 15
cooling_shutter_16_opening_perc, Apertura 16
vacuum_main_start, Partenza
vacuum_main_delay, Ritardo
vacuum_main_max_time, Durata massima
vacuum_main_1_chart_setpointx, Durata 1
vacuum_main_1_chart_setpointy, Portata 1
vacuum_main_2_chart_setpointx, Durata 2
vacuum_main_2_chart_setpointy, Portata 2
vacuum_main_3_chart_setpointx, Durata 3
vacuum_main_3_chart_setpointy, Portata 3
vacuum_main_manual, Portata manuale
vacuum_direct_enabled, Abilitazione
vacuum_direct_delay, Ritardo
vacuum_direct_time, Durata
vacuum_aux_enabled, Abilitazione
vacuum_aux_delay, Ritardo
vacuum_aux_max_time, Durata massima
vacuum_aux_1_chart_setpointx, Durata 1
vacuum_aux_1_chart_setpointy, Portata 1
vacuum_aux_2_chart_setpointx, Durata 2
vacuum_aux_2_chart_setpointy, Portata 2
vacuum_aux_3_chart_setpointx, Durata 3
vacuum_aux_3_chart_setpointy, Portata 3
vacuum_aux_manual, Portata manuale
vacuum_pre_enabled, Abilitazione
vacuum_pre_delay, Ritardo
vacuum_pre_max_time, Durata massima
vacuum_pre_1_chart_setpointx, Durata 1
vacuum_pre_1_chart_setpointy, Portata 1
vacuum_pre_2_chart_setpointx, Durata 2
vacuum_pre_2_chart_setpointy, Portata 2
vacuum_pre_3_chart_setpointx, Durata 3
vacuum_pre_3_chart_setpointy, Durata 3
extraction_main_type, Tipo estrazione
extraction_main_mould_dw_delay, Ritardo discesa stampo
extraction_main_delay, Ritardo
extraction_main_1_chart_setpointx, Durata
extraction_main_1_chart_setpointy, Portata
extraction_main_manual, Portata manuale
extraction_aux_enabled, Abilitazione
extraction_aux_delay, Ritardo
extraction_aux_1_chart_setpointx, Durata
extraction_aux_1_chart_setpointy, Portata
extraction_aux_manual, Portata manuale
options_undercutmould_1_mode, Modalità
options_undercutmould_1_position, Quota
options_undercutmould_1_delay_acti, Ritardo attivazione
options_undercutmould_1_delay_dis, Ritardo disattivazione
options_undercutmould_2_mode, Modalità
options_undercutmould_2_position, Quota
options_undercutmould_2_delay_acti, Ritardo attivazione
options_undercutmould_2_delay_dis, Ritardo disattivazione
options_undercutmould_3_mode, Modalità
options_undercutmould_3_position, Quota
options_undercutmould_3_delay_acti, Ritardo attivazione
options_undercutmould_3_delay_dis, Ritardo disattivazione
options_undercutmould_4_mode, Modalità
options_undercutmould_4_position, Quota
options_undercutmould_4_delay_acti, Ritardo attivazione
options_undercutmould_4_delay_dis, Ritardo disattivazione
options_undercutmould_5_mode, Modalità
options_undercutmould_5_position, Quota
options_undercutmould_5_delay_acti, Ritardo attivazione
options_undercutmould_5_delay_dis, Ritardo disattivazione
options_undercutmould_6_mode, Modalità
options_undercutmould_6_position, Quota
options_undercutmould_6_delay_acti, Ritardo attivazione
options_undercutmould_6_delay_dis, Ritardo disattivazione
options_undercutmould_7_mode, Modalità
options_undercutmould_7_position, Quota
options_undercutmould_7_delay_acti, Ritardo attivazione
options_undercutmould_7_delay_dis, Ritardo disattivazione
options_undercutmould_8_mode, Modalità
options_undercutmould_8_position, Quota
options_undercutmould_8_delay_acti, Ritardo attivazione
options_undercutmould_8_delay_dis, Ritardo disattivazione
options_undercutmould_9_mode, Modalità
options_undercutmould_9_position, Quota
options_undercutmould_9_delay_acti, Ritardo attivazione
options_undercutmould_9_delay_dis, Ritardo disattivazione
options_undercutmould_10_mode, Modalità
options_undercutmould_10_position, Quota
options_undercutmould_10_delay_acti, Ritardo attivazione
options_undercutmould_10_delay_dis, Ritardo disattivazione
options_undercutupperplate_1_mode, Modalità
options_undercutupperplate_1_position, Quota
options_undercutupperplate_1_delay_acti, Ritardo attivazione
options_undercutupperplate_1_delay_dis, Ritardo disattivazione
options_undercutupperplate_2_mode, Modalità
options_undercutupperplate_2_position, Quota
options_undercutupperplate_2_delay_acti, Ritardo attivazione
options_undercutupperplate_2_delay_dis, Ritardo disattivazione
options_undercutupperplate_3_mode, Modalità
options_undercutupperplate_3_position, Quota
options_undercutupperplate_3_delay_acti, Ritardo attivazione
options_undercutupperplate_3_delay_dis, Ritardo disattivazione
options_undercutupperplate_4_mode, Modalità
options_undercutupperplate_4_position, Quota
options_undercutupperplate_4_delay_acti, Ritardo attivazione
options_undercutupperplate_4_delay_dis, Ritardo disattivazione
options_undercutupperplate_5_mode, Modalità
options_undercutupperplate_5_position, Quota
options_undercutupperplate_5_delay_acti, Ritardo attivazione
options_undercutupperplate_5_delay_dis, Ritardo disattivazione
options_undercutupperplate_6_mode, Modalità
options_undercutupperplate_6_position, Quota
options_undercutupperplate_6_delay_acti, Ritardo attivazione
options_undercutupperplate_6_delay_dis, Ritardo disattivazione
options_undercutupperplate_7_mode, Modalità
options_undercutupperplate_7_position, Quota
options_undercutupperplate_7_delay_acti, Ritardo attivazione
options_undercutupperplate_7_delay_dis, Ritardo disattivazione
options_undercutupperplate_8_mode, Modalità
options_undercutupperplate_8_position, Quota
options_undercutupperplate_8_delay_acti, Ritardo attivazione
options_undercutupperplate_8_delay_dis, Ritardo disattivazione
options_undercutupperplate_9_mode, Modalità
options_undercutupperplate_9_position, Quota
options_undercutupperplate_9_delay_acti, Ritardo attivazione
options_undercutupperplate_9_delay_dis, Ritardo disattivazione
options_undercutupperplate_10_mode, Modalità
options_undercutupperplate_10_position, Quota
options_undercutupperplate_10_delay_acti, Ritardo attivazione
options_undercutupperplate_10_delay_dis, Ritardo disattivazione
options_thermoregulator_1_enabled, Abilitazione
options_thermoregulator_1_setpoint, Setpoint
options_thermoregulator_2_enabled, Abilitazione
options_thermoregulator_2_setpoint, Setpoint
options_thermoregulator_3_enabled, Abilitazione
options_thermoregulator_3_setpoint, Setpoint
options_thermoregulator_4_enabled, Abilitazione
options_thermoregulator_4_setpoint, Setpoint
options_thermoregulator_5_enabled, Abilitazione
options_thermoregulator_5_setpoint, Setpoint
options_thermoregulator_6_enabled, Abilitazione
options_thermoregulator_6_setpoint, Setpoint
options_thermoregulator_7_enabled, Abilitazione
options_thermoregulator_7_setpoint, Setpoint
options_thermoregulator_8_enabled, Abilitazione
options_thermoregulator_8_setpoint, Setpoint
options_thermoregulator_9_enabled, Abilitazione
options_thermoregulator_9_setpoint, Setpoint
options_thermoregulator_10_enabled, Abilitazione
options_thermoregulator_10_setpoint, Setpoint
+650
View File
@@ -0,0 +1,650 @@
001, ALARM AXIS ID W1
002, ALARM AXIS ID W2
003, ALARM AXIS ID W3
004, ALARM AXIS ID W4
005, ALARM AXIS ID Z1
006, ALARM AXIS ID Z2
007, ALARM AXIS ID Z3
008, ALARM AXIS ID Z4
009, ALARM AXIS ID R1
010, ALARM AXIS ID R2
011, ALARM AXIS ID S1
012, ALARM AXIS ID S2
013, ALARM AXIS ID CZ1
014, ALARM AXIS ID CZ2
015, ALARM AXIS ID CZ3
016, ALARM AXIS ID CZ4
017, ALARM AXIS ID U1
018, ALARM AXIS ID U2
019, ALARM AXIS ID P
020, ALARM AXIS ID X
021, ALARM AXIS ID CX1
022, ALARM AXIS ID CX2
023, ALARM AXIS ID CY1
024, ALARM AXIS ID CY2
025, ALARM AXIS ID F1
026, ALARM AXIS ID F2
027, ALARM AXIS ID F3
028, ALARM AXIS ID F4
029, ALARM AXIS ID F11
030, ALARM AXIS ID F12
031, ALARM AXIS ID F13
032, ALARM AXIS ID F14
033, ALARM AXIS ID E
034, ALARM AXIS ID M
035, ALARM AXIS ID 35
036, ALARM AXIS ID 36
037, ALARM AXIS ID 37
038, ALARM AXIS ID 38
039, ALARM AXIS ID 39
040, ALARM AXIS ID 40
041, ALARM AXIS ID 41
042, ALARM AXIS ID 42
043, ALARM AXIS ID 43
044, ALARM AXIS ID 44
045, ALARM AXIS ID 45
046, ALARM AXIS ID 46
047, ALARM AXIS ID 47
048, ALARM AXIS ID 48
049, ALARM AXIS ID 49
050, ALARM AXIS ID 50
051, ALARM AXIS ID 51
052, ALARM AXIS ID 52
053, ALARM AXIS ID 53
054, ALARM AXIS ID 54
055, ALARM AXIS ID 55
056, ALARM AXIS ID 56
057, ALARM AXIS ID 57
058, ALARM AXIS ID 58
059, ALARM AXIS ID 59
060, ALARM AXIS ID 60
061, ALARM AXIS ID 61
062, ALARM AXIS ID 62
063, ALARM AXIS ID 63
064, ALARM AXIS ID 64
065, ONE OR MORE AXIS NOT REFERRED
066, ONE OR MORE GANTRY NOT ALIGNED
067, ONE OR MORE GANTRY IN ERROR
068, BRAKE TEST FAILED - CONTACT CMS
069, Message Not found N.69
070, Message Not found N.70
071, Message Not found N.71
072, Message Not found N.72
073, Message Not found N.73
074, Message Not found N.74
075, Message Not found N.75
076, Message Not found N.76
077, Message Not found N.77
078, Message Not found N.78
079, Message Not found N.79
080, Message Not found N.80
081, Message Not found N.81
082, Message Not found N.82
083, Message Not found N.83
084, Message Not found N.84
085, Message Not found N.85
086, Message Not found N.86
087, Message Not found N.87
088, Message Not found N.88
089, Message Not found N.89
090, Message Not found N.90
091, Message Not found N.91
092, Message Not found N.92
093, Message Not found N.93
094, Message Not found N.94
095, Message Not found N.95
096, Message Not found N.96
097, Message Not found N.97
098, Message Not found N.98
099, Message Not found N.99
100, Message Not found N.100
101, Message Not found N.101
102, Message Not found N.102
103, Message Not found N.103
104, Message Not found N.104
105, Message Not found N.105
106, Message Not found N.106
107, Message Not found N.107
108, Message Not found N.108
109, Message Not found N.109
110, Message Not found N.110
111, Message Not found N.111
112, Message Not found N.112
113, Message Not found N.113
114, Message Not found N.114
115, Message Not found N.115
116, Message Not found N.116
117, Message Not found N.117
118, Message Not found N.118
119, Message Not found N.119
120, Message Not found N.120
121, Message Not found N.121
122, Message Not found N.122
123, Message Not found N.123
124, Message Not found N.124
125, Message Not found N.125
126, Message Not found N.126
127, Message Not found N.127
128, Message Not found N.128
129, Message Not found N.129
130, Message Not found N.130
131, Message Not found N.131
132, Message Not found N.132
133, Message Not found N.133
134, Message Not found N.134
135, Message Not found N.135
136, Message Not found N.136
137, Message Not found N.137
138, Message Not found N.138
139, Message Not found N.139
140, Message Not found N.140
141, Message Not found N.141
142, Message Not found N.142
143, Message Not found N.143
144, Message Not found N.144
145, Message Not found N.145
146, Message Not found N.146
147, Message Not found N.147
148, Message Not found N.148
149, Message Not found N.149
150, Message Not found N.150
151, Message Not found N.151
152, Message Not found N.152
153, Message Not found N.153
154, Message Not found N.154
155, Message Not found N.155
156, Message Not found N.156
157, Message Not found N.157
158, Message Not found N.158
159, Message Not found N.159
160, Message Not found N.160
161, Message Not found N.161
162, Message Not found N.162
163, Message Not found N.163
164, Message Not found N.164
165, Message Not found N.165
166, Message Not found N.166
167, Message Not found N.167
168, Message Not found N.168
169, Message Not found N.169
170, Message Not found N.170
171, Message Not found N.171
172, Message Not found N.172
173, Message Not found N.173
174, Message Not found N.174
175, Message Not found N.175
176, Message Not found N.176
177, Message Not found N.177
178, Message Not found N.178
179, Message Not found N.179
180, Message Not found N.180
181, Message Not found N.181
182, Message Not found N.182
183, Message Not found N.183
184, Message Not found N.184
185, Message Not found N.185
186, Message Not found N.186
187, Message Not found N.187
188, Message Not found N.188
189, Message Not found N.189
190, Message Not found N.190
191, Message Not found N.191
192, Message Not found N.192
193, Message Not found N.193
194, Message Not found N.194
195, Message Not found N.195
196, Message Not found N.196
197, Message Not found N.197
198, Message Not found N.198
199, Message Not found N.199
200, PARAMETERS NOT INITIALIZED
201, PLC COMMUNICATION ERROR
202, PROFINET COMMUNICATION ERROR
203, THERMOREGULATOR COMMUNICATION ERROR
204, KEYBOARD COMMUNICATION ERROR
205, HEATERS COMMUNICATION ERROR
206, Message Not found N.206
207, Message Not found N.207
208, Message Not found N.208
209, Message Not found N.209
210, Message Not found N.210
211, Message Not found N.211
212, Message Not found N.212
213, Message Not found N.213
214, Message Not found N.214
215, Message Not found N.215
216, Message Not found N.216
217, Message Not found N.217
218, Message Not found N.218
219, Message Not found N.219
220, Message Not found N.220
221, Message Not found N.221
222, Message Not found N.222
223, Message Not found N.223
224, Message Not found N.224
225, Message Not found N.225
226, Message Not found N.226
227, Message Not found N.227
228, Message Not found N.228
229, Message Not found N.229
230, Message Not found N.230
231, Message Not found N.231
232, Message Not found N.232
233, Message Not found N.233
234, Message Not found N.234
235, Message Not found N.235
236, Message Not found N.236
237, Message Not found N.237
238, Message Not found N.238
239, Message Not found N.239
240, Message Not found N.240
241, Message Not found N.241
242, Message Not found N.242
243, Message Not found N.243
244, Message Not found N.244
245, Message Not found N.245
246, Message Not found N.246
247, Message Not found N.247
248, Message Not found N.248
249, Message Not found N.249
250, Message Not found N.250
251, Message Not found N.251
252, Message Not found N.252
253, Message Not found N.253
254, Message Not found N.254
255, Message Not found N.255
256, Message Not found N.256
257, Message Not found N.257
258, Message Not found N.258
259, Message Not found N.259
260, Message Not found N.260
261, Message Not found N.261
262, Message Not found N.262
263, Message Not found N.263
264, Message Not found N.264
265, Message Not found N.265
266, Message Not found N.266
267, Message Not found N.267
268, Message Not found N.268
269, Message Not found N.269
270, Message Not found N.270
271, Message Not found N.271
272, Message Not found N.272
273, Message Not found N.273
274, Message Not found N.274
275, Message Not found N.275
276, Message Not found N.276
277, Message Not found N.277
278, Message Not found N.278
279, Message Not found N.279
280, Message Not found N.280
281, Message Not found N.281
282, Message Not found N.282
283, Message Not found N.283
284, Message Not found N.284
285, Message Not found N.285
286, Message Not found N.286
287, Message Not found N.287
288, Message Not found N.288
289, Message Not found N.289
290, Message Not found N.290
291, Message Not found N.291
292, Message Not found N.292
293, Message Not found N.293
294, Message Not found N.294
295, Message Not found N.295
296, Message Not found N.296
297, Message Not found N.297
298, Message Not found N.298
299, Message Not found N.299
300, UPPER HEATER PHOTOCELL
301, LOWER HEATER PHOTOCELL
302, TROLLEY MOVEMENT SAFETY ALARM
303, SHEET POSITIONING NOT POSSIBLE
304, BUBBLE FAN INVERTER ERROR
305, COOLING FAN INVERTER ERROR
306, HEATERS RETRACT FAILED
307, SUCKERS NOT LOCKED
308, LOWER HEATER NOT IN POSITION
309, UPPER HEATER NOT IN POSITION
310, INSUFFICIENT LINE AIR PRESSURE
311, PARKING REQUIRED
312, RECIPE NOT VALID
313, Message Not found N.313
314, Message Not found N.314
315, Message Not found N.315
316, Message Not found N.316
317, Message Not found N.317
318, Message Not found N.318
319, Message Not found N.319
320, Message Not found N.320
321, Message Not found N.321
322, Message Not found N.322
323, Message Not found N.323
324, Message Not found N.324
325, Message Not found N.325
326, Message Not found N.326
327, Message Not found N.327
328, Message Not found N.328
329, Message Not found N.329
330, Message Not found N.330
331, Message Not found N.331
332, Message Not found N.332
333, Message Not found N.333
334, Message Not found N.334
335, Message Not found N.335
336, Message Not found N.336
337, Message Not found N.337
338, Message Not found N.338
339, Message Not found N.339
340, Message Not found N.340
341, Message Not found N.341
342, Message Not found N.342
343, Message Not found N.343
344, Message Not found N.344
345, Message Not found N.345
346, Message Not found N.346
347, Message Not found N.347
348, Message Not found N.348
349, Message Not found N.349
350, MOULDED PART ON UNLOADER
351, MOULDED PART ON TROLLEY
352, MISSING CENTER VACUUM
353, MISSING SUCKERS VACUUM
354, SHEET NOT FOUND
355, AUTOMATIC CYCLE WITH HEATERS OFF
356, SUCKERS-HIGH PROXY MISSING
357, MOULD/LOWER HEATER COLLISION WARNING
358, UPPERPLATE/UPPER HEATER COLLISION WARNING
359, TROLLEY/FRAME COLLISION WARNING
360, MOULD/LOWER HEATER COLLISION WARNING (WENGLOR)
361, DANGER OF SHEET FALL
362, WINDOWPLATE NOT IN POSITION
363, FRAME NOT IN POSITION
364, Message Not found N.364
365, Message Not found N.365
366, Message Not found N.366
367, Message Not found N.367
368, Message Not found N.368
369, Message Not found N.369
370, Message Not found N.370
371, Message Not found N.371
372, Message Not found N.372
373, Message Not found N.373
374, Message Not found N.374
375, Message Not found N.375
376, Message Not found N.376
377, Message Not found N.377
378, Message Not found N.378
379, Message Not found N.379
380, Message Not found N.380
381, Message Not found N.381
382, Message Not found N.382
383, Message Not found N.383
384, Message Not found N.384
385, Message Not found N.385
386, Message Not found N.386
387, Message Not found N.387
388, Message Not found N.388
389, Message Not found N.389
390, Message Not found N.390
391, Message Not found N.391
392, Message Not found N.392
393, Message Not found N.393
394, Message Not found N.394
395, Message Not found N.395
396, Message Not found N.396
397, Message Not found N.397
398, Message Not found N.398
399, Message Not found N.399
400, VACUUM PUMP 1 SUPPLY
401, VACUUM PUMP 2 SUPPLY
402, VACUUM PUMP 3 SUPPLY
403, ELECTRICAL CABINET TEMPERATURE (1)
404, ELECTRICAL CABINET TEMPERATURE (2)
405, COOLER 1 SUPPLY
406, COOLER 2 SUPPLY
407, COOLER 3 SUPPLY
408, COOLER 4 SUPPLY
409, Message Not found N.409
410, BOX COOLER 1 SUPPLY
411, BOX COOLER 2 SUPPLY
412, Message Not found N.412
413, Message Not found N.413
414, Message Not found N.414
415, IONIZER SUPPLY
416, PLIERS OPENING ERROR
417, FRAME HOOK OPENING ERROR
418, CENTERING CYLINDERS NOT FORWARD
419, CENTERING CYLINDERS NOT BACKWARD
420, VACUUM PUMP 1 OIL LEVEL
421, VACUUM PUMP 2 OIL LEVEL
422, VACUUM PUMP 3 OIL LEVEL
423, GREASE LEVEL W LOW
424, GREASE PRESSURE W LOW
425, GREASE LEVEL Z LOW
426, GREASE PRESSURE Z LOW
427, THERMOREGULATORS ALARM
428, UPS NOT READY
429, VACUUM VALVE MALFUNCTION
430, EXTRACTION VALVE MALFUNCTION
431, HEATING PYROMETER MALFUNCTION
432, COOLING PYROMETER MALFUNCTION
433, DRAWING PHOTOCELL MALFUNCTION
434, Message Not found N.434
435, HEATERS NOT OK
436, SUCKERS UNLOCKING ERROR
437, SUCKERS LOCKING ERROR
438, Message Not found N.438
439, Message Not found N.439
440, Message Not found N.440
441, Message Not found N.441
442, Message Not found N.442
443, Message Not found N.443
444, Message Not found N.444
445, Message Not found N.445
446, Message Not found N.446
447, Message Not found N.447
448, Message Not found N.448
449, Message Not found N.449
450, Message Not found N.450
451, Message Not found N.451
452, Message Not found N.452
453, Message Not found N.453
454, Message Not found N.454
455, Message Not found N.455
456, Message Not found N.456
457, Message Not found N.457
458, Message Not found N.458
459, Message Not found N.459
460, Message Not found N.460
461, Message Not found N.461
462, Message Not found N.462
463, Message Not found N.463
464, Message Not found N.464
465, Message Not found N.465
466, Message Not found N.466
467, Message Not found N.467
468, Message Not found N.468
469, Message Not found N.469
470, Message Not found N.470
471, Message Not found N.471
472, Message Not found N.472
473, Message Not found N.473
474, Message Not found N.474
475, Message Not found N.475
476, Message Not found N.476
477, Message Not found N.477
478, Message Not found N.478
479, Message Not found N.479
480, Message Not found N.480
481, Message Not found N.481
482, Message Not found N.482
483, Message Not found N.483
484, Message Not found N.484
485, Message Not found N.485
486, Message Not found N.486
487, Message Not found N.487
488, Message Not found N.488
489, Message Not found N.489
490, Message Not found N.490
491, Message Not found N.491
492, Message Not found N.492
493, Message Not found N.493
494, Message Not found N.494
495, Message Not found N.495
496, Message Not found N.496
497, Message Not found N.497
498, Message Not found N.498
499, Message Not found N.499
500, VACUUM PUMP 1 MAINTENANCE REQUIRED
501, VACUUM PUMP 2 MAINTENANCE REQUIRED
502, VACUUM PUMP 3 MAINTENANCE REQUIRED
503, Message Not found N.503
504, Message Not found N.504
505, Message Not found N.505
506, Message Not found N.506
507, Message Not found N.507
508, Message Not found N.508
509, Message Not found N.509
510, Message Not found N.510
511, Message Not found N.511
512, Message Not found N.512
513, Message Not found N.513
514, Message Not found N.514
515, Message Not found N.515
516, Message Not found N.516
517, Message Not found N.517
518, Message Not found N.518
519, Message Not found N.519
520, Message Not found N.520
521, Message Not found N.521
522, Message Not found N.522
523, Message Not found N.523
524, Message Not found N.524
525, Message Not found N.525
526, Message Not found N.526
527, Message Not found N.527
528, Message Not found N.528
529, Message Not found N.529
530, Message Not found N.530
531, Message Not found N.531
532, Message Not found N.532
533, Message Not found N.533
534, Message Not found N.534
535, Message Not found N.535
536, Message Not found N.536
537, Message Not found N.537
538, Message Not found N.538
539, Message Not found N.539
540, Message Not found N.540
541, Message Not found N.541
542, Message Not found N.542
543, Message Not found N.543
544, Message Not found N.544
545, Message Not found N.545
546, Message Not found N.546
547, Message Not found N.547
548, Message Not found N.548
549, Message Not found N.549
550, Message Not found N.550
551, EMERGENCY BUTTON
552, UPPERPLATE EQUIPMENT ERROR
553, UPPERPLATE LOCKING ERROR
554, UPPERPLATE UNLOCKING ERROR
555, SAFETY OUTPUT MONITORING ERROR
556, SAFETY SIGNALS NOT OK
557, SMOKE EXTRACTOR NOT ACTIVE
558, Message Not found N.558
559, Message Not found N.559
560, Message Not found N.560
561, Message Not found N.561
562, Message Not found N.562
563, Message Not found N.563
564, Message Not found N.564
565, Message Not found N.565
566, Message Not found N.566
567, Message Not found N.567
568, Message Not found N.568
569, Message Not found N.569
570, Message Not found N.570
571, Message Not found N.571
572, Message Not found N.572
573, Message Not found N.573
574, Message Not found N.574
575, Message Not found N.575
576, Message Not found N.576
577, Message Not found N.577
578, Message Not found N.578
579, Message Not found N.579
580, Message Not found N.580
581, Message Not found N.581
582, Message Not found N.582
583, Message Not found N.583
584, Message Not found N.584
585, Message Not found N.585
586, Message Not found N.586
587, Message Not found N.587
588, Message Not found N.588
589, Message Not found N.589
590, Message Not found N.590
591, Message Not found N.591
592, Message Not found N.592
593, Message Not found N.593
594, Message Not found N.594
595, Message Not found N.595
596, Message Not found N.596
597, Message Not found N.597
598, Message Not found N.598
599, Message Not found N.599
600, Message Not found N.600
601, Message Not found N.601
602, Message Not found N.602
603, Message Not found N.603
604, Message Not found N.604
605, Message Not found N.605
606, Message Not found N.606
607, Message Not found N.607
608, Message Not found N.608
609, Message Not found N.609
610, Message Not found N.610
611, Message Not found N.611
612, Message Not found N.612
613, Message Not found N.613
614, Message Not found N.614
615, Message Not found N.615
616, Message Not found N.616
617, Message Not found N.617
618, Message Not found N.618
619, Message Not found N.619
620, Message Not found N.620
621, Message Not found N.621
622, Message Not found N.622
623, Message Not found N.623
624, Message Not found N.624
625, Message Not found N.625
626, Message Not found N.626
627, Message Not found N.627
628, Message Not found N.628
629, Message Not found N.629
630, Message Not found N.630
631, Message Not found N.631
632, Message Not found N.632
633, Message Not found N.633
634, Message Not found N.634
635, Message Not found N.635
636, Message Not found N.636
637, Message Not found N.637
638, Message Not found N.638
639, Message Not found N.639
640, Message Not found N.640
641, Message Not found N.641
642, Message Not found N.642
643, Message Not found N.643
644, Message Not found N.644
645, Message Not found N.645
646, Message Not found N.646
647, Message Not found N.647
648, Message Not found N.648
649, Message Not found N.649
650, Message Not found N.650
+22 -22
View File
@@ -304,12 +304,12 @@
304, MALFUNZIONAMENTO VENTILATORE IMBUTITURA/SOSTENTAMENTO
305, MALFUNZIONAMENTO VENTILATORE CENTRALIZZATO
306, ARRETRAMENTO RISCALDI FALLITO
307, ERRORE BLOCCAGGIO TELAIO VENTOSE
307, TELAIO VENTOSE NON BLOCCATO
308, RISCALDO INFERIORE NON IN POSIZIONE
309, RISCALDO SUPERIORE NON IN POSIZIONE
310, PRESSIONE ARIA INSUFFICIENTE
311, CICLO DI RESET MACCHINA RICHIESTO
312, Message Not found N.312
311, PARCHEGGIO MACCHINA RICHIESTO
312, RICETTA NON VALIDA
313, Message Not found N.313
314, Message Not found N.314
315, Message Not found N.315
@@ -358,9 +358,9 @@
358, PERICOLO COLLISIONE CONTROSTAMPO/RISCALDO SUPERIORE
359, PERICOLO COLLISIONE CARRELLO/CORNICE
360, PERICOLO COLLISIONE STAMPO/RISCALDO INFERIORE (WENGLOR)
361, Message Not found N.361
362, Message Not found N.362
363, Message Not found N.363
361, PERICOLO CADUTA LASTRA SOSPESA
362, PIASTRAFINESTRA NON IN POSIZIONE
363, CORNICE NON IN POSIZIONE
364, Message Not found N.364
365, Message Not found N.365
366, Message Not found N.366
@@ -397,26 +397,26 @@
397, Message Not found N.397
398, Message Not found N.398
399, Message Not found N.399
400, ALLARME ALIMENTAZIONE POMPA VUOTO 1
401, ALLARME ALIMENTAZIONE POMPA VUOTO 2
402, ALLARME ALIMENTAZIONE POMPA VUOTO 3
403, ALLARME TEMPERATURA 1 ARMADIO
404, ALLARME TEMPERATURA 2 ARMADIO
405, ALLARME ALIMENTAZIONE VENTILATORI 1
406, ALLARME ALIMENTAZIONE VENTILATORI 2
407, ALLARME ALIMENTAZIONE VENTILATORI 3
408, ALLARME ALIMENTAZIONE VENTILATORI 4
400, ALIMENTAZIONE POMPA VUOTO 1
401, ALIMENTAZIONE POMPA VUOTO 2
402, ALIMENTAZIONE POMPA VUOTO 3
403, TEMPERATURA ARMADIO (1)
404, TEMPERATURA ARMADIO (2)
405, ALIMENTAZIONE VENTILATORI 1
406, ALIMENTAZIONE VENTILATORI 2
407, ALIMENTAZIONE VENTILATORI 3
408, ALIMENTAZIONE VENTILATORI 4
409, Message Not found N.409
410, ALLARME ALIMENTAZIONE VENTILATORE 1 CASSONE
411, ALLARME ALIMENTAZIONE VENTILATORE 2 CASSONE
410, ALIMENTAZIONE VENTILATORE 1 CASSONE
411, ALIMENTAZIONE VENTILATORE 2 CASSONE
412, Message Not found N.412
413, Message Not found N.413
414, Message Not found N.414
415, ALLARME ALIMENTAZIONE IONIZZATORE
415, ALIMENTAZIONE IONIZZATORE
416, ERRORE APERTURA PINZE
417, ERRORE APERTURA GANCIO CORNICE
418, CENTRATORE NON AVANTI
419, CENTRATORE NON INDIETRO
418, CILINDRI CENTRATORE NON AVANTI
419, CILINDRI CENTRATORE NON INDIETRO
420, LIVELLO OLIO POMPA VUOTO 1
421, LIVELLO OLIO POMPA VUOTO 2
422, LIVELLO OLIO POMPA VUOTO 3
@@ -549,10 +549,10 @@
549, Message Not found N.549
550, Message Not found N.550
551, PULSANTE EMERGENZA
552, ERRORE ATTR. CONTROSTAMPO
552, ERRORE ATTREZZATURA CONTROSTAMPO
553, ERRORE BLOCCO CONTROSTAMPO
554, ERRORE SBLOCCO CONTROSTAMPO
555, DISPOSITIVO DI SICUREZZA NON OK
555, MONITORAGGIO USCITE SICURE
556, SEGNALI SAFE NON OK
557, ASPIRAZIONE FUMI NON ATTIVA
558, Message Not found N.558
@@ -5,8 +5,10 @@ using System.Diagnostics;
using System.Linq;
using System.Threading;
using TeamDev.SDK.FluentProgramming;
using Thermo.Active.CmsConnectGateway;
using Thermo.Active.Config;
using Thermo.Active.Controllers.SignalR;
using Thermo.Active.Database.Controllers;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.Model.DTOModels.AlarmModels;
using Thermo.Active.Model.DTOModels.Scada;
@@ -33,6 +35,13 @@ namespace Thermo.Active.Listeners.SignalR
LastAlarms = LastAlarms.IntersectModels(newAlarmsData as DTOAlarmsModel);
// Send data to clients
context.Clients.Group("ncData").alarms(LastAlarms);
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady)
{
RedisController.WriteCurrentAlarms(CMSConnectConstants.ConvertThermoToConnectAlarms(newAlarmsData));
RedisController.WriteCurrentMachineAlarmPath(CMSConnectConstants.ConvertThermoToConnectMachineAlarm(newAlarmsData));
}
}
}
@@ -46,6 +55,11 @@ namespace Thermo.Active.Listeners.SignalR
LastPowerOnData = powerOnData as DTOPowerOnDataModel;
// Send data to clients
context.Clients.Group("ncData").powerOn(powerOnData);
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady)
{
RedisController.WriteCurrentMachineEmergencyPath(LastPowerOnData.PrePowerOn.EmergencyButtons.Active);
}
}
}
@@ -297,6 +311,7 @@ namespace Thermo.Active.Listeners.SignalR
recipeHasChanged = currMessage.hasChanged;
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").recipeChangedData(currMessage);
}
}
@@ -441,6 +456,14 @@ namespace Thermo.Active.Listeners.SignalR
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").prodPanelData(currProdPanel);
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady && currProdPanel.NumDone > 0 && currProdPanel.NumDone != LastProdPanelData.NumDone)
{
var ts = DateTime.UtcNow.ToString("o");
var a = "{\"v\": { \"PART_COUNT\": 1}\"ts\": " + ts + "}";
RedisController.WriteMachineEventKpis(a);
}
}
}
public static void SendThermoProdInfoData(object prodInfoData)
@@ -465,6 +488,15 @@ namespace Thermo.Active.Listeners.SignalR
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").prodCycleData(currProdCycle);
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady)
{
RedisController.WriteCurrentMachineStatus(CMSConnectConstants.ConvertThermoToConnectStatus(currProdCycle.Status));
RedisController.WriteCurrentMachinePowerPath(CMSConnectConstants.ConvertThermoToConnectPower(currProdCycle.Status));
RedisController.WriteCurrentProcessStatus(1,CMSConnectConstants.ConvertThermoToConnectProcessStatus(currProdCycle.Status));
RedisController.WriteCurrentProcessMode(1,CMSConnectConstants.ConvertThermoToConnectProcessMode(currProdCycle.Mode));
}
}
}
@@ -495,6 +527,11 @@ namespace Thermo.Active.Listeners.SignalR
LastAxisInfoData = currInfoAxes.Keys.ToDictionary(_ => _, _ => currInfoAxes[_].Clone());
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").axisInfo(diffAxisData);
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady)
{
RedisController.WriteCurrentAxisStatus(LastAxisInfoData);
}
}
}
@@ -577,6 +614,16 @@ namespace Thermo.Active.Listeners.SignalR
// THERMO prod cycle data
group.prodCycleData(LastProdCycleData);
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady)
{
RedisController.WriteCurrentAlarms(CMSConnectConstants.ConvertThermoToConnectAlarms(LastAlarms));
RedisController.WriteCurrentMachineAlarmPath(CMSConnectConstants.ConvertThermoToConnectMachineAlarm(LastAlarms));
RedisController.WriteCurrentMachineStatus(CMSConnectConstants.ConvertThermoToConnectStatus(LastProdCycleData.Status));
RedisController.WriteCurrentMachinePowerPath(CMSConnectConstants.ConvertThermoToConnectPower(LastProdCycleData.Status));
RedisController.WriteCurrentProcessStatus(1, CMSConnectConstants.ConvertThermoToConnectProcessStatus(LastProdCycleData.Status));
RedisController.WriteCurrentProcessMode(1, CMSConnectConstants.ConvertThermoToConnectProcessMode(LastProdCycleData.Mode));
}
Debug.WriteLine(string.Format("{0} {1} Broadcast..completed", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), DateTime.Now.Millisecond));
Monitor.Exit(_broadcastlock);
}
+1 -1
View File
@@ -30,4 +30,4 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("0.100.114")]
[assembly: AssemblyVersion("0.105.127")]
+16 -1
View File
@@ -114,7 +114,8 @@
<HintPath>..\packages\microsoft-web-helpers.2.1.20710.2\lib\net40\Microsoft.Web.Helpers.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
@@ -226,6 +227,7 @@
<Compile Include="Controllers\WebApi\ModulesController.cs" />
<Compile Include="Controllers\WebApi\ProdController.cs" />
<Compile Include="Controllers\WebApi\StarredUserSoftKeyController.cs" />
<Compile Include="Controllers\WebApi\ThermocameraController.cs" />
<Compile Include="Controllers\WebApi\WarmersController.cs" />
<Compile Include="Controllers\WebApi\RecipeController.cs" />
<Compile Include="Controllers\WebApi\AuthorizationController.cs" />
@@ -262,12 +264,21 @@
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="CMS_Icon.ico" />
<Content Include="Dict\Enums_english.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Dict\Enums_italian.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Dict\Labels_english.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Dict\Labels_italian.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Dict\Messaggi_english.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Dict\Messaggi_italian.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -16185,6 +16196,10 @@
<Project>{b2366b08-96bd-4f6b-b748-b45089b87a14}</Project>
<Name>Thermo.Active.NC</Name>
</ProjectReference>
<ProjectReference Include="..\THermo.Active.Thermocamera\Thermo.Active.Thermocamera.csproj">
<Project>{8d8ec91a-3a15-4a1d-951b-a35e7068debd}</Project>
<Name>Thermo.Active.Thermocamera</Name>
</ProjectReference>
<ProjectReference Include="..\Thermo.Active.UI\Thermo.Active.UI.csproj">
<Project>{20fc0937-e7ca-4693-95f9-7a948efd173b}</Project>
<Name>Thermo.Active.UI</Name>
+1 -1
View File
@@ -31,7 +31,7 @@
<package id="Microsoft.Owin.StaticFiles" version="3.1.0" targetFramework="net462" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net462" />
<package id="microsoft-web-helpers" version="2.1.20710.2" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
<package id="Owin" version="1.0" targetFramework="net462" />
<package id="PrettyBin" version="1.1.0" targetFramework="net462" />
<package id="Swashbuckle" version="5.6.0" targetFramework="net462" />
+5
View File
@@ -84,6 +84,11 @@ namespace Thermo.Active
if (!string.IsNullOrWhiteSpace(ServerStartupConfig.ServerAddress.ToString()))
opt.Urls.Add("http://" + ServerStartupConfig.ServerAddress.ToString() + ":" + ServerStartupConfig.ServerPort.ToString());
if (Config.ServerConfig.ServerStartupConfig.CmsConnectReady)
{
ThreadsFunctions.SetupCmsConnect();
}
// read and save last CURRENT RECIPE data...
NcFileAdapter.ReadLastRecipe();
RecipeController.WriteCurrentRecipeToPlc();
@@ -224,12 +224,11 @@
}
.notenabled{
color: #d0021b;
opacity: 0.5;
}
.strike{
text-decoration: line-through;
color: #d0021b;
}
div {
@@ -354,7 +353,7 @@
display: grid;
grid-template-rows: repeat(2, auto);
grid-template-columns: repeat(2, auto);
height: 245px;
height: 260px;
padding: 20px;
.piece_hours {
@@ -27,6 +27,10 @@
justify-content: flex-end;
grid-column-gap: 10px;
.totp{
margin-right: 10px;
}
button {
border: none;
border-radius: 2px;
@@ -30,6 +30,17 @@
font-size: 32px;
font-weight: bold;
color: #fff;
&.temp{
grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%;
display: grid;
font-size: 22px;
span{
text-align: right;
margin-right: 5px;
}
}
}
}
@@ -167,9 +167,10 @@
align-items: center;
.volantino{
height: 48px;
width: 48px;
position: absolute;
bottom: 101px;
right: 492px;
left: 100px;
}
.load-label{
width: 100%;
+17 -4
View File
@@ -147,9 +147,10 @@
}
.setup .modal section.body section article .svg-area .volantino {
height: 48px;
width: 48px;
position: absolute;
bottom: 101px;
right: 492px;
left: 100px;
}
.setup .modal section.body section article .svg-area .load-label {
width: 100%;
@@ -4436,11 +4437,10 @@ article .box .body {
text-align: right;
}
.dashboard .first_col .setpoint .notenabled {
color: #d0021b;
opacity: 0.5;
}
.dashboard .first_col .setpoint .strike {
text-decoration: line-through;
color: #d0021b;
}
.dashboard .first_col .setpoint div {
display: flex;
@@ -4542,7 +4542,7 @@ article .box .body {
display: grid;
grid-template-rows: repeat(2, auto);
grid-template-columns: repeat(2, auto);
height: 245px;
height: 260px;
padding: 20px;
}
.dashboard .third_col .piece_time .piece_hours {
@@ -4683,6 +4683,16 @@ article .box .body {
font-weight: bold;
color: #fff;
}
.warmers svg .resistance.temp {
grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%;
display: grid;
font-size: 22px;
}
.warmers svg .resistance.temp span {
text-align: right;
margin-right: 5px;
}
.warmers .icon {
font-size: 30px;
margin-left: 10px;
@@ -5223,6 +5233,9 @@ article .box .body {
justify-content: flex-end;
grid-column-gap: 10px;
}
.modal.processo-info header .tab-header .totp {
margin-right: 10px;
}
.modal.processo-info header .tab-header button {
border: none;
border-radius: 2px;
@@ -71,61 +71,6 @@
height="2.995194"
x="15.595546"
y="289.87576" />
<path
style="fill:#bbbcbc;fill-opacity:0;stroke:#bbbcbc;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.92936802"
d="M 37.253586,292.77887 V 239.86218"
id="path849"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#bbbcbc;stroke-width:0.44944954;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 35.676304,240.09202 h 3.151188"
id="path855"
inkscape:connector-curvature="0" />
<path
sodipodi:type="star"
style="fill:#bbbcbc;fill-opacity:1;stroke:#bbbcbc;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.92936802"
id="path857"
sodipodi:sides="3"
sodipodi:cx="62.114742"
sodipodi:cy="292.18243"
sodipodi:r1="1.8131941"
sodipodi:r2="0.90659708"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.6179939"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 62.114742,293.99563 -0.785136,-1.3599 -0.785136,-1.35989 1.570272,0 1.570272,0 -0.785136,1.35989 z"
inkscape:transform-center-y="0.45329498"
transform="matrix(0.99999994,0,0,1.000002,-24.861164,-1.0321708)" />
<path
style="fill:#bbbcbc;fill-opacity:0;stroke:#bbbcbc;stroke-width:0.34999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.92936802"
d="M 59.09758,289.27334 V 275.4386"
id="path849-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#bbbcbc;stroke-width:0.34999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 57.414584,275.3528 h 3.362391"
id="path855-0"
inkscape:connector-curvature="0" />
<path
sodipodi:type="star"
style="fill:#bbbcbc;fill-opacity:1;stroke:#bbbcbc;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.92936802"
id="path857-7"
sodipodi:sides="3"
sodipodi:cx="62.114742"
sodipodi:cy="292.18243"
sodipodi:r1="1.8131942"
sodipodi:r2="0.90659708"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.6179939"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 62.114742,293.99563 -0.785136,-1.3599 -0.785136,-1.35989 1.570272,0 1.570272,0 -0.785136,1.35989 z"
inkscape:transform-center-y="0.48678308"
transform="matrix(0.92838376,0,0,1.0738472,1.4312439,-26.446198)"
inkscape:transform-center-x="-2.0583999e-06" />
<path
style="fill:#bbbcbc;fill-opacity:0;stroke:#bbbcbc;stroke-width:0.3924405;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.92936802"
d="M 99.430686,292.77887 V 263.6747"

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

+1 -1
View File
@@ -3,7 +3,6 @@ declare module Prod {
interface IProd {
numTarget: number;
numDone: number;
numPreHot: number;
timeWarm: number;
timeVent: number;
timeVacuum: number;
@@ -20,6 +19,7 @@ declare module Prod {
interface IProdPanel {
numTarget: number;
numDone: number;
numPreHot: number;
inizioProd: string;
stimaDurata: number;
tempAct: number;
@@ -33,6 +33,7 @@ export default class Combo extends Vue {
opened: boolean = false;
showList() {
if(!this.value.status.enabled) return;
this.opened = !this.opened;
this.$nextTick(() => lottie.searchAnimations());
@@ -3,7 +3,7 @@
<div
class="form"
@click="showList"
:class="{'error': value && value.status && value.status.hasError}"
:class="{'error': value && value.status && value.status.hasError, 'disabled': value && value.status && !value.status.enabled}"
>
{{currentValue}}
<i v-if="opened" class="fa fa-chevron-up" />
@@ -30,6 +30,11 @@
<style scoped>
.combo {
position: relative;
}
.disabled{
background-color: rgba(0, 0, 0, 0.15);
}
.combo select:disabled {
@@ -48,7 +48,7 @@ export default class MainGauge extends Vue {
};
}
get prod() { return store.state.prod.prod }
get prod() { return store.state.prod.panel }
polarToCartesian(centerX, centerY, radius, angleInDegrees) {
@@ -5,7 +5,7 @@
<svg viewBox="8,8,84,84" class="gauge">
<path
class="dial"
:class="{'ok': (prod.numPreHot ==0), 'pre': (prod.numPreHot != 0) }"
:class="{'ok': (!prod.numPreHot || prod.numPreHot ==0), 'pre': (prod.numPreHot && prod.numPreHot != 0) }"
fill="none"
stroke="#eee"
stroke-width="2"
@@ -31,13 +31,14 @@
</svg>
</div>
<div ref="gauge2" class="gauge2"></div>
<span class="done" v-if="prod.numPreHot == 0">
<span class="done" v-if="!prod.numPreHot || prod.numPreHot == 0">
{{prod.numDone}}
<small class="error" v-if="scrapedItems.length">-{{scrapedItems.length}}</small>
</span>
<span class="done" v-if="prod.numPreHot != 0">-{{prod.numPreHot}}</span>
<span class="done" v-if="prod.numPreHot && prod.numPreHot != 0">-{{prod.numPreHot}}</span>
<hr />
<span class="target">{{prod.numTarget}}</span>
<span class="target" v-if="prod.numTarget != 0">{{prod.numTarget}}</span>
<span class="target" v-else>--</span>
</div>
</template>
<script lang="ts" src="./gauge.ts"></script>
@@ -9,10 +9,22 @@ export default class Item extends Vue {
@Prop()
value: Prod.IProd;
@Prop()
panel: Prod.IProdPanel
get noDisplayNumber(){
return this.panel && this.panel.numTarget != 0 && this.value.numDone > this.panel.numTarget;
}
showDetails: boolean = false;
openCloseDetails(){
this.showDetails = !this.showDetails;
//if(this.showDetails)
// this.$emit("close-detail",this.value.numDone);
}
async setScrap(num: number) {
await prodService.SetScrap(num);
this.value.isScrap = true;
this.value.isScrap = !this.value.isScrap;
await prodService.SetScrap(num,this.value.isScrap);
}
}
@@ -1,7 +1,8 @@
<template>
<div class="history-item">
<div class="body" @click="showDetails = !showDetails">
<label :class="{red: value.isScrap}">{{value.numDone}}</label>
<div class="body" @click="openCloseDetails">
<label v-if="noDisplayNumber">--</label>
<label :class="{red: value.isScrap}" v-else>{{value.numDone}}</label>
<div class="col">
<small>{{'history-item_warmup' | localize("tempo riscaldo")}}</small>
<span>{{Math.floor(value.timeWarm / 60) | round(0)}}'{{value.timeWarm % 60 | round(0)}}''</span>
@@ -9,6 +9,7 @@ export default class stats extends Vue {
value: { [id: number]: number };
get Values(): number[] {
console.log(this.value);
var r: number[] = [];
if (this.value)
for (const i in this.value) {
@@ -21,6 +22,9 @@ export default class stats extends Vue {
@Prop()
maxNumDone: number;
@Prop()
isTime: number;
get min() {
return Math.min(...this.Values);
}
@@ -29,6 +33,44 @@ export default class stats extends Vue {
return Math.max(...this.Values);
}
get maxLabels() {
if(this.Values && this.Values.length)
{
let v = Math.max(...this.Values);
if(this.isTime)
return Math.floor(v / 60) + "' " + (Math.floor(v) % 60) + "''"
else
return v
}
else
return "--"
}
get minLabels() {
if(this.Values && this.Values.length)
{
let v = Math.min(...this.Values);
if(this.isTime)
return Math.floor(v / 60) + "' " + (Math.floor(v) % 60) + "''"
else
return v
}
else
return "--"
}
get calcPointFill(){
let str = "0," + this.height + " ";
for (let index = 0; index < this.Values.length; index++) {
let x = index * (this.width / 19);
let y = this.height - (this.Values[index] - this.min) * this.height / this.delta
str += x + "," + y + " ";
}
let x = (this.Values.length -1) * (this.width / 19);
let y = this.height
str += x + "," + y + " ";
return str;
}
get delta() {
return Math.max(this.max - this.min, 1);
}
@@ -42,8 +84,8 @@ export default class stats extends Vue {
get pathData() {
if (this.Values && this.Values.length) {
var d = [
"M", 0, (this.Values[0] - this.min) * this.height / this.delta,
"S"
"M", 0, this.height - (this.Values[0] - this.min) * this.height / this.delta,
"L"
]
d.push(...this.Values.map((v, idx) => `${idx * (this.width / 19)} ${this.height - (v - this.min) * this.height / this.delta}`))
d.push()
@@ -51,4 +93,13 @@ export default class stats extends Vue {
}
return null;
}
calcPointY(v){
return this.height - (v - this.min) * this.height / this.delta
}
get itemsNo(){
if (!this.Values) return 0;
return this.Values.length
}
}
@@ -1,7 +1,7 @@
<template>
<svg
preserveAspectRatio="xMidYMid slice"
:viewBox="`0 -20 ${width + 30} ${height+60}`"
:viewBox="`-5 -20 ${width + 50} ${height+60}`"
:key="delta"
>
<g class="chart-axis">
@@ -10,7 +10,7 @@
<line :x1="0" :x2="width" :y1="height*2/3" :y2="height*2/3" stroke="#353535" stroke-width="1" />
<line :x1="0" :x2="width" :y1="height" :y2="height" stroke="#353535" stroke-width="1" />
</g>
<g chart="chart-axis">
<!--<g chart="chart-axis">
<line
v-for="(i,idx) in Values"
:key="idx"
@@ -21,41 +21,46 @@
stroke="#35353550"
stroke-width="1"
/>
</g>
</g>-->
<g>
<polygon :points="calcPointFill" style="fill:#1791ff;stroke-width:0" fill-opacity="0.3" />
<path fill="none" :d="pathData" v-if="pathData" stroke="#1791ff" stroke-width="4" />
<circle
v-for="(i,idx) in Values"
:key="'point_'+idx"
:cx="idx * (width / 19)"
:cy="calcPointY(i)"
r="5"
stroke="#1791ff"
stroke-width="0"
fill="#1791ff" />
<foreignObject
v-for="(i,idx) in Values"
:key="'val_'+idx"
:x="(idx * (width / 19))-10"
:y="height+5"
:width="20"
height="30"
class="chart-legend"
style="text-align:center"
>{{maxNumDone - (itemsNo )+ idx}}</foreignObject>
</g>
<g>
<foreignObject
:x="width+2"
y="-10"
width="30"
width="50"
height="30"
class="chart-legend"
>{{max | round(1)}}</foreignObject>
>{{maxLabels}}</foreignObject>
<foreignObject
:x="width+2"
:y="height - 15"
width="30"
:y="height - 9"
width="50"
height="30"
class="chart-legend"
>{{min | round(1)}}</foreignObject>
<foreignObject
:x="width-30"
:y="height"
:width="60"
height="30"
class="chart-legend"
style="text-align:center"
>{{maxNumDone}}</foreignObject>
<foreignObject
:x="0"
:y="height"
:width="60"
height="32"
class="chart-legend"
style="text-align:left"
>{{Math.max(maxNumDone-20,1)}}</foreignObject>
>{{minLabels}}</foreignObject>
</g>
</svg>
</template>
@@ -48,15 +48,13 @@ export default class Dashboard extends Vue {
@Watch("lastItem", { deep: true })
async lastitemChanged(n: Prod.IProd, o) {
if (this.items.length && n.numDone - 1 != this.items[0].numDone) {
if ((this.items.length && n.numDone - 1 != this.items[0].numDone) || (!this.items.length && n.numDone > 1)) {
let result = await prodService.History(n.numDone - 1, 1);
if (result && result.length) {
for (const i of result) {
this.itemsMap.set(i.numDone, i);
}
this.items = Array.from(this.itemsMap.values()).sort((a, b) => b.numDone - a.numDone);
}
}
@@ -95,6 +93,7 @@ export default class Dashboard extends Vue {
return store.state.machineInfo.softKeys as { [id: number]: SoftKeysConfigurationModel[] };
}
get allSoftKeys(): SoftKeysConfigurationModel[] {
var result = [];
for (const key in this.softKeys) {
@@ -91,19 +91,19 @@
<div class="timing-area">
<div class="start">
<small>{{'dashboard-timing-start' | localize('inizio')}}</small>
<time>{{panel.inizioProd | date('HH:mm')}}</time>
<time v-if="panel.inizioProd">{{panel.inizioProd | date('HH:mm')}}</time>
<time v-else>--:--</time>
</div>
<div class="current">
<small>{{'dashboard-timing-elapsed' | localize('dashboard-timing-starto')}}</small>
<time>{{Math.floor(elapsed /1000 / 3600)}}:{{elapsed | date('mm:ss')}}</time>
<time v-if="panel.inizioProd">{{Math.floor(elapsed /1000 / 3600)}}:{{elapsed | date('mm:ss')}}</time>
<time v-else>--:--</time>
</div>
<div class="end">
<small>{{'dashboard-timing-end' | localize('fine')}}</small>
<time v-if="panel.stimaDurata">
<time v-if="panel.stimaDurata && panel.inizioProd">
<span>~{{endEstimation | date('HH:mm')}}</span>
<small
style="text-transform:lowercase"
>+{{Math.floor(remainingTime /1000 / 3600 /24)}} {{'remainging_days' | localize("gg")}}</small>
<small style="text-transform:lowercase" >+{{Math.floor(remainingTime /1000 / 3600 /24)}} {{'remainging_days' | localize("gg")}}</small>
</time>
<time v-else>--:--</time>
</div>
@@ -169,7 +169,8 @@
:width="614"
:height="65"
:value="panel.tS_Cadenza"
:max-num-done="lastItem.numDone-1"
:max-num-done="lastItem.numDone"
:isTime = "false"
v-if="selectedChart == 'pezziora'"
></stats>
<stats
@@ -177,12 +178,13 @@
:width="614"
:height="65"
:value="panel.tS_TCiclo"
:max-num-done="lastItem.numDone-1"
:max-num-done="lastItem.numDone"
:isTime = "true"
v-if="selectedChart == 'tempociclo'"
></stats>
</div>
<div class="current-item">
<hitem :value="lastItem"></hitem>
<hitem :value="lastItem" :panel="panel"></hitem>
</div>
<div class="history-list scrollable">
<hitem :value="item" v-for="(item, idx) in items" :key="idx"></hitem>
@@ -9,6 +9,7 @@ import gantt from "./gantt/gantt.vue";
import zoom from "./gantt/zoomLevel.vue";
import softKey from "./softkey.vue";
import { Hub } from '@/services';
import EditProduzione from "@/app_modules_thermo/setup/avvio-produzione/edit-produzione.vue";
@Component({
components: {
@@ -17,12 +18,20 @@ import { Hub } from '@/services';
})
export default class Processo extends Vue {
get inAuto(): boolean {
return store.state.machineStatus.cycleProd.mode==2;
};
get actual(): number {
return store.state.prod.prod.numDone;
return store.state.prod.panel.numDone;
};
get tot(): number {
return store.state.prod.prod.numTarget;
return store.state.prod.panel.numTarget;
};
get preHot(): number {
return store.state.prod.panel.numPreHot;
};
get blocks(): server.Modblock[] {
@@ -39,6 +48,10 @@ export default class Processo extends Vue {
return store.state.machineStatus.gaugeData;
}
async editProd(){
await ModalHelper.ShowModalAsync(EditProduzione);
}
public sendMessage(name: string) {
messageService.publishToChannel(name);
}
@@ -20,8 +20,13 @@
@checkChanged="softKeyChanged(b.id, b.operatorConfirmationNeeded)"
></soft-key>
</template>
<label>
<div>{{actual}}/</div><button class="btn">{{tot}}</button>
<label v-if="actual != null" >
<div v-if="preHot == 0">{{actual}}/</div>
<div v-else>-{{preHot}}/</div>
<button @click="editProd" class="btn" v-if="inAuto && tot != 0">{{tot}}</button>
<button @click="editProd" class="btn" v-if="inAuto && tot == 0">--</button>
<div class="totp" v-if="!inAuto && tot != 0">{{tot}}</div>
<div class="totp" v-if="!inAuto && tot == 0">--</div>
</label>
</div>
<gantt
@@ -2,7 +2,7 @@ import Vue from "vue";
import { Modal, ModalHelper } from "@/components/modals";
import { Factory, messageService, awaiter } from "@/_base";
import Component from "vue-class-component";
import { Prop } from 'vue-property-decorator';
import { Prop,Watch } from 'vue-property-decorator';
import { appModelActions, store } from "@/store/app.store";
import { prodService } from "@/services/prodService";
import { prodActions } from "@/store/prod.store";
@@ -37,6 +37,15 @@ export default class AvvioProduzione extends Vue {
}
} as Recipe.IValue;
@Watch("pieces.status.enabled")
changeMaxPieces(){
if(!this.pieces.status.enabled)
{
this.pieces.setpointHMI = 0;
}
}
annulla() {
ModalHelper.HideModal();
};
@@ -45,11 +54,11 @@ export default class AvvioProduzione extends Vue {
async showDashboard() {
await prodService.Start(this.pieces.setpointHMI, this.newjob, this.warmuppieces.setpointHMI);
if (this.newjob) {
messageService.publishToChannel('restart-cycle');
prodActions.resetProd(store);
}
await prodService.Start(this.pieces.setpointHMI, this.newjob, this.warmuppieces.setpointHMI);
ModalHelper.HideModal();
@@ -12,7 +12,7 @@
<section>
<article>
<div class="input-area mb-10" style="margin:auto">
<label>{{'new'|localize('Nuova produzione')}}</label>
<label>{{'new_production'|localize('Nuova produzione')}}</label>
<toggle-button v-model="newjob"></toggle-button>
</div>
<div class="box mt-10">
@@ -32,7 +32,7 @@
</div>
<article class="body">
<div class="input-area mb-10">
<label>{{'production_enabling'|localize('Modifica numero pezzi')}}</label>
<label>{{'production_enabling'|localize('Set numero max di pezzi')}}</label>
<toggle-button v-model="pieces.status.enabled"></toggle-button>
</div>
<div class="input-area mb-10">
@@ -45,8 +45,8 @@
</article>
</section>
<footer>
<button class="btn" @click="annulla()">Annulla</button>
<button class="btn btn-success" @click="showDashboard()">Avvio</button>
<button class="btn" @click="annulla()">{{'modal_cancel_button' | localize("Annulla")}}</button>
<button class="btn btn-success" @click="showDashboard()">{{'modal_start_button' | localize("Avvia")}}</button>
</footer>
</modal>
</div>
@@ -0,0 +1,68 @@
import Vue from "vue";
import { Modal, ModalHelper } from "@/components/modals";
import { Factory, messageService, awaiter } from "@/_base";
import Component from "vue-class-component";
import { Prop,Watch } from 'vue-property-decorator';
import { appModelActions, store } from "@/store/app.store";
import { prodService } from "@/services/prodService";
import { prodActions } from "@/store/prod.store";
@Component({
components: {
modal: Modal,
}
})
export default class EditProduzione extends Vue {
pieces: Recipe.IValue = {
setpointHMI: 0,
range: { min: 0, max: 999999 },
status: {
enabled: true,
hasError: false,
visible: true
}
} as Recipe.IValue;
@Watch("pieces.status.enabled")
changeMaxPieces(){
if(!this.pieces.status.enabled)
{
this.pieces.setpointHMI = 0;
}
}
annulla() {
ModalHelper.HideModal();
};
get prod() { return store.state.prod.panel }
async showDashboard() {
await prodService.Start(this.pieces.setpointHMI, false, 0);
ModalHelper.HideModal();
}
async beforeMount() {
// this.contactInfo = await awaiter(new machineService().getContactConfiguration());
messageService.subscribeToChannel("esc_pressed", args => {
this.close();
});
}
beforeDestroy() {
messageService.deleteChannel("esc_pressed");
}
close() {
messageService.deleteChannel("esc_pressed");
ModalHelper.HideModal();
}
mounted() {
this.pieces.setpointHMI = this.prod.numTarget;
}
}
@@ -0,0 +1,40 @@
<template>
<div class="setup">
<modal
type="avvio-produzione-info"
:title="'edit_prod_lbl_title' | localize('Edit produzione')"
>
<div slot="header-buttons">
<button class="modal-close" @click="close()">
<i class="fa fa-remove"></i>
</button>
</div>
<section>
<article>
<div class="box mt-10">
<div class="header">
<label>{{'production_management' | localize("Gestione produzione")}}</label>
</div>
<article class="body">
<div class="input-area mb-10">
<label>{{'production_enabling'|localize('Set numero max di pezzi')}}</label>
<toggle-button v-model="pieces.status.enabled"></toggle-button>
</div>
<div class="input-area mb-10">
<label style="flex:1;">{{'mock_pieces'|localize('Numero pezzi')}}</label>
<label>{{prod.numDone}}/</label>
<numeric v-model="pieces" :keyboardPosition="'bottom'" />
</div>
</article>
</div>
</article>
</section>
<footer>
<button class="btn" @click="annulla()">{{'modal_cancel_button' | localize("Annulla")}}</button>
<button class="btn btn-success" @click="showDashboard()">{{'confirm' | localize("Conferma")}}</button>
</footer>
</modal>
</div>
</template>
<script lang="ts" src="./edit-produzione.ts"></script>
@@ -46,6 +46,7 @@ export default class ControlBox extends Vue {
ontouchmove(event: TouchEvent) {
if (!this.touching) return;
if(!this.value.status.enabled) return;
let newtouch: { x: number, y: number } = null;
for (const touch of Array.from(event.touches).slice(0, 1)) {
@@ -58,6 +59,7 @@ export default class ControlBox extends Vue {
if (this.moveVertical)
this.value.setpointHMI -= (newtouch.y - this.touching.y) * this.scale;
this.value.setpointHMI = parseFloat(this.value.setpointHMI.toFixed(this.value.numDec));
this.value.setpointHMI = Math.min(Math.max(this.value.setpointHMI, this.value.range.min), this.value.range.max);
// console.log(event, newtouch, this.touching);
@@ -25,30 +25,6 @@
<small>{{recipe.positions_frame_lower_speed.unitMeasure}}</small>
</div>
</div>
<div class="borded_label" id="quota3">
<div>
<img src="assets/icons/png/discesa.png" />
<span>00</span>
<small>mm</small>
</div>
<div>
<img src="assets/icons/png/alta.png" />
<span>00</span>
<small>mm</small>
</div>
</div>
<div class="borded_label" id="quota4">
<div>
<img src="assets/icons/png/discesa.png" />
<span>00</span>
<small>mm</small>
</div>
<div>
<img src="assets/icons/png/bassa.png" />
<span>00</span>
<small>mm</small>
</div>
</div>
<div class="borded_label" id="quota2">
<div v-focus-on:positions_frame_upper_position>
<img src="assets/icons/png/salita.png" />
@@ -15,6 +15,9 @@ export default class Resistance extends Vue {
@Prop({ default: false })
selected: boolean;
@Prop({ default: false })
temperature: boolean;
@Prop({ default: function () { return [253, 216, 53] } })
colorFrom: number[];
@@ -2,9 +2,23 @@
<div
class="resistance"
:key="selected"
v-if="!temperature"
@click="$emit('click')"
v-on:touchend="$emit('click')"
:style="{backgroundColor:`rgb(${currentColor})`}"
>{{channel.setpointHMI}} %</div>
<div
class="resistance temp"
:key="selected"
@click="$emit('click')"
v-on:touchend="$emit('click')"
v-else
:style="{backgroundColor:`rgb(${currentColor})`}"
>
<span>{{channel.setpointHMI}}&nbsp;°C</span>
<span>{{channel.setpointHMI}}&nbsp;°C</span>
<span>{{channel.setpointHMI}}&nbsp;&nbsp;%</span>
<span>{{channel.setpointHMI}}&nbsp;&nbsp;%</span>
</div>
</template>
<script src="./resistance.ts" lang="ts"></script>
@@ -0,0 +1,92 @@
import Vue from 'vue';
import Component from 'vue-class-component';
import { Prop } from 'vue-property-decorator';
import warmers from "./warmers.vue";
import { store } from '@/store';
import { thermocameraService } from "@/services/thermocameraService";
@Component({
name: "thermocamera", components: {
warmers
}
})
export default class Thermocamera extends Vue {
@Prop()
recipe: Recipe.IRecipe;
selectedChannelIds: number[] = [];
uniformChannelValue: number = -1;
beforeMount(){
this.uniformChannelValue = -1;
}
get selectedChannels(): Warmers.IChannel[] {
return store.state.warmers.channels.filter(i => this.selectedChannelIds.indexOf(i.idChannel) >= 0);
}
selectionMethod = "none"
changedSelectValue(v){
if(this.uniformChannelValue>=0)
for (const c of this.selectedChannels) c.setpointHMI = this.uniformChannelValue;
}
zoomIn() {
(this.$refs.warmers as any).zoomIn();
}
zoomOut() {
(this.$refs.warmers as any).zoomOut();
}
zoomReset() {
(this.$refs.warmers as any).zoomReset();
}
async showcamera(){
this.zoomReset()
await thermocameraService.show();
}
selectionChanged(selected: number[]) {
this.selectedChannelIds = []
this.uniformChannelValue = -1;
this.selectedChannelIds = selected;
}
disableHeater(){
}
enableHeater(){
}
setAllTemperature(){
}
add5() {
for (const c of this.selectedChannels) c.setpointHMI = Math.min(Math.max(parseFloat(c.setpointHMI.toString()) + 5, 0), 100);
this.$emit("warmersChanged");
}
remove5() {
for (const c of this.selectedChannels) c.setpointHMI = Math.min(Math.max(parseFloat(c.setpointHMI.toString()) - 5, 0), 100);
this.$emit("warmersChanged");
}
add1() {
for (const c of this.selectedChannels) c.setpointHMI = Math.min(Math.max(parseFloat(c.setpointHMI.toString()) + 1, 0), 100);
this.$emit("warmersChanged");
}
remove1() {
for (const c of this.selectedChannels) c.setpointHMI = Math.min(Math.max(parseFloat(c.setpointHMI.toString()) - 1, 0), 100);
this.$emit("warmersChanged");
}
}
@@ -0,0 +1,105 @@
<template>
<section>
<aside class="scrollable auto" v-if="recipe">
<div class="box transparent">
<div class="body">
<div class="divider"></div>
<div class="input-area">
<label>{{'warmers_selection' | localize('Selezione')}}</label>
</div>
<div class="input-area left grid grid-5">
<button
class="btn btn-info square"
@click="$refs.warmers.toggleSelection('rect')"
:class="{pressed: selectionMethod == 'rect'}"
>
<img src="assets/icons/png/rett.png" />
</button>
<button
class="btn btn-info square"
@click="$refs.warmers.toggleSelection('poly')"
:class="{pressed: selectionMethod == 'poly'}"
>
<img src="assets/icons/png/libera.png" />
</button>
<label></label>
<button class="btn btn-info" @click="$refs.warmers.selectAll()">
<label>{{'warmers_select_all' | localize('Tutti')}}</label>
</button>
<button class="btn btn-info" @click="$refs.warmers.selectNone()">
<label>{{'warmers_select_none' | localize('Nessuno')}}</label>
</button>
</div>
<div class="input-area left grid">
<button
class="btn"
@click="showcamera"
>{{'warmers_showcamera' | localize('Show Camera')}}</button>
</div>
<div class="divider"></div>
<div class="input-area">
<label>{{'warmers_enable' | localize('Gestione Abilitazione')}}</label>
</div>
<div class="input-area grid left">
<button
class="btn"
@click="enableHeater"
>{{'warmers_enabletemp' | localize('Enable selected')}}</button>
<button
class="btn"
@click="disableHeater"
>{{'warmers_disabletemp' | localize('Disable selected')}}</button>
</div>
<div class="divider"></div>
<div class="input-area">
<label>{{'warmers_temperature' | localize('Gestione Temperatura')}}</label>
</div>
<div class="input-area left grid grid-5">
<button class="btn btn-info square" @click="remove5()">-5°C</button>
<button class="btn btn-info square" @click="remove1()">-1°C</button>
<button class="btn btn-info square" @click="add1()">+1°C</button>
<button class="btn btn-info square" @click="add5()">+5°C</button>
<select class="input-select" v-model="uniformChannelValue" @change="changedSelectValue">
<option value="-1">{{'warmers_select_power' | localize('Seleziona...')}}</option>
<option v-for="index in 31" :key="index" :value="((index-1)*10)">{{(index-1)*10}}°C</option>
</select>
</div>
<div class="input-area grid left">
<button
class="btn btn-success"
@click="setAllTemperature"
>{{'warmers_setTemperature' | localize('Set all temperature')}}</button>
</div>
<!-- </div> -->
</div>
</div>
</aside>
<hr />
<article class="warmers">
<warmers
ref="warmers"
@select="selectionChanged"
@methodChanged="m => selectionMethod = m"
:recipe="recipe"
:temperature="true"
></warmers>
<div class="absolute bottom right">
<button class="btn btn-info square icon" @click="zoomIn()">
<i class="fa fa-search-plus" ></i>
</button>
<button class="btn btn-info square icon" @click="zoomOut()">
<i class="fa fa-search-minus" ></i>
</button>
<button class="btn btn-info square icon" @click="zoomReset()">
<i class="fa fa-square-o" ></i>
</button>
</div>
</article>
</section>
</template>
<script lang="ts" src="./thermocamera.ts"></script>
@@ -32,6 +32,10 @@ export default class Warmers extends Vue {
@Prop({ default: true })
usePanZoom: boolean;
@Prop({ default: false })
temperature: boolean;
get planSizeX() {
return parseFloat(this.parameters.warmerPlanSizeX.toString());
}
@@ -26,6 +26,7 @@
@mouseup="stopSelection"
@click="select(cell)"
:selected="isSelected(cell.idChannel)"
:temperature="temperature"
/>
</foreignObject>
</g>
@@ -6,6 +6,8 @@ import { Prop, Watch } from 'vue-property-decorator';
import StepFooter from "@/app_modules_thermo/setup/components/step-footer.vue";
import RiscaldiSup from "./base-components/riscaldi-superiori.vue";
import RiscaldiInf from "./base-components/riscaldi-inferiori.vue";
import Thermocamera from "./base-components/thermocamera.vue";
import SostDecomp from "./base-components/sostentamento-decompressione.vue";
import { recipeActions } from "@/store/recipe.store";
import { store } from "@/store";
@@ -14,7 +16,7 @@ import { recipeService } from "@/services/recipeService";
import { warmersService } from "@/services/warmersService";
import { debounce } from "@/_base/debounce";
@Component({ components: { modal: Modal, stepfooter: StepFooter, riscaldiinf: RiscaldiInf, riscaldisup: RiscaldiSup, sostdecomp: SostDecomp } })
@Component({ components: { modal: Modal, stepfooter: StepFooter, riscaldiinf: RiscaldiInf, riscaldisup: RiscaldiSup, sostdecomp: SostDecomp,thermocamera:Thermocamera } })
export default class ShowRiscaldamentoSuperioreInfo extends Vue {
recipe: Recipe.IRecipe = this.$store.getters.getCurrent();
@@ -17,6 +17,11 @@
@click="show = 'decomsustain'"
v-if="isDecomsustainEnabled()"
>{{'decomsustain' | localize("Sostentamento/Decompressione")}}</button>
<button
:class="{'active':show == 'termocamera'}"
@click="show = 'termocamera'"
v-if="isDecomsustainEnabled()"
>{{'Thermoprophet' | localize("Thermoprophet")}}</button>
</div>
<div slot="header-buttons">
<button class="modal-close" @click="close()">
@@ -25,6 +30,7 @@
</div>
<riscaldiinf v-if="show == 'lowerheaters'" :recipe="recipe" @warmersChanged="warmersChanged" ></riscaldiinf>
<riscaldisup v-if="show == 'upperheaters'" :recipe="recipe" @warmersChanged="warmersChanged" ></riscaldisup>
<thermocamera v-if="show == 'termocamera'" :recipe="recipe" @warmersChanged="warmersChanged" ></thermocamera>
<sostdecomp v-if="show == 'decomsustain'" :recipe="recipe"></sostdecomp>
<footer>
<div v-if="isLoading"><i class="loader fa fa-circle-o-notch fa-spin"></i></div>
@@ -85,9 +85,11 @@ export default class ModalLoadProgram extends Vue {
}
get canLoadProgram() {
return this.$store.state.process.canLoadProgram;
if(!this.$store.state.machineStatus.cycleProd) return false
return this.$store.state.machineStatus.cycleProd.mode!=2;
}
async duplicate() {
let result = await ModalHelper.ShowModalAsync(duplicateModal, { name: this.selectedFile.Name, folder: this.currentPath });
this.relaodFiles();
@@ -251,8 +251,7 @@
<div class="modal-load-program-footer">
<button
class="btn btn-success"
:disabled="!selectedFile || fileIsChanged || loadClicked"
v-if="this.isLocalNavigation"
:disabled="!selectedFile || fileIsChanged || loadClicked || !canLoadProgram"
@click="load(selectedFile)"
>{{'modal_load_program_btn_upload_recipe' | localize('Carica e attiva ricetta')}}</button>
</div>
@@ -26,6 +26,7 @@ import { prodActions } from "@/store/prod.store";
import { Model } from "vue-property-decorator";
import { prodService } from "./prodService";
import { recipeService } from "./recipeService";
import { warmersActions } from "@/store/warmers.store";
declare const PRODUCTION;
@@ -107,6 +108,7 @@ export class Hub {
// qui i NUOVI metodi NUOVI dal server (Recipe, gauges) da completare lato HUB
this._hub.client.recipeFullData = Hub.recipeFullData;
this._hub.client.warmersData = Hub.warmersData;
this._hub.client.setpointHmiInvalid = Hub.setpointHmiInvalid;
this._hub.client.recipeOverData = Hub.recipeOverData;
this._hub.client.recipeChangedData = Hub.recipeChangedData;
@@ -181,6 +183,10 @@ export class Hub {
recipeActions.setCurrent(store, data, true);
}
public static warmersData(data){
warmersActions.setChannels(store, data as { [id: number]: Warmers.IChannel });
}
public static async setpointHmiInvalid(data) {
if (data) {
await recipeService.GetCurrent();
@@ -0,0 +1,18 @@
import { baseRestService } from "../_base/baseRestService";
import { CONFIGURATION } from "@/config";
import { warmersActions } from "@/store/warmers.store";
import { store } from "@/store";
import Warmers from "@/app_modules_thermo/setup/riscaldi/components/base-components/warmers";
export class ThermocameraService extends baseRestService {
BASE_URL = async () => (await CONFIGURATION).api.apiServerUrl + "api/thermocamera/";
async show() {
let result = await this.Post<any>((await this.BASE_URL()) + "show", null, true);
return result;
}
}
export const thermocameraService = new ThermocameraService();

Some files were not shown because too many files have changed in this diff Show More