diff --git a/IOB-WIN/IobKawasaki.cs b/IOB-WIN/IobKawasaki.cs index 49d853e1..c2b80e9c 100644 --- a/IOB-WIN/IobKawasaki.cs +++ b/IOB-WIN/IobKawasaki.cs @@ -8,6 +8,39 @@ namespace IOB_WIN public class IobKawasaki : IobGeneric { + /// + /// Enum segnali status macchina (ByteStatus) come flag + /// + [Flags] + public enum bitStatus + { + NONE = 0, + POWER_ON = 1 << 0, + AUTO = 1 << 1, + RUN = 1 << 2, + ERROR = 1 << 3, + ALARM = 1 << 4, + EMERG_OK = 1 << 5, + DOOR_CLOSED = 1 << 6, + READY_LOAD = 1 << 7 + } + /// + /// Enum segnali macchina ulteriori (ByteSignals) + /// + [Flags] + public enum bitSignals + { + NONE = 0, + TRANSF_AUTO = 1 << 0, + PUNZ_AUTO = 1 << 1, + BARR_TAV_RIPR = 1 << 2, + ARIA_OK = 1 << 3, + CONS_TRANS_OK = 1 << 4, + TAV_A = 1 << 5, + TAV_B = 1 << 6, + RICH_ACCESSO = 1 << 7 + } + /// /// LookUpTable di decodifica da CNC a segnali tipo bitmap MAPO /// @@ -86,13 +119,14 @@ namespace IOB_WIN if (KAWASAKI_ref.IsConnected) { // connect ok - resDataArray = KAWASAKI_ref.command("where", 3000); // WHERE [RET] - // Console.WriteLine(resDataArray[1]); - // [0] = 0 - // [1] = JT1 JT2 JT3 JT4 JT5 JT6 - // -23.205 - 39.967 - 13.176 95.663 71.402 - 21.512 - // X[mm] Y[mm] Z[mm] O[deg] A[deg] T[deg] - // - 489.620 693.940 1564.733 92.612 131.285 7.482 + resDataArray = KAWASAKI_ref.command("where", 3000); + // WHERE [RET] + // Console.WriteLine(resDataArray[1]); + // [0] = 0 + // [1] = JT1 JT2 JT3 JT4 JT5 JT6 + // -23.205 - 39.967 - 13.176 95.663 71.402 - 21.512 + // X[mm] Y[mm] Z[mm] O[deg] A[deg] T[deg] + // - 489.620 693.940 1564.733 92.612 131.285 7.482 threadOk = commThreadOk; @@ -767,7 +801,7 @@ namespace IOB_WIN if (KAWASAKI_ref.IsConnected) { resDataArray = KAWASAKI_ref.command("TYPE r_tempo", 3000); // ultimo TCiclo rilevato --> " 349.19\r\n" - decimal.TryParse(resDataArray[1].ToString().Replace("\n", "").Replace("\r", ""), out answ); + decimal.TryParse(resDataArray[1].ToString().Replace("\n", "").Replace("\r", "").Replace(".",","), out answ); } return answ; } @@ -881,12 +915,12 @@ namespace IOB_WIN /// Restituisce SEGNALI macchina nel formato: /// B0: Transfer in auto /// B1: Punzonatrice in AUTO - /// B2: Barriera tavola - /// B3: - /// B4: - /// B5: - /// B6: - /// B7: + /// B2: Barriera tavola ripristinata + /// B3: Aria in linea OK + /// B4: Console Transfer in fuori ingombro + /// B5: TAV A + /// B6: TAV B + /// B7: Richiesta accesso attiva /// protected string currBitmapSignals { @@ -1064,7 +1098,7 @@ namespace IOB_WIN cSignals = currBitmapSignals; lastCountCNC = pzCounter; // decodifica e gestione - decodeToBaseBitmap(); + decodeToBaseBitmap(); decodeOtherData(); } @@ -1073,15 +1107,8 @@ namespace IOB_WIN /// private void decodeToBaseBitmap() { -#if false // init a zero... B_input = 0; - // FAPE: leggo i primi 2 WORD x decodifica stato e posizione... - ushort valStatus = S7.Net.Types.Word.FromByteArray(RawInput.Skip(0).Take(2).ToArray()); - ushort valPosit = S7.Net.Types.Word.FromByteArray(RawInput.Skip(2).Take(2).ToArray()); - statoMacchina _stMacch = ((statoMacchina)valStatus); - posizioneSequenza _posSeq = ((posizioneSequenza)valPosit); - /* ----------------------------------------------------- * bitmap MAPO * B0: POWER_ON @@ -1091,6 +1118,36 @@ namespace IOB_WIN * B4: manuale * B5: emergenza ----------------------------------------------------- */ + // bit 0 (poweron) imposto a 1 SE connected... + B_input = KAWASAKI_ref.IsConnected ? 1 : 0; + // RUN + if (cStatus[2] == '1') + { + B_input += (1 << 1); + } + // ERROR + if (cStatus[3] == '1') + { + B_input += (1 << 3); + } + // ERROR + if (cStatus[4] == '1') + { + B_input += (1 << 3); + } + // Automatico (porta chiusa) + if (cStatus[6] == '1' || cStatus[1] == '1') + { + B_input += (1 << 4); + } + // NON EMERGENZA + if (cStatus[5] == '0') + { + B_input += (1 << 5); + } + + +#if false // bit 0 (poweron) imposto a 1 SE connected... B_input = currPLC.IsConnected ? 1 : 0;