当前位置:
工控论坛
> >
产品
>
自动化软件
我要发帖
求助:MATLAB与组态王DDE通信
点击:
418
| 回复:
1
方 舟
关注
私信
精华:0帖
求助:0帖
帖子:4帖 | 1回
年度积分:0
历史总积分:13
注册:2007年8月03日
发表于:2007-08-03 16:20:00
楼主
各位大虾,小弟实在想不出来错误出在哪,特来求教
情况说明:组态王作为服务器,MATLAB作为客户。MATLAB读取组态王的某个变量,计算后返回给另一个变量。
在MATLAB中编写了如下程序:
clear;
chann=ddeinit('VIEW','TAGNAME');
if chann~=0
disp('DDE成功');
else
disp('DDE失败');
end;
b2='仿真PLC2.STATIC10';
a2=ddereq(chann,b2);
rc1=ddeadv(chann,b2,'a4=fun3(a2)','a2');
rc2=ddepoke(chann,'仿真PLC.STATIC20',a4);
ddeterm(chann);
组态王作为服务器,打开自带的范例kingdeom1。
添加两个仿真PLC,分别命名仿真PLC和仿真PCL2,对应的寄存器为STATIC20和STATIC10.
在数据词典里,设置原料罐液位和反应罐液位为I/O实型,分别对应仿真PCL2和仿真PCL。目地是用原料罐液位来控制反应罐液位。在命令语言内,将控制反应罐液位的语句全部注释掉。
根据我设想,启动组态王系统并在MATLAB运行上面那段程序后,MATLAB将读取“原料罐液位”的数据,然后经过fun3()这个函数的计算,然后把结果反馈给组态王的“反应罐液位”变量。
但是实际运行结果是,能够建立通道,也能够读取原料罐液位的数据,但是无法计算并返回反应罐液位的数值。在运行的系统中,仿真PLC2.STATIC10(原料罐液位)的数值是不断变化的,理论上ddeadv(chann,b2,'a4=fun3(a2)','a2')应该不断的执行a4=fun3(a2)语句才是。第一次捣鼓DDE,也不知道哪弄错了。
分享到:
收藏
邀请回答
回复楼主
举报
spaceman2008
关注
私信
精华:0帖
求助:0帖
帖子:0帖 | 7回
年度积分:0
历史总积分:16
注册:2008年10月19日
发表于:2009-11-20 12:57:51
1楼
你要建立DDE的连接,因为这时候组态王是作为客户端,Matlab做服务器的
回复
引用
举报
热门招聘
相关主题
自动化软件擂台第三期 自控软...
[2224]
WINCC7.0数据跟踪
[3291]
组态王能生成可执行文件吗?
[6853]
E+H的组态软件
[6718]
工控网中令人厌恶的现象!
[2669]
免费正版elecworks 2015电气...
[5729]
三菱PLC维修实例
[4947]
哪位知道OSI软件公司(生产PI...
[3882]
国内有没有可以做安卓人机界...
[2547]
labview和其他工控组态软件相...
[6977]
官方公众号
智造工程师
客服
小程序
公众号