Page 1 of 1

Checksum calculation Visonic Powerlink

Posted: Sat Apr 07, 2012 10:18 am
by MrGrape
Hey all,

I'm not sure if I should reply in this topic or open my own. I'm having trouble calculating the checksums, maybe someone can point me in the right direction!

Here's some background. I have a PowerMaxPro with an internal Powerlink2 connected via a flatcable directly to the mainboard of the PowerMaxPro. Since I already own the Powerlink2 I didn't want to emulate the whole thing but just want to sniff the communication between the two, ultimately to get the status of my Visonic sensors available in Homeseer. I didn't want to ruin the flatcable between the PowerMaxPro and the Powerlink2, to make a custom sniffer cable, but thought I would try to connect my PC serial port directly to the RS232 module that is available in the PowerMaxPro as well. This seemed to work fine, I'm receiving HEX data in a terminal program, apparently this PowerMax-RS232-port is hardwired to the flatcable-port somehow.

Now my problem. When calculating the checksums I always seem to be 1 off, nomatter how I try it, in a script or directly in the windows calculator... I'm using the "Other way to calculate the checksum" algorythm given here http://domoticaforum.eu/viewtopic.php?f=68&t=6581.

Here's some examples of messages I received and the calculation I made:

Code: Select all

Message:   0D A5 00 02 00 01 00 10 00 00 00 00 43 05 0A
Payload:   A5 00 02 00 01 00 10 00 00 00 00 43
Checksum:  05 (from Visonic)
Sum:       A5+02+01+10+43 = 00FB
Checksum:  FFFF-00-FB = FF04, low byte = 04 (No match...)

Message:   0D A5 00 04 00 20 09 03 00 03 00 00 43 E4 0A
Payload:   A5 00 04 00 20 09 03 00 03 00 00 43
Checksum:  E4 (from Visonic)
Sum:       A5+04+20+09+03+03+43 = 011B
Checksum:  FFFF-01-1B = FFE3, low byte = E3 (No match...)

Message:   0D A5 00 04 00 20 09 04 00 03 00 00 43 E3 0A
Payload:   A5 00 04 00 20 09 04 00 03 00 00 43
Checksum:  E3 (from Visonic)
Sum:       A5+04+20+09+04+03+43 = 011C
Checksum:  FFFF-01-1C = FFE2, low byte = E2 (And again no match...)
Does anybody know what's going on here? What am I doing wrong? Why is my checksum always 1 off?