- Beiträge
- 25.979
- Reaktionspunkte
- 9.698
-> Hier kostenlos registrieren
Und ging hier weiterIch glaub die Krankheit hat da angefangen
https://www.sps-forum.de/threads/ein-bit-aus-doppelwort-finden.35212/#post-254991
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Und ging hier weiterIch glaub die Krankheit hat da angefangen
DTR fehlt noch.
Für dieses häufige Problem gibt es natürlich schon etwas fertiges: FC96 ENCO aus der Standard Library "TI-S7 Converting Blocks"Gibt es da etwas fertiges für, oder muss ich mir etwas "basteln" ?
In FUP ist das Problem nur ziemlich uneffizient lösbar. Ich würde eine Function in AWL oder SCL programmieren, mit dem Algorithmus von Thomas_v2.1 in #9.und das ganze in FUP![]()
Ist das dein ernst?
Eine Bitleiste in eine Real-Zahl wandeln und dann ohne Rücktransformation einen BCD-Wert
ausgeben.
Magst du das kurz erklären?
Dieser Trick ist auch bei Siemens bekannt, hier ein FAQ von 1999:
Maskieren vom niederwertigsten oder höchstwertigen gesetzten Bit in WORD und DWORD Variablen
Die Bits 30 bis 23 enthalten den Exponent+127.
Um die Position des ersten gesetzten Bits zu ermitteln, müssen Sie die Bits mit dem Exponenten um 23 nach rechts verschieben. Subtrahieren Sie davon 127, so erhalten Sie in AKKU1-LL die gesuchte Position.
Warum "Funktionsbaustein" (FB) ? Die Funktion muß sich nichts merken, es ist ein typischer Anwendungsfall für eine FUNCTION (FC) mit genau einem Rückgabewert.Hab mir jetzt nen Funktionsbaustein in FUP für gebastelt
Zeig doch mal einen Screenshot.schaut recht wild aus![]()
Mit "Position des ersten gesetzten Bits" ist die Position des höchstwertigen 1-Bits gemeint.PN/DP schrieb:
Die Bits 30 bis 23 enthalten den Exponent+127.
Um die Position des ersten gesetzten Bits zu ermitteln, müssen Sie die Bits mit dem Exponenten um 23 nach rechts verschieben. Subtrahieren Sie davon 127, so erhalten Sie in AKKU1-LL die gesuchte Position.
L MB 10
DTR
SLD 1 // VorzeichenBit eliminieren! Sehr gut!!
SRD 24
L 126 // "normalerweise" 127 subtrahieren, weil "normalerweise" die BitPositionen 0 .. 31 heissen, aber hier 1 .. 32
-I
T #FuncBCD
Ausgerechnet der. Das ist doch genau DER Befehl, der uns die ganze Arbeit abnimmt!!!DTR fehlt noch.
möchte ich im DB12.DBB1 im BCD-Format darstellen.
Wie viel fertiger müssen denn die Lösungen noch sein, die Du hier im Forum erwartest?hab gedacht, dass es evtl. einen fertigen Baustein für gibt...
weil ich es einfach mal so ausprobieren wollte, ich mit FBs kaum Erfahrung habe und im Programm evtl. später noch an anderer Stelle brauche.Warum "Funktionsbaustein" (FB) ? Die Funktion muß sich nichts merken, es ist ein typischer Anwendungsfall für eine FUNCTION (FC) mit genau einem Rückgabewert.
Harald
ich hab mal den ersten Teil abgelichtet.Zeig doch mal einen Screenshot.
Wenn der FC nur auf Baustein-interne Variablen und Übergabeparameter zugreift (also nicht globale Variablen, Timer, Zähler), dann kann man den FC im Programm an mehreren verschiedenen Stellen aufrufen, so oft wie man will. Und wenn der Baustein (wie bei Dir) nur aus Eingangswerten einen Ausgangswert berechnet, dann ist das eine typische FUNCTION, die man überall aufrufen kann wo man sie braucht und so oft wie man will.weil ich es einfach mal so ausprobieren wollte, ich mit FBs kaum Erfahrung habe und im Programm evtl. später noch an anderer Stelle brauche.Warum "Funktionsbaustein" (FB) ? Die Funktion muß sich nichts merken, es ist ein typischer Anwendungsfall für eine FUNCTION (FC) mit genau einem Rückgabewert.
ah, okWenn der FC nur auf Baustein-interne Variablen und Übergabeparameter zugreift (also nicht globale Variablen, Timer, Zähler), dann kann man den FC im Programm an mehreren verschiedenen Stellen aufrufen, so oft wie man will. Und wenn der Baustein (wie bei Dir) nur aus Eingangswerten einen Ausgangswert berechnet, dann ist das eine typische FUNCTION, die man überall aufrufen kann wo man sie braucht und so oft wie man will.
Harald
ja, basiert da ja quasi draufGanz schön verkompliziert. Hast du dir mal die Lösung im Beitrag #10 angeschaut?
Du denkst zu kompliziert.ich hab mal den ersten Teil abgelichtet.
MB10 einlesen,
da es bei FUP keine BIT-Schiebebefehle für ein Byte gibt wird aus MB10 ein Word (#Wert0) von dem ich mit SHL-W und SHR-W die einzelnen BITs isoliere und den jeweiligen Zahlenwert ins Ausgangsword schreibe wenn das entsprechende BIT 1 ist. (...)
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen