Jste zde

PLC Crouzet Millenium3 - jak na sériovou komunikaci

Na základě množících se dotazů, jak zprovoznit sériový přenos dat u PLC Millenium 3, jsem se pokusil vytvořit jednoduchý praktický návod typu krok za krokem. Ukazuje, jak lze využít v základní jednotce integrované sériové rozhraní nejen pro nahrávání programu, ale i pro přenos hodnot z běžícího programu do dalších zařízení.

O malém kompaktním PLC Millenium 3 francouzské společnosti Crouzet již toho bylo napsáno na serveru automatizace.HW.cz poměrně hodně – viz níže sekce Download & Odkazy. V poslední době se mi však množí dotazy, jestli jde a jak na základní CPU jednotce uživatelsky využít přítomnou sériovou komunikaci i pro jiné účely, než jen nahrávání softwaru do PLC a jeho ladění. Protože jsem se opravdu o těchto možnostech zatím podrobněji nezmiňoval, dnes se to pokusím napravit...

Sériové rozhraní základní CPU jednotky

Každá základní jednotka Crouzet Millenium 3 opravdu obsahuje alespoň jedno sériové komunikační rozhraní v podobě RS-232 či USB (podle zvoleného provedení). S ním lze prostřednictvím speciálního kabelu z PC do PLC snadno nahrát vytvořený uživatelský program a následně i sledovat jeho běh či ladit jeho funkci v reálném čase prostřednictvím režimu „Monitor“ vývojového softwaru Crouzet Logic Software M3.

Toto rozhraní však můžete v programu stejně dobře využít i pro výměnu hodnot (vysílání i příjem) s jiným PLC, PC či jiným libovolným zařízením se sériovým rozhraním a s možností vysílat libovolnou posloupnost ASCII znaků nebo hexa čísel. Je to i docela snadné na „naprogramování“, ale je nutné vědět, jak správně na to. A to se dále pokusím srozumitelně ozřejmit.

Přes USB rozhraní připojená základní jednotka PLC Millenium 3 k netbooku, kde výrobcem dodané drivery pak v OS Windows vytvoří virtuální  COM port (v mém případě COM8).

Naprogramování komunikace v PLC Millenium3

K vytváření programů pro PLC Millenium 3 a jeho následný překlad, nahrání do PLC a ladění slouží vývojový software Crouzet Logic Software M3 pro OS Windows. Zde je tedy nejprve nutné sériový přenos "naprogramovat".

Pro vysílání či příjem hodnot prostřednictvím sériové komunikace zde slouží dva speciální funkční bloky (FBD) s názvy „SL In“ a „SL Out“. Ty umožňují realizovat vysílání či příjem až 8 hodnot. Lze však v jednom programu použít až 3 bloky a tak přenášet (vysílat / přijímat - adresovat) až 24 hodnot. Opravdu bohužel jde jen o 16bitová čísla, ale pokud je použijeme jako hexa kódy ASCII znaků, lze je využít i pro vysílání či příjem jednoduchých ASCII řetězců. Ale nejspíš nejčastěji to opravdu využijete pro potřeby vyslání naměřených hodnot či příjem řídicích parametrů z nějakého vizualizačního / ovládacího panelu.

Blokové funkce (FBD bloky) ve vývojovém softwaru pro PLC Millenium 3:
vlevo - blok "SL out" pro vysílání hodnot z PLC, vpravo - blok "SL In" pro příjem hodnot do PLC

Samotné bloky jsou na použití velmi jednoduché. Prostě je jen v FBD programovacím režimu „prsknete“ na plochu a v jejich nastavení definujete adresy. Tedy zvolíte, jakou adresu bude mít každý příslušný vstup / výstup bloku pro jeho identifikaci v sériové komunikaci. U bloku vstupu hodnot do PLC (SL In) jde o adresy 1-8, 9-16 či 17-24 a u bloku výstupu hodnot z PLC (SL Out) je možné zvolit adresy 25-32, 33-40 nebo 41-48.

U každého komunikačního bloku je nutné zvolit komunikační adresu.

Pokud například v praxi budeme chtít na první vstup „SL In“ bloku s adresací 1-8 poslat hodnotu 500, definujete do rámce sériového přenosu vysílaného do PLC: "na adresu 1 ulož hodnota 500". Jak se to konkrétně zadá, se dozvíte dále.

U vysílaní hodnot ven z PLC je to trošku podobné, protože Millenium3 z pohledu sériové komunikace pracuje jako Slave. Tedy vyšle data až po přijetí požadavku na vyslání vybraných dat. Bez něho PLC samo od sebe nic neposílá.

Ukázka základního jednoduchého programu pro sériovou komunikaci pro PLC Millenium 3 - vyslání hodnot 500 a 600 ven z PLC a příjem hodnoty, která se převede na výstup na úroveň analogového signálu 0-10V (k základní jednotce připojen rozšiřující analogový modul XA04).

Struktura rámce vysílaného do PLC Millenium 3

Proto, abychom do PLC poslali a zapsali nějaké hodnoty a nebo naopak z něho nějaké hodnoty obdrželi, je nutné z nadřazeného komunikujícího zařízení (např. PC) vyslat po sériové lince do PLC příslušný rámec. Ten mu nejdříve řekne, co má udělat a PLC na to následně patřičně reaguje. A toto je asi největší „kámen úrazu“ celé komunikace, protože struktura rámce není zrovna nejjednodušší.

Přesný popis jeho struktury najdete v HELPu daného příkazu „SL in“ či „SL out“ ve vývojovém prostředí Crouzet Logic Software M3. Myslím si, že však je dost nepřehledný a chvilku trvá, než se v něm zorientujete a spojíte si všechny souvislosti dohromady.

Ukázka sériové komunikace mezi PC a PLC Millenium 3 v terminálu Hercules (pozn. růžová data byly vyslána z PC do PLC a černá data byla přijata PC z PLC).

Naproti tomu já zde zkusím na příkladu výše uvedeného zapojení FBD bloků „SL in“ a „SL out“ více prakticky ukázat, jak na to:

  1. Pokud sériovou komunikaci s PLC zkoušíte z klasického PC, je nutné použít nějaký softwarový terminál pro sériovou komunikaci. Nejlépe takový, který umožňuje vysílání a zobrazení přímo HEXA čísel. Já používám univerzální program Herkules, který je volně ke stažení na stránkách HW serveru (Hercules – TCP, UDP a sériový terminál pro Windows).

  2. První důležitá informace: Sériová komunikace s PLC má pevně definované následující komunikační parametry: komunikační rychlost 115 kb/s, parita: Even (lichá), počet bitů: 7, stop bit: 1, handshake: žádný. Pokud se toto nedodrží, komunikace Vám běhat nebude. Dále samozřejmě pro navázání komunikace není možné současně mít ve vývojovém softwaru na PC aktivovaný režim „Monitorování“, protože ten využívá totiž stejný sériový port.

  3. Číslo COM portu na PC je nutné vybrat dle vašeho rozhraní, kterému jste komunikační kabel připojili. Já osobně měl COM8, protože jsem fyzicky pro komunikaci s PLC využíval USB rozhraní a uvnitř PC pak klasickou sériovou linku RS-232 simuloval přes softwarový virtuální COM. Na straně PLC je v základní jednotce jen jedno sériové rozhraní, takže se zde nic nenastavuje.

  4. Pokud se Vám podaří navázat sériovou komunikace s PLC (tzn. že terminál na PC Vám oznámí, že je komunikační kanál vytvořen, máte napůl vyhráno. Teď už můžete do PLC zapisovat nebo z něho „dolovat“ hodnoty.

  5. Pro příjem hodnot z PLC, v našem příkladu do „SL out“ bloku s nastavenými adresami 25-32, na který jsou „připojeny“ hodnoty 500 a 600, je nutné vyslat následující požadavek (rámec) tvořený následující posloupností ASCII znaků:
    :04030000FF180AD8 doplněný o CF a LF příkazy
    V hexa zápisu ASCII kódů znamená vyslat posloupnost:
    3A 30 34 30 30 30 30 46 46 31 38 30 41 44 38 0D 0A

    A co to znamená?
    Posloupnost „:04030000FF“ (v zápisu ASCII kódů: 3A 30 34 30 30 30 30 46 46) je prostě pevně daná sekvence a definuje pro PLC požadavek na vyslání hodnot. Následujícím dvojznakem „180A“ (v zápisu ASCII kódů: 31 38 30 41) se definuje, že má PLC od adresy 25 vyslat stav 5 následujících hodnot, tedy hodnoty na adresách 25 až 30 (vysílá se však hexa číslo 0A, tedy 10, protože každé 16bit. číslo potřebuje 2 bajty). A nakonec je tu tzv. kontrolní součet (CHECKSUM). Ten je nutné v našem příkladu správně spočítat z posloupnosti „04030000FF180A“. To je hodnota „D8 (v zápisu ASCII kódů: 4438) a spočítáte ji nejsnadněji tak, že ji zapnete v Windows kalkulačku v rozšířeném vědeckém režimu, nastavíte počítání v HEX a sečtete: 2000 – (04+03+FF+18+0A) = D8.

  6. Pokud jste ve vysílaném rámci neudělali žádnou chybu (včetně správně spočítané hodnoty kontrolního součtu), tak po přijetí rámce PLC zpět vyšle následující sekvenci:
    :04030A01F40000025800000000A

    Za posloupností „04030A“, který značí „odpověď na požadavek vyslání hodnot“, pak následuje 5 hodnoty na adresách 25 až 30. V našem příkladě je první hodnota v 01F4 (v hexa) = 500 (v dekadickém), následuje hodnota nula, a pak hodnota 0258 (v hexa) = 600 (v dekadickém). Tedy přesně to, co máme v ve vytvořeném PLC programu „pověšeno“ na vstupech bloku "SL out".
    Poznámka: Pokud se udělá ve vyslání sekvence nějaká chyba, PLC nic neodpoví („dělá mrtvého brouka“). Nevíte tedy, zda je chyba ve struktuře vyslaného rámce nebo fyzicky v přenosu. Bohužel je nutné tedy zkontrolovat oboje...

  7. Pro vyslání hodnot do PLC, v našem příkladu do „SL in“ bloku s nastavenými adresami 1-8 a u něhož je první výstup (adresa 1) připojen na analogový výstup PLC 0-10 VDC, je nutné vyslat následující sekvenci ASCII znaků:
    :04100000FF00020320C8 doplněný o CF a LF příkazy
    V hexa zápisu ASCII kódů to znamená vyslat posloupnost:
    3A 30 34 31 30 30 30 30 30 46 46 30 30 30 32 30 33 32 30 43 38 0D 0A

    A co to znamená?
    Posloupnost „:04100000FF“ (v zápisu ASCII kódů: 3A 30 34 31 30 30 30 30 30 46 46) je prostě pevně daná a definuje požadavek na zápis hodnot do PLC. Následující posloupností „00020320“ (v zápisu ASCII kódů: 30 30 30 32 30 33 32 30) se PLC definuje, že má od adresy 1 zapsat jednu hodnotu 320 (v hexa) = 800 (v dekadickém). A nakonec je tu opět kontrolní součet (CHECKSUM). Ten je nutné správně spočítat z posloupnosti „04100000FF00020320“. Zde je to hodnota „C8 (v zápisu ASCII kódů: 43 38) a opět ji spočítáte nejsnadněji tak, že v počítání v HEXA číslech provedeme: 2000 – (04+10+FF+00+02+03+20) = C8.

  8. Pokud jsem zápisovou sekvenci poslali ve správné znění, PLC ji provede, zapíše definovanou hodnotu na definovanou adresu a zpět vyšle zprávu o provedení:
    :04100000FF0002EB
    Tím říká, že byl proved příkaz zápisu 2 bajtů (1 hodnota) od adresy 1 (číslování je v reálu od nuly).
    Poznámka: Opět pokud se udělá ve vyslání sekvence nějaká chyba, PLC ni na rámec nijak nereaguje („dělá mrtvého brouka“).

A TO JE CELÉ ! Vše další je již jen variace uvedeného příkladu...

Závěrem…

Jak je z výše uvedeného patrné, použití sériového rozhraní integrovaného v základní CPU jednotce PLC Millenium 3 není složité, když se ví, co zadávat. Mě osobně první zprovoznění také zabralo několik hodin bádání, než jsem podle HELPu vývojového softwaru Crouzet Logic Software M3 zjistil, co a jak nastavit a vysílat a odzkoušel to. Poté však již je to stále to samé a samotný přenos hodnot je bezproblémový. Jen je důležité si pohlídat správný výpočet kontrolního součtu vysílaných rámců.

Autor článku i fotografií a obrázků: Antonín Vojáček

DOWNLOAD & Odkazy

Hodnocení článku: