Datenübertragung mit MODBUS Protokoll. Serielle Kommunikation und über TCP/IP. MODBUS RTU ASCII Modus. Modbus Bibliothek mit Master, Slave, Client.
MODBUS RTU ASCII Modus. Serielle Kommunikation und über TCP/IP. Datenübertragung mit MODBUS Protokoll. Modbus Library.
SuperCom - MODBUS Protokoll Bibliothek
SuperCom - MODBUS Protokoll Bibliothek
MODBUS ist ein Protokoll für den industriellen Einsatz über serielle Leitungen (serielles Kommunikations Protokoll) und über TCP/IP Verbindungen.
Die SuperCom MODBUS Protokoll Bibliothek enthält die notwendigen Funktionen um einfach und schnell eine stabile MODBUS Anwendung zu entwickeln. Dabei kapselt die Bibliothek das komplexe Protokoll in einfach zu nutzende Funktionen. Kontaktaufnahme, Synchronisation, Datenübertragung usw. erledigen die Protokollroutinen transparent.
Die SuperCom MODBUS Protokoll Bibliothek unterstützt die Datenkommunikation zwischen Geräten an seriellen Schnittstellen, am Bus oder Netzwerk gemäß der MODBUS Spezifikation. Das Protokol Modul unterstützt sowohl den ASCII als auch den RTU (*Modbus Remote Terminal Unit) Übertragungsmodus. Im ASCII Modus werden die Daten als ASCII Codes übertragen und im RTU Modus als binäre Byte-Folge (binär Modus).
Unabhängig vom Verbindungstyp (seriell, TCP/IP, ISDN) oder Übertragungsmodus (MODBUS/ASCII, MODBUS/RTU) werden immer dieselben Funktionen und Parameter genutzt.
Die Protokoll Funktionen erlauben den einfachen Zugriff auf Register und Variablen der SPS. Eine transparente Datenkommunikation für Benutzerspezifische Funktion-Codes und Datenpakete ist auch enthalten. Damit können maschinespezifische Erweiterungen einfach behandelt werden.
Einfache Handhabung
In den meisten Fällen wird nur eine kleine Menge an Funktionen genutzt um Daten mit einer SPS auszutauschen. Ein bestehendes Projekt wird schnell erweitert. Weitere Funktionen sind enthalten um die unterschiedlichsten Anforderungen zu bewältigen.
- Gleichzeitige Ausführung von mehreren Modbus Master.
- Gleichzeitige Verbindung von Modbus RTU oder ASCII Master zu Modbus Slaves.
- Empfange von Modbus Datenpaketen und Simulation von Modbus Slaves oder Protokoll Gateway.
- Abhängig von der genutzten SuperCom Software kann das MODBUS Protokoll Modul serielle und/oder TCP Verbindungen kontrollieren.
- Das MODBUS Protokoll Modul kann gleichzeitig mehrere Verbindungen verwalten. Die gleichzeitige Abfrage von mehreren SPS is möglich.
Die SuperCom MODBUS Protokoll Bibliothek nutzt den SuperCom Communication Layer, der ein solides Fundament für die Datenkommunikation bietet, um ohne Kopfzerbrechen stabile Datenkommunikationssoftware schnell zu entwickeln. Dabei macht es für den Programmierer keinen Unterschied ob das MODBUS Protokoll über TCP/IP oder über serielle Leitung (RS-232, RS-422, RS-485, Modem, TAPI) genutzt wird.
Beispiele - MODBUS Protocol API:
1. Ein Ausgangs-Bit ("coil") auslesen
C/C++
#define SLAVE_ID 1
BYTE Com = COM_2; // Use serial port COM2
ComInit (Com);
ComSetState (Com, 9600, ...);
:
RS_MBSetConfig(Com,,SuperCom.MODBUS.MODBUS_MODE_RTU,,);
if (RS_MBReadCoil (Com,
SLAVE_ID,
wCoil,
&Buffer))
{
printf("Coil[%d] = %s ", wCoil, Buffer?"TRUE":"FALSE");
}
else
{
int ErrorCode = RS_MBGetLastError(Com);
if (ErrorCode == MB_ERR_EXCEPTION)
printf("Exception %02X reported from slave ", RS_MBGetException(Com));
else
printf("Error %d", ErrorCode);
}
ComReset (Com);
Delphi
Const SLAVE_ID = 1;
Com = COM_2; // Use serial port COM2
Var ErrorCode:Integer;
ComInit (Com);
ComSetState (Com, 9600, ...);
:
RS_MBSetConfig(Com,,SuperCom.MODBUS.MODBUS_MODE_RTU,,);
If (RS_MBReadCoil (Com,
SLAVE_ID,
wCoil,
Buffer)) Then
Write('Coil[', wCoil, '] =', Buffer)
Else
Begin
ErrorCode = RS_MBGetLastError(Com);
If (ErrorCode = MB_ERR_EXCEPTION) Then
Write('Exception ', RS_MBGetException(Com), ' reported from slave ')
Else
Write('Error %d', ErrorCode);
End;
ComReset (Com);
C# mit TSCom Klasse (ActiveX API)
SCom = new MYSCOM(Com, frm1);
SCom.Settings = "9600,N,8,1";
SCom.PortOpen = true;
:
SuperCom.MODBUS.RS_MBSetConfig(Com,,SuperCom.MODBUS.MODBUS_MODE_RTU,,);
if (SuperCom.MODBUS.RS_MBReadCoil (Com,
SLAVE_ID,
wCoil,
Buffer))
WriteLine("Coil[{0}] = {0}", wCoil, Buffer);
else
{
int ErrorCode = SuperCom.MODBUS.RS_MBGetLastError(Com);
if (ErrorCode = MB_ERR_EXCEPTION) Then
{
WriteLine("Exception {0} reported from slave", SuperCom.MODBUS.RS_MBGetException(Com));
}
else
{
WriteLine("Error {0}", ErrorCode);
}
}
SCom.PortOpen = false;
Visual Basic
Const SLAVE_ID = 1
Const Com = COM_2 ' Use serial port COM2
Dim ErrorCode As Integer
Call ComInit (Com)
Call ComSetState (Com, 9600, ...)
:
Call RS_MBSetConfig(Com,,SuperCom.MODBUS.MODBUS_MODE_RTU,,)
If (RS_MBReadCoils(Com, _
SLAVE_ID, _
wFromCoil, _
wCount, _
cBuffer(0))) Then
WriteLine ("Response (" & Format(wCount) & " bits), Coil:" & Format(wFromCoil) & vbCrLf)
Else
ErrorCode = RS_MBGetLastError(Com)
If (ErrorCode = MB_ERR_EXCEPTION) Then
WriteLine ("Exception " & Format(RS_MBGetException(Com)) & " reported from slave " & vbCrLf)
End If
End If
Call ComReset (Com);
|
2. Lesen/Schreiben auf Register
C/C++
#define SLAVE_ID 1
BYTE Com = COM_2; // Using serial port COM2
WORD Buffer [10];
WORD wStart=0x0000;
WORD wCount=1;
WORD wValue=0x0020;
:
ComInit (Com);
ComSetState (Com, 9600, ...);
:
RS_MBSetConfig(Com,,SuperCom.MODBUS.MODBUS_MODE_RTU,,);
if (RS_MBWriteRegister(Com, SLAVE_ID, wStart, wValue))
printf ("Read Success.\n");
else
printf ("Error: %d\n", RS_MBGetLastError(Com));
if (RS_MBReadHoldingRegisters(Com,
SLAVE_ID,
wStart,
&wCount,
Buffer))
{
printf("Read %d Register:", wCount);
for (int i=0; i<wCount; i++) printf ("%4X",Buffer[i]);
}
else
printf ("Error: %d\n", RS_MBGetLastError(Com));
ComReset (Com);
Delphi
Const SLAVE_ID = 1;
Com = COM_2; // Use serial port COM2
Var ErrorCode:Integer;
Buffer:Array [0..9] Of Word;
wStart:WORD=$0000;
wCount:WORD=1;
wValue:WORD=0x0020;
:
ComInit (Com);
ComSetState (Com, 9600, ...);
:
RS_MBSetConfig(Com,,SuperCom.MODBUS.MODBUS_MODE_RTU,,);
If (RS_MBWriteRegister(Com, SLAVE_ID, wStart, wValue)) Then
WriteLn('Read Success.')
Else
WriteLn('Error: ', RS_MBGetLastError(Com));
If (RS_MBReadHoldingRegisters(Com,
SLAVE_ID,
wStart,
&wCount,
Buffer)) Then
Begin
Write('Read ', wCount, ' Register:');
For I:=0 To wCount-1 Do Write(Hex(Buffer[i]));
End
Else
WriteLn('Error: ', RS_MBGetLastError(Com));
ComReset (Com);
C# mit TSCom Klasse (ActiveX API)
int ErrorCode
int Buffer=new int[10];
int wStart ,wCount, wValue;
wStart = 0x0000; wCount = 1; wValue = 0x0020;
:
SCom = new MYSCOM(Com, frm1);
SCom.Settings = "9600,N,8,1";
SCom.PortOpen = true;
:
SuperCom.MODBUS.RS_MBSetConfig(Com,,SuperCom.MODBUS.MODBUS_MODE_RTU,,);
if (SuperCom.MODBUS.RS_MBWriteRegister(Com, SLAVE_ID, wStart, wValue))
WriteLine ("Read Success.\n");
else
WriteLine("Error: {0}", RS_MBGetLastError(Com));
if (RS_MBReadHoldingRegisters(Com,
SLAVE_ID,
wStart,
ref wCount,
ref Buffer))
{
WriteLine("Read {0} Register:", wCount);
for (int i=0; i<wCount; i++)
WriteLine("{0:x4}",Buffer[i]);
}
else
printf ("Error: {0}\n", RS_MBGetLastError(Com));
SCom.PortOpen = false;
Visual Basic
Const SLAVE_ID = 1
Const Com = COM_2 ' Use serial port COM2
Dim ErrorCode As Integer
Dim Buffer(10) As Integer
Dim wStart ,wCount, wValue As Integer
wStart = &H0000 : wCount = 1 : wValue = &H0020
:
Call ComInit (Com)
Call ComSetState (Com, 9600, ...)
:
Call RS_MBSetConfig(Com,,SuperCom.MODBUS.MODBUS_MODE_RTU,,)
If (RS_MBWriteRegister(Com, SLAVE_ID, wStart, wValue)) Then
WriteLine("Read Success.")
Else
WriteLine("Error: " & Format(RS_MBGetLastError(Com)));
If (RS_MBReadHoldingRegisters(Com,
SLAVE_ID,
wStart,
&wCount,
Buffer(0))) Then
WriteLine("Read " & Format(wCount) & " Register:" &vbCrLf);
For I=0 To wCount-1 Do WriteLine(Hex(Buffer[i]));
Else
WriteLine("Error: " & Format(RS_MBGetLastError(Com)));
EndIf
Call ComReset (Com);
|
Datenüberwachung, Weiterleitung - MODBUS Slave oder Gateway Funktionen
Die Datenüberwachung und Weiterleitung von MODBUS Datenpaketen wird unterstützt. Empfangen von Datenpaketen und senden von Antworten (Slave Funktionalität) wird unterstützt. Die Entwicklung eines Protokoll-Konverters oder Gateway von MODBUS in ein anderes Protokoll wird unterstützt. Die Simulation eines MODBUS Slave kann u.a. auch während der Anwendungsentwicklung von Nutzem sein.
Lizenzbedingung
Ausführbare Anwendungen (.EXE) können frei weitergegeben werden.
Unterstützte Compiler
C++, C#, Delphi, Visual C++, Visual Basic, Visual Basic NET, C++ Builder, Borland C/C++, Microsoft C/C++, Borland Pascal, VBA, LabView, PowerBuilder und andere Windows Sprachen (MS .NET ?).
Beispiele
für C/C++, C#, Visual C++, C++ Builder, Pascal/Delphi, Visual Basic, Visual Basic NET (VB .NET), LabVIEW.
Wie einsetzen ?
Die SuperCom MODBUS Protokoll Bibliothek kann über jeden Verbindungstyp genutzt werden, die von SuperCom unterstützt wird (aktuell seriell, TCP/IP, ISDN). Eine Liste von SuperCom Paketen mit MODBUS ist in der Tabele sichtbar.
Auch hier gilt: Ein gemeinsames API für Seriell, TCP/IP oder ISDN.
Home
Back
Modified at:
|
|
 It Simply Works!
|
|
|
ADONTEC Computer Systems GmbH, Hölderlinstr. 32, D-75433 Maulbronn,
Tel: 07043/9000-20, Fax: 07043/9000-21
|