Gab es in s5 schon Pointer oder eine tricky ähnliche Programmierung ?

mega_ohm

Level-2
Beiträge
676
Reaktionspunkte
47
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Hardware- Voraussetzung:
- eine s5- CPU [vermutlich 115-xxx]
( da ich heute und morgen frei habe, kann ich ehestens freitag nacht
etwas genaueres zu der CPU schreiben)
- LAUER- Display ( PCS 100)

Das Problem:
Ich möchte die Vorschub- Länge um 3 cm verkürzen.
Im Display habe ich keine Einstell- Möglichkeit gefunden, also habe ich mal im Progi nachgesehen, woher die Länge für den "Einschub bei Prod.Start" kommt.
Ich fand einen FB7 (Symbolname: MessIst).

ungefähre Struktur:
(IN- FB)

EN = enable
Extr1= Bit1 für Sonderfunktion
Extr2= Bit2 für Sonderfunktion
MW210= (ich vermute...) der Istwert
TRANSP= (ich vermute...) irgendein Anpassungs-Wert

(Out- FB)
W_BCD= Wert in BCD ( vermutlich für's Display ??? )
W_INT= Wert, mit dem im Prog. weiter gearbeitet wird
_______________

FB7_IN:
EN = bool ( muß dieser FB überhaupt bearbeitet werden ?)
Extr1 = Bool //
Extr2 = Bool // Diese beiden Bits übergeben Sonderfunktionen, z.B.:
00= normaler Meterzähler
01= "Probe nehmen" = Vorschub => 600 mm, (wird für Labor benötigt )
10= "Einfädeln neue Prod." = Vorschub => 350 mm, <= diese will ich
ändern
11= "2x Probe" => 1200mm, 2x Schnitt ( für Labor und Zertifizierung )

MW210.... da fängt mein Problem an

Dieses MW210 wird von FB1 ausgegeben...
In diesem FB1 steht nur:
L DW 40
T MW xxx
L DW 41 // ????
T MW xxx
und irgendwann...
L DW45
T MW210 // !!!

Ein weiteres Problem für mich ist, daß meine gesuchte Funktion (die Meßrad- Umdrehung in PW66 - 68 eingelesen wird... aber nirgends [außer in der Symboltab.] auftaucht.

>>> Ich möchte nach einem mech. Umbau den Soll- Zustand so anpassen, daß das Material (Draht- Ziehmaschine) nicht beim Einfädeln in die neue Spule zu weit fährt und umknickt.


Meine Fragen:
Ist in s5 eine WORD- Adresse anders ?
- Ich lese DW40 = DatenWORD 40 => Dementsprechend verstehe ich schon mal dieses DW41 nicht.
- desweiteren sehe ich in dem ganzen FB1 kein AUF [DB].
Wie finde ich heraus, auf welchen DB (es gibt ca. 30 DB's) tatsächlich zugegriffen wird...


oder habe ich mich komplett verrannt ??

Mfg
 
In der S5 waren die DW in DB tatsächlich so adressiert, wie du es siehst, also 16-Bit-weise.

DW0 = 16 Bit
DW1 = 16 Bit
...

Ein einmal geöffneter DB ist gültig, bis ein anderer geöffnet wird. D.h., du mußt nachsehen, was vor dem FB steht.
Was ich leider im Moment nicht weiß, ob der alte DB beim Aufruf eines "Unter-FB" gespeichert und bei der Rückkehr aus diesem wieder restauriert wurde. :confused: Das weiß sicherlich noch jemand anders im Forum. Auf jeden Fall schau dir erstmal die Aufrufe vor deinem FB1 an!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
A DB xxx (STEP5)

Hallo,

Ralle schrieb:
Was ich leider im Moment nicht weiß, ob der alte DB beim Aufruf eines "Unter-FB" gespeichert und bei der Rückkehr aus diesem wieder restauriert wurde

Deine Vermutung ist richtig, die S5 merkt sich beim Einsprung in einen anderen Baustein die ursprüngliche DB-Vorgabe und stellt diese beim Rücksprung wieder her.

Gruß

Question_mark
 
Ich liege doch aber nicht so ganz verkehrt, wenn ich meine, das ein DW45 irgendwie einem Datenbaustein zuzuordnen sein muß ?

Ich sehe aber nirgends, obwohl es ganz viele DB's gibt, daß die irgendwo mal geöffnet werden... bei s7 ist das super übersichtlich...
- DB1.DBW0... ( z.B.)

Bei s5 steht doch irgendwo immer z.B. AUF DB1 :confused: oder nicht ?

Über die XReferenz gibt es nur 2 Einträge...
- einmal im FB1 ( wo aber eigentlich die ganzen Daten für das LAUER- Display gefunden werden )... deswegen habe ich ja die ganzen Menü's und die LAUER- Datei ( als *.txt geöffnet) bestimmt 200x abgeklopft... in der Hoffnung dort irgendwas zu finden..
- 2.: im Eingangsparameter FB7 (MW210)

______________________________________________________________
Wir haben nur noch ("Gott sei Ding") 2 Anlagen mit s5.

Bei einer Anlage habe ich die zusätzlichen "Sonderwünsche" nach ganz viel Suchen, Analysieren... und Finden von freien Merkern im >200 Bereich mit vielen, teilweise unbezahlten Überstunden ( Schmiermerker- Bereich verramscht ) kennen lernen dürfen... danach habe ich mir generell immer einen eigenen DB definiert, die entsprechenden MW in den DB gesichert, danach die MW manipuliert... und nach FERTIG die MW wieder mit dem Inhalt aus dem DB zurückgeschrieben...

Dieses Mal sehe ich aber gar nicht, woher die Soll- Längen kommen....
(Dann könnte ich ja daran drehen...)
Die Soll- Längen müssen doch irgendwo hinterlegt sein ??


Und wieso taucht ein PW66 ( in s7 wäre es PEW66 ) nur in der Symboltabelle, aber nirgends im Programm auf ??
( Im E- Plan ist es ein Schiele-Entrelec Counter- Modul... PW66/67 )


_____________________________________________________________
Falls ich bisher vergessen hatte, zu schreiben, daß s5 sehr gewöhnungsbedürftig ist... dann möchte ich es jetzt nachholen...

>>> s5 ist sehr gewöhnungsbedürftig !!

Viele Grüße
 
Zuletzt bearbeitet:
In der S5 waren die DW in DB tatsächlich so adressiert, wie du es siehst, also 16-Bit-weise.

DW0 = 16 Bit
DW1 = 16 Bit
...

Ein einmal geöffneter DB ist gültig, bis ein anderer geöffnet wird. D.h., du mußt nachsehen, was vor dem FB steht.
Was ich leider im Moment nicht weiß, ob der alte DB beim Aufruf eines "Unter-FB" gespeichert und bei der Rückkehr aus diesem wieder restauriert wurde. :confused: Das weiß sicherlich noch jemand anders im Forum. Auf jeden Fall schau dir erstmal die Aufrufe vor deinem FB1 an!
Bei mehreren existenten DB's muß man doch aber
Code:
AUF DB XY //  schreiben ?

Genau das habe ich aber noch nicht gefunden...
Ich weiß, das auf DW45 zugegriffen wird...
- vermute, das dieser Wert für den Vorschub irgendwo steht...
... und kann ihn bei mehr als 10 DB's nicht finden.

Die ersten 3 DB's habe ich mir mal angeschaut...
... DW251... oder so ähnlich war der letzte Eintrag.
DW45 war in diesen 3 DB's KF = 0000

Auf diesem Weg (in den DB's nach einem Wert zu suchen) werde ich sicher alt und grau... aber nicht fündig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mega,
zur Vervollständigung deiner Verunsicherung :
Auch bei der S5 war es schon möglich "indirekt" auf Speicherbereiche zuzugreifen. Das ging hier mit dem "B"-Befehl (bearbeite). Auf diese Weise liessen sich auch DB's aufschlagen :
Code:
L MW100
B DB0    // es wird der DB bearbeitet, dessen Nummer durch den Inhalt des MW100 festgelegt ist
 
L MW20
B DW0    // es wird das DW geladen, dessen Nummer durch den Inhalt des MW20 festgelegt ist

Die Zählerkarte (wenn es eine solche ist) wird sehr wahrscheinlich über einen FB ausgelesen und dann in die DW's übertragen.

Gruß
LL
 
Bei S5 hier der Befehl

A DBxy

Ansonsten suche auch nach der von Larry bereits erwähnten indir.Adressierung.

L MWxy
B DB0 //ist hir immer 0, wegen der indir. Adressierung mit der Nummer aus MWxy
 
Code:
L MW100
B DB0    // es wird der DB bearbeitet, dessen Nummer durch den Inhalt des MW100 festgelegt ist
 
L MW20
B DW0    // es wird das DW geladen, dessen Nummer durch den Inhalt des MW20 festgelegt ist
Sorry, falls ich mich irre, vielleicht habe ich es nur lange nicht mehr gemacht, aber war es nicht eher so:
Code:
B MW20
L DW0    // es wird das DW geladen, dessen Nummer durch den Inhalt des MW20 festgelegt ist
Und dann sollte das Aufschlagen eines Bausteins so aussehen:
Code:
B MW100
A DB0    // es wird der DB bearbeitet, dessen Nummer durch den Inhalt des MW100 festgelegt ist
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Zottel:
Ich habe das auch schon (sehr) lange nicht mehr gemacht. Es kann also sehr gut sein, dass du da Recht hast. Leider kann ich das im Moment nicht überprüfen.

Gruß
LL
 
Ja stimmt wohl, Zottel hat wohl die Syntax noch richtig im Kopf denke ich!
 
Ich liege doch aber nicht so ganz verkehrt, wenn ich meine, das ein DW45 irgendwie einem Datenbaustein zuzuordnen sein muß ?

Ich sehe aber nirgends, obwohl es ganz viele DB's gibt, daß die irgendwo mal geöffnet werden... bei s7 ist das super übersichtlich...
- DB1.DBW0... ( z.B.)

Bei s5 steht doch irgendwo immer z.B. AUF DB1 :confused: oder nicht ?

es ist difinitiv so wie qm sagt, die s5 merkt sich den im aufrufenden baustein geöffnetetn db und öffnet diesen wieder nachdem sie den aufgerufenen fb verlassen hat.


Über die XReferenz gibt es nur 2 Einträge...
- einmal im FB1 ( wo aber eigentlich die ganzen Daten für das LAUER- Display gefunden werden )... deswegen habe ich ja die ganzen Menü's und die LAUER- Datei ( als *.txt geöffnet) bestimmt 200x abgeklopft... in der Hoffnung dort irgendwas zu finden..
- 2.: im Eingangsparameter FB7 (MW210)

2 einträge von was?


______________________________________________________________
Wir haben nur noch ("Gott sei Ding") 2 Anlagen mit s5.

Bei einer Anlage habe ich die zusätzlichen "Sonderwünsche" nach ganz viel Suchen, Analysieren... und Finden von freien Merkern im >200 Bereich mit vielen, teilweise unbezahlten Überstunden ( Schmiermerker- Bereich verramscht ) kennen lernen dürfen... danach habe ich mir generell immer einen eigenen DB definiert, die entsprechenden MW in den DB gesichert, danach die MW manipuliert... und nach FERTIG die MW wieder mit dem Inhalt aus dem DB zurückgeschrieben...

wen interessiert das?
...du kannst einfach keinen beitrag hier verfassen ohne allen zu sagen was du doch für eine arme stressgeplagte sau bist...


Dieses Mal sehe ich aber gar nicht, woher die Soll- Längen kommen....
(Dann könnte ich ja daran drehen...)
Die Soll- Längen müssen doch irgendwo hinterlegt sein ??

sofern die sps die positionierung macht, müssen die werte da irgendwo sein. oder macht das vielleicht dieses komische schiele ding und die sps zeigt ur im displax was an?


Und wieso taucht ein PW66 ( in s7 wäre es PEW66 ) nur in der Symboltabelle, aber nirgends im Programm auf ??
( Im E- Plan ist es ein Schiele-Entrelec Counter- Modul... PW66/67 )

vielleicht wird im programm ja auf einzelen bits (e66.0...) oder auf ew66,eb66, ed66 zugregriffen.
ed66 wäre denkbar weil auf perepherieadressen (pw) kein doppelwortzugriff möglich ist.

oder es passiert indirekt, und der bausteind er das macht hat zb. nur eine "66" als parameter.

ich würde in diesem fall von hinten her suchen, wenn es im display eine istwertanzeige gibt, dann muss die variable da irgednwo deklariert sein...


_______________________________________________________
Falls ich bisher vergessen hatte, zu schreiben, daß s5 sehr gewöhnungsbedürftig ist... dann möchte ich es jetzt nachholen...

>>> s5 ist sehr gewöhnungsbedürftig !!

Viele Grüße
[/quote]

ich mag s5 aus 4 gründen:
1. es läuft stabil
2. es ist abgekündigt und diese nerviger sp und hf flut wie bei neueren systemen gibt es nicht! :TOOL:
3. es ist schön übersichtlich - nur ein fenster :ROFLMAO:
4. wurden die meisten s5 programme noch zu einer zeit geschrieben als man nicht jeden volidioten an ein pg gelassen hat. deshalb sind sie meist sauber strukturiert. und man kann sich nach etwas einarbeitung auch noch im ag abzug zurechtfinden... :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
FB 7
NW 1
// Parameterliste
Bez: NEU     E/A/D/B/T/Z: E   BI/BY/W/D: BI
Bez: ZAEH   :D  :KF
Bez: PROW  :E  :W
Bez: EINW  :D :KF
Bez: NORM  :D :KF
Bez: PROK  : A :BI
Bez: EINK  :A :BI
Bez: FRG  :A :BI
 
NW 2 // Portadressen
LW =ZAEH
T MW250 // Portadresse Zähler
L KF+2
+F
T MW252 // Portadresse Steuerwort
 
NW3 // Zähler auslesen
B MW 250 // Portadresse Zähler
L PW 0
T MW 46 // Zähler IST
 
NW4 // Impuls starten
U =NEU // Start- Eingang
= M 255.0
U M 255.0
UN M 49.2
= M 49.1
S M 49.2
UN M 255.0
R M 49.2
 
NW5 // Zähler resetten
O(
L MW 46 // Zähler IST- Wert
L KF+2 // Minimalwert für Null
>F
)
ON M 49.0 // Flag löschen liegt an
SPB =M001
R M 49.0
L KH0000
B MW 252
T PW 0
SPA = M002
... usw.
M002:***
 
NW6 // Zählwert normieren
LW =NORM // Normierungswert
T MW 250
SPA FB 242
Da kommt schonmal nirgends ein für mich erkennbarer DB- Aufruf.
Code:
// Der Aufruf des FB7 erfolgt in PB31. Dieser PB ist in FUP programmiert, da sehe ich auch keinen DB- Aufruf
Aufruf FB7
 
Name: Messroll
Neu: M 31.0
Zaeh: KF+66 // das könnte mein PW66 sein ??
Prow: MW210
Einw: KF+540
Norm: KF+6177
Prok: M 31.1
Eink: M 31.2
Frg: M31.3
 
d hast du es doch:

NW 2 // Portadressen
LW =ZAEH
T MW250 // Portadresse Zähler
L KF+2
+F
T MW252 // Portadresse Steuerwort

NW3 // Zähler auslesen
B MW 250 // Portadresse Zähler
L PW 0
T MW 46 // Zähler IST

an "ZAEH" wird ja beim aufruf 66 anparametriert, und da wo L PW0 steht wird dann indirekt auf PW66 zugeriffen.

im MW46 steht der messwert
 
Und für was brauchst du in deinem FB7 einen DB aufruf?
Da wird ja nirgends mit Daten aus einem DB gearbeitet. Alles Merker und Konstante...

godi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
d hast du es doch:



an "ZAEH" wird ja beim aufruf 66 anparametriert, und da wo L PW0 steht wird dann indirekt auf PW66 zugeriffen.

im MW46 steht der messwert
Ok, alles klar. Das ist der IST- Wert.
Der wird über einen FB in DUAL (mm) umgewandelt.
Der SOLL- Wert wird über =PROW (MW210 ) an den FB übergeben.

Leider hatte ich für FB7 NW7 nicht mitgetippselt.
Code:
L =PROW
T MW 250
U M 255.0
R M 255.0 // Vorzeichen + simulieren
SPA FB BCD-D // BCD in Dual wandeln
NAME: COD:B4
BCD: MW 250
SBCD: M 255.0
DUAL: MW 42 // SOLL- Wert

Aber woher kommt der SOLL-Wert ?
Wenn ich nach MW 210 suche, finde ich dieses 1x als Übergabe-Parameter
an den FB7 und 1x im FB1/ NW7
Code:
// FB1 / NW 7  => Sonder- Bit- Funktionen
 
L DW 44
T EW 106
L DW 45 // Sonder- Timer- Wert
LW =EXT1 // Bereich
OW // zusammenfügen
T MW 210 //  <====
L DW 46
LW =EXT2
OW
T MW 212
L DW 47
LW =EXT3
OW
T MW 214
L DW 48
LW =EXT4
OW
T MW 216
 
// Die Struktur des FB1 / NW1
Name: TRANSFER
Bez: EXT1 :D :KT
Bez: EXT2 :D :KT
Bez: EXT3 :D :KT
Bez: EXT4 :D :KT

Dannach stehen in diesem NW1 nur noch
Code:
L AW 100 // Leuchtmelder und Display- Modus übergeben
T DW 12
L AW 102
T DW 13 // Ist eigentlich alles für die LAUER- Displays
....
L AW 124
T DW 22
***
Nirgends sehe ich, in welchen DB die DW geschrieben werden.
 
ich mag s5 aus 4 gründen:
1. Es läuft stabil
2. Es ist abgekündigt und diese nerviger sp und hf flut wie bei neueren systemen gibt es nicht! :tool:
3. Es ist schön übersichtlich - nur ein fenster :ROFLMAO:
4. Wurden die meisten s5 programme noch zu einer zeit geschrieben als man nicht jeden volidioten an ein pg gelassen hat. Deshalb sind sie meist sauber strukturiert. Und man kann sich nach etwas einarbeitung auch noch im ag abzug zurechtfinden... :rolleyes:


*ack* *ack* *ack* *ack*
 
Kann es sein, daß ich die Lösung gefunden habe ?
Code:
// OB1 / NW 1
L KF +2416
T MW 238
L KF +16384
T MW 240
A DB 239 // <== dann müßten mein gesuchter Wert in DB239 liegen ???
SPA FB1
Name: Transfer
Ext1: KT 000.0
Ext2: KT 000.0
Ext3: KT 000.0
Ext4: KT 000.0
SPA FB2 // dort wird DB 237 geöffnet
SPA PB0
SPA PB1
...
 
Zurück
Oben