Analogeingangsklemme über ADS

Diesla

Level-1
Beiträge
64
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe folgendes Problem. Ich habe einige Digitalein- und ausgangsklemmen an einem EK1100 hängen. Auf diese Digitalein- und ausgänge kann ich auch unter VisualStudio mittles ADS lesend bzw. schreibend zugreifen. Dies funktioniert allerdings nur dann wenn ich in PLC Control in der Variablenkonfiguration das erste Byte verwende, also z.B.
Digitaleingang0 AT %IX0.0; Wenn ich nun allerdings ein anderes Byte verwende, z.B. Digitaleingang0 AT %IX20.0 und gleichzeitig in VisualStudio bei der Funktion ADSSyncReadReq die Parameter entsprechen ändere funktioniert das nicht mehr. Ähnlich ist das Problem auch bei Analogein- und Ausgangsklemmen. Hier kann ich die Klemmen allerdings unter keiner Adresse erreichen. Meine Frage ist nun: Wie (also nach welcher Logik, bzw. in welcher Reihenfolge) werden die Adressen der Klemmen festgelegt, damit man sie über ADS erreichen kann. Denn offensichtlich richtet sich das Ganze nicht nach der Variablenkonfiguration unter PLC.
Vielen Dank schon mal im Vorraus.
 
Schon mit einem Byteoffset probiert?

Hallo,

das Variablenhandling, also Daten hin und her schieben hat ja schonmal funktioniert.
Ich hoffe ich kann dir weiterhelfen. Ich habe mir damals innerhalb von 2 Wochen das alles für ne kleinere Sache aneignen müssen. Dabei blieb es bis jetzt.

Die Adressen der Klemmen kannst du im System Manager nachschauen.

Den richtigen Operandenbereich herausfinden. Dazu im Beckhoff Information System folgendes eingeben: "Index-Group/Offset" Spezifikation für TwinCAT ADS-Systemdienste"

Parameter
&4020& - Operandenbereich Merkerbyte
&4021& - Operandenbereich Merkerbit
&F020& - " Eingänge %I


Bei der Adressierung eines Byte musst du ein Byteoffset, für ein Bit ein Byte- und Bitoffset benutzen.

Das sieht z.B. bei dem Einlesen eines Eingangsbytes 20 bei VB.NET so aus:

Code:
Dim Variable As SHORT
Variable=tcclient.ReadAny(&F020&, 20,GetType(SHORT))


Ich hoffe ich kann dir damit eine Hilfestellung geben.

Gruß und gute Nacht
skks
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Greifst du in Visual Studio über die Adressen auf die Variablen zu oder über deren Namen (mittels Handle)? Beckhoff empfiehlt letzteres, damit man eben nicht bei Änderung der Adressen den Zugriff von aussen auch nochmal ändern muss.

Hast du nach der Änderung der Deklaration die Zuordnung im Systemmanager neu erstellt und auf die SPS geladen? Sprich werden dir im PLC Programm online die richtigen Werte angezeigt?
 
@Skks

Hallo Skks, danke für deine schnelle Antwort.
Ja, ich habe es sowohl mit Byteoffset F020 als auch mit Bit- und Byteoffset F021 probiert. Bei den Analogeingängen funktioniert beides nicht. Allerdings verstehe ich nicht, wo ich die Adressen der Klemmen im System-Manager nachschauen soll. Ich kann zwar unter dem jeweiligen Eingangskanal auf dem Register "Variable" ein Feld mit Adresse sehen, die aber bei mir z.B. mit 84.0 anfängt. Die funktioniert aber leider nicht. Oder schaue ich an der falschen Stelle?


@MasterOhh

Hallo MasterOhh, danke für deine schnelle Antwort.
Nein, ich habe für die Variablen keine Handles. Ich greife also über die Adresse zu. Die Zuordnung habe ich neu geldaden. Denn ich konnte, wie du ja sagst, die Analogwerte in PLC beobachten.
 
@Skks

Hallo Skks, danke für deine schnelle Antwort.
Ja, ich habe es sowohl mit Byteoffset F020 als auch mit Bit- und Byteoffset F021 probiert. ...

Wenn du ein Byte adressieren willst, brauchst du nur die Byteadresse. Die ist in dem Fall nicht F021 (=> frisst der Compiler das?) sondern einfach "20" für Byte 20 der Eingänge. Für die Adressierung des Byte 22 gibst du dann "22" ein.

Wie jetzt eine Bitadresse adressiert wird, kann ich nicht genau sagen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Indexoffset falsch umgerechnet

Hallo,

ich kann Entwarnung geben. Der Fehler war, dass ich mich bei der Umrechnung des Indexoffset von dezimal in hexadezimal verrechnet hatte.
Jetzt funktioniert alles.

Danke für Eure Hilfe.
 
Zurück
Oben