Autor |
Nachricht |
Tixi-Support
|
Verfasst: Do Jan 28, 2010 11:59 am |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Klaus hat geschrieben: Ich hätte gern eine Liste wo nur die Fehlerhaften Adressen angeieigt werden. Dafür benötigt man aber eine If Bedingung. ich hab noch etwas herum getüftelt und hab es auch nicht mit der IfNot Bedingung des EventHandlers hinbekommen.
Senden Sie bitte Ihr Projekt an tixi-support@tixi.com. Zitat: Warum kann ich die IFEQ nicht in den PV verwenden?
Für PV gibt es nur eine EQ-oder NE-Anweisung. Um die PV auf 1 zu setzen, wenn der DeviceState nicht 1 ist, würde ich folgende PV verwenden:
<DeviceStateNot1>
<Value>
<NE v1="/Process/Bus1/Device_0/DeviceState" v2="1"/>
</Value>
</DeviceStateNot1>
Diese PV kann dann im EventHandler via If-Anweisung verwendet werden.
_________________ Tixi Support Team
E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min
|
|
|
|
|
Klaus
|
Verfasst: Mi Jan 27, 2010 4:02 pm |
|
Registriert: Do Okt 08, 2009 12:02 am Beiträge: 9
|
Ich hätte gern eine Liste wo nur die Fehlerhaften Adressen angeieigt werden. Dafür benötigt man aber eine If Bedingung.
ich hab noch etwas herum getüftelt und hab es auch nicht mit der IfNot Bedingung des EventHandlers hinbekommen.
Warum kann ich die IFEQ nicht in den PV verwenden?
|
|
|
|
|
Tixi-Support
|
Verfasst: Di Jan 26, 2010 9:34 am |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Klaus hat geschrieben: Hab jetzt mal meine ganzen Fehler ausgebürstet und bin mir nicht so ganz klar ob die IFEQ überhaupt für meine Idee geeignet ist. In der ProcessVar stehet die Bedingung welche der Variablen ZAdr1 den Zahlenwert zuweisen soll. Ist ja für das Template PV. [code] <LD _="/Process/Bus1/Device_1/DeviceState"/> <IFEQ _="0"/> <LD _="30100958"/> <ST _="/Process/PV/ZAdr1"/> <ELSE/> <LD _=" "/> <ST _="/Process/PV/ZAdr1"/> <ENDIF/>
<ZAdr1 def=""/>
[/caode]
es müsste doch eigentlich die bedingung erfüllen?
eine ander variante war die if anweisung des eventhandlers aber ständig den schedule zu bemühen und danoch die sekündliche maske einzuarbeiten ist ja auch nicht die feine art.
Wie wäre es denn, wenn Sie in dem Text, der diese Nachricht versenden soll statt der Prozessvariablen einen Referenz mit Alternativwert verwenden. Kann die Referenz zur M-Bus-Variablen nicht aufgelöst werden, verwendet das TAM dann den Alternativwert. Beispiel im Messagebody:
<Body>
<L _="Testnachricht M-Bus-Variable ®/Process/Bus1/Device_0/Variable_0,keine Verbindung;"/>
</Body>
_________________ Tixi Support Team
E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min
|
|
|
|
|
Klaus
|
Verfasst: Mo Jan 25, 2010 9:45 am |
|
Registriert: Do Okt 08, 2009 12:02 am Beiträge: 9
|
Hab jetzt mal meine ganzen Fehler ausgebürstet und bin mir nicht so ganz klar ob die IFEQ überhaupt für meine Idee geeignet ist.
In der ProcessVar stehet die Bedingung welche der Variablen ZAdr1 den Zahlenwert zuweisen soll. Ist ja für das Template PV.
[code]
<LD _="/Process/Bus1/Device_1/DeviceState"/>
<IFEQ _="0"/>
<LD _="30100958"/>
<ST _="/Process/PV/ZAdr1"/>
<ELSE/>
<LD _=" "/>
<ST _="/Process/PV/ZAdr1"/>
<ENDIF/>
<ZAdr1 def=""/>
[/caode]
es müsste doch eigentlich die bedingung erfüllen?
eine ander variante war die if anweisung des eventhandlers aber ständig den schedule zu bemühen und danoch die sekündliche maske einzuarbeiten ist ja auch nicht die feine art.
|
|
|
|
|
Klaus
|
Verfasst: Mo Jan 18, 2010 12:58 pm |
|
Registriert: Do Okt 08, 2009 12:02 am Beiträge: 9
|
Danke für die Antwort
Der Sinn liegt darin im External sind Zähler implementiert diese sind bei DeviceState 0 nicht mehr für das System erreichbar. Daher kann man auch nicht wissen welche der Geräte ausgefallen sind. Somit hat das Element <Device> noch die Variable <SecondaryAddr> bekommen. welche ja immer verfü bar ist.
Code: <External> <Bus Name="Bus1" _="COM3" family="M-Bus" Product="M-Bus Standard" protocol="Meterbus" Mem="123000" baud="2400" handshake="none" type="Master"> <Device Name="Device_0" NameUser="Z58" _="0" Pollrate="30m" SecondaryAddr="30100958"> <SecondaryAddr _="value" simpleType="meterbus" ind="999" size="9" acc="R" def="30100958"/> <Variable_3 Name="Wirkenergie58" _="value" simpleType="meterbus" ind="1" size="9" acc="R" format="F,3;%%"/> <Variable_1 Name="Sekundäradresse58" _="value" simpleType="meterbus" ind="6" size="9" acc="R" format="R10;%%"/> </Device> </Bus> </External>
Nun will ich diese bei einem DeviceState 0 einer Variablen im PV zuweisen.
Ist das DeviceState 1 soll die Variable im PV keinen Wert haben oder 1.
|
|
|
|
|
Tixi-Support
|
Verfasst: Mo Jan 18, 2010 11:18 am |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Klaus hat geschrieben: Hallo ich möchte die statisch angelegte Adresse eines Device als PV ausgeben wenn das DeviceState 0 ist. Hab an die If-Anweisung gedacht und dies aber wieder verworfen da diese doch mehr im EventHandler eine Rolle spielt. Jetzt bin ich bei IFEQ gelandet und dachte da könnte man was mit machen. Meine Annahme geht dahin das die Funktion in den PV ablaufen soll. Code: <ProcessVars>
<LD a1="/Process/Bus1/Device_0/DeviceState"/> <IFEQ _="0"> <LD _="®/Process/Bus1/Device_0/SecondaryAddr"/> <ST _="/Process/PV/DynSecAdr0"/> <ELSE/> <LD _="1"/> <ST _="/Process/PV/DynSecAdr1"/> <ENDIF/>
<DynSecAdr0 def="0"/>
<DynSecAdr1 def="0"/>
</ProcessVars>
ST setzt ja die Variable auf den Wert aus dem <LD _="®/Process/Bus1/Device_0/SecondaryAddr"/> So richtig kann ich auch nicht einordnen ob die IFEQ für diese Aufgabe überhaupt funktioniert. Habt ihr einen kleinen Denkanstoß? Ich verstehe den Sinn noch nicht. Wenn keine Verbindung zum Device besteht, kann auch die Adresse nicht gelesen werden. In diesem Fall liefert Code: <LD _="®/Process/Bus1/Device_0/SecondaryAddr"/> <ST _="/Process/PV/DynSecAdr0"/>
keinen Wert für SecondaryAddr.
Geht es darum bei unterbrochener Verbindung zum Device einen Text auszugeben?
_________________ Tixi Support Team
E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min
|
|
|
|
|
Klaus
|
Verfasst: Mo Jan 18, 2010 9:32 am |
|
Registriert: Do Okt 08, 2009 12:02 am Beiträge: 9
|
Hallo ich möchte die statisch angelegte Adresse eines Device als PV ausgeben wenn das DeviceState 0 ist.
Hab an die If-Anweisung gedacht und dies aber wieder verworfen da diese doch mehr im EventHandler eine Rolle spielt.
Jetzt bin ich bei IFEQ gelandet und dachte da könnte man was mit machen. Meine Annahme geht dahin das die Funktion in den PV ablaufen soll.
Code: <ProcessVars>
<LD a1="/Process/Bus1/Device_0/DeviceState"/> <IFEQ _="0"> <LD _="®/Process/Bus1/Device_0/SecondaryAddr"/> <ST _="/Process/PV/DynSecAdr0"/> <ELSE/> <LD _="1"/> <ST _="/Process/PV/DynSecAdr1"/> <ENDIF/>
<DynSecAdr0 def="0"/>
<DynSecAdr1 def="0"/>
</ProcessVars>
ST setzt ja die Variable auf den Wert aus dem <LD _="®/Process/Bus1/Device_0/SecondaryAddr"/>
So richtig kann ich auch nicht einordnen ob die IFEQ für diese Aufgabe überhaupt funktioniert. Habt ihr einen kleinen Denkanstoß?
|
|
|
|
|
|