• Welcome to Diskuse2 Elektrika.cz. Please login or sign up.
 

Jakým způsobem se snaží jednotka získat adresy z DHCP serveru?

Started by Luboš Zelinka, 14.12.2014, 12:25

previous topic - next topic

Luboš Zelinka

Pokud se nepovede získání adresy z DHCP server během bootování (např. po výpadku elektřiny nabíhá DHCP server pomaleji) nedochází poté k dodatečnému získání adres. Snaží se jednotka o dodatečné získání?

Milan Bydžovský

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:
Code Select
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

Luboš Zelinka

Koukám, že k celému DHCP přistupujete dost "netradičně". K čemu je potom implementace DHCP klienta, který funguje "na baterky". Mimochodem co se stane, když dojde k vypršení zapůjčení IP adresy z DHCP serveru (vyprší lease time) a DHCP server propůjčí IP adresu někomu jinému? Jednotka způsobí kolizi na síti?

Fuk Tomáš

Když vím, rád poradím: fyzika, elektronika, IT, ale i obchod a právo. Když nevím, ptám se anebo držím ústa.

Jen ten, kdo něčemu stoprocentně rozumí, to dokáže vysvětlit tak, aby tomu nikdo jiný nerozuměl. (Murphy)

Petr Liskar

Quote from: Luboš Zelinka on 28.12.2014, 14:11
Koukám, že k celému DHCP přistupujete dost "netradičně". K čemu je potom implementace DHCP klienta, který funguje "na baterky". Mimochodem co se stane, když dojde k vypršení zapůjčení IP adresy z DHCP serveru (vyprší lease time) a DHCP server propůjčí IP adresu někomu jinému? Jednotka způsobí kolizi na síti?

Nemělo by k takové kolizi dojít. Dle příslušného RFC by měl DHCP server zkoumat, zda nehodlá přidělit adresu, která již je v sítí použita.