TIA Indirekte Adressierung Array - S7-300

Phantomias1

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
ich nutze im Moment eine CPU314C-2PN/DP und wollt mir ein Array of Real indirekt adressieren, um mir Sensorwerte in einen DB zu speichern.
Ich kann das Array direkt adressieren(s. Bild) mit einem Integer aber ich kriege es nicht hin wenn ich versuche eine Int-Variable zu nutzen.
Liegt es daran, dass meine Variable (MachineValue) sich nicht im Array befindet und wenn ja wie kriege ich diese hier rein?🤔
Wäre über jede Hilfe dankbar. :giggle:
Update: mit einem Struct beim dem das Array und die int Variable enthalten sind klappt es auch noch nicht
 

Anhänge

  • Array.png
    Array.png
    58,6 KB · Aufrufe: 66
Zuletzt bearbeitet:
erwartest du, dass du die Variable zur Auswahl bekommst? Was sagt die Software, wenn du die Adresse eingibst?

"FIFO-x".xWerte["Fifo-x".MachineValue]
 
Probier mit "FIFO-x".WertevonX.xWerte["FIFO-x".WertevonX.Machine_Value]

oder umplazier Machine_value so dass es nicht unter die WertevonX Struktur liegt.
 
Hi,

wenn du auf "Machine Value" zugreifen willst. "Fifo-x".WertevonX.Machine_Value

1671182621751.png

1671182598825.png

bearbeitet: du brauchst kein Index da Machine_Value sich nicht in xWerte Array befindet



Grüße
E
 
Klappt leider auch nicht er sagt mir wieder ungültiger Index.
Kann es sein, dass KOP hier nicht funktioniert und SCL benötigt wird? 🤔
Bin grade über dass hier gestolpert:
http://nbozov.com/programming/post/62/Indirect-addressing
Was es vielleicht sein könnte, dass dein DB nicht optimiert ist und er deswegen keinen Bezug zur Variable findet. In meinem Bsp ist der DB optimiert. Auch würde ich dir empfehlen dein Array und Index so festzulegen, dass dir kein Overflow passiert.

Dein Array geht nämlich nur bis 16382 während dein Index von -32768 bis +32767 geht.
 

Anhänge

  • 2022-12-16 10_27_16-W10 V17 Pro - VMware Workstation.jpg
    2022-12-16 10_27_16-W10 V17 Pro - VMware Workstation.jpg
    143,5 KB · Aufrufe: 14
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Was es vielleicht sein könnte, dass dein DB nicht optimiert ist und er deswegen keinen Bezug zur Variable findet. In meinem Bsp ist der DB optimiert.
Hi, mein DB (FIFO-x) ist nicht optimiert allerdings geht das bei mir nicht die Option ist ausgegraut. Hast du auch eine S7-300 benutzt?
Bei mir ist es die CPU 314C-2 PN/DP. Wenn ich einen neuen Global-DB anlegen will sehe ich aber auch keine Möglichkeit, eine Haken zum optimieren zu setzen.
 
Ich empfehle auch dass du die DB Struktur vereinfacht.
Z.B.:
"FIFO-x":
xWerte : ARRAY[0..16383] OF REAL ;
Index: INT ;

dann anstatt
"FIFO-x".WertevonX.xWerte["FIFO-x".WertevonX.Machine_Value]
kannst du schreiben
"FIFO-x".xWerte["FIFO-x".Index]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In V17 schmeißt mir noch der Compiler diese Fehlermeldungen:

Programmbausteine,,3,0,10:38:41
Main (OB1),,2,0,10:38:41
Netzwerk 1,Der eingegebene Index ist ungültig.,,,10:38:41
Netzwerk 1,An dieser Stelle sind nur Konstanten zulässig.,,,10:38:41
FIFO-x (DB2),,1,0,10:38:41
,Der benötigte Arbeitsspeicher überschreitet die maximal zulässige Bausteingröße (Benötigt: 65536 Bytes, Maximum: 65534 Bytes).,,,10:38:41
,Übersetzen beendet (Fehler: 3; Warnungen: 0),,,10:38:42


Also in KOP nur Konstanten und ansonsten ist das eben halt auch schon ein riesen DB
 
Zurück
Oben