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

Beckhoff Einbinden von Simulink. Vorteile bei Robotik!

$
0
0
Schönen guten Tag,
ich widme mich jetzt schon einiger Zeit der Entwicklung von Robotern, jedoch zu meist mit Mikcrocontroller in C oder C++ und Entwicklungen in Simulink. Nun steht bei mir jetzt aber ein größeres Projekt an und ich habe dort schon die ersten Schritte durchgeführt. Zu meist jedoch in strukturiertem Text um die Hardware zu testen, also noch ohne großartige Robotik-Einbindung.
Das Projekt ist ein 6-achsiger Roboter, der eine Bahnsteuerung mit Denavith-Hartenberg-Transformation, Jacobi-Matrix und so weiter. Das Ganze stellt mich jetzt vor eine große Herausforderung, da meine Erfahrung mit Beckhoff noch nicht sehr vertiefend ist. Für diese Anwendung reicht ein herkömmlicher Mikrocontroller aus vielen Gründen auch einfach nicht aus.

Zu meiner eigentlichen Frage: Ich kenne die unterschiedlichen Möglichkeiten zur Einbindung von Kinematiken mit TwinCat (sprich TwinCat Cinematic Transformation) und auch die TE1400 zur Einbindung von Matlab/Simulink Modellen. Mir stellt sich nun die Frage was am sinnvollsten ist, den Roboter vollständig über ein Simulink-Modell steuern, also die unterschiedlichen Gelenke auch direkt darüber ansteuern. Oder dieses Modell nur für die Berechnung der Punkte verwenden und über einen anderen Weg ansteuern.

Vielleicht hat jemand von euch schon Erfahrung in diesesm Bereich und möchte sein Wissen mit mir teilen.

Liebe Grüße,
Ralf

OOP - Properties - Membervariablen - Getter/Setter - automatich erstellen

$
0
0
Hallo Community,

ist es möglich, dass beim Erstellen einer Eigenschaft die Membervariable und die Zuweisungen in den Gettern und Settern automatisch eigetragen werden?

z.B.:

Deklaration der Membervariable: m_Name : STRING;
Code im Get: Name := m_Name;
Code im Set: m_Name := Name;

In VB oder .NET ist dies so.

Vielen Dank
Twincatter

WinCC Flex Sichtbarkeit von 2 Variabeln abhängig

$
0
0
Hallo

und zwar hab ich drei Symbolisches E/A-Felder bei denen ich die Sichtbarkeit von 2 Variabeln abhänig machen möchte.

Beispiel:

VAR1 = True dann Symbolisches E/A-Feld 1 = Sichtbar
VAR2 = True dann Symbolisches E/A-Feld 2 = Sichtbar
VAR1 = True AND VAR2 = True dann Symbolisches E/A-Feld 3 = Sichtbar

Es handelt sich um interne HMI-Variabeln.
Hat jemand eine idee? Von VB-Skriten habe ich leider noch nicht so viel Ahnung.

Danke schonmal

TIA Pop UP Bild einblenden oder Slide in Bild

$
0
0
Hallo,

ich stehe vor folgendem Problem:

An einem TP 1900 Comfort soll folgenden Funktion projektiert werden:

Beim Öffnen der Tür zur Anlage soll ein Bild eingeblendet werden. Dieses soll am besten das Vorhandene Bild überblenden.
Nun soll nach dem die Tür wieder zu ist der Mitarbeiter auf dem Bild sagen was er gemacht hat "Kontrolle" oder Teil entnommen.

Dann soll sich das Bild wieder ausblenden.

Nun mein Problem:
Es gibt ja die Steuerungsaufträge, aber das ist nicht so schön da ich dann ja das alte Bild schließe.

Habe ich die Möglichkeit ein Pop Up Bild z.B. über eine Wertänderung einzublenden also das aktuell geöffnete Bild einfach zu überblenden ?

SPS Hersteller

$
0
0
Hallo!

Ich hab fast keine Ahnung :confused: über SPS-Steuerungen und wollt fragen ob mir jemand eine liste Diverser SPS-Steuerungshersteller :TOOL: schicken kann, und was es da für Vor- und Nachteile gibt zwischen den Herstellern und der Funktionen zwischen den Systemen.

Ich wär euch unendlich dankbar wenn ihr mir da helfen könntet.

Mir würden auch ein paar Links helfen wo ich diesbezüglich etwas finde

Mit freundlichen Grüßen Klemi

WinCC HMI -> VB-Script -> HMI

$
0
0
Guten Tag,

ich will aus der HMI einen Wert verwenden welchen ich in einem Skript auswerte, verarbeite und abschließend mehrere Variablen an die HMI zurück geben.
Wie nehme ich diese Variablen in das VB-Skript auf und gebe anschließen meine Ergebnisse wieder aus?

Abholen meiner Var mit tue ich glaube ich mit SmartTag("X")

Senden an HMI: ???

Muss mein Skript als Typ "Function" eingestellt werden? Ich finde irgendwie nix was mich glücklich macht....
Danke im Vorraus!

Gruß
Hendrik

Danfoss Software MCT10 über Profibus und Siemens PC Adapter USB A2 ohne Step7

$
0
0
Hallo,

möchte gern einen Danfossumrichter über Profibus und Siemens PC Adapter USB A2 ohne installiertem Step7 konfigurieren.

Die Frage wäre, welche Siemenssoftware wird dafür benötigt, also Treiber für den PC Adapter sowie halt "PG-PC-Schnittstelle einstellen". Die Danfoss Software MCT10 benötigt dann den Siemens Zugangspunkt CP_L2_1: auf dem Rechner.

Der Rechner hat Windows 10 pro 1909 und kein Step7, soll auch nach Möglichkeit keine Step7 Trialversion o.ä. installiert werden. Gibts da die Device Driver als Standaloneinstallation in neuer Win10 fahiger Version, bzw. was wird noch benötigt? SimaticNet? Brauch aber halt kein OPC oder sonstwas...

Danke schonmal.

750-8204 als Modbus TCP Slave

$
0
0
Hallo leute.
Ich versuche eine 750-8204 als Modbus TCP Slave zu betreiben. Ich kann sie anpingen sie läuft und ich nutze e!cockpit. Zum Test nutze ich QModMaster.
In der Wago habe ich 4 Array of Word mit je einer länge von 12 als Datenpunkte Verknüpft. In der Spalte Richtung habe ich 2 als Eingang und 2 als Ausgang eingestellt. Die Ausgänge haben in der Spalte MODBUS ADRESSE 0 bzw.12 und die Eingänge 32000 bzw.32012 als Adresse darin stehen. In der Netzwerkübersicht ist ein Generic Modbus Master eingefügt. Ich hätte gedacht, dass das alles ist und es so funktionieren müsste. Wenn ich jetzt bei QModMaster die IP und die Slaveaddresse eingebe und ihm sage 0x04 Read Input Register, Start Address 0, Number of Register 24 hätte ich jetzt zumindest erwartet dass ich entsprechend meines Mappings in WORD 2 einen counter sehe der von 0-255 immer zählt. Will ich später nutzen um die Funktion der Kommunikation zu prüfen. Ich bekomme in QModMaster aber nur ein Read data failed... Bei der Nutzung z.B. CanOpen muss ich zyclisch den "WAGO_CANopen_Manager();" aufrufen. Muss ich bei einem Modbus Slave etwas ähnliches machen? sowas in der art wie "WAGO_MODBUSSLAVE_MANAGER();" ?

WinCC Flex Von ProTool zu WinCC Flexible

$
0
0
Ich muss ein altes bestehendes Step 7 V5.5 Projekt mit einem ProTool Panel übernehmen und erweitern.

Das Projekt beinhaltet 3 CPUs, wobei eine in einem separaten MPI-Netz ist. Die anderen beiden sind miteineinander in ihrem MPI Netz vernetzt.
Im Projekt wurde Sinaut projektiert und an jeder CPU ist auch eine Sinaut ST7 Baugruppe. Alle ST7 Baugruppen sind miteinander über Ethernet vernetzt.
Das MP370 kommuniziert mit alles 3 CPU´s und es hängt über MPI am MPI-Netz der beiden CPUs. Den projektierten Kommunikationsweg zu der einzelnen CPUs über den Sinautweg muss ich noch herausfinden.
Im ProTool V6.0 Projekt wurden zwei 300/400er Steuerungen mit je einer IF1 B Schnittstelle angelegt.
Mit dem ProTool selbst habe ich bisher gar keine Erfahrung und muss mich dort erst noch zurecht finden.

Sinaut soll gegen eine VPN Verbindung komplett ersetzt werden. Entweder ich rüste nachträglich CPs oder MPI auf Ethernet-Adapter nach.
Und da ich auf Windows 10 umgestiegen bin, kann ich das ProTool so nicht mehr nutzen. Daher möchte ich das Projekt nach WinCC Flexible migrieren.
Auf der Virtuellen Maschine habe ich mir ProTool V6.0 und WinCC Flexible 2008 unter Windows XP Professional SP3 installiert.

In dem Step7 Projekt finde ich im TDOP-Order im Projektverzeichnis das ProTool Projekt. Allerding sind es 3 Dateien: PRO, PRO_00 und PRO_01.
Wenn ich jedes einzelne in ProTool öffne, sehe ich keinen Unterschied. Das PRO habe ich auch schon generiert und extra "ohne Step7-Projekt" abgespeichert.

Nun möchte ich es aber in WinCC-Flexible öffnen. Ich habe es mit der 2008, 2008 SP1 und SP2 versucht. Ab SP2 funktioniert es ja nicht mehr.
Ich bekomme immer die Meldung: Die Migrations-Komponenten wurden nicht installiert oder ProTool läuft gerade. Egal ob ich das einzelne PRO oder die anderen 3 Dateien im Projekt öffne.

Ich habe WinCC Flexible von der CD aus auch schon deinstalliert, repariert, vor Neuinstallation Bereinigungstool darüber laufen lassen, wobei die Meldung kam, dass kein Konflikt festgestellt wurde.
Diese Fehlermeldung der Migration hatte ich auch schon, bevor ich ProTool installiert hatte. Laut Installationsverzeichnis taucht auch ein Ordner "Migration" auf.
Bei Nachinstallation von Komponenten war auf jeden Fall bei ProTool Migration auch ein Haken gesetzt.

Wenn ich es auf dem XP-Rechner hinkriege, dann kann ich es sicher auf meinem Win10 PG mit Flexible 2008 SP5 öffnen.

Vielleicht fällt dem einen oder anderen ein Tipp dazu ein.

Gruß Robert

Siemens Logo und KTP direkt am Pc simulieren

$
0
0
Hallo,


habe leider ein Problem, aufgrund der derzeitigen Situation habe ich keinen Zugriff auf meine Logo 8.:-(
Daher meine Frage: Ist es möglich zwischen Tia Portal und Logo Soft Comfort 8 eine Verbindung herzustellen damit ich das Logo Programm mit dem Touch Panel direkt am PC testen kann?:confused:



Danke im Vorraus.

Mfg Fabian5653

TIA WDREC mt Simotion

$
0
0
Hallo,

ich weiß leider nicht, ob es in dieses Forum am besten passt. Simotion Programmierung ist ja nicht ganz so populär für Logik und Dezentrale Peripherie, aber vielleicht kennt sich ja jemand aus. Ich muss mit einer D425 CAN Bus Telegramme mit Transparent Mode (Layer 2) über den Siemens PN/Link Adapter empfangen. Dazu muss ich in die Sub Module vom PN/Link Adapter ein paar Parameter (Criterion/Maske) schreiben. Auf Simatic Seite (S7 1500) war das kein Problem mit WDREC

REQ := Init
ID := HWID aus Geräteconfig
Index := 16#210
LEN := 8
RECORD := Struct of 2 DWORDs

Auf Simotion Seite brauche ich das auch. Dort gibt es aber die Hardware ID nicht und den Baustein WDREC gibt es dort so auch nicht.

es gibt

_writeVariableRecord(
EXECUTE := Init
// ,IOID := ???
,LOGADDR :=???
,DSNR := 16#210 ???
,LEN := 8
,RECORD := Array of 8 Byte
,DONE => Done
// ,BUSY =>
// ,ERROR =>
// ,ERRORID =>
);

dort bekomme ich im ST Programm aber die Meldung:
Fehler 15:17:21 CAN(47) : 6009 :Funktionsbezeichner erwartet "_writeVariableRecord"
Information 15:17:21 CAN(47) : 32024 :FUNCTION_BLOCK "_writeVariableRecord" global in der Quelle "device.pck"deklariert



oder

_writeRecord(
ioId := ???
,logAddress := ???
,recordNumber := 16#210 ???
,offset := 0 ???
,dataLength := 8
,data := Array of 8 Byte
,nextCommand := ???
,commandId := ???
);

Welchen Baustein muss ich nehmen und wie muss ich den beschalten?
die E/A Adressen vom Modul sind Eingänge Bytes 1..14 und Ausgänge Byte 1

Gibt es auch ein Pendant zum DPRD_DAT?

Netzlaufwerk verbinden Windows CE6

$
0
0
Hallo,

ich möchte auf einem Beckhoff CX1030 mit Windows CE6 ein Netzlaufwerk mappen, um Daten auszulagern. Kann mir jemand sagen ob dies unter CE möglich ist?
Und wenn ja, wie?

Vielen Dank
LG

Step 7 MOD-BUS-RTU Master Handling mit mehren Slaves

$
0
0
Ich hab ne 300er (VIPA) an der habe ich mehre ModBus Slaves.
Das funktioniert auch soweit.

Wer weis wie man korrekt mehrere Slaves liest.

ich hab mehrere Möglichkeiten:

1) ich ruf den FB_MODBUS_MASTER 1x auf
- dabei multiplexe ich die SlaveDaten (BusAdresse, RegisterAdressen, Zielspeicher)

Dafür habe ich mich entschieden

2) Ich ruf den FB_MODBUS_RTU_MASTER mehrmals auf mit jeweils eigenem Instanz-DB für jeden Slave
- damit muss man die SlaveDaten nicht Multiplexen

Das hab ich aus purer neugier mit 2 Slaves geteset und es funktioniert!


Da das im Handbuch leider nicht verzeichnet ist wie man eine ganze Armada von Slaves anspricht, würde mich mal interessieren wir ihr das gelöst habt.
Bzw. welche Infos dazu schon gibt.
Das hat bestimmt auch schon jemand mit der Siemens Version von ModBus gemacht. Würde mich auch interessieren wie das da funktionert!

Nachdem nun beides irgendwie funktionert bin ich etwas ratols
Mein SPS-Programmier-Hirn sieht Methode 1) als die korrekte an.
Wenn ich mit dem PC-Programmierer Hirn darüber nachdenk wärs wohl eher Methode 2)

Step 7 12 Stellige BCD Zahl in DINT wandeln

$
0
0
Das ist ein ziemlich 'geiler' Code für ne S7-300, um 12-stellige BCD Zahlen in einen DINT zu verwandeln.
Sowas kann nur einem (P)C-Programierer eingefallen sein.

Hat da jemand was SPS taugliches zur Hand?

Wozu man das braucht? Ganz einfach! Es gibt 'sehr intelligente' Geräte, die über den Bus Werte als unendliche Lange
BCD Zahlen schicken statt als DINT! Wem so etwas bescheuertes einfällt, weis ich leider auch nicht!
Mein Gefühl sagt mir (P)C-Programmierer

Code:

VAR_INPUT
    BcdChars : ARRAY[1..6] OF BYTE;
END_VAR

VAR_OUTPUT
    diValue : DINT;
END_VAR

VAR
    HexString: ARRAY[0..15] OF STRING;
    BcdStr : STRING;
END_VAR

BEGIN

    HexString[0] := '0';
    HexString[1] := '1';
    HexString[2] := '2';
    HexString[3] := '3';
    HexString[4] := '4';
    HexString[5] := '5';
    HexString[6] := '6';
    HexString[7] := '7';
    HexString[8] := '8';
    HexString[9] := '9';
    HexString[10] := 'A';
    HexString[11] := 'B';
    HexString[12] := 'C';
    HexString[13] := 'D';
    HexString[14] := 'E';
    HexString[15] := 'F';


        BcdStr := '';
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[6]) / 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[6]) MOD 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[5]) / 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[5]) MOD 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[4]) / 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[4]) MOD 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[3]) / 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[3]) MOD 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[2]) / 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[2]) MOD 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[1]) / 16]);
        BcdStr := CONCAT(IN1 := BcdStr, IN2 := HexString[BYTE_TO_INT(BcdChars[1]) MOD 16]);
        IF (LEN(BcdStr) > 1) AND (LEFT(IN := BcdStr, L := 1) = 'F') THEN
            BcdStr := DELETE(IN := BcdStr, L := 1, P := 1);
            WHILE (LEN(BcdStr) > 1) AND (LEFT(IN := BcdStr, L := 1) = '0') DO
                BcdStr := DELETE(IN := BcdStr, L := 1, P := 1);
            END_WHILE;
            BcdStr := CONCAT(IN1 := '-', IN2 := BcdStr);
        END_IF;
        diValue:=STRING_TO_DINT(BcdStr);
END

Wago 750-585 Ausgangskarte - Ausgang bleibt bei 0

$
0
0
Hallo zusammen, ich bin neu hier und habe das Forumdurchgesucht aber mein Problem nicht gefunden:

Ichmöchte einen Luftdruck mit eine Stellventil über die Ausgangskarte 750-585regeln. Als CPU setze ich eine 750-841 ein, eine analoge Ausgangs undEingangskarte ist über eine elektronische Sicherung 750-625 angebunden.Spannungsmessung der Sensorversorgung auf der analogen Eingangskarte ergab 24V, daher schließe ich, dass die Einspeisung soweit in Ordnung sein müsste.

Für dieProgrammierung nutze ich Codesys 2.3. Im Programm habe ich einen PID Bausteinmit MIN-,MAX-Ausgang von 0-3276 als REAL, diese REAL Zahl konvertiere ich zuWORD und gebe diesen Wert direkt auf den Ausgang der 750-585 Karte und paralleldurch einen Abzweig auf einen Merker.

Wenn ichnun online gehe und das Programm starte, verändert sich zwar der Merker so wieich es erwarte, der Ausgang bleibt aber bei 0.

Könnt ihr mir hierbei helfen, was mache ichfalsch?

Screenshot Programmaufbau.jpg
Angehängte Grafiken

Codesys 3.5 Virtualisierung Füllstand

$
0
0
Schönen Guten Morgen,


da ich ja fleißig am lernen bin gibt es immer wieder Punkte wo ein kleiner Tipp ratsam wäre


Ich habe ein Becken mit Füllstandmesser 0-100% nun möchte ich in dem Rechteck das so skalieren das die Farbhöhe den Füllstand im Rechteck darstellt.


Im Anhang ein Screenshot


Vielen Dank für eure Hilfe
Angehängte Grafiken

Regelung eines Hydraulikkreises mit Proportionalventil (Beckhoff)

$
0
0
Schönen guten Tag,
ich arbeite derzeit gerade an einem Projekt wo ich die Geschwindigkeit eines Hydraulikkreises regeln sollte. Dabei verwende ich ein Proportionalventil (Steuerspannung=12V), dass über eine EL2502 und einer FET-Treiberschaltung angesteuert wird. Die aktuelle Länge des Zylinders wird über einen Längengeber aufgenommen und mittels CanOpen und EL6751 der Steuerung übermittelt.
Dieser Zylinder soll sich jetzt nun mit unterschiedlichen Geschwindigkeiten eine bestimmte Position anfahren. Leider bin ich in Sachen Hydraulikregelung nicht gerade der absolute Experte und habe leider keinerlei Ideen wie ich einen solchen Regler entwickle...
Ist hier ein klassischer PI-Regler schon ausreichend und wenn ja, wie kann ich die Werte bestmöglich ermitteln. Mein Problem hierbei ist, dass das Testen an der Maschine nicht ganz unkritisch ist, da der Zylinder doch knapp 2 Tonnen in Bewegung setzt.

Ich hoffe meine Schilderung ist ausführlich genung und ihr könnt mir helfen!

Liebe Grüße,
Ralf

TIA Frage zu dem S7-1200+KTP700 Basic Starter Kit (6AV6651-7DA02-3AA4)

$
0
0
Hallo,

wir überlegen, ob wir uns dieses Starter Kit zulegen
sollen
( https://mall.industry.siemens.com/ma...651-7DA02-3AA4 )

Hier gibt es zu dem Vorgängermodell ( 6AV6651-7DA01-3AA4 ) wohl einen Unterschied,
der mich etwas verwirrt (Neues Model
6AV6651-7DA02
-3AA4)

Auf der Siemens Seite (
https://support.industry.siemens.com...dti=0&lc=en-ME ) verwirrt mich der Text "SIMATIC S7-1200 Starter Kits mit STEP 7 Basic V16"

Bedeutet das V16, dass wir die TIA Version V16 benötigen ?
Zur Zeit arbeiten wir mit TIA V15.1 und ein Update ist noch nicht geplant.

Danke für eure Tips!




TIA Graphschritt aktiv, aber tut nichts

$
0
0
Schönen guten Tag,

ich habe ein Problem das ich nicht gegriffen bekomme. Meine Graph-Schrittkette ist aktiv im Auto, kein SQ oder TM Halt aktiv, SW_Auto = True, aber die Kette ist in einem Schritt, alle Zuweisungen sind false und die Transition ist true, aber nichts weiter passiert.

Da fehlt mir grad jeder Ansatz, für Hilfe wäre ich sehr dankbar.
Meikelneit

PS: CPU1518F TIAV14

Fachschulstudium zum Staatlich geprüften Techniker Mechatronik ab 31. August 2020

Viewing all 50234 articles
Browse latest View live


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