TECNOLOGIA DI PESATURA · SVILUPPO INTERNO · ASSISTENZA
+386 2 320 33 46info@preciz.si

NEUTRON · PROTOCOLLO DI COMUNICAZIONE

Neutron Modbus RTU/TCP — manuale di integrazione

Riferimento Neutron Modbus RTU/TCP per l’integrazione PLC, SCADA e HMI: collegamento, indirizzamento, registri, calibrazione e controllo della selezionatrice ponderale automatica.

1. VERSIONI DEL MANUALE

Tabella 1

Versione

Data

Descrizione della modifica

1.0

Giugno 2026

Prima edizione del manuale Neutron Modbus.

2. PANORAMICA

CloudScale Neutron NS e Neutron NT offrono un’interfaccia Modbus per leggere dati di pesatura, informazioni di stato, I/O digitali e dati di taratura e per eseguire comandi selezionati della bilancia. L’interfaccia è destinata a integrazioni con PLC, SCADA, HMI, MES e software su misura.

Neutron supporta le seguenti varianti di trasporto Modbus:

  • Modbus RTU tramite interfaccia RS-232 o RS-485. L’ID slave / unità Modbus predefinito è 1.

  • Modbus TCP tramite Wi-Fi o Ethernet. La porta TCP predefinita è 502.

Le funzioni e le aree dei registri disponibili costituiscono la stessa interfaccia logica per Modbus TCP e Modbus RTU, salvo che TCP utilizza un Unit Identifier soltanto dove richiesto dal client o dal gateway.

Importante: i parametri di comunicazione, come le impostazioni della porta seriale e della rete, devono essere configurati in Neutron prima di collegare il master Modbus. Il dispositivo utilizza l’indirizzo Modbus configurato dal parametro MBA.

3. COLLEGAMENTO E ATTIVAZIONE

3.1 MODBUS TCP

Modbus TCP è disponibile tramite la connessione di rete di Neutron. Utilizzate l’indirizzo IP assegnato al dispositivo e la porta TCP 502. La comunicazione TCP non richiede una configurazione della linea seriale.

Per utilizzare Modbus TCP, selezionate Modbus TCP tra le interfacce di comunicazione della bilancia (parametro SCI). Potete utilizzare Modbus TCP insieme ad altre interfacce, ad esempio continuare a usare RS-232 per comunicare con un computer tramite protocollo CSCP.

Tabella 2

Configurazione

Risultato

SCI = 10

Attiva soltanto Modbus TCP.

SCI = 5,10

Attiva la normale comunicazione RS-232 della bilancia insieme a Modbus TCP.

SCI = 6,10

Attiva la normale comunicazione RS-485 della bilancia insieme a Modbus TCP.

MBA

Imposta l’indirizzo slave / unità Modbus. Predefinito: 1.

Porta TCP

502

Quando sono indicati più valori SCI, configurate le interfacce in base alla configurazione di comunicazione Neutron selezionata. Dopo aver applicato le modifiche, riavviate la comunicazione o il dispositivo quando richiesto dal menu di configurazione.

3.2 COLLEGAMENTO TCP TIPICO

Tabella 3

Elemento

Esempio

Master Modbus

PLC, SCADA, HMI or industrial PC

Trasporto

TCP/IP tramite Ethernet o Wi-Fi

Indirizzo di destinazione

Indirizzo IP di Neutron

Porta del servizio

502

Unit ID

Valore MBA; predefinito 1

Per un’installazione industriale stabile, Ethernet è consigliata quando è disponibile una rete cablata. Il Wi-Fi introduce latenza dipendente dalla rete e deve essere valutato nell’ambiente applicativo.

3.3 MODBUS RTU (RS-232/RS-485)

Modbus RTU può essere utilizzato tramite RS-232 o RS-485. Le impostazioni di comunicazione seriale del master Modbus devono corrispondere a quelle dell’interfaccia seriale configurate in Neutron. L’ID slave Modbus è impostato da MBA ed è predefinito a 1.

Per utilizzare Modbus RTU, selezionate Modbus RS-232 oppure Modbus RS-485 tra le interfacce di comunicazione della bilancia (parametro SCI).

Tabella 4

Interfaccia

Principio di cablaggio tipico

Nota importante

RS-232

Collegate TX, RX e GND tra Neutron e il master Modbus. Potrebbe essere necessario incrociare TX/RX a seconda che le porte collegate siano DTE o DCE.

Utilizzate collegamenti punto a punto brevi e una massa di segnale comune.

RS-485

Collegate A ad A e B a B secondo le indicazioni dei morsetti di entrambi i dispositivi; collegate il riferimento di segnale / GND quando richiesto dall’installazione.

Utilizzate una topologia a catena. Non utilizzate un cablaggio a stella. Applicate la terminazione della linea soltanto alle due estremità fisiche, quando necessario.

Seguite sempre le indicazioni dei morsetti Neutron e lo schema di cablaggio fornito con il dispositivo. I produttori non indicano sempre allo stesso modo la polarità RS-485; se non si stabilisce la comunicazione, verificate la polarità A/B e la configurazione del master.

4. INDIRIZZAMENTO E RAPPRESENTAZIONE DEI DATI

Questo manuale utilizza la notazione di riferimento Modbus convenzionale, ad esempio 40101. Molti strumenti client Modbus utilizzano indirizzi iniziali a base zero. In questi strumenti, eliminate la cifra iniziale dell’area dei registri e sottraete 1 all’indirizzo di riferimento.

Tabella 5

Notazione di riferimento

Indirizzo iniziale a base zero

Esempio

40001
0

Holding register 40001

40101
100

Holding register 40101

40232
231

Holding register 40232

40380
379

Holding register 40380

Confermate la convenzione di indirizzamento del master Modbus prima della messa in servizio. Uno scostamento di un registro è la causa più comune di interpretazione errata dei dati.

4.1 FORMATO DEL PESO

  • I valori di lordo, netto e tara sono interi con segno a 32 bit memorizzati in due registri consecutivi a 16 bit.

  • La parola alta viene trasmessa per prima, con ordine dei registri big-endian.

  • La posizione decimale è riportata nel registro di configurazione uscite / stato, bit 14..13.

  • I registri di lordo e netto ad alta risoluzione 40109–40112 utilizzano due decimali aggiuntivi quando il valore ad alta risoluzione è disponibile.

Esempio: quando il campo della posizione decimale indica 2 decimali, il valore con segno a 32 bit 12345 rappresenta 123.45 nell’unità attiva. L’unità è disponibile nel registro 40113 ed è anche codificata nel registro di configurazione uscite/stato.

5. FUNZIONI MODBUS SUPPORTATE

Tabella 6

Funzione

Nome

Utilizzo in Neutron

01

Read Coils

Legge gli stati delle uscite digitali; le coil 1..6 corrispondono a DO1..DO6.

03

Read Holding Registers

Legge i registri scrivibili e quelli relativi ai comandi.

04

Read Input Registers

Legge dati di processo, pesi e registri di stato.

05

Write Single Coil

Imposta un’uscita digitale quando la relativa funzione è disattivata.

06

Write Single Register

Scrive un holding register, compresi i campi relativi ai comandi.

15

Write Multiple Coils

Imposta più uscite digitali quando le relative funzioni sono disattivate.

16

Write Multiple Registers

Scrive in blocco comando, parametri e dati di taratura.

Le operazioni di scrittura sulle uscite controllate da una funzione configurata vengono rifiutate. Tra le uscite tipicamente controllate da funzioni vi sono quelle di tolleranza e dosaggio.

6. MAPPA DEI REGISTRI DEI DATI DI PROCESSO

6.1 REGISTRI PRINCIPALI DI PROCESSO

Tabella 7

Riferimento Input / Holding

Descrizione

Tipo di dati / note

30001-30002 / 40001-40002

Peso lordo

INT32 con segno, ordine dei registri big-endian.

30003-30004 / 40003-40004

Peso netto

INT32 con segno, ordine dei registri big-endian.

30005 / 40005

Stato della bilancia

Campo di bit; vedere la sezione 6.3.

30006 / 40006

Stato del comando

Stato di elaborazione del comando.

30007 / 40007

Configurazione uscite / stato

Campo di bit: uscite, unità e posizione decimale.

La mappa principale consente ai master semplici di ottenere peso netto o lordo e dati di stato essenziali utilizzando un piccolo intervallo contiguo di registri.

6.2 REGISTRI DI PROCESSO ESTESI

Tabella 8

Holding register

Descrizione

Tipo di dati / note

40101-40102

Peso lordo

INT32 con segno.

40103-40104

Peso netto

INT32 con segno.

40105-40106

Peso di tara

INT32 con segno.

40107

Stato della bilancia

Campo di bit; vedere la sezione 6.3.

40108

Configurazione uscite / stato

Campo di bit; vedere la sezione 6.3.

40109-40110

Lordo ad alta risoluzione

INT32 con segno; due decimali aggiuntivi, se disponibili.

40111-40112

Netto ad alta risoluzione

INT32 con segno; due decimali aggiuntivi, se disponibili.

40113

Unità

0 = g; 1 = kg; 2 = t; 3 = lb.

40114

Maschera degli ingressi digitali

Bit 0..5 = DI1..DI6.

40115

Maschera delle uscite digitali

Bit 0..5 = DO1..DO6.

40116

Maschera delle funzioni delle uscite

Un bit impostato indica che l’uscita corrispondente è controllata da una funzione.

40117

Punti ADC

Valore ADC grezzo.

40119

Millivolt

Segnale della cella di carico in mV.

40231

Stato del comando

Stato di elaborazione del comando.

40232

Comando

Scrivete qui il codice del comando.

40233

Parametro 1 del comando

Parametro opzionale del comando in 40232.

6.3 CAMPI DI BIT DI STATO E CONFIGURAZIONE

6.3.1 REGISTRO DI STATO DELLA BILANCIA (30005 / 40005 / 40107)

Tabella 9

Bit

Significato (se il valore del bit=1)

0

Il peso netto è negativo.

1

Il peso lordo è negativo.

2

Il peso è stabile.

3

Condizione di sottocarico.

4

Condizione di sovraccarico.

5

La tara è attiva.

6

La tara preimpostata / manuale è attiva.

7

Il peso lordo è zero.

8

L’ingresso digitale 1 è attivo.

9

L’ingresso digitale 2 è attivo.

10

È attivo un errore della bilancia / ADC.

6.3.2 REGISTRO DI CONFIGURAZIONE USCITE / STATO (30007 / 40007 / 40108)

Tabella 10

Bit

Significato

0..5

Stato delle uscite digitali: DO1..DO6.

6..7

Codice dell’unità attiva: 0 = g; 1 = kg; 2 = t; 3 = lb.

8

Errore della bilancia / cella di carico.

13..14

Codice della posizione decimale per i valori di peso standard.

Per le applicazioni che richiedono tutti gli stati delle uscite, utilizzate il registro 40115. Utilizzate il registro 40116 per determinare quali uscite sono attualmente riservate dalla funzione attiva.

7. COMANDI E USCITE DIGITALI

7.1 FUNZIONAMENTO DEL REGISTRO DEI COMANDI

Scrivete un codice di comando nell’holding register 40232. Scrivete il parametro opzionale in 40233 prima di inviare il comando. Lo stato del comando può essere letto da 40231. Il codice di comando 0 azzera il blocco delle ripetizioni e consente di eseguire nuovamente lo stesso comando.

Tabella 11

Codice del comando

Parametro 40233

Azione

0
-

Nessun comando; azzera il blocco delle ripetizioni.

1
0

Azzera dopo il controllo della stabilità.

1
1

Azzera immediatamente.

2
0

Esegue la tara dopo il controllo della stabilità.

2
1

Esegue immediatamente la tara.

3
-

Cancella la tara.

25

Maschera di bit delle uscite

Imposta le uscite digitali secondo la maschera di bit.

Scorciatoia: anche la scrittura del codice di comando nell’holding register 40001 esegue il comando. Per un’integrazione prevedibile sono consigliati i registri dei comandi estesi 40232 e 40233, soprattutto quando serve un parametro.

7.2 USCITE DIGITALI

  • Le coil 1..6 corrispondono a DO1..DO6.

  • Utilizzate le funzioni 01, 05 e 15 per leggere o scrivere le coil.

  • Un’uscita può essere modificata tramite Modbus soltanto quando la relativa funzione è disattivata.

  • Se un’uscita è controllata da una funzione di tolleranza, dosaggio o altra funzione attiva, il dispositivo rifiuta le scritture Modbus su quell’uscita.

Esempio: per attivare DO1 e DO3 con il codice di comando 25, scrivete la maschera di bit binaria 000101 (decimale 5) in 40233, quindi scrivete 25 in 40232. Verificate il risultato tramite il registro 40115 o le coil 1..6.

8. INTERFACCIA DI CALIBRAZIONE

La calibrazione viene eseguita tramite holding register. I dati di calibrazione riuscita vengono memorizzati nella memoria flash. Se la calibrazione fallisce, i dati modificati non vengono salvati.

8.1 DATI DI CALIBRAZIONE

Tabella 12

Riferimento Holding

Indirizzo iniziale a base zero

Descrizione

40300
299

Campo di bit dello stato di calibrazione.

40301
300

Canale della bilancia.

40302
301

Numero di decimali utilizzati per i pesi di calibrazione.

40303
302

Numero di punti di calibrazione validi.

40304-40305
303

Punto ADC di zero, INT32 con segno.

Tabella 13

Bit dello stato di calibrazione

Significato

0

Il punto di zero esiste.

1

Il primo punto del peso di calibrazione esiste.

2

La bilancia dispone della calibrazione minima valida.

8

È attivo un errore della bilancia / ADC.

8.2 BLOCCHI DEI PUNTI DI CALIBRAZIONE

Il punto 1 inizia da 40310, indirizzo iniziale a base zero 309. Ogni punto di calibrazione utilizza otto registri. Il registro iniziale del punto N è 40310 + ((N - 1) x 8).

Tabella 14

Offset nel blocco del punto

Descrizione

+0

Indicatore di validità: 0 = non valido; 1 = valido.

+1..+2

Peso di calibrazione, INT32 con segno.

+3..+4

Punto ADC, INT32 con segno.

+5..+6

Fattore x100, INT32 con segno.

+7

Riservato.

Esempi: punto 1 = 40310-40317; punto 2 = 40318-40325; punto 3 = 40326-40333; punto 8 = 40366-40373.

8.3 COMANDI DI CALIBRAZIONE

Tabella 15

Riferimento Holding

Indirizzo iniziale a base zero

Descrizione

40380
379

Comando.

40381
380

Numero del punto.

40382-40383
381

Peso di calibrazione, INT32 con segno.

40384
383

Indicatori.

40385
384

Attivazione.

40386
385

Risultato del comando.

40387
386

Ultimo comando eseguito.

Tabella 16

Comando

Descrizione

1

Calibra lo zero.

2

Calibra il punto di peso.

3

Elimina il punto di calibrazione.

4

Elimina il punto di zero.

5

Elimina tutta la calibrazione.

6

Ricarica / inizializza la bilancia.

Registro degli indicatori 40384: il bit 0 determina se è richiesta la stabilità. Il valore 0 esegue immediatamente; il valore 1 richiede una media ADC stabile. Tutti gli altri bit degli indicatori sono riservati.

Tabella 17

Risultato 40386

Significato

0

OK.

1

Comando errato.

2

Dati non validi.

3

Non consentito.

4

Comando non supportato.

5

Calibrazione fallita.

8.4 SEQUENZA DI ATTIVAZIONE

Il firmware elabora la calibrazione soltanto quando il registro di attivazione 40385 passa a un valore diverso da zero. Utilizzate la sequenza seguente per ogni comando di calibrazione:

  1. Scrivete il comando e tutti i parametri richiesti.

  2. Scrivete 40385 = 1 per eseguire l’operazione.

  3. Attendete il completamento del comando e leggete 40386.

  4. Scrivete 40385 = 0 per azzerare l’attivazione.

  5. Per il comando successivo, scrivete i parametri e portate nuovamente 40385 a 1.

8.5 ESEMPI

Tabella 18

Comando

Calibrare lo zero

Scopo

Write Multiple Registers a partire dall’indirizzo a base zero 379.

Risposte

40380 = 1

Comando: calibrare lo zero.

40381 = 0

Numero del punto non utilizzato.

40382 = 0; 40383 = 0

Peso di calibrazione non utilizzato.

40384 = 1

Richiede una media ADC stabile.

40385 = 1

Avvia l’operazione.

Leggete 40386

Risultato previsto: 0 (OK).

Tabella 19

Comando

Calibrare il punto 1 con 10.000 kg

Scopo

Per 40302 = 3, moltiplicate il peso di calibrazione per 1000.

Risposte

40380 = 2

Comando: calibrare il punto di peso.

40381 = 1

Numero del punto 1.

40382-40383 = 10000

10.000 kg x 1000.

40384 = 1

Richiede una media ADC stabile.

40385 = 1

Avvia l’operazione.

Leggete 40386

Risultato previsto: 0 (OK).

Tabella 20

Comando

Eliminare il punto 1

Scopo

Rimuove il primo punto di calibrazione.

Risposte

40380 = 3

Comando: eliminare il punto di calibrazione.

40381 = 1

Numero del punto 1.

40385 = 1

Avvia l’operazione.

Tabella 21

Comando

Eliminare tutta la calibrazione

Scopo

Rimuove tutti i dati di calibrazione memorizzati.

Risposte

40380 = 5

Comando: eliminare tutta la calibrazione.

40385 = 1

Avvia l’operazione.

9. MESSA IN SERVIZIO E RISOLUZIONE DEI PROBLEMI

  1. Configurate SCI per la combinazione di interfacce richiesta e impostate MBA sull’ID slave / unità Modbus richiesto.

  2. Per Modbus TCP, confermate l’indirizzo IP e collegatevi alla porta TCP 502. Per Modbus RTU, fate corrispondere i parametri seriali e verificate il cablaggio.

  3. Leggete un registro noto, come 40113 (unità) o 40107 (stato della bilancia), per validare l’indirizzamento.

  4. Leggete 40101-40106 e decodificate i valori con segno a 32 bit di lordo, netto e tara utilizzando la posizione decimale riportata.

  5. Verificate lo stato della bilancia, gli ingressi e le uscite digitali prima di attivare le funzioni di controllo.

  6. Utilizzate i registri dei comandi e le funzioni di calibrazione soltanto dopo aver confermato che il canale corretto della bilancia e lo stato applicativo siano attivi.

9.2 PROBLEMI COMUNI

Tabella 22

Sintomo

Causa probabile

Azione

Nessuna risposta Modbus

L’interfaccia di comunicazione della bilancia (SCI) non è configurata per l’interfaccia selezionata; IP/porta o impostazioni seriali errati; cablaggio non corretto.

Verificate SCI, porta TCP 502, MBA, raggiungibilità di rete, parametri seriali e cablaggio fisico.

I valori appaiono spostati o non validi

Il client utilizza una conversione errata tra riferimenti e registri a base zero; le parole a 32 bit vengono decodificate nell’ordine sbagliato.

Controllate la convenzione di indirizzamento del client e utilizzate INT32 con segno con ordine dei registri big-endian.

Il peso ha una posizione decimale errata

Il client ignora la configurazione della posizione decimale o il formato ad alta risoluzione.

Leggete 40108 e applicate i bit 14..13; utilizzate i registri ad alta risoluzione soltanto quando necessario.

Non è possibile scrivere l’uscita

L’uscita è controllata da una funzione assegnata.

Leggete 40116 e disattivate la funzione dell’uscita interessata prima di controllarla tramite Modbus.

Lo stesso comando non viene eseguito nuovamente

Il blocco delle ripetizioni non è stato azzerato.

Scrivete il comando 0 in 40232, quindi inviate nuovamente il comando.

Il comando di calibrazione non ha effetto

L’attivazione non è passata a un valore diverso da zero oppure non è stata azzerata dopo un comando precedente.

Impostate tutti i parametri, portate 40385 a 1, leggete 40386, quindi riportate 40385 a 0.

Nota di sicurezza: calibrazione, azzeramento, tara e controllo delle uscite possono influire sul risultato della pesatura e sulle macchine collegate. Applicate il controllo degli accessi, validate i comandi nell’applicazione host e assicuratevi che tutte le operazioni rispettino i requisiti metrologici e di sicurezza delle macchine applicabili.

10. Selezionatrice ponderale automatica

Questo capitolo descrive l’interfaccia CHECKWEIGHER di base, versione 1 della mappa dei registri. Supporta la lettura dello stato del processo e dell’ultimo risultato completato, la selezione di una ricetta esistente, la configurazione dell’avvio automatico e START / STOP / STOP NOW / RESET. Modifica delle ricette, configurazione dei filtri, selezione dell’applicazione, assegnazione degli I/O e streaming diagnostico dettagliato non sono inclusi. Configurateli tramite la normale interfaccia di impostazione prima di utilizzare questo blocco.

10.1 Collegamento e indirizzamento

La mappa è identica su Modbus TCP e sulle interfacce Modbus RTU attivate. Utilizzate un solo client/master di controllo; ulteriori lettori possono monitorare i dati. Esiste una sola casella dei comandi condivisa tra tutti i trasporti, non una per client. Non utilizzate richieste broadcast per questa interfaccia. Prima di controllare, leggete il blocco e confermate application=4 (CHECKWEIGHER), canale e validità dell’istantanea.

Gli indirizzi seguenti sono indirizzi PDU a base zero. Per i client che utilizzano la notazione 4xxxx, riferimento = 40001 + indirizzo: l’indirizzo 400 è 40401 e l’indirizzo 480 è 40481. Utilizzate la funzione 03 (o 04) per leggere. Scrivete i comandi soltanto con la funzione 16 (0x10), iniziando da 480 e scrivendo esattamente otto registri. La funzione 06 e le scritture parziali vengono rifiutate. I registri di risultato e stato sono di sola lettura. L’intervallo tra i blocchi di lettura e scrittura non è leggibile.

Leggete l’indirizzo 400, quantità 48, per ottenere stato, conferma del comando e ultimo risultato in un’unica richiesta. In alternativa, leggete 400/quantità 24 per lo stato oppure 424/quantità 24 per il risultato. Tutti i valori a 32 bit utilizzano prima la parola alta; ogni registro segue l’ordine Modbus standard con byte alto per primo. Non dividete un valore a 32 bit tra richieste separate.

10.2 Mappa dei registri di stato e risultato

Tabella 23

PDU / riferimento

Parole

Nome / tipo

Descrizione

400 / 40401
1

MAP_VERSION / UINT16

1 per questa mappa.

401 / 40402
2

BOOT_ID / UINT32

Token di sessione casuale diverso da zero generato all’avvio del dispositivo. Riportatelo in ogni scrittura; non viene mantenuto dopo un riavvio. Non è una credenziale di sicurezza.

403 / 40404
1

CHANNEL / UINT16

Canale di pesatura attuale.

404 / 40405
1

APPLICATION / UINT16

Deve essere 4 per il controllo.

405 / 40406
1

STATE / UINT16

0 IDLE; 1 START_CHECK; 2 RUN; 3 DRAINING; 4 PAUSED; 5 STOPPED; 6 ERROR; 7 CONS_LOST.

406 / 40407
1

ACTIVE_ID / UINT16

Ricetta selezionata; può differire da RESULT_ID del prodotto precedente.

407 / 40408
1

AUTOSTART / UINT16

CWAUTO persistente: 0 disattivato, 1 attivato.

408 / 40409
1

PROCESS_ERROR / UINT16

Errore di processo bloccante attuale; 0 nessuno.

409 / 40410
1

BELT / UINT16

Richiesta logica del nastro, 0/1; non è un feedback del motore.

410 / 40411
1

CONS / INT16

-1 (0xFFFF) non assegnato; 0 inattivo; 1 attivo.

411 / 40412
1

PQ / UINT16

Prodotti in attesa.

412 / 40413
1

EQ / UINT16

Eventi delle uscite in attesa/attivi.

413 / 40414
1

AUTO_STATE / UINT16

Esito dell’avvio automatico: vedere 10.5.

414 / 40415
1

AUTO_ERROR / UINT16

Errore dell’avvio automatico all’accensione; 0 nessuno.

415 / 40416
1

SNAPSHOT_VALID / UINT16

1 istantanea utilizzabile; 0 non disponibile. Controllate anche APPLICATION prima del controllo.

416 / 40417
2

REQUEST_ID / UINT32

Ultima richiesta accettata; cambia immediatamente all’accettazione.

418 / 40419
2

ACK_ID / UINT32

Ultima richiesta completata. 0 significa nessuna dall’avvio.

420 / 40421
1

COMMAND_STATE / UINT16

0 IDLE; 1 BUSY; 2 DONE; 3 ERROR.

421 / 40422
1

COMMAND_ERROR / UINT16

Errore applicativo della richiesta completata; vedere 10.4.

422 / 40423
1

APPLIED_MASK / UINT16

Bit 0 selezione della ricetta applicata; bit 1 avvio automatico applicato. Può essere diverso da zero se START fallisce.

423 / 40424
1

LAST_COMMAND / UINT16

Codice di comando dell’ultima richiesta accettata.

424 / 40425
2

RESULT_SEQ / UINT32

Sequenza dell’ultimo prodotto completato; confrontate insieme a BOOT_ID.

426 / 40427
1

RESULT_ID / UINT16

Ricetta utilizzata per questo risultato.

427 / 40428
1

RESULT_FLAGS / UINT16

Bit 0 risultato esistente; bit 1 massa valida/rappresentabile; bit 2 limiti rappresentabili; bit 3 overflow/conversione numerica non valida.

428 / 40429
1

DECIMALS / UINT16

Decimali per W, LO e HI di questo risultato.

429 / 40430
1

UNIT / UINT16

0 g; 1 kg; 2 t; 3 lb; 4 oz; 5 N; 65535 altra/sconosciuta. Non assumete g per unità sconosciute.

430 / 40431
2

W / INT32

Massa netta che tiene conto della tara; dividete per 10^DECIMALS. Utilizzate soltanto quando il bit 1 di RESULT_FLAGS è impostato.

432 / 40433
2

LO / INT32

Limite inferiore di tolleranza; utilizzate soltanto con il bit 2 degli indicatori.

434 / 40435
2

HI / INT32

Limite superiore di tolleranza; utilizzate soltanto con il bit 2 degli indicatori.

436 / 40437
1

WS / UINT16

Classificazione della massa: 0 LOW; 1 OK; 2 HIGH; 3 ERROR.

437 / 40438
1

LTS / UINT16

Lunghezza: 0 OK; 1 LENGTH_LOW; 2 LENGTH_HIGH; 3 DISABLED.

438 / 40439
1

RESULT / UINT16

0 LOW; 1 OK; 2 HIGH; 3 ERROR; 4 OVERLAP; 5 ABORTED; 6 ABORTED_CONS.

439 / 40440
1

PRODUCT_ERROR / UINT16

Errore di questo prodotto; separato da PROCESS_ERROR.

440 / 40441
1

NS / UINT16

Campioni accettati dell’ultimo risultato completato, prima del taglio dei valori estremi; non il conteggio dei campioni del prodotto attuale.

441 / 40442
2

TD / UINT32

Tempo di rilevamento in millisecondi dall’avvio; torna a zero dopo circa 49.7 giorni.

443 / 40444
2

ET / UINT32

Millisecondi dal rilevamento al risultato.

445 / 40446
2

LT / UINT32

Durata ON del sensore prodotto in millisecondi; 0 in modalità di attivazione tramite massa.

447 / 40448
1

RESERVED / UINT16

0; ignorate per la versione 1.

Stato e ultimo risultato vengono copiati sotto il blocco del processo. Ogni risposta contiene un’istantanea coerente; una richiesta successiva può vedere dati più recenti. RESULT_SEQ, RESULT_ID, DECIMALS e UNIT appartengono al risultato memorizzato, non alla ricetta attualmente selezionata. Prima del primo risultato, il bit 0 degli indicatori non è impostato: non interpretate i campi del risultato riempiti di zeri come un prodotto reale di peso zero. La lettura non consuma né cancella mai un risultato.

Esempio: W high=0x0000, low=0x07D1 fornisce l’intero con segno 2001. Con DECIMALS=1 e UNIT=0, la massa è 200.1 g. I valori negativi utilizzano il complemento a due a 32 bit. Se la conversione supera INT32 o il valore della bilancia non è rappresentabile, il bit di validità corrispondente non è impostato, i relativi registri numerici sono zero e viene impostato il bit 3 degli indicatori. Il risultato originale del prodotto non cambia.

10.3 Blocco di controllo con un’unica scrittura

Tabella 24

Indirizzo / riferimento

Nome

Valore

480 / 40481
COMMAND

0 solo impostazioni; 1 START; 2 STOP DRAIN; 3 STOP NOW; 4 RESET.

481 / 40482

CHANGE_MASK

Bit 0: seleziona RECIPE_ID. Bit 1: imposta AUTOSTART. Gli altri bit devono essere 0.

482 / 40483

RECIPE_ID

1–500 quando il bit 0 della maschera è impostato. Altrimenti scrivete 0. La ricetta deve già esistere.

483 / 40484
AUTOSTART

0 o 1 quando il bit 1 della maschera è impostato. Altrimenti scrivete 0.

484–485 / 40485–40486

REQUEST_ID

UINT32, high word first. Next nonzero ID after ACK_ID. First request is 1; after 0xFFFFFFFF use 1.
486–487 / 40487–40488

BOOT_ID

UINT32, high word first. Echo the current token from 401–402.

Per COMMAND 2, 3 o 4, CHANGE_MASK, RECIPE_ID e AUTOSTART devono essere tutti 0. Le impostazioni possono essere combinate con COMMAND 0 o 1. Le modifiche alla selezione della ricetta e all’avvio automatico richiedono un processo arrestato e svuotato. START senza il bit di modifica della ricetta avvia quella attualmente selezionata. La selezione dell’applicazione e la creazione delle ricette restano fuori dall’ambito Modbus.

L’intero frame viene validato prima dell’accettazione. Nessuna scrittura parziale del blocco di controllo ha effetto. Una risposta normale alla funzione 16 significa che la richiesta è stata accettata nella casella, non che START sia riuscito. L’esecuzione avviene nel ciclo principale esistente. Interrogate finché ACK_ID corrisponde all’ID inviato e COMMAND_STATE è DONE o ERROR. BUSY può durare troppo poco per essere osservato; non richiedete mai di osservarlo prima di accettare DONE.

Mantenete una sola richiesta in sospeso. Se la scrittura va in timeout, rileggete BOOT_ID, REQUEST_ID e ACK_ID. Se il token di avvio è invariato, ritrasmettete, se necessario, esattamente le stesse otto parole. La ripetizione dell’ultima richiesta accettata con dati identici viene confermata senza eseguirla di nuovo, sia durante l’attesa sia dopo il completamento. Vengono rifiutati lo stesso ID con dati modificati, ID saltati o vecchi, un token di avvio diverso o un’altra richiesta durante BUSY. Dopo un riavvio, risincronizzatevi con il nuovo token e lo stato attuale del processo; non ripetete automaticamente un vecchio START.

Per rilevare i duplicati viene conservata soltanto l’ultima richiesta; non esiste un registro persistente dei comandi. Un riavvio della rete senza riavvio del dispositivo non cancella la casella. Questo protocollo presuppone un solo PLC di controllo; non arbitra scrittori concorrenti. Il token di avvio e il contatore delle richieste impediscono ripetizioni accidentali, non accessi non autorizzati.

10.4 Impostazioni applicate, risultati dei comandi ed errori

Viene applicata prima la selezione della ricetta, poi l’avvio automatico e infine il comando. Sintassi, intervallo degli ID e validità della ricetta vengono verificati prima delle modifiche alle impostazioni. Errori della flash possono comunque lasciare applicata un’impostazione precedente. APPLIED_MASK indica esattamente quali impostazioni richieste sono riuscite. Ad esempio, la ricetta 25 e AUTOSTART=1 possono essere salvati mentre START viene rifiutato perché CONS è inattivo: COMMAND_STATE=ERROR, COMMAND_ERROR=11, APPLIED_MASK=3. Le impostazioni non vengono ripristinate. Rileggete ACTIVE_ID e AUTOSTART prima di decidere cosa riprovare.

I codici di errore seguenti appartengono a COMMAND_ERROR e non vanno confusi con i campi di errore del processo o del prodotto. Una scrittura rifiutata a livello di trasporto non modifica la casella o ACK_ID. Indirizzi non validi, scritture su dati di sola lettura, scritture parziali e intervalli di blocco non supportati restituiscono l’eccezione Modbus 02. Una scrittura di controllo di otto parole con indirizzo corretto ma dati, token, sequenza o stato della casella non validi restituisce l’eccezione 03.

Tabella 25

Codice

Significato

0

Operazione riuscita.

1

Ricetta selezionata assente o non valida.

5 / 6

START rifiutato: peso fuori dall’intervallo consentito.

7

Memoria richiesta non disponibile.

11

CONS configurato è inattivo.

13

L’unità della ricetta non corrisponde a quella della bilancia.

15

La configurazione o lo stato del sensore impedisce l’operazione.

16

Applicazione errata, processo in esecuzione, guasto non risolto o operazione concorrente della bilancia.

17

Argomenti della richiesta non validi o sistema di misura non pronto.

25

Errore di lettura o scrittura delle impostazioni o del database.

STOP DRAIN non accetta nuovi prodotti e completa prodotti ed eventi delle uscite già accettati. La conferma DONE indica che l’arresto è stato richiesto; STATE=5 ne conferma il completamento. STOP NOW annulla prodotti ed eventi aperti e disattiva le uscite di processo. STOP non sostituisce RESET in presenza di un guasto bloccante. RESET ricontrolla bilancia e prerequisiti e non avvia il nastro; se la causa permane, fallisce. Tutti i comandi utilizzano i normali interblocchi della selezionatrice ponderale. Un risultato è l’esito di una misura, non la conferma che un attuatore fisico di espulsione abbia funzionato.

10.5 Avvio automatico

AUTOSTART è l’impostazione persistente CWAUTO, predefinita a 0. Attivarla non provoca un avvio immediato; combinatela con COMMAND=1 per uno START immediato. All’avvio successivo del dispositivo, l’applicazione CHECKWEIGHER deve essere selezionata, l’azzeramento iniziale deve essere abilitato e riuscire e deve essere disponibile una ricetta permanente valida, l’ultima attiva. Restano validi i normali controlli START. Un tentativo fallito all’avvio non viene ripetuto se un ingresso cambia in seguito. STOP manuale, PAUSE o guasti non provocano un riavvio automatico. Valori invariati non causano un’altra scrittura delle impostazioni.

AUTO_STATE: 0 DISABLED; 1 WAIT_ZERO; 2 ZERO_DISABLED; 3 ZERO_FAILED; 4 NO_PRODUCT; 5 STARTED; 6 START_FAILED; 7 CANCELLED; 8 INACTIVE; 9 INIT_FAILED. AUTO_ERROR è il codice dello START rifiutato all’avvio. Questo è l’esito del tentativo all’avvio; STATE e PROCESS_ERROR descrivono il processo attuale.

10.6 Esempi PLC

Esempio 1 — leggere tutto: funzione 03, PDU start=400, count=48 (riferimento 40401). Verificate MAP_VERSION=1, APPLICATION=4 e SNAPSHOT_VALID=1. Salvate BOOT_ID e ACK_ID. Non serve un comando per leggere i dati.

Esempio 2 — selezionare la ricetta 25, attivare l’avvio automatico e START con un’unica scrittura. Supponete BOOT_ID=0x12345678 e ACK_ID=0. Scrivete la funzione 16, PDU start=480, count=8 con parole decimali: [1, 3, 25, 1, 0, 1, 4660, 22136]. Le parole di avvio sono illustrative: copiatele sempre dal dispositivo. Attendete ACK_ID=1 e COMMAND_STATE=2, quindi verificate STATE=2 (RUN). Se COMMAND_STATE=3, controllate COMMAND_ERROR e APPLIED_MASK.

Esempio 3 — STOP DRAIN. Supponendo completata la richiesta precedente, inviate [2, 0, 0, 0, 0, 2, 4660, 22136]. Attendete ACK_ID=2. DONE conferma l’accettazione; continuate a interrogare finché STATE=5 (STOPPED). I prodotti in attesa possono ancora produrre risultati durante DRAINING.

Esempio 4 — modificare soltanto la ricetta, una volta arrestato il processo: [0, 1, 26, 0, 0, 3, 4660, 22136]. Lascia invariato l’avvio automatico e non avvia. Avviate successivamente con [1, 0, 0, 0, 0, 4, 4660, 22136].

Esempio 5 — ripristinare dopo un guasto risolto: COMMAND=4 con mask/recipe/autostart=0, ID della richiesta successivo e BOOT_ID attuale. Attendete una conferma riuscita; inviate uno START separato, se necessario. Non inviate RESET ripetutamente senza diagnosticare il guasto.

Logica PLC ciclica suggerita (pseudocodice Structured Text; adattate i nomi dei blocchi Modbus al vostro PLC):

ReadHoldingRegisters(Start := 400, Count := 48, Data := Rx);
BootId := JoinUInt32(Rx[1], Rx[2]);
AckId := JoinUInt32(Rx[18], Rx[19]);
IF BootId <> SavedBootId THEN
    SavedBootId := BootId; HaveSeenResult := FALSE;
    (* Resynchronise command handling; do not replay old START. *)
END_IF;
IF (Rx[15] = 1) AND ((Rx[27] AND 1) <> 0) THEN
    Seq := JoinUInt32(Rx[24], Rx[25]);
    IF NOT HaveSeenResult OR (Seq <> SavedSeq) THEN
        SavedSeq := Seq; HaveSeenResult := TRUE;
        IF ((Rx[27] AND 2) <> 0) AND (Rx[29] <> 65535) THEN
            Mass := SignedInt32(Rx[30], Rx[31]) / Power10(Rx[28]);
        END_IF;
        Samples := Rx[40]; ProductResult := Rx[38];
        (* Process this snapshot once, including invalid/rejected products. *)
    END_IF;
END_IF;

NS si riferisce all’ultimo prodotto completato e rimane invariato finché arriva un nuovo risultato. Un blocco dei registri dell’ultimo risultato non è una coda: se due prodotti terminano tra le interrogazioni, il risultato intermedio non è recuperabile tramite questa mappa di base. Monitorate le variazioni di SEQ e scegliete un intervallo di interrogazione inferiore al più breve intervallo tra prodotti. Dopo una riconnessione, decidete se registrare il primo risultato disponibile come istantanea recuperata o utilizzarlo soltanto come riferimento iniziale. Questa interfaccia non garantisce una traccia di audit per ogni prodotto.

10.7 Controlli di messa in servizio

  1. Verificate entrambe le convenzioni di indirizzamento, l’ordine delle parole e masse positive e negative note; leggete tutte le 48 parole ed entrambi i sottoblocchi di 24 parole.

  2. Verificate gli indicatori di assenza del risultato prima del primo prodotto, quindi un prodotto OK, LOW e non valido; confermate che ID e unità del risultato restino associati al risultato memorizzato dopo un cambio della ricetta selezionata.

  3. Ripetete una scrittura accettata identica prima e dopo il completamento: deve essere eseguita una volta. Provate dati modificati con lo stesso ID, un ID saltato, una scrittura parziale e una scrittura su dati di sola lettura: ciascuno deve essere rifiutato senza modificare le impostazioni accettate.

  4. Provate START con CONS inattivo e controllate APPLIED_MASK; provate STOP DRAIN fino a STOPPED, STOP NOW, RESET del guasto e uno START successivo.

  5. Disconnettete e riconnettete e riavviate il dispositivo. Verificate la risincronizzazione delle richieste e il rifiuto di un vecchio token di avvio. Provate l’avvio automatico attivo e disattivo con azzeramento iniziale riuscito e fallito.

  6. Ripetete sul PLC effettivo e su entrambi i trasporti TCP/RTU configurati. Confermate che la comunicazione ciclica non impedisca la pesatura o la temporizzazione delle uscite.

Domande frequenti

Come converto il riferimento di un registro in un indirizzo PDU?

Le tabelle dei registri utilizzano riferimenti 4xxxx a base uno. Per il riferimento 40101, l’indirizzo PDU a base zero è 100. Utilizzate la convenzione di indirizzamento richiesta dal vostro client Modbus.

Quanti decimali aggiuntivi utilizzano i pesi ad alta risoluzione?

I pesi lordo e netto ad alta risoluzione nei registri 40109–40112 utilizzano due decimali aggiuntivi, se disponibili. Decodificateli come valori con segno a 32 bit e tenete conto della configurazione della posizione decimale.

Il blocco del risultato della selezionatrice ponderale automatica è una coda?

No. Contiene il risultato dell’ultimo prodotto completato e rimane invariato finché arriva un nuovo risultato. Monitorate SEQ e scegliete un intervallo di interrogazione inferiore al più breve intervallo tra prodotti. I risultati intermedi non possono essere recuperati da questa mappa di base.

Un PLC può ripetere START dopo il riavvio del dispositivo?

Risincronizzate la gestione dei comandi quando cambia BOOT_ID. Leggete BOOT_ID e ACK_ID attuali, non ripetete un vecchio START e seguite la sequenza della casella dei comandi e i controlli descritti negli esempi PLC.

Avete bisogno di aiuto?

Vi serve aiuto con il software, la connettività o l’utilizzo di una soluzione? Descrivete il problema, così potremo aiutarvi a individuare il passo successivo.

Prepara una richiesta →