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

TIA Siemens: Mister Automation

$
0
0
Siemens führt "Mister Automation" ein.

Meine Frage dazu:
Bin ich hier eigentlich im Kindergarten, Baumarkt oder Ikea?

Von S7-1200 auf KNX-Bus

$
0
0
Hallo zusammen,

ich würde gerne von einer S7-1200 auf eine Haussteuerung mit KNX-Bus zugreifen.
Auf dem Markt gibt es da ja einige Gateway’s. Taugen die was oder wie kann ich sonst z.B. Profinet an KNX bringen?

TIA Textfeld aus Bildbaustein auslesen TIA v14

$
0
0
Hallo an alle.

Seit ein paar Tagen quäle ich mich mit folgendem Problem

Abhängig von einer statischen Text-Variablen in einem Bildbaustein möchte ich diverse Objekte in eben diesem Bildbaustein auslesen lassen.

Meine Idee ging bei einem Skript in diese Richtung:

If "TF_1".text = "L" Then
SmartTags("HMI_Test_Var") = True
End If

Das funktioniert jedoch nicht so, wie ich mir das dachte und ist nicht korrekt.

Kurz: Kann ich, und wenn ja wie, den statischen Wert eines Textfeldes im Bildbaustein auslesen und durch ein Skript in eben diesem Bildbaustein einmalig verwerten?

Irgendwelche Ideen von eurer Seite?

LG

TwinCAT PLC Lizenz für Ansteuerung von Schrittmotoren

$
0
0
Hallo zusammen,

ich bin noch neu in der SPS-Welt und soll innerhalb eines Projekts einen Prüfstand mit drei Schrittmotoren automatisieren.
Dafür habe ich mir nun ein Beckhoff-System bestehend aus der CX8090 sowie den drei Schrittmotorklemmen KL2541 ausgesucht. Da die Schrittmotoren nicht synchron laufen müssen und lediglich bestimmte Positionen anfahren müssen ohne weitere Anforderungen an Geschwindigkeit oder Beschleunigung, benötige – soweit ich das verstanden habe – keine Motion Control Funktionalität.
Als TwinCAT Version wird "TwinCAT PLC" angegeben.
Muss ich zusätzlich zur CX diese TwinCAT Version für meinen Laptop, auf dem die Programmierung abläuft, kaufen oder ist die Lizenz quasi schon über die CX vorhanden?

Danke für eure Hilfe!

VG, Corbillat

(TwinCat 2) Timer um 1s erhöhen

$
0
0
Hallo zusammen

Ich muss im TwinCat2 in ST einen Timer (Ton) per Button auf dem VISU um 1 Sekunde pro tippen erhöhen.
Ich habe schon versucht den PT eingang mit

[
if Button1 then
%%%%.PT := + t#1s;
]
zu schalten aber da hat sich nichts getan.
hat da jemand mehr Ahnung?

Danke jetzt schon

Step 7 CPU 416-2 DP zu CP 443-1 große Datenmengen

$
0
0
Moin!

bei einer Presse wollen wir größere Datenmengen über Ethernet an einen zentralen Server verschicken. Während eines Pressenhubes (~10s) werden Daten aufgezeichnet, die dann während des nächsten Pressenhubes verschickt werden sollen. Insgesamt fallen bis zu 140 kB an Daten an.

Mit der beschriebenen Hardware haben wir festgestellt, dass wir über AG_LSEND zu langsam sind. Nach einigem rumtüfteln sind wir darauf gestoßen, dass der Engpass der Rückwandbus sein muss, also dass die CPU die Daten nicht schnell genug zum CP rübergeschaufelt bekommt.
Zwar scheint der Rückwandbus sich im Bereich von 187,5KBit/s zu bewegen, aber werden wohl die Telegramme, die wir verschicken (8 Stück, bis zu 7kB), aufgesplittet in kleine Pakete, und da scheint das wohl alles zu langsam zu laufen. In einem Pressenhub werden etwas 20 - 25kB zum Server gesendet.

Alles, was mir noch einfällt, um die Daten in der passenden Zeit zum Server zu bekommen, ist ein Hardwareupgrade auf eine Profinet-CPU, also hier eine CPU 416-3 PN/DP.
Leider wäre das ein wirklich teurer Spaß, deshalb wollt ich nochmal fragen, ob hier jemand vielleicht eine bessere / günstigere Idee hat? Gibt es vielleicht noch eine andere Möglichkeit, die Daten schneller zum CP zu bekommen?


Vorhandenen Hardware:

CPU 416-2 DP (6ES7 416-2XN05-0BA0 / V5.3)
CP 443-1 (6GK7 443-1EX11-0XE0 / V2.6)


Für alle Ideen und Anregungen bin ich dankbar ;)

Step 5 Batteriewechsel bei S5-100U

$
0
0
Moin Experten.

Stimmt folgendes :

Bei einem Batteriewechsel an einer S5-100U (CPU100) wird das Programm gelöscht wenn während des Batteriewechsel keine Spannung an der CPU anliegt.




Eprom steckt nicht. Der Schacht ist leer. Und seit dem Batteriewechsel geht die CPU nicht mehr in RUN bzw. nur ganz kurz.

Modbus Register 750-881 an externe Gewerke

$
0
0
Hallo zusammen,

ich taste mich nun so langsam an das Thema Modbus heran, welches bisher ein mehr oder weniger geschlossenes Buch für mich war.
Vorab habe ich eine sehr einfache Frage (vermutlich) für die Modbusexperten unter euch.

Wir werden mehrere Steuerungen im Projektfall verbauen welche alle die selben Steuerungsaufgaben übernehmen. Der BMS Verantwortliche fordert eine Liste aller Modbus-Variablen um diese bei sich einbinden zu können.

Da wir den 750-881 verwenden und dieser bereits ein Modbus-Register vorgibt, sollten doch folgende Angaben als Beispiel für eine Modbus-Variable reichen:

z.B.
- Beschreibung: Actual Value Temperature
- Zugriff: WRITE (FC6, FC16, FC22, FC23)
- Address (IEC61131): %MW1
- Modbus Address (Dec.): 12289
- Modbus Address (Hex.): 0x3001
- Min Value: 0
- Max Value: 5000
- Scale: 100
- Comment: For example: Value 2850 = 28.50°C

Ich werde hierbei im Programm lediglich die Merker-Bereiche nutzen von Extern werden verschiedene Merkerworte oder Merkerbits gelesen oder beschrieben.
Aber wie genau der Master (BMS Verantwortlicher) dies macht kann mir doch zunächst egal sein, richtig?

Der Nächste Schritt für mich wäre das selbe bei einem 750-8100 und e!cockpit zu erreichen, also ohne vorkonfigurierte Register.

Ich bin für jeden Kommentar dankbar.

Grüße,
Flo

WebVisu Elemente auf mehreren Monitoren darstellen

$
0
0
Hallo,

ich arbeite seit ca. 1 Monat mit das erste mal mit Codesys.

In meinem kleinen Projekt möchte ich eine WebVisualisierung auf mehreren Monitoren darstellen.
Es geht bei dem Projekt um eine Schaltung, die die Zeit messen soll.

Dazu habe ich mir drei "Textfelder" (Rechteck mit Textvariablen) erstellt, die die erreichte Zeit der jeweiligen Teilnehmer ausgibt (siehe Anhang webvisu.png).
Das obere Textfeld ist nicht zwingend notwendig und nur zu darstellerischen Zwecken mit auf dem Screenshot.
Die Zeit innerhalb der Textfelder A, B und C wird gestoppt, sobald der dazugehörige Schalter betätigt wird.
Diese drei Textfelder möchte ich gerne auf drei verschiedenen Displays/Monitoren ausgeben.
Also Sprich: Textfeld A --> Monitor 1, Textfeld B --> Monitor 2, Textfeld C --> Monitor 3

Ist das generell möglich?
Kann man das über über Instanzen regeln oder verstehe ich da was falsch?

MfG Alex
Angehängte Grafiken

Step 7 S7 313C + 343-1 LEAN Verbindung zu PC in unterschiedlichen subnets

$
0
0
Hallo,

wie der Titel schon beschreibt besitzen wir eine S7 313C mit einem 343-1 Lean Koppelprozessor.
Es geht bei der Fragestellung um ein Projekt in unserer Firma, bei dem die SPS bereits 3 TCP/IP Verbindungen in ihrem Subnet besitzt (Klasse C subnet mit xxx.xxx.123.456). Dieses Subnet ist mittels Router (und Firewall) in unserem Firmen-Backbone.
Nun soll die SPS eine TCP/IP-Verbindung zu einem Windows-Server (mit entsprechend laufenden Service) aufbauen. Dieser Server wiederum befindet sich in einem anderem Subnet (xxx.xxx.12.345) und soll auf Anfragen der SPS warten, eine gewisse Funktion ausführen und dann eine Antwort zurück senden.
Die bereits 3 vorhandenen Verbindungen der SPS sollen weiterhin bestehen bleiben (
Das Frage, die sich nun stellt, ist, ob diese Konstellation mit einem einzelnen 343-1 Koppelprozessor möglich ist, oder ob die SPS noch physikalisch mit dem 2ten Subnet des Windows-Servers verbunden werden muss.

Leider besitze ich gar kein Wissen in der SPS-Programmierung (eigentlich nur zuständig für die Programmierung der Gegenstelle), weshalb ich hier nachfrage.

Danke für die Hilfe im Voraus.
Gruß Sinsei

TIA 1212C Verbindungen anlegen

$
0
0
Hallo ,

ich würde gern meine CPU1212C über Ethernet mit einer 300er über CP-Lean verbinden.
Wollte die Verbindung zunächst über ISO on TCP realisieren jedoch bekomme ich die Verbindung seitens der 1200er nicht angelegt. Die 1212C unterstützt ja auch die S7 Verbindung als Client und die CP-Lean als Server also sollte dies funktionieren. Jedoch habe ich mit S7 Verbindungen noch keine Erfahrung sammeln können.

Was eignet sich besser ISO on TCP oder S7 Verbindung (auch unter dem Augenmerk das eventuell noch 2 1200er Stationen angebunden werden sollen)

Alles wird im TIA Portal V15 realisiert

Danke schon mal

ActiveX-DLL in Pascal (Delphi/Lazarus)

$
0
0
Ich möchte eine ActiveX-Dll erstellen, so dass man in WinCC-Flexible per VBScript darauf zugreifen kann.
Eine normale DLL mit Lazarus ist kein Problem (leider kann man die in VBS aber nicht einbinden, deshalb die ActiveX, welche eine Klasse zur Verfügen stellen soll, die dann
entsprechende Funktionen ausführt.

Hier mal mein Code um ein Bit aus einem DWORD zu lesen bzw. ein Bit zu setzen. Ohne den Export-Abschnitt wird es schon mal fehlrfrei kompliert.
Der Export einer Klasse funktioniert natürlich so nicht. Leider hab ich keine Ahnung wie und ob man das mit Pascal hinbekommt. Ich hab schon mehrere Stunden
gegoogelt aber man findet weder wie man ActiveX-DLL in Delphi erstellt noch in Lazarus.
D.h. für mich: entwerder es ist total simpel oder es geht nicht!

WER weis was dazu?

Code:

library VbsExt;
// Provides methods to manipulate Bits in VB-Script
{$mode objfpc}{$H+}

uses
  Classes, Windows;

TYPE
 VbsBitLogic = class
  public
    constructor Create;
    Function GetBit (Value:DWORD; NoOfBit:Smallint): WordBool;  stdcall;
    Function SetBit(Value:DWORD; NoOfBit:Smallint; BitValue: WordBool):DWORD; stdcall;
  end;


constructor VbsBitLogic.Create;
begin
    inherited Create;
end;

function VbsBitLogic.GetBit(Value:DWORD; NoOfBit:Smallint): WordBool; stdcall;
Begin
// WordBool erzeugt in Pascal 0=FALSE; &FFFF=TRUE, was in VB (-1) ist
// ist nötig, da VB 16Bit Bool verwendet
 GetBit := ((1 SHL NoOfBit) AND VALUE) <> 0;
end;

Function VbsBitLogic.SetBit(Value:DWORD; NoOfBit:Smallint; BitValue:WordBool):DWORD; stdcall;
 // var in PACAL is same as ByRef in VB, so VB has to pass it's Variable ByRef
BEGIN
IF BitValue THEN BEGIN
    SetBit :=  (1 SHL NoOfBit) OR Value;
  END
  ELSE BEGIN
    SetBit := (NOT (1 SHL NoOfBit)) AND Value;
  END;

end;

exports
 VbsBitLogic;
end.

AIN-Baustein und Probleme bei der Benutzung mit XN-322-4AI-I

$
0
0
Hallo werte Gemeinde,
Ich habe ein IR-Messgerät und will die Stormwerte 4-20mA einlesen mit Messbereich von 0 -500 Grad.
Dafür benutze ich eine XN-322-4AIO-I von Eaton.
Die Werte sind als png angehängt.

Zum Testen versuche ich eine Zufallszahl als Analog eingang zu simulieren, und mit der Funktion
AIN zu skalieren.
Jetzt verstehe ich die Fehlermedlung noch, die besagt "

------ Build started: Application: Device.Sim.Device.Application -------
typify code ...
[ERROR] proj 17-094: TempAbfrage [Device: PLC Logic: Application](Line 6, Column 1 (Impl)): C0032: Cannot convert type 'LREAL' to type 'WORD'
Compile complete -- 1 errors, 0 warnings
"
Warum kann das nicht converted werden, und wie kann ich das lösen.

Code ist angehängt.
XN-322-4AIO.jpgCode.pngXN-322-4AIO Bedeutung.jpg


Dankeschön

P.S. mein letztes Bild, was soll mir das sagen, damit kann ich nichts anfangen?
Angehängte Grafiken

Probleme beim Update des Raspberry Pi über Codesys

$
0
0
Hallo Zusammen !

Ich habe ein kleines Projekt mit Codesys am Laufen, welches nun ein kleines update braucht. Leider kann ich aufgrund von verschiedener notwendigen Updates das Programm nicht aufspielen, da er ein Codesyscontrol Update haben möchte.

Führe ich das Update aus, erhalte ich folgende Fehlermeldung :

Fehler Codesys.JPG

Ich habe das Paket aus dem Shop auch neu installiert, allerdings entsteht der Fehler immer wieder.


Ich hoffe mir kann jemand helfen.

Vielen Dank im Voraus !

Viele Grüße

Nexer
Angehängte Grafiken

Step 7 PN/PN-Koppler projektieren

$
0
0
Hallo zusammen,

ich habe eine Anlage von einem Lieferanten erhalten, welche ich mit unserer bestehenden Anlage via PN/PN-Koppler (6ES/ 158-3AD01-0XA0) verbinden möchte.
Ich habe den Koppler in der HW-Konfig angelegt (X2, IP, Subnetmask entsprechend meiner bestehenden Anlage eingestellt) aber er wird nicht erkannt.
Heißt: Wenn ich online-Teilnehmer anzeige erhalte ich die Meldung: Teilnehmer projektiert, aber nicht vorhanden. Beim Anpingen gibts keine Antwort.

Zur Erklärung:
Im Projekt befinden sich mehrere Stationen, der Koppler wird über zwei Scalance X208 mit der Hauptsteuerung (CPU317F-2 PN/DP) verbunden.

Wenn ich mich direkt mit dem Koppler verbinde, kann ich dort am Port X2 die IP, Subnetmask einstellen und den Koppler auch anpingen.
Wenn ich das PN-Kabel, welches eigentlich im Koppler stecken soll, an mein PG anschließe, kann ich mich zu den anderen Stationen verbinden. Heißt für mich, dass die Leitung soweit ok ist.

Sind die beiden Scalance ein Problem für den Koppler? Wie kann ich sonst noch vorgehen?

TIA Unterschied LeseDatensatzAusSteuerung und LeseDatensatzvariablenAusSteuerung

$
0
0
Hallo liebes Forum,

ich bin am erörtern aus der Hilfe, was denn der genaue Unterschied zwischen LeseDatensatzAusSteuerung und LeseDatensatzvariablenAusSteuerung ist. Somit auch SchreibeDatensatzInSteuerung und SchreibeDatensatzvariablenInSteuerung.

Hintergrund:
Ich möchte ein Rezept nutzen als "Sicherheitskopie". Also einstellbar in der HMI, dann übertragen an die SPS und speichern in der Rezeptur.

Wenn ich die Datensatzvariablen verknüfe mit den Datensatzelementen, werden doch die Werte sofort an die PLC-Variablen übergeben oder nicht?

Software: WinCC Advanced V14 SP1

Daten aus einem ASCII-Array of Byte zerlegen

$
0
0
Hallo Community,

Zunaechst, ich arbeite mit e!cockpit, also Codesys 3.5.
ich habe folgendes Anliegen/Problem.
Ich mache eine Abfrage eines Smartmeters und bekomme als Antwort ein ASCII Array [irgendwas mit 150 aufwaerts] of Byte zurueck.
Zur Visualisierung uebersetze ich das Array in einen zusammenhaengenden Text wie folgt:

Code:

FUNCTION_BLOCK Buffer_Uebersetzen
VAR_INPUT
    Buffer: ARRAY [0..3000] OF BYTE;
    ByteCount: UDINT;
END_VAR
VAR_OUTPUT
    sText: STRING(255);
END_VAR
VAR
    i: INT;
   
    sBuffer: STRING;
    ByteCount_INT: INT;
END_VAR

Code:

ByteCount_INT := UDINT_TO_INT(ByteCount);
sText := '';

FOR i := 0 TO ByteCount_INT DO
    sBuffer := WagoSysString.ASCIIByte_To_String(b:= Buffer[i]);            // Wandelt den ASCII-Byte-Array zu einzelnen Strings um
    sText := CONCAT(String_1:=sText , String_2:=sBuffer );            // Setzt die einzelnen Strings zu einem String zusammen (Concat-Befehl)   
END_FOR

Dabei kommt dann etwas nach dem Schema raus.
Code:

{"status":"ok","result":[{"time":1524146846301,"energy":2787704584452000,"power":-22614000,"power1":-7422000,"power2":-8088600,"power3":-7103400,"energyOut":553326052714800}]}
Wenn ich jetzt die einzelnen Leistungen der Phasen haben will, kann ich mit dem "Find-Befehl" diese aus dem Ergebnis raussuchen.

Soweit so gut.

Wenn ich jetzt jedoch eine Abfrage ueber einen laengeren Zeitraum machen will, dann wird das ASCII Array laenger und die Ausgabe von time bis energyOut wiederholt sich n-fach. Da klappt das nicht mehr so schoen mit dem "Find", weil wenn er z.B. das erste "time" gefunden hat, nicht die folgenden ausgelesen werden koennen.
Jetzt koennte ich mit dem "Right-Befehl" natuerlich immer nach dem "energyOut" abschneiden und dann wirder neu suchen.

Was ich aber eleganter faende, waere das direkt in dem FB zu machen. Dabei wuerde ich die Daten gerne in einem Array speichern, was eine laenge von 7 hat (fuer time, energy, power,...).
Ich hab mir sowas vorgestellt wie:
Code:

VAR
Buffer: ARRAY [0..3000] OF BYTE;
DatenArray: ARRAY [0..6] OF INT;
ArrayCounter: INT;
END_VAR

Code:

FOR i := 0 TO ByteCount_INT DO
IF Buffer[i] := eineZahl THEN
DatenArray[ArrayCounter] := DatenArray[ArrayCounter] * 10 + Buffer[i];
ELSE ArrayCounter = ArrayCounter +1;
END_IF
END_FOR

Dabei soll der ArrayCounter immer nach einer Nicht-Zahlenfolge hochgesetzt werden.
Leider funktioniert das mit dem IF nicht so, da man nur BOOL's oder STRING's verwenden kann und ich nicht (wenn man das wieder in STRING's umwandelt) fuer die Zahlen 0-9 jeweils ein IF oder ELSIF machen will. Ein "Case-Befehl" ist auch nicht optimal (es muessen INT sein), da man die ASCII-Byte in STRING's konvertieren muss und Buchstaben dann ebenfalls "0" ergeben.

WÃaee fuer Ansaetze oder Tipp's zur Loesung sehr dankbar.
Und Tschuldigung fuer den kleinen Abendroman :)

MfG

kors

TIA Frage zu TIA Portal V15

$
0
0
Guten Abend,

Bin noch ganz frisch in diesem berreich und zwar haben wir letztens das TIA Portal V15 gekauft hatte davor noch nie etwas damit zutun mein Problem im Moment ist das wir eine 1215C AC/DC/Rly CPU 215-1BG31-0XB0 haben die auf V3.0.2 steht aber in meinem TIA geht es nur bist V3 wie komme ich dort auf die V3.0.2 ?? Durch das Internet bin ich nicht Schlauer geworden. Hoffentlich könnt ihr mir helfen.

MFG
Florian

CRC-CCITT berechnen

$
0
0
Hallo zusammen,

ich habe einen elektronischen Drehstromzähler Marke ISKRA eHZ-EDL Typ MT681 (Das ist ein normaler neuzeitlicher Einrichtungszähler).
Aus diesem möchte ich die aktuellen Daten auslesen und habe zu dem Zweck die optische Schnittstelle mit einem Auslesekopf (Optical Probe OP-300) per RS-232 abgefragt.
So weit klappt das prima; ich kann mit dem Terminalprogramm m.E. sinnvolle SML-Datenpakete empfangen.

Laut SML-Spezifikation (https://www.bsi.bund.de/SharedDocs/D...cationFile&v=2) beginnt ein Telegramm mit vier mal '1B' (Start Telegramm) , dann kommt vier mal '01' (Start SML-V.1-Nachricht) gefolgt von den Nutzdatenpaketen. Am Ende des Telegramms erscheint wieder vier mal '1B', dann '1A', ein Füllbyte und als letzte zwei Bytes eine Prüfsumme gemäß 16 Bit CRC-CCITT. Hier liegt nun mein Problem: ich komme beim Überprüfen nicht auf diese Prüfsumme.

Wenn ich das komplette Datenpaket ohne die letzten zwei Bytes in einen der Online-CRC-Rechner kopiere (http://www.sunshine2k.de/coding/java...rc/crc_js.html) müsste doch die dort angezeigte Prüfsumme mit der im Telegramm mitgeschickten übereinstimmen ?
Bzw. wenn ich die komplette SML-Nachricht inklusive der letzten beiden Bytes berechnen lassen, müsste 'Null' herauskommen.

Soweit die Theorie; ich habe als Generatorpolynom CRC-CCITT (x^16 + x^12 + x^5 + 1) sowohl in Form von 16#1021 als auch bitreihenfolgengedreht in Form von 16#8408 ausprobiert, einen CRC-Startwert von 16#FFFF (laut Spezifikation) oder 16#0000 und so fort.
Wo ist da mein Denkfehler ?

Anbei mal zwei der mitgeschriebenen Telegramme, eins normgerecht geloggt mit 8N1, das andere versuchsweise mit 7E1 (las ich an einer anderen Stelle als Kommunikationseinstellung). Irgendeine Idee ??

SML-Block aus Stromzähler (7E1).txtSML-Block aus Stromzähler (8N1).txt

Sonstiges Protool Installieren

$
0
0
Hallo Zusammen,

Ich muss eine Änderung an einem OP7 durchführen. Nun stehe ich vor dem Problem das ich kein Protool auf dem Rechner habe wo bekomme ich es denn noch her?
BZW wie kann ich das Projekt auf das OP7 bringen?
Viewing all 49807 articles
Browse latest View live


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