Schleife Programmieren mit Simatic????

oli--pro

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich würde kerne eine kleine schleife Programmieren, ich weiß aber nicht wie??????geht dass Überhaupt????????

Es soll einfach eine Eingangs Variable so lange +1 gerechnet werden bis die Ausgangs Variable gleich der Eingangs Variable ist.
 
Code:
        L 1
next: T #[COLOR=red]huepf[/COLOR]
        L #ende
        >=I
spb    raus
        TAK
        L 1
        +I
        T #[COLOR=red]huepf[/COLOR]
spa    next
 
raus   L 0
        T # loop
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, dass ging aber schnell ;-) Super
und so schwer ist dass ja gar nicht.
hat jemand mal eine Seite wo alle befehle stehen die es gibt????
 
Zuletzt bearbeitet:
Das ist an sich nichts schweres.

Nur vorne weg: Schleifen sind in SPS Programmen immer kritisch zu betrachten da diese die Zykluszeit in die höhe treiben können und somit einen Watchdog Alarm auslösen können.
Wenn Du z.B. einen DINT wert hast hat dieser einen Bereich von -2147483648 bis 2147483647. Nehmen wir mal an Du beginnst intern mit 0 und willst auf 1000000 kommen dann hättest Du eine Schleife die eine Million mal durchlaufen muss ;o(

In SCL würde das dann so aussehen:
Code:
WHILE Zaehler < Sollwert DO
 Zaehler := Zaehler+1;
END_WHILE;

In AWL wollte ich mich gerade abmühen aber Gerhard K ist mir netter weise zuvorgekommen (DANKE).

Man kann die oben erwähnte Problematik auch umgehen wenn es das System zulässt kann man anstelle einer Schleife den SPS-Zyklus (des OB1) verwenden (das ist ja quasi eine Endlosschleife). Dies würde dann aber die Laufzeit der Schleife stark nach oben treiben z.B. 1000000 x 10ms das wären dann ca. 2,8 h ;o(

Nun mein Tipp stell doch einfach mal Deine Aufgabenstellung hier rein damit man Dich besser beraten kann.
 
Also ich möchte ein Motor Steuern.
Die Drehzahl des Motors wirt über eine Scheibe mit 30 löchern erkannt und über ein Sensor.
An den Schnellen Zählereingang meiner SPS (313 C) gegeben und mit ein SFB 48 erkannt.
Der Motor wird über einen alten Frequenzumrichter gesteuert. Die Steuer Spannung für den Frequenzumrichter ist 0- 10 V DC. Die Spannung gebe ich über ein FC106 raus.

Die Drehzahl ist frei Wählbar über ein TP 177A. In U/min

Bei momentanen Lösung ist die Drehzahl bis auf +/- 2 Einheiten genau, mir gefehlt aber nicht das der Motor im solche Hübe bekommt. Wollte daher ein langsame Annäherung machen ab +/- 10 Einheiten.
Ich stehle gleich mal mein Programm rein vielleicht habt ihr ja eine gute Idee
 
Motor

Hi,
also du möchtest eine Drehzahlregelung (mit Istwertrückführung über dein HSC) realisieren? Da gibt es Regler FBs(FB41).

Vladi
 
... du kopierst den relevanten Programmteil und fügst ihn in deinen Beitrag ein.

Zu deinem Problem :
Ich glaube, dass du hier versuchst gegen das Schwingverhalten deiner Regelstrecke zu kämpfen. Das bekommst du vermutlich nur dann in den Griff, wenn du eine gewisse "Ungenauigkeit" zuläßt um eben dieses Schwingen zu vermeiden ...

Gruß
LL
 
Hallo Ihr Lieben,



Ahm, das ist doch gleich wie:
Zaehler := Sollwert;

Wozu die Schleife...:confused: verstehe ich nicht die Aubgabe von oben...vom oli-pro

Vladi

Das trifft nicht nur auf meinen Code sondern auch auf den von Gerhard zu darum habe ich ja auch folgendes geschrieben:

...
Nun mein Tipp stell doch einfach mal Deine Aufgabenstellung hier rein damit man Dich besser beraten kann.

Dazu habe ich das ganze eh für eine Hausaufgabe gehalten.
 
CALL "FREQUENC" , DB1
LADDR :=PEW768
CHANNEL :=0
SW_GATE :=M200.0
MAN_DO :=
SET_DO :=
JOB_REQ :=
JOB_ID :=
JOB_VAL :=
STS_GATE:=
STS_STRT:=
STS_DO :=
STS_C_DN:=
STS_C_UP:=
MEAS_VAL:=MD184 // Eingang Drehzahl
COUNTVAL:=
JOB_DONE:=
JOB_ERR :=
JOB_STAT:=
NOP 0
***************************
L MD 184 // Eingang Drehzahl
L 2
*D
T MD 188 // Ist Drehzahl Anzeige Eingang in U/min
L L#1000
/I
T MW 120 // anzeige

*******************************++++







L MD 180 //soll
L MD 188
>=D
= M 20.0

*****
UN M 20.0
SPB M
L MD 180
L MD 188
-D
L 200
*D
L MW 180
+D
T MD 192
M: NOP 0
**********

L MD 180
L MD 188
<D
= M 20.1
****************

UN M 20.1
SPB M1
L MD 188
L MD 180
-D
L 200
*D
L MD 180
-D
T MD 192
M1: NOP 0
*********************
L MD 192
L 2
*D
DTR
T MD 196
************

U M 180.1
= L 0.0
BLD 103
UN M 180.0
SPBNB _001
CALL "UNSCALE"
IN :=MD196
HI_LIM :=3.600000e+004
LO_LIM :=0.000000e+000
BIPOLAR:=L0.0
RET_VAL:=MW60
OUT :=PAW752
_001: NOP 0
 
Zuletzt bearbeitet:
Regeln..

Hi,
dass Funktioniert aber auch nicht so toll mit dem FB41

FB41-Konfiguration muss auch passen..:D..entspr. der Regelstrecke.
Ich habe mit dem FB viele Regelungen gemacht..alles ok.

V.

P.S. Dein Code: so einfach kann man keine gute Regelung bekommen. Wo wird das Ganze aufgerufen, OB35?
 
Zuletzt bearbeitet:
Hi,


FB41-Konfiguration muss auch passen..:D..entspr. der Regelstrecke.
Ich habe mit dem FB viele Regelungen gemacht..alles ok.

V.

P.S. Dein Code: so einfach kann man keine gute Regelung bekommen. Wo wird das Ganze aufgerufen, OB35?
Im FB…… sry dass ist meine erste größer Programmierung die ich mache.
Ich hatte mit dem FB 41 auch nur ein P verhalten hin bekommen
 
Zurück
Oben