O armazenamento de dados do wincc é atualmente armazenado principalmente no banco de dados, e os bancos de dados principais atuais são principalmente bancos de dados SQL Server e Access. Este artigo é principalmente sobre como gravar dados entre os bancos de dados wincc e Access.
entrada | Descrição |
---|---|
Ambiente operacional | wincc7.5 SP1 |
Banco de dados de acesso | Edição 2010 |
Tela de execução
Procedimentos operacionais
Crie uma tabela de banco de dados do Access
1. Crie um arquivo de banco de dados Access, nome do arquivo: Wincc_Access_Data.accdb
2. Crie uma tabela de banco de dados, nome da tabela: DataTest, os campos da tabela são: Data1, Data2, Data3, Data4, Data5, Data6, Data7, Data8. O tipo de dados é um número. Conforme mostrado na figura:
3. Coloque o arquivo de banco de dados Access criado no diretório raiz do disco.
Tela de configuração
1. Wincc cria uma tela, o nome da tela é DataWrite.Pdl
2. Crie uma variável de dados, crie 8 variáveis de dados na lista de variáveis
3. Novos objetos de controle na tela.
Objeto | nome |
---|---|
Texto estático | predefinição |
Botão | predefinição |
Domínio de entrada e saída | predefinição |
Geração de dados
Os dados testados são gerados por função aleatória, consulte "Wincc Random Data Generation" para o método de geração específico
Gravação de dados
A função de gravação de dados é realizada escrevendo o script do evento do botão. O script é o seguinte:
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
Precauções
- Ao criar uma string de link, você precisa primeiro criar uma fonte de dados ODBC. Para métodos de criação específicos, consulte "Criação de fontes de dados ODBC para sistemas Windows"
- Ao criar um banco de dados, não coloque o arquivo do banco de dados no diretório chinês, tente colocá-lo no diretório raiz ou na pasta em inglês sob o diretório raiz, e o caminho não deve ser muito longo.
- Os dados consultados pela instrução sql têm a garantia de estar corretos.
- As variáveis definidas pelo script wincc devem permanecer iguais às realmente usadas.