Vai al contenuto
PLC Forum


Hostlink Cj Work Area - hostlink cj work area


Messaggi consigliati

Inserito:

Qualcuno ha idea di qual'è il comando per leggere via hostlink le work area del cj da PC ?

saluti a tutti


Inserita:

Direi che in Host Link non si può leggere i canali WR

devi utilizzare il protocollo Fins con i suoi nuovi comandi e indirizzi

Inserita:

Purtroppo sulla serie CJ è un problema leggere gli HR ensa che anche gli NT620 non riescono a leggerli. Chiesto e richiesto in Omron non c'è verso di leggerli.

Devi copiare i dati su delle DM.

ifachsoftware
Inserita:

Ti estrapolo una parte di codice scritta per i dsPIC , le funzioni mancanti te le lascio implementare a te, sperando che le accodi in fondo a questo messaggio contribuendo anche tu al forum.

// Esempio in C per la lettura di area W tramite comandi FINS

// La creazione dell'FCS e' la stessa dell'HOST LINK

#define OMRON_FINS_RESP_WAIT 15        // Tempo attesa risposta comandi fins 0-15ms

// Funzione per Leggere in Hex da un'area W

// Ritorna 1 Se tutto OK / 0 Se Errore

unsigned int OmronHexFinsWRead(unsigned int nUnit,unsigned int nChannel,unsigned int *nValue)

{

  sprintf(Omron.TxB,"[at]%02uFA%X000000000101B1%04X00%04X",nUnit,OMRON_FINS_RESP_WAIT,nChannel,1);

  /*

      BuffFins = "[at]%02u"            ' nUnit

      BuffFins = BuffFins & "FA%X"  ' OMRON_FINS_RESP_WAIT 0-F tempo in ms

      BuffFins = BuffFins & "00"    ' ICF - (00) Plc collegato direttamente al PC (80) se collegato in rete

      BuffFins = BuffFins & "00"    ' DA2 - (00) Host Link Mode

      BuffFins = BuffFins & "00"    ' SA2 - (00) Comunicazione Seriale

      BuffFins = BuffFins & "00"    ' SID - (00) Valore default per counter

      BuffFins = BuffFins & "0101"  ' Lettura CIO 0101

      BuffFins = BuffFins & "B1"    ' (B1) Area W a Word

      BuffFins = BuffFins & "04X00" ' nChannel

      BuffFins = BuffFins & "04X"  ' N° Canali da leggere (1)

  */   

 

  OmronAddFcs(Omron.TxB);

  Omron.nRicevuti = 0;

  putsUART1((unsigned int *)Omron.TxB); // Invia la richiesta

  OmronWaitRx(31,OMRON_UART_WAIT);      // Aspetta 31 Caratteri come risposta (vengono scritti nel buffer Omron.RxB definito come variabile globale)

  /*

        Risposta

       

        "[at]"                            0

        "xx"    nUnit                  1,2 

        "FA00xx" ICF                    3,4,5,6,7,8

        "xx"    DA2                    9,10

        "xx"    SA2                    11,12

        "xx"    SID                    13,14

        "xxxx"  Fins command code      15,16,17,18

        "xxxx"  Fins Response code    19,20,21,22  "0000" = Normal completition

        "xxxx"  Dato1                  23,24,25,26

        "xx"    FCS                    27,28

        *                              29

        Enter                          30 

  */

 

  if(Omron.nRicevuti == 31 && Omron.RxB[29] == '*' && Omron.RxB[30] == 13)  // Se il terminatore e' giusto e sono arrivati tutti i caratteri

  {                 

      Omron.BuffVal[0] = Omron.RxB[27];  // Salva l'FCS Ritornato

      Omron.BuffVal[1] = Omron.RxB[28];

      Omron.BuffVal[2] = '\0';

      Omron.RxB[27]    = '\0';          // Toglie  l'FCS Ritornato

      OmronAddFcs(Omron.RxB);          // Calcola l'FCS Ritornato

      if(Omron.BuffVal[0] == Omron.RxB[27] &&  // Se corrisponde l'FCS

        Omron.BuffVal[1] == Omron.RxB[28] &&

        Omron.RxB[19] == '0'              &&

        Omron.RxB[20] == '0'              &&

        Omron.RxB[21] == '0'              &&       

        Omron.RxB[22] == '0')                // Normal Completition

      {

        Omron.BuffVal[0] = Omron.RxB[23];

        Omron.BuffVal[1] = Omron.RxB[24];

        Omron.BuffVal[2] = Omron.RxB[25];

        Omron.BuffVal[3] = Omron.RxB[26];

        Omron.BuffVal[4] = '\0';

        *nValue = HexToDec(Omron.BuffVal);  // Valore Letto

        return 1;  // Dato Ok

      }     

  }

  return 0;        // Errore

}

Ciao :)

Inserita:

Ok quindi farò appoggiare le wa su delle dm grazie a tutti .

In quanto al discorso del fins io non ho niente perchè lavoro su hostlink in visual basic.

Se serve qualcosa relativo chiedete pure, se posso rispondo volentieri

saluti

ifachsoftware
Inserita:

Guarda che i PLC Omron della serie CJ dialogano in seriale sia col protocollo HOST LINK per compatibilita' con i vecchi comandi (ma attento che ha delle limitazioni , per esempio non puoi con i vecchi comandi leggere tutte le DM che ti da il CJ ...) , sia con protocollo HOST LINK inglobato nei comandi FINS .

Mentre se lavori su ETHERNET invece che seriale devi usare i comandi FINS puri.

L'esempio che ti ho dato riguarda il dialogo in seriale e ti permette di leggere 1 area W in HEX , puoi comunque facilmente modificarlo per lavorare con VB.

Il manuale di riferimento per guardare tali comandi e' il Cat. No. W342-E1-08

(Communications Commands REFERENCE MANUAL) e lo trovi sul sito della omron

http://www.omron.it.

Ciao :)

Inserita:

Comunque per semplificare le cose poresti usare un OPC Server.

Mario Lavezzi
Inserita:

occhio all'OPC Server e' una buona soluzione versatile ma nasconde alcuni tranelli :o , attenti alle array che in scrittura non sono perfettamente compatibili agli standard, comunque fatemi sapere se Omron ha fatto qualche passo in avanti con l'OPC

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...