IP-Symcon ELV2 Modul

Einsatz:

Implementierung von verschiedenen zusätzlichen ELV-Geräten (Devices)  in IP-Symcon 

Download: www.tdressler.net

Komponenten:

Kompatibilität und Voraussetzungen

Installation

Bei einem Update ist der IPS-Dienst als erstes zu stoppen.
Die Datei ELV2.dll muss in das IP-Symcon-“modules“-Unterverzeichnis kopiert werden. Ist das Verzeichnis noch nicht vorhanden, muss es manuell im IP-Symcon Hauptverzeichnis angelegt werden. Anschließend muss der IPS-Dienst neu gestartet werden.

Konfiguration:

Zunächst muss eine Instance für das passende Gerätemodul für die eingesetzte Hardware ausgewählt und angelegt werden. Dazu (entsprechend der jeweils gültigen IP-Symcon-Dokumentation ) in der Verwaltungskonsole "Objekt hinzufügen"->"Instanz-Hinzufügen" auswählen. Bei einem Splitter oder IO-Modul muss die Option "Alle Module anzeigen" gesetzt sein. Dort kann das entsprechende Modul selektiert werden. Erscheint der Name des gewünschten Module als neben "Modulname:" kann der Dialog mit Weiter verfollständigt werden.

SplitterModul auswählen

Bild zeigt Auswahl für WS300 Splittermodul

Anschließend muss die Konfiguration überprüft werden. Bei Bedarf legen sich einige Module eine passende "Übergeordnete-Instanz" an, verwendet aber bevorzugt schon vorhandene kompatible Parents. Diese Auswahl muss unbedingt geprüft und ggf. korrigiert werden.  

Wichtig: Sind im System schon kompatible-IO-Instanzen vorhanden, wird sich das Modul diese Instanz bei Neuanlage als parent suchen. Das kann leider dazu führen, das deren Konfiguration geändert wird. Diese Konflikte müssen z.Z. manuell evtl. mit einer Neuanlage einer IO-Instanz und deren Zuweisung an das Device gelöst werden (siehe "Bekannte Probleme"

Die eingestellte Konfiguration muss nun noch mit "Übernehmen" und "OK" bestätigt werden. Evtl. noch notwendige Zusatzkonfigurationen können leider auf Grund einer Beschränkung des aktuellen IP-Symcon-SDK nicht auf diesen Seiten vorgenommen, aber über PHP-Funktionen eingestellt werden. Dazu ist die Modulreferenz zu konsultieren.

Bei einer richtigen Verknüpfung von Parent (IO-Modul) und Splitter ist von nun an ein Datenempfang und Verarbeitung möglich. Zur Nutzung ist teilweise die Erstellung eines geeigneten PHP-Skriptes notwendig, in dem die Gerätespezifischen Funktionen ausgewählt und Aktiviert werden können(siehe Referenz) Bei Problemen und Fehlanzeigen liefert die Debug-Funktion wertvolle Hinweise 



Referenz

1.FS20PCS und FS20PCE

Funktion

Diese Splittermodule verbinden existierende FS20-Instancen mit den USB FS20 Sender FS20PCS (Art. 085861) bzw. dem USB FS20 Empfänger FS20PCE (Art. 085853)



Status-Variablen

keine Statusvariablen implementiert

Konfiguration

FS20PCS HID Modul FS20PCE HID Modul
FS20PCS Splitter Modul FS20PCE Splitter Modul
FS20 Schalter Device FS20 FB Device


Das FS20Gerät wurde manuell angelegt,die FS20PCE-Geräte automatisch (auch wenn der Device Screen das nicht vorsieht :-)))

automatisch erstellte Instancen

FS20x Instancen

PHP-Funktionen

2.USB-SI1

Funktion

Schaltet eine 220V Steckdose über USB (Artikel 084700, nicht mehr lieferbar)

Status-Variablen

Konfiguration




PHP-Funktionen

Alle Funktionen haben im PHP den Präfix "SI1_"

Die Syntax orientiert sich an den bekannten FS20-Geräten.

Beispiel: SI1_SwitchMode(false); //Aus

3.ULA200

Funktion

Dieses Device dient zur Ansteuerung der ELV USB-LCD-Ansteuerung ULA200 (Artikel-Nr. 572-39, nicht mehr lieferbar)
Damit kann ein man übliches LCD-Display mit max 80 Zeichen gesamt (4x20) ansteuern und 6 masseaktive Kontakte (Tasten) gemeldet bekommen.

Status-Variablen

Konfiguration




PHP-Funktionen

Alle Funktionen haben im PHP den Präfix "ULA200_"

Beispielscript

<?
//File: ULA200_Test.ips.php

$res=ULA200_CLS(62671); //Screen löschen
  $res=ULA200_LCDBacklight(62671,true); //Hintergrundbeleuchtung einschalten
  $res=ULA200_LCDSendText(62671,'Hallo'); //Text ausgeben
  sleep(2); //warten 2s
  $res=ULA200_LCDGoto(62671,0,2); //Setzt Cursor in Zeile 3, Spalte 0
  $res=ULA200_LCDSendText(62671,'Now waiting...');
  sleep(5); //warten 5s
  $res=ULA200_LCDBacklight(62671,false); //Hintergrundbeleuchtung aus
  $res=ULA200_LCDCLS(62671); //Screen löschen
?>

4. UIO88

Funktion

Dieses Device dient zur Ansteuerung des ELV USB-Interfaces UIO88 (Artikel-Nr. 539-64, nicht mehr lieferbar)
sowie des seriellen Vorläufers IO88 (Artikel-Nr. 472-69, nicht mehr lieferbar). Damit kann man 8 Eingänge abfragen und 8 Ausgänge ansteuern.

Status-Variablen

Konfiguration




PHP-Funktionen

Alle Funktionen haben im PHP den Präfix "UIO88_"

Beispielscript



<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File    : UIO88_Test.ips.php
Trigger :
Interval:
*/
echo "Try to get state of Input channels\r\n";
$res=UIO88_GetInput(16870);
if ($res<0) {
   echo "Operation failed:".$res."\r\n";
}Else {
    echo "Return Input State:".$res."\r\n";
}
echo "Try to get state of Output channels\r\n";
$res=UIO88_GetOutput(16870);
if ($res<0)  {
      echo "Operation failed:$res\r\n";
}Else {
   echo "Return Output State:$res\r\n";
}

echo "set Output to 55hex ='01010101'\r\n";
$res=UIO88_SetOutput(16870,85);
if ($res<0)  {
    echo "Operation failed:$res\r\n";
} Else {
   echo "Return Output now:$res\r\n";
}

echo "set Bit 7 Output \r\n";
$res=UIO88_SetOutputBit(16870,7,true);
if ($res<0) {
   echo "Operation failed:$res\r\n";
} Else {
   echo "Return Output now:$res\r\n";
}

echo "reset Bit 7 Output \r\n";
$res=UIO88_SetOutputBit(16870,7,false);
if ($res<0){
   echo "Operation failed:$res\r\n";
} Else{
   echo "Return Output now:$res\r\n";
}
?>

5. UAD8

Funktion

Dieses Device dient zur Ansteuerung des ELV USB 8-Kanal Analog/Digital-Wandlers UAD8(Artikel-Nr. 563-72, nicht mehr vom Hersteller lieferbar).
Damit kann man auf maximal 8 Kanälen eine Spannung von 0-2,5V mit 8bit Auflösung angezeigt bekommen.

Status-Variablen

für alle Sensoren

Konfiguration




PHP-Funktionen

Alle Funktionen haben im PHP den Präfix "UAD8_"

Beispielscript

<?

//UAD8_Test.ips.php
$channel=1;
$res=UAD8_ActivateChannel(45933,$channel,true); //activiere Kanal1
$data=UAD8_GetData(45933,$channel);  //Kanal 1 abfragen
If ($data<0) {
   echo “Kanal: ”.$channel.”-> Error: ”.$data.”\n”;
} else {
   echo "Kanal ".$channel.” -> ”.$data .” Volt\n”;
}

?>

6.M232

Funktion

Dieses Device dient zur Ansteuerung des seriellen ELV Interfaces M232 (Artikel-Nr. 292-30, nicht mehr lieferbar). (Anleitung hier: hier (http://www.elv-downloads.de/service/manuals/M232/M232_UM_G_020423.pdf) )

Damit kann man 8 digitale IO Ports ansteuern/abfragen(5V Logik) und 6 Analoge Kanäle (0-5V) mit 10Bit wandeln. Ein IO-Port ist als 16Bit-Zähler verwendbar.



Status-Variablen

Konfiguration




PHP-Funktionen

Alle Funktionen haben im PHP den Präfix "M232_"

Beispielscript

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File    : M232_Test.ips.php
Trigger : 
Interval: 
*/
 
echo "set Output to 55hex ='01010101'\r\n";
$res=M232_SetIOByte(23879,85);
if ($res<0)  {
    echo "Operation failed:$res\r\n";
} Else {
   echo "Return Output now:$res\r\n";
}

echo "Try to get state of Output channels\r\n";
$res=M232_GetIOByte(23879);
if ($res<0)  {
      echo "Operation failed:$res\r\n";
}Else {
   echo "Return IO State:$res\r\n";
}

echo "Try to start counter\r\n";
$res=M232_SetCounter(23879,true);
if ($res<0)  {
      echo "Operation failed:$res\r\n";
}Else {
   echo "Return State:$res\r\n";
}

echo "set Bit 0 \r\n";
$res=M232_SetIOBit(23879,0,true);
if ($res<0) {
   echo "Operation failed:$res\r\n";
} Else {
   echo "Return now:$res\r\n";
}

echo "Try to get state of IBit 0\r\n";
$res=M232_GetIOBit(23879,0);
if ($res<0) {
   echo "Operation failed:".$res."\r\n";
}Else {
    echo "Return Input State:".$res."\r\n";
}
 
echo "reset Bit 0  \r\n";
$res=M232_SetIOBit(23879,0,false);
if ($res<0){
   echo "Operation failed:$res\r\n";
} Else{
   echo "Return Output now:$res\r\n";
}

echo "retrieve Counter \r\n";
$res=M232_GetCounter(23879);
if ($res<0) {
   echo "Operation failed:".$res."\r\n";
}Else {
    echo "Return Counter:".$res."\r\n";
}

echo "Start Analog  \r\n";
$res=M232_StartAnalog(23879,2);
if ($res<0){
   echo "Operation failed:$res\r\n";
} Else{
   echo "Return Output now:$res\r\n";
}

echo "Retrieve  Analog Value Channel 1\r\n";
$res=M232_GetAnalog(23879,1);
if ($res<0){
   echo "Operation failed:$res\r\n";
} Else{
   if ($res<65536) {
      echo "Return Analog Port 1 new Value:$res\r\n";
   } else {
      $res=$res-65536;
       echo "Return Analog Port 1 old Value:$res\r\n";
   }
}

echo "Retrieve  Analog Value Channel 1 again\r\n";
$res=M232_GetAnalog(23879,1);
if ($res<0){
   echo "Operation failed:$res\r\n";
} Else{
   if ($res<65536) {
      echo "Return Analog Port 1 new Value:$res\r\n";
   } else {
      $res=$res-65536;
       echo "Return Analog Port 1 old Value:$res\r\n";
   }
}
?>

Zusätzliche Informationen


Statuscodes

Bekannte Probleme



Stand Dokumentation: Version 2.5.66 02.05.2012

Index
Disclaimer
© 2009-2012 Thomas Dreßler
Alle Rechte vorbehalten
letzte Änderung 02.05.2012