Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Schaltzeiten einer Siemens Logo 8 ändern
#11
Hallo Herr Abrech,
Hallo Herr Rings,

Die Schaltzeiten der Logo-Schaltuhren sind BCD-Codiert.

Die Codierung erfolgt in 4 Blöcken a 4 Bit. Es wird also jede Ziffer mit 4 Bit dezimal von 0-9 codiert.
Deswegen kann man die Uhrzeit in der Spalte Hex auch "sehen". Der Wert der Variablen entspricht aber nicht der Zeit.

Ich werde mir also nun ein VB-Skript stricken, um die 4 Ziffern einzeln aus den Variablen zu separieren, und in Minuten umzurechnen.
Dann kann ich sie im Zeitfeld anzeigen.
Und für die Eingabe der Zeiten das Ganze andersrum.

Bezüglich Der BCD-Codierung habe ich zur bessern Verständniss noch eine kleine Tabelle angehängt.

Für Ihre Hilfe und den diversen Lösungsversuchen möchte ich mich nocheimal recht herzlich bedanken.

LG
Stewe


Angehängte Dateien
.pdf   BCD-Codierung.pdf (Größe: 3,89 KB / Downloads: 5)
Antworten
#12
Es gibt im Übrigen auch 2 Skript Funktionen, die das umrechnen Dezimal<>BCD einfacher gestalten:

BCDZAHL = vdf.Int2BCD(INTZAHL)

und andersrum:

INTZAHL = vdf.BCD2INT(INTZAHL)

und natürlich auch einen passenden FB
(Dezimal_BCD Wandler (bidirektional))
dafür.
Antworten
#13
Hallo Herr Rings.
Ich habe das gleiche Problem aber die Funktionen kann ich nicht aufrufen.
Können Sie den Code der hinter der Funktion steht "vdf.Int2BCD(INTZAHL)" posten?
Wollte mir seldst ein Skript nach meinen Anforderungen schreiben, konnte aber kein Shift right machen? So geht es nijcht "j >>= 4".

LG techniker
Antworten
#14
Hallo techniker,

in VBASE ist schon seit geraumer Zeit die Funktion eingebaut und
sollte auch verfügbar sein.

Warum sollte sie diesen nicht aufrufen können ?

Bei dem Shift Operator setzen sie einmal Klammern drumherum:

Code:
a=64
b=0
b= (a >> 2)

DEBUG.dPRint b.Tostring & ":" & a.Tostring
Antworten
#15
(07.08.2017, 08:29)S.Rings schrieb: Hallo techniker,

in VBASE ist schon seit geraumer Zeit die Funktion eingebaut und
sollte auch verfügbar sein.

Warum sollte sie diesen nicht aufrufen können ?

Bei dem Shift Operator setzen sie einmal Klammern drumherum:


Code:
a=64
b=0
b= (a >> 2)

DEBUG.dPRint b.Tostring & ":" & a.Tostring

Ich benutze einen sehr alten Script Editor Version 9.5.4 2003. Bei dem Code
a=64
b=0
b= (a >> 2)
bekomme ich ene Fehlermeldung "Error Stop Fehler 1002 Syntaxfehler in Zeile 36" es funktionieren keine bitweise Operatoren "&&" "||" "<<" .
Wenn das klappt kann ich ganz leicht einen BCD in INT wandeln.
Bei der funktion "VDF.Int2BCD() " Bekomme ich die Fehlermeldung "Fehler 438: Das Obijekt unterstützt diese Eigenschaft oder Methode nicht".
Huh Huh
Antworten
#16
Hallo techniker,

(07.08.2017, 10:04)techniker schrieb: Ich benutze einen sehr alten Script Editor Version 9.5.4 2003. Bei dem Code
a=64
b=0
b= (a >> 2)
bekomme ich ene Fehlermeldung "Error Stop Fehler 1002 Syntaxfehler in Zeile 36" es funktionieren keine bitweise Operatoren "&&" "||" "<<" .
Wenn das klappt kann ich ganz leicht einen BCD in INT wandeln.
Bei der funktion  "VDF.Int2BCD() " Bekomme ich die Fehlermeldung "Fehler 438: Das Obijekt unterstützt diese Eigenschaft oder Methode nicht".
Huh  Huh

Das erklärt natürlich einiges.
Sie benutzen wahrscheinlich noch die ältere Version von "Visam Win32",
ich bezog mich auf "VBASE".
Unter "Visam Win32" stehen die Funktionen leider nicht zur verfügung,
die Version wurde im übrigen schon 2008 abgekündigt und wird nicht mehr unterstützt.
Die Weiterentwicklung hiess dann "VisAM DotNet" und wurde dann zu
VBASE umbenannt(2013) .

"Visam Win32" unterstützt als Scriptsprache VBA .
Evtl. hilft ihnen zum Bsp dieser Tip weiter:
http://www.excely.com/excel-vba/bit-shif...tion.shtml
Antworten
#17
Beim Visam 32 geht es mit dem Script

If VDF.ReadBitB(7,10,1,1)=0 Then 'Wenn keine Eingane noch erfolgt ist dann:

s=Hex(VDF.ReadInt(2,0)) 'Lesen aus SPS Hex
VDF.WriteInt 3,0,Cint(s) 'Umwandeln und schreiben in Visam
End If

Wert=VDF.ReadInt(3,0) 'Eingabefeld schreiben von Visam zur SPS
VDF.WriteInt 2,0,("&H"+Cstr(Wert)) 'von Int nach Hex
Antworten


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste