<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Moduły pomiarowe i kontrolno-pomiarowe - Advantech - Elmark Automatyka Sp. z o.o.</title>
<meta name="keywords" content="Moduły pomiarowe kontrolno-pomiarowe moduł pomiarowy kontrolno-pomiarowy ADAM USB I/O Advantech">
<meta name="description" content="Moduły pomiarowe kontrolno-pomiarowe moduł pomiarowy kontrolno-pomiarowy ADAM USB I/O Advantech">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta name="author" content="Jacek Bonecki - Elmark Automatyka Sp. z o.o. - http://www.elmark.com.pl">
<meta name="verify-v1" content="dFPC/7SMwqEjaoI9PbBxgMy61Tm7deLBY7wDvMEdY3E=">
<style type="text/css">
<!--
a:HOVER{TEXT-DECORATION:UNDERLINE;}
a {TEXT-DECORATION:none}
.vlrbt {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-BOTTOM-WIDTH:1px;BORDER-BOTTOM-STYLE:solid;BORDER-BOTTOM-COLOR:#C0C0C0;BORDER-RIGHT-WIDTH:1px;BORDER-RIGHT-STYLE:solid;BORDER-RIGHT-COLOR:#C0C0C0;BORDER-LEFT-WIDTH:1px;BORDER-LEFT-STYLE:solid;BORDER-LEFT-COLOR:#C0C0C0;BORDER-TOP-WIDTH:1px;BORDER-TOP-STYLE:solid;BORDER-TOP-COLOR:#C0C0C0;}
.vrbt {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-BOTTOM-WIDTH:1px;BORDER-BOTTOM-STYLE:solid;BORDER-BOTTOM-COLOR:#C0C0C0;BORDER-RIGHT-WIDTH:1px;BORDER-RIGHT-STYLE:solid;BORDER-RIGHT-COLOR:#C0C0C0;BORDER-TOP-WIDTH:1px;BORDER-TOP-STYLE:solid;BORDER-TOP-COLOR:#C0C0C0;}
.vlbt {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-BOTTOM-WIDTH:1px;BORDER-BOTTOM-STYLE:solid;BORDER-BOTTOM-COLOR:#C0C0C0;BORDER-LEFT-WIDTH:1px;BORDER-LEFT-STYLE:solid;BORDER-LEFT-COLOR:#C0C0C0;BORDER-TOP-WIDTH:1px;BORDER-TOP-STYLE:solid;BORDER-TOP-COLOR:#C0C0C0;}
.vlrt {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-TOP-WIDTH:1px;BORDER-TOP-STYLE:solid;BORDER-TOP-COLOR:#C0C0C0;BORDER-RIGHT-WIDTH:1px;BORDER-RIGHT-STYLE:solid;BORDER-RIGHT-COLOR:#C0C0C0;BORDER-LEFT-WIDTH:1px;BORDER-LEFT-STYLE:solid;BORDER-LEFT-COLOR:#C0C0C0;}
.vlrb {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-BOTTOM-WIDTH:1px;BORDER-BOTTOM-STYLE:solid;BORDER-BOTTOM-COLOR:#C0C0C0;BORDER-RIGHT-WIDTH:1px;BORDER-RIGHT-STYLE:solid;BORDER-RIGHT-COLOR:#C0C0C0;BORDER-LEFT-WIDTH:1px;BORDER-LEFT-STYLE:solid;BORDER-LEFT-COLOR:#C0C0C0;}
.vlr {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-RIGHT-WIDTH:1px;BORDER-RIGHT-STYLE:solid;BORDER-RIGHT-COLOR:#C0C0C0;BORDER-LEFT-WIDTH:1px;BORDER-LEFT-STYLE:solid;BORDER-LEFT-COLOR:#C0C0C0;}
.vbt {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-BOTTOM-WIDTH:1px;BORDER-BOTTOM-STYLE:solid;BORDER-BOTTOM-COLOR:#C0C0C0;BORDER-TOP-WIDTH:1px;BORDER-TOP-STYLE:solid;BORDER-TOP-COLOR:#C0C0C0;}
.vrb {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-BOTTOM-WIDTH:1px;BORDER-BOTTOM-STYLE:solid;BORDER-BOTTOM-COLOR:#C0C0C0;BORDER-RIGHT-WIDTH:1px;BORDER-RIGHT-STYLE:solid;BORDER-RIGHT-COLOR:#C0C0C0;}
.vrt {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-RIGHT-WIDTH:1px;BORDER-RIGHT-STYLE:solid;BORDER-RIGHT-COLOR:#C0C0C0;BORDER-TOP-WIDTH:1px;BORDER-TOP-STYLE:solid;BORDER-TOP-COLOR:#C0C0C0;}
.vlb {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-BOTTOM-WIDTH:1px;BORDER-BOTTOM-STYLE:solid;BORDER-BOTTOM-COLOR:#C0C0C0;BORDER-LEFT-WIDTH:1px;BORDER-LEFT-STYLE:solid;BORDER-LEFT-COLOR:#C0C0C0;}
.vlt {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-LEFT-WIDTH:1px;BORDER-LEFT-STYLE:solid;BORDER-LEFT-COLOR:#C0C0C0;BORDER-TOP-WIDTH:1px;BORDER-TOP-STYLE:solid;BORDER-TOP-COLOR:#C0C0C0;}
.vl {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-LEFT-WIDTH:1px;BORDER-LEFT-STYLE:solid;BORDER-LEFT-COLOR:#C0C0C0;}
.vr {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-RIGHT-WIDTH:1px;BORDER-RIGHT-STYLE:solid;BORDER-RIGHT-COLOR:#C0C0C0;}
.vb {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-BOTTOM-WIDTH:1px;BORDER-BOTTOM-STYLE:solid;BORDER-BOTTOM-COLOR:#C0C0C0;}
.vt {FONT-FAMILY:Tahoma;FONT-SIZE:10px;BORDER-TOP-WIDTH:1px;BORDER-TOP-STYLE:solid;BORDER-TOP-COLOR:#C0C0C0;}
.v {FONT-FAMILY:Tahoma;FONT-SIZE:10px;}
.myframe {FONT-FAMILY:Tahoma;FONT-SIZE:10px;PADDING-RIGHT:10px;PADDING-LEFT:10px;PADDING-BOTTOM:0px;PADDING-TOP:0px;}
.myframe SPAN.CTOP {MARGIN:0px -10px}
.myframe SPAN.CBOT {MARGIN:0px -10px}
SPAN.CTOP {DISPLAY:BLOCK;FONT-SIZE:1px;LINE-HEIGHT:1px;BACKGROUND-REPEAT:no-repeat;HEIGHT:5px}
SPAN.CBOT {DISPLAY:BLOCK;FONT-SIZE:1px;LINE-HEIGHT:1px;BACKGROUND-REPEAT:no-repeat;HEIGHT:5px}
SPAN.CTOP SPAN {DISPLAY:BLOCK;FONT-SIZE:1px;LINE-HEIGHT:1px;BACKGROUND-REPEAT:no-repeat;HEIGHT:5px}
SPAN.CBOT SPAN {DISPLAY:BLOCK;FONT-SIZE:1px;LINE-HEIGHT:1px;BACKGROUND-REPEAT:no-repeat;HEIGHT:5px}
SPAN.CTOP {BACKGROUND-POSITION:0px 0px;BACKGROUND-IMAGE:none;MARGIN:0px -5px}
SPAN.CTOP SPAN {BACKGROUND-POSITION:100% 0px;BACKGROUND-IMAGE:none}
SPAN.CBOT {CLEAR:both;BACKGROUND-POSITION:0px 100%;BACKGROUND-IMAGE:none;MARGIN:0px -5px}
SPAN.CBOT SPAN {BACKGROUND-POSITION:100% 100%;BACKGROUND-IMAGE:none}
SPAN.CTOP {BACKGROUND-IMAGE:URL(IMG/C1.PNG)}
SPAN.CTOP SPAN {BACKGROUND-IMAGE:URL(IMG/C2.PNG)}
SPAN.CBOT {BACKGROUND-IMAGE:URL(IMG/C3.PNG)}
SPAN.CBOT SPAN {BACKGROUND-IMAGE:URL(IMG/C4.PNG)}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#000080" vlink="#000080" alink="#000080" leftmargin="10" topmargin="10">
<table align=center width=1000 bgcolor=#000080 cellpadding=0 cellspacing=0 border=0><tr><td align=left><a href=/><img src=img/top.jpg border=0 width=800 height=65></a></td></tr></table>
<table align=center width=1000 border=0 cellpadding=5 cellspacing=0 style="font-family:tahoma;font-size:10px;"><tr>
<td width=1 valign=top align=center class=vlrbt>
<a target=_blank href=http://www.elmark.com.pl/products/advantech/grupa.php?grupa=1><img src=img/elmark.gif width=200 height=66 border=0 alt="Elmark Automatyka Sp. z o.o."></a><br>
<img src=img/blank.gif width=200 height=5><table cellpadding=3 cellspacing=0 width=200 style="font-family:tahoma;font-size:10px;">
<tr><td bgcolor=#000080><b><font color=#FFFFFF>Menu...</font></b></td></tr>
</table>
<table cellpadding=3 cellspacing=0 width=200 class=vlrb>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=0>Strona główna</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=1>O nas: Elmark Automatyka Sp. z o.o.</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=http://www.elmark.com.pl/forum/ target=_blank>Nasze forum</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=2>Inne/ciekawe strony www</a></td></tr>
</table>
<img src=img/blank.gif width=200 height=5><table cellpadding=3 cellspacing=0 width=200 style="font-family:tahoma;font-size:10px;">
<tr><td bgcolor=#000080><b><font color=#FFFFFF>Artykuły...</font></b></td></tr>
</table>
<table cellpadding=3 cellspacing=0 width=200 class=vlrb>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=101>P2P i GCL w serii ADAM-6000</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=102>Seria EKI-122X - konwertery Modbus</a></td></tr>
<tr><td bgcolor=#FFFF9F>WIRE-CHIP, JAZZ i moduły ADAM</td></tr>
</table>
<img src=img/blank.gif width=200 height=5><table cellpadding=3 cellspacing=0 width=200 style="font-family:tahoma;font-size:10px;">
<tr><td bgcolor=#000080><b><font color=#FFFFFF>O czym warto wiedzieć...</font></b></td></tr>
</table>
<table cellpadding=3 cellspacing=0 width=200 class=vlrb>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=201>Protokół ADAM-ASCII</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=202>Protokół Modbus</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=203>Implementacja Modbus/RTU</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=204>Implementacja Modbus/TCP</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=205>Wyjścia przekaźnikowe</a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=206>Seria ADAM-6000 i język PHP</a></td></tr>
</table>
<img src=img/blank.gif width=200 height=5><table cellpadding=3 cellspacing=0 width=200 style="font-family:tahoma;font-size:10px;">
<tr><td bgcolor=#000080><b><font color=#FFFFFF>Najpopularniejsze modele...</font></b></td></tr>
</table>
<table cellpadding=3 cellspacing=0 width=200 class=vlrb>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=301>ADAM-4520<font color=#BBBBBB> Optoizolowany<br>konwerter RS-232/422/485</font></a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=302>ADAM-4017+<br><font color=#BBBBBB>Wejścia analogowe (RS-485)</font></a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=303>ADAM-4055<br><font color=#BBBBBB>We/wy cyfrowe (RS-485)</font></a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=304>ADAM-5000/TCP<br><font color=#BBBBBB>Kaseta Modbus/TCP</font></a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=305>ADAM-6017<br><font color=#BBBBBB>Wejścia analogowe</font></a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=306>ADAM-6060<br><font color=#BBBBBB>We/wy cyfrowe (przekaźnikowe)</font></a></td></tr>
<tr><td bgcolor=#F4F4F4 onmouseover="this.style.backgroundColor='#CADCEB'" onmouseout="this.style.backgroundColor='#F4F4F4'"><a href=307>USB-4711A<font color=#BBBBBB> Uniwersalny<br>moduł pomiarowy AI/AO/DI/DO</font></a></td></tr>
</table>
</td>
<td valign=top align=center class=vrbt>
<table width=100% cellpadding=20 cellspacing=0 border=0 style="font-family:tahoma;font-size:12px;">
	<tr> 
	<td> 
	<div class="myframe" style="FONT-SIZE:14px;BACKGROUND-COLOR:#EBF3F8;COLOR:#000080;">
	<span class="ctop"><span></span></span>
	<b>WIRE-CHIP, JAZZ i moduły ADAM</b><br>Czyli łatwa realizacja rozszerzenia wyjść cyfrowych sterownika JAZZ i Vision firmy UNITRONICS<br>za pomocą modułu WIRE-CHIP i modułów ADAM firmy Advantech
	<span class="cbot"><span></span></span>
	</div>
	<p align=justify>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	<i>Sterownik JAZZ posiada maksymalnie 16 wejść cyfrowych DC i 20 wyjść cyfrowych. Jedyną możliwością rozszerzenia ilość wejść/wyjść jest podłączenie do tego sterownika modułów z komunikacją szeregową RS-232 lub RS-485. Można również wybrać sterownik z innej serii (np. Vision) i użyć moduły rozszerzające dedykowane oferowane przez firmę UNITRONICS. Druga możliwość zmienia znacznie koszty przedsięwzięcia.</i>
	<p align=justify>
	<img src="artykuly/wire-chip/wire-chip.jpg" width=150 height=150 border=0 align=left style="MARGIN-LEFT:0px;MARGIN-RIGHT:5px;MARGIN-TOP:10px;MARGIN-BOTTOM:10px;" >
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	Pozostańmy przy rozszerzeniu ilości wejść/wyjść prostego sterownika JAZZ. Napisanie oprogramowania skutecznie obsługującego wiele modułów w języku drabinkowym jest pewnym wyzwaniem programistycznym, które dodatkowo zajmuje sporą część pamięci programu i innych zasobów JAZZa. W takiej sytuacji warto sięgnąć po moduł WIRE-CHIP H3.1, którego naturalne możliwości (pierwotnie - wielopunktowy pomiar temperatury) zostały "w wyniku ewolucji" (od roku 2005) rozszerzone o obsługę protokołu MODBUS RTU w trybie MASTER. Obsługa wspomnianego protokołu w połączeniu z bogatym zestawem makroinstrukcji daje programiście ogromne możliwości budowania komunikacji MODBUS RTU między wieloma urządzeniami przemysłowymi obsługującymi ten standard. <b>Mimo rozbudowanych możliwości, tworzenie komunikacji za pomocą makroinstrukcji jest proste</b> - chcemy to pokazać w niniejszym artykule. Ponadto rozbudowa wejść/wyjść sterowników Vision w oparciu o moduł WIRE-CHIP i moduły ADAM jest znacznie tańsza niż z wykorzystaniem dedykowanych modułów rozszerzających firmy UNITRONICS. Jeśli dodamy do tego fakt, że stosując moduł WIRE-CHIP zyskujemy jednocześnie wielopunktowy pomiar temperatury (max 64 czujniki) - jest to warte uwagi rozwiązanie.
	<br>
	<br>
	<img src="artykuly/wire-chip/wirechip-jazz-adam.jpg" width=740 height=246 border=0>
      <br>
	<br>
      <b>Opis połączeń elektrycznych</b><br>
	<p align=justify>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	Sterowniki JAZZ nie posiadają wbudowanych portów szeregowych, jednak istnieje możliwość zainstalowania zewnętrznych modułów portu szeregowego w wersji JZ-RS4 lub JZ-PRG. Moduł JZ-RS4 umożliwia komunikację w standardzie RS-485 lub RS-232, jednak jest znacznie droższy niż moduł JZ-PRG. Z tego powodu do zestawu wybraliśmy moduł JZ-PRG. Aby moduł ten działał wymaga zewnętrznego źródła zasilania. Jeśli jest używany jako programator sterownika JAZZ, zasilanie pobiera z linii DTR portu RS-232 komputera PC. W naszym przypadku musimy go zasilić z zasilacza 24V, przez rezystor 1k&#937;. Moduł JZ-PRG łączy się z modułem WIRE-CHIP poprzez port RS-232. Natomiast WIRE-CHIP łączy się z modułami ADAM poprzez port RS-485. Jeśli magistrala RS-485 jest dłuższa niż kilka.. kilkadziesiąt metrów, wówczas na jej końcach należy zainstalować rezystory terminujące 120&#937;. Teoretyczny zasięg magistrali RS-485 to 1200m. W naszym zestawie testowym zastosowaliśmy przewód 100m. Jeśli system rozszerzeń wejść/wyjść jest rozległy i znajduje się w nim wiele modułów i innych elementów zasilanych napięciem 24V, wówczas trzeba w każdej skrzynce z modułami zainstalować lokalny zasilacz 24V. Zapobiegnie to nadmiernym spadkom napięć powodującym błędne działanie systemu.
	<br>
	<br>
	Schemat poglądowy zestawu testowego:
	<br>
	<br>
	<img src="artykuly/wire-chip/schemat_polaczen_elektrycznych.jpg" width=740 height=534 border=0>
      <br>
	<br>
      <b>Oprogramowanie sterownika PLC</b><br>
	<p align=justify>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	Aby skonfigurować sterownik do pracy w trybie MODBUS RTU - SLAVE, w przypadku sterownika JAZZ (także M90 i M91), należy wpisać do jego rejestrów systemowych niezbędne wartości konfiguracyjne. W przypadku sterowników Vision należy umieścić w programie bloki konfiguracji portu szeregowego i konfiguracji protokołu MODBUS, a także cyklicznie uruchamiać blok "SCAN_EX". Tyle wystarczy, aby nawiązać komunikację. Można się jeszcze pokusić o sprawdzanie stanu modułów wejść/wyjść. W tym celu należy sprawdzać wartości bitów (MB - Memory Bit) pod adresami do których moduł WIRE-CHIP będzie podawał stany wykonania makroinstrukcji.
	Aby sprawdzić wartość wejścia cyfrowego należy odczytać (np. za pomocą "direct contact") stan bitu (MB) pod który moduł WIRE-CHIP przekazuje wartość z wejścia cyfrowego. Aby ustawić w określony sposób wyjście cyfrowe, należy ustawić (użyć np. direct coil, set coil lub reset coil) wartość bitu (MB), który zostanie pobrany przez WIRE-CHIP i następnie przekazany do modułu wyjść cyfrowych.
	Aby móc przetwarzać wartość temperatury otrzymaną z modułu WIRE-CHIP, należy odczytać ją z 16-bitowego rejestru MI (Memory Integer) do którego zostanie ona wpisana przez WIRE-CHIP.
	<br>
	<br>
	Przykład kodu konfigurującego sterownik JAZZ:
	<br>
	<br>
	<img src="artykuly/wire-chip/konfig_modbus_rtu_slave_jazz.jpg" width=740 height=565 border=0>
	<br>
	<br>
	Powyższe 3 "szczeble" drabiny wystarczą, aby sterownik JAZZ (M90 / M91) był poprawnie skonfigurowany do pracy z modułem WIRE-CHIP i maksymalnie ponad 200 wejściami / wyjściami. Analogiczny kod dla sterownika z grupy Vision przedstawiony jest na rysunku poniżej.
	<br>
	<br>
	Przykład kodu konfigurującego sterownik Vision:
	<br>
	<br>
	<img src="artykuly/wire-chip/konfig_modbus_rtu_slave_vision.jpg" width=740 height=580 border=0>
	<br>
	<br>
      <b>Oprogramowanie modułu WIRE-CHIP - makroinstrukcje</b><br>
	<p align=justify>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	Aby przekazać do sterownika wartości <u>wejść cyfrowych</u>, moduł WIRE-CHIP musi odczytać dane z modułu i przechować je we własnej pamięci RAM. Następnie dane muszą zostać przekazane z własnej pamięci RAM do sterownika PLC. Do pobrania danych z modułu wejść cyfrowych trzeba użyć funkcji Read Coils (MODB_RC). Funkcja RC musi znać ID modułu, z którego ma pobrać dane, ilość danych do pobrania, adres wewnątrz WIRE-CHIP pod którym przechować dane, adres wewnątrz modułu wejść cyfrowych, z którego pobrać dane. Analogiczne parametry są potrzebne funkcji Force Coils (MODB_FC) używanej w tym przypadku do przesyłania otrzymanych poprzednio wartości do sterownika PLC. Potrzebne są ID sterownika PLC (W naszym przypadku ID=11), ilość danych, adres wewnątrz WIRE-CHIP - skąd pobrać dane (ADR_MA), adres wewnątrz sterownika PLC - gdzie przekazać dane (ADR_SL).
	Podobnie sytuacja ma się w przypadku przekazywania wartości bitów (MB) do modułów rozszerzających <u>wyjść cyfrowych</u>. Wartości są pobierane ze sterownika za pomocą funkcji Read Coils, do modułu są wpisywane za pomocą funkcji Force Coils.
	Aby przekazać do sterownika informacje o <u>poprawności wykonania makroinstrukcji</u>, należy wykonać funkcję Force Coils z parametrem ADR_MA = 0. Statusy wykonania makroinstrukcji (sukces=1 / porażka=0) wpisywane są wewnętrznie przez moduł WIRE-CHIP dla kolejnych makroinstrukcji pod adresy kolejnych bitów poczynając od adresu 0. Przykład: Jeśli w module zdefiniowanych jest 8 makroinstrukcji, to pierwszych 8 bitów (numery 0..7) będą zawierać status wykonania wszystkich makroinstrukcji. Jeśli makroinstrukcja dotycząca portu szeregowego (MODB_PHR, MODB_RHR, MODB_FC, MODB_RC) zostanie wykonana poprawnie (WIRE-CHIP otrzyma potwierdzenie od modułów SLAVE - ADAM...) odpowiedni bit jest ustawiany. Jeśli funkcja nie otrzyma potwierdzenie od modułów SLAVE lub z powodu błędnej definicji moduł nie podejmie się jej wykonania, odpowiedni bit statusu zostanie wyzerowany.
	<br>
	<br>
	Wykaz funkcji i ich parametrów potrzebnych do obsługi modułów z naszego zestawu testowego:
	<br>
	<br>
	<table cellpadding=2 cellspacing=0>
	<tr align=middle style="BACKGROUND-COLOR:#FFFF9F;COLOR:#000000;FONT-WEIGHT:bold;">
	<td class=vlrbt>L.P.</td>
	<td class=vrbt>Funkcja</td>
	<td class=vrbt>ID</td>
	<td class=vrbt>Ilość</td>
	<td class=vrbt>ADR_MA</td>
	<td class=vrbt>ADR_SL</td>
	<td class=vrbt>Komentarz</td>
	</tr>
	<tr align=center><td class=vlrb>0</td><td class=vrb>MODB_RC</td><td class=vrb>11</td><td class=vrb>28</td><td class=vrb>100</td><td class=vrb>0</td><td class=vrb align=left>pobiera dane z PLC (od adresu MB0) dla wszystkich modułów wyjść cyfrowych</td></tr>
	<tr align=center><td class=vlrb>1</td><td class=vrb>MODB_FC</td><td class=vrb>6</td><td class=vrb>12</td><td class=vrb>100</td><td class=vrb>16</td><td class=vrb align=left>podaje wartości do wyjść cyfrowych modułu ADAM-4056</td></tr>
	<tr align=center><td class=vlrb>2</td><td class=vrb>MODB_FC</td><td class=vrb>5</td><td class=vrb>8</td><td class=vrb>112</td><td class=vrb>16</td><td class=vrb align=left>podaje wartości do ADAM-4069</td></tr>
	<tr align=center><td class=vlrb>3</td><td class=vrb>MODB_FC</td><td class=vrb>4</td><td class=vrb>8</td><td class=vrb>120</td><td class=vrb>16</td><td class=vrb align=left>podaje wartości do ADAM-4055</td></tr>
	<tr align=center><td class=vlrb>4</td><td class=vrb>MODB_RC</td><td class=vrb>4</td><td class=vrb>8</td><td class=vrb>140</td><td class=vrb>0</td><td class=vrb align=left>pobiera wartości wejść cyfrowych z modułu ADAM-4055</td></tr>
	<tr align=center><td class=vlrb>5</td><td class=vrb>MODB_RC</td><td class=vrb>3</td><td class=vrb>16</td><td class=vrb>148</td><td class=vrb>0</td><td class=vrb align=left>pobiera wartości z ADAM-4051</td></tr>
	<tr align=center><td class=vlrb>6</td><td class=vrb>MODB_RC</td><td class=vrb>3</td><td class=vrb>16</td><td class=vrb>164</td><td class=vrb>0</td><td class=vrb align=left>pobiera wartości z ADAM-4051</td></tr>
	<tr align=center><td class=vlrb>7</td><td class=vrb>MODB_FC</td><td class=vrb>11</td><td class=vrb>40</td><td class=vrb>140</td><td class=vrb>40</td><td class=vrb align=left>przekazuje wartości odczytane z modułów do sterownika PLC (od adresu MB40)</td></tr>
	<tr align=center><td class=vlrb>8</td><td class=vrb>MODB_PHR</td><td class=vrb>11</td><td class=vrb>5</td><td class=vrb>0</td><td class=vrb>0</td><td class=vrb align=left>przekazuje do sterownika (pod MI0) wartości zmierzonych temperatur z 5-czujników</td></tr>
	<tr align=center><td class=vlrb>9</td><td class=vrb>MODB_FC</td><td class=vrb>11</td><td class=vrb>9</td><td class=vrb>0</td><td class=vrb>80</td><td class=vrb align=left>przekazuje do PLC (pod MB80) bity statusu wykonania makroinstrukcji</td></tr>
	</table>
	<br>
	<br>
	Nasz zestaw (oprócz zasobów sterownika) zawiera 28 wyjść cyfrowych, 40 wejść cyfrowych i 5 czujników temperatury.
	Moduł WIRE-CHIP posiada 508 B pamięci kodu przeznaczonej na makroinstrukcje. Każda makroinstrukcja obsługująca MODBUS RTU zajmuje 7 B. W związku z tym możliwe jest skonfigurowanie do 72 takich makroinstrukcji. Oznacza to, że stosując moduły z 16-wejściami (ADAM-4051) i 12-wyjściami (ADAM-4056SO), grupując ilości bitów (coils) transferowanych między sterownikiem, a WIRE-CHIP w paczki po 64 bity, system może obsłużyć maksymalnie 896 wejść {=64 bity * 70 makroinstrukcji / 5 makroinstrukcji(dla 4 modułów)} lub 672 wyjścia {=48 bitów * 70 makroinstrukcji / 5 makroinstrukcji(dla 4 modułów)}. W takim przypadku trzeba zastosować repeater RS-485 (np. ADAM-4510).
	<br>
	<br>
	Widok okna programu konfiguracyjnego wire-konfigurator:
	<br>
	<br>
	<img src="artykuly/wire-chip/wire-konfigurator makro.gif" width=552 height=462 border=0>
	<br>
	<br>
      <b>Moduły analogowe, komunikacja między sterownikami</b><br>
	<p align=justify>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	Obsługa funkcji Read Holding Registers (MODB_RHR kod=0x03) pozwalają modułowi odczytać zawartość rejestrów 16-bitowych innych modułów. Obsługa funkcji Write Multiple Registers (MODB_PHR, kod=0x10) pozwala przekazać wcześniej pobrane dane do sterownika PLC.
	W podobny sposób moduł WIRE-CHIP może realizować funkcje komunikacji między odrębnymi sterownikami PLC, panelami HMI i innym sprzętem automatyki przemysłowej obsługującymi protokół MODBUS RTU.
	<br>
	<br>
      <b>Analiza kosztów rozszerzenia wejść/wyjść sterowników firmy UNITRONICS</b> (kwiecień 2010)<br>
	<p align=justify>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	Analiza została przeprowadzona na dzień 2010-04-27, ceny "end user".
	Ilości i rodzaje modułów ADAM podaję zakładając wymaganą ilość 100 wejść i 100 wyjść tranzystorowych w całym systemie.
	Dla sterowników JAZZ:
	<br>
	<br>
	<table cellpadding=2 cellspacing=0>
	<tr align=middle style="BACKGROUND-COLOR:#FFFF9F;COLOR:#000000;FONT-WEIGHT:bold;">
	<td width=150 class=vlrbt>Elementy</td>
	<td width=150 class=vrbt>Cena</td>
	<td width=300 class=vrbt>Komentarz</td>
	</tr>
	<tr><td class=vlrb>1 x JZ10-11-T40</td><td class=vrb>770,00 zł</td><td class=vrb>20 wyjść / 18 wejść</td></tr>
	<tr><td class=vlrb>1 x JZ-PRG</td><td class=vrb>211,00 zł</td><td class=vrb>port RS-232</td></tr>
	<tr><td class=vlrb>1 x WIRE-CHIP h3.1</td><td class=vrb>545,00 zł</td><td class=vrb>wielopunktowy pomiar temperatury (max 64 czujniki DS18B20)</td></tr>
	<tr><td class=vlrb>7 x ADAM-4056SO</td><td class=vrb>7 x 409 zł = 2863 zł</td><td class=vrb>7 x 12 wyjść = 84 wyjścia</td></tr>
	<tr><td class=vlrb>6 x ADAM-4051</td><td class=vrb>6 x 393 zł = 2358 zł</td><td class=vrb>6 x 16 wejść = 96 wejść</td></tr>
	<tr><td class=vlrb><b>RAZEM</b></td><td class=vrb><b>6747 zł netto</b></td><td class=vrb><b>104 wyjścia, 114 wejść, pomiar temperatury 64pkt</b></td></tr>
	</table>
	<br>
	Moduły rozszerzające mogą być znacznie oddalone (max 1200m) od sterownika PLC. Do rozproszonych skrzynek musi być doprowadzone zasilanie, jak również magistrala RS-485, a także sygnały bezpieczeństwa (STOP awaryjny). Do tego celu można użyć niedrogi przewód STP - skrętka ethernetowa.
	Podobne zestawienie, jednak z modułami dedykowanymi przez UNITRONICS zrealizujemy na bazie sterownika M90, gdyż JAZZ nie ma możliwości podłączenia rozszerzeń.
	Dla sterowników M90 (oprogramowanie narzędziowe jak dla JAZZ - U90Ladder):
	<br>
	<br>
	<table cellpadding=2 cellspacing=0>
	<tr align=middle style="BACKGROUND-COLOR:#FFFF9F;COLOR:#000000;FONT-WEIGHT:bold;">
	<td width=150 class=vlrbt>Elementy</td>
	<td width=150 class=vrbt>Cena</td>
	<td width=300 class=vrbt>Komentarz</td>
	</tr>
	<tr><td class=vlrb>1 x M90-T</td><td class=vrb>1 013,00 zł</td><td class=vrb>6 wyjść / 8 wejść</td></tr>
	<tr><td class=vlrb>1 x EX-D16A3-TO16</td><td class=vrb>1 401,00 zł</td><td class=vrb>Adapter rozszerzający + 16 wyjść / 16 wejść</td></tr>
	<tr><td class=vlrb>5 x IO-D16A3-TO16</td><td class=vrb>5 x 1175 zł = 5875 zł</td><td class=vrb>5 x (16 wyjść i 16 wejść)</td></tr>
	<tr><td class=vlrb><b>RAZEM</b></td><td class=vrb><b>8289 zł netto</b></td><td class=vrb><b>102 wyjścia, 104 wejścia</b></td></tr>
	</table>
	<br>
	Powyższe zestawienie nie pozwala oddalić modułów rozszerzających na odległość większą niż kilka metrów od sterownika. Jeśli trzeba zbierać informacje z czujników bardziej oddalonych lub sterować elementami wykonawczymi oddalonymi od sterownika, wówczas trzeba użyć kosztownych, wielożyłowych przewodów sterowniczych.
	Używając magistrali CAN i sterowników Vision również można wykonać rozproszone rozszerzenie wejść/wyjść:
	<br>
	<br>
	<table cellpadding=2 cellspacing=0>
	<tr align=middle style="BACKGROUND-COLOR:#FFFF9F;COLOR:#000000;FONT-WEIGHT:bold;">
	<td width=150 class=vlrbt>Elementy</td>
	<td width=150 class=vrbt>Cena</td>
	<td width=300 class=vrbt>Komentarz</td>
	</tr>
	<tr><td class=vlrb>1 x V130-33-T2</td><td class=vrb>1 701,00 zł</td><td class=vrb>12 wyjść / 12 wejść</td></tr>
	<tr><td class=vlrb>1 x V100-17-CAN</td><td class=vrb>429,00 zł</td><td class=vrb>port CAN</td></tr>
	<tr><td class=vlrb>2 x EX-RC1</td><td class=vrb>2 x 1 013,00 zł = 2026 zł</td><td class=vrb>adapter rozszerzający CAN</td></tr>
	<tr><td class=vlrb>6 x IO-D16A3-TO16</td><td class=vrb>6 x 1175 zł = 7050 zł</td><td class=vrb>6 x (16 wyjść i 16 wejść)</td></tr>
	<tr><td class=vlrb><b>RAZEM</b></td><td class=vrb><b>11206 zł netto</b></td><td class=vrb><b>108 wyjść, 108 wejść</b></td></tr>
	</table>
	<br>
	Układ rozproszony w 3-miejscach (3 miejsca podłączenia wejść/wyjść). Każde dodatkowe miejsce rozproszenia generuje dodatkowy koszt "adaptera rozszerzającego CAN - EX-RC1" - 1013 zł. Przy obecnej ilości 6 modułów rozszerzających, maksymalnie układ można rozproszyć do 7 punktów (6 modułów + sterownik).
	Koszt rozszerzenia wejść/wyjść używając modułu WIRE-CHIP h3.1 dla sterowników VISION:
	<br>
	<br>
	<table cellpadding=2 cellspacing=0>
	<tr align=middle style="BACKGROUND-COLOR:#FFFF9F;COLOR:#000000;FONT-WEIGHT:bold;">
	<td width=150 class=vlrbt>Elementy</td>
	<td width=150 class=vrbt>Cena</td>
	<td width=300 class=vrbt>Komentarz</td>
	</tr>
	<tr><td class=vlrb>1 x V130-33-T2</td><td class=vrb>1 701,00 zł</td><td class=vrb>12 wyjść / 12 wejść</td></tr>
	<tr><td class=vlrb>1 x WIRE-CHIP h3.1</td><td class=vrb>545,00 zł</td><td class=vrb>wielopunktowy pomiar temperatury (max 64 czujniki DS18B20)</td></tr>
	<tr><td class=vlrb>8 x ADAM-4056SO</td><td class=vrb>8 x 409 zł = 3272 zł</td><td class=vrb>8 x 12 wyjść = 96 wyjść</td></tr>
	<tr><td class=vlrb>6 x ADAM-4051</td><td class=vrb>6 x 393 zł = 2358 zł</td><td class=vrb>6 x 16 wejść = 96 wejść</td></tr>
	<tr><td class=vlrb><b>RAZEM</b></td><td class=vrb><b>7876 zł netto</b></td><td class=vrb><b>108 wyjść, 108 wejść, pomiar temperatury 64pkt</b></td></tr>
	</table>
	<br>
	Rozproszenie 6 punktów, jeśli wejścia nie mogą być oddzielnie od wyjść. Aby bardziej rozproszyć wejścia / wyjścia można użyć moduł 12 x ADAM-4055, jednak  odbywa się to kosztem wolniejszej pracy systemu (większa ilość transakcji MODBUS RTU).
	<br>
	<br>
      <b>Ograniczenia</b><br>
	<p align=justify>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	Protokół MODBUS RTU i urządzenia na nim bazujące komunikują się dosyć powoli. W ciągu jednej sekundy możliwa jest wymiana kilku (max ~10) transakcji (jeśli wszystkie urządzenia działają poprawnie). Jeśli zatem w systemie jest 10 urządzeń i czas odpowiedzi każdego z nich jest szybki, to w ciągu jednej sekundy urządzenie MASTER (w tym przypadku WIRE-CHIP) dokona transakcji (wymiany informacji) z każdym z nich. Jeśli natomiast z 10 zainstalowanych urządzeń tylko 3 działają poprawnie (sterownik PLC, moduł ADAM i WIRE-CHIP), czas przekazania informacji może wynieść do ~2,5s.
	Z tego powodu, do takich elementów jak przyciski, enkodery, fotokomórki, nie można stosować modułów bezpośrednich wejść cyfrowych, ale trzeba zastosować moduły licznikowe (wychwycenie każdego impulsu).
	Z tego samego powodu omawiany system nie może zostać zastosowany w miejscach, gdzie wyjścia cyfrowe muszą reagować natychmiast (w czasie mniejszym niż 1 sekunda).
	<br>
	<br>
	<br>
	<b>Tomasz Kozłowski @ IV 2010</b><br>
	<b>SolidChip</b><br>
	ul. Olszowa 4, Niedziałka Druga<br>
	05-306 Jakubów / obok Mińska Mazowieckiego<br>
	<a target=_blank href=http://www.solidchip.eu>http://www.solidchip.eu</a><br>
	<a href=mailto:biuro@solidchip.eu>biuro@solidchip.eu</a><br>
	tel./ faks 025-759-28-80<br>
	GSM 693-367-323<br>
	<br>
	<a target=_blank href=http://www.solidchip.eu>
	<img src="artykuly/wire-chip/solidchip.jpg" width=100 height=63 border=0>
	</a>
	<br>
	<br>
	Więcej informacji:<br>
	<br>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- <b><a href="http://www.elmark.com.pl/products/advantech/typ.php?typ=42">Moduły serii ADAM-4000</a></b><br>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- <b><a href="http://www.elmark.com.pl/index.php?id=21">Sterowniki UNITRONICS</a></b><br>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- <b><a href="http://www.solidchip.eu/index.php?menu=24">WIRE-CHIP h3.1</a></b><br>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- <b><a target=_blank href="artykuly/wire-chip/realizacja_rozszerzenia_ilosci_wejsc_wyjsc_sterownika_jazz_wire_chip.pdf">Pobierz cały niniejszy artykuł w formacie pdf</a></b>
	<br>
    	</td>
 	</tr>
</table><br><div align=left class="myframe" style="WIDTH:738px;FONT-SIZE:11px;BACKGROUND-COLOR:#EBF3F8;COLOR:#000080;">
<span class="ctop"><span></span></span>
<b>Jeśli masz jakieś uwagi - możesz dodać swój komentarz do tej strony.</b><br>
<font color=#9EC5DE>Możesz go dopisać anonimowo - ale oczywiście lepiej by było, gdyby czytający wiedzieli kto jest jego autorem.
W przypadku wykrycia treści niedozwolonych lub nic konkretnego do tematu nie wnoszących, wpis może być w późniejszym czasie usunięty (ocenzurowany) przez administratora.</font><br>
<br><table cellpadding=2 cellspacing=0 border=0><form name=fn1 method=post>
<input type=hidden name=fv0 value="103">
<input type=hidden name=fv5 value="6045487e271d4e5843e98240577ef980">
<tr valign=middle><td class=v width=90><b>Autor:</b></td><td>&nbsp;&nbsp;&nbsp;<input maxlength=30 class=vlrbt type=text name=fv1 value="" style="width:200px;BACKGROUND-COLOR:#FFFFFF;"></td><td rowspan=2>&nbsp;</td><td rowspan=2><img src=img/sesssecimg.php width=140 height=35 style="BORDER-WIDTH:1px;BORDER-STYLE:dotted;BORDER-COLOR:#C0C0C0;"></td></tr>
<tr valign=middle><td class=v><b>Firma:</b></td><td>&nbsp;&nbsp;&nbsp;<input maxlength=30 class=vlrbt type=text name=fv2 value="" style="width:200px;BACKGROUND-COLOR:#FFFFFF;"></td></tr>
<tr valign=middle><td class=v><b>Twój e-mail:</b></td><td>&nbsp;&nbsp;&nbsp;<input maxlength=30 class=vlrbt type=text name=fv3 value="" style="width:200px;BACKGROUND-COLOR:#FFFFFF;"></td><td class=v width=90><b>Kod z obrazka</b>:</td><td><input maxlength=8 class=vlrbt type=text name=fv6 style="width:100px;BACKGROUND-COLOR:#FFFFFF;"></td></tr>
<tr valign=top><td class=v><b>Komentarz:</b></td><td colspan=3>&nbsp;&nbsp;&nbsp;<textarea maxlength=30 class=vlrbt name=fv4 style="width:620px;height:100px;BACKGROUND-COLOR:#FFFFFF;"></textarea></td></tr>
<tr valign=top><td class=v colspan=4><input class=vlrbt type=button onClick="javascript:WriteComment()"value=Wyślij style="WIDTH:70px;"></td></tr>
</form>
</table><span class="cbot"><span></span></span>
</div><table cellpadding=0 cellspacing=0><tr><td><img src=img/blank.gif width=10 height=3 border=0></tr></td></table>
<script language="JavaScript" type="text/javascript">
<!--
function WriteComment()
{
if (document.fn1.fv6.value.length!=8) {alert('Przepisz kod zabezpieczający - w postaci ośmiocyfrowej liczby - z umieszczonego w formularzu obrazka.');return;};
if (isNaN(document.fn1.fv6.value)) {alert('Kod zabezpieczający jest ośmiocyfrową liczbą - więc może się składać tylko z cyfr.');return;};
if (document.fn1.fv6.value<0) {alert('Kod zabezpieczający jest ośmiocyfrową liczbą większą od 0.');return;};
if (document.fn1.fv4.value.length<15) {alert('Jakiś komentarz wpisać musisz - przyjmijmy, że będzie to minimum 15 znaków.');return;};
if (document.fn1.fv4.value.length>1024) {alert('Długość komentarza nie może przekaczać 1024 znaków!');return;};
document.fn1.submit();
}
// -->
</script>
</td>
</tr></table><br><br>
</body>
</html>

