Hirdetés

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

  • Szirty
    őstag

    Ismét üdvözletem a szakembereknek!

    Szirtynek: Na most a helyzetem annyival könnyebb lett, hogy OMRON CPM1A PLC-vel kell dolgoznom , amihez van kézikönyv, csak még annyira nem vágom mit és hogyan kellene alkalmaznom. Hasonló ahhoz a linkhez amit egyszer küldtél( Sysmac way, host link units)

    Találtam egy kommunikációs protokoll programot, c++-ban lett írva, meg is van a forráskód, majd megpróbálom elküldeni neked emailen, vagy másképp. Ez a program elviekben azért íródott, hogy 2 számítógép kommunikáljon egymással rs232-n keresztül.próbáltam küldeni a plc-re azt a karaktersorozatot, amit írtál:
    @01RD00000009FCS*CR (pl:FCS= 57), nem reagált a plc,
    cx programmer-ben is megnéztem a memóriarekeszek tartalmát, de semmit nem jelzett, nem változott semmi.
    Nem tudom mennyit értesz a cx-hez, mikor a rekeszek tartalmát nézem be kell állítanom hány adatbitet küldök, milyen paritású legyen, hány stop bit legyen, meg hasonlók, lehet, hogy csak ez a probléma a programban.

    Van egy másik kommunikációs program, az a neve, hogy Multiway. Itt lehet hasonló karaktersorozatokat küldeni a plc-re, mint amit írtál, itt viszont működik.

    Ha esetleg tudsz valami kommunikációs programot, ahol még működne, vagy valami jó tippet nagyon megköszönném!

    Előre is kösz, az eddigi segítségekért is!
    Szevasztok!

    Hali Mr. Cutter!

    Ez a program elviekben azért íródott, hogy 2 számítógép kommunikáljon egymással rs232-n keresztül.próbáltam küldeni a plc-re azt a karaktersorozatot, amit írtál:
    @01RD00000009FCS*CR (plCS= 57), nem reagált a plc,


    Nos amikor írtam a példát, gondoltam megnézed a hostlink PDF-et :)
    Az FCS egy ellenőrző összeg (Frame CheckSum), amit az üzenet tartalmából XOR-al kell kiszámolni, ezért minden üzenetnél más és más.
    vagyis nem egy fix karaktersorozat.
    Ha egy host link parancs végén, amit a PLC-nek küldesz, nem megfelelő az FCS, a PLC azt feltételezi, hogy az átvitel hibás, az érkezett adatcsomag sérült, és a parancsra nem reagál!
    A CR pedig a kocsi vissza karakter kódja ASCII-ban (a hostlink alapvetően ASCII).
    A host linkben ([link])
    Pl. a HR olvasás parancs így néz ki:
    [kép]
    Tehát:
    @ (kukac, ami 40h)
    Egység száma ASCII-ben, vagyis ha az egység száma 01, akkor a 30h és 31h kódokat kell küldeni, mivel a ''0'' karakter ASCII kódja hexa 30, az ''1'' ASCII karakter kódja hexa 31
    Utána jön a parancs, ami két karakter (két byte) ezesetben RH (HR area read). A ''H'' betű kódja 38h, az ''R'' kódja 52h.
    Ezután négy karakteren (szintén ASCII-ben) meg kell adni a kiolvasandó terület első rekeszének címét, majd 4 karakteren a kiolvasandó rekeszek számát, decimálisan. Tegyük fel, hogy a HR6 és HR7 tartalmát akarod olvasni. Akkor a 0006 és 0002 lesz a két sorozat, ami ASCII-ben így néz ki: 30h, 30h, 30h, 36h, majd: 30h, 30h, 30h, 32h
    Ezt követi a két byte FCS ASCII-ben. Ezt ki kell számolni az előző karakterkódok alapján, amit a hivatkozott PDF 77. oldalán lehet megtalálni (67. oldal a PDF számozása szerint).
    Az eddigi karaktersorozat hexában tehát az alábbi:
    40h, 30h, 31h, 38h, 52h, 30h, 30h, 30h, 36h, 30h, 30h, 30h, 32h
    Ebből kell sz FCS-t kiszámolni az alábbi ábrának megfelelően:
    [kép]
    Konkrétan: 40h XOR 30h XOR 31h XOR 38h XOR 52h XOR 30h XOR 30h XOR 30h XOR 36h XOR 30h XOR 30h XOR 30h XOR 32h
    Ennek eredménye ha jól számolom: 2Fh
    Ezt át kell alakítani két karakteres ASCII kóddá: A ''2'' karakter hexa kódja: 32h, az ''F'' betű kódja: 46h.
    Ezt egy csillag karakter követi 2Ah kóddal, majd jön egy CR kocsi vissza karakter, ami 13h.
    A HR6 és 7 kiolvasásának komplett parancsa tehát:
    40h, 30h, 31h, 38h, 52h, 30h, 30h, 30h, 36h, 30h, 30h, 30h, 32h, 32h, 46h, 2Ah, 13h
    Feltéve persze hogy 1:N kommunikáció van beállítva és a lekérdezett PLC ''unit number'' 01-re van beállítva.
    A válasz formája, amiben a PLC visszaküldi a lekérdezett HR-ek tartalmát, szintén benne van az említett PDF-ben, de terjedelmi okokból ide inkább nem írom le.
    Ha gond van kérdezz!

    Mr. Cutter-nek:
    Ha a kommunikáció 1:1 jellegű (és a beállítás is 1:1, nem csak a fizikai kiépítés, mivel 1:N kommunikáció két eszköz között is lehetséges), akkor ha jól emlékszem nem kell elküldeni az egységszámot, és az FCS kiszámítáűsában sem vesz részt természetesen. De a részletekért nézd meg a PDF-ben.

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