Introduction
This is GPL software. Do with it as you want, but feed us back any improvements.
This is a full C# classes to control a PELCO PTZ cameras, matrix switching systems,
reciever devices and more via RS422/485 'P' and 'D' protocol.
It supports all of the commands including UP, DOWN, IN, OUT, LEFT, RIGHT, NEAR, FAR, as well as other extended commands.
reciever devices and more via RS422/485 'P' and 'D' protocol.
It supports all of the commands including UP, DOWN, IN, OUT, LEFT, RIGHT, NEAR, FAR, as well as other extended commands.
To use this, you need to put a RS232->RS422 adapter on the output of your desired serial port.
The Pelco doesn't return ANY usefull info back, so you only really need 2-wire support (one way) communications out. However, I advice to read it in order to know if the command was recieved by the device.
This section describes the protocol used when sending commands to an Intercept Dome in the “P” version protocol and Coaxitron series equipment and with Pelco’s “D” version receivers. Those protocols use no parity, one start bit, eight data bits, and one stop bit. The recommended baud rate is 4800 (4800, 8, N, 1, 1).
Theory
In those protocols the messages structure are different. However both of protocols using RS-485 port to send and recieve messages.
All values below are shown in hexadecimal (base 16).
Pelco P message structure
Byte
|
Value
|
Function
|
1
|
$A0
|
STX (start transmission)
|
2
|
$00 to $1F
|
Address
|
3
|
Data byte 1
|
(see below)
|
4
|
Data byte 2
|
(see below)
|
5
|
Data byte 3
|
(see below)
|
6
|
Data byte 4
|
(see below)
|
7
|
$AF
|
ETX (end transmission)
|
8
|
$00-$FF
|
Check Sum
|
Byte 1 is always $A0
Byte 2 is the receiver address, set by DIP switch in the receiver
Byte 3-6, see below
Byte 7 is always $AF
Byte 8 is an XOR sum of Bytes 1-7
Byte 2 is the receiver address, set by DIP switch in the receiver
Byte 3-6, see below
Byte 7 is always $AF
Byte 8 is an XOR sum of Bytes 1-7
The protocol is “zero indexed” so that the hexadecimal address sent in the protocol for the first receiver is $00 which corresponds to address 1.
Pelco D message structure
The “D” protocol has some added overhead to improve the reliability of transmissions. The format for a message is:
Word 1
|
Word 2
|
Word 3
|
Word 4
|
Word 5
|
Word 6
|
Word 7
|
Synch Byte
|
Address
|
Command 1
|
Command 2
|
Data 1
|
Data 2
|
Check Sum
|
The synchronization byte is always $FF.
The address is the logical address of the receiver/driver being controlled.
Bit 7
|
Bit 6
|
Bit 5
|
Bit 4
|
Bit 3
|
Bit 2
|
Bit 1
|
Bit 0
| |
Command 1
|
Sense
|
Reserved
|
Reserved
|
Auto / Manual Scan
|
Camera On / Off
|
Iris Close
|
Iris Open
|
Focus Near
|
Command 2
|
Focus Far
|
Zoom Wide
|
Zoom Tele
|
Down
|
Up
|
Left
|
Right
|
Always 0
|
The sense bit (command 1 bit 7) indicates the meaning of bits 4 and 3. If the sense bit is on and bits 4 and 3 are on the command will enable autoscan and turn the camera on. If the sense bit is off and bits 4 and 3 are on the command will enable manual scan and turn the camera off. Of course, if either bit 4 or bit 3 are off then no action will be taken for those features.
The reserved bits (6 and 5) should be set to 0.
Word 5 contains the pan speed. Pan speed is in the range $00 (stop) to $3F (high speed) and $FF for “turbo” speed. Turbo speed is the maximum speed the device can obtain and is considered separately because it is not generally a smooth step from high speed to turbo. That is, going from one speed to the next usually looks smooth and will provide for smooth motion with the exception of going into and out of turbo speed.
Word 6 contains the tilt speed. Tilt speed is in the range $00 (stop) to $3F (maximum speed).
Word 7 is the check sum. The check sum is the sum of bytes (excluding the synchronization byte) modulo 256.
Extended Command Set
In addition to the “PTZ” commands shown above, there are control commands that allow you access to the more advanced features of some equipment.For Pelco P protocol the extended command set will have bit 0 of data byte 2 set and will follow the format in the following table:
Command
|
Data byte 1
|
Data byte 2
|
Data byte 3
|
Data byte 4
|
Set Preset XX
|
00
|
03
|
00
|
01 to FF
|
Clear Preset XX
|
00
|
05
|
00
|
01 to FF
|
Go To Preset XX
|
00
|
07
|
00
|
01 to FF
|
Flip (rotate 180º)
|
00
|
07
|
00
|
21
|
Zero Pan Position
|
00
|
07
|
00
|
22
|
Auto scan
|
00
|
09
|
00
|
00
|
Stop auto scan
|
00
|
0B
|
00
|
00
|
Remote Reset
|
00
|
0F
|
00
|
00
|
Zone Start
|
00
|
11
|
00
|
01 to 08
|
Zone End
|
00
|
13
|
00
|
01 to 08
|
Write char to screen
|
00
|
15
|
0 to 28
|
0 to 7F
|
Clear Screen
|
00
|
17
|
00
|
00
|
Alarm Ack
|
00
|
19
|
00
|
01 to 08
|
Zone Scan On
|
00
|
1B
|
00
|
00
|
Zone Scan Off
|
00
|
1D
|
00
|
00
|
Pattern Start
|
00
|
1F
|
00
|
00
|
Pattern Stop
|
00
|
21
|
00
|
00
|
Run Pattern
|
00
|
23
|
00
|
00
|
Zoom Lens Speed
|
00
|
25
|
00
|
00 to 03
|
Focus Lens Speed
|
00
|
27
|
00
|
00 to 03
|
In Pelco D implementation they are as following:
Command
|
Word 3
|
Word 4
|
Word 5
|
Word 6
|
Set Preset
|
00
|
03
|
00
|
01 to 20
|
Clear Preset
|
00
|
05
|
00
|
01 to 20
|
Go To Preset
|
00
|
07
|
00
|
01 to 20
|
Flip (180° about)
|
00
|
07
|
00
|
21
|
Go To Zero Pan
|
00
|
07
|
00
|
22
|
Set Auxiliary
|
00
|
09
|
00
|
01 to 08
|
Clear Auxiliary
|
00
|
0B
|
00
|
01 to 08
|
Remote Reset
|
00
|
0F
|
00
|
00
|
Set Zone Start
|
00
|
11
|
00
|
01 to 08
|
Set Zone End
|
00
|
13
|
00
|
01 to 08
|
Write Char. To Screen
|
00
|
15
|
X Position 00 to 28
|
ASCII Value
|
Clear Screen
|
00
|
17
|
00
|
00
|
Alarm Acknowledge
|
00
|
19
|
00
|
Alarm No.
|
Zone Scan On
|
00
|
1B
|
00
|
00
|
Zone Scan Off
|
00
|
1D
|
00
|
00
|
Set Pattern Start
|
00
|
1F
|
00
|
00
|
Set Pattern Stop
|
00
|
21
|
00
|
00
|
Run Pattern
|
00
|
23
|
00
|
00
|
Set Zoom Speed
|
00
|
25
|
00
|
00 to 03
|
Set Focus Speed
|
00
|
27
|
00
|
00 to 03
|
Please note that in Pelco P implementaiton the checksum is calculation by XOR binary sum of bytes 1-7, but in D one is by madulo 256 sum of bytes 1-6
0A 00001010
88 10001000
Subtotal 10010010 92
90 10010000
Subtotal 00100010 22 (modulo 256 allows the high bit to roll off)
00 00000000
Subtotal 00100010 22
40 01000000
01100010 62
Final check sum valueThe response of devices not really important, however just to know that in Pelco P the response will be ACK command, when in Pelco D the response to one of these commands is four bytes long. The first byte is the synchronization character (FF), the second byte is the receiver address, the third byte contains the alarm information and the fourth byte is the check sum.
沒有留言:
張貼留言