基于多智能体技术的HEV组网技术*

2015-09-04 06:25尹忠杰牛礼民何远洋詹军杨强安徽工业大学机械工程学院
汽车工程师 2015年8期
关键词:服务器端开度转矩

尹忠杰 牛礼民 何远洋 詹军 杨强(安徽工业大学机械工程学院)

混合动力电动汽车(HEV)具有高性能、低能耗和低污染的特点以及技术、经济和环境等方面的综合优势,成为当今最具实际开发意义的新型清洁汽车[1]。它采用传统内燃机和电动机作为动力源,通过热能和电力2套系统开动汽车,达到节省燃料和降低排气污染的目的,具有排量小、速度高和续驶里程长等优点[2]。要想实现提高整车燃油经济性,改善动力性,降低排放的目标,则需要汽车根据不同的工况实现汽车内各动力源的智能协作。多智能体技术的应用,可很好地实现智能协作,从而适应各种复杂的工况,多智能体间的组网交互问题成为不可避免的研究热点。文章对客户端智能体(传动系)和服务器端智能体(发动机和电动机)进行建模,基于Visual Basic 6.0环境建立可视化交互界面,从而实现基于多智能体技术的HEV组网技术仿真研究。

1 多智能体仿真平台的构建

多智能体系统(MAS)是由多个彼此间存在着协商、协调和通信等关系的智能体组成的系统[3],其中每个智能体是一个物理的或抽象的实体,能作用于自身和环境,并与其他智能体通讯[4]。多智能体技术是人工智能技术的一次质的飞跃,该系统可以协调一组智能体的行为(知识、目标、方法和规划),以协同地完成一个任务或求解问题[5]。由于其具有较强的分布性、鲁棒性和协调性[6],已经成为分布式人工智能研究的一个重要分支,并在各个领域得到了广泛应用[7]。

因此,文章拟将发动机和电动机等动力输出装置和传动系等动力耦合装置进行单智能体建模,如图1所示,通过组建局域网将各个单智能体之间联系起来,从而实现基于多智能体技术的HEV组网技术仿真研究。

1.1 与数据表格的连接

服务器端智能体(发动机和电动机)产生的实时数据需要及时保存,而客户端智能体(传动系)需要将接收到的实时数据通过查阅数据表格进行反馈。而在数据表格软件中,Excel具有可视化强的特点,可以作为服务器端和客户端的数据载体。但是由于Visual Basic 6.0与Excel是2款不同的软件,所以首先需要实现Visual Basic 6.0与Excel表格之间的连接。

Visual Basic 6.0的一大功能就是可以通过勾选“工程”→“引用”中的选项与安装在电脑里的其他程序相关联。勾选其中的“Microsoft Excel 15.0 Object Library”选项,就可以引用Excel类型库。此外,还需要在通用声明端将其赋给自己定义的变量,以便于在程序中使用:

Dim xlApp As Excel.Application‘定义xlApp为Excel对象

Dim xlBook As Excel.Workbook‘定义 xlBook为Excel工作簿

Dim xlSheet As Excel.Worksheet‘定义 xlSheet为Excel工作表。

1.2 服务器端智能体建模

服务器端智能体建模需要实现将智能体实时的数据导入、存储和发送的功能。该多智能体仿真平台主要有发动机和电动机2个智能体作为服务器端,以发动机智能体为例,介绍如何在Visual Basic 6.0中实现其建模:

发动机智能体的参数主要为转速和ETC开度。首先,需要定义2个变量来存放即将导入进来的转速和ETC开度:

DimZhuanSuAsInteger‘定义ZhuanSu为整型变量

DimETCAs Single‘定义ETC为单精度型变量

在服务器端窗口创建一个标签lblinfo,对于导入了以后的转速和ETC开度数据,可以在这个标签上显示出来,如图2所示,方便用户了解实时的发动机的工作状况:

lblinfo.Caption="发动机的转速为:"&ZhuanSu&"r/min"&Visual Basic 6.0CrLf&"ETC开度为:"&ETC&"V"&Visual Basic 6.0CrLf

接下来,先打开待存放数据的Excel表格:

Set xlApp=CreateObject("Excel.Application")‘创建Excel对象

Set xlBook=lApp.Workbooks.Open(App.Path&"发动机实时转速、节气门开度表.xls")‘打开创建的Excel工作薄文件

xlApp.Visible=True‘设置Excel对象可见

Set xlSheet=xlBook.Worksheets("Sheet1")‘设置sheet1为当前工作表

打开工作表后,就开始向里面写入数据。如果是第1次保存数据,需要向表格中添加表头,否则就在上一次保存的数据后一行追加写入。此外,为了表格美观整齐,在写入数据的同时,可以调整其对齐格式,统一保留小数位数,为表格加上边框,自动适应列宽:

If xlSheet.Cells(i,1)=""Then‘判断是否第一次保存数据

If i=2 Then xlSheet.Cells(2,1)="时间"‘创建时间表头

xlSheet.Cells(2,2)="发动机转速(r/min)"‘创建转速表头

xlSheet.Cells(2,3)="ETC开度(V)"‘创建 ETC开度表头

Else

xlSheet.Cells(i,1)=Date&""&Time‘写入时间

xlSheet.Cells(i,2)=ZhuanSu‘写入转速

xlSheet.Cells(i,3)=ETC‘写入ETC开度

For j=2 Toi

xlSheet.Cells(j,3).NumberFormatLocal="0.0"‘ETC开度统一保留小数一位

xlSheet.Cells(m,n).HorizontalAlignment=xlCenter‘所有表格水平居中对齐

xlSheet.Cells(m,n).VerticalAlignment=xlCenter‘所有表格竖直居中对齐

xlSheet.Cells(m,n).Borders.LineStyle=1‘为表格加上边框

xlSheet.Cells.EntireColumn.AutoFit‘自动适应列宽。

将数据写入以后,保存Excel文件并将Excel文件关闭,同时结束Excel对象的使用:

xlBook.Save‘保存工作簿

xlBook.Close‘关闭工作薄

xlApp.Quit‘结束 Excel对象

最终生成的Excel表格,如图3所示。

服务器端通过winsock控件的senddata方法将转速和ETC开度发送给客户端,并且在其可视化窗口中的“聊天记录”中显示,便于用户查看,如图4所示。

1.3 客户端智能体建模

客户端智能体从服务器端智能体接收数据,通过查阅一个由Map图得出的数据表格,反馈给服务器端一个合适的数据并且实现在服务器端进行保存。以如何反馈给发动机智能体在一定转速和ETC开度条件下合适的转矩为例,介绍如何在Visual Basic 6.0中实现其建模:

客户端智能体在接收数据之前,也同样需要定义变量来存放服务器端发送过来的转速和ETC开度:

Dim ZhuanSu As Integer‘定义ZhuanSu为整型变量

DimETCAs Single‘定义ETC为单精度型变量

客户端通过winsock控件的getdata方法接收服务器端发送的数据,并且把它存放在临时变量tempS里,在判断发送过来的数据是转速还是ETC开度之后,存储在刚才定义好的变量里,并且通过与服务器端智能体建模类似的方式,显示在界面上,如图5所示。

在接收到服务器端发送的转速和ETC开度后,客户端根据查询它们与转矩关系的表格,查询到与此时发动机转速和ETC开度所对应的转矩,存放在定义的ZhuanJu变量里,显示在lblinfo标签上,如图6所示,并且通过局域网发送回服务器端:

Dim ZhuanJu As Single‘定义ZhuanJu为单精度型变量

lblinfo.Caption=lblinfo.Caption&"发动机的转矩为:"&ZhuanJu&"N·m"&Visual Basic 6.0CrLf‘显示转矩

wskserver.SendData Str(ZhuanJu)‘发送转矩

服务器端在收到转矩之后,把其存在服务器端定义的ZhuanJu变量里,加到聊天记录里面,显示在lblinfo标签上,保存在另一个Excel工作表里,如图7所示,存储数据的方式与服务器端智能体建模时类似,唯一的区别是增加一列接收到的转矩的数据。

1.4 多智能体局域网组建

在单智能体建模完成后,需要组建多智能体局域网。此时需将工具栏→“部件”→“控件”中的“Microsoft Winsock Control 6.0”控件(简称winsock控件)添加到窗口,并且将其名称改为“wskclient”和“wskserver”。

通过按下客户端的“连接”按钮,客户端首先向服务器端发起连接的需求:

DimIP As String‘定义IP为字符型变量

IP=InputBox("请输入要连接的IP","输入的IP",""‘输入要连接的服务器的IP

wskclient.RemoteHost=IP‘设置通讯对方的IP

wskclient.RemotePort=1024‘设置通讯的端口号

wskclient.Connect‘向对方发出连接请求

然后在服务器端的wskserver的ConnectionRequest事件中接受客户端的连接需求:

wskserver.Close‘关闭控件以防报错

wskserver.Accept requestID‘接收客户端的连接请求

此时弹出对话框“组网成功!”,即完成了多智能体局域网的组建。

2 多智能体交互的仿真模拟

在完成对于服务器端智能体和客户端智能体的建模之后,可以进行模拟仿真,发动机端和客户端用户界面,如图8和图9所示,从而实现混合动力汽车的研究。

3 结论

通过Visual Basic 6.0的平台,生成了一款面向用户的可视化软件,该软件建立了客户端和服务器端智能体模型,通过仿真目前可以实现发动机转速、ETC开度参数的导入、显示及保存,以及通过局域网连接获得对应的转矩,制定出混合动力汽车的一套智能控制策略,从而为混合动力汽车的仿真研究提供了一种新的途径。

猜你喜欢
服务器端开度转矩
基于Ansys Maxwell 2D模型的感应电动机转矩仿真分析
托槽类型对前磨牙拔除病例前牙转矩控制的比较
某型低速大转矩驱动电机设计与研究
掘进机用截止阀开度对管路流动性能的影响
增大某车型车门开度的设计方法
Linux环境下基于Socket的数据传输软件设计
重型F级燃气轮机IGV开度对压气机效率的影响
浅谈软开度对舞蹈的影响
基于霍尔位置信号的无刷直流电机直接转矩控制
基于Qt的安全即时通讯软件服务器端设计