RPC(Remote Procedure Call Protocol)即遠程過程調(diào)用,也就是調(diào)用的函數(shù)是在其它的控制板上運行的,不需要理會底層的通訊協(xié)議。現(xiàn)在大型設(shè)備通常有超過5塊控制板,這些控制板通過485/CAN/以太網(wǎng)組成一個局域網(wǎng)。通訊協(xié)議可以使用Modbus或者自定義。。。
多模塊組網(wǎng),實現(xiàn)模塊化,減少電氣布線便于維護:
遠程調(diào)用數(shù)據(jù)流:
這些控制板的硬件基本都一樣(電機,傳感器。。),底層驅(qū)動程序也一樣,只是上層的業(yè)務(wù)邏輯的差別,在驅(qū)動層封裝一層rpc,能進一步簡化業(yè)務(wù)邏輯開發(fā),使得控制從機的電機 動作和本機的函數(shù)接口一樣.
動作 傳感器映射
映射是把本地動作編號 傳感器編號映射到從機模塊的動作編號和傳感器編號,這個是在上電初始化時完成.
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是從機模塊編號,通常是電路板上的撥碼開關(guān)決定的.RPC組包時會把這些模塊編號放在頭部.
業(yè)務(wù)代碼:
start(App):
l->WaitAction(201,STEP2,STEP_ERROR); //執(zhí)行從機1動作201,動作正確完成就跳到step2,錯誤step_error
step2:
if(l->IsSenorOn(X201)) //從機1號傳感器感應(yīng)
{
l->WaitAction(301,STEP_OK,STEP_ERROR); //執(zhí)行從機2的動作
}
else
{
l->SetActionOk();
}
step_ok:
l->SetActionOk();
step_error:
l->SetSubError();
end
上面的業(yè)務(wù)代碼是沒有任何通訊相關(guān)的流程,只是一些簡單的函數(shù)調(diào)用和本地函數(shù)調(diào)用一模樣
RPC層
RPC層主要完成數(shù)據(jù)組包,實時數(shù)據(jù)通訊,從機的動作 電機運動都是耗時過程,需要一定的時間才能完成,那么主機端的rpc層就需要不斷查詢從機的狀態(tài).App調(diào)用從機的動作時就同步等待從機的狀態(tài)變化后繼續(xù)向下執(zhí)行.軟件實現(xiàn)上需要單獨一個線程或者類似于switch-case實時處理rpc的工作流程.
-
RPC
+關(guān)注
關(guān)注
0文章
111瀏覽量
11805 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4371瀏覽量
64219 -
通訊協(xié)議
+關(guān)注
關(guān)注
10文章
284瀏覽量
20727
發(fā)布評論請先 登錄
嵌入式遠程過程調(diào)用組件--eRPC
TSMaster RPC 基礎(chǔ)入門:編程指導(dǎo)和使用說明

如何手搓一個自定義的RPC 遠程過程調(diào)用框架

RPC的結(jié)構(gòu)原理是什么?
【學(xué)習(xí)打卡】OpenHarmony的RPC連接介紹
什么是RPC
HTTP和RPC的區(qū)別與聯(lián)系

OpenDaylight中的RPC & Notification是什么

RPC接口與HTTP接口哪一個更好?

基于Client/Server架構(gòu)的HTTP接口和RPC接口

RPC接口和HTTP接口的區(qū)別與聯(lián)系

什么是遠程過程調(diào)用

Dubbo源碼淺析(一)—RPC框架與Dubbo

RPC的基本原理和主要特點

評論