嵌入式智能人机界面与PLC的通讯

技术分类: 嵌入式系统  | 2007-08-03
来源:控制工程中文网

  5.3 各子对话框发送写命令 

  各个子对话框根据需要,采用定时器的形式,定时向PLC发送命令。以OMRON PLC为例,在发送命令时,根据OMRON PLC的通讯协议,还需对发送的命令字符串加校验码。这些程序代码为:   

  void 子对话框1类::OnTimer(UINT nIDEvent)  
  { 
  ......
  strcpy(m_szC

md,"@00RR00000001"); //OMRON PLC的命令字符串; 
  GenXor(m_szCmd,result); //进行校验码计算,调用 GenXor 函数; 
  sprintf(szTailer,"%02X*\r",result); //OMRON PLC通讯协议以“*\r”结尾; 
  strcat(m_szCmd,szTailer); //形成完整的通讯协议命令字符串; 
  WriteFile(m_hComm, m_szCmd, strlen(m_szCmd),&dwWriten,NULL); 
  //将命令字符串写入串口; 
  ...... 
  } 
  以下为上面所调用的计算校验码的代码: 
  void GenXor(LPCSTR strSource,char& result) //为计算校验码的函数,进行异或运算: 
  { 
  result=0; //为校验码赋初值; 
  int len="strlen"(strSource); //命令协议字符串的长度; 
  for(int i="0";iresult^=strSource[i]; //按位进行异或; 
  } 

  5.4 显示界面处理 

  最后,读线程读到的数据,交由对应的子对话框进行处理。要对这些数据进行分析,并以动画,柱状图,趋势曲线等表现出来。以所连接的为OMRON PLC为例,其代码为: 

  void子对话框1类::ProcData(char *buffer, int len) 
  { 
  ......sscanf(buffer+7,"%04X",&wData); //根据OMRON PLC的命令规约,从应答中将需要的数据取出到变量wData中; 
  ....... //对获得的变量值根据需要进行处理,如以文字或动画等形式在子对话框中进行显示; 
  } 
  在进行界面处理时,有一些技巧,如动画显示时,可以用一个定时器控制图片的轮番显示。(在本系统中动画是通过CbitmapButton这个控件进行显示的。) 
  switch(m_iImage) // m_iImage为定义的动画显示标志; 
  { 
  case 1: //显示第一幅图片,同时将动画显示标志置为2; 
  CBitmapButton控件变量.LoadBitmaps(图片标志1); 
  m_iImage=2; 
  break; 
  case 2: //显示第二幅图片,同时将动画显示标志置为1; 
  CBitmapButton控件变量.LoadBitmaps(图片标志2); 
  m_iImage=1; 
  break; 
  } 

  在显示实时曲线时,采用循环数组的方式,在内存中开辟一定大小的空间,使读上来的数形成一个循环数组,在界面上动态的显示出来。 

  本系统中以20个模拟量为一个数组大小,也就是实时趋势曲线一直显示20个点的信息,但因为使用了循环数组的技术,所以看上去很有动感。

  void 子对话框类::循环数组函数(int iValue) // iValue为从命令应答中解析出来的有效数据; 
  { 
  int index=(m_iBegin+m_iCount)%20; //计算循环数组的下标,初始从0开始; 
  m_aryValue=iValue; //为循环数组赋值; 
  m_iCount++; //循环数组的个数加1; 
  if(m_iCount>20) //判断个数是否超过20个,如是,将下一个数组下标从1开始,依此类推; 
  { 
  m_iCount=20; 
  m_iBegin=(m_iBegin+1)%20; 
  } 
  ...... 
  } 

  通讯是本系统的关键。我们的实践证明,以上四步是实现整个监控系统基本之要点。 

  6、结论

  总之,本监控系统软件的基本架构可以以下面这幅图直观的表示出来:

监控系统软件的基本架构

图2 监控系统软件的基本架构

  随着嵌入式操作系统的兴起,各组态软件的开发商也纷纷开发出了嵌入式版的组态软件。但在

实际应用中我们发现有许多企业,他们的生产控制流程比较固定,需要的人机界面的数量又比较大,对他们来说,按这里介绍的方法,针对企业自身的生产工艺特点进行开发,提供给用户的是最终的运行系统,不需要用户再进行组态的二次开发。这样的系统对这样的用户来说,从时间,价格或性能上来说都比较适合。本系统在鹭岛公司研发的LEODO嵌入式工业控制人机界面上经过了测试运行,证明其运行速度较快,比较稳定。效果很好,比较适合工业现场使用。当然LEODO品牌的人机界面也内置了一套简明实用,画面资源丰富的ET组态软件,用户可根据实际情况决定自己用高级语言开发,还是用组态软件开发。 

  总之,可以看出,人机界面利用Microsoft eMbedded C++开发应用程序,与在Windows系统下用Microsoft Visual C++开发程序,有许多相象的地方。借助这个软、硬件平台,多数用户完全可以开发出适合自己需要的应用程序。

0
0
(请您对文章做出评价)
1】【2】【3
加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

电路设计中可预测和不可预测问题的调试技术

时间:2008-06-02 10:00:00-12:00:00
简介:在嵌入式系统设计中,经常会出现一些可预测和不可预测的问题或者低概率事件信号。快速有效地发现这些问题需要不同的技术。8月15日…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会