基于Siemens WinCC v7.5自动定时发送Excel电量数据至邮箱求助
WinCC v7.5 实现每小时自动导出电量数据并邮件发送(VB脚本方案)
1. 前置准备
- 确认WinCC v7.5已安装Office Automation组件(默认安装包含,若缺失需通过安装程序补充)
- 提前开启私人邮箱的SMTP服务,获取对应授权码(如QQ/163邮箱需在设置中开启POP3/SMTP,复制授权码替代登录密码)
- 确保WinCC变量管理器中,电量相关变量(如实时功率、累计电量)已正确配置并可正常读取
2. VB脚本实现(分导出Excel+邮件发送两个模块)
2.1 电量数据导出到Excel脚本
Sub ExportToExcel() Dim objExcel, objWorkbook, objSheet Dim strFilePath, dtNow Dim tagRealPower, tagTotalPower ' 生成带时间戳的文件路径(提前创建D:\WinCC_Data文件夹) dtNow = Now() strFilePath = "D:\WinCC_Data\PowerData_" & Year(dtNow) & Month(dtNow) & Day(dtNow) & Hour(dtNow) & ".xlsx" ' 初始化Excel对象 Set objExcel = CreateObject("Excel.Application") objExcel.Visible = False ' 后台运行不显示窗口 ' 创建工作簿与工作表 Set objWorkbook = objExcel.Workbooks.Add() Set objSheet = objWorkbook.Worksheets(1) ' 写入表头 objSheet.Cells(1, 1).Value = "采集时间" objSheet.Cells(1, 2).Value = "实时功率(kW)" objSheet.Cells(1, 3).Value = "累计电量(kWh)" ' 读取WinCC变量(替换为你实际的变量名) tagRealPower = HMIRuntime.Tags("Tag_Power_Real").Read() tagTotalPower = HMIRuntime.Tags("Tag_Power_Total").Read() ' 写入数据行 objSheet.Cells(2, 1).Value = dtNow objSheet.Cells(2, 2).Value = tagRealPower objSheet.Cells(2, 3).Value = tagTotalPower ' 保存并关闭Excel objWorkbook.SaveAs(strFilePath) objWorkbook.Close() objExcel.Quit() ' 释放对象资源 Set objSheet = Nothing Set objWorkbook = Nothing Set objExcel = Nothing ' 调用邮件发送函数 SendEmail(strFilePath) End Sub
2.2 邮件发送脚本
Sub SendEmail(strAttachmentPath) Dim objOutlook, objMail Dim strTo, strSubject, strBody, strSmtpAccount, strAuthCode ' 替换为你的邮箱配置 strTo = "your_private_email@xxx.com" ' 收件邮箱 strSubject = "水泥厂小时电量数据_" & Now() strBody = "附件为当前小时的电量采集数据,用于成本核算。" strSmtpAccount = "your_sender_email@xxx.com" ' 发件邮箱账号 strAuthCode = "your_email_auth_code" ' 邮箱授权码(非登录密码) ' 初始化Outlook对象 Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) With objMail .To = strTo .Subject = strSubject .Body = strBody .Attachments.Add(strAttachmentPath) ' 添加Excel附件 .SendUsingAccount = objOutlook.Session.Accounts.Item(strSmtpAccount) .Send() End With ' 释放对象资源 Set objMail = Nothing Set objOutlook = Nothing End Sub
3. 配置WinCC定时触发
- 打开WinCC全局脚本编辑器(Global Script Editor)
- 切换到「动作」选项卡,右键点击「周期动作」→「新建」
- 设置触发周期为3600秒(1小时),命名动作(如"PowerData_Export_Email")
- 在动作编辑区调用导出脚本:
Call ExportToExcel()
- 保存动作并激活WinCC项目,测试运行
4. 关键注意事项
- 运行WinCC的设备需安装Microsoft Office(至少Excel和Outlook组件)
- 测试阶段可将触发周期改为1分钟,验证数据导出与邮件发送正常后再改回1小时
- 若出现权限报错,右键以管理员身份运行WinCC编辑器
- 确保Excel保存路径的文件夹已提前创建,避免脚本因路径不存在报错
内容的提问来源于stack exchange,提问作者Tumenbayar Munkhjargal
相关产品推荐
相关产品推荐

