2016-04-05 7 views
0

Ich versuche herauszufinden, wie man verschiedene Werte von einem Modbus-Gerät (Powerscout 24) für verschiedene Elemente liest. Es ist ein manuelles here dieVerschiedene Elemente von Modbus-TCP lesen

sagt Adressieren einem ELEMENT

Die PowerScout 24 acht Elemente. Modbus und BACnet verwenden jeweils verschiedene Möglichkeiten, ein Element am PS24 zu bezeichnen. Im Modbus-Modus stellen die dezimalen Netzwerkschalter die Basisadresse für das Messelement "A" ein. Die Messelemente "B" bis "H" haben immer eine Modbus-Adresse , die um eins höher ist als das vorhergehende Element. Wenn z. B. die Drehadressenschalter auf 001 gesetzt sind, wird auf Messelement "A" Registerwerte unter Modbus-Adresse 001, Element "B" Register unter Modbus-Adresse 002, Element "C" unter zugegriffen Adresse 003, und so weiter.

Also von meinem Verständnis, wenn ich will, um den Wert an Register 4012 auf Element A (oder Slave 1) würde ich liest das Halteregister bei 4012

lesen Wenn i Elemente B lesen wollte, das Register wäre 4013? Aber wie kann das sein, 4013 wird für einen anderen Wert verwendet - Displacement PF System. (Überprüfen Sie oben auf der Seite 65)

Ich habe versucht, mit dieser Bibliothek EasyModbusTCP

ModbusClient modbusClient = new ModbusClient("192.168.1.250", 502); //Ip-Address and Port of Modbus-TCP-Server 
modbusClient.Connect();              
int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters(4000,1); 
//Read 10 Holding Registers from Server, starting with Address 1 

ich dies habe getestet und es funktioniert in dem Sinne, dass es nur Register für Element A lesen kann (Slave 1) . Ich konnte nicht herausfinden, wie man Register für die anderen Elemente liest.

Ich überprüfte den anderen Teil der Bibliothek (RTU - lesen von seriellen Schnittstellen) und dies definiert einen Slave zu lesen, aber ich muss das Gerät über TCP nicht seriell lesen, so kann ich es auf diese Weise nicht implementieren.

Kann mir jemand erklären, wie ich verschiedene Elemente über TCP lesen kann?

Antwort

0

So fand ich eine Lösung zum Lesen bestimmter Elemente (Slaves). Aus dem easy modbustcp können Sie den UnitIdentifier des Modbus-Clients ändern.

modbusClient.UnitIdentifier = 3; 

Dadurch werden Lesevorgänge auf dem Modbus-Client vom 3. Element gelesen.