【问题标题】:OPC Server: Start Stop Pause getData(again use) DYMOLA MATLABOPC Server: Start Stop Pause getData(再次使用) DYMOLA MATLAB
【发布时间】:2020-11-12 11:56:06
【问题描述】:

我正在使用 Dymola OPC 服务器

DYMOLA 有这么多标签,可以使用 SimControl.Run、SimControl.Stop 等进行控制

这是我用 MATLAB 写的

hostInfo = opcserverinfo('localhost');
da = opcda('localhost','Dymosim.OPCServer.1');
connect(da);
fprintf("CONNECTED\n");
grp=addgroup(da,'Demo');
itmIDs={'ModelVariables.Tco','ModelVariables.der(Tco)'};
itm=additem(grp,itmIDs);
area=additem(grp,{'ModelVariables.Area'});
set(grp,'UpdateRate',0.2,'RecordsToAcquire',50);
start(grp);
wait(grp);
[logIDs,Tco]=getdata(grp,'double'); // PREVIOUS ONE
Now I want to change/write  value to area so what I did is this
write(area,23);

现在我想重新登录或获取数据

NEWTco=read(itm,'device').Value; //using This I can read one instance
[NewlogIDs,NewTco]=getdata(grp,'double');// GIVES ERR

【问题讨论】:

  • 请说出为什么投了反对票,这样我下次可以做得更好,
  • 我不知道谁投了反对票,但从 OMShell 运行 Dymosim 似乎很奇怪。而且该模型没有输入,因此不清楚您是指使用 OPC 更改参数还是有实际输入。
  • 如果我理解你想改变模型的初始条件?如果是这样,最简单的方法是添加其他参数,然后将它们设置在初始方程块中或使用 start=
  • 非常感谢@HansOlsson 在查看和阅读更多内容后,我到了这一点并被困在这里,
  • 似乎有点不幸的时机,但 Dymola 2021x 停止了 OPC 支持:3ds.com/fileadmin/PRODUCTS/CATIA/DYMOLA/PDF/… -> 第 46 页,第 3.6.4 节

标签: matlab opc dymola


【解决方案1】:

写这篇文章帮助我解决了这个问题

grp2=addgroup(da,'Demo2');
Run=additem(grp2,{'SimControl.Run'});
Status=additem(grp2,{'SimControl.Status'});
Stop=additem(grp2,{'SimControl.Stop'});
Pause=additem(grp2,{'SimControl.Pause'});

RunStatusBefore=read(Run,'device');
StatusBefore=read(Status,'device').Value;
StopStatusBefore=read(Stop,'device');
PauseStatusBefore=read(Pause,'device');

write(Initialize,1);  //INITITALIZE
write(Run,1);  // RUN
write(Stop,1);  // STOP
write(Pause,1);  // PAUSE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    相关资源
    最近更新 更多