1

Téma: Komunikace po 485 s Quidem

Máte někdo udělanou komunikaci po 485 mezi SDS a I/O Quidem od Papoucha ? Potřeboval bych nějaké vodítko, abych se v tom zorientoval.  Dík

2

Re: Komunikace po 485 s Quidem

Ano mám připojené QUIDO (16 relátek) přes RS232 na SDS Micro Din E a funguje to spolehlivě. Doporučuji prolést toto fórum a WiKi je tam vše důkladně posané. Při hledání použijte "hledat" 485.
Nejsem programátor a cca za týden jsem to zvládnul sám (nebýt tohoto fóra a wiky tak jsev p...li.)
Já SDS a  QUIDO používám na ovládání a kontrolu solární mikroelektrárny včetně spínání spotřebičů.

1) ovládání spotřebičů 12V přímo (router, switch, IP relé, IP kamera, TV-monitor, napájení PC
2) ovládání spotřebičů 220V přes další relé
3) ovládání střídače.
4) inteligentnímu spínání nabíječky dle napětí na aku (když zrovna slunce nesvítí) pro solární akumulátor.
5) dálkový reset zařízení (router, switch)
6) ještě plánuji přepínání akumulátorů za pomoci  dvou stavových relé.

pokud budu umět tak poradím.

3 Naposledy upravil: videoservis (2013-01-13 11:15:15)

Re: Komunikace po 485 s Quidem

Komunikujete s tím Quidem obousměrně, nebo jen spínáte relátka ? Jak tvoříte Spinel řetězec ? Máte natvrdo nadefinováno pro každý výstup včetně CRC, nebo ho vytváří program ? Zjišťujete i aktuální stav v nějakém časovém intervalu ?
Mám Quido 8/8 a potřebuju testovat aktuální stavy vstupů a výstupů.

4

Re: Komunikace po 485 s Quidem

1) Myslím si že spínám pouze relátka, ale komunukace probíhá obousměrně. Protože cca před týdnem mi vypadnul jeden fous od RS232 a relátka to spínalo, ale nevrátil se mi stav nastavených relátek do programu.
2) Spinel řetězec tvořím příkazem serial_text_out. viz přiložený program. K tomu je potřebná ještě patřičná user.htm stránka. K vidění www.merenienergie.cz na demo http://84.244.91.117:10000/user.htm
4) Aktuální stav relé zatím nezjišťuji, ale asi se nad tím budu zamýšlet, protože se mi stává, že při nahrání nového aplikace do SDS zůstávají relé sepnutá (v nějakém stavu) a po nastartování nového programu nevidím skutečný stav relé.

// ******  procedury pro ovladani rele QUIDO po sbernici RS232  **********
// rs232 pouziva TEXT[400-420] pro prijem dat po serial_text_out
// rs232 pouzivá RAM[111-126] pro stav rele 1-16
//*B$OS1H zapnuti 1.Rele
//*B$OS1L vypnuti 1.Rele
//*B$OT1L2 vypnuti 1.Rele se spozdenim 1s (1-255 a 0,5s)
//0x48 je hexa H
//0x4c je hexa L
//0x30 je hexa 0
//0x31 je hexa 1

rs232
{
_pruchod=0;
rs232_0:
// serial_text_out('*B$OS1H', 0x0D); //sepnuti 1.rele pred HW zmenou (rozpinaci rele)
// serial_text_out('*B$OS2H', 0x0D); //sepnuti 2.rele pred HW zmenou (rozpinaci rele)
// serial_text_out('*B$OS3H', 0x0D); //sepnuti 3.rele pred HW zmenou (rozpinaci rele)
// wait(50);
ram[111]=0; //ovladani barvy tlacitka 1.rele na panelu v user.htm
ram[112]=0; //ovladani barvy tlacitka 2.rele na panelu v user.htm
ram[113]=0; //ovladani barvy tlacitka 3.rele na panelu v user.htm
if (_val>0 && _val<4) {  //ovladani 1. - 3. rele <RESTART>
  _rs232in=0x30+_val;     //stanoveni tlacitka 1-16 0+sys[141] (user.htm)
  _relspo=0x30+REL_DEL;   //0+DEFINE=delka spozdeni rele pri restartu
  H=0x48;
  serial_text_out('*B$OT', _rs232in, H, _relspo, 0x0D);
}
if (_val>3 && _val<10) {  //ovladani 4. - 9. rele <ZAP/VYP>
  _rs232in=0x30+_val;      //stanoveni tlacitka 1-16 0+sys[141] (user.htm)
  serial_text_out('*B$OS', _rs232in, _rs232s, 0x0D);
}
if (_val>=10 && _val<=16) {//ovladani 10. - 16. rele <ZAP/VYP>
  _rs232in=0x30+_val-10;    //stanoveni tlacitka 1-16 0+sys[141] (user.htm)
  serial_text_out('*B$OS', 0x31, _rs232in, _rs232s, 0x0D);
  }
  wait(50);  //dat mu cas na odezvu
_txt=400;
//celou odpoved do pole
if(sys[48]==0) { // pokud je nejaky znak prijaty ze seriove sbernice
  rs232_1:
  text[_txt]=sys[49]; // prevezmi prijaty znak ze seriove sbernice do urcene pozice pole text[]
  _txt++; // dalsi pozice v text[], kam se zapise dalsi znak
  if (sys[48]==0  && _txt<420) goto rs232_1;  //at se odpoved nedostane do text[420] !!!
}
text[_txt]=0x00; //konec pro echo
//potvrzeni OK - porovnej prijate znaky ulozene v ram[]
if (text[400]==42 && text[401]==66 && text[402]==49 && text[403]==48 && text[404]==13) {
  _pom=_val+110;
  // zpracuj hodnotu                   
  if (_rs232s==0x48) {   //hexa H
   if (_val>0){      //odstraneni automatickeho vysilani "0 zapnuto"
   echo (_val, ' Zapnuto');
   ram[_pom]=1;
   }
  } else {
    if (_val>0){      //odstraneni automatickeho vysilani "0 vypnuto"
   echo (_val, ' Vypnuto');
   ram[_pom]=0;
   }
  }
  goto rs232_end;
}
//akce se nezdarila opakuju
wait(50);
_pruchod++;
if (_pruchod>5) {
  if (_rs232s==0x48) {  //hexa H
   if (_val>0){      //odstraneni automatickeho vysilani "0 zapnuti se nezdarilo!"
   echo ('Zapnuti se nezdarilo!');
   }
  } else {
   if (_val>0){      //odstraneni automatickeho vysilani "0 vypnuti se nezdarilo!"
   echo ('Vypnuti se nezdarilo!');
    }
   }
  goto rs232_end;
}
goto rs232_0;
label rs232_end:
}
nastav232
{
_val=sys[141];  //1-16
if (_val==0 || _val>16) goto nastav232_end;  //zadna zmena
echo ('Pozadavek na rs232 - ', _val);
_pom=110+_val;
if (ram[_pom]==0) {
  _rs232s=0x48;  //zap    hexa H
  rs232();
} else {
  _rs232s=0x4c;  //vyp    hexa L
  rs232();
}
sys[141]=0;  //vynulovat prikaz

//Vypis stavu rele QUIDO
echotime();
echorele();
label nastav232_end:
}
//Pozn. sys[141] je pouzit pro ovladani tohoto programu - je to hodnota tzv. uzivatelske promenne nastavitele pres web (viz webove rozhrani vyrobku SDS - stranka SDS-C - odkaz uzivatelske promenne

5

Re: Komunikace po 485 s Quidem

Ještě k tomu patří procedury

echotime();
echorele();

echotime
{
ram[150]=sys[8] / 10;
ram[151]=sys[8] % 10;
ram[152]=sys[9] / 10;
ram[153]=sys[9] % 10;
ram[154]=sys[10] / 10;
ram[155]=sys[10] % 10;
echo (ram[150], ram[151]':', ram[152], ram[153]':', ram[154], ram[155]);
}

echorele
{
echo('stav rele QUIDO: ',ram[111],',',ram[112],',',ram[113],',',ram[114],',',ram[115],',',ram[116],',',ram[117],',',ram[118],','
                         ,ram[119],',',ram[120],',',ram[121],',',ram[122],',',ram[123],',',ram[124],',',ram[125],',',ram[126]);
}

6

Re: Komunikace po 485 s Quidem

Dík za mustr. Ještě musím udělat převodník do Macra. S Quidem zatím komunikuju z PC. Zkouším ten jejich terminál a sestavovat řetězce.

7

Re: Komunikace po 485 s Quidem

Myslím, že žádný převodník není třeba MACRO má rozhranní RS485 a QUIDO také (alespoň to moje QUIDO 2/16 má obě dvě rozhranní RS485 i RS232). Takže by to mělo komunikovat rovnou, pokud mezi MACRO a QUIDO neplánujete z nějakých příčin jiné přenosové prostředí. (Na dálku přes něco). Já používám RS232, protože mám SDS Micro a to jiné rozhraní nemá.

8

Re: Komunikace po 485 s Quidem

Mám Macro ale bez převodníku. Našel jsem na Wiki ty doplňkový moduly. Pro komunikaci s modulem na přímo bude výhodnější RS232 (odpadne mi ovládání přepínače RX/TX při použití RS485) Udělám si ale i pokus se 485tkou a adresováním modulů. Použití modulu na velkou vzdálenost. Areál má cca 600 x 600m

9

Re: Komunikace po 485 s Quidem

Jak jste na tom s pokusy s 485 a adresováním modulů. Ctěl bych se nějak naučit protokol modbus-RTU, ale nevím jak do toho. Vlastním teť sice micro, ale pořídím si asi dospělé macro s 485, mám to QUIDO a mám ještě Tristar MPPT. Jak QUIDO tak MPPT jdou teoreticky ovládat přes modbus-RTU přes RS 485. Ale nevím jak do toho. Nemám protokol od MPPT Tristar a navíc to moje programování je spíše metoda pokus/omyl. Naštěstí mě to chytlo a dostatečně mě to baví. Nevíte kdo by mohl pomoci s radou ?

10 Naposledy upravil: videoservis (2013-01-24 18:37:36)

Re: Komunikace po 485 s Quidem

Frenky napsal:

Jak jste na tom s pokusy s 485 a adresováním modulů. Ctěl bych se nějak naučit protokol modbus-RTU, ale nevím jak do toho. Vlastním teť sice micro, ale pořídím si asi dospělé macro s 485, mám to QUIDO a mám ještě Tristar MPPT. Jak QUIDO tak MPPT jdou teoreticky ovládat přes modbus-RTU přes RS 485. Ale nevím jak do toho. Nemám protokol od MPPT Tristar a navíc to moje programování je spíše metoda pokus/omyl. Naštěstí mě to chytlo a dostatečně mě to baví. Nevíte kdo by mohl pomoci s radou ?

Momentálně ležím v posteli s chřipkou.
Před tím jsem dělal pokusy s ovládáním Quida s využitím jejich dll pomocí programu vytvořeného v C#. Programuji podobně - pokus/omyl. Ale mám nějaké základy z PIC a tím Cčkem v SDS.
Modbus popis jsem zahlédl u Papoucha v těch popisech ke Quidu, ale vzhledem k tomu, že jedu Spinel, jsem to více nestudoval.
A teprve dnes mi dorazily objednané součástky na převodníky 485 a 232 do mého Macra, kterej je nemá od narození.

11

Re: Komunikace po 485 s Quidem

Tak jak chřipka vyléčeno? Já ji měl také a úspěšně jsem ji přechodil.
Chci se jen zeptat na komunikaci modbus - SDS' jestli se Vám podařilo nějak zdolat protokol a adresaci prvků na sběrnici. Já jsem se pokoušel přečíst něco programem od papoucha (myslím že to byl modbus konfigurátor) z regulátoru TRISTAR. nedělal jsem to sice přes SDS, ale přímo ethernetem do PC.
Něco to čte ale papouch to hlásí jako neznámé zařízení.

12

Re: Komunikace po 485 s Quidem

Aby RS485 mezi Quido (nebo čímkoliv jiným) a SDS fungovalo, je potřeba zajistit:
- správné zapojení RS485 sběrnice (propojení A, B, GND vodičů)
- správné zakončení RS485 sběrnice (rezistor asi 120ohmů na obou stranách, SDS ho má napevno)
- může být potřeba doplnit další dva rezistory mezi A a B vodiče a +/GND, pro nastavení klidového stavu sběrnice
- některé zařízení se nemusí snášet s použitým RS485 obvodem v zařízení SDS (zatím jsem to ale ještě takto neviděl), pak je samozřejmě možná vlastní výměna za jiný typ (zapojení pinů je u většiny RS485 budičů v SO8 pouzdře shodné)...

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

13

Re: Komunikace po 485 s Quidem

Zatím se učím C# - ovládání z programu pomocí Quido dll už jsem trochu zvládnul. Podařilo se mi i rozchodit http get z programu v C#. Ale na přímou komunikaci mezi SDS a Quidem jsem se zatím nedostal. Mám už i součástky na převodník do SDS, ale nebyl čas to tam osadit. Nemám ještě DPS.

14

Re: Komunikace po 485 s Quidem

Rozchodil jsem ovládaní releového modulu od Papoucha po 485 pomocí formátu dat 66 (ASCI). Jak ovládání , tak vyčtení mi funguje. Nyní chci (hlavně kvůli omezeným možnostem formátu 66) přejít na formát 97. Ovládání relétak mi také funguje, ale při vyčítání odpovědi se mi načítá např toto:

Odpoved zarizeni ram400: 152 ram401: 41 ram402: 11 ram403: 200 ram404: 40 ram405: 18 ram406: 2 ram407: 2218ram408: 106ram409: ram410: 254ram411: 0 ram412: 0 ram413: 0 ram414: 0
           
Odpoved zarizeni ram400: 42 ram401: 97 ram402: 0 ram403: 6 ram404: 49 ram405: 2 ram406: 0 ram407: 059ram408: 13ram409: ram410: 0ram411: 0 ram412: 0 ram413: 0 ram414: 0

Odpoved zarizeni ram400: 72 ram401: 41 ram402: 11 ram403: 200 ram404: 40 ram405: 18 ram406: 2 ram407: 2218ram408: 106ram409: ram410: 254ram411: 0 ram412: 0 ram413: 0 ram414: 0

správná odpoved (2a 61 0 6 31 2 0 59 v hexa) je až v druhém bloku. Po sběrnici by mi v tu dobu nemělo nic dalčího běhat. Nevím co to jsou za čísla a jak řešit správné vyčtení? Zkontrolovat si po každém čtení jestli se do ram 401 402 načetlo 2AH 61H  (42 97) ?? Ve vzorových příkladech na foru se při nesprávné odpovědi opakuje znovu celý příkaz pro sepnutí, já mám ale již relátka seplá a jde mi pouze o přečtení odpovědi.
Děkuji za rady jak elegantně vyřešit vyčtení odpovědi z RS485.

15

Re: Komunikace po 485 s Quidem

co treba takhle. pujde to rozlustit?

rs485
{
 _pom1=0;
 label rs485_1:
 showtime();
 echo('Prikaz ', text[100]);
 serial_text_out(text[100], 0x0D);
 wait(100);  //dat mu cas na odezvu
 //celou odpoved do pole
 _poz=120;
 if(sys[48]==0) {
  label rs485_2:
  text[_poz]=sys[49];
  _poz++;
  if (sys[48]==0 && _poz<140) goto rs485_2;
 }
 text[_poz]=0x00; //konec pro echo
 //potvrzeni OK
 echo ('Odpoved ', text[120]);
 if (text[120]==42 && text[121]==66 && text[122]==49 && text[123]==48 && text[124]==13) {
  echo('... OK');
  _g_rs485ok=1;
  return;
 }
 //akce se nezdarila opakuju
 wait(100);
 _pom1++;
 if (_pom1>0) {  //5 pokusu
  echo ('... Nastaveni se nezdarilo!');
  _g_rs485ok=1;  //0
  return;
 }
 goto rs485_1;
}

16

Re: Komunikace po 485 s Quidem

Rozluštit to jde, ale neřeší to můj dotaz. Něco podobného mám ve svém programu a funguje mi to dobře, ale po přechodu na formát 97 a zadávaní dat v hexa (umožňuje např sepnutí několika relé současně, což s formátem 66 nejde) se mi v odpovědí objeví nejdříve nějaká nekorektní odpověd a teprve pak ta správná a tady bych chtěl vědět jestli např kontrolovat 5 odpovědí a až když nedojde správná celou akci opakovat???
V uvedeném příkladě se po nepřečtení správné odpovědi opakuje znova příkaz, ale to není můj případ - já to mám na stole před sebou a relátka mi spínají ihned po odeslání příkazu.

17

Re: Komunikace po 485 s Quidem

Po delším sledování čísílek na monitoru kdy to občas vyšlo hned a občas vůbec jsem usoudil, že možná moje kratičká sběrnice mezi Papouchem a SDS nebude až tak nezarušená, jak si myslím a připojil jsem zatěžovací odpor na Papouchovi, který se má připojovat jen na silně zarušených sběrnicích a vypadá to, že vše je již v pořádku.
Pro jistotu jsem si také zkontroloval napájení, abych zjistil, že při současném sepnutí všech relátek, mi o několik desetin poklesne napájecí napětí, které jsem měl přesně na 12V - tak to tam také mohlo něco zanášet.

18 Naposledy upravil: videoservis (2013-03-23 11:02:34)

Re: Komunikace po 485 s Quidem

Já se také pokouším o komunikaci "97"
Jakým způsobem počítáte SUM v SDS ? Podle toho vzorce v papouch pdf mi vychází záporné číslo, jak docílím toho, abych měl jen to holý byte, co vychází v test programu spinelterminál ? Například pro PRE 2A, FRM 61h, LEN 00h 06h, ADR FEh, SIG 01h, INST 20h, SDATA 81h = SUM CEh, ale mě při výpočtu výjde toto: FFFFFFFFFFFFFECEh, ale ve spinel terminálu je SUM CEh. Jak zamaskuju ty FFFFF... a co to E před CEh ??

Další dotaz se týká komunikace ze spinel terminálu přímo do SDS.
Nastavil jsem TCP na IP mého SDS a port 23. SDS mi tedy funguje jako převodník TCP/485 kam mám připojený Quido 8/8.
Příkazy do Quida fungují normálně, ale odpovědi z Quida jsou atypické /pro spinel terminál (zobrazuje je v tom spodním okně). Hlavně při odpovědích na hromadné sepnutí relé.
Po aktualizaci na poslední betu fw do SDS se to hodne zlepšilo, ale v tý předchozí verzi se mi nikdy nevrátila korektní odpověď.

19

Re: Komunikace po 485 s Quidem

videoservis napsal:

Já se také pokouším o komunikaci "97"
Jakým způsobem počítáte SUM v SDS ? Podle toho vzorce v papouch pdf mi vychází záporné číslo, jak docílím toho, abych měl jen to holý byte, co vychází v test programu spinelterminál ? Například pro PRE 2A, FRM 61h, LEN 00h 06h, ADR FEh, SIG 01h, INST 20h, SDATA 81h = SUM CEh, ale mě při výpočtu výjde toto: FFFFFFFFFFFFFECEh, ale ve spinel terminálu je SUM CEh. Jak zamaskuju ty FFFFF... a co to E před CEh ??

Taky jsem na to nemohl přijít ale poradil mi jeden profi programátor:
normálně se sečte 2a 61 ......81 a vyjde 231 a pak se vezme jen jeden byte (je to nenápadně poznačeno i v návodu Papoucha) - zústane 31, a teď se toto odečte od 255. 255 je v hexa FF : takže FF - 31 =  CE a to je vše.
Já mám jen 4 vstupové Quido a zatím studuji teorii před ostrým nasazením - pošlu do messages můj  testovací prográmek.
Ten Papouchův terminál se asi chová podobně  , já používám ještě Terminal v1,b