Erstellen einer MS Access Datenbank
In diesem Beispiel wird gezeigt, wie eine Datenbank aus der SPS heraus erstellt wird. Zusätzlich wird eine Tabelle hinzugefügt und die erzeugte Datenbank in der XML‑Konfigurationsdatei deklariert.
Download: TcDBSrv_InfoSysSamples.zip
Verwendeter Datenbanktyp | MS Access |
Kompatible Datenbanktypen | MS SQL, MS Compact SQL, MS Access, XML |
Verwendete Funktionsbausteine | FB_DBCreate, FB_DBConnectionAdd, FB_DBTableCreate |
Einzubindende Bibliotheken | Tc2_Database, Tc2_System, Tc2_Standard |
Download Dateiliste | TcDBSrv_InfoSysSamples.tszip |
Der erzeugten Datenbank wird eine Tabelle mit dem Namen „myTable“ hinzugefügt, die folgende Tabellenstruktur besitzt:
Spaltenname | Datentyp | Eigenschaft |
---|---|---|
ID | Bigint | IDENTITY(1,1) |
Timestamp | datetime |
|
Name | Ntext |
|
Value | Float |
|
Diese Tabellenstruktur wird mit folgendem Array erzeugt:
tablestrc: ARRAY [0..3] OF ST_DBColumnCfg :=
[(sColumnName:='ID',sColumnProperty:='IDENTITY(1,1)',eColumnType:=EDBCOLUMN_BIGINT),
(sColumnName:='Timestamp',eColumnType:=EDBCOLUMN_DATETIME),
(sColumnName:='Name',eColumnType:=EDBCOLUMN_NTEXT),
(sColumnName:='Value',eColumnType:=EDBCOLUMN_FLOAT)];
Variablendeklaration
PROGRAM MAIN
VAR
R_TRIG1 : R_TRIG;
bSTART : BOOL;
FB_FileDelete1 : FB_FileDelete;
FB_DBCreate1 : FB_DBCreate;
FB_DBConnectionAdd1: FB_DBConnectionAdd;
FB_DBTableCreate1 : FB_DBTableCreate;
bBusy_Delete : BOOL;
bBusy_CreateDB : BOOL;
bBusy_ConnAdd : BOOL;
bBusy_CreateTable : BOOL;
bErr : BOOL;
nErrid : UDINT;
nDBid : UDINT;
arrTablestrc : ARRAY [0..3] OF ST_DBColumnCfg :=
[(sColumnName:='ID',sColumnProperty:='IDENTITY(1,1)',eColumnType:=EDBCOLUMN_BIGINT),
(sColumnName:='Timestamp',eColumnType:=EDBCOLUMN_DATETIME),
(sColumnName:='Name',eColumnType:=EDBCOLUMN_NTEXT),
(sColumnName:='Value',eColumnType:=EDBCOLUMN_FLOAT)];
nState:BYTE := 0;
END_VAR
SPS-Programm
CASE nState OF
0:
(*To start this sample you have to set a rising edge to the variable bSTART*)
R_TRIG1(CLK:=bSTART);
IF R_TRIG1.Q THEN
nState := 1;
FB_FileDelete1(bExecute:=FALSE);
FB_DBCreate1(bExecute:=FALSE);
FB_DBConnectionAdd1(bExecute:=FALSE);
FB_DBTableCreate1(bExecute:=FALSE);
bSTART := FALSE;
END_IF
1:
(*It isn't possible to overwrite an existing database file.
If the database file exist the FB_FileDelete block will delete the file*)
FB_FileDelete1(
sNetId := ,
sPathName:= 'C:\TwinCAT\TcDatabaseSrv\Samples\TestDB1000SPS.mdb',
ePath := PATH_GENERIC,
bExecute := TRUE,
tTimeout := T#5s,
bBusy => bBusy_Delete,
bError => ,
nErrId => );
IF NOT bBusy_Delete THEN
nState := 2;
END_IF
2:
(*The FB_DBCreate block will create the database file
"C:\TwinCAT\TcDatabaseSrv\Samples\TestDB1000SPS.mdb"*)
FB_DBCreate1(
sNetID := ,
sPathName:= 'C:\TwinCAT\TcDatabaseSrv\Samples',
sDBName := 'TestDB1000SPS',
eDBType := eDBType_Access,
bExecute := TRUE,
tTimeout := T#15s,
bBusy => bBusy_CreateDB,
bError => bErr,
nErrID => nErrid);
IF NOT bBusy_CreateDB AND NOT bErr THEN
nState := 3;
END_IF
3:
(*The FB_DBConnectionAdd adds the connection information to the
XML configuration file*)
FB_DBConnectionAdd1(
sNetID := ,
eDBType := eDBType_Access,
eDBValueType:= eDBValue_Double,
sDBServer := ,
sDBProvider := 'Microsoft.Jet.OLEDB.4.0',
sDBUrl := 'C:\TwinCAT\TcDatabaseSrv\Samples\TestDB1000SPS.mdb',
sDBTable := 'myTable',
bExecute := TRUE,
tTimeout := T#15s,
bBusy => bBusy_ConnAdd,
bError => bErr,
nErrID => nErrid,
hDBID => nDBid);
IF NOT bBusy_ConnAdd AND NOT bErr THEN
nState := 4;
END_IF
4:
(*The FB_DBTableCreate create the table "myTable"*)
FB_DBTableCreate1(
sNetID := ,
hDBID := nDBid,
sTableName := 'myTable',
cbTableCfg := SIZEOF(arrTablestrc),
pTableCfg := ADR(arrTablestrc),
bExecute := TRUE,
tTimeout := T#15s,
bBusy => bBusy_CreateTable,
bError => bErr,
nErrID => nErrid);
IF NOT bBusy_CreateTable AND NOT bErr THEN
nState := 0;
END_IF
END_CASE
Um dieses Beispiel zu benutzen, müssen Sie nur die NetID des ADS-Gerätes, auf dem der TwinCAT Database Server installiert ist, an den Eingang sNetID übergeben.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v3.0.0 | PC oder CX (x86) | Tc2_Database |