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

PackML: Grundstellung / Homing?

$
0
0
Hallo,

jemand Erfahrung wie man eine Grundstellungsfahrt in PackML umsetzt? Im State "Starting" oder macht ihr das als eigenen Mode wie "Production" und "Manual"?



TIA S_Conv Bug oder Feature?

$
0
0
So eigentlich was ganz simples.

Ich will einen UDint in einen String konvertieren.
Ich verwende SCL und möchte kein Vorzeichen (+/-) haben.

Gesagt getan, S_Conv eingefügt, dabei ist mir aufgefallen das er es in der Beschreibung des Bausteins (KOP) ohne Vorzeichen macht aber in SCL mit.

Kop:

2020-05-27 08_52_50-Window.bmp

SCL:

2020-05-27 08_53_05-Window.bmp

Ich meine das Vorzeichen nachträglich zu entfernen ist klar möglich, aber erfordert schon wieder ein paar Arbeitsschritte (String Länge,.....). Diese würde ich mir gerne sparen.
Übersehe ich etwas?

Interessant ist auch das bei der KOP Anweisung eine Länge von 11 ausgegeben wird????? bei 7 Zeichen wird anscheinend mit 4 Leerzeichen gefüllt, gut damit hätte ein DINT in Maximaler Länge mit Vorzeichen Platz.
Bei der SCL Anweisung wird eine Länge von 8 ausgegeben, welches mit Vorzeichen die echte Länge ist.
Angehängte Grafiken

WinCC PDF-Drucker funktioniert nicht TP700 Comfort (WinCC TIA V14)

$
0
0
Hallo,

ich bräuchte mal einen Ratschlag, weil ich gerade echt am verzweifeln bin...

Ich habe auf einem TP700 Comfort mittels ProSave den PDF-Drucker "PDF V1.5" installiert.
Nach der Installation habe ich auf dem Dekstop auch das zugehörige Icon gefunden, indem ich Speicherort (USB) und Namen Screenshot.pdf eingestellt habe.
Im Control Panel habe ich bei Printer den "PDF V1.5" ausgewählt.

In der HMI selbst habe ich eine einfache Siete mit einem Button mit dem Ereignis "DruckeBild" angelegt.
Wenn ich diesen drücke kommt allerdings die Meldung "10001: Drucken nicht möglich: Kein Standardrucker vorhanden"

Die Anleitung von Siemens zum EInrichten vom Drucker habe ich auch schon gelesen und die einzelnen Schritte dementsprechend befolgt.

Vielen Dank im Voraus schon einmal für die Hilfe.

Gruß
Paddio

Dosieranlage mit Impuls Durchflussmesser

$
0
0
Hallo zusammen,
ich muss für ein Projekt welches mehrerer Flüssigkeiten dosieren soll eine Steuerung bauen.
Die Menge wird über einen Ovalradzäler der 2 Taktsignale ausgibt erfasst. (Durchflussmesser)
In einem HMI soll z.B. ein Wert für Flüssigkeit 1 eingegeben werden in KG muss dann den Wert mit dem spezifischen Gewicht umrechnen.
Dann drückt man Start und eine Pumpe läuft bis die eingegebenen Kg erreicht sind.
Ich will die Durchflussmesser mit schnellen Eingängen HSC einlesen und auswerten (Tia Portal) Steuerung S7 1200 CPU1217.
Kann mir hier einer Tipps oder Beispiele geben wie ich die Sache umsetzen kann. Der Durchflussmesser macht 4400 Pulse pro Liter.
Vielen Dank

Pruefen ob eine Datei vorhanden ist oder nicht

$
0
0
Hallo Zusammen,

ich möchte folgendes in Codesys V2.3 machen:
1. Ich habe eine Datei auf einem USB Stick angelegt und ich möchte prüfen, ob diese Datei vorhanden ist oder nicht.
2. Ich weiss nicht, ob ich unbedingt, das öffnen bzw. Schliessen der Datei benötige oder nicht.

in Visual Basic wurde ich ganz einfach nach der directorie suchen aber ich weiss nicht wie owas in Codesys geht.

ich wäre für jede Hilfe dankbar.

Gruß

Maximale Ruckangabe

$
0
0
Hallo,
ich habe mal wieder eine Frage zur Antriebstechnik :rolleyes:


Mir ist nun ein relativ großes Hubwerk für Paletten untergekommen, welches ein Schild auf dem LAM angebracht hat mit folgenden Daten:

- max Geschw. 0,75m/s
- max Beschl. 0,75m/s²
- max Ruck 0,375m/s³


Was mich hier stutzig macht ist die Angabe des maximalen Rucks. Dies würde nach meiner Berechnung eine Verschliffzeit von 2s ergeben. Bei den gegebenen Daten kann jedoch nur eine maximale Verschliffzeit von einer Sekunde erreicht werden (siehe zB Berechnung und Veranschaulichung via Movidrive Curve => Fehler: Ruckzeit > Rampenzeit bei 2s Verschliffzeit).


Ist dies eine fehlerhafte Angabe des Mechaniklieferanten oder bin ich hier auf dem Holzweg?:confused:

TIA vb Script -> Datei mit FileCopy überschreiben

$
0
0
Hi,

ich habe hier ein TP700 im Einsatz und kopiere über ein script eine Datei von a > b.

Das funktioniert auch.

Wenn ich das script erneut ausführe, verweigert er aber das kopieren, da die Datei schon vorhanden ist.

Unter Windows gibt es die gleiche Funktion (CopyFile), die einen 3. Parameter erlaubt .. overwrite false/true

Wie kann ich das unter WinCE einfach lösen? So sieht der Code zZ aus:

Code:

Dim f, quelle, ziel
quelle = "\Storage Card SD\test.txt" 'Quellpfand mit Datei
ziel = "\flash\Kunde\"              'Zielpfad

Set f = CreateObject("FileCtl.FileSystem")
If f.dir(quelle) = "" Then Exit Sub    'Abbruch, wenn Datei nicht vorhanden
If f.dir(ziel) = "" Then f.mkdir(ziel) 'Ordner "\flash\Kunde" erstellen, falls nicht vorhanden
ziel = ziel & "test.txt"
f.filecopy quelle,ziel

FX1N Klon - serielle Ausgabe über Uart/RS485

$
0
0
Hallo zusammen,

mein Name ist Daniel und ich habe für eine Bastelaufgabe einen Mitsubishi FX1N Klon bestellt. Ich hoffe, dass diese China Module hier nicht allzu verpönt sind :icon_mrgreen:

Generell bin ich mit dem Modul sehr zufrieden und konnte bisher alle geforderten Funktionen abbilden. Zur Programmierung nutze ich den "GX Developer".

Auf dem Modul ist eine RS485 Schnittstelle herausgeführt (RS485 Transceiver jedoch nicht bestückt). Daher dachte ich mir: Umwege sparen und direkt an den UART Anschluss des Mikrocontrollers hängen (Uart auf RS232 Bridge - FTDI). Ausgelesen wird dann mittels Terminalprogramm auf dem PC. Ziel ist es, einfache ASCII Zeichenfolgen von der SPS zu senden, empfangen muss diese nicht unbedingt. Ich nutze das Beispielprogramm auf Seite 18 dieses Handbuchs (http://www.inverter-plc.com/plc/FX_P...0FX%20PLCs.pdf).
Grundsätzlich funktioniert das Senden von Zeichen. Ich bekomme auch regelmäßig zwei der drei Zeichen in der richtigen Reihenfolge aber meistens nur irgendwelche Sonderzeichen und Kauderwelsch.

Nun zur Frage: Gibt es womöglich signifikante Unterschiede zwischen dem Klon und der original Steuerung, die es verhindern, dass meine serielle Kommunikation einwandfrei funktioniert? Hat jemand eine Idee?

Vielen Dank und schöne Grüßee aus dem Münsterland,
Daniel

Rexroth IndraMotion for Metal Forming with s7_300

$
0
0
the servo motor connected to Rexroth indradrive c which connected to s7_300 cpu via profibus cable.
i have a problem at my servo motor for roller feeder , the servo doesn't operate in automatic and also for the manual mode , i checked the servo motor and all of the mechnical issues are OK .

in the manual mode ,we just push on button to rotate the motor and the signal of this command is ok .

so i do that if i want to jog forward or backward ,
the drive gives that the motor move forward with status message "M Jog+"
but it doesn't rotate , like there is no feeding .

when i see parameter P-0-1370, Manual Velocity ,it's value equal to zero .
when i tried to edit it to another value , it goes again to zero .
so can any one treated with Rexroth indradrive c help me ?

Industrie 4.0

$
0
0
Hallo,

ich bin eigentlich immer daran interessiert etwas dazu zu lernen und deshalb habe ich mich mal ein wenig in diese Geschichte Industrie 4.0 eingelesen,
wo ja auch so Themen wie IoT (Internet der Dinge), cloud computing, edge computing und künstliche Intelligenz, eine Rolle spielen.

https://de.wikipedia.org/wiki/Industrie_4.0

"Durch die Vernetzung soll es möglich werden, nicht mehr nur einen Produktionsschritt, sondern eine ganze Wertschöpfungskette zu optimieren" Zitat Wiki.

Gibt es eigentlich irgend jemanden, der mir mal erklären kann, wie das finale Ziel aussieht?
Also was wurde erreicht, wenn Industrie 4.0 in Betrieb geht?

Vielleicht bin ich zu beschränkt, den gesamten Funktionsumfang, der dahinter steckt zu begreifen, was für mich auch kein Problem darstellt.
Dann wäre meine Aufgabe als technischer Angestellter lediglich, Daten aus der Maschine über eine fest definierte Schnittstelle, dieser digitalen Welt verfübar zu machen,
ohne wissen zu müssen, was denn letztendlich damit gemacht wird.

O.k. nehmen wir mal an, es ist eine Verpackungsmaschine, die Produkte in Kartons verpackt und diese Kartons an eine weitere Maschine, z.B. einen Palettierer übergibt.
Welche Daten aus der Verpackungsmaschine, wären denn für Industrie 4.0 relevant und müssten von mir durch eine Änderung an dem Steuerungsprogramm
auf der Schnittstelle abgebildet werden?

Es ist mir bei all dem, was ich bis jetzt darüber gelesen habe, nicht gelungen einen praxisnahen Bezug herzustellen.

Hat schon mal jemand von euch dafür in der Praxis etwas umgesetzt?

Gruß
Eleu


WinCC Microsoft Date and Time Picker Control aus "OCX Control"

$
0
0
Hallo,

in WinCC V7.5 mit Windows10 möchte im Graphics Designer das Werkzeug "Microsoft Date and Time Picker Control" (ein Smart-Objekt von OCX Control) verwendet werden, welches mit "MSCOMCT2.OCX" auch verknüpft ist.
Nach Anwahl von
"Microsoft Date and Time Picker Control" und abschließende Betätigung des Buttons "ok" erscheint die Meldung "Lizenzinformation nicht gefunden. Sie besitzen keine gültige Lizenz für den Designmodus. (DTPicker)"
Versucht wurde eine neue Registrierung, was nichts gebracht hat.
Über cmd mit der Eingabe von "
Regsvr32 %Windir%\SysWoW64\MSCOMCT2.OCX" wurde es auch erfolgreich aktiviert oder eben noch einmal vielleicht nur registriert.
Keines hat das Lizenzproblem gelöst.
MS-Office ist und soll nicht auf der ES installiert werden. Habt Ihr vielleicht einen anderen Lösungsweg?
Danke für Eure Unterstützung.

TIA Projekt umwandeln von 300er nach 1500er

$
0
0
Habe ein neues Projekt, fast identisch mit dem Vorgängermodell.

Alt: 313C-2PN/DP projektiert im TIA V14
Neu : 1512SP F-1 PN


Das 300er wurde damals auch im TIA projektiert !
Kann man irgendwie das ganze umwandeln in eine 1512SP F ?
Wie würdet ihr in dem Fall vorgehen ?

Gruß und Danke für Infos

TIA Array aus SPS in Textdatei schreiben/ Notepad aus Visu heraus öffnen VB Skript

$
0
0
Hi zusammen,

ich habe eine Visualisierung in WinCC Advanced gebaut, die auf ein Signal von der SPS einen von zwei Datensätzen der in zwei Arrays of String steht in einer Textdatei abspeichert. Dazu wird die Datei gesucht, auf ihre Größe überprüft und dann entweder neu generiert oder an die existierende drangehängt.

Da kommt mein erstes Problem her. Manchmal funktioniert das nicht. Ich weiß nicht wieso, aber manchmal fehlen einfach die Daten von Stunden in der Datei. Der Trigger der das Skript triggert waren die beiden Füllstände der Arrays (iFuellstandXMD), bei jeder Wertänderung wurde das Skript getriggert, aber nur bei einem bestimmten Zahlenwert wurde in dem Skript auch was gemacht, jetzt ist es eine Boolsche Variable die entweder True oder False ist. Mit der zweiten Variante läuft es erst ein paar Stunden, da kann ich nicht sagen ob es funktioniert oder nicht.
Hier das Skript das die Datei erstellt.

Code:

Sub Telegramm_Log_MD()

'Telegramm In eine Datenbank sichern.
'Auf der Steuerung sind zwei Umlaufarchive mit den letzten 40 Telegrammen dieser Verbindung. Erreicht eines der Umlaufarchive den Füllstand 100%
'wird das Umlaufarchivs In die Datenbank geschrieben nachdem das andere zum Schreiben aktiviert wurde.


'If (HmiRuntime.SmartTags("iFüllstand1MD") >= 20 And HmiRuntime.SmartTags("iSpeicherAktMD") = 2) Or (HmiRuntime.SmartTags("iFüllstand2MD") >= 20 And HmiRuntime.SmartTags("iSpeicherAktMD") = 1) Then


    'Variablendeklaration
    Dim Verzeichnispfad, Verzeichnis, Datei, Objekt, Name, Endung, Inhalt, Groesse, Benutzer_alt, Benutzer_neu, Datum, Uhrzeit
   
    'Datum schreiben
    Datum = CStr(Date)
    Uhrzeit = CStr(Time)
   
    'Dateiname und Verzeichnispfad festlegen
    Verzeichnis = "C:\Users\inst\Documents\Telegramme\DataLog\"
   
    Name = "Telegramm_Log_MD"
    Endung = ".txt"
   
    Verzeichnispfad = Verzeichnis & Name & "_" & HmiRuntime.SmartTags("iLogNrMD") & Endung
   
    'ein Dateihandlingobjekt erstellen, dadurch kann ich mit Skript Auf eine Datei zugreifen
    Set Objekt = CreateObject("Scripting.FileSystemObject")
   
    'Durch "On Error Resume Next" bricht er das Skript bei einem Fehler nicht ab,
    'er macht einfach mit dem nächsten Schritt weiter der Abbruch muss Durch "EXIT SUB" erfolgen
    On Error Resume Next
   
    'Prüfen ob die Datei existiert
    If Not Objekt.FileExists(Verzeichnispfad) Then
        Objekt.CreateTextFile Verzeichnispfad
        ShowSystemAlarm "Datei exisitert nicht, wird angelegt"
       
        'Dateipointer wird zugewiesen
        Set Datei = Objekt.GetFile(Verzeichnispfad)
       
        'Inhalt der Datei löschen und neu erstellen
        Set Inhalt = Datei.OpenAsTextStream(2, -2)
       
        'erste Zeile mit Datum und Uhrzeit, wann erstellt
        Inhalt.WriteLine("Log begonnen am " & Datum & " um " & Uhrzeit & " Telegrammuhrzeit = GMT, wir sind GMT + 1")
    End If
   
    'Wieder Prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
    If Err.Number <> 0 Then
        ShowSystemAlarm "Fehler 1" & CStr(Err.Number) & " " & Err.Description
        Err.Clear
        Exit Sub
    End If
   
    'Dateipointer wird zugewiesen
    Set Datei = Objekt.GetFile(Verzeichnispfad)
   
    'Erfassen der Dateigröße
    Groesse = Datei.Size
   
    'ist Datei zu groß wird Datei kopiert und neu angefangen
    '500000 sind 500 kByte Also 0,5 MByte
    If Groesse > 600000 Then
       
        'Hilfsverzeichnispfad erzeugen
        Dim Verz_Neu
       
        'Dateiname hochzählen
        If HmiRuntime.SmartTags("iLogNrMD") < 250 Then
            HmiRuntime.SmartTags("iLogNrMD") = HmiRuntime.SmartTags("iLogNrMD") + 1
        Else
            HmiRuntime.SmartTags("iLogNrMD") = 1
        End If
       
        'Neuer Dateiname ist originalname mit Anhang
        Verz_Neu = Verzeichnis & Name & "_" & HmiRuntime.SmartTags("iLogNrMD") & Endung
       
        'Falls bereits eine Kopie existiert wird die Kopie weggeworfen
        If Objekt.FileExists(Verz_Neu) Then
            Objekt.DeleteFile Verz_Neu
        End If
       
        'Wieder Prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
        If Err.Number <> 0 Then
            ShowSystemAlarm "Fehler A" & CStr(Err.Number) & " " & Err.Description
            Err.Clear
            Exit Sub
        End If   
       
        'die Ursprüngliche Datenbank wird kopiert
        Objekt.CopyFile Verzeichnispfad, Verz_Neu
       
        'Wieder Prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
        If Err.Number <> 0 Then
            ShowSystemAlarm "Fehler A" & CStr(Err.Number) & " " & Err.Description
            Err.Clear
            Exit Sub
        End If   
       
        'Dateipointer wird zugewiesen
        Set Datei = Objekt.GetFile(Verz_Neu)
       
        'der Originalfile der jetzt 2mal vorhandenen Datenbank wird geöffnet, aber diesmal überschrieben
        'das geht ohne neuzuweisung weil sich am Originalpointer nichts geändert hat
        Set Inhalt = Datei.OpenAsTextStream(2, -2)
       
        'erste Zeile mit Datum und Uhrzeit, wann erstellt
        Inhalt.WriteLine("Log begonnen am " & Datum & " um " & Uhrzeit & " Telegrammuhrzeit = GMT, wir sind GMT + 1")
    Else
           
        'Datei wird geöffnet und zum Anhängen vorbereitet (Datenbank)   
        Set Inhalt = Datei.OpenAsTextStream(8, -2)
       
    End If
   
    'Wieder Prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
    If Err.Number <> 0 Then
        ShowSystemAlarm "Fehler 2" & CStr(Err.Number) & " " & Err.Description
        Err.Clear
        Exit Sub
    End If
   
    'Wieder Prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
'    If Err.Number <> 0 Then
'        ShowSystemAlarm "Fehler 5" & CStr(Err.Number) & " " & Err.Description
'        Err.Clear
'        Exit Sub
'    End If
   
    'schreiben des eigentlichen Datenbankeintrages
    If HmiRuntime.SmartTags("iFüllstand1MD") >= 20 And HmiRuntime.SmartTags("iSpeicherAktMD") = 2 Then
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[0]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[1]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[2]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[3]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[4]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[5]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[6]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[7]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[8]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[9]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[10]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[11]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[12]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[13]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[14]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[15]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[16]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[17]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[18]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp1MD[19]"))
        HmiRuntime.SmartTags("iFüllstand1MD") = 0
    ElseIf HmiRuntime.SmartTags("iFüllstand2MD") >= 20 And HmiRuntime.SmartTags("iSpeicherAktMD") = 1 Then
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[0]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[1]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[2]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[3]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[4]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[5]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[6]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[7]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[8]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[9]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[10]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[11]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[12]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[13]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[14]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[15]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[16]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[17]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[18]"))
        Inhalt.WriteLine(HmiRuntime.SmartTags("aTelSp2MD[19]"))
        HmiRuntime.SmartTags("iFüllstand2MD") = 0
    End If   
   
    'Wieder Prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
    If Err.Number <> 0 Then
        ShowSystemAlarm "Fehler 6" & CStr(Err.Number) & " " & Err.Description
        Err.Clear
        Exit Sub
    End If
   
    'Datei schließen
    Inhalt.Close
   
    'Pointer zurücksetzen
    Set Inhalt = Nothing
    Set Datei = Nothing
    Set Objekt = Nothing
   
    'Finale bestätigung ausgeben
    ShowSystemAlarm "MD- Datei wurde geschrieben"
'Else
           
'End If
End Sub

Das ist der Code des ersten Skriptes, FüllstandXMD sind die beiden Füllstände der Arrays. Das Skript macht im Test im Büro was es soll, hat eines der beiden Füllstände den Wert 20 und das andere Array ist zum Schreiben aktiviert, wird der Inhalt des ersten Skripts in die Datei geschrieben. Das funktioniert auch im Live Betrieb, jedoch nicht konsistent. Manchmal fehlen wie gesagt Stunden oder auch nur Minuten. Ich habe den Verdacht, dass das mit dem zweiten Skript zusammenhängt.
Dieses Skript soll aus Advanced heraus Notepad öffnen, die mit dem oberen Skript erstellte Datei kopieren und die Kopie in Notepad öffnet.
Bleibt das Notepad jedoch offen, scheint es entweder so zu sein, dass noch auf die Originaldatei zugegriffen wird, weshalb das andere Skript die Datei nicht zum schreiben öffnen kann, oder das Skript wird nach dem Öffnen von Notepad nicht beendet, sodass es verhindert dass ein weiteres Skript in Advanced aktiviert werden kann. Leider weiß ich nicht was es von beiden ist.

Code:

Sub Open_Log_MD()

' Der auf der Festplatte des Visu Rechners angelegte Visulog soll angezeigt werden. Dafür soll beim klicken auf
' eine Schaltfläche der zuletzt angelegte Log geöffnet werden


' Variablendeklaration
    Dim Verzeichnispfad, Verzeichnisquelle, Verzeichnissenke, Datei, Objekt, Name, Endung, Inhalt, Verz_Neu
    Dim isPath, myShell
   
    Dim Wmi,system,Process,Computer,Programm
   
    Dim objShell
   
    ' Dateiname und Verzeichnispfad festlegen
    Verzeichnissenke = "C:\Users\inst\Documents\Telegramme\"
    Verzeichnisquelle = "C:\Users\inst\Documents\Telegramme\DataLog\"
   
    'Name = "Telegramm_Log_MD"
    Name = "Telegramm_Log_MD"
    Endung = ".txt"
   
   
   
    Programm = "notepad.exe"
   
    ' Fileobject erstellen
    Set Objekt = CreateObject("Scripting.FileSystemObject")
   
    ' Verzeichnispfad öffnen
    Verzeichnispfad = Verzeichnisquelle & Name & "_" & HmiRuntime.SmartTags("iLogNrMD") & Endung
       
    ' Prüfen ob Datei exisitert
    If Objekt.FileExists(Verzeichnispfad) Then
       
        ' Kopie anlegen       
        Verz_Neu = Verzeichnissenke & Name & "_" & HmiRuntime.SmartTags("iLogNrMD") & "_Kopie" & Endung
               
        ' Falls bereits eine Kopie existiert wird die Kopie weggeworfen
        If Objekt.FileExists(Verz_Neu) Then
            Objekt.DeleteFile Verz_Neu
        End If
       
        ' Wieder prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
        If Err.Number <> 0 Then
            ShowSystemAlarm "Löschen der Datei fehlgeschlagen" & CStr(Err.Number) & " " & Err.Description
            Err.Clear
            Exit Sub
        End If   
       
        ' Die Ursprüngliche Datenbank wird kopiert
        Objekt.CopyFile Verzeichnispfad, Verz_Neu
       
        ' Wieder prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
        If Err.Number <> 0 Then
            ShowSystemAlarm "Kopieren der Datei fehlgeschlagen" & CStr(Err.Number) & " " & Err.Description
            Err.Clear
            Exit Sub
        End If
       
        ' SHellobject erstellen
        'Set myShell = CreateObject("WScript.Shell")
       
        ' Wieder prüfen ob Fehler exisitierte, dadurch werden mehrere Fehler angezeigt
'        If Err.Number <> 0 Then
'            ShowSystemAlarm "Fehler H" & CStr(Err.Number) & " " & Err.Description
'            Err.Clear
'            Exit Sub
'        End If   
       
        ' Verzeichnis anzeigen
        HmiRuntime.SmartTags("sPfad") = Verz_Neu'Verzeichnis
   
        ' Programm öffnen
        'myShell.Run Verz_Neu,3,False
        ' 3 öffnet Notepad Bildschirmfüllend, False bringt der Routine myshell.Run bei nicht auf das
        ' schließen des Notepads zu warten sondern das Skript bis zum Ende zu bearbeiten
       
        ' Externes Programm schließen
        ' Abfrage ob der WMI Dienst gestartet ist
        On Error Resume Next
        Set Wmi = GetObject("winmgmts:")
        If Err.Number<>0 Then
            ' WMI nicht gestartet
            ShowSystemAlarm "WMI not startet" & CStr(Err.Number) & " " & Err.Description
            Err.Clear
            Set Wmi = Nothing
            Exit Sub
        End If
        On Error GoTo 0
        Computer = "." 'Lokal
        ' Dienst suchen
        Set Wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
        Set system = Wmi.instancesOf("win32_process")
        ' Nach Zugriff auf System wird jeder Prozess nach notepad.exe untersucht
        For Each Process In system
            If LCase(Process.name)=(Programm) Then
                Process.Terminate (0)' Prozess schließen
            End If
        Next
       
        ' Datei mit Notepad.exe anzeigen
        Set objShell = CreateObject("Shell.Application")
        objShell.ShellExecute "notepad.exe",Verz_Neu,"","open",3
       
       
        Set myShell = Nothing
        Set Objekt = Nothing
        Set Wmi = Nothing
        Set system = Nothing
        Set objShell = Nothing
        ShowSystemAlarm "bin feddich midde weld"


    End If


End Sub

Ich hab mir die Skripte natürlich nicht komplett selbst ausgedacht, das meiste hab ich aus Codefragmenten aus diesem und anderen Foren entnommen und dann in einen Topf geworfen. Besonders beim zweiten Skript komme ich nicht wirklich klar was der Teil macht der Notepad öffnet.

EASY Eaton neue Generation

$
0
0
Guten Morgen zusammen, wir möchte gerne ein Projekt it der neuen easy-E4-DC-12TC1 Kleinsteuerung realisieren. Unter anderem möchten wir Timer verwenden die über das Display XV-120-A0-35TQRB-1E4 eingestellt werden kann. Die Timer sollten von 0,1 sec bis 2 Sec einstelltbar sein. Irgendwie bekommen wir das nicht hin, das der Timmer "nur" in 0,1 Schritten eingestellt werden kann. Hat jemand vielleicht ein kleines Beispiel Programm. Wie das im Display und der Steuerung umgesetzt wird?

Danke

Webinare rund um Fernwartung und Industrial Security

$
0
0
Wie realisiere ich eine sichere Fernwartung für meine Maschinen?
Was hat es mit NAT und Portforwarding auf sich? Wie vermeide ich IP-Adresskonflikte?

MB_Webinar_Tumisu_pixabay_4727942_web.jpg

Diese und viele weitere Fragen beantworten die Experten von MB connect line aus erster Hand. In der aktuellen Webinar-Serie werden praxisnahe Themen wie Routing, Fernwartung, Datenerfassung und Edge-Computing aus unterschiedlichen Blickwinkeln beleuchtet. Dabei geht es nicht um Zukunftsmusik, sondern um aktuell verfügbare Lösungen, die Sie sofort einsetzen können.

Weitere Informationen und Anmeldung: https://t1p.de/fryb
Angehängte Grafiken

TC2, System Manager, Fehler beim Wählen des Zielsystems

$
0
0
Hallo,

(Info vorweg: Ich bin HiWi an der Uni, der sich in einem neuen Projekt mit zum ersten Mal mit dem Thema SPS auseinandersetzen darf, Vorwissen vernachlässigbar, würde ich sagen ;-).
Gleichzeitig ist das mein erster Beitrag im SPS Forum, diesen bitte an die passende Stelle verschieben, wenn er woanders hingehört.)

TwinCat v2.11

Gerade geht es darum, meinen HiWi Rechner mit der SPS zu verbinden, um ein bereits vorgeschriebenes Programm, welches auf der SPS läuft, anzupassen und zu verbessern.
Leider erhalte ich eine Fehlermeldung bei der Wahl des Zielsystems.
Über die Ethernet Suche und IP, kann ich zwar den Host finden und anwählen, "Rout hinzufügen" ergibt aber folgende Fehlermeldung:

Get Host by name of "Host name" failed.
ADS Error 1804 (0x70C): 'ADS Error: not found (files, ...)'

Leider konnte der WiMi, der das Projekt aufgebaut hat, auch nichts mit der Meldung anfangen.
Bei Beckhoff konnte ich nichts näheres dazu finden:
https://infosys.beckhoff.com/index.p...rCode.html&id=

Hat hier jemand einen Tipp für mich?

WinCC WinCC 7.2 C-Editor Interne Variable Inhalt leeren

$
0
0
Hi,

bräuchte kurz Hilfe bzgl. WinCC 7.2 C-Editor Skript (Neuland für mich :smile: ).

Ich möchte das immer wenn eine bestimmte Variable (Datentyp: Binäre Variable) ein Null Signal hat, der inhalt einer Internen Variable (Datentyp: Textvariable 8-Bit Zeichensatz) geleert wird.

Wie mache ich das?

WinCC WinCC Prof RT V7.4 mit Lizenz V7.5

$
0
0
Hallo,

weiß jemand ob die WinCC Professional Runtime Server und Client V7.4 SP1 mit den Lizenzen von V7.5 läuft?

Wir haben mehrere WinCC Professional Visualisierungen, die neuesten mit WinCC V7.4 SP1.
Nun wollen wir eine ältere Visu Server + 1x Client auf V7.4 SP1 migrieren (wegen der Versions-Einheitlichkeit).

(1) Da die Kosten für die Lizenz-Upgrades zu V7.4 und zu V7.5 gleich sind, würden wir gerne die Lizenzen zu V7.5 upgraden und damit die V7.4 Runtimes betreiben. Geht das?
(Server: WinCC RT 64K V7.5 + Option /Server V7.5 / Client: WinCC RT 128 V7.5)

(2) Kann man mit der RT V7.5 Lizenz vom V7.4 WinCC-Projekt Bilder, Variablenhaushalt, Tag Logging, ... öffnen + ändern + speichern, oder müssten wir dafür vorher eine WinCC RC V7.4 Lizenz zum Server transferieren?

Harald

TIA Datentyp herausfinden über Script

$
0
0
Hi,

ich habe ein Script, das 1 Übergabeparameter hat: (Variable ByRef) .

Das Script soll herausfinden, welchen Datentyp diese Variable hat (INT, DINT, REAL, BOOL).

In den Standardfunktionen wurde ich nicht fündig. Hat jemand eine Idee?

Sonstiges Tc3 + plc hmi

$
0
0
guten morgen SPS-Welt!!!

ich brauche Hilfe :::
bild.jpg

ich muss etwas aenhliches, wie es auf dem bild zu sehen ist, programmieren. also ich habe
- eine maschine mit 12 stationen ( station-nr: 00, 01,.....,11)
- fuer jede station hat man eine biliebige anzahl textausgabe ( ZB: fuer Station mit station-nr: 00 hat man textausgabe-nr: 00,01,....XX)
-fuer jede textaugabe-nr hat man String (ein text halt) (ZB fuer station mit station-nr: 00, textausgabe-nr: 00 hat man String00 : Temperatur Min kappe unten)
- und als letztes koennen beliebige mehrere solche zeilen ausgeben werden( wie auf dem Bild ZB: 4 zeilen).

uebrigens : fuer IRGENDWAS (bool-variable) : true soll eine solche zeile ausgegeben

man hat mir den hinweis gegeben, dass ich Array benutzen kann.

ich war auf der beckhoff-website und konnte nicht weiterkommen.

koennte mir jemanden sagen wie ich das loesen soll.

danke fuer eure beitraege im voraus.
Angehängte Grafiken
Viewing all 50408 articles
Browse latest View live


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