Matlab NX MCD联合仿真 OPCDA通讯
所用到的软件
OPC服务器:MatrikonOPCExplorer
Matlab2021b
NX1965
注:本文只是记录一下如何成功连接,对OPC、Matlab、NX MCD无详细的介绍,若想更详细的了解,可参考其他博客
最后实现的效果是Matlab simulink和MCD中数据可以实时显示,包括Matlab给MCD一个信号,MCD给Matlab一个信号。
更新(2022.6.5)
1.MatrikonOPCExplorer 这个OPC服务器并不是那么好下载,并且在安装过程中会提示.NET Frmaework 3.5 Features cannot be installed on this operating system。 我将OPC服务器上传到资源,安装过程提示的问题,可以百度自行解决,非常简单,不再赘述。
2.关于simulink中OPC读和写这两个模块,
WRITE 写 这意思应该是OPC读到了matlab中的数据,然后写下来了,写在了OPC服务器端
READ 读 这意思应该是OPC里面有什么,matlab从里面读出来。
第一步:下载MatrikonOPCExplorer
下载成功以后,进行安装,一直点next就行。安装完成之后,打开MatrikonOPC Server for Simulation,右键Alias Configuration,新建一个Group。
新建之后,将会出现一个New Alias 1 组,建议不用改名称,默认这个就好。
然后在右侧添加数据,双击Name下面的单元格即可。包括名称和其类型的设置。我设置一个a和b,a是matlab给MCD的,b是MCD给matlab的,类型都选择双精度。
数据添加完成之后,如上图所示,然后点击红色框中的菜单,等待出现以下界面即可。按照步骤将a和b分别加入。
出现以下界面,那么OPC服务器这边即设置完成,接下来将介绍matlab和opc建立通讯。
第二步:Matlab和OPC通讯
1、程序段
da = opcda('localhost','Matrikon.OPC.Simulation.1');%选择本地端 和OPC服务器建立通讯
connect(da); %连接
grp = addgroup(da);%添加组,一个组里面可以有多个对象。
item1 = additem(grp,'New Alias 1.a');%添加组里面的项,上文中说默认用New Alias 1,此处的代码一直是这样就行
item2 = additem(grp,'New Alias 1.b');%如果你更改了组的名字,在这里修改成你自己的就可以了。
直接运行上述代码,现在工作区中产生这些设置的变量,后续在simulink中用到。
2、simulink中搭建
常用这三个,一个OPC配置,一个读,一个写。将这三个都拖进来,然后我用了一个constant模块,Matlab给MCD发一个常量,然后用了一个scope,用来显示MCD给Matlab的数值,连接到读的V端口。
第一步先配置OPC Config
第二步,配置读和写的模块。
示意读模块的步骤,写是一样的。读的时候只读的a,把b移除就可以。(其实在这块的时候,就体现了一个组多个对象的不好之处,如果你一个组一个对象,那么再添加项的时候,你就不用移除了,在你开始选择组的时候,就确定了组里面有什么数据,后续可以专门设置几个组,比如第一个组都是读的数据,第二个组都是写的数据,就很方便了,我也是第一次写,写到这里了才觉得我这样设置有点麻烦了,可能唯一的好处就是matlab代码段里面只有一个组显得简洁吧。二者不可兼得啊 ,哈哈哈 如果有更简单的办法,还请告诉我)
此时,把simulink时间设置为inf,运行simulink,就可以在MatrikonOPCExplorer看到a的值,我设置的是222。
第三步:NX MCD和OPC通讯
①在电气栏,新建信号,一个输入,一个输出。类型都是双精度。
②在自动化一栏,先设置外部信号配置,再设置信号映射。
把这i两个信号都添加到查看器,以便观察。
simulink和MCD中都点播放,然后就可以看到通讯成功。
signal0是matlab给MCD的,signal1是MCD给matlab的。打开matlab的示波器,就可以看到MCD给的信号,因为我MCD中没有任何模型,只是建立了一个信号,初始值设置为0,所以这块显示是0,在上面的MatrikonOPCExplorer也可以看出signal1是0。
可以改变simulink中constant的值来再次验证此操作正确。
我将constant的值改为20211203,那么MCD中的值就会变为20211203。如下图所示,OPC作为桥梁。
然后我在MCD中先暂停,改变我signal1的初始值为2021,再次运行。可看到如下效果
至此,matlab和NX MCD通过OPC联合仿真的具体操作已经结束,没有放具体案例,只是简单介绍如何实现,大家可以根据自己实际需要,进行仿真即可。
记录一下自己的学习过程,此处特别感谢我的师兄在2021年12月2日晚上给我的讲解,此文内容均是师兄讲解,我作一个学习记录,方便后续对实际案例的操作。
文中可能会有一些错误,大家可以提出疑问,然后一起解决。初学者,至此结束,后续有修改再来。