Vai al contenuto
PLC Forum


Plc M340 E Lettore Tessere Rfid


Seby_cucu

Messaggi consigliati

Ciao a tutti,

spero che qualcuno mi possa aiutare. Ho un PLC M340 collegato con un lettore schede RFID tramite protocollo modbus RS232.

Quello che devo fare è semplicemente leggere sul PLC il codice che mi invia l'RFID quando passo la tessera magnetica. Logicamente il codice che mi arriva è un codice ASCII dove le cifre significative (codice vero e proprio) sono 10.

Partendo dal presupposto che i collegamenti li ho fatti in modo corretto, ho seguito lo schema, vorrei capire come acquisire caratteri ascii.

La funzione che uso è:

INPUT_CHAR(ADDM(’0.0.0’), reset_integer_to_0, 10, Management_Table, character_string_received);
Il programma che uso è: Unity Pro.
Per ricevere la string di 10 caratteri ho dichiarato una variabile DATO di tipo string.
Mi sapete dire dove sbaglio?
Cosa devo fare?
Grazie
Ciao
Seby

Link al commento
Condividi su altri siti


Giuseppe Signorella

Qualche domanda banale,

Chi è il master nella rete? Il PLC ho il lettore rfid? presuppondo che sia il PLC, che interroga ciclicamente il lettore RFID.

Hai l'elenco dei registri da leggere del lettore rfid?

Quale codice funzione modbus accetta il lettore Rfid?

La porta di comunicazione è stata configurata correttamente?

Link al commento
Condividi su altri siti

ciao, il PLC interroga il lettore RFID, non ho elenco registri perchè il lettore RFID non memorizza l'informazione che legge la genera soltanto; se voglio ricevere nuovamente l'informazione devo ripassare la tessera magnetica.

La porta presuppongo che sia configurata avendo seguito tutte le indicazioni dello schema.

La porta di comunicazione è una porta seriale in modalità caratteri, configurata con tutti ii parametri settati in modo corretto.

Spero di aver risposto a tutte le tue domande. Le sto provando tutte ma senza trovare il bandolo della matassa :-(

. Me

Ciao

Link al commento
Condividi su altri siti

Breve elenco delle verifiche :

- verifica configurazione porta seriale della CPU -> deve essere configurata come il lettore RFID (i.e. 19200,8,N,1). Se il protocollo di comunicazione lo richiede, impostare la porta in modalità caratteri;

- se si utilizza una bus RS485, controllare la(le) resistenze di terminazione;

- controllare che siano stati rispettati i collegamenti sulla porta seriale (RS232 -> TX->RX, RX->TX, GND-> GND , RS485 -> DataA, DataB, GND);

- utilizzare sul PLC le istruzione per la lettura dalla porta seriale (ovvero Input_Char o Read_Var). La comunicazione NON può essere eseguito ad ogni ciclo di CPU ma occorre controllare il bit di attività. Con le porte seriali occorre impostare un timeout di 50 (ovvero 5 secondi) : con tempi inferiori, in assenza di comunicazione, si rischiano problemi di comunicazione (specie se si interrogano più dispositivi sulla stessa porta);

Guardando il codice che hai postato -> INPUT_CHAR(ADDM(’0.0.0’), reset_integer_to_0, 10, Management_Table, character_string_received); :

- Hai impostato la Management_Table (che poi è un array di 4 interi) -> se non mi confondo la 3° occorrenzaè il timeout uguale a 50 ?

- Controlli il bit di attività della comunicazione seriale -> dovrebbe essere il primo bit della 1° occorrenza della management_table;

Ti consiglio di controllare quanto riportato nel manuale di Unity in quanto ho l' impressione che ti manchi del codice e delle inizializzazioni !!!

Ultima considerazione :

E' abbastanza strano che il lettore di RFID NON memorizzi (almeno) l' ultima lettura effettuata, se questa affermazione è veritiera sei costretto ad effettuare il polling sulla porta seriale in continuo (bit di attività permettendo) ma comunque NON hai la certezza di leggere tutti i TAG. Ti consiglio di cercare info sul lettore per capire come farti restituire l' ultima lettura effettuata (in questo caso devi conoscere i comandi / registri del lettore e devi utilizzare la READ_VAR al posto della INPUT_CHAR)

Ho un PLC M340 collegato con un lettore schede RFID tramite protocollo modbus RS232.

Sei sicuro che il protocollo sia modbus? Ovvero Modbus RTU (8 bit) o Modbus ASCII (7 bit)?

Con Modbus ASCII imposti la porta in modalità caratteri mentre con Modbus RTU direi proprio di NO ......

Link al commento
Condividi su altri siti

Giuseppe Signorella

Io credo che ci sia un pò di confusione,

Se il protocollo di comunicazione è il modbus, devi necessariamente avere un elenco dei registri da leggere/scrive e il/i codice funzione che il tuo lettore supporta.

Il modbus è un protocollo di comunicazione e come tale segue delle regole ben precise.

In una comunicazione modbus c'è un dispositivo chiamato master che interroga gli altri dispositivi chiamati slave. Tu devi conoscere chi dei due dispositivi è il master.

Quando intendo se hai configurato correttamente la porta di comunicazione non mi riferisco hai collegamenti elettrici, che do per scontato che siano fatti correttamente, ma hai dati che ti ha indicato maxriservo.

Ritengo più probabile per semplificare la cosa, che il tuo lettore funzione come un normale dispositivo che invia una banale stringa in ascii sulla porta seriale, che equivale al codice letto dal tag.

Finché è presente il tag, viene inviata la stringa, una volta che il tag viene allontanamento la stringa non viene più inviata.

Occorre che tu chiarisca meglio il funzionamento del tuo dispositivo.

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