BOOL to WORD

giro

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe ein Problem bei der Programmierung einer S7 CPU 315. Ich möchte in einem Touchpanel (TP177A) Meldungen visualisieren. Dazu benötige ich WORD Variablen aus der SPS. Die BOOL-Variablen in der SPS sind im DB1 hinterlegt. Ich habe einen DB2 für die Meldungen mit WORD-Variablen angelegt. Wie ist es möglich die einzelnen BOOL Variablen in ein WORD zu schreiben?

Vielen Dank

Gruß
 
Die BOOL-Variablen in der SPS sind im DB1 hinterlegt. Ich habe einen DB2 für die Meldungen mit WORD-Variablen angelegt. Wie ist es möglich die einzelnen BOOL Variablen in ein WORD zu schreiben?
Du kopierst die BOOL-Variablen (DB1) per Blockmove auf die WORD-Variablen (DB2).
[Blockmove = SFC20]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe ein Problem bei der Programmierung einer S7 CPU 315. Ich möchte in einem Touchpanel (TP177A) Meldungen visualisieren. Dazu benötige ich WORD Variablen aus der SPS. Die BOOL-Variablen in der SPS sind im DB1 hinterlegt. Ich habe einen DB2 für die Meldungen mit WORD-Variablen angelegt. Wie ist es möglich die einzelnen BOOL Variablen in ein WORD zu schreiben?

Vielen Dank

Gruß

Ja das geht (wie Paule geschrieben hat), aber du kannst auch word Variablen auf den DB1 anlegen (nur halt nicht symbolisch).

PS.: (Werbung) hier gibts von mir noch ein kostenloses Tool (http://sps-forum.de/showthread.php?t=40921) mit dem kannst du dir von einem StörmeldungsDB direkt die Flexible Variablen und Störungen anlegen lassen!
 
hallo,

danke für die schnelle Info, ich benutze die S7 v5.5 Version. Leider weiß ich
nicht wie ich den SFC20 Baustein einrichte. Wenn ich im Programm auf den SFC Baustein Button drücken will geht da nichts. Das angebotene Tool lässt sich nur unter Win7 installieren aber nicht im XPMode wo das S7 installiert ist.
Leider hab ich mit AWL-Programmierung so gut wie noch nie gearbeitet, da wäre vllt. ein Beispiel-Programm zu dieser Funktion hilfreich.

Danke nochmal

gruß
 
Du musst nur in AWL schreiben:
Code:
CALL SFC20
dann wird der Baustein automatisch in den Bausteinordner abgelegt.

Beschaltet wird er über ANY Zeiger:
Code:
(Quelle) :P#DB1.DBX0.0 Byte 4
RET_VAL: #Temp_RET_VAL (eine Int-Variable) 
(Ziel): P#DB2.DBX0.0 Byte 4
Wie genau die, von mir genannten Parameter von Quelle und Ziel heißen weiß ich gerade nicht auswendig.

Erklärung:
Mit dem Beispiel werden nun von dem DB1 ab Adresse 0, 4 Byte in den DB2 ab Adresse 0 kopiert.
Der DB1 kann (wie du es brauchst) als Bool und der DB2 als Word deklariert sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo,

danke für die schnelle Info, ich benutze die S7 v5.5 Version. Leider weiß ich
nicht wie ich den SFC20 Baustein einrichte. Wenn ich im Programm auf den SFC Baustein Button drücken will geht da nichts. Das angebotene Tool lässt sich nur unter Win7 installieren aber nicht im XPMode wo das S7 installiert ist.
Leider hab ich mit AWL-Programmierung so gut wie noch nie gearbeitet, da wäre vllt. ein Beispiel-Programm zu dieser Funktion hilfreich.

Danke nochmal

gruß

Wie schon gesagt, du kannst auch direkt Variablen auf den DB1 anlegen, und musst das nicht nochmal umkopieren!
 
ja das mit dem SFC20 hat schon mal geklappt. leider weiß ich auch nicht wie ich die INT-Variable deklarieren kann :(. die wird mir jetzt in dem SFC20 rot markiert
 
Wie schon gesagt, du kannst auch direkt Variablen auf den DB1 anlegen, und musst das nicht nochmal umkopieren!

:confused: Ich setzte ja mit dem TP ein BOOL und das muss doch innerhalb der SPS in ein WORD umgewandelt werden. Im TP kann ich ja dann Einstellen das bei diesem WORD z.B. Bit 4 eine entsprechende Meldung auslöst. Wenn ich jetzt ein WORD in DB1 anlege nützt mir das doch auch nichts ohne die entsprechende Verbindung herzustellen, oder bin ich da falsch informiert. Diese Verbindung versuche ich gerade über den BLKMOV herzustellen. Ob der WORD Baustein dann im DB1 oder DB2 steht dürfte ja egal sein, solang die Adressierung stimmt.

das das immer so kompliziert sein muss :-|
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:confused: Ich setzte ja mit dem TP ein BOOL und das muss doch innerhalb der SPS in ein WORD umgewandelt werden. Im TP kann ich ja dann Einstellen das bei diesem WORD z.B. Bit 4 eine entsprechende Meldung auslöst. Wenn ich jetzt ein WORD in DB1 anlege nützt mir das doch auch nichts ohne die entsprechende Verbindung herzustellen, oder bin ich da falsch informiert. Diese Verbindung versuche ich gerade über den BLKMOV herzustellen. Ob der WORD Baustein dann im DB1 oder DB2 steht dürfte ja egal sein, solang die Adressierung stimmt.

das das immer so kompliziert sein muss :-|

????

Ich kapiers nicht was du jetzt genau meinst. Wenn du aber z.B. Auf def Sps in Db1.dbx0.0 eine Störung hast, dir in der Visu eine Int Variable auf Db1.dbw0 anlegst, diese als Triggervariable deiner Störmeldung benutzt, und bei der Meldung sagst, bit 8 triggert diese, dann brauchst du auf der Sps keine 2 Dbs!
(bit 8 da low und high byte auf der sps im gegensatz zum tp gedreht ist!)
 
Das angebotene Tool lässt sich nur unter Win7 installieren aber nicht im XPMode wo das S7 installiert ist.

gruß


Achso, und das Tool brauch kein Win7 nur .net framework 4.0! Hilft dir aber nur wenn du deine Störmeldungen als kommentr in deinem Db hast, dann must du sie nicht nochmal ins flexible abtippen!
 
ja das mit dem SFC20 hat schon mal geklappt. leider weiß ich auch nicht wie ich die INT-Variable deklarieren kann :(. die wird mir jetzt in dem SFC20 rot markiert
Gehe in dem Baustein der den SFC20 aufruft oben in den Deklarationsteil auf den TEMP Bereich:
Als Name / Symbol z.B.: Temp_Ret_Val
Als Datentyp dann INT auswählen

@Jochen, giro will das so machen dass er auf beiden Seiten (in der SPS als Bool und im Flex als Word) symbolisch darauf zugreifen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja das mit dem SFC20 hat schon mal geklappt. leider weiß ich auch nicht wie ich die INT-Variable deklarieren kann :(. die wird mir jetzt in dem SFC20 rot markiert

Wenn du mit dem Mauszeiger langsam über die obere Bausteingrenze fährst, ändert sich der Cursor.
An dieser Stelle die Linke Maustaste drücken und bei gedrückter Taste nach Unten ziehen.
Es erscheint links ein Struckturbaum.
Auf TEMP klicken und die Variable anlegen.

Wie Jochen schon erwähnt hat, brauchst du keinen 2.DB.
Wenn du in deinem DB1 die BOOLs hast, kannst du in der SPS darauf symbolisch zugreifen.
Vom TP aus kannst du aber auch (mit Byte, Word was auch immer) darauf zugreifen, nur nicht (automatisch) symbolisch.
D.h. du musst in deinem HMI-Editor (WinCCflex?) selbst den Variablen eine Symbolik geben.

Zum Verständnis hier mal eine Tabelle der Bitzuordnung.
Beachte: die SPS ist Byte-orientiert, das Panel Word-orientiert.
Dadurch ist die Zählfolge der Bit-Nummern und daher auch die Meldenummern in der HMI jeweils Byte-getauscht.

Code:
        [COLOR=Red]I[/COLOR]           [COLOR=Green]Byte 0[/COLOR]           [COLOR=Red]I[/COLOR]          [COLOR=Green]Byte 1[/COLOR]          [COLOR=Red]I[/COLOR]
Bit     [COLOR=Red]I[/COLOR] 7   6   5   4  3  2  1  0  [COLOR=Red]I[/COLOR]  7  6  5  4  3  2  1  0  [COLOR=Red]I[/COLOR][COLOR=Black]

[/COLOR]        [COLOR=Red]I[/COLOR]                         [COLOR=Green]WORD 0[/COLOR]                        [COLOR=Red]I[/COLOR]
Bit     [COLOR=Red]I[/COLOR] 15  14 13  12 11 10  9  8  [COLOR=Red]I[/COLOR]  7  6  5  4  3  2  1  0  [COLOR=Red]I[/COLOR]
Gruß Roland

Edit:
Hallo Paule, ich war mal wieder zu langsam.
Die Tabelle hat gedauert...
 
Zuletzt bearbeitet:
Zurück
Oben