PROMOS fórum

FRED - grafické vývojové prostředí => FRED - platforma PL2 (CCPU) => Téma založeno: libor 10.03.2015, 12:12:23



Název: SerialComm na QQ
Přispěvatel: libor 10.03.2015, 12:12:23
Chtěl bych komunikovat mezi dvěma CCPU-02 pomocí QQ relací. Lze na to použít modul SerialComm, když se v jeho nápovědě píše o možnosti komunikace se starými RT jednotkami?



Dotaz zaslaný mailem (viz výzva (http://forum.elsaco.cz/index.php?topic=13.msg112#msg112)).


Název: Re: SerialComm na QQ
Přispěvatel: libor 10.03.2015, 12:33:01
Moduly SerialComm na to lze použít. Řekněme, že máme 2 jednotky CCPU-02 s adresami 1 a 3, kde z jednotky s adresou 3 chci do jednotky s adresou 1 vyčítat hodnoty posuv a sklon modulu ekviterm (s instancí 1).

Modul ekviterm má číslo objektu 151 (0x97). Posun má číslo položky (item) 5 a sklon má 6. Instance je 1.


Zpráva zapsaná do parametrů Message_tx_format0 a Message_tx_format1 bude vypadat následovně:
Kód:
E15C030D590103015171970105970106
X2

Vysvětlení zprávy:
  • E1 - prefix
  • 5C - prefix
  • 03 - adresa centrály, které se dotazujeme
  • 0D - délka "zprávy"
  • 59 - operační znak
  • 01 - adresa centrály, která se ptá
  • 03 - adresa centrály, které se ptáme
  • 01 - adresa centrály, která se ptá
  • 51 - operační znak Q
  • 71 - operační znak q
  • 97 - ekviterm
  • 01 - číslo instance
  • 05 - posuv
  • 97 - ekviterm
  • 01 - číslo instance
  • 06 - sklon
  • X2 - CRC



Data z odpovědi (hodnotu posuv a sklon) chceme dostat na výstupy RX0 a RX1, a proto bude formát odpovědi zapsaný do parametru Message_rx_format0 vypadat následovně:
Kód:
E15C010F790301035178l0l1X2

Vysvětlení zprávy:

  • E1 - prefix
  • 5C - prefix
  • 01 - naše adresa (kdo přijímá odpověď)
  • 0F - délka "zprávy"
  • 79 - operační znak
  • 03 - adresa centrály, které jsme se ptali
  • 01 - adresa centrály, která se ptá
  • 03 - adresa centrály, které jsme se ptali
  • 51 - operační znak Q
  • 78 - operační znak
  • l0 (malé písmeno L (el)) a index 0 -> předej 4 bajty z odpovědi na výstup R0
  • l1 (malé písmeno L (el)) a index 1 -> předej 4 bajty z odpovědi na výstup R1
  • X2 - CRC


Mimo jiné je ještě potřeba věnovat pozornost parametru Timeout, který znamená čas mezi znaky, ale také se z něj počítá celkový timeout pro příjem zprávy (= 256 * Timeout). Pokud bude modul SerialComm v 3s smyčce, tak nemůže být hodnota Timeout nižší než 12ms i pro vyšší rychlosti resp. je vhodnější nastavit parametr Timeout na hodnotu odvozenou od celkového timeoutu příjmu odpovědi.