Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: FAQ: alles rund um TwinCAT 2

  1. #11
    Avatar von Chräshe
    Chräshe ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Datei-Funktionsbausteine zum lesen und schreiben von Dateien.

    Hier ein paar Links:
    FB_FileOpen Öffnen einer Datei.
    FB_FilePuts Einen Nullterminierten-String in eine Text-Datei schreiben.
    FB_FileClose Schließen einer Datei.
    ...
    Beispiel: Dateizugriff aus der SPS
    CSV-Format Hilfsbausteine (ganz unten)

    So weit ich mich noch erinnere, musst du aufpassen, dass immer nur eine File-Funktion aktiv ist.
    Sonst kommt da eventuell was durcheinander. Viellicht ist das auch inzwischen intern abgefangen – das hab ich nicht mehr geprüft.

    Zu beachten ist bei WinCE-Betriebssystemen, dass sich die Laufwerksbuchstaben zum normalen Windows unterscheiden:
    Code:
    
    'C:\';           (* XP/W7 PC *) 
    '\Hard Disk\';   (* WinCE CF-Karte *) 
    '\Hard Disk2\';  (* WinCE lokaler USB-Stick *)

  2. #12
    Registriert seit
    27.10.2011
    Ort
    Belgien
    Beiträge
    19
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ftp.beckhoff.com/belgium > TwinCAT Cursus
    Sehr gute Anfängerdocumenten für SPS, NC-PTP und ADS.
    Beckhoff Support Engineer

  3. Folgender Benutzer sagt Danke zu Magik_Niq für den nützlichen Beitrag:

    Klingone22 (22.09.2013)

  4. #13
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    TwinCAT Webserver erklärt

    Einführung
    Mit dem JavaScript Zugriff auf ein TwinCAT System, kann eine eigene webbasierte Visualisierung erstellt werden. Es werden keine zusätzlichen Lizenzen benötigt. Die Installation besteht aus drei Schritten. Zuerst muss der IIS (Internet Information Service) von Windows installiert und konfiguriert werden, welcher als Webserver zur später die Visualisierung hostet. Danach muss ein Zugang zum ISS erstellt werden, sofern ein Zugriff von ausserhalb (Internet) erfolgen soll. Jetzt erst wird JavaScript programmiert, um aus TwinCAT die gewünschten Werte zu erhalten.

    Schritt 1, IIS installieren
    Alle nötigen Schritte hat Beckhoff im Infosys zusammengefasst. Es empfiehlt sich, die Anleitung ganz genau zu befolgen. Der IIS kann auch auf einem anderen Rechner als der SPS installiert und genutzt werden. Die Steuerung sollte jedoch sich im gleichen lokalen Netz befinden.
    Win7: http://infosys.beckhoff.com/content/...7.htm?id=17781
    Win XP: http://infosys.beckhoff.com/content/...p.htm?id=17782
    Win CE : http://infosys.beckhoff.com/content/...e.htm?id=17783
    Sind die Tests gemäss Infosys erfolgreich verlaufen, kann zu Schritt 2 übergegangen werden.

    Schritt 2, Netzwerkkonfiguration
    Wer die Webvisu nur im lokalen Netz nutzen möchte, kann diesen Schritt überspringen. Soll die WebVisu übers Internet erreichbar sein, sind netzwerkseitig ein paar Überlegungen und Einstellungen nötig. Da die meisten wohl keine fixen IPs haben, muss ein dynamischer DNS (oft DynDNS oder DDNS genannt) her. Einige Router-Hersteller bieten diesen Service standardmässig an. (Weitere Infos zu DDNS gibt’s zuhauf bei Google) Danach muss ein Portforwarding auf dem Router aktiviert werden. Und zwar leitet der Router die Anfrage vom Internet (Welche ja an den Router gesendet wurde) an den Rechner/SPS mit den IIS weiter. Dazu wird eingehender Port geöffnet und an den lokalen Rechner an Port 80 weitergeleitet. Ab sofort ist der IIS aus dem Internet erreichbar! (Bitte denkt an die Sicherheit um den Zugriff zu kontrollieren!)

    Schritt 3 – Erstellen der JavaScript und HTML Dateien
    Hier soll zuerst auf die JavaScript Bibliothek von Beckhoff eingegangen werden. Dazu bitte die Demo-Datei herunterladen und das Programm laden. Danach werden wir hier Schritt für Schritt die Konfiguration durchgehen. (Link Infosys)

    Code:
    var NETID = ""; // Empty string for local machine;             
    var PORT = "801"; // TC2 PLC Runtime = 801, TC3 PLC Runtime = 851
    Hier muss, falls der IIS nicht auf der SPS selbst läuft, die NetID der Steuerung eingetragen werden, sowie der korrekte Port.

    Code:
    var SERVICE_URL = "http://localhost/TcAdsWebService/TcAdsWebService.dll"; // HTTP path to the TcAdsWebService;
    Wichtig hier ist, dass die URL aus Sicht des Browsers (Also der Notebooks, Tablet, Smartphone etc) gesetzt werden muss. Entweder muss hier die lokale IP oder sogar die öffentliche IP, bzw den DynDNS Name eingetragen werden. (Wer eine bessere Lösung weiss, darf sich gerne melden!)

    Code:
    var general_timeout = 500;
    var readLoopDelay = 500;
    Je nach Steuerung empfiehlt es sich, das general_timeout zu erhöhen. Read LoopDelay je nach Bedarf, 500ms ist übers Internet schon ziemlich schnell.

    Code:
    var handlesVarNames = [
                "MAIN.byteValue",
    In diese Liste werden die gewünschten PLC-Variablen eingetragen. Globale Variablen benötigen einen führenden Punkt (wie in der Visu)

    Code:
    var hByteValue = reader.readDWORD(); 
    var hWordValue = reader.readDWORD();
    Hiermit werden die Handles erzeugt. Jede Variable die gelesen werden soll, braucht einen Handle.

    Code:
    //  "MAIN.byteValue" // BYTE                     
    readSymbolValuesWriter.writeDINT(TcAdsWebService.TcAdsReservedIndexGroups.SymbolValueByHandle); // IndexGroup                     
    readSymbolValuesWriter.writeDINT(hByteValue); // IndexOffset = The target handle 
    readSymbolValuesWriter.writeDINT(1); // size to read
    Diese Blöcke können nach belieben kopiert werden, es muss jedoch der korrekte Handle und die benötigte Anzahl Bytes eingetragen werden.

    Code:
    26 + (8 * 4), // Length of requested data + 4 byte errorcode per variable;
    Das hier ist wohl die schwierigste Zeile. Und zwar muss die Grösse der gewünschten Daten berechnet werden. Jede Variable hat unabhängig ihres Typs 4 Bytes Errorcode. Zusätzlich benötigt jede Variable ihrem Typ ensprechend Bytes. Boolsche Variablen benötigen ebenfalls ein Byte.
    Beispiel: Eine Real Variabe: 4 Byte für den Real-Wert + 4 Byte Errorcode = 8 Byte, eine LREAL-Variable benötigt 12 Byte...

    Code:
    //  "MAIN.realValue" // REAL                     
    var realValue = reader.readREAL();
    Besser:
    var rWindSpeed = parseFloat(reader.readREAL()).toFixed(2);                     
    var rTideSpeed = parseFloat(reader.readREAL()).toFixed(1);
    Danach werden die Werte ausgelesen. Ich empfehle, anstelle des Beckhoffvorschlags die Werte zu Floats zu parsen. Mit dem Befehl .toFixed(Komamstellen) kann die Anzahl gewünschter Kommastellen gewählt werden. Zudem liegt die Variable als Zahl und nicht als String vor. (z.B. für Berechnungen nötig)

    Code:
    td_MoorNW.innerHTML = rMoorNW; 
    td_MoorNE.innerHTML = rMoorNE;
    Mit diesen Zeilen werden die Werte in die entsprechenden Tabellenzellen eingefügt.

    Code:
    <tr bgcolor=#CCCCCC>             
         <td>Mooring NW: [t]</td>             
         <td id="td_MoorNW"></td>      <- Hier wird der Wert angezeigt
     </tr> 
            <tr bgcolor=#B8EDFF>             
        <td>Mooring NE: [t]</td>             
        <td id="td_MoorNE"></td>       <- Hier wird der Wert angezeigt       
    </tr>
    Was dann im HTML-Teil entsprechend gekennzeichnet werden muss.

    Code:
    Ganz am Anfang:
        Date.prototype.today = function(){          
    return ((this.getDate() < 10)?"0":"") + this.getDate() +"/"+(((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +"/"+ this.getFullYear()                  
    };            
     //For the time now             
    Date.prototype.timeNow = function(){  
                    return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds();                 };
    
    Und nach den Wertzuweisungen folgende Zeile:
    td_MoorNE.innerHTML = rMoorNE;
    var newDate = new Date();  
    div_log.innerHTML  = "LastSync: " + newDate.today() + " - " + newDate.timeNow();
    Damit wird bei jedem Update der Werte die aktuelle Zeit des Browsers ausgegeben. Ist sehr nützlich bei Zugriffen über das Internet und grossen Latenzzeiten (z.B. Satelittenuplink)

    Das ganze sieht dann z.B. so aus:
    Screenshot_2013-12-07-19-38-05.png

    Ich möchte hier auch noch die Bibliothek von NieZuSpaet erwähnen:
    Zitat Zitat von NieZuSpaet Beitrag anzeigen
    @Guga: dann der Vollständigkeit halber noch der Hinweis auf die TAME-Javascript-Lib, die den ADSWebService etwas nutzerfreundlicher macht.

    http://tomcx.github.io/tame3/
    Anhang 22549Anhang 22550Anhang 22551
    Auf die Verknüpfung mit Highcharts werde ich (vielleicht) später noch eingehen, da man damit wirklich sehr schöne Grafiken automatisch und animiert erzeugen kann!
    ADCP.jpg Wind.jpg

    Für Anregungen bin ich sehr dankbar, bitte benutzt doch diesen Thread oder PM, um diese FAQ sauber zu halten...
    Geändert von gloeru (16.12.2013 um 22:54 Uhr)

Ähnliche Themen

  1. Dienstleistungen rund um Saia® PCD Systeme
    Von S-Lancer.de im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 17.08.2011, 20:00
  2. TwinCAT stürzt ab sobald TwinCAT System gestartet wird
    Von HK09 im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 23.09.2010, 10:02
  3. ALLES AUS Schaltung
    Von klaus1 im Forum CODESYS und IEC61131
    Antworten: 15
    Letzter Beitrag: 10.08.2010, 12:23
  4. Alles mit ALLEM
    Von libra1780 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 11.03.2010, 17:16
  5. Antworten: 4
    Letzter Beitrag: 03.11.2009, 14:05

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •