'Inteligenty' dom ze sterownikiem PLC

Główna => Programowanie => Wątek zaczęty przez: epawel w Listopada 01, 2016, 08:05:36 pm

Tytuł: Modbus - kilka pytań?
Wiadomość wysłana przez: epawel w Listopada 01, 2016, 08:05:36 pm
Witam.
Od paru dni bawię się komunikacją Modbus między sterownikiem 750-880, a czujnikiem temperatury. Problem mam czysto programowy. Na podstawie przykładu ze strony stworzyłem testowy progam.PROGRAM modbusRTU
VAR
(* deklaracja zmiennych zgodnie z pdf wago*)
start: BOOL;
MODBUS_EXTENDED_MASTER1: MODBUS_EXTENDED_MASTER;
error: enumMB_ERROR;
zapytanie: typModbusExtendedQuery;
odpowiedz: typModbusResponse;

queryFinished: F_TRIG;
queryPending : SEMA;

krok: BYTE;

temp AT %MB10 : WORD;
hum AT %MB11 : WORD;
mode_s : WORD;
temp_set AT %MB12 : WORD;
time_h AT %MB13: WORD;
time_m AT %MB14: WORD;
time_ AT %MB15: WORD;

END_VAR

MODBUS_EXTENDED_MASTER1(
ENABLE:=TRUE ,
ASCII_Mode:= ,
bCOM_PORT:= 2,
cbCOM_BAUDRATE:= 960,
cpCOM_PARITY:= 0,
csCOM_STOPBITS:= 1,
cbsCOM_BYTESIZE:= 8,
cfCOM_FLOW_CONTROL:= 4,
tTIME_OUT:=t#500ms ,
(*wymagane parametry uruchomieniowe*)

Response:=odpowiedz,
StartFunction:=start ,
ExtQuery:=zapytanie ,

MB_Error=>error ,
bInterfaceError=> );

queryFinished(CLK := start);
queryPending(CLAIM := start, RELEASE := queryFinished.Q);

IF queryFinished.Q THEN
CASE krok OF

0:
temp:=odpowiedz.Data[0];
hum:=odpowiedz.Data[1];
mode_s:=odpowiedz.data[2];
time_h:=odpowiedz.data[5];
time_m:=odpowiedz.data[6];
krok:=krok+1;

1:
temp_set:= odpowiedz.Data[0];
krok:=0;

END_CASE;
END_IF;

IF NOT queryPending.BUSY THEN
zapytanie.SlaveAddress:=50;
CASE krok OF

0:
(*przygotowanie zapytania*)
zapytanie.FunctionCode:=4; (* 4 - read input register*)
zapytanie.Read_Quantity:=8; (* ile rejestrow czytamy*)
zapytanie.Read_StartAddress:=4; (* adres rejestru *)

1:
zapytanie.FunctionCode:=4; (* 4 - read input register*)
zapytanie.Read_Quantity:=8; (* ile rejestrow czytamy*)
zapytanie.Read_StartAddress:=51; (* adres rejestru *)

END_CASE;
start := TRUE;
END_IF;
Wysyłam dwa zapytania (0,1) do regulatora, za każdym razem czytając po 8 rejestrów. Następnie odczytane dane przypisuje do określonych zmiennych. Problem polega na tym, że wykonuję zapytanie 0, przypisuje dane do określonych zmiennych(temp, hum, mode itp), potem wysyłam zapytanie 1, i w tym czasie nadpisują mi się dane w tablicy i zmieniają wartości odczytane w kroku 0. I nie bardzo wiem jak sobie z tym poradzić. Wszelkie podpowiedzi mile widziane. Pozdrawiam.

Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: zim w Listopada 02, 2016, 06:38:27 pm
Witaj,

Zerknij sobię w zakładkę Resources->PLC Configuration->Modbus-Master[FIX] masz tam piękny kreator do używania z Modbusem.

Praktycznie zero pisania kodu podstawiasz zmienne pod adresy z z głowy.

Zrobiłem za jego pomocą komunikacje z rekuperatorem thessla green airpack.

W razie pytań chętnie pomogę.

Pzd
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: admin w Listopada 03, 2016, 11:13:44 am
epawel - czy zapytania działają, jak wykonujesz je osobno, usuwając jeden z kroków?  Trochę dziwi różnica w wielkości liter:

hum:=odpowiedz.Data[1];
mode_s:=odpowiedz.data[2];

zim - przejrzałem wczoraj menu Resources ->PLC Configuration... i nie znajduję Modbus-Master[FIX] i kreatora.  Jaki masz sterownik i wersję CoDeSys'a?

Pozdrawiam,
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: epawel w Listopada 04, 2016, 08:20:43 pm
Dziękuje za zainteresowanie tematem, dzięki temu ponownie przeanalizowałem kod. Zmieniłem deklarację zmiennych, mianowicie adresy pod którymi się mają one znajdować, " zwiększyłem' odstępy pomiędzy poszczególnymi adresami. Problem ustał. Odczyt działa poprawnie, lecz nie do końca to rozumiem.
temp AT %MB10 : WORD;
hum AT %MW0 : WORD;
mode_s : WORD;
temp_set AT %MB12 : WORD;
time_h AT %MB20: WORD;
time_m AT %MB14: WORD;
time_ AT %MB15: WORD;

admin - nie miałem jeszcze okazji pogratulować świetnej roboty i pracy włożonej w projekt - gratulacje!
zim - dziękuje za odpowiedź, takiej zakładki u mnie niestety nie ma.
Pozdrawiam.
Paweł.
 
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: admin w Listopada 05, 2016, 11:51:48 am
Cześć,

nie zwróciłem uwagi na deklarację zmiennych, a tu rzeczywiście, definiujesz zmienne typu WORD, które zajmują 2 bajty.  Więcej w tym temacie jest na:

http://www.edom-plc.pl/index.php/pl/wiecej-o-plc/funkcje/183-adresowanie-zmiennych-w-pamieci

W skrócie - zmienna typu WORD zapisana pod %MW0 zajmuje tę samą przestrzeń pamięci, co 2 zmienne typu BYTE zapisane pod %MB0 i %MB1;

Pozdrawiam!
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: zim w Listopada 06, 2016, 09:12:19 am
Witajcie,

Wersja to 2.3.9.44

Pozdrawiam,
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: Greg_OR w Listopada 21, 2019, 10:36:02 pm
Witaj,
Zerknij sobię w zakładkę Resources->PLC Configuration->Modbus-Master[FIX] masz tam piękny kreator do używania z Modbusem.
Praktycznie zero pisania kodu podstawiasz zmienne pod adresy z z głowy.
Zrobiłem za jego pomocą komunikacje z rekuperatorem thessla green airpack.
W razie pytań chętnie pomogę.
Pzd
Odgrzewam ze względu na komunikację z AirPackiem, a taki właśnie się 'wprowadził' do mojego domu i chciałbym go jakoś spiąć, bo licząc na to wybrałem tylko podstawowy sterownik do ustawiania rekuperatora.
Więc jeśli możesz zim to opisz komunikację, a przede wszystkim rejestry rekuperatora.
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: sylwek_burza w Listopada 22, 2019, 09:18:31 pm
Witaj,
Zerknij sobię w zakładkę Resources->PLC Configuration->Modbus-Master[FIX] masz tam piękny kreator do używania z Modbusem.
Praktycznie zero pisania kodu podstawiasz zmienne pod adresy z z głowy.
Zrobiłem za jego pomocą komunikacje z rekuperatorem thessla green airpack.
W razie pytań chętnie pomogę.
Pzd
Odgrzewam ze względu na komunikację z AirPackiem, a taki właśnie się 'wprowadził' do mojego domu i chciałbym go jakoś spiąć, bo licząc na to wybrałem tylko podstawowy sterownik do ustawiania rekuperatora.
Więc jeśli możesz zim to opisz komunikację, a przede wszystkim rejestry rekuperatora.
Jakiego AirPack'a kupiłeś? Home czy 4? Masz moduł CF/CF2? Prześlij na priv adres email to wyślę dokumentację. Możliwości sterowania/pytania są niesamowite. Wystarczy powiedzieć, że komunikacja pomiędzy panelem Air++ a centralą odbywa się po modbusie.
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: Greg_OR w Listopada 24, 2019, 09:04:25 pm
dzięki wielkie, PM poszło, mam serie 4 (nie wiem czy to jeszcze "home" czy nie) taka biała "krówka" model 500h króćce po obu stronach ma w jednej linii pionowej - wcześniejsze modele miały rozsunięte na boki, mam też moduł CF - dla serii 4 to jest chyba CF2.
Właśnie w nadziei na integracje z całym domem zamówiłem tylko podstawowy interfejs AirL do uruchomienia.
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: Greg_OR w Grudnia 11, 2019, 12:34:13 pm
przez instalatora dostałem z Thessli opis wyprowadzeń i rejestry modbusa, więc założyłem oddzielny temat
https://www.edom-plc.pl/forum/index.php?topic=459.0
Tytuł: Odp: Modbus - kilka pytań?
Wiadomość wysłana przez: adam.krol w Lutego 11, 2020, 09:29:22 am
Cześć
Ja mam natomiast inne pytanie, czy ktoś wie czy jest możliwość podłączenia się do AirPack Home, który ma CF zamontowany oraz sterownik Air++ bez tego modbus dividera?
Moje pytanie jest raczej czy linia w sterowniku albo CF jest terminowana i ja również powinienem coś modyfikować w swoim podłączeniu?