C# alatt OPC kapcsolat megszakad

Címkék
C# alatt OPC kapcsolat megszakad
2017-03-13T12:45:13+01:00
2017-03-20T13:44:12+01:00
2022-12-04T10:50:41+01:00
Janos67
Sziasztok!

Szépen működik a programom, ami

- felveszi a kapcsolatot az adott OPC szerverrel
- "megrendeli" a változásjelentéseket
- egy "végtelen" ciklusban vár, miközben
- az egyedi eseménykezelő szépen feldolgozza a változásokat.

Na, de most megtörtént, amire eddig nem gondoltam.
Fut a "végtelen" ciklus, él a kapcsolat, de az OPC szervert újraindítják.
A programom mit se tud róla, csendesen elüldögél a babérjain, hiszen nem kap változásjelentést.

Miképp' készítsem fel ilyen esetre a forrást?
Én az Eclipse DLL-ekkel kommunikálok.
Mutasd a teljes hozzászólást!
passzívan: Watchdog/Timeout elv
aktívan: pollingolsz valamit
Mutasd a teljes hozzászólást!

  • Én jelenleg (mert közben sikerült többlet infóhoz hozzájutnom) most azt próbálom, hogy

    - a PLC-s mérnök talált egy olyan címet, amit a PLC minden másodpercben oda és vissza váltogat (True/False);
    - az az említett végtelen ciklus 1 mp-et "pihen" és utána növel egy számlálót;
    - ha a PLC-s váltogatás befut az eseménykezelőbe, akkor ezt a számlálót nullázom;
    - ha a végtelen ciklusban a számláló elér egy értéket (mondjuk 60 mp), akkor bontom a kapcsolatot és újra felépítem.
    Mutasd a teljes hozzászólást!
  • Szia!

    Esetleg majd annyit kipróbálhatsz még, hogy a végtelen ciklusban figyeled az OPC szerver állapotát (ServerState). Az én egyik ilyen alkalmazásomnál ez megoldható és meg is oldott lehetőség.

    Én az OPCDAAuto.DLL-t használom.
    Mutasd a teljes hozzászólást!
  • Szia!

    Bocsi, csak most tudtam "érdemben" reagálni.
    Megnéztem az ajánlott dolgot.

    Ahogy látom a server.GetStatus().StatusInfo 'The server is running normally.' és a server.GetStatus.ServerState 'running' szövegeket kapom vissza normális esetben (mert ugye csak a működő állapotot tudom most tesztelni).

    Vagyis, azt javaslod, hogy a végtelen ciklusban (mondjuk a sleep után) valamelyiket (gondolom egyszerűbb a rövidebbet) vizsgáljam meg, és ha nem running vagy a lekérdezés alatt hibára fut, akkor lehet újra kapcsolatot felépíteni?
    Mutasd a teljes hozzászólást!
  • Igen, pont erre céloztam.

    Vagy riasztást küldeni, vagy e-mail-t, vagy megpróbálni újrakapcsolódni X időközönként, vagy alkalmazás / szerviz restart, vagy gép restart. Sok lehetőség van.
    Mutasd a teljes hozzászólást!
Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd