XPC平台的简单搭建(上海交通大学机动学院)相信在看完书(系统实时仿真开发环境与应用)之后大家对XPC已经有了一个感性的认识了。其实XPC就是用来执行宿主机生成的目标代码的一种工具。在我们的液压转台中我们采用的是宿主机-目标机的双机模式。以下对双机模式的搭建进行介绍,以作参考:双机模式简单示意图1.系统的软硬件环境:宿主机与目标机的硬件环境要求都不高,只要是PC机就可以,一般都能用(目标机可能会需要一块XPC目标内核支持的网卡)。宿主机的软件要求如下表:软件概述操作系统WindowsXP或WindowsNTMATLABVersion7.0、07A、Version08BSimulinkVersion6.0或更高的版本(其已经包含在Matlab之中)Real-timeworkshopVersion6.0或更高(其包含在MATLAB之中)C语言编译器MicrosoftVisualC/C++6.0或更高版本WatcomC/C++11.0或更高XPC目标Version1.1(其也包含在MATLAB之中)目标机的软件要求如下表:软件概述操作系统无需操作系统,安装了也无影响,安装了使用会方便些通信通信宿主机硬件网卡网卡主机硬件目标机硬件各种硬件驱动程序xPC实时内核(由BIOS引导运行)Windows操作系统实时控制程序(从宿主机下载)Matlab或其他高级语言编写的宿主机程序xPC接口函数XPC目标XPC实时内核DOS系统只需要安装一个DOS的最小化系统2.宿主机软件安装a)在宿主机上安装XP系统,相信大家对这项不陌生的,就不做过多的介绍。如果不熟悉的,在压缩包里有一个XP的安装视频,自己看一下问题应该不大的。b)MATLAB的安装就是普通软件的安装,这个也不用多讲。c)同样C编译器的安装同MATLAB一样也很简单,只不过我多采用的MicrosoftVisualC/C++用的比较多,所以建议安装这个软件。3.目标机软件安装a)在目标机上安装XP系统,跟在宿主机的安装基本一样。其中需要说明的一点是,在目标机安装XP时对C盘的格式化要选择FAT32格式化,千万不要选择NTFS格式。因为我的目标机将来是要安装DOS系统的,而DOS系统只认FAT32的系统。所以XP只能采用FAT32格式,否则到时就装不上DOS了。见下图片:b)目标机上安装最小化DOS系统。遇到InstallAdd-ons,不选,去掉*号。4.系统的联机仿真先对宿主机与目标机进行连接,可以行用两种方式:串口RS232通信和TCP/IP网络通信。由于串口通信的距离和速度都受到较大的限制,其通信速率仅为115KB/S,故多采用TCP/IP连接。下面主要对在TCP/IP连接下的联机仿真进行介绍:这是是在上位机的操作:制作目标启动盘及生成XPC内核,在MATLAB里运行如下命令:xpcsetup(如果是在R08B里则要运行xpcexplr)打开XPCTargetSetup对话框点击左侧对话框中的下拉菜单依次对各项进行设置:点击Compiler(s)Configuration选择C语言编译器的种类及路径(如下图)(可以直接找到vc的安装路径,复制到这里)其中路径就是C语言编译器的安装位置,单击Apply应用。单击TargetPC1下的Configuration对目标机的启动模式进行设置:可以选择:BootFloopy、DOSLoader、StandAlone三种模式,启动方式的优缺点可以参考《系统实时仿真开发环境与应用》的第十三章内容。在此我们采用DOSLoader模式。Localdirectory选择将来要生成的系统启动文件及XPC目标内核的路径(在此我们选择了系统D盘的根目录下),在选择存储路径时,一定不能选择带有中文名字的路径,否则在生成目标文件和XPC内核时会出现错误,不能正确生成,这点经验很重要,其实在很多应用软件中(包括安装和使用目录)都最好不要用中文路径名,避免带来不必要的麻烦。单击Apply应用。单击TargetPC1下的Communication对目标机的通信模式进行设置:Hosttargetcommunication选择TCP/IP,如果选择RS232则连接为串口通信(在此先不作介绍)。而TCP/IP连接采用交叉型网线直接相连两台机器。TargetPCIPaddress为目标机的IP地址(在此将目标机的IP设置为192.168.0.1TCP/IPtargetdriver:为目标机的网卡驱动,由于XPC现今只支持部分网卡,故使用时需要根据其支持的种类进行购买,我们目前采用的网卡的驱动为I82559。(以前用NE2000,上下位机连不上)TCP/IPtargetport:为目标机的网络端口号,我们没有使用所以不用修改。TCP/IPtargetbus:为目标机的网卡的插槽形式,可为PCI或ISA。如果是ISA插槽的网卡则需要对TCP/IPtargetISAmemory、TCP/IPtargetISAIRQnumber进行设置。推荐对IRQ和I/O中断口分别设置成11、0X300。这是通过跳线和开关来设定的,也可以设置别的。一旦选用了串口通信就需要对下面的Hostport和Baudrate进行设置,它们分别是串口的端口号和数据传输速率。TCP/IPtargetmaskaddress和TCP/IPtargetgatewayaddress分别为子网掩码和默认网关的地址,远程通信时需要使用,只要对应写入就可以了(我们此处不需要)。点击Apply应用。单击TargetPC1下的Settings对目标机的硬件进行简单设置:TargetRAMsize(MB):为目标机XPC内核可以使用的内存,一般选用Auto,也可以选用Manual进行手工设置(不常用)Maximummodelsize:为目标机的模型最大限制,在此我们要建的模型比较小就选择1M,要是模型较大时就选择较大的值。EnablesecondryIDE和TargetPCisa386/486分别是指使用目标机的第二IDE插槽和目标机的CPU种类。我们没必要使用secondryIDE故不选。点击Apply应用。单击TargetPC1下的Appearance对目标机的显示进行设置:Enabletargetscope:为使用目标机的显示器,我们这里选中它表示使用,当不用时可以不选择。点击Apply应用。TargetPC1下的FileSystem和PCIdevices可自行点击查看其英文说明。在上述的工作做完后,选择TargetPC1下的Configuration然后单击CreatBootdisk生成目标启动文件和XPC目标内核。稍等会儿等待过程结束后进入D盘(路径最好选择主盘符下,不要在文件夹下面)就能看到生成的文件,下图的矩形框中就是生成的文件,并分别对其进行了注释:这样,目标机DOS启动所需要的XPC内核建立好了。文件说明:autoexec.bat改成txt文档后,可见有两行命令:xpcbootxpctgo.rtb。它指自动启动另外两个文件。所以它的名字必须和另外两个文件名字一致。用matlab7等低版本生成此三个文件方法:特别注意,子网掩码TCPIPsubNetMASK设置为255.255.255.0。而不能用默认的255.255.255.255或者命令行输入xpcsetup,设置如下设置好xpcTarget后,此处选择DOSloader,点击CreateBootDisk,则出现点击OK,出现在当前matlab路径下生成一个文件:xpctgo1.rtb。然后在matlab7安装文件夹中搜索xpcboot.com。然后新建一个名字autoexec.txt的文本,写入xpcbootxpctgo1.rtb,然后改变后缀名为bat。这样matlab7的xpc启动三个文件就生成了。下面工作是为了让目标机的DOS系统启动时从XPC目标内核启动。这里是指在下位机的操作:步骤一:建立宿主机和目标机之间的网络连接,即建立一个局域网。1.进入目标机XP系统,在目标机的网络连接中,选择本地连接,右击关掉XP系统防火墙,然后右击在属性——TCP/IP,设置IP地址,例如192.168.0.1,子网掩1码255.255.255.0,DNS地址可以为空。如图。2.设置局域网共享属性。在目标机的控制面板-管理工具-计算机管理-本地用户和组-用户,设置guest属性。如图。Guest属性设置如下:将各个选框钩去掉,效果如图。然后在目标机的控制面板-管理工具-本地安全策略-本地策略—用户权利指派中,设置“拒绝从网络访问计算机”,点击后删除guest一项,确定。3,设置c盘属性,右击C盘,在属性中点击共享,点击在网络上共享文件夹。经过以上三步,就建立起来了宿主机和目标机之间的局域网连接。步骤二.目标机DOS启动,。在网上邻居-查看工作组计算机,就可以看到目标机的用户名,然后从这里进入目标机的C盘的根目录,复制上面建立的三个文件。即到目标机的C盘根目录。(此时要在C盘根目录下删除一个文件:CONFIG.SYS.不删除这个文件,系统无法从xpc内核启动。另外如果有AUTOEXEC.---文件也删除。还要检查autoexec.bat文件。将其改成txt文档后,可见有两行命令:xpcbootxpctgo.rtb。如果不是,则删除该文件,将生成的autoexec.bat复制过来。autoexec.bat,xpcboot.com,xpctgo.rtb这三个文件的关系是,DOS启动时调用autoexec.bat,autoexec.bat指定运行文件xpcboot.com和xpctgo.rtb,xpcboot.com从DOS中执行,作用是装载和执行任何xPC目标应用程序。xpcboot.com文件的第一个参数是需要执行的映象文件的名字(*.rtb),该映象文件包含了xPC目标内核和选项,例如是否使用串口电缆或TCP/IP的通信,和分配给目标机的以太网基地址。xpctgo.rtb包含了xPC实时内核)步骤三,进入目标机的BOIS设定,需要对目标机的USB接口设置为不可用。因此目标机在XPC系统运行时,USB鼠标是不起作用的。这样设置是为了在XPC工作时不会因为USB的输入造成中断。经过上面三个步骤,就建立起来了XPC的搭建平台。然后是目标机重启,进入DOS系统,这样就会出现XPC的工作界面了。步骤四:目标机进入XPC界面后,要检查上下位机的联通,检查方法为:在上位机——运行-输入“ping192.168.0.1”(192.168.0.1为下位机的IP地址)。如果显示replay,则表示上下位机连同。此时则可以下载xpc目标程序到下位机平台。下面是怎么将编好的程序编译下载到XPC平台:1.在Simulink中建立好程序后,点击菜单栏中SimulationPatameters,在其中设置参数。在Solver中设置:步长类型为定步长:Fixed-step,步长设置为0.001设置如图:然后设置RTW(Real-TimeWorkshop)标签,点击Systemtargetfile后面的Browse,出现画面如下:点击倒数第二个“XPCtarget”即可。这样就经过了Simulink的参数设置。2.编译和下载程序。这样在Simulink的程序界面上方,选择方式为External,设置时间为10s或者无穷(inf,这样只有手动停止程序,程序才能停下来)设置画面如下:,然后点击编译按钮,编译好后点击连接。常见出现问题:1.上下位机设置正常,也能ping通,但程序编译不了?方案:是不是“目标启动文件和XPC目标内核”不对?有时大家用同一个工控机,每个人内核都不一样。只要保证内核是matlab同一版本生成,且下位机的IP设置一样,则可以保证通讯成功。DOS启动后的XPC界面上面显示的是下位机的IP地址信息,所以上位机的XPCTargetExplorer中配置的下位机IP地址和界面一致即可。2.如果下位机DeviceManager中没有显示在下位机中安装的研华板卡,此时正确方法是先将下位机