Bitweiser Zugriff auf Peripherie

mclear

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

Ich hätte da gern mal ein Problem ;)

Ich habe hier ein Programm von einer CPU318 vorliegen und wollte es, da nicht zeitkritisch, auf einer 315er CPU wieder zum laufen bringen.

Die Hardwarekonfig sieht dabei an den drei ET-Stationen Adressen im Bereich E550.0 bis E570.7 / E 650.0 bis E 670.7 / E750.0 bis E 770.7 und A550.0 bis A555.7 usw vor.

Die 318er CPU hat mit folgender Programmzeile keine Probleme:

U M 3.3
= A 550.6

Aber die 315er weigert sich den bitweisen Zugriff auf die Peripherie durchzuführen.

Also bleibt mir scheinbar nichts übrig als alle Bitzugriffe auf die Peripherie im Programm auf Merker zu legen und dann im OB1 die Peripherie byte- bzw. wortweise zu schreiben.

Jetzt zu meiner Frage: Welches Merkmal der CPU sagt aus, das ich bitweise auf Peripherie zugreifen kann? Ich finde den Knackpunkt zwischen CPU318 und CPU315 nicht.

Gibt es vielleicht noch irgendeinen SFC oder OB den ich anwenden könnte?

Wenn ja, ich hab das Programm schon umgeschrieben, aber wär ja interessant fürs nächste mal.

Gruß mclear


STEP7 v5.3 SP3 ---- keine Fehlermeldung beim Programm ---- bei angesteckter CPU315-2DP kommt beim Versuch zu übertragen die Fehlermeldung (D280) Fehler beim übersetzen des Programms
 
Ein bitweiser Zugriff auf die Peripherie geht unabhängig von der CPU grundsätzlich nicht. Was geht, ist ein bitweiser Zugriff auf das Prozessabbild. Dieses wird dann am Zyklusende auf die reale Peripherie übertragen. Einfach mal bei den beiden CPUs in der Hardwarekonfig prüfen, wie dort die Einstellungen für das Prozessabbild sind und ggf. die Werte entsprechend anpassen. Dann sollte das Programm klappen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin

Das Prozeßabbild der Ein- bzw. Ausgänge in deiner 315 ist nicht so groß das Du auf den "hohen" EA-Bereich zugreifen kannst. Das heißt bei den neuen 300ern kann man die Größe des Prozeßabbildes einstellen. Ich denke da liegt dein Fehler!

Gruß André
 
Bei CPU315 ist das PAE/PAA begrenzt auf jeweils 128 Bytes. Die Defaulteinstellung bei CPU318 ist 256 Bytes, es ist dort bis max 2048 Bytes einstellbar.

EDIT: bei 315 festeingestellt auf 128, bei 318 voreingestellt auf 256 ...
 
Zuletzt bearbeitet:
Hmm, also moment, ich glaub irgendwo hab ich da nen Denkfehler:

@Rainer Hönle

Ich bin mir sicher, dass das Programm auf der 318er so lief/läuft.
z.B.

U M 3.7
= A 750.6

Die Adressen sind in der HW-Konfig direkt in der ET200s vereinbart. Würde für mich jetzt bedeuten, die obere Programmzeile greift direkt auf die Peripherie zu. Natürlich liest/schreibt die Steuerung das aus dem Prozessabbild, das meine ich zumindest sollte normal sein...

@Tetrade und Perfektionist

Leider kann ich bei der CPU 6ES7-315-2AG10-0AB0 v2.0.11 das Prozessabblid nicht einstellen. Und 318er hab ich grad keine hier...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Interessant wäre aber mal, wie das Prozessabbild bei deiner "alten" 318 eingestellt ist. Das ist sicher so hoch eingerichtet (max. 2048).
 
Hmm, also moment, ich glaub irgendwo hab ich da nen Denkfehler:

@Rainer Hönle

Ich bin mir sicher, dass das Programm auf der 318er so lief/läuft.
z.B.

U M 3.7
= A 750.6

Die Adressen sind in der HW-Konfig direkt in der ET200s vereinbart. Würde für mich jetzt bedeuten, die obere Programmzeile greift direkt auf die Peripherie zu. Natürlich liest/schreibt die Steuerung das aus dem Prozessabbild, das meine ich zumindest sollte normal sein...

@Tetrade und Perfektionist

Leider kann ich bei der CPU 6ES7-315-2AG10-0AB0 v2.0.11 das Prozessabblid nicht einstellen. Und 318er hab ich grad keine hier...
Es kann schon sein, dass das Programm läuft. Grundsätzlich wird aber mit den E- und A-Befehlen auf das Prozessabbild zugegriffen, egal welche Hardware dahinterhängt. Ein direkter Zugriff auf die Peripherie erfolgt mit L PEB, L PEW, L PED, T PAB, T PAW oder T PAD. Hierbei ist nur ein Lesen der Eingänge und ein Schreiben der Ausgänge möglich. Das Prozessabild kann sowohl gelesen und auch geschrieben werden. Über Sinn und Unsinn möchte ich hier nicht diskutieren sondern nur die Möglichkeit aufzeigen. Auf die Peripherie kann auch nicht bitweise zugegriffen werden sondern mindestens byteweise.
Auf alle Daten, die außerhalb des Prozessabbildes liegen, muss über die direkten Peripheriebefehle zugegriffen werden. Innerhalb des Prozessabbildes kann frei gewählt und sogar gemischt werden werden. Es gelten die gleichen Anmerkungen zu Sinn und Unsinn wie vorher.
Ein Zugriff auf E- und A-Werte außerhalb des Prozessabbildes führen bei der CPU normalerweise zu einem Fehler. Was soll sie auch da sonst machen.
Das Prozessabbild der Eingänge wird von den realen Eingängen am Zyklusbeginn gelesen und das Prozessabbild Ausgänge wird am Zyklusende auf die realen Ausgänge (soweit vorhanden) geschrieben. Dazwischen können diese Bereiche frei manipuliert werden. Manche CPUs sind allerdings verärgert, wenn auf das Prozessabbild zugegriffen wird, hinter dem keine physikalische Hardware hängt. Die 300er sind meines Wissens nach an dieser Stelle allerdings sehr großzügig.
 
bits werden nie als peripherie angesprochen sondern immer aus dem prozessabbild.

und dieses abbild geht bei der 315er eben nur bis 127.
obige operation erzeugt also einen fehler.

dein programm wirst du so also niemals auf der 315er zum laufen bekommen.

du wirst also um ein umverdrahten nict drumrumkommen.
mit siemensinternen mitteln leider nicht möglich, da man aus einem A z.b. kein dbx machen kann. (am besten alles in eine quelle exportieren und mit einem geeigneten prog über suchen/ersetzen)

später könnte das dann z.b. so aussehen.
ob1
nw 1
l peb 750
t db10.dbb 750

nw x-y
weitere bausteine
U M 3.7
= db11.dbx 750.6

nw z (letztes)
l db11.dbb 750
t pab 750
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Prozessabbild der Eingänge wird von den realen Eingängen am Zyklusbeginn gelesen und das Prozessabbild Ausgänge wird am Zyklusende auf die realen Ausgänge (soweit vorhanden) geschrieben. Dazwischen können diese Bereiche frei manipuliert werden. Manche CPUs sind allerdings verärgert, wenn auf das Prozessabbild zugegriffen wird, hinter dem keine physikalische Hardware hängt.

Das setze ich grundsätzlich als gegeben vorraus. Mit "bitweisem Peripheriezugriff" habe ich mich falsch ausgedrückt. Ich meine schon, den Zugriff aufs PAE/PAA, aber eben mit Adressen aus einer Peripheriebaugruppe.

Das PAE und das PAA der 318er sind auf 1256 kB eingestellt. Das erklärt zwar warum das Programm da läuft, aber warum läufts auf der 315er mit:

U M 3.3
= A 550.7 nicht,

aber dafür mit

U M 3.3
= M 550.7

L MB 550
T PAB 550

Ahh, ich glaub ich hab mir das grad selber beantwortet.....

Mit T PAB fahr ich ja gerade am PAA vorbei....

Hmm, Danke für eure Antworten!!!
 
Danke nochmal Volker, dass hatte ich schon so gemacht bevor ich hier gepostet habe.

Ich war nur der irrigen Annahme, dass das irgendwo stehen sollte wenn die CPU was nicht kann, aber da es ja eindeutig im Systemhandbuch (PAE/PAA 128 kB) steht :rolleyes: (man muss es nur richtig lesen) hat sich das ganze hier in wohlgefallen aufgelöst.

Danke nochmal an alle!!!
 
Zurück
Oben