CSCP — CloudScale Communication Protocol
Référence des commandes CSCP pour Neutron : structure des messages, pesage, configuration, comptage, contrôle pondéral et I/O numériques.
NEUTRON · PROTOCOLE DE COMMUNICATION
Référence Neutron Modbus RTU/TCP pour l’intégration PLC, SCADA et HMI : connexion, adressage, registres, calibrage et commande de trieuse pondérale automatique.
Version | Date | Description de la modification |
|---|---|---|
| Juin 2026 | Première édition du manuel Neutron Modbus. |
CloudScale Neutron NS et Neutron NT fournissent une interface Modbus pour lire les données de pesage, états, I/O numériques et données de calibrage, et exécuter certaines commandes de balance. Elle est destinée aux intégrations PLC, SCADA, HMI, MES et aux logiciels spécifiques.
Neutron prend en charge les variantes de transport Modbus suivantes :
Modbus RTU par RS-232 ou RS-485. L’identifiant Modbus esclave / unité par défaut est 1.
Modbus TCP par Wi-Fi ou Ethernet. Le port TCP par défaut est 502.
Fonctions et zones de registres disponibles constituent la même interface logique pour Modbus TCP et Modbus RTU, sauf que TCP utilise un Unit Identifier uniquement lorsque le client ou la passerelle l’exige.
Important : les paramètres de communication, comme ceux du port série et du réseau, doivent être configurés dans Neutron avant la connexion du maître Modbus. L’appareil utilise l’adresse Modbus définie par MBA.
Modbus TCP est disponible par la connexion réseau de Neutron. Utilisez l’adresse IP attribuée et le port TCP 502. La communication TCP ne nécessite pas de configuration de ligne série.
Pour utiliser Modbus TCP, sélectionnez Modbus TCP dans les interfaces de communication de la balance (paramètre SCI). Modbus TCP peut fonctionner avec d’autres interfaces, par exemple RS-232 pour communiquer avec un ordinateur par CSCP.
Configuration | Résultat |
|---|---|
SCI = 10 | Active uniquement Modbus TCP. |
SCI = 5,10 | Active la communication normale RS-232 de la balance avec Modbus TCP. |
SCI = 6,10 | Active la communication normale RS-485 de la balance avec Modbus TCP. |
| Définit l’adresse Modbus esclave / unité. Par défaut : 1. |
Port TCP | |
Lorsque plusieurs valeurs SCI sont indiquées, configurez les interfaces selon la configuration de communication Neutron choisie. Après modification, redémarrez la communication ou l’appareil si le menu de configuration l’exige.
Élément | Exemple |
|---|---|
Maître Modbus | |
Transport | Ethernet ou Wi-Fi TCP/IP |
Adresse cible | Adresse IP Neutron |
Port de service | |
Unit ID | Valeur MBA ; par défaut 1 |
Pour une installation industrielle stable, Ethernet est recommandé dès qu’un réseau filaire est disponible. Wi-Fi ajoute une latence dépendante du réseau et doit être évalué dans l’environnement d’application.
Modbus RTU peut utiliser RS-232 ou RS-485. Les réglages série du maître Modbus doivent correspondre à ceux configurés dans Neutron. L’identifiant esclave Modbus est défini par MBA, avec 1 par défaut.
Pour utiliser Modbus RTU, choisissez Modbus RS-232 ou Modbus RS-485 dans les interfaces de communication de la balance (paramètre SCI).
Interface | Principe de câblage type | Remarque importante |
|---|---|---|
RS-232 | Reliez TX, RX et GND entre Neutron et le maître Modbus. TX/RX peuvent devoir être croisés selon que les ports connectés sont DTE ou DCE. | Utilisez des connexions point à point courtes et une masse de signal commune. |
RS-485 | Reliez A à A et B à B selon le marquage des bornes des deux appareils ; raccordez la référence du signal / GND si l’installation l’exige. | Utilisez une topologie en chaîne. Évitez le câblage en étoile. Placez les terminaisons de ligne uniquement aux deux extrémités physiques, si nécessaire. |
Respectez toujours le marquage des bornes Neutron et le schéma fourni avec l’appareil. Les fabricants ne désignent pas toujours la polarité RS-485 de la même façon ; en l’absence de communication, vérifiez la polarité A/B et la configuration du maître.
Ce manuel utilise la notation de référence Modbus conventionnelle (par exemple 40101). De nombreux outils clients utilisent des adresses de départ à base zéro. Dans ces outils, retirez le premier chiffre de zone de registre et soustrayez 1 de l’adresse de référence.
Notation de référence | Adresse de départ à base zéro | Exemple |
|---|---|---|
| | Registre de maintien 40001 |
| | Registre de maintien 40101 |
| | Registre de maintien 40232 |
| | Registre de maintien 40380 |
Vérifiez la convention d’adressage du maître Modbus avant la mise en service. Un décalage d’un registre est la cause la plus fréquente de mauvaise interprétation des données.
Les valeurs brute, nette et de tare sont des entiers signés 32 bits stockés dans deux registres 16 bits consécutifs.
Le mot de poids fort est transmis en premier (ordre des registres big-endian).
La position décimale est indiquée dans le registre de configuration des sorties / état, bits 14..13.
Les registres brut et net haute résolution 40109–40112 utilisent deux décimales supplémentaires lorsque la valeur haute résolution est disponible.
Exemple : si le champ de position décimale indique 2 décimales, la valeur signée 32 bits 12345 représente 123.45 dans l’unité active. L’unité figure dans le registre 40113 et est aussi codée dans le registre de configuration des sorties/état.
Fonction | Nom | Utilisation dans Neutron |
|---|---|---|
| Read Coils | Lire les états des sorties numériques (les bobines 1..6 correspondent à DO1..DO6). |
| Read Holding Registers | Lire les registres modifiables et ceux liés aux commandes. |
| Read Input Registers | Lire les données de processus, poids et registres d’état. |
| Write Single Coil | Régler une sortie numérique dont la fonction est désactivée. |
| Write Single Register | Écrire un registre de maintien, y compris les champs liés aux commandes. |
| Write Multiple Coils | Régler plusieurs sorties numériques dont les fonctions sont désactivées. |
| Write Multiple Registers | Écrire commande, paramètres et données de calibrage en bloc. |
Les écritures sur les sorties commandées par une fonction configurée sont rejetées. Les sorties de tolérance et de dosage en sont des exemples typiques.
Référence Input / Holding | Description | Type de données / remarques |
|---|---|---|
| Poids brut | INT32 signé, ordre des registres big-endian. |
| Poids net | INT32 signé, ordre des registres big-endian. |
| État de la balance | Champ de bits ; voir section 6.3. |
| État de la commande | État du traitement de commande. |
| Configuration des sorties / état | Champ de bits : sorties, unité et position décimale. |
La carte principale permet aux maîtres simples d’obtenir le poids net ou brut et les états essentiels dans une petite plage de registres contigus.
Registre de maintien | Description | Type de données / remarques |
|---|---|---|
| Poids brut | INT32 signé. |
| Poids net | INT32 signé. |
| Poids de tare | INT32 signé. |
| État de la balance | Champ de bits ; voir section 6.3. |
| Configuration des sorties / état | Champ de bits ; voir section 6.3. |
| Brut haute résolution | INT32 signé ; deux décimales supplémentaires si disponibles. |
| Net haute résolution | INT32 signé ; deux décimales supplémentaires si disponibles. |
| Unité | 0 = g; 1 = kg; 2 = t; 3 = lb. |
| Masque des entrées numériques | Bits 0..5 = DI1..DI6. |
| Masque des sorties numériques | Bits 0..5 = DO1..DO6. |
| Masque des fonctions de sortie | Un bit à un signifie que la sortie associée est commandée par une fonction. |
| Points ADC | Valeur ADC brute. |
| Millivolts | Signal du capteur de pesage en mV. |
| État de la commande | État du traitement de commande. |
| Commande | Écrivez le code de commande ici. |
| Paramètre de commande 1 | Paramètre facultatif de la commande dans 40232. |
Bit | Signification (si valeur du bit=1) |
|---|---|
| Le poids net est négatif. |
| Le poids brut est négatif. |
| Le poids est stable. |
| État de sous-charge. |
| État de surcharge. |
| La tare est active. |
| La tare prédéfinie / manuelle est active. |
| Le poids brut est nul. |
| L’entrée numérique 1 est active. |
| L’entrée numérique 2 est active. |
| Une erreur balance / ADC est active. |
Bit(s) | Signification |
|---|---|
| État des sorties numériques : DO1..DO6. |
| Code d’unité active : 0 = g ; 1 = kg ; 2 = t ; 3 = lb. |
| Erreur balance / capteur de pesage. |
| Code de position décimale des poids standard. |
Pour les applications nécessitant tous les états de sortie, utilisez le registre 40115. Utilisez 40116 pour déterminer les sorties actuellement réservées par la fonction active.
Écrivez un code de commande dans le registre de maintien 40232. Écrivez le paramètre facultatif dans 40233 avant d’émettre la commande. L’état de commande est lisible dans 40231. Le code 0 efface la protection antirépétition et permet de réexécuter la même commande.
Code de commande | Paramètre 40233 | Action |
|---|---|---|
| | Aucune commande ; réinitialiser la protection antirépétition. |
| | Zéro après contrôle de stabilité. |
| | Zéro immédiat. |
| | Tare après contrôle de stabilité. |
| | Tare immédiate. |
| | Effacer la tare. |
| Masque de bits des sorties | Régler les sorties numériques selon le masque de bits. |
Raccourci : écrire le code de commande dans le registre de maintien 40001 exécute aussi la commande. Pour une intégration prévisible, les registres étendus 40232 et 40233 sont recommandés, surtout lorsqu’un paramètre est nécessaire.
Les bobines 1..6 correspondent à DO1..DO6.
Utilisez les fonctions 01, 05 et 15 pour lire ou écrire les bobines.
Une sortie n’est modifiable par Modbus que lorsque sa fonction de sortie est désactivée.
Si une sortie est commandée par une tolérance, un dosage ou une autre fonction active, l’appareil rejette les écritures Modbus vers cette sortie.
Exemple : pour activer DO1 et DO3 avec le code 25, écrivez le masque binaire 000101 (décimal 5) dans 40233, puis 25 dans 40232. Vérifiez le résultat par le registre 40115 ou les bobines 1..6.
Le calibrage s’effectue par les registres de maintien. Les données de calibrage réussies sont enregistrées en mémoire flash. En cas d’échec, les données modifiées ne sont pas sauvegardées.
Référence Holding | Début à base zéro | Description |
|---|---|---|
| | Champ de bits d’état du calibrage. |
| | Canal de la balance. |
| | Nombre de décimales utilisé pour les masses de calibrage. |
| | Nombre de points de calibrage valides. |
| | Point zéro ADC, INT32 signé. |
Bit d’état du calibrage | Signification |
|---|---|
| Le point zéro existe. |
| Le premier point de masse de calibrage existe. |
| La balance possède le calibrage minimal valide. |
| Une erreur balance / ADC est active. |
Le point 1 commence à 40310 (début à base zéro 309). Chaque point utilise huit registres. Le registre initial du point N est 40310 + ((N - 1) x 8).
Décalage dans le bloc du point | Description |
|---|---|
| Indicateur de validité : 0 = invalide ; 1 = valide. |
| Masse de calibrage, INT32 signé. |
| Point ADC, INT32 signé. |
| Facteur x100, INT32 signé. |
| Réservé. |
Exemples : point 1 = 40310-40317 ; point 2 = 40318-40325 ; point 3 = 40326-40333 ; point 8 = 40366-40373.
Référence Holding | Début à base zéro | Description |
|---|---|---|
| | Commande. |
| | Numéro du point. |
| | Masse de calibrage, INT32 signé. |
| | Indicateurs. |
| | Déclencheur. |
| | Résultat de commande. |
| | Dernière commande exécutée. |
Commande | Description |
|---|---|
| Calibrer le zéro. |
| Calibrer un point de masse. |
| Supprimer un point de calibrage. |
| Supprimer le point zéro. |
| Supprimer tout le calibrage. |
| Recharger / initialiser la balance. |
Registre d’indicateurs 40384 : le bit 0 détermine si la stabilité est requise. La valeur 0 exécute immédiatement ; la valeur 1 exige une moyenne ADC stable. Tous les autres bits sont réservés.
Résultat 40386 | Signification |
|---|---|
| OK. |
| Commande incorrecte. |
| Données incorrectes. |
| Non autorisé. |
| Commande non prise en charge. |
| Échec du calibrage. |
Le micrologiciel ne traite le calibrage que lorsque le registre déclencheur 40385 passe à une valeur non nulle. Utilisez la séquence suivante pour chaque commande de calibrage :
Écrivez la commande et tous les paramètres nécessaires.
Écrivez 40385 = 1 pour exécuter l’opération.
Attendez la fin de la commande et lisez 40386.
Écrivez 40385 = 0 pour réinitialiser le déclencheur.
Pour la commande suivante, écrivez les paramètres et remettez 40385 à 1.
Commande | Calibrer le zéro |
|---|---|
But | Write Multiple Registers à partir de l’adresse à base zéro 379. |
Réponses | |
| Commande : calibrer le zéro. |
| Numéro de point inutilisé. |
| Masse de calibrage inutilisée. |
| Exiger une moyenne ADC stable. |
| Déclencher l’opération. |
Lire 40386 | Résultat attendu : 0 (OK). |
Commande | Calibrer le point 1 avec 10.000 kg |
|---|---|
But | Pour 40302 = 3, multiplier la masse de calibrage par 1000. |
Réponses | |
| Commande : calibrer un point de masse. |
| Numéro de point 1. |
| 10.000 kg x 1000. |
| Exiger une moyenne ADC stable. |
| Déclencher l’opération. |
Lire 40386 | Résultat attendu : 0 (OK). |
Commande | Supprimer le point 1 |
|---|---|
But | Supprimer le premier point de calibrage. |
Réponses | |
| Commande : supprimer un point de calibrage. |
| Numéro de point 1. |
| Déclencher l’opération. |
Commande | Supprimer tout le calibrage |
|---|---|
But | Supprimer toutes les données de calibrage enregistrées. |
Réponses | |
| Commande : supprimer tout le calibrage. |
| Déclencher l’opération. |
Configurez SCI pour la combinaison d’interfaces requise et réglez MBA sur l’identifiant Modbus esclave / unité souhaité.
Pour Modbus TCP, vérifiez l’IP et connectez-vous au port TCP 502. Pour Modbus RTU, faites correspondre les paramètres série et vérifiez le câblage.
Lisez un registre connu comme 40113 (unité) ou 40107 (état de la balance) pour valider l’adressage.
Lisez 40101-40106 et décodez les valeurs brute, nette et de tare signées 32 bits avec la position décimale indiquée.
Vérifiez l’état de la balance, les entrées et sorties numériques avant d’activer les fonctions de commande.
N’utilisez les registres de commande et fonctions de calibrage qu’après avoir confirmé le canal de balance et l’état d’application actifs.
Symptôme | Cause probable | Action |
|---|---|---|
Aucune réponse Modbus | L’interface de communication de la balance (SCI) n’est pas configurée pour l’interface choisie ; IP/port ou paramètres série incorrects ; câblage incorrect. | Vérifiez SCI, le port TCP 502, MBA, l’accessibilité réseau, les paramètres série et le câblage physique. |
Les valeurs semblent décalées ou invalides | Le client convertit mal les références en adresses à base zéro ; les mots 32 bits sont décodés dans le mauvais ordre. | Vérifiez la convention d’adressage client et utilisez INT32 signé avec ordre des registres big-endian. |
Le poids a une position décimale incorrecte | Le client ignore la configuration décimale ou le format haute résolution. | Lisez 40108 et appliquez les bits 14..13 ; utilisez les registres haute résolution seulement si nécessaire. |
Écriture de sortie impossible | La sortie est commandée par une fonction attribuée. | Lisez 40116 et désactivez la fonction de sortie concernée avant de commander la sortie par Modbus. |
La même commande ne se réexécute pas | La protection antirépétition n’a pas été réinitialisée. | Écrivez la commande 0 dans 40232, puis émettez à nouveau la commande. |
La commande de calibrage reste sans effet | Le déclencheur n’est pas passé à une valeur non nulle ou n’a pas été réinitialisé après une commande précédente. | Réglez tous les paramètres, passez 40385 à 1, lisez 40386 puis remettez 40385 à 0. |
Sécurité : calibrage, mise à zéro, tarage et commande des sorties peuvent affecter le résultat de pesage et les machines connectées. Appliquez un contrôle d’accès, validez les commandes dans l’application hôte et assurez la conformité de toutes les opérations aux exigences métrologiques et de sécurité des machines applicables.
Ce chapitre décrit l’interface CHECKWEIGHER de base, carte des registres version 1. Elle permet la lecture de l’état du processus et du dernier résultat terminé, le choix d’une recette existante, la configuration du démarrage automatique et START / STOP / STOP NOW / RESET. L’édition de recettes, la configuration des filtres, le choix d’application, l’affectation I/O et le flux détaillé de débogage sont exclus. Configurez-les avec l’interface de réglage normale avant d’utiliser ce bloc.
La carte est identique sur Modbus TCP et les interfaces Modbus RTU activées. Utilisez un seul client/maître de commande ; d’autres lecteurs peuvent surveiller les données. Une boîte de commandes unique est partagée entre tous les transports, pas une par client. N’utilisez pas de requêtes de diffusion pour cette interface. Avant toute commande, lisez le bloc et vérifiez application=4 (CHECKWEIGHER), le canal et la validité de l’instantané.
Les adresses ci-dessous sont des adresses PDU à base zéro. Pour les clients utilisant la notation 4xxxx, référence = 40001 + adresse : l’adresse 400 correspond à 40401 et 480 à 40481. Lisez par la fonction 03 (ou 04). Écrivez les commandes uniquement par la fonction 16 (0x10), à partir de 480 et sur exactement huit registres. La fonction 06 et les écritures partielles sont rejetées. Les registres de résultat/état sont en lecture seule. L’intervalle entre blocs de lecture et d’écriture n’est pas lisible.
Lisez l’adresse 400, nombre 48, pour obtenir état, acquittement de commande et dernier résultat en une requête. Vous pouvez aussi lire 400/nombre 24 pour l’état ou 424/nombre 24 pour le résultat. Toutes les valeurs 32 bits ont le mot de poids fort en premier ; chaque registre respecte l’ordre Modbus standard, octet de poids fort en premier. Ne divisez pas une valeur 32 bits entre requêtes distinctes.
PDU / référence | Mots | Nom / type | Description |
|---|---|---|---|
| | MAP_VERSION / UINT16 | 1 pour cette carte. |
| | BOOT_ID / UINT32 | Jeton de session aléatoire non nul généré au démarrage de l’appareil. Répétez-le dans chaque écriture ; il n’est pas conservé après redémarrage. Ce n’est pas un identifiant de sécurité. |
| | CHANNEL / UINT16 | Canal de pesage actuel. |
| | APPLICATION / UINT16 | Doit être 4 pour la commande. |
| | STATE / UINT16 | 0 IDLE ; 1 START_CHECK ; 2 RUN ; 3 DRAINING ; 4 PAUSED ; 5 STOPPED ; 6 ERROR ; 7 CONS_LOST. |
| | ACTIVE_ID / UINT16 | Recette sélectionnée ; peut différer du RESULT_ID du produit précédent. |
| | AUTOSTART / UINT16 | CWAUTO persistant : 0 désactivé, 1 activé. |
| | PROCESS_ERROR / UINT16 | Erreur bloquante actuelle du processus ; 0 aucune. |
| | BELT / UINT16 | Demande logique de convoyeur, 0/1 ; pas un retour d’état moteur. |
| | CONS / INT16 | -1 (0xFFFF) non affecté ; 0 inactif ; 1 actif. |
| | PQ / UINT16 | Produits en attente. |
| | EQ / UINT16 | Événements de sortie en attente/actifs. |
| | AUTO_STATE / UINT16 | Résultat du démarrage automatique : voir 10.5. |
| | AUTO_ERROR / UINT16 | Erreur du démarrage automatique à la mise sous tension ; 0 aucune. |
| | SNAPSHOT_VALID / UINT16 | 1 instantané exploitable ; 0 indisponible. Vérifiez aussi APPLICATION avant commande. |
| | REQUEST_ID / UINT32 | Dernière requête acceptée ; change immédiatement à l’acceptation. |
| | ACK_ID / UINT32 | Dernière requête terminée. 0 signifie aucune depuis le démarrage. |
| | COMMAND_STATE / UINT16 | 0 IDLE ; 1 BUSY ; 2 DONE ; 3 ERROR. |
| | COMMAND_ERROR / UINT16 | Erreur applicative de la requête terminée ; voir 10.4. |
| | APPLIED_MASK / UINT16 | Bit 0 sélection de recette appliquée ; bit 1 démarrage automatique appliqué. Peut être non nul si START échoue. |
| | LAST_COMMAND / UINT16 | Code de commande de la dernière requête acceptée. |
| | RESULT_SEQ / UINT32 | Séquence du dernier produit terminé ; comparer avec BOOT_ID. |
| | RESULT_ID / UINT16 | Recette utilisée pour ce résultat. |
| | RESULT_FLAGS / UINT16 | Bit 0 résultat existant ; bit 1 masse valide/représentable ; bit 2 limites représentables ; bit 3 dépassement/conversion numérique invalide. |
| | DECIMALS / UINT16 | Décimales pour W, LO et HI de ce résultat. |
| | UNIT / UINT16 | 0 g ; 1 kg ; 2 t ; 3 lb ; 4 oz ; 5 N ; 65535 autre/inconnue. Ne supposez pas g pour les unités inconnues. |
| | W / INT32 | Masse nette tenant compte de la tare ; diviser par 10^DECIMALS. Utiliser uniquement si le bit 1 de RESULT_FLAGS est à un. |
| | LO / INT32 | Limite inférieure de tolérance ; utiliser uniquement avec le bit 2 des indicateurs. |
| | HI / INT32 | Limite supérieure de tolérance ; utiliser uniquement avec le bit 2 des indicateurs. |
| | WS / UINT16 | Classification de masse : 0 LOW ; 1 OK ; 2 HIGH ; 3 ERROR. |
| | LTS / UINT16 | Longueur : 0 OK ; 1 LENGTH_LOW ; 2 LENGTH_HIGH ; 3 DISABLED. |
| | RESULT / UINT16 | 0 LOW ; 1 OK ; 2 HIGH ; 3 ERROR ; 4 OVERLAP ; 5 ABORTED ; 6 ABORTED_CONS. |
| | PRODUCT_ERROR / UINT16 | Erreur de ce produit ; distincte de PROCESS_ERROR. |
| | NS / UINT16 | Échantillons acceptés du dernier résultat terminé avant élimination des extrêmes ; pas le nombre d’échantillons du produit actuel. |
| | TD / UINT32 | Instant de détection en millisecondes depuis le démarrage ; reboucle après environ 49.7 jours. |
| | ET / UINT32 | Millisecondes de la détection au résultat. |
| | LT / UINT32 | Durée ON du capteur produit en millisecondes ; 0 en mode de déclenchement par masse. |
| | RESERVED / UINT16 | 0 ; ignorer pour la version 1. |
L’état et le dernier résultat sont copiés sous verrou du processus. Chaque réponse contient un instantané cohérent ; la suivante peut voir des données plus récentes. RESULT_SEQ, RESULT_ID, DECIMALS et UNIT appartiennent au résultat stocké, pas à la recette sélectionnée actuellement. Avant le premier résultat, le bit 0 est à zéro : n’interprétez pas les champs remplis de zéros comme un produit réel de masse nulle. La lecture ne consomme ni n’efface jamais un résultat.
Exemple : W high=0x0000, low=0x07D1 donne l’entier signé 2001. Avec DECIMALS=1 et UNIT=0, la masse est 200.1 g. Les valeurs négatives utilisent le complément à deux 32 bits. Si la conversion dépasse INT32 ou si la valeur de la balance n’est pas représentable, le bit de validité correspondant est à zéro, ses registres numériques sont nuls et le bit 3 est à un. Le résultat produit d’origine n’est pas modifié.
Adresse / référence | Nom | Valeur |
|---|---|---|
| | 0 réglages seuls ; 1 START ; 2 STOP DRAIN ; 3 STOP NOW ; 4 RESET. |
| CHANGE_MASK | Bit 0 : sélectionner RECIPE_ID. Bit 1 : régler AUTOSTART. Les autres bits doivent être 0. |
| RECIPE_ID | 1–500 si le bit 0 du masque est à un. Sinon écrire 0. La recette doit déjà exister. |
| | 0 ou 1 si le bit 1 du masque est à un. Sinon écrire 0. |
| REQUEST_ID | |
| BOOT_ID | |
Pour COMMAND 2, 3 ou 4, CHANGE_MASK, RECIPE_ID et AUTOSTART doivent tous être 0. Les réglages peuvent être combinés avec COMMAND 0 ou 1. Sélection de recette et changements de démarrage automatique nécessitent un processus arrêté et vidé. START sans bit de changement de recette lance la recette actuellement sélectionnée. Choix de l’application et création de recettes restent hors du périmètre Modbus.
La trame complète est validée avant acceptation. Aucune écriture partielle du bloc de commande ne prend effet. Une réponse normale de fonction 16 signifie l’acceptation dans la boîte, pas la réussite de START. L’exécution passe par la boucle principale existante. Interrogez jusqu’à ce qu’ACK_ID corresponde à l’identifiant soumis et que COMMAND_STATE soit DONE ou ERROR. BUSY peut être trop bref pour être observé ; n’exigez jamais de l’avoir vu avant d’accepter DONE.
Gardez une seule requête en cours. Si l’écriture expire, relisez BOOT_ID, REQUEST_ID et ACK_ID. Si le jeton de démarrage est inchangé, retransmettez si nécessaire exactement les huit mêmes mots. Une répétition de la dernière requête acceptée avec des données identiques est acquittée sans réexécution, qu’elle soit en attente ou terminée. Le même identifiant avec d’autres données, les identifiants sautés/anciens, un autre jeton de démarrage ou une requête pendant BUSY sont rejetés. Après redémarrage, resynchronisez-vous avec le nouveau jeton et l’état actuel ; ne rejouez pas automatiquement un ancien START.
Seule la dernière requête est conservée pour détecter les doublons ; aucun journal persistant des commandes n’existe. Redémarrer le réseau sans redémarrer l’appareil ne vide pas la boîte. Ce protocole suppose un PLC de commande unique ; il n’arbitre pas les émetteurs concurrents. Jeton de démarrage et compteur évitent les répétitions accidentelles, pas les accès non autorisés.
La sélection de recette est appliquée d’abord, le démarrage automatique ensuite, puis la commande. Syntaxe, plage d’identifiants et validité de la recette sont vérifiées avant de modifier les réglages. Une erreur flash peut néanmoins laisser un réglage antérieur appliqué. APPLIED_MASK indique exactement quels réglages ont réussi. Par exemple, la recette 25 et AUTOSTART=1 peuvent être enregistrés alors que START est refusé parce que CONS est inactif : COMMAND_STATE=ERROR, COMMAND_ERROR=11, APPLIED_MASK=3. Les réglages ne sont pas annulés. Relisez ACTIVE_ID et AUTOSTART avant de décider quoi réessayer.
Les codes ci-dessous appartiennent à COMMAND_ERROR et ne doivent pas être confondus avec les erreurs de processus/produit. Une écriture rejetée au niveau transport ne change ni la boîte ni ACK_ID. Adresses illégales, écritures en lecture seule, partielles et plages de blocs non prises en charge retournent l’exception Modbus 02. Une écriture de commande de huit mots correctement adressée avec données, jeton, séquence ou état de boîte invalide retourne l’exception 03.
Code | Signification |
|---|---|
| Réussite. |
| Recette sélectionnée absente ou invalide. |
| START refusé : poids hors de la plage autorisée. |
| Mémoire nécessaire indisponible. |
| CONS configuré inactif. |
| L’unité de recette ne correspond pas à la balance. |
| La configuration/l’état du capteur empêche l’opération. |
| Mauvaise application, processus actif, défaut non résolu ou opération de balance incompatible. |
| Arguments de requête invalides ou système de mesure non prêt. |
| Échec de lecture ou d’écriture des réglages/de la base. |
STOP DRAIN n’accepte pas de nouveaux produits et termine les produits et événements de sortie déjà acceptés. Son acquittement DONE signifie que l’arrêt est demandé ; STATE=5 confirme son achèvement. STOP NOW annule les produits/événements ouverts et désactive les sorties du processus. STOP ne remplace pas RESET lors d’un défaut bloquant. RESET revérifie la balance et les conditions préalables sans lancer le convoyeur ; si la cause persiste, il échoue. Toutes les commandes utilisent les verrouillages normaux de la trieuse. Un résultat est une mesure, pas une confirmation de l’actionnement physique du dispositif de rejet.
AUTOSTART est le réglage CWAUTO persistant, 0 par défaut. L’activer ne démarre pas immédiatement ; combinez-le avec COMMAND=1 pour un START immédiat. Au prochain démarrage, l’application CHECKWEIGHER doit être sélectionnée, la mise à zéro initiale activée et réussie, et la dernière recette permanente active valide disponible. Les contrôles START normaux restent applicables. Un échec au démarrage n’est pas réessayé si une entrée change ensuite. STOP, PAUSE manuels ou défauts ne déclenchent pas de redémarrage automatique. Une valeur inchangée n’entraîne pas de nouvelle écriture des réglages.
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 est le code du START refusé au démarrage. C’est le résultat de la tentative au démarrage ; STATE et PROCESS_ERROR décrivent le processus actuel.
Exemple 1 — tout lire : fonction 03, début PDU=400, nombre=48 (référence 40401). Vérifiez MAP_VERSION=1, APPLICATION=4 et SNAPSHOT_VALID=1. Enregistrez BOOT_ID et ACK_ID. Aucune commande n’est nécessaire pour lire.
Exemple 2 — choisir la recette 25, activer le démarrage automatique et START en une écriture. Supposez BOOT_ID=0x12345678 et ACK_ID=0. Écrivez par fonction 16, début PDU=480, nombre=8, avec les mots décimaux : [1, 3, 25, 1, 0, 1, 4660, 22136]. Les mots de démarrage sont illustratifs : copiez-les toujours depuis l’appareil. Attendez ACK_ID=1 et COMMAND_STATE=2, puis vérifiez STATE=2 (RUN). Si COMMAND_STATE=3, examinez COMMAND_ERROR et APPLIED_MASK.
Exemple 3 — STOP DRAIN. Après achèvement de la requête précédente, envoyez [2, 0, 0, 0, 0, 2, 4660, 22136]. Attendez ACK_ID=2. DONE confirme l’acceptation ; continuez à interroger jusqu’à STATE=5 (STOPPED). Les produits en attente peuvent encore produire des résultats pendant DRAINING.
Exemple 4 — changer seulement la recette après arrêt : [0, 1, 26, 0, 0, 3, 4660, 22136]. Cela ne change pas le démarrage automatique et ne démarre pas. Démarrez ensuite avec [1, 0, 0, 0, 0, 4, 4660, 22136].
Exemple 5 — réinitialiser un défaut corrigé : COMMAND=4 avec mask/recipe/autostart=0, l’identifiant de requête suivant et BOOT_ID actuel. Attendez un acquittement réussi ; émettez un START distinct si nécessaire. Ne répétez pas RESET sans diagnostiquer le défaut.
Logique PLC cyclique suggérée (pseudocode Structured Text ; adaptez les noms des blocs Modbus à votre 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 concerne le dernier produit terminé et reste inchangé jusqu’à un nouveau résultat. Le bloc du dernier résultat n’est pas une file : si deux produits se terminent entre interrogations, le résultat intermédiaire n’est pas récupérable par cette carte de base. Surveillez SEQ et choisissez un intervalle d’interrogation inférieur au plus court intervalle produit. Après reconnexion, décidez si le premier résultat disponible doit être enregistré comme instantané récupéré ou servir seulement de référence initiale. Cette interface ne garantit pas une piste d’audit pour chaque produit.
Vérifiez les deux conventions d’adresse, l’ordre des mots et des masses positives/négatives connues ; lisez les 48 mots et les deux sous-blocs de 24 mots.
Vérifiez les indicateurs d’absence de résultat avant le premier produit, puis un produit OK, LOW et invalide ; confirmez que l’identifiant/l’unité restent liés au résultat stocké après changement de recette.
Répétez une écriture acceptée identique avant/après achèvement : elle ne doit s’exécuter qu’une fois. Essayez un contenu modifié avec le même identifiant, un identifiant sauté, une écriture partielle et en lecture seule : chacun doit être rejeté sans modifier les réglages acceptés.
Testez START avec CONS inactif et examinez APPLIED_MASK ; testez STOP DRAIN jusqu’à STOPPED, STOP NOW, RESET du défaut puis START.
Déconnectez/reconnectez et redémarrez l’appareil. Vérifiez la resynchronisation des requêtes et le rejet de l’ancien jeton. Testez le démarrage automatique activé/désactivé avec mise à zéro initiale réussie et échouée.
Répétez sur le PLC réel et les deux transports TCP/RTU configurés. Vérifiez que la communication cyclique n’empêche pas le pesage ni la temporisation des sorties.
Les tableaux utilisent des références 4xxxx à base un. Pour la référence 40101, l’adresse PDU à base zéro est 100. Utilisez la convention d’adressage exigée par votre client Modbus.
Les poids brut et net haute résolution des registres 40109–40112 utilisent deux décimales supplémentaires si disponibles. Décodez-les comme valeurs signées 32 bits et tenez compte de la configuration de position décimale.
Non. Il conserve le résultat du dernier produit terminé et reste inchangé jusqu’au suivant. Surveillez SEQ et choisissez un intervalle d’interrogation inférieur au plus court intervalle produit. Les résultats intermédiaires ne sont pas récupérables par cette carte de base.
Resynchronisez la gestion des commandes quand BOOT_ID change. Lisez les BOOT_ID et ACK_ID actuels, ne rejouez pas un ancien START et suivez la séquence et les contrôles de boîte de commandes décrits dans les exemples PLC.
Référence des commandes CSCP pour Neutron : structure des messages, pesage, configuration, comptage, contrôle pondéral et I/O numériques.
Intégration OPC UA pour Neutron : connexions sécurisées, données de pesage en direct, capture stable et intégration PLC/SCADA.
Besoin d’aide pour logiciel, connectivité ou utilisation ? Décrivez le problème pour que nous aidions à la prochaine étape.