'Inteligenty' dom ze sterownikiem PLC

 Language:
Szukanie zaawansowane  

Aktualności:

Powrót do strony głównej: www.edom-plc.pl

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.

Pokaż wątki - vakul

Strony: [1]
1
Tematy ogólne / [SPRZEDAM] Sterowniki, moduły, zasilacze, akcesoria
« dnia: Stycznia 18, 2021, 03:31:18 pm »
W razie pytań proszę o prywatną wiadomość.
Przy większym zakupie ceny do lekkiej negocjacji.

Sterowniki z serii 750:
750-301 - [PROFIBUS DP/FMS Fieldbus Coupler] - 1 szt (używane) - 80zł
750-338 - [Fieldbus Coupler CANopen; D-Sub] - 1 szt (używane) - 80zł
750-341 - [ETHERNET TCP/IP fieldbus coupler] - 1 szt (używane) + 1 szt (nowe) - 150zł/200zł szt
750-838 - [Controller CANopen] - 2 szt (używane) - 150zł
750-841 - [Controller ETHERNET] - 1 szt (używane) - 350zł

Moduły z serii 750:
750-402 - [Input Module, Digital, 4 Channel, Positive Switching] - 8 szt (używane) / 22zł
750-430 - [8 DI] - 3 szt (używane) - 90zł/szt
750-454 - [2-Channel Analog Input Module 0/4-20 mA diff inputs] - 2 szt (używane) / 110zł
750-461 - [2-Channel Analog Input Module for RTDs] - 1 szt (używane) / 350zł/szt
750-468 - [4-Channel Analog Input Module 0-10V] - 2 szt (używane) / 350zł
750-506 - [2 DO] - 3 szt (używane) / 10zł/szt
750-514 - [2-Channel Relay Output Module 125 V AC, 30 V DC] - 10 szt (używane) + 2 szt nowe / 35zł (50zł nowe)
750-530 - [8 DO] - 10 szt (używane)  95zł/szt
750-600 - [end module] - 1 szt (używane) + 1 szt (nowe) 20zł/szt
750-630 - [SSI transmitter interface] - 1 szt (używane)
750-638 - [Counter, Up-Down, 2 Channel, 24 Vdc, 500 Hz] - 1 szt (nowe) / 100zł/szt
750-640 - [Real-time clock module] - 1 szt (używane) 65zł/szt
750-652 - [RS-232/485 adjustable] - 4 szt (używane) + 1 szt (nowe) - 400zł/450zł szt
750-653 - [RS-485 Serial Interface] - 32 szt (używane) + 1 szt (nowe) - 350zł/400zł szt
750-1405 - [16 DI] - 3 szt (używane) + 1 szt (nowe) - 200zł/szt
750-1407 - [16 DI, Low-side switching] - 1 szt (używane) - 190zł/szt

4x 100 sztuk 2273-204 złączki WAGO 4x 0,5-2,5mm2 - nowe, 48zł/opakowanie
1x licznik dwukierunkowy LE-03MQ - nowy w opakowaniu - 650zł
52x przekaźnik Finder 24V (przekaźnik 34.51.7.024.0010 + podstawka 93.01.7.024) - nowe w opakowaniach, 35zł/szt
10x przekaźnik impulsowy bistabilny 230V LC-TEC EPN510 (używane) - nowy 21/szt - używane - 13zł/szt
1x 787-912 zasilacz 24V 2A - używany - 120zł
30x 857-304 przekaźniki cienkie WAGO 24V w podstawkach (nowe) - 30zł/szt
3x przetwornica DC/DC TRACO POWER TZL 060-2424, input 18-36VDC, output 24VDC/2.5A (używane) - 70zł/szt

Zestaw sterownik + moduły - (używane) - 200zł/zestaw
IQ Controls Galileo Inoux Mix 
IQ Controls Galileo Inoux B8
IQ Controls Datacom WGL 

2
Sterowanie i Wizualizacje / OpenHAB - komunikacja z WAGO bez modbusa
« dnia: Października 09, 2020, 07:40:08 pm »
W innym wątku dotyczącym OpenHABa pisałem o komunikacji z WAGO bez użycia modbusa. Poniżej przedstawiam moje rozwiązanie tego problemu. Być może modbus byłby lepszy ale nigdy go nie sprawdziłem w akcji. To co poniżej działało i działa dobrze od 2 lat.

Środowisko wygląda tak:
- RaspberryPi z uruchomionym serwerem nginx + PHP + MySQL
- Na tym samym urządzeniu RPi działa również OpenHAB

Serwer www zawiera takie skrypty:
/wago/wago_lookup_refresh.php
/wago/wago_get-var-list.php
/wago/wago_set-var.php

Na sterowniku WAGO (750-880) mam dodaną wizualizację o nazwie "openhab", do której dodaję zmienne, które chcę czytać/zapisywać z openhaba. Wystarczy dodać zwykłe pole tekstowe, a w definicji użyć zmiennej, którą chcemy wyświetlić w tym polu. To wystarczy. Sugeruję nie dodawać nic więcej, bo wizualizacja dość szybko rośnie zajmując cenne miejsce na sterowniku.
Wago stworzy z tego plik openhab.xml dostępny przez WWW lub FTP. Plik będzie dostępny pod adresem: http://WAGO_IP/plc/openhab.xml

Zawartość pliku może (ale nie musi) zmieniać się przy kompilacji programu na sterowniku WAGO. To z kolei może powodować, że określone zmienne zmienią swoje adresy. Konieczne jest odświeżanie listy zmiennych (i ich adresów) w sposób cykliczny lub na żądanie (wtedy trzeba to zrobić ręcznie po kompilacji programu na PLC). U mnie dzieje się to cyklicznie co 5 sekund.

W tym celu wywołuję skrypt PHP "wago_lookup_refresh.php":

<?php
/* SETUP */
$log  false;
$wago_ip  '192.168.1.5';


if ($log$time_start microtime(true);

// get a list of visualizations to be parsed
$visu = isset($_GET['visu']) ? $_GET['visu'] : 'plc_visu';
$visu_pages explode (','$visu);
$output = array();

// process each visualization, looking for variable list
foreach ($visu_pages as $xml_page)
{
// get XML description for visu page
$f curl_get('http://'.$wago_ip.'/plc/'.$xml_page.'.xml');
// extract all variable names with memory addresses
preg_match_all("'<variable name=\"(.*?)\">(.*?)</variable>'si"$f$variablelistPREG_SET_ORDER);

// create human readable and serialized output files
foreach ($variablelist as $var)
{
$output[] = $var[1].';'.str_replace(',','|',$var[2].'|'.chr(10));
$serial[$var[1]] = '|'.str_replace(',','|',$var[2].'|');
}
}
// sort the arrays (for quicker lookup)
sort($output);
ksort($serial);

// save the files if different 
if (file_get_contents('wago_variables.csv') != $output)
{
file_put_contents('wago_variables.csv'$output);
file_put_contents('wago_variables.txt'serialize($serial));
}
// if logging enabled - put some data on the screen
if ($log
{
$time_end microtime(true);
$time $time_end $time_start ;
echo "<pre>";
echo 'Execution time : ' $time ' seconds'.chr(10) ;
print_r ($serial);
echo "</pre>";
$f file_put_contents('time.log',file_get_contents ('time.log').chr(10).$time_start);
}

// curl web access
function curl_get($url
{    
    $defaults = array( 
        CURLOPT_URL => $url
        CURLOPT_HEADER => 0
        CURLOPT_RETURNTRANSFER => TRUE
        CURLOPT_TIMEOUT => 
    ); 
    
    $ch curl_init(); 
    curl_setopt_array($ch$defaults); 
    if( ! $result curl_exec($ch)) 
    { 
        trigger_error(curl_error($ch)); 
    } 
    curl_close($ch); 
    return $result

?>


Skrypt tworzy plik tekstowy "wago_variables.txt" i "wago_variables.csv". W pierwszym (TXT) jest zapisana tablica dla PHP do szybkiego wyszukiwania zmiennych dla potrzeb kolejnych skryptów. Natomiast w CSV są wylistowane wszystkie zmienne w czytelnej dla oka postaci (można sobie to wyświetlić w przeglądarce i podejrzeć co tam aktualnie jest).
W obu przypadkach mamy wypisane pary zmienna + adres na sterowniku WAGO. Dobór rozszerzeń TXT/CSV jak widzę jest niefortunny ale tak to mam zrobione, coś pewnie w trakcie modyfikowałem i tak już zostało.

Należy zwrócić uwagę, aby jednorazowo ustawić uprawnienia do plików TXT/CSV, tak aby skrypt php mógł je tworzyć i modyfikować.


Aby lista zmiennych była zawsze aktualna (pliki "wago_variables"), to w OpenHAB ma dodany taki "rule" wywoływany co 5 sekund:
import org.openhab.io.net.actions.HTTP

rule wagorefresh
when
Time cron "0/5 * * * * ?"
then
var String HTTPString = "http://127.0.0.1/wago/wago_lookup_refresh.php?visu=openhab"
sendHttpGetRequest(HTTPString)
end
Podobne wywołanie skryptu może być z CRONa linuxowego, to wcale nie musi być OpenHAB. Może to też być ręczne wejście na link z powyższego skryptu po każdej kompilacji programu na WAGO.

W efekcie mamy 2 lokalne pliki (na serwerze WWW) z zawsze aktualnymi adresami zmiennych na sterowniku WAGO.

Aby pobrać listę wszystkich zmiennych wraz z ich wartościami należy wywołać kolejny skrypt PHP "wago_get-var-list.php"

<?php
$time_start 
microtime(true);

$wago_ip '192.168.1.5';
$output 'json';
$var = isset($_GET['var']) ? $_GET['var'] : 'ALL';

$var_file file_get_contents('wago_variables.txt');
$var_lookup unserialize($var_file);

if (
$var == 'ALL')
$vars array_keys($var_lookup);
else
$vars explode (','$var);

$var_count sizeof($vars);

$post '|0|'.$var_count.'|';

for (
$i=0$i<$var_count$i++)
{
$post .= $i.$var_lookup[$vars[$i]];
}


$wago_response curl_post('http://'.$wago_ip.'/plc/webvisu.htm'$post);
$wago_response explode ('|'$wago_response);

$out '';

if (
$output=='json')
{
$out '{'.chr(10);
for ($i=1$i<=$var_count$i++)
{
// do transformations if needed
if ($vars[$i-1] == '.OH_TEST'$wago_response[$i] = transform_OnOff2Boolean($wago_response[$i]);

// output variables
$out .= '   "'.$vars[$i-1].'": "'.$wago_response[$i].'"';
if ($i<$var_count$out .= ',';

$out .= chr(10);
}
$out .= '}'.chr(10);
}
else
{
for (
$i=1$i<=$var_count$i++)
$out .= $vars[$i-1].'='.$wago_response[$i].chr(10);
}

echo 
$out;

function 
transform_OnOff2Boolean ($val)
{
return ($val==1) ? 'ON' 'OFF';
}
function 
curl_post($url$post

$ch curl_init(); 
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_POSTFIELDS$post);

$result curl_exec ($ch);
curl_close ($ch);

return $result


$time_end microtime(true);
$time $time_end $time_start ;

//$f = file_put_contents('time.log',file_get_contents ('time.log').chr(10).$time_start);

//echo chr(10);
//echo 'Execution time : ' . $time . ' seconds' ;
?>

Wywołanie tego skryptu w przeglądarce wyświetli na ekranie plik JSON ze wszystkimi zmiennymi (i wartościami) dostępnymi w wizualizacji openhab.xml (na sterowniku WAGO).

W dalszym kroku mam dodane rozszerzenie (binding) HTTP w OpenHABie, a w http.cfg jest taki wpis:

WagoHttpBinding.url = http://127.0.0.1/wago/wago_get-var-list.php?var=ALL
WagoHttpBinding.updateInterval = 1000

Oznacza to tyle, że mamy do dyspozycji skrót "WagoHttpBinding" z którego możemy korzystać dalej w dowolnym miejscu w OpenHabie. W jego treści będzie zawartość pliku JSON z naszymi zmiennymi. Aby wczytać zmienną do OpenHABa w definicji zmiennych ("items") mam takie wpisy:

Switch Wago_oh_all_lights_off "oh_all_lights_off" <light> {autoupdate="false", http=">[ON:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_all_lights_off&val=ON] >[OFF:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_all_lights_off&val=OFF] <[WagoHttpBinding:500:JSONPATH($['SWIATLA.oh_all_lights_off'])]" }

Number Wago_oh_light_switch_dol_wiatrolap "oh_light_switch_dol_wiatrolap" <light> {autoupdate="true", http=">[1:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_wiatrolap&val=1] >[2:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_wiatrolap&val=2] >[3:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_wiatrolap&val=3] >[0:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_wiatrolap&val=0] <[WagoHttpBinding:500:JSONPATH($['SWIATLA.oh_light_switch_dol_wiatrolap'])]" }
Number Wago_oh_light_switch_dol_hol "oh_light_switch_dol_hol" <light> {autoupdate="true", http=">[1:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_hol&val=1] >[2:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_hol&val=2] >[3:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_hol&val=3] >[0:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_hol&val=0] <[WagoHttpBinding:500:JSONPATH($['SWIATLA.oh_light_switch_dol_hol'])]" }
Number Wago_oh_light_switch_dol_kuchnia "oh_light_switch_dol_kuchnia" <light> {autoupdate="true", http=">[1:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_kuchnia&val=1] >[2:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_kuchnia&val=2] >[0:POST:http://127.0.0.1/wago/wago_set-var.php?var=SWIATLA.oh_light_switch_dol_kuchnia&val=0] <[WagoHttpBinding:500:JSONPATH($['SWIATLA.oh_light_switch_dol_kuchnia'])]" }

Ilekroć zawartość zmiennej się zmienia, to OpenHAB wyłuska sobie z pliku JSON odpowiednią wartość i umieści w swoich zmiennych. Dalej możemy sobie robić z nimi co chcemy.

Aby zaktualizować zmienną w sterowniku WAGO należy wywołać skrypt "wago_set-var.php" z odpowiednimi parametrami.
Np.: wago_set-var.php?var=SWIATLA.oh_light_switch_dol_kuchnia&val=2
var to pełna ścieżka do zmiennej widoczna w pliku TXT/CSV, val to wartość jaką chcemy przypisać.

<?php
$time_start 
microtime(true);

$wago_ip '192.168.1.5';
$var = isset($_GET['var']) ? $_GET['var'] : '';
$val = isset($_GET['val']) ? $_GET['val'] : '';
$vars explode (','$var);

$var_file file_get_contents('wago_variables.txt');
$var_lookup unserialize($var_file);
$var_count sizeof($vars);
$var_location = isset($var_lookup[$var]) ? $var_lookup[$var] : '';

if (
$val == 'ON'$val 1// obsługa OpenHab

if ($var_location)
{
// BOOLEAN value, translate ON=>1, OFF=>0
if (substr($var_location,-2) == '0|'$val = ($val>0) ? '1' '0';

$post '|1|1|0'.$var_location.$val.'|';
$wago_response curl_post('http://'.$wago_ip.'/plc/webvisu.htm'$post);
// echo 'Wago response: '.$wago_response;
// echo $post;
}
else
echo 'Unknown variable';


function 
curl_post($url$post

$ch curl_init(); 
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_POSTFIELDS$post);

$result curl_exec ($ch);
curl_close ($ch);

return $result


$time_end microtime(true);
$time $time_end $time_start ;
//echo '<br>Execution time : ' . $time . ' seconds' ;
?>

Powyższy kod jest w całości mojego autorstwa, choć pewnych rzeczy już nie pamiętam dlaczego zrobiłem to tak czy inaczej. W każdym razie w obecnej formie działa to dobrze i raczej nie potrzebuję tykać tych fragmentów kodu. Wklejam wszystko tak jak mam, niektóre fragmenty są wykomentowane i służyły do doraźnego debugowania skryptów.

Trochę zabawy na styku OpenHAB/WAGO wymaga ogarnięcie stanów zmiennych OH, które bywają przeróżne np. ON/OFF zamiast 0/1. Trzeba to odpowiednio obsługiwać w skryptach.

Jeszcze słowo odnośnie wydajności. W skryptach widać pozostałości po analizie czasu wykonanywania skryptów. Jak pamiętam udało mi się uzyskać stabilne działanie przy częstotliwości odświeżania wartości zmiennych około 600-700ms (WAGO->OpenHAB). Co było w zupełności wystarczające. Teraz mam to ustawione na 1000ms i szybciej nie potrzeba.
Natomiast wywołanie zmiany OpenHAB->WAGO odbywa się natychmiast bez jakiejkolwiek zauważalnej zwłoki. Kliknięcie przycisku w telefonie natychmiast wyłącza światło, tak samo szybko jak przycisk na ścianie.

Wykorzystanie powyższych skryptów PHP nie ogranicza się oczywiście do OpenHABa, można ich użyć z dowolnym innym narzędziem do wizualizacji. Można pokusić się o dopisanie kodu odpowiedzialnego za aktualizację brokera MQTT i w ten sposób korzystać ze zmiennych w innych aplikacjach. Możliwości nieograniczone.


3
Tematy ogólne / [SPRZEDAM] Licznik F&F LE-03MP
« dnia: Października 25, 2018, 08:25:19 am »
Sprzedam licznik 3 fazowy z Modbusem. Mierzy zużycia chwilowe na poszczególnych fazach, napięcia, moc czynna i bierną i inne.
Tutaj szczegóły:

https://www.fif.com.pl/liczniki-zuzycia-energii-elektrycznej/463-licznik-zuzycia-energii-le-03mp.html

Nowy i nieużywany. Cena 490zł.

4
Programowanie / Adresowanie zmiennych
« dnia: Marca 14, 2018, 08:58:45 am »
Próbuję ugryźć Modbusa TCP w sterowniku 750-880 (pobieranie i zapisywanie danych do sterownika przez aplikację zewnętrzną - konkretnie OpenHab).
Testowe połączenie nawiązałem, pobieram rejestry. Pytanie mam o zmienne.

Jeżeli adresuję zmienną w ten sposób:
test_var   AT %MB0 : BOOL;
to rozumiem, że kompilator uwzględnia moje deklaracje i pomija wskazane w deklaracjach zakresy pamięci? Moje deklaracje mają priorytet, a cała reszta zmiennych "dostosuje się" ze swoją lokalizacją? Czy nie ma ryzyka nadpisania innych zmiennych?
Jaki charakter mają te zmienne - czy jest to odpowiednik VAR RETAIN PERSISTENT?

Jeżeli zmienna z kolei jest zadeklarowana zwyczajnie:
test_var : BOOL;
To czy jest w jakiś sposób dostępna przez modbusa? Wiadomo, jej adres może "pływać" między kompilacjami ale czy pobierając adres zmiennej z wizualizacji mogę go jakoś wykorzystać z modbusem?

Kolejna sprawa to wejścia i wyjścia cyfrowe. Czy dobrze to rozumiem, jeżeli czytam np. 7 bit to zawsze będzie to 7 z kolei wejście fizyczne na sterowniku? Jeżeli dodam/usunę karty ze sterownika to muszę na nowo przejrzeć co gdzie jest podłączone i odpowiednio do zmian czytać rejestry?

5
Tematy ogólne / Sklejanie przekaźnika z zasilaczem do listwy LED.
« dnia: Lutego 28, 2018, 01:58:38 pm »
Uruchomiłem oświetlenie nad szafką w kuchni - listwa LED z zasilaczem takim jak tutaj:
http://www.strefaledowa.pl/pl/p/Zasilacz-LED-15W-12VDC-GTV/1268

Problem jest z przekaźnikiem WAGO 857-304, skleja się niemal natychmiast po 2-3 włączeniach. Po wyjęciu i "opukaniu" działa znowu przez chwilę. Te same przekaźniki od roku bez problemu działają z roletami i oświetleniem. Problemów dotychczas z nimi nie miałem.

Nie chciałbym zamieniać przekaźnika w rozdzielni, wolę raczej wymienić ten badziewny zasilacz w meblach (jest poza rozdzielnią).
Czy może coś konkretnego/sprawdzonego zaproponować (12V)?|Listwa ma ok. 1m, więc wymagania prądowe z zasilacza są znikome.

6
Tym razem brama garażowa.

Długo kombinowałem, jak uzyskać rzetelną informację o bieżącym położeniu bramy garażowej.

Podejście pierwsze - dwa kontaktrony w skrajnych pozycjach bramy. Dzięki temu wiemy, czy brama jest w pełni otwarta lub w całkowicie zamknięta. Położenia pośrednie można wyliczać wg czasu ruchu bramy. Temat ogólnie złożony i bardzo podatny na ewentualne nieścisłości w wynikach (brama ręcznie otwarta, zablokowana itd.).

Podejście drugie - odczyt impulsów z kręcących się elementów napędu bramy. Rozważałem 4 magnesy na kole nawojowym od linki i jeden kontaktron liczący impulsy z tych magnesów. Dodatkowo kontaktrony na skrajnych pozycjach, jak wyżej.

Podejście trzecie - odczyt impulsów z silnika napędu bramy (są tam enkodery optyczne) - porzuczone.

Rozwiązanie:
Podejście czwarte, które ostatecznie wdrożyłem oparte jest o moduł 4-20mA (Wago 750-492) + wieloobrotowy potencjometr zadający pozycję wałka, na który nawija się linka unosząca bramę.

Po obserwacji wyszło mi, że wałek przy pełnym zakresie ruchu bramy obraca się niecałe 7 razy. Potencjometr z kolei pozwala na wykonanie 10 obrotów. Dalej były dwa problemy do rozwiązania, podłączenie elektryczne i mechaniczne połączenie potencjometru z bramą.

Elektronika:
Przy sterowniku moduł 750-492, dalej dwa przewody do potencjometru przy bramie.
Skorzystałem z takiego schematu: http://forums.mrplc.com/index.php?/topic/30861-4-20ma-from-potentiometer/
Moje R1 to 220 Ohm, R2 chyba takie jak w schemacie, nie pamiętam. W internecie są dostępne kalkulatory, do wyliczenia poszczególnych rezystancji.

Mechanika:
Tutaj proszę zerknąć na zdjęcia. Na wałek bramy (średnica coś ok. 25mm) na gorąco nałożyłem mufę PCV (musiałem ją podgrzać bo nie chciała wejść, brakowało ok. 1,5mm na średnicy). W dużą mufę wcisnąłem mniejszą (weszła na wcisk). Teraz średnica była już zbliżona do tej, której potrzebowałem. W małej mufie włożyłem kawałek gumy tak aby gałka potencjometru weszła na delikatny wcisk. Pełni to rolę sprzęgła, w razie blokady, a dodatkowo pozwala tłumić bicie przez niewspółosiowe ułożenie wałka i potencjometru.

Na potencjometrze jest gałka, mimo odpowiedniego dokręcenia to i tak przy nadmiarze siły się obraca, czyli w razie konieczności będzie to drugi stopień sprzęgła.

Potencjometr umocowałem trytytkami do blaszki od regipsów (służyła do krzyżowego łączenia profili). Blaszka pozwoliła na ręczne dopasowanie odległości od ściany aby uzyskać w miarę równe ułożenie potencjometru w jednej osi z wałkiem bramy. W trakcie pracy blaszka lekko pracuje, co jest całkiem dobre i nie polecam robienia całości na sztywno.

Na górze umocowałem puszkę, w której ukryłem elektronikę i kabelki.

Program:
Po montażu trzeba było skalibrować pozycję bramy i odczyty z czujnika. Okazało się, że pozycja odczytana z czujnika zmieniała się wykładniczo (a miała być liniowa). Musiałem to uwzględnić w programie. Zanotowałem w excelu kilkanaście pozycji bramy w postaci par "uniesienie bramy w milimetrach" + "odczyt z czujnika". Pierwsze 60-70% uniesienia bramy daje odczyt z grubsza liniowy, później wzrost jest gwałtowny. Dlatego w pozostałych pozycjach zagęściłem odczyty. Mając zestaw takich par pozycje pośrednie interpoluję w programie.

W celu odfiltrowania wskazań czujnika użyłem funkcji FILTER_DW z bibliotek Oscat. Po filtrowaniu odczyty pozycji zmieniają się maksymalnie o kilka milimetrów.

Źródło w ST umieszczę w osobnym poście.

Podsumowanie:
Rozwiązanie w 110% spełniło moje oczekiwania a precyzja odczytów niesamowicie mnie zaskoczyła (dokładność rzędu 1cm). Na wizualizacji mogę wyświetlić sobie na ile centymetrów mam podniesioną bramę lub wyrazić to w procentach - wedle uznania. Kontaktronów, na skrajnych pozycjach, mimo że je zamontowałem, nie używam bo nie ma takiej potrzeby. Odczyt pozycji bramy jest niezależny od tego, czy ktoś uniósł ją ręcznie (bez prądu) czy ze sterownika. Rozwiązanie idealne.

Koszt części, to około 30-40zł (mufy PCV z castoramy, elektronika z allegro) nie licząc oczywiście modułu wago, który miałem na stanie. Z wykonaniem całości zeszło mi ze dwa dni, trochę pracy jednak było.

A jakby ktoś pytał "ale po co?", odpowiem "bo można" ;)

7
Proponuję otwarcie nowego działu/serii "Pomysłowy Dobromir" :)
1 wątek = 1 pomysł, w miarę możliwości z dokumentacją fotograficzną i krótkim opisem. Czas trochę rozruszać forum!

Przykładasz głowę do poduszki i słyszysz: "A drzwi zamknięte?" Resztę znacie.

Moje rozwiązanie problemu:
Po demontażu metalowego szyldu napakowałem plasteliny aby określić, w które miejsce trafia rygiel zamka.
Następnie nawierciłem dwa otwory u góry i u dołu, resztę obrobiłem ostrymi dłutami. Finalnie otwór okazał się być odrobinę za nisko (rygiel ślizgał się po rolce krańcówki) i musiałem zrobić podkładkę w jego dolnej części (kawałek białej trytytki).
Wycięcie otworu poszło sprawnie, najwięcej czasu zajęło przełożenie przewodu za ościeżnicą.
Kabel doprowadziłem do pobliskiej puszki z włącznikami światła.

Za ościeżnicą warto zostawić lekki nadmiar przewodu, tak aby dało się wyjąć krańcówkę, odlutować i wymienić gdyby była taka potrzeba. Jeszcze lepszym rozwiązaniem byłoby ułożenie peszla od ościeżnicy do puszki ale u mnie było już za późno.

Są też komercyjne rozwiązania np: https://www.google.pl/search?q=031309.06 ale u siebie bym tego nie wcisnął.

Koszt operacji 2 zł, WAF bardzo wysoki.

8
Tematy ogólne / Czujnik wilgotności gleby
« dnia: Czerwca 20, 2017, 10:04:01 pm »
Zastanawiam się jak ugryźć temat odczytu wartości z czujnika wilgotności gleby.

Rozważam zrobienie czegoś takiego:
http://vanderleevineyard.com/vineyard-blog/the-vinduino-project-2-making-and-installing-gypsum-soil-moisture-sensors

Lub zakupienie gotowca:
https://www.amazon.com/Watermark-Soil-Moisture-Sensor-Cable/dp/B00IAWEHSQ

Opcja druga to wykonanie z jakiegoś granulatu i ponoć jest to bezobsługowe. W wersji pierwszej (gipsowej) żywotność czujnika jest ograniczona ale można łatwo (i tanio) zrobić ich dużą ilość na ewentualne wymiany.

W każdym razie aby odczytać rezystancję takiego czujnika to trzeba ją mierzyć z użyciem prądu zmiennego. Ze stałym ponoć to nie wyjdzie. Mój poziom wiedzy z tego zakresu nie pozwala mi ocenić dostępnych opcji i zwracam się do was o pomoc. W jaki sposób odczytać stan takiego czujnika z użyciem WAGO? Czy dałoby się to zrobić z wykorzystanie modułu AI?

Tutaj jest gotowiec do opcji II podający na wyjściu napięcie 0-2.8 volta, niestety kosztuje kolejne $$$.
http://www.irrometer.com/pdf/sensors/405%20Voltage%20Adapter%20&%20Isolator-WEB.pdf

9
Tematy ogólne / Konwerter RS232 <> RS485
« dnia: Kwietnia 19, 2017, 10:06:34 pm »
Cześć,
Chciałbym ugryźć temat rekuperatora po modbusie.
Mam na stanie 2 moduły: 750-650/003-000 (RS232C konfigurowalny). Nie mam modułu do RS485.

Czy dołożenie konwertera takiego jak na allegro występują w cenie ok. 15zł: https://allegro.pl/listing?string=konwerter%20rs232%20rs485
rozwiąże problem i będę miał pełnoprawny moduł RS485 czy będą jakieś ograniczenia?

A może ktoś zechciałby wymienić się sztuka za sztukę?

10
Tematy ogólne / Przewody do krosowania
« dnia: Marca 24, 2017, 06:10:41 pm »
Jakich przewodów używacie do krosowania pomiędzy LSA, sterownikiem i przekaźnikami?
Pod ręką oczywiście najwięcej skrętki, jednak rozplątywanie par i mnogość kolorów trochę mi nie pasuje i zaburza mi ład w rozdzielni :)

Szukam czegoś prostego, nieskręconego 0,5mm2 w drucie. Rozwiązaniem jest YTDY alarmowy, tylko dostaję od razu 6-8 różnych kolorów. A ja potrzebowałbym tylko 2-3 kolory.

Czy można gdzieś kupić TDY w pojedynczych żyłach? Nie mogę nic sensownego znaleźć.

11
Tematy ogólne / Czujniki temperatury DS18B20 w ramkach Berker B.Kwadrat
« dnia: Sierpnia 05, 2016, 09:44:04 pm »
Taka mała fotogaleria, może się komuś przyda ;)

12
Tematy ogólne / Liczniki energii elektrycznej
« dnia: Maja 26, 2016, 11:28:56 pm »
Aktualnie domawiam brakujące elementy do rozdzielni i zastanawiam się nad pomiarem zużycia energii elektrycznej.

Mam na stanie liczniki:
1 sztuka - 3-fazowy
2 sztuki - 1-fazowe

Zastanawiam się czy zapakować 1x 3-faz + 2x 1-faz (do różnych zastosowań) czy sprzedać licznik 3-faz i dokupić 1x 1-faz i osobno mierzyć poszczególne fazy?

Jak w praktyce używacie swoich liczników?
Które rozwiąznie sprawdza się w boju?
Jaki urządzenia monitorujecie (rekuperator, piec, inne)?
Czy monitorowanie poszczególnych urządzeń ma sens?

Pomiar 3x1-faz wydaje się ciekawym rozwiązaniem, można z niego "wyczytać" zużycie na poszczególnych urządzeniach wiedząc na których są fazach i nie trzeba się rozdrabniać na osobne liczniki.

13
Tematy ogólne / Aktualne ceny przekaźników
« dnia: Października 25, 2015, 08:17:16 am »
Cześć,

Pytanie - gdzie, jakie  i za ile można kupić przekaźniki?

788-304 - najtaniej widzę w TIM.pl za 17,37 netto (21,37 brutto)
857-304 - TIM.pl 30,57 netto (37,60 brutto)

Kiedyś miałem ofertę z WAGO na 788-304 w cenie 15,00 netto ale pewnie już nieaktualne.
Proszę piszcie obie ceny (netto/brutto) łatwiej to porównać.

14
Tematy ogólne / Dobór modułów WAGO
« dnia: Kwietnia 13, 2013, 03:51:47 pm »
Witam,

Pierwszy post :) Temat wałkuję dłuższy czas. Rozważałem Fateka, Siemensa no i padło na WAGO.
Dlaczego WAGO? Dostęp przez Ethernet (innej opcji programowania nie rozważam). Banalne połączenie z np. MySQL. Nie zależy mi na wizualizacjach bezpośrednio ze sterownika ale dostęp do jego parametrów z zewnątrz i przygotowanie własnych narzędzi.

Dobra, a teraz konkretnie. Stoję przed wyborem modułów i przygotowania sterownika. Budowę rozpoczynam za kilka miesięcy, więc najwyższy czas się zaopatrzyć.

Wybrany sterownik: 750-880. Odrzuciłem 750-881 ze względu na brak slotu na kartę pamięci.

Mogę kupić zestaw startowy "Ethernet 4" za 2190zł netto (cena z 04/2013), w skład zestawu wchodzi:
750-880 sterownik sieciowy + karta SD 1GB
750-400 moduł wejść 2x DI
750-501 moduł wyjść 2x DO
750-600 moduł końcowy
787-602 zasilacz 24V
288-863 moduł przełączający (2-kanałowy zadajnik sygnałów dwustanowych)
759-333/000-923 oprogramowanie WAGO-I/O-PRO CAA + kabel USB
dokumentacja
kabel UTP 1m
2009-309 narzędzia montażowe

I teraz pytanie. Czy można to kupić taniej? Czy korzystniej będzie skompletować zestaw osobno?
W zestawie są moduły we/wyj ale tylko dwukrotne. Docelowo będę potrzebował dużo modułów i to tych większych.

Zastanawiam się, czy nie byłoby lepiej kupić sam sterownik 750-880 (1680 netto), do tego zwykłą kartę SD, moduły we/wyj po 8-16 portów, moduł końcowy i zasilacz. Wyjdzie ciut drożej ale od razu mam duże moduły we/wyj.

Nie potrzebuję "modułu przełączającego", kabla UTP, kabla USB, dokumentacji.

A jak z oprogramowaniem, czy to co jest w zestawie http://www.wago.com/wagoweb/documentation/759/eng_dat/d07590333000en.pdf jest mi potrzebne (tzn. czy nie mogę tego bezpłatnie pobrać ze stron wago/codesys)? Czy może jest to coś, czego nie zdobędę jak nie kupię i bez tego nie ruszę? Proszę o radę w temacie.

Czy narzędzia montażowe są niezbędne, czy zwykły śrubokręt daje radę?

Dużo pytań i będę pytał dalej ale na teraz wystarczy :)

Strony: [1]