Ankündigung

Einklappen
Keine Ankündigung bisher.

Leistungsfähigkeit des eibPC -> Programmierung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Leistungsfähigkeit des eibPC -> Programmierung

    Guten Morgen,

    ich habe mich schon etwas in diesem Forum umgesehen, und auch das Handbuch des eibPC heruntergeladen und überflogen. Prinzipiell sieht das für mich gut aus, allerdings habe ich noch Fragen:

    1. Im Handbuch steht, dass der Maschinencode meines compilierten Anwenderprogramms ca. alle 1ms durchlaufen wird. So wie ich das verstanden habe, soll nur der Code abgearbeitet werden, wenn Änderungen an Variabeln eingetreten sind? Soll das bedeute, eine IF-Anweisung wird nicht geprüft, wenn es dort keine Änderungen gab? Wie arbeitet denn die change-Anweisung genau? Grund der Frage ist, dass ich 2 identische eibPCs (wenn ich mich für das Gerät entscheide) an dem BUS betreiben möchte. Einer soll redundant mitlaufen und übernehmen, wenn das primäre Gerät eine Störung hat! Um das fehlerfrei programmieren zu können, muss ich verstehen, wie das Anwenderprogramm genau abgearbeitet wird
    2. Gib es eine spezifizierte Möglichkeit Zugriff auf persistenten Speicher, Zeiger oder Arrays zu bekommen, oder ist das geplant?
    3. Mein Programm wird etwas umfangreicher ausfallen. Kann ich an Hand von z.B. Binärentscheidungen oder Zuweisungen etc. berechnen, wie groß es maximal werden darf? Gibt es da ein Schätzmodell?
    Keine Garantie auf Richtigkeit! Bitte nicht zu Hause nachmachen!

    #2
    Hallo,

    Die Redundanz ist in EibPC sehr einfach mit dem "sleep" Befehl möglich. Der bestimmt, ob der EibPC auf den BUS sendet oder nicht,es werden aber alle Befehle bearbeitet. Beide EibPCs arbeiten mit fast demselben Programm, bis auf einige unterschiedliche Befehlszeilen.
    Beide erzeugen über "if cycle(1) then write "EibPC 1 (bzw 2) lebt noch" endif " ein Lebenszeichen.
    Der andere braucht dann nur zu kontrollieren, ob diese GA regelmäßig kommt, und wenn nicht schaltet er seinen sleep-Modus aus und übernimmt selbständig die Arbeit. (Selbstverständlich kann er das auch jemandem über email mitteilen) Wenn beide EibPC auch über Schaltaktoren mit der Versorgungsspannung verbunden sind kann er den jeweils anderen auch kurz vom Netz trennen und somit einen Neustart auslösen. (das ist allerdings auch mit 1 Eibpc und einer Treppenlichtfunktion im Aktor möglich, dafür braucht es keine 2 EibPCs.)

    Frage 2 und 3 kann dir besser ENERTEGUS geantworten!
    Der schöne Niederrhein läßt Grüssen

    Andreas


    Alter Hof mit neuer Technik

    Kommentar


      #3
      Ah, ich sehe die Funkion! Das ist ja EXTREM komfortabel! Ich dachte, ich müsse eben genau diese Funktionalität (nicht mehr schreiben, aber trotzdem lesen und rechnen) von Hand schreiben!
      Keine Garantie auf Richtigkeit! Bitte nicht zu Hause nachmachen!

      Kommentar


        #4
        Zitat von rb84 Beitrag anzeigen
        Im Handbuch steht, dass der Maschinencode meines compilierten Anwenderprogramms cai. alle 1ms durchlaufen wird. So wie ich das verstanden habe, soll nur der Code abgearbeitet werden, wenn Änderungen an Variabeln eingetreten sind? Soll das bedeute, eine IF-Anweisung wird nicht geprüft, wenn es dort keine Änderungen gab? Wie arbeitet denn die change-Anweisung genau?
        Das stimmt so im Wesentlichen. Das Linux ist auf 1ms Zyklen abgestimmt. Um dem Webserver Luft zu geben, macht die Hauptschleife auch ein paar Wartezyklen - die Verarbeitung von Telegrammen etc. läuft auf 1ms Basis weiter.
        Grob gesprochen, haben alle Objekte eine Abhängigkeitsliste und nur bei Änderung tut sich da was -so funktioniert auch die Change Funktion.Mit der neuen Firmware (Beta) gibts auch eine eval-Funktion, die sich bei Objekten nicht um dieses Prinzip schert (ihr wisst ja ich war , aber was tut man nicht alles für die Kundschaft ....). Aber dazu im neuen Handbuch mehr,
        Gib es eine spezifizierte Möglichkeit Zugriff auf persistenten Speicher, Zeiger oder Arrays zu bekommen, oder ist das geplant?
        Auf Stringarrays (1400 Bytes) wird es in Kürze die Funktionen stringset und stringcast geben, so dass man dort etwas ablegen kann. Remantentspeicher ist derzeit noch in der Planung.
        Mein Programm wird etwas umfangreicher ausfallen. Kann ich an Hand von z.B. Binärentscheidungen oder Zuweisungen etc. berechnen, wie groß es maximal werden darf? Gibt es da ein Schätzmodell?
        Man kann 65.000 Objekte anlegen. Bis jetzt hat noch keiner die Grenze durchbrochen, aber ich schließe hier nichts aus.
        Aufgrund des Validierungsmodells ist dabei die Programmgröße nur sehr gering abhänig von dessen Verarbeitungsgeschwindigkeit. Auf den dezeitigen Entwicklungs-EibPC "frisst" das top mehr als das eigentliche Anwendungsprogramm...
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar

        Lädt...
        X