Új hozzászólás Aktív témák

  • Szirty

    őstag

    válasz wertick #130 üzenetére

    Helló wertick!

    Ez kell nekem is,csak nem voltam tisztában a dolgokkal teljesen.
    Most már csak egy van hátra, hogy is kell a keretet kiszámolgatni amit kiküldök.


    Nos azt is leírtam, megint a PDF-re tudok hivatkozni, a 77. oldalon találod az FCS kiszámításának módszerét, ha erre gondoltál. De lássuk újra:
    [kép]

    A 77. oldalon ezt az ábrát találod.
    Tehát összeállítod a parancsot, az FCS előtti karakterig.
    Nálad ez ''@01MF00'' karaktersorozat, ha az alábbi két feltétel teljesül:
    1. A kommunikációs mód 1:N és 01-a PLC-n beállított cím, vagyis az Unit Number.
    2. A hibaállapot lekérdezésekor nem akarod hogy, ha van hiba, akkor az törlődjön is (csak lekérdezés). Ha törölni is akarod a kilvasással egyidőben, akkor a 00 helyett 01 kell.

    Az FCS-t úgy számolod ki, hogy a parancs ASCII kódjait össze XOR-olod byte-onként:
    Ez a parancs: ''@01MF00''
    Ezek ASCII kódjai hexában: 40 30 31 4D 46 30 30
    Az FCS kiszámítása tehát:
    FCS= 40 XOR 30 XOR 31 XOR 4D XOR 46 XOR 30 XOR 30
    Ennek eredménye hexa 74
    Fogod ezt a 74-et, ASCII ként két karakterklént értelmezed, azaz ''7'' és ''4'', az FCS ezek ASCII kódja lesz, vagyis 37 34.
    A teljes parancs FCS-el együtt ez: ''@01MF0074*'' (a CR nem látható).
    Hexában ez így néz ki: ''40 30 31 4D 46 30 30 37 34 2A 0D''
    Természetesen ha a hibát törölni akarod kiolvasáskor, akkor 00 helyett 01 kell a parancsba, ami miatt az FCS is megváltozik!

    Gondok amik még vannak: az @ után lévő 2 bit ( unit no.)

    Az két byte, nem két bit.
    Ha a HostLink kommunikáció 1:N módban van, az azt jelenti, hogy egy soros vonalra (RS422-n) fel lehet fűzni 32 db PLC-t. Ilyenkor ez a két karakter a PLC címét adó két ASCII karakter. A Host Link alapvetően ASCII-ben kommunikál le mindent!
    Lehet 1:1 kommunikációt is beállítani, ez HostLink egységen DIP kapcsolókkal, PLC-be épített soros portnál DM memóriákkal külön állítható be. Olyankor a cím (Unit Number) küldése elmarad, erről megintcsak a hivatkozott PDF-ben kellene elolvasni hogy is megy pontosan ilyenkor, mert nem néztem meg.

    Ja és még valami!
    A visszaküldött bitminta összesen hány bites?


    A fenti parancsra összesen 19 byte-ot kapsz vissza (152 bit) PDF 71. oldal

    Az okozhat gondot,hogy a PIC 1 karaktert tud kiküldeni egyszerre? A PLC tudja,hogy ez egy keret, vagy nem fog reagálni rá?

    Nem probléma, a kommunikáció byte-onként zajlik.
    Minden küldött és kapott parancsban van ún. delimiter. A delimiter olyan karaktersorozat, ami egyértelműen azonosítja az adás elejét és végét.
    Ezesetben az adás elejét a ''@'' karakter, a végét a CR (0D) kocsi vissza karakter jelzi. A kettő között van a lényeg. Mivel a delimiter karakterek soha nem szerepelnek a parancson vagy az arra adott válaszon belül, csak az elején és végén, ezért egyértelműen el lehet dönteni az adás elejét és végét.
    Persze a karakterek küldése között van egy ún timeout idő. Vagyis két karakter küldése között eltelt időnek végesnek kell lennie!

Új hozzászólás Aktív témák