SOME/IP 请求/响应 + 事件演示
本演示展示了如何在 EcuBus-Pro 环境中使用 SOME/IP 协议。
概述
此示例展示了一个基本的 SOME/IP 设置,包括:
- 两个配置用于通信的 SOME/IP 设备(客户端和服务器)
- 客户端应用 ID:0x6301
- 服务器应用 ID:0x6302
- 一个提供服务和事件的服务器提供者
- 服务 ID:0x1234
- 实例 ID:0x1111
- 方法 ID: 0x1002 (请求/响应)
- 事件 ID: 0x8777 (通知/事件发布)
- 端口:30510(可靠的 TCP 连接)
脚本行为
TypeScript 脚本 (someip.ts) 运行在 节点 1 上,该节点仅连接到 SomeIP_1(服务器,应用 0x6302)。 它实现了:
- 一个回显服务器:接收服务
0x1234的 SOME/IP 请求 并发送响应。 - 一个针对 同一 SomeIP_1 栈上事件
0x8777的周期性someipNotify(发布者路径:offer_event在启动时已为该服务完成)。
订阅者示例脚本 (sub.ts) 在客户端运行并监听:
Util.OnSomeipMessage('1234.*.*', ...)msg instanceof SomeipMessageEvent以处理传入的事件/通知帧。
SomeIP_0 (0x6301) 是 客户端。 它 不 运行此脚本。 要在 SomeIP_0 上 接收 该事件,您必须:
- 在设备 SomeIP_0 上运行 IA 手动操作 订阅(它在客户端调用
subscribeToEvent)。 - 使用 事件 id
0x8777(而非 RPC 方法0x1002)以及与服务器一致的event_type(0= ET_EVENT,对应此演示的is_field: false)。
如果没有成功的订阅,vSomeIP 将不会将通知传递给 SomeIP_0。
运行步骤
- 启动项目并确保两个 SOME/IP 设备都在线。
- 在提供者节点(SomeIP_1 / 应用
0x6302)上运行someip.ts。 - 在消费者节点(SomeIP_0 / 应用
0x6301)上运行sub.ts。 - 在 SomeIP_0 上触发 IA 手动 订阅 操作,针对:
- 服务
0x1234 - 实例
0x1111 - 事件组
0x0001 - 事件
0x8777
- 服务
- 观察订阅者端的事件日志。
网络设置
该演示使用 localhost(127.0.0.1)进行测试,无需额外网络配置即可轻松运行。 两个 SOME/IP 应用程序使用不同的应用 ID 通过相同的以太网接口进行通信。