# FAQ: alles rund um TwinCAT 2



## Chräshe (15 November 2011)

Hallo Ihr,

 Wer macht mit, das Beckhoff FAQ etwas auszubauen?
 Es muss ja nicht jeder über die selben Stolpersteine fallen.
 Fügt einfach den Beitrag an, ich nehme ihn dann verlinkt in die Liste auf...

 Gruß
 Chräshe

 .----------------------------------------------------------------
  Inhalt:

 - Linkliste für Einsteiger
  - CPU-Steuerungs-Simulation mit Arbeits- PC
 - Persistente Daten
- CE basierende Supplementprodukte installieren Am Beispiel von "TwinCAT PLC HMI CE" (Kostenpflichtig mit Lizenzschlüssel)
- Einstellen der Monitorauflösung bei der Verwendung der TwinCAT PLC Visualisierung
- Überblick über die Beckhoff Visualisierungen 
- Überblick über die Visualisierungen von Drittanbieter
- Aktuelle TwinCAT 2.11 R3 - Version
- Nützlich: Bereichsüberschreitungen beim Zugriff auf Arrays verhindern
- Nützlich: Datei-Funktionsbausteine zum lesen und schreiben von Dateien
- TwinCAT Webserver erklärt


----------



## Chräshe (15 November 2011)

*Linkliste für Einsteiger:*

Beckhoff Information System
 Hier ist alle Dokumentation über Beckhoff zu finden. Die Struktur ist nach Produktgruppen und Artikel aufgebaut. Wer nicht weiß, was er sucht, hat schlechte Karten... ;-)

TwinCAT Quick Start
 Kurzanleitung um einen schnellen Überblick zu bekommen.  

 YouTube:         
TwinCAT Quick Start                                     (englisch)
erste Verbindung mit Beckhoff CX einrichten   (englisch)
TwinCat Einführung - Teil 1 von 5                    (deutsch, leider bescheidenes Bild)

 Der Programm-Editor von TwinCAT ist weitgehendst mit dem von CoDeSys identisch. Für den Anfang halte ich die beiden Handbücher von CoDeSys als eine gute Ergänzung. Gerade die Grundlagen sind mit der Suchfunktion in den beiden PDF schnell gefunden. Bei Beckhoff wird in der Online-Hilfe mitunter sehr viel mehr gefunden, als einem lieb ist...
http://www.wago.com/wagoweb/documentation/759/ger_manu/333/m07590333_00000000_1de.pdf (SPS)
http://www.wago.com/wagoweb/documentation/759/ger_manu/333/m07590333_00000000_2de.pdf (VISU)

  YouTube:          
CoDeSys Quick Start Teil 1

Open-Source auf Basis der IEC61131-3 zum mitmachen: die  OSCAT -Bibliothek
Willkommen bei OSCAT


----------



## Chräshe (15 November 2011)

*CPU-Steuerungs-Simulation mit Arbeits- PC:*

TwinCAT kann wie CoDeSys zum kennen lernen ganz ohne spezielle Hardware getestet werden. 
Bei TwinCAT gibt es aber die Auswahl "Simulation" im Editor nicht.  

  Alternativ reichen aber folgende Einstellungen im System-Manager:

  - den System-Manager öffnen
- unter „Datei/Neu“ eine neue Datei öffnen
- unter „Aktionen/Konfiguration“ aktivieren“ 
- die Frage „Neustart in Run-Modus?“ mit „OK“ bestätigen
=> unten rechts sollte das Feld welches die CPU-auslastet grün werden – die Steuerung ist bereit...


----------



## Chräshe (15 November 2011)

*Persistente Daten:*

*Daten die erhalten bleiben - nach Spannungsausfall oder Online-Change*

  Bei den Busklemmen-Controller   waren remanente und persistente Daten je nach Gerät eine Selbstverständlichkeit. Umso mehr enttäuscht war ich, als ich bei den PC-basierenden Systemen auf das Thema gestoßen bin.  
 Es gibt inzwischen für jedes Problem ein Lösung. Damit ihr euch nicht durch die unendlichen Weiten des InfoSys quälen müsst, eine kurze Zusammenfassung.


*1. Variante: Die CPU verfügt über eine 1-Sekunden-USV*

  Aktuell verfügen Folgende Steuerungen über die 1s USV: C6915, CX5000, CX8000, CP62xx, CP77xx
  Weitere werden hoffentlich folgen...

 Hier ist es ausreichend, die Variablen als „PERSISTENT“ zu deklarieren und im Programm die Funktion FB_S_UPS aufzurufen...


```
PROGRAM MAIN
 [FONT=courier new]VAR
     fbUPS       : FB_S_UPS;    (* UPS-FB instance *)
      eUpsMode    : E_S_UPS_Mode    := eSUPS_WrPersistData_Shutdown;  
     ...
 END_VAR

     fbUPS(eUpsMode := eUpsMode);    (* immer im Main als erste Anweisung stehen lassen *)[/FONT]
```


*2. Variante:  Die CPU verfügt über keine USV*

  Variablen die „PERSISTENT“ deklariert sind, können aus dem Programm heraus mit der Funktion WritePersistentData gespeichert werden. Leider findet das speichern auf der Flash- Karte statt. Dieser Speicher hat eine begrenzte Anzahl an Speicherzyklen, bis er ausfallen kann. Daher sollte man nie hergehen und einfach alle x Sekunden das schreiben auslösen.

  In dem Beispiel IPC_X86.zip ist eine schöne Lösung für dieses Problem. Alle zu speichernden Variablen sind unter VAR PERSISTENT in einer Struktur abgelegt. Die Funktion MEMCMP vergleicht diese Struktur mit einer Kopie im normalen Speicherbereich. Sind alle Werte identisch passiert nichts. Sobald ein Wert geändert wird, z.B. durch die Eingabe eines Bedieners..., werden die neuen Werte in die Kopie übertragen (siehe Funktion MEMCPY) und mit WritePersistentData die Variablen auf die Flash- Karte gesichert.  

  Für Rezepturen, Einstellungen, Positionslisten usw. ist das absolut zufriedenstellend.  

  Nicht verwenden sollte man diese Variante, wenn Variablen dabei sind, die sich schnell und häufig ändern. Das könnte zum Beispiel bei Stückzählern, Betriebsstundenzähler oder remanenten Schrittketten der Fall sein. Da kommt die 3.Variante ins Spiel...


*3. Variante: Die Verwendung des NOVRAM*

NOVRAM kann beliebig oft beschrieben und gelesen werden. Die Netzteile für die CX10xx bringen bereits 8k NOVRAM mit.  
  Die entsprechenden Variablen müssen nur als Ausgang (%Q*) deklariert und im System-Manager mit dem NOVRAM verknüpft werden.  
  Anzumerken ist, dass die CPU-Belastung mit wachsender NOVRAM- Belegung stark anwächst, da dieser Speicher Zyklisch gelesen und geschrieben wird!

  Somit ist die 3.Variante nur als Ergänzung zur 2.Variante interessant.


----------



## Chräshe (21 Januar 2012)

*CE basierende Supplementprodukte installieren*

*Am Beispiel von "TwinCAT PLC HMI CE"  *   (Kostenpflichtig mit Lizenzschlüssel)

Das Supplement kann hier runter geladen werden:
http://beckhoff.de/default.asp?download/supplement_sys.htm
Links die Software, rechts ist der Link für die Dokumentation – hab zuerst nur die Doku gefunden...

Folgende Anleitung ist ganz OK:
http://infosys.beckhoff.de/index.ph...ce/html/tcplcvisu_hmi_ce_install.htm&id=21005

Zwei Hinweise sind vielleicht noch ganz hilfreich:

1) Wenn man das Produkt "TwinCAT PLC HMI CE" gleich mit der CPU bestellt, ist es in der Regel vorinstalliert und man kann sofort loslegen.
Leider bestätigen Ausnahmen die Regel. Obwohl man das Häkchen für die VISU an der Steuerung an und abwählen konnte, war das Supplement nicht, oder zumindest nicht richtig installiert. Die Fehlermeldung beim versuch das SPS- Programm zu übertagen lautete:
*„Die Target Visualisierung wird vom Zielsystem nicht unterstützt!“*
In dem Fall muss "TwinCAT PLC HMI CE" noch mal installiert werden.

2) Es steht in der Anleitung ganz unscheinbar:
"*Beenden Sie das CE Gerät einmalig nach der Installation per "Start-> Suspend.* Erst dann werden die Einstellungen in der Registry auf die Compact Flash des CE Geräts gesichert. "

Ja, das kann ich bestätigen. Wenn man nur den Hauptschalter umlegt, war die ganze Mühe umsonst. 
Ich weiß, ihr lest die Anleitungen mindestens genau so sorgfältig wie ich. Darum erwähne ich das nochmal... 

Gruß
Chräshe


----------



## Chräshe (8 Februar 2012)

*Einstellen der Monitorauflösung bei der Verwendung der TwinCAT PLC Visualisierung:*

Bei der Verwendung der TwinCAT PLC Visualisierung, ist es leider erforderlich, die  Monitorauflösung *an 2 Orten* einzustellen. 

1.) Einstellung der Bildschirmauflösung in der Entwicklungsumgebung, was im wesentlichen die Größe vom weißen Feld bei der Projektierung bestimmt. Sonst weiß man beim erstellen der VISU gar nicht, wie viel Platz zur Verfügung steht. 

Dazu muss der Eintrag in folgender Datei angepasst werden:
*"C:\TwinCAT\PLC\TwinCAT PLC Control.ini" *
Eintrag:
VisuWidth=640 (640 ändern in z.B. 800 oder 1024)
VisuHeight=480 (480 ändern in z.B. 600 oder 768)

Damit die CE-Steuerung auch weiß, was sie für einen Monitor zur Verfügung hat, muss das dort nochmal separat eingestellt werden. 

2.) Änderung lokal am CE-Gerät: 
“Start” --> “Settings” --> “Control Panel” --> “Display” (oder so ähnlich)
*--> Restart per "Start-> Suspend notwendig*, damit die Änderung gespeichert wird!


----------



## Chräshe (21 Februar 2012)

*Überblick über die Beckhoff Visualisierungen*

PLC Control 
Ist die Visualisierung, die automatisch in TwinCAT integriert ist. Auf dem Zielsystem muss nichts eingerichtet oder installiert werden.  
 Man hat auf alle Variablen aus dem Projekt Zugriff. Für die Inbetriebnahme ist das eine sehr komfortable Einrichtung...  
Bereits vom kleinsten Controller bis zum dicksten PC kann diese VISU verwendet werden. 
  ______________

PLC HMI 
Kann als kostenpflichtiges Supplement nachinstalliert werden.  
Fast wie „PLC Control“, nur dass es direkt auf dem Zielsystem läuft und für die Maschinenbedienung verwendet werden kann.
 Es ist also auf jeden Fall ein eine PC- basierende Steuerung erforderlich.
Bei Änderungen im SPS-Programm muss die VISU leider gestoppt werden. :?
______________

PLC HMI CE 
Die Windows CE-Variante für PC- basierende Steuerungen.  
 Onlineänderungen sind problemlos möglich.  
Kann als kostenpflichtiges Supplement nachinstalliert werden.  
Leider gibt es funktionelle Einschränkungen :|
______________

PLC HMI Web 
Die webbasierte Variante für PC- basierende Steuerungen.  
 Kann als kostenpflichtiges Supplement nachinstalliert werden.  
Leider gibt es funktionelle Einschränkungen :neutral:
Ein Client (Browser) benötigt zur Anzeige der web basierten Visualisierung TwinCAT PLC HMI Web eine Java-VM


----------



## StructuredTrash (22 Februar 2012)

*Aktuelle TwinCat-Version*

Aus aktuellem Anlass:
Seit Ende letzten Jahres braucht man auch für die Arbeit mit CX10xx-Rechnern TwinCat V2.11 R2, weil die CXe seitdem mit einer R2-Laufzeit ausgerüstet werden.
Dazu folgende Links:
Versionshinweise
http://beckhoffautomation.com/default.asp?twincat/release_notes.htm?id=34797126797
TwinCat-Download
http://www.beckhoff.de/tcatweb/twincat_download.aspx


----------



## Chräshe (13 Januar 2013)

*Überblick über die Visualisierungen von Drittanbieter*

Das Kapitel "Third Party Produkte" gibt einen Überblick bestehender Visualisierungssysteme anderer Hersteller mit Anbindung an TwinCAT.  

Die Liste ist längst noch nicht vollständig, es gibt noch mehr Hersteller als hier aufgeführt.
Persönlich habe ich mit den Geräten von Beijer sehr gute Erfahrungen gemacht.

Gloeru empfiehlt das Galileo von Eaton, das sehr einfach über TCP/IP ADS mit TwinCAT kommuniziert. 
Sehr schön ist, dass es auch ein vernünftiges Mobil-Panel gibt. 
Anbei die Anleitung...

Alternativ kann man auch mit Visual Basic, Visual C, Delphi, Java, …, eine Oberfläche selbst erstellen und mit ADS die Daten austauschen.

 Gruß
Chräshe


----------



## gloeru (4 Februar 2013)

Die Funktion *Checkbound *funktioniert wie folgt:
- Du legst eine  Funktion mit den Namen *Checkbounds *an und kopierst den  Code unten in die Funktion mit der  Variablendeklaration.
-  Im Code würde ich jeweils bei den beiden "Fehler-IFs" entweder je  eine  globale boolsche Variable setzen oder je eine INT-Variable  hochzählen  lassen.
-> Übersetzen und ausprobieren, weiter musst du nichts  machen (Die  Funktion muss NICHT aufgerufen werden, das macht TwinCAT  selbst)
*
Bitte beachte, dass die Auslastung massiv und sprunghaft  steigen kann,  was im schlimmsten Fall zu Zykluszeitüberschreitungen  führen kann! * 
Deshalb nur mit Vorsicht an realer Hardware ausprobieren.  Das TwinCAT System kann jederzeit stoppen, was mit einem Totalausfall der SPS gleichzusetzen ist. Insbesondere Achsen können aufgrund von fehlenden Sollwert-Telegrammen unkontrolliert austrudeln!

Solange die  Funktion mitübersetzt wird (also nicht "vom Übersetzen  ausschliessen"  -> grüne Schrift) ist sie scharf...

Zum Auswerten kann ein Breakpoint in die Funktion gesetzt werden, dann stoppt die Steuerung im Fehlerfall. Auch dies bitte ohne Hardware oder mit entsprechender Vorsicht durchführen...

Variablendeklaration:

```
FUNCTION CHECKBOUNDS : DINT  
VAR_INPUT
 index, lower, upper : DINT;
 END_VAR
```

Code:

```
IF index<lower THEN  
   CHECKBOUNDS := lower;
   -> giCheckBoundsLower := giCheckBoundsLower + 1;  
ELSIF index>upper THEN  
  CheckBounds := upper;
   -> gbCheckBoundsUpper = TRUE; 
ELSE
    CHECKBOUNDS := index; 
END_IF
```


----------



## Chräshe (7 Februar 2013)

*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:

```
[COLOR=#000000][FONT=courier new]
[/FONT][/COLOR][B][COLOR=#008000][FONT=courier new]'C:\';           (* XP/W7 PC *) [/FONT][/COLOR][COLOR=#000000][FONT=courier new]
[/FONT][/COLOR][COLOR=#ee82ee][FONT=courier new]'\Hard Disk\';   (* WinCE CF-Karte *)[/FONT] 
[FONT=courier new]'\Hard Disk2\';  (* WinCE lokaler USB-Stick *)[/FONT][/COLOR][/B]
```


----------



## Magik_Niq (24 April 2013)

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


----------



## gloeru (16 Dezember 2013)

*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/1033/tcadswebservice/html/webservice_install_7.htm?id=17781
Win XP: http://infosys.beckhoff.com/content/1033/tcadswebservice/html/webservice_install_xp.htm?id=17782
Win CE : http://infosys.beckhoff.com/content/1033/tcadswebservice/html/webservice_install_ce.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)


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


```
[B]var SERVICE_URL = "http://localhost/TcAdsWebService/TcAdsWebService.dll"; // HTTP path to the TcAdsWebService;[/B]
```
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!)


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


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


```
var [B]hByteValue[/B] = reader.readDWORD(); 
var [B]hWordValue[/B] = reader.readDWORD();
```
Hiermit werden die Handles erzeugt. Jede Variable die gelesen werden soll, braucht einen Handle.


```
//  "MAIN.byteValue" // BYTE                     
readSymbolValuesWriter.writeDINT(TcAdsWebService.TcAdsReservedIndexGroups.SymbolValueByHandle); // IndexGroup                     
readSymbolValuesWriter.writeDINT([B]hByteValue[/B]); // IndexOffset = The target handle 
readSymbolValuesWriter.writeDINT([B]1[/B]); // 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.


```
[B]26 + (8 * 4)[/B], // 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...


```
[I][COLOR=#a9a9a9]//  "MAIN.realValue" // REAL                     
var realValue = reader.readREAL();[/COLOR][/I]
Besser:
[B]var rWindSpeed = parseFloat(reader.readREAL()).toFixed(2);                     
var rTideSpeed = parseFloat(reader.readREAL()).toFixed(1)[/B];
```
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)


```
[B]td_MoorNW[/B].innerHTML = rMoorNW; 
[B]td_MoorNE[/B].innerHTML = rMoorNE;
```
Mit diesen Zeilen werden die Werte in die entsprechenden Tabellenzellen eingefügt.


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


```
[I][B]Ganz am Anfang:[/B][/I]
    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();                 };

[I][B]Und nach den Wertzuweisungen folgende Zeile:[/B][/I]
[COLOR=#a9a9a9]td_MoorNE.innerHTML = rMoorNE;[/COLOR]
[B]var newDate = new Date();  
div_log.innerHTML  = "LastSync: " + newDate.today() + " - " + newDate.timeNow();[/B]
```
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:



Ich möchte hier auch noch die Bibliothek von NieZuSpaet erwähnen:


NieZuSpaet schrieb:


> @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 anzeigen 22549
> ...



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!




Für Anregungen bin ich sehr dankbar, bitte benutzt doch diesen Thread oder PM, um diese FAQ sauber zu halten...


----------

