Codesys Mysql
Codesys Mysql
Codesys Mysql
WagoLibMySQL
to communicate with
MySQL-Databases
Application note
A302000, English
Version 1.1.0
ii General
Application note
A302000
Copyright 2010 by WAGO Kontakttechnik GmbH & Co. KG
All rights reserved.
WAGO Kontakttechnik GmbH & Co. KG
Hansastrae 27
D-32423 Minden
Phone: +49 (0) 571/8 87 0
Fax: +49 (0) 571/8 87 1 69
E-Mail: [email protected]
Web: http://www.wago.com
Technical Support
Phone: +49 (0) 571/8 87 5 55
Fax: +49 (0) 571/8 87 4 30
E-Mail: [email protected]
Every conceivable measure has been taken to ensure the correctness and com-
pleteness of this documentation. However, as errors can never be fully ex-
cluded we would appreciate any information or ideas at any time.
We wish to point out that the software and hardware terms as well as the
trademarks of companies used and/or mentioned in the present manual are gen-
erally trademark or patent protected.
Table of Contents iii
Application note
A302000
TABLE OF CONTENTS
1 Important comments .............................................................................. 4
1.1 Legal principles.............................................................................. 4
1.1.1 Copyright ...................................................................................... 4
1.1.2 Personnel qualification................................................................... 4
1.1.3 Intended use .................................................................................. 4
1.2 Range of validity............................................................................ 5
1.3 Symbols......................................................................................... 5
2 Description.............................................................................................. 6
3 Set up Environment ............................................................................... 7
3.1 Install XAMPP .............................................................................. 7
3.2 Create database testdb................................................................ 8
3.3 Create database account............................................................... 10
3.4 Restart database or reload privileges ............................................ 12
4 The library WagoLibMySql_02.lib.................................................. 13
5 Example_01........................................................................................... 14
6 Example_02........................................................................................... 15
4 Important comments
Application note
A302000
1 Important comments
To ensure fast installation and start-up of the units described in this manual, we
strongly recommend that the following information and explanation is carefully
read and adhered to.
1.1 Legal principles
1.1.1 Copyright
This manual is copyrighted, together with all figures and illustrations contained
therein. Any use of this manual which infringes the copyright provisions stipu-
lated herein, is not permitted. Reproduction, translation and electronic and
photo-technical archiving and amendments require the written consent of
WAGO Kontakttechnik GmbH & Co. KG. Non-observance will entail the right
of claims for damages.
1.1.2 Personnel qualification
The use of the product detailed in this manual is exclusively geared to special-
ists having qualifications in PLC programming, electrical specialists or persons
instructed by electrical specialists who are also familiar with the valid stan-
dards. WAGO Kontakttechnik GmbH & Co. KG declines all liability resulting
from improper action and damage to WAGO products and third party products
due to non-observance of the information contained in this manual.
1.1.3 Intended use
For each individual application, the components supplied are to work with a
dedicated hardware and software configuration. Modifications are only admit-
ted within the framework of the possibilities documented in the manuals. All
other changes to the hardware and/or software and the non-conforming use of
the components entail the exclusion of liability on part of WAGO Kontakttech-
nik GmbH & Co. KG.
Please direct any requirements pertaining to a modified and/or new hardware or
software configuration directly to WAGO Kontakttechnik GmbH & Co. KG.
Important comments 5
Application note
A302000
1.2 Range of validity
This application note is based on the stated hardware and software of the spe-
cific manufacturer as well as the correspondent documentation. This applica-
tion note is therefore only valid for the described installation.
New hardware and software versions may need to be handled differently.
Please note the detailed description in the specific manuals.
1.3 Symbols
Danger
Always observe this information to protect persons from injury.
Warning
Always observe this information to prevent damage to the device.
Attention
Marginal conditions must always be observed to ensure smooth operation.
ESD (Electrostatic Discharge)
Warning of damage to the components by electrostatic discharge. Observe the
precautionary measure for handling components at risk.
Note
Routines or advice for efficient use of the device and software optimisation.
More information
References to additional literature, manuals, data sheets and INTERNET
pages
6 Description
Application note
A302000
2 Description
This application note describes how to communicate with a MySQL database
directly, based on native MySQL protocol to transmit SQL-Statements.
SQL is the acronym for Structured-Query-Language(SQL) and defines stan-
dard command set to access or manipulate data like SELECT, INSERT,
UPDATE, DELETE inside a database.
Also defined are SQL commands to modify the structure of a database self, like
CREATE, DROP, ALTER, and more.
The focus of this application note points to the transfer of data between a
WAGO Ethernet-Controller and a MySQL database by SQL statements.
The easiest way to get running MySQL database is installing XAMPP, but any
other setup of MySQL above version 4.1 should work.
XAMPP is a free and open source cross-platform web server package, consist-
ing mainly of the Apache HTTP Server, MySQL database, and interpreters for
scripts written in the PHP and Perl programming languages.
This application note only utilize the MySQL database, webserver and scripting
engines are not used.
The examples of this application note requires a suitable database structure for
operating. Read next how to setup the needed environment.
Set up Environment 7
Application note
A302000
3 Set up Environment
This chapter guides you step-by-step to your own MySQL solution.
3.1 Install XAMPP
Download the XAMPP package for your operating system from
http://www.apachefriends.org/en/xampp.html and follow the installation in-
structions. This application note is created on a Microsoft operating system.
Please keep in mind that XAMPP provides an easy to install system for devel-
oping and testing of web solutions. Care should be taken when applying secu-
rity settings for your own application.
Test: After Apache starts, open the URL http://localhost or http://127.0.0.1
and examine all of the XAMPP examples and tools.
To check that all required services are running, go to the XAMPP menu and
press Status. You should see all needed services activated (PHP, MySQL).
The next step is creating the specific database for our examples.
8 Set up Environment
Application note
A302000
3.2 Create database testdb
Open the MySQL administration tool by typing URL http://localhost or
http://127.0.0.1 and click the PhpMyAdmin item in the XAMPP menu.
Click on Databases to open the following dialog.
Insert the name of your new database and press the Create button.
In this application note, we will create a database called testdb.
Set up Environment 9
Application note
A302000
An empty database has been created.
The next step is to create tables inside the database. Switch to the tab Im-
port, and browse to the files:
- /Example01/Database/CreateTableExample01.sql
- /Example02/Database/CreateTableExample02.sql..
Press the Go button to create tables.
Now you should see the two tables atable and data.
Next step is to create a database account for our WAGO-Ethernet-Controllers.
10 Set up Environment
Application note
A302000
3.3 Create database account
It is not a good idea to use the default admin-account inside the PLC-program.
Better is using an additional account with limited privileges.
Use link Rights to open the Current User view.
Use link Add user to to open the New User view.
Set up Environment 11
Application note
A302000
In this application note we expect a user with following settings.
Param Value: Description:
Username user. Name of database user account.
Password password Password of database user account
Access Any Host IP-Address,r hostname or placeholder Any_Host
Privileges SELECT,
INSERT,
UPDATE,
DELETE
Privileges define the the set of operations allowed for this
account.
Update the New User view.
Press the Go button to create the new database account.
Now the new database account is configured, but currently not active.
12 Set up Environment
Application note
A302000
3.4 Restart database or reload privileges
To activate the new database account you have to reload privileges.
This could be done by stopping and restart the whole database or use
phpMyAdmin to force reload of privileges.
To restart the whole database open the XAMPP Control Panel.
Press button Stop afterwards press Start.
Alternatively you can force reloading of privileges with link reload privileges
in phpAdmin.
The server is now configured and ready to use.
The library WagoLibMySql_03.lib 13
Application note
A302000
4 The library WagoLibMySql_03.lib
The library WagoLibMySql_03.lib provide function blocks to communicate
with MySQL-Database-Servers version 4.1 and above.
The principal item of this library are function blocks Execute and Query.
Function block MySql_Execute is designed for all SQL-Statements who do
not respond with a resultset, such as INSERT, UPDATE, DELETE,
CREATE,
ALTER, DROP and so, who just return OK or ERROR.
Function block MySql_Query is designed for SQL-SELECT-Statements who
respond with a resultset. The resultset are stored in an optimized format, use
function MySql_GetStringValue() to convert field data into any IEC-Type.
All non numeric SQL param values must be quoted with an apostroph().
Because apostroph() is also CoDesys-String-Start-End-Identifier.
To use a apostroph() inside a CoDeSys-String type $27 or $
Example:
(* Prepare SQL-Insert-Statement *)
asSqlStatement1[0] := 'INSERT INTO atable ';
asSqlStatement1[1] := '( aBool, aByte, aWord, aDint, aReal, ';
asSqlStatement1[2] := ' aString, aDT, aTime, aUdint ) ';
asSqlStatement1[3] := 'VALUES ';
asSqlStatement1[4] := '( TRUE, 17, 32333, 1111111, 1.42, ';
asSqlStatement1[5] := ' $'Hallo$', $'2010-08-13 11:56:42$', ';
asSqlStatement1[6] := ' $'13:12:57$', 62222 )';
asSqlStatement1[7] := ''; (* End of SQL-Statement *)
This library make extensive use of global variables to allow optimize memory
usage depending customer requirements.
You can modify the "length" and number of elements in "asSqlStatement" by
hiding libraries global constants with global constants of same name in your
project:
- gcMySql_iSqlUpperBound:
Defines the UpperBound of "asSqlStatement",to provide an SQL
statement as"ARRAY [0..UpperBound] OF STRING(Size)"
- gcMySql_iSqlLength:
Defines the Size in byte of an array element of "asSqlStatement",
to provide an SQL statement as "ARRAY [0..UpperBound] OF
STRING(Size)".
For details see library description ml0600e WagoLibMySql_02.pdf.
14 Example_01
Application note
A302000
5 Example_01
Open WagoLibMySql_Example01.pro in CodeSys 2.3.
You will find a PLC program written in FUP, who uses function blocks:
- MySql_Login to open a database connection.
- MySql_Execute for insert and update of data in table data.
- MySql_Query is used to read back the complied content of table data.
- MySql_GetStringValue() is used to convert QueryData into IEC-datatypes.
- MySql_Logout to close the database connection
Update inputs sHost, sUsername, sPassword depending your environment.
To let the example do something toggle input xStart by double click and
write it with [Ctrl] + [F7].
Information about current state of operation can be found at output sStatus.
Example_02 15
Application note
A302000
6 Example_02
Open WagoLibMySql_Example02.pro in CodeSys 2.3.
You will find a PLC program written in ST, who uses function blocks:
- MySql_Login to open a database connection.
- MySql_Execute for insert and update of data in table data.
- MySql_Query is used to read back the complied content of table data.
- MySql_GetStringValue() is used to convert QueryData into IEC-datatypes.
- MySql_Logout to close the database connection
Update inputs sHost, sUsername, sPassword depending your environment.
To let the example do something toggle input xDoIt by double click and
write it down, with [Ctrl] + [F7].
Information about current state of operation can be found at output sStatus.
WAGO Kontakttechnik GmbH & Co. KG
Postfach 2880 D-32385 Minden
Hansastrae 27 D-32423 Minden
Telefon: 05 71/8 87 0
Telefax: 05 71/8 87 1 69
E-Mail: [email protected]
Internet: http://www.wago.com