diff --git a/IOB-WIN/DATA/CONF/MAIN.ini b/IOB-WIN/DATA/CONF/MAIN.ini
index 294845b9..34444a63 100644
--- a/IOB-WIN/DATA/CONF/MAIN.ini
+++ b/IOB-WIN/DATA/CONF/MAIN.ini
@@ -39,10 +39,10 @@ CMDIOB2CALL=/IOB/getIob2call?GWIP=
;STARTLIST=VL25
; INTERCLAYS FORNO
-STARTLIST=INTERCL_01
+;STARTLIST=INTERCL_01
; INTERCLAYS MISCELA
-;STARTLIST=INTERCL_02
+STARTLIST=INTERCL_02
diff --git a/IOB-WIN/IobOmron.cs b/IOB-WIN/IobOmron.cs
index e4ca7396..c03391f0 100644
--- a/IOB-WIN/IobOmron.cs
+++ b/IOB-WIN/IobOmron.cs
@@ -46,6 +46,69 @@ namespace IOB_WIN
///
protected short[] memWriteWR;
+ //
+ /// Calcola la conversione da byte --> num decimale --> HEX --> conversione come stringa in INT
+ ///
+ ///
+ ///
+ protected int convDHD(short valore)
+ {
+ int answ = 0;
+ string hexVal = valore.ToString("x");
+ int.TryParse(hexVal, out answ);
+ return answ;
+ }
+ //
+ /// Calcola la conversione da INTERO a intero HEX x OMRON
+ ///
+ ///
+ ///
+ protected int convHD(string hexVal)
+ {
+ int answ = 0;
+ try
+ {
+ if (!hexVal.StartsWith("0x"))
+ {
+ hexVal = "0x" + hexVal;
+ }
+ answ = Convert.ToInt32(hexVal, 16);
+ }
+ catch
+ { }
+ return answ;
+ }
+ ///
+ /// Converte un valore di 2 short in un unico numero accostato:
+ /// es: legge delle coppie di valori INT, vanno trasformati in HEX e POI accodati, dove il primo è x 1 e il secondo x 10000 (in pratica va in testa)
+ /// 12540 --> diviso in 1 | 2540 --> in HEX diventa 1 | 9472, ma il 9472 va su byte[0] e 1 su byte[1]
+ ///
+ ///
+ ///
+ protected int convFromHex(short[] valori)
+ {
+ int answ = 0;
+ string fullVal = $"{convDHD(valori[1]).ToString("D4")}{convDHD(valori[0]).ToString("D4")}";
+ int.TryParse(fullVal, out answ);
+ return answ;
+ }
+ ///
+ /// Converte un valore intero in 2 short che il PLC riporterà ad HEX x visualizzare:
+ /// es: legge delle coppie di valori INT, vanno trasformati in HEX e POI accodati, dove il primo è x 1 e il secondo x 10000 (in pratica va in testa)
+ /// 12540 --> diviso in 1 | 2540 --> in HEX diventa 1 | 9472, ma il 9472 va su byte[0] e 1 su byte[1]
+ ///
+ ///
+ ///
+ private short[] convToHex(int valoreInt)
+ {
+ short[] answ = new short[2];
+ string fullVal = valoreInt.ToString("D8");
+ // converto un pezzo alla volta...
+ answ[0] = (short)convHD(fullVal.Substring(4, 4));
+ answ[1] = (short)convHD(fullVal.Substring(0, 4));
+ return answ;
+ }
+
///
/// estende l'init della classe base...
///
@@ -58,6 +121,18 @@ namespace IOB_WIN
lastPzCountSend = DateTime.Now;
lastWarnODL = DateTime.Now;
+
+ // test conversione valori...
+ short[] valDM = new short[2];
+ // cario dati
+ valDM[0] = 9472;
+ valDM[1] = 1;
+ // legge delle coppie di valori INT, vanno trasformati in HEX e POI accodati, dove il primo è x 1 e il secondo x 10000 (in pratica va in testa)
+ // esempio 12540 --> diviso in 1 | 2540 --> in HEX diventa 1 | 9472, ma il 9472 va su byte[0] e 1 su byte[1]
+ var testDec = convFromHex(valDM);
+
+ var testHex = convToHex(testDec);
+
#if false
OMRON_ref = new OmronFinsTCP.Net.EtherNetPLC();
OMRON_ref.Link("192.168.250.1", 9600, 500);
@@ -96,6 +171,7 @@ namespace IOB_WIN
omronFullTest();
#endif
}
+
///
/// Test completo funzioni OMRON
///
@@ -423,29 +499,6 @@ namespace IOB_WIN
{
// controllo tutta la memoria allarmi SE richiesto
}
- //
- /// Calcola la conversione da byte --> num decimale --> HEX --> conversione come stringa in INT
- ///
- ///
- ///
- protected int convDHD(short valore)
- {
- int answ = 0;
- string hexVal = valore.ToString("x");
- int.TryParse(hexVal, out answ);
- return answ;
- }
- //
- /// Calcola la conversione da INTERO a intero HEX x OMRON
- ///
- ///
- ///
- protected short convHD(string hexVal)
- {
- short answ = 0;
- short.TryParse(hexVal, out answ);
- return answ;
- }
///
/// Oggetto per lettura PESO rilevato (DM20-21)
///
@@ -494,8 +547,8 @@ namespace IOB_WIN
short[] valDM = new short[2];
int highVal = value / 10000;
int lowVal = value - (highVal * 10000);
- valDM[0] = convHD(lowVal.ToString("x"));
- valDM[1] = convHD(highVal.ToString("x"));
+ valDM[0] = (short)convHD(lowVal.ToString("x"));
+ valDM[1] = (short)convHD(highVal.ToString("x"));
OMRON_ref.WriteWords(OmronFinsTCP.Net.PlcMemory.DM, 26, 2, valDM);
}
}