AVR NET IO Fehler

Hallo an Alle,

kann mir jemand helfen. Ich will die AVR Karte Abfragen und ich bekomme immer folgende Fehlermeldungen:

Warning: Variable mit Namen „REGVAR_AVR1“ existiert nicht in C:\IP-Symcon\IP-Symcon\scripts\44456.ips.php on line 3

Warning: Variable #0 existiert nicht in C:\IP-Symcon\IP-Symcon\scripts\44456.ips.php on line 11

Warning: Variable mit Namen „AVR1PORT 1“ existiert nicht in C:\IP-Symcon\IP-Symcon\scripts\44456.ips.php on line 21

Hier der Code:

<?
$regvarname=„REGVAR_AVR1“;
$regvarID=IPS_GetVariableID($regvarname);

for ($port=1;$port<5;$port++)
{

$varname=„AVR1PORT $port“;

SetValue($regvarID,"$varname:");

$result = CSCK_SendText(11746 /[AVR_1]/, "GETPORT ".$port);

IPS_sleep(1);

/list($varname,$value)=split(’:’,GetValuestring($regvarID));/

$value = substr($value, 0, -2);

$varid=IPS_GetVariableID($varname);
SetValue($varid,$value);

}

?>

Die Variablen habe ich alle angelegt.

Danke für Eure Hilfe Dirk

Hallo zman0801,

kannst Du bitte mal einen Screenshot deines Objektbaumes (mit den AVR-Variablen, Clientsocket …) hochladen.

Hab die Variablen angelegt und Dein Script mal getestet - läuft eigentlich (ohne angeschlossenen AVR) mit zwei Änderungen:

Zeile 9 + 11:

$varname="AVR1PORT".$port;

SetValue($regvarID,$varname);

Hallo Ernst

hier ist mein Objektbaum.

Wenn ich die Variable als normale Variable anlege geht es aber sobald ich sie als Registervariable anlege kommt der Fehler.

Danke schon mal für deine Hilfe

Dirk

Hallo Dirk,

ich glaub da musst Du ein bischen umdenken.

Das Handling mit den Registervariablen hat sich etwas geändert.

Schau Dir bitte mal dieses hier an:

RegisterVariable - IP-Symcon :: Automatisierungssoftware

GetValuestring($regvarID) geht so nicht mehr. Der Registervariablen kann keine Puffervariable mehr zugewiesen werden.

Die Registervariable startet ein Script, in dem Du mittels $IPS_VALUE die übergebenen Daten von der Registervariablen übernehmen kannst.

Danke Ernst ich werde es versuchen.

Schönen Abend!

Hallo zusammen,

ich habe mir den AVR NET IO mit der Software von EHB gebrannt. Dank an EHB für die gute Anleitung und die geleistete Arbeit.

Es gibt noch ein kleines Problem mit den scripts.

Das sind die Fehlermeldungen in der Console.

Notice: Use of undefined constant VariableValue - assumed ‚VariableValue‘ in C:\Programme\IP-Symcon\scripts\59313.ips.php on line 53

Notice: Use of undefined constant VariableUpdated - assumed ‚VariableUpdated‘ in C:\Programme\IP-Symcon\scripts\59313.ips.php on line 55

/*
*******************************
 IP-SYMCON V2 Event Scripting
*******************************
File     : AVR-NET-IO_Include
Trigger  : Einbindung in andere AVR-NET-IO - Scripte
Interval :
Autor    : EHB
*/

// Variablen definieren ********************************************************
$RegVar_ID = 32796 /*[AVR-NET-IO Cutter\Register Variable]*/; // ID dieses Scripts
$CS_ID = 53793 /*[AVR-NET-IO]*/; // Client-Socket-ID für AVR-NET-IO-Modul

// Namen der Eingangsvariablen
$PortName[0] = "Schalter 0";  // Boolean
$PortName[1] = "Schalter 1";  // Boolean
$PortName[2] = "Schalter 2";  // Boolean
$PortName[3] = "Schalter 3";  // Boolean
$PortName[4] = "Messwert 4"; 	// Integer
$PortName[5] = "Messwert 5";  // Integer
$PortName[6] = "Messwert 6";  // Integer
$PortName[7] = "Messwert 7";	// Integer
// Namen der Ausgangsvariablen
$Ausgang[0] = "Ausgang 0";    // Boolean
$Ausgang[1] = "Ausgang 1";    // Boolean
$Ausgang[2] = "Ausgang 2";    // Boolean
$Ausgang[3] = "Ausgang 3";    // Boolean
$Ausgang[4] = "Ausgang 4";    // Boolean
$Ausgang[5] = "Ausgang 5";    // Boolean
$Ausgang[6] = "Ausgang 6";    // Boolean
$Ausgang[7] = "Ausgang 7";    // Boolean
$Ausgang[8] = "AVR-NET-IO-OK"; // Zustand der Verbindung zum Modul

$Var_ID_NETIO_OK = IPS_GetVariableIDByName($Ausgang[8],$RegVar_ID); // ID der Zusatndsvariable ermitteln

// Befehls-String an Modul senden **********************************************
function Befehl_senden($CS_ID,$Var_ID_NETIO_OK,$String)
{
	// Variablen setzen
	$OK = false;
	$i = 0;
	while ((!$OK) && ($i <= 5))
	{
	   SetValue($Var_ID_NETIO_OK, false); 		// OK-Variable auf false setzen
      IPS_LogMessage("Durchlauf : ",$i."  - String: ".$String);
      CSCK_SendText($CS_ID,$String); 			// Befehl senden
  		$SendeZeit = microtime(1); // Zeit übernehmen, zu der der String gesendet wurde
  		IPS_LogMessage("Sendezeit : ",$SendeZeit);
  		IPS_Sleep(300);	 							// Pause
		$VarInfo = IPS_GetVariable($Var_ID_NETIO_OK); // Variablen-Infos übernehmen
		$VarWert = $VarInfo[VariableValue][ValueBoolean]; 		// Wert der Variable übernehmen
		IPS_LogMessage("VarWert : ",$VarWert);
		$VarZeit = $VarInfo[VariableUpdated]; 	// Zeit der letzten Aktualisierung
		IPS_LogMessage("VarZeit : ",$VarZeit);
		if (($VarZeit >= $SendeZeit) && ($VarWert == true)) 	// Antwort vom Modul OK und neuer als Sendezeit
		{
		  	$OK = true;             				// Schleife verlassen
		 	IPS_LogMessage("OK ? : ",$OK);
		 }
		$i++;                         			// Versuchszähler erhöhen
	}
	if ($i >= 6) // 6 Versuche - keine Antwort
	{
   	IPS_LogMessage(IPS_GetName($IPS_SELF)," Keine Antwort vom Modul!");
   	SetValue($Var_ID_NETIO_OK, false);
   	return($OK); // Funktion verlassen, Senden nicht Erfolgreich
	}
return($OK); // Funktion verlassen, Senden Erfolgreich
}
<?
/*
*******************************
 IP-SYMCON V2 Event Scripting
*******************************
File     : AVR-NET-IO_Abgleich
Trigger  : Aufruf durch AVR-NET-IO_Uebernahme - Befehl 03 (Modul / Telnet neu gestartet
Interval : 
Autor    : EHB
*/

// ID der Registervariablen (Parent-ID)
$RegVar_ID = 32796 /*[AVR-NET-IO Cutter\Register Variable]*/;

// Grundeinstellungen und Funktionen einbinden
include(IPS_GetScriptIDByName("AVR-NET-IO_Include",$RegVar_ID).".ips.php");

IPS_Sleep(2000); // 2 Sekunden warten - sonst Empfangsprobleme des Moduls

// Zustände der Ausgänge anpassen
for ($i = 0; $i < 8; $i++) 
{
	$VarWert[$i] = GetValue(IPS_GetVariableIDByName($Ausgang[$i],$RegVar_ID));
	$Befehl = 26 - $VarWert[$i]; // 25 = Setzen, 26 = Rücksetzen Port; True = 1, False = 0
	$Befehl_ok = Befehl_senden($CS_ID,$Var_ID_NETIO_OK,"02 ".$Befehl." 0".$i." 03
");
}

// Eingänge abfragen
for ($i = 0; $i < 4; $i++) // Digitale Eingänge
{
	Befehl_senden($CS_ID,$Var_ID_NETIO_OK,"02 11 0".$i." 03
"); // Digitalen Eingang 0 .. 3 abfragen
}

for ($i = 4; $i < 8; $i++) // Analoge Eingänge
{
	Befehl_senden($CS_ID,$Var_ID_NETIO_OK,"02 30 0".$i." 03
"); // Analogen Eingang 4 .. 7 abfragen
}
?>

Das script Abgleich wird als Fehlerhaft gekennzeichnet!!

IPS ist die Vers.2.30 und Build vom 6.9.10 #1748

LG Manfred

dann mach doch wie im log geschrieben die ‚‘ dahin, dann ist die Meldung auch weg.

Hallo Rainer,

das sind die Zeile 53 - 55 wo fehlen die „“ ?

		$VarWert = $VarInfo[VariableValue][ValueBoolean]; 		// Wert der Variable übernehmen
		IPS_LogMessage("VarWert : ",$VarWert);
		$VarZeit = $VarInfo[VariableUpdated]; 	// Zeit der letzten Aktualisierung

LG Manfred

So muss es heißen:

		$VarWert = $VarInfo['VariableValue']['ValueBoolean']; 		// Wert der Variable übernehmen
		IPS_LogMessage("VarWert : ",$VarWert);
		$VarZeit = $VarInfo['VariableUpdated']; 	// Zeit der letzten Aktualisierung

Hallo,
danke für die schnelle Antwort.

   $Port = (int) $Parameter[1]; 		// Portnummer übernehmen
   $Zustand = (int) $Parameter[2];  // Messwert / Zustand des Ports übernehmen

Das muss vermutlich so heissen ?

   $Port = int($Parameter[1]); 		// Portnummer übernehmen
   $Zustand = int($Parameter[2]);  // Messwert / Zustand des Ports übernehmen

oder intval ?

LG Manfred