| 作者 | 主题 |
|---|---|
|
eshou0779 新手 经验值:48 发帖数:20 精华帖:0 |
楼主
主题:怎么才能把Excel里面的数据导入WINCC中
客户需要用Excel写入参数到WINCC中,看了很多例子,很多都是只有把wicc里面的数据导入Excel中的,求DDE或者OPC的实际方法,能尽量的详细点最好,谢谢了。
|
|
n次看你的背影 奇侠 经验值:7974 发帖数:2321 精华帖:73 |
14楼
主题:回复:怎么才能把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楼
主题:回复:怎么才能把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 |