男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

當前位置:機電之家首頁 >> PLC技術>> plc應用 >> 松下plc應用 >> 用VC++開發微機與松下PLC間的通訊程序
用VC++開發微機與松下PLC間的通訊程序

1 引言

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

2 松下電工的專用通信協議mewtocol-com

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

(1) 命令幀格式

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

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

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

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

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

  (2) 響應幀格式

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

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

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

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

  錯誤響應幀的格式

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

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

  錯誤代碼:對于命令及數據傳送中的各種錯誤均規定為代碼以識別。

(3) 命令碼: mewtocol-com協議的命令碼匯總

(4)常用的命令與格式

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

  (1) mscomm控件

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

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

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

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

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

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

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

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

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

  當bnewvalue為true時打開端口,當為false時關閉端口。

  * bbbbb:從接受緩沖區返回和刪除字符,該屬性在運行時為只讀。getbbbbb();

  * output:向緩沖區寫數據,要傳送的數據可以是文本數據或是二進制數據。

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

  getcommevent();

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

  首先利用mfcappwizard(exe)建立一個基于對話框,支持activex控件,命名為transcomn的應用程序。然后在對話框中加入一些控件,其中那個mscomm控件(電話形狀的控件)必須是在系統中注冊過的microsoft communications control,由它進行通訊時首先得設置它的一些屬性,這些屬性既可以在控件屬性對話框中設置也可以在程序中設置,本文用后一種方法,在程序中對mscomm控件屬性設置。

5 程序編寫

  // transcommdlg.cpp : implementation file

  bool ctranscommdlg::oninitdialog()

  {

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

  cdialog::oninitdialog();

  m_comm.setcommport(1);

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

  m_comm.setbbbbbmode(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;

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

  //m_commandbbbbbb,由串口發出

  m_comm.setoutput(colevariant(m_commandbbbbbb));

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

  //讀取串口輸入緩沖區中的字符個數,如大于0表 //示串口接受到plc的響應幀,然后//進行處理

  int k=m_comm.getinbuffercount();

  if(k》0)

  {

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

  vresponse=m_comm.getbbbbb();

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

  str[k]=`

作者:未知 點擊:718次 [打印] [關閉] [返回頂部]
本文標簽:用VC++開發微機與松下PLC間的通訊程序
* 由于無法獲得聯系方式等原因,本網使用的文字及圖片的作品報酬未能及時支付,在此深表歉意,請《用VC++開發微機與松下PLC間的通訊程序》相關權利人與機電之家網取得聯系。
電子樣本

SN系列樣冊
:鞏經理
:13915946763
:南京塞姆泵業有限公司
個人求購

朱善鵬 【求購】  液壓絞車  2026-3-23
機電用戶 【求購】  纏繞膜  2026-3-23
汪經理 【求購】  綜合帶電檢...  2026-3-23
王經理 【求購】  西湖輪胎  2026-3-20
蘇紅慶 【求購】  工業除濕機  2026-3-20
金喜 【求購】  線纜  2026-3-20
林杰 【求購】  自粘結鐵芯  2026-3-20
任建波 【求購】  鋰電鉆  2026-3-20
VIP公司推薦

主站蜘蛛池模板: 璧山县| 张家港市| 太和县| 新民市| 海晏县| 怀仁县| 都昌县| 大兴区| 中阳县| 达孜县| 定边县| 张家界市| 莱阳市| 托克逊县| 绥宁县| 庄浪县| 镇沅| 洪洞县| 江陵县| 巧家县| 乌拉特中旗| 拜城县| 涞水县| 荥阳市| 白河县| 弥勒县| 通海县| 镇远县| 油尖旺区| 荥阳市| 天气| 忻州市| 库尔勒市| 博白县| 苏尼特左旗| 芜湖县| 门头沟区| 鹿邑县| 健康| 镇平县| 永川市|