专注于车载信息安全和预期功能安全技术研究
电话:+86 21 62655001
您的位置: 网站首页 > 学术前沿
2021-05-20 10:50:38

自动驾驶汽车以太网数字孪生建模(二)

来源:学术前沿 浏览次数:128 点赞数:0

标注:本文来自本实验室杜兴华的研究成果。


2 构建车载以太网数字孪生模型客户端

2.1 AddEthernetType

在车载以太网数组孪生模型中,AddEthernetType 表示引入以太网的类型。本文中以太网类型为车载以太网。

在该模型中,引用 MDD 的Blocks 功能,将车载以太网加入到模型中,表示我们本次要做的仿真模型为车载以太网的模型。AddEthernetType 模型如图 2-1 所示。

图片

图 2-1: AddEthernetType 模型


2.2 GetEthernetType

在车载以太网数字孪生模型中,GetEthernetType 可以识别引入的以太网的类型,从而建立通信。本文中以太网类型为车载以太网。

在该模型中,引用 MDD 的Blocks 功能,识别引入的车载以太网,与引入的车载以太网建立通信,从而建立 GetEthernetType 模型。GetEthernetType 如图 2-2 所示。

图片

图 2-2: GetEthernetType 模型


2.3 AddMAC

车载以太网数字孪生模型中,AddMAC 表示在引入以太网的 MAC 地址。

用长度为 255 的char 类型数组来表示 MAC 地址,引用 MDD 的Blocks 功能,引入以太网的 MAC 地址。模型见图 2-3。

图片

图 2-3: AddMAC 模型


2.4 GetMAC

车载以太网数字孪生模型中,GetMAC 表示得到以太网的 MAC 地址。

在该模型中,同样使用长度为 255 的 char 类型数组来表示 MAC 地址,引用 MDD的Blocks 功能,该模型可以在数据包中解析到 MAC 地址。GetMAC 模型如图 2-4 所示。

图片

图 2-4: GetMAC 模型


2.5 Test01

在车载以太网数字孪生模型中,Test01 表示使用TCP/IP 协议、UDP 协议、MAC 协议等模拟出车载以太网的模型。

在该模型中,将TCP/IP 协议和 SerialPackger 块连接起来,建立车载以太网的网络, 车载以太网客户端彻底组建完成,待与后端建立网络连接之后,便可以进行车载以太网和车载网络之间的通信。Test01 模型如图 2-5 所示。

图片

 2-5: Test01 模型

3 建立车载以太网后端服务器

在本文的车载以太网数字孪生模型中,后端服务器用 python 代码实现,使用 python模拟 TCP/IP 服务器,输入和输出的数据形式为以太网第二层数据帧。


3.1 设置 HOST 地址和 MAC 地址

我们首先设置一个给车载以太网 HOST 地址和 MAC 地址,如图 3-1 所示。

图片

图 3-1: HOST 地址和 MAC 地址


3.2 设置以太网 IEEE 802.3 接口的全局定义

在车载以太网网址中定义 ETH_ALEN,占据八个字节,在车载以太网类型字段中定义 ETH_TLEN,占据八个字节,设置 ETH_DATA_LEN = 2,表示车载以太网报文有效载荷长度为 2,设置 ETH_FRAME_LEN = 1514,表示在 FCS 中的八位字节中最大值为 1514。代码如图 3-2 所示。

图片

图 3-2: 车载以太网全局设置


3.3 以太网可联通性检查工具

可连通性测试可以让我们知道服务器访问互联网的状况。可连通性测试提供了一种可靠的方式,使外部来源检查以太网网络连接。当我们认为一切都正确配置,但无法测试连接时,该测试会提供即时反馈,让我们明白我们的配置是否可以真正进行外部访问。可连通性测试代码如图 3-3 所示。

图片

图 3-3: 以太网可联通性检查工具


3.4 生成一个随机的 MAC 地址及其原始字符

首先生成一个随机的 MAC 地址,让以太网服务器拥有物理地址。代码如图 3-4 所示。

图片

图 3-4: MAC 地址随机生成函数


3.5 建立服务器与车载以太网模型的通信

首先服务器在端口上监听车载以太网模型发出的数据包,监听到数据包之后进行解析,并且获得通信目标的 MAC 地址。获得地址之后进行数据的偏移,检测获得目标的MAC 地址是否和机器的 MAC 地址一致,如果不一致,返回一条错误信息,如果一致, 则建立通信连接,在给目标发送数据包时需要交换源地址和目标地址。通信代码如图 3-5 所示。

图片

图 3-5: 建立通信


首先我们运行python 的服务器代码,让服务器处于监听状态,之后在 OpenModelica里面运行车载以太网的仿真模型,让两者建立通信,并且查看建模仿真结果。运行服务器代码结果如图 4-1 所示。

图片

图 4-1: python 代码运行结果


由此图可以看出服务器正在监听,暂时还没有收到数据包。

接下来运行 OpenModelica 里面的车载以太网模型,结果如图 4-2 所示。

 

图片

 4-2: 模型运行结果


此时我们回看服务器运行结果,可以看到服务器与车载以太网模型已经建立通信连接。结果如图 4-3 所示。

图片

图 4-3: 通信连接