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] – creata - modifica esterna 127.0.0.1 | software:qview:qview_6:qcl_library:dw14sermodsl [2024/09/02 14:25] (versione attuale) – qem214 | ||
|---|---|---|---|
| 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 | ||