Hirdetés

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

  • wertick
    csendes tag

    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!

    Hello Szirty!

    Köszönöm az eddigi segítséget,nagyon sokat profitáltam belőle!
    Innentől kezdve menni fog remélem.

    Ja, a 19 byte-os válasz elég durván hangzik. De majd valahogy megoldom.

    Mégegyszer köszönöm!

    További minden jót!

    Wertick

    Ui.: ha elakadnék majd írok... :)

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