Bit in Merkerwort

Bronko1

Level-2
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute

ich habe mal eine Frage ich habe sehr viele Merker die ich verwende.
Ich würde diese gerne durch MW ersetzen wegen der Benutzerfründlichkeit.
Beispiel aktuelle Lösung:
Eingang FB: M0.0 bis M1.7
Ausgang FB: M20.0
Funktion FB:
U M0.0
Un M0.1
...
= M20.0

gewünsche Lösung:

Eingang FB's: MW 0
AusgangFB: M20.0
interne Funktion:
wie oben (unterschied ich habe nur einen eingang anstelle von 16 eingängen)

habe es mit pointern versucht komme da aber nicht so recht weiter.
Anmerkung: ich möchte das bit im MW nit mit der Anweisung S setzen sondern mit der anweisung = den sonst bin ich gezwungen es zurück zu setzen.

könnte mir jemand dabei helfen einen Brauch baren S7 und/oder S5 zu erzeugen.
Ich frage weil ich mich grade mit einer S5-100U 103CPU rumschlagen und ihr alle kenn glaube ich das Problem mit der Flanken erkennung bei der S5, wenn nicht man muss sie selber schreinben und benötigt dazu hilfsmerker und des wegen das MW.

Danke schonb mal im Vorfeld
 
im statischen Bereich des FB's ein Wort als IN_Parameter definieren
im FB schreibst du:
L "Name des Word aus den IN_Parmetern"
T LW 0 //Word 0 im Temp-Bereich des FB
im Tempbereich kannst du dann die einzelnen Bits des Word 0 definieren. Dann machst du das ganze nochmal für die OUT_Parameter!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn ich das richtig verstehe meinst du das so
Name: ....
BEZ: mwx ABI
BEZ: IN EBI
BEZ: OUT ABI

L= MWx
T LW0
=m0.0 Bit im MW0?(Adressierung)

...
==out

oder wie?
bitte mal konkret bin ein umsteiger von Mikrokontroller zu SPS aber schon mal danke
 
Zuletzt bearbeitet:
is ja egal brauch den Code auch für s7 den der soll einmal auf der s7 und der s5 laufen habe ich den code für s7 kann ich mir ihn auch bleiten zu s5
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja bei der S5 macht man sowas am einfachsten mit Schmiermerkern.

Also einfach
L =IN
T MW200

Und dann wie gewohnt mit M200.0 .. M201.7 weitermachen.

Der Bereich ab MW200 ist für "normale" Programmierung quasi Tabu, da diese Bereiche auch von div. Siemens-Bausteinen verwendet werden.

Prinzipiell würde das präzise so auch bei der S7 funktionieren, aber da nimmt man eben den Temporärbereich, z.B. LW0 für sowas.

Mfg
Manuel
 
ich stehe grade auf dem schlauch ich gebe mal meine baispeil code dazu PS: ich arbeite mit 25 FB's
0000 :SPA -FB6 FB6
0001 NAME :STROMSTO
0002 TAST > -LichtTaster1 E2.0 (E/BI)
0003 VISU > -LichtButton1 M1.0 (E/BI)
0004 FLA > -M14.0 M14.0 (E/BI)
0005 ZW > -M14.1 M14.1 (E/BI)
0006 HIM1 > -M14.2 M14.2 (E/BI)
0007 HIM2 > -M14.3 M14.3 (E/BI)
0008 HIM3 > -M14.4 M14.4 (E/BI)
0009 HIM4 > -M14.5 M14.5 (E/BI)
......
000A SZE1 > -Lichtszene1S M3.3 (E/BI)
000B SZE2 > -Lichtszene2S M3.4 (E/BI)
000C SZE3 > -Lichtszene3S M3.5 (E/BI)
000D MW > -M13.0 M13.0 (E/BI)
000E LAMP < -Lichtgruppe1 A11.0 (A/BI)
000F RM < -LichtRueckmeldung1 M5.0 (A/BI)
0010 RSB > -Ruecksetzebit M3.6 (E/BI)
0011 :***

M14.00-m19.9 sind die hilfsmerker
die durch das MW ersetz weden sollen
und ich will da in dem FB dierekt den M14.1 ansprechen und abragen können kannst du mir mal da einen Beispiel code geben ich sitze da schon etwas länger dran da danke für die hilfe schon mal im vorraus
 
nur mal angenommen ich manche eine Variable IN MWX wie kann ich dan im FB die einzelnen bit's des mwX aufrufen, zuweisen und abfragen mal bitte ein beispiel code
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich will einfach das MW wider aufsplitten und die mierker dan zu weisen
Das Aufsplitten kan in einem extra Fb passieren oder direkt im verwendungs FB
DAS MW bekommt mur der User zu sehen die zwei gezechneten kommen dan noch mal wenn es sein mus in ein FB
so das nur noch der eingeng für das MW da ist in die Ausgänge
 
Beispiel aktuelle Lösung:
Eingang FB: M0.0 bis M1.7
Ausgang FB: M20.0
Funktion FB:
U M0.0
Un M0.1
...
= M20.0

gewünsche Lösung:

Eingang FB's: MW 0
AusgangFB: M20.0
interne Funktion:
wie oben (unterschied ich habe nur einen eingang anstelle von 16 eingängen)
L Eingang //Word
L256
==i
= Ausgang //bool

Im FC/FB....
 
Zuletzt bearbeitet:
Bei der S7 könnte man auf die Schnittstelle vom TE (die Merker M14.0 ...) vollständig verzichten, indem man einen "vernünftigen" FB programmiert.

P.S. Die S5-Lösung steht in meinem obigen Thread,
lediglich nach der Verknüpfung der div. Merker muss noch

L MW200
T =IN

Mfg
Manuel
 
ICh glaube ich habe es verstanden.
Als von 0 bis 255 Adressiere ich das High Byte des MW
und ab 256 das Low Byte des MW

Also würe mein S5 FB würde ich so schreiben


Name: Splitter
BEZ: MWX EBI
BEZ: M 0.0 ABI
:
:
:
BEZ: M1.7 ABI

L MWX
L256
==i
= M0.0

L MWX
L256
==i
= M0.0

....


ist das so richtig ???
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nicht ganz!

Wenn eins von den anderen Bits noch gesetzt ist, passt die 256 nicht mehr.
Ich würde deshalb vor dem Vergleich, das entsprechende Bit mit UW ausfiltern:
Code:
L MWx
L 256
UW
==i
=Mx.x
 
ok ich werde morgen an Meinem S5 und s7 testaufbau dies test, wie gesagt diese merker weden nur als Flanken Hilfsmerker verwendet also nur in dem fb wo sie eingegeben werden d.h. haben keine schnitstellen funktion thx
 
Zurück
Oben