Commande de détection d’erreur DALI

sven

Commande de détection d’erreur DALI


J’ai besoin de l’aide de quelqu’un qui connaît bien la norme DALI et qui a de l’expérience et qui connaît la structure des engrenages de commande DALI.

Je fais une application liée à DALI et vise à détecter si la lampe connectée est cassée. Pour ce faire, j’envoie les commandes suivantes au boîtier électronique DALI (esclave)

 0x92 Check if there is a lamp failure 0x93 Check if the lamp is operating 0x9B Check if the slave is in power failure mode 

avant cela, je déconnecte la lampe, puis envoie les commandes ci-dessus, cependant, l’unité esclave ne signale aucune défaillance. J’utilise deux unités DALI différentes de Tridonic. Je me demande pourquoi la suppression d’une source de lampe ne génère pas de rapport de panne?

Pourriez-vous s’il vous plaît expliquer la logique de la façon dont les appareils de contrôle DALI détectent les lampes cassées (par exemple, dans quels cas l’unité DALI génère une réponse à 0x92 , 0x93 , 0x9B )?

Quelle commande est la meilleure pour détecter les lampes cassées?

EDIT : J’envoie 144 message de requête, sa définition sur la norme:

entrez la description de l'image ici

En réponse, j’obtiens ce signal à l’oscilloscope: entrez la description de l'image ici

veux dire:

 start bit(1) | reply (8) | stop bits(2) 1 | 0 0 0 1 0 1 0 0 | 1 1 

veux dire:

  • 0: le ballast fonctionne bien
  • 0: aucune panne de lampe n’est détectée (s’il n’y a pas de lampe, pourquoi ce n’est pas une panne? Et quelle est la description de la panne?)
  • 0: la puissance de l’arc est coupée?
  • 1: erreur limite – (j’envoie 0xFEA0 qui est un paramètre de puissance d’arc, je ne pouvais pas comprendre pourquoi il est 1)
  • 0: aucune décoloration n’est en cours
  • 1: l’état de réinitialisation est présent
  • 0: il a une adresse courte
  • 0: aucune panne de courant (il a reçu la commande RESET et la commande de contrôle de la puissance de l’arc)

le timing est un peu mauvais mais j’ai quand même une méthode ad hoc pour le lire avec succès. J’obtiens la même réponse si la lampe existe ou si je retire la lampe au moment de l’exécution.

Je me demande pourquoi DALI ne génère pas de panne si la lampe n’existe pas (ou est supprimée lors de l’exécution)? Quels cas sont définis comme des échecs? Je voulais tester que je pouvais détecter les pannes de la lampe (sans casser ma lampe :), de sorte que je déconnecte la lampe. Est-ce une mauvaise pensée? Si tel est le cas, comment aurais-je dû le tester pour pouvoir obtenir le rapport de panne de la lampe de l’esclave DALI?

Quelle commande (ou séquence de commandes) est le moyen le plus fiable de détecter une lampe LED cassée (en interrogeant le boîtier électronique DALI LED)?

J’ai l’impression de prendre son temps pour obtenir une réponse. Je serais heureux de donner 100 primes pour une réponse satisfaisante pour montrer ma gratitude.

Martin

J’ai ajouté la balise DALI et créé l’entrée wiki pour elle, en attendant l’acceptation par les mods.

Réponses


 Martin

Ajout en tant que réponse séparée car la nouvelle question est différente de l’original:

Votre décodage Manchester est correct mais l’ordre des bits est b8-b7, etc. à b0, vous avez donc le décodage à l’envers. Les bits définis sont b2 = mise sous tension de l’arc et b4 = le fondu est en cours d’exécution. Cela a du sens car vous avez envoyé le DAPC de diffusion au niveau 0xA0 et avez défini un long temps de fondu (5,6 secondes.

Il y a plusieurs erreurs dans votre liste de commandes

  • msg 5 0xA370 stockerait 0x70 dans DTR, présumez que vous voulez dire 0xA307
  • msg 8 0x072E stocke le DTR comme temps de fondu dans la vitesse avec une adresse courte 3. DTR 7 signifie que le temps de fondu est de 5,6 secondes. Si vous voulez 16 secondes, DTR doit être 10 = 0x0A.
  • msg 3 & 4 & 10 Intialise et Terminate ne sont nécessaires que pour la programmation des commandes d’adresse courte (la recherche aléatoire et binaire), pas pour définir des valeurs de configuration comme le temps de fondu et les adresses de groupe.
  • msg 12 interroge l’état de l’équipement à l’adresse courte 3.

Je me débarrasserais des messages supplémentaires, j’aurais une vitesse sur le bus, j’utiliserais des messages de diffusion et la commande 146 pour que vous n’ayez même pas à interpréter les bits, que ce soit en répondant ou non. Franchement, le nombre d’erreurs faites dans votre question modifiée ne me donne pas confiance en votre code. Cependant, étant donné que l’équipement signale être allumé, une lampe manquante devrait vous faire échouer. Peu importe quand la lampe a été retirée. Il existe de nombreuses causes électroniques pour lesquelles la lampe ne parvient pas à être signalée, selon la technologie de la lampe. Pour les lampes fluorescentes, il ne s’agit pas uniquement d’un courant d’une extrémité à l’autre, il peut s’agir de fils de chauffage cassés à une extrémité ou d’un échec de démarrage après une période de déclenchement définie, ou d’une autre raison trouvée lors de la surveillance des courants et des tensions du tube.

Edit: maintenant que la question concerne spécifiquement les LED, IEC6236-207 est applicable.

Les fonctions de requête de la commande 240 vous indiquent si l’équipement prend en charge des éléments tels que la détection de circuit ouvert, la détection de diminution de charge, l’arrêt thermique, la protection contre le courant, etc. 2) alors vous n’obtiendrez pas de détection de panne de lampe de cet équipement. Mais si c’est le cas, vous pouvez déterminer quel type de défaillance de la lampe s’est produite avec la commande 251, Query Failure Status, qui répond avec le bit 1 pour le circuit ouvert et le bit 2 pour la diminution de la charge.

Notez que les commandes supérieures à 236 sont des commandes de requête étendues à l’application, ce qui signifie qu’elles doivent être précédées de la commande 272 Activer le type de périphérique avec les données 6 (pour les LED).

La réponse à l’échec de la lampe de requête de la commande 146 et le bit 1 de la réponse à l’état de la requête de la commande 144 sont le résultat d’une opération OU sur les bits 0 à 4 dans l’état d’échec signalé dans l’état d’échec de la requête de la commande 241.

En résumé, je pense que cet équipement particulier ne détecte pas la défaillance de la lampe comme une condition de circuit ouvert, et il ne détecte probablement pas non plus la défaillance de la lampe comme d’autres conditions; votre requête est correcte mais n’est tout simplement pas prise en charge par l’équipement.

sven

Désolé de vouloir écrire msg5:0xA307 et msg12:0x0790 . merci beaucoup pour les autres commentaires et informations. J’utilise uniquement des lampes LED. Je le teste avec cette lampe luxoworks.com/en/database/zumtobel/60812652 et son équipement de contrôle. L’appareil de commande est connecté à une partie externe via un câble qui ressemble à une prise téléphonique. Je vais l’essayer avec le matériel de contrôle DC MAXI JOLLY US DALI.

sven

auriez-vous une autre suggestion de méthode (plutôt que de retirer la lampe) pour tester si les appareillages DALI produisent le rapport d’échec?

sven

J’ai connecté la lampe 60813907 (4×2, 3W LED) de Zumbotel à l’équipement DC MAXI JOLLY USB DALI. il génère 00101000 avec lampe attachée, 00100000 sans lampe. Il ne génère toujours pas 1 pour le bit1 (panne de la lampe)

Martin

Certains pilotes LED ne détectent pas de défaillance de la lampe. Vous devez vérifier avec IEC62386-207. Sous la commande 146 Query Lamp Failure, il est dit «  » Non « n’est pas une garantie qu’aucune lampe n’a échoué. » Cela ne semble donc pas possible avec ce pilote.

Martin

J’ai édité cette réponse pour être plus complète, mais je ne pense pas que vous faites quelque chose de mal. La commande 144 Query Status est correcte et le retrait de la lampe pour simuler une défaillance est correct.


 Martin

Vérifiez d’abord la configuration de votre couche physique avant d’essayer d’obtenir la bonne requête. Vérifiez que vous utilisez une alimentation appropriée (DALI nécessite un courant d’alimentation de 11,5 V à 20,5 V cc limité à moins de 250 mA) qui se connecte à votre appareil de commande et à l’équipement de commande (ballast).

Ensuite, envoyez des requêtes dont vous savez qu’elles obtiendront toujours une réponse, comme 144 État de la requête ou 153 Type de périphérique de requête. Vérifiez que votre trame avant répond aux exigences de synchronisation telles que la largeur d’impulsion, le bit de démarrage, les bits d’arrêt, le codage Manchester et que votre circuit émetteur est capable de réduire l’alimentation à 4,5 V au moins pendant les impulsions faibles.

Lorsque tout cela fonctionne, vous êtes prêt à essayer la commande 146 Échec de la lampe de requête. Si l’engin a détecté une lampe défaillante ou manquante, vous devriez obtenir une réponse Oui de 0xFF. Dans DALI, la Pas de réponse est pas de réponse, la ligne reste à l’état de repos élevé. Gardez à l’esprit que la défaillance de la lampe ne peut généralement être détectée que lorsque l’engrenage conduit la lampe à l’état allumé, c’est-à-dire qu’il recherche un manque de courant alors qu’il devrait y avoir du courant. Utilisez donc Direct Arc Power avec la valeur 254 pour allumer complètement la lampe avant la commande 146 Échec de la lampe de requête.

Il est inhabituel de déclarer des commandes DALI sous la forme d’un octet hexadécimal. ce qui me fait penser que vous pourriez envoyer une trame 8 bits plutôt que 16 bits (bits comptés avant l’encodage Manchester). Les trames à 8 bits sont des trames à rebours, de l’engrenage au dispositif de commande, produites en réponse à une requête uniquement. Assurez-vous donc que votre premier octet dans la trame directe de 16 bits est l’adresse, commencez par utiliser l’adresse de diffusion avec un seul engrenage (ballast) connecté. Si vous avez plusieurs équipements connectés, vous devez soit être capable de gérer les collisions dans les réponses (ce qui est normal et prévu dans le fonctionnement de DALI), soit disposer d’un logiciel pour configurer les adresses courtes, ce qui est un processus assez complexe impliquant la randomisation et recherche binaire.

  • 0x92 = 146 Échec de la lampe de requête – c’est celui que vous voulez.
  • 0x93 = 147 Interroger la mise sous tension de la lampe – vous indique si la lampe est actuellement allumée (c.-à-d. Que l’engrenage fait passer la lampe à l’état activé). Cependant, la lampe a peut-être échoué.
  • 0x9B = 155 Échec de l’alimentation de la requête – vous indique si l’équipement vient d’être mis sous tension et n’a pas encore reçu de commandes qui modifient son niveau par rapport au niveau d’alimentation par défaut.
sven

Merci beaucoup Martin, j’ai lu votre réponse il y a quelque temps. Désolé de ne pas avoir répondu auparavant, je voulais revoir mon travail pour voir si j’aurais une autre question. Il est très précieux pour moi de trouver quelqu’un qui connaît DALI 🙂 Sur mon expérience, je n’ai qu’un seul esclave et alimente le bus DALI en 12V. J’attribue l’adresse courte et je peux envoyer des commandes et obtenir une réponse de l’esclave (j’ai remarqué que l’esclave ne répond pas aux requêtes si la commande est diffusée). Je suis en train de revoir mon travail, puis de le tester dans environ une heure, puis de vous dire comment cela s’est passé. J’apprécie beaucoup votre aide.

Martin

L’équipement doit répondre aux requêtes de diffusion, il est obligatoire, qu’il ait ou non une adresse courte, que cela crée ou non une collision dans la réponse. Bien sûr, leur réponse pourrait être non. Vous ne devriez avoir aucun problème avec l’équipement Tridonic à cet égard.

 

#de, commande, d’erreur?, DALI, détection

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *