El almacenamiento de datos de wincc actualmente se almacena principalmente en la base de datos, y las bases de datos principales actuales son principalmente bases de datos de SQL Server y Access. Este artículo trata principalmente sobre cómo escribir datos entre las bases de datos de wincc y Access.
entrada | descripción |
---|---|
Entorno operativo | wincc7.5 SP1 |
Base de datos de acceso | Edición 2010 |
Ejecutar pantalla
Procedimientos de operación
Crear una tabla de base de datos de Access
1. Cree un archivo de base de datos de Access, nombre de archivo: Wincc_Access_Data.accdb
2. Cree una tabla de base de datos, nombre de tabla: DataTest, los campos de la tabla son: Data1, Data2, Data3, Data4, Data5, Data6, Data7, Data8. El tipo de datos es número. Como se muestra en la figura:
3. Coloque el archivo de base de datos de Access creado en el directorio raíz del disco.
Pantalla de configuración
1. Wincc crea una pantalla, el nombre de la pantalla es DataWrite.Pdl
2. Crea una variable de datos, crea 8 variables de datos en la lista de variables
3. Nuevos objetos de control en la pantalla.
Objeto | nombre |
---|---|
Texto estático | defecto |
Botón | defecto |
Dominio de entrada y salida | defecto |
Generación de datos
Los datos probados se generan mediante una función aleatoria; consulte "Generación de datos aleatorios de Wincc" para conocer el método de generación específico.
Escritura de datos
La función de escritura de datos se realiza escribiendo el script del evento del botón. El script es el siguiente:
Sub OnClick(Byval Item)
'1.测试时,注意不要讲Access数据库中的字段设置为中文,最好用英文表示
'2.创建Access数据库文件时,会出现两种文件后缀,mdb和accdb,其实这两个都是Access数据库的文件格式,只不过代表不同版本的Access数据库,mdb为07版以前(不包括07版)。accdb为07版以后。因此对于不同的文件后缀,Provider链接字符串也有所区别。
'mdb:Provider=Microsoft.Jet.OleDb.4.0
'accdb:Provider=Microsoft.ACE.OLEDB.12.0
'3.创建数据库时,不要将数据库文件放到中文目录下,尽量放到根目录或者根目录下的英文文件夹,路径不要太长。
'4.sql语句查询的数据和保证正确。
'5.wincc脚本定义的变量要和实际使用的保持一样。
Dim conn,comd
Dim strConnectionString,strSQL
Dim Data1,Data2,Data3,Data4,Data5,Data6,Data7,Data8
Data1= HMIRuntime.Tags("Data1").Read
Data2= HMIRuntime.Tags("Data2").Read
Data3= HMIRuntime.Tags("Data3").Read
Data4= HMIRuntime.Tags("Data4").Read
Data5= HMIRuntime.Tags("Data5").Read
Data6= HMIRuntime.Tags("Data6").Read
Data7= HMIRuntime.Tags("Data7").Read
Data8= HMIRuntime.Tags("Data8").Read
strConnectionString = "Provider=MSDASQL;DSN=wincc_DB;UID=;PWD=;" '//wincc_DB为ODBC数据源
strSQL = "INSERT INTO DataTest(Data1,Data2,Data3,Data4,Data5,Data6,Data7,Data8)VALUES("&Data1&","&Data2&","&Data3&","&Data4&","&Data5&","&Data6&","&Data7&","&Data8&")" '创建sql语句,其中ID等为字段名,machineinfo为数据库表名
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = strConnectionString
conn.Open
Set comd = CreateObject("ADODB.Command")
With comd
.ActiveConnection = conn
.CommandText = strSQL
End With
comd.Execute
Set comd = Nothing
conn.Close
Set conn = Nothing
End Sub
Precauciones
- Al crear una cadena de enlace, primero debe crear una fuente de datos ODBC. Para obtener métodos de creación específicos, consulte "Creación de fuentes de datos ODBC para sistemas Windows".
- Al crear una base de datos, no coloque el archivo de la base de datos en el directorio chino, intente colocarlo en el directorio raíz o en la carpeta en inglés debajo del directorio raíz, y la ruta no debe ser demasiado larga.
- Se garantiza que los datos consultados por la declaración SQL son correctos.
- Las variables definidas por el script wincc deben seguir siendo las mismas que las que se utilizan realmente.