Autor |
Nachricht |
hema0077
|
Verfasst: Fr Jun 01, 2007 11:42 am |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Nachdem ich die unteren 6 Bit des Wertes aus der Variablen ManfID erhalten habe, muss ich wieder auf ein Byte kommen. Dazu muss das Bit 7 und 8 auf Eins gesetzt werden. Dazu dachte ich nehme ich die 6 Bit und tue sie ODER-Verknüpfen mit der Bitmaske 192 (1100 0000). Das Ergebnis der ODER-Verknüpfung schreibe ich dann in das Adressfeld wo der Platzhalter %3% steht.
Die Anweisung in der Prozessvariablen, hatte ich so überlegt, funktioniert aber nicht.
<ManfID>
<Value>
<MSK Set1="/Process/Bus1/Device_0/ManfID" BitMsk_1="63"/>
<ST _="/Process/Bus1/Device_0/Set2"/>
<LD _="/Process/Bus1/Device_0/Set2"/>
<OR Set3="/Process/Bus1/Device_0/Set2" BitMsk_2="192"/>
<ST _="/Process/Bus1/Device_0/Set3"/>
</Value>
</ManfID>
Die External sieht folgendermaßen aus:
<Kom3DF _="Float" acc="R" Endian="big"
Request="FF FF FF FF FF 82 %3% %2% 00 00 %1% 03 00 %C%"
CStart="5" CSum="XOR" Pos="20"
ResTime="500ms" CharTime="300ms"/>
<Var1 _="Byte" acc="W" />
<Param1 _="Byte" acc="W" />
<Set3 _="Byte" acc="W" />
|
|
|
|
|
Tixi-Support
|
Verfasst: Fr Jun 01, 2007 9:11 am |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Müsste eigentlich machbar sein:
Gleicher Ablauf wie oben, allerdings fügen Sie in die Prozessvariable statt LD eine Bitmaske MSK ein:
[<SetConfig _="PROCCFG" ver="y">
<ProcessVars>
<DevID>
<Value>
<MSK v1="/Process/Bus1/Device_0/DevID" v2="63"/>
<ST _="/Process/Bus1/Device_0/Var8"/>
</Value>
</DevID>
</ProcessVars>
</SetConfig>]
Die Bitmaske 63 (0011111111) filtert die ersten 6 Bits aus dem Byte raus.
Der Wert der gesetzten Bits wird dann mittels ST in Var8 geschrieben.
Sie müssen das ganze nurnoch mit Ihren bisherigen Prozessvariablen kombinieren...
_________________ 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
|
|
|
|
|
hema0077
|
Verfasst: Do Mai 31, 2007 2:15 pm |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Ich möchte noch einen Variablenwert in das Adressfeld schreiben, jedoch brauch ich nur die untersten 6 Bit aus der Variablen "ManfID".
Lassen sich diese 6 Bit herauslesen und in eine andere Variable schreiben, wie es bereits bei der Variablen DevID nur als Byte jedoch umgesetzt wurde.
|
|
|
|
|
hema0077
|
Verfasst: Mi Mai 30, 2007 2:30 pm |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Super klappt wunderbar, ich bedanke mich!!!
|
|
|
|
|
Tixi-Support
|
Verfasst: Mi Mai 30, 2007 2:03 pm |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Sie müssen sich das wie einen Turm aus Bauklötzen vorstellen:
LD packt einen Klotz drauf, ST nimmt einen Klotz runter.
ST funktioniert folglich nur dann, wenn noch Bauklötzer vorhanden sind.
Durch MPS wird der oberste Bauklotz gecloned (verdoppelt).
Am Ende darf nicht mehr als ein Klotz übrig sein.
z.B.:
LD -> ein Klotz auf dem Turm
MPS -> zwei Klötze auf dem Turm
MPS -> drei Klötze auf dem Turm
MPS -> vier Klötze auf dem Turm
ST -> drei Klötze auf dem Turm
ST -> zwei Klötze auf dem Turm
MPS -> drei Klötze auf dem Turm
ST -> zwei Klötze auf dem Turm
ST -> ein Klotz auf dem Turm
Für Sie heisst das bei 7 Variablen:
[<SetConfig _="PROCCFG" ver="y">
<ProcessVars>
<DevID>
<Value>
<LD _="/Process/Bus1/Device_0/DevID"/>
<MPS/>
<MPS/>
<MPS/>
<MPS/>
<MPS/>
<MPS/>
<ST _="/Process/Bus1/Device_0/Var1"/>
<ST _="/Process/Bus1/Device_0/Var2"/>
<ST _="/Process/Bus1/Device_0/Var3"/>
<ST _="/Process/Bus1/Device_0/Var4"/>
<ST _="/Process/Bus1/Device_0/Var5"/>
<ST _="/Process/Bus1/Device_0/Var6"/>
<ST _="/Process/Bus1/Device_0/Var7"/>
</Value>
</DevID>
</ProcessVars>
</SetConfig>]
_________________ 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
|
|
|
|
|
hema0077
|
Verfasst: Mi Mai 30, 2007 1:52 pm |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Muss dann die Anweisung in den ProcessVariablen so aussehen:
[<SetConfig _="PROCCFG" ver="y">
<ProcessVars>
<DevID>
<Value>
<LD _="/Process/Bus1/Device_0/DevID"/>
<MPS/> <!-- Kopiert den Stackinhalt, damit man danach 2x schreiben kann-->
<ST _="/Process/Bus1/Device_0/Var1"/>
<ST _="/Process/Bus1/Device_0/Var2"/>
<MPS _="/Process/Bus1/Device_0/Var2"/>
<ST _="/Process/Bus1/Device_0/Var3"/>
<ST _="/Process/Bus1/Device_0/Var4"/>
<MPS _="/Process/Bus1/Device_0/Var4"/>
<ST _="/Process/Bus1/Device_0/Var5"/>
<ST _="/Process/Bus1/Device_0/Var6"/>
<MPS _="/Process/Bus1/Device_0/Var6"/>
<ST _="/Process/Bus1/Device_0/Var7"/>
</Value>
</DevID>
</ProcessVars>
</SetConfig>]
|
|
|
|
|
Tixi-Support
|
Verfasst: Mi Mai 30, 2007 1:32 pm |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Dann müssen Sie die Prozessvariable um entsprechend viele MPS und ST-Anweisungen erweitern, und in der External weitere Hilfsvariablen einfügen.
_________________ 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
|
|
|
|
|
hema0077
|
Verfasst: Mi Mai 30, 2007 1:29 pm |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Gut das Ganze funktioniert für eine weitere Variable, wie sieht es aber aus wenn ich die Variable DevID in 7 weitere Requests einbauen möchte.
|
|
|
|
|
Tixi-Support
|
Verfasst: Mi Mai 30, 2007 12:12 pm |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Ich denke, dies wird nicht ohne weitere Hilfsvariablen gehen.
Zunächst erweitern Sie die Prozessvariable:
[<SetConfig _="PROCCFG" ver="y">
<ProcessVars>
<DevID>
<Value>
<LD _="/Process/Bus1/Device_0/DevID"/>
<b><MPS/></b> <!-- Kopiert den Stackinhalt, damit man danach 2x schreiben kann-->
<ST _="/Process/Bus1/Device_0/Var1"/>
<b><ST _="/Process/Bus1/Device_0/Var2"/></b>
</Value>
</DevID>
</ProcessVars>
</SetConfig>]
Dem Request hängen Sie dann wieder die DevID-Variable an:
<DynSlotFloat1 _="Blob" acc="RW" size="1" def="0B"
Request="|FF FF FF FF FF|82|92 08 00 00 %1%|84|01|%0%| %C%|"
Endian="big" CStart="5" CSum="XOR"
ResTime="1s" CharTime="300ms" />
<Var2 _="Byte" acc="W" />
<DynSlotFloat1_Out _="Float" Pos="17" acc="RW"/>
_________________ 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
|
|
|
|
|
hema0077
|
Verfasst: Mi Mai 30, 2007 11:52 am |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Ich möchte jetzt den Wert in der Variablen "Var1" noch in weitere Requests einbauen, wie z.B in den Folgenden:
<DynSlotFloat1 _="Blob" acc="RW" size="1" def="0B"
Request="|FF FF FF FF FF|82|92 08 00 00 00|84|01|%0%| %C%|"
Endian="big" CStart="5" CSum="XOR"
ResTime="1s" CharTime="300ms" />
<DynSlotFloat1_Out _="Float" Pos="17" acc="RW"/>
<DynSlotFloat2 _="Blob" acc="RW" size="1" def="0C"
Request="|FF FF FF FF FF|82|92 08 00 00 00|84|01|%0%|%C%|"
Endian="big" CStart="5" CSum="XOR"
ResTime="1s" CharTime="300ms" />
<DynSlotFloat2_Out _="Float" Pos="17" acc="RW"/>
Und zwar soll der Wert von Var1 wieder in das 5.Byte des Adressfeldes des Requests, wie beim Request für Commando 3.
|
|
|
|
|
hema0077
|
Verfasst: Mi Mai 30, 2007 9:33 am |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
So wie es aussieht, mußte ich nur die Position an der der Wert für die Varible DevID in der Response steht, von 21 auf 22 ändern.
Ich bin Ihnen sehr dankbar für ihre Unterstützung!!!!
|
|
|
|
|
Tixi-Support
|
Verfasst: Mi Mai 30, 2007 8:35 am |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Also wird die DevID beim ersten Request schon nicht gefunden, und kann somit auch nicht umkopiert werden.
Können Sie bitte mal einen Mittschnitt der Kommunikation (erster Request + Antwort) einfügen ?
_________________ 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
|
|
|
|
|
hema0077
|
Verfasst: Mi Mai 30, 2007 8:30 am |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Nach Änderung des Programms, sieht die External folgendermaßen aus:
[<SetConfig _="PROCCFG" ver="y">
<External>
<Bus _="COM2" Name="Bus1" protocol="ABB,BIN" type="master" baud="1200"
handshake="RTSDTRPower" format="8O1" >
<Device _="0" Name="Device_0" Pollrate="10s">
<UniqueID _="Byte" acc="W"
Request="FF FF FF FF FF 02 %0% 00 00 %C%"
CStart="5" CSum="XOR" ResTime="500ms" CharTime="300ms"
ErrDetect="00" ErrDetectOp="NOT" ErrDetectPos="9" ErrPos="9"
ErrType="Byte" def="0x80" Endian="big" simpleType="Uint8" />
<State _="Byte" acc="R" def="0" ErrType="None" Pos="10" />
<DevType _="Byte" acc="R" def="0" Pos="11" />
<ManfID _="Byte" acc="R" def="0" Pos="12" />
<ManfDefType _="Byte" acc="R" def="0" Pos="13" />
<UCRev _="Byte" acc="R" def="0" Pos="14" />
<TrRev _="Byte" acc="R" def="0" Pos="15" />
<SWRev _="Byte" acc="R" def="0" Pos="16" />
<HWRev _="Byte" acc="R" def="0" Pos="17" />
<DevID _="Byte" acc="R" def="0" Pos="21" />
<!--HART-Variablen-Definition -->
<!-- Abfrage Kommando 3-->
<!--KOM3Df: Durchfluss KOM3Vorl: Zaehler>V KOMRueckl: Zaehler <R -->
<Kom3DF _="Float" acc="R" Endian="big"
Request="FF FF FF FF FF 82 92 08 00 00 %1% 03 00 %C%"
CStart="5" CSum="XOR" Pos="20"
ResTime="500ms" CharTime="300ms"/>
<Var1 _="Byte" acc="W" />
Bei Abfrage des Wertes der Variablen DevID kam folgende Antwort:
- <Error>
<ErrNo _="-2194" />
<ErrText _="variable exists, but does not contain valid data" />
- <ErrorCause>
<ErrNo _="-2194" />
<ErrText _="variable exists, but does not contain valid data" />
<Line _="140" />
<Module _="SSet" />
<Class _="TXSTCPGetSetValueCmd" />
</ErrorCause>
</Error>
Und die Abfrage der Variablen Var1 ergab:
<Get _="" />
|
|
|
|
|
Tixi-Support
|
Verfasst: Di Mai 29, 2007 7:49 pm |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Zeigt denn die Abfrage
[<Get _="/Process/<b>Bus1</b>/<b>Device_0</b>/DevID" ver="v"/>]
den Wert korrekt an ?
In Ihrer External passen die "Name" Attribute nicht zu den Pfaden:
[<SetConfig _="PROCCFG" ver="y">
<External>
<Bus _="COM2" <b>Name="Bus1"</b> protocol="ABB,BIN" type="master" baud="1200" handshake="RTSDTRPower" format="8O1" >
<Device _="0" <b>Name="Device_0"</b> Pollrate="10s">
...
_________________ 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
|
|
|
|
|
hema0077
|
Verfasst: Di Mai 29, 2007 4:33 pm |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Hat leider auch nix gebracht.
|
|
|
|
|
|