Herunterladen Inhalt Inhalt Diese Seite drucken

Digitronic Automationsanlagen DigiWEB Bedienungsanleitung

C-schnittstelle
Vorschau ausblenden Andere Handbücher für DigiWEB:

Werbung

DigiWEB
C-Schnittstelle
Digitronic Automationsanlagen GmbH
Steinbeisstraße 3  D - 72636 Frickenhausen  Tel. +49 7022 40590-0  Fax -10
Auf der Langwies 1  D - 65510 Hünstetten-Wallbach  Tel. +49 6126 9453-0  Fax -42
Internet: http://www.digitronic.com  E-Mail: mail@digitronic.com

Werbung

Inhaltsverzeichnis
loading

Inhaltszusammenfassung für Digitronic Automationsanlagen DigiWEB

  • Seite 1 DigiWEB C-Schnittstelle Digitronic Automationsanlagen GmbH Steinbeisstraße 3  D - 72636 Frickenhausen  Tel. +49 7022 40590-0  Fax -10 Auf der Langwies 1  D - 65510 Hünstetten-Wallbach  Tel. +49 6126 9453-0  Fax -42 Internet: http://www.digitronic.com  E-Mail: mail@digitronic.com...
  • Seite 2: Inhaltsverzeichnis

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Inhalt Einleitung ..............................3 Voraussetzungen zur DigiWEB-Programmierung ..............3 Visual Studio 6 ............................3 DigiWEB Library ............................3 Programmierung mit C ......................... 3 Gnu Compiler ............................3 Hardware Debugger ..........................3 Einrichten der Entwicklungsumgebung ..................4 DigiWEBOptionConstruct ........................
  • Seite 3: Einleitung

    Die Programmierung der Software erfolgt in der Regel auf einem WindowsPC mit Visual- Studio. Hier wird die Hardware eines DigiWEB auf dem PC emuliert. Das hat den Vorteil, dass die gesamte Entwicklung der Software am PC stattfindet, dessen Debug- und Entwicklungstools sehr einfach zu bedienen sind.
  • Seite 4: Einrichten Der Entwicklungsumgebung

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 3 Einrichten der Entwicklungsumgebung Starten Sie Visual Studio Gehen Sie zu ‟Datei  Neu“ Seite 4 von 44 3. Juni 2011...
  • Seite 5 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH In dem sich öffnendem Fenster wählen Sie im Reiter Projekte ‟Win32-Konsolenanwendung“ und geben Sie im Eingabefeld ‟Projektname“ Ihren Projektnamen ein. Anschließend klicken Sie auf OK. Im sich öffnenden Dialog wählen Sie ‟Eine Anwendung, die MFC unterstützt“.
  • Seite 6 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Daraufhin werden Informationen zu Ihrem gerade erstellten Projekt angezeigt. Diese müssen mit OK bestätigt werden. Gehen Sie nun im Menü auf ‟Projekt  Einstellungen“. Seite 6 von 44 3. Juni 2011...
  • Seite 7 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Dort wechseln Sie in den Reiter C++ und wechseln dort in die Kategorie ‟Code Generation“. Hier muss der Wert für ‟Struct-Element-Ausrichtung“ auf 1 Byte eingestellt werden. Fügen Sie den Projekt-Optionen am Ende ein ‟/J“ (ohne Anführungszeichen) hinzu.
  • Seite 8 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 1. Wechseln Sie nun in die Kategorie Präprozessor und tragen Sie unter ‟Zusätzliche Pfad_zur_DigiWEB_Library Include- Verzeichnisse“ folgenden Pfad ein: ‟ /include“ 2. Fügen Sie den Präprozessor-Definitionen folgendes hinzu. “_DIGIWEB_OPTION=1,__MALLOC_DEBUG__,NOTASK” Seite 8 von 44 3. Juni 2011...
  • Seite 9 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Gehen Sie zur Kategorie ‟Vorkompilierte Header“ und stellen Sie dort ‟Vorkompilierte Header nicht verwenden“ ein. 3. Wechseln Sie nun in den Reiter ‟Linker“. Dort tragen Sie bei ‟Objekt- /Bibliothek- Module“ die beiden DigiWebLibrarys ein Pfad_zur_DigiWEB_Library “...
  • Seite 10 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 4. Wechseln Sie nun zum Reiter ‟Debug“ und tragen Sie als Arbeitsverzeichnis den Pfad_zur_DigiWEB_Library Ordner ‟ /ftp“ ein. Anschließend klicken Sie auf OK. 5. Fügen Sie nun unter dem Reiter ‟Dateien“ die folgenden Dateien als Quellcodedateien...
  • Seite 11 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Öffnen Sie nun das Modul, in dem die Funktion ‟_tmain“ definiert wurde. Fügen Sie diese Funktion hinzu. BOOL WINAPI _tclose(DWORD eventCode) switch(eventCode) case CTRL_CLOSE_EVENT: MainDigiWebDestruct(); break; return TRUE; Ändern Sie den Code Ihrer ‟_tmain“ Funktion folgendermaßen ab: int nRetCode = 0;...
  • Seite 12: Digiweboptionconstruct

    Diese Funktion ist der Konstruktor Ihres DigiWEB Programms. Sie wird automatisch beim Starten, nachdem die DigiWEB-Schnittstelle initialisiert wurde, aufgerufen. void DigiWebOptionConstruct(void) 5 DigiWEBOptionDestruct Diese Funktion wird nur für die DigiWEB Simulation am PC benötigt. Sie ist der Destruktor des DigiWEB Programms. Hier müssen alle benötigten Speicher wieder aufgelöst werden, damit DigiWEB...
  • Seite 13: Digiweboptionthread

    Zeitraum zur Abarbeitung benötigen, zwischendurch unterbrochen werden (Beispielsweise, wenn bei einer Übertragung über die serielle Schnittstelle gewartet werden muss). Diese Probleme werden im DigiWEB durch Statemachines gelöst. Es werden also Funktionen zyklisch aufgerufen, aber durch eine State Variable wird je nach Fortschritt der Abarbeitung etwas Anderes getan.
  • Seite 14: Digiwebsymbol_Xxx

    Endekennung führt zu einem Absturz. Security Areas Jedes Symbol kann einen anderen Sicherheitslevel erhalten. Im DigiWEB werden Sicherheitslevel durch 32 Areas dargestellt. Jede Area stellt 1 Bit einer 32Bit Variable dar. Nur, wenn ein User alle Areas, die auf true stehen betreten darf, kann die Variable gelesen/geschrieben werden.
  • Seite 15: Digiwebsymbol_L

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Konkret muss im Quellcode ein Array aus 2 long Variablen deklariert werden. Index 0 Leseareas Index 1 Schreibareas static const unsigned long SECURITY_NONE[2] ={0x00000000,0x00000000}; DIGIWEBSYMBOL_L__(typ,pSecurity,name,deflong) Dieser Symboltyp ist zum Lesen und Schreiben einer long Variable direkt in eine Struktur. Der Wert wird eins zu eins gelesen und geschrieben.
  • Seite 16: Digiwebsymbol_La_(Typ,Psecurity,Name,Deflong)

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH DIGIWEBSYMBOL_LA_(typ,pSecurity,name,deflong) Dieser Symboltyp ist zum Lesen und Schreiben eines long Arrays direkt in einer Struktur. Das Symbol kann mit [] indexiert werden. Die Werte werden eins zu eins gelesen und geschrieben. Parameter Datentyp der Struktur, in der der long deklariert wurde...
  • Seite 17: Digiwebsymbol_P

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH DIGIWEBSYMBOL_P__(typ, pSecurity, name,deflong) Wird zum Lesen und Schreiben von long Werten verwendet Greift nicht direkt auf den Speicher einer Variablen zu, sondern benutzt Set und Get Funktionen. Parameter Datentyp der Struktur, in der der long deklariert wurde...
  • Seite 18 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Beispiel: Zugriff in Visualisierung: ##testPrg typedef struct long dummy; }tAppData; tAppData ApplicationData = {0}; long tAppDataGet_testPrg(tAppData* pStruct) return pStruct->dummy*10; void tAppDataSet_testPrg(tAppData* pStruct,long val) pStruct->dummy=val/10; const tDigiWebSymbol DigiWebSymbols[]= DIGIWEBSYMBOL_P__(tAppData,SECURITY_NONE,testPrg, 1), DIGIWEBSYMBOL_P_R(typ, pSecurity, name,deflong) Werte werden remanent...
  • Seite 19: Digiwebsymbol_Pa_(Typ, Psecurity, Name,Deflong)

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH DIGIWEBSYMBOL_PA_(typ, pSecurity, name,deflong) Wird zum Lesen und Schreiben von Arrays mit long Werten verwendet Greift nicht direkt auf den Speicher einer Variablen zu, sondern benutzt Set und Get Funktionen. Kann mit [] indiziert zugreifen. Parameter...
  • Seite 20 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH speichert die Werte des DIGIWEBSYMBOL_PAR(pSecurity,target,str,array,deflong) Array remanent. Zusätzlicher Parameter ‟array“ ist die Maximale Anzahl an Datensätzen die remanent gespeichert werden. DIGIWEBSYMBOL_PAS(pSecurity,target,str,deflong) hat nur eine Set-Funktion DIGIWEBSYMBOL_PAG(pSecurity,target,str,deflong) hat nur eine Get-Funktion Seite 20 von 44 3. Juni 2011...
  • Seite 21: Digiwebsymbol_C

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH DIGIWEBSYMBOL_C__(typ, pSecurity, name,defstr) Symbol zum Verarbeiten von Zeichenketten Greift direkt auf einen char* in einer Struktur zu Name der Variablen in der Struktur ist auch Symbolname Speicher wird automatisch alloziert und freigegeben Parameter Datentyp der Struktur, in der der char* deklariert wurde...
  • Seite 22: Digiwebsymbol_Ca_(Typ, Psecurity, Name,Defstr)

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH DIGIWEBSYMBOL_CA_(typ, pSecurity, name,defstr) Symbol zum Verarbeiten von Zeichenketten-Feldern Greift direkt auf einen Array von char* in einer Struktur zu Name der Variablen in der Struktur ist auch Symbolname Zugriff wird indexiert durch [] Speicher wird automatisch alloziert und freigegeben...
  • Seite 23: Digiwebsymbol_M

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH DIGIWEBSYMBOL_M__(typ, pSecurity, name,defstr,IsDestruct) Symbol zum verarbeiten von Zeichenketten Lesen des Textes über Get-Funktion Schreiben des Textes über Set-Funktion Symbolname muss keine Variable in einer Struktur erhalten Bei Windows zusätzliche Destruktor-Funktion möglich Parameter Datentyp der Struktur, in der der char* deklariert wurde...
  • Seite 24 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Beispiel mit Destruktor: Zugriff in Visualisierung: #$strPrg typedef struct long dummy; }tAppData; tAppData ApplicationData = {0}; static StringM *StaticText=0; StringM* tAppDataGet_strPrg(tAppData* pStruct) if(StaticText) return StrCreateM(StaticText->str); return StrCreateM(“”); void tAppDataSet_strPrg(tAppData* pStruct, const char* str) StaticText = StrCpyM(StaticText, str);...
  • Seite 25: Digiwebsymbol_Ma_(Typ, Psecurity, Name,Isdestruct)

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 9.10 DIGIWEBSYMBOL_MA_(typ, pSecurity, name,IsDestruct) Symbol zum Verarbeiten von Arrays von Zeichenketten Lesen der Texte über Get-Funktion Schreiben der Texte über Set-Funktion Symbolname muss keine Variable in einer Struktur erhalten Bei Windows zusätzliche Destruktor-Funktion möglich Indizierung durch []...
  • Seite 26 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Beispiel mit Destruktor: Zugriff in Visualisierung: #$TextArray2[0] #$TextArray2[1] typedef struct long dummy; }tAppData; tAppData ApplicationData = {0}; StringM* texte[20]={0}; StringM* tAppDataGet_strPrgFeld(tAppData* pStruct, size_t index) if(index>19 || index<0) return StrCreateM(“Error out of bounds”); if(texte[index]) return StrCreateM(texte[index]->str);...
  • Seite 27 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH const tDigiWebSymbol DigiWebSymbols[]= DIGIWEBSYMBOL_MA_(tAppData, SECURITY_NONE, strPrgFeld, 1), DIGIWEBSYMBOL_MAR(typ, pSecurity, name,array,IsDestruct) speichert Texte remanent DIGIWEBSYMBOL_MAG(typ, pSecurity, name) hat nur eine Get-Funktion 3. Juni 2011 Seite 27 von 44...
  • Seite 28: Digiwebsymbol_U

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 9.11 DIGIWEBSYMBOL_U__(typ,subtyp,name) Dieses Symbol legt eine Unterkategorie von Symbolen an. Die Symbole werden dann mit Kategorie.Symbolname angesprochen. Dazu muss eine neue Struktur definiert werden. Von dieser neu definierten Struktur muss dann eine Instanz in der übergeordneten Struktur angelegt werden.
  • Seite 29 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Jede Unterstruktur kann weitere Unterstrukturen enthalten. Die Verschachtelung ist theoretisch unendlich möglich. Das demonstriert das folgende Beispiel: Zugriff in Visualisierung: ##Ebene2.Ebene3.test typedef struct long test; }tEbene3; typedef struct tEbene3 Ebene3; }tEbene2; typedef struct tEbene2 Ebene2;...
  • Seite 30 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Beispiel mit mehreren Unterstrukturen eines gleichen Typs: Zugriff in der Visualisierung: ##Subkategorie1.test ##Subkategorie2.test typedef struct long test; }tEbene2; typedef struct tEbene2 Subkategorie1; tEbene2 Subkategorie2; }tEbene1; tEbene1 Ebene1 = {0}; const tDigiWebSymbol tEbene2Symbols[]= DIGIWEBSYMBOL_L__(tEbene2, SECURITY_NONE, test, 0),...
  • Seite 31: Digiwebsymbol_Ua_(Typ,Subtyp,Name)

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 9.12 DIGIWEBSYMBOL_UA_(typ,subtyp,name) Dieses Symbol funktioniert im Prinzip genau wie ein normales Subtarget Symbol. Der Unterschied besteht darin, dass hier ein ganzes Array von Substrukturen angelegt werden kann. Die Größe des Struktur Arrays wird automatisch erkannt. Deshalb bleiben alle Parameter und Möglichkeiten gleich.
  • Seite 32: Digiweboptionsetgprg

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 10 DigiWebOptionSetGPrg In der Visualisierung werden die Daten für Diagramme durch einen so genannten ‟G“ Befehl abgerufen. Dekodierung dieses Befehls können Funktion DigiWebOptionSetGPrg() umleiten. Der erste Parameter muss ein Pointer auf die Haupt- tDigiWebSymbol Struktur sein. Der zweite Parameter muss die Funktion sein, die ab jetzt die ‟G“...
  • Seite 33 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Die Werte, die ‟emuparameter->g.opt.DiaXPrg“ Funktion zurückliefert, werden um den hier angegeben Wert nach rechts verschoben. L >> emuparameter->g.opt.shift emuparameter->g.opt.bitmask Anschließend wird das Ergebnis mit dem hier angegeben Wert UND-verknüpft. emuparameter->g.opt.XEnd Hier wird die Anzahl an Stützpunkten, die das Diagramm hat, eingetragen emuparameter->g.opt.diacount...
  • Seite 34 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Beispiel: typedef struct long Diagrammfield[50]; }tAppData; tAppData AppData= {0}; const tDigiWebSymbol DigiWebSymbols[]= DIGIWEBSYMBOL_LA_(tAppData, SECURITY_NONE, Diagrammfield, 10), static long DigiWebGetDiagrammValue(EMUPARAMETER *emuparameter,size_t x) long c=0; long *p=emuparameter->g.opt.pField; if((long)x<emuparameter->g.opt.XEnd) c=p[x]; return c; uintcpu DigiWebG(EMUPARAMETER *emuparameter,const char *str) if(!strcmp(str, “##DiaTest[##X]”)) emuparameter->g.opt.DiaXPrg=&DigiWebGetDiagrammValue;...
  • Seite 35: Eingänge Lesen Und Ausgänge Setzen

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 11 Eingänge lesen und Ausgänge setzen Benötigte Header: Libsource/libtools.h QsmWegerfassung.h 11.1.1.1.1.1.1.1 Beispiele: Hinweis! In allen Beispielen muss ‟n“ durch die Nummer des Ausgangs/Eingangs ersetzt werden. Ausgang einschalten: BitTableSet(QsmBufferTransmit, n); Ausgang aussschalten: BitTableClr(QsmBufferTransmit, n); Ausgang einlesen: BitTableGet(QsmBufferTransmit, Gibt 1 zurück, wenn der Ausgang an ist;...
  • Seite 36: Digiwebkennung

    C-Schnittstelle Automationsanlagen GmbH 12 DIGIWEBKENNUNG Der Bootloader des DigiWEB kann verhindern, dass eine unerlaubte Software nicht in das DigiWEB eingespielt werden kann. Das ist sinnvoll, damit keine Firmware eingespielt werden kann, die nicht zur Hardware des Gerätes passt. Um die DigiWEB Kennung zu modifizieren wird das Makro ‟DIGIWEBKENNUNG(Kennung) verwendet.
  • Seite 37: Serielle Schnittstelle

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 14 Serielle Schnittstelle Um im DigiWEB die Serielle Schnittstelle nutzen zu können müssen zunächst folgende Schritte befolgt werden: 1. Header inkludieren rs232connect.h 2. Das Protokoll DIGIWEB_APPEND_RS_FULLDUPLEX RS232 Protokollarray hinzufügen. Der Protokollarray müsste bereits in Ihrem Hauptmodul vorhanden sein.
  • Seite 38 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH ComDefaultPar.u |= 0x0000; // Parity //mögliche Werte für Parity //0x0000 = never //0x2000 = even //0x4000 = odd ComDefaultPar.u |= 0x0000; //Stopbits //mögliche Werte für Stopbits //0x0000 = 1 bit //0x8000 = 2 bit 4. Im Anschluss an die Konfiguration muss das Protokoll gestartet werden. Der erste Parameter spezifiziert das Protokoll.
  • Seite 39: Daten Logging

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 15 Daten Logging Im folgenden Kapitel wird beschrieben wird der Umgang mit Tabellen im DigiWEB beschrieben. 15.1 Tabelle erstellen SQLHANDLE h = SqlConnectCsv(); SqlAppendField(h, "id", ""); SqlAppendField(h, "test", ""); SqlCreate(h, "test.csv"); SqlDisconnect(h); Dieser Code würde eine Tabelle mit Namen "test.csv" anlegen. Diese würde die Spalten "id"...
  • Seite 40: Datensätze Anlegen

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 15.2 Datensätze anlegen h = SqlConnectCsv(); SqlAppendFieldLong(h, "id", 1); SqlAppendField(h, "test", "testext"); SqlInsert(h, "test.csv"); SqlDisconnect(h); Fügt einen Datensatz zur Tabelle "test.csv" hinzu. Mit SqlAppendField und SqlAppendFieldLong werden die Werte der einzelnen Spalten festgelegt. Sollten in der Tabelle Spalten vorhanden sein die nicht definiert wurden wird ein Leerstring eingefügt.
  • Seite 41: Verwendung Von Daten Aus Tabellen

    DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH 15.3 Verwendung von Daten aus Tabellen SqlSelectAll(h, "test.csv"); Wählt alle Datensätze aus einer Tabelle aus. SqlSelectAllWhere(h, "test.csv", "id=3"); Wählt alle Datensätze die zur übergebenen Where-Klausel passen. SqlFetch(h, 0); Setzt den Cursor auf die nächste Zeile. Liefert solange 0 zurück bis keine weiteren Datensätze mehr vorhanden sind.
  • Seite 42: Dns - Domain Namen Auflösen

    = DnsGetIp("web.de"); if(ip.is==0) return; //name konnte nicht aufgelöst werden Da diese Funktion blockt ist sie für DigiWEB Anwendungen nicht zu empfehlen. Sie würde das gesamte DigiWEB für die Zeit in der die Anfrage läuft anhalten. Die Methode mit einer Statemachine: void (*pDnsProg)(void);...
  • Seite 43 DigiWEB Digitronic C-Schnittstelle Automationsanlagen GmbH Im zweiten Schritt wird darauf gewartet dass die Domain aufgelöst wird. Man muss solange warten bis "DnsChk(pvDns);" etwas anderes als 0xffffFFFF zurückliefert. Wenn der zurückgelieferte gleich 0 ist, dann ist die DNS-Anfrage fehlgeschlagen. Die Domain konnte also nicht aufgelöst werden.
  • Seite 44: Header

    Sql-Funktionen für die interne CSV Verwaltung 17.2 PWM.h Funktionen zum Puls-weiten-moduliertem steuern von Ausgängen 17.3 Qsm.h Funktionen zum Steuern der Ausgänge und Einlesen der Eingänge 17.4 MainDigiWeb.h Konstruktor und Destruktor der DigiWeb Library. Seite 44 von 44 3. Juni 2011...

Inhaltsverzeichnis