IP-Adresse setzen
Dieses Beispiel zeigt den schreibenden Zugriff auf Daten der IPC-Diagnose über generelle Funktionsbausteine. In der gleichen Art und Weise kann auch auf alle anderen Elemente der Module der IPC-Diagnose zugegriffen werden.
![]() | Aktive Netzwerkverbindung Die Änderung dieser Einstellungen erfordert jeweils eine aktive Netzwerkverbindung für den gewählten Ethernet/EtherCAT-Adapter. Ohne aktive Netzwerkverbindung können also keine Parameter (vor-) eingestellt werden. |
Beispiel zum Setzen der IP-Adresse eines Beckhoff IPCs
Variablendeklaration
PROGRAM MAIN
// First DHCP is set off and then the given new IP address is set.
// The program code is executed only one time. To restart the program set bStart TRUE again.
VAR
bStart : BOOL := TRUE;
nState : INT := 100;
fbScan : FB_MDP_ScanModules;
fbWrite : FB_MDP_Write;
stMDPAddr : ST_MDP_Addr;
bDHCP : BOOL;
sIP : T_IPv4Addr := '174.18.3.154'; // the new ip address
bError : BOOL;
nErrID : UDINT;
END_VAR
Programmcode
CASE nState OF
100: // idle
IF bStart THEN
bStart := FALSE;
nState := 00;
END_IF
00: (* scan MDP module list for dyn.module id of NIC module *)
fbScan(
bExecute := TRUE,
nModuleType := eMDP_ModT_NIC,
iModIdx := 0, (* index of NIC module / network port *)
sAmsNetId := ''
);
nState := 01;
01:
fbScan( bExecute:= FALSE );
IF NOT fbScan.bBusy THEN
IF NOT fbScan.bError THEN
stMDPAddr.nArea := INT_TO_BYTE(eMDP_Area_ConfigArea);
stMDPAddr.nModuleId := fbScan.nDynModuleId;
stMDPAddr.nTableId := 1;
nState := 10;
ELSE
bError := TRUE;
nErrID := fbScan.nErrID;
nState := 00;
END_IF
END_IF
10: // set DHCP off
stMDPAddr.nSubIdx := 4; // DHCP
bDHCP := FALSE;
fbWrite(
bExecute := TRUE,
stMDP_DynAddr := stMDPAddr,
pSrcBuf := ADR(bDHCP),
cbSrcBufLen := SIZEOF(bDHCP),
sAmsNetId := ''
);
nState:= 11;
11:
fbWrite( bExecute:= FALSE );
IF NOT fbWrite.bBusy THEN
IF NOT fbWrite.bError THEN
nState := 20;
ELSE
bError := TRUE;
nErrID := fbWrite.nErrID;
nState := 10;
END_IF
END_IF
20: // set new IP address
stMDPAddr.nSubIdx := 2; // IP address
fbWrite(
bExecute := TRUE,
stMDP_DynAddr := stMDPAddr,
pSrcBuf := ADR(sIP),
cbSrcBufLen := LEN(sIP),
sAmsNetId := ''
);
nState := 21;
21:
fbWrite( bExecute:= FALSE );
IF NOT fbWrite.bBusy THEN
IF NOT fbWrite.bError THEN
nState := 100; (* NIC settings executed *)
ELSE
bError := TRUE;
nErrID := fbWrite.nErrID;
nState := 20;
END_IF
END_IF
END_CASE