Autor |
Nachricht |
Tixi-Support
|
Verfasst: Di Mai 29, 2007 3:58 pm |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Dann bitte mal ein EventState anlegen, welches mit der Prozessvariable verknüpft ist.
[<SetConfig _="PROCCFG" ver="y">
<EventStates>
<DevID_STATE>
<Enabled _="TRUE"/>
<ProcessVar _="/Process/PV/DevID"/>
<Event _="DevID"/>
</DevID_STATE>
</EventStates>
</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: Di Mai 29, 2007 3:52 pm |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Also ich habe die Änderungen in den ProzessVariablen wie folgt vorgenommen:
[<SetConfig _="PROCCFG" ver="y">
<ProcessVars>
<DevID>
<Value>
<LD _="/Process/Bus1/Device_0/DevID"/>
<ST _="/Process/Bus1/Device_0/Var1"/>
</Value>
</DevID>
</ProcessVars>
</SetConfig>]
Und die External sieht so:
[<SetConfig _="PROCCFG" ver="y">
<External>
<Bus _="COM2" protocol="ABB,BIN" type="master" baud="1200"
handshake="RTSDTRPower" format="8O1" >
<Device _="0" Name="FlowMeter1" 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" />
<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" />
Leider wird der Wert der Variablen DevID nicht in die Variable Var1 übernommen. Zumindest wird der der Wert nicht in den Request eingetragen.
Ab der Stelle wo der Wert eingefügt werden soll, wird einfach das folgende Byte des Request geschrieben. Ich kann mir den Request anzeigen lassen, der wie folgt aussieht:
|FF FF FF FF FF|82|92 08 00 00 03|00|1B|
Das 5.Byte im Adressfeld mit dem Wert "03" ist eigentlich das Kommando 3 und sollte ein Byte später stehen, und der Wert von DevID an der Stelle.
|
|
|
|
|
Tixi-Support
|
Verfasst: Di Mai 29, 2007 3:24 pm |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
In der External ist keine weitere Änderung notwendig, Sie müssen nur in Ihrem Beispiel das def="DevID" entfernen.
In die Datenbank der Prozessvariablen muss weiterhin das oben angegebene Beispiel kopiert werden.
Eigentlich sollte das ausreichen, wenn nicht, bitte nochmal melden.
_________________ 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 3:15 pm |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Können Sie mir auch sagen, wie die Anweisung in der External auszusehen hat bzw. ob an anderer Stelle im Programm noch Änderungen vorzunehmen sind.
|
|
|
|
|
Tixi-Support
|
Verfasst: Mi Mai 16, 2007 10:53 am |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Es gibt doch eine Lösung:
Sie müssen den Wert von DevID, welchen Sie beim ersten Request erhalten, über eine Prozessvariable in die Variable Var1 kopieren, welche ja als Teil des zweiten Requests (%1%) verwendet wird.
Die Prozessvariable erzeugen Sie in der ProcessVars Datenbank:
[<SetConfig _="PROCCFG" ver="y">
<ProcessVars>
<DevID>
<Value>
<LD _="/Process/Bus1/Device_0/DevID"/>
<ST _="/Process/Bus1/Device_0/Var1"/>
</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: Mo Mai 14, 2007 7:37 am |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Mit dem ersten Request (Commando 0) wird unter anderem die Geräteadresse (DevID) ausgelesen. Da die Geräteadresse verändert werden kann, sollte sie permanent abgefragt.
Mit jedem folgenden Request sollen Messgrössen die das Gerät erfasst, ausgelesen werden. Dazu werden weitere Requests an das Gerät gesendet (Commando 3). Damit aber der Request ankommt, muss die Geräteadresse in das Adressfeld des Request eingebaut werden. Sollte nun aber jemand die Geräteadresse verändern, soll das erkannt werden und eben im Adressfeld des zu sendenden Requests mit übernommen werden.
|
|
|
|
|
Tixi-Vertrieb
|
Verfasst: Sa Mai 12, 2007 7:44 am |
|
Registriert: Do Jul 14, 2005 9:19 am Beiträge: 29 Wohnort: Berlin
|
Mich würde interessieren, was Sie hier machen wollen.
Können Sie das genauer beschreiben, vielleicht gibt es ja andere Lösungen.
hema0077 hat geschrieben: Ich sende einen Request um gerätespezifische Informationen auszulesen.
<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" />
Im nächsten Request soll nun der Wert aus der Variablen "DevID" mit eingebaut werden.
<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" def="DevID" />
Ich weiss das die Anweisung def="DevID" nicht funktioniert. Es soll nur darauf verweisen, wo der Variablenwert in diesem Request eingesetzt werden soll.
Können Sie mir sagen wie ich den Wert von der Variablen "DevID" an die Stelle des Platzhalters setzen kann.
_________________ Tixi Vertriebs-Team
Vertriebs-Anfragen bitte an Info-D@Tixi.Com
|
|
|
|
|
Tixi-Support
|
Verfasst: Fr Mai 11, 2007 10:00 am |
|
Registriert: Mo Jul 11, 2005 5:50 pm Beiträge: 1351 Wohnort: Berlin
|
Sorry, da müssen wir ausnahmsweise vorerst einmal passen. Die External wird beim Start einmalig eingelesen, und kann daher nicht dynamisch verändert werden.
Falls es um ein größeres Projekt geht, kann sowas ggf. über einen kostenpflichtigen Entwicklungsauftrag (Mail an Vertrieb) realisiert 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
|
|
|
|
|
hema0077
|
Verfasst: Fr Mai 11, 2007 9:44 am |
|
Registriert: Mi Apr 11, 2007 12:21 pm Beiträge: 71
|
Ich sende einen Request um gerätespezifische Informationen auszulesen.
<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" />
Im nächsten Request soll nun der Wert aus der Variablen "DevID" mit eingebaut werden.
<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" def="DevID" />
Ich weiss das die Anweisung def="DevID" nicht funktioniert. Es soll nur darauf verweisen, wo der Variablenwert in diesem Request eingesetzt werden soll.
Können Sie mir sagen wie ich den Wert von der Variablen "DevID" an die Stelle des Platzhalters setzen kann.
|
|
|
|
|
|