2010-06-07 7 views
2

Nous développons un contrôleur de moteur sur un dsPIC. Nous avons l'intention d'utiliser Simulink pour modéliser l'algorithme de contrôle moteur avec Real Time Embedded Workshop pour convertir le modèle Simulink en code C.
Notre firmware aura d'autres opérations logiques mineures, mais sa fonction principale est le contrôle du moteur. Nous nous demandons si nous devrions essayer de faire tout le firmware dans Simulink ou séparer les opérations logiques en code C, alors que l'algorithme de contrôle du moteur reste dans Simulink? Quelqu'un at-il une recommandation sur le chemin que nous devrions commencer?Quand utiliser Simulink dans un processeur embarqué

merci, Brent

Répondre

1

-ce que les opérations logiques interagissent avec le contrôle du moteur ou sont-ils seulement des opérations non liées? Le degré d'interaction pourrait aider à prendre la décision.

Si elles ne sont pas liées, alors pour la maintenabilité, il peut être préférable de les garder hors du modèle. Vous pouvez ensuite mettre à jour la logique sans avoir à régénérer le C pour l'ensemble du modèle SimuLink. Il y aurait moins de chance d'avoir un problème de régression.

S'ils sont en relation avec le modèle ou interagissent avec le modèle, il est bien sûr préférable de le conserver dans le modèle afin de ne pas avoir de versions incompatibles liées à une construction.

2

FYI Je viens de construire un système comme le vôtre mais avec un TI DSP. Je suppose que vous faites quelque chose de complexe comme le contrôle vectoriel. Si oui, voici ce que vous faites: Dans votre modèle, faites un bloc pour chaque tâche/chaque période dont vous avez besoin. Cela peut être simplement l'interruption PWM avec le contrôle en elle. Définissez tous les IO dont chaque tâche aura besoin - essayez de garder chaque signal à 16 bits qui sont atomiques sur le DsPIC (ceci élimine la plupart des transitions de fréquence). Obtenir simulink pour faire de chaque bloc de niveau supérieur un appel de fonction. Ne faites que le contrôle à l'intérieur de ces/ces blocs et laissez toute la configuration matérielle, la planification des tâches, l'autre logique au code C. Simulink peut générer un fichier C et H que vous venez d'inclure dans le projet avec l'autre code. Vous allez remplir une structure d'entrées, appeler la fonction et récupérer une structure avec les sorties. Gardez le modèle propre de toutes les dépendances matérielles.

Ne croyez pas les gens de marketing de Mathworks. Ils veulent que tu fasses tout dans Simulink. Ne vous méprenez pas, c'est un excellent outil pour certains types de choses. Mais pour des choses que vous ne pouvez pas faire dans le modèle (comme hello world), ils suggèrent d'utiliser "l'outil de code hérité" comme si tout ce qui n'est pas un modèle est "totalement old-school". Restreignez votre modèle pour contrôler les boucles et les flux de signaux - ce qui est bon pour - et tout ira bien.