文章目录
- 前言
- 一、问题概述
- 二、问题相关代码
- 三、运行结果及报错内容
- 四、解决思路及方法
- 总结
前言
COM 是一种实现软件之间进程间通信的技术,可以用能够处理 COM 对象的任何类型的语言进行编程。通过 Vissim COM,用户能够动态地操作大多数内部对象的属性。
使用 Matlab 进行联合仿真的主要优点之一是 Matlab 脚本语言比较简单,并且有很多内置函数可以自由调用。与其他编程语言相比,使用 Matlab 可以节省大量时间和精力。
一、问题概述
Matlab 联合 Vissim 协同仿真时,在 Matlab 中使用命令“actxserver”创建一个新的 COM 服务器,出现了“创建服务器失败”的问题。
二、问题相关代码
创建COM服务器代码如下:
%% 建立VISSIM的COM接口
vissim = actxserver('VISSIM.vissim.430');
三、运行结果及报错内容
错误使用 feval
创建服务器失败: 没有注册类
出错 actxserver (line 89)
h=feval(['COM.' convertedProgID], 'server', machinename, interface);
四、解决思路及方法
这样的错误意味着 Matlab 由于系统某些问题而无法连接到 Vissim,这是 Windows 产生的错误。 提供以下几种方法给大家尝试,也是我在解决问题过程中都试过的一些行之有效方法。
1.【杀毒软件】可能会导致出现此种问题,尝试关闭并检查是否可以解决该问题(我的电脑就是由于火绒杀毒软件导致无法运行代码,将火绒关闭后即可以运行)。
2.同时按住 windows+R 组合键打开“运行”,输入 “DCOMCNFG” 后打开组件服务,点击 DCOM 配置,查看 VISSIM_COMServer 是否安装好。
3.在 Vissim 软件的菜单栏尝试操作:帮助-点击注册COM服务器。我用的是 Vissim 4.3 版本,是没有找到“点击注册COM服务器”选项的,可能是版本的问题,也欢迎了解 Vissim 4.3 注册的同学与我一起交流。(咨询了一位学长的建议:Vissim 新版本的COM接口更加友好,也可以用开源软件SUMO替代 Vissim,它的 TraCI 接口可以实现和 COM 相同的功能)
总结
这个问题困扰了我差不多快一个月,走了不少弯路。这段时间一直在各平台上搜索提问,还给一位同样做仿真的陌生学长发邮件询问,感谢这位学长为我提供的帮助。几经波折,终于解决这个问题。