diff --git a/IOB-WIN/IobKawasaki.cs b/IOB-WIN/IobKawasaki.cs
index 56621c66..c446d25c 100644
--- a/IOB-WIN/IobKawasaki.cs
+++ b/IOB-WIN/IobKawasaki.cs
@@ -1,4 +1,5 @@
-using System;
+using IOB_UT;
+using System;
using System.Collections.Generic;
namespace IOB_WIN
@@ -29,6 +30,132 @@ namespace IOB_WIN
///
///
public IobKawasaki(AdapterForm caller, IobConfiguration IOBConf) : base(caller, IOBConf)
+ {
+ // i dati RAW principali sono 6 byte...
+ RawInput = new byte[6];
+ // gestione invio ritardato contapezzi
+ pzCountDelay = utils.CRI("pzCountDelay");
+ lastPzCountSend = DateTime.Now;
+ lastWarnODL = DateTime.Now;
+ // inizializzo correttamente aree memoria secondo CONF - iniFileName
+ IniFile fIni = new IniFile(IOBConf.iniFileName);
+ // fix enable prgName
+ enablePrgName = fIni.ReadBoolean("CNC", "GETPRGNAME", true);
+
+#if false
+
+ // effettuo lettura della conf sigLUT... cercando 1:1 i bit...
+ string currBit = "";
+ string memArea = "";
+ for (int i = 0; i < 8; i++)
+ {
+ currBit = string.Format("BIT{0}", i);
+ memArea = fIni.ReadString("MEMORY", currBit, "");
+ // se trovo un valore...
+ if (memArea != "")
+ {
+ signLUT.Add(currBit, memArea);
+ }
+ }
+
+ // è little endian (NON serve conversione)
+ hasBigEndian = false;
+ lgInfo("Start init Adapter OSAI, tipo all'IP/NOME {0}, variante {1} per IOB {2}", IOBConf.cncIpAddr, IOBConf.tipoIob, IOBConf.codIOB);
+
+ // Creo oggetto x gestione connessione/comunicazione NC: secondo il tipo creo CNDEX o OPEN
+ parentForm.commPlcActive = true;
+ if (IOBConf.tipoIob == tipoAdapter.OSAI_OPEN)
+ {
+ OSAI_ref = new Open_Series(IOBConf.cncIpAddr, false);
+ }
+ else if (IOBConf.tipoIob == tipoAdapter.OSAI_VB6)
+ {
+ OSAI_ref = new ComCNOSAIVB6(IOBConf.cncIpAddr, false);
+ }
+ else
+ {
+ OSAI_ref = new ComCNOsai(IOBConf.cncIpAddr, false);
+ }
+ parentForm.commPlcActive = false;
+
+ if (utils.CRB("verbose"))
+ {
+ lgInfo(string.Format("INIT OSAI_ref da CncLib come {0}", IOBConf.tipoIob));
+ }
+
+ // disconnetto e connetto...
+ if (utils.CRB("verbose"))
+ {
+ lgInfo("OSAI: tryDisconnect");
+ }
+
+ tryDisconnect();
+ lgInfo("OSAI: tryConnect");
+ tryConnect();
+
+
+ // recupero machine status e mode da cui decodificare info sul PLC...
+ byte machineStatus = OSAI_ref.GetMachineStatus();
+ byte modeSelected = OSAI_ref.GetModeSelected();
+ lgInfo(string.Format("Lettura preliminare: machineStatus={0} | modeSelected={1}", machineStatus, modeSelected));
+
+ // possiamo leggere tutto da qui che contiene status, mode e last_nc_error
+ oData = new Cndex.GETINFO1DATA();
+ var ncInfo = OSAI_ref.NcInfo1(ref oData);
+
+ lgInfo(string.Format("Lettura START completa NCINFO1DATA{0} lastNcError={1}{0}status={2}{0}substatus={9}{0}mode_select={3}{0}main_progr_name={4}{0}speed_ov={5}{0}progr_speed={6}{0}real_speed={7}{0}real_feed={8}{0}", Environment.NewLine, oData.last_nc_error, oData.status, oData.mode_select, oData.main_progr_name, oData.speed_ov, oData.progr_speed, oData.real_speed, oData.real_feed, oData.substatus));
+
+ // inizio il calcolo dello status semaforico
+ short bitStatus = 0;
+ if (OSAI_ref.Connected)
+ {
+ bitStatus += 1;
+ }
+
+ if (utils.CRB("enableContapezzi"))
+ {
+ lgInfo("OSAI: inizio gestione contapezzi");
+ try
+ {
+ // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con indicazione area)
+ if (currIobConf.optPar.Count > 0 && currIobConf.optPar["PZCOUNT_MODE"] != "")
+ {
+ if (currIobConf.optPar["PZCOUNT_MODE"].StartsWith("OVAR"))
+ {
+ pzCntReload();
+ // refresh associazione Macchina - IOB
+ sendM2IOB();
+ // per adesso imposto lettura dal CNC == contapezzi (poi farà vera lettura...)
+ lastCountCNC = contapezzi;
+ }
+ else
+ {
+ contapezzi = 0;
+ lgInfo("Contapezzi STD disabilitato: modalità {0}", currIobConf.optPar["PZCOUNT_MODE"]);
+ }
+ }
+ else
+ {
+ contapezzi = 0;
+ lgInfo("Parametro mancante PZCOUNT_MODE");
+ }
+ }
+ catch (Exception exc)
+ {
+ lgError(exc, "Errore in contapezzi OSAI");
+ }
+ }
+ // finisco INIT ADAPTER
+ lgInfo("End init Adapter OSAI");
+#endif
+
+ // test completo funzionalità kawasaki
+ kawasakiFullTest();
+ }
+ ///
+ /// Test completo funzioni kawasaki
+ ///
+ private void kawasakiFullTest()
{
// faccio un try-catch di test vari...
try
@@ -87,144 +214,6 @@ namespace IOB_WIN
{ // e.Message = "can't connect TCP/IP" or // "can't login"
Console.WriteLine(e.Message);
}
-
-
-#if false
- // i dati RAW principali sono 6 byte...
- RawInput = new byte[6];
-
- // gestione invio ritardato contapezzi
- pzCountDelay = utils.CRI("pzCountDelay");
- lastPzCountSend = DateTime.Now;
- lastWarnODL = DateTime.Now;
-
- // inizializzo correttamente aree memoria secondo CONF - iniFileName
- IniFile fIni = new IniFile(IOBConf.iniFileName);
- // inizializzo aree di memoria correnti...
- MemBlockG = new byte[fIni.ReadInteger("MEMORY", "AREAG_SIZE", 8)];
- MemBlockR = new byte[fIni.ReadInteger("MEMORY", "AREAR_SIZE", 8)];
- MemBlockX = new byte[fIni.ReadInteger("MEMORY", "AREAX_SIZE", 8)];
- MemBlockY = new byte[fIni.ReadInteger("MEMORY", "AREAY_SIZE", 8)];
- // loggo aree di memoria avviate...
- lgInfo(string.Format("Avviare area di memoria MemBlockG: {0} byte", MemBlockG.Length));
- lgInfo(string.Format("Avviare area di memoria MemBlockR: {0} byte", MemBlockR.Length));
- lgInfo(string.Format("Avviare area di memoria MemBlockX: {0} byte", MemBlockX.Length));
- lgInfo(string.Format("Avviare area di memoria MemBlockY: {0} byte", MemBlockY.Length));
-
- // fix enable prgName
- enablePrgName = fIni.ReadBoolean("CNC", "GETPRGNAME", true);
-
- // salvo le aree X-Y-D (per dump/sample/ottimizzazione lettura)
- areaD = new memAreaFanuc
- {
- areaName = "AreaD",
- startIdx = fIni.ReadInteger("MEMORY", "AREAD_START", 0),
- arraySize = fIni.ReadInteger("MEMORY", "AREAD_SIZE", 0)
- };
- areaPAR = new memAreaFanuc
- {
- areaName = "AreaPARR",
- startIdx = fIni.ReadInteger("MEMORY", "PAR_START", 0),
- arraySize = fIni.ReadInteger("MEMORY", "PAR_SIZE", 0)
- };
- areaR = new memAreaFanuc
- {
- areaName = "AreaR",
- startIdx = fIni.ReadInteger("MEMORY", "AREAR_START", 0),
- arraySize = fIni.ReadInteger("MEMORY", "AREAR_SIZE", 0)
- };
- areaX = new memAreaFanuc
- {
- areaName = "AreaX",
- startIdx = fIni.ReadInteger("MEMORY", "AREAX_START", 0),
- arraySize = fIni.ReadInteger("MEMORY", "AREAX_SIZE", 0)
- };
- areaY = new memAreaFanuc
- {
- areaName = "AreaY",
- startIdx = fIni.ReadInteger("MEMORY", "AREAY_START", 0),
- arraySize = fIni.ReadInteger("MEMORY", "AREAY_SIZE", 0)
- };
- lgInfo(string.Format("Salvata area di memoria: {0}, da {1} per {2} byte", areaD.areaName, areaD.startIdx, areaD.arraySize));
- lgInfo(string.Format("Salvata area di memoria: {0}, da {1} per {2} byte", areaR.areaName, areaR.startIdx, areaR.arraySize));
- lgInfo(string.Format("Salvata area di memoria: {0}, da {1} per {2} byte", areaX.areaName, areaX.startIdx, areaX.arraySize));
- lgInfo(string.Format("Salvata area di memoria: {0}, da {1} per {2} byte", areaY.areaName, areaY.startIdx, areaY.arraySize));
-
- // effettuo lettura della conf sigLUT... cercando 1:1 i bit...
- string currBit = "";
- string memArea = "";
- for (int i = 0; i < 8; i++)
- {
- currBit = string.Format("BIT{0}", i);
- memArea = fIni.ReadString("MEMORY", currBit, "");
- // se trovo un valore...
- if (memArea != "")
- {
- signLUT.Add(currBit, memArea);
- }
- }
-
- // è little endian (NON serve conversione)
- hasBigEndian = false;
- lgInfo("Start init Adapter FANUC all'IP {0}:{1} per IOB {2}", IOBConf.cncIpAddr, IOBConf.cncPort, IOBConf.codIOB);
-
- // Creo oggetto connessione NC
- parentForm.commPlcActive = true;
- Runtime.CreateNC(CNC.NcType.FANUC, IOBConf.cncIpAddr, IOBConf.cncPort);
- parentForm.commPlcActive = false;
-
- // aggiungo referenza obj FANUC
- FANUC_ref = (FANUC)Runtime.NC;
- if (utils.CRB("verbose"))
- {
- lgInfo("FANUC_ref da CncLib");
- }
-
- // disconnetto e connetto...
- if (utils.CRB("verbose"))
- {
- lgInfo("FANUC: tryDisconnect");
- }
-
- tryDisconnect();
- lgInfo("FANUC: tryConnect");
- tryConnect();
- if (utils.CRB("enableContapezzi"))
- {
- lgInfo("FANUC: inizio gestione contapezzi");
- try
- {
- // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con indicazione area)
- if (currIobConf.optPar.Count > 0 && currIobConf.optPar["PZCOUNT_MODE"] != "")
- {
- if (currIobConf.optPar["PZCOUNT_MODE"].StartsWith("STD"))
- {
- pzCntReload();
- // refresh associazione Macchina - IOB
- sendM2IOB();
- // per adesso imposto lettura fanuc == contapezzi (poi farà vera lettura...)
- lastCountCNC = contapezzi;
- }
- else
- {
- contapezzi = 0;
- lgInfo("Contapezzi STD disabilitato: modalità {0}", currIobConf.optPar["PZCOUNT_MODE"]);
- }
- }
- else
- {
- contapezzi = 0;
- lgInfo("Parametro mancante PZCOUNT_MODE");
- }
- }
- catch (Exception exc)
- {
- lgError(exc, "Errore in contapezzi FANUC");
- }
- }
- // finisco INIT ADAPTER
- lgInfo("End init Adapter FANUC");
-#endif
}
#if false
diff --git a/IOB-WIN/IobOSAI.cs b/IOB-WIN/IobOSAI.cs
index 95a0e234..0157eeb4 100644
--- a/IOB-WIN/IobOSAI.cs
+++ b/IOB-WIN/IobOSAI.cs
@@ -38,9 +38,6 @@ namespace IOB_WIN
///
public IobOSAI(AdapterForm caller, IobConfiguration IOBConf) : base(caller, IOBConf)
{
- // i dati RAW principali sono 6 byte...
- RawInput = new byte[6];
-
// gestione invio ritardato contapezzi
pzCountDelay = utils.CRI("pzCountDelay");
lastPzCountSend = DateTime.Now;
@@ -49,8 +46,6 @@ namespace IOB_WIN
// inizializzo correttamente aree memoria secondo CONF - iniFileName
IniFile fIni = new IniFile(IOBConf.iniFileName);
- // inizializzo aree di memoria correnti...
-
// fix enable prgName
enablePrgName = fIni.ReadBoolean("CNC", "GETPRGNAME", true);
@@ -484,7 +479,7 @@ namespace IOB_WIN
int resVal = 0;
// lettura variabili (es contapezzi)
resVal = (int)OSAI_ref.ReadVarSN((short)cntAddr);
-
+
if (utils.CRB("recTime"))
{
TimingData.addResult(currIobConf.codIOB, string.Format("R{0}-MEM", 2), stopwatch.ElapsedTicks);