Immer häufiger erhalten wie die Anfrage, ob wir nicht Daten von M-Bus Geräten an eine SPS übergeben können.
Da die Tixi Alarm Modems bis zu drei Schnittstellen haben (z.B. 2xRS232, 1x M-Bus) kann man natürlich auch zwei unterschiedliche Busse zeitgleich am Modem betreiben (FeaturePack FP-PLC2). Somit lassen sich nicht nur Daten zwischen verschiedenen SPSen austauschen, sondern auch von einem M-Bus Gerät an eine SPS übergeben.
Das dazu notwendige TiXML-Projekt ist wie folgt aufgebaut:
Zunächst legt man die beiden SPS-Protokolle und Variablen in "17-External" fest, z.B. eine Moeller Easy 800 (Ziel-SPS) und ein M-Bus Gerät (Datenquelle):
Code:
[<SetConfig _="PROCCFG" ver="y">
<External>
<Bus _="COM2" BusId="1" protocol="Moeller,Easy 800" baud="9600" type="Master" handshake="SUCOM">
<Device _="0" Name="Device_0" Pollrate="1s">
<MD1 _="MD" acc="RW" def="" ind="1"/>
<MD2 _="MD" acc="RW" def="" ind="2"/>
<MD3 _="MD" acc="RW" def="" ind="3"/>
<MD4 _="MD" acc="RW" def="" ind="4"/>
<MD5 _="MD" acc="RW" def="" ind="5"/>
<MD6 _="MD" acc="RW" def="" ind="6"/>
<MD7 _="MD" acc="RW" def="" ind="7"/>
<MD8 _="MD" acc="RW" def="" ind="8"/>
<MD9 _="MD" acc="RW" def="" ind="9"/>
<MD10 _="MD" acc="RW" def="" ind="10"/>
</Device>
</Bus>
<Bus _="COM3" BusId="2" protocol="MeterBus">
<Device _="1" Name="Device_0" SecondaryAddr="29871013" Pollrate="5s" >
<Variable_1 ind="1"/>
<Variable_2 ind="2"/>
<Variable_3 ind="3"/>
<Variable_4 ind="4"/>
<Variable_5 ind="5"/>
<Variable_6 ind="6"/>
<Variable_7 ind="7"/>
<Variable_8 ind="8"/>
<Variable_9 ind="9"/>
<Variable_10 ind="10"/>
</Device>
</Bus>
</External>
</SetConfig>]
Dann definiert man in "10-EventHandler" ein Event, das alle Variablen des einen Quell-Geräts (M-Bus) auf 10 Variablen des Ziel-Geräts (Easy) umkopiert:
Code:
[<SetConfig _="EVENTS" ver="y">
<EventHandler>
<SetVariables>
<Set _="/Process/Bus1/Device_0/MD1" value="®/Process/Bus2/Device_0/Variable_1;"/>
<Set _="/Process/Bus1/Device_0/MD2" value="®/Process/Bus2/Device_0/Variable_2;"/>
<Set _="/Process/Bus1/Device_0/MD3" value="®/Process/Bus2/Device_0/Variable_3;"/>
<Set _="/Process/Bus1/Device_0/MD4" value="®/Process/Bus2/Device_0/Variable_4;"/>
<Set _="/Process/Bus1/Device_0/MD5" value="®/Process/Bus2/Device_0/Variable_5;"/>
<Set _="/Process/Bus1/Device_0/MD6" value="®/Process/Bus2/Device_0/Variable_6;"/>
<Set _="/Process/Bus1/Device_0/MD7" value="®/Process/Bus2/Device_0/Variable_7;"/>
<Set _="/Process/Bus1/Device_0/MD8" value="®/Process/Bus2/Device_0/Variable_8;"/>
<Set _="/Process/Bus1/Device_0/MD9" value="®/Process/Bus2/Device_0/Variable_9;"/>
<Set _="/Process/Bus1/Device_0/MD10" value="®/Process/Bus2/Device_0/Variable_10;"/>
</SetVariables>
</EventHandler>
</SetConfig>]
Dieses Event soll nun sowohl beim Einschalten des Geräts (Startinitialisierung "FirstCycle) sowie bei jeder Variablenänderung (Systemvariable "ChangeToggle") im Quell-Gerät aufgerufen werden:
Code:
[<SetConfig _="PROCCFG" ver="y">
<EventStates>
<FirstCycle>
<Enabled _="TRUE"/>
<ProcessVar _="/Process/PV/FirstCycle" flank="low"/>
<Event _="SetVariables"/>
</FirstCycle>
<Toggle>
<Enabled _="TRUE"/>
<ProcessVar _="/Process/Bus2/Device_0/ChangeToggle" flank="both"/>
<Event _="SetVariables"/>
</Toggle>
</EventStates>
</SetConfig>]
Damit die Startinitialisierung nicht schon ausgeführt wird, bevor das Modem überhaupt Daten vom M-Bus gelesen hat, wird FirstCycle über eine Prozessvariable verzögert:
Code:
[<SetConfig _="PROCCFG" ver="y">
<ProcessVars>
<FirstCycle>
<Value>
<LDN _="/Process/MB/FirstCycle"/>
<D_ON time="10s"/>
<NOT/>
</Value>
</FirstCycle>
</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