# ACCON-AGLink + VB6 -> Zugriff auf Bits?



## MSP (14 September 2005)

Hallo,

ich habe Heute mit einer Visualisierung mit VB6 und ACCON-AGLink 3.6 begonnen.

Ich verbinde mich im Moment erfolgreich mit dem OPC-Server und kann auch die SPS Stoppen und wieder Starten sowie Ausgangsbytes setzen!

Wenn ich jetzt jedoch einzelne Bits abfragen möchte, so habe ich damit keinen Erfolg.

Ich lese als erstes das ganze Byte ein, lade es in einen Buffer und greife dann mit dem Bitbefehl auf den Buffer zu.

Nur das geht nicht, wenn ich den Wert anzeigen lasse steht dort eine 4 und mit jedem Klick auf die Anzeige erhöht sich dieser  :?: 

Ich bin im Moment soweit das ich als erstes das ganze Byte einlesen muss um dann auf die Bits zuzugreifen, da man ja keinen direkten Bitzugriff machen kann, da der Befehl ja nicht zwischen Eingang und Ausgang unterscheiden kann.

Nur wie genau geht das?

Mein Beispiel lautet wie folgt das nicht funktionieren will:


```
Dim DevNr as Long
Dim PLCNr as Long
Dim Start as Long
Dim Num as Long
Dim Buff as Byte
Dim boWait as Long
Dim BitNr as Long

DevNr = 0
PLCNr = 1
Start = 64
Num = 1
Buff = 0
boWait = 1
BitNr = 0

txtStatus.text = AGLReadInBytes( DevNr, PLCNr, Start, Num, Buff, boWait)
```

Hierbei erwarte ich nun das das gesammte Eingangsbyte 64 eingelesen wird in das Byte Buff.
Mit dem nächsten Befehl möchte ich nun als das 0. Bit des Eingangsbytes 64 auslesen...

Nun greife ich mittels AGLGetBit(Buff, BitNr) auf das Bit zu und es passiert oben beschriebenes, es erscheint in der Textanzeige der Wert 4 der mit jedem Klick erhöht wird  :? 

Ich benötige den Bitzugriff, da ich in meinem Programm jede Sekunde den Status anzeigen lassen möchte der E/A's...

Gruss,
Michael


----------



## Gerhard Bäurle (15 September 2005)

Guten Morgen,

was liefert die Funktion AGLGetBit zurück? In der Textbox 
wird nur der Rückgabewert von AGLReadInBytes angezeigt, 
aber nicht der Wert des Bits. Eine Alternative zu der 
beschriebenen Vorgehensweise ist der Zugriff mittels 
AGLReadMix. Dort können dann direkt Bits gelesen bzw. 
mit AGLWriteMix auch geschrieben werden.

Anmerkung 1: Die Funktionen AGLReadInBytes, 
AGLReadOutBytes, AGLWriteInBytes und AGLWriteOutBytes 
greifen auf das Prozessabbild der Ein- und Ausgänge zu 
und nicht direkt auf die Peripherie. Deshalb kann in diesen 
Bereichen ein Bitzugriff erfolgen (U E 1.0 tut ja dies auch). 
Im Falle von Peripheriezugriff kann tatsächluch nur byte-, 
wort- oder doppelwortweise zugegriffen werden.

Anmerkung 2: Wenn der Ergebniswert eine Zahl größer 
oder gleich 0 ist, bedeutet dies im asynchronen Fall die 
Jobnummer. Im synchronen Fall darf nur AGL_SUCCESS (= 0) 
oder ein Fehler (= negativer Wert) zurückkommen. Da
sich der Wert immer erhöht, scheint noch etwas anderes 
nicht zu stimmen. Bitte mailen Sie uns das komplette Programm 
an support@deltalogic.de. Wir werfen dan ein Blick darauf.

Frage am Rande: Mit AGLink können Sie ja direkt auf die 
S7-Steuerungen zugreifen. Was machen Sie mit dem 
OPC-Server?

Viele Grüße

Gerhard Bäurle


----------



## MSP (15 September 2005)

Guten Tag Herr Bäurle,

vielen Dank erst einmal für Ihre Ausführliche Erklärung zu diesem Thema. Ich werde versuchen dies umzusetzen und wenn es dann nicht klappt mich mit Ihnen in Verbindung setzen 

Unsere Anlage bestelt im Kern aus einem Hochregallagermodell, wo die gesamten E/A's über ASi-Module gelesen/geschrieben werden.
Der ASi-Bus wird über eine CP 343-2P an einer CPU 314C-2DP betrieben.
Zusätzlich haben wir eine CP 343-1V3IT erhalten, über welche wir die Visualisierung erstellen wollen.

Nachdem wir uns die verschiedenen Möglichkeiten zum Zugriff auf einen OPC-Server angeschaut haben und auch die Verschiedenen Arten einer Client-Erstellung ( LapView, ProTool, C/C++, VB etc ), haben wir uns für einen Client in VB6 entschieden.

Dieser soll über einen OPC-Server auf die Daten der Steuerung zugreifen können.
Das AGLink direkt auf die Steuerung zugreift ist von Vorteil, allerdings sieht unsere Aufgabenstellung des Projektes einen OPC-Server vor, um mit verschiedensten Client-Systemen auf die Steuerung zuzugreifen   

Mit freundlichen Grüßen,
Michael Sporken


----------

