Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all 49833 articles
Browse latest View live

TIA Probleme F(x) - Kurvenanzeige

$
0
0
Hallo liebe Community,

ich verfolge schon seit Jahren all eure Beiträge, welche mir schon sehr oft geholfen haben, jedoch stehe ich aktuell vor einer Aufgabe, zu der ich im Internet nichts bzw. nicht das Richtige finden konnte.

S7 1515
TP900 Comfort

Ich möchte am Panel ein Kraft/Wege-Verlauf eines Einpressvorgangs anzeigen. Ich habe jeweils für Kraft als auch Weg ein Array mit 200 Werten angelegt und an das HMI übergeben. Per Skript lege ich die 200 Werte der beiden Arrays in ein Umlaufarchiv als CSV-Datei auf eine SD-Karte ab. Von dort werden die Werte dann in die F(x) - Kurvenanzeige geladen. Funktioniert soweit auch einwandfrei, jetzt zu meinem Problem. Die Anlage soll eine Taktzeit von ca. einer Sekunde bekommen. Das Öffnen der CSV als auch das Umlegen der Archivvariablen auf die Kurvenanzeige dauert mit ca. 1-2 Sekunden einfach zu lange. Gibt es eine Möglichkeit die Arrays nicht ablegen zu müssen bzw. direkt mit ihnen zu arbeiten? Da mir der Siemens Support auch nicht weiterhelfen konnte, wäre ich sehr dankbar über eure Hilfe.

Gruß Andreas

MC_Power Notstopp Drehmoment

$
0
0
Hallo,
ich habe eine Frage zum MC_Power. Bei StopMode 0 erhält man eine Notstopp Funktion. Man sieht den Verlauf der Geschwindigkeit.
Wie verhält sich jedoch das Drehmoment und die Bremsansteuerung bei Enable=False aus der Fahrt?
Die Notstopp-Rampe wird durchgeführt, wie ist das Verhältnis zwischen Drehmoment <> Bremsansteuerung. Erfolgt bei Ende der Notstopp-Rampe gleich drehmomentfreiheit ohne das die Bremszeit abgewartet wird?

mc_power.PNG
Angehängte Grafiken

TIA Baustein bei Bausteinaufruf auf-/zuklappen

$
0
0
Guten Morgen

Es gibt fertige Bausteine welche man beim Aufruf aufklappen kann um mehrere Eingänge oder Ausgänge zu beschalten.
Unbenannt2.PNG Unbenannt3.PNG

Kann man dieses "Aufklappen" bei den eigenen Bausteinen auch programmieren?

Mit Freundlichen Grüßen
Flo_Ju
Angehängte Grafiken

TIA Meldungen aus dem Alarmserver auslesen anstelle der Anweisung Get_Alarm (S7 1500 SPS)

$
0
0
Hallo zusammen,

normalerweise kann man ja Meldungen / Störmeldungen mit der Get_Alarm Anweisung aus dem Alarmserver einer S7 1500 SPS auslesen und in einen Datenbaustein speichern. Über einen OPC UA-Server können Clients die Informationen abrufen und ebenfalls die Meldungen quittieren.

Meine Frage ist, ob ich den Weg über die Get_Alarm Anweisung und den Datenbaustein überspringen und direkt auf den Alarmserver zugreifen kann. Gibt es irgendeine Schnittstelle, die ich ansteuern kann?

Schon mal vielen Dank für die Hilfe!

CodeSys Variabele für Kommastelle ?

$
0
0
Hallo zusammen, ich bin blutiger Anfänger in Codesys und habe derzeit ein Problem:
Ich finde keiner Variabelentypen mit dem ich Kommastellen abbilden kann. Es geht darum einen Ganzzahlwert mit 0,25 zu Multiplizieren.

Vielleicht hat ja jemand einen Lösungsansatz, mit google konnte ich mir leider bisher nicht helfen

Vielen Dank im vorraus

TIA Kommunkationslast bei Programmübertragung

$
0
0
Moin Zusammen,

mein Kollege auf der Baustelle hat mir folgendes Problem geschildert:

Wenn er ein Programm in die Steuerung einspielt, brechen z.T. seine projektierten Kommunikationen zusammen. Die OPCUA-Kommunikation scheint u.a. damit zu rechnen, dass sich die Datenstruktur ändert. Jedenfalls bricht grundsätzlich die OPCUA-Server-Verbindung zusammen und wird neu gestartet (das dauert aber bis zu 30s!). Aber die PUT/GET-Kommunikation bricht auch ab und zu mit ein.
Wir vermuten, dass die PG-Kommunikation eine hohe Kommunikationslast darstellt. Wie in einem anderen Thread schon diskutiert, erhöht sich direkt nach dem Einspielen auch die Zykluszeit für bis zu 8s um das 2-3fache.
Es ist halt so, dass wir Probleme bekommen, wenn wir die Kommunikationslast von 50% (Standard) weiter erhöhen.

Neben diesen Erscheinungen haben wir festgestellt, dass es im der Zusammefassung der zu übertragenden Bausteine ein (ausgegrautes) Häkchen an jedem Baustein gibt. Kann man damit auswählen, welche Bausteine übertragen werden sollen? Und wenn ja: wo kann man das aktivieren?

Folgende Technik wird eignesetzt:
- TIA V15.1 SP4
- 1515F-2PN

Ist unsere CPU einfach zu schwach?

VG

MFreiberger

TwinCAT 2, while-Schleife, Zykluszeitüberschreitung

$
0
0
Hallo zusammen,

ich hab ein Problem.
Ich muss nämlich ein Programm schreiben, welches ein Tages-Sonneneinstrahlprofil abfährt und an der Klemme mittels Pwm ausgibt.
Ich hab das jetzt so gemacht, dass ich die Stundenwerte der Einstrahlung in einem Array gespeichert hab.
Mit einer While-Schleife lass ich ein Array-Zähler jede Stunde um 1 nach oben gehen,
um somit immer den nächsten Wert im Array zu nehmen (von 0 bis 24Uhr). Das Programm stürzt jedoch wegen Zykluszeitüberschreitung immer ab.
Weiß vielleicht jemand wie man das ohne Zykluszeitüberschreitung implementieren kann?

Vielen Dank schonmal!

Viele Grüße

jk1234

Vergleich STEP7-AWL zu LOGO!-FDB

$
0
0
Hallo LOGO!-Fans,

ich möchte mal die Meinung von anderen Usern zu meinen Gedankengängen hören.

Nach dem ich jetzt ein wenig mit dem "Verdrahten" eines FDBs gespielt habe, fällt mir auf, dass z. B. STEP7 in der SIMATIC und die "Verdrahtung" in der LOGO! gar nichts miteinander gemeinsam haben. Es gibt zwar in beiden Bereichen den Begriff des Merkers, aber der Gebrauch eines solchen ist doch sehr unterschiedlich.

Wenn also bei einer in STEP7-AWL geschriebenen Operation das (letzte) VKE sofort verloren geht, wenn eine neue Operation gestartet wird und man das vorherige VKE später aber noch einmal benötigt, kommt man um den Gebrauch eines (Schmier)-Merkers nicht umhin. Was bei umfangreichen Programmen schon mal zu Engpässen führen kann, wenn Merker ausschließlich statisch vergeben werden.

Bei der LOGO! scheinen die Blöcke ein Gedächtnis zu haben, so dass der hemmungslose Gebrauch von Merkern eigentlich nicht notwendig ist.

Ist meine gerade gemachte Erfahrung zutreffend?

LG Batucada

Abruf der Firmwareversion

$
0
0
Hallo zusammen,

gibt es eine Möglichkeit die aktuelle Firmwareversion mittels strukturiertem Text abzurufen?

Danke im voraus

Alternative zu Radiobutton mit drei Eingängen

$
0
0
Hallo zusammen,

ich habe drei Anwahlen bzw. Betriebsmodis (BOOL) und nur einer darf immer angewählt werden.
Gibt es da bei Codesys einen schönen Baustein oder wie würdet ihr das lösen?

Danke euch schonmal :)

Pressen Anlage mit CODESYS Visualisieren

$
0
0
Hallo zusammen;

Ich hoffe ihr seit alle gesund!

Ich musste an der Uni einen Pressen Anlage programmieren und Visualisieren, mit der Programmier teil bin ich schon durch und funktioniert einwandfrei.
Ich möchte jetzt die Press Anlage visualisieren, aber leider mit dem Werkzeuge von codesys komme ich nicht weiter.
Ich freue mich auf eure Tipps.
Herzlichen Dank im Voraus

VG Fabio
Angehängte Grafiken

Step 7 Energiezähler Peaks herausfiltern (AWL)

$
0
0
Guten Tag liebes SPS Forum,

So nun muss ich mich auch mal melden :) und zwar stehe ich vor folgendem Problem:

Programm: Step 7
Sprache: AWL
Steuerung: S7-300
WinCC: TIA14


Auf einer Maschine wurde ein Energiezähler Programmiert welcher den Luftdruck via analogen eingang misst und verarbeitet (was auch wunderbar funktioniert)
Auf der anzeige gibt es einen:
Aktueller Wert
Maximaler Wert

Der Aktuelle Wert wird alle Sekunde gemessen und angezeigt
Der Maximale Wert wird nur dan Aktuallisiert wenn der Aktuelle Wert über dem Maximalen ist.

Nun ist jedoch das Problem das beim umschalten des Modus der Luftdruck kurzzeitig <1sek auf einen ziemlich hohen wert steigt, welcher natürlich in folge der Max.Wert übernimmt und dort dan auch bleibt bis dieser geresetet wird.

Zu meiner Theoretischen Lösung:
1.) vergleich aktueller Wert mit max.Wert
2.) wenn min.Wert grösser
3.) warte 1sekunde
4.) Wenn min immer noch grösser schreibe den Wert in Max.Wert hinein

Momentan sieht dies so aus
// max flow processing
L #ActualFlowRate
L #MaxFlowRate
>I
SPBN ne11

//Warte 1 Sekunde
SET
L S5T#10S
SA "T99"


U "T99"
= M 3333.0
CLR


//Nochmals vergleichen
L #ActFlowRate
L #MaxFlowRate
>I
SPBN ne04
TAK
T #MaxFlowRate

ne11: NOP 0
ne04: NOP 0


Leider ist mein wissen über AWL ziemlich begrenzt sagen wir eine Woche alt:)
Leider habe ich das verständniss nicht um einen Timer zu programmieren welcher mir den Wert nach 1 Sekunde nochmals überprüft

Analoges Sensor Skalieren Denkfehler

$
0
0
Hallo,

nehmen wir an, ich habe ein analoges Abstandssensor der im Bereich von 0 bis 200cm arbeitet. Der Sensor wird in einem Behälter montiert, der die höhe 100cm hat. Wenn ich einen Flussigkeitslevel messen will (in höhe von 10cm), sollte der Sensor an dieser Stelle
a) 10cm
b) 90cm
c) 110cm zeigen
Angeblich sollten b/c richtig sein (kommt drauf an wie man messen will) was ich nicht ganz verstehe. Auch wenn der Sensor in einem Behälter montiert wird, der kleiner als Messbereich ist, sollte doch der richtige Abstand gezeigt werden oder ? Wo mache ich ein Fehler ?

Step 7 Frage zu SCL Programmierung

$
0
0
Hallo ich habe hier mal eine Übung mit SCL. Da geht es um die Funktionen der Zeichenkette.

Warum sehe ich Online nicht die Ergebnise der Funktionen? Außer die erste und die letzte, da kommt als Ergebnis ein Integer raus. Aber die Strings sehe ich nicht.
Was muss ich tun um zu prüfen, ob auch das raus kommt, was rauskommen soll??


1.PNG
Angehängte Grafiken

TWINCAT 2 Variablen zwischen Laufzeiten Schreiben/Lesen

$
0
0
Hallo Zusammen,

ich habe mir in TC2 ein Programm geschrieben welches mit einer zweiten SPS kommuniziert und erst durch das Feedback der zweiten SPS in Automatik läuft...

jetzt würde ich gerne die "zweite sps" in einem zweiten Laufzeitsystem programmieren um so meinen Ablauf zu Testen...


ich würde also mit dem TC2 Port 801 die Variable Beschreiben und will das mit Port 802 auslesen.
Um dann mit dem Port 802 ein Feedback an 801 zurückschicken.

Kann mir jemand eventuell auf die Sprünge helfen wie ich zwischen den Laufzeitsystemen Variablen Lesen/Schreiben kann?

danke euch schonmal vorab

Danfoss FC202 an ABB AC500 per Modbus RTU

$
0
0
Hallo,
ich versuche mehrere Danfoss FC202 an eine ABB AC500 Steuerung zu koppeln. Protokoll ist Modbus RTU (FC-Profil).
Das Zustandswort kann ich lesen und das Steuerwort kann geschrieben werden und funktioniert soweit auch.
Nun möchte ich die Drehzahl verstellen (Hauptsollwert) und die aktuelle Drehzahl zurück lesen. Leider kann ich die beiden Werte nur als Coils lesen bzw. schreiben (also 16 Binärwerte lesen bzw. schreiben). Ich würde die Werte aber gerne als Register lesen bzw. schreiben, da dies einfacher in der SPS umzurechnen geht.
Zusätzlich würde ich gerne die Betriebsstundenzähler und andere Werte (Kundenvorgabe) lesen.
Leider finde ich in den Anleitungen von Danfoss keine Liste mit den zugehörigen Modbus-Registern.
Gibt es da ein spezielles Handbuch von Danfoss in dem die Register aufgeführt sind?
Muss am FU ein passendes PPO Projektiert werden?

Gruß
Patric

PS.: Die gleiche Anfrage habe ich in die Gruppe Automatisierungssysteme sonstige Steuerungen gestellt. Falls Mehrfachpost nicht gewünscht bitte löschen.

Danfoss FC200 an ABB AC500 per Modbus RTU

$
0
0
Hallo,
ich versuche mehrere Danfoss FC202 an eine ABB AC500 Steuerung zu koppeln. Protokoll ist Modbus RTU (FC-Profil).
Das Zustandswort kann ich lesen und das Steuerwort kann geschrieben werden und funktioniert soweit auch.
Nun möchte ich die Drehzahl verstellen (Hauptsollwert) und die aktuelle Drehzahl zurück lesen. Leider kann ich die beiden Werte nur als Coils lesen bzw. schreiben (also 16 Binärwerte lesen bzw. schreiben). Ich würde die Werte aber gerne als Register lesen bzw. schreiben, da dies einfacher in der SPS umzurechnen geht.
Zusätzlich würde ich gerne die Betriebsstundenzähler und andere Werte (Kundenvorgabe) lesen.
Leider finde ich in den Anleitungen von Danfoss keine Liste mit den zugehörigen Modbus-Registern.
Gibt es da ein spezielles Handbuch von Danfoss in dem die Register aufgeführt sind?
Muss am FU ein passendes PPO Projektiert werden?

Gruß
Patric

PS.: Die gleiche Anfrage habe ich in die Gruppe Antriebstechnik gestellt. Falls Mehrfachpost nicht gewünscht bitte löschen.

TIA Online Werte stimmen nicht mit Baugruppe im SS überein

$
0
0
Guten Morgen,

ich habe für eine kleine Anwendung eine S7-1500 programmiert (TIA V15.1/CPU 1512SP-1 PN). Nun wollte ich die Anlage in Betrieb nehmen und habe festgestellt, dass irgendwas mit den Online Werten nicht stimmt.
Wenn ich bspw. die Variablentabelle beobachte wird bei einigen richtig angezeigt, dass beim Eingang Spannung anliegt. Bei anderen allerdings nicht.

Also konkret:

Ich habe einen Sensor und einen Hand/Automatik-Schalter. Der Sensor detektiert und gibt 24V raus. Bei der Eingangsbaugruppe im Schaltschrank leuchtet die entsprechende LED für den Eingang auch auf. Auf dem PC wo ich die Variablentabelle beobachte leuchtet der Eingang auch entsprechend grün.
Wenn ich nun beim Hand/Autiomatik-Schalter von Ruhestellung auf Hand schalte, leuchtet auch hier bei der Eingangsbaugruppe im Schaltschrank die entsprechende LED grün, aber in der Variablentabelle tut sich nichts.

Weiß jemand wo hier der Fehler liegen könnte?

Gruß

TwinCAT 2 Rampe sanft abbremsen projektieren

$
0
0
Hallo,
ich versuche eine Rampe zu projektieren bei einer Anlage die hebt und senkt. Das Ziel ist wenn ich die Maschine bediene und eine der Tasten zum Heben oder Senken loslasse, dass die Maschine weiterhebt oder entsprechend senkt und sanft abbremst. Die Werte die ich in den zwei Arrays kriege machen keinen Sinn. Woran könnte der Fehler liegen?


-------------------------------------------------------------------------------------------
FUNCTION_BLOCK Taste_Loslassen_Kurve
VAR_INPUT
ENABLE: BOOL;
i_W1_Winkel: REAL;
i_W2_Winkel: REAL;
i_T_Heben: BOOL;
i_T_Senken: BOOL;
i_W_Max_Heben: REAL;
i_W_Min_Senken: REAL;
i_Zeit_bis_Stop: TIME;
i_Heben_Modus: BOOL;
i_Senken_Modus: BOOL;
i_Akt_V_Heben: REAL;
i_Akt_V_Senken: REAL;
END_VAR
VAR_OUTPUT
q_Berechnete_Geschwindigkeit: REAL;
q_Taste_Losgelassen_BewAnf_Heben: BOOL;
q_Taste_Losgelassen_BewAnf_Senken: BOOL;
END_VAR
VAR
R_TRIG_Heben_Taste_Losgelassen: R_TRIG;
R_TRIG_Senken_Taste_Losgelassen: R_TRIG;
Counter_Heben: INT;
Counter_Senken: INT;
TP_Heben: TP;
TP_Senken: TP;
Geschwindigkeiten: ARRAY[1..i_Kurve_Anzahl_Punkte] OF REAL;
Zeitpunkte: ARRAY[1..i_Kurve_Anzahl_Punkte] OF INT;
END_VAR
VAR_STAT
Momentaufnahme_V_Heben_Senken: REAL;
END_VAR
VAR_INPUT CONSTANT
i_Kurve_Anzahl_Punkte: INT;
END_VAR
-------------------------------------------------------------------------------------------
IF ENABLE THEN
(*-----------------------------------------Heben Taste Losgelassen------------------------------------------------------*)
IF NOT q_Taste_Losgelassen_BewAnf_Senken THEN
TP_Heben(IN := i_Heben_Modus AND NOT i_T_Heben, PT := i_Zeit_bis_Stop);
q_Taste_Losgelassen_BewAnf_Heben := TP_Heben.Q AND NOT (i_W1_Winkel > i_W_Max_Heben OR i_W2_Winkel > i_W_Max_Heben);
R_TRIG_Heben_Taste_Losgelassen(CLK := TP_Heben.Q);
IF R_TRIG_Heben_Taste_Losgelassen.Q THEN
Momentaufnahme_V_Heben_Senken := i_Akt_V_Heben;
END_IF
FOR Counter_Heben := 1 TO i_Kurve_Anzahl_Punkte BY 1 DO
Zeitpunkte[Counter_Heben] := Counter_Heben * TIME_TO_INT(TP_Heben.PT / i_Kurve_Anzahl_Punkte);
Geschwindigkeiten[Counter_Heben] := Momentaufnahme_V_Heben_Senken - Counter_Heben * (Momentaufnahme_V_Heben_Senken / i_Kurve_Anzahl_Punkte);
END_FOR
IF q_Taste_Losgelassen_BewAnf_Heben THEN
FOR Counter_Heben := i_Kurve_Anzahl_Punkte TO 1 BY -1 DO
IF TIME_TO_INT(TP_Heben.ET) >= Zeitpunkte[Counter_Heben] THEN
q_Berechnete_Geschwindigkeit := Geschwindigkeiten[Counter_Heben];
EXIT;
END_IF
END_FOR
END_IF
END_IF


(*-----------------------------------------Senken Taste Losgelassen-----------------------------------------------------*)
IF NOT q_Taste_Losgelassen_BewAnf_Heben THEN
TP_Senken(IN := i_Senken_Modus AND NOT i_T_Senken, PT := i_Zeit_bis_Stop);
q_Taste_Losgelassen_BewAnf_Senken := TP_Senken.Q AND NOT (i_W1_Winkel < i_W_Min_Senken AND i_W2_Winkel < i_W_Min_Senken);
R_TRIG_Senken_Taste_Losgelassen(CLK := TP_Senken.Q);
IF R_TRIG_Senken_Taste_Losgelassen.Q THEN
Momentaufnahme_V_Heben_Senken := i_Akt_V_Senken;
END_IF
FOR Counter_Senken := 1 TO i_Kurve_Anzahl_Punkte BY 1 DO
Zeitpunkte[Counter_Senken] := Counter_Senken * TIME_TO_INT(TP_Senken.PT / i_Kurve_Anzahl_Punkte);
Geschwindigkeiten[Counter_Senken] := Momentaufnahme_V_Heben_Senken - Counter_Senken * (Momentaufnahme_V_Heben_Senken / i_Kurve_Anzahl_Punkte);
END_FOR
IF q_Taste_Losgelassen_BewAnf_Senken THEN
FOR Counter_Senken := i_Kurve_Anzahl_Punkte TO 1 BY -1 DO
IF TIME_TO_INT(TP_Senken.ET) >= Zeitpunkte[Counter_Senken] THEN
q_Berechnete_Geschwindigkeit := Geschwindigkeiten[Counter_Senken];
EXIT;
END_IF
END_FOR
END_IF
END_IF
END_IF

TwinCAT 2 Windows 10 x64 RT-Ethernet Treiber

$
0
0
Hallo liebe Mitglieder,
jeder Intel Netzwerk Adapter unterstützt laut Beckhoff das RT-Ethernet Protokoll, aber wenn ich im Manager bin und ich versuche das entsprechende Protokoll zu installieren meine Netzwerkkarte steht unter den inkompatiblen Geräten. Warum passiert es? Danke!
Viewing all 49833 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>