- Mindennél kisebb és gyorsabb chipeket hoznak az ASML új gépei
- Hódít az AI, közben a Microsoft emberek százait küldi el a felhős részlegétől
- Felfordul a windowsos piac: az Arm megszerezné a PC-s piac 50 százalékát
- Ömlenek a fiatalok a Facebookra
- Ezúttal bennfentes kereskedelemmel vádolják Elon Muskot
Új hozzászólás Aktív témák
-
Szirty
őstag
Hali wertick!
Nekem elég lenne egy két-három regiszter tartalom is. Ehhez milyen framet kell a programból küldenem a PLC-nek? (@........)
Milyen a kommunikáció beállítása? 1:1 vagy 1:N?
Ha az utóbbi, hanyas a PLC címe?
Milyen memóriaterületet akarsz kiolvasni (''regisztert''): IR, HR, AR, LR, DM, FM stb?
Hány darab ilyen regisztert akarsz kilvasni?
A kérdésedre csak a fenti kérdések megválaszolása után lehet pontos választ adni. -
Szirty
őstag
Helló wertick!
A PLC-hez annyira nem értek,de annyi biztos,hogy hibakódokat kellene kiolvasni,gondolom megvan annak is a maga rekesze(regisztere).
Ez világos, de hát a kiadandó Host-Link parancs nyilván attól függ, hogy a PLC milyen memóriaterületének melyik címét akarod kiolvasni.
Mindenképpen szükség van erre az információra, hiszen amíg nem tudod mit akarsz kilvasni, addig esélyed sincs arra hogy kiolvasd
Még annyit, hogy asm.-ben programozom a PIC-t. (esetleg ha ez még változtatna a dolgon)
Nincs jelentősége a dolog lényegét tekintve.
A következő üzenetben írok egy konkrét példát ha annyira nem érthető ez a Host link PDF amit linkeltem... -
Szirty
őstag
Hali wertick!
Még annyit:
A rekeszek címét honnan lehet megtudni, nekem ERROR READ, azaz MF-et kellene használnom. Két hibát olvasnék ki, például Program error és Memory error. Ezek milyen címen helyezkednek el? Honnan tudom meg? PLC leírásból esetleg.
Az ERROR READ a PLC hibaállapotát kérdezi le.
Ha a PLC által vezérelt berendezés hibaállapotát akarod lekérdezni, akkor rossz irányba rohamozol, mert a kettőnek semmi köze egymáshoz.
A PLC hibaállapotát nem címek lekérdezésével lehet kiolvasni, hanem a status olvasással.
Ha a PLC hibaállapota érdekel, akkor azt a PDF pontosan leírja az ''4-3 ERROR READ'' résznél (71. oldal).
Egy bithalmazt kapcs vissza. A bitek konkrét jelentése pedig a hivatkozott oldalon van a PDF-ben.
A válaszról nem írnál kicsit bővebben. Mégis miket küld vissza a mikrovezérlőnek?
Még oda is tettem képben az előző üzenetbe.
A válasz formátumát a ''Response format'' felirat alatt láthatod egy ábra formájában. A 72. oldalon van egyébként ha a HR olvasás érdekel. De persze minden parancsnak más a válasz formája. -
Szirty
őstag
Hali wertick!
Ezt most találtam az Omron leírásban.
A memóriaterületen ezen része kellene nekem? Vagy semmi köze hozzá?
És ez miféle hibanapló? Az nincs odaírva? Pontosan milyen leírásban is találtad ezt?
Ha a vezérelt berendezés hibaállapotáról akarsz infót lekérdezni, akkor én nem tudom neked megmondani hogy milyen memóriaterület melyik rekeszét kell kiolvasni, mert elképzelésem sincsen miféle berendezésről lenne szó.
A berendezést vezérlő program írója az egyetlen megmondhatója hogy melyik memóriaterületet mire használta fel amikor a vezérlőprogramot megalkotta. Ő az aki ezt az infót ismeri. Ha ezt leírta valahova a berendezéshez tartozó valamilyen dokumentációba, akkor onnan kiolvashatod. Ha nem, akkor marad az, hogy felveszed vele a kapcsolatot, vagy visszafejted a PLC programját, hogy mit hova tesz és mit hol tárol.
A kérdésedre csak így kaphatsz választ.
Te sem tudod megmondani melyik fiókban tartom itthon a barna zoknimat, mert oda teszem, ahova akarom! Na ez is olyan dolog... -
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! -
Szirty
őstag
Hali wertick!
Hogy jön ki az a 19 byte amit visszaküld a plc. Tudom ott van a pdf 71.oldalán.
Pontosan. Ott van bizony!
Rosszul számolod. Mint mondottam volt, a HostLink kommunikáció ASCII alapú!
Ami egy word, az ugye két byte ugyan, de 4 byte-on küldi át.
Pontosan úgy, ahogyan az FCS-t is, ami egy bíte, mégis két byteon küldi át, mivel azt az egy byte-ot, a HEXA értékének megfelelő ASCII karakterekkel írjale, ami két shelyiérték, Így lesz egy byte-ból kettő és két byte-ból négy.
Ha pl. 65535-öt akarok átküldeni, ami ugye egy word és hexában éppen FFFFh, akkor abból úgy lesz 4 byte a HostLink szerint, hogy négy darab ''F'' betűt küld át, azaz ezek ASCII kódját: ''FFFF''
Akkor tehát ennek fényében a PLC-től kapott válasz:
1. byte: ''@'' ennek a kódja 40h
2. és 3. byte. az egység száma: ''01'', azaz 30h, 31h
4. és 5. byte a parancs két betűje, azaz ''MF'', vagyis 4Dh, 46h
6. és 7. byte az RC (response code) ami egy byte, ezért két karakter, bármi lehet. Hogy mit jelent? Esetleg ha rákeresel a PDF-ben arra a két szóra, hogy ''response code'', akkor találsz a 95. oldalon egy olyan részt, aminek az a címe, hogy ''Response code list''. Gondolom a táblázat amit ott találsz, majd választ ad a kérdésedre.
8, 9, 10 és 11. byte-on jön a ''first word'', ami négy ASCII karakterrel leírt szó, vagyis két byte.
12, 13, 14, és 15. byton jön a ''second word'' ami ugyanúgy négy karakteren leírt 2 byte.
16. és 17 byte-on jön két karakter, ami ugyancsak ASCII karakterekkel leírja az FCS-t, ami ugye egy byte lesz majd ha visszaforgatod.
18, byte egy csillag ''*'' karakter, vagyis 2Ah
A 19. byte pedig a CR karakter, azaz kocsi vissza: 0Dh
A * és a CR ha jól tudom nem küldi vissza,vagy igen?
Idézet a 133-as üzenetből:
''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.''
Tehát a ''*'' és CR karakterek minden parancsban és az arra adott minden válaszban benne vannak, mert ezek határolják az adás és a vétel elejét és végét!
Még egyszer: A HostLink ASCII alapú!! Mindent ASCII karakterekkel ír le! Ezért lesz egy byte-ból kettő és egy word-ből négy karakter (byte)! -
Szirty
őstag
Hali wertick!
First Error Word: F F F F ez az ASCII karakter. Ez hex-ban: 4D 4D 4D 4D.
Ebből, hogy lesz 2*8 bit,
Már a kérdést se értem. FFFFh az eleve 16 bit! 16 darab 1-es bit.
ahogy a PDF 71.oldalán az ábra mutatja,ugyanis az egyes bitek kiolvasásával lehet hibákat olvasni.
Beolvasod az összes karaktert egty pufferbe, amit a PLC a parancsodra válaszol.
Először is fogod a 8, 9, 10, 11.-edik karaktert. Ezt a 4 karaktert hexa számként értelmezve átalakítod bináris számmá valahogy így:
Fogod a 4 karakter egyikét, mondjuk az elsőt (bal oldalit). Kivonsz belőle 48-at (dec), majd megnézed nagyobb-e mint 9. ha nem, akkor elrakod. Ha igen, akkor kivonsz belőle még 7-et és akkor rakod el. Ezt megismétled mind a 4 további karakterrel.
Majd fogod a kapott 4 byte-ot, és a bal oldalit eltolod balra 4 bittel, úgy, hogy azt az eltolást alkalmazod, amelyik 0 biteket léptet be balról, majd ezt a byte-ot OR műveletnek veted alá a következő helyiértékből kapott byttal, majd a kapott értéket elrakod.
Ugyanezt a műveletet elvégzed a maradék két helyiértékből kapott byte-al, (vagyis a kettő közül a magasabb helyiértékűt, azaz balról a 3 karakterből kapott eredményt) megint eltolod 4 bittel balra ahogy az előbb, majd hozzá OR-olod az utolsót, majd eltárolod.
Most van két byte-od. Amit elsőként saqkkoztál össze az a magasabb, amit másodikként az az alacsonyabb. Ez a kettő most már binárisan tartalmazza azt az értéket, amit a PLC ASCII-ba kódolva küldött neked, Ezek bitjei pontosan azt jelentik, amiket a 71. oldalon látsz a PDF-ben.
A másik (second error word) szóval ugyanezt eljátszod, hogy abból is megkapd a bináris értéket és kész.
Célszerű egy rutint írni az ASCII->Bin konverzióra és utána csak azt hívogatni.
Új hozzászólás Aktív témák
- Sony MILC fényképezőgépcsalád
- MG5 menetpróba
- Milyen okostelefont vegyek?
- A fociról könnyedén, egy baráti társaságban
- Tudományos Pandémia Klub
- Gyúrósok ide!
- Kingdom Come Deliverance 2 - Konzolokon be kell érnünk a 30 FPS-sel
- World of Tanks - MMO
- Diablo IV
- Samsung Galaxy A52s 5G - jó S-tehetség
- További aktív témák...
- MacSzerez.com - iPhone 11 Pro / 64GB / Kártyafüggetlen / Space Grey / Garancia!
- Google Pixel 8 Pro Bay 128gb - Használt, Google gari, akár beszámítással
- Gamer PC RTX 3070 Intel i5 10600KF 1TB NVME SSD Nagyrészt új alkatrészek Garancia és Beszámítás!
- Apple iPhone 15 Pro Black 1TB - Makulátlan, Apple garancia, akár beszámítással
- Apple iPhone 14 Pro Max 1TB - Makulátlan, akár beszámítással
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs