Matlab与InTouch问直接通讯的实现
肖 民,惠 磊
(江苏科技大学船舶与海洋工程学院,江苏镇江212003)
摘要:为解决以往Matlab与InTouch间数据通讯必须利用第3方软件进行接口编程的难题,在对
Matlab和InToueh软件所提供的DDE接口研究的基础上,以Matlab为客户端、InTouch做服务器,
在Matlab环境下,基于DDE技术分别用M文件和S函数两种不同的方法,首次实现了Matlab和
InTouch之间的直接通讯.文中给出了用于实现Matlab和lnToueh之间直接通讯的M文件和S函数
的实例.实例证明,两种方法实现方便,并能支持多输入多输出模型的数据交换.
关键词:Matlab;InTouch;通讯;软件;接口;DDE
中图分类号:TP311.1文献标志码:A 文章编号:1671—7775(2009)01—0062—04
DirectcommunicationbetweenMatlabandlnTouch
X/aoMin,HuiLei
(SchoolofNavalArchitectureandOceanEngineering。JiangsuUniversityofScienceandTechnology,Zhenjiang,Jiangsu212003,China)
Abstract:Inordertosolvetheproblemthatthethirdsoftwaremustbeusedtorealizethecommunication
betweenMatlabandInTouch,andbytakingMatlabasclientterminalandInTouchasserver,two
differentmethodsbasedonDDEtechnology,namedm—filemethodands—functionmethod,were
developedtorealizethedirectcommunicationbetweenMatlabandInTouchforthefirsttime.The
examplesofM—.fileandS—.functiontorealizethecommunicationbetweenMatlabandInTouchwere
provided.Itisprovedthatthistwomethodsareeasytoberealizedandcansuppofldataexchange
betweenMIMOmodels.
Keywords:Matlab;InToueh;communication;software;interface;DDE
InTouch是美国Wonderware公司推出的基于
Windows平台的组态软件,是一个基于图形用户界
面的软件开发工具,具有强大的图形开发和动画设
计功能.此外,该软件还具有强大的监控功能,如数
据采集和管理、动态数据交换、在线和历史趋势图显
示、报警和事件自动记录等.因此,利用InToueh可
以设计功能完善且优美的监控和操作界面;但该软
件在科学计算方面的功能比较差.
Matlab由MathWorks公司推出,是融科学计
算、图形可视、文字处理于一体的高水平软件,已经
成为国际控制界公认的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
计算软件.它具有强大
的计算功能,且编程效率很高,还带有丰富的工具
箱,覆盖了通讯、自动控制、信号处理、动态系统仿
真、财经等众多领域.虽然Matlab是个完整的程序
开发和数据处理软件,但它在人机界面设计方面却
显得有些力不从心.
因此,实现InTouch和Matlab的联合,将两者的
优点有机地结合起来非常有意义,也很有实用价值.
虽然InTouch和Matlab都提供了DDE,OLE,ActiveX
等接口,但目前它们之间并没有实现直接通讯,多数
是通过第3方软件(VB,C++等)开发接口程序¨j
实现间接通讯.
收稿日期:2007一07一19
基金项目:江苏省船舶先进设计制造技术蓖点实验宅开放研究基金资助项目(CJ0706)
作者简介:肖 民(1969一),女,湖北刷州人,教授(xiaomin._just@126.COrn)。主要从事动力机械性能优化与计算机仿真研究.
惠磊(198I一),男,山东f】照人,硕士研究生(huilei007@yahoo.com.ca),主要从事轮机系统计算机仿真与监测控制研究
万方数据
63
文中基于DDE技术,在Matlab环境下开发程
序,用两种不同的方法首次在不借助第3方软件的
情况下,实现Matlab与InTouch之间的直接通讯.
1 DDE接口
DDE(dynamicdataexchange)动态数据交换旧J
是进程间的通讯方法.DDE使用共享内存来实现进
程之间的数据交换,使用
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
达到传递数据的同步.
DDE协议是~组规则集,所有的DDE应用程序都
必须遵循.DDE应用程序分为4种类型:客户、服务
器、客户/服务器、监视器.客户应用程序从服务器应
用程序请求数据或服务;服务器应用程序响应客户
应用程序的数据或服务请求;客户1111曼务器应用程序
既是客户应用程序也是服务程序;监视器应用程序
可解释所有的DDE应用程序和DDE消息,但不能
执行它们.DDE会话发生在客户应用程序和服务器
应用程序之间.
DDE应用程序采用3层识别系统从其他的
DDE应用程序识别它们本身,这3层是:应用程序
名(application)是进行DDE对话的双方名称;主题
(topic)是被讨论的数据域;项目(item)是被讨论的
特定数据对象.通过3层识别进行初始化后,便町进
行会话的交换,交换方法有3种:冷链(coldlink),
由客户申请数据,服务器发送数据;温链(WalqTI
link),当服务器数据有变化时,服务器通知客户,再
由客户来取数据;热链(hotlink),服务器数据有变
化时,服务器直接把数据送给客户,由客户对这些数
据进行处理.
InToueh既可以作为服务器也可以作为客户
端【3。4J.当作为服务器时,若另一Windows应用程序
从InTouch中请求数据,它必须知道3个L/O地址
项:应用程序名(view)是包含指定数据元素的In—
Touch运行程序;主题名(tagname)是每次在In-
Touch数据库中读写标记名时使用的名称;项目名
(actualtagname)是在lnTouch标记名字典中为项目
定义的实际标记名.当InTouch作为客户端时,它提
供的DDE函数有形形E石ec以e,WWPoke,WWRequest.
其中,WWExecute将要发送的命令字符串发送到指
定的应用程序和主题;WWPoke将TextValue的值被
发送到指定的应用程序、主题和项目,必要时使用
TringFromIntg()或StringFromReal()函数对其进行
转换;WWRequest将特定应用程序、主题和项目中的
DDE值将返同给ValueMsg—Tag,值将作为字符串返
回给消息型标记,如果该值为一个数字,可以使用
StringToIntg()或St矗ngToReal()函数对其进行
转换.
Matlab同样既可做服务器也可做客户端”J.表
l为Matlab做服务端所提供的接口,表2为Matlab
做客户端所提供的接口函数.
表1 Matlab做服务端所提供的接口
Tab.1InterfaceprovidedbyMatlab8Sserver
表2 Matlab做客户端所提供的接口函数
Tab.2InterfacefunctionsprovidedbyMatlabascHent
函数 功能
ddeadv(ch。Item,cb)
ddeexec(ch,ong)
ch=ddeinit(鲫,tp)
ddepoke(ch,Item,dt)
dt=ddereq(ch,Item)
ddeterrn(ch)
ddeunadv(ch。舵m)
借助旃通道,在Matlab与服务器应用程序问建屯DDE热连接
借助娩通道,向服务器发送请求执行的指令cmd
为Matlab与"服务器就印话题创建对话通道矾
借助c矗通道,Matlab向服务器的具体位置ltem发送数据出
借助如通道,Matlab从服务器的具体位置hem处索取数据,并赋给变量df
关闭对话通道如
放弃如通道为Item变化所搭建的热连接
万方数据
2直接通讯的实现
InTouch和Matlab都既可以做客户端又可以做
服务器.由于InTouch提供的脚本程序中函数较少,
函数的应用功能远不如Matlab提供的强大,且提供
的DDE接口函数,也没有Madab提供的函数应用
方便.因此,文中采用Matlab做客户端、InTouch做
服务器∞。7J,分别采用M文件和s函数两种不同的
方法来实现二者之间的通信.图1为InTouch和
Matlab程序之间的通讯.
图1 InTouch和Matlab程序之间的通讯
Fig.1CommunicationbetweenInTouchandMatlab
下面通过具体的实例阐述如何实现InTouch和
Matlab之间的直接通讯.
(1)实例:在Matlab环境里将InTouch实时采集
到的电流和电压信号相乘,然后将得到的瞬时功率
值返回给lnTouch。
(2)方法一:采用M文件实现InTouch与Matlab
间的通讯¨1.
首先建立InTouch与Matlab之间的会话通道,
然后Matlab通过循环不断采集InTouch中的数据并
向InTouch发送数据,实现它们之间的数据交换.
chann=ddeinit(’view’。’tagname’)
whileswitch=1
pause(0.01)
rc=ddereq(chann,7current’)
肋:ddereq(chann,’voltaga’)
W=re木聊
ra=ddepoke(chann,’power7,W)
end
ddeterm(chann)
M文件编写比较简单,但与InTouch通讯时要
通过循环来进行数据采集和交换,效率比较低,并且
不能和Simulink紧密地结合.如果用s函数来实现
InTouch与Matlab的通讯,则能很好地与Simulink
结合起来,并可以充分利用Simulink的其他工具箱.
(3)方法二:采用S函数实现InTouch与Matlab
通讯一“⋯.
S函数由一种特定的语法构成,它通过在特定
时间调用对应的s函数功能模块来完成不同的任
务.表3为S函数功能模块.它调用例程函数的顺序
通过标志Hag来控制.图2为S一函数的工作
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图,由图可见各仿真阶段的标志值Flag、变量值及
对应仿真例程.
表3 S函数功能模块
Tab.3S—functionfunctionalmodular
延四一黝Flag=燃O≯厂
怒勰嬲ltF删lag=4L radllniti螂alizeSample绷ttmesI
生翠生J吐‰卤t磊缸
蜜三曼卤吐勰拗捃
图2 S一函数流程
Fig.2S—functionflowchaa
使用S函数实现InTouch与Matlab通讯,是在
Simulink环境下进行的,它分为两个模块,一个是
Matlab采集lnTouch中的数据,另一个是Matlab向
InTouch发送数据,下面分别给出S函数部分源码介
绍如何实现两者的通讯.
Matlab从lnTouch采集数据的s函数部分
functionk[sys,xO,str,ts]=InTouch2simulink(t,
饕,u,Flng,chann、
switchFkg
case0
[驴,加,str,ts]=mdllnitializeSizes(t,戈,
u,chann)
case3
sys=mdlOutputs(t,算,“,chann)
case{1,2,4,9}
万方数据
sys=[]
otherwise
error([’UnhandledFlag2’,num2str
(Flag)])
end
function[垆,加,str,ts]=mdllnitializeSizes(t,戈,“,
Flag,chann)
sizes.NumOutputs=2
sizes.Numlnputs=0
sizes.DirFeedthrough=O
functionsys=mdlOutputs(t,戈,u,chann)
ifchann=0
disp(7DDEfaild!’)
else
w(1)=ddereq(chann,’current7)
,q(2)=ddereq(chann,’voltaga’)
fori=1:2
sys(i)=rq(i)
end
end
当Matlab向InTouch发送数据时,除mdlOutput
函数更换为ddepoke函数外,其他相同.将以上函数
进行封装便可以在Simulink环境中运行.在运行时,
首先打开InTouch的windowviewer,并向Matlab命令
窗口输入chann=ddeinh(7view’,’tagname’)来建立
Matlab与InTouch的连接.
3 结 论
文中基于DDE技术,通过在Matlab环境编写M
文件和s函数两种方法,首次实现了Matlab和In—
Touch之间的直接通讯.利用这一技术可以将In.
Touch和Mat|ab两种软件紧密结合起来,充分发挥
各自的优点,即利用InTouch进行界面开发,利用
Matlab/Simulink进行仿真计算.文中的方法摆脱了
利用第3方软件实现两者之间接口编程的烦恼,具
有编程简单、实现方便的突出优点.
参考文献(ReferencesI
[1]施建强.InTouch、VB和Matlab之间的DDE接口方法
65
[J].南京工程学院学报:自然科学版,2003,1(1):
29—35.
ShiJianqiang.DDEinterfacebetweenInTouch,Visual
BasicandMatlab[J].Journa/ofNanjingEngineering
l珊thute:Natural&ienceEdition,2003。1(1):29—
35.(inChinese)
[2]胡锦晖,胡大斌.基于DDE技术的监控软件及其实
现[J].微计算机信息。2004,20(11):70—71.
HuJinhui,HuDabin.Realizationofcontrolsoftware
basedonDDEtechnology[J].MicrocomputerInforma—
tion,2004,20(1I):70—71.(inChinese)
[3]臧怀泉,李振鹏,陈承继,等.基于DDE协议的系统
集成软件的开发[J].计算机仿真,2005,22(7):172
—174.
ZangHuaiquan,LiZhenpeng,ChenChen舀i,eta1.De-
velopmentofsystemintegrationsoftwarebasedOffDDE
protocol[J].Compu拓rSimulation,2005,22(7):172—
174.(inChinese)
[4]WonderwareCorporation.InTouch用户指南[M].北
京:科学出版社。2001:25—59.
[5]TheMathWorks.MatlabExternalInte斫aces(Version
7.0)[M].NewYork:McGrawHill,2005:12—35.
[6]YangYingjie,DengHuiyong,LiXia.Simulationof
screeningprocessbasedonMatlab/Simulink[J].Jour-
halofChinaUniversityofMiningandTechnology。
2006,16(3):330—332.
[7]ChemicalEngineeringProgressGroup.InTouchhuman-
machineinterfacegofiware,version9.0[J].Chemical
EngineeringProgress,2004,100(10):22—24.
[8]JangBC,ChoiG.Co·simulationandsimulationintegra-
tionforafullvehicledynamicsystem[J].Mathematical
andComputerModelingofDynamica/Systems,2007,13
(3):237—250.
[9]PetropoulakisL,StephenB.J-Sire:aGUIplatformfor
real-timesharingofMatlabdesignsandsimulationonthe
internet[J].InternationalJournalofContinuingEngi—
neeringEducationand£咖一幻愕Learning,2003,13(5
—6):530—545.
[10]MeArtharSDJ,DavidsonEM,DudgeonGJ W,eta1.
Towardamodelintegrationmethodologyforadvanced
applicationinpowere.gineefingfJ]。IEEETransactions
onPower跏细瑚,2003,18(3):5—6.
(责任编辑梁家峰)
万方数据