Pri nacitani pocasi z OpenWeather pouzivam nasledujici kod:
VAR
getWeatherInfo : BOOL;
WeatherInfo : fbOpenWeatherMap;
WeatherData : T_OPEN_WEATHER_MAP_DATA;
getWeatherInfo := System_S.R_EDGE_10MIN;
IF (getWeatherInfo) THEN
WeatherInfo( getWeather := getWeatherInfo,
city := 'Rudna',
country := 'cz',
period := hour_6,
utcOff := 60,
apiKey := '##################################';
ethCode := ETH1_uni3,
weatherData := WeatherData
);
END_IF;
Komunikacni kanal je nastaven nasledovne:
Pri nacitani, ale konci volani chybou.
weatherInfo.errorTxt = "HTTP request error : 1"
PLC je nastaveno s pevnou IP adresou, gateway na router i DNS, kterou mam od IP providera.
Poradi mi prosim nekdo, co dana hlaska v errotTxt znamena a pripadne kde muze byt chyba?
Odpovědi 5
Chyba "HTTP request error : 1" znamená, že se funkční blok nedočkal odpovědi ve stanoveném časovém intervalu. Problém je způsoben tím, že blok fbOpenWeatherMap
není volán trvale, ale jen na náběžnou hranu. Problém by mělo vyřešit odstranění podmínky "IF (getWeatherInfo) THEN"
.
Ale nechci aby se pocasi nacitalo permanente. Nabehova hrana je nastavena na interval 10min
getWeatherInfo := System_S.R_EDGE_10MIN;
Odstraneni podminky nepomohlo, volani stale konci stejnou chybou "HTTP request error : 1"
Interval vyčítání deset minut je zajištěn přiřazením System_S.R_EDGE_10MIN do vstupu getWeather. Tento vstup reaguje na náběžnou hranu signálu, tím že zahájí komunikaci se serverem poskytujícím počasí. Blok musí být volán v každé otočce PLC, aby byl schopen vyslat výzvy a zachytit odpovědi. Pokud jej voláte v programu, který se vykonává každý cyklus nemělo by, za předpokladu správného nastavení sítě, docházek k chybě, kterou popisujete.
V přiloženém souboru je projektová skupina s funkčním příkladem pro Foxtrot 1 a 2. (Příklad pro Foxtrot 2 je možné zkusit v simulátoru).
Ja mam komunikacny ETH port takto a funguje mi to. Pocitam, ze tam bude chyba preco to nekomunikuje
Tento dotaz je vyřešený.