Vai al contenuto
PLC Forum


Hostlink Cj Work Area - hostlink cj work area


atjbat

Messaggi consigliati


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.

Link al commento
Condividi su altri siti

ifachsoftware

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 :)

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

ifachsoftware

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 :)

Link al commento
Condividi su altri siti

Mario Lavezzi

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

Link al commento
Condividi su altri siti

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...