- 1. 选型和安装
- 2. 入门
- 2.1 帮助文档
- 2.2 初次使用和S71200以太网通讯
- 2.3 博图winCC变量记录
- 2.4 Portal WinCC Prof硬狗
- 2.5 工业数据桥winCCIndustrialDataBridge
- 2.6 未找到许可证信息解决办法
- 3. 关键入口
- 4. 报警记录和数据记录
- 4.1 报警记录关联过程值
- 4.2 数据记录(用户归档/配方)
- 4.3 文本转语音(C读到变量,触发不了VB)
- 4.4 VBS脚本数据SQLServer,入库后触发更新库
- 5. 技巧
- 5.1 公共弹窗
- 5.2 把WINCC变量实时读写入excel
- 5.3 博图PLC300变量导出到经典winCC
- 5.4 SQLSERVER 启动sa用户登录
- 5.5 winCC移动复制画面
- 6. 发布客户端网页版
- 7. 通讯
VBS脚本数据SQLServer,入库后触发更新库
- 2023-02-03 15:04:54
- 微图
- 737
- 最后编辑:微图 于 2024-11-15 09:48:30
- 分享链接
存库脚本
'Sub cunNX( 表名 , RecordID , 设备名 , 时间 , 开度 , 电量 , 电流 , 风压, 速度 , 到PLC通断 )
Sub cunNX( tableN , RecordID , S_Bei_M , s_Jian , k_Du , d_Liang , d_Liu , f_Ya , s_Du , toPLC_T_D )
'vbs通过OLEDB连接SQL
'1.创建一个到数据库的 ADO 连接
Dim oConn
Set oConn = CreateObject("ADODB.Connection")
'连接本地SQL服务器
'Provider:指定驱动程序。integrated security=sspi:Windows身份认证。Persist Security Info:是否保存登录信息。Initial Catalog=库名:Data Source=数据库所在电脑名。
'oConn.ConnectionString="Provider=SQLOLEDB.1;integrated security=sspi ;Persist Security Info=false; Initial Catalog=SWJ; Data Source=2012R2FR"
'oConn.CursorLocation=3
'连接网络(或本地)SQL服务器
'Provider=指定驱动程序.1;Persist Security Info=False;data source=服务器IP地址 ;User ID=用户名;Password=密码;Initial Catalog=数据库名
oConn.ConnectionString="Provider=SQLOLEDB.1; Persist Security Info=False;data source=GUANLONG\WINCC ; User ID=sa; Password=22Rsgzyzq; Initial Catalog=NXCC"
'2.打开数据库连接
oConn.Open
'提示是否连接成功,打开后,oConn.state=1成功,=0失败
'MsgBOx oConn.state
'3.创建记录集
Dim oRecordSet
Set oRecordSet=CreateObject("ADODB.Recordset")
Dim strSQL
'计算明细即将插入行的本单序
strSQL ="with t as ( select 本单序=MAX(本单序)+1 from " &tableN &" where RecordID = " &RecordID &" ) "
'待插入的表和字段
strSQL = strSQL &" insert into " &tableN &" ( RecordID , Sequence , 本单序 , 设备名 , 时间 , 开度 , 电量 , 电流 , 风压 , 速度 , 到PLC通断 ) "
'插入的数据
strSQL = strSQL &" ( select " &RecordID &" , isnull(t.本单序,1) , isnull(t.本单序,1) , '" &S_Bei_M &"' , '"&s_Jian &"' , " &k_Du &" , " &d_Liang &" , " &d_Liu &" , " &f_Ya &" , " &s_Du &" , " &toPLC_T_D &" from t) "
Set oRecordSet=oConn.Execute(strSQL)
'4.从记录集提取您需要的数据
'5.关闭记录集
Set oRecordSet=Nothing
'6.关闭连接
oConn.Close
Set oConn=Nothing
End Sub
调用测试
Dim s_Jian '现在时间 Dim y_Shu_RID1 '改造前运数RecordID Dim y_Shu_RID2 '改造后运数RecordID Dim d_Cai_RID1 '改造前运数RecordID Dim d_Cai_RID2 '改造后运数RecordID y_Shu_RID1 = 101 y_Shu_RID2 = 106 d_Cai_RID1 = 105 d_Cai_RID2 = 107 Dim S_Bei_M Set S_Bei_M = HMIRuntime.Tags("设备名") Dim k_Du Set k_Du = HMIRuntime.Tags("数据_开度") Dim d_Liang Set d_Liang = HMIRuntime.Tags("数据_电量") Dim d_Liu Set d_Liu = HMIRuntime.Tags("数据_电流") Dim f_Ya Set f_Ya = HMIRuntime.Tags("数据_风压") Dim s_Du Set s_Du = HMIRuntime.Tags("速度") Dim k_Du_D1 Set k_Du_D1 = HMIRuntime.Tags("开度段") Dim k_Du_D2 '开度段2 Dim toPLC_T_D Set toPLC_T_D = HMIRuntime.Tags("@S7315@ConnectionStateEx") Dim t_Zhi Set t_Zhi = HMIRuntime.Tags("停止采集") s_Jian = Now S_Bei_M.Read k_Du.Read toPLC_T_D.Read k_Du_D1.Read d_Liang.Read d_Liu.Read f_Ya.Read s_Du.Read t_Zhi.Read '开度段2 k_Du_D2 = Int((k_Du.value/5)+0.89) 'Int是去尾,+0.89再去尾相当于进1 MsgBOx "开度段1:" &k_Du_D1.Value &" 开度: " &k_Du.value &" 开度段2:" &k_Du_D2 'If t_Zhi.Value<>1 Then '开度段2<>开度段1 ' If k_Du_D2 <> k_Du_D1.value Then '有新的开度往库里存入1行 'd_Cai_RID*,1改造前,2改造后 cunNX "段采表m" , d_Cai_RID2 , S_Bei_M.value , s_Jian , k_Du.value , d_Liang.Value , d_Liu.Value , f_Ya.Value , s_Du.Value , toPLC_T_D.value k_Du_D1.Write k_Du_D2 '记录上次采集开度段 ' T_cunNX "段采表m" , 112 , S_Bei_M.value , s_Jian , k_Du.value , d_Liang.Value , d_Liu.Value , f_Ya.Value , s_Du.Value , toPLC_T_D.value MsgBOx "插入成功" ' End If ' Sub cunNX( tableN , RecordID , S_Bei_M , s_Jian , k_Du , d_Liang , d_Liu , f_Ya , s_Du , toPLC_T_D ) ' cunNX "运数表m" , y_Shu_RID2 , S_Bei_M.value , s_Jian , k_Du.value , d_Liang.Value , d_Liu.Value , f_Ya.Value , s_Du.Value , toPLC_T_D.value ' T_cunNX "运数表m" , 111 , S_Bei_M.value , s_Jian , k_Du.value , d_Liang.Value , d_Liu.Value , f_Ya.Value , s_Du.Value , toPLC_T_D.value ' MsgBOx "插入成功" 'End If
SQLServer触发器
每插入1行,更新1行的时间间隔,电表差,以方便快速统计报表
create trigger 更新运数间隔秒电量差 on 运数表m for insert as begin --插入时执行条件 if( --数行 select count(*) from 运数表m where 本单序=(select max(本单序)-1 from 运数表m where RecordID=(select RecordID from inserted)) and RecordID=(select RecordID from inserted) and 间隔秒 is null)=1 begin --更新上一行间隔秒,电量差,inserted存插入的数,系统自带的表 update 运数表m set 间隔秒=Datediff( SS , 时间 , (select 时间 from inserted)) ,电量差=(select 电量 from inserted) - 电量 where 本单序=(select max(本单序)-1 from 运数表m where RecordID=(select RecordID from inserted)) and RecordID=(select RecordID from inserted) and 间隔秒 is null end end
create trigger 更新段采间隔秒电量差 on 段采表m for insert as begin --插入时无条件执行 if( --数行 select count(*) from 段采表m where 本单序=(select max(本单序)-1 from 段采表m where RecordID=(select RecordID from inserted)) and RecordID=(select RecordID from inserted) and 间隔秒 is null)=1 begin --更新上一行间隔秒,电量差,inserted存插入的数,系统自带的表 update 段采表m set 间隔秒=Datediff( SS , 时间 , (select 时间 from inserted)) ,电量差=(select 电量 from inserted) - 电量 where 本单序=(select max(本单序)-1 from 段采表m where RecordID=(select RecordID from inserted)) and RecordID=(select RecordID from inserted) and 间隔秒 is null end end
第三方工具链接winCC默认数据库
以帆软为例
(主机\WINCC,端口号空)
发表评论