Dezimalwert Ausgangsbits zuweisen

Elektrosly

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Einen schönen guten Abend. Ich würde gerne einen Dezimalwert (Dezimalwert von 0 bis 64) sieben Ausgangsbits zuweisen (Q0.1-Q0.7). Also Dezimal in Dual umwandeln. Das Ausgangsbit Q0.0 benötige ich als Bestätigungs-Bit, daher kann ich leider nicht den Dezimalwert einfach dem Ausgangsbyte zuweisen. Arbeite in AWL mit CoDESys-Software. Vielleicht hat einer einen Tipp.
 
Versuch mal:

Code:
VAR
    var_1: INT := 64;
END_VAR

______________________

    LD        var_1
    INT_TO_BYTE
    SHL        1
    OR        (
    LD        %QX0.0
    BOOL_TO_BYTE
    )
    ST        %QB0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Funktioniert leider nicht. Das schieben nach links bewirkt ja, das mein Wert nicht 64 sondern 128 ist.
Der Dezimalwert ist eine Vorgabe von einem Eingabegerät. Wenn der Bediener den Dezimalwert eingegeben hat wird dies über einen Button quittiert. Q0.0 ist das Bit, was zur Bestätigung auf 1 gesetzt wird. Das ist auch kein Problem, aber ein Dezimalwert nicht ein Byte sondern nur 7Bit zuweisen ist allerdings etwas knifflig.
 
Funktioniert leider nicht. Das schieben nach links bewirkt ja, das mein Wert nicht 64 sondern 128 ist.

Durch das Schieben nach links wurde die Wertigkeit jeder Stelle um eins erhöt. Wenn das Programm dann Byte 0 dezimal wiedergibt entspricht 64 dadurch 128! Weil immer noch (Steuerungsintern) Bit x0.0 bis x0.7 als Dezimalzahl interpretiert wird.
Du musst aber auf das Bitmuster achten:

Code:
x.7    x.6    x.5    x.4    x.3    x.2    x0.1    x0.0    
         |_________________________________________|
                          0 bis 64 

-> 1 links Schieben + Bestätigungsbit

x.7    x.6    x.5    x.4    x.3    x.2    x0.1    x0.0    
 |_________________________________________|       |
               0 bis 64             
                                            "Bestätigungs-
                                                  Bit"

 |_________________________________________________|
   von Steuerung als Dezimalzahl interpretierter Bereich
Klick mal während der Simulation im Deklarationsbereich Rechts und wähle "Binär", dann siehst du vielleicht was ich meine.

PS: Ich hab mal 0 bis 64 geschrieben, da es deiner Aufgabenstellung entspreicht. Mit 7Bit kann man auch Zahlen von 0 bis 127 darstellen.
 
Der Dezimalwert ist eine Vorgabe von einem Eingabegerät. Wenn der Bediener den Dezimalwert eingegeben hat wird dies über einen Button quittiert. Q0.0 ist das Bit, was zur Bestätigung auf 1 gesetzt wird. Das ist auch kein Problem, aber ein Dezimalwert nicht ein Byte sondern nur 7Bit zuweisen ist allerdings etwas knifflig.

Wenn nicht beschreibe nochmal ganz klar, was umgesetzt werden soll.
Geht es nun um das Einlesen oder die Ausgabe der 7Bit + Bestätigung?
Jetzt hört sich deine Beschreibung nehmlich so an, als ob du die 8Bit als Eingang hast und die Dezimalzahl herrauslesen willst.

Das ist aber alles kein Problem. Die Aufgabenstellung muss nur exakt bekannt sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für Deine Hilfe. Es funktioniert genau so, wie in Deiner 2.Antwort bildlich dargestellt. Der Dezimalwert wird richtig übergeben und auch das Bestätigungsbit funktioniert. Vielen Dank nochmal.
 
Zurück
Oben