Supportforum von www.raeppel.de

Forum für SPS-Tools & Automatisierungstechnik
Aktuelle Zeit: 28.03.2024, 10:12

Alle Zeiten sind UTC + 1 Stunde


Forumsregeln


Die Forumsregeln lesen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: DB auslesen mit SCL
BeitragVerfasst: 24.04.2008, 14:31 
Hi,

ich suche einen Ansatz wie ich mit SCL ein bestimmtes Wort in einem DB auslesen kann. Ich hatte bisher nur immer KOP/FUP/AWL.

Danny


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: 24.04.2008, 20:25 
In etwa so:
Code:
FUNCTION FC27 : WORD
VAR_INPUT
  DBnum     :INT; (* Datenbausteinnummer *)
  WORDnum   :INT; (* Wordnummer *)
 
END_VAR
 
  FC27 := WORD_TO_BLOCK_DB(INT_TO_WORD(DBnum)).DW[WORDnum];

END_FUNCTION


Nach oben
  
 
 Betreff des Beitrags: SCL
BeitragVerfasst: 24.04.2008, 20:28 
Offline
Site Admin

Registriert: 24.01.2008, 21:55
Beiträge: 175
Hallo Danny,

hab 2 SCL-Quellen in den Downloadbereich gelegt. Der DB wird als BLOCK_DB übergeben, nicht als INT. Ich finde das besser wegen Referenzdaten.

André

_________________
www.raeppel.de
mit innovativen SPS-Tools schneller ans Ziel


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 18.06.2008, 14:34 
Als Gast begrüße ich alle in diesem Forum und bedanke mich für jede Gedankenstütze im voraus.
Zunächst mein Stand (Thema: Matrizen-Berechnungen):
Vorerst möchte ich erwähnen, dass alle benötigten Matrizen Operationen vorhanden sind. Nun hänge ich an einer Stelle. Ich habe eine Matrix beschrieben, die eine bestimmte Charakteristik erfüllt, dessen values aus einem DB mittels (Test Code [funktioniert!])
Code:
x := DWORD_TO_REAL (DBxx.DBD[ index1*2 + index2 *10 ]) ;
y := DWORD_TO_REAL (DByy.DBD[ index1*2 + index2 *10 ]) ;

gelesen werden. Matrix ist of REAL.
Nun möchte ich die Variablen x & y die vom Typ Matrix sind und in DB's liegen mittels der vorhandenen Operatoren in separaten FB's z.B. Multiplizieren und das Ergebnis wieder in einem anderen DBzz hinterlegen. Hat vielleicht jemand eine Idee für die Umsetzung oder einen nützlichen Link? :?:


Nach oben
  
 
 Betreff des Beitrags: SCL
BeitragVerfasst: 18.06.2008, 14:56 
Offline
Site Admin

Registriert: 24.01.2008, 21:55
Beiträge: 175
Hallo Mtronik,

wie wärs denn damit?

Code:
DBzz.DBD[ index1*2 + index2 *10 ] := REAL_TO_DWORD (z);


André

_________________
www.raeppel.de
mit innovativen SPS-Tools schneller ans Ziel


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 18.06.2008, 16:00 
@ARaeppel
vielen Dank für die schnelle Antwort.

Damit wäre geklärt wie ich mein Ergebnis in einen DB (z.B. DBzz) schreibe.

Beispiel:
Ich habe jetzt eine Matrix X. Die Werte der Matrix X werden aus einem DBxx gemäß s.o. gelesen. Diese Matrix möchte ich jetzt in einem separaten FC transponieren. Diese neue Matrix "X_trans" soll in einem DB wie Sie es beschrieben haben abgelegt werden. Die Funktion TRANSPONIEREN wird wie folgt aufgerufen.
Code:
MatxTransp( MxA:= B, MxA_Trans:=X_transp);

MxA ist input der Function und MxA_Trans ist output und beide sind vom Typ Matrix.
Wenn ich einer neuen Funktion diese Berechnung durchführen will, um das Ergebnis (Matrix) in einem DBzz zu speichern kommt eine Fehlermeldung, weil der die Matrix nicht kennt. Im DBxx kann ich aber alle Elemente meiner Matrix beobachten.

Wenn ich in einer Function eine Matrix beschreibe und diese dann Transponiere funktioniert das ohne Probleme. Nur das berechnen der zuvor deklarierten Matrix B gemäß
Code:
X := DWORD_TO_REAL (DBxx.DBD[ index1*2 + index2 *10 ]) ;
ergibt Fehler, wenn dies in einer neuen Function zur berechnug herangezogen werden soll. Haben Sie eine Idee, wie die zuvor erstellte Matrix die für weitere Berechnungen in einer neuen FC zur Berechnung bereitgestellt werden kann?


Nach oben
  
 
 Betreff des Beitrags: SCL
BeitragVerfasst: 18.06.2008, 16:23 
Offline
Site Admin

Registriert: 24.01.2008, 21:55
Beiträge: 175
Hallo,

also in dem Fall würde ich in den DBs jeweils ein Array anlegen worin alle Werte enthalten sind. Dieses Array würde ich an alle Bausteine symbolisch anparametrieren die damit zu tun haben. Der Zugriff in den Bausteinen erfolgt dann auch symbolisch.

André

_________________
www.raeppel.de
mit innovativen SPS-Tools schneller ans Ziel


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 18.06.2008, 17:19 
Offline

Registriert: 18.06.2008, 16:46
Beiträge: 2
@ARaeppel

Hallo,

derzeit habe ich für jede Matrix einen eigenen DB angelegt, worin die Wertte enthalten sind. Die einzelnen Werte können über
Code:
DBxxx.DBDnum
ohne Probleme aufgerufen werden.
Können Sie ein Beispiel - Code posten, wie Sie die arrays in SCL symbolisch an alle Bausteine bzw. ein Baustein anparametrieren würden? Somit müsste das Problem gelöst sein, damit mit den Matrizen weiter gerechnet werden kann.
Ihre zuvor geposteten Anregungen werde ich im laufe dieses tages bzw. dieser Woche ausprobieren und Bericht erstatten für diejenigen, die ein ähnliches Problem haben.
An dieser Stelle nochmals vielen Dank für die gute Unterstützung.

Micha


Nach oben
 Profil  
 
 Betreff des Beitrags: Matrix
BeitragVerfasst: 18.06.2008, 18:12 
Offline
Site Admin

Registriert: 24.01.2008, 21:55
Beiträge: 175
Hallo Micha,

der FC erwartet symbolisch ein 2dimensionales Array:

Code:
FUNCTION FC10 : VOID
TITLE = 'Matrix schreiben'
NAME    : WRITE_M
VERSION : '1.0'
AUTHOR  : ARaeppel
FAMILY  : TABLE

VAR_INPUT
    index_x  : INT ; // Index x
    index_y  : INT ; // Index y
    Wert     : REAL ; // einzutragender Wert
END_VAR

VAR_IN_OUT
    Matrix  : ARRAY[1..127,1..5] OF REAL; // Matrix
END_VAR

Matrix[ index_x , index_y ] := Wert ;

END_FUNCTION


André

_________________
www.raeppel.de
mit innovativen SPS-Tools schneller ans Ziel


Nach oben
 Profil  
 
 Betreff des Beitrags: Genaue Aufgabenstellung
BeitragVerfasst: 19.06.2008, 12:45 
Offline

Registriert: 18.06.2008, 16:46
Beiträge: 2
Sehr geehrte Mitlieder/Gäste,

im Downloadbereich wurde die Aufgabenstellung als pdf hochgeladen, wo das Problem der bisherigen Diskussion in diesem Thread etwas näher erläutert wird. Um in die Datei einsehen zu können einfach auf "Aufgabenstellung.pdf" klicken. Für jede Idee stehe ich offen und würde dies gerne sofort umsetzten. Für jede Idee und Unterstützung bedanke ich mich im voraus.
Aufgabenstellung.pdf

Micha


Nach oben
 Profil  
 
 Betreff des Beitrags: Array
BeitragVerfasst: 23.06.2008, 06:29 
Offline
Site Admin

Registriert: 24.01.2008, 21:55
Beiträge: 175
Hallo Micha,

so bin wieder da. Hab mir mal die Aufgabenstellung durchgelesen... OK es soll eine UDT werden. Dann lege eine UDT an die der Struktur des Parameters "Matrix" entspricht und trage beim FC anstatt des Arrays deine neue UDT ein.

Matrix : ARRAY[1..127,1..5] OF REAL; // Matrix

Aber die Variablen Zeilenanzahl und Spaltenanzahl in deinem DB sind dann dabei hinfällig. Du hast zwar mit SCL eine Hochsprache, aber es gibt keine Redim-Befehle. Das heisst dynamische Arrays (die man direkt symbolisch ansprechen kann) kannst du vergessen. Hier müsstest du an alle Bausteine die mit diesen "Arrays" arbeiten Zeilenanzahl/Spaltenanzahl und Beginn des Datenbereichs übergeben.

André

_________________
www.raeppel.de
mit innovativen SPS-Tools schneller ans Ziel


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25.06.2008, 11:50 
Aber immerhin kann er mit den Variablen Zeilen- und Spaltenanzahl angeben, wie viele Zeilen und Spalten gültig sind, also benutzt werden. Übergeben muß er leider immer die gesamte max. Matrix, das stimmt. Beim Weiterrechnen sind diese Variablen dann wichtig, um die richtigen und auch nur die notwendigen Rechenoperationen auszuführen.


Nach oben
  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de