0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RPC如何在远程过程中调用?

汽车电子技术 来源: 工控码农 作者:工控码农 2023-02-07 09:52 次阅读

RPC(Remote Procedure Call Protocol)即远程过程调用,也就是调用的函数是在其它的控制板上运行的,不需要理会底层的通讯协议。现在大型设备通常有超过5块控制板,这些控制板通过485/CAN/以太网组成一个局域网。通讯协议可以使用Modbus或者自定义。。。

多模块组网,实现模块化,减少电气布线便于维护:

图片

远程调用数据流:

图片

这些控制板的硬件基本都一样(电机,传感器。。),底层驱动程序也一样,只是上层的业务逻辑的差别,在驱动层封装一层rpc,能进一步简化业务逻辑开发,使得控制从机的电机 动作和本机的函数接口一样.

动作 传感器映射

映射是把本地动作编号 传感器编号映射到从机模块的动作编号和传感器编号,这个是在上电初始化时完成.

enum
{
  HOST=0,//本机编号
  SLAVE1,
  SLAVE2,
};


l->MapRemoteAction(201,SLAVE1,1);  //动作201映射到从机1的1号动作
l->MapRemoteAction(301,SLAVE2,1);  //动作301映射到从机2的1号动作


l->MapRemoteSensor(X201,SLAVE1,X01);//把传感器X201映射到从机的X01

SLAVE1,SLAVE2是从机模块编号,通常是电路板上的拨码开关决定的.RPC组包时会把这些模块编号放在头部.

业务代码:

start(App):
l->WaitAction(201,STEP2,STEP_ERROR);  //执行从机1动作201,动作正确完成就跳到step2,错误step_error
step2:
if(l->IsSenorOn(X201))  //从机1号传感器感应
{
  l->WaitAction(301,STEP_OK,STEP_ERROR);  //执行从机2的动作
}
else
{
  l->SetActionOk();
}
step_ok:
l->SetActionOk();
step_error:
l->SetSubError();
end

上面的业务代码是没有任何通讯相关的流程,只是一些简单的函数调用和本地函数调用一模样

RPC层

RPC层主要完成数据组包,实时数据通讯,从机的动作 电机运动都是耗时过程,需要一定的时间才能完成,那么主机端的rpc层就需要不断查询从机的状态.App调用从机的动作时就同步等待从机的状态变化后继续向下执行.软件实现上需要单独一个线程或者类似于switch-case实时处理rpc的工作流程.

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RPC
    RPC
    +关注

    关注

    0

    文章

    87

    浏览量

    11338
  • 函数
    +关注

    关注

    3

    文章

    3248

    浏览量

    60669
  • 通讯协议
    +关注

    关注

    9

    文章

    227

    浏览量

    19970
收藏 人收藏

    评论

    相关推荐

    Linux rpc编程过程

    RPC源程序编译成C语言源程序,从而轻松实现远程过程调用
    发表于 07-24 07:25

    RPC的结构原理是什么?

    远程过程调用RPC)是一个协议,程序可以使用这个协议请求网络另一台计算机上某程序的服务而不需知道网络细节。(过程调用有时也称作函数调用,或子例行程序调用。)RPC使用client/server模型。请求程序是client,而服务提供程序则为se
    发表于 10-12 10:43

    何在DSP系统的PCB制作过程中减小各种干扰?

    何在DSP系统的PCB制作过程中减小各种干扰?如何解决电磁干扰问题
    发表于 04-26 07:03

    【学习打卡】OpenHarmony的RPC连接介绍

    远程过程调用 (RPC)是一种用于构建基于客户端-服务器的分布式应用程序的强大技术。它基于对传统本地过程调用的扩展,因此被调用过程不必与调用过程存在于同一地址空间中。这两个进程可能在同一个系统上,也可能在
    发表于 07-28 18:13

    多核下基于RDMA的高效RPC研究

    远程直接内存访问(remote direct memory access,RDMA)的远程过程调用(remote procedure call,RPC)设计在多核背景下存在的性能和扩展性问题,提出了一种新的基于RDMA Write的高效
    发表于 09-26 15:27 0次下载
    多核下基于RDMA的高效<b>RPC</b>研究

    什么是RPC

    RPC   英文原义:Remote Procedure Call Protocol 中文释义:(RFC-1831)远
    发表于 02-23 11:48 771次阅读

    OpenMV Cam上的RPC模块

    rpc模块允许您将 OpenMV Cam 连接到另一台微控制器或计算机,并在 OpenMV Cam 上执行远程 Python(或过程调用
    的头像 发表于 10-08 10:28 746次阅读

    HTTP和RPC的区别与联系

    RPC的相同点:底层通讯都是基于socket,都可以实现远程调用,都可以实现服务调用服务。
    的头像 发表于 11-23 08:55 1093次阅读
    HTTP和<b>RPC</b>的区别与联系

    RPC调用和HTTP调用的区别

    过程中,五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并了。我们应该将重点放在应用层和传输层这两个层面。
    的头像 发表于 01-29 10:19 290次阅读

    OpenDaylightRPC &amp; Notification是什么

    RPC和Notification,并从进程内外的通信开始,着重介绍远程过程调用和发布-订阅机制,然后分析MD-SAL的通信交互过程
    的头像 发表于 02-14 15:15 330次阅读
    OpenDaylight<b>中</b>的<b>RPC</b> &amp; Notification是什么

    嵌入式远程过程调用组件--eRPC

    RPC(Remote Procedure call)远程过程调用。其分为两部分:远程过程过程调用远程过程是指每台机器上提供的服务,过程调用就是对远程过程调用以及数据传输。 RPC用通
    的头像 发表于 04-06 14:15 1120次阅读

    RPC接口与HTTP接口哪一个更好?

    RPC接口都是生产上常用的接口,顾名思义,HTTP接口使用基于HTTP协议的URL传参调用,而RPC接口则基于远程过程调用
    发表于 06-13 09:18 243次阅读
    <b>RPC</b>接口与HTTP接口哪一个更好?

    基于Client/Server架构的HTTP接口和RPC接口

    RPC接口都是生产上常用的接口,顾名思义,HTTP接口使用基于HTTP协议的URL传参调用,而RPC接口则基于远程过程调用
    发表于 06-13 09:18 206次阅读
    基于Client/Server架构的HTTP接口和<b>RPC</b>接口

    RPC接口和HTTP接口的区别与联系

    远程过程调用RPC(即Remote Procedure Call,远程过程调用)和HTTP(HyperText Transfer Protocol,超文本传输协议),两者前者是一种方法,后者则是一种
    的头像 发表于 06-17 14:54 493次阅读
    <b>RPC</b>接口和HTTP接口的区别与联系

    何在放置过程中标注原理图符号?

    何在放置过程中标注原理图符号?我发现的唯一方法是依次放置多个同类元器件,并配置属性参考位号后面的数字。当我插入新的元器件时,标注总是一个问号。
    的头像 发表于 08-11 09:43 130次阅读