Vai al contenuto

Gestione scheda I2C custom connessa come estensione

Home Forum Controllori SlimLine e Netsyst (LogicLab) Gestione scheda I2C custom connessa come estensione

Stai visualizzando 9 post - dal 1 a 9 (di 9 totali)
  • Autore
    Post
  • #35735
    Giulio
    Partecipante

    Stò disegnando una applicazione che prevede l’utilizzo di un modulo R/W RFID con I/F I2C. Nelle librerie LogicLab ho trovato il FB SysI2CWrRd che mi sembrava  potesse  essere utilizzato “così comè” per comunicare con la scheda.

    Per caso c’è già qualche esperienza in merito alla gestione di moduli RFID 13,5 Mh (MIFARE 1KB) ? Ho individuato degli hardware di riferemento ma, essendo ancora in fase di progetto se trovassi qualcosa di già “avviato” su altri hardware potrei cambiare pur di risparmiare tempo di sviluppo e test.

    #38740
    Sergio Bertana
    Amministratore del forum

    Hai visto bene per la gestione di periferiche custom connesse al bus di estensione di SlimLine abbiamo realizzato una specifica funzione SysI2CWrRd che permette di gestire l’accesso in lettura e scrittura di un qualsiasi dispositivo I2C. Utilizzando questa funzione è possibile fare coesistere senza problemi il dispositivo custom con i nostri moduli di estensione (Topic).

    Per ulteriori informazioni sulla connessione di periferiche custom al bus di estensione puoi fare riferimento al Manuale hardware CPU SlimLine ARM7 OEM.

    Unica esperienza sui moduli di interfaccia RFID è quella con il lettore RFID ProxPoint Plus della HID, questo modulo si connette tramite due ingressi digitali (Clock e Data) a due ingressi del sistema ed il FB HIDClkDtaReader ne provvede alla lettura (Topic). In questo topic un esempio pratico di utilizzo.

    #38742
    Giulio
    Partecipante

    Dal manuale hardware (che non avevo ancora visto) leggo, par. 2.1, che non è possibile inserire sul bus I2C Slimline delle periferiche standard I2C!  In realtà il paragrafo non mi risulta chiarissimo: Questo vuol dire che non è possibile utilizzare i moduli che stavo valutando che presentano, appunto, una interfaccia I2C “standard” con il loro indirizzo e un set di comandi per la gestione ? O forse il problema è solo relativo alla gestione degli  I/O ? Tra l’altro ho visto delle vostre applicazioni (gestione del display alfanumerico e dello step motor)  che mi sembra utilizzino hardware ‘standard’…

    Contavo  di utilizzare proprio un PIO I2C per comandare una semplice schedina con display a 7 segmenti ma davo per scontato l’immediato interfacciamento del modulo lettore RFID sul bus. Per la prima realizzazione, tutto “vicino”, non prevedevo neanche di inserire particolari reti di pull up o altre protezioni…

    Il mio modulo, come dicevo, ha un I/F I2C standard, e un set di comandi formati da PDU di lunghezza variabile che consentono di leggere e scrivere i settori dei TAG RFID eventualmente connessi. Sono dotati di autorilevamento di TAG che utilizzerei tramite un ingresso standard della CPU per dare il via alla gestione. Allego manuale del SL018 Mifare Reader/Writer che è la periferica che intendo usare.

    Non è stato possibile utilizzare l’HID, cosa che mi avrebbe assai semplificato la vita,  perchè il cliente vuole salvaguardare i 5000 badge già esistenti che sono risultati essere MIFARE 1 a 13,5 Mhz.

    Riassumendo,  sul BUS Slimline dovrebbero convivere: da 1 a tre moduli di I/O “standard”, il lettore/scrittore RFID ed un semplice display… ce la possiamo fare ? Sempre grazie per l’attenzione e le concrete risposte !

    #38743
    Sergio Bertana
    Amministratore del forum

    L’aggiunta di moduli custom connessi al bus è uno dei plus che offriamo, può risultare conveniente abbinare ad un PLC classico con i suoi moduli di I/O ed il suo ambiente di programmazione dei proprii moduli creati su misura per l’applicazione, ed il tuo caso lo dimostra.

    Il bus di estensione I2C viene gestito dal sistema operativo in multitasking, ed i nostri moduli di I/O hanno una logica che garantisce con il CRC sui dati la sicurezza della comunicazione. Tutti gli I/O del PLC mappati in memoria sono gestiti tramite questa interfaccia “sicura” che solo utilizzando la nostra FPGA è possibile garantire.

    Con la funzione SysI2CWrRd è possibile gestire qualsiasi periferica I2C standard, quindi non hai problemi a gestire come da tua esigenza i moduli di I/O standard, il display ed il modulo RFID.

    #38793
    Giulio
    Partecipante

    Stò facendo una serie di test con un modulo lettore RFID SL018 Mifare Reader/Writer connesso sul bus I2C, stò utilizzando la funzione SysI2CWrRd da un programma LD impostando i comandi in array di costanti e trasmettendoli ad modulo. Il tutto funziona correttamente, i comandi (lettura dell UID, lettura della relase del FW, login semplice etc.) funzionano in scrittura e lettura; nei buffer vedo valori corretti che evolvono esattamente come mi aspetto, ma la funzione SysI2CWrRd non ritorna mai esito positivo.

    Ho utilizzato alimentazione, GND ed i segnali due segnali SCL ed SDA. Non utilizzo il segnale RDY (e non ne ho fatto il pull-up). Il cavetto è lungo 25-30cm, predisposto per un altro modulo che dovrò collegare. Ho fatto diverse prove assegnando il programma alla task Fast, Slow e Back senza notare differenze.

    #38794
    Sergio Bertana
    Amministratore del forum

    Non mi dici che versione di sistema operativo è presente sul tuo modulo SlimLine, ti consiglio di aggiornarlo all’ultima versione in quanto le prime versioni presentavano un bug sul ritorno della funzione SysI2CWrRd, penso sia questo il tuo problema.

    Ho dato una occhiata al datashet del lettore RFID ed ho notato che i comandi I2C operano su stream di dati in lettura con lunghezza superiore ai 10 bytes. Come vedi nel manuale noi consigliamo di non eccedere i 4 bytes in scrittura e lettura (Scambio di 8 bytes in totale) nella funzione SysI2CWrRd. Questo perchè durante l’accesso, il bus I2C viene monopolizzato, generando dei jitters sulla esecuzione delle tasks di priorità superiore.

    L’acceso al bus I2C è relativamente lento (Per scambiare 10 bytes occorrono ca 350 uS), quindi và da sè che se hai più accessi consecutivi al bus con molti bytes in scambio, e sei in task Fast, non eseguirle tutte consecutivamente, altrimenti superi il tempo di esecuzioe di 1 mS (Che è il tempo di default con il quale viene eseguita la task Fast). Puoi prevedere un sequenziatore ed eseguire un acesso al bus I2C al loop di esecuzione.

    #38985
    Sergio Bertana
    Amministratore del forum

    Visto che parliamo di Reader/Writer RFID aggiungo un link a questo topicquesto topic che trattano lo stesso argomento.

    #39868
    Marcello
    Partecipante

    Mi collego a questo topic per chiedere se sono necessarie le resistenze di pull up per la gestione dellìinterfaccia I2C. Chiedo perchè ho fatto delle prove  (potenziometro digitale della Maxim-Dallas) senza resistenze e sono riuscito a comunicare.

    A distanza di poche ore il dispositivo non comunicava più e credo che questo dipenda dall’assenza di dette resistenze.

    #39869
    Sergio Bertana
    Amministratore del forum

    Il circuito di uscita del bus di estensione I2C del modulo CPU come si vede dallo schema elettrico ha già al suo interno le resistenze di pull-up, quindi non è necessario inserire altre resistenze sul dispositivo slave.

    Quando dici che il dispositivo non comunicava più non mi dici se la funzione SysI2CWrRd ritornava TRUE o FALSE. Puoi anche forzare da Telnet il comando i2cSts che visualizza elenco dispositivi connessi ai bus I2C (Vedi manuale comandi Telnet) per vedere se riconosce il dispositivo connesso.

    Ho visto che il circuito I2C Pot ha due pin di indirizzamento, li hai settati correttamente, non è che sono rimasti appesi ed in questa condizione cambia il suo indirizzo I2C.

Stai visualizzando 9 post - dal 1 a 9 (di 9 totali)
  • Devi essere connesso per rispondere a questo topic.