Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Programm realisieren mit Standardbausteine aus der IEC61131

  1. #1
    Registriert seit
    17.05.2016
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Community,

    ich soll ein Programm schreiben, dass aus einer Zeitangabe (Zahlenwert ins Millisekunden) eine Bit Struktur erzeugt, die dem Datentyp TOD in Unity entspricht. Beispiel: aus 54630000 ms (seit Mitternacht) wird die Uhrzeit 15:10:30 in obiger Darstellung. Das Programm soll in der Programmiersprache FBD mit Hilfe der Standardbausteine aus der IEC61131 erstellt werden.

    VAR
    zeitwert : UDINT; (* Zeitwert in Millisekunden seit Mitternacht *) 

    ergebnis : WORD; (* bitstruktur wie TOD in Unity *)
    END_VAR 


    Leider komme ich net wirklich weiter, bin Anfänger in dieser Materie

    Könnt mir da eventuell einer von euch weiterhelfen
    Zitieren Zitieren Programm realisieren mit Standardbausteine aus der IEC61131  

  2. #2
    Registriert seit
    11.07.2011
    Beiträge
    65
    Danke
    0
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Wer will denn das von Dir? Der Lehrer etwa?

  3. #3
    Bobyfighter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.05.2016
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ist halt eine Aufgabenstellung

  4. #4
    Registriert seit
    10.08.2012
    Beiträge
    245
    Danke
    0
    Erhielt 70 Danke für 66 Beiträge

    Standard

    Deine Antwort ist nicht hilfreich und damit gewinnst du hier keine Lorbeeren (= Unterstützung).

    1) schau mal nach wie TOD definiert ist . Ich kann dir nur raten dir mal an mehreren Beispiel von z.B. 10 msec anzuschaeun wie die Bits definiert sind und was somit das Ergebnis sein müsste.
    2) wenn 1) klar für dich ist dann ist es nur eine technische Umsetzung wie man ein (Bit)-Wert(e) vom Eingang in den Ausgang bringt. Dann darfst du dich gerne nochmal melden.

    Guga

  5. #5
    Bobyfighter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.05.2016
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mag sein des das nicht sehr hilfreich war, aber die Frage stellt sich meines Erachtens auch gar nicht von wem die Aufgabe kommt.

    Ich hab mir mal folgendes ausgedacht, siehe Bild
    Nun habe ich aber bedenken wegen dem or Baustein. Eigentlich möchte ich nen Baustein der mir diese tt1-3 variablen sortiert, so dass am Ende tt1 dann tt2 und dann tt3 als Ergebnis hintereinander aufgelistet werden

    Bildschirmfoto 2016-05-17 um 17.00.26.jpg

  6. #6
    Registriert seit
    10.08.2012
    Beiträge
    245
    Danke
    0
    Erhielt 70 Danke für 66 Beiträge

    Standard

    Zu deiner Logik: Überleg es dir noch einmal. Soweit ich die Aufgabe verstehe sieht die Lösung anders aus.

    Konkretes Feedback : Wenn ich so ein Ausdruck mal anschaue an einem Beispiel Ausgang des linken Sub:

    Zeitwert - ( Zeitwert / 3600000 * 3600000) = Zeitwert - Zeitwert = 0.


    Zur konkreten Frage um in ein Variable den Inhalt hineinzukopieren (z.B. in einem DWORD wo schon das High-Word belegt ist nun das Low-Word zu füllen.
    x1:=x1 OR SHL(x2,Offset);// Kommentare hierzu SHL(x2, Offset) ist überall 0 mit ausnahme der x2 Bits


    Und du wirst es nicht glauben.
    Für manche Leute, auch mich eingeschlossen, ist es nicht irrelevant woher die Aufgabe kommt. Das Forum versteht sich nicht als Hausaufgabenlöser wo man Aufgaben outsourcen kann.

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von Bobyfighter Beitrag anzeigen
    ergebnis : WORD; (* bitstruktur wie TOD in Unity *)
    Wie sieht denn so eine Bitstruktur aus? Hast Du mal einen Link?

    Ein Tag hat 86400 Sekunden - wie soll man die in ein WORD bekommen???

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Bobyfighter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.05.2016
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Aber der Zeitwert bei der ersten Division ändert sich doch. Ist ja ein UDINT, sprich nur ganzzahlig, d.h. doch z.b. Zeitwert=54630000ms/3600000=> 15std und nicht 15,175 da ja wie gesagt UDINT. Wenn ich dann wieder hoch multipliziere mache ich das ja nur mit der ganzen zahl im Beispiel also mit der 15. des wiederum gibt mir ja dann einen andere Millisekunden Anzahl. So sollte des laufen...

    Das mit diesem SHL verstehe ich net wirklich. Ich möchte halt am ende ne Ausgabe haben wie oben gesagt 15:10:30 und die variablen dazu wären tt1=15 tt2=10 und tt3=30. Nur glaub ich halt nicht dass das mit dem OR Baustein so hinhaut...

  9. #9
    Bobyfighter ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.05.2016
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    die bitstruktur lautet so:

    Der Datentyp TOD (TIME_OF_DAY) ist für die Angabe einer Uhrzeit vorgesehen. In der Programmierumgebung Unity hat der Datentyp TOD folgenden Aufbau: Es handelt sich um einen 32bit Datentyp (vergleichbar mit DWORD). Zerlegt man die 32bit in 4byte, so ist im obersten Byte die Stunden, im nächsten Byte die Minuten und im nächsten Byte die Sekunden BCD-codiert abgelegt. Das niederwertigste Byte ist immer 0. Die Uhrzeit 15:10:30 (15Uhr-10Minuten-30Sekunden) ist also wie folgt abgelegt: 0001-0101-0001-0000-0011-0000-0000-0000

  10. #10
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Da hast Du doch alles zitiert, was Du brauchst:
    TIME zerlegen in in h, m, s und ms (die nicht benötigt werden), die Zwischenergebnisse jeweils in BCD umwandeln und alles an die richtigen Stellen ins DWORD eintragen.

    TIME zerlegen wurde hier im Forum schon x-mal zerkaut.

Ähnliche Themen

  1. Step 7 Verwendung der Variablentabelle und Standardbausteine
    Von Mr. Moe im Forum Simatic
    Antworten: 31
    Letzter Beitrag: 02.12.2014, 15:47
  2. Ein / Aus mit einem Taster realisieren
    Von macrums im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 30.03.2013, 17:19
  3. Antworten: 1
    Letzter Beitrag: 05.11.2012, 09:54
  4. Indirekte Adressierung in der IEC61131-3
    Von tahren im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 24.06.2010, 12:34
  5. Programm aus der S7 auslesen
    Von stebe im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 18.04.2007, 07:35

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •