PTZ Kamera Pelco D/P

Hallo an Alle,
hat einer schon mal eine PTZ Kamera seriell angesteuert?
Ich suche eine Funktion für das Protokoll pelco P oder pelco D.

Irgendwie ist das Handling mit Bytes in PHP recht schwierig.

Hier ein link mit der Protokollbescheibung in C.
http://www.codeproject.com/KB/cs/PelcoPDinC.aspx

Ich habe es hingekriegt. Funktioniert einwandfrei.:slight_smile:

Vielleicht kann es ja irgendwann jemand anderes gebrauchen, daher wäre es nett wenn du deine Lösung vorstellen würdest.

Gruß
Jens


//Funktionen zur Steuerung einer Kamera mit PTZ und Pelco-D Protokoll
//Serielle Anbindung über RS232/RS485
//Jede Kamera hat eine ID auf dem seriellen Bus

function PTZCam($ID,$cmd,$delay) {
	$speed = 63; //Bewegungsgeschwundigkeit 0 bis 63
	//zugehörigen Seriellen Port ermitteln
	if ($ID == 1) $ID_CAMPort=24144 /*[DomeCam Hof]*/ ;
	if ($delay <= 0) $delay = 1000;
	switch ($cmd) {
	   case 1: //links
	        $cmd2 = 4;
		$dat1 = $speed;
		$dat2 = 0;
	        break;
	   case 2: //rechts
          	$cmd2 = 2;
		$dat1 = $speed;
		$dat2 = 0;
	        break;
	   case 3: //up
	        $cmd2 = 8;
		$dat1 = 0;
		$dat2 = $speed;
	        break;
	   case 4:  //down
                $cmd2 = 16;
		$dat1 = 0;
		$dat2 = $speed;
	        break;
	   case 5:  //zoomIn
	         $cmd2 = 32;
				$dat1 = 0;
				$dat2 = 0;
	         break;
	   case 6: // Zoom Out
	         $cmd2 = 64;
		 $dat1 = 0;
		 $dat2 = 0;
	         break;
	   Case 0: // stop
	         $cmd2 = 0;
		 $dat1 = 0;
		 $dat2 = 0;
	         break;
 	}
	$snc  = 255;
	$cmd1 = 0;
	//Prüfsumme berechnen
	$chk = $ID + $cmd1 + $cmd2 + $dat1 + $dat2;
	$chk = $chk % 256;
	$send = chr($snc).chr($ID).chr($cmd1).chr($cmd2).chr($dat1).chr($dat2).chr($chk);
	$stop = chr($snc).chr($ID).chr(0).chr(0).chr(0).chr(0).chr(1);
	comport_SendText($ID_CAMPort, $send);
	ips_sleep($delay);
	comport_SendText($ID_CAMPort, $stop);
}

//Speichern einer momentan eingestellten Position max 20 Positionen pro Kamera
function PTZCamPosSave($ID, $Pos) {
	if ($ID == 1) $ID_CAMPort=24144 /*[DomeCam Hof]*/ ;
   $snc  = 255;
	$cmd1 = 0;
	$cmd2 = 3;
	$dat1 = 0;
 	$chk  = (int) substr($command,24,3);
	//Prüfsumme ermitteln
	$chk = $ID + $cmd1 + $cmd2 + $dat1 + $Pos;
	$chk = $chk % 256;
	$send = chr($snc).chr($ID).chr($cmd1).chr($cmd2).chr($dat1).chr($Pos).chr($chk);
	comport_SendText($ID_CAMPort, $send);
}

//Bewegen zu einer gespeicherten Position
function PTZCamGotoPos($ID, $Pos) {
	if ($ID == 1) $ID_CAMPort=24144 /*[DomeCam Hof]*/ ;
	$snc  = 255;
	$cmd1 = 0;
	$cmd2 = 7;
	$dat1 = 0;
	$chk = $ID + $cmd1 + $cmd2 + $dat1 + $Pos;
	$chk = $chk % 256;
	$send = chr($snc).chr($ID).chr($cmd1).chr($cmd2).chr($dat1).chr($Pos).chr($chk);
	comport_SendText($ID_CAMPort, $send);
}



Wie hast Du denn den analogen Dome im IPS intergriert ?

Ich habe einen Axis 240Q. Das ist ein 4 Kanal Videoserver und absolut zu empfehlen!! Funktioniert sogar mit dem IFront.

Auch die Domekamera für 150€ incl. Zoll ist super.

Hi,

du hast also an den VideoServer einmal ein LAN Kabel angeschlossen um ihn ins Ethernet zu bekommen und noch
dazu ein RS232 Kabel um es mit dem PC zu verbinden?

Dann sendest du vom PC aus die Befehle per PS232 an den VideoServer und der dann per RS485 an die DomeKameras?

Richtig so?

Gruß.

An den Videoserver sind die Kameras angeschlossen. Der Videoserver ist per Lankabel an mein Netzwerk angeschlossen und stellt die Bilddaten bereit. Die Kameras sind per rs485 welches auf rs232 konvertiert wird an den IPS Rechner angeschlossen. Dieser sendet die Rs232 Befehle an die Kameras.

durch den VideoServer?

Gruß.

Nein da gibt es Konverter. Such mal in der E-Bucht. Kostet 7,90.

Das wollte ich wissen. :slight_smile:

Du has also :

PC <=> RS232-Kabel <=> RS232 zu RS485-Konverter <=> RS485-Kabel <=> Kamera-1 <=> RS485-Kabel <=> Kamera-x <=> Abschlußwiederstand

aufgebaut?

Nutzt du dann noch Module von IP-Symcon um mit PHP mit der RS232 zu kommunizieren?
Baudrate usw. einstellen?

Gruß.

Du erstellst eine Comport Instanz und dann verwendest Du das Pelco Script von mir. Du musst bei der Kamera die Id einstellen und im Script die ID von der Comport Instanz.

Könntest du mal einen ScreenShoot dieser Instantz einstellen bitte?

Gruß.

Bitteschön.

Hi,

vielen Dank für das Bild! :slight_smile:
Kannst du mal ein Bild von deinem RS232 zu RS485 Converter einstellen oder ein Datenblatt bitte?

Gruß.

mit dem http://www.axis.com/products/cam_q7404/ habe ich mal beruflich zu tun gehabt. Der hat die RS485 Schnittstelle onboard. Ansteuerung erfolgt ueber TCP/IP. Die Geräte sind wirklich zu empfehlen, wenn es um analog Kameras geht.

Gruss, Michael

Hi,

Darum geht es mir ja gerade, ich habe eine RS485 Outdoor Domekamera mit 360 Grad Drehung und 32 fach optischen Zoom die ich gern per PC über den RS485 steuern möchte.
Jetzt wollte ich gern einen RS232 zu RS485 Adapter kaufen und dann diese Com-Port-Instanz einrichten und das Pelco-Script von oben verwenden.

Jetzt ist die Frage ob das so geht?
Und was für einen Adapter von RS232 zu RS485 ich kaufen muß?
Wenn ich jetzt den RS232 zu RS485 Adapter an meinen Com2 anschliesse muß ich dann in der Instanz auch den Com-Port 2 angeben richtig?

Warum hat dein Com-Port so eine hohe Zahl 34?
Oder ist hier Com-Port NICHT Gleich Com-Instanz?

Bei RS485 gibt es ja das ganze als 2-Drahtsystem und als 4-Drahtsystem.
Bei meiner Kamera wird nur das 2-Drahtsystem verwendet, weil es längere Streckn und stabiler ist als das 4-Dqahtsystem.
Dafür aber nicht Multimasterfähig, kein Duplex kann und der Master in dem Fall der PC immer die Aktion starten muß.

Such einfach in der Bucht nach rs485 rs232 Konverter. 7,90 ist der Preis.

Ich verwende ein 8port Seriell USB Gerät. Ich kann an einen USB Port 8 Serielle Geräte anschließen.
Beim Treiber kann ich dann den Comport einstellen welchen ich in der Ips Instanz verwende.

Hallo,
habe eine Abus TV7602 Kamera, die über RS485 steuerbar ist.
Ausserdem habe ich einen Debian Server 6.0 auf dem PHP 5.3.3 läuft in einer Virtualbox unter Win7.
Ein RS282/RS485 Interface ist an der Com1 Schnittstelle.
Das Script das oben von zman0801 eingestellt wurde hat mich hierher gebracht.

Wie bekomme ich die nötigen Routinen in den Server damit das obige Script anwendbar ist?
Habe keine IPS Lizenz, es ist auch keine kommerzielle Anwendung.

Danke für Hilfe

Hallo Dirk,

ich grabe hier mal eine Leiche aus… das Skript funktioniert super und meine Kamera bewegt sich. Also grundsätzlich alles in Ordnung :stuck_out_tongue: eine Frage habe ich: wie hast du die Steuerung (ins Webfront oder wo?) integriert? Ich kann ja mit „function PTZCam“ die Kamera steuern. Aber wie setzt man das kompfortabel um um es flüssig zu bedienen?

gruß
Stefan