Hi! Ich habe ein gewerblich genutztel Projekt mit einem AVR (Atmega128). Die Firmware ist über die Jahre immer ausgereifter geworden und behandelt inzwischen alle aus der Praxis denkbaren Fehler-Szenarien recht zuverlässig. Eines stört jedoch: Das Gerät enthält eine "Logic", die das vom Bediener wahrnehmbare Geräte-Verhalten darstellt. Genau dieser Teil soll immer wieder ein bisschen anders sein: - leicht anderer Ablauf - ein HW-Zustand wird berücksichtigt / ignoriert Darum die Frage: Kann man so ein Legacy-Projekt im nachhinein noch mit einer SPS-Fähigkeit ausstatten? SPS: - soll user definierbare Logik ausführen - per grafischem PC-Programm durch User editierbar - eigene HW (siehe Bild) kann in PC-Editor als selbst definierter Block eingebunden werden Optimal wäre natürlich, wenn es ein Stück C-Code + PC-Tool gibt, die über UART mit einander reden können. für mich wäre es aber auch akzeptabel, die vorhandene HW mit einem embedded AddOn-Board zu versehen, auf dem dann die SPS + PC-Anbindung läuft. max. Footprint für SPS auf AVR: - 30k Flash - 4k RAM - Zykluszeit biszu 100ms ok, da Schnelles direkt in der AVR-FW erledigt wird. Habt Ihr da Tips?
Man kann, ist aber ziemlich aufwändig. Möglichkeit 1: Du schreibt einen Code-Generator der aus dem Programmablaufplan (möglicherweise UML) ein C-Programm erzeugt, welches dann in eine binäre Firmware für den AVR compiliert wird. Möglichkeit 2: Du schreibt einen Interpreter, der vom AVR ausgeführt wird. Das zu interpretierende Programm wird von einem austauschbaren Speicher (z.B. SD Karte) geladen. Möglichkeit 3: Du wechselst auf einen anderen µC, der Code aus dem RAM ausführen kann. Dann kann die Firmware aus einem festen Teil bestehen, die änderbaren Funktionen werden von extern ins RAM geladen und dort ausgeführt. Das wird man dann warscheinlich mit einem Code-Generator kombinieren wollen. Beides ist nicht mal eben so an einem Wochenende erledigt, der Aufwand lohnt sich nur bei Anwendung in größerer Stückzahl.
Also PC-seitig bin ich um jeden Tip dankbar, der auf was fertiges verweist. zu Deinen Vorschlägen: 1) die FW soll beim User unverändert laufen, will auch keine libs etc. von der FW rausgeben und der User soll seine Logik selbst verändern können. 1) ist also eher ungeeignet. 2)Hab ich schon drüber nachgedacht, dazu kommt aber noch die Integration in ein PC-Tool, das dann Edit & Sync zum uC macht. Das wird dann aber schon ne größere Nummer. Sowas würd ich lieber zukaufen. Hast du da einen Tip? 3) Sehr interessanter Vorschlag, den ich mir für zukünftige Projekte im Hinterkopf behalte. Vorteil: der Code läuft dann auch sehr schnell (muss aber dennoch gegen libs gebaut werden). Meine derzeitige HW im Feld will ich lediglich um ein (zu entwickelndes) Steckmodul oder nur FW aufrüsten. Und auch hier braucht man noch die PC-Seite. Ich find sowas hier einen guten Ansatz: www.microsps.com Nur da bekommt man eben einen monolithischen uC mit FW .. ohne Intrgration ins eigene Projekt. kennt jemand noch andere Möglichkeiten, sodass ich meine HW so lassen kann und PC-Tool mit dazu bekomme?
SPS_auf_uC schrieb: > Genau dieser Teil soll immer wieder ein bisschen anders sein: > - leicht anderer Ablauf > - ein HW-Zustand wird berücksichtigt / ignoriert Parametrierbar machen. Schau, was in der Vergangenheit warum und wie geändert wurde, das alles abstrahieren, und parametrierbar machen. Vor allem wenn man schon viele Anpassungen gemacht hat, müssten genügend Erfahrung vorliegen. Am Anfang erscheint das oft unmöglich, aber mit etwas nachdenken geht das. Was für Änderungen sind das denn genau? Erzähl mal ein wenig...
> Sowas würd ich lieber zukaufen. Hast du da einen Tip?
Nein, leider nicht.
SPS_auf_uC schrieb: > Eines stört jedoch: > Das Gerät enthält eine "Logic", die das vom Bediener wahrnehmbare > Geräte-Verhalten darstellt. > Genau dieser Teil soll immer wieder ein bisschen anders sein: > - leicht anderer Ablauf > - ein HW-Zustand wird berücksichtigt / ignoriert > > Darum die Frage: > Kann man so ein Legacy-Projekt im nachhinein noch mit einer > SPS-Fähigkeit ausstatten? Natürlich. > max. Footprint für SPS auf AVR: > - 30k Flash > - 4k RAM > - Zykluszeit biszu 100ms ok, da Schnelles direkt in der AVR-FW erledigt > wird. > > Habt Ihr da Tips? Du brauchst es bloß zu programmieren, wobei die Hauptarbeit auf dem PC zu erledigen ist. Auf µC-Seite sind nur zwei Sachen zu implementieren: 1) Kommunikation mit dem Host zum Download des Programmstücks und dessen Ablage im Flash. 2) Aufruf der entsprechenden Programmstücke während der Laufzeit. Alles in allem: Kinderkram, reine Fleißarbeit. Genau das dürfte auch dein Problem sein, mit Fleiß haben die C&P-Programmierer es ja üblicherweise nicht so...
Hi Die Menü-Reihenfolge kann man ja durch eine Art Zähler/ID anpassbar machen. Wenn ein Menü nicht mehr zur Verfügung stehen soll, eine Null rein, weg/nicht mehr anwählbar. Wenn es nur Ja/Nein Entscheidungen sind (Menü sichtbar, HW-Zustand wird berücksichtigt), sollte eine ID/Funktionsbyte schon gehen. Schreib Mal ein Beispiel, daß wir nicht so abstrakt herum raten müssen. MfG
:
Bearbeitet durch User
@Automatisierungsexperte > Parametrierbar machen. Schau, was in der Vergangenheit warum und wie > geändert wurde, das alles abstrahieren, und parametrierbar machen. Den Weg hab ich versucht mit der Erkenntnis, dass man damit die Varianten abbilden kann, die man heute kennt - nicht aber die Kreativität der Leute und ihrer Ideen in der Zukunft. Vorteil: - FW-Verhalten kann in Grenzen gehalten werden - FW ist gut testbar Nachteil: - FW wird über die Zeit immer unübersichtlicher - Die Konfiguration FW-interner Schalter wird auch für den User schnell unübersichtlich und damit schwer bedienbar @c-hater > reine Fleißarbeit korrekt! Damit eine grafische Software zur Formulierung eine "Funktionsplans" (FUP) + Fehlertolerante-Anbindung an uC nutzerfreundlich funktioniert, ist eine Menge Fleißarbeit nötig - zumal das andere sicher schon ausgereifter hinbekommen haben. Im Hobby-Bereich ist das per Definition anders, aber im gewerblichen Bereich muss man sich schon fragen, ob man sich solche Fleißarbeit leisten will. @ho-bit-hun-ter > Schreib Mal ein Beispiel, daß wir nicht so abstrakt herum raten müssen. Ok, Beispiel is eine Statemachine: DI(a) = digital Input abstrahiert aus komplexen Sensor-Daten DI(d) = digital Input aus abstrakten Daten-Quellen DO = digital Output - prüfe Füllstand DI(a) - hole Parametrierung aus dem Speicher - prüfe auf Versorgung mit validen Parametern DI(d) - errechne zu errechendes Volumen (je nach Parametrierung) - rechne Volumen in erwartete Sensor-Daten um - schalte Pumpe ein (DO) - zeitabhängig muss nun eine Reaktion am Sensor kommen, sonst Fehler - schalte Ventil an (DO) - innherhalb einer Zeit muss zusätzliche Sensor-Reaktion kommen, sonst Fehler - je nach aktuellem Stand der Sensor-Daten muss die Pumpleistung erhöht/reduziert werden, um in einem Sollwert-Korridor zu bleiben - Sensor-Wert des Gesamt-Prozesses erreicht? -> Dann schalte alles ab - bei Fehler: alles abschalten & zugehörigen Fehler ausgeben Themen wie Visualisierung (Menu-Texte, LEDs, Fehlermeldungen) und Datalogging will ich als SystemService außerhalb dieser Business-Logic halten. Die Frage ist also, gibt es da Frameworks / Automatisierungs-Baukästen, an die ich mein System anbinden kann (idealerweise über UART / SPI). Wobei mein Projekt closed source ist .. und auch bleiben soll.
Dise Projekte befassen sich mit SPS auf uC Ebene, habe jedoch alle gemein, dass mit dem Ergebnis nur ein einziger uC und seine IOs angesteuer werden können: - Flowcode - lunaavr - picaxe - www.microsps.com ... ist alles schon dicht dran mit grafischem FUP/KOP-Editor, jedoch alles ohne Integrations-Möglichkeit in ein bestehendes Projekt :-/
Kennt jemand integrierbare Soft-SPS-Projekte? wie ganz am Anfang beschrieben wären für mich 2 Varianten interessant: 1) SoftSPS in den vorhandenen Atmega128 integrieren 2) SoftSPS auf separate uC laufenlassen & zyklisch Daten mit Atmega128 austauschen (dazu müsste halt ein Huckepackboard her) Viele Grüße
Die Frage war schon von Anfang an klar. Ich schätze nur, daß Dir da nieman so direkt weiter helfen kann, wie du hoffst.
SPS_auf_uC schrieb: > Den Weg hab ich versucht mit der Erkenntnis, dass man damit die > Varianten abbilden kann, die man heute kennt - nicht aber die > Kreativität der Leute und ihrer Ideen in der Zukunft. Naja, es gibt schon einen Unterschied zwischen "parametrieren" und "auswählen". Du hast vermutlich letzteres gemacht bzw. Dich davon zu sehr beeinflussen lassen. Eine Aneinanderreihung von Varianten aus der Vergangenheit, erzeugt keine Parametrierbarkeit wie ich sie meine, sondern nur eine Auswahlmöglichkeit. Der Trick ist, aus den schon bekannten Optionen zu abstrahieren. Dazu müssen die Gemeinsamkeiten der schon umgesetzten Optionen gesucht werden, und ganz wichtig, aktiv nach noch nicht umgesetzten Optionen suchen die denkbar wären. Und aus dieser Sammlung von Optionen, realen und gedachten, kann man die Gemeinsamkeiten und Konzepte verallgemeinern, und zwar so, dass schon umgesetzte und gedachte Optionen nur noch eine Spezialisierung der Verallgemeinerung sind. Das klingt erstmal abstrakt und unmöglich, geht aber bei Systemen die immer aus den gleichen Teilen gebaut werden, sehr gut. Dein Gerät arbeitet im Kern ja immer gleich. Als Ideengeber schau Dir mal ordentliche Frequenzumrichter und Servoregler diverser Hersteller an. Diese Regler sind ein einziger, großer Signalflussplan und Du kannst an vielen verschiedenen Stellen virtuelle Schalter durch Parameter umlegen, und so eine extreme Parametrierbarkeit erreichen.
Stefan U. schrieb: > Die Frage war schon von Anfang an klar. Ich schätze nur, daß Dir da > nieman so direkt weiter helfen kann, wie du hoffst. Es gab ja hier im Forum auch schon genau solche Projekt-Ideen: "MINI-SPS mit AVR od. ARM" 2009 Beitrag "MINI-SPS mit AVR od. ARM" Hätte ja auch gut sein können, dass jemand dazu auch Anbieter kennt. Ich würde mir auch "Bezahl-Lösungen" anschauen. @ Automatisierungsexperte: Ja, hab die Idee schon verstanden. Damit kann man die Anwendungsfälle abdecken, die einem heute einfallen. (wie auf dem Foto) Ich hab die Erfahrung gemacht, dass die User meine Hardware auch gern "zweckentfremden" und dann in Szenarien einsetzen wollen, an die ich in der Software-Parametrierung noch gar nicht gedacht habe. Genau das will ich mit einer freieren Programmierbarkeit erreichen (solange meine Aufbauvorschriften und Anwendungsfeld nicht verlassen wird).
SPS_auf_uC schrieb: > Damit kann man die Anwendungsfälle > abdecken, die einem heute einfallen. (wie auf dem Foto) Kleiner gehts nicht? Probiere es mal mit anständiger Auflösung und dann als PNG. Dann kann man vielleicht auch irgendetwas erkennen.
Hab ich von einer Siemens Webseite... gab's dort Nut in dieser Auflösung
Es gibt SPS Steuerungen, auf der man mehrere Tasks (SPS Programme) gleichzeitig laufen lassen kann. Damit könntest Du deine Programm laufen lassen und der Kunde kann für sich auch einen Task auf machen. Kommunikation zwischen den Programmen geht mittels "Globalem Datenbereich". Damit brauchst Du Dein Programm nicht veröffentlichen und jeder kann noch sein individuelles Programm einspielen. Eingänge können von jedem Task gelesen werden, Ausgänge sollten nur von einem gesetzt werden. Einen ordentlichen Editor bietet die Firma natürlich auch. https://www.bachmann.info/produkte/steuerungssystem/ Ist ein Industrieprodukt und kostet entsprechend Geld.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.