单位用的版本是Wincc 5.1、系统是2000。项目已经编写完成,我只是在原来的基础上增加查看和修改过程值归档的功能。
问题:
1.最终目的是将过程值归档导出到EXCEL文件,能否提供具体的解决方案?
2.归档文件应该是数据库文件,能不能直接使用像SQL等数据库软件直接打开,EXCEL能不能直接编辑?
3.我用SQL浏览器查看Wincc 数据源的时候提示要用户名和密码,网上找到动态修改用户名和密码的C脚本,不过不详细,能否提供实例?
4.过程值归档文件在哪个文件夹里,ArchiveManager这个文件夹我没找。
5.过程值归档是不是只能按时间区分,能不能每次都生成一个独立的文件?
6.Wincc自带的Sybase Central4.0 打不开,是什么原因?
7.有相关资料的朋友请发邮件:ansheshou@hotmail.com
感谢的关注,接触Wincc时间不长,请帮忙的朋友尽量具体些,在此感谢你的帮助!
问题补充:
谢谢,我在论坛找不到 C 关于数据库操作的脚本。能帮忙来个连接吗?
现在非常郁闷,你们觉得很简单的问题 ,我没有接触过 根本找不到资料 关于C 对 数据库 以至对 EXCEL 的调用。能给个资料的连接吗 别说那里那里有。
最佳答案
将变量导出到excel可用这两种方式:
1)内部变量可以这样保存到Excel:
objExcelApp.Cells(2,7).Value=HMIRuntime.Tags("temperature ").read
如果temperature是外部变量,是否也可以这样读取保存。
2)通过vb读取变量保存到excel
vb变量读取可通过dde或opc
提问者对于答案的评价:
谢谢大家的帮助 分数给级别低的同志了 不介意吧!
下面是我写的脚本 看了很多帖子 最后实现的东西 希望对后来者有所帮助
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma code ("kernel32.dll")//调用动态链接库
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code ()
#pragma code("Shell32.dll")")//调用动态链接库
VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);
#pragma code()
char FileName[20] = "";
SYSTEMTIME sysTime;
__object* pExcel = NULL; //建立 pExcel 指针 用来对 EXCEL 进行操作
HWND handle=NULL;
handle=FindWindow(NULL,"WinCC-运行系统 - ");
GetLocalTime(&sysTime);
sprintf(FileName,"e:\\%d-%d-%d.xls",sysTime.wYear,sysTime.wMonth,sysTime.wDay);
pExcel = __object_create("Excel.Application");
pExcel->Visible = 1;
pExcel->Workbooks ->Open ("e:\\book1.xls");
pExcel->Worksheets("sheet1")->Range("A1")->Value=GetTagFloat("T46"); //返回类型:float
pExcel->Worksheets("sheet1")->Range("A2")->Value=GetTagFloat("T47");
pExcel->ActiveWorkbook->SaveAs(FileName);
pExcel->Workbooks->Close();
pExcel->Quit();
__object_delete(pExcel);
还有就是 数据在 EXCEL 里自动换行 可以通过全局脚本 触发事件来解决 现在还没实现 等实现了我再贴出来
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc278050.html