18.01.2007, 15:21
(Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2007 15:28 von Achim.)
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
LV und Profibus ansteuern?
Hi,
die VI's musst du dir selber basteln! Und um zu wissen, wo was steht musst du natürlich die Datenstruktur in der SPS kennen. Meist wird für so ne Übergabe vereinbart "wir nehmen den Datenbaustein 60 für Eingänge, den DB61 für Ausgänge, DB62 für Fehlermeldungen der SPS" o.ä. Das ist ja für jede Aufgabe anders...also nur die Adressen kann man angeben, den Rest muss man sich selber zurechtschrauben. Du bildest dir im LV die Datenstruktur z.B. als boolesches Array ab, dieses beschreibst du mit deinen Daten (LV->SPS und SPS->LV). Das Cluster ist meine Datensammlung (Ausgänge), die übertrag ich dann auf das boolesche Array und das gleiche mach ich auch mit den Eingängen, die von der SPS kommen. Wenn du die Datenstruktur mal verinnerlicht hast, ist's nicht mehr schwer. Man muss manchmal halt ein bisschen außenrum arbeiten, z.B. weil man von den übertragenen Daten das Zweierkomplement bilden muss, um ne "Klartextanzeige" zu erhalten.
Gruss
A.
PS: Warum zitierst du eigentlich immer komplett den vorhergehenden Post? Die Threads werden dadurch nicht grade übersichtlicher! Das macht ja Sinn, wenn man Teile (!) zitiert die "viel weiter oben" mal aufgetaucht sind, aber ganze Antworten und dann auch noch direkt unten drunter...das ist meiner Meinung nach nicht so prickelnd! Nicht vor Wut schnauben, bitte...
PPS: Jetzt hast du's schnell geändert...du Schuft!
PPPS: #DIs (48) = Anzahl digitaler Eingänge von der SPS (Endschalter erreicht, Trigger für Messung, usw.)
und # SPS-Meldungen (96) = Anzahl von Fehlermeldungen (Bit0 = Fehler x, Bit1 = Fehler y, usw.)
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
18.01.2007, 16:54
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
LV und Profibus ansteuern?
Achso, jetzt steige ich langsam durch. Was ich noch nicht ganz verstanden habe, ist:
- wieso Du das "Reshape Array" verwendest,
- wie das mit den analogen Signalen funktioniert (was das mit dem "geteilt durch 1000" bedeutet,...) und
- woher der Cluster bei "Integers an SPS" kommt, bzw. was da drin steht.
Gruß Markus
PS: Mit dem Zitieren hast Du natürlich recht. Oft vergesse ich es und mache es dann später weg. Sorry.
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
19.01.2007, 09:35
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
LV und Profibus ansteuern?
Hi Markus,
ich musste erst mal überlegen...das ist jetzt ca. 4 Jahre her, da wusste ich einiges nicht mehr so genau...
Der Reihe nach:
1. Das "Reshape":
Ich kriege die Daten aus der DLL als U8-Werte, d.h. ein Array of U8 mit z.B. immer 40 Elementen. Die ersten 2 Elemente sind Digitale Eingänge (2x 8Bit), die nächsten 14 repräsentieren analoge Eingänge (bei denen high und low-Bytes sortiert werden müssen und manche mit 1/1000 skaliert werden müssen), die nächsten 4 sind wieder DI (werden oben angefügt) und die restlichen sind ebenfalls DI, allerdings in nem separaten Block, der Fehlermeldungen repräsentiert. 2+14+4=20, d.h. ich hab noch 20 Byte (also 20x 8 Bit = 160 Bit) für die Fehlermeldungen oder weitere Daten (Reserve). Ich brauch hier aber nur noch 96 Bit, die ich vorher für Fehlermeldungen definiert habe.
Die Verteilung der 96 Fehlerbits siehst du im Bild hier:
Im ersten Schritt werden die 20 Byte (20x U8) in boolesches 2D-Array gewandelt (20x8x1Bit). Dann werden diese Elemente des 2D per Reshape in ein 1D mit 96 Elementen überführt, der Rest wird verworfen, weil ich's nicht brauche. Das Abscheiden erfolgt, damit ich genauso viele Elemente hab wie im vordefinierten Array of Cluster "Fehlerliste SPS", dann kann man per Autoindexing in das jeweilige "Data"-Feld im Cluster schreiben! Den Inhalt der Fehlerliste siehst du im Hilfefenster!
2. "geteilt durch 1000"
siehe oben, dient der Skalierung
3. Integers an SPS
Die SPS verfügt über eine nachgeordnete numerische Steuerung, diese kann nur mit Integerzahlen rechnen. Zum Arbeiten benötigt sie einige Parameter, die stehen in dem Cluster, siehe nachfolgendes Bild! Das Cluster hab ich mir selber erstellt, es wird über ein Konfigmenü (LV-FP) befüllt und dann der SPS übergeben.
So, genug erzählt...ich musste mich schon an viel mehr Details erinnern, als ich eigentlich wollte...Wichtig ist eigentlich nur: Du vereinbarst mit der SPS-Seite die Datenstruktur und die Adresse, den Rest muss man dann zusammenbauen oder aufdröseln...
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
19.01.2007, 09:47
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
LV und Profibus ansteuern?
Hallo Achim,
Danke für die ausführliche Hilfe. Jetzt ist mir so manches klarer geworden. Ich war aber auch hartnäckig.....
Gruß Markus
Edit:
Noch etwas: Wo finde ich in den oberen Bildern die DLL? Im SPS Serv, oder im Run, Init oder Close?
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
19.01.2007, 12:53
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
LV und Profibus ansteuern?
Hi,
der SPS Serv besteht aus einer Case Struktur mit angeschlossenem Enum: Init, Run, Close
Meine Programme sehen eigentlich meist so aus:
Stacked Sequence 1: Initialisierung (HW, Variablen, etc.)
Stacked Sequence 2: eigentliches Programm (meist State Machine)
Stacked Sequence 3: Aufräumen (Referenzen schließen, Treiber schließen, usw.)
Der SPS Serv wird entsprechend in allen drei Sequenzschritten aufgerufen, dabei werden folgende Zustände angesteuert:
1: Init: OpenDriver, InitBoard, SetHostState
2: Run Acquisition: ExchangeIO
3: Close: ExitBoard, Close Driver
Die grade aufgezählen Elemente sind jeweils VIs die in der Reihenfolge der Aufzählung aufgerufen werden. In jedem dieser VIs erfolgt über einen "Call library function node" der Aufruf der DLL, natürlich mit anderen Parametern! Diese Beschaltung war aber schon vorgegeben aus dem erwähnten Beispiel-VI!
Tschö...
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
19.01.2007, 13:21
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
LV und Profibus ansteuern?
OK. Jetzt klingt das logisch für mich.:lol:Vielen Dank für Deine Hilfe.
Schönes Wochenende.
Gruß Markus
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
05.12.2007, 15:08
|
capunze
Unregistered
|
LV und Profibus ansteuern?
' schrieb:Hi Markus,
die DLL kriegt man "vorverdrahtet" in nem Beispiel, dass muss man dann entsprechend aufbohren. Es gibt ein Init, ein Run, und ein Close, genauso wie bei den NI-Karten. Hier mal ne Vorgehensweise in Bildern...
Die gezeigten VI's liegen vor bzw. nach dem oben schon gezeigten eigentlichen Kommunikations-VI (schreiben in LV -> read/write dll -> lesen nach LV)
Gruss
Achim
Hi,
ich hab hier die Original CD von Hilscher fuer die Karte CIF 50-DPS vor mir liegen. Ich kann aber kein Beispiel VI auf der CD finden. Kann es sein das Hilscher das Beispiel von der CD heruntergenommen hat? Oder verstehe ich was falsch. Kann einer das Beispiel VI reinstellen oder mir schicken? Waere super.
Gruß Daniel
|
|
|
05.12.2007, 15:25
(Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2007 21:20 von jg.)
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
LV und Profibus ansteuern?
Hi,
ich glaube mich zu erinnern, dass ich das damals bei denen angefordert habe...
Guckst du hier:
Sehr geehrter Herr ...,
anbei sende ich ihnen die gezippte Datei zu dem mir zur Verfügung stehenden LabVIEW-Treiber.
Bitte beachten Sie, dass der Treiber nicht von Hilscher erstellt wurde und auch nicht supportet wird.
Den Treiber müssten Sie sich selbst für Ihre Gegebenheiten anpassen.
Im einem beiliegenden Dokument finden Sie in der Fußnote einen Ansprechpartner aus Spanien.
Mit freundlichen Grüßen
Ralf Schoßland
- Vertrieb / Sales -
Tel. 06190 / 99 07 - 46
E-Mail: rschosslandAThilscherDOTcom
------------------------------------------------
Hilscher Gesellschaft für Systemautomation mbH
Rheinstr. 15, 65795 Hattersheim
Sitz der Gesellschaft: Hattersheim
Geschäftsführer: Hans-Jürgen Hilscher
Registergericht: Amtsgericht Frankfurt/Main
Handelsregister: Frankfurt B 26873
http://www.hilscher.com
HilscherLabviewDrivers.zip (Größe: 816,98 KB / Downloads: 427)
(VI's LV 5.1)
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
06.12.2007, 10:16
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
LV und Profibus ansteuern?
' schrieb:Hi,
ich glaube mich zu erinnern, dass ich das damals bei denen angefordert habe...
Die Treiber sind zwar ausführlicher aber die Art der Implementation eher sehr direkt und LabVIEW Benützerunfreundlich.
Die dem Post Siemens CP5611 angehängten VIs sind hier etwas LabVIEW freundlicher, meiner ganz unbescheidenen Meinung nach.
Rolf Kalbermatter
|
|
|
20.12.2007, 13:56
|
Lummi
LVF-Neueinsteiger
Beiträge: 2
Registriert seit: Dec 2007
8.5
2007
kA
58579
Deutschland
|
LV und Profibus ansteuern?
Hallo Achim,
seit kurzem arbeite ich mit LV 8.5 und soll nun die Kommunikation mit einer Hilscher Karte (Profibus 8k) realisieren. Beim stöbern im Forum bin ich hier gelandet.
Scheinbar habe ich von Fa. Hilscher die selben VI's bekommen von denen du geschrieben hast. Mit Hilfe von NI sind diese nun lauffähig für 8.5
Das ersetzen der "Code Interface Nodes" durch "Call Library Function Nodes" hat auch geklappt.
Wie oben auch von dir beschrieben, habe ich eine kleine Sepquenz geschrieben, um I/O-Daten auszulesen. Open , Init, SetHostState, ExchangeIO, Exit und Close.
Problem dabei ist, dass ich keine Daten eingelesen bekomme.
Scheinbar übergebe ich nicht die richtigen Parameter, oder ich lasse mir nicht die richtigen Parameter anzeigen.
Hast du vielleicht ein Beispiel für die Parameterübergabe?
Oder welche Parameter auf jeden Fall übergeben werden müssen?
Vielen Dank im Voraus
Gruß
Torsten
|
|
|
| |