TIA Profibus Addressierung Frage!

EMZ

Level-2
Beiträge
232
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPSler,

Ich möchte Daten über einen MDX Movidrive von SEW über eine direkte Adressierung lesen und schreiben.

Kurzes Beispiel zur GSD Datei:

In HW Konfig: Sew umrichter mit 6 Worten: Anfangsadresse 268

Deklaration laut SEW Bedienungsanleitung erweiterte Buspositionierung
PE 1 Statuswort
PE 2+3 Ist Position high+low
PE ISt-Strom
.
.
.

So jetzt ein willkürliches Beispiel:
Ich möchte jetzt z.B. die Ist-Position mit einer beliebigen Zahl vergleichen und über die Programmiersprache SCL vergleichen.
Wie würde dann die Zeile aussehen?

Ist das dann so, dass
1Wort: Statuswort = PEW 268+269
2 Worte (weil 32bit): IST - Position= PED 270+273

1Wort : Ist-Strom =PEW 274+275
.
.
.
Also ich würde schreiben

PED 270 := MD 10;
Ausgang x := MD10 <= 1200; ( z.B. mm)

Oder

PEW 274 := MW 20;
Ausgang yx := MW20 > 2,5; (z.B Ampere)


Ich weiss dass man das ganze einfacher lösen kann, mir geht es nur darum, ob ich das Verstanden habe wie es funktioniert und ob ich damit richtig liege.
also kann ich auch direkt die Adresse PED 270 über Merkerdoppelwort lesen?


Fragen:
Frage 1: Muss ich wenn ich ein Dint also
32 Bit (2Datenworte) habe, PED 270 schreiben oder PEW 270?

Frage2: Ist die Porgrammierung wie oben in SCL so auch möglich ( ich weiss man macht es anders, frage ist nur ob es auch so funktionieren würde wenn ich nur die Ist-Position lesen und verarbeiten möchte?)

Frage 3: stimmt es, wenn ich schreibe, für PE 1 = PEW 268
für PE 2+3 = PED 270 ?
Oder muss es auch PEW 270 heissen obwohl es 32bit ist?

Danke im Voraus

LG
EMZ
 
Hallo,
ich habe mit TIA noch keine Erfahrung. Ich kann dir nur für Step7 antworten. Sollte aber auch für TIA passen.

Ist das dann so, dass
1Wort: Statuswort = PEW 268+269
2 Worte (weil 32bit): IST - Position= PED 270+273
1Wort : Ist-Strom =PEW 274+275
1 Wort: Statuswort = PEW268 (PEB268-269)
2 Worte IST-Position = PED270 (PEB270-273)
1 Wort : Ist-Strom = PEW274 (PEB274-275)

Also ich würde schreiben
PED 270 := MD 10;
Ausgang x := MD10 <= 1200; ( z.B. mm)
Oder
PEW 274 := MW 20;
Ausgang yx := MW20 > 2,5; (z.B Ampere)
s. Antwort zur Frage 2

zu Frage 1: PED270

zu Frage 2:
MD10:=PED270
MW20:=PEW274

zu Frage 3: s. Frage 1

Du kannst testweise Pseudo-Variablen mit den jeweiligen Datentypen in der Symbolik oder in einem DB anlegen. Dann siehst du den Zusammenhang zwischen Byte, Wort und Doppelwort.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute Danke für eure Hilfe, hat mich sehr weitergebracht.
Nur stehe ich Leider vor einem Problem.

Ich möchte wie schon beschrieben mit der Ist-Position einen Wert vergleichen und damit einen Ausgang schalten.
Über PLCSIM möchte ich dann "Einfügen"-> "Merker" -> als eingangsbyte "PED258" hinschreiben und damit dann den Wert manuell eingeben kann. z.B PED 1100.
Dieser Wert soll dann in meinen Vergleicher auch also 1100 (vergleichen mit) 1200 sein.
Ich hab leider keine Ahnung was ich falsch mache, aber ich mache was falsch.
Hier mal en Blick in mein OB1 und FB1
Anhang anzeigen 30742
falls das Bild zu unscharf ist, habe ich es noch über diesen Link hochgeladen:

http://fs5.directupload.net/images/151121/nddz75ra.png

Wie könnte ich das Programmieren das es so geht wie ich es haben möchte?
Ich danke für jegliche Hilfe


LG
EMZ
 
Zuletzt bearbeitet:
Habe Sie die HW auch in der PLC_SIM gelade? wenn ein Periferie adresse nicht in die HW geladen ist geht die CPU in stop ohne OB85.
hier ein bild mit PLCsim und PED270 ins programm.
Gruss Joop
SCL.JPG
 
Ich hab leider keine Ahnung was ich falsch mache, aber ich mache was falsch.
Kannst Du definieren, wie sich Dein "falsch" bemerkbar macht?

Kann es sein, daß der Ausgang Deines Bausteins true bleibt, auch wenn Ist-Position wieder < 1200 wird?
Ist das im Bild der komplette Code des FB? Die eine sichtbare bedingte Zuweisung an #ausgang ist nicht genug. Wenn #ausgang nichts zugewiesen wird, dann behält #ausgang seinen Zustand bei. Das ist das Problem der für Anfänger vermeintlich einfachen IF...-Konstrukte.

Wenn #ausgang kein Speicher-Verhalten haben soll, dann solltest Du dafür sorgen, daß #ausgang immer etwas zugewiesen wird (den Code also nicht in ein IF packen):
Code:
#ausgang := #"Ist-Position > 1200;

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Leute, hat sehr gut geklappt.
Vielen Danke jetzt bin ich ein Schritt klüger :)

@harald

Ne das war nur ein Testprogramm. Diese ganze Übung soll nur zum testen dienen, aber wenn ich das ohne Speichernde funktion haben möchte dann mache ich da ein ELSE unten drunter.

Ich hab noch ne kleine Frage.
Bei der Simulation (wegen fehlender Hardware) habe ich sowas geschrieben.

Hier habe ich kleine änderungen vorgenommen. Mein Programm sieht jrtzt so aus.


//Schnittstelle:
Input : Ist-Position (Dint)
Output: Ausgang (bool)
Temp.: - PED 258 (DWord)
- MD10 (Dword)


PED258:= MD10;

MD10:= DINT to DWORD (Ist-position);

IF Ist-position > 1200 then
Ausgang := true;
Else
Ausgang := false;
End_IF;


Oder kann ich das auch so schreiben ohne zuweisung von ped258 auf md10)?:



PED258:= DINT to DWORD (MD10);

IF MD10 >1200 then
Ausgang:= true;
Else
Ausgang:=false;
END_IF;




Frage ist, ob ich wenn ich jetzt einen Servoumrichter mit der SPS in wirklichkeit verbinde, ob ich dann auch den PED258 einen Merkerdoppelwort zuweisen muss, oder ob ich z.B. direk mit PED 258 auf den IN: Eingang eines vergleichers draufgehen kann und dabei den Vergleicher auf DWord parametriere?
(Mit TIA-Portal v13 software)

LG
EMZ
 
Zuletzt bearbeitet:
Die temp var machen gar nichts. Wenn sie nur die eine regel code van Ralle brauchts ist es ok.
Wenn Sie probleme habe mit de PED in plcsim dan konte sie bei anruf der FB ein MD nemen und da mit steueren ein werd in schreiben.
Joop
 
Ne das war nur ein Testprogramm. Diese ganze Übung soll nur zum testen dienen, aber wenn ich das ohne Speichernde funktion haben möchte dann mache ich da ein ELSE unten drunter.

IF Ist-position > 1200 then
Ausgang := true;
Else
Ausgang := false;
End_IF;
Ist so nicht falsch, aber die Variante vom Harald ist einfacher und leichter zu lesen:
Ausgang := Ist-Position > 1200;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Okey danke, aber leider weiß ich jetzt immernoch nicht ganz ob ich auf meinen Vergleicher Eingan IN1 direkt PED258 schreiben kann, oder ob ich erst den PED258 einem MERKERDOPPELWORT zuweisen muss und diesen erst in DINT umwandeln muss, damit ich auf meinen VERGLEICHEREINGANG I1 beschalten kann. Oder muss ich grundsätzlich den PED258 IMMER ERST ZU EINEM MD ZUWEISEN?

@JOOPB
ich denke dass du meine Frage beantwortest aber leider kann ich nicht ganz verstehen was du damit meinst.
Also in der Simulation bei PLCsim kann ich auch direkt PED 258 EINGEBEN, ABER ich frage ja wie es ohne simulation ist also wenn hardware angeschlossen ist, ob ich dann ein ped 258 schreiben kann oder ob ich immer ped258 erst zu md10 zuweisen muss.

LG
EMZ
 
In Post #4 von JoopB ist die kompl. Programmierung fertig vorhanden.
Du brauchst für PLC-Sim keine eigenenen Routinen.

Am Baustein-Eingang "Ist-Position" (IN1 ?) schreibst du PED258.
Umkopieren auf Merker ist nicht nötig.
Im Baustein arbeitest du nur noch mit der Eingangvariable "Ist-Position" weiter.

Funktioniert mit PLC-Sim und mit der Hardware.
 
OK, danke.
Also kann ich auch in Realität (wenn ich einen Servoumrichter anschließe) einfach PED285 am Vergleichereingang (IN1) schreiben.
Aber bei Step 7 geht das glaube ich nicht oder ?

Könnt ihr mir dazu helfen?
Ich bekomme die PLCSIMulation nicht zum laufen und ich weis nicht warum?


PLCSIM.jpg

LG
EMZ
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In scl nur die code von Ralle oder wie in meine beispiel. Und keine Temp variabele. Bei aufruf der FB gibts du die variabele ein welche dir wunst, in ihre fall PID258 an die eingang IstPosition und an ausgang die ausgang welche sie brauch. Wenn das mit der PLCsim mit PED258 lauft lauft das in de normale SPS auch. Sie brauche in ihre SCL code die TEMP variable ped258 und md10 aber dieser variable habe nichts zu tun mit der MerkerD 10 und Periferie D 258, wenn sie der die name var_1 und var_2 geben haben Sie das selbe effekt. Entschuldiche mich fur meine Deutsch. Gruss Joop.

Edit
In ihre screenshot woltte sie dit online schnittstelle von plcsim umsetsen nach profibus. Ich denke das wicc rt die schnitstelle braucht. Schliessen Sie alle lauffende programme ab ohne Tiav13 und probieren sie das nogmals, normal konte sie auch via iso oder tcp/ip online an eine PN/DP cpu.
 
Zuletzt bearbeitet:
Zurück
Oben