Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Looking for a free source code of ModBus protocol in C/C++

Status
Not open for further replies.

brutus

Junior Member level 1
Joined
May 20, 2003
Messages
18
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
116
I´m looking for free source code (or examples) of ModBus protocol in C or C++. I would like to establish a communication between a computer (windows) and a messure equipment, that communicates via ModBus protocol. The physical Layer is RS485.
 

sklux

Member level 3
Joined
Jan 30, 2002
Messages
58
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
472
pes@free.fr

www.modbus.org

but I m sure you'll also find something on google with "c++ modbus source code"
 

wisely77

Member level 4
Joined
Jun 18, 2002
Messages
75
Helped
4
Reputation
8
Reaction score
3
Trophy points
1,288
Activity points
677
modbus asm pic

hi,

you can found modbus protocol at www.modbus.org. it's open and i think there have few version of modbus including tcpip.

anyway, normally i'm only using two function to talk to modbus device. one is poll holding register (function code 03) write input register (function code 04 or 06, don't use this much). the crc generation is easy.

try this software Modbus Poll from www.wittecom.com.

below is the crc generation write on delphi.

======= code ==========

const
cCRC16Table : TCRC16Table = (
$0000, $C0C1, $C181, $0140, $C301, $03C0, $0280, $C241,
$C601, $06C0, $0780, $C741, $0500, $C5C1, $C481, $0440,
$CC01, $0CC0, $0D80, $CD41, $0F00, $CFC1, $CE81, $0E40,
$0A00, $CAC1, $CB81, $0B40, $C901, $09C0, $0880, $C841,
$D801, $18C0, $1980, $D941, $1B00, $DBC1, $DA81, $1A40,

$1E00, $DEC1, $DF81, $1F40, $DD01, $1DC0, $1C80, $DC41,
$1400, $D4C1, $D581, $1540, $D701, $17C0, $1680, $D641,
$D201, $12C0, $1380, $D341, $1100, $D1C1, $D081, $1040,
$F001, $30C0, $3180, $F141, $3300, $F3C1, $F281, $3240,
$3600, $F6C1, $F781, $3740, $F501, $35C0, $3480, $F441,
$3C00, $FCC1, $FD81, $3D40, $FF01, $3FC0, $3E80, $FE41,
$FA01, $3AC0, $3B80, $FB41, $3900, $F9C1, $F881, $3840,
$2800, $E8C1, $E981, $2940, $EB01, $2BC0, $2A80, $EA41,

$EE01, $2EC0, $2F80, $EF41, $2D00, $EDC1, $EC81, $2C40,
$E401, $24C0, $2580, $E541, $2700, $E7C1, $E681, $2640,
$2200, $E2C1, $E381, $2340, $E101, $21C0, $2080, $E041,
$A001, $60C0, $6180, $A141, $6300, $A3C1, $A281, $6240,
$6600, $A6C1, $A781, $6740, $A501, $65C0, $6480, $A441,
$6C00, $ACC1, $AD81, $6D40, $AF01, $6FC0, $6E80, $AE41,
$AA01, $6AC0, $6B80, $AB41, $6900, $A9C1, $A881, $6840,
$7800, $B8C1, $B981, $7940, $BB01, $7BC0, $7A80, $BA41,

$BE01, $7EC0, $7F80, $BF41, $7D00, $BDC1, $BC81, $7C40,
$B401, $74C0, $7580, $B541, $7700, $B7C1, $B681, $7640,
$7200, $B2C1, $B381, $7340, $B101, $71C0, $7080, $B041,
$5000, $90C1, $9181, $5140, $9301, $53C0, $5280, $9241,
$9601, $56C0, $5780, $9741, $5500, $95C1, $9481, $5440,
$9C01, $5CC0, $5D80, $9D41, $5F00, $9FC1, $9E81, $5E40,
$5A00, $9AC1, $9B81, $5B40, $9901, $59C0, $5880, $9841,
$8801, $48C0, $4980, $8941, $4B00, $8BC1, $8A81, $4A40,

$4E00, $8EC1, $8F81, $4F40, $8D01, $4DC0, $4C80, $8C41,
$4400, $84C1, $8581, $4540, $8701, $47C0, $4680, $8641,
$8201, $42C0, $4380, $8341, $4100, $81C1, $8081, $4040);

function CalcCRC16(Buf:pointer; wLen:Integer):Word;
var nTemp : byte;
wCRCWord, dummy : word;
i : integer;
begin
wCRCWord := $FFFF;

for i:=1 to wLen-1 do
begin
dummy := pword(buf)^;
nTemp := PWord(buf)^ xor wCRCWord;
wCRCWord := (wCRCWord shl 8 ) OR (wCRCWord shr 8);
wCRCWord := wCRCWord xor cCRC16Table[nTemp];
Inc(PWord(Buf));
end;
result := wCRCWord;
end;

======== code ========

wisely
 

bobcat1

Advanced Member level 4
Joined
Jul 10, 2002
Messages
1,288
Helped
99
Reputation
198
Reaction score
34
Trophy points
1,328
Activity points
8,547
libmodbus example

modbus source code demo


enjoy



bobi
 

msmax

Full Member level 1
Joined
May 6, 2001
Messages
99
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Location
Pays Bas
Activity points
919
modbus client source code

Any modbus code in ASM for PIC?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top