Új hozzászólás Aktív témák
-
Szirty
őstag
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:
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!