Téma: SDS MICRO Light E - RS485
Našel jsem v nabídce nový typ desky: SDS MICRO Light E - RS485, ale nedaří se mi najít žádnou dokumentaci (je někde ke stažení?)
SDS PLC/PAC: Měření Energie & OnlineTechnology.cz
Network Monitoring System - SDS - Síťový Dohledový Systém
Nejste přihlášen. Přihlaste se, nebo se zaregistrujte.
SDS PLC/PAC: Měření Energie & OnlineTechnology.cz » SDS-MICRO (LM) - light(2) E » SDS MICRO Light E - RS485
Chcete-li přispívat, musíte se přihlásit nebo projít procesem registrace.
Našel jsem v nabídce nový typ desky: SDS MICRO Light E - RS485, ale nedaří se mi najít žádnou dokumentaci (je někde ke stažení?)
Našel jsem v nabídce nový typ desky: SDS MICRO Light E - RS485, ale nedaří se mi najít žádnou dokumentaci (je někde ke stažení?)
Zatím asi jenom tady http://www.merenienergie.cz/micro-light-e
Zvažuji využití s nějakou deskou s relátky a snímači (Papouch a pod.), ale nejdříve bych se chtěl podívat na nějakou ukázku programu, který vysílá,ale i přijímá povely po RS485. Mám pocit, že ve stávajícím popisu Lightu byl pouze příkaz serial_text_out, ale nevím že by tam byl nějaký serial_text_in?
Takhle to mám zpracováno já. Samozřejmě asi existuje i jiná možnost zápisu hex hodnot. U Papoucha jsem použil jejich nejjednodušší kódování. Testováno a funkční na http://www.papouch.com/cz/shop/product/ … -teplomer/ a na http://www.papouch.com/cz/shop/product/ … 232-rs485/
Přijaté bajty se ukládají do ram[] (je vhodné přepsat na text[]).
// ******* procedury pro ovladani sbernice RS485 **********
// rs485 pouziva RAM[0-99] pro prijem dat po serial_text_out
rs485
{
_pruchod=0;
rs485_0:
if (_val<10) {
_rs485in=0x30+_val;
serial_text_out('*B$OS', _rs485in, _rs485s , 0x0D);
} else {
_rs485in=0x30+_val-10;
serial_text_out('*B$OS', 0x31, _rs485in, _rs485s , 0x0D);
}
wait(50); //dat mu cas na odezvu
_ram=0;
//celou odpoved do pole
if(sys[48]==0) { // pokud je nejaky znak prijaty ze seriove sbernice
rs485_1:
ram[_ram]=sys[49]; // prevezmi prijaty znak ze seriove sbernice do urcene pozice pole ram[]
_ram++; // dalsi pozice v ram[], kam se zapise dalsi znak
if (sys[48]==0 && _ram<100) goto rs485_1; //at se odpoved nedostane do ram100 !!!
}
//potvrzeni OK - porovnej prijate znaky ulozene v ram[]
if (ram[0]==42 && ram[1]==66 && ram[2]==49 && ram[3]==48 && ram[4]==13) {
_pom=_val+99;
// zpracuj hodnotu
if (_rs485s==0x48) {
echo (_val, ' zapnuto');
ram[_pom]=1;
} else {
echo (_val, ' vypnuto');
ram[_pom]=0;
}
goto rs485_end;
}
//akce se nezdarila opakuju
wait(50);
_pruchod++;
if (_pruchod>5) {
if (_rs485s==0x48) {
echo ('zapnuti se nezdarilo!');
} else {
echo ('vypnuti se nezdarilo!');
}
goto rs485_end;
}
goto rs485_0;
label rs485_end:
}
nastav485
{
_val=sys[140]; //1-16
if (_val==0 || _val>16) goto nastav485_end; //zadna zmena
echo ('Pozadavek na rs485 - ', _val);
_pom=99+_val;
if (ram[_pom]==0) {
_rs485s=0x48; //zap
rs485();
} else {
_rs485s=0x4c; //vyp
rs485();
}
sys[140]=0; //vynulovat prikaz
// pozn. echo ram[100] az ram[115] nesouvisi s predchozim kodem
echo ('vypis RAM: ', ram[100], ',', ram[101], ',', ram[102], ',', ram[103], ',', ram[104], ',', ram[105], ',', ram[106], ',', ram[107], ',', ram[108], ',', ram[109], ',', ram[110], ',', ram[111], ',', ram[112], ',', ram[113], ',', ram[114], ',', ram[115] );
label nastav485_end:
}Pozn. sys[140] je použit pro ovládání tohoto programu - je to hodnota tzv. uživatelské proměnné nastavitelé přes web (viz webové rozhraní výrobku SDS - stránka SDS-C - odkaz uživatelské proměnné). Zápis hodnoty do sys[140] od 1 do 16 pak tento vzorový program provede určitou akci.
Tento program není úplně ideální - ale pro začátek stačí. Pro vážné použití ho bude potřeba upravit tak, aby porovnávání hlavičky dat přijatých ze sériové linky bylo dynamické, tzn. různé chyby nezpůsobí zahození zbytku paketu (protože tento program ho očekává vždy na pozici ram[0], což znamená, že jakýkoliv jiný znak to celé posune a porovnání začátku pak nevyjde).
Takhle to mám zpracováno já.
sys[140]=0; //vynulovat prikaz echo ('vypis RAM: ', ram[100], ',', ram[101], ',', ram[102], ',', ram[103], ',', ram[104], ',', ram[105], ',', ram[106], ',', ram[107], ',', ram[108], ',', ram[109], ',', ram[110], ',', ram[111], ',', ram[112], ',', ram[113], ',', ram[114], ',', ram[115] ); label nastav485_end: }
Mám otázku, co se vypisuje do echa z ram[100] až 115 ? O něco výše v programu je omezení zápisu max do ram[99].
ram[100] až [115] je pro trvalé data .... http://wiki.merenienergie.cz/index.php/ … 3.BDch_dat
asi aby je nepřepsal ![]()
ram[100] až [115] je pro trvalé data .... http://wiki.merenienergie.cz/index.php/ … 3.BDch_dat
asi aby je nepřepsal
Je to ram, nebo sys ? Už z toho mám hokej
Citace z wiki :
sys[100] až sys[115]
01 i RW data uložená do permanentní paměti = co se sem napíše zůstane i po vypnutí zařízení,
můžete si sem uložit co chcete (tj. 16x signed long délky 32bit),
dále - po speciálním systémovém resetu (RSTD) je vše nastaveno na 0xFFFFFFFF
(pozor! minimalizujte množství zápisů, životnost této paměti není neomezená !)
Předpokládal jsem souvislost toho echa s RS485
Hoši všechno vedle
Do ram 100-199 si zapisuju výsledek vrácený z RS485. Ten pak vyčítám v user.htm přes get_ram.
Jen to v tomhle programu nejde vidět.
// rs485 pro predavani stavu do user.htm pouziva RAM[100-199]
Neplýtvejte cennou ram[]
a použijte text[], viz http://wiki.merenienergie.cz/index.php/ … text.5B.5D
Navíc text[] se dá přímo vypsat nebo poslat atd., jediným příkazem.
Doufám že to pomůže.
Pravda. Ten program vznikl ještě před text[]. Chtělo by to zrevidovat kód. Určitě nastudujte tuto novější funkci!
Rád bych se zeptal, je možno tuto desku použít jako prodloužení RS485? Mám 2 zařízení (invertory) co spolu komunikují po RS485 a potřebuji je propojit. Mezi budovami ja natažená PC síť a další kabel tam nedostanu. Nebo někdo doporučí jinou variantu?
Děkuji
Pokud vím tak RS485/RS232 klient-server mód zatím není implementovaný. Tzn SDS aktuálně funguje jako server proti např pc s virtuálním portem..každopádně v TO-DO listu to je.. pokud bude zájem tak se to předpokládám dodělá, jediný problém byl snad s volnou pamětí,. takže by to v nejhorším řešil samostatný sw s funkcí tohoto RSxxx bridge
Jednou takový software nabídneme, jako alternativní firmware. Zatím ale nevím kdy to bude.
Neplýtvejte cennou ram[]
a použijte text[], viz http://wiki.merenienergie.cz/index.php/ … text.5B.5D
Navíc text[] se dá přímo vypsat nebo poslat atd., jediným příkazem.
Doufám že to pomůže.
Ještě jsem si nekoupil ani verzi se 485, ale už přemýšlím i o jedné aplikaci s 232, jen se toho trošku "bojím". Nemáte někdo pro lepší pochopení nějaký triviální příklad? Jde mi hlavně o čtení pomocí fce text a to jak ze 485 tak i z 232.
Popis je zde http://wiki.merenienergie.cz/index.php/ … text.5B.5D . Zkusím přes víkend něco jednoduchého vyrobit a dát to sem.
Převodník od Papoucha jsem si již koupil, nechce se mi to vymýšlet - nebyl by již ten slibovaný prográmek s text[]??
Díky.
Také sleduji pravidelně toto téma, ale naprosto chápu, že v těch vedrech co byla tento a hlavně minulý týden, se nikomu nechtělo nic vymýšlet....
Převodník od Papoucha jsem si již koupil, nechce se mi to vymýšlet - nebyl by již ten slibovaný prográmek s text[]??
Díky.
Je to jednoduché - použijte úplně stejný program, ale ram[] nahraďte za text[].
Jde o to, že je škoda "zabít" si pole ram[] na zpracování textu.
Každopádně, pro ovládání RS485 nebo RS232 modulu není potřeba něco složitého vymýšlet, jde jen o správné sestavení textu pro odeslání do modulu - viz funkce serial_text_out() - popis chování funkce je na WiKi.
serial_text_out('*B$OS', _rs485in, _rs485s , 0x0D);
//
// výsledný odeslaný text: *B$OS + obsah _rs485in + obsah _rs485s + ASCII znak 0x0DSamozřejmě záleží na protokolu, kterému cílové zařízení rozumí. Tady je příklad pro zařízení které rozumí jednoduchým textovým příkazům.
Složitější to bude až v okamžiku kdy se bude provádět příjem ze zařízení. Potom bude potřeba správně přijaté data zpracovat, vybrat si pouze platnou odpověď, a vytáhnout z ní požadované informace.
Proto např. výše uvedený ukázkový příklad přijaté znaky ze sériové sběrnice ukládá do pole (původně ram[], nově text[]), a následně zpracovává obsah tohoto pole. Pokud tam nalezne to co hledá, tak to (v tomto příkladě) vypíše na webovou stránku (konzole).
Koupil jsem další macro , nyní s 485. Dle j@m jsem koupil u Papoucha Quido 485/2/16 výstupů. Použil jsem tady uvedený program, bohužel, jak už to mě bývá , tak se trápím a nevím.
Program:
// ******* procedury pro ovladani sbernice RS485 **********
// rs485 pouziva RAM[0-99] pro prijem dat po serial_text_out
var(_pruchod,_val,_rs485in,_rs485s,_ram,_pom );
rs485
{
_pruchod=0;
rs485_0:
if (_val<10) {
_rs485in=0x30+_val;
serial_text_out('*B$OS', _rs485in, _rs485s , 0x0D);
} else {
_rs485in=0x30+_val-10;
serial_text_out('*B$OS', 0x31, _rs485in, _rs485s , 0x0D);
}
wait(50); //dat mu cas na odezvu
_ram=0;
//celou odpoved do pole
if(sys[48]==0) { // pokud je nejaky znak prijaty ze seriove sbernice
rs485_1:
ram[_ram]=sys[49]; // prevezmi prijaty znak ze seriove sbernice do urcene pozice pole ram[]
_ram++; // dalsi pozice v ram[], kam se zapise dalsi znak
if (sys[48]==0 && _ram<100) goto rs485_1; //at se odpoved nedostane do ram100 !!!
}
//potvrzeni OK - porovnej prijate znaky ulozene v ram[]
if (ram[0]==42 && ram[1]==66 && ram[2]==49 && ram[3]==48 && ram[4]==13) {
_pom=_val+99;
// zpracuj hodnotu
if (_rs485s==0x48) {
echo (_val, ' zapnuto');
ram[_pom]=1;
} else {
echo (_val, ' vypnuto');
ram[_pom]=0;
}
goto rs485_end;
}
//akce se nezdarila opakuju
wait(50);
_pruchod++;
if (_pruchod>5) {
if (_rs485s==0x48) {
echo ('zapnuti se nezdarilo!');
} else {
echo ('vypnuti se nezdarilo!');
}
goto rs485_end;
}
goto rs485_0;
label rs485_end:
}
nastav485
{
_val=sys[140]; //1-16
if (_val==0 || _val>16) goto nastav485_end; //zadna zmena
echo ('Pozadavek na rs485 - ', _val);
_pom=99+_val;
if (ram[_pom]==0) {
_rs485s=0x48; //zap
rs485();
} else {
_rs485s=0x4c; //vyp
rs485();
}
sys[140]=0; //vynulovat prikaz
// pozn. echo ram[100] az ram[115] nesouvisi s predchozim kodem
echo ('vypis RAM: ', ram[100], ',', ram[101], ',', ram[102], ',', ram[103], ',', ram[104], ',', ram[105], ',', ram[106], ',', ram[107], ',', ram[108], ',', ram[109], ',', ram[110], ',', ram[111], ',', ram[112], ',', ram[113], ',', ram[114], ',', ram[115] );
label nastav485_end:
}
main
{
nastav485();
wait (500);
}
Konzole:
is RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Pozadavek na rs485 - 1
zapnuti se nezdarilo!
vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Pozadavek na rs485 - 1
zapnuti se nezdarilo!
vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Pozadavek na rs485 - 1
zapnuti se nezdarilo!
vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Pozadavek na rs485 - 11
11 zapnuto
vypis RAM: 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
Pozadavek na rs485 - 11
11 vypnuto
vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Pozadavek na rs485 - 11
11 zapnuto
vypis RAM: 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
Pozadavek na rs485 - 11
11 vypnuto
vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Pozadavek na rs485 - 11
11 zapnuto
vypis RAM: 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
Pozadavek na rs485 - 5
5 zapnuto
vypis RAM: 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0
Pozadavek na rs485 - 5
5 vypnuto
vypis RAM: 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
Pozadavek na rs485 - 5
5 zapnuto
vypis RAM: 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0
Během výpisu v konzoli se nahodil fyzicky pouze výstup 11.
Laboruju s tím celý víkend, někdy se nějaký výstup podaří nahodit, zdá se mi to ale náhodné. Zaráží mě taky, že pokud F5 obnovím pouze výpis konzole, tak mi problikne příjmací LED dioda na IO modulu Papoucha. To znamená, že F5 pošlu dodaz na Papoucha-to je divné.
Zkoušel jsem i jiný protokol, i jiné dotazy na Papoucha, ale je to stále stejné. Papouch blikne , že přijal asi paket, ale zpět se nic do SYS48/49 nedostane. Pokud se to dostane, tak vyloženě náhodně , třeba po 20 x F5 nebo po 2-3 minutách po odeslání a nebo vůbec.
Je nějaká šance odzkoušet výstup 485 na Macru? Nevím, kde je chyba, jestli u Papoucha nebo u Macra nebo u mně.
Pls... a díky.
Ten výpis ram[] od 100 nahoru nemá v tomto programu význam.
Větší význam by mělo to echo() přepsat ať vypíše ram[0] až [20], tak by se vidělo co je přijato po sériové lince.
Ten program by ale stálo za to přepsat celý - jaký je vlastně cíl toho čeho se snažíte dosáhnout ? Podle toho pak něco vymyslíme...
Jinak zkuste nový beta firmware (2.9.) pro SDS MACRO, jsou tam nějaké drobné opravy v SDS-C, možná to nějak pomůže při ladění programu...
Hodím sem ještě pár testovacích procedurek co jsem udělal když jsem si lámal hlavu s moduly od Papoucha. Jak krásné by bylo mít i RS485 moduly z vlastní dílny ;-)
var _pom;
var _zap;
var _vyp;
var _in;
var _s;
var _ram;
var _ret;
init
{
echo('go');
serial_set(9600, 8, 1, 0);
_zap=49; //1
_vyp=49; //1
}
485
{
_pom=0;
485_0:
serial_text_out('*B$OS', _in, _s , 0x0D);
wait(100); //dat mu cas na odezvu
_ram=0;
//celou odpoved do pole
if(sys[48]==0) {
485_1:
ram[_ram]=sys[49];
//echo ram[_ram];
_ram++;
if (sys[48]==0) goto 485_1;
}
//if (sys[48]==1 && _ram==0) {
// echo (sys[48]);
// echo (sys[49]);
//}
//_ret=0;
//if (_ram>0) {
// 485_2:
// echo ram[_ret];
// _ret++;
// if (_ret<_ram) goto 485_2;
// wait(500);
//}
//potvrzeni OK
if (ram[0]==42 && ram[1]==66 && ram[2]==49 && ram[3]==48 && ram[4]==13) {
if (_s==0x48) {
echo (_in, 'sepnuto');
} else {
echo (_in, 'rozepnuto');
}
return;
}
//akce se nezdarila opakuju
wait(100);
_pom++;
if (_pom>5) {
if (_s==0x48) {
echo ('sepnuti se nezdarilo!');
} else {
echo ('rozepnuto se nezdarilo!');
}
return;
}
goto 485_0;
}
main
{
//if (sys[141]==0) {
//echo (_vyp, _zap);
if (sys[140]==10) {
_s=0x4c; //vyp
_in=0x31;
485();
_in=0x32;
485();
_in=0x33;
485();
_in=0x34;
485();
_in=0x35;
485();
_in=0x36;
485();
_in=0x37;
485();
_in=0x38;
485();
_in=0x39;
485();
wait(500);
sys[140]=11;
}
if (sys[140]==100) {
_in=0x31;
_s=0x48; //zap
485();
wait(1000);
_in=0x31;
_s=0x4c; //vyp
485();
wait(1000);
}
if (sys[140]==1000) {
//_s=72; //H
//_s=0x48; //H
//_s=76; //L
_s=0x4c; //L
serial_text_out('*B$OS',0x31, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x32, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x33, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x34, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x35, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x36, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x37, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x38, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x39, _s, 0x0D); //hex cislo 2
//serial_text_out('*B$OS',0x31, 0x32,'L', 0x0D); //hex cislo 12
//serial_text_out('*B$OS',49,'L', 0x0D); // dekadicky cislo 1
//echo(sys[48], ' data: ', sys[49]);
wait(1000);
_s=0x48;
serial_text_out('*B$OS',0x31, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x32, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x33, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x34, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x35, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x36, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x37, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x38, _s, 0x0D); //hex cislo 2
wait(100);
serial_text_out('*B$OS',0x39, _s, 0x0D); //hex cislo 2
wait(100);
}
if (sys[140]==10000) {
_s=0x48; //zap
s1:
_in=0x31;
485();
if (_in<0x38) {
_in++;
goto s1;
}
wait(1000);
_s=0x4c; //vyp
s2:
_in=0x31;
485();
if (_in<0x38) {
_in++;
goto s2;
}
wait(1000);
}
//serial_text_out('*B$OS',49,'H', 0x0D);
//serial_text_out('*B$OS',0x31, 0x32,'H', 0x0D);
//serial_text_out(0x2A,0x61,0x00,0x06,0x01,0x02,0x20,0x82,0xC9,0x0D);
//serial_text_out('*B$OS',0x32,'H', 0x0D); //hex cislo 2
//echo(sys[48], ' data: ', sys[49]);
//_vyp=_zap;
//_zap++;
//if (_zap>15) { _zap=0x00; }
//}
//wait(1000);
}
V předchozím příspěvku je ladicí program který dle nastavení v sys[140] (první web proměnná) posílá příkazy na linku. Možné hodnoty jsou 10, 100, 1000, 10000. Vyzkoušej funkce a uvidíš. Jinak kdybys napsal co by to mělo dělat, můžeme tě navést správným směrem. Záměrně jsem tam nechal i všechny zaremované řádky. Zkusím to rychle přepsat do text[] příkazu.
Zde program vyuzivajici text[]. netestoval jsem přímo na zařízení, tak snad bude OK.
var _pom;
var _in;
var _s;
var _ovl;
var _txt;
init
{
echo('start');
serial_set(9600, 8, 1, 0); //nastav linku
sprintf(text[10], '*B$OS1L'); //1vyp
sprintf(text[20], '*B$OS2L'); //2vyp
sprintf(text[30], '*B$OS3L'); //3vyp
sprintf(text[40], '*B$OS4L'); //…
sprintf(text[50], '*B$OS5L');
sprintf(text[60], '*B$OS6L');
sprintf(text[70], '*B$OS7L');
sprintf(text[80], '*B$OS8L');
sprintf(text[90], '*B$OS9L');
sprintf(text[100], '*B$OS10L');
sprintf(text[110], '*B$OS11L');
sprintf(text[120], '*B$OS12L');
sprintf(text[130], '*B$OS13L');
sprintf(text[140], '*B$OS14L');
sprintf(text[150], '*B$OS15L');
sprintf(text[160], '*B$OS16L');
sprintf(text[210], '*B$OS1H'); //1zap
sprintf(text[220], '*B$OS2H'); //2zap
sprintf(text[230], '*B$OS3H'); //3zap
sprintf(text[240], '*B$OS4H');
sprintf(text[250], '*B$OS5H');
sprintf(text[260], '*B$OS6H');
sprintf(text[270], '*B$OS7H');
sprintf(text[280], '*B$OS8H');
sprintf(text[290], '*B$OS9H');
sprintf(text[300], '*B$OS10H');
sprintf(text[310], '*B$OS11H');
sprintf(text[320], '*B$OS12H');
sprintf(text[330], '*B$OS13H');
sprintf(text[340], '*B$OS14H');
sprintf(text[350], '*B$OS15H');
sprintf(text[360], '*B$OS16H');
}
485
{
_pom=0;
485_0:
_ovl=_in*10+_s*200; //ukazatel do predchystaneho pole ovl.stringu
if (_s==0) {
echo ('Pokus o rozepnuti vstupu ', _in);
} else {
echo ('Pokus o sepnuti vstupu ', _in);
}
serial_text_out(text[_ovl], 0x0D);
wait(100); //dat mu cas na odezvu
_txt=400;
//celou odpoved do pole
if(sys[48]==0) {
485_1:
text[_txt]=sys[49];
_txt++;
if (sys[48]==0 && _txt<420) goto 485_1;
}
text[_txt]=0x00; //konec pro echo
//potvrzeni OK
echo ('Odpoved zarizeni ', text[400]);
if (text[400]==42 && text[401]==66 && text[402]==49 && text[403]==48 && text[404]==13) {
if (_s==1) {
echo (_in, 'sepnuto');
} else {
echo (_in, 'rozepnuto');
}
return;
}
//akce se nezdarila opakuju
wait(100);
_pom++;
if (_pom>5) {
if (_s==1) {
echo ('sepnuti se nezdarilo!');
} else {
echo ('rozepnuto se nezdarilo!');
}
return;
}
goto 485_0;
}
main
{
_in=1;
_s=1; //zap
label main_0:
485();
if (_in<=16) {
_in++;
goto main_0;
}
_in=1;
_s=0; //vyp
label main_1:
485();
if (_in<=16) {
_in++;
goto main_1;
}
}
Nevím, možná jsem se špatně díval. Je někde napsáno, že max.velikost text[] pole je 512?
Dá se do pole nějak dostat proměnnou jako znaky? Tedy mám x=12, v text[0] chci mít znak "1" v text[1] chci mít znak "2". Je to pro tohle '*B$OS1H' resp. '*B$OS12H'.
Chcete-li přispívat, musíte se přihlásit nebo projít procesem registrace.
SDS PLC/PAC: Měření Energie & OnlineTechnology.cz » SDS-MICRO (LM) - light(2) E » SDS MICRO Light E - RS485