# Einstiegsprobleme mit Beckhoff (PC-basiert)



## Beta6 (18 Juli 2008)

Hallo erstmals,

ich sitze gerade vorm Monitor und kriege eine Krise, da ich net mehr weiter weiß 

Ich habe einen EK1100 als Koppler und habe ansonsten noch eine EL4732(D/A-Wandler)- und eine EL3702(A/D-Wandler)-Klemme damit verbunden. Ich versuche nun ganz einfach (ohne die Einbindung der distributed clocks) Werte mit der EL4732 zu senden, natürlich über eine Steuerung (in PLC-Control). (Am schönsten wäre es natürlich auch wenn ich sie mit dem EL3702 empfangen könnte ) ...

Naja und da habe ich mich ein bissel durch das Informationssystem von Beckhoff gewühlt um nach der passenden Funktion zu suchen. Wenn ich es richtig verstanden habe brauche ich den Funktionsblock "FB_EcCoESdoWrite" um einen Wert zu senden.... (Falls es doch eine andere Funktion sein sollte, bitte auch einen Hinweis schreiben ^^)

Nun bin ich aber auf das Problem gestoßen dass beim Klicken auf den Reiter "CoE-Online" bei beiden Klemmen nur ein leeres Kästchen gezeigt wird, wo doch aber (zumindest meines Wissens nach) eine ganze Liste von Objekten aufgeführt werden müsste ... 

Hat irgendwer eine Idee was ich machen kann? 

Vielen Dank


----------



## trinitaucher (18 Juli 2008)

Wo ist das Problem? Die Klemmen haben doch als Prozessdaten die Ein-, bzw. Ausgänge "ChX Value" unter "ChX Sample X". Da müssen deine SPS-Verknüpfungen ran.

Generell (kann sein, dass du das schon weist):
Du musst bei EtherCAT und TwinCAT *immer* eine Task haben (z.B. laufendes SPS-Programm), welches den Bus triggert. Also I/Os müssen mit der SPS/NC verknüpft sein und das Programm muss laufen (PLC => run).

Wenn bei CoE-Online nichts drin steht, ist TwinCAT entweder nicht im RUN-Modus oder das SPS-Programm läuft nicht. Steht da was, wenn du TwinCAT in Config-Modus + Freerun schaltest?


----------



## Beta6 (25 Juli 2008)

Vielen Dank für die schnelle Antwort,! 
Leider bin ich erst heute dazu gekommen, das auszubprobieren...
Leider funktioniert das mit dem Freerun-Modus nicht, also bei CoE-Online steht immer noch nichts weiter...
Ich habe jetzt ein einfaches Programm geschrieben (das mir nur die zeit der Distributed Clocks anzeigen soll), welches funktioniert, allerdings steht da immern noch nichts ...
Wenn ich dich richtig verstanden habe muss es aber eh ein Programm sein, welches direkt den ausgang triggert ... Dazu erstmal die grundlegende Frage:
Welche Funktion nehme ich hierfür? welche Funktion sendet und mit welcher kann ich mit dem A/D-Wandler die Daten auslesen die ankommen?!
Ich denke mal diese Frage ist die Grundlage für alles weitere, jedoch hat mir das Beckhoff information system nicht viel weiter helfen können, da ich durch diese ganzen FUnktionen in den verschiedenen Librarys keinen durchbnlick habe ... Wäre schön wenn mir das jemand nochmal schreiben (vielleicht auch mit kurzer erklärung ^^) könnte.


----------



## Michael_L (25 Juli 2008)

Dafür brauchst du keine Funktionen aus Bibliotheken. In deinem Programm legst du einfach Globale Variablen mit Adressen fest (z.B: AD_Channel1 AT %IW10 : INT; ). Dann übersetzt du das Programm und speicherst es. Im System Manager fügst du dein Programm und die Hardware ein und verknüpftst das miteineander. System starten, PLC starten, fertig.
So geht es bei normalen Klemmen, XFC sollte eigentlich nicht anders sein. Kommt nur noch drauf an wie du deine Klemme konfigurierst.

Denk daran, ein SPS-Programm kommuniziert normalerweise einfach per adressierten Variablen mit der Außenwelt.

Grüße
Michael


----------



## trinitaucher (25 Juli 2008)

Die Analogklemme hat doch Prozessdaten (z.B: ein INT) als EIn/Ausgänge. Diese Prozessdaten (oder nur eines davon) verknüpftst du mit einer als %I* bzw. %Q* in deinem SPS-Programm deklarierten, typgleichen Variable.
Programm übersetzen, speichern, im System Manager die SPS-Konfig einlesen, verknüpfen, Konfiguration aktivieren, SPS-Programm laden und starten... fertig.


----------



## Beta6 (25 Juli 2008)

Okay das Prinzip habe ich jetzt verstanden! Wie mache ich das jetzt aber mit dem verknüpfen genau? also bei dem D/A Wandler steht bei Ch1 Value z.b. "Adresse: 28 (0x1C)". die brauche ich doch bestimmt zum verknüpfen?! Oder läut die addressierung anders ab (von dem A/D Wandler heißt ja die eine Variable auch Ch1 Value)?


----------



## Michael_L (25 Juli 2008)

Ja schon einigermaßen richtig. Allerdings brauchst du dich nicht mit der 28 (0x1C) beschäftigen, sondern mit dem Feld darunter. Da steht auch eine Schaltfläche "Verknüpft m.". Wenn du diese drückst, werden dir freie Variablen z.B. aus dem SPS-Programm angezeigt. Aber nur, wenn du welche angelegt und das Programm eingebunden hast (siehe vorige Beiträge). Da wählst du eine aus und klickst auf OK. Dann ist der Eingang mit deinem Programm verknüpft.


----------



## trinitaucher (25 Juli 2008)

schau mal hier:
http://infosys.beckhoff.com/index.p...31/tcquickstart/html/tcquickstart_sample6.htm

Die Beispielprogramme verdeutlichen das ganze recht gut.


----------



## Beta6 (25 Juli 2008)

Ich habe es geschafft 

Vielen Dank für die Hilfe euch allen, habt mir wirklich sehr weitergeholfen...

noch eine letzte bitte (^^): vielleicht könnt ihr mir einen ansatz geben wie man es hinbekommen kann werte mit einem zeitstempel(vom verwendeten slave) zu empfangen und senden .... also dass man später nachvollziehen kann dass der A/D-Wandler zum Zeitpunkt t=... den wert x=... gemessen hat.
Das wäre super


----------



## trinitaucher (27 Juli 2008)

Wie das genau geht, sollte in den jeweiligen Dokus zu den Klemmen und zu den "Distributed Clocks" stehen. Auf der Beckhoff-Homepage ist letztere zu finden.
Es geht auf jeden Fall, Werte mit Zeitvorgabe zu setzen und zu lesen. Das Stichwort ist hier "SYNC"-Event.


----------



## Beta6 (4 August 2008)

Soderle,

habe das mit den sync-settings herausgefunden und jetzt die neue variable StartTimeNextLatch bekommen,  nach der ich ja die zeitliche reihenfolge der eingelesenen variablen herstellen kann. 
Irgendwo in der Dokumentation auf der Website wurde etwas über ein spezielles Format gesagt, womit man einen Wert mit dem Zeitstempel in einer Variablen darstellen kann. Weiß da jemand was darüber? sonst habe ich ja immer 2 variablen  ... wenn nicht, vielleicht hat jemand eine idee wie ich am sinnvollsten diese werte speichern kann, sodass sie im nachhinein gut nachvollziehbar sind.


----------



## trinitaucher (4 August 2008)

es gibt in TwinCat die Bibliotheken "TcEtherCAT.lib" und die "TcUtilities.lib", mit zahlreichen Konvertierungsfunktionen.
Da wirst du sicher fündig


----------

