Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
(ob die bausteinautoren hieran noch was machen wollen? für meine internen zwecke bin ich jetzt sehr zufrieden. also kein mal zuwenig: danke für die hilfen)
Habe ich so nicht geschrieben. Auch da sitzt die schließende Klammer an der falschen Stelle.
Muß dann lauten:
5012|0|""|"__import__('math').modf(EN[1])[0]"|""|5|0|0|0
5012|0|""|"__import__('math').modf(EN[1])[1]"|""|6|0|0|0
Tja, erstmal danke für den Debugger.
da war dann zum erstmal Fehler zu sehen.
ich bin zwar jetzt immer noch nicht sicher, ob die erste Varianten funktioniert hätte,
aber ich habe den Code etwas sortiert und bin jetzt über den Weg einer Speichervariable [5] gegangen. Damit klappts soweit.
ich gebrauche den baustein nur bei mir, der ursprüngliche autor/autoren müssten mal sehen, ob sie die ergänzungen nochmal einpflegen. SCHÖN wäre sicherlich etwas kommentar zu den ursprünglichen rundungsroutinen (mir ist das nicht so klar), aber ich bin jetzt einen kleinen schritt weiter ...
zum angucken:
Code:
###################################################
### Klaus Muckelmann 01.08.2012 ###
### Runden Nachkomma 1.0 ###
### Alexander Kirpal 05.08.2012 ###
### kein Nachkomma , ohne Runden Eingefügt V1.1 ###
### Klaus Muckelmann 05.08.2012 ###
### E3 "Modus" eingefügt V1.1 ###
### 20121028.oz v1.2:
### A5+A6: vorkommaanteil/nachkommaanteil-Ausgaenge
###################################################
###https://knx-user-forum.de/downloads.php?do=file&id=462
### Mit diesem Baustein kann ein Wert auf eine einstellbare Anzahl Nachkommastellen gerundet werden.
### Version 1.1: Art der Rundung ausgewählt werden (1 = normal runden; 2 = es wird immer abgerundet; 3 = es wird immer aufgerundet)
### zwei neue Ausgänge. Hier werden immer einfach die Nachkommastellen abgeschnitten.
###################################################
###5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
###5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
###5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch
###5003|Speicher|Initwert|Remanent
###5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch
###5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
###################################################
###BESCHREIBUNG
###5000 | "Text Expertendropdown" | Remanent(1/0)| Anz.Eingänge |.n.| Anzahl Ausgänge | "Text Version" |.n.
5000|"eigene BS\Runden Nachkomma1101"|0|5|"E1 Eingangswert"|"E2 Anz. Nachkommastellen A1+A2"|"E3 Runden A1+A2 (1=normal,2=ab,3=auf)"|"E4 Runden A6 (1=nein,2=ab,3=auf)"|"E5 Multiplikator A6"|7|"A1 Gerundet"|"A2 Gerundet (sbc)"|"A3 Nachkomma abgeschnitten"|"A4 Nachkomma abgeschnitten (sbc)"|"A5 Nur Vorkomma (sbc)"|"A6 Nur Nachkomma (sbc)"|"A7 Nur Nachkomma[2] (sbc)"|"v1.2"
### INIT
### 5001 | Eingänge Anzahl|Ausgänge Anzahl | Offset | Speicher Anzahl | Berechnung bei Start (0/1)
5001|5|7|0|5|1
### SPEICHER
### 5003 | Speicher-Nr. | Initwert | Remanent (0/1)
5003|1|0|0
5003|2|0|0
5003|3|0|0
5003|4|0|0
5003|5|0|0
### EINGANG
### 5002 | Index Eingang | Defaultwert | 0=numerisch/1=alphanummerisch
5002|1|0|0 # E1: Eingang
5002|2|1|0 # E2: Anz. nachkommatellen von A1+A2
5002|3|1|0 # E3: Rundungsmodus fuer A1+A2 (1=normal,2=ab,3=auf)
5002|4|1|0 # E4: Rundungsmodus fuer A6 (1=normal,2=ab,3=auf)
5002|5|1|0 # E5: Nur Nachkomma Multiplikator -> A6 (default 1)
### AUSGANG
### 5004 | ausgang | Initwert| runden/binär (0/1)| Typ (1-send/2-sbc)| Typ: 0=numerisch/1=alphanummerisch
5004|1|0|0|1|0 # A1: Gerundet
5004|2|0|0|2|0 # A2: Gerundet (sbc)
5004|3|0|0|1|0 # A3: ohne Nachkomma, alle Stellen abschneiden
5004|4|0|0|2|0 # A4: ohne Nachkomma, alle Stellen abschneiden (sbc)
5004|5|0|0|2|0 # A5: Nur Vorkomma
5004|6|0|0|2|0 # A6: Nur Nachkomma, Multipliziert mit E5 (sbc)
5004|7|0|0|2|0 # A7: Debug: Nur Nachkomma (sbc)
### LOGIK
### 5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
# SPEICHER bedienen
# nicht runden
5012|0|"EN[3]==1"|"EN[1]"|""|0|0|2|0
# ab-runden
5012|0|"EN[3]>=2 and EN[2]<>0"|"__import__('math').pow(10,abs(EN[2]))"|""|0|0|1|0
5012|0|"EN[3]>=2 and EN[2]==0"|"0.5"|""|0|0|1|0
5012|0|"EN[3]==2 and EN[2]==0"|"EN[1]-SN[1]"|""|0|0|2|0
5012|0|"EN[3]==2 and EN[2]>=1"|"EN[1]-(0.5/SN[1])"|""|0|0|2|0
5012|0|"EN[3]==2 and EN[2]<=-1"|"EN[1]-(0.5*SN[1])"|""|0|0|2|0
# auf-runden
5012|0|"EN[3]==3 and EN[2]==0"|"EN[1]+SN[1]"|""|0|0|2|0
5012|0|"EN[3]==3 and EN[2]>=1"|"EN[1]+(0.5/SN[1])"|""|0|0|2|0
5012|0|"EN[3]==3 and EN[2]<=-1"|"EN[1]+(0.5*SN[1])"|""|0|0|2|0
#5012|0|"EC[1]"|"round(SN[2],EN[2])"|""|1|0|0|0
#5012|0|"EC[1]"|"round(SN[2],EN[2])"|""|2|0|0|0
#
5012|0|"EC[1] and (EN[1]>=.5)"|"(EN[1] - .5)"|""|0|0|3|0
5012|0|"EC[1] and (EN[1]<=.49)"|"EN[1]"|""|0|0|3|0
# zerlegung in vorkomma und nachkomma mit modf
5012|0|""|"__import__('math').modf(EN[1])"|""|0|0|5|0
# AUSGAENGE bedienen
5012|0|"EC[1]"|"round(SN[2],EN[2])"|""|1|0|0|0
5012|0|"EC[1]"|"round(SN[2],EN[2])"|""|2|0|0|0
5012|0|"EC[1]"|"round(SN[3])"|""|3|0|0|0
5012|0|"EC[1]"|"round(SN[3])"|""|4|0|0|0
5012|0|"EC[1]"|"SN[5][1]"|""|5|0|0|0
5012|0|"EC[1]"|"SN[5][0]"|""|6|0|0|0
5012|0|"EC[1]"|"(SN[5][0])*EN[5]"|""|7|0|0|0
probiere jetzt schon ein wenig, aber ich muss wohl noch fehler machen.
stimmt die reihenfolge/Zählung (0/1-1/2) der indizes? würde vermutlich nur vorkomma/nachkomma vertauschen.
aber wenn ich die ausgänge mit KOs verknüpfe und diese dann in der visu anzeigen lasse bekomme ich nur den vorkomma wert. Nachkomma ist ja 0,xx -- ich benutze 16bit oder 32bit datentypen. und mit beiden bleibt die darstellung bei einer vollen 0,000. liegts an den datentypen der visu-KOs, oder am 0,xx ?
[nachtrag: muss wohl mal den debugger versuche, ich denke aber, es liegt am zugriff auf das von z.bsp. "math.modf(10.5) --> (0.5, 10.0)" über die index-notation. geht das wirklich so ..."modf(EN[1])[index]"... ? ]
daaaanke für jeden tip.
ozett
der baustein ist super. ich kann leider kein python und keine bausteine,
darum wäre ich riesig dankbar, wenn ein befähigter vielleicht den baustein erweitern könnte?
einfach um einen Ausgang, an dem der nachkomma-rest ausgegeben wird?
(hier so ähnlich mit modulo)
vielleicht gar nicht so schwer, wo nachkomm im baustein auch schon abgetrennt wird?
(ich möchte die nachkomma-temperatur mit einer eigenen variable und in der visu mit einer eigenen schriftart darstellen, der baustein vereinfacht die logik dazu schon ganz erheblich. die erweiterung würde das weiter auf diesen einen baustein verkürzen...)
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: