Ich mache mir gerade Gedanken, was für eine Art von einfacher High-Level Programmiersprache sich eignen würde, um eine Haussteuerung zu beschreiben. (Bitte nicht verwechseln mit der eigentlichen Programmierung der Mikrocontroller, der Firmware.) Es geht um eine Beschreibung der gewünschten Abläufe, woraus eine Art Compiler als PC-Programm dann ladbare Tabellen erzeugen soll. Mit diesen Tabellen gefüttert verrichtet eine Steuerung dann ihren Dienst, ohne das die Firmware dieser verändert werden muß. Vermutlich wäre das eine Sprache wie für eine SPS, womit ich mich aber nicht auskenne. Der klassische Ablauf ist daß externe oder interne Ereignisse auftreten (Schalter betätigt, Uhr abgelaufen), in Reaktion darauf Zustände (Merker) und Bedingungen bewertet werden und schließlich Kommandos ausgespuckt werden und daraus evtl. wiederum Ereignisse erzeugt werden. Das dreht sich dann solange bis wieder Ruhe ist. Klassische sequentielle Sprachen wie C, Basic, etc. kommen da nicht in Frage. Ist alles sehr parallel, es kann ja jederzeit jedes Ereignis auftreten. Sieht vielleicht eher wie eine HDL-Sprache aus. Mein Fragehintergrund ist das ich im PHC-System die vom Hersteller gelieferte monolithische GUI-Software gern schrittweise mit einer Open-Source Lösung ergänzen würde. Wir kennen mittlerweile den Aufbau der internen Tabellen. Nächster Schritt wäre so ein Compiler für eine Beschreibungssprache, die hohe Schule dann ein grafischer Drag+Drop Generator. Kennt jemand Ansätze, wie solche Anlagen programmiert werden können?
Als "Beschreibungssprache" kämen AWL,FUP bzw. CYC in Frage - die Sprachen der SPS halt. Warum keine Basic-Variante? Das Problem ist doch nicht, welche Sprache Du zur Funktionserstellung bereithalten möchtest, sondern dies (Quasi)Multitasking-fähig auf dem PHC-System zum laufen kriegst.
also wenn du ne sps spreache verwenden kannst dann geht das aber mit c allemal also nimm c
@ Jörg Hohensohn (idc-dragon) >Klassische sequentielle Sprachen wie C, Basic, etc. kommen da nicht in >Frage. Ist alles sehr parallel, es kann ja jederzeit jedes Ereignis >auftreten. Ja und? Wir reden doch nicht über Nanosekunden Paralleltiming in einer CPU, sondern bissel Bitgeklaper im Millisekundentakt. Eine einfache Schleife mit Polling tuts da locker. Womit wir wieder bei BASIC & Co wären. MFG Falk
Ich glaube ihr versteht mich nicht... Es geht um die Beschreibungssprache, nicht um die Ausführung. Diese Sprache kennt keine Ausführungszeiten, soll möglichst simpel sein, nur was für diese Aufgabe gebraucht wird. Ferner wären sowas wie Makros oder Templates gut, um Vorlagen für wiederkehrende Aufgaben bauen zu können. Dafür muß ich (oder wer auch immer) dann eine Art "Compiler" schreiben, der die Tabellen für die Steuerung erzeugt. Ziel der Übung sind diese Tabellen, die Sprache ist ein Werkzeug für Menschen, diese zu erstellen.
Hallo, ob es dafür eine fertige Lösung (Sprache) gibt weiss ich nicht. Wahrscheinlich mußt du dir mit Hilfe einer Sprache wie C oder Basic selbst so eine Sprache erstellen. Wenn du denn unbedingt eine Sprache benötigst. Schau mal auf diese Seite http://www.mindviewinc.com und lade dir dieses Buch "Thinking in Patterns". Im Abschnitt "Multiple languages" wird beschrieben, wie man sich einfache Sprachen selbst erstellen kann. Hier ein kurzer Auszug aus dem og. Buch, der deine Problemstellung trifft: Interpreter motivation If the application user needs greater run time flexibility, for example to create scripts describing the desired behavior of the system, you can use the Interpreter design pattern. Here, you create and embed a language interpreter into your program. gruss ralf
Die Frage habe ich mir auch schon gestellt... Du kannst das ganze evtl. als Signalflussplan darstellen, mit schönen Kästchen und Pfeilen von den einen Blöcken zu den anderen, aber das ganze dann für einen Mikrocontroller verständlich zu machen dürfte sehr schwer sein. Vorteil: Mit einer hochsprachen-ähnlichen Programmierung wie C oder Basic kann ein Laie eher wenig anfangen, Blöcke sind wohl einigermaßen selbsterklärend. Nachteil: Blöcke können meist nicht so viel Umfang bieten wie eine textorientierte Programmierung. Schau dir mal die C-Control an, die kann man grafisch oder in Basic programmieren... Die nächste Frage ist ob du eine Skripsprache haben willst oder das ganze vorkompiliert auf den Controller laden willst. Als Skriptsprache müsstest du auf dem Controller einen Interpreter laufen lassen, was wohl sehr langsam und speicherhungrig ist. Wenn du kompilierst brauchst du auch ne vernünftige Möglichkeit das in dein bestehendes Programm einzufügen. Ist ein schwieriges Thema - wenn du einen Ansatz hast, sag bescheid, würde mich auch interessieren. Auf jeden Fall brauchst du nen Parser, und der allein dürfte schon sehr viel Aufwand bedeuten (allein zwecks Syntaxprüfung etc.)
>Es geht um die Beschreibungssprache, nicht um die Ausführung. Diese
Als "Beschreibungssprache" kämen AWL,FUP bzw. CYC in Frage - die
Sprachen der SPS halt - nicht zu vergessen AS für Abläufe ;-)
@Ithamar: Die Diskussion läuft derzeit im PHC-Forum weiter, siehe hier und den dort verlinkten Vorläuferthread: http://phc.foren-city.de/topic,337,-eigene-programmiersprache-fuer-phc.html Was auf dem Controller läuft ist nicht das Problem (eine Tabellenlösung), das gibt es ja schon. Parser generieren die Tools yacc oder Bison. @GLT: Danke, habe ich mir angesehen. Ist leider doch zu verschieden, viel konnte ich da nicht abgucken.
Jörg Hohensohn wrote: > Es geht um die Beschreibungssprache, nicht um die Ausführung. Diese > Sprache kennt keine Ausführungszeiten Sicher hat diese Sprache eine Ausführungszeit. In einer SPS arbeitet eine normale CPU und die Beschreibungssprache ist eigentlich ein Interpreter der selbst in C geschrieben ist. Die Abarbeitung ist nicht wirklich parallel
Hallo @Jörg einige Gedanken zu deiner Frage -Grafische Programmierung so eine Art Labview for PHC (Sehr aufwändige Entwicklung sollte man nicht das -teuere- "Orginal" verwenden) - Kennst Du die Seite http://www.microsps.com/ und deren grafische Programmierung Von beiden Methoden halte ich nicht all zu viel zwecks Doku und nachvollziehbarkeit wen jemand drittes das erstellt hat. Ein für mich neuer Ansatz wäre zun zunächst mal eine (mächtige) Funktions-Libreary in einer Text-Orientierten Sprache erstellen Das eigentliche Benutzerprogramm wird dann mit (grafischen) UML-Tools erstellt. - Stichworte/ Schlagworte Sequenzdiagramme, Zustandsdiagramme ("Sequence diagram und Activity Diagram") Das ist nur mal ein Adhoc Gedanke der nach viel Arbeit riecht. Viele Grüsse Achim Ps.: Meine Hochachtung zu deinem vorgestellten OpenPHC Projekt.Solltest Du da jemals Module verkaufen (Hutschienenausführung) hätte ich da sehr großes Interesse um mal damit zu "spielen". Hast du sowas geplant?
Sorry vergessen: http://sdedit.sourceforge.net/multithreading/example/index.html in der Art. daraus dann deine Tabellen generieren.......
@Sucher: > Solltest Du da jemals Module verkaufen (Hutschienenausführung) hätte ich da > sehr großes Interesse um mal damit zu "spielen". Hast du sowas geplant? Hast du den Thread mit der Platinen-Sammelbestellung gesehen? Je nach Wunsch werde ich die auch bestücken lassen, dann ist es nicht mehr weit zum Modul, die beiden Platinen verbinden und die Gehäuseausbrüche feilen/fräsen. Ein Platinensatz wird ca. 6-7€ kosten, bestückt weiß ich noch nicht.
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.