Mapping zwischen Modbus und ADS

Das Standard-Mapping des Servers wird in der folgenden Tabelle für das erste Laufzeitsystem dargestellt:

Modbus-Bereiche

Modbus-Adresse

ADS-Bereich

digitale Eingänge (Inputs)

0x0000 - 0x7FFF

Indexgruppe

Indexoffset

0xF021 - Prozessabbild der physikalischen Eingänge (Bit-Zugriff)

0x0

0x8000 - 0x80FF

Name der Variablen im SPS-Programm

Datentyp

.mb_Input_Coils

ARRAY [0..255] OF BOOL

digitale Ausgänge (Coils)

0x0000 - 0x7FFF

Indexgruppe

Indexoffset

0xF031 - Prozessabbild der physikalischen Ausgänge (Bit-Zugriff)

0x0

0x8000 - 0x80FF

Name der Variablen im SPS-Programm

Datentyp

.mb_Output_Coils

ARRAY [0..255] OF BOOL

Eingangs-Register ( Input Registers)

0x0000 - 0x7FFF

Indexgruppe

Indexoffset

0xF020 - Prozessabbild der physikalischen Eingänge

0x0

0x8000 - 0x80FF

Name der Variablen im SPS-Programm

Datentyp

.mb_Input_Registers

ARRAY [0..255] OF WORD

Ausgangs-Register (Registers)

0x0000 - 0x2FFF

Indexgruppe

Indexoffset

0xF030 - Prozessabbild der physikalischen Ausgänge

0x0

0x3000 - 0x5FFF

0x4020 - SPS-Memory-Bereich

0x0

0x6000 - 0x7FFF

0x4040 - SPS-Daten-Bereich

0x0

0x8000 - 0x80FF

Name der Variablen im SPS-Programm

Datentyp

.mb_Output_Registers

ARRAY [0..255] OF WORD

Der Server mappt diese auf die einzelnen Ads-Bereiche und ermöglicht den Zugriff auf das physikalische Prozessabbild und die SPS-Merker Bereiche.

Das Anpassen der Einstellung ermöglicht der Konfigurator.

Default XML

Die Standartkonfiguration sieht wie folgt aus:

<Configuration>
    <!-- Modbus TCP port, default = 502-->
    <Port>502</Port>
    <!-- optional IP configuration for Modbus TCP server-->
    <IpAddr/>
    <Mapping>
    <InputCoils>
        <MappingInfo>
        <!-- AdsPort: TwinCAT2 PLC1 = 801, PLC2 = 811...-->
        <AdsPort>801</AdsPort>
        <StartAddress>0</StartAddress>
        <EndAddress>32767</EndAddress>
        <!-- IndexGroup 61473 = 0xF021 -> physical plc inputs %IX -->
        <IndexGroup>61473</IndexGroup>
        <!-- Bit offset-->
        <IndexOffset>0</IndexOffset>
        </MappingInfo>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <!-- Modbus input coils -->
        <StartAddress>32768</StartAddress>
        <EndAddress>33023</EndAddress>
        <VarName>.mb_Input_Coils</VarName>
        </MappingInfo>
    </InputCoils>
    <OutputCoils>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <EndAddress>32767</EndAddress>
        <!-- IndexGroup 61489 = 0xF031 -> physical plc outputs %QX -->
        <IndexGroup>61489</IndexGroup>
        <!-- Bit offset-->
        <IndexOffset>0</IndexOffset>
        </MappingInfo>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <!-- Modbus output coils-->
        <StartAddress>32768</StartAddress>
        <EndAddress>33023</EndAddress>
        <VarName>.mb_Output_Coils</VarName>
        </MappingInfo>
    </OutputCoils>
    <InputRegisters>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <StartAddress>0</StartAddress>
        <EndAddress>32767</EndAddress>
        <!-- IndexGroup 61472 = 0xF020 -> physical plc input register %I -->
        <IndexGroup>61472</IndexGroup>
        <!-- Byte offset-->
        <IndexOffset>0</IndexOffset>
        </MappingInfo>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <!-- Modbus input registers -->
        <StartAddress>32768</StartAddress>
        <EndAddress>33023</EndAddress>
        <VarName>.mb_Input_Registers</VarName>
        </MappingInfo>
    </InputRegisters>
    <OutputRegisters>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <StartAddress>0</StartAddress>
        <EndAddress>12287</EndAddress>
        <!-- IndexGroup 61488 = 0xF030 -> physical plc output register %Q -->
        <IndexGroup>61488</IndexGroup>
        <!-- Byte offset-->
        <IndexOffset>0</IndexOffset>
        </MappingInfo>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <StartAddress>12288</StartAddress>
        <EndAddress>24575</EndAddress>
        <!-- IndexGroup 16416 = 0x4020 -> plc memory area %M -->
        <IndexGroup>16416</IndexGroup>
        <!-- Byte offset-->
        <IndexOffset>0</IndexOffset>
        </MappingInfo>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <StartAddress>24576</StartAddress>
        <EndAddress>32767</EndAddress>
        <!-- IndexGroup 16448 = 0x4040 -> plc data area -->
        <IndexGroup>16448</IndexGroup>
        <!-- Byte offset-->
        <IndexOffset>0</IndexOffset>
        </MappingInfo>
        <MappingInfo>
        <AdsPort>801</AdsPort>
        <!-- Modbus output registers -->
        <StartAddress>32768</StartAddress>
        <EndAddress>33023</EndAddress>
        <VarName>.mb_Output_Registers</VarName>
        </MappingInfo>
    </OutputRegisters>
    </Mapping>
</Configuration>