Auf mehre vll. viele Interne Tags Triggern?

Beiträge
195
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich arbeite gerade mit C -Script an eine "tag reduzierungs maßnahme" ich bin mitlerweile so weit, das ich Tag Tabellen in C Anlegen kann, welche durch rohdanten trigger gesetzt werden. d.h. die Richtung SPS zur HMI funktioniert.

Nur die andere richtung bereitet mir Kopfzerbrechen. Nehmen wir an, ich hab 500 Bit tags (welche von externe in interen umkopiert werden) welche alle in dem gleichen rohdatenblock liegen. Nun will ich den rohdatenblock übertragen wenn sich mind. 1 bit geändert hat. D.h. ich müsste eine Trigger funktion scrippten, und darin all diese 500 Tags als Trigger anlegen. Aber das ist unschön, und ich weis nich mal ob das möglich ist. kann ich keine gruppen von tags anlegen, auf die getriggert werden?
 
... du wirst hier in der Visu sicher innerhalb eines Doppelwortes auf "Wert-Änderung" triggern können. Damit hättest du zumindestens 32 Bits auf einmal erwischt.
Für alles andere wirst du warscheinlich nicht darum herumkommen, dir in der SPS etwas zu erstellen, das den ganzen Datenbereich scannt, auf Änderung gegenüber dem letzten (gespeicherten) Stand vergleicht, wenn ja ein Bit setzt (welches dann dein Visu-Trigger ist) und den aktuellen Stand als Vergleichs-Stand abspeichert ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
die richtung SPS zu PC funktioniert ja, ich trigger auf änderung der Rohdatenblock, und mappe so die entsprechenden daten in die tags..

ich kann keine doppelwörter etc. an legen.. ich muss exakt die tags so beibehalten wie sie als extrern defineirt waren, nur das sie jetzt interne sind.. wenn sich irgend ein internen tag ändert, dann soll das auf as drohdaten tag übertragen werden..
 
ich kann keine doppelwörter etc. an legen.. ich muss exakt die tags so beibehalten wie sie als extrern defineirt waren, nur das sie jetzt interne sind.. wenn sich irgend ein internen tag ändert, dann soll das auf as drohdaten tag übertragen werden..

Auf Seiten der SPS können (z.B. in einem Datenbaustein) allle Speicherstellen beliebig adressiert werden. Du hast vielleicht ein ARRAY of BOOL angelegt - das kannst du aber genausogut (in 32-Bit-Schritten) als Doppelwort adressieren ... und natürlich genauso auch von der anderen Seite her ...

Gruß
LL
 
ja, ich weis wie das funktioniert, ich habe ein Rohdaten wrapper scripte gemacht, welche sich wie Get.. bzw. SetTag.. verhalten.. ! das funktioniert auc wunderbar, das problem ist nur, wenn ich ein bit ,integer oder word veränder wird der ganze block übertragen, was aber nich soo schlimm ist, das weite problem

SPS -> HMI:

1. SPS verändert DB
2. WinCC Regaiert auf entsprechednen Rohdatenblock
3. WinCC Mappt bzw. splitte rohdaten in entsprechende "internen" tags

Jetzt verhält sich das ganze als ob die internen tags dirkt als exteren tag angelegt sind.


HMI-> SPS:

1. WinCC Verändert Tag x von n Tags des entsprechenen rohdatentag
2. Zusammenfassen der Tagsdaten in das rohdatenblock und übertragen

Funktioniert auch.. NUR.. wie kann ich auf alle n Tags gleichzeitig triggern, damit ich weis der rohdatenblock aktualisert werden muss??? jetzt verstanden?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
HMI-> SPS:

1. WinCC Verändert Tag x von n Tags des entsprechenen rohdatentag
2. Zusammenfassen der Tagsdaten in das rohdatenblock und übertragen

Funktioniert auch.. NUR.. wie kann ich auf alle n Tags gleichzeitig triggern, damit ich weis der rohdatenblock aktualisert werden muss??? jetzt verstanden?

Nein ...! (das liegt aber vielleicht auch an deiner Schreib-Syntax)

Aber das was ich verstanden habe funktioniert nur so, in dem du den Stand deines Datenblocks mit einem gespeicherten Stand vergleichst ...
 
Zurück
Oben