Forum: Mikrocontroller und Digitale Elektronik AVR-Projekt mit SPS aufrüstbar?


von SPS_auf_uC (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Stefan F. (Gast)


Lesenswert?

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.

von SPS_auf_uC (Gast)


Lesenswert?

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?

von Automatisierungsexperte (Gast)


Lesenswert?

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...

von Stefan F. (Gast)


Lesenswert?

> Sowas würd ich lieber zukaufen. Hast du da einen Tip?

Nein, leider nicht.

von c-hater (Gast)


Lesenswert?

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...

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

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
von SPS_auf_uC (Gast)


Lesenswert?

@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.

von SPS_auf_uC (Gast)


Lesenswert?

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 :-/

von SPS_auf_uC (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

Die Frage war schon von Anfang an klar. Ich schätze nur, daß Dir da 
nieman so direkt weiter helfen kann, wie du hoffst.

von Automatisierungsexperte (Gast)


Lesenswert?

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.

von SPS_auf_uC (Gast)


Angehängte Dateien:

Lesenswert?

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).

von Forist (Gast)


Lesenswert?

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.

von SPS_auf_uC (Gast)


Lesenswert?

Hab ich von einer Siemens Webseite... gab's dort Nut in dieser Auflösung

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

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
Noch kein Account? Hier anmelden.