Modbus Instanzen per Script erstellen

Hallo Zusammen,

ich muss für diverse Heizungsanlagen entsprechende Modbus-Instanzen erstellen.
Da es wohl leider keinen Im- und Export gibt, und das alte Script von Raketenschnecke nicht mehr richtig funktioniert, wollte ich die Erstellung mit einem Script automatisieren.
Für Modbus habe ich bei der Suche das hier gefunden

Das scheint aber alt zu sein, da sich die Befehle entsprechend geändert haben.

In der Modulübersicht Modbus RTU/TCP — IP-Symcon :: Automatisierungssoftware
ist beschrieben, welche Parameter vorhanden sind und händisch eingetragen werden können.
Ich habe aber keine Liste gefunden, wie diese Parameter in einem Script-Aufruf heißen würden.

Auch das STRG-Space half mir hier nicht weiter.

Könnte mir da vielleicht jemand einen Code-Schnipsel zur Verfügung stellen und mir ggf. zeigen, wo ich zukünftig die Parameter für die einzelnem Module finden kann ?

Vielen Dank vorab

bastelfrosch

In der Dokumentation gibt es einen Abschnitt welcher alle Befehle zum konfiguieren von Instanzen enthält:
https://www.symcon.de/service/dokumentation/befehlsreferenz/instanzenverwaltung/konfiguration/
Hier sind auch für alle* Module die Parameter für die Konfiguration beschrieben.
Michael
*Nicht für PHP-Module der Community

Bitteschön

<?php

	$id_Kategorie = 42199;
	$adresse_1    = 44640;          // erste Adressen Nummer  ab Adresse
	$anzahl       = 16;            // Anzahl der zu erstellenden Instanzen
	$datenTyp     = 0;             // 0=Bit, 1=Byte, 2=Word, 3=DWord, 4=ShortInt, 5=SmallInt, 6=Integer, 7=Real
	$modulName1   = "ADR_";        // 1.Bezeichnung der Variable
	$modulName2   = "_MX2022.";    // 2. Bezeichnung der Variable
	$adresse_2    = 00;            // Ein / Aus Nr.
	$time         = 200;           // Aktualisierungzeit in ms
	$id_Gateway   = 51977;
	
	for($i=0; $i<$anzahl; $i++) {
		$num1adresse = zerofill($adresse_1);
		$num2adresse = zerofill($adresse_2);
		$neueInstanz = IPS_CreateInstance("{CB197E50-273D-4535-8C91-BB35273E3CA5}");
		IPS_SetName($neueInstanz, $modulName1.$num1adresse.$modulName2.$num2adresse."_");
//		IPS_SetName($neueInstanz, $modulName1.$num1adresse.$modulName2."_");

		# ModBus_SetType($neueInstanz, $datenTyp);
		IPS_SetProperty($neueInstanz, 'DataType', $datenTyp);
		IPS_SetProperty($neueInstanz, 'EmulateStatus', 1);			// hierzu noch eine Variable anlegen
		IPS_SetProperty($neueInstanz, 'Factor', 0);					// hierzu noch eine Variable anlegen
		# ModBus_SetPoller($neueInstanz, $time);
		IPS_SetProperty($neueInstanz, 'Poller', $time);
		# ModBus_SetReadAddress($neueInstanz,  $adresse_1);
		IPS_SetProperty($neueInstanz, 'ReadAddress', $adresse_1);
		IPS_SetProperty($neueInstanz, 'ReadFunctionCode', 1);		// hierzu noch eine Variable anlegen
		# ModBus_SetWriteAddress($neueInstanz, $adresse_1);
		IPS_SetProperty($neueInstanz, 'WriteAddress', $adresse_1);
		IPS_SetProperty($neueInstanz, 'WriteFunctionCode', 5);		// hierzu noch eine Variable anlegen

		IPS_ApplyChanges($neueInstanz);
	 	IPS_SetParent($neueInstanz, $id_Kategorie);
		IPS_DisconnectInstance($neueInstanz);
	 	IPS_ConnectInstance($neueInstanz, $id_Gateway);
 		IPS_SetPosition($neueInstanz, floatval($adresse_1) );
	 	$adresse_1++;
	 	$adresse_2++;
	 	IPS_Sleep(1500);
	}
// 	============================================================================
	function zerofill ($num, $zerofill = 2) {
		return str_pad($num, $zerofill, '0', STR_PAD_LEFT);
	}

1 „Gefällt mir“