Libreria gestione protocollo ccTalk (eCCTalkProtoLib)

Attenzione! Per utilizzare la libreria occorre importarla nel proprio progetto. Vedere capitolo relativo all”import delle librerie.

Il protocollo ccTalk è un protocollo seriale a standard aperto, progettato per offrire il trasferimento sicuro delle informazioni sul credito e sullo stato per applicazioni nel settore delle transazioni monetarie automatizzate. Sul mercato sono disponibili unità di accettazione monete, unità di accettazione banconote, serbatoi di monete, e molti altri dispositivi per gestire il denaro gestibili tramite protocollo ccTalk.

Questa libreria permette di gestire apparecchi con interfaccia ccTalk, una FB di gestione del protocollo ccTalkProtocol connettendosi ad una porta seriale permette di gestire il protocollo. Altre FB “Figlie” si connettono a questa FB e gestiscono apparecchi con interfaccia ccTalk.

Il protocollo ccTalk opera su di un bus ad un filo gestito in open collector dai vari dispositivi connessi in multidrop sul bus. Per interfacciare il bus ccTalk con la porta seriale RS232 dello SlimLine viene utilizzato un apposito convertitore.

image0

ccTalkProtocol, manages ccTalk protocol

Type Library
FB eCCTalkProtoLib_A000

image1

Questo blocco funzione esegue la gestione del protocollo, deve essere connesso ad una porta seriale File a cui si connettono i dispositivi ccTalk. Questo è un blocco funzione protetto per utilizzarlo occorre richiedere il codice di protezione, vedi protezione funzioni e blocchi funzione. E” comunque possibile utilizzarlo liberamente in modo test per 15 Min.

L’FB ritorna un CCTalkProtoID che deve essere passato alle FB collegate di gestione dei vari dispositivi ccTalk. L’ingresso SpyOn se attivo permette di spiare il funzionamento della FB.

L’uscita Fault si attiva per un loop di programma in caso di errori di gestione.

Enable (BOOL) Abiltazione gestione protocollo.
SpyON (BOOL) Se attivo permette di spiarne il funzionamento.
File (FILEP) Flusso dati stream ritornato dalla funzione Sysfopen.
Enabled (BOOL) Si attiva su comando di Enable.
Fault (BOOL) Attivo per un loop di programma se errore gestione.
CCTalkProtoID (UDINT) ID protocollo da passare alle FB collegate.

Trigger di spy

Se SpyOn attivo viene eseguita la funzione SysSpyData che permette di spiare il funzionamento della FB. Sono previsti vari livelli di triggers.

TFlags Descrizione
16#00000001 “Tx” Trasmissione frame comando ccTalk.
16#00000002 “Rx” Ricezione frame risposta ccTalk.

Codici di errore

In caso di errore si attiva l’uscita Fault, con SysGetLastError è possibile rilevare il codice di errore.

10050010 Valore di File non definito.
10050020 FB eseguita in task diversa da quella di background.
10050030 FB protetta, terminato tempo funzionamento in modo demo.
10050100 Timeout comunicazione.
10050200~4 Errore sequenze invio comando.
10050300~4 Errore nelle sequenze di ricezione risposta.

AlbericiAL66, Alberici AL66 coin acceptor

Type Library
FB eCCTalkProtoLib_A000

image2

Questo blocco funzione esegue la gestione di un accettatore di monete Alberici modello AL66V. Si collega al blocco funzione ccTalkProtocol di gestione protocollo ccTalk, occorre passare CCTalkProtoID in uscita dal blocco funzione.

Attivando l’ingresso Enable viene attivato il dialogo con l’accettatore di moneta con indirizzo definito in DAddress. L’FB dialoga continuamente con l’accettatore inviando i comandi ogni tempo definito in Cdelay. Ricordo che per accettare le monete l’accettatore deve essere interrogato via ccTalk almeno ogni 500 mS.

Il parametro CEnable, permette di definire le monete accettate dall”“accettatore, è previsto un bit pattern di 16 bit dove ad ogni bit corrisponde un tipo di moneta (Fare riferimento alla documentazione dell’accettatore).

Se la moneta inserita è accettata si attiva per un loop l’uscita CoinOk e sulla uscita CAccepted (Bit pattern a 16 bits) viene attivato il bit relativo alla moneta accettata.

In caso di errore esecuzione viene attivata per un loop l’uscita Fault e la variabile Errors viene incrementata.

Enable (BOOL) Comando di abilitazione blocco funzione.
CCTalkProtoID (UDINT) ID gestione protocollo in uscita dalla FB (ccTalkProtocol).
DAddress (USINT) Device address, indica l’indirizzo del dispositivo con cui dialogare.
CEnable (WORD) Coins enable, bit pattern di abilitazione monete.
CDelay (UINT) Command delay, ritardo tra l’esecuzione dei comandi (mS).
CoinOk (BOOL) Attiva per un loop di programma su moneta accettata.
Fault (BOOL) Attiva per un loop di programma se errore gestione.
CAccepted (WORD) Coin accepted, bit pattern di indicazione moneta accettata.
Errors (UDINT) Contatore errori di esecuzione.

Codici di errore

In caso di errore si attiva l’uscita Fault, con SysGetLastError è possibile rilevare il codice di errore.

10051010 HMIBuildInID non definito.
10051020 HMIBuildInID non corretto.
10051030 Blocco funzione non eseguito in task di background (Back).
10051040 Non è possibile allocare FB, troppe FB connesse alla FB di gestione protocollo.
10051100 Errore comunicazione con dispositivo.

image3

Esempi

Nell’esempio è gestita una gettoniera elettronica Alberici AL66V con protocollo ccTalk. Il protocollo ccTalk opera su di un bus ad un filo gestito in open collector dai vari dispositivi connessi in multidrop sul bus. Per interfacciare il bus ccTalk con la porta seriale RS232 dello SlimLine viene utilizzato un apposito convertitore.

Il programma di esempio definisce le monete da accettare ed esegue il conteggio delle monete accettate in base al loro valore.

Definizione variabili

image5

Esempio ST

(\* INIZIALIZZAZIONI \*)

(\* Eseguo inizializzazioni. \*)
IF (SysFirstLoop) THEN
(\* Eseguo apertura porta seriale. \*)
Fp:=Sysfopen('COM0', 'rw'); (\* Port COM0 file pointer \*)
(\* Eseguo configurazione porta seriale. \*)
i:=SysGetSerialMode(ADR(Sm), Fp);
Sm.Baudrate:=9600; (\* Baud rate \*)
Sm.Parity:='N'; (\* Parity \*)
Sm.DataBits:=8; (\* Data bits \*)
Sm.StopBits:=1; (\* Stop bits \*)
Sm.DTRManagement:=DTR_AUTO_WO_TIMES; (\* DTR management \*)
Sm.DTRComplement:=FALSE; (\* DTR complement \*)
Sm.EchoFlush:=FALSE; (\* Echo flush \*)
Sm.DTROffTime:=0; (\* DTR off time \*)
Sm.DTROnTime:=0; (\* DTR on time \*)
i:=SysSetSerialMode(ADR(Sm), Fp);
(\* Eseguo inizializzazione variabili. \*)
CCTalk.File:=Fp; (\* File pointer \*)
Acpt.DAddress:=2; (\* Device address \*)
Acpt.CDelay:=500; (\* Command delay (mS) \*)
END_IF;

(\* GESTIONE PROTOCOLLO CCTALK \*)
(\* Gestione del protocollo ccTalk. \*)

CCTalk(Enable:=TRUE); (\* ccTalk protocol management \*)

(\* GESTIONE ACCETTATORE ALBERICI \*)
(\* Gestione accettatore Alberici. \*)

Acpt.CCTalkProtoID:=CCTalk.CCTalkProtoID; (\* Protocol ID \*)

(\* Definizione monete accettate da accettatore. Viene definita maschera \*)
(\* di bits con il seguente significato. \*)

(\* \|F|E|D|C|B|A|9|8|1 Cen|2 Cen|5 Cen|10 Cen|20 Cen|50 Cen|1 Euro|2 Euro\| \*)

(\* Con valore 16#0D, accetto 20, 50 centesimi ed 2 euro. \*)

Acpt.CEnable:=16#0D; (\* Coins enable \*)
Acpt(Enable:=TRUE);

(\* CALCOLO DENARO INSERITO \*)

(\* Controllo se moneta acettatta da accettatore. \*)

IF (Acpt.CoinOk) THEN
NrOfCoins:=NrOfCoins+1; (\* Numero di monete inserite \*)

(\* Calcolo denaro inserito nell'accettatore. \*)

CASE (Acpt.CAccepted) OF
16#0001: Credit:=Credit+200; (\* 2 Euro \*)
16#0002: Credit:=Credit+100; (\* 1 Euro \*)
16#0004: Credit:=Credit+50; (\* 50 Centesimi \*)
16#0008: Credit:=Credit+20; (\* 20 Centesimi \*)
16#0010: Credit:=Credit+10; (\* 10 Centesimi \*)
16#0020: Credit:=Credit+5; (\* 5 Centesimi \*)
16#0040: Credit:=Credit+2; (\* 2 Centesimi \*)
16#0080: Credit:=Credit+1; (\* 1 Centesimo \*)
END_CASE;
END_IF;
(\* [End of file] \*)