Sonstiges Programmierstress und ... TOOLS

Maagic7

Level-2
Beiträge
384
Reaktionspunkte
180
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich will hier mal kurz die Programmierproblematik mit Standardwerkzeugen aufzeigen
und dann ein paar Tools auserhalb des Mainstream, wie Visual Studio oder Java
zeigen, welche einem das Leben etwas erleichtern können.

--------------------------------------------------------------------------------
ProgrammiererStress
--------------------------------------------------------------------------------

KOP, FUP, AWL, SCL, VB-Script, Visual Basic das sind wohl die Grunddialekte,
mit den man als SPS-Programmierer zurechtkommen muss. Dabei ist ein Wechsel
zwischen so verschiedenen Sprachen wie KOP/FUP/AWL zu SCL nicht das größte
Problemn. Fehlerträchtig wird es bei dem ständigen Wechsel zwischen SCL
und VB-Script. Das ist so ähnlich und doch so verschieden.
Ständig schließt man in WinCC in VB-Script irgendwelche Zeilen mit Strichpunkt
ab. Das wird leider in WinCC nicht so richtig als Fehler erkannt. Oft steht
nur da: "Das Skript xy wurde mit Fehler übersetzt". Der Cursor springt bei
Doppelklick in die oberste Zeile. Da ist definitiv kein Fehler! Die Suche beginnt!
Mittlerweile weis ich, dass ich bei diesen Fällen nur nach ";" suchen muss.

Dann in SCL die Strichpunkte wieder vergessen, da man ja gerade aus VB-Script kommt.

END_IF; // in SCL
END IF ' in VB-Script

Zuweisungen SCL mit ":" I:=1, VB ohne ":" I=1

Für den Programmierer ist das Masochismus pur!

Dann bietet wieder WinCCflexible nicht die Funktionalität was man gerade bräuchte.
Dann versucht das in VB-Script irgendwie zu programmieren.

- Mit dem ScriptingFileSystemObject eine Datei angelegt
- Mist, wenn der Ordner nicht da ist, legt sich da nichts an
- Also Ordner anlegen! Geht wieder nicht!
- Ah, geht nur nicht, da die Ordnerstruktur verschachtelt ist und nur 1 Ebene auf
einmal angelegt werden kann.
- und das alles in Himbuktu auf der Baustelle ohne Internet!

Hier übrigens der korrekte Code um in WinCC VB-Script eine Ordnerstruktur anzulegen
Code:
' ======================================================================
'  CreateFullPath : Creates Full Folder Path if not exist
'  Special Function needed because FileSytemObject can't create a 
'  SubFolderStructure in one action. 
'  Set f=fso.CreateFolder"C:\RootFolder\SubFolder" will cause an
'  Error if RootFolder doesn't exist
'
'  Found on: gallery.technet.microsoft.com
' ====================================================================== 
Function FSO_CreateFullPath(ByVal strFullPath)
    Dim objFSO  
    Dim intPos  
    
    On Error Resume Next
    Err.Clear
    
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    If Right(strFullPath, 1) <> "\" Then strFullPath = strFullPath & "\" 
    If Left(strFullPath, 2) = "\\" Then 
        intPos = InStr(3, strFullPath, "\") 
    Else 
        intPos = 3 
    End If 
    Do While intPos > 0 
        intPos = InStr(intPos + 1, strFullPath, "\") 
        If Not objFSO.FolderExists(Left(strFullPath, intPos)) And intPos > 0 Then 
                objFSO.CreateFolder Left(strFullPath, intPos) 
        End If 
    Loop 
    Set objFSO = Nothing 
    
    FSO_CreateFullPath = Err.Number  ' Returns 0 if succeded
End Function

--------------------------------------------------------------------------------
Prgrammiertools
--------------------------------------------------------------------------------

Programmiert man umfangreichere Anlagen und Anwendungen kommt man frührer
oder später automtisch in den Zwang ein Programm für den PC zu schreiben.
Meist irgendwelche Daten wo abholen und/oder Daten von der SPS wo hinschicken.
Mit VB-Script in WinCCflexible ist das nicht so richtig zu schaffen. Schon geht
der Stress los. Wie machen wir das, wer macht das? Wer kann das?

Als Standardwerkzeuge kennt man eigentlich nur noch VisualStudio und die
Wahl fällt wohl bei den meisten auf VisualBaiscNet. Es geht aber druchaus auch anders
und teils auch effektiver.

--------------------
Pascal vs. SCL
--------------------

SCL ist ja ein von Pascal abgeleiter Dialekt. D.h. kann man SCL
programmieren kann man eigentlich schon Standard Pascal.
Jetzt ist Pascal nicht wirklich so verbreitet und das einzige bekannte
Werkzeug ist Delphi, was mittlerweile nicht mehr von Borland sondern von
Embarcadero unter RAD Studio vertrieben wird.

Weniger bekannt sind die Open-Source Pascal Versionen.
Wobei für den FreePascal Compiler mit LAZARUS eine ziemlich gute und
Delphi änliche OpenSource Entwicklungsumgebung zur Verfügung steht.
Plattformübergreifend für Windows und Linux. (Mit etwas mehr Aufwand
kann man auch für Android und IOs damit programmieren)

Wer bereits VB6 programmiert hat und sich mit SCL auskennt, der wird
mit Lazarus innerhalb kürzester Zeit zurechtkommen. Ein Wechsel zwischen
SCL und Pascal geht ohne die oben beschriebenen Probleme von VB.
Lazarus erzeugt ausserdem EXE ohne Abhängigkeiten von NET-Bibliotheken.
Richtig aufgesetzt braucht man die erzeugten Programme auch nicht zu installieren.

Lazarus Free Pascal ist für mich eines der Tools mit denen man sich als
SPS und Anlagenprogrammier unbedingt beschäftigen sollte. Vor allem wegen der Code-Ähnlichkeit
zu SCL und wegen der wie schon bei Delphi guten Datenbankintegration.

Mit Libnodave und Snap7 stehen auch noch 2 Leistungsfähige OpenSource Zugriffsbiliotheken für
Step7 classic bereit, die sich ohne weiteres in Lazarus einbinden lassen.
Mit dem PASCAL-SCADA Plugins für Lazarus, auch noch eine Open-Source Oberfläche für Visualisierungen.
(Nicht ausgereift, aber ein echt guter Ansatz)

Lazarus taugt vor allem, um irgendwelche Daten aus SPSn auszulesen, darzustellen und in Datenbanken zu sammeln.
Vor allem weil man das dann auch quasi ohne SourceCode-Änderung auf Mini-Computern wie dem RASPI unter Linux laufen lassen kann.

Es existiert auch ein PASCAL-Scripting-Host, ähnlich VB-Scripting-Host. Nur bringt das leider für uns erst mal nicht viel,
da es sich nicht in WinCC integrieren lässt.


-------------------------------
PureBasic, SpiderBasic
-------------------------------

PureBasic und SpiderBasic sind zwei extrem geniale Tools. Zwar nicht OpenSource aber für
den Preis eines Fachbuches bekommt man das. PureBasic sogar auf Lebenszeit!

Was ist PureBasic

PureBasic ist ein VB-Ähnlicher Proceduraler Basic-Compiler, d.h. ohne direkte OOP Unterstützung.
Durch die konseqeunte Intgegration komplitzierter Abläufe als Basic-Befehle ein einfaches und geniales
Tool, welches kompakte EXE ohne Intallationszwang und Bibliotheksabhängigkeiten erzeugt.
FTP-Zugriffe, Email und vieles mehr als direkt integrierte Basic Befehle.
Damit programmiert man nach etwas Einarbeitung auch als Anfänger in kürzester Zeit kleine funktionale Tools, die in anderen
Sprachen einen mords Aufwand darstellen.


SpiderBasic

ist im Prinzip der gleiche Code wie PureBasic nur ist SpiderBasic für Browseroberflächen gedacht.
D.h. ich programmiere meine Controls und Fenster in Basic und das läuft dann als Anwendung im Browser.
SpiderBasic compiliert dazu den Basic Code in Java und HTML 5.

SpiderBasic eignet sich z.B. um WinCCflexible über Broser Apps zu erweitern. Die Anwendung für z.B. Datenverwaltung
in SpiderBasic geschrieben und in WinCC über Browserfenster-Aufruf eingebunden. Einziges Problem ist, dass man den
Datenaustausch zwischen Browser und WinCC über Dateien und zyklisch aufgerufene VB-Scripte erledigen muss.
Da WinCC keinen zyklischen Scriptaufruf (ausser Minute, Stunde, Tag ...) bietet muss man sich in der SPS ein
Taktsignal von z.B. 1s erzeugen und über Variablenänderung das zyklische Skript aufrufen).
Man kann aber auch mit Libnodave, SNAP7 oder kommerziellen Bibliohteken direkt auf die SPS zugreifen.

Theoretisch sollte man auch über die StdIN und StdOUT Kanäle von Windows eine Kommunikation mit VB-Script hinbekommen.
Leider hatte ich noch nicht die Zeit dazu das zu testen bzw. rauszufummeln wie das geht!
 
Ach, ich bin nicht allein! Wie schön! Der Artikel spricht mir irgendwie aus der Seele.

Meine PC-Visualisierungen laufen ohne Installation, auch vom USB-Stick wenn es sein muss. Allerdings benutze ich Code Typhon, ein etwas fortgeschrittenes Lazarus bei dem gleich alle Komponenten mit dabei sind. Libnodave/Snap7 benutze ich nicht, sondern habe mir eine eigene Klasse gebaut die das Erkennen der Steuerungen, den Verbindungsaufbau und die Kommunikation kapselt. Dazu existieren dann noch 2 FB's die das Gegenstück in der Steuerung darstellen.
PC und Steuerung unterhalten sich üblicherweise über LWL-Ethernet, ein paar Audio- und Videokanäle gehen da auch mit drüber. Videodarstellung mit Datenoverlay und Aufzeichnungs- und Screenshotfunktion ist gleich mit in die Visu integriert - Code Typhon sei dank.
Das Ganze läuft sehr performant - zwischen Mausklick und Reaktion des Servoantriebs (am S120) lässt sich keine Verzögerung fühlen. Das ist für manuelle Werkzeugpositionierung wichtig (wir bauen fernbediente Manipulatoren für mechanische Präzisionsarbeiten).

Wenn man dann mal wieder was mit WinCC macht, fühlt sich das doch sehr spartanisch an.

Die Programmiersprache Object Pascal wird zwar gern als altmodisch und bereits sterbend angesehen, jedoch habe ich bisher noch kein anderes Gesamtpaket (Programmiersprache + IDE + Komponenten) gefunden, mit dem man auch nur annähernd so effizient Bedienoberflächen produzieren kann. Das hat natürlich auch auf Delphi zugetroffen und in großen Teilen auch auf den C++ Builder, jedoch hat mich Embarcadero vergrault.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin auch quasi mit Turbo Pascal groß geworden und hab vor ein paar Monaten Lazarus "entdeckt".
Fazit: Einfach Klasse.
Die Lazarus-Community ist auch freundlich und hilfsbereit.
Es sind viele ehemalige Delphi-Anwender unterwegs und entsprechend viel Fachwissen ist auch vorhanden.

Gruß
Blockmove
 
Code Thypon kannt ich bisher noch nicht Danke!

Damit jetzt nicht alle nach den Unterschieden von lazarus und Code Typhon suchen müssen.

Code Tyhpon ist im Prinzip eine Lazarus Distribution, die breits viele vorinstallierte Bibliotheken mitbringt, die man sich sonst bei Lazarus händisch zusammensuchen muss.
Auch an der Bedienung scheint leicht etwas angepasst/verbessert zu sein. Eine gute GUI-Steuerung für den Compiler soll es haben.

Ich werd's auf jeden Fall mal ausprobieren. Für Einsteiger scheint es mir lt. den Beschreibungen fast die bessere Wahl zu sein!
 
Für Anfänger hat Code Typhon eine etwas ungewohnte Installationsroutine, spätere Updates lassen sich aber sehr komfortabel aus dem Code Typhon Center heraus erledigen. Im Gegensatz zu Lazarus bringt es immer den aktuellen Freepascal-Compiler mit.
Kürzlich wurde das Dateiformat der Projektdateien geändert - und ist nicht mehr kompatibel zu Lazarus. Bestehende Projekte lassen sich aber problemlos konvertieren.
Die Oberfläche ist sehr gut anpassbar. Ich benutze die Einfensterdarstellung, sieht aus wie ein aktuelles Delphi. Im Gegensatz zu Lazarus läuft das im Einfensterbetrieb sehr stabil.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

dieser Beitrag spricht mir aus der Seele. Einige der genannten Tools setze ich auch schon länger ein. Angespornt durch diesen Beitrag möchte ich einen kleinen Datenlogger mit Lazarus und Snap7 schreiben. Ich habe schon kleinere Sachen mit Lazarus gemacht. Das war aber mehr auf dem Niveau : erzeuge DB Quellen aus anderen Textdateien. Ich habe mir die Unterlagen zu Snap7 heruntergeladen und auch die ausführliche Dokumentation quer gelesen. Ich möchte eigentlich nur die Client Funktion nutzen. Ich scheitere aber schon am ersten Schritt. Welche Dateien muss ich wohin kopieren? Muss ich ein Package einbinden oder nutze ich nur nur eine Unit? Kann mir blutigen Anfänger jemand auf die Sprünge helfen?
 
Zurück
Oben