Methoden zum Debuggen von Mikrocontroller-Software in einem elektrischen Laufwerk

Bild

Wie debugge ich Mikrocontroller-Programme? Der JTAG wird genommen, das Oszilloskop ist ein paar Tage / Wochen und das Programm wird debuggt. Dies wird eine typische Antwort sein, und in den meisten Fällen wird es richtig sein ... Aber nicht immer. Mikrocontroller lösen sehr unterschiedliche Probleme. In diesem Artikel wird erläutert, was zu tun ist, wenn Sie eine umständliche Low-Level-Software zur Steuerung elektrischer Leistungsgeräte entwickeln müssen, z. B. Frequenzumrichter für Elektromotoren, DC / DC-Batterieladewandler für Züge, Leistungskorrektoren, Servos und usw. Geräte, bei denen Kiloampere fließen und PWM-Kilovolt, bei denen jedes Umschalten der IGBT-Wechselrichtertasten gezählt wird, bei denen die Reaktionszeit des Mikrocontrollers auf eine abnormale Situation in Mikrosekunden gemessen wird und die Geräte selbst in versiegelten Fällen irgendwo in den Fabriken von Yakutia installiert und betrieben werden.Wenn Sie wissen möchten, welche Funktionen dies für Debugging-Methoden bedeutet, sind Sie bei cat willkommen.


Merkmale von Debugging-Steuerungssystemen


Welche Funktionen bietet das Debuggen von Mikrocontrollern (MK), die solche Aufgaben ausführen? Erstens, wenn MK mit Kraftgeräten arbeitet, kann es nicht gestoppt werden.MK steuert mit Hilfe von PWM die Netzschalter, regelt viele Werte in seinen Korridoren - Ströme der Motorphasen, Zwischenkreisspannung, Drehzahl, Position des Arbeitskörpers usw. Wenn Sie den MK anhalten, während Sie am Haltepunkt arbeiten, schaltet sich das Gerät im besten Fall aufgrund des Hardwareschutzes aus, und im schlimmsten Fall explodiert einfach alles (wenn die Netzschalter in der Position "Eins" oder mit einem Arbeitszyklus eingeschaltet bleiben). Daher besteht die klassische Art des Debuggens darin, bei solchen Aufgaben „mit dem Debugger durch die Schritte zu gehen“. Sie können also nur auf der Tabelle „vollständig rohe Softwaremodule ausführen, bevor sie zum ersten Mal in reale Geräte aufgenommen werden.

Zweitens ist dies die Komplexität von Low-Level-Software. Die Größe des Textcode-Textabschnitts beträgt 50 bis 200 KB für den Programmcode, der ausschließlich die Hardware steuert (ohne Kommunikationstreiber auf hoher Ebene usw.). Dies ist eine typische Situation für einen Mikrocontroller eines industriellen Servoantriebs. Daher werden für solche Aufgaben Mikrocontroller der Motorcontrol-Serie verwendet, die gleichzeitig sehr entwickelte Peripheriegeräte, hohe Leistung und eine relativ große (für MK) Speichergröße kombinieren. Als Beispiel für importierte MKs können 32-Bit-MK-Instrumente der Texas Instruments C2000-Serie aus dem inländischen K1921VK01T-Chip von NIIET OJSC angegeben werden. Software für solche MK enthält normalerweise Zehntausende oder Hunderttausende von ZeilenPerfekt optimierter C / C ++ - Code, der einfach nicht durch „Blinken einer LED“, „Drucken in UART“ oder durch Beobachten der Funktion der Beine eines externen Oszilloskops behoben werden kann.

Drittens steht die Steuerung des elektrischen Antriebssteuersystems am häufigsten im Stromrichter, dessen Gehäuse geschlossen und manchmal sogar abgedichtet ist. Daher ist der Zugriff über JTAG bereits ein großes Problem, wenn auch nur für die Firmware (bei ausgeschaltetem Gerät). Ein noch schwerwiegenderes Problem ist das Debuggen von JTAG bei eingeschaltetem Gerät. Hier sollte das unbedingt galvanisch isolierte und geräuschdichte JTAG verwendet werden (wir verwenden für MK TI JTAG SAURIS mit eingebauter galvanischer Isolation - teuer, aber es funktioniert).

Viertens keine Betriebssysteme!Wir können vorhersehen, wie manche Leute auf die Idee kommen: "Nun, da Sie eine so schwierige Aufgabe haben, setzen Sie einen normalen Mikrocontroller unter Linux ein und schreiben Sie regelmäßige Anwendungen dafür, indem Sie die Software von einem Flash-Laufwerk aktualisieren." Steuerungssysteme für Stromversorgungsanlagen sind sehr harte Echtzeitsysteme. Nicht dass Linux, nicht einmal alle spezialisierten Echtzeitbetriebssysteme für solche Aufgaben geeignet wären. Beispielsweise kann die Unterbrechung des ADC durch Lesen und Mitteln von analogen Daten mit einer Frequenz von bis zu 100 kHz verursacht werden. Gleichzeitig wird es nur ein Dutzend oder zwei Codezeilen enthalten - Datenerfassung von analogen Kanälen, ein paar Überprüfungen des Hochgeschwindigkeitsschutzes und des Ausstiegs - alles, nichts anderes zu tun. Wenn Sie einem Betriebssystem-Taskplaner eine solche Unterbrechung anweisen, beansprucht die eigene Ausführung einfach mehr Ressourcen. Ganz zu schweigen davon, dass insbesondereFür Linux müssen Sie anstelle eines MK-Chips zwei weitere auf die Platine setzen - externen RAM und Flash-Speicher, eine Reihe wertvoller Kristallbeine darauf zuweisen, eine sechsschichtige Platine für die ordnungsgemäße Verkabelung verwenden und eine große MK-Startzeit erhalten (manchmal, wenn ein Stromausfall oder ein Watchdog-Timer vorliegt) Starten Sie die Arbeit, bevor die Engine gestoppt ist!), haben Sie Probleme mit der Integrität des Dateisystems und vieles mehr.

Nun, das fünfte Merkmal - Low-Level-Steuerungssysteme für elektrische Antriebe und andere Stromversorgungsanlagen (im Gegensatz zu Kommunikationsaufgaben an verschiedenen Schnittstellen, SPS, Steuerungen aller Arten von Alarmen, Fernbedienungen usw.) implementiert hauptsächlich Algorithmen für automatische Steuerungssysteme. Das heißt: Die Softwarehälfte besteht aus verschiedenen Arten von geschlossenen Strukturen mit PID-Reglern, Sättigungsblöcken, Totzonen, Abhängigkeitstabellen voneinander, Filtern, Beobachtern, Intensitätseinstellern, Bewegungsplanern und anderen. Berechnungen in einer solchen Software werden mit einer bestimmten Frequenz durchgeführt - beispielsweise bei einer Frequenz von 10 kHz wird ein Interrupt ausgelöst und berechnet alle aufgelisteten Blöcke, die zusammen die erforderliche Gerätesteuerungsstruktur bilden. In solchen Algorithmen hilft das schrittweise Debuggen nicht - meistens gibt jedes Modul bei jedem Schritt was ausWas von ihm erwartet wird - tatsächlich werden all diese Filter, Regler usw. bereits seit Jahren getestet und es gibt dort nur wenige Überraschungen.Während des Betriebs der gesamten Struktur treten Probleme auf - jede Einheit arbeitet einzeln, und der gewünschte Regulierungsprozess verläuft nicht wie erwartet . Und die Probleme liegen in der Anpassung von Hunderten von Parametern und Koeffizienten dieser Blöcke sowie in der daraus zusammengesetzten Struktur - es kann sich herausstellen, dass Sie irgendwo eine neue Stabilisierungsschaltung hinzufügen, einen Vorhersageblock hinzufügen müssen, Einschränkungen usw. Daher ist dies ein weiterer "Stein im Garten" für schrittweise Debugging- und Printf-Debugging-Meldungen: Sie müssen häufiger als nicht den Programmcode selbst, sondern die zusammengesetzte automatische Steuerungsstruktur debuggen. Wenn jemand wenig Ahnung hat, was es ist (Struktur), dann ist hier die einfachste Struktur einer sensorlosen Vektorsteuerung eines Synchronmotors:



Jede Box besteht manchmal aus ein paar Formeln und manchmal aus einem Modul auf einem Dutzend oder zwei Seiten Code. Das Modul verfügt über Ein- / Ausgänge sowie einige Zustandsvariablen (z. B. den integralen Bestandteil des PI-Reglers usw.). Wer möchte, kann auch eine ähnliche Struktur auf der Wikipedia-Seite sehen . Da das Steuerungssystem geschlossen ist, führt der fehlerhafte Betrieb einer Einheit (oder deren falsche Einstellung) zur Funktionsunfähigkeit der gesamten Struktur. Und genau herauszufinden, wo das Problem liegt - das ist eine andere Aufgabe.

Wie kann ich es debuggen?


Was tun, wie debuggen? Ein externes Oszilloskop? Wird nicht helfen. Das Oszilloskop ist natürlich zum Debuggen einiger rein Hardwareprobleme erforderlich, aber es können nur die Eingabe- und Ausgabewerte des Mikrocontrollers angezeigt werden, und Hunderte von Variablen innerhalb der Struktur bleiben hinter den Kulissen. Nun, Sie werden sehen, dass der Phasenstrom des Motors merkwürdig ruckelt und die Ausgangsspannung des Wechselrichters merkwürdig ruckelt. Und warum - welcher Block in der MK-Software dazu führt (oder ein Motor oder Positionssensor oder etwas anderes zu dieser Kurve führt) - bleibt unklar.

Modell? Ja, das ist eine gute Hilfe.Meist beginnt die Entwicklung komplexer Managementstrukturen mit der Modellierung. In Bezug auf TAU und in Form von Differentialgleichungen wird das Steuerobjekt beschrieben, das vorgeschlagene Steuerungssystem konstruiert (wie zum Beispiel in der obigen Abbildung) und dann wird all dies realisiert ... nun, wer liebt was, aber der Standard de facto ist Simulink Matlab. Darin können Sie eine Struktur zusammen mit einem Modell des Steuerobjekts „zeichnen“, indem Sie „lose“ in Form von Integratoren, Addierern, Übergangsfunktionen usw. verwenden. Sie können das Paket zur Modellierung elektrischer Schaltkreise verwenden, bei denen es vorgefertigte IGBT-Schlüssel, Elektromotoren, Widerstände, Kondensatoren und mehr gibt, die den Matlab-Programmierern die Implementierung der in Form von Differentialgleichungen gezeichneten Elemente überlassen und die Steuerstruktur selbst bereits in Form von „Loseblatt“ selbst zeichnen.Und Sie können alle notwendigen Blöcke in matlab in C schreiben. Diese Methode ist insofern praktisch, als der debuggte Programmcode im Matlab einfach auf den Mikrocontroller kopiert werden kann. Normalerweise folgt diese Phase immer der „Zeichnung“, wenn die Struktur des Steuerungssystems nach einer ungefähren Forschungsarbeit zur Modellierung mehr oder weniger gebildet wird. Aber oft sind die Parameter des Objekts a priori unbekannt oder sie sind sehr ungenau bekannt - noch nie hat die im Modell arbeitende Software begonnen, auch auf dem Objekt gut zu funktionieren. Es ist auch unmöglich, "alles" in das Modell aufzunehmen - transiente Schalttransistoren, Sättigung des Magnetkreises, Wirbelströme, kapazitive Kopplung, schwebende Parameter von Temperatur und von Instanz zu Instanz, Interferenz hier und da ... Und manchmal ist das Regelungsobjekt so kompliziert,dass es einfacher ist, eine Kontrollstruktur dafür direkt in der Einrichtung zu entwickeln.
, , () - . , , «» – , , - ? ( – , « », ).


Es gibt auch eine Reihe von Produkten, mit denen Sie Programme direkt für Mikrocontroller "zeichnen" können . Einschließlich des gleichen Matlab ist es möglich, C-Code für MK berühmte Marken basierend auf dem Modell in Simulink zu generieren. Angeblich können Sie die gezeichnete Struktur des Steuerungssystems auf dem Computer im Modell zeichnen und debuggen und dann auf MK hochladen - und fertig, los geht's! Und selbst in solchen Umgebungen können Sie gezeichnete Kontrollstrukturen direkt im MK debuggen, Variablen beobachten usw. Auf den Websites solcher Produkte gibt es eine Reihe von Demo-Projekten für die komplexesten Systeme, die auf diese Weise „programmiert“ wurden. Aber da alle realen Projekte aus irgendeinem Grund immer noch mit „Händen“ programmiert werden, können wir vermuten, dass etwas mit „Zeichnen“ nicht stimmt. Aber hier ist es sogar schwierig zu beschreiben, was genau, wenn nicht so, alles ist. Das Hauptargument dagegen. Sie drücken einen Knopf in einer solchen "gut machen" -Umgebung und hoffen, dass der Codegenerator den Rest für Sie erledigt. Bei einigen einfachen Systemen, bei denen die MK-Leistung „hinter den Augen“ liegt, ist der Zeitplan für die Entwicklung sehr eng und niemand weiß, wie man in dem Unternehmen programmiert, das das Projekt gestartet hat. Dann können Sie wahrscheinlich versuchen, das Programm zu „zeichnen“. Aber wenn es nicht so funktioniert, wie es sollte, oder einen bestimmten Fehler aufweist, besteht keine Möglichkeit mehr, es zu debuggen. Und für eine komplexe Aufgabe, bei der das Zeichnen mit Händen mit MK-Leistung immer ein Problem darstellt, ist das Zeichnen nicht einfach aufgrund fehlender Ressourcen nicht geeignet. Jede Programmiersprache auf höherer Ebene (viel höher als das Zeichnen) generiert weniger optimalen Maschinencode. Und die Optimierungen auf niedriger Ebene, die ein C-Programmierer durchführen würdeEin solches System ist nicht in der Lage (Blöcke derselben Struktur mit unterschiedlicher Taktung zu berechnen, die zwischengespeicherten Werte von Sinus und Cosinus zu verwenden, die Teilungsfunktionen durch Multiplikation mit einem vorbereiteten Wert zu ersetzen oder wirklich knifflige Dinge wiesolche usw.).

Sie müssen also Ihre Software schreiben und in C schreiben. Auf die eine oder andere Weise müssen Sie Ihre Software debuggen, und dies ist für das Objekt erforderlich. Wahrscheinlich hat jeder an diesem Punkt des Artikels bereits verstanden, dass die Kontrollstruktur nur durch Betrachten der Oszillogramme interner Variablen , d. H. Durch zeitliches Betrachten der Diagramme, wie sich diese oder jene Variable in C ändert - sagen wir „die Ausgabe dieses Blocks, die fünfte von links, gleichzeitig mit den Eingaben der dritten von rechts“. Bilder wie dieses erhalten:

Dies kann nur mit dem Mikrocontroller selbst erfolgen. Sie können nicht einfach die externe Schnittstelle für die schnelle Kommunikation verwenden, den Wert einer Variablen so schnell wie möglich "hoch" senden und ein Diagramm im System der obersten Ebene erstellen. Da keine Kommunikationsschnittstelle MK Zeit hat, dies mit der Frequenz zu tun, mit der geregelte Transienten auftreten. Wenn Sie erfolgreich sind, werden alle MK-Ressourcen für die Wartung dieser Kommunikationsschnittstelle verwendet. Deshalb tun sie dies - sie zeichnen die Wellenform im RAM von MK aufnur in ein Array. Normalerweise sind viele Punkte nicht erforderlich - greifen Sie einfach zum richtigen Zeitpunkt, um Daten zu schreiben: Setzen Sie zu Beginn der Aufnahme den richtigen Auslöser. Und dann können Sie sehen, was diese oder jene Blöcke des Steuerungssystems zum Zeitpunkt des Ausfalls ausgegeben haben, wie es sich entwickelt hat, was MK versucht hat zu tun. Natürlich können nicht alle Variablen sofort auf einmal oszilliert werden - aber in der Praxis gibt es nach unserer Erfahrung beispielsweise vier Arrays mit jeweils 256 Punkten - eine Art Vierkanal-Oszilloskop mit MK-Werkzeugen. Wenn das Gerät mehr als einmal pro Woche ausfällt, ist das Debuggen kein Problem - in einem Experiment betrachten wir diese 4 Variablen, im nächsten ersetzen wir die Hälfte durch die anderen, schauen noch einmal ... bis eine fehlerhafte Einheit gefunden wird oder bis wir alles entfernen, was passiert alle Blöcke und gehen Sie nicht, um das "Filmmaterial" anzusehen, kratzen Sie den Ort, der denkt, was ...

Wie mache ich solche Oszillogramme? Welche Software kann das? Welche Kommunikationsschnittstelle leitet dies weiter? Tatsächlich ist Texas Instruments daher führend in der Produktion von Motorcontroller-Mikrocontrollern, da es alles dafür getan hat: Code Composer Studio (ihre Entwicklungsumgebung) plus Echtzeit-MK. Im Echtzeitmodus kann die Entwicklungsumgebung über das JTAG Daten anfordern und in den RAM-Speicher des MK schreiben, ohne sie anzuhalten. Nicht einmal ohne anzuhalten, aber ohne die geringste Störung seiner Arbeit. Dieser Modus ist in allen MKs der C2000-Serie verfügbar, erfordert jedoch die teure und schnelle JTAG, um ihn zu verwenden, was ihn unterstützt. Neben dem Modus selbst sollte der MK auf der Rückseite des Kabels etwas Entsprechendes haben: Die Code Composer Studio-Entwicklungsumgebung kann Wellenformen sofort erstellen.Darüber hinaus sowohl im einfachsten Modus, wenn der Benutzer den Namen der C-Variablen festlegt und ihre zeitliche Änderung im Diagramm sieht, als auch in der Umgebung Daten mit der Häufigkeit anfordert, mit der dies möglich ist (normalerweise gut, wenn Hertz 10), und im Modus der Anzeige des Arrays im Speicher in Wellenform - d.h. genau das, was oben beschrieben wurde. , , , Code Composer Studio JTAG .Gleichzeitig kann das Gerät weiterarbeiten, als wäre nichts passiert. Dieses Tool wird seit mehr als zehn Jahren erfolgreich eingesetzt, und tatsächlich wurde von Texas eine solche Debugging-Ideologie (wie es scheint, aber ich kann mich irren) vorgeschlagen. In all ihren Demo-Projekten gibt es ein Datenlogger-Modul (das Arrays von Wellenformen aufzeichnet), und die Handbücher beschreiben die Verwendung. Übrigens müssen Sie hier einen Stein in den ARM-Garten werfen. Sie haben auch einen Echtzeitmodus, und auf dieser Architektur gibt es MKs, die Elektromotoren steuern können. In keiner Entwicklungsumgebung bin ich jedoch auf eine Grafikfunktion gestoßen, selbst wenn der Echtzeitmodus unterstützt wird. Zum Beispiel ist es bei Keils Geliebten von allen sogar unmöglich, den Wert einer Variablen auf einem laufenden MK normalerweise zu ändern - es wird ständig aktualisiert,und der neue Wert, den der Benutzer im Fenster eingegeben hat, wird gelöscht ... Ganz zu schweigen von den dortigen Grafiken. Vielleicht schlägt jemand in den Kommentaren eine funktionierende Option vor? Oder ist es "niemand braucht" und funktioniert deshalb nicht?

Es gibt jedoch ein Problem mit dieser Debugging-Methode, selbst über Code Composer Studio. Und dieses Problem ist JTAG. Wie gesagt, sein Stecker ist nicht immer verfügbar und meistens bei laufenden Geräten und überhaupt nicht verfügbar. Und ehrlich gesagt ist es nicht sehr bequem, ein paar Meter vom Megawatt-Konverter entfernt zu sitzen, seine Oszillogramme zu betrachten und sehr konzentriert und konzentriert zu sein, um die Stopp-Taste des Mikrocontrollers mit der Maus zu umgehen. Was ist, wenn ein Finger auf dem Weg zittert? Wissen Sie, wie fehlerhaft das Touchpad bei Verwendung eines leistungsstarken PWM ist? Und wenn die Umgebung ausfällt? Was ist mit JTAG? Alles, Broads?
Babakh gewöhnlich


Darüber hinaus werden die Oszillogramme in der Entwicklungsumgebung in den Werten "wie sie sind" in C ohne Skalierung in verschiedenen Fenstern der Diagramme ohne benutzerdefinierte Maßeinheiten angezeigt (denken Sie daran, dass in diesem Diagramm 0,342 Volt sind, sie müssen im Kopf mit multipliziert werden 540, um physikalische Einheiten zu erhalten, und hier 1,2 sind Ampere mit einer Skala von 800A). Und unangenehm und beängstigend. Und doch können nicht alle MKs und Entwicklungsumgebungen Oszillogramme sehen! Plötzlich ist deins nicht Texas? Deshalb haben wir uns entschlossen, einen anderen Weg zu erfinden.

Unsere Entscheidung


Wenn wir kein schrittweises Debuggen benötigen, was ist dann das Problem? Wir ersetzen alles, was wir über JTAG tun, durch jede andere Kommunikationsschnittstelle und erstellen unsere eigene Top-Level-Shell, die die Diagramme nach unseren Wünschen erstellt. Gewinn!

Also haben wir es getan. Kommunikationsschnittstelle Wir haben CAN gewählt, Protokoll - CANopen. Warum? CAN ist eine sehr gute industrielle Kommunikationsschnittstelle, rauschbeständig, verfügt über Hardware-Arbitrierung, zerstörungsfreien Zugriff auf den Bus, Hardware-Bestätigung der Pakete und gleichzeitig nur zwei Drähte und Masse. Dies ist besser als alle RS und weniger monströs als Ethernet (was bei Motorcontrol MK eher exotisch ist). Warum kann öffnen? Tatsächlich gibt es zwei gängige Protokolle für CAN: J1939 („Automobil“) und CANopen (Werkzeugmaschinen, Automatisierung, Sensoren usw.). Es gibt keinen großen Unterschied zwischen ihnen, aber CANopen schien uns flexibler zu sein, also haben wir es in unserem eigenen Stack (Treiber) implementiert. Wer nichts über CANopen weiß - seine Hauptfunktion besteht, wie viele Protokolle für MK, darin, den Zugriff auf das Objektwörterbuch (Liste der Variablen in C MK) an einer bestimmten Adresse zu ermöglichen. Dies kann auf zwei Arten geschehen:SDO-Nachrichten vom Typ Anfrage-Antwort sowie PDO-Nachrichten in Form konstanter Sendewerte nach Timer oder Ereignis (legt die obere Ebene fest, was wann gesendet werden soll). Es gibt auch verschiedene Servicedienste wie Notfallnachrichten, Nachrichten über das Vorhandensein von Geräten im Netzwerk (Herzschlag) usw. Ein Assistent im Netzwerk ist nicht erforderlich: Wer senden möchte, an wen er möchte, akzeptiert.

Wir haben den CANopen-Stack nicht nur für MK, sondern auch für den Computer in Form einer Bibliothek erstellt. Und bereits auf dieser Basis hat Windows eine eigene Top-Level-Umgebung geschrieben. Zuerst haben sie einfach auf die Variablen des Objektwörterbuchs zugegriffen, so dass die Einstellungen des Steuerungssystems angezeigt und geändert werden konnten (und es gibt übrigens Hunderte davon!). Dann haben sie Diagramme erstellt, indem sie den Objektwörterbuchparameter regelmäßig über das Netzwerk abgefragt und dann das Laden von Wellenformen aus MK-Arrays hinzugefügt haben (Darüber hinaus wird die Auswahl des Oszillographen auch anhand variabler Objekte des Wörterbuchs getroffen). Wir haben alles gleich, was das Debuggen über JTAG ermöglicht. Oder nicht? Nein, denn ich brauchte auch die Funktion, die Software über CAN zu aktualisieren. Trotz des Vorhandenseins eines CAN-Bootloaders in Texas MK haben wir uns entschlossen, einen eigenen zu erstellen, da der Standard nicht CANopen war und den Betrieb anderer Geräte im Netzwerk während des Nähens beeinträchtigen könnte, sowie die Geräte die Firmware stören könnten. Darüber hinaus gab es Probleme mit der Fehlerkorrektur und dem Verlust von Nachrichten (obwohl CAN sehr gut ist, stürzt es manchmal ab und Firmware ist eine sehr wichtige Sache, um keine Überprüfung durchzuführen oder erneut zu versuchen, ein defektes Teil zu senden). Deshalb haben wir unseren „Programmierer“ über das CAN-Netzwerk implementiert , jedoch im Rahmen des CANOpen-Protokolls. Jetzt ist alles. Jetzt konnten wir JTAG vollständig aufgeben und es nur einmal verwenden, um einen neuen MK zu programmieren.

Gleichzeitig eröffnete dieser Ansatz neue Debugging-Horizonte, die wir zuvor noch nicht gesehen hatten. Da wir die Top-Level-Umgebung nicht nur für Programmierer, sondern auch für „normale Leute“ erstellt haben, haben wir alle Parameter in russischer Sprache erstellt und für jeden Parameter eine Dokumentation für das Installationsprogramm erstellt (die Dokumentation ist nicht die Umgebung, sondern natürlich das Gerät). Und es war von Vorteil: Wenn jetzt ein Problem mit dem Laufwerk auftritt, müssen Sie den Entwickler nicht mehr "ziehen"- In einigen Fällen können Kundendienstmitarbeiter Probleme unabhängig diagnostizieren. Jetzt können wir eine E-Mail erhalten wie: „Unser Laufwerk machte manchmal seltsame Geräusche. Ich schaute auf das Oszillogramm des Positionssensors, das habe ich gesehen (Bild). Ich habe die Erdung des Bildschirms überprüft, sie ist abgefallen, ich habe gelötet und alles hat so funktioniert, wie es sollte! “ Und absolut keine Notwendigkeit, irgendwohin zu gehen oder zu fliegen! Die zweite "Entdeckung" - wenn es ein Problem gibt, bitten wir den Kunden, den Computer an das Gerät anzuschließen und die Remotedesktopsteuerung über das Internet zu ermöglichen - wir starten unsere Top-Level-Umgebung, wir oszillieren alles selbst, wir korrigieren die Parameter / Firmware / wir sagen, dass es kaputt gegangen ist - Gewinn! Auch hier müssen Sie nirgendwo hingehen (Hauptsache, das Internet sollte in der Einrichtung sein, zumindest über ein Mobilfunknetz).

Im Laufe der Jahre hat dieses Top-Level-Programm kleine Funktionen wie Pilze erworben (ein natürlicher Prozess für die von ihnen verwendete Software). Dies umfasst das Arbeiten mit dem Geräteabsturzprotokoll und das Speichern / Laden eines Nuggets aller Parameter in eine Datei auf dem Computer sowie das Konfigurieren des Bedienfelds des Geräts a la "Control Panel", das Verwalten von Netzwerkprotokollen in einer Datei und das Zurückgeben des CAN-Netzwerkverkehrs über TCP / IP. und automatische Mehrfach-Firmware / Parametrisierung ähnlicher Geräte im Netzwerk (wenn es Dutzende von Geräten gibt, ist es faul, alles mit den Händen zu flashen, Sie benötigen ein Skript) usw.

Nun, jetzt etwas Werbung. Jetzt ist es bereits ein sehr leistungsfähiges Tool (wir haben es so viel wie UniCON genannt), das bei einigen Aufgaben funktionaler aussieht als ähnliche Software berühmter Marken zum Einrichten ihrer Laufwerke und Geräte. Darüber hinaus ist es nicht an ein bestimmtes Gerät gebunden - Sie können mindestens einen elektrischen Antrieb, mindestens einen Herd, mindestens ein Ladegerät konfigurieren - nur das Wörterbuch der Objekte ändert sich. Jetzt in unserem Unternehmen sehen wir keine Möglichkeit, ein neues komplexes Projekt ohne unsere CANopen-Debugging-Tools erfolgreich abzuschließen. Um mit UniCON arbeiten zu können, müssen Sie nur unseren CANopen-Stack in MK einbetten. Danach verwandelt sich MK in ein digitales Labor. Wir sind sicher, dass alle Firmen, die ernsthafte Kontrollsysteme für MK herstellen, über ähnliche Debugging-Tools verfügen. Wir bieten unsere CANopen-Lösung jedoch in Form eines unabhängigen Softwareprodukts an, da sie universell in Bezug auf die Unabhängigkeit von den Funktionen des Geräts implementiert ist. Derzeit haben wir den CANopen-Stack mit den beschriebenen erweiterten Funktionen für den Texas Instruments C2000 MK, dessen ARM-Mikrocontroller (z. B. die Concerto-Familie) und für den K1921VK01T des NIIET OJSC implementiert. Wenn Sie ein Steuerungssystem für einen elektrischen Antrieb oder ein anderes komplexes Steuerobjekt entwickeln müssen, laden wir Sie daher zur Zusammenarbeit ein.



PS
In den Kommentaren freuen wir uns auf Kritik an der Form "Also gibt es *** - es macht alles gleich und kostenlos." Da wir schon lange nach ähnlichen Debugging-Tools für ARM für die Funktionalität gesucht haben, sind wir sogar auf berühmte Entwicklungsumgebungen gestoßen.

UPD: Dank der Kommentare von Indemsys , olekl und LeonidLeninWir haben Diagrammfunktionen in Entwicklungsumgebungen für ARM Keil und STMStudio gefunden, wenn wir über SWD gearbeitet haben. Sie wissen jedoch nicht, wie ein Array von Daten aus dem MK-Speicher in Form eines Diagramms angezeigt werden soll. Dies ist genau das, was zur Beobachtung der sich schnell bewegenden Prozesse von Steuerungssystemen erforderlich ist (STMStudio kann jedoch Diagramme mit einer Abtastzeit von etwa 1 ms mithilfe von Daten-Caching anzeigen). Interessant ist auch das NXP FreeMaster-Tool - in Beschreibung und Zweck ist es unserer UniCON-Entwicklung sehr ähnlich, aber mit seinen eigenen Eigenschaften. Darüber hinaus verfügt der Segger J-Link über ein eigenes Werkzeug zur Anzeige von Wellenformen .

Source: https://habr.com/ru/post/de389123/


All Articles