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

Mini Projekt Strukturierung

$
0
0
Hallo Leute,
es geht um eine kleine Aufgabe und deren Strukturierung.
Meine Programmier Erfahrung ist sehr gering und mir fehlt etwas der Zugang.

Als Idee schwebt mir ein CBML basierender Baustein vor, damit verschiedenen States
sauber ausgewertet werden können. Eine Einschätzung, ob das sinnvoll ist,
bzw. wie so eine Umsetzung auschaut würde mir sehr helfen.

Aufgabe:
Überwachung einer Temp. mit Infrarot Kamera und Analog Signal, ob eine gewisse Grenztemp. überschritten wird
bei einem Schweißvorgang.
Im Fehlerfall wird ein Stop/Sperre der Schweiße ausgelöst, resetbar durch einen Schlüsselschalter.
Im Gutfall wird ein Zähler inkrementiert und bei einer gewissen Anzahl ein Signal zum Wechseln der Behälter gesendet.
Dazu gibt es eine kleine Visualisierung mit Temp. Anzeige, Stückzähler etc.

Vielen Dank

Gruß
Roman

Ankauf gebrauchte Mitsubishi Hardware Melsec

$
0
0
Servus Kollegen!

Gibt es für Mitsubishi SPS Melsec Hardware am Markt noch Bedarf? Wenn ja, wisst Ihr Firmen die gebrauchte Mitsubishi Hardware ankaufen?
Fa. Eichler hatte zum Beispiel kein Interesse.

Grüße

TIA Wartungszähler

$
0
0
Hallo Leute,

ich steh irgendwie auf dem Schlauch - mir fällt keine Lösung für folgende einfache Aufgabe ein:

Ich habe einen DINT-Betriebsstundenzähler und möchte nun alle 120 Stunden eine Wartungsaufforderung herausgeben. Dazu dachte ich mir, teile ich einfach den Betriebsstundenzähler durch 120 und vergleiche das was rauskommt mit ???

L akt_Betriebsstunden //dint
L120
/D
???

weiß jemand Rat?

Danke

TIA Frage zu TIA V15: Passwort und Online verbinden

$
0
0
Hallo zusammen,

mit dem TIA V15 habe ich folgende Erfahrung gemacht:

Ich habe ein V13 SP2 Projekt geöffnet und hochgerüstet. In einer S7-1500 SPS wurde dieses Projekt mit V13 SP2 übertragen.

Nach dem hochrüsten, habe ich neu compiliert alles soweit in Ordnung.

Dann habe ich versucht, eine Online Verbindung zur 1500 CPU aufzubauen. Dies hat nicht geklappt. Die Verbindung wurde aufgebaut und sofort wieder abgebaut.
Im Online-Fenster sieht man die Meldung "Gerät ist nicht kompatibel".
(Ich bin der Meinung dass die CPU kein China Plagiat ist und original von SIEMENS ist.)

Nachdem ich die Memory Card der CPU formatiert habe (damit ist die SPS ohne Programm) konnte ich eine Verbindung aufbauen und die CPU bespielen.

So jetzt meine Frage: Gibt es eine andere Möglichkeit mit V15 auf die CPU zuzugreifen (Bausteine übertragen), ohne das V13-Programm zu löschen?

Dann habe ich noch festgestellt, dass ich passwortgeschützte Bausteine in dem hochgerüsteten Projekt nicht öffnen kann. Ich kann das Passwort nicht eingeben. Anscheinend kann ich das nur mit der TIA Version machen in der das Passwort festgelegt wurde.
Habe ich da was falsch gemacht oder etwas übersehen?

Vielen Dank für die Antworten.

Ankauf gebrauchte Mitsubishi Hardware Melsec

$
0
0
Servus Kollegen!

Gibt es für Mitsubishi SPS Melsec Hardware am Markt noch Bedarf? Wenn ja, wisst Ihr Firmen die gebrauchte Mitsubishi Hardware ankaufen?
Fa. Eichler hatte zum Beispiel kein Interesse.

Grüße

TIA PLC Meldetextliste Sprachumstellung

$
0
0
Hi,

gibt es die Möglichkeit die Sprache für eine PLC-Meldetextliste umzustellen?

Hintergrund ich würde gerne meine Störauswertung mit Hilfe von Program Alarm realisieren. Dafür verwende ich PLC-Meldetextlisten und verkette diese in meinem Program Alarm Baustein.

Gibt es nun die Möglichkeit wenn am HMI eine andere Sprache angewählt wird, diese auch an den Meldetextlisten der Steuerung umzuschalten?

Oder realisiert man die Mehrsprachigkeit bei Program Alarm auf eine andere Art?

eingesetzte Hardware: CPU 1511F-1 PN/HMI: TP-700 Comfort/TIA Portal: V14SP1

Vielen Dank schonmal.

TIA Analogwert zum bestimmten Zeitpunkt auslesen

$
0
0
Hallo,

ich möchte einen Druckwert zu einem bestimmten Zeitpunkt auslesen und diesen Wert mit einem anderen Wert vergleichen.
Der bestimmte Zeitpunkt hat einen bestimmten SR-Baustein und genau dann sollte wenn der eine 1 bekommt sollte der Druck dann genommen werden zum Vergleich.

Wie kann ich das realisieren?

Vielen Dank.

Profibus mit OLM - LWL-Strecke Signal verstärken

$
0
0
Hallo zusammen, ich habe eine Frage zum Thema Profibus und OLM (6GK1503-3CB00). Wir haben über unsere Werksgelände einen Profibusring gespannt. Innerhalb vom Gebäude über Kupfer und von Gebäude zu Gebäude über Lichtwellenleiter (Multimode). Jetzt habe ich das Problem dass eine Strecke zu lang ist für die Spezifikation (~550m) und die Verbindung nicht mehr stabil vorhanden ist. Ich suche eine Komponente (Repeater oder ähnlich) mit der ich den optischen Teil des Profibusnetzwerkes quasi unterwegs noch mal verstärke. Super wäre eine Komponente die ich in einem 19" Rack montieren könnte. Im Moment habe ich das Testweise mit einem zusätzlichen OLM in der Strecke gelöst. Gibt es da Alternativen oder muss ich bei der Lösung mit dem OLM bleiben.
Vielen Dank schon mal für eure Antworten.

Profinet Hardware-Konfig. mit IM-155-6 Station

$
0
0
Hallo zusammen,

Ich sollte heute eine Profinet-Station in Betrieb nehmen und habe diese dann in der Hardware erstellt.
Bei der Station handelt es ich um eine IM 155-6.

Mir ist aufgefalles dass die Karte im Steckplatz 1 gefärbt angezeigt wird (siehe angefügtes Bild). Hat jemand eine Ahnung was diese Farbe bedeutet???
Nach dem downloaden und starten der CPU waren dann alle Karten auf Störung.
Ist dieser Steckplatz für eine normale 8x24V DI Karte nicht geeignet oder muss da sonst was hin???

Ich muss noch hinzufügen dass die beiden letzten Karten (Fail-Safe) fälschlicherweise nicht richtig gesteckt wurden sondern normal I/O Karten vorhanden sind.
Dies soll aber morgen geändet werden.

Für sämtliche Karten wurden Base-Units vom Typ BU A0 gewählt (6ES7 193-6BP00-0DA0). Ist das korrekt oder brauchen die F-Safe Karten eine andere BU???

Ich wäre für jeden Hinweis bezüglich dieser Probleme sehr dankbar.


MfG, MarkBeispiel Konfiguration.jpg
Angehängte Grafiken

Step 7 Optimierung Schleife mit Pointern, indirekter, bereichsübergreifender Zugriff

$
0
0
Hallo Forum,


("long time lurker, first time poster" - wie man so sagt)


ich habe es hier mit einer 315-2 PN/DP zu tun, bei der mein FB zum Datenschubsen mehrere ms Zykluszeit kostet (zwischen 1ms und 5ms, abhängig davon, wieviele Daten geschoben werden). Es gilt die Werte an den Adressen in einer Liste (wild gemischt: E, A, M, DB; SFC20/BLKMOV bringt hier nix) möglichst effizient (= schnell) in einen zusammenhängenden Bereich zu transferieren.


Mein aktueller Ansatz sieht so aus (kostet ca. 5ms für 1000 bytes):

(Vorbereitung auf die Schleife)

Code:

          AddressPointers  :  ARRAY [0..5999] OF BYTE; // 1000x: DWORD for pointer, WORD for DBnr
          xAddressPointer  : DWORD;
          ...
          // fülle AddressPointers mit 1000 Adressen im Format L W#16#81000000; L 10; SLD 3; L W#16#82000000; L 42; SLD 3; ...
          ...


          LAR1    P##AddressPointers;
          // Zeiger auf Anfang des Bereichs, an dem die gewünschten Adressen als DWORD (pointer) + WORD (DBnr) stehen
          TAR1    xAddressPointer;           


          LAR1    P##OutputData;
          TAR1    xOutputPointer;            // Zeiger auf Anfang des Zieldatenbereichs
          L      DNIO;
          T      xDINOStore;        // rette DI Nummer

(die Schleife)
Code:

          L        1000; // z.B. 1k Durchläufe (1000 Bytes)
schl:    T        xLoopCounter;
          L        W [AR1,P#4.0];          // DB Nummer ist WORD
          T        xDBNOStore;
          AUF      DB [xDBNOStore];
          L        D [AR1,P#0.0];                // Lade Zeiger im DWORD Format
          AUF      DI [xDINOStore];              // DI Nummer wieder herstellen
          LAR1;                                // DWORD Zeiger zu Adresse konvertieren
          L        B [AR1,P#0.0];              // Wert an der Adresse im ARR1 in AKKU1 laden
          LAR1    xOutputPointer;              //  Ausgabeadresse in ARR1 laden
          T        B [AR1,P#0.0];              // aktuellen Wert in AKKU1 in ARR1
          +AR1    P#1.0;                        // Ausgabeadresse in ARR1 um Länge von einem Byte weiter
          TAR1    xOutputPointer;              // Ausgabeadresse retten
          LAR1    xAddressPointer;            // aktuelle Startadresse der Zeigerdefinitionen laden
          +AR1    P#6.0;                          // aktuelle Startadresse der Zeigerdefinitionen laden um DWORD + WORD weiter schieben
          TAR1    xAddressPointer;            // aktuelle Startadresse der Zeigerdefinitionen retten
          L        xLoopCounter;
          LOOP    schl;




Da würde ich jetzt gerne so viele wie möglich Anweisungen einsparen - weiss aber nicht so recht, wie ich das gut und sicher tun kann. Ein Idee wäre "ARR2" auch zu verwenden, dann könnte ich im ARR1 nur die Zeiger zu den Eingangsdaten, und den Zeiger auf den Zieldatenbereich mit +AR2 schieben. Dass würde mir dann einige der LAR1 und TAR1 Anweisungen sparen. Allerdings weiss ich nicht, ob das wirklich sicher ist zu tun; in der Hilfe und im AWL Editor wird ja immer gewarnt, dass "+AR2" schlimme Nebeneffekte haben kann, und z.B. Anweisungen wie "L P#DB123.DBB 5" ggf. wiederum den AR2 verändern.




Was auch noch klasse wäre, wenn man sowas machen könnte; dass würde mir dann die Anweisungen ersparen, in ARR1 laden, retten, und wieder laden


Code:



L      W#16#83000000; // Maske für %M
L      100; // soll man %M 100.0 werden
SLD  3;
OD;
T      xZeiger;
L      MB [#xZeiger]; // Geht
L      B [#xZeiger];  // Geht NICHT; warum??? W#16#83 (die Info, dass es ein Merker ist) steht doch auch in xZeiger




Ich würde mich sehr über Eure Ideen und Anregungen (oder Lösungen :P) freuen!!


VG, Jürgen

8202 schaltet Ausgänge falsch

$
0
0
Hallo zusammen,

ich habe ein sehr seltsames Phänomen mit meiner WAGO Steuerung.

Ich wollte diese durch ein ModBus-Interface (750-653/003-000) ergänzen.
Sobald ich dieses in meiner Steuerungskonfiguration hinzufüge, werden die Input- und Output-Adressen neu vergeben.
Wäre auch nicht weiter schlimm, jedoch werden dann die falschen Ausgänge geschalten.
Im Programm aktualisiert es sich auf die richtige Adresse, der physikalisch geschaltene Ausgang ist aber der falsche.

Beispiel:

DO1 hat Adresse %QX16.0

Nach dem einfügen der Klemme bekommt der Ausgang die Adresse %QX18.0

Im Programm wird der DO1 auf %QX18.0 aktualisiert.

Wirklich geschalten wird %QX17.0, laut Programm im Online-Modus aber der %QX18.0



Steuerung ist die 750-8202
Firmware 02.04.22(06)

Hat jemand schon mal ein Solches Verhalten gehabt, bzw.kann es sich erklären an was es liegt?

Risikobewertung, welche Vorschriften/Normen kommen zur Anwendung

$
0
0
Hallo,
für den weiter unten geschilderten Fall suche ich die entsprechenden DIN-Normen oder die Bezeichnungen von Vorschriften die hätten beachtet werden müssen es aber, meiner Meinung nach, nicht wurden.
Von Ende 2015 bis Anfang 2016 war ich als Freiberufler für eine Firma tätig, die große Bohranlagen für die Möbelindustrie herstellt. Bei diesen wird ein Brett automatisiert zugeführt, über pneumatisch ausfahrende Anschlaglineale ausgerichtet und zusätzlich noch von oben und unten geklemmt, dann gebohrt, wieder freigegeben und ausgefahren. An so einer Anlage sollte ich während andere Kollegen auch am Arbeiten waren unter TwinCAT 2 eine neue Konfiguration einspielen. Dies macht es erforderlich, dass die Steuerung neu gestartet werden muss, dabei werden alle Ausgänge ausgeschaltet und "einfache" Ventile (Sorry, kenne die richtige Bezeichnung nicht) gehen in Ruhestellung. An einem solchen Ventil war auch ein Anschlaglineal angeschlossen, dass nun plötzlich aus fuhr und einem Kollegen ziemlich doll die Hand geklemmt hat. Ich habe nach diesem Vorfall zunächst nichts weiter davon gehört, bis sich vor ein paar Wochen Hays bei mir gemeldet hatte durch deren Vermittlung der Auftrag zustande kam. Nach so einer relativ langen Zeit kann ich mich natürlich nicht mehr an alle Einzelheiten erinnern, so kann ich auch nicht mit Gewissheit sagen, ob ich vor dem Neustart laut eine Warnung (Was ich eigentlich immer mache wenn jemand an einer Maschine arbeitet) ausgesprochen habe, oder ob ich diese zu leise oder gar nicht ausgesprochen habe.
Damit das Folgende nicht im falschen Licht erscheint sei hier erwähnt, dass mir das Ganze natürlich leid tut und ich auch nicht leugnen möchte, dass ich der Verursacher bin. Jedoch bin ich der Meinung, dass mich nicht die Hauptschuld an dem Vorfall trifft. Eine gewisse Mitschuld sehe ich (leider) bei dem verletzten Kollegen. Dieser kennt die Maschine und ihre potentiellen Gefahren schon seit vielen Jahren, während ich nur eine kurze Einführung in die Anlage erhalten hatte und ich mir heute, aus bereits erwähntem Grund, auch nicht sicher bin, ob ich auf die große Klemm-/Quetschgefahr ordentlich hingewiesen wurde. Dieser Kollege hätte durch Einbringung eines Hindernisses vermutlich verhindern können, dass sich das Lineal soweit bewegt, dass es zu einer Quetschung kommt. Die Hauptschuld sehe ich jedoch bei dem Hersteller selber, der in meinen Augen eine völlig unzureichende Risikobewertung (oder wie das genau heißt) durchgeführt hat. Meiner Meinung nach hätte an dieser Stelle ein 5/2-Wege Ventil (Meine dies heißt so) eingesetzt werden müssen, das zwei Spulen besitzt und jeweils nur schaltet, wenn eine der Spulen einen Impuls erhält und ansonsten sich nicht bewegt. Wäre ein solches Ventil eingesetzt worden wäre es nicht zu der Bewegung des Lineals gekommen und alles wäre gut.
Ich hätte nun gerne gewusst, ob ich mit meiner Einschätzung richtig liege und welche Vorschriften und/oder Normen hier zur Anwendung hätten kommen müssen. Wie gesagt ist es nicht mein Ziel mich vor der Verantwortung zu drücken, aber ich weigere mich zu akzeptieren, dass ich der alleinige Sündenbock sein soll.

WAGO Webvisu: Mit Button Klick einer Variablen eine Konstante zuweisen! Wie?

$
0
0
Guten Abend zusammen. Wie die Überschrift schon sagt bin ich heute Abend an folgender Schwierigkeit gescheitert:
Ich möchte, wenn ich auf einen Button, oder wegen mir auf ein Textfeld klicke einer angebundenen Variablen einen konstanten wert zuweisen.

Bsp. Globale Variable von Typ INT mit Namen "Testvariable"

Klicke ich auf den Button soll die Steuerung quasi den Befehl

Testvariable = 5 ausführen.

Bei WinCCflexible/TIA etc. gibt es die Funltion "Variablenwert setzen". Gibt es sowas hier auch oder muss ich wirklich einen boolschen Wert setzen und dann auf der SPS die Zuweisung durchführen. Das wäre äußerst nervig..


Für jede Inspiration bin ich äußerst dankbar...

Gruß

Marco

TIA Erfahrung zu Testfunktion in einer Schrittkette....

$
0
0
Hallo, ich bin immer noch an meiner Schrittkette und habe mir überlegt, eine Funktion einzubauen. Ich möchte über eine Eingang die Kette unabhängig von allen Bedingungen stoppen oder starten können. Ja das kann je nach Anwendung gefährlich sein aber das soll eine Testfunktion werden. Ich habe es oft mit schnellen Schritten zu tun und da kann man oft nur schlecht erkennen, wo der Fehler ist.

Wie sind da eure Erfahrungen? Habt ihr auch so was in euren Schrittketten?

TIA PLC-Datentypen auf E/A-Bereiche

$
0
0
Hallo zusammen,

kann ich bei solchen Datentypen einen Offset eintragen bzw. was mir viel wichtiger erscheint, kann ich unterschiedliche Start-Adressen eingeben?

Mir geht es primär darum, einen Motor-type anzulegen und diesem bei der deklaration sowohl Inputs als auch Outputs anzulegen. Derzeit mache ich einen typeEngineInput und einen typeEngineOutput, was nicht äußerst tragisch, aber auch nicht sonderlich effizient ist.

TIA Verschwundene Lizenzen

$
0
0
Hallo zusammen,

das ist mein erster Beitrag in diesem Forum und ich muß mich gleich als Dussel outen.

Ich wollte alle meine Siemens-Lizenzen (TIA V13 Professional Combo und WinCC V13 Comfort auf einen anderen Rechner übertragen. Dazu habe ich einen handelsüblichen Stick verwendet. Beim Übertragen vom alten Rechner auf den Stick habe ich die Übertragung überprüft. Die Lizenzen waren auf den Stick. Als ich sie in den anderen Rechner steckte, kam der Schock-Moment. Alle Lizenzen sind weg. Der Stick ist leer.

Kann mir da jemand einen Tipp geben, wo die Lizenzen sein könnten und wie ich da wieder dran komme oder habe ich da ne Menge Geld verbrannt?

Danke

Andre

OPC UA Informationsmodell

$
0
0
Ich habe eine allgemeine Frage zum OPC UA Informationsmodell.

Als Beispiel habe ich eine kleine Halle mit einer Anlage bestehend aus 5 unterschiedlichen Maschinen. Jede Maschine verfügt über eine SPS. Jeder dieser SPS verfügt über einen OPC UA Server. Mit einem OPC UA Client kann ich jeden dieser 5 OPC UA Server auslesen oder bestimmte Datenpunkte überwachen.

Meine Frage betrifft jetzt die Vorgehensweise hinsichtlich des OPC UA Informationsmodells. Für mich gibt es zwei Vorgehensweisen bei der Modellierung:

  1. Globales Modell: Ich modelliere die Anlage als Ganzes in ein globales OPC UA Modell. Beispielweise ein hierarchisches Modell (Halle -> Anlage -> Maschine -> Sensoren (Daten)). Jeder OPC UA Server und Client kennt dieses globale Modell. Die OPC UA Server auf den unterschiedlichen Maschinen instantiieren vom dem Gesamtmodell nur die Objekte, die für die jeweilige Maschine von Bedeutung sind. Der OPC UA Client sieht dann das ganze Bild und alle instantiierten Objekte.
  2. Mehrere Modelle: Jeder OPC UA Server bekommt ein eigenes Modell für die jeweilige Maschine wo dieser drauf läuft. Nur der Client bekommt ein Gesamtmodell und füllt dieses Dann mit den Daten/Objekten aus den einzelnen OPC UA Server Modellen.


Wie wird eine solche Anlage typischerweise modelliert? Gibt ein ein Gesamtmodell, welches jeder OPC UA Teilnehmer implementiert und mit seinen entsprechenden Daten füllt oder gibt es mehrere kleine von einander unabhängige Modelle für die einzelnen OPC UA Teilnehmer und nur der übergeordnete Client sieht das große Ganze?

Vielen Dank für eure Hilfe.

BG

Step 7 CPU defekt - Speicherkarte einfach wechseln?

$
0
0
Hallo,

wir haben hier in einer Maschine eine defekte CPU313C (6ES7313-5BG04-0AB0).
Kann ich jetzt einfach eine neue bestellen und die Speicherkarte von der alten reinstecken? Läuft dann alles wieder?
Gibt's irgendwas zu beachten?

mfg
urlaub

TIA Temporären VARIANT Zeiger vorbelegen

$
0
0
Hallo,

ich arbeite das erste Mal mit VARIANT, hab aber durchaus Erfahrung mit dem Aufbau des Any-Zeigers ;)
Ich will hier in einem FB aus SCL einen temporären VARIANT mittels MOVE_BLK_VARIANT durch einen Eingangs-Variant belegen. Jedoch bekomm ich beim Übersetzen den Fehler "Ungültiger Datentyp". Ich hab dann versucht, den Variant mittels P#M0.0 INT 1 vorzubelegen, jedoch kein Erfolg. Was verstehe ich hier nicht?

Code:

//Preset variant (Invalid value, will be overwritten below anyway
                //#ActualDecadesVariant := P#M0.0 INT 1;
               
                    #tmp_result := MOVE_BLK_VARIANT(SRC := #Decades_Line1, COUNT := 1, SRC_INDEX := #Counter1, DEST_INDEX := 0, DEST => #ActualDecadesVariant);
                   
                IF #Actual_Line = 1 THEN
                   
                    #tmp_result := MOVE_BLK_VARIANT(SRC := #Decades_Line2, COUNT := 1, SRC_INDEX := #Counter1, DEST_INDEX := 0, DEST => #ActualDecadesVariant);
                   
                ELSIF #Actual_Line = 2 THEN
                   
                    #tmp_result := MOVE_BLK_VARIANT(SRC := #Decades_Line3, COUNT := 1, SRC_INDEX := #Counter1, DEST_INDEX := 0, DEST => #ActualDecadesVariant);
                   
                ELSIF #Actual_Line = 3 THEN
                   
                    #tmp_result := MOVE_BLK_VARIANT(SRC := #Decades_Line4, COUNT := 1, SRC_INDEX := #Counter1, DEST_INDEX := 0, DEST => #ActualDecadesVariant);
                   
                END_IF;

Gruß,

Neibeck

EDIT: Ich denke ich werde das Ganze wieder per Any-Zeiger lösen. Meine Intention war eigentlich, dass ich den Datentyp im Zeiger variabel gestalten könnte, jedoch scheint das nicht so ganz nach meiner Idee nach hinzuhaun. Was ich derzeit nicht ganz verstehe ist, wozu es überhaupt möglich ist (scheinbar) einen VARIANT als temp zu deklarieren. Laut Hans Berger - "Automatisieren mit SIMATIC S7-1500" ist ein solcher nämlich nur als Input, Output oder InOut zulässig.

TIA AlarmControl, Meldeliste nach Priorität sortieren

$
0
0
Hey Forum,

vielleicht könnt ihr mir weiterhelfen :-)
Ich arbeite derzeit mit TIA V14 SP1 Upd 4. Dieses Thema bezieht sich lediglich auf WinCC Prof.

Problem: Ich möchte gerne meine Meldungen in dem Objekt (AlarmControl) von Siemens nach Priorität sortieren.
Allerdings habe ich nur die Möglichkeit "Standard-Soriterung: Absteigende Reihenfolge" oder "Aufsteigende Reihenfolge"

Übersehe ich irgendwo einen Haken oder wie kann das realisiert werden?

Danke im vorraus :)
Viewing all 49301 articles
Browse latest View live