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

Sonstiges Variablen aus Beckhoff für Beijer Panel

$
0
0
Guten Morgen zusammen,

ich bin gerade dabei ein Beijer Panel für eine Anlage zu programmieren, ich wollte nun eigentlich die Variablen für das Panel aus der Beckhoff SPS exportieren nur leider bekomme ich immer ein ganzen Schwung von Variablen welche nur in der SPS gebraucht werden in die Tag liste des Panels und die die ich Brauche kommen nicht mit rüber. laut Hilfe von Beijer habe ich aber eigentlich alles richtig gemacht. Bin nach folgenden Schema vorgegangen

1. Visu Variablen habe alle den Anfang bHMI_xxxx AT%I* oder AT%Q* : BOOL oder Int oder REAL; (*Kommentar*)
2. Alles fehlerfrei Übersetzt
3. Einlesen des TPY Files in Beijer Software


Nun nach dem Einlesen habe ich alle möglichen Variablen und Arrays und FB´s die ich global angelegt habe in dem Beijer als Tag zur Verfügung, aber die Sachen die ich brauche wurden nur zur Hälfte mit Übertragen.

Kann mir gerade wer erklären wie das richtig geht oder mir sagen wo mein Fehler ist.

Ich danke im Vorraus

TIA einzelnen Baustein auf die CPU laden

$
0
0
Folgender Fall:
Habe zwei neue DB's erstellt und will nun nur einen davon auf die CPU laden.
Markiere den DB und wähle Laden in Gerät, nur Software.
Dann kommt das neue Fenster und unter Software finde ich aber immer beide Bausteine.
Diese sind mit einem Haken zum Laden versehen den man aber nicht abwählen kann.
Sollte ein einzelnes Laden wirklich nicht möglich sein :confused:
Besten Dank und Gruss

TIA V13 aktuelle Version
CPU 1511

Array - Werte schieben

$
0
0
Hallo,

ich möchte in einem Array Werte speicher, was ich auch hin bekomme.

Aber ich möchte das der neue Wert immer an Pos. 0 steht und die anderen Werte entsprechend aufrücken.
Das könnte ich mit einer Schleife machen, erst alle Werte verschieben und dann den neuen Wert einfügen.
Aber das geht bestimmt besser oder?

Siehe Bilder.

Bitte wenn möglich ein Beispiel.

Danke.
Angehängte Grafiken

Durchflussregelung mit G120 CU240S

$
0
0
Hallo
Ich soll mit einer 315-2DP, einem Sinamic G120 CU240S DP und einer Promag E&H eine Durchflussregelung realisieren. Die Pumpe wird durch einen einfachen Asynchronmotor angetrieben und es kommt nicht auf jeden Liter genau an. Ob da nun 500m³/h oder 520m³/h durchfliesen spielt keine Rolle. Es geht hier um eine relativ grobe Regelung.
Der Durchflussmesser Promag liefert mir ein 4-20mA Signal, welches ich in der SPS aufbereite. Die SPS gibt über Profibus (Telegramm 1) über die entsprechenden Bits im Steuerwort dann ein "Höher" oder "Niedriger" auf das Motorpotentiometer im G120 aus. Der Wert des Motorpotentiometers wird dann als Zusatzsollwert in die Drehzahlregelung mit eingespeist. Das funktioniert auch alles soweit ganz gut.
Das ist mein erstes Projekt mit einem Sinamic-FU, deshalb kenn ich mich noch nicht so richtig aus mit den Teilen. Meine Frage wäre, ob es vielleicht nocht eine andere, eventuell "elegantere" Lösung mit der vorhandenen Hardware geben würde.

MfG
bastler

Verkaufe gebrauchte Siemens Simatic S7 Steuerungen für Techniker, Meister, Ausbildung

$
0
0
Hallo Ihr SPSler!

Ich biete gebrauchte Siemens S7 300 Komplettsysteme und Baugruppen an. Die Artikel werden durch mich geprüft und zu fairen Preisen (inkl. Rückgaberecht) angeboten. Ideal für Techniker, Meister, Hobbyprogrammierer oder für die Ausbildung.

Gerne könnt Ihr mich auch kontaktieren und ich stelle euch eure Wunsch-SPS zusammen. Besucht einfach mein Homepage unter:

http://www.sps4you.de

Vielen Dank und frohes Programmieren.

Siemens Logo 230RC als Lichtschaltung nutzen.

$
0
0
Hallo,

habe ein kleines Problem und denke bin hier richtig aufgehoben:

Ich möchte eine Siemens Logo 230RC (0BA1) für die Beleuchtung meines Hobbyraumes als Schaltelement verwenden.
Daher ein einziger Taster bei der Tür über welchen alle 4 Relais geschaltet werden können.

Ich habe mir folgendes gedacht:
- Deckenleuchte an Q1 - per einfachen Tastendruck ein & ausschaltbar.
- Wandlampen an Q2 - per doppelten Tastendruck jeweils ein & ausschaltbar.
- Werkbankbeleuchtung an Q3 - per dreifachen Tastendruck jeweils ein & ausschaltbar.
- Deckenfluter an Q4 - per vierfachen Tastendruck jeweils ein & ausschaltbar. (mein Modell hält laut Handbuch 250V bei 10A aus, also kein Problem!)

Zusätzlich Panikmodus bei langem Tastendruck alle Lampen ein & aus.

Ist das so möglich?
Taster würde ich über L1 an I1 legen.

Kann mir jemand behilflich sein ein passendes Programm zu schreiben?
Bin mit der Logo noch nicht besonders vertraut!

Danke im Vorraus,

einen schönen Restabend

KroMa

FIFO Funktionsblock in CoDeSys 2.3 - weil einfach nicht einfach einfach ist...

$
0
0
Ich bin mir nicht sicher ob der Thread hier richtig ist, möglicherweise gehört er eher in "Programmierstrategien" oder auch den "Stammtisch"...

Beflügelt von diesem Thread habe ich mir gedacht ich ersetze den sonntäglichen Mittagsschlaf dadurch dass ich mir mal einen FB bastele der ähnlich funktioniert wie die Funktionen die ich seit Jahren von RSLogix gewohnt bin... Pustekuchen :shock:

Wenn man sich auf einen bestimmten Datentypen einschießt ist das ja alles noch recht überschaubar, zumal wenn man mit fest definierten Array-Längen arbeitet. Will ich aber nicht.
Deklarationen in der Form
Code:

length: INT;
foo: ARRAY[0..length] OF DINT;

werden in der verwendeten Version 2.3.9 mit kopfschütteln seitens CoDeSys quittiert. Alles klar, ich habe schon mal von Pointern gehört, die Siemens Leute brauchten dazu glaube ich AWL, aber wie funktionierts in CoDeSys?
[F1] gedrückt und den Mund nicht mehr zubekommen, die Hilfe ist einen Lacher wert *ROFL* Ich bins gewohnt nicht unbedingt an die Hand genommen zu werden, aber da kam ich mir schon etwas allein gelassen vor.

Hürde Nummer 1 ist genommen, Datentypen schießen mir ins Hirn, ich will nicht viel, aber wenigstens alles was in 32 Bit ausgedrückt werden kann mit einem FB verarbeiten...
REAL in DWORD kopieren? No Señor...

Hat sich da in Version 3 etwas getan? Ich würde gern die Länge des ersten Elements in Bytes ermitteln, den Pointer dann entsprechend positionieren und die benötigte Anzahl an Bytes umladen / einfügen / schreiben etc. Da ich dem Pointer ja schon einen Datentyp zuweisen muss definiere ich damit ja schon die Anzahl der zu bearbeitenden Bits... Wahrscheinlich gibt es dazu eine ganz einfache Lösung, Ideen? Anregungen? Fehler? Man werfe mir Schlagworte um die Ohren, ich kann Google benutzen...
Da ich beruflich zum Glück noch die Finger davon lassen darf belasse ich es jetzt mal dabei, falls jemand mal lachen möchte folgt unten noch ein wenig Code, das ganze kann ein Element in den (bis zu 32766 Elemente langen) FIFO-Speicher laden, ein Element aus dem FIFO-Speicher entladen, automatisch ein Element entladen wenn der Speicher voll ist (Laufspeicher für Historien etc.), have fun :mrgreen:

Code:

FUNCTION_BLOCK FIFO
VAR_INPUT
 LoadValue:  POINTER TO DWORD;
 UnloadValue:  POINTER TO DWORD;
 FirstElement:  POINTER TO DWORD;
END_VAR
VAR
 i:      INT;
 Size:    UDINT;
 DestPointer:  POINTER TO DWORD;
 SourcePointer:  POINTER TO DWORD;
END_VAR
VAR_IN_OUT
 Ctrl: ST_CTRL;
END_VAR

Size :=  SIZEOF(FirstElement^);
IF Ctrl.Full AND Ctrl.Autounload AND Ctrl.Load THEN
 SourcePointer := FirstElement + ((Ctrl.Position - 1) * Size);
 UnloadValue^ := SourcePointer^;
 Ctrl.Position := Ctrl.Position - 1;
END_IF;
IF Ctrl.Load AND (Ctrl.Position < Ctrl.Length) THEN
 Ctrl.Done := FALSE;
 FOR i := (Ctrl.Position) TO 1  BY -1 DO
  DestPointer := FirstElement + (i * Size);
  SourcePointer := FirstElement + ((i-1) * Size);
  DestPointer^ := SourcePointer^;
 END_FOR;
 FirstElement^ := LoadValue^;
 Ctrl.Position := Ctrl.Position + 1;
 Ctrl.Done := TRUE;
END_IF;
IF Ctrl.Unload AND (Ctrl.Position > 0) THEN
 Ctrl.Done := FALSE;
 SourcePointer := FirstElement + ((Ctrl.Position - 1) * Size);
 UnloadValue^ := SourcePointer^;
 SourcePointer^ := 0;
 Ctrl.Position := Ctrl.Position - 1;
 Ctrl.Done := TRUE;
END_IF;
IF Ctrl.Position = 0 THEN
 Ctrl.Empty := TRUE;
ELSE
 Ctrl.Empty := FALSE;
END_IF;
IF Ctrl.Position < Ctrl.Length THEN
 Ctrl.Full := FALSE;
ELSE
 Ctrl.Full := TRUE;
END_IF;




Aufruf:

Code:

PROGRAM PLC_PRG
VAR
 AddElement:  BOOL;
 RemoveElement:  BOOL;
 FIFO:  FIFO;
 BufferCtrl: ST_CTRL;
 Value:  DINT;
 Buffer:  ARRAY[0..15] OF DINT;
 Unload: DINT;
END_VAR

BufferCtrl.Enable := TRUE;
BufferCtrl.Autounload := TRUE;
BufferCtrl.Length := 16;
BufferCtrl.Load := AddElement;
BufferCtrl.Unload := RemoveElement;
FIFO(
 LoadValue:= ADR(Value),
 UnloadValue := ADR(Unload),
 FirstElement:= ADR(Buffer[0]),
 Ctrl := BufferCtrl);
IF BufferCtrl.Done THEN
 AddElement := FALSE;
 RemoveElement := FALSE;
END_IF;

TIA RGB Farbkarte in PC Runtime

$
0
0
Hallo
ich suche nach der Möglichkeit eine RGB Farbkarte in Wincc TIA PC Runtime einzubauen.

Wenn ich mir zwei Schieberegler für x und y Ache die Koordinate aus einem Bild ( Farbkarte) bestimme, wie bekomme ich dann aus diesen Koordinaten den RGB wert heraus?
gibt es hierzu eine Möglichkeit?
Angehängte Grafiken

Sonstiges archivierten Messungen löscht sich täglich in WinCC V7.0

$
0
0
Hallo Leute,

Ich habe eine Anlage auf WinCC V7.0 laufen, hier werden Messungen und Störmeldungen ständig archiviert (TagLogging). Nachdem ich die Verbindung (Fernwartung) auf den Server gemacht habe und die Kurven geguckt, habe ich folgenden Problemen:

Erstens kann ich den Verlauf nur von 22.08.2016 bis 16.09.2016 sehen. Vorher und Nachher nichts. Und dann ab 10.10.2016 habe wieder normaler Kurven. Ich habe Backup verbinden (Einstellungen) für das ganze Jahr 2016 gemacht aber trotzdem kriege ich nichts, außer diese oben genannter Zeitraum..

Zweitens werden die Kurve täglich gelöscht (Bilder). Am Montag war es von 22.08 bis 16.09 und Dienstag von 23.08 bis 16.09 usw..
Wahrscheinlich muss ich etwas einstellen, was ich nicht zurechtkomme.
Ich bedanke mich bei Ihnen im Voraus für Eure Hilfe.


Mit freundlichen Grüßen.
Ihre hectahexe:cool::cool::cool:.

WinCC runde Schaltfläche realisieren

$
0
0
Habe ein Comfort Panel und möchte eine runde Schaltfläche realisieren, optisch ähnlich wie der Startknopf beim Auto. Dummerweise ist die Schaltfläche imeer rechteckig und es lässt sich auch kein Eckradius eingeben wie z.B. beim Rechteck.

TIA Neue E/A-Felder funktionieren nicht / Mehrere HMI-Variablentabellen

$
0
0
Guten Morgen,


ich habe ein Problem mit einem KTP600an einer 1214C-CPU. Das Programm und die Bilder inklusive E/A-Feldern laufen seit drei Jahren ohne Probleme. Jetzt habe ich ein neues Bildgebaut, in dem zwei neue Variablen eingegeben werden können. Das funktioniert nicht, in den Feldern steht nur ### und wenn ich einen Wert eingebe, wird der nicht ins Programm geschrieben. Das gleiche passiert mit einem Bedienfeld, die Bedienung am HMI funktioniert,aber die Information kommt nicht im Programm an.
Mir ist aufgefallen, dass es zwei Standard-Variablentabellen im HMI gibt ( Standard-Variablentabelle und Standard-Variablentabelle_1). Alle „alten“ Variablen stehe in_1, alle „neuen“ kommen in die „normale“. Ein verschieben einer „neuen“ Variable in die Tabelle _1 hat nichts gebracht.
Ich habe schon die Software komplett überspielt, auch ohne Erfolg. Gibt es sonst eine Möglichkeit, das HMI komplett neu zu bespielen, oder habt Ihr sonst eine Idee, was ich probieren könnte?


Vielen Dank und Grüße,


Matthias

E/A Mapping von/ zu Array of DWORD, Problem bei Offset Ermittlung

$
0
0
Hallo zusammen,

als Quereinsteiger aus S7, sitze ich aktuell an einem Programmteil
welcher mir SPS-Eingänge auf ein Array of DWORD und
Daten aus einem Array of DWord auf Ausgänge schreiben soll.

Nach einigen Selbstversuchen / Online-Suchvorgängen bin ich beim unten aufgeführten Code angekommen.
Dieser kopiert mir zwar das erste DWord (%ID500) auf das Read_SPS_Array[0], jedoch hapert es
anschließend am Offset für den 2ten Lesevorgang in der Schleife ( %ID 501 auf Array [1].
(Rot markiert)

Variablendeklaration:
VAR
Read_SPS_Loop: INT;
END_VAR
VAR_IN_OUT
Read_SPS_Array: ARRAY[0..25] OF DWORD;
END_VAR
VAR
Read_SPS_Offset: Pointer to DWORD;
END_VAR
VAR_INPUT
Read_SPS_Startadresse: DWORD; <-- anparametriert mit "%ID500"
END_VAR

Programm:

// Lese 16 DWord Eingänge ab Startadresse und übertrage in Array 0-15
Read_SPS_Offset:= ADR (Read_SPS_Startadresse);

FOR Read_SPS_Loop:= 0 TO 15 DO
Read_SPS_Array[Read_SPS_Loop]:= Read_SPS_Offset^;
Read_SPS_Offset:= Read_SPS_Offset + SIZEOF(DWORD);
END_FOR


// Test Ausgangswert schreiben
Write_SPS_Array[0]:= 5;

// Lese Array 0-15 und schreibe 16 DWORD Ausgänge ab Startadresse
Write_SPS_Offset:= ADR (Write_SPS_Startadresse);

FOR Write_SPS_Loop:= 0 TO 15 DO
Write_SPS_Offset^:= Write_SPS_Array[Write_SPS_Loop];
Write_SPS_Offset:= Write_SPS_Offset + SIZEOF(DWORD);
END_FOR

Würde mich freuen, wenn mir hier jemand mit dem Offset weiterhelfen könnte

Step 7 Datentyp wird beim Bausteinaufruf in SCL nicht erkannt

$
0
0
Hallo zusammen,

ich habe ein kleines Problem bei dem ich Hilfe benötige.

In meinem Programm habe ich einen SCL-Baustein mit dem ich zwei identische Achsen steuern möchte.
Dieser wird in FUP aufgerufen und mit den DB´s beschalten. (Achsaufruf.png)


In meinem Programm möchte ich nun auf die Positionsvariable noch den Fräserradius aufrechen.


Das habe ich so gelöst:
MC_MoveAbsolute.Position :=DWORD_TO_REAL(DB_Par.DBD20) - (DB_Par_Grp4.FraeserDurchmesser/2);


So nur der Baustein soll ja für zwei Fräser sein. Darum dachte ich mir ich erzeuge nen neuen Input Namens DB_Grp_Par und über geb diesem dann den eigentlichen DB.
MC_MoveAbsolute.Position :=DWORD_TO_REAL(DB_Par.DBD20) - (DB_Grp_Par.FraeserDurchmesser/2);


Dann wird mir aber der Fehler angezeigt das dies ein ungültiger Datentyp ist. (Fehler.png)
FraeserDurchmesser ist aber eine REAL und wenn ich den DB direkt aufrufe gehts ja auch.
Ich hab auch schon versucht DWORD_TO_REAL davor zu setzen aber das bringt auch keine Änderung.

Könnt ihr mir da bitte ne Hilfestellung geben. Ich checks grad nicht wirklich.

Grüße
Edi
Angehängte Grafiken

Step 7 Step7 Programm über SPS - Visu Simulieren FEHLER

$
0
0
Hallo liebe Leser,


ich habe eine Frage bzw. ein Problem,

wenn ich ein SPS Programm welches ich in Step7 V5.5 SP geschrieben habe über SPS Visu 4.92 Simulieren möchte tritt folgender Fehler auf:

- Bei den WinPLC Einstellungen wo ich die Kommunikation über TCPIP Aktiviere und die Netzwerkkarte auswähle tritt bei bestätigung der Parameter folgender Fehler auf: Fehler beim Neustart des "SIMATIC IEtoPG".

Wenn ich dann das Programm in die Visu übertragen möchte hängt sich Step7 auf oder es kommen Fehlermeldungen wie das die Kommunikation über diese Schnittstelle nicht möglich ist oder es kommt eine Fehlermeldung "Online: SIN_SERV ist nicht gestartet".

Ich programmiere übrigens auf einer Virtuellen Maschine (VMWare) dort ist Windows 7 Ultimate 64 Bit Version installiert.


Ich bedanke mich schon einmal im voraus!

Mit freundlichen Grüßen

Rynem

Kabel/Ader Thermische Trennen?

$
0
0
Hallo Zusammen,
ist einem eine Möglichkeit bekannt ein Kabel oder eine Arder thermisch zu entkoppeln ohne die elektrische Verbindung zu trennen?
Eventuell mit einem Kabel aus Kohlenstofffasern oder etwas ähnlichem?

TIA Leerzeichen (Tastatur) löst Ereignis auf Visualisierung aus!

$
0
0
Hallo,

mein Kunde reaktiviert seine PC-Station vom Bildschirmschoner immer mit der Leertaste und dadurch wird der zuletzt betätigte Button auf der Visu "geklickt"
ich dachte erst es liegt an einer Runtime-Einstellung (Tastatur-Befehle des Betriebssystems deaktivieren), aber anscheinend ist bei Windows 7 die Leertaste als "Hotkey" für linke Maustaste gedacht und das Problem so nicht gelöst. Sowas blödes, schaltet die ganze Anlage aus, nur weil du Leertaste betätigst. Ich finde auch keine Windowseinstellung um dies zu ändern. Hat jemand eine Idee?

PC-Station WinCC RT Prof.

MfG
dontpanic

TWINCAT Ethernet-Treiber für Intel-Netzwerkkarte

$
0
0
Hallo zusammen,

ich möchte über Twincat 2 ein EK1100-Ethercat-Modul ansprechen. Daher möchte ich auf einem Siemens-PG für die zweite Netzwerkkarte (Intel) den Twincat-Ethernet-Treiber installieren. Dafür habe ich mir alle Beckhoff-seitigen Anleitungen angeschaut. Es scheint mir so, als wäre der Treiber nicht auf meinem PC vorhanden. Ich habe die aktuelle x64-Engineering Version installiert. Ist der Treiber in dieser Version nicht enthalten?

Folgende Beckhoff-Seite habe ich dafür genutzt: http://infosys.beckhoff.de/index.php...driver.htm&id=

Unten auf der Seite sind 3 Möglichkeiten der Installation genannt, und keine funktioniert, da ich entweder den vorhandenen Treiber nicht finde oder die entsprechende .inf-Datei in C:/Windows/inf nicht finde.

Hat jemand eine Idee, bin ich irgendwo auf dem Holzweg?

Vielen Danke und liebe Grüße,
Malte

TIA Bildschirme von mehreren Mobile Panels auf das Hauptpanel "holen"

$
0
0
Hallo zusammen

Habe folgende Situation: (Alles noch mehr oder weniger in der Planungsphase)

Einen Anlage mit einer "Zentralen Steuerung" (Siemens Panel PC mit Soft PLC).
Alles in TIA
An dieser "Zentralen Steuerung" können mehrere "Module" angeschlossen werden.
Diese Module sind im Prinzip eigenständige Maschinen (Mit 1500er CPU und HMI-Panel)
Für den Automatikbetrieb werden die einzelnen Module mit der Zentralen Steuerung "verheiratet"
und kommunizieren dann über Ethernet.

Der Kunde will nun, dass er die HMI Bildschirme der einzelnen Module auf den Zentralbildschirm "holen" kann.
so dass der Bediener nicht um die Anlage rumrennen muss, wenn er sehen will was an Modul X, Y, Z los ist.
Ich kann NICHT alle Bilder im zentralen HMI nochmal anlegen, sondern sie sollen wirklich über das
Ethernet geholt werden, weil nicht immer alle Module angeschlossen sind, und später auch noch mehr dazukommen.

Geht so was überhaupt????
Keine Ahnung wie man das anstellen könnte......
Der Vertrieb hat schon mal leichtfertig JAJA gesagt :icon_mrgreen: :roll:

Beckhoff CX9020 Variablen Speichern

$
0
0
Hallo zusammen ich benutzen ein CX9020 von Beckhoff und würde gern wissen wie man Werte von Variablen beim Stromausfall speichern kann. Also ich habe die Variablen,die ich speichern möchte , als VAR_PERSISTENT deklariert und alles läuft super also es wir schon gespeichert wenn ich ein Reset/Rebuild all mache oder wenn ich auch Twincat (V3) schliesse klappt auch nur wenn ich mal den Strom an das Gerät weg nehmme dann geht meine gespeicherteten Werten auch verloren . wie kann ich des lösen? Danke schön in voraus.

TIA Positionsfestwert

$
0
0
Mahlzeit,

ich brauche einen Tip von Euch. Ich möchte beim Einschalten der Anlage meinem Motor einen Festwert für seine Position geben wo er losfahren soll. Das heißt, beim Einschalten steht der Servoantrieb auf dem Punkt 0, soll aber bei Punkt 55000 (5,5cm) starten. In welche Variable des Siemens DB schreibe ich den wert rein ?.

Vielen Dank schonmal!
Viewing all 49248 articles
Browse latest View live


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