閱讀 | 訂閱
閱讀 | 訂閱
控製係統

VC++開發PC與鬆下PLC間的通訊程序

星之球激光 來源:中國自動化網2012-08-28 我要評論(0 )   

1 引言 可編程控製器是一種數字運算操作的電子係統,專(zhuan) 為(wei) 在工業(ye) 環境下應用而設計。它采用了可編程序的存儲(chu) 器,用於(yu) 其內(nei) 部存儲(chu) 程序,執行邏輯運算、順序控製、定時、計數...

1 引言

  可編程控製器是一種數字運算操作的電子係統,專(zhuan) 為(wei) 在工業(ye) 環境下應用而設計。它采用了可編程序的存儲(chu) 器,用於(yu) 其內(nei) 部存儲(chu) 程序,執行邏輯運算、順序控製、定時、計數和算術操作等麵向用戶的指令,並通過數字式或模擬式輸入輸出控製各種類型的機械的生產(chan) 過程。可編程控製器及其有關(guan) 外部設備,都按易於(yu) 與(yu) 工業(ye) 控製係統聯成一個(ge) 整體(ti) 、易於(yu) 擴充其功能的原則設計。早期的plc以數字量的順序控製為(wei) 主,提供了簡單的慢速的通信功能(隻支持rs232、rs485、多采用modbus協議),現在的plc不僅(jin) 具有邏輯運算、順序控製、定時、計數和算術操作,而且還具有a/d、d/a轉換,數值計算和數據處理等功能。它既可以對開關(guan) 量進行控製,也可以對模擬量進行控製,隨著plc功能不斷擴充,它還有通訊聯網功能。本文就是基於(yu) 鬆下電工的專(zhuan) 門通信協議(mewtocol),用vc++開發的上位機與(yu) plc間的通信。

 

2 鬆下電工的專(zhuan) 用通信協議mewtocol-com

  目前,隨著plc的快速發展,越來越多的plc生產(chan) 廠商開發了它與(yu) 計算機的通信功能(主要是利用計算機串口進行通信),本文是以鬆下fp係列plc為(wei) 例,作詳細闡述。在一台計算機於(yu) plc之間的通信中,通信由計算機發動,把命令幀發向plc,plc將以響應幀作應答,並執行相應的動作。

  (1) 命令幀格式

  其中: %:mewtocol-com的命令幀開始標誌(ascii碼為(wei) 25h)。

  h,l:站地址的高位和低位。

  #:站號特征碼(ascii碼為(wei) 23h)。

  發送文本:由命令碼和數據組成,其主要命令碼如表1所示。

  bcc:校驗碼,采用異或校驗碼,bcc為(wei) 8位。

  (2) 響應幀格式

  當主站發來命令幀之後,從(cong) 站將以響應幀作應答。響應幀分為(wei) 2種,若主站命令幀正確無誤,則用“正確響應幀”作應答;如果主站命令幀有錯誤則用“錯誤響應幀”作應答。這兩(liang) 種應幀格式下。正確響應幀的格式

  其中 %,h,l,bcc,cr含義(yi) 與(yu) 命令幀相同。

  $:正確響應的標誌(acsii碼為(wei) 24h)。

  響應文本:應當按照命令幀要求及協議規定組織。

  錯誤響應幀的格式

  其中%,h,l,bcc,cr含義(yi) 與(yu) 命令幀相同。

  !:錯誤響應幀的標誌(acsii碼為(wei) 21h)。

  錯誤代碼:對於(yu) 命令及數據傳(chuan) 送中的各種錯誤均規定為(wei) 代碼以識別。

        (3) 命令碼: mewtocol-com協議的命令碼匯總如表1所示

  (4)常用的命令與(yu) 格式

  a)單接點的讀

  錯誤響應幀與(yu) 單接點的相同。

 

3 用visual c++6.0編寫(xie) 串行通信程序

  (1) mscomm控件

  串行通訊編程基本過程:設置初始化並打開串行口—配置串口—雙向傳(chuan) 輸數據—校驗—釋放串口。本文的上位機通信程序是用visualc++6.0編寫(xie) 的,主要是利用vc++中的一個(ge) 通信控件mscomm來現的。

  該控件屏蔽了通訊過程中的底層操作,程序員應用時隻需設置,監控mscomm控件的屬性和事件即可完成對串口的初始化和數據的輸入輸出工作。mscomm控件的主要屬性如下:

  * commport:設置並返回通訊端口號,設計時端口號可設為(wei) 1到16的任何數(默認值為(wei) 1)。如:setcommport(1);即設置當前通訊端口為(wei) com1。

  * settings:設置並返回波特率,奇偶校驗,數據位長度,停止位長度。

  如:setsettings(lpctstr string);string是一個(ge) 包括四部分的字符串:第一部分:波特率;

  第二部分:奇偶校驗,n表示不校驗,e表示偶校驗,o表示奇校驗,s表示空格校驗,m表示符號校驗;

  第三部分:數據為(wei) 長度,其可選值為(wei) 4,5,6,7,8;

  第四部分:停止位長度,其可選為(wei) 1,1.5,2。 settings屬性的缺省值為(wei) “9600,n,8,1”。

  * portopen:用於(yu) 打開和關(guan) 閉端口。setportopen(bool bnewvalue);

  當bnewvalue為(wei) true時打開端口,當為(wei) false時關(guan) 閉端口。

  * input:從(cong) 接受緩衝(chong) 區返回和刪除字符,該屬性在運行時為(wei) 隻讀。getinput();

  * output:向緩衝(chong) 區寫(xie) 數據,要傳(chuan) 送的數據可以是文本數據或是二進製數據。

  *commevent:返回最近的通訊事件或錯誤。隻要有通訊錯誤或事件發生時都會(hui) 產(chan) 生oncomm事件,commevent屬性中存有錯誤或事件的數值代碼。

  getcommevent();

      

4 程序框架的生成及控件屬性的配置

  首先利用mfcappwizard(exe)建立一個(ge) 基於(yu) 對話框,支持activex控件,命名為(wei) transcomn的應用程序。然後在對話框中加入一些控件,其中那個(ge) mscomm控件(電話形狀的控件)必須是在係統中注冊(ce) 過的microsoft communications control,由它進行通訊時首先得設置它的一些屬性,這些屬性既可以在控件屬性對話框中設置也可以在程序中設置,本文用後一種方法,在程序中對mscomm控件屬性設置。最後用classwizard為(wei) 控件添加變量和響應函數如表2

5 程序編寫(xie)

  // transcommdlg.cpp : implementation file

  bool ctranscommdlg::oninitdialog()

  {

  //初始化通訊端口,波特率為(wei) 9600,奇校驗,8位數據位,1位校驗位,選擇com1口

  cdialog::oninitdialog();

  m_comm.setcommport(1);

  m_comm.setsettings(“9600,o,8,1”);

  m_comm.setinputmode(1);

  m_comm.setportopen(true);

  return true; // return true unless you set the focus to a

  control

  }

  void ctranscommdlg::onsend()

  {

  updatedata(true);

  variant vresponse;

  char *str;

  //把對話框中有用戶輸入的命令字符串cstring

  //m_commandstring,由串口發出

  m_comm.setoutput(colevariant(m_commandstring));

  sleep(50);//延時50毫秒,一個(ge) 保證有足夠的時間 //讓plc響應命令

  //讀取串口輸入緩衝(chong) 區中的字符個(ge) 數,如大於(yu) 0表 //示串口接受到plc的響應幀,然後//進行處理

  int k=m_comm.getinbuffercount();

  if(k》0)

  {

  //把plc發送來的響應幀轉換為(wei) 字符 //串,並在對話框的響應文本框中顯示

  vresponse=m_comm.getinput();

  str=(char *)(unsigned char*)vresponse.parray-》pvdata;

  str[k]='';

       }

       }

轉載請注明出處。

免責聲明

① 凡本網未注明其他出處的作品,版權均屬於(yu) fun88网页下载,未經本網授權不得轉載、摘編或利用其它方式使用。獲本網授權使用作品的,應在授權範圍內(nei) 使 用,並注明"來源:fun88网页下载”。違反上述聲明者,本網將追究其相關(guan) 責任。
② 凡本網注明其他來源的作品及圖片,均轉載自其它媒體(ti) ,轉載目的在於(yu) 傳(chuan) 遞更多信息,並不代表本媒讚同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯係我們(men) 刪除。
③ 任何單位或個(ge) 人認為(wei) 本網內(nei) 容可能涉嫌侵犯其合法權益,請及時向本網提出書(shu) 麵權利通知,並提供身份證明、權屬證明、具體(ti) 鏈接(URL)及詳細侵權情況證明。本網在收到上述法律文件後,將會(hui) 依法盡快移除相關(guan) 涉嫌侵權的內(nei) 容。

網友點評
0相關評論
精彩導讀