Witam!
Pytanie dotyczy polaczenia sterownika PLC S7-1200 po modbasie TCP.
Mianowicie polaczylem iobroker z sterownikiem i wszystko dzialalo prawie normalnie, prawie bo nie moglem uzyc input czy coil do sterowania z przycisku z vis jak i hab panela tylko Holding register dzialal poprawnie.
Wczoraj modbus przestal dzialac brak comunikacji nic nie zmienialem.!
Moze cos zle mam skonfigurowane od strony sterownika plc nie wiem nic nie przychodzi mi do glowy.
Czy jest ktos Kto robil cos na s7-1200 z iobrokerem?
Np. ja mam S7-1200.. i działa.
W manualu wyraźnie napisane jest, że systemowe funkcje obsługują tylko odczyt/zapis rejestrów. Bitowych zapytań nie ma :(. Trzeba z tym żyć.
Ja wszystkie bity "pakuję" do bazy z rejestrami i tak są przesyłane/czytane prze iobroker.
W iobrokerze rejestry "rozbijam" na poszczególne bity i przypisuje do poszczególnych zmiennych programu - trzeba napisać skrypt który to robi..
Dzieki to duzo wyjania, wspomne ze problem z modbusem roamiazany wina lezala po stronie sterownika i konfiguracji DB.
Teraz wszystko dziala poprawnie.
Co do skryptu i rozbijania zmiennej na bity czy moglby kolega sie podzielic wiedza na ten temat bo nie bardzo rozumiem gdzie i jaki ten skrypt kolega napisal, dodam ze chodzi glownie o ustawianie poszczegolnych bitow w zmiennej ktore chce wykozystac w habPanel i Vis do wizualizacji i kontrolowania oswietleniem.
Tworzysz obiekty bitowe w drzewie. I ich używasz w aplikacji.
Skrypty dodajesz w zakładce.. skrypty.
Pobranie bitu z odczytanego rejestru:
Odczytujemy rejestr i przepisujemy bity:
A zapisywanie - tutaj jest więcej pisaniny - trzeba przygotowac odpowiednie zdarzenia (tutaj tylko mały fragment):
Nie wiem, jak u Was, ale u mnie coś ten Modbus na PLC S7-1200 się wiesza. Po jakimś czasie przestaje odpowiadać. iobroker zgłasza błąd.
Okazuje się, że wystarczy zrestartowac bloczek obsługi MB-Server w PLC i ponownie zaczyna działać.
Zrobiłem sobie "watch-doga" który robi to automatycznie, jeżeli przerwa w komunikacji (czyli brak zapytania/odpowiedzi trwa dłużej niż 20sek.) Po ponad 2 miesiącach pracy bez "wyłączania się" PLC zakładam, że problem mam rozwiązany.
Trochę to dziwne jest...
Wiem, że odkopuję stary temat, ale może komuś to pomoże z ioBrokerem i S7.
Pamiętam, że kiedyś przeglądając kod biblioteki do obsługi modbusa w openHAB trafiłem na komentarz który sugerował, że PLC Siemensa nie lubią odpytań bez przerwy. Dlatego też w OH pojawił się parametr który dodaje przerwy między wywołaniami (timeBetweenTransactions dla połączenia).
W iobrokerze też się tak da. Aż z ciekawości sprawdzę, bo na wszelki w programie S7-1200 mam wstawionego watch-doga do resetowania komunikacji (bo faktycznie ona od czasu do czasu się zawiesza. I to bez znaczenia czy po TCP czy po RS..)