Ankündigung

Einklappen
Keine Ankündigung bisher.

In der Tiefe: Validierungskonzept

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

  • enertegus
    antwortet
    Zitat von Uwe! Beitrag anzeigen
    S.112:
    vor fehlt eine Variable
    Für den Sinn einer Zuweisung hast Du recht, aber gültige Syntax ist es. Der tan wird berechnet, es wird halt nix damit gemacht.

    steht schon im 1. Beispiel, wird aber erst weiter unten erklärt

    Ok,pass ich an.
    warum nur die Zweite, die erste doch auch?
    Richtig - es wird nur nicht der Wert geändert. Ich pass das an..

    widerspricht sich für mch mit der Aussage

    Das Verhalten von if ist da eben anders. Hier reicht ein invalid der Abfragebedingung aus, ohne dass diese sich ändern muss. Siehe auch
    "Wenn die Abfrage -
    bedingung ungültig wird, so wird if neu ausgewertet und zwar unabhängig davon, ob sich die Abfragebedingung vom
    Wert her ändert."

    Irgendwie hab ich da was gelöscht. Muss ich nochmals uploaden...
    EDIT: Erledigt...

    Einen Kommentar schreiben:


  • Uwe!
    antwortet
    Alles in allem: Sehr gut und hilfreich! Und für die gedachte Zielgruppe glaube ich genau richtig geschrieben.

    Ein paar Fehler und Fragen hab ich aber:


    S.112:
    vor
    tan(2.0f32)
    fehlt eine Variable

    o=stime(32)
    steht schon im 1. Beispiel, wird aber erst weiter unten erklärt

    Die zweite Anweisung würde sonst im Zyklustakt des Enertex® EibPC den Bus beschreiben.



    warum nur die Zweite, die erste doch auch?



    '1/2/3'b01 wird zwar bei jedem Telegramm „invalid“, reicht aber dieses Signal nicht an die if-Anweisung weiter, wenn das eintreffende Telegramm (auf dieser Gruppenadresse) den gleichen Wert hat wie das letzte.


    widerspricht sich für mch mit der Aussage


    Dabei wird y im übrigen nur dann ungültig, wenn sich der Wert der Gruppenadresse tatsächlich geändert hat.

    S.113:
    Zum Beispie, fehlt noch die Erläuterung was passiert

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von makki Beitrag anzeigen
    @energetus: nach dem lesen dieses versteh ich auch das von gestern besser
    seufz.

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von saft6luck Beitrag anzeigen
    . Der Code wird sequenziell ausgeführt.
    Das trifft aber auch für multithreading Systeme zu, welche nur 1 CPU haben. Innerhalb einer Zeitunschärfe eben nicht.
    Es gibt eine Reihenfolge (siehe auch die 2 Beispiele am Ende der Erläuterungen). Also sollt eher auf die Ausführungsreihenfolge eingegangen werden.
    Was ja auch geschehen ist.
    Es war lediglich eine Redigierung deines Textes. Wenn du glaubst, der Text sei so der gewollte "Einblick" kann ich nur sagen: Ich erwarte mir nicht nur einen Einblick, sondern eine verständliche Anleitung. Momentan lässt sie wesentliche Fragen offen.
    Für die Anregungen bin ich ja grundsätzlich dankbar - und habe ja schon nachgelegt. Was ist da nun noch unklar?

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Zitat von enertegus Beitrag anzeigen
    Es wird sich auf die Ausführung innerhalb des Zyklusses bezogen.
    [...]
    Das ist richtig: Gemeint ist, dass alle Aufgaben parallel ausgeführt werden und zudem (das ist wohl die Kritik) innerhalb der Zeitscheibe.
    Es geht um den Sinn dieser Aussage, der mir eher zur Verwirrung dient, als zur Erklärung, denn diese ist falsch. Der Code wird sequenziell ausgeführt. Niemand braucht sich Gedanken darüber machen, welche Anweisung schneller Ausgeführt wird, als die andere. Vielmehr ist es wichtig, welche Anweisung vor/nach einer anderen Anweisung ausgeführt wird. Es gibt eine Reihenfolge (siehe auch die 2 Beispiele am Ende der Erläuterungen). Also sollt eher auf die Ausführungsreihenfolge eingegangen werden.
    Nun ich wollte nicht den FW-Code und unsere internen Dinge allzusehr ausbreiten. Entweder Du glaubst mir dies einfach (ich denke es ist nachvollziehbar) oder Du lässt es bleiben.
    Gut, ich steck es in die Schublade "Überzeugt mich nicht."
    Wie gesagt, ich wollte einen Einblick geben. Dir trau ich es zu, dass Du es verstehst.
    Es geht bestimmt nicht um mich. Es war lediglich eine Redigierung deines Textes. Wenn du glaubst, der Text sei so der gewollte "Einblick" kann ich nur sagen: Ich erwarte mir nicht nur einen Einblick, sondern eine verständliche Anleitung. Momentan lässt sie wesentliche Fragen offen.

    Einen Kommentar schreiben:


  • makki
    antwortet
    @energetus: nach dem lesen dieses versteh ich auch das von gestern besser

    Makki

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von saft6luck Beitrag anzeigen
    Der Profi wundert sich eher über die Vorstellungen des Autors.
    So,So..
    - Eine parallele Ausführung der Prozesse bzw. Anweisungen trifft evtl. im FPGA
    Es wird sich auf die Ausführung innerhalb des Zyklusses bezogen.
    - Nocheinmal: Multithreading hat nichts mit 'Ausführung in einem Zyklus' zu tun.
    Das ist richtig: Gemeint ist, dass alle Aufgaben parallel ausgeführt werden und zudem (das ist wohl die Kritik) innerhalb der Zeitscheibe.
    - Womit wird die "optimale Performance" belegt?
    Nun ich wollte nicht den FW-Code und unsere internen Dinge allzusehr ausbreiten. Entweder Du glaubst mir dies einfach (ich denke es ist nachvollziehbar) oder Du lässt es bleiben.
    - Funktionen zur Verarbeitung: Funktionen werden abhängig von der Funktion und/oder dem Argument ausgewertet (siehe z.B. stime(32), Argument ändert sich nicht, Funktion wird aber mehrfach ausgewertet). Wie passt das ins Schema?
    Das wäre eine Erweiterung Wert: Zeitfunktionen werden von einem gesondertem Scheduler invaldiert.
    - Bitte beim letzten Beispiel explizit darauf eingehen, warum bei systemstart() das if die Befehle im then Zweig invalidiert, wenn systemstart() doch 0b1 wird. Was würde ein else Zweig hier machen
    Insgesamt wird zu wenig auf die problematischen, fehlerträchtigen Fälle eingegangen.
    Wie gesagt, ich wollte einen Einblick geben. Dir trau ich es zu, dass Du es verstehst.

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Nun ja, Lob ist evtl. ein wenig zu viel gesagt: Danke für den Einblick!

    Zum Thema Kritik bleibe ich natürlich bei der konstruktiven

    Nur schnell 'reingehackt':

    - Generell glaube ich nicht, dass ein 'gewöhnliches', 'interaktives' Programm anders abläuft, als die Programmausführung im eibPC: in einer Endlosschleife wird auf Signale des Benutzers gewartet und dann ein Programmteil ausgeführt ... und wieder gewartet. Verstehe daher den Sinn dieser Aussage nicht. Der Profi wundert sich eher über die Vorstellungen des Autors.
    - Eine parallele Ausführung der Prozesse bzw. Anweisungen trifft evtl. im FPGA zu, wenn im eibPC jedoch keiner verbaut ist, wird wohl sicherlich alles sequenziell abgearbeitet. Also entweder Hinweis auf besondere HW oder streichen.
    - Nocheinmal: Multithreading hat nichts mit 'Ausführung in einem Zyklus' zu tun.
    - Verständlichkeit: Setzt bei mir aus, wenn man Befehle aus anderen Programmiersprachen verwendet, den Sinn ähnlich wählt und dann in einen SPS-Kontext setzt, der dann als einfacher dargestellt wird.
    - Variablen definieren heißt Deklaration, entweder explizit oder implizit, im eibPC wohl explizit.
    - Beispiel Variablen erweitern: Wenn y sich also nur ändert, wenn sich der Wert ändert, wie kann ich dann y immer updaten, auch wenn sich der Wert nicht ändert? Beispiel: mehrfaches Empfangen eines Triggertelegrammes.
    - Womit wird die "optimale Performance" belegt? Wenn ein Telegramm nur alle 40 ms eintrifft und der eibPC für die Abarbeitung aller Abhängigkeiten nur einen Zyklus benötigt, wartet er immer mind. 39 ms?
    - Funktionen zur Verarbeitung: Funktionen werden abhängig von der Funktion und/oder dem Argument ausgewertet (siehe z.B. stime(32), Argument ändert sich nicht, Funktion wird aber mehrfach ausgewertet). Wie passt das ins Schema?
    - Funktionen zur Ausgabe: Wenn man in der Hauptebene nur Deklarationen (optimaler weise mit einem speziellen Kommando, wie z.B. Set a=0b1), Zuweisungen und if zulassen würde, bräuchte man sich den Kopf nicht so verrenken.
    - Das if verhält sich wie eine Funktion, auch wenn der Wert des Arguments sich nicht ändert?! Warum dieser Hinweis? Ist es relevant, dann bitte Beispiel.
    - 1. Beispiel Verschachtelung von if-Anweisungen: Fehler? if ist unabhängig von a. Erklärung scheint so fehlerhaft.
    - "'1/2/3'b01 wird zwar bei jedem Telegramm „invalid“, reicht aber dieses Signal nicht an die if-Anweisung weiter, wenn das eintreffende Telegramm (auf dieser Gruppenadresse) den gleichen Wert hat wie das letzte." scheint inkonsequent: Das Signal muss doch EIN sein und sich geändert haben. Ist change() gemeint?
    - 2. Beispiel: Sollte auf jeden Fall auch im normalen Teil des Handbuches beschrieben sein - kommt das noch? Zusammenhang hier?
    - Beispiel Verschachteln von if: Wieso baut der Compiler das Konstrukt um und wie sieht es dann aus? Text insgesamt überladen und unverständlich, schlechte Struktur und somit erst nach mehrmaligem Lesen annähernd zu verstehen. Wieso wird zur Beschreibung der Problematik nun ein weiteres Beispiel angeführt, ohne das bisherige zu erläutern, wobei dessen Beschreibung wieder verständlich aber umständlich ist?
    - Geändertes Beispiel: Was bedeutet "Beim nächsten (und allen weiteren) wird diese ausgeführt." in diesem Zusammenhang?
    - Bitte beim letzten Beispiel explizit darauf eingehen, warum bei systemstart() das if die Befehle im then Zweig invalidiert, wenn systemstart() doch 0b1 wird. Was würde ein else Zweig hier machen?

    Insgesamt wird zu wenig auf die problematischen, fehlerträchtigen Fälle eingegangen.

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von enertegus Beitrag anzeigen
    Wie angekündigt, für alle die Spass an der Erkundung der innersten Vorgänge im EibPC haben.
    Es sind noch Tippfehler drinne

    Einen Kommentar schreiben:


  • enertegus
    hat ein Thema erstellt [EibParser] In der Tiefe: Validierungskonzept.

    In der Tiefe: Validierungskonzept

    Wie angekündigt, für alle die Spass an der Erkundung der innersten Vorgänge im EibPC haben.
    Ich hoffe es wird etwas verständlicher, und für alle die hier lesen und denken "Bahnhof", "Ägypten" etc. sei es ein Trost: Das braucht man nur, wenn man richtig tief in die Programmierung einsteigen will. Morgen gibt es dafür ein paar weitere einfache Dinge, ja und sogar Lehrvideos auf Youtube mit der Steffi...

    Aber hier zum Thema Validierung.

    Lob in den Danke-Thread, Tadel einfach runterschlucken

    EDIT: Noch ein paar Änderungen. Langsam wird's was...
    Angehängte Dateien
Lädt...
X