no way to compare when less than two revisions
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
— | software:qview:qview_6:qcl_library:dw14sermodsl [2019/08/29 17:01] (versione attuale) – creata - modifica esterna 127.0.0.1 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DW14SerModSl ====== | ||
+ | |||
+ | **D = **// | ||
+ | |||
+ | **W = **// | ||
+ | |||
+ | La funzione DW14SerModSl simula il protocollo Modbus SLAVE attraverso l' | ||
+ | In particolare la funzione dispone di un array (denominato " | ||
+ | |||
+ | Le funzioni Modbus supportate dalla funzione sono: | ||
+ | *Funzione 3 - Read Holding Register | ||
+ | *Funzione 16 - Force Multiple Register (scrittura word multiple) | ||
+ | |||
+ | Se si desidera aumentare la velocità di scambio dati è possibile impostare il parametro " | ||
+ | |||
+ | ===== IMPLEMENTAZIONE ===== | ||
+ | |||
+ | **DW14SerModSl (Sercom1, Buffer, idcard, slrdelay, gfWrite, glError)** | ||
+ | |||
+ | Parametri: | ||
+ | |||
+ | ^IN/ | ||
+ | | IN | INTDEVICE | ||
+ | | IN | ARRSYS / ARRGBL | ||
+ | | IN | GLOBAL | ||
+ | | IN | SYSTEM | ||
+ | | OUT | GLOBAL | ||
+ | | OUT | GLOBAL | ||
+ | |||
+ | ==== Errore ==== | ||
+ | |||
+ | Una volta richiamata la funzione se ci sono degli errori la variabile di errore assume i seguenti valori:\\ | ||
+ | 0: Nessun errore\\ | ||
+ | 1: Numero char in ricezione > dimensione Buffer (64 elementi). (Controllare su paragrafo " | ||
+ | 2: Error Checksum\\ | ||
+ | 3: Address > dimensione max del Buffer utente\\ | ||
+ | 4: Numero di Byte necessari alla risposta > 64 (limite max del buffer device)\\ | ||
+ | 5: Function Type Modbus non gestita dalla funzione (diversa da 3 o 16) | ||
+ | |||
+ | === Esempio === | ||
+ | |||
+ | // | ||
+ | <code QCL> | ||
+ | INTDEVICE | ||
+ | ; | ||
+ | | ||
+ | </ | ||
+ | |||
+ | //TASK_00// | ||
+ | <code QCL> | ||
+ | sercom1: | ||
+ | sercom1: | ||
+ | sercom1: | ||
+ | sercom1: | ||
+ | sercom1:par = 0 | ||
+ | |||
+ | slrdelay = 0 | ||
+ | |||
+ | OPENCOM sercom1 | ||
+ | WAIT sercom1: | ||
+ | |||
+ | gfIniz = 1 | ||
+ | </ | ||
+ | |||
+ | //TASK_01// | ||
+ | |||
+ | <code QCL> | ||
+ | Idcard = 1 | ||
+ | |||
+ | MAIN: | ||
+ | IF gfIniz | ||
+ | Buffer [20] = cnCounter: | ||
+ | | ||
+ | IF gfWrite | ||
+ | gfWrite = 0 | ||
+ | cnCounter: | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | END | ||
+ | </ | ||
+ | |||
+ | === Note === | ||
+ | |||
+ | *È consigliabile implementare la funzione in un task apposito considerando che la stessa contiene delle istruzioni di WAIT che potrebbero bloccare l' | ||
+ | *Se si desidera aumentare la velocità di scambio dati è possibile impostare il parametro " | ||
+ | |||
+ | === Limiti === | ||
+ | |||
+ | Il numero limite di variabili che si possono scambiare è il seguente | ||
+ | * Funzione 3 - Read Holding Register | ||
+ | * Funzione 16 - Force Multiple Register (scrittura word multiple) | ||
+ | |||
+ | Il numero limite di variabili che si possono scambiare sono i seguenti: | ||
+ | * Funzione 3 : massimo 30 word leggibili contemporaneamente | ||
+ | * Funzione 16: massimo 28 word scrivibili contemporaneamente | ||