工控设备调试需要可视化的界面上位机来调试下位机的传感器,电机,单步动作等.上位机调试软件可以是工业触摸屏或者是工控机windows的mfc winform之类的软件.下位机可以是单片机工控电路板或者是PLC。这种上位机和下位机的关系与PC与服务器的关系类似.PC与服务器的软件架构有C/S,B/S两种,上位机(服务器)和下位机(服务器)软件架构也有这两种.
C/S架构在服务器和PC端都要写程序和维护。QQ之类的软件就是这种架构。对于PC端程序开发,开发者需要学习VS/QT,熟悉C++或者C#,串口网络编程,多线程UI美化等,学习成本相当高,招人也不好招聘。对于每个项目都是拖拽一些按钮编辑框到界面,在事件处理函数发送串口网络数据给下位机.
B/S架构只要在单片机端写程序.电机中文名称,传感器名称,动作名称,参数名称都写在单片机软件,单片机上电初始化时需要将中文名称和电机传感器动作编号绑定。PC端浏览器软件连接到单片机后就把名称和编号获取过来,然后界面动态绘制按钮,编辑框等.
单片机代码:
enum
{
SM_BELT=0, //轴1 皮带转动
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皮带电机堵转丢步-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吸盘电机堵转丢步-X102");
step_ok:
l->StopSM(SM_SUCK);
end_ok
void InitApp()
{
//将动作编号1和函数MoveBelt绑定,上位机会绘制一个按钮,名称皮带移动
//当电机按钮发送数据包给下位机,数据包的参数有1,下位位机收到参数1找到MoveBeltt
//执行
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");
}
上面的代码即完成了下位机的控制逻辑,又在初始化时完成项目的电气部件及动作信息的显示.上位机连接后显示界面如下 :
全部0条评论
快来发表一下你的评论吧 !