You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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定时触发

  1. 打开WinCC全局脚本编辑器(Global Script Editor)
  2. 切换到「动作」选项卡,右键点击「周期动作」→「新建」
  3. 设置触发周期为3600秒(1小时),命名动作(如"PowerData_Export_Email")
  4. 在动作编辑区调用导出脚本:
Call ExportToExcel()
  1. 保存动作并激活WinCC项目,测试运行

4. 关键注意事项

  • 运行WinCC的设备需安装Microsoft Office(至少Excel和Outlook组件)
  • 测试阶段可将触发周期改为1分钟,验证数据导出与邮件发送正常后再改回1小时
  • 若出现权限报错,右键以管理员身份运行WinCC编辑器
  • 确保Excel保存路径的文件夹已提前创建,避免脚本因路径不存在报错

内容的提问来源于stack exchange,提问作者Tumenbayar Munkhjargal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 10:03:32