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.

Podobne dokumenty