:html
<<
128.165
Digitale Eingabe DIn-Objekt|DIn
--
Das IP-Objekt <!RW>DIn realisiert die digitale Eingabe ber die Eingabe-Karte des Universellen Messystems.

Die Eingabekarte besteht aus 5 Funktionsblcken, die einzeln angesprochen werden knnen:

<h5>1. Eingangsmultiplexer</h5>
Schaltet einen der 32 Eingangskanle (1-aus-32) auf die weitere  Elektronik durch. Besteht aus zwei 1-aus-16 Multuiplexern, mit deren Hilfe auch ein differentieller Eingang (1-aus-16) realisiert werden kann. In der Interpretersoftware ist der differentielle Betrieb jedoch noch nicht realisiert. Der Eingangsmultiplexer kann auch komplett abgeschaltet werden.

<h5>2. PGA (=Programmable Gain Amplifier)</h5>
Ein Verstrker mit programmierbarer Verstrkung. Diese Baugruppe kann optional bestckt werden. Ist die nicht bestckt, so betrgt die Verstrkung 1 (keine Verstrkung des Signals). Wird der PGA bestckt, so stehen 2 Typen mit unterschiedlicher Abstufung der Verstrkung zur Auswahl (1/2/4/8 und 1/10/100/1000).
Das Ausgangssignal des PGA wird nach auen gefhrt und kann z.B. auf einen A/D-Wandler gelegt werden. Auf diese Weise kann der Eingangsteil der DIn32-Karte als Frontend einer A/D-Wandlerkarte benutzt werden (erweitert einen A/D-Kanal auf 32 Kanle mit einstellbarer Verstrkung)

<h5>3. Testsignal</h5>
Zu Prfzwecken kann das Ausgangssignal des Multiplexers abgeschaltet und durch eine feste Spannung (2,5V) ersetzt werden. Die weitere Elektronik 'sieht' dann unabhngig von Multiplexerkanal / Eingangssignal / PGA-Einstellung immer diese 2,5V.

<h5>4. Schwellwertgenerator</h5>
Mit Hilfe des Schwellwertgenerators kann der Pegel eingestellt werden, ab dem die Karte eine logische '1' erkennt. Spannungen unterhalb des Schwellwertes werden als '0', Spannungen oberhalb als logische '1' erkannt. Die Schwelle ist im Bereich -10V bis +10V einstellbar. Die Schwellwertspannung ist nach auen gefhrt.

<h5>5. Rcklesekanal</h5>
Da die Anzahl an Rckgabeleitungen im MCD-Bus beschrnkt ist, mssen sich unter Umstnden mehrere Eingabekarten einen Rcklesekanal teilen. Die Karten besitzen hierzu einen Schalter, der ihren Ausgang abschaltet. Normalerweise verwaltet die Software die Zuteilung des Rcklesekanals automatisch.
>>
<<
128.165.1
Funktionen des DIn-Objekts|Funktionen
--
>>
<<
128.165.1.1
DIn.Read|Read
--
<!DEF>
function <!TW>DIn.Read (aDInChannelAddress : address) : real;
<!TXT>
Der in der Adresse festgelegte Eingangskanal wird aktiviert und der Wert wird eingelesen und zurckgegeben.

<!DEF>
function <!TW>DIn.Read (aDInCardAddress : address; rChannel : real): real;
<!TXT>
Wie oben, nur wird Kanal durch Angabe der Kartenadresse und der Kanalnummer festgelegt.

<!DEF>
function <!TW>DIn.Read (aDInCardAddress : address) : real;
<!TXT>
Wie oben, jedoch wird der zuvor gewhlte Kanal auf der Eingabekarte benutzt.
>>
<<
128.165.1.2
DIn.Scan|Scan
--
<!DEF>
function <!TW>DIn.Scan (aDInChannelAddressFrom, aDInChannelAddressTo : address) : real;
<!TXT>
Liest alle Kanle von aDInChannelAddressFrom bis aDInChannelAddressTo (einschlielich) nacheinander in einen Bitwert ein. 

Das niederwertigste Bit im Ergebnis (Wertigkeit 1) entspricht dem Zustand des <!PW>aDInChannelAddressFrom. 

Die Anzahl signifikanter Bits im Ergebnis entspricht der Anzahl der eingelesenen Kanle. Hhere Bits sind 0. 

 <!PW>aDInChannelAddressFrom muss kleiner oder gleich <!PW>aDInChannelAddressTo sein. 

<!DEF>
function <!TW>DIn.Schan (aDInCardAddress : address; rChannelFrom, rChannelTo : real) : real;
<!TXT>
Wie oben, nur werden die Kanle durch Angabe der Kartenadresse und der beiden Kanalnummern festgelegt.
>>
<<
128.165.1.3
DIn.MeasLowTime|MeasLowTime
--
<!DEF>
function <!TW>DIn.MeasLowTime (aDInChannelAddress : address; rTimeout : real) : real;
<!TXT>
<!DEF>
function <!TW>DIn.MeasLowTime (aDInCardAddress : address; rTimeout : real) : real;
<!TXT>
Bestimmt die Lnge einer LOW-Phase des Eingangssignals.

Wird eine Kanaladresse angegeben, so wird der Kanal aktiviert. Wird eine Kartenadresse angegeben, so wird der bereits eingestellte Kanal benutzt.

Zuerst wird auf einen HIGH/LOW-bergang gewartet, dann wird die Zeitmessung gestartet, auf den LOW/HIGH-bergang gewartet und die Zeitmessung gestoppt. Die ermittelte Zeit wird in Millisekunden zurckgeliefert.

Werden die erwarteten HIGH/LOW- bzw. LOW/HIGH-bergnge nicht gefunden (z.B. weil kein Eingangssignal vorliegt), so wird nach <!PW>rTimeout Millisekunden abgebrochen und -1 als Ergebnis geliefert.
>>
<<
128.165.1.4
DIn.MeasHighTime|MeasHighTime
--
<!DEF>
function <!TW>DIn.MeasHighTime (aDInChannelAddress : address; rTimeout : real) : real;
<!TXT>
<!DEF>
function <!TW>DIn.MeasHighTime (aDInCardAddress : address; rTimeout : real) : real;
<!TXT>
Bestimmt die Lnge einer HIGH-Phase des Eingangssignals.

Wird eine Kanaladresse angegeben, so wird der Kanal aktiviert. Wird eine Kartenadresse angegeben, so wird der bereits eingestellte Kanal benutzt.

Zuerst wird auf einen LOW/HIGH-bergang gewartet, dann wird die Zeitmessung gestartet, auf den HIGH/LOW-bergang gewartet und die Zeitmessung gestoppt. Die ermittelte Zeit wird in Millisekunden zurckgeliefert.

Werden die erwarteten LOW/HIGH- bzw. HIGH/LOW-bergnge nicht gefunden (z.B. weil kein Eingangssignal vorliegt), so wird nach <!PW>rTimeout Millisekunden abgebrochen und -1 als Ergebnis geliefert.
>>
<<
128.165.1.5
DIn.MeasLowHighTime|MeasLowHighTime
--
<!DEF>
function <!TW>DIn.MeasLowHighTime (aDInChannelAddress : address; rTimeout : real) : real;
<!TXT>
<!DEF>
function <!TW>DIn.MeasLowHighTime (aDInCardAddress : address; rTimeout : real) : real;
<!TXT>
Bestimmt die Lnge einer Periode (LOW- und HIGH-Phase) des Eingangssignals.

Wird eine Kanaladresse angegeben, so wird der Kanal aktiviert. Wird eine Kartenadresse angegeben, so wird der bereits eingestellte Kanal benutzt.

Zuerst wird auf einen HIGH/LOW-bergang gewartet, dann wird die Zeitmessung gestartet, auf den LOW/HIGH-bergang gewartet, auf den nchsten HIGH/LOW-bergang gewartet und die Zeitmessung gestoppt. Die ermittelte Zeit wird in Millisekunden zurckgeliefert.

Werden die erwarteten LOW/HIGH- bzw. HIGH/LOW-bergnge nicht gefunden (z.B. weil kein Eingangssignal vorliegt), so wird nach <!PW>rTimeout Millisekunden abgebrochen und -1 als Ergebnis geliefert.
>>

<<
128.165.2
Prozeduren des DIn-Objekts|Prozeduren
--
>>
<<
128.165.2.1
DIn.Init|Init
!128.165.2.2 - SetChannel
!128.165.2.3 - SetPGA
!128.165.2.4 - SetThreshold
--
<!DEF>
procedure <!TW>DIn.Init (aDInChannelAddress : address; rThreshold, rPGA : real);
<!TXT>
<!DEF>
procedure <!TW>DIn.Init (aDInCardAddress : address; rThreshold, rPGA : real [; rChannel : real]);
<!TXT>
Kombination der Befehle <a href="128.165.2.4"><!RW>SetThreshold</a>, <a href="128.165.2.3"><!RW>SetPGA</a> und <a href="128.165.2.2"><!RW>SetChannel</a>. Zur genaueren Beschreibung siehe dort. 

Bei Angabe einer Kartenadresse kann optional die Kanalnummer angegeben werden. Ist keine Kanalnummer angegeben, so wird der Kanal nicht umgeschaltet.
>>
<<
128.165.2.2
DIn.SetChannel|SetChannel
!128.165.2.1
--
<!DEF>
procedure <!TW>DIn.SetChannel (aDInChannelAddress : address);
<!TXT>
Stellt den Eingangsmultiplexer der Karte auf den gewnschten Kanal.

<!DEF>
DIn.SetChannel (aDInCardAddress : address; rChannel : real);
<!TXT>
Wie oben, nur wird Kanal durch Angabe der Kartenadresse und der Kanalnummer festgelegt.

Fr die Kanalnummer gilt: 0=Multiplexer aus, 1..32 = gewnschter Kanal.
>>
<<
128.165.2.3
DIn.SetPGA|SetPGA
!128.165.2.1
--
<!DEF>
procedure <!TW>DIn.SetPGA (aDInChannelAddress : address; rPGAStep : real);
<!TXT>
<!DEF>
procedure <!TW>DIn.SetPGA (aDInCardAddress : address; rPGAStep : real);
<!TXT>
Stellt den PGA auf die gewnschte Stufe. Die Karte wird entweder direkt ber die Kartenadresse oder ber die in der Kanaladresse implizit enthaltene Kartenadresse gewhlt.

 <!PW>rPGAStep ist ein Wert zwischen 1 und 4.

Zuordnung rPGAStep/PGATyp -> Verstrkung:
<!STBL>
<tr bgcolor=#f0f0f0 align=center><td rowspan=2 valign=bottom><b>PGA-Typ</b></td><td colspan=4><b>rPGAStep =</b><!>
<tr align=center><td width=25><b>1</b></td><td width=25><b>2</b></td><td width=25><b>3</b></td><td width=25><b>4</b><!>
<tr align=center><td><b>1 / 10 / 100 / 1000</b><!>1<!>10<!>100<!>1000<!>
<tr align=center><td><b>1 / 2 / 4 / 8</b><!>1<!>2<!>4<!>8<!>
<tr align=center><td><b>keiner</b><!>1<!>1<!>1<!>1<!>
<!ETBL>
>>
<<
128.165.2.4
DIn.SetThreshold|SetThreshold
!128.165.2.1
--
<!DEF>
procedure <!TW>DIn.SetThreshold (aDInChannelAddress : address; rThreshold : real);
<!TXT>
<!DEF>
procedure <!TW>DIn.SetThreshold (aDInCardAddress : address; rThreshold : real);
<!TXT>
Stellt den Schwellwertgenerator auf die gewnschte Spannung rThreshold (-10..+10). Die Karte wird entweder direkt ber die Kartenadresse oder ber die in der Kanaladresse implizit enthaltene Kartenadresse gewhlt.
>>
<<
128.165.2.5
DIn.SetTestMode|SetTestMode
--
<!DEF>
procedure <!TW>DIn.SetTestmode (aDInChannelAddress : address; rOn : real);
<!TXT>
<!DEF>
procedure <!TW>DIn.SetTestmode (aDInCardAddress : address; rOn : real);
<!TXT>
Schleift das Testsignal in den Signalweg ein, bzw schaltet das normale Messsignal durch.

<!STBL>
<!+>rOn<!+>Verhalten<!>
<!c>ON  bzw. 1<!>Testsignal ein<!>
<!c>OFF bzw. 0<!>normaler Betrieb<!>
<!ETBL>

Karte wird entweder direkt ber die Kartenadresse oder ber die in der Kanaladresse implizit enthaltene Kartenadresse gewhlt.
>>
<<
128.165.2.6
DIn.SetBackChannel|SetBackChannel
--
<!DEF>
procedure <!TW>DIn.SetBackChannel (aDInChannelAddress : address; rOn : real);
<!TXT>
<!DEF>
procedure <!TW>DIn.SetBackChannel (aDInCardAddress : address; rOn : real);
<!TXT>
Schaltet den Rcklesekanal der Karte ein bzw. aus.

<!STBL>
<!+>rOn<!+>Verhalten<!>
<!c>ON  bzw. 1<!>Rcklesekanal ein<!>
<!c>OFF bzw. 0<!>Rcklesekanal aus<!>
<!ETBL>

Befehle, die Daten von der Karte einlesen (READ und SCAN) schaltet den Rcklesekanal selbstndig ein.

Wird der Rcklesekanal eingeschaltet, wenn eine andere Karte bereits auf diesen Kanal geschaltet ist, so wird die andere Karte automatisch vom Kanal abgeschaltet. Dies setzt jedoch voraus, dass die Definition der Karten korrekt ist (UMSCards.DAT).

Karte wird entweder direkt ber die Kartenadresse oder ber die in der Kanaladresse implizit enthaltene Kartenadresse gewhlt.
>>
<<
128.165.2.7
DIn.SettlingTime|SettlingTime
--
<!DEF>
procedure <!TW>DIn.SettlingTime (aDInChannelAddress : address; rTime : real);
<!TXT>
<!DEF>
procedure <!TW>DIn.SettlingTime (aDInCardAddress : address; rTime : real);
<!TXT>
Setzt die Wartezeit, die nach einem Kanalwechsel vor dem Einlesen eines Wertes gewartet wird. rTime gibt die Zeit in Mikrosekunden an (Bereich 0..20000).

Die Zeit wirkt sich nur bei einem echten Wechsel des Kanals aus, nicht, wenn derselbe Kanal erneut gewhlt wird. Die Zeit beginnt automatisch mit der Auswahl des Kanals zu laufen, sie wird nicht vor jedem Zugriff gewartet. Defaultwert ist 100s.

Die Karte wird entweder direkt ber die Kartenadresse oder ber die in der Kanaladresse implizit enthaltene Kartenadresse gewhlt.
>>
<<
128.165.3
Umstellung von IP-Steps des alten Windows-Systems|Upgrade
--
Im folgenden werden fr die jweiligen 'alten' Befehle die neuen quivalente angegeben:

<!CODE>
UMS.DIGInInit -> DIn.Init
<!TXT>
Parameter Systeme wird nicht untersttzt.

<!CODE>
UMS.SetDataToPIO -> DIn.SetBackChannel
<!TXT>
Befehl kann normalerweise entfallen, da automatische Umschaltung

<!CODE>
UMS.DIGInBit -> DIn.Read
<!TXT>

<!CODE>
UMS.DIGInWord -> DIn.Scan
                 DIn.SetThreshold
                 DIn.SetPGA
<!TXT>
Schwelle und PGA knnen unabhngig mit den entsprechenden Befehlen gestellt werden. Parameter Systeme wird nicht untersttzt.

<!CODE>
UMS.DIGInTestImpuls -> nicht untersttzt
<!TXT>

<!CODE>
UMS.MeasLowTime     -> DIn.MeasLowTime
UMS.MeasHighTime    -> DIn.MeasHighTime
UMS.MeasLowHighTime -> DIn.MeasLowHighTime
<!TXT>
Die Timeoutzeiten wurden zusammengefasst und es wird jeweils nur ein Wert ermittelt (da nur ein System).

>>
