Ajout de fonctionnalités de sécurité à votre code robot
Un problème courant avec les projets complexes est de s’assurer que tout votre code est exécuté quand vous vous y attendez. Des problèmes peuvent survenir lorsque des tâches avec une priorité élevée, de longs temps d’exécution ou des appels fréquents monopolisent la puissance de traitement sur le roboRIO. Cela conduit à ce qu’on appelle « starvation » ou « famine » pour les tâches qui ne sont pas en mesure d’exécuter du que le processeur soit occupé. Dans la plupart des cas, cette situation ralentira simplement le temps de réaction à votre entrée des joysticks et autres dispositifs. Tout aussi grave, cette situation peut également amèner les moteurs de votre robot à conserver des valeurs de vitesse longtemps après que vous ayez envoyé une commande pour les arrêter. Pour éviter toute situation catastrophe en opérant votre robot, vous pouvez implémenter des fonctionnalités de sécurité qui vérifient la famine d’entrée de tâche et arrêter automatiquement les opérations potentiellement nocives.
Il existe des fonctions intégrées pour les moteurs qui permettent une mise en œuvre facile des contrôles de sécurité. Ces fonctions sont les suivantes :
Robot Drive Safety Configuration
Motor Drive Safety Configuration
Relay Safety Configuration
PWM Safety Configuration
Solenoid Safety Configuration
Robot Drive Delay and Update Safety
Dans toutes les fonctions configuration de sécurité, vous pouvez activer et désactiver les contrôles de sécurité pendant que votre programme est en cours d’exécution et configurer le délai d’expiration que vous pensez approprié. Les fonctions conservent un cache de tous les appareils dont la sécurité est activée et vérifieront si l’un d’entre eux a dépassé sa limite de temps. Le cas échéant, tous les appareils du cache seront désactivés et le robot s’arrêtera immédiatement ou ses sorties relais/PWM/solenoid seront désactivées. Le code ci-dessous montre comment utiliser les fonctions du Drive Safety Configuration pour définir une limite de temps maximale pendant lequel les moteurs ne recevant aucune nouvelle donnée d’entrée devront s’éteindre.
Pour tester l’arrêt de sécurité, essayez d’ajouter et une fonction Wait à la boucle et configuer cette fonction à un temps qui soit plus long que votre délai d’expiration!
La dernière fonction qui se rapporte à la mise en œuvre des contrôles de sécurité – Robot Drive Delay and Update Safety – vous permet de mettre le roboRIO en mode autonome sans dépasser la limite de temps. Il maintiendra la sortie actuelle du moteur sans faire d’appels coûteux aux fonctions de sortie du système d’entrainement, et s’assurera également que les contrôles de sécurité sont régulièrement mis à jour de sorte que les moteurs ne s’arrêteront pas soudainement.
Dans l’ensemble, il est fortement recommandé qu’une certaine forme de contrôle de sécurité soit mise en œuvre dans votre projet pour s’assurer que votre robot ne soit pas involontairement laissé dans un état dangereux!