WinCC读取SQL数据库案例

使用场景:主线上有一台WinCC上位机,各单元有触摸屏,其中WinCC中存储用于自动化产线生产相关的配方数据,在自动生产模式时,将配方数据下发给各单元,在单元脱机模式时,单元内部触摸屏可选择要生产的产品类型(或手动输入),之后点击“获取设定配方值”按钮来请求位于WinCC中的配方数据。从而保证所有配方数据一个数据源,并保证单元在脱机模式下可根据需求选择不同的配方数据。

参考资料:

WINCC读写SQL数据库的例子

创建变量用于存储各单元脱机模式的配方值,数据类型与之前一致

创建变量用于存储各单元脱机模式的配方值,数据类型与之前一致。

创建一个按钮,当按钮状态变为1时,进行数据库配方数据读取。

 

创建全局脚本VBS

双击打开“VBS-Editor”

在“动作”一栏创建1个动作,名称如下

Option Explicit
Function action
Dim sSql
Dim sCom
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim data00,data01,data02,data03,data04,data05,data06,data07,data08,data09
Dim data10,data11,data12,data13,data14,data15,data16,data17,data18,data19
Dim dataselect
'下面的dataselect变量为在HMI所输入的型号查询变量,结合下面的SELECT语法,将输入与表中编号比较,等于则取出该行值。
dataselect=HMIRuntime.Tags ("Unit1_ReqType").Read

'连接数据库
Con="Provider=SQLOLEDB.1; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=CC_Test1_19_05_28_09_45_33R;Data Source=.\WINCC"
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString= Con
conn.CursorLocation=3
conn.Open
'Msgbox "。。。。。"
'读取数据库
'下面语句为查询数据库SELECT语句
sSql="SELECT * FROM UA#Scan WHERE Type = '"&dataselect&"';"
'标准的数据库操作属性和方法
Set oRs=CreateObject("ADODB.Recordset")
Set oCom=CreateObject("ADODB.Command")
Set oCom.ActiveConnection=conn
oCom.CommandType=1
oCom.CommandText=sSql
Set oRs=oCom.Execute
'此处为赋表中的列0-9值到变量data10-19
data10=oRs.Fields(0).Value
data11=oRs.Fields(1).Value
data12=oRs.Fields(2).Value
data13=oRs.Fields(3).Value
data14=oRs.Fields(4).Value
data15=oRs.Fields(5).Value
data16=oRs.Fields(6).Value
data17=oRs.Fields(7).Value
data18=oRs.Fields(8).Value
data19=oRs.Fields(9).Value
Set data00=HMIRuntime.Tags ("Unit1_ID")
Set data01=HMIRuntime.Tags ("Unit1_Type")
Set data02=HMIRuntime.Tags ("Unit1_Active")
Set data03=HMIRuntime.Tags ("Unit1_Draw")
Set data04=HMIRuntime.Tags ("Unit1_Weight")
Set data05=HMIRuntime.Tags ("Unit1_OP10Num")
Set data06=HMIRuntime.Tags ("Unit1_OP20Num")
Set data07=HMIRuntime.Tags ("Unit1_OP30Num")
Set data08=HMIRuntime.Tags ("Unit1_OP40Num")
Set data09=HMIRuntime.Tags ("Unit1_OP50Num")
'下面为将data10-19值写入data00-09中。
data00.read
data00.write data10
data01.read
data01.write data11
data02.read
data02.write data12
data03.read
data03.write data13
data04.read
data04.write data14
data05.read
data05.write data15
data06.read
data06.write data16
data07.read
data07.write data17
data08.read
data08.write data18
data09.read
data09.write data19
'ScreenItems("静态文本4").text = data1.read '读取数据在静态文本中输出
'ScreenItems("静态文本5").text = data2.read
'ScreenItems("静态文本6").text = data3.read
'数据库操作完的结束语句,为标准格式语句。
Set oRs=Nothing
conn.Close
Set conn=Nothing

End Function

之后给动作添加触发器

测试效果

当点击获取设定配方值时,其结果显示与配方表一致。

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值