IEC Timer für Arduino?

Hi,

mal ganz was anderes.

Gibt es eigentlich ne library für IEC-Timer?
Ihr kennt das sicher aus der Steuerungstechnik. Also TON, TOFF, TP...

Hab mir das schon einige Male gewünscht, um mich nicht immer mit millis() rumschlagen zu müssen.

Weiß nicht....
Sollte sich aber schnell bauen lassen....
Ist ja irgendwie nicht so sehr kompliziert.

combie:
Sollte sich aber schnell bauen lassen....
Ist ja irgendwie nicht so sehr kompliziert.

Für euch Profis wohl kein Problem :grin:

Wie…?
Du weißt doch, was du haben willst!

Plan machen, umsetzen, fertig!
:slight_smile:

Ich hab dir mal eine Lib gebaut.
Kennt bis jetzt nur TON Timer und Negierer.
Das reicht aber schon um zu blinken.

:slight_smile: Was noch nicht fertig ist, ist ja immerhin schon mal ein Anfang :slight_smile:

iecTimer.zip (2.24 KB)

Hey super,

danke schon mal.

Du hast das ja voll 1:1 nachgebaut :slight_smile:
Mit IN, Q, PT, und ET.

Wozu hast du noch das NOT gebastelt?

Ich hatte schon angefangen an der Bounce2 rumzubasteln.
Die hat schon Ansätze von dem, was ich brauche. Auch das mit dem "rose" und "fell" (also steigende und fallende Flanke). Geht halt nur mit Inputs vom Arduino.
Aber mich stellts schon mit solchen Sachen auf:

    this->pin = pin;

Da fehlts mir halt voll an den Basics.

Der Code ist für C++11 geschrieben, oder?

Konstruktoren erben geht in C++0x nicht. Ist aber extrem nützlich wie man hier sieht. :slight_smile:
Explicit mit Multi-Parameter Konstruktoren ist auch ein C++11 Feature. In C++0x wird das ignoriert.

Serenifly:
Der Code ist für C++11 geschrieben, oder?

Welchen Code meinst du??

Der Rest deines Posts ist wieder ein Rätsel für mich. Da versteh ich nur die Füllwörter.
Und das ärgert mich wie die Sau!!

Das von combie natürlich

Du hast das ja voll 1:1 nachgebaut :slight_smile:
Mit IN, Q, PT, und ET.

Möglichst dicht dran…

War nicht ganz schwierig, das für dich zurecht zu stückeln.
Den Kram habe ich in etlichen Versionen auf der Platte.
Nichts davon stellt mich richtig zufrieden…
Das wird noch…

Wozu hast du noch das NOT gebastelt?

Um die Verknüpfung zwischen den beiden Timern aus der anwendung() raus zu bekommen.
(siehe Unterschied Blink1/Blink2)

Jede SPS kennt die Negierung von Merkern/Inputs.
Darauf könnte man verzichten(könnte man verbergen), wenn man eine ordentliche Firmware (Bytecodeinterpreter) und einen passenden Compiler baut.
Da bin ich zu faul für.

Da fehlts mir halt voll an den Basics.

Das kommt…

Ansonsten, glaube ich, dass die meisten der Arduino Programmierer Ablaufsteuerungen bauen.
Allen, auch mir, würde es gut tun sich an die Verfahren, welche bei den SPS/PLC verwendet werden zu orientieren. Da stecken mittlerweile Jahrzehnte an Erfahrung drin.
SPSen werden in Sicherheitskritischen Bereichen eingesetzt. Man muss dem TÜV die Stabilität/Reaktionsfähigkeit nachweisen.

Die SPS Verfahren erscheinen einem uneingeweihtem recht umständlich, gar absurd, sind aber sehr Modular und Robust. Es ist allerdings eine ganz andere Sichtweise, als die Arduino typische C/C++ Sicht.

Der Code ist für C++11 geschrieben, oder?

Ja (aus Versehen).
Irgendwann ist mein C++11 Bedürfnis entstanden.
Dann dem Arduino bei gebogen.
(ich übe noch)

Der Rest deines Posts ist wieder ein Rätsel für mich. Da versteh ich nur die Füllwörter.

Es dreht sich um die verschiedensten C/C++ Dialekte. ca. 40 Jahre C haben gereicht um da einige Versionen entstehen zu lassen. Es waren auch Irrwege dabei…

Ansonsten, glaube ich, dass die meisten der Arduino Programmierer Ablaufsteuerungen bauen.

Richtig. Auch ich komme mehr von der SPS-Seite: S7, Codesys & Co.
Drum denke ich auch auf der Schiene. Meine Arduinos nutze ich zur Hausautomatisierung.
Wobei die Steuerungsgeschichte auch immer mehr Hochsprachen implemetiert, da schliesst sich dann wieder der Kreis.
C/C++ hab ich nie richtig gelernt. Musste mich zu meiner Studienzeit mit Pascal rumärgern.
Ich würde mich auch gerne tiefer einarbeiten, aber mir fehlts dazu voll an der Zeit.

Aber gerade mit so einem Halbwissen ist ein Arduino m.E. genau das richtige für mich. Es gibt eigentlich für jede Aufgabenstellung eine library, und ich muss nur noch etwas Code drum herum schreiben. Das krieg ich meistens hin. Und wenn nicht, dann helfen mir Leute wie du und Serenifly weiter.

combie:
Ja (aus Versehen).
Irgendwann ist mein C++11 Bedürfnis entstanden.

Ist ja nichts falsch dran. Wie gesagt Konstruktoren erben ist wesentlich schöner als die Parameter umständlich über eine Initialisierungsliste durchzureichen.

Man muss es halt extra aktivieren, sonst kompiliert es nicht, aber das dauert nur ein paar Sekunden.

Serenifly:
Man muss es halt extra aktivieren, sonst kompiliert es nicht, aber das dauert nur ein paar Sekunden.

Hab nichts extra eingestellt, und konnte das Beispiel von combie übersetzen???

Wie gesagt Konstruktoren erben ist wesentlich schöner ...

Definitiv!

Hab nichts extra eingestellt, und konnte das Beispiel von combie übersetzen???

Erstaunlich....

combie:
Erstaunlich....

Wie meinst du das? Ist jetzt keine Verarsche???

Komisch. Wenn ich den Compile-Schalter aus platform.txt entferne kommen bei mir Fehler

warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat]

error: 'nullptr' was not declared in this scope

Bei Konstruktor-Vererbung kommt allerdings nur eine Warnung und er behauptet es wäre "enabled by default":

ArduinoTest2.ino:15:19: warning: inheriting constructors only available with -std=c++11 or -std=gnu++11 [enabled by default]

Kompilieren tut es anscheinend. Man sollte es aber aktivieren. Sowie es aussieht gehen nur bestimmte Sachen und es kommen immer noch Warnungen

Redet ihr davon?

compiler.cpp.cmd=xtensa-lx106-elf-g++
compiler.cpp.flags=-c -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -MMD

also das "-std=c++11"

Ja

Dann muss ich euch jetzt etwas gestehen. :-*

Ich arbeite momentan mit dem esp8266-package für die Arduino IDE.
Die hat eine eigene platform.txt. Und da ist der Schalter schon aktiv, wenn ich das entsprechende Board auswähle.
Drum ging es bei mir ohne Änderung....

Wird bestimmt auch irgendwann für den Rest zum Standard.