Probleme im Programm nach Profibusanbindung

Mikolaj

Member
Beiträge
18
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

In einer laufender Anlage hatte ich eine Auswerteelektronik fuer Prallplattenwaagen.
Das Geraet ging kaputt und laesst sich nicht meht reparieren.
Wir mussten also ein neueres Modell kaufen.


Da ich zum ersten mal ein Gaeret in Profibus anbinde ist nicht alles korekt gelaufen


Also, die GSD Datei habe ich eingespielt, die Adresse vergeben und das Ding neugestartet.
In Hardware ist das Geraet ok. und vorhanden.


Anleitung von dem neuen Geraet:
Eingangsworte (à 4 Byte, 2 word), Darstellung in Float (IEEE 4 Byte reals)
Byte Wort-InhaltWort-TypBit-AdresseBit-Inhalt
00 … 03 Förderleistung (t/h) Float
04 … 07 Zähler 1 (t) Float
08 … 11 Zähler 2 (t) Float
12 … 15 Gewicht (kg) Float

Ausgangsworte (à 2 Byte, 1 word)Byte Wort-InhaltWort-TypBit-AdresseBit-Inhalt
00 … 01 Kontrollbits 2 Bits .0 acquire zero (Nullstellen)
02 … 03 Kontrollbits 3 Bits .0.13 reset total (Zähler 1)acknowledge alarms


In der Anleitung von dem neuen Geraet steht auch dass, um die Werte in der SPS korrekt darzustellen, ist es notwendig die Bytes der Doppelworte zu
tauschen. Dieses kann im Organisationsbaustein OB1 programmiert werden.
also habe ich gemacht laut dem Beispiel aus der Anleitung:

Netzwerk: 1 Förderleistung
L PEW 258 // Lade PEW258 in Akku
T MW 0 // Transferiere den Akkuinhalt nach MW0
L PEW 256 // Lade PEW256 in Akku
T MW 2 // Transferiere den Akkuinhalt nach MW2






Bei mir im HW Konfig :
2AE - Input ( 2Word )- 1024 -1027
2AE - Input ( 2Word )- 1028 -1031
2AE - Input ( 2Word )- 1032 -1035


1AA Output ( 1 Word ) - 1004 - 1005

also in meinem Programm sieht das so aus :

Netzwerk: 1 Förderleistung

L PEW 1026 //
T MW 32 //
L PEW 1024 //
T MW 36 //

Anleitung von dem alten Geraet:

Durchsatzleistung Waage 1 (hier PED 256) als REAL
Zähler 1 Waage 1 (hier PED 260) als REAL
Zähler 2 Waage 1 (hier PED 264) als REAL

Ausgangswort Waage 1 (hier PAW 256) als WORD


Ausgangswort:
Bit 0 Nullstellen (Positive Flanke)
Bit 1 Zähler 1 rücksetzen (Positive Flanke)
Bit 2 Zähler 2 rücksetzen (Positive Flanke)
Die restlichen Bit sind frei.


Das Problem ist, nach dem ich das gemacht habe bekomme ich keine Werte in der Visu, erst als ich in am Ende in OB1 eine zusaetzliche Funktion aufgerufen habe mit dem Code:

L MD 32
T DB115.DBD 165 // Wert in der Visu

bekomme ich in der Visualisierung die richtigen Werte.

Nach dem die Bytes der Doppelworte getauscht worden sind muss man also z.B dort wo in einer Funktion PED 1024 am Eingan stand die PED durch MD 32 ersetzen oder wie soll ich das machen damit das Programm wie mit dem alten Geraet lauft.

Gruss
Mikolaj
 
Zuletzt bearbeitet:

uncle_tom

Well-known member
Beiträge
627
Punkte Reaktionen
160
mir scheint, da wird mal wieder ein "Bock zum Gärtner gemacht" - :rolleyes:

Es gibt 3 Möglichkeiten:

1. Der einfachste aber schlampige Weg: Du versuchst, wie von dir schon beschrieben, deinen Bausteinen die neuen Werte per Merker zu übergeben - das könnte klappen - wenn die Funktionen mit Pointern auf die Peripherie zugreifen, dann gibts evtl. Probleme.

2. Der eleganteste Weg: Du realisiest den Bytetausch innerhalb deiner Bausteine, indem du deren Code anpasst.

3. Der venünftigste Weg: Du lässt das jemanden machen, der Ahnung von der Sache hat ;-)
 

bike

Well-known member
Beiträge
6.464
Punkte Reaktionen
794
Kannst du garantieren, dass du das richtig machst?
Niemand wird Verständnis haben, wenn etwas schief läuft.
Da ducken sich schnell alle Schaefs weg.

Ich kann mich uncle_tom nur anschliessen, such dir jemand, der dir hilft.

Und allgemein einmal:
Nicht jeder der den Simatic Manager fehlerfrei öffnen kann, ist Programmierer.


bike
 

borromeus

Well-known member
Beiträge
2.270
Punkte Reaktionen
329
Im übrigen kannst Du alle Probleme umgehen wenn Du dort wo früher

L PEDxy
T DBDz

stand
nun
L PEDxy
SLD16
L PEDxy
SRD16
OD
T DBDz

schreibst
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.564
Punkte Reaktionen
5.167
Zuviel Werbung?
->Hier kostenlos registrieren
In der Anleitung von dem neuen Geraet steht auch dass, um die Werte in der SPS korrekt darzustellen, ist es notwendig die Bytes der Doppelworte zu
tauschen.
Dann wäre die Operation TAD meine Wahl.
Code:
L PED 1024
TAD
T MD32

Das Problem ist, nach dem ich das gemacht habe bekomme ich keine Werte in der Visu, erst als ich in am Ende in OB1 eine zusaetzliche Funktion aufgerufen habe mit dem Code:

L MD 32
T DB115.DBD 165 // Wert in der Visu

bekomme ich in der Visualisierung die richtigen Werte.
Da hast Du wohl nur mit kleinen Werten getestet ...

Nach dem die Bytes der Doppelworte getauscht worden sind muss man also z.B dort wo in einer Funktion PED 1024 am Eingan stand die PED durch MD 32 ersetzen oder wie soll ich das machen damit das Programm wie mit dem alten Geraet lauft.
Ja, kann man so machen.

Besser sieht es aus, wenn Du die Byte-gedrehten-Werte im PAE ablegst (wenn Deine CPU so große Eingangsadressen unterstützt) und alle betreffenden PEDxyz durch EDxyz ersetzt:
Code:
L PED 1024
TAD
T ED 1024

Harald
 

borromeus

Well-known member
Beiträge
2.270
Punkte Reaktionen
329
@Harald:
"Dann wäre die Operation TAD meine Wahl."

Bist Du sicher?
TAD tauscht doch AKKU1 HH gegen AKKU1 LL und AKKU1 HL gegen AKKU1 LH
Ich glaube das nicht!
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.564
Punkte Reaktionen
5.167
Byte1 Byte2 Byte3 Byte4 ---> TAD ---> Byte4 Byte3 Byte2 Byte1
Das entspricht dem Tausch der Bytes Little-Endian <---> Big-Endian, und ich meine, das war hier gesucht.
Die anderen Beispiele hier im Thread tauschen die Wörter im Doppelwort: ---> Byte3 Byte4 Byte1 Byte2 (Wozu das gut sein soll???)

Harald
 

borromeus

Well-known member
Beiträge
2.270
Punkte Reaktionen
329
Zuviel Werbung?
->Hier kostenlos registrieren
Naja das müsste man den Frage der die Anleitung zum Gerät geschrieben hat:

In der Anleitung von dem neuen Geraet steht auch dass, um die Werte in der SPS korrekt darzustellen, ist es notwendig die Bytes der Doppelworte zu
tauschen. Dieses kann im Organisationsbaustein OB1 programmiert werden.
also habe ich gemacht laut dem Beispiel aus der Anleitung:

Netzwerk: 1 Förderleistung
L PEW 258 // Lade PEW258 in Akku
T MW 0 // Transferiere den Akkuinhalt nach MW0
L PEW 256 // Lade PEW256 in Akku
T MW 2 // Transferiere den Akkuinhalt nach MW2
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.564
Punkte Reaktionen
5.167
Byte-Tausch oder Word-Tausch? Was soll man glauben?
Tja, diese Frage könnte man wahrscheinlich beantworten, wenn der TE uns verraten würde, welches Prallplattenwaage-Modell bzw. welche Profibus-Schnittstelle er nun genau hat ... meine Glaskugel schweigt ... vielleicht meldet sich Adam/Mikolaj ja nochmal.

Harald
 
OP
M

Mikolaj

Member
Beiträge
18
Punkte Reaktionen
1
Hallo,

Danke fuer die Antworten.

Das mit dem
L PEW 1026 //
T MW 32 //
L PEW 1024 //
T MW 36 //

war ein Tippfehler.

Ich glaube es war das mit dem "Big-Endian" gemeint.

Modell: Auswerteelektronik ModWeigh PPW von der Firma MTS.

Uebrigens, ich habe die PAD Bereiche in den Bausteinen durch Merkerbereiche ersetzt und laufts.



Gruss
Mikolaj
 
Zuletzt bearbeitet:

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.564
Punkte Reaktionen
5.167
Zuviel Werbung?
->Hier kostenlos registrieren
Ich glaube es war das mit dem "Big-Endian" gemeint.
Diese Aussage beläßt mich leider genauso schlau bzw. unwissend wie vorher ... :(

Uebrigens, ich habe die PAD Bereiche in den Bausteinen durch Merkerbereiche ersetzt und laufts.
Schön daß es bei Dir anscheinend funktioniert.
Ich würde aber trotzdem gerne wissen wollen, ob die Lösung zuverlässig funktioniert oder ob es nun nur zufällig richtige Zahlen anzeigt.

In der Anleitung von dem neuen Geraet steht auch dass, um die Werte in der SPS korrekt darzustellen, ist es notwendig die Bytes der Doppelworte zu
tauschen.
Steht das tatsächlich so in der Anleitung? Denn in Deiner Lösung werden keine Bytes getauscht. Nur Words. Quasi "Middle-Endian".
Gibt es zu der Profibus-Anleitung einen Downloadlink oder kannst Du die entsprechenden Abschnitte mal genau zitieren oder ein Bild machen?

Ich finde leider nur den Flyer zur Feldbusschnittstelle "Anybus Communicator", laut dem für deren Einsatz "Keine Programmierkenntnisse notwendig" sind. :ROFLMAO:

Anleitung von dem neuen Geraet:
Eingangsworte (à 4 Byte, 2 word), Darstellung in Float (IEEE 4 Byte reals)
Byte Wort-InhaltWort-TypBit-AdresseBit-Inhalt
00 … 03 Förderleistung (t/h) Float
04 … 07 Zähler 1 (t) Float
08 … 11 Zähler 2 (t) Float
12 … 15 Gewicht (kg) Float
[...]
Bei mir im HW Konfig :
2AE - Input ( 2Word )- 1024 -1027
2AE - Input ( 2Word )- 1028 -1031
2AE - Input ( 2Word )- 1032 -1035
Wie wird eigentlich die Datenkonsistenz gewährleistet, wenn die Float in 2 Words zerhackt werden? Mußt Du die Inputs in HW Konfig tatsächlich als jeweils 2 Words projektieren und deswegen auch auf PEW... statt PED... zugreifen? Oder hat man da eine Wahl?

Also, mich würde die Anleitung zu der Feldbusschnittstelle brennend interessieren ...

Was hast Du eigentlich für eine CPU?

Harald
 
OP
M

Mikolaj

Member
Beiträge
18
Punkte Reaktionen
1
Hallo PN/DP


Da ich kein perfektes Deutsch kann nimm es mir nicht uebel wenn Du bei der Erklaerung etwas nicht verstehst.

„um die Werte in der SPS korrekt darzustellen, ist es notwendig die Bytes der Doppelworte zu tauschen“- ja, so steht in der Anleitung, das ist genau zitiert wenn Du aber trotzdem nicht glaubst mache fuer Dich morgen noch ein Bild. ( da ich in Moment keine Anleitung bei sich habe ).

Ich tausche also die Words und bekomme die richtigen Werte , wie zufaellig koennte es funktionieren dass alle Werte von der Foerderleistung, Zaehler 1 und Zaehler 2 richtig erscheinen ? (vor dem Tauschen war das nicht Fall ).

Test vor dem Tauschen:
L PED 256
T DB10.DBD12// bekam ich keine richtigen Werte

Nach dem Tauschen
L PEW 258 // Lade PEW258 in Akku
T MW 0 // Transferiere den Akkuinhalt nach MW0
L PEW 256 // Lade PEW256 in Akku
T MW 2 // Transferiere den Akkuinhalt nach MW2
L MD 0
T DB10.DBD12// korekte Werte

Dieses Beispiel steht auch in der Anleitung,

Netzwerk: 1 Förderleistung
L PEW 258 // Lade PEW258 in Akku
T MW 0 // Transferiere den Akkuinhalt nach MW0
L PEW 256 // Lade PEW256 in Akku
T MW 2 // Transferiere den Akkuinhalt nach MW2

Jetzt solltest du verstehen : „Ich glaube es war das mit dem "Big-Endian" gemeint.“,
morgen mache ich Dir die Bilder.

Gruss
Adam/Mikolaj
 
Zuletzt bearbeitet:

Oberchefe

Well-known member
Beiträge
2.269
Punkte Reaktionen
363
Bei uns läuft das bei der Kommunikation S7-Codesys bei 32-Bit Variablen (sollte IECxy sein?) so:

Code:
L 16
L Quelle
RRD
T Ziel

Bei der Kommunikation ControlLogix-Codesys ist das übrigens unnötig, die haben beide die komischen Siemens-Verdrehereien nicht drin.

Ergänzung: bei der Profibusschnittstelle innerhalb des Codesys Teils ist beim Datenformat dann "Motorola" ausgewählt (alternativ wäre noch Intel möglich)
 
Zuletzt bearbeitet:

SoftMachine

Well-known member
Beiträge
2.307
Punkte Reaktionen
368
Zuviel Werbung?
->Hier kostenlos registrieren
.
....
Gruss
Mikolaj

... vielleicht meldet sich Adam/Mikolaj ja nochmal.

Harald

Hallo PN/DP

Da ich kein perfektes Deutsch kann nimm es mir nicht uebel wenn Du bei der Erklaerung etwas nicht verstehst.
....

Gruss
Adam/Mikolaj

Mal so nebenbei:

Wo kommt denn jetzt der 2. Name her ?
Kennt ihr euch vielleicht ?

Gruss
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.564
Punkte Reaktionen
5.167
Wo kommt denn jetzt der 2. Name her ? - Google
Kennt ihr euch vielleicht ? - Nein

Mikolaj hat seine Frage auch in einem anderen Forum gestellt. :cool:

Harald
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.564
Punkte Reaktionen
5.167
Ich tausche also die Words und bekomme die richtigen Werte , wie zufaellig koennte es funktionieren dass alle Werte von der Foerderleistung, Zaehler 1 und Zaehler 2 richtig erscheinen ? (vor dem Tauschen war das nicht Fall ).
Ich glaube es nun, daß das Tauschen der Words gemeint ist, die Anleitung hat das nur etwas missverständlich formuliert.
In dem Fall würde ich das Tauschen ähnlich wie Oberchefe machen:
Code:
L PEDxyz
RRD 16
T EDxyz

Bleiben nur noch meine Zweifel, wie die Datenkonsistenz bei PEW-Zugriffen gewährleistet wird.

Harald
 

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.564
Punkte Reaktionen
5.167
OP
M

Mikolaj

Member
Beiträge
18
Punkte Reaktionen
1
Steht das tatsächlich so in der Anleitung? Denn in Deiner Lösung werden keine Bytes getauscht. Nur Words. Quasi "Middle-Endian".
Gibt es zu der Profibus-Anleitung einen Downloadlink oder kannst Du die entsprechenden Abschnitte mal genau zitieren oder ein Bild machen?

Eingangsworte.jpg



OB1.jpg


OB1.jpg

Ich finde leider nur den Flyer zur Feldbusschnittstelle "Anybus Communicator", laut dem für deren Einsatz "Keine Programmierkenntnisse notwendig" sind.
HW Konfig.jpg








Anybus1.jpg
 

Anhänge

  • Anybus.jpg
    Anybus.jpg
    76 KB · Aufrufe: 9
Zuletzt bearbeitet:

PN/DP

User des Jahres 2011-2013; 2015-2017; 2020-2021
Beiträge
17.564
Punkte Reaktionen
5.167
Hallo Mikolaj,

Danke für die Bilder. Ich sehe, in dem Handbuch kann man nicht jedes Wort auf die Goldwaage legen. Mit den Bezeichnungen "Byte" und "Wort" nehmen die das nicht so genau wie ein Programmierer. Vielleicht wäre ein original englisches Handbuch präziser?

Zur Datenkonsistenz:
OK, Du hast keine Wahl bei der HW Konfig und bist auf den Hersteller bzw. Distributor angewiesen, welcher die Profibusanbindung wohl nicht besser weiß. Das Gerät ist ja außerdem noch relativ neu ...

Etwas verwundert mich, daß die Wiegewerte (4-Byte-Float) nicht konsistent projektiert werden (kann das ein Anybus-Chip generell nicht?)
Wieso werden die DP-Eingangsmodule als "2AE" mit Konsistenz nur über je ein Wort (Einheit) projektiert?
Wieso nicht als "209" (2 Words, konsistent über gesamte Länge) oder als "65" (4 Byte, konsistent über gesamte Länge)?

Mir scheint, die Datenkonsistenz ist bei diesen Waagen wohl kein sooo wichtiges Thema, die Leute im Eichwesen benehmen sich nur formal furchtbar wichtig ...

Harald
 
Oben