Instalacja sterownika
Transkrypt
Instalacja sterownika
Instrukcja użytkownika programu MiniSerwerLPT Autor: Krzysztof Stadnik Polkowice 2008 Instalacja sterownika Program MiniSerwerLPT zastał napisany z wykorzystaniem bibliotek napisanych przez Zloba Alexandera ([email protected] - http://www.specosoft.com), umożliwiających dostęp do portu równoległego w systemach Windows NT, 2000 oraz XP. Przed uruchomieniem programu MiniSerwerLPT, konieczne jest skopiowanie pliku zlportio.sys do katalogu C:\ Windows\ System32\ Drivers\ . Umożliwi to poprawną pracę programu. Program MiniSerwerLPT Program MiniSerwerLPT służy do przepisywania danych z biblioteki InOut.dll do portu LPT i odwrotnie. Program cyklicznie odczytuje stan portów wejściowych i zapisuje w tablicy wejść oraz przepisuje do portu dane z tablicy wyjść. Należy pamiętać, że port LPT przy uruchomieniu systemu, ale jeszcze przed uruchomieniem naszej aplikacji, może zmieniać stany wyjść portu. Powodem tego są procedury plug and play, które sprawdzają czy do portu nie jest podłączone jakieś nowe urządzenie. Dlatego też należy ustawić w biosie port w tryb standard(SPP). Standardowo program ustawiony jest na obsługę portu LPT1 o adresie $378, zmianę portu na LPT2 o adresie $278 możemy dokonać w pliku port.ini wpisując zamiast LPT=1 LPT=2. Rys.1. MiniSerwerLPT przed pierwszym startem Gdy uruchomimy program na ekranie, będziemy mieli widok jak na rys.1. Przed włączeniem serwera możemy ustawić „czas trwania cyklu” dane odczytu i zapisu tablicy danych (co jaki czas odczytujemy i zapisujemy portu LPT). W oknie edycji podajemy czas w milisekundach. Teoretycznie możemy podać minimalnie 1ms jednak w rzeczywistości, minimalny czas cyklu wynosi ok. 30ms w zależności od obciążenia systemu. Po uruchomieniu serwera przy poprawnie działającym sterowniku portu LPT (zlportio.sys) na ekranie powinien wyglądać jak na rys.2. W tym momencie program serwer co określony czas odczytuje dane z tablicy wyjść i zapisuje dane do tablicy wejść. Obróbką danych otrzymanych z MiniSerweraLPT zajmuje się odrębny program korzystający z danych i funkcji zawartych w bibliotece InOut.dll(np. OP_LPT.exe). Rys.2. MiniSerwerLPT przed po uruchomieniu Biblioteka InOut.dll Biblioteka InOut.dll zawiera tablice danych wejściowych (In), wyjściowych (Out) oraz instrukcje umożliwiające ich wykorzystanie. Funkcje i procedury umożliwiające dostęp do tablic z danymi oraz operacje na bitach: function GetInByte(adres: byte): byte - odczytanie tablicy wejść; function GetOutByte(adres: byte): byte - odczytanie bajtu z tablicy wyjść; function GetSerwerOn: boolean – sprawdzenie bitu informującego o załączeniu serwera; function SetBit(dane,bit:byte): byte; stdcall; - ustawienie pojedynczego bitu na wyjściu; function ResBit(dane,bit:byte): byte; stdcall; - wyzerowanie określonego bitu; function TestBit(dane,bit:byte): boolean; stdcall; - sprawdzenie stanu bitu "0" lub "1"; procedure SetInByte(adres,dana : byte) - wpisanie bajtu do tablicy wejść; procedure SetOutByte(adres,dana : byte) - wpisanie bajtu do tablicy wyjść; procedure STimer(CzasTrwania:real); stdcall; - zatrzymanie programu na określony czas; W celu wykorzystania funkcji i procedur w Delphi, można wykorzystać moduły przedstawione poniżej. unit Tab_IN_OUT; interface procedure SetInByte(adres,dana: byte); stdcall; procedure SetOutByte(adres,dana: byte); stdcall; function GetInByte(adres: byte): byte; stdcall; function GetOutByte(adres: byte): byte; stdcall; function GetSerwerOn: boolean; stdcall; implementation procedure SetInByte(adres,dana: byte); stdcall; external 'InOut.dll'; procedure SetOutByte(adres,dana: byte); stdcall; external 'inout.dll'; function GetInByte(adres: byte):byte; stdcall; external 'inout.dll'; function GetOutByte(adres: byte): byte; stdcall; external 'inout.dll'; function GetSerwerOn: boolean; stdcall; external 'inout.dll'; end. unit Instrukcje; interface function SetBit(dane,bit:byte): byte; stdcall; function ResBit(dane,bit:byte): byte; stdcall; function TestBit(dane,bit:byte): boolean; stdcall; procedure STimer(CzasTrwania:real); stdcall; implementation function Setbit(dane,bit:byte): byte; stdcall; external 'inout.dll'; function Resbit(dane,bit:byte): byte; stdcall; external 'inout.dll'; function TestBit(dane,bit:byte): boolean; stdcall; external 'inout.dll'; procedure STimer(CzasTrwania:real); stdcall; external 'inout.dll'; end. Program OP LPT Program OP LPT jest przykładowym programem wykorzystującym bibliotekę InOut.dll oraz program MiniSerwerLPT. Za pomocą tego programu możemy odczytać stan wejść portu LPT jak również ustawić stan wyjść. Uwaga przy odłączonych wejściach program odczytuje wartość 15 (1111), związane jest to z fizyczną budową portu drukarki. Rys.3. Widok programu OP LPT. Układ zabezpieczający port LPT Schemat prostego układu zabezpieczającego wejścia i wyjścia portu równoległego przedstawia rys.4. W układzie tym wykorzystano optoizolację za pomocą transoptorów (U1...U12). Takie rozwiązanie umożliwia zmianę napięcia wyjściowego(VDC) na dowolne zależne tylko od parametrów transoptora. Tak samo do wejścia możemy podłączyć napięcia od 0 do wartości zależnej od rezystora wejściowego (R9, R10, R11, R12) i maksymalnego prądy fotodiody zastosowanej w transoptorze. Rys.4. Schemat przykładowego rozwiązania zabezpieczenia portu LPT Literatura [1] Legierski T., Kasprzyk J., Wyrwał J., Hajda J., Programowanie sterowników PLC, Wydawnictwo pracowni komputerowej Jacka Skalmierskiego, Gliwice, 1998. [2] Norma IEC 1131, Programmable Controllers. [3] Mzurek W. Programy sterownicze w Delphi, www.automatykaonline.pl , 2005, [4] Markowski A., Układy analogowe w systemach mikroprocesorowych, WNT, Warszawa, 1992. [5] Metzger P., Anatomia PC, Wydanie VII, Helion, Gliwice, 2002. [6] www.senet.com.au/~cpeacock, Interfacing the Standard Parallel Port, 2004. [7] Axelson J., Programming, Interfacing, and Using the PC's Parallel Printer Port, Lakeview Research, 1996. [8] Link W., Jak mierzyć sterować i regulować za pomocą Basicu?, WNT, Warszawa, 1991.