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

    文章

    111

    浏览量

    11493
  • 函数
    +关注

    关注

    3

    文章

    4274

    浏览量

    62303
  • 通讯协议
    +关注

    关注

    10

    文章

    265

    浏览量

    20306
收藏 人收藏

    评论

    相关推荐

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

    概述 RPC(Remote Procedure call)远程过程调用。其分为两部分:远程过程过程调用
    的头像 发表于 04-06 14:15 2315次阅读

    TSMaster RPC 基础入门:编程指导和使用说明

    介绍RPC模块前,我们先浅聊一下RPC的相关说明,以及在什么样的情况下需要了解本文。1.RPC说明远程过程调用RPC,RemoteProc
    的头像 发表于 07-13 08:21 724次阅读
    TSMaster <b class='flag-5'>RPC</b> 基础入门:编程指导和使用说明

    如何手搓一个自定义的RPC 远程过程调用框架

    1、RPC远程过程调用概述) 远程过程调用RPC, Remote Procedure Call)是一种通过网络从远程计算机程序上请求服务
    的头像 发表于 07-22 12:17 816次阅读
    如何手搓一个自定义的<b class='flag-5'>RPC</b> <b class='flag-5'>远程过程调用</b>框架

    Linux rpc编程过程

    通过rpcgen的man手册看到此工具的作用是把RPC源程序编译成C语言源程序,从而轻松实现远程过程调用
    发表于 07-24 07:25

    RPC的结构原理是什么?

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

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

    远程过程调用 (RPC)是一种用于构建基于客户端-服务器的分布式应用程序的强大技术。它基于对传统本地过程调用的扩展,因此被调用过程不必与
    发表于 07-28 18:13

    什么是RPC

    什么是RPC   英文原义:Remote Procedure Call Protocol 中文释义:(RFC-1831)远过程调用协议 注  解:一种通过
    发表于 02-23 11:48 907次阅读

    HTTP和RPC的区别与联系

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

    OpenDaylightRPC &amp; Notification是什么

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

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

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

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

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

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

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

    什么是远程过程调用

    开发环境:Ubuntu VS Code 编译器:g++ 编程语言:C++ 框架源码下载:GitHub 认识RPC RPC的全称是远程过程调用(Remote Procedure Call
    的头像 发表于 11-10 10:10 956次阅读
    什么是<b class='flag-5'>远程过程调用</b>

    Dubbo源码浅析(一)—RPC框架与Dubbo

    一、什么是RPC 1.1 RPC概念 RPC,Remote Procedure Call 即远程过程调用,与之相对的是本地服务调用,即LPC
    的头像 发表于 08-16 15:18 540次阅读
    Dubbo源码浅析(一)—<b class='flag-5'>RPC</b>框架与Dubbo

    RPC的基本原理和主要特点

    RPC(Remote Procedure Call,远程过程调用)机制是一种常用的通信机制。实际上就是要像调用本地的函数一样去调远程函数。
    的头像 发表于 11-05 09:12 53次阅读
    <b class='flag-5'>RPC</b>的基本原理和主要特点