技术论坛

 回复:怎么才能把Excel里面的数据导入WINCC中

返回主题列表
作者 主题
eshou0779
新手

经验值:48
发帖数:20
精华帖:0
楼主    2011-07-04 10:45:32
主题:怎么才能把Excel里面的数据导入WINCC中
客户需要用Excel写入参数到WINCC中,看了很多例子,很多都是只有把wicc里面的数据导入Excel中的,求DDE或者OPC的实际方法,能尽量的详细点最好,谢谢了。
n次看你的背影
奇侠

经验值:7974
发帖数:2321
精华帖:73
14楼    2011-07-05 15:03:42
精华帖  主题:回复:怎么才能把Excel里面的数据导入WINCC中
楼主:我个人理解,越是做成傻瓜式,难度也就越大!按照你的思路,在下就提供一些东西给你参考一下吧!
1、你可以先做一个SetPointToPLC.xls文件,把你要设定的数据写到这个excel文件里面,保存到D盘的根目录里面。如下图:

2、在你WinCC画面上做个按钮,在这个按钮的鼠标事件里面写点C脚本:如下
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma code("Shell32.dll")//调用动态链接库
__object* pExcel = NULL; //建立 pExcel 指针 用来对 EXCEL 进行操作
HWND handle=NULL;
handle=FindWindow(NULL,"WinCC-运行系统 - ");
pExcel = __object_create("Excel.Application");
//pExcel->Visible = 0;//控制excel文件是否可见,当1时,excel文件可见.
pExcel->Workbooks ->Open ("d:\\SetPointToPLC.xls");
SetTagFloat("NewTag1",pExcel->Worksheets("sheet1")->Range("B2")->Value);//将excel文件B2里面的内容写到外部变量NewTag1
SetTagFloat("NewTag2",pExcel->Worksheets("sheet1")->Range("B3")->Value);//将excel文件B3里面的内容写到外部变量NewTag2
//如果要增加写到PLC里面的变量,在这里添加上面类似的语句。
pExcel->Workbooks->Close();//关闭文件
pExcel->Quit();//退出Excel
__object_delete(pExcel);
}
3、你如果要修改PLC里面变量的值,在excel文件里面对应变量的数据修改好,存盘、关闭excel文件;然后在WinCC上点击那个按钮时,不要有其它excel进程,切忌!以上脚本在WinCC ASIA V6.0中测试通过!
楼主:学电气、自动化的是要学些C、VB的!这样才能与时俱进啊!希望广大坛友们多补充、多指正!
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
youhm
至圣

经验值:13572
发帖数:4924
精华帖:81
15楼    2011-07-05 15:34:17
精华帖  主题:回复:怎么才能把Excel里面的数据导入WINCC中
我用VBS做的,表和楼上一样,第二行开始,写在修改按钮的VBS事件里

On Error Resume Next '此句必须有,防止无EXCEL进程时GetObject出错退出
Dim xlsname,xlapp,xlbook,xlsheet,isOpen,i,TagName,TagValue
xlsname="F:\123.xls" 'Excel文档路径
Set xlapp=GetObject(,"Excel.Application") '获取当前运行的Excel应用程序对象
If Typename(xlapp)="Application" Then 'Excel已打开,遍历工作薄查找对应文

档是否已打开
For Each xlbook In xlapp.Workbooks
If xlbook.FullName=xlsname Then
isOpen=True
Exit for
End if
Next
If Not isOpen Then '如果对应文档没打开则打开
Set xlbook=xlapp.Workbooks.Open(xlsname)
End if
Else '当前没有打开Excel程序则创建Excel应用程序并打开对应的文档
Set xlapp=CreateObject("Excel.Application")
Set xlbook=xlapp.Workbooks.Open(xlsname)
End if
Set xlsheet=xlbook.WorkSheets("Sheet1") '数据存放与表Sheet1,第一列为变量名,

第二列为变量值
For i = 2 To xlsheet.Range("A65536").End(3).Row '从第二行一直循环到最后一行
TagName=xlsheet.Cells(i,1).Value
TagValue=xlsheet.Cells(i,2).Value
' Msgbox TagName & vbcrlf & TagValue '测试显示第一列、第二列数据
HMIRuntime.Tags(TagName).Write TagValue '写入WinCC变量
Next
xlbook.Close 0 '关闭不保存文档
xlapp.Quit '退出Excel应用程序
Set xlsheet=Nothing
Set xlbook=Nothing
Set xlapp=Nothing
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。