# Beckhoff und LabView



## pezi179 (15 November 2012)

Hallo!

Ich bin gerade dabei mir eine kleine Visu mit LabView zu bauen. Hab mich in meinen ersten Versuchen an das Dokument BK-AppNote-013 (ftp://Customer:Customer@ftp.beckhof...tes/web/BK-AppNote-013/pdf/BK-AppNote-013.pdf) gehalten. Auslesen von Boolschen Werten funktioniert auch soweit, aber das schreiben nicht - switch schaltet in der visu zwar um, aber in der steuerung tut sich nichts!?!

sind noch irgendwelche Einstellungen etc. notwendig, die nicht in dem Dokument stehen (oder ich übersehen habe)

bzw. hat jemand ein etwas komplexeres Labview-Beispiel/Tutorial, wo nicht nur eine Variable existiert bzw ausgelesen wird - sowas finde ich nämlich nicht
(oder kann mir zumindest das Resultat aus BK-AppNote-013 zur Verfügung stellen, damit ich mal ausschließen kann, dass es an was grundsätzlichem liegt)

danke
pezi


----------



## pezi179 (15 November 2012)

oder sind bei dem zusätzlichen Task spezielle Einstellungen etc. notwendig?


----------



## PLC-Gundel (15 November 2012)

Hallo Pezi,

habe auch ein Projekt, bei dem Beckhoff mit LabView kommuniziert. Auf Anraten unseres
Beckhoff Vertreters habe ich die Methode Kommunikation über OPC Server gewählt.
Das funktioniert relativ unkompliziert. 
Wenn ich so die Beschreibung in Deinem Link über die direkte ADS Kommunikation überfliege, 
erscheint mir das deutlich komplizierter. 
Leider ist der Beckhoff OPC Server nicht kostenlos, aber es wäre eine einfachere
Methode, die auch schnell zum Erfolg führt. Hierbei wird die Beckhoff Variable direkt auf dem LabView 
Frontpanel über "Eigenschaften" mit dem Feld verknüpft.

Viele Grüße


----------



## pezi179 (17 November 2012)

ob einfach oder nicht sei mal dahingestellt, aber es sollte doch trotzdem funktionieren, oder nicht?!?!

hat niemand erfahrungen damit?


----------



## trinitaucher (17 November 2012)

Hast du mal in den Beispielen in der Doku geschaut?
http://infosys.beckhoff.com/index.p...le_labview/html/tcsample_labview_overview.htm


----------



## pezi179 (17 November 2012)

ja die beispiel habe ich mir schon angesehen...naja...werde das ganze jetzt mal einen tag ruhen lassen, ich glaube nämlich, dass es nur eine kleinigkeit ist, und ich später vielleicht den wald vor lauter bäumen wieder sehe  (hoffe ich zumindest)

eine andere frage:
bin gerade dabei einige features von labview durchzutesten (um die Test-Periode sinnvoll zu nutzen)
es gibt ja die möglichkeit vom erstellten vi eine exe zu erstellen - diese kann man dann zB auf einem anderen rechner starten
gibt es hier irgendwelche einschränkungen oder ähnliches (was muss dann auf dem anderen rechner installiert sein? labview? twincat? ??)

danke schon mal


----------



## PLC-Gundel (17 November 2012)

pezi179 schrieb:


> ja die beispiel habe ich mir schon angesehen...naja...werde das ganze jetzt mal einen tag ruhen lassen, ich glaube nämlich, dass es nur eine kleinigkeit ist, und ich später vielleicht den wald vor lauter bäumen wieder sehe  (hoffe ich zumindest)
> 
> eine andere frage:
> bin gerade dabei einige features von labview durchzutesten (um die Test-Periode sinnvoll zu nutzen)
> ...



Auf dem anderen Rechner muss lediglich die Runtime von LabView installiert sein, nicht das ganze LabView. Wenn Du auf Deine Beckhoff Variablen zugreifen willst, muss außerdem TwinCAT installiert sein.

EXE erstellen:
Auf dem Frontpanel im Menü Werkzeuge -> Applikation (EXE) von VI erstellen -> dann den Pfad eingeben, den Du für Deine Projektbibliothek wünscht -> Weiter -> der Projekt Explorer öffnet sich.
Im Eigenschaftsfenster unter Zieldateiname einen aussagekräftigen Namen vergeben
Links im Menü unter "Einstellungen der Quelldateien" auf Button "VI Einstellungen anpassen". Hier kann die Darstellung eingestellt werden. Wünscht Du ein Vollbild, müssen die ersten 6 Häkchen abgewählt werden.
Auf Erstellen gehen. Die fertige .EXE befindet sich in einem Ordner "Builds" in Deinem Projektordner.

.EXE ruft weitere .EXE Dateien auf:
Wenn Du weitere Bilder von Deinem Hauptbild aus aufrufen möchtest, müssen diese im Projektordner von "Abhängigkeiten" nach "Build Spezifikationen" per Drag and Drop unter das Hauptbild gezogen werden. Im Hauptbild unter "Build Spezifikationen" muss in Eigenschaftsfenster unter "Quelldateien" die aufgerufene Datei unter "Immer enthalten" eingebunden werden.

Anpassung der Darstellung:
In den meisten Fällen entspricht die Darstellung der .EXE (Größe, Verzerrheit) nicht der gewünschten Größe. Um diese Parameter einzustellen gibt es kein Patentrezept. Meist muss man mehrere .EXE erstellen bis es passt. 
Dafür auf dem Frontpanel unter Menüpunkt Datei -> VI Einstellungen -> Fenstergröße oder -> Fensterposition bei Ausführung die Einstellungen verändern. "Auf aktuelle Panelgröße setzen" sollte möglichst nicht betätigt werden, weil dieses eventuell die gesamte Darstellung unwiderruflich verzerrt.

Weiter Infos findest du auch unter LabView Forum.


----------



## pezi179 (19 November 2012)

hm...twincat muss installiert sein? kann man das nicht irgendwie umgehen/sperren?

folgendes szenario: 
die visu welche mit labview gemacht wird erlaubt nur zB gewisse temperaturen zu verändern oder werte anzusehen - sonst nichts
wenn ich dann aber twincat laufen habe (ich gehe mal davon aus, dass dieses dann auch entsprechend konfiguriert sein muss, um mit dem System zu kommunizieren)
kann mir aber der benutzer, der gar nicht das nötige wissen/rechte hat, irgendwelche sachen im twincat verstellen/ruinieren

oder verstehe ich da was falsch?


----------



## PLC-Gundel (19 November 2012)

Oh pardon, ich ging davon aus, Du hast alles auf einem Rechner laufen.

Wenn Dein Programm auf einer anderen Hardware als Deine Visu läuft, sieht es anders aus.
Hab keine Erfahrung mit ADS Kommunikation, aber nach meinem Kenntnisstand kannst du über ADS Befehle auch von anderer
Hardware aus mit deiner Visualisierungs-Hardware kommunizieren, s. Schaubild
Dann brauchst Du auf Deiner Visualisierungs-Hardware natürlich nicht TwinCAT installieren.

Wenn jedoch alles auf einer Hardware läuft (z.B. ein Beckhoff Panel PC), muß TwinCAT auf diesem Gerät installiert sein.
Um zu verhindern, daß niemand unbefugtes auf TwinCAT zugreift, kannst Du Deine LabView Visu als Vollbild laufen lassen, so daß 
wirklich nur auf diese Bedienoberfläche zugegriffen werden kann. TwinCAT und alle weiteren Funktionen sind dann für den Anwender
nicht erreichbar.


----------



## pezi179 (21 November 2012)

habe jetzt noch folgendes bemerkt: in einem Beispiel stand, dass die Variable im PLC als Merker definiert wurde - bei mir ist es aber ein Ausgang (da diese ja im System Manager einer KL2602-Klemme zugeordnet werden soll - in diesem Fall ein Licht/Bool)

kann es daran liegen? aber das sollte doch trotzdem funktionieren, oder?


----------



## witkatz (21 November 2012)

Das sollte funktionieren. Zu beachten ist, dass Ausgänge anderen IndexGroups zugeordnet sind als Merker. Wenn der Zugriff auf die boolesche Variable per IndexGroup/IndexOffset geschieht, dann ist IndexGroup = 0xF031 und IndexOffset = ByteOffset*8+BitOffset. Die Ads Info kann man im SystemManager nachprüfen. Ist das der Fehler?

Gruß witkatz


----------



## pezi179 (22 November 2012)

die werte für indexgroup und offset nehme ich immer vom systemmanager - sollten also passen

habe jetzt schon alle möglichen varianten versucht (so ziemlich jedes beispiel das ich finden konnte) --> lesen funktioniert super, beim schreiben tut sich nichts (habe auch hier schon alle möglichen ports etc. versucht auch schon schreiben per variablennamen) --> wenn ich sinnlose werte eingebe bekomme ich durchaus plausible fehlercodes, und bei (meiner meinung nach) richtigen werten - return codes 0 + laut visu ist alles ok aber es tut sich nichts

muss man irgendwo was einstellen damit man über ads schreiben kann/darf??? lesen funktioniert ja, oder funktioniert das sowieso immer?
oder braucht man einen speziellen cx, der das kann????


----------



## witkatz (22 November 2012)

Wenn lesen funktioniert, dann sollte das Schreiben mit den gleichen ADS Parametern auch funktionieren. Schreiben auf Ausgänge ist kein Problem. Wenn keine Fehlermeldung kommt, dann wurde wahrscheinlich auch irgendwas geschrieben. Wird der Wert in der SPS vielleicht überschrieben? 
Bevor wir hier weiter Rätsel raten, bitte die SPS Deklaration und einen Bildausschnitt aus Labview posten.


----------



## pezi179 (22 November 2012)

hallo
anbei nun folgende dateien
- pic01: ausschnitt aus plc
- pic02: ausschnitt aus systemmanager (die werte für indexgroup und offset sind jene, die mir im systemmanager unter sps-konfiguration - eigenheim angezeigt werden)
- pic03: ausschnitt aus dem vi
- spielwiese.vi: das vi selbst

read funktioniert soweit (werte der raumthermostate bzw fbh-motoren)
wenn ich das Licht L11 per taster einschalte leuchtet auch L11 im vi (aber nicht das lamperl bei SwitchL11)
wenn das licht aus ist und ich es per SwitchL11 einschalten möchte 
- leuchtet das lamperl bei SwitchL11
- das lamperl bei L11 blinkt unregelmäßig
- im system manager sind ganz selten ausreißer von 0 auf 1 zu sehen (aber nicht gleich mit dem blinken des leds im vi - seltener)
- und beim realen licht tut sich nix

habe aber schon mehrere varianten probiert (statt ocx -> .net, statt indexgroup -> per variablennamen) immer das gleiche


noch eine grundsätzliche frage: es geht schon, dass ich die variable des lichts einfach setze, oder?
oder muss ich im plc den code so ändern, dass "wenn taster_real oder virtueller_taster_visu --> dann licht ein"
bitte sagt jetzt nicht, dass das so ist?!?!? aber langsam gehen mir die ideen aus, was das problem sein kann


----------



## witkatz (22 November 2012)

Das Schreiben per ADS funktioniert also, das ist schon mal beruhigend!  
Jetzt zu dem Problem "konkurrierender Zugriff": auf den Ausgang sollte nur einer schreiben, entweder die SPS oder LabView. Wenn LabView die Kontrolle über die Ausgänge übernehmen soll, dann sollte der FB_Licht nicht aufgerufen werden, sonst überschreibt er den Ausgang. Wenn die Steuerung gleichzeitig passieren soll, dann sollte LabView nur auf Taster-Merker schreiben, die vom FB_Licht gleichranging mit den Hardware-Tastern behandelt werden. 
-> LabView-Taster (Schaltverhalten: Schalten bis zum Loslassen) ohne Lamperl schreibt auf PLC Merker (Z.B. LVtoPLC_L11_Taster) und nur ein LED-Lamperl zeigt den Zustand des Ausgangs L11 An/Aus.


----------



## Majestic_1987 (22 November 2012)

TwinCAT muss nicht installiert sein. Nur die Teile für die ADS-Kommunikation (irgendwo gibt es dazu auch ein separates, abgespecktes Installationspaket). Darüber hinaus muss eine ADS-Route zwischen dem Rechner, auf dem (in deinem Fall) LabView laufen soll und der Steuerung angelegt werden. Das kannst du an der Steuerung direkt über den System-Manager tun.


----------



## pezi179 (3 Dezember 2012)

sry für die späte antwort... 
war wirklich das Problem "konkurrierender Zugriff" - ist aber nun gelöst

welches installationspaket ist das, welches nur die ads-kommunikations-sachen installiert? (bin entweder blind oder es ist nicht so leicht zu finden)
bzgl der ads-route... kann man das irgendwie automatisieren? zb bei labview-anwendungs-start automatisch im hintergrund überprüfen und hinzufügen oder so? ist ja doch ziemlich mühsam wenn ich zwar die anwendung installieren kann, aber nichts funktioniert bis dann die route manuell hinzugefügt wurde?!?!? oder versteht ich da was falsch?

danke schon mal


----------

