diff --git a/IOB-WIN-FILE-EXP/Config/setup-MHT.json b/IOB-WIN-FILE-EXP/Config/setup-MHT.json
deleted file mode 100644
index a67ae84..0000000
--- a/IOB-WIN-FILE-EXP/Config/setup-MHT.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "confPLC": {
- "ipAdrr": "192.168.214.1",
- "tipoCpu": "S7300",
- "rack": 0,
- "slot": 2
- },
- "TriggerMemConf": "DB700.DBB0",
- "parametersList": {
- "DB700.DBB8": {
- "Column": "Valore 1",
- "Index": 1,
- "MemConf": "DB700.DBB8",
- "DataType": "word",
- "memByteSize": 2
- },
- "DB700.DBB10": {
- "Column": "Valore 2",
- "Index": 2,
- "MemConf": "DB700.DBB10",
- "DataType": "word",
- "memByteSize": 2
- },
- "DB700.DBB16": {
- "Column": "Valore 3",
- "Index": 3,
- "MemConf": "DB700.DBB16",
- "DataType": "dword",
- "memByteSize": 4
- },
- "DB700.DBB20": {
- "Column": "Valore 4",
- "Index": 4,
- "MemConf": "DB700.DBB20",
- "DataType": "dword",
- "memByteSize": 4
- },
- "DB700.DBB32": {
- "Column": "Valore 5",
- "Index": 5,
- "MemConf": "DB700.DBB32",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB700.DBB36": {
- "Column": "Valore 6",
- "Index": 6,
- "MemConf": "DB700.DBB36",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB700.DBB40": {
- "Column": "Valore 7",
- "Index": 7,
- "MemConf": "DB700.DBB40",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB700.DBB48": {
- "Column": "Valore 8",
- "Index": 8,
- "MemConf": "DB700.DBB48",
- "DataType": "string",
- "memByteSize": 20
- }
- //"parametersList": {
- // "DB701.DBD142": {
- // "Column": "Valore assoluto",
- // "Index": 7,
- // "MemConf": "DB701.DBD142",
- // "DataType": "real"
- // }
- //}
- }
\ No newline at end of file
diff --git a/IOB-WIN-FILE-EXP/Config/setup-Steamware.json b/IOB-WIN-FILE-EXP/Config/setup-Steamware.json
deleted file mode 100644
index 8787b7f..0000000
--- a/IOB-WIN-FILE-EXP/Config/setup-Steamware.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "confPLC": {
- "ipAdrr": "192.168.0.102",
- "tipoCpu": "S71500",
- "rack": 0,
- "slot": 1
- },
- "TriggerMemConf": "DB999.DBB0",
- "parametersList": {
- "DB999.DBB8": {
- "Column": "Valore 1",
- "Index": 1,
- "MemConf": "DB999.DBB8",
- "DataType": "word",
- "memByteSize": 2
- },
- "DB999.DBB10": {
- "Column": "Valore 2",
- "Index": 2,
- "MemConf": "DB999.DBB10",
- "DataType": "word",
- "memByteSize": 2
- },
- "DB999.DBB16": {
- "Column": "Valore 3",
- "Index": 3,
- "MemConf": "DB999.DBB16",
- "DataType": "dword",
- "memByteSize": 4
- },
- "DB999.DBB20": {
- "Column": "Valore 4",
- "Index": 4,
- "MemConf": "DB999.DBB20",
- "DataType": "dword",
- "memByteSize": 4
- },
- "DB999.DBB32": {
- "Column": "Valore 5",
- "Index": 5,
- "MemConf": "DB999.DBB32",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB999.DBB36": {
- "Column": "Valore 6",
- "Index": 6,
- "MemConf": "DB999.DBB36",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB999.DBB40": {
- "Column": "Valore 7",
- "Index": 7,
- "MemConf": "DB999.DBB40",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB999.DBB48": {
- "Column": "Valore 8",
- "Index": 8,
- "MemConf": "DB999.DBB48",
- "DataType": "string",
- "memByteSize": 20
- }
- }
-}
\ No newline at end of file
diff --git a/IOB-WIN-FILE-EXP/Config/setup.json b/IOB-WIN-FILE-EXP/Config/setup.json
deleted file mode 100644
index 8787b7f..0000000
--- a/IOB-WIN-FILE-EXP/Config/setup.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "confPLC": {
- "ipAdrr": "192.168.0.102",
- "tipoCpu": "S71500",
- "rack": 0,
- "slot": 1
- },
- "TriggerMemConf": "DB999.DBB0",
- "parametersList": {
- "DB999.DBB8": {
- "Column": "Valore 1",
- "Index": 1,
- "MemConf": "DB999.DBB8",
- "DataType": "word",
- "memByteSize": 2
- },
- "DB999.DBB10": {
- "Column": "Valore 2",
- "Index": 2,
- "MemConf": "DB999.DBB10",
- "DataType": "word",
- "memByteSize": 2
- },
- "DB999.DBB16": {
- "Column": "Valore 3",
- "Index": 3,
- "MemConf": "DB999.DBB16",
- "DataType": "dword",
- "memByteSize": 4
- },
- "DB999.DBB20": {
- "Column": "Valore 4",
- "Index": 4,
- "MemConf": "DB999.DBB20",
- "DataType": "dword",
- "memByteSize": 4
- },
- "DB999.DBB32": {
- "Column": "Valore 5",
- "Index": 5,
- "MemConf": "DB999.DBB32",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB999.DBB36": {
- "Column": "Valore 6",
- "Index": 6,
- "MemConf": "DB999.DBB36",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB999.DBB40": {
- "Column": "Valore 7",
- "Index": 7,
- "MemConf": "DB999.DBB40",
- "DataType": "real",
- "memByteSize": 4
- },
- "DB999.DBB48": {
- "Column": "Valore 8",
- "Index": 8,
- "MemConf": "DB999.DBB48",
- "DataType": "string",
- "memByteSize": 20
- }
- }
-}
\ No newline at end of file
diff --git a/IOB-WIN-FILE-EXP/Constants.cs b/IOB-WIN-FILE-EXP/Constants.cs
deleted file mode 100644
index 0a31790..0000000
--- a/IOB-WIN-FILE-EXP/Constants.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace MHT_Siemens
-{
- public static class Constants
- {
- #region memorie configurate staticamente
-
- public const string RESOURCE_DIRECTORY = @"IOB.WIN.FileExp.Config.";
- public const string CONFIG_PATH = RESOURCE_DIRECTORY + @"setup.json";
-
- #endregion
- }
-}
diff --git a/IOB-WIN-FILE-EXP/IOB-Exporter.Designer.cs b/IOB-WIN-FILE-EXP/IOB-Exporter.Designer.cs
deleted file mode 100644
index 2468ee2..0000000
--- a/IOB-WIN-FILE-EXP/IOB-Exporter.Designer.cs
+++ /dev/null
@@ -1,235 +0,0 @@
-namespace MHT_Siemens
-{
- partial class IOB_Exporter
- {
- ///
- /// Variabile di progettazione necessaria.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Pulire le risorse in uso.
- ///
- /// ha valore true se le risorse gestite devono essere eliminate, false in caso contrario.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Codice generato da Progettazione Windows Form
-
- ///
- /// Metodo necessario per il supporto della finestra di progettazione. Non modificare
- /// il contenuto del metodo con l'editor di codice.
- ///
- private void InitializeComponent()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(IOB_Exporter));
- this.txtCsvPath = new System.Windows.Forms.TextBox();
- this.label1 = new System.Windows.Forms.Label();
- this.lblPlcIp = new System.Windows.Forms.Label();
- this.txtIP = new System.Windows.Forms.TextBox();
- this.txtSlot = new System.Windows.Forms.TextBox();
- this.lblPlcSlot = new System.Windows.Forms.Label();
- this.txtRack = new System.Windows.Forms.TextBox();
- this.lblPlcRack = new System.Windows.Forms.Label();
- this.lblPlcCpu = new System.Windows.Forms.Label();
- this.statusStrip1 = new System.Windows.Forms.StatusStrip();
- this.tsslApp = new System.Windows.Forms.ToolStripStatusLabel();
- this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
- this.txtCpuType = new System.Windows.Forms.TextBox();
- this.txtLog = new System.Windows.Forms.TextBox();
- this.statusStrip1.SuspendLayout();
- this.SuspendLayout();
- //
- // txtCsvPath
- //
- this.txtCsvPath.Enabled = false;
- this.txtCsvPath.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.txtCsvPath.Location = new System.Drawing.Point(28, 40);
- this.txtCsvPath.Name = "txtCsvPath";
- this.txtCsvPath.Size = new System.Drawing.Size(172, 20);
- this.txtCsvPath.TabIndex = 0;
- this.txtCsvPath.Text = "c:\\TMP\\OutputFile.csv";
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(25, 24);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(47, 13);
- this.label1.TabIndex = 1;
- this.label1.Text = "CSV File";
- //
- // lblPlcIp
- //
- this.lblPlcIp.AutoSize = true;
- this.lblPlcIp.Location = new System.Drawing.Point(279, 24);
- this.lblPlcIp.Name = "lblPlcIp";
- this.lblPlcIp.Size = new System.Drawing.Size(42, 13);
- this.lblPlcIp.TabIndex = 2;
- this.lblPlcIp.Text = "IP Addr";
- //
- // txtIP
- //
- this.txtIP.Enabled = false;
- this.txtIP.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.txtIP.Location = new System.Drawing.Point(340, 21);
- this.txtIP.Name = "txtIP";
- this.txtIP.Size = new System.Drawing.Size(106, 20);
- this.txtIP.TabIndex = 3;
- this.txtIP.Text = "192.168.0.102";
- this.txtIP.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
- //
- // txtSlot
- //
- this.txtSlot.Enabled = false;
- this.txtSlot.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.txtSlot.Location = new System.Drawing.Point(499, 47);
- this.txtSlot.Margin = new System.Windows.Forms.Padding(2);
- this.txtSlot.Name = "txtSlot";
- this.txtSlot.Size = new System.Drawing.Size(29, 20);
- this.txtSlot.TabIndex = 10;
- this.txtSlot.Text = "1";
- this.txtSlot.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
- //
- // lblPlcSlot
- //
- this.lblPlcSlot.AutoSize = true;
- this.lblPlcSlot.Location = new System.Drawing.Point(462, 49);
- this.lblPlcSlot.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- this.lblPlcSlot.Name = "lblPlcSlot";
- this.lblPlcSlot.Size = new System.Drawing.Size(25, 13);
- this.lblPlcSlot.TabIndex = 8;
- this.lblPlcSlot.Text = "Slot";
- //
- // txtRack
- //
- this.txtRack.Enabled = false;
- this.txtRack.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.txtRack.Location = new System.Drawing.Point(499, 21);
- this.txtRack.Margin = new System.Windows.Forms.Padding(2);
- this.txtRack.Name = "txtRack";
- this.txtRack.Size = new System.Drawing.Size(29, 20);
- this.txtRack.TabIndex = 11;
- this.txtRack.Text = "0";
- this.txtRack.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
- //
- // lblPlcRack
- //
- this.lblPlcRack.AutoSize = true;
- this.lblPlcRack.Location = new System.Drawing.Point(462, 23);
- this.lblPlcRack.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- this.lblPlcRack.Name = "lblPlcRack";
- this.lblPlcRack.Size = new System.Drawing.Size(33, 13);
- this.lblPlcRack.TabIndex = 9;
- this.lblPlcRack.Text = "Rack";
- //
- // lblPlcCpu
- //
- this.lblPlcCpu.AutoSize = true;
- this.lblPlcCpu.Location = new System.Drawing.Point(279, 49);
- this.lblPlcCpu.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- this.lblPlcCpu.Name = "lblPlcCpu";
- this.lblPlcCpu.Size = new System.Drawing.Size(56, 13);
- this.lblPlcCpu.TabIndex = 7;
- this.lblPlcCpu.Text = "CPU Type";
- //
- // statusStrip1
- //
- this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.tsslApp,
- this.toolStripProgressBar1});
- this.statusStrip1.Location = new System.Drawing.Point(0, 421);
- this.statusStrip1.Name = "statusStrip1";
- this.statusStrip1.Size = new System.Drawing.Size(658, 22);
- this.statusStrip1.TabIndex = 12;
- this.statusStrip1.Text = "statusStrip1";
- //
- // tsslApp
- //
- this.tsslApp.Name = "tsslApp";
- this.tsslApp.Size = new System.Drawing.Size(16, 17);
- this.tsslApp.Text = "...";
- //
- // toolStripProgressBar1
- //
- this.toolStripProgressBar1.Name = "toolStripProgressBar1";
- this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16);
- //
- // txtCpuType
- //
- this.txtCpuType.Enabled = false;
- this.txtCpuType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.txtCpuType.Location = new System.Drawing.Point(340, 47);
- this.txtCpuType.Name = "txtCpuType";
- this.txtCpuType.Size = new System.Drawing.Size(106, 20);
- this.txtCpuType.TabIndex = 13;
- this.txtCpuType.Text = "S71200";
- this.txtCpuType.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
- //
- // txtLog
- //
- this.txtLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.txtLog.BackColor = System.Drawing.Color.Black;
- this.txtLog.Enabled = false;
- this.txtLog.ForeColor = System.Drawing.SystemColors.MenuHighlight;
- this.txtLog.Location = new System.Drawing.Point(13, 82);
- this.txtLog.Multiline = true;
- this.txtLog.Name = "txtLog";
- this.txtLog.Size = new System.Drawing.Size(633, 336);
- this.txtLog.TabIndex = 14;
- this.txtLog.Text = "...";
- //
- // IOB_Exporter
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(658, 443);
- this.Controls.Add(this.txtLog);
- this.Controls.Add(this.txtCpuType);
- this.Controls.Add(this.statusStrip1);
- this.Controls.Add(this.txtSlot);
- this.Controls.Add(this.lblPlcSlot);
- this.Controls.Add(this.txtRack);
- this.Controls.Add(this.lblPlcRack);
- this.Controls.Add(this.lblPlcCpu);
- this.Controls.Add(this.txtIP);
- this.Controls.Add(this.lblPlcIp);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.txtCsvPath);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.Name = "IOB_Exporter";
- this.Text = "MAPO IOB Exporter";
- this.statusStrip1.ResumeLayout(false);
- this.statusStrip1.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.TextBox txtCsvPath;
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.Label lblPlcIp;
- private System.Windows.Forms.TextBox txtIP;
- private System.Windows.Forms.TextBox txtSlot;
- private System.Windows.Forms.Label lblPlcSlot;
- private System.Windows.Forms.TextBox txtRack;
- private System.Windows.Forms.Label lblPlcRack;
- private System.Windows.Forms.Label lblPlcCpu;
- private System.Windows.Forms.StatusStrip statusStrip1;
- private System.Windows.Forms.ToolStripStatusLabel tsslApp;
- private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
- private System.Windows.Forms.TextBox txtCpuType;
- private System.Windows.Forms.TextBox txtLog;
- }
-}
-
diff --git a/IOB-WIN-FILE-EXP/IOB-Exporter.cs b/IOB-WIN-FILE-EXP/IOB-Exporter.cs
deleted file mode 100644
index 9e3b574..0000000
--- a/IOB-WIN-FILE-EXP/IOB-Exporter.cs
+++ /dev/null
@@ -1,531 +0,0 @@
-using Newtonsoft.Json;
-using NLog;
-using S7.Net;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Net.NetworkInformation;
-using System.Windows.Forms;
-
-namespace MHT_Siemens
-{
- public partial class IOB_Exporter : Form
- {
- #region oggetti di base
-
- ///
- /// configurazione principale proxy
- ///
- protected dataProxy currDataProxy;
- ///
- /// Oggetto PLC da ri-utilizzare...
- ///
- protected Plc currPLC;
- ///
- /// parametri di connessione
- ///
- protected connParam parametri;
- ///
- /// oggetto logging
- ///
- public static Logger lg;
- ///
- /// oggetto uiTimer x gestione refresh UI
- ///
- protected Timer uiTimer = new Timer();
- ///
- /// oggetto uiTimer x sampling file testuale
- ///
- protected Timer sampleTimer = new Timer();
- ///
- /// oggetto uiTimer x verifiche
- ///
- protected Timer checkTimer = new Timer();
- ///
- /// Contatore per decidere quando loggare la lettura del file
- ///
- protected int loaderLogCounter = 30;
- ///
- /// file delle conf attivo
- ///
- protected string setupFile = "setup.json";
- ///
- /// Ultimi valori registrati da file
- ///
- protected Dictionary prevValues;
- ///
- /// valori correntemente letti dal file
- ///
- protected Dictionary currValues;
- #endregion
-
- #region inizializazione
-
- public IOB_Exporter()
- {
- InitializeComponent();
- myInit();
- }
-
- private void myInit()
- {
- lg = LogManager.GetCurrentClassLogger();
- tsslApp.Text = $"{utils.CRS("appName")}";
- fixVisibility();
-
-
- prevValues = new Dictionary();
- currValues = new Dictionary();
- loadMemConf();
- loadPlc();
- startUiTimer();
- startSampleTimer();
- startCheckTimer();
- }
-
- private void fixVisibility()
- {
- bool showParams = false;
-#if DEBUG
- showParams = true;
-#endif
- lblPlcIp.Visible = showParams;
- lblPlcCpu.Visible = showParams;
- lblPlcRack.Visible = showParams;
- lblPlcSlot.Visible = showParams;
- txtIP.Visible = showParams;
- txtCpuType.Visible = showParams;
- txtRack.Visible = showParams;
- txtSlot.Visible = showParams;
- }
-
- private void startUiTimer()
- {
- uiTimer.Interval = 20;
- uiTimer.Tick += UiTimer_Tick;
- uiTimer.Start();
- }
- private void startSampleTimer()
- {
- int sampleTimerMs = utils.CRI("sampleTimerMs");
- sampleTimerMs = sampleTimerMs < 100 ? 100 : sampleTimerMs;
- sampleTimer.Interval = sampleTimerMs;
- sampleTimer.Tick += SampleTimer_Tick;
- sampleTimer.Start();
- }
- private void startCheckTimer()
- {
- // ogni 5 minuti watchdog
- checkTimer.Interval = sampleTimer.Interval * 60;
- checkTimer.Tick += CheckTimer_Tick;
- checkTimer.Start();
- }
- ///
- /// init PLC
- ///
- private void loadPlc()
- {
- lgInfo("Refreshing connection...");
- parametri = currDataProxy.confPLC;
- // ora tento avvio PLC... SE PING OK...
- if (testPing() == IPStatus.Success)
- {
- try
- {
- lgInfo($"PLC parameters: CPU {parametri.tipoCpu} | IP: {parametri.ipAdrr} | R/S: {parametri.rack}/{parametri.slot}");
- currPLC = new Plc(parametri.tipoCpu, parametri.ipAdrr, parametri.rack, parametri.slot);
- currPLC.Open();
- if (currPLC.IsConnected)
- {
- lgInfo("PLC Connected!");
- }
- else
- {
- lgInfo("Connection error!");
- }
- }
- catch (Exception exc)
- {
- lgError(exc, "Errore in INIT PLC");
- }
- }
- }
- ///
- /// Init conf memoria
- ///
- protected void loadMemConf()
- {
- lgInfo("Starting loadMemConf");
- if (File.Exists(setupFile))
- {
- lgInfo("Setup File found!");
- try
- {
- StreamReader reader = new StreamReader(setupFile);
- string jsonData = reader.ReadToEnd();
- if (!string.IsNullOrEmpty(jsonData))
- {
- currDataProxy = JsonConvert.DeserializeObject(jsonData);
- lgInfo("Completed data deserialization");
- }
- reader.Close();
- }
- catch
- {
- currDataProxy = null;
- }
- }
- // se non esistesse creo un nuovo file default
- if (currDataProxy == null)
- {
- lgInfo($"File NOT found: {setupFile} - creating new");
- dataConf newParam = new dataConf()
- {
- Column = "Valore assoluto",
- Index = 8,
- MemConf = "DB701.DBD142",
- DataType = "real"
- };
- Dictionary paramList = new Dictionary();
- paramList.Add(newParam.MemConf, newParam);
- // creo nuovo obj...
- currDataProxy = new dataProxy()
- {
- csvFilePath = @"c:\zz\prova1.csv",
- csvFileEnableWrite = true,
- csvSeparator = ';',
- confPLC = new connParam()
- {
- ipAdrr = "192.168.0.102",
- tipoCpu = CpuType.S71500,
- rack = 0,
- slot = 1
- },
- parametersList = paramList
- };
- // salvo!
- string json = JsonConvert.SerializeObject(currDataProxy);
-
- //write string to file
- File.WriteAllText(setupFile, json);
- lgInfo($"Setup File saved: {setupFile}");
- }
-
- // adesso valorizzo tutti i parametri
- txtCsvPath.Text = currDataProxy.csvFilePath;
- txtIP.Text = currDataProxy.confPLC.ipAdrr;
- txtCpuType.Text = $"{currDataProxy.confPLC.tipoCpu}";
- txtRack.Text = $"{currDataProxy.confPLC.rack}";
- txtSlot.Text = $"{currDataProxy.confPLC.slot}";
- }
-
-#endregion
-
-
-#region metodi ricorrenti
-
-
- private void UiTimer_Tick(object sender, EventArgs e)
- {
- toolStripProgressBar1.ProgressBar.Value++;
- if (toolStripProgressBar1.ProgressBar.Value >= toolStripProgressBar1.ProgressBar.Maximum)
- {
- toolStripProgressBar1.ProgressBar.Value = 0;
- }
- }
- private void CheckTimer_Tick(object sender, EventArgs e)
- {
- // loggo!
- lgInfo("Program Alive control...");
- //verifico PLC
- if (currPLC.IsConnected)
- {
- lgInfo("PLC Connected!");
- }
- else
- {
- lgInfo("Connection error!");
- }
- // loggo che COMUNQUE forzo scrittura su PLC!
- lgInfo("Forced PLC write");
- // invio a PLC
- saveToPLC();
- }
- private void SampleTimer_Tick(object sender, EventArgs e)
- {
- // rileggo il file
- reloadFromFile();
-
- // verifico valore confrontando con i precedenti...
- if (dataChanged())
- {
- // loggo!
- lgInfo("Data Change on File");
-
- // invio a PLC
- saveToPLC();
- }
- }
-
-
-
-#endregion
-
-#region helper methods
-
- ///
- /// salva i dati sul PLC
- ///
- private void saveToPLC()
- {
- // invio TUTTI i dati al PLC secondo configurazione...
- if (testCncConn())
- {
- // decodifico memoria...
- memAddress memoria = null;
- double valore = -999;
- foreach (var item in currValues)
- {
- memoria = new memAddress(item.Key);
- double.TryParse(item.Value, out valore);
- // hard coded REAL!!!
- byte[] DB_Byte = new byte[4];
- S7.Net.Types.Double.ToByteArray(valore).CopyTo(DB_Byte, 0);
- currPLC.WriteBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, DB_Byte);
- // loggo invio al PLC!
- lgInfo($"Value sent to PLC: {item.Key} | {valore}");
- }
- }
- }
- ///
- /// Effettua comparazioen dati vecchi/nuovi
- ///
- ///
- private bool dataChanged()
- {
- bool answ = false;
- // se i 2 vettori sono diversi
- if (currValues.Count != prevValues.Count)
- {
- resetPrevVal();
- return true;
- }
- // verifico ogni singolo valore...
- foreach (var item in currValues)
- {
- // cerco...
- if (prevValues.ContainsKey(item.Key))
- {
- // verifico se diversi --> trovato cambio!
- answ = currValues[item.Key] != prevValues[item.Key];
- }
- else
- {
- answ = true;
- }
- // se ho cambiamenti --> esco!
- if (answ)
- {
- // salvo ed esco subito
- resetPrevVal();
- return true;
- }
- }
- return answ;
- }
- ///
- /// Refresh oggetto valori precedenti
- ///
- private void resetPrevVal()
- {
- // salvo ed esco subito
- prevValues = new Dictionary();
- foreach (var item in currValues)
- {
- prevValues.Add(item.Key, item.Value);
- }
- }
-
- ///
- /// Effettua rilettura da file
- ///
- protected void reloadFromFile()
- {
- if (File.Exists(currDataProxy.csvFilePath))
- {
- // leggo...
- using (StreamReader sr = new StreamReader(currDataProxy.csvFilePath))
- {
- string currentLine;
- //se ha header salto la prima riga...
- if (currDataProxy.csvFileEnableWrite)
- {
- if ((currentLine = sr.ReadLine()) == null)
- {
- // vuoto: loggo ed esco!
- lgError("Errore intestazione vuota!");
- return;
- }
- }
- // ora leggo la riga successiva... SE !=null
-
- if ((currentLine = sr.ReadLine()) != null)
- {
- // splitto riga e cerco valore...
- var valori = currentLine.Split(currDataProxy.csvSeparator);
- // cerco parametri!
- try
- {
- foreach (var item in currDataProxy.parametersList)
- {
- // cerco!
- if (valori.Count() >= item.Value.Index)
- {
- upsertValue(item.Key, valori[item.Value.Index]);
- }
- }
- }
- catch (Exception exc)
- {
- lgError($"Eccezione i decodifica riga misura: {Environment.NewLine}{exc}");
- }
- loaderLogCounter--;
- if (loaderLogCounter < 0)
- {
- // loggo che ho letto file e che contiene una certa riga...
- lgInfo($"Verifica periodica riga file, contenuto:{Environment.NewLine}{currentLine}");
- loaderLogCounter = 30;
- }
- }
- else
- {
- // vuoto: loggo ed esco!
- lgError("Errore riga vuota!");
- return;
- }
- loaderLogCounter--;
- if (loaderLogCounter < 0)
- {
- // loggo che ho letto file e che contiene una certa riga...
- lgInfo("Check periodico file presente OK");
- loaderLogCounter = 30;
- }
- }
- }
- else
- {
- lgError($"Errore! file non trovato: {currDataProxy.csvFilePath}");
- }
- }
-
- protected void upsertValue(string key, string value)
- {
- // cerco se ci sia... aggiorno!
- if (currValues.ContainsKey(key))
- {
- currValues[key] = value;
- }
- // altrimenti aggiungo
- else
- {
- currValues.Add(key, value);
- }
-
- }
-
- ///
- /// test ping all'indirizzo impostato nei parametri
- ///
- ///
- private IPStatus testPing()
- {
- IPStatus answ = IPStatus.Unknown; ;
- IPAddress address;
- PingReply reply;
- Ping pingSender = new Ping();
- address = IPAddress.Loopback;
- IPAddress.TryParse(parametri.ipAdrr, out address);
- reply = pingSender.Send(address, 100);
- answ = reply.Status;
- return answ;
- }
- ///
- /// Test connessione CNC
- ///
- ///
- private bool testCncConn()
- {
- bool answ = false;
- IPStatus pingStatus = testPing();
- // se passa il ping faccio il resto...
- if (pingStatus != IPStatus.Success)
- {
- lgError("Errore ping");
- }
- else
- {
- if (!currPLC.IsConnected)
- {
- currPLC.Open();
- }
-
- if (!currPLC.IsConnected)
- {
- lgError("Errore connessione");
- }
- else
- {
- answ = true;
- }
- }
- return answ;
- }
- private void appenRTLog(string contenuto)
- {
- // se troppe righe trimmo...
- string fullLog = limitLine2show($"{contenuto}{Environment.NewLine}{txtLog.Text}");
- // update
- txtLog.Text = fullLog;
- }
- ///
- /// Effettua un trim della stringa al numero max di linee da mostrare a video
- ///
- ///
- ///
- public string limitLine2show(string newString)
- {
- if (!string.IsNullOrEmpty(newString))
- {
- // se num righe superiore a limite trimmo...
- if (newString.Split('\n').Length > 50)
- {
- //int idx = newString.LastIndexOf('\r');
- int idx = newString.LastIndexOf(Environment.NewLine);
- newString = newString.Substring(0, idx);
- }
- }
- return newString;
- }
- protected void lgInfo(string contenuto)
- {
- lg.Info(contenuto);
- appenRTLog(contenuto);
- }
-
-
- protected void lgError(string contenuto)
- {
- lg.Error(contenuto);
- appenRTLog(contenuto);
- }
- protected void lgError(Exception exc, string contenuto)
- {
- lg.Error(exc, contenuto);
- appenRTLog(contenuto);
- }
-
-#endregion
- }
-}
diff --git a/IOB-WIN-FILE-EXP/dataProxy.cs b/IOB-WIN-FILE-EXP/dataProxy.cs
deleted file mode 100644
index 8db5694..0000000
--- a/IOB-WIN-FILE-EXP/dataProxy.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace MHT_Siemens
-{
- ///
- /// classe costruzione dataproxy
- ///
- public class dataProxy
- {
- ///
- /// Configurazione PLC
- ///
- public connParam confPLC { get; set; }
- ///
- /// Area memoria da usare come trigger x scrittura
- ///
- public string TriggerMemConf { get; set; } = "";
- ///
- /// Elenco parametri da salvare
- ///
- public Dictionary parametersList { get; set; } = new Dictionary();
- }
-
- ///
- /// Configurazione item memoria gestito
- ///
- public class dataConf
- {
- ///
- /// Colonna (intestazione) se non presente indice
- ///
- public string Column { get; set; } = "";
- ///
- /// Indice colonna (se presente usa questo)
- ///
- public int Index { get; set; } = -1;
- ///
- /// Area memoria da cui leggere i dati
- ///
- public string MemConf { get; set; } = "";
- ///
- /// Tipo di dati
- ///
- public string DataType { get; set; } = "";
- ///
- /// Dimensione memoria in Byte
- ///
- public int memByteSize { get; set; } = 1;
- }
-}
diff --git a/IOB.WIN.Adapters.sln b/IOB.WIN.Adapters.sln
index 3ddfcfc..d5739e5 100644
--- a/IOB.WIN.Adapters.sln
+++ b/IOB.WIN.Adapters.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30002.166
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB.WIN.FileExp", "IOB-WIN-FILE-EXP\IOB.WIN.FileExp.csproj", "{958CB938-3860-49D3-8B16-15ED0E9FE2FB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOB.WIN.FileExp", "IOB.WIN.FileExp\IOB.WIN.FileExp.csproj", "{958CB938-3860-49D3-8B16-15ED0E9FE2FB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/IOB-WIN-FILE-EXP/App.config b/IOB.WIN.FileExp/App.config
similarity index 100%
rename from IOB-WIN-FILE-EXP/App.config
rename to IOB.WIN.FileExp/App.config
diff --git a/IOB.WIN.FileExp/Config/setup-MHT.json b/IOB.WIN.FileExp/Config/setup-MHT.json
new file mode 100644
index 0000000..508d79c
--- /dev/null
+++ b/IOB.WIN.FileExp/Config/setup-MHT.json
@@ -0,0 +1,82 @@
+{
+ "confPLC": {
+ "ipAdrr": "192.168.214.1",
+ "tipoCpu": "S7300",
+ "rack": 0,
+ "slot": 2
+ },
+ "triggerList": {
+ "DB700.DBB0": {
+ "Column": "Trigger",
+ "MemConf": "DB700.DBB0",
+ "DataType": "byte",
+ "memByteSize": 1,
+ "TriggerVal": "01"
+ }
+ },
+ "parametersList": {
+ "DB700.DBB8": {
+ "Column": "Valore 1",
+ "Index": 1,
+ "MemConf": "DB700.DBB8",
+ "DataType": "word",
+ "memByteSize": 2
+ },
+ "DB700.DBB10": {
+ "Column": "Valore 2",
+ "Index": 2,
+ "MemConf": "DB700.DBB10",
+ "DataType": "word",
+ "memByteSize": 2
+ },
+ "DB700.DBB16": {
+ "Column": "Valore 3",
+ "Index": 3,
+ "MemConf": "DB700.DBB16",
+ "DataType": "dword",
+ "memByteSize": 4
+ },
+ "DB700.DBB20": {
+ "Column": "Valore 4",
+ "Index": 4,
+ "MemConf": "DB700.DBB20",
+ "DataType": "dword",
+ "memByteSize": 4
+ },
+ "DB700.DBB32": {
+ "Column": "Valore 5",
+ "Index": 5,
+ "MemConf": "DB700.DBB32",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB700.DBB36": {
+ "Column": "Valore 6",
+ "Index": 6,
+ "MemConf": "DB700.DBB36",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB700.DBB40": {
+ "Column": "Valore 7",
+ "Index": 7,
+ "MemConf": "DB700.DBB40",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB700.DBB48": {
+ "Column": "Valore 8",
+ "Index": 8,
+ "MemConf": "DB700.DBB48",
+ "DataType": "string",
+ "memByteSize": 20
+ }
+ //"parametersList": {
+ // "DB701.DBD142": {
+ // "Column": "Valore assoluto",
+ // "Index": 7,
+ // "MemConf": "DB701.DBD142",
+ // "DataType": "real"
+ // }
+ //}
+ }
\ No newline at end of file
diff --git a/IOB.WIN.FileExp/Config/setup-Steamware.json b/IOB.WIN.FileExp/Config/setup-Steamware.json
new file mode 100644
index 0000000..31181c0
--- /dev/null
+++ b/IOB.WIN.FileExp/Config/setup-Steamware.json
@@ -0,0 +1,67 @@
+{
+ "confPLC": {
+ "ipAdrr": "192.168.0.102",
+ "tipoCpu": "S71500",
+ "rack": 0,
+ "slot": 1
+ },
+ "triggerList": {
+ "DB999.DBB0": {
+ "Column": "Trigger",
+ "MemConf": "DB999.DBB0",
+ "DataType": "byte",
+ "memByteSize": 1,
+ "TriggerVal": "01"
+ }
+ },
+ "parametersList": {
+ "DB999.DBB8": {
+ "Column": "Valore 1",
+ "MemConf": "DB999.DBB8",
+ "DataType": "word",
+ "memByteSize": 2
+ },
+ "DB999.DBB10": {
+ "Column": "Valore 2",
+ "MemConf": "DB999.DBB10",
+ "DataType": "word",
+ "memByteSize": 2
+ },
+ "DB999.DBB16": {
+ "Column": "Valore 3",
+ "MemConf": "DB999.DBB16",
+ "DataType": "dword",
+ "memByteSize": 4
+ },
+ "DB999.DBB20": {
+ "Column": "Valore 4",
+ "MemConf": "DB999.DBB20",
+ "DataType": "dword",
+ "memByteSize": 4
+ },
+ "DB999.DBB32": {
+ "Column": "Valore 5",
+ "MemConf": "DB999.DBB32",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB999.DBB36": {
+ "Column": "Valore 6",
+ "MemConf": "DB999.DBB36",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB999.DBB40": {
+ "Column": "Valore 7",
+ "MemConf": "DB999.DBB40",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB999.DBB48": {
+ "Column": "Valore 8",
+ "MemConf": "DB999.DBB48",
+ "DataType": "string",
+ "memByteSize": 20
+ }
+ }
+}
\ No newline at end of file
diff --git a/IOB.WIN.FileExp/Config/setup.json b/IOB.WIN.FileExp/Config/setup.json
new file mode 100644
index 0000000..31181c0
--- /dev/null
+++ b/IOB.WIN.FileExp/Config/setup.json
@@ -0,0 +1,67 @@
+{
+ "confPLC": {
+ "ipAdrr": "192.168.0.102",
+ "tipoCpu": "S71500",
+ "rack": 0,
+ "slot": 1
+ },
+ "triggerList": {
+ "DB999.DBB0": {
+ "Column": "Trigger",
+ "MemConf": "DB999.DBB0",
+ "DataType": "byte",
+ "memByteSize": 1,
+ "TriggerVal": "01"
+ }
+ },
+ "parametersList": {
+ "DB999.DBB8": {
+ "Column": "Valore 1",
+ "MemConf": "DB999.DBB8",
+ "DataType": "word",
+ "memByteSize": 2
+ },
+ "DB999.DBB10": {
+ "Column": "Valore 2",
+ "MemConf": "DB999.DBB10",
+ "DataType": "word",
+ "memByteSize": 2
+ },
+ "DB999.DBB16": {
+ "Column": "Valore 3",
+ "MemConf": "DB999.DBB16",
+ "DataType": "dword",
+ "memByteSize": 4
+ },
+ "DB999.DBB20": {
+ "Column": "Valore 4",
+ "MemConf": "DB999.DBB20",
+ "DataType": "dword",
+ "memByteSize": 4
+ },
+ "DB999.DBB32": {
+ "Column": "Valore 5",
+ "MemConf": "DB999.DBB32",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB999.DBB36": {
+ "Column": "Valore 6",
+ "MemConf": "DB999.DBB36",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB999.DBB40": {
+ "Column": "Valore 7",
+ "MemConf": "DB999.DBB40",
+ "DataType": "real",
+ "memByteSize": 4
+ },
+ "DB999.DBB48": {
+ "Column": "Valore 8",
+ "MemConf": "DB999.DBB48",
+ "DataType": "string",
+ "memByteSize": 20
+ }
+ }
+}
\ No newline at end of file
diff --git a/IOB.WIN.FileExp/IOB-Exporter.Designer.cs b/IOB.WIN.FileExp/IOB-Exporter.Designer.cs
new file mode 100644
index 0000000..3e86962
--- /dev/null
+++ b/IOB.WIN.FileExp/IOB-Exporter.Designer.cs
@@ -0,0 +1,236 @@
+namespace IOB.WIN.FileExp
+{
+ partial class IOB_Exporter
+ {
+ ///
+ /// Variabile di progettazione necessaria.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Pulire le risorse in uso.
+ ///
+ /// ha valore true se le risorse gestite devono essere eliminate, false in caso contrario.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Codice generato da Progettazione Windows Form
+
+ ///
+ /// Metodo necessario per il supporto della finestra di progettazione. Non modificare
+ /// il contenuto del metodo con l'editor di codice.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(IOB_Exporter));
+ this.txtCsvPath = new System.Windows.Forms.TextBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.lblPlcIp = new System.Windows.Forms.Label();
+ this.txtIP = new System.Windows.Forms.TextBox();
+ this.txtSlot = new System.Windows.Forms.TextBox();
+ this.lblPlcSlot = new System.Windows.Forms.Label();
+ this.txtRack = new System.Windows.Forms.TextBox();
+ this.lblPlcRack = new System.Windows.Forms.Label();
+ this.lblPlcCpu = new System.Windows.Forms.Label();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.tsslApp = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
+ this.txtCpuType = new System.Windows.Forms.TextBox();
+ this.txtLog = new System.Windows.Forms.TextBox();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // txtCsvPath
+ //
+ this.txtCsvPath.Enabled = false;
+ this.txtCsvPath.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtCsvPath.Location = new System.Drawing.Point(28, 40);
+ this.txtCsvPath.Name = "txtCsvPath";
+ this.txtCsvPath.Size = new System.Drawing.Size(172, 20);
+ this.txtCsvPath.TabIndex = 0;
+ this.txtCsvPath.Text = "c:\\TMP\\OutputFile.csv";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(25, 24);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(47, 13);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "CSV File";
+ //
+ // lblPlcIp
+ //
+ this.lblPlcIp.AutoSize = true;
+ this.lblPlcIp.Location = new System.Drawing.Point(279, 24);
+ this.lblPlcIp.Name = "lblPlcIp";
+ this.lblPlcIp.Size = new System.Drawing.Size(42, 13);
+ this.lblPlcIp.TabIndex = 2;
+ this.lblPlcIp.Text = "IP Addr";
+ //
+ // txtIP
+ //
+ this.txtIP.Enabled = false;
+ this.txtIP.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtIP.Location = new System.Drawing.Point(340, 21);
+ this.txtIP.Name = "txtIP";
+ this.txtIP.Size = new System.Drawing.Size(106, 20);
+ this.txtIP.TabIndex = 3;
+ this.txtIP.Text = "192.168.0.102";
+ this.txtIP.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
+ //
+ // txtSlot
+ //
+ this.txtSlot.Enabled = false;
+ this.txtSlot.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtSlot.Location = new System.Drawing.Point(499, 47);
+ this.txtSlot.Margin = new System.Windows.Forms.Padding(2);
+ this.txtSlot.Name = "txtSlot";
+ this.txtSlot.Size = new System.Drawing.Size(29, 20);
+ this.txtSlot.TabIndex = 10;
+ this.txtSlot.Text = "1";
+ this.txtSlot.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
+ //
+ // lblPlcSlot
+ //
+ this.lblPlcSlot.AutoSize = true;
+ this.lblPlcSlot.Location = new System.Drawing.Point(462, 49);
+ this.lblPlcSlot.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblPlcSlot.Name = "lblPlcSlot";
+ this.lblPlcSlot.Size = new System.Drawing.Size(25, 13);
+ this.lblPlcSlot.TabIndex = 8;
+ this.lblPlcSlot.Text = "Slot";
+ //
+ // txtRack
+ //
+ this.txtRack.Enabled = false;
+ this.txtRack.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtRack.Location = new System.Drawing.Point(499, 21);
+ this.txtRack.Margin = new System.Windows.Forms.Padding(2);
+ this.txtRack.Name = "txtRack";
+ this.txtRack.Size = new System.Drawing.Size(29, 20);
+ this.txtRack.TabIndex = 11;
+ this.txtRack.Text = "0";
+ this.txtRack.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
+ //
+ // lblPlcRack
+ //
+ this.lblPlcRack.AutoSize = true;
+ this.lblPlcRack.Location = new System.Drawing.Point(462, 23);
+ this.lblPlcRack.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblPlcRack.Name = "lblPlcRack";
+ this.lblPlcRack.Size = new System.Drawing.Size(33, 13);
+ this.lblPlcRack.TabIndex = 9;
+ this.lblPlcRack.Text = "Rack";
+ //
+ // lblPlcCpu
+ //
+ this.lblPlcCpu.AutoSize = true;
+ this.lblPlcCpu.Location = new System.Drawing.Point(279, 49);
+ this.lblPlcCpu.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblPlcCpu.Name = "lblPlcCpu";
+ this.lblPlcCpu.Size = new System.Drawing.Size(56, 13);
+ this.lblPlcCpu.TabIndex = 7;
+ this.lblPlcCpu.Text = "CPU Type";
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.tsslApp,
+ this.toolStripProgressBar1});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 421);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(658, 22);
+ this.statusStrip1.TabIndex = 12;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // tsslApp
+ //
+ this.tsslApp.Name = "tsslApp";
+ this.tsslApp.Size = new System.Drawing.Size(16, 17);
+ this.tsslApp.Text = "...";
+ //
+ // toolStripProgressBar1
+ //
+ this.toolStripProgressBar1.Name = "toolStripProgressBar1";
+ this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16);
+ //
+ // txtCpuType
+ //
+ this.txtCpuType.Enabled = false;
+ this.txtCpuType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtCpuType.Location = new System.Drawing.Point(340, 47);
+ this.txtCpuType.Name = "txtCpuType";
+ this.txtCpuType.Size = new System.Drawing.Size(106, 20);
+ this.txtCpuType.TabIndex = 13;
+ this.txtCpuType.Text = "S71200";
+ this.txtCpuType.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
+ //
+ // txtLog
+ //
+ this.txtLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtLog.BackColor = System.Drawing.Color.Black;
+ this.txtLog.ForeColor = System.Drawing.SystemColors.MenuHighlight;
+ this.txtLog.Location = new System.Drawing.Point(13, 73);
+ this.txtLog.Multiline = true;
+ this.txtLog.Name = "txtLog";
+ this.txtLog.ReadOnly = true;
+ this.txtLog.Size = new System.Drawing.Size(633, 345);
+ this.txtLog.TabIndex = 14;
+ this.txtLog.Text = "- - -";
+ this.txtLog.WordWrap = false;
+ //
+ // IOB_Exporter
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(658, 443);
+ this.Controls.Add(this.txtLog);
+ this.Controls.Add(this.txtCpuType);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.txtSlot);
+ this.Controls.Add(this.lblPlcSlot);
+ this.Controls.Add(this.txtRack);
+ this.Controls.Add(this.lblPlcRack);
+ this.Controls.Add(this.lblPlcCpu);
+ this.Controls.Add(this.txtIP);
+ this.Controls.Add(this.lblPlcIp);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.txtCsvPath);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "IOB_Exporter";
+ this.Text = "MAPO IOB Exporter";
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox txtCsvPath;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label lblPlcIp;
+ private System.Windows.Forms.TextBox txtIP;
+ private System.Windows.Forms.TextBox txtSlot;
+ private System.Windows.Forms.Label lblPlcSlot;
+ private System.Windows.Forms.TextBox txtRack;
+ private System.Windows.Forms.Label lblPlcRack;
+ private System.Windows.Forms.Label lblPlcCpu;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel tsslApp;
+ private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
+ private System.Windows.Forms.TextBox txtCpuType;
+ private System.Windows.Forms.TextBox txtLog;
+ }
+}
+
diff --git a/IOB.WIN.FileExp/IOB-Exporter.cs b/IOB.WIN.FileExp/IOB-Exporter.cs
new file mode 100644
index 0000000..add8bc6
--- /dev/null
+++ b/IOB.WIN.FileExp/IOB-Exporter.cs
@@ -0,0 +1,564 @@
+using Newtonsoft.Json;
+using NLog;
+using S7.Net;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.NetworkInformation;
+using System.Reflection;
+using System.Windows.Forms;
+
+namespace IOB.WIN.FileExp
+{
+ public partial class IOB_Exporter : Form
+ {
+ #region oggetti di base
+
+ ///
+ /// configurazione principale proxy
+ ///
+ protected dataProxy currDataProxy;
+ ///
+ /// Oggetto PLC da ri-utilizzare...
+ ///
+ protected Plc currPLC;
+ ///
+ /// parametri di connessione
+ ///
+ protected connParam parametri;
+ ///
+ /// oggetto logging
+ ///
+ public static Logger lg;
+ ///
+ /// oggetto uiTimer x gestione refresh UI
+ ///
+ protected Timer uiTimer = new Timer();
+ ///
+ /// oggetto uiTimer x sampling file testuale
+ ///
+ protected Timer sampleTimer = new Timer();
+ ///
+ /// oggetto uiTimer x verifiche
+ ///
+ protected Timer checkTimer = new Timer();
+ ///
+ /// Contatore per decidere quando loggare la lettura del file
+ ///
+ protected int loaderLogCounter = 30;
+ ///
+ /// Directory base delle risorse (virtuale)
+ ///
+ protected const string RESOURCE_DIRECTORY = @"IOB.WIN.FileExp.Config.";
+ ///
+ /// file delle conf attivo
+ ///
+ protected const string setupFile = RESOURCE_DIRECTORY + @"setup.json";
+ ///
+ /// File output x salvataggio
+ ///
+ protected string outFilePath = @"C:\TMP\OutFile.csv";
+ ///
+ /// Ultimi valori registrati da file
+ ///
+ protected Dictionary prevValues;
+ ///
+ /// valori correntemente letti dal file
+ ///
+ protected Dictionary currValues;
+ #endregion
+
+ #region inizializazione
+
+ public IOB_Exporter()
+ {
+ InitializeComponent();
+ myInit();
+ }
+
+ private void myInit()
+ {
+ lg = LogManager.GetCurrentClassLogger();
+ txtLog.Text = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} ----------------------------------------------------";
+ tsslApp.Text = $"{utils.CRS("appName")}";
+ fixVisibility();
+ prevValues = new Dictionary();
+ currValues = new Dictionary();
+ loadMemConf();
+ loadPlc();
+ startUiTimer();
+ startCheckTimer();
+ startPlcSampleTimer();
+ }
+ ///
+ /// Fix visibilità parametri conf in debug
+ ///
+ private void fixVisibility()
+ {
+ bool showParams = false;
+#if DEBUG
+ showParams = true;
+#endif
+ lblPlcIp.Visible = showParams;
+ lblPlcCpu.Visible = showParams;
+ lblPlcRack.Visible = showParams;
+ lblPlcSlot.Visible = showParams;
+ txtIP.Visible = showParams;
+ txtCpuType.Visible = showParams;
+ txtRack.Visible = showParams;
+ txtSlot.Visible = showParams;
+ }
+ ///
+ /// avvio timer update UI
+ ///
+ private void startUiTimer()
+ {
+ // setup progressBar
+ toolStripProgressBar1.ProgressBar.Step = 5;
+ // UI: ogni 100 ms
+ uiTimer.Interval = 100;
+ uiTimer.Tick += UiTimer_Tick;
+ uiTimer.Start();
+ }
+ ///
+ /// Avvio timer controlli periodici (PLC; file...)
+ ///
+ private void startCheckTimer()
+ {
+ // check preliminare...
+ doPeriodChecks();
+ // poi ogni 3 minuti replico (watchdog)
+ checkTimer.Interval = 3 * 60 * 1000;
+ checkTimer.Tick += CheckTimer_Tick;
+ checkTimer.Start();
+ }
+ ///
+ /// Avvio timer campionamento PLC
+ ///
+ private void startPlcSampleTimer()
+ {
+ int sampleTimerMs = utils.CRI("sampleTimerMs");
+ // limite in lettura a 5 hz
+ sampleTimerMs = sampleTimerMs < 200 ? 200 : sampleTimerMs;
+ sampleTimer.Interval = sampleTimerMs;
+ sampleTimer.Tick += plcSampleTimer_Tick;
+ sampleTimer.Start();
+ }
+
+ ///
+ /// init PLC
+ ///
+ private void loadPlc()
+ {
+ lgInfo("Refreshing connection...");
+ parametri = currDataProxy.confPLC;
+ // ora tento avvio PLC... SE PING OK...
+ if (testPing() == IPStatus.Success)
+ {
+ try
+ {
+ lgInfo($"PLC parameters: CPU {parametri.tipoCpu} | IP: {parametri.ipAdrr} | R/S: {parametri.rack}/{parametri.slot}");
+ currPLC = new Plc(parametri.tipoCpu, parametri.ipAdrr, parametri.rack, parametri.slot);
+ currPLC.Open();
+ if (currPLC.IsConnected)
+ {
+ lgInfo("PLC Connected!");
+ }
+ else
+ {
+ lgInfo("Connection error!");
+ }
+ }
+ catch (Exception exc)
+ {
+ lgError(exc, "Errore in INIT PLC");
+ }
+ }
+ }
+ ///
+ /// Init conf memoria
+ ///
+ protected void loadMemConf()
+ {
+ lgInfo("Starting loadMemConf");
+ // recupero conf da resources
+ Assembly myAssembly = Assembly.GetExecutingAssembly();
+ //var resNames = myAssembly.GetManifestResourceNames();
+ using (Stream confStream = myAssembly.GetManifestResourceStream(setupFile))
+ {
+ using (StreamReader fileReader = new StreamReader(confStream))
+ {
+ string jsonData = fileReader.ReadToEnd();
+ if (!string.IsNullOrEmpty(jsonData))
+ {
+ lgInfo("Setup OK!");
+ try
+ {
+ currDataProxy = JsonConvert.DeserializeObject(jsonData);
+ // verifica num max variabili (MAX 8...)
+ if (currDataProxy.parametersList.Count > 8)
+ {
+ lgInfo("Invalid config, reduce params list");
+ while (currDataProxy.parametersList.Count > 8)
+ {
+ currDataProxy.parametersList.Remove(currDataProxy.parametersList.LastOrDefault().Key);
+ }
+ }
+ lgInfo("Completed data deserialization");
+ }
+ catch
+ {
+ currDataProxy = null;
+ }
+ }
+ }
+ }
+
+ if (currDataProxy == null)
+ {
+ lgInfo($"Setup File NOT found: {setupFile} - creating new");
+ dataConf newParam = new dataConf()
+ {
+ Column = "Valore assoluto",
+ MemConf = "DB701.DBD142",
+ DataType = "real"
+ };
+ Dictionary paramList = new Dictionary();
+ paramList.Add(newParam.MemConf, newParam);
+ // creo nuovo obj...
+ currDataProxy = new dataProxy()
+ {
+ triggerList = null,
+ confPLC = new connParam()
+ {
+ ipAdrr = "192.168.0.102",
+ tipoCpu = CpuType.S71500,
+ rack = 0,
+ slot = 1
+ },
+ parametersList = paramList
+ };
+ }
+
+ // adesso valorizzo tutti i parametri
+ outFilePath = utils.CRS("csvFilePath");
+ txtCsvPath.Text = outFilePath;
+ txtIP.Text = currDataProxy.confPLC.ipAdrr;
+ txtCpuType.Text = $"{currDataProxy.confPLC.tipoCpu}";
+ txtRack.Text = $"{currDataProxy.confPLC.rack}";
+ txtSlot.Text = $"{currDataProxy.confPLC.slot}";
+ }
+
+ #endregion
+
+ #region metodi ricorrenti
+
+ ///
+ /// Esecuzione task UI
+ ///
+ ///
+ ///
+ private void UiTimer_Tick(object sender, EventArgs e)
+ {
+ toolStripProgressBar1.ProgressBar.Value++;
+ if (toolStripProgressBar1.ProgressBar.Value >= toolStripProgressBar1.ProgressBar.Maximum)
+ {
+ toolStripProgressBar1.ProgressBar.Value = 0;
+ }
+ }
+ ///
+ /// Esecuzione task di verifica periodica
+ ///
+ ///
+ ///
+ private void CheckTimer_Tick(object sender, EventArgs e)
+ {
+ doPeriodChecks();
+ }
+ ///
+ /// Effettua controlli periodici su PLC, file...
+ ///
+ private void doPeriodChecks()
+ {
+ // loggo!
+ lgInfo("Program Alive control...");
+ //verifico PLC
+ if (currPLC.IsConnected)
+ {
+ lgInfo("PLC Connected!");
+ }
+ else
+ {
+ lgInfo("Connection error!");
+ }
+ // verifico esistenza file sennò creo
+ if (!File.Exists(outFilePath))
+ {
+ lgInfo("Target file not found: creating new!");
+ string fileContent = "";
+ // se non esiste --> creo con headers se richiesto!
+ if (utils.CRB("csvHeader"))
+ {
+ foreach (var item in currDataProxy.parametersList)
+ {
+ fileContent += $"{item.Value.Column}{utils.CRS("csvSeparator")}";
+ }
+ // elimino ultimo separatore...
+ fileContent = fileContent.Substring(0, fileContent.Length - 1);
+ }
+ // scrivo!
+ File.WriteAllText(outFilePath, fileContent);
+ }
+ }
+
+ ///
+ /// Esecuzione task di campionamento
+ ///
+ ///
+ ///
+ private void plcSampleTimer_Tick(object sender, EventArgs e)
+ {
+ // leggo aree di memoria triggers dal PLC
+ reloadTriggersFromPLC();
+
+ // verifico valore confrontando con i precedenti...
+ if (dataChanged())
+ {
+ // invio su file
+ saveToFile();
+ }
+ }
+
+ #endregion
+
+ #region helper methods
+
+ ///
+ /// salva i dati sul FILE in append
+ ///
+ private void saveToFile()
+ {
+ // FIXME TODO salvare su file
+#if false
+ // invio TUTTI i dati al PLC secondo configurazione...
+ if (testCncConn())
+ {
+ // decodifico memoria...
+ memAddress memoria = null;
+ double valore = -999;
+ foreach (var item in currValues)
+ {
+ memoria = new memAddress(item.Key);
+ double.TryParse(item.Value, out valore);
+ // hard coded REAL!!!
+ byte[] DB_Byte = new byte[4];
+ S7.Net.Types.Double.ToByteArray(valore).CopyTo(DB_Byte, 0);
+ currPLC.WriteBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, DB_Byte);
+ // loggo invio al PLC!
+ lgInfo($"Value sent to PLC: {item.Key} | {valore}");
+ }
+ }
+#endif
+ }
+ ///
+ /// Effettua comparazioen dati vecchi/nuovi
+ ///
+ ///
+ private bool dataChanged()
+ {
+ bool answ = false;
+ // se i 2 vettori sono diversi in numero
+ if (currValues.Count != prevValues.Count)
+ {
+ resetPrevVal();
+ // loggo!
+ lgInfo("Trigger activated on PLC: different count");
+ return true;
+ }
+ // verifico ogni singolo valore...
+ foreach (var item in currValues)
+ {
+ // cerco...
+ if (prevValues.ContainsKey(item.Key))
+ {
+ // verifico se diversi --> trovato cambio, indago!
+ if (currValues[item.Key] != prevValues[item.Key])
+ {
+ // loggo!
+ lgInfo($"Difference found: {prevValues[item.Key]} --> {currValues[item.Key]}");
+ // solo se il NUOVO valore è pari al trigger cercato...
+ if (currValues[item.Key] == currDataProxy.triggerList[item.Key].TriggerVal)
+ {
+ lgInfo($"Valid Trigger found: {currDataProxy.triggerList[item.Key].TriggerVal}");
+ answ = true;
+ }
+ else
+ {
+ // senza segnalare cambio recepisco nuovo valore...
+ resetPrevVal();
+ }
+ }
+ }
+ else
+ {
+ lgInfo($"Trigger activated on PLC: new value found --> {item.Key}");
+ answ = true;
+ }
+ // se ho cambiamenti --> esco!
+ if (answ)
+ {
+ // salvo ed esco subito
+ resetPrevVal();
+ return true;
+ }
+ }
+ return answ;
+ }
+ ///
+ /// Refresh oggetto valori precedenti
+ ///
+ private void resetPrevVal()
+ {
+ // salvo ed esco subito
+ prevValues = new Dictionary();
+ foreach (var item in currValues)
+ {
+ prevValues.Add(item.Key, item.Value);
+ }
+ }
+
+ ///
+ /// Effettua rilettura da PLC dei triggers data
+ ///
+ protected void reloadTriggersFromPLC()
+ {
+ // init
+ memAddress memoria = null;
+ int numByte = 0;
+ // leggo triggers dal PLC
+ foreach (var item in currDataProxy.triggerList)
+ {
+ memoria = new memAddress(item.Value.MemConf);
+ numByte = item.Value.memByteSize;
+ // leggo!
+ var currMem = currPLC.ReadBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, numByte);
+ // salvo
+ upsertValue(item.Value.MemConf, BitConverter.ToString(currMem));
+ }
+ }
+
+
+ protected void upsertValue(string key, string value)
+ {
+ // cerco se ci sia... aggiorno!
+ if (currValues.ContainsKey(key))
+ {
+ currValues[key] = value;
+ }
+ // altrimenti aggiungo
+ else
+ {
+ currValues.Add(key, value);
+ }
+ }
+
+ ///
+ /// test ping all'indirizzo impostato nei parametri
+ ///
+ ///
+ private IPStatus testPing()
+ {
+ IPStatus answ = IPStatus.Unknown; ;
+ IPAddress address;
+ PingReply reply;
+ Ping pingSender = new Ping();
+ address = IPAddress.Loopback;
+ IPAddress.TryParse(parametri.ipAdrr, out address);
+ reply = pingSender.Send(address, 100);
+ answ = reply.Status;
+ return answ;
+ }
+ ///
+ /// Test connessione CNC
+ ///
+ ///
+ private bool testCncConn()
+ {
+ bool answ = false;
+ IPStatus pingStatus = testPing();
+ // se passa il ping faccio il resto...
+ if (pingStatus != IPStatus.Success)
+ {
+ lgError("Errore ping");
+ }
+ else
+ {
+ if (!currPLC.IsConnected)
+ {
+ currPLC.Open();
+ }
+
+ if (!currPLC.IsConnected)
+ {
+ lgError("Errore connessione");
+ }
+ else
+ {
+ answ = true;
+ }
+ }
+ return answ;
+ }
+ ///
+ /// Aggiorno log in area console
+ ///
+ ///
+ private void appendRTLog(string contenuto)
+ {
+ // se troppe righe trimmo...
+ string fullLog = limitLine2show($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} {contenuto}{Environment.NewLine}{txtLog.Text}");
+ // update
+ txtLog.Text = fullLog;
+ }
+ ///
+ /// Effettua un trim della stringa al numero max di linee da mostrare a video
+ ///
+ ///
+ ///
+ public string limitLine2show(string newString)
+ {
+ if (!string.IsNullOrEmpty(newString))
+ {
+ // se num righe superiore a limite trimmo...
+ if (newString.Split('\n').Length > 50)
+ {
+ //int idx = newString.LastIndexOf('\r');
+ int idx = newString.LastIndexOf(Environment.NewLine);
+ newString = newString.Substring(0, idx);
+ }
+ }
+ return newString;
+ }
+ protected void lgInfo(string contenuto)
+ {
+ lg.Info(contenuto);
+ appendRTLog($"| INFO | {contenuto}");
+ }
+
+
+ protected void lgError(string contenuto)
+ {
+ lg.Error(contenuto);
+ appendRTLog($"| ERROR | {contenuto}");
+ }
+ protected void lgError(Exception exc, string contenuto)
+ {
+ lg.Error(exc, contenuto);
+ appendRTLog($"| EXC | {contenuto}");
+ }
+
+ #endregion
+ }
+}
diff --git a/IOB-WIN-FILE-EXP/IOB-Exporter.resx b/IOB.WIN.FileExp/IOB-Exporter.resx
similarity index 100%
rename from IOB-WIN-FILE-EXP/IOB-Exporter.resx
rename to IOB.WIN.FileExp/IOB-Exporter.resx
diff --git a/IOB-WIN-FILE-EXP/IOB.WIN.FileExp.csproj b/IOB.WIN.FileExp/IOB.WIN.FileExp.csproj
similarity index 97%
rename from IOB-WIN-FILE-EXP/IOB.WIN.FileExp.csproj
rename to IOB.WIN.FileExp/IOB.WIN.FileExp.csproj
index 534ce29..f886da2 100644
--- a/IOB-WIN-FILE-EXP/IOB.WIN.FileExp.csproj
+++ b/IOB.WIN.FileExp/IOB.WIN.FileExp.csproj
@@ -6,8 +6,8 @@
AnyCPU
{958CB938-3860-49D3-8B16-15ED0E9FE2FB}
WinExe
- MHT_Siemens
- MHT-Siemens
+ IOB.WIN.FileExp
+ IOB.WIN.FileExp
v4.0
512
true
@@ -65,7 +65,6 @@
-
diff --git a/IOB-WIN-FILE-EXP/NLog.config b/IOB.WIN.FileExp/NLog.config
similarity index 100%
rename from IOB-WIN-FILE-EXP/NLog.config
rename to IOB.WIN.FileExp/NLog.config
diff --git a/IOB-WIN-FILE-EXP/NLog.xsd b/IOB.WIN.FileExp/NLog.xsd
similarity index 100%
rename from IOB-WIN-FILE-EXP/NLog.xsd
rename to IOB.WIN.FileExp/NLog.xsd
diff --git a/IOB-WIN-FILE-EXP/Program.cs b/IOB.WIN.FileExp/Program.cs
similarity index 95%
rename from IOB-WIN-FILE-EXP/Program.cs
rename to IOB.WIN.FileExp/Program.cs
index 85fd6c7..cd7d103 100644
--- a/IOB-WIN-FILE-EXP/Program.cs
+++ b/IOB.WIN.FileExp/Program.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
-namespace MHT_Siemens
+namespace IOB.WIN.FileExp
{
static class Program
{
diff --git a/IOB-WIN-FILE-EXP/Properties/AssemblyInfo.cs b/IOB.WIN.FileExp/Properties/AssemblyInfo.cs
similarity index 94%
rename from IOB-WIN-FILE-EXP/Properties/AssemblyInfo.cs
rename to IOB.WIN.FileExp/Properties/AssemblyInfo.cs
index 4fd025f..2fb3df6 100644
--- a/IOB-WIN-FILE-EXP/Properties/AssemblyInfo.cs
+++ b/IOB.WIN.FileExp/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
// usando l'asterisco '*' come illustrato di seguito:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.1.2005.28")]
-[assembly: AssemblyFileVersion("1.1.2005.28")]
+[assembly: AssemblyVersion("1.2.2007.31")]
+[assembly: AssemblyFileVersion("1.2.2007.31")]
diff --git a/IOB-WIN-FILE-EXP/Properties/Resources.Designer.cs b/IOB.WIN.FileExp/Properties/Resources.Designer.cs
similarity index 94%
rename from IOB-WIN-FILE-EXP/Properties/Resources.Designer.cs
rename to IOB.WIN.FileExp/Properties/Resources.Designer.cs
index 8b8ee52..8f9409b 100644
--- a/IOB-WIN-FILE-EXP/Properties/Resources.Designer.cs
+++ b/IOB.WIN.FileExp/Properties/Resources.Designer.cs
@@ -8,7 +8,7 @@
//
//------------------------------------------------------------------------------
-namespace MHT_Siemens.Properties {
+namespace IOB.WIN.FileExp.Properties {
using System;
@@ -39,7 +39,7 @@ namespace MHT_Siemens.Properties {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MHT_Siemens.Properties.Resources", typeof(Resources).Assembly);
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IOB.WIN.FileExp.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
diff --git a/IOB-WIN-FILE-EXP/Properties/Resources.resx b/IOB.WIN.FileExp/Properties/Resources.resx
similarity index 100%
rename from IOB-WIN-FILE-EXP/Properties/Resources.resx
rename to IOB.WIN.FileExp/Properties/Resources.resx
diff --git a/IOB-WIN-FILE-EXP/Properties/Settings.Designer.cs b/IOB.WIN.FileExp/Properties/Settings.Designer.cs
similarity index 94%
rename from IOB-WIN-FILE-EXP/Properties/Settings.Designer.cs
rename to IOB.WIN.FileExp/Properties/Settings.Designer.cs
index 901bdbc..29a78fd 100644
--- a/IOB-WIN-FILE-EXP/Properties/Settings.Designer.cs
+++ b/IOB.WIN.FileExp/Properties/Settings.Designer.cs
@@ -8,11 +8,11 @@
//
//------------------------------------------------------------------------------
-namespace MHT_Siemens.Properties {
+namespace IOB.WIN.FileExp.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/IOB-WIN-FILE-EXP/Properties/Settings.settings b/IOB.WIN.FileExp/Properties/Settings.settings
similarity index 100%
rename from IOB-WIN-FILE-EXP/Properties/Settings.settings
rename to IOB.WIN.FileExp/Properties/Settings.settings
diff --git a/IOB-WIN-FILE-EXP/Resources/SteamWare.ico b/IOB.WIN.FileExp/Resources/SteamWare.ico
similarity index 100%
rename from IOB-WIN-FILE-EXP/Resources/SteamWare.ico
rename to IOB.WIN.FileExp/Resources/SteamWare.ico
diff --git a/IOB-WIN-FILE-EXP/Resources/logoSteamware.png b/IOB.WIN.FileExp/Resources/logoSteamware.png
similarity index 100%
rename from IOB-WIN-FILE-EXP/Resources/logoSteamware.png
rename to IOB.WIN.FileExp/Resources/logoSteamware.png
diff --git a/IOB-WIN-FILE-EXP/SteamWare.ico b/IOB.WIN.FileExp/SteamWare.ico
similarity index 100%
rename from IOB-WIN-FILE-EXP/SteamWare.ico
rename to IOB.WIN.FileExp/SteamWare.ico
diff --git a/IOB-WIN-FILE-EXP/connParam.cs b/IOB.WIN.FileExp/connParam.cs
similarity index 92%
rename from IOB-WIN-FILE-EXP/connParam.cs
rename to IOB.WIN.FileExp/connParam.cs
index a96c21e..e351b0c 100644
--- a/IOB-WIN-FILE-EXP/connParam.cs
+++ b/IOB.WIN.FileExp/connParam.cs
@@ -5,7 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace MHT_Siemens
+namespace IOB.WIN.FileExp
{
public class connParam
{
diff --git a/IOB.WIN.FileExp/dataProxy.cs b/IOB.WIN.FileExp/dataProxy.cs
new file mode 100644
index 0000000..9b9d498
--- /dev/null
+++ b/IOB.WIN.FileExp/dataProxy.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IOB.WIN.FileExp
+{
+ ///
+ /// classe costruzione dataproxy
+ ///
+ public class dataProxy
+ {
+ ///
+ /// Configurazione PLC
+ ///
+ public connParam confPLC { get; set; }
+ ///
+ /// Aree memoria da usare come trigger x scatenare salvataggio valori
+ ///
+ public Dictionary triggerList { get; set; } = new Dictionary();
+ ///
+ /// Elenco parametri da salvare
+ ///
+ public Dictionary parametersList { get; set; } = new Dictionary();
+ }
+
+ public class triggerConf:dataConf
+ {
+ ///
+ /// Valore trigger che scatena evento (SE trovato post cambio valore)
+ ///
+ public string TriggerVal { get; set; } = "";
+ }
+
+ ///
+ /// Configurazione item memoria gestito
+ ///
+ public class dataConf
+ {
+ ///
+ /// Colonna (intestazione) se non presente indice
+ ///
+ public string Column { get; set; } = "";
+ ///
+ /// Area memoria da cui leggere i dati
+ ///
+ public string MemConf { get; set; } = "";
+ ///
+ /// Tipo di dati
+ ///
+ public string DataType { get; set; } = "";
+ ///
+ /// Dimensione memoria in Byte
+ ///
+ public int memByteSize { get; set; } = 1;
+ }
+}
diff --git a/IOB-WIN-FILE-EXP/logs/.placeholder.txt b/IOB.WIN.FileExp/logs/.placeholder.txt
similarity index 100%
rename from IOB-WIN-FILE-EXP/logs/.placeholder.txt
rename to IOB.WIN.FileExp/logs/.placeholder.txt
diff --git a/IOB-WIN-FILE-EXP/memAddress.cs b/IOB.WIN.FileExp/memAddress.cs
similarity index 97%
rename from IOB-WIN-FILE-EXP/memAddress.cs
rename to IOB.WIN.FileExp/memAddress.cs
index ebd2988..64b0294 100644
--- a/IOB-WIN-FILE-EXP/memAddress.cs
+++ b/IOB.WIN.FileExp/memAddress.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace MHT_Siemens
+namespace IOB.WIN.FileExp
{
public class memAddress
{
diff --git a/IOB-WIN-FILE-EXP/packages.config b/IOB.WIN.FileExp/packages.config
similarity index 100%
rename from IOB-WIN-FILE-EXP/packages.config
rename to IOB.WIN.FileExp/packages.config
diff --git a/IOB-WIN-FILE-EXP/utils.cs b/IOB.WIN.FileExp/utils.cs
similarity index 99%
rename from IOB-WIN-FILE-EXP/utils.cs
rename to IOB.WIN.FileExp/utils.cs
index 8b7aa4e..9aa0e96 100644
--- a/IOB-WIN-FILE-EXP/utils.cs
+++ b/IOB.WIN.FileExp/utils.cs
@@ -8,7 +8,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
-namespace MHT_Siemens
+namespace IOB.WIN.FileExp
{
public class utils
{