Pokud se PLC nepodaří kontaktovat DHCP server při startu nastaví PLC pevnou IP adresu, kterou má uloženou v konfiguraci. Pokud chceme, aby se PLC periodicky snažilo o kontaktování DHCP je nutné to ošetřit v uživatelském programu.
Například takto:
PROGRAM prgDhcpSupport
VAR
rq_DHCP_server : BOOL;
rq_FIX_IP : BOOL;
tmp : BOOL;
delay : TON;
fixIpAdr : TLocalEthAdr := ( IP := [192,168,33,176], IM := [255,255,0,0], GW := [0,0,0,0]);
END_VAR
// kontrola prideleni IP adresy
IF System_S.R_EDGE_10MIN THEN // zkontrolovat jednou za 10 minut
IF NOT ETH1_STAT.IP_obtained THEN // nepodarilo se ziskat IP adresu od DHCP serveru
rq_DHCP_server := TRUE; // pokusit se ziskat IP adresu od DHCP
rq_FIX_IP := FALSE;
END_IF;
END_IF;
delay(IN := rq_FIX_IP, PT := T#7s); // prodleva mezi nastavenim pevne IP a zadosti o prideleni od DHCP
// zadost o prideleni IP adresy od DHCP serveru (pokud neni pridelena)
IF rq_DHCP_server THEN
// nejdriv nastavit pevnou IP cimz se vypne automaticke pridelovani IP od DHCP
tmp := SetIPaddress(rq := NOT rq_FIX_IP, ethChan := ETH1, ethAdr := fixIpAdr);
rq_FIX_IP := 1;
// a pak zapnout pridelovani adresy DHCP serverem
tmp := SetDHCPsupport( rq := delay.Q, ethChan := ETH1);
IF ETH1_STAT.IP_obtained THEN
rq_DHCP_server := FALSE;
END_IF;
IF System_S.F_EDGE_10MIN THEN
rq_DHCP_server := FALSE;
END_IF;
END_IF;
END_PROGRAM