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

  • Szirty

    őstag

    válasz Szabest #2516 üzenetére

    Helló Szabest!

    Hát nagyon szájbarágós választ most nem fogok kidolgozni (rajzolnom kéne ezerrel), de megpróbálok válaszolni minden kérdésre.

    Az RS485 és az RS422 fizikai kialakítása olyan, hogy nem pont-pont, hanem pont-multipont huzalozást is megenged. (RS485 2 vezetékkel half duplex, RS422 4 vezetékkel full duplex).
    Tehát felfűzheted RS485-re az összes adatforrást, DE!
    A több pontos kommunikációt az adott eszközöknek ismernie / támogatnia kell (protokol kérdése).
    Tehát a "buszos" huzalozást támogatja, de azt nem tudom hogy az eszközök amik neked adatot küldenek támogatják-e. Nyilván ha több eszköz van egy buszon, akkor azok nem vezérelhetik egyidőben a buszt, valamilyen megegyezés alapján kell hogy menjen a kommunikáció. Pl. Master-slave hierarchia esetén a PLC lehet a master és az a slave válaszol, amelyiket a master megcímez és lekérdez. Protokol kérdése tehát, a slave-eket valahogy meg kell különböztetni egyrészt hogy meg tudja állapítani a PLC hogy melyik eszköz küldte az adatot, illetve hogy meg tudja őket szólítani egyenként.
    De mivel semmit nem tudok arról az eszközről amit említettél (még a nevét sem) nyilván nem tudom megmondani hogy ezekhez ez az elvárásokhoz hogyan viszonyulnak.

    "Ha az előbbi megoldás is létezik, akkor milyen alapbeállításokat kell belőni a HW konfigban??"

    Interface: Half duplex (RS485) Two-Wire Mode.
    Data Flow control beállítása attól függ hogy az amivel kommunikálsz melyiket "szereti"

    "Továbbá a minta irja, hogy az FB2 P_RCV CP340 és a FB3 P_SEND CP340 blokkokat kell használnom, jól olvastam?"

    Igen.
    Én 400-as CPU-n használtam CP440-et. Ez ua az elvileg mint a 300-ashoz a CP340.
    Így nézett ki a küldés és fogadást végző hívás:

    M431.1 impulzus hatására küldte az adatot.
    M434.2 -vel lehetett alaphelyzetbe állítani a kommunikációt
    LADDR a HW configban szereplő kezdőcíme a CP kártyának:

    DB_NO a DB száma ahol a küldendő adatok vannak
    DBB_NO byte cím a DB-n belül, ahol a küldendő adatok kezdődnek
    #Len Itt kapja meg a blokk, hogy hány byte-ot kell küldeni

    Az FB9 fogadta az adatokat. Ahol:
    M0.6 Mindig TRUE
    Az R bemenet sorában lévő két feltétel szintén a reset (alahelyzetbe állítás)
    LADDR a kártya címe
    DB_NO és DBB_NO a DB száma és azon belüli byte cím, ahova a vett adatokat le kell raknia.
    A LEN kimenő paraméterben mondja meg a blokk hány byte adat érkezett ami a DB-ben van.
    Az M433.2 akkor billent be, amikor a blokk hibátlan adatot vett.M433.3 meg akkor, amikor adat érkezett, de hibával.

    A DB20-ban volt egy 32 byte-os adási buffer és egy 256 byte-os vételi buffer. Adáskor az FB10 elküldte a benne levő adatot, ami vételkor jött az beesett a vételi bufferbe.

    A DB20:
    STRUCT
    Tx : ARRAY [0 .. 31 ] OF //Host link adás puffer
    BYTE ;
    Rx : ARRAY [0 .. 255 ] OF //Host link vételi puffer
    BYTE ;
    END_STRUCT ;

    "Jó lenne valamit villantani neki...."

    Akkor küzdj! Komoly eredményhez komoly küzdelem vezet! :)

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