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

Beckhoff -> Array of LREAL in CSV exportieren

$
0
0
Ich wünsche einen schönen Sonntag morgen!

Ich habe hier gerade ein Problem, bei dem ich etwas hänge. Vermutlich ist es nur eine Kleinigkeit, ich sehe aber gerade den Wald vor lauter Bäumen nicht. Ich habe mir das Beispiel von der Beckhoff- Homepage geholt, dieses erzeugt aber immer nur eine leere Datei.

Kann da mal jemand drüber schauen und mir sagen wo es hängt?

Vielen Dank.

Code:

PROGRAM csv


(* Writing of CSV file in text mode. None of the field value is containing any non-printing control characters like line feed, carriage return, quotation marks, semicolon... *)
VAR
    bWrite            : BOOL := FALSE;(* Rising edge starts program execution *)
    sNetId            : T_AmsNetId := '';    (* TwinCAT system network address *)
    sFileName    : T_MaxString := 'c:\TextModeGen.csv';(* CSV destination file path and name *)
    sCSVLine        : T_MaxString := '';(* Single CSV text line (row, record), we are using string as record buffer (your are able to see created fields) *)
    sCSVField        : T_MaxString := '';(* Single CSV field value (column, record field) *)
    sTest            : T_MaxString :='Test';
    bBusy            : BOOL;
    bError            : BOOL;
    nErrId            : UDINT;
    nRow            : UDINT    := 0;(* Row number (record) *)
    nColumn        : UDINT    := 0;(* Column number (record field) *)
    hFile            : UINT        := 0;(* File handle of the source file *)
    step            : DWORD    := 0;
    fbFileOpen    : FB_FileOpen;(* Opens file *)
    fbFileClose    : FB_FileClose;(* Closes file *)
    fbFilePuts        : FB_FilePuts;(* Writes one record (line) *)
    fbWriter        : FB_CSVMemBufferWriter;(* Helper function block used to create CSV data bytes (single record line) *)




    database        : ARRAY[0..10,0..10000] OF STRING(4) :=
    ['0_0', '0_1', '0_2', '0_3', '0_4', '0_5',
    '1_0', '1_1', '1_2', '1_3', '1_4', '1_5',
    '2_0', '2_1', '2_2', '2_3', '2_4', '2_5',
    '3_0', '3_1', '3_2', '3_3', '3_4', '3_5',
    '4_0', '4_1', '4_2', '4_3', '4_4', '4_5',
        '5_0', '5_1', '5_2', '5_3', '5_4', '5_5'];
        str_Power: STRING;
END_VAR


und dann noch das Programm:

GVL.Power ist ein ARRAY of LREAL[1..10000]

Code:

CASE step OF
    0:    (* Wait for rising edge at bWrite variable *)
        IF bWrite THEN
            bWrite        := FALSE;
            bBusy        := TRUE;
            bError        := FALSE;
            nErrId        := 0;
            hFile        := 0;
            nRow        := 0;
            nColumn    := 0;
            step        := 1;
        END_IF




    1:    (* Open source file *)
        fbFileOpen(  bExecute := FALSE  );
        fbFileOpen(    sNetId := sNetId, sPathName := sFileName, nMode := FOPEN_MODEWRITE OR FOPEN_MODETEXT,(* Open file in TEXT mode! *)
                        ePath := PATH_GENERIC, bExecute := TRUE );
        step := 2;




    2:(* Wait until open not busy *)
        fbFileOpen( bExecute := FALSE, bError => bError, nErrID => nErrID, hFile => hFile );
        IF NOT fbFileOpen.bBusy THEN
            IF NOT fbFileOpen.bError THEN
                step := 3;
            ELSE(* Error: file not found? *)
                step := 100;
            END_IF
        END_IF




    3:(* Convert one PLC record to CSV format *)
        sCSVLine := '';
        fbWriter.eCmd := eEnumCmd_First;(* Write first field value *)
        IF nRow <= 10 THEN




            FOR nColumn := 1 TO 10000 BY 1 DO


                str_Power:=LREAL_TO_STRING(gvl.Power[nColumn]);
                sCSVField := STRING_TO_CSVFIELD( str_Power, FALSE );(* TODO: Get field value from your application *)




                (* Add new field to the record buffer *)
                fbWriter(    pBuffer := ADR( sCSVLine ), cbBuffer := SIZEOF( sCSVLine ) - 1, putValue := sCSVField, pValue := 0, cbValue := 0,
                            bCRLF := ( nColumn = 10000 ) );(* bCRLF == TRUE => Write CRLF after the last field value *)
                IF fbWriter.bOk THEN
                    fbWriter.eCmd := eEnumCmd_Next;(* Write next field value *)
                ELSE(* Error *)
                    step := 100;
                    RETURN;
                END_IF




            END_FOR(* FOR nColumn := 0... *)




            (* FB_FilePuts adds allready CR (carriage return) to the written line.
            We have to replace the $R$L characters with $L character to avoid double CR. *)
            IF RIGHT( sCSVLine, 2 ) = '$R$L' THEN
                sCSVLine := REPLACE( sCSVLine, '$L', 2, LEN( sCSVLine ) - 1 );
            END_IF




            nRow := nRow + 1;(* Increment number of created records (rows) *)
            step := 4;(* Write record to the file *)




        ELSE(* All rows written => Close file *)
            step := 10;
        END_IF




    4:    (* Write single text line *)
        fbFilePuts( bExecute := FALSE );
        fbFilePuts( sNetId := sNetId, hFile := hFile, sLine := sCSVLine, bExecute := TRUE );
        step := 5;




    5:(* Wait until write not busy *)
        fbFilePuts( bExecute := FALSE, bError => bError, nErrID => nErrID );
        IF NOT fbFilePuts.bBusy THEN
            IF NOT fbFilePuts.bError THEN
                step := 3;(* Write next record *)
            ELSE(* Error *)
                step := 100;
            END_IF
        END_IF




    10:    (* Close source file *)
        fbFileClose( bExecute := FALSE );
        fbFileClose( sNetId := sNetId, hFile := hFile, bExecute := TRUE );
        step := 11;




    11:(* Wait until close not busy *)
        fbFileClose( bExecute := FALSE, bError => bError, nErrID => nErrID );
        IF ( NOT fbFileClose.bBusy ) THEN
            hFile := 0;
            step := 100;
        END_IF




    100: (* Error or ready step => cleanup *)
        IF ( hFile <> 0 ) THEN
            step := 10; (* Close the source file *)
        ELSE
            bBusy := FALSE;
            step := 101;    (* Ready *)
        END_IF




END_CASE


Modbus und Array

$
0
0
Hallo Leute.

Wie im Anhang habe ich ein Gerät per Modbus eingebunden. Ich bekomme auch alle Werte.

Aber wie kann ich statt den Channel 2 in zwei einzel Word darzustellen , dass gnaze als Array [0..1] of WORD bekommen?

Siehe Bild

Vielen Dank.

Siemens Motor mit Lenze 840 D

$
0
0
Hallo,

ich habe einen Siemens Motor. Wenn ich diesen direkt an 380V anschließe läuft er mir zu schnell. Also habe ich mir einen gebrauchten Lenze 840D besorgt. Ich habe den Lenze angeschlossen und den Motor daran. Um erstmal alles Testen zu können möchte ich den Motor einfach mit dem Lenze Keypad steuern. Bin dazu wie im Quick Guide vorgegangen http://download.lenze.com/TD/E84AVBx...N_FR_ES_IT.pdf. Das Problem das ich habe ist das egal welche Drehzahl ich einstelle der Motor nur ganz langsam läuft und dabei ruckelt. Kann mir da jemand helfen?

Was ich auch komisch finde. Ich möchte die Standard Einstellungen laden. Evtl. ist ja nur was verstellt. Dazu bin ich wie im Quick Guide angegeben vorgegangen. Ich kann nur nicht ganz zum Schluss die Option "01" wählen weil sie mir gar nicht angeboten wird. Es blinkt nur ne "6".



Edit: Was ich noch nicht erwähnt habe. Leider hat der Motor kein Typenschild mehr. Was wäre wenn der Lenze zu schwach ist? Macht das sich so bemerkbar? Ich hab irgendwo noch n kleineren rum liegen. Könnte auch den erstmal testen...

Sonstiges LOGO!Soft Comfort - Mehrere Seiten im Diagramm-Editor möglich?

$
0
0
Hallo,

ich habe mir eine LOGO 8 nebst einigem Zubehör gekauft und versuche mich gerade mit der mitgelieferten Software (LOGO!Soft Comfort) anzufreunden.

Woran ich gerade verzweifle ist folgendes:
Ich habe bei meiner Hardware insgesamt 16 Eingänge und 12 Ausgänge. Wenn ich die alle verwende und komplexe Verknüpfungen habe, wird es auf dem Blatt im Diagramm-Editor schnell etwas eng und die Übersichtlichkeit leidet. Muß ich alles das, was zu meinem "LOGO-Programm" gehört, auf einem einzigen Editor-Blatt unterbringen? Das kann ich mir nicht vorstellen, finde jedoch keine andere Möglichkeit.

Hat jemand einen zielführenden Tip für mich?


Grüße aus Bremen

Carsten

Tommi feiert

$
0
0
Hallo Tommi,

eben noch beim Stammtisch und schon steht die nächste Feier ins Haus. :cool:
Herzlichen Glückwunsch und genieß' den Tag!

:sm20:

Step 7 Fehler Laden FB / Lokaldaten oder Schreibschutzkennung (D21A)

$
0
0
Guten Morgen Leute,

ich habe ein Problem mit dem Laden eines FBs. Wenn ich diesen Laden möchte bekomme ich die Fehlermeldung "(D21A) Die Länge der Lokaldaten oderSchreibschutzkennung ist fehlerhaft."

Der FB hat folgende Längen:
Lokaldaten: 570 Byte
MC7: 11888 Byte
Ladespeicherbedarf: 12416 Byte
Arbeitsspeicherbedarf: 11924 Byte

Hardware ist eine CPU 315-2 DP (6ES7 315-2AG10-0AB0)
Firmware: V 2.0.11

Laut Leistungsdaten kann diese:
6144 Byte Lokaldaten und ein FB darf 16420 Byte lang sein.

Das Kuriose an der Sache ist, dass ich den Baustein vor über einem halben Jahr geschrieben hatte und ihn auch ohne Probleme laden konnte. Jetzt ein halbes Jahr später, ohne den Baustein verändert zu haben, geht es nicht mehr.
Urlöschen hab ich schon ausprobiert, hat nichts geholfen.

Hat jemand eventuell ne Idee woran es liegen könnte?

MFG

3-Draht Sensor an Analogkarte

$
0
0
Hallo zusammen,

zum Thema 3-Draht Sensoren habe ich eine allgemeine Frage.

Einer unserer Kunden verwendet größtenteils 3-Draht Ultraschallsensoren. Diese schließen wir an ET200S Analogeingangskarten an. (Siehe Anhang). Diesbezüglich gab es nie Probleme.
Lt. Aussage eines Monteurs vergessen wir jedoch immer die Karte auf 0V zu legen (was diese immer vor Ort noch nachträglich machen).

Im Anhang zu sehen ist die aktuelle Schaltung und Auszug aus dem Handbuch der Analogkarte. Der Sensor muss extern versorgt werden, da die Karte nicht genug Strom liefert.
Auf Pin 2 liegt das Signal des Sensors.
Der Monteuer sagt er legt immer den Pin 1 auf 0V. Dies ist doch aber ein Kurzschluss?

Freundlicher Gruß

Analogkarte.jpg
Angehängte Grafiken

WinCC Flex WinCC flex Problem mit Funktionstaste ( Funktion nicht löschbar )

$
0
0
Hallo zusammen,

ich habe erst kürzlich eine WinCC flex PC Runtime erstellt. Es funktioniert soweit alles.
Nur hatte ich ein kleines Phänomen. Ich habe ein Objekt aus einer anderen Visu makiert und
reingezogen. Dann hat er aber zusätzlich noch auf die Taste F4 eine Funktion gelegt ( siehe Anhang ).
Diese ist grau hinterlegt und somit kann ich sie nicht löschen. Die Eigenschaft liegt auch nur in díesem Bild
in der Taste, nicht im Vorlagebild oder in sonstigen Bildern.

Folgendes habe ich bereits unternommen:
Temporäre Dateien gelöscht
Projekt komplett übersetzt
Gespeichert und optimiert
=>keine Änderung

WinCC Flex 2008 SP3 Udp7.

Vielleicht hat einer eine Idee wie ich die Funktion lösche. Wie gesagt, es hat keinen störenden Einfluss aber ich hätte es aus Prinzip schon gerne weg.

Danke und mit Grüßen

Flex2008.jpg
Attached Images

Mitsubishi FX5 wie rufe ich eine Instanz von einem FB auf (in ST)

$
0
0
Guten tag!
ich bin noch Anfänger und versuche Funktionsblöcke zu schreiben.
Ich habe einen Funktionsblock, der einfach nur ein 2Sek.Timer starten soll und zurückgeben soll, wenn di zeiot abgelaufen ist.

Ich weiß aber nicht, wie ich einen Funktionsblock aufrufe:

Mein Funktionsblock: FBTimer
Code:

bResult := OUT_T(bTimerStarten,td1sTimer,20);  //Starte Timer 2Sek (20*100ms);
bTimerStarten und td1sTimer sind VAR_INPUT

Wie rufe ich eine Instanz dieses Funktionsblock auf.

Bei
Code:

bResult := FBTimer(TRUE,20);
Bekomme ich die Fehlermeldung
Quote:

No. Result Data Name Category Content Error Code1 Error FunXAchse Program Conversion Unable to find FUN definition. 0x11041F50
Kann mir jemand weiterhelfen?

Danke im Voraus

WinCC WinCC V7.0 Upgrade

$
0
0
Wie funktioniert nochmal ein Upgrade von 7.0 auf 7.2?

Bei der Installation kommen die Meldungen, dass inkompatible Versionen <7.2 von "WebNavigator, DataMonitor und Connectivity Pack" gefunden wurden, diese entweder deinstalliert oder upgegradet werden müssen.
Mit dem Upgrade werden doch die besagten Sachen hochgerüstet, oder gibt es eine weitere Möglichkeit, die zu upgraden?
Trotz Deinstallation tauchen diese Meldungen immer noch auf und mit der Installation gehts nicht weiter.

So am Rande, würde ein direktes Upgrade von 7.0 auf 7.4 auch funktionieren?

add/remove Library from ST code (Twincat3 PLCopen)

$
0
0
Hello everybody!!
First I will try to describe my problem....maybe you can help me!!!
I am using PLCopen in my application.
I also have 3 different PLCopen Libraries from different companies allready added on my REFERENCES tab and before i compile my project i will like to select(im code) which library(implementation) i will use!
Important is also to mention that all plcopen libraries have functions with same names (MC_Home, MC_Reset.......)
I tried something like this but it doesnt work(pragmas {if elsif...} not supported on declaration!!)


{define plcopen_companyA}
FUNCTION_BLOCK FB_Motor
VAR
{if defined (plcopen_companyA)}
fbMCMoveAbsolute: companyA_lib.MC_MoveAbsolute;
{else}
fbMCMoveAbsolute: companyB_lib.MC_MoveAbsolute;
{end_if}
END_VAR

any Ideas!!
I would not like to adding or removing libraries on the IDE library manager for this! In other languages you just use a #include!! I hate IDEs :D
The Goal is to implement one ST software for 3 diferent hardwares(drivers)!!

I was also thinking about implementing a interface and three diferent declarations, one for each company!!?? ideas??
regards
carlos

Keypad in der VISU vergrößern TWINCAT 3

$
0
0
Guten Tag,
gibt es eine Möglichkeit in der Twincat VISU das Keypad größer darstellen zu lassen? Wenn ich eine Eingabe tätigen will erscheint das Keypad, aber für meine Wurstfinger bzw. der der Kollegen ist dieses etwas klein.
Oder gibt es eine Möglichkeit seine Individuelle Tastatur einzubinden?
Mit freundlichen Grüßen
Daniel

Sonstiges Alternative zu SIMATIC HMI KP8 PN

$
0
0
Hallo liebes Forum,

kennt jemand von euch eine preisgünstige Alternative zum Profinet Key Panel (SIMATIC HMI KP8 PN) von Siemens?

Wäre über Hinweise sehr dankbar.

Gruß
Sebastian

PP1050 Kompaktrechner Siemens Sicomp IMC 05 6AR1025-0AA10-0AA0

$
0
0
Hallo,

zum verkauf steht der oben genannte Kompaktrechner
aus einer Industriemaschinen Demontage. Es handelte sich hier um eine
Demoanlage, das Panel ist wie Neu!!! Der Rechner hat bis zum Ausbau
einwandfrei Funktioniert!

Weitere Bilder kann ich gerne per E-Mail zukommen lassen

Preis ist Verhandlungsbasis und ist inkl. Versand!!! Dieser beläuft sich auf 500€

Gruß MacBaron
Angehängte Grafiken

2 x SIEMENS S7 6ES7 322-1HF01-0AA0

$
0
0
Zum Verkauf stehen folgende Siemens S7 Baugruppen:

2 x SIEMENS S7 6ES7 322-1HF01-0AA0
Relaisausgabe
DO 8*Relais AC 230V
E-Stand: 02

Die Baugruppen sind neu und in der Originalverpackung.
Das Siegel wurde leider geöffnet.

Für 70€ / Stk. inkl. Versand sind die Baugruppen zu haben.
Bei ernsthaften Interesse ist der Preis via PN noch verhandelbar.
Angehängte Grafiken

Mitsubishi FX5U grundsätzliche Frage zur Ablaufsteuerung

$
0
0
guten Tag!
da ich mit der SPS-Programmierung erst anfange, bräuchte ich einen Tip:
Wenn ich eine Bool-Variable kurz aus, dann wieder anmachen will (zum Beispiel um einen Timer neu zu starten), darf es nicht meines Wissens nicht im gleichen Zyklus passieren, da immer die letzte Einstellung im Zyklus angewandt wird.

1) Ist es so? oder gilt es nur für die Ausgänge?

2)Wie macht ihr dann das? Setzt ihr die Variable auf AUS, benutzt einen Timer oder einen Zykluszähler, um die Variable erst im nächsten Zyklus auf AN zu setzen?

Danke im Voraus

MBoerner

TIA Unterprogramm nicht zyklisch ausführen

$
0
0
Hallo zusammen,

ich habe folgendes Problem ich habe einen Zebra Drucker der von einer SPS mit Daten gefüttert wird und einen Druckbefehl bekommt (beides über Ethernet). Das funktioniert soweit auch ganz gut allerdings druckt er in 1 von 100 Fällen zweimal hintereinander das selbe Etikett. Meine Vermutung (da es erst auf der S7-1500 vorkommt) ist das er bei einer sehr kurzen Zykluszeit den Befehlt 2 mal bekommt.
Wenn ich das ganze durch ein kleine Programm in Java/C# mache dann druckt er genau das was ich möchte. Deswegen die Vermutung das es an der zyklischen Bearbeitung liegt.

Um das ganze zu umschiffen würde ich gerne, wenn irgendwie möglich ein Programm Eventgetriggert einmal durchlaufen.

Hauptproblem sind vermutlich die T_SEND und T_RCV Bausteine, da diese ja antizyklisch arbeiten und man auf die Rückmeldung dieser ja warten müsste damit das Ganze konsistent bleibt.

Ich hatte mir schon überlegt das Ganze in eine zweite kleine S7-1200 auszulagern, in dieser eine sehr hohe Zykluszeit einzustellen.
Um auf die Rückmeldung der T_XXX Bausteine zu warten hätte ich dann eine Endlosschleife genommen... leider fehlt mir hier die Möglichkeit für einen Software-Interrupt um die SPS aus dieser Endlosschleife zu befreien wenn die Rückmeldung da ist

Fällt euch dazu irgendwas ein wie man das evtl. anstellen könnte ? Bin für (fast) jeden Input dankbar!

Step 7 Step7 V5.5 nach V5.6

$
0
0
Ich habe einen Kunden in Polen, der hat nun Win10 mit Step7 V5.6 installiert. (Systemsprache natürlich Polnisch)

1. Sein Step7 (V5.6) meckerte bei meinem Projekt (v5.5), er soll sein System auf Deutsch umstellen.

Alles gemacht, System und Step7 auf Deutsch umgestellt.

2. Er kann dearchivieren, Step7 fragt dann, ob das Projekt geöffnet werden soll und dann sitzt man vor dem leeren Simaticmanager. Es wird kein Projekt geöffnet, keine Fehlermeldung ausgegeben.

Ich kann Projekte von Ihm öffnen, sobald ich etwas einfüge und dann speichere, geht es bei ihm nicht mehr.


Weiß da jemand Rat?


PS. Bisher konnten meinen Projekte immer von anderen Programmierern geöffnet werden. Auch in meiner alten XP-Maschine geht das noch.

Sonstiges Zähler Variablen auf 2 bis n SPS Synchron halten

$
0
0
Zähler Variablen auf 2 bis n SPS Synchron halten

Guten Tag

Ich habe die Aufgabe Zählervariablen (ms Zähler) auf 2 bis n(max ca. 100) SPS‘en (S7 1500) möglichst Synchron halten.

Suche eine Lösung mit der sich die Zähler über zB. UTP mit geringerAbweichung Synchronisieren lassen.

Gruess Willi Meier

Verhältnis Mechanik/Elektrik

$
0
0
Hallo,

weil ich mir gerade deswegen Gedanken machen.
Wir sind ein Maschinenbaubetrieb der eigentlich keine Serienanlagen vertreibt.
Die Anlagen sind ähnlich aber es gibt doch immer etwas anzupassen bzw. komplett neues pro Anlage.
Würde mal sagen ca. 70% passen meist der Rest ist mit Aufwand verbunden.

Wir sind 6 E-Techniker die alles drum herum managen (Schaltpläne, Software, Sicherheitstechnik usw.) und es gibt 9 Mechaniker.
Wie sieht das Verhältnis in anderen Firmen aus?

LG
Knorpe
Viewing all 50463 articles
Browse latest View live
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>