Modbus TCP PLC S7-1...
 
Powiadomienia
Wyczyść wszystko

Uwaga: Muszę przeprowadzić modernizację oprogramowania na serwerze, a w czarnym scenariuszu oznacza przeinstalowanie całego serwera na co muszę się przygotować.

Planuję to zrobić w ten weekend (25-26 Wrzesień). Prace będa wyglądały tak, że

- musze przygotować drugi zapasowy serwer i przenieść na niego strony: Smart'ny Dom, Forum, AFE

- przeprowadzić modernizację, która zajmie kilka godzin

- przenieść ponownie strony na modernizowany serwer

W tym czasie mogą występować braki w dostępie do strony lub mogą występować problemy z działaniem strony (wydajność, błędy) itp za co z góry przepraszam

Pozdrawiam, Admin

Modbus TCP PLC S7-1200

kam01
(@kam01)
Młodzik

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?

 

 

Cytuj
Autor tematu Dodane : 22/08/2019 2:34 pm
mguc
 mguc
(@mguc)
Początkujący

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

OdpowiedzCytuj
Dodane : 26/08/2019 12:05 am
kam01
(@kam01)
Młodzik

@mguc

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.

OdpowiedzCytuj
Autor tematu Dodane : 26/08/2019 9:44 am
mguc
 mguc
(@mguc)
Początkujący

Tworzysz obiekty bitowe w drzewie. I ich używasz w aplikacji.

Skrypty dodajesz w zakładce.. skrypty.

Pobranie bitu z odczytanego rejestru:

function odczytajBit(slowo, nr_bitu) { //nr_bitu liczymy od 0
var mask = 1 << nr_bitu;

return ((slowo & mask) !==0) ? true : false;
}

 

Odczytujemy rejestr i przepisujemy bity:

{init('modbus.0.holdingRegisters.10.40010');
function init(id){
read_w(getState(id).val);
on(id, function(obj) {
var slowo = getState(obj.id).val;
read_w(slowo);
}
);
}
function read_w(slowo){
if (!(slowo & 0xC000)) /* dwa najstarsze bity to znacznik cmd_id -> zmiana sterowania */
{
setState("PLC.DOM.LED.L01_1.status"/*status*/, odczytajBit(slowo, 0));
setState("PLC.DOM.LED.L01_2.status"/*status*/, odczytajBit(slowo, 1));
setState("PLC.DOM.LED.L01_3.status"/*status*/, odczytajBit(slowo, 2));
setState("PLC.DOM.LED.L01_4.status"/*status*/, odczytajBit(slowo, 3));
setState("PLC.DOM.LED.L01_5.status"/*status*/, odczytajBit(slowo, 4));
setState("PLC.DOM.LED.L01_6.status"/*status*/, odczytajBit(slowo, 5));
setState("PLC.DOM.LED.L01_7.status"/*status*/, odczytajBit(slowo, 6));
setState("PLC.DOM.LED.L01_8.status"/*status*/, odczytajBit(slowo, 7));
}
}
} /* L01 */

A zapisywanie - tutaj jest więcej pisaniny - trzeba przygotowac odpowiednie zdarzenia (tutaj tylko mały fragment):

//wywołanie obsługi
//1 parametr to nazwa obiektu
//2 parametr to: false - obiekt nie jest załączany impulsem
// true - obiekt jest załączany impulsem
device_led(id, id_enable, false);

//zmiany stanu LED realizowane na poziomie PLC
on({id: status, change: "ne"}, function (obj) {
var value = obj.state.val;
 
setState(out, value, true);
setState(cmd, value, true);
});

 

OdpowiedzCytuj
Dodane : 26/08/2019 10:22 pm
mguc
 mguc
(@mguc)
Początkujący

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

OdpowiedzCytuj
Dodane : 16/05/2020 11:46 pm
Udostępnij: