Matlab联合Vissim协同仿真时报错“创建服务器失败”——问题解决方案


前言

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 相同的功能)


总结

这个问题困扰了我差不多快一个月,走了不少弯路。这段时间一直在各平台上搜索提问,翻墙上外网找答案,还给一位同样做仿真的陌生学长发邮件询问,感谢这位学长为我提供的帮助。几经波折,终于解决这个问题。

于我而言,整个探寻问题解决方案的过程、运行时看到 Matlab 正忙的紧张以及能够跑通代码后的激动,这些都是我科研路上宝贵的经历,弥足珍贵,令我受益匪浅。

虽然得到答案后会觉得“啊,原来是这么简单的原因”,但是在自己探索的时候,由于网上资料比较少真的会很抓狂,幸好问题得到圆满的解决。写此文章分享给大家,希望能够给遇到同样问题的同学提供一些帮助。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值