工控設備調(diào)試需要可視化的界面上位機來調(diào)試下位機的傳感器,電機,單步動作等.上位機調(diào)試軟件可以是工業(yè)觸摸屏或者是工控機windows的mfc winform之類的軟件.下位機可以是單片機工控電路板或者是PLC。這種上位機和下位機的關系與PC與服務器的關系類似.PC與服務器的軟件架構(gòu)有C/S,B/S兩種,上位機(服務器)和下位機(服務器)軟件架構(gòu)也有這兩種.
- C/S架構(gòu)
C/S架構(gòu)在服務器和PC端都要寫程序和維護。QQ之類的軟件就是這種架構(gòu)。對于PC端程序開發(fā),開發(fā)者需要學習VS/QT,熟悉C++或者C#,串口網(wǎng)絡編程,多線程UI美化等,學習成本相當高,招人也不好招聘。對于每個項目都是拖拽一些按鈕編輯框到界面,在事件處理函數(shù)發(fā)送串口網(wǎng)絡數(shù)據(jù)給下位機.
- B/S架構(gòu)
B/S架構(gòu)只要在單片機端寫程序.電機中文名稱,傳感器名稱,動作名稱,參數(shù)名稱都寫在單片機軟件,單片機上電初始化時需要將中文名稱和電機傳感器動作編號綁定。PC端瀏覽器軟件連接到單片機后就把名稱和編號獲取過來,然后界面動態(tài)繪制按鈕,編輯框等.
單片機代碼:
enum
{
SM_BELT=0, //軸1 皮帶轉(zhuǎn)動
SM_SUCK, //軸2 吸盤運動步進點
};
enum
{
SN_BELT_ORG=0,
SN_SUCK_ORG,
SN_SUCK_LIMT,
};
enum
{
ACTION_MOVE_BELT=1,
ACTION_RESET_SUCK,
};
//皮帶走動
start(MoveBelt):
l->FindSensor(SM_BELT,1600,SN_BELT_ORG,STEP_OK,STEP_ERROR);
step_error:
l->SetErrorInfo("SM101皮帶電機堵轉(zhuǎn)丟步-X101");
step_ok:
l->StopSM(SM_BELT);
end_ok
//吸盤復位
start(ResetSuck):
l->FindSensor(SM_SUCK,-9000,SN_SUCK_ORG,STEP_OK,STEP_ERROR);
step_error:
l->SetErrorInfo("SM102吸盤電機堵轉(zhuǎn)丟步-X102");
step_ok:
l->StopSM(SM_SUCK);
end_ok
void InitApp()
{
//將動作編號1和函數(shù)MoveBelt綁定,上位機會繪制一個按鈕,名稱皮帶移動
//當電機按鈕發(fā)送數(shù)據(jù)包給下位機,數(shù)據(jù)包的參數(shù)有1,下位位機收到參數(shù)1找到MoveBeltt
//執(zhí)行
l->AddAction(ACTION_MOVE_BELT,MoveBelt,"皮帶移動");
l->AddAction(ACTION_RESET_SUCK,ResetSuck,"吸盤復位");
//電機
l->AddSMNode(SM_BELT,"SM101皮帶");
l->AddSMNode(SM_SUCK,"SM102吸盤");
l->SetPrjName("臨時測試");
l->SetVersion("V1.1");
}
-
傳感器
+關注
關注
2541文章
49928瀏覽量
747412 -
電機
+關注
關注
141文章
8762瀏覽量
143738 -
工控
+關注
關注
6文章
213瀏覽量
28083 -
下位機
+關注
關注
0文章
93瀏覽量
18680
發(fā)布評論請先 登錄
相關推薦
評論