Vítej, Host. Prosím přihlaš se nebo se zaregistruj.
24.04.2026, 21:11:17

Domů Nápověda Vyhledávání Přihlásit Registrovat
 
Fórum k produktům firmy ELSACO Kolín  

+  PROMOS fórum
|-+  FRED - grafické vývojové prostředí
| |-+  FRED - platforma PL2 (CCPU)
| | |-+  CCPU jako ModBus slave
0 uživatelů a 1 Host prohlíží toto téma. « předchozí další »
Stran: [1] Dolů Tisk
Autor Téma: CCPU jako ModBus slave  (Přečteno 5423 krát)
libor
moderátor+

Příspěvků: 388



« kdy: 06.09.2010, 06:17:58 »

Je možné provozovat jednotku CCPU jako ModBus slave? A jakým způsobem?


Dotaz zákazníka (viz výzva).
Zaznamenáno

libor
moderátor+

Příspěvků: 388



« Odpověď #1 kdy: 06.09.2010, 11:29:12 »

Podle helpu ke knihovně PL2 (u jednotek CCPU-02, CCPU-03 nebo CCPU-21) lze provozovat komunikovat s jednotkou CCPU zjednodušeným protokolem ModBus, který zapisuje/čte data do modulů Comport a/nebo Screen.

Součástí tohoto vlákna budou projekty pro jednotku CCPU a jednotku XCOM, která bude demonstrovat možnost komunikovat mezi těmito 2 typy jednotek protokolem ModBus (XCOM jako master a CCPU jako slave).

Jednotky propojíme přes RS-485 (tj. např. COM1 na CCPU-02 a COM0 na XCOM-21).
Zaznamenáno

libor
moderátor+

Příspěvků: 388



« Odpověď #2 kdy: 06.09.2010, 12:37:34 »

Projekt do CCPU bude mimo "povinných" modulů (Sysmon, Flash, Timdat a CCPU-xx dle dané centrály) obsahovat pouze a jenom modul Comport - komunikaci si ukážeme na něm.

Nastavení všech modulů můžeme nechat implicitní a projekt do jednotky můžeme nahrát.

Důležité je pouze znát komunikační parametry pro protokol ModBus slave. Ty jsou stejné jako nastavení hlavního kanálu, které je implicitně COM0, 38400Bd, bez parity. My si nastavíme (buď přes CKDM nebo přes utilitku pro nastavení hlavního kanálu) kanál 1, tj. RS-422/485.

Přenos si ukážeme na 2 floatových hodnotách a jedné celočíselné, které bude přenášet z CCPU do XCOMu a na jedné celočíselné, kterou budeme přenášet z XCOMu do CCPU. Projekt pro PL2 je v příloze příspěvku.

(připojené soubory vidí pouze registrovaní uživatelé)
Zaznamenáno

libor
moderátor+

Příspěvků: 388



« Odpověď #3 kdy: 06.09.2010, 12:58:55 »

Projekt do XCOMu nebude o nic složitější. CCPU a XCOM-21 spojíme přes RS-485, tj. na XCOMu použijeme kanál COM0 (RS-422/485). Komunikační parametry jsou dány hlavním kanálem jednotky CCPU.

Pro čtení parametrů z CCPU protokolem ModBus použijeme modul ModbusEx Rx, který nám umožňuje nastavit všechny potřebné parametry. V dialogu jeho parametrů nastavíme tyto hodnoty:

adresa = 1 - adresa jednotky CCPU

comNr = 0 - kanál, přes který bude XCOM-21 komunikovat s CCPU (zaškrtnutý simplexní režim, protože se jedná o RS-485)

Baud = 38400 - komunikační rychlost na hlavním kanále CCPU

Parita = 0 - parita na hlavním kanále (zde žádná)

Offset = 288 - číslo registru, ze kterého se bude číst - skládá se ze dvou částí horní bajt tvoří číslo instance modulu (v případě modulu Comport v projektu pro PL2 je to 1) a z indexu čtené/zapisované části (první vstup má index 32) -> výsledkem je číslo 0x120 hexa nebo-li 288

Points = 6 - počet položek, které se mají číst - u PL2 předáváme tři 4bajtové hodnoty, ale jedna položka v protokolu ModBus má 2 bajty, takže počet přenášených registrů je 6 (celkem 12 bajtů)

Všechny ostatní parametry necháme implicitní. Nastavení dialogu je příloze.


(připojené soubory vidí pouze registrovaní uživatelé)
Zaznamenáno

libor
moderátor+

Příspěvků: 388



« Odpověď #4 kdy: 07.09.2010, 05:47:55 »

Pro posílání hodnot z XCOMu do CCPU použijeme modul ModbusEx Tx, který opět umožňuje nastavit veškeré potřebné parametry. Komunikační parametry musíme nastavit stejné. Ve výsledku nastavujeme tyto parametry:

adresa = 1 - adresa jednotky CCPU

comNr = 0 - kanál, přes který bude XCOM-21 komunikovat s CCPU (zaškrtnutý simplexní režim, protože se jedná o RS-485)

Baud = 38400 - komunikační rychlost na hlavním kanále CCPU

Parita = 0 - parita na hlavním kanále (zde žádná)

Offset = 256 - číslo registru, ze kterého se bude číst - skládá se ze dvou částí horní bajt tvoří číslo instance modulu (v případě modulu Comport v projektu pro PL2 je to 1) a z indexu čtené/zapisované části (první výstup má index 0) -> výsledkem je číslo 0x100 hexa, nebo-li 256 dekadicky

Points = 2 - počet položek, které se mají zapisovat - na straně PL2 zapisujeme jednu 4 bajtovou položku, takže musíme zapisovat 2 dvoubajtové položky ModBus (celkem 4 bajty)

Dialog s nastavením parametrů a projekt jsou v příloze.

(připojené soubory vidí pouze registrovaní uživatelé)
Zaznamenáno

anonym
člen

Příspěvků: 33



« Odpověď #5 kdy: 14.09.2010, 09:33:13 »

A kde se berou magicka cisla offsetu? Jsou nekde popsane?
Zaznamenáno
libor
moderátor+

Příspěvků: 388



« Odpověď #6 kdy: 14.09.2010, 10:28:31 »

Je to popsáno v nápovědě pro knihovní moduly PL2, a to u modulů centrál CCPU-xx (02, 03, 21). Je tam napsáno toto:
Citace
Centrála CCPU-xx umí na hlavním kanále i zjednodušený protokol modbus - bez přepínání (pro režim slave). Modbus umožňuje přístup do modulů COMPORT a SCREEN, a to tak, že Register address Hi (terminus technikus protokolu) určuje instanci daného modulu, a Register address Lo je pro výstupy COMPORT 0..31, vstupy modulu COMPORT 32..63. Pro přístup do modulu COMPORT musí být tato položka násobek 2. Register address Lo 64, 66, 68 a 70 jsou vyhrazeny pro přístup do modulu SCREEN, a to na výstupy edit0..edit3. Je možné vždy zapisovat i číst, délka dat musí být násobek 4 (tj. No. of Points musí být násobek 2).

Číslo offsetu se skládá ze dvou částí: horní bajt tvoří číslo instance modulu Comport nebo Screen a dolní bajt označuje místo, kam se data budou zapisovat nebo odkud se budou číst (poslední vstup modulu Comport s číslem instance 2 bude dostupný na offsetu, který je složen z horního bajtu = 2 a dolní bajtu = 63, nebo-li 0x23F (575 nebo také 2 * 256 + 63).

Řekněme, že máme v projektu 2 Comporty a 2 Screeny. Jednotlivé položky modulů jsou dostupné na těchto offsetech:

Comport s číslem instance 1:
 výstupy od offsetu 0x100 (256) do offsetu 0x11F (287)
 vstupy od offsetu 0x120 (288) do offsetu 0x13F (319)

Comport s číslem instance 2:
 výstupy od offsetu 0x200 (512) do offsetu 0x21F (543)
 vstupy od offsetu 0x220 (544) do offsetu 0x23F (575)

Screen s číslem instance 1:
 edit0 je dostupný na offsetu 0x140 (320)
 edit1 je dostupný na offsetu 0x142 (322)
 edit2 je dostupný na offsetu 0x144 (324)
 edit3 je dostupný na offsetu 0x146 (326)

Screen s číslem instance 2:
 edit0 je dostupný na offsetu 0x240 (576)
 edit1 je dostupný na offsetu 0x242 (578)
 edit2 je dostupný na offsetu 0x244 (580)
 edit3 je dostupný na offsetu 0x246 (582)
Zaznamenáno

Stran: [1] Nahoru Tisk 
« předchozí další »
Skočit na:  


Poháněno MySQL Poháněno PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines Validní XHTML 1.0! Validní CSS!