Questa funzione scrive i bit di un HOLDING REGISTER specificato su un server modbus.
|
i32 mbc_mask_write_reg (i32 mbc, i32 offsHRStart, i32 endian, i32 bitMsk, i32 bitVal)
|
|
Valore handle reso da mbc_init().
|
|
Indice iniziale dell'HOLDING REGISTER.
|
|
Tipo di endian da usare:
|
|
0 [EM_B_16]
|
Big Endian nella singola word. (default)
|
1 [EM_L_16]
|
Little Endian nella singola word.
|
2 [EM_B_32]
|
Big Endian in 32 bit.
|
3 [EM_L_32]
|
Little Endian in 32 bit.
|
4 [EM_MB_32]
|
Middle Big Endian in 32 bit.
|
5 [EM_ML_32]
|
Middle little Endian in 32 bit.
|
6 [EM_B_64]
|
Big Endian in 64 bit.
|
7 [EM_L_64]
|
Little Endian in 64 bit.
|
8 [EM_MB_64]
|
Middle Big Endian in 64 bit.
|
9 [EM_ML_64]
|
Middle little Endian in 64 bit.
|
|
|
Maschera dei bit che devono essere scritti.
NOTA: La maschera deve avere in 1 i bit interessati (R3-style, al contrario di quello che invece vuole il modbus).
result = (result r_and r_not bitMsk) r_or (bitVal r_and bitMsk)
|
|
Maschera contenente lo stato dei bit interessati.
|
|
Rende:
|
|
0 [MBC_OK]
|
Comando eseguito.
|
-1 [MBC_INVAL]
|
Argomenti non validi.
|
-2 [MBC_BUSY]
|
Risorsa occupata.
|
-3 [MBC_PERM]
|
Permesso negato.
|
-4 [MBC_CONN]
|
Connessione non riuscita.
|
-5 [MBC_NOBUFS]
|
Buffer esauriti.
|
-6 [MBC_NOMEM]
|
Memoria insufficiente.
|
-7 [MBC_TX_ERR]
|
Errore di trasmissione.
|
-8 [MBC_RX_ERR]
|
Errore di ricezione.
|
-9 [MBC_TIMEOUT]
|
Timeout comando bloccante.
|
-10 [MBC_EXC_CODE_1]
|
Risposta con eccezione 1 (function code non supportato dal server).
|
-11 [MBC_EXC_CODE_2]
|
Risposta con eccezione 2 (indirizzo non valido).
|
-12 [MBC_EXC_CODE_3]
|
Risposta con eccezione 3 (quantità o valore non validi).
|
-13 [MBC_EXC_CODE_4]
|
Risposta con eccezione 4 (operazione fallita).
|
-14 [MBC_WRONG_ANSWER]
|
Risposta non valida.
|
-15 [MBC_INVAL_MBC]
|
Id mbc non valido.
|
|
|
Task.
|
|
La funzione è bloccante. Esce solo quando è stata completata l'operazione.
|