WAGO PFC200 odczyt danych z Siemens S7-1500 przez S7-Client lub Modbus TCP

Pytanie

Wago pcf200 czyta z s7-1500

Odpowiedź Sztucznej Inteligencji


Bezpośrednia odpowiedź na pytanie

  • Najprostszy i najszybciej wdrażalny sposób, aby sterownik WAGO PFC200 „czytał” dane z Siemens S7-1500, to użycie biblioteki Siemens S7-Client w CODESYS (PUT/GET po TCP 102) albo Modbus TCP (PFC200 → klient, S7-1500 → serwer).
  • Kluczowe kroki:
    1. W TIA Portal włączyć „Permit access with PUT/GET” dla CPU 1500 i utworzyć globalny DB z atrybutem „non-optimized”.
    2. W CODESYS/e!COCKPIT dodać bibliotekę „WagoApp-SiemensS7 (S7_Client)”, skonfigurować blok funkcyjny S7_CLIENT (IP PLC, DB, offset, długość).
    3. Uruchomić, zweryfikować połączenie (Status = 0).

Szczegółowa analiza problemu

  1. Dostępne protokoły
    a) S7-Comm (ISO-on-TCP, port 102, tzw. PUT/GET) – wymaga tylko sieci Ethernet, brak dodatkowych licencji po stronie Siemens, w PFC200 licencja biblioteki S7_Client (jednorazowa).
    b) Modbus TCP – od V15 CPU 1500 ma wbudowany serwer Modbus; konfiguracja jest graficzna, a biblioteki ModbusMaster są w standardzie PFC200.
    c) PROFINET IO – wymaga wariantu PFC200 z PN-Controller lub PN-Device; bardzo krótki czas cyklu, lecz konieczny plik GSDML i pełna konfiguracja w TIA.
    d) OPC UA – najmniej zależny od producenta, zapewnia certyfikaty i szyfrowanie, jednak narzut protokołu jest większy; do prostego „czytania” liczb z DB z reguły wybiera się S7-Comm lub Modbus.

  2. Teoria i przebieg wymiany (wariant S7-Comm)
    • PFC200 inicjuje handshake ISO-on-TCP (COTP CR/CC), zestawia sesję S7, wysyła zapytanie READ (zakodowany nr DB, offset, długość).
    • CPU 1500 zwraca RAM-kopię żądanych bajtów. Całość odbywa się w warstwie aplikacyjnej „S7 Job”.
    • Bloki funkcyjne S7_CLIENT automatyzują pakietowanie, retransmisję i timeout.

  3. Implementacja w CODESYS (minimalny przykład)

    PROGRAM PLC_PRG
    VAR
    S7 : S7CLIENT;
    xInit : BOOL := TRUE;
    DataBuf : ARRAY[0..15] OF BYTE; //16 B
    END_VAR
    S7(
    xConnect := xInit,
    sIP       := '192.168.0.10', //CPU 1500
    wRackSlot := 0,              //0/1 przy CPU 1500
    eFunc     := S7_FUNC_READ,
    wDB       := 1,
    dwOffset  := 0,
    wLen      := 16,
    pData     := ADR(DataBuf),
    cbData    := SIZEOF(DataBuf),
    tTimeout  := T#3S
    );

    Po poprawnym odczycie S7.eStatus = S7_STATUS.OK.

  4. Konfiguracja w TIA Portal
    • Projekt → Properties → Protection & Security • zaznaczyć „Permit access with PUT/GET...” oraz „Enable diagnostics” (ułatwia Wireshark).
    • Dla większego bezpieczeństwa przypisać listę dozwolonych IP (funkcja „Connection Mechanism”).

Aktualne informacje i trendy

  • Od TIA V18 wprowadzono „Siemens Industrial Edge” oraz Communication Services, które ograniczają PUT/GET na rzecz zabezpieczonego OPC UA; jednak CPU 1500 wciąż wspiera PUT/GET, lecz bywa domyślnie wyłączony.
  • WAGO od wersji CODESYS 3.5 SP17 oferuje bibliotekę „Net8_SiemensS7” z obsługą szyfrowanego S7-Secure Comm (TLS).
  • W przemyśle obserwuje się przechodzenie ze starszych, nieautoryzowanych protokołów (PUT/GET, Modbus) na OPC UA, MQTT Sparkplug B i TSN-enabled Profinet v2.4.

Wspierające wyjaśnienia i detale

  • Czasy cyklu:
    • S7-Comm ≈ 10–30 ms (zależnie od priorytetu tasku i wielkości DB)
    • Modbus TCP przy 10 rejestrach/żądanie ≈ 20–50 ms
    • Profinet RT < 4 ms, IRT nawet 250 µs (wymaga sprzętu z IRT)
  • Diagnostyka: Trace > PLC-Log w e!COCKPIT, I/O Check w TIA, Wireshark + filtr tcp.port==102.
  • Optymalizacja: grupować zmienne w kolejnych bajtach DB, ograniczyć liczbę żądań READ/WRITE.

Aspekty etyczne i prawne

  • PUT/GET omija mechanizm uprawnień w S7-1500 – w środowiskach o podwyższonym poziomie bezpieczeństwa (IEC 62443) należy stosować bezpieczne kanały (OPC UA w/TLS lub S7-Secure).
  • Licencje: biblioteka S7_Client na PFC200 jest płatna (kod 308-100/000-033).
  • Należy przestrzegać zaleceń RODO/GDPR przy zapisie danych produkcyjnych do systemów nadrzędnych.

Praktyczne wskazówki

  1. Test przed uruchomieniem: po stronie S7 użyj funkcji BSEND/BRECV do symulacji ruchu, zanim podepniesz WAGO.
  2. Jeśli pojawi się błąd 0xD000 – CPU nie zezwala na dostęp; sprawdź zakładkę „Communication Settings”.
  3. Przy Modbusie używaj rejestrów 400001+ (Holding) i konwertuj BIG-ENDIAN↔LITTLE-ENDIAN w CODESYS (SysMem.Swap16/32).
  4. Dokumentuj mapę adresową w postaci Excela/Git, aby uniknąć rozbieżności między działami PLC/HMI.

Ewentualne zastrzeżenia lub uwagi dodatkowe

  • PUT/GET nie obsługuje dynamicznych (optimized) DB – jeśli w TIA zaznaczysz „Optimized block access”, biblioteka zwróci 0x8104.
  • Wymiana dużych buforów (> 64 kB) wymaga segmentacji; rozważ wtedy OPC UA z „chunk-ing”.

Sugestie dalszych badań

  • Przetestuj komunikację OPC UA PubSub (CPU 1500 FW V2.9+ i PFC200 FW 22) – pozwala na publish/subscribe bez master-slave.
  • Zapoznaj się z Profinet v2.4 + TSN (draft IEC/IEEE 60802) – PFC200 G2 ma już kontroler TSN-ready.
  • Sprawdź bibliotekę WAGO Edge Controller – umożliwia kontenery Dockera z własnymi driverami.

Krótkie podsumowanie

Sterownik WAGO PFC200 może odczytywać dane z Siemens S7-1500 najłatwiej poprzez:
(1) S7-Comm (biblioteka S7_CLIENT, port 102, wymaga włączenia PUT/GET w S7-1500) lub
(2) Modbus TCP (PFC200 Master, CPU 1500 Server).
Wybór zależy od wymagań czasowych, polityki bezpieczeństwa i dostępnych licencji. Najważniejsze jest prawidłowe ustawienie zezwoleń w TIA Portal oraz konfiguracja odpowiednich bloków w CODESYS/e!COCKPIT. Przy aplikacjach krytycznych warto rozważyć OPC UA lub PROFINET z szyfrowaniem i certyfikatami.

Oceń odpowiedź:

Zadaj dodatkowe pytanie Sztucznej Inteligencji

Czekaj (1min)...
Zastrzeżenie: Odpowiedzi udzielone przez sztuczną inteligencję (model językowy) mogą być niedokładne i wprowadzające w błąd. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi powinny być zweryfikowane przez użytkownika.