Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni12 pagine

Manuale R4AVA07

Questo documento descrive un modulo di acquisizione dati R4AVA07 MODBUS RTU. Ha le seguenti caratteristiche principali: 1. Può misurare tensioni da 0-5V o 0-10V su 7 canali con un'accuratezza del 1%. 2. Supporta la comunicazione MODBUS RTU per leggere e scrivere registri tramite RS485 per recuperare misurazioni di tensione e configurare impostazioni del dispositivo come indirizzo e baud rate. 3. Le applicazioni comuni includono sensori 4-20mA/0-20mA, acquisizione di segnali di tensione e monitoraggio remoto utilizzando PLC o apparecchiature di automazione.

Tradotto da

ScribdTranslations
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni12 pagine

Manuale R4AVA07

Questo documento descrive un modulo di acquisizione dati R4AVA07 MODBUS RTU. Ha le seguenti caratteristiche principali: 1. Può misurare tensioni da 0-5V o 0-10V su 7 canali con un'accuratezza del 1%. 2. Supporta la comunicazione MODBUS RTU per leggere e scrivere registri tramite RS485 per recuperare misurazioni di tensione e configurare impostazioni del dispositivo come indirizzo e baud rate. 3. Le applicazioni comuni includono sensori 4-20mA/0-20mA, acquisizione di segnali di tensione e monitoraggio remoto utilizzando PLC o apparecchiature di automazione.

Tradotto da

ScribdTranslations
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

R4AVA07

Features:
1: Operating Voltage : DC 8-25V(DC 9V 12V 15V 24V)
2: Corrente Operativa: 10-15MA
3: Supporto del comando MODBUS RTU codice funzione 03 06
4: L'intervallo di misura della tensione del canale A1/2/3/4 è 0-5V, e il canale A5/6/7
l'intervallo di misura della tensione è 0-10V. La capacità di alimentazione della sorgente di tensione testata
deve essere superiore a 1MA, altrimenti la misura non può essere accurata (MCU IO
la tensione non può essere misurata)
Accuratezza della misurazione della tensione dell'1%, la calibrazione può essere calibrata se l'errore è
superiore all'1%
I comandi MODBUS possono essere eseguiti tramite HyperTerminal seriale (assistente seriale) O PLC
Inserisci;
Sotto la modalità di comando MODBUS, può supportare fino a 247 dispositivi in parallelo
8 :Size: 45 * 30 * 15mm
9 :Weight: 10 g

Applicazione:

Sensore 4-20MA/0-20MA
Acquisizione analogica della tensione
Industria automatizzata PLC
Smart Home,Home Automation ;
Sistema di identificazione;
Monitoraggio remoto RS485;
Multimetro voltmetro
Generatore di segnale Oscilloscopio
Schema di cablaggio:

ID schiavo: È possibile impostare numerosi "ID schiavo" tramite comando, il numero massimo è 247
In modalità di comando MODBUS, l'ID dello slave deve essere corretto
Protocollo modbus rtu R4AVA07

Codice funzione
Indirizzo RS485 Funzione Registrazione Leggi numero CRC16(2)
(Stazione (1) indirizzo (2)
indirizzo (2)
(1)
03 Leggi
06 Scrivi

Registratore di sola lettura, Il codice funzione di lettura è 03

Registrati Registrare i contenuti Numero Unità Osservazioni


indirizzo di byte
0x0000 (CH1) Valore di tensione A1 2 0,01V come:
0x0001 valore di tensione (CH2)A2 Ottieni 0x014A
0x0002 valore di tensione (CH3)A3 Decimale 330
0x0003 (CH4)Valore di tensione A4 Tensione = 330 * 0,01 = 3,3V
0x0004 (CH5) Valore di tensione A5
0x0005 (CH6)Valore di tensione A6
0x0006 (CH7)Valore di tensione A7
Leggi / scrivi registro; Il codice della funzione di lettura è 03, il codice della funzione di scrittura è 06

0x0007 (CH1)Rapporto di tensione A1 2 0,1% Questo valore può essere corretto


0x0008 (CH2)A2 rapporto di tensione millisimi quando la lettura della tensione
0x0009 (CH3)A3 rapporto di tensione la deviazione è superiore all'1%
(CH4)A4 rapporto di tensione come ad esempio:
0x000A
0x000B (CH5)Rapporto di tensione A5 1000 significa 1:1
0x000C (CH6)A6 rapporto di tensione 1010: aumento del 1%
(CH7)Rapporto di tensione A7 990: diminuzione dell'1%
0x000D
0x000E Indirizzo RS485 2 Leggi indirizzo 0XFF
(Stazione Scrivi Indirizzo 1-247

indirizzo)
0x000F Velocità di trasmissione 2 0~4 0:1200
1:2400 2:4800
3:9600 (predefinito)
4:19200
5: Ripristino di fabbrica

Velocità di baud seriale: 9600 (predefinito), N, 8, 1


Protocollo di comunicazione Modbus RTU:
1. Leggi il valore della tensione

Invia dati
indirizzo RS485 Indirizzo di registrazione Funzione Numero di lettura (2) CRC16(2
(Indirizzo della stazione) n (1) (2) )
(1)

Dati di ritorno

Indirizzo RS485 Funzione Numero di byte dati (n) CRC16(2


(Indirizzo della stazione) n (1) (1) )
(1)
Indirizzo RS485 (ID Slave): 0x01~0xFE
Codice funzione 0x03
Indirizzo di registrazione: 0x0000-0x0006, Indica il valore del canale 1-7
Leggi numero: 0x0001-0x0007
Il ritorno del valore della tensione è di due byte, alto nella parte anteriore e basso
nel post, converti in decimale e dividi per 100, è il valore della tensione, Unità
0.01V; per esempio:

Ad esempio:
Invia dati (l'indirizzo RS485 è 1): 01 03 00 00 00 01 84 0A
Dati di ritorno: 01 03 02 01 4B F9 E3
01RS485 indirizzo 03Funzione 02 lunghezza F8 E3 crc16
014B è il valore di tensione, convertito in decimale = 331, 331/100=3,31V;

Dati di ritorno: 01 03 02 00 DB F8 1F
00DB è il valore di tensione, viene convertito in decimale =219, 219/100=2.19V;

2. Leggere l'indirizzo RS485


Invia dati
indirizzo RS485 Function Register Leggi numero (2) CRC16(2
(Trasmissione (1) indirizzo (2) )
indirizzo)
(1)

Restituisce dati

Indirizzo RS485 Funzione Numero di byte dati (n) CRC16(2


( Trasmissione (1) (1) )
indirizzo
(1)
Indirizzo di broadcast 0xff
Codice funzione 0x03
Indirizzo di registrazione: 0x000E

Leggi numero: 0x0001

Per esempio:
send data FF 03 00 0E 00 01 F0 17
Dati di ritorno: FF 03 02 00 01 50 50
Indirizzo di broadcast FF, funzione 03, lunghezza 02, 01 è il modulo attuale
Indirizzo RS485, 50 50 crc16
Nota: Quando si utilizza questo comando, può essere utilizzato solo un modulo di temperatura.

collegato al bus RS485, più di uno sarà sbagliato!

3. Scrivere l'indirizzo RS485


Send data
Indirizzo RS485 Funzione Registrati Impostazione CRC16(2
(Indirizzo della stazione) (1) indirizzo (2) Content (2) )
(1)

Restituisce dati

Indirizzo RS485 Funzione Registrazione Valore di registrazione CRC16(2


(Indirizzo della stazione) (1) indirizzo (2) )
(1) (2)
Indirizzo RS485 (ID Slave): 0x01~0xFE
Codice funzione 0x06
Indirizzo di registrazione: 0x000E
Impostazione contenuto: 2Byte (1-247)

Ad esempio, l'indirizzo RS485 attuale è 1, dobbiamo cambiare l'RS485


indirizzo a 3:
invia dati (l'indirizzo RS485 è 1): 01 06 00 0E 00 03 A8 08
Restituisce dati: 01 06 00 0E 00 03 A8 08

4. Leggere la velocità di trasmissione

Invia dati
Indirizzo RS485 Funzione Registrare indirizzo Leggi numero (2) CRC16(2
(Indirizzo della stazione) n (1) (2) )
(1)

Restituisce dati
Indirizzo RS485 Funzione Numero di byte data (n) CRC16(2
(Indirizzo della stazione) n (1) (1) )
(1)
RS485 address(Slave ID) : 0x01~0xFE
Codice funzione 0x03
Indirizzo di registrazione: 0x000F

Leggi numero: 0x0001


Ad esempio:
invia dati (indirizzo RS485 è 1): 01 03 00 03 00 01 74 0A
Dati di ritorno: 01 03 02 00 03 F8 45
01RS485 indirizzo, 03Funzione, 02 lunghezza, F8 45 crc16
03 significa che la velocità di trasmissione attuale è di 9600 bps

Baud rate corresponds to the number: 0: 1200 1: 2400 2: 4800 3: 9600 4: 19200

5. Scrivere l'indirizzo RS485


Invia dati
Indirizzo RS485 Registrazione della funzione Impostazione CRC16(2
(Indirizzo della stazione) (1) indirizzo (2) Contenuto (2) )
(1)

Restituisce dati

Indirizzo RS485 Registrazione della funzione Valore di registrazione CRC16(2


(Indirizzo della stazione) (1)indirizzo (2) )
(1) (2)
RS485 address(Slave ID) : 0x01~0xFE
Codice funzione 0x06
Indirizzo di registrazione: 0x000F
Impostazione Contenuto 2Byte(0-4)

Ad esempio, cambia la velocità di trasmissione a 4800bps:


invia dati (indirizzo RS485 è 1): 01 06 00 0F 00 02 38 08
Dati di ritorno: 01 06 00 0F 00 02 38 08
La velocità di baud corrisponde al numero: 0: 1200 1: 2400 2: 4800 3: 9600 4: 19200
5: Ripristino di fabbrica

Nota: 1 La velocità di trasmissione sarà aggiornata quando il modulo verrà riacceso!


2 Le impostazioni di fabbrica possono essere ripristinate quando la velocità di trasmissione corrispondente al numero è 5. Per

esempio:01 06 00 0F 00 02 38 08

6. Leggi il rapporto di tensione:

Invia dati
indirizzo RS485 Funzione Registrare indirizzo Leggi numero (2) CRC16(2
(Indirizzo della stazione) n (1) (2) )
(1)

Restituisce dati

Indirizzo RS485 Funzione Numero di byte data (n) CRC16(2


(Indirizzo della stazione) n (1) (1) )
(1)
Indirizzo RS485 (ID Slave): 0x01~0xFE
Codice funzione 0x03
Indirizzo di registrazione: 0x0007-0x000D; Indica il valore del canale 1-7
Leggi numero: 0x0001-0x0006
Restituisci dati: 0,1% millesimale
Il rapporto di tensione può essere corretto da questo valore quando la deviazione della lettura della tensione è superiore a
1%. Il valore predefinito è 1000 (3E8).
Per esempio 1:
invia dati (l'indirizzo RS485 è 1): 01 03 00 07 00 01 35 CB; 07 è il Canale 1
Restituisce dati: 01 03 02 03 E8 B8 FA
03E8 è il rapporto di tensione, che è 1000 in decimale e diviso per 1000=1; indicante
che il canale 1 non ha bisogno di modificare il valore della tensione.
Ad esempio 2:
invia dati (l'indirizzo RS485 è 1): 01 03 00 08 00 01 05 C8; 08 è il Canale 2
Restituisce dati: 01 03 02 03 DE 38 EC
03DE è il rapporto di tensione, che è 990 in decimale e diviso per 1000=0,99;
Indica che il canale 2 legge 0,99 volte il valore di acquisizione effettivo.

7. Imposta il rapporto di tensione


Il rapporto di tensione può essere corretto da questo valore quando la deviazione di lettura della tensione è maggiore

di 1%. Il valore predefinito è 1000 (3E8).


Invia dati
Indirizzo RS485 Funzione Registrazione Impostazione CRC16(2
(Indirizzo della stazione) (1) indirizzo (2) Contenuto (2) )
(1)

Restituisce dati

Indirizzo RS485 Registrazione della Funzione Valore di registrazione CRC16(2


(Indirizzo della stazione) (1) indirizzo (2) )
(1) (2)
Indirizzo RS485 (ID Slave): 0x01~0xFE
Codice funzione 0x06
Indirizzo di registrazione: 0x0007-0x000D; Indica il valore del canale 1-7
Impostazione contenuto: 2 byte

Impostazione del valore: 2 byte, unità 0,1%. Quando questo valore è impostato su 1000 (3E8), il valore della tensione non
cambiamento.
Ad esempio 1: La tensione effettiva del canale 1 è di 5,00V, ma il valore letto è solo 4,00V. Il rapporto
La deviazione è 5/4=1.25, e il rapporto di tensione di correzione è cambiato a 1250, il che può correggere il
tensione.
Invia frame:01 06 00 07 04 E2 BA 82
Restituisci frame:01 06 00 07 04 E2 BA 82
Il frame di ritorno è lo stesso del frame di invio. 07 significa canale 1, 04 E2 significa correzione
il rapporto di tensione è 1250

Ad esempio 2: La tensione effettiva del canale 1 è 4,00V, ma il valore letto è solo 5,00V. Il rapporto
la deviazione è 4/5=0,8, e il rapporto di tensione di correzione è cambiato in 800, il che può correggere il
tensione.
Invia frame:01 06 00 08 03 20 09 20
Ritorna frame: 01 06 00 08 03 20 09 20
Il frame di ritorno è lo stesso del frame di invio. 08 significa canale 2, 03 20 significa correzione.
il rapporto di tensione è 800

I comandi MODBUS che puoi utilizzare come input in "Modbus Poll", come mostrato di seguito

(Controllo CRC generato automaticamente)

Puoi anche utilizzare l'input seriale di HyperTerminal, come mostrato di seguito

(Aggiungi manualmente il controllo CRC)


Codice di controllo CRC (MCU C51):

const unsigned char code auchCRCHi[256] = {


0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00
0xC1, 0x81, 0x40
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01
0xC0, 0x80, 0x41
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01
0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00
0xC1, 0x81, 0x40
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01
0xC0, 0x80, 0x41
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00
0xC1, 0x81, 0x40
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00
0xC1, 0x81, 0x40
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01
0xC0, 0x80, 0x41
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
0xC0, 0x80, 0x41
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00
0xC1, 0x81, 0x40
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00
0xC1, 0x81, 0x40
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01
0xC0, 0x80, 0x41
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00
0xC1, 0x81, 0x40
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01
0xC0, 0x80, 0x41
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01
0xC0, 0x80, 0x41
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00
0xC1, 0x81, 0x40
};
const unsigned char codice auchCRCLo[256] = {
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05
0xC5, 0xC4, 0x04
0xCC, 0x0C, 0x0D, 0xCD, 0x0F,0xCF,0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9,
0x09, 0x08, 0xC8
0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD
0x1D, 0x1C, 0xDC
0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11
0xD1, 0xD0, 0x10
0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5
0x35, 0x34, 0xF4,
0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39
0xF9, 0xF8, 0x38
0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D
0xED, 0xEC, 0x2C
0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1
0x21, 0x20, 0xE0
0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5
0x65, 0x64, 0xA4
0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69
0xA9, 0xA8, 0x68
0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D
0xBD, 0xBC, 0x7C
0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1
0x71, 0x70, 0xB0
0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55
0x95, 0x94, 0x54
0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99
0x59, 0x58, 0x98
0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D
0x4D, 0x4C, 0x8C
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41
0x81, 0x80, 0x40
};

unsigned int CRC_16(unsigned char *str,unsigned int usDataLen)


{
unsigned char uchCRCHi = 0xFF ; /* byte alto del CRC inizializzato */
unsigned char uchCRCLo = 0xFF; /* byte basso del CRC inizializzato */
unsigned uIndex ; /* indicizzerà nella tabella di ricerca CRC */
mentre (usDataLen--)/* attraversa il buffer del messaggio */
{
uIndex = uchCRCHi ^ *str++ ; /* calcola il CRC */
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
uchCRCLo = auchCRCLo[uIndex] ;
}
ritorna (uchCRCHi << 8 | uchCRCLo);
}

Potrebbero piacerti anche