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ź:
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.