国产精品久久久久久久久免费,高潮迭起av乳颜射后入,国产对白老熟女正在播放,国产精品igao视频网网址,丰满人妻熟妇乱又伦精品

當(dāng)前位置:機(jī)電之家首頁 >> 電工園地>> 論文資料 >> 軟件驅(qū)動(dòng) >> 組態(tài)軟件中串口設(shè)備通信實(shí)現(xiàn)方法設(shè)計(jì)
組態(tài)軟件中串口設(shè)備通信實(shí)現(xiàn)方法設(shè)計(jì)

摘  要:本文分析了組態(tài)軟件串口設(shè)備通信的原理及開發(fā)方法,并提出了一種使用VC++6.0開發(fā)組態(tài)軟件串口設(shè)備通信模塊的具體實(shí)現(xiàn)方法。

關(guān)鍵字:組態(tài)軟件,串口設(shè)備通信,VC++6.0

1、前言:

  工業(yè)控制組態(tài)軟件的開發(fā)和使用已經(jīng)有幾十年的歷史,現(xiàn)在很多從事工業(yè)控制的公司都在使用甚至開發(fā)自己的組態(tài)軟件。在開發(fā)組態(tài)軟件的過程中,組態(tài)軟件的通信是一個(gè)非常重要的模塊,使用組態(tài)軟件設(shè)計(jì)出顯示畫面以后,要接收現(xiàn)場(chǎng)的采集數(shù)據(jù),形成動(dòng)態(tài)畫面,反映工業(yè)現(xiàn)場(chǎng)的各種狀態(tài),并能夠?qū)ΜF(xiàn)場(chǎng)設(shè)備進(jìn)行控制,這些都依賴于組態(tài)軟件的通信模塊。現(xiàn)場(chǎng)的測(cè)控設(shè)備大多都采用標(biāo)準(zhǔn)的通信接口,而串行接口是測(cè)控設(shè)備所采用的最常見的一種通信接口。本文首先分析了開發(fā)組態(tài)軟件串口設(shè)備通信的方法,然后提出了一種使用VC++6.0開發(fā)組態(tài)軟件串口設(shè)備通信模塊的具體實(shí)現(xiàn)方法。

2、組態(tài)軟件與測(cè)控設(shè)備的通信原理

  組態(tài)軟件通過I/O驅(qū)動(dòng)程序從現(xiàn)場(chǎng)測(cè)控設(shè)備獲得實(shí)時(shí)數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行加工處理后,一方面以圖形方式顯示在計(jì)算機(jī)屏幕上,來反映現(xiàn)場(chǎng)設(shè)備的運(yùn)行狀況;另一方面按照組態(tài)要求和操作人員的指令將控制數(shù)據(jù)送給I/O設(shè)備,對(duì)執(zhí)行機(jī)構(gòu)實(shí)施控制或調(diào)整控制參數(shù)。

  一般情況下,I/O驅(qū)動(dòng)程序是與設(shè)備相關(guān)的,即一種設(shè)備的驅(qū)動(dòng)程序只能驅(qū)動(dòng)該類的設(shè)備。設(shè)備制造商會(huì)提供PC與設(shè)備間進(jìn)行數(shù)字通信的接口協(xié)議和物理接口標(biāo)準(zhǔn)。物理接口標(biāo)準(zhǔn)規(guī)定使用何種通信介質(zhì)、鏈路層的接口標(biāo)準(zhǔn),如RS232、RS485、以太網(wǎng)等;接口協(xié)議規(guī)定通信雙方約定的命令及數(shù)據(jù)響應(yīng)格式、數(shù)據(jù)校驗(yàn)方式等。I/O 驅(qū)動(dòng)程序主要是按照接口協(xié)議的規(guī)定向設(shè)備發(fā)送數(shù)據(jù)請(qǐng)求命令,對(duì)返回?cái)?shù)據(jù)進(jìn)行拆包,從中分離出所需數(shù)據(jù)(即組態(tài)的數(shù)據(jù)連接項(xiàng)和設(shè)備狀態(tài)數(shù)據(jù))。多數(shù)設(shè)備的通信接口協(xié)議都有若干條讀寫命令,分別用來讀寫設(shè)備上不同類別的數(shù)據(jù),而每一條命令又可以讀寫同類別的多條數(shù)據(jù),具體能讀寫幾條是由接口協(xié)議規(guī)定的。使用組態(tài)軟件做I/O數(shù)據(jù)連接的工程技術(shù)人員不必了解這些細(xì)節(jié),只需按照I/O 驅(qū)動(dòng)程序的說明書組態(tài)數(shù)據(jù)庫(kù)變量與設(shè)備數(shù)據(jù)項(xiàng)的對(duì)應(yīng)關(guān)系即可。I/O 驅(qū)動(dòng)程序主要以數(shù)據(jù)包為單位進(jìn)行數(shù)據(jù)處理,這樣會(huì)大大提高通信效率。通信過程如圖1所示:


圖1、組態(tài)軟件通信原理框圖

3、組態(tài)軟件中串口設(shè)備通信方法設(shè)計(jì)

  在工業(yè)控制領(lǐng)域,常把現(xiàn)場(chǎng)測(cè)控設(shè)備分成3種類型,一種是可獨(dú)立工作、能夠完成特定數(shù)據(jù)輸入輸出功能的設(shè)備,如用于模擬量輸入輸出、數(shù)字量輸入輸出的各種板卡;另一種設(shè)備是本身不直接處理數(shù)據(jù)輸入輸出,但起到管理其它設(shè)備工作的設(shè)備,如串行口設(shè)備;第三種設(shè)備是本身具有處理數(shù)據(jù)輸入輸出的功能,但只有和第一種設(shè)備一起才構(gòu)成完整工作系統(tǒng)的設(shè)備:如PLC設(shè)備、智能儀器儀表等;不同類型的設(shè)備的工作方式有所不同,其對(duì)應(yīng)的通信方法的設(shè)計(jì)也有所不同。而第三種設(shè)備是最常用的一種設(shè)備,他們的通信方式,主要是對(duì)串行口進(jìn)行操作,因此在這里把他們叫做串口設(shè)備,下面結(jié)合實(shí)例給出用VC++6.0設(shè)計(jì)組態(tài)軟件串口設(shè)備通信的方法。

  選用VC++來開發(fā),是因?yàn)槭褂肰C++開發(fā)的軟件運(yùn)行效率高,程序代碼較短,運(yùn)行速度快,能夠充分利用32位操作系統(tǒng)多任務(wù)多線程的優(yōu)勢(shì)。利用VC++6.0開發(fā)串口通信一般有兩種方法,一種是直接使用bbbbbbs API函數(shù)進(jìn)行編程,另一種是使用MSCOMM控件來進(jìn)行串口編程,采用后一種方法在程序?qū)崿F(xiàn)上相對(duì)第一種方法比較簡(jiǎn)單,因?yàn)镸SCOMM控件封裝了大量bbbbbbs API函數(shù),使用MSCOMM控件進(jìn)行編程,用戶只需考慮如何使用MSCOMM控件所提供的屬性和事件,以驅(qū)動(dòng)API函數(shù)的接口來完成工作。

  在組態(tài)軟件中實(shí)現(xiàn)串行設(shè)備的通信實(shí)際上就是開發(fā)不同串行設(shè)備的驅(qū)動(dòng)程序,它一般分為兩個(gè)部分,一是對(duì)串行口的設(shè)置、初始化、以及讀寫操作,二是根據(jù)不同設(shè)備的通信協(xié)議對(duì)從串行口讀寫的數(shù)據(jù)幀進(jìn)行處理,取出其中的有用數(shù)據(jù)。

  3.1串口屬性設(shè)置對(duì)話框設(shè)計(jì)

  新建一個(gè)工程,在該工程中插入MSCOMM控件,建立一個(gè)對(duì)話框,(set_com)加入以下控件:

  該對(duì)話框用于對(duì)串口的屬性進(jìn)行設(shè)置,但是這里并不是對(duì)串口進(jìn)行真正的設(shè)置,而只是把一些參數(shù)保存到變量當(dāng)中。在實(shí)際的應(yīng)用中可能會(huì)用到其他更多的屬性,但以上屬性是最常用的幾個(gè)屬性,為了簡(jiǎn)化說明,在本設(shè)計(jì)中,只對(duì)以上一個(gè)屬性進(jìn)行設(shè)置,其他屬性都采用默認(rèn)的屬性設(shè)置。MSCOMM控件有兩種通信方式-事件驅(qū)動(dòng)方式和查詢方式,為了簡(jiǎn)化說明,在這里也只采用其中的一種通信方式-事件驅(qū)動(dòng)方式。

  3.2打開串口及數(shù)據(jù)處理設(shè)計(jì)

  在這一步驟里應(yīng)該包括以下功能:

 ?。?) 用戶能夠選擇所要使用的串行設(shè)備

 ?。?) 根據(jù)3.1中設(shè)置的參數(shù),對(duì)串口進(jìn)行設(shè)置

 ?。?) 打開串口,對(duì)數(shù)據(jù)進(jìn)行處理,保存到緩沖區(qū)

  為了簡(jiǎn)化說明,在這里省略功能(1)的設(shè)計(jì),假設(shè)我們所設(shè)計(jì)的組態(tài)軟件只與一種設(shè)

  備進(jìn)行通信(我們采用OMRON PLC,以C200HE PLC為例,通信協(xié)議采用上位機(jī)鏈接通信)

  3.2.1串口屬性設(shè)置及打開串口

  新建一個(gè)支持Activex控件的對(duì)話框(test_com),從控件工具欄中把MSCOMM控件拖到該對(duì)話框中,并為該控件添加控制變量:m_ctrlComm。在test_com::OnInitDialog()函數(shù)中設(shè)置串口屬性,程序如下所示:

  //把set_com對(duì)話框中設(shè)置的串口屬性賦值給para

  para=btl+”,”+jojy+”,”+sjw+”,”+tzw+”,”;

  //打開串口

  if(m_ctrlComm.GetPortOpen())

[NextPage]

  m_ctrlComm.SetPortOpen(FALSE);

  m_ctrlComm.SetCommPort(selcom); //選擇串口

  if( !m_ctrlComm.GetPortOpen())

  m_ctrlComm.SetPortOpen(TRUE);//打開串口

  else

  AfxMessageBox("cannot open serial port");

  //設(shè)置串口屬性

  m_ctrlComm.SetSettings(para); //波特率,校驗(yàn),數(shù)據(jù)位,停止位

  m_ctrlComm.SetbbbbbMode(1); //1:表示以二進(jìn)制方式檢取數(shù)據(jù)

  m_ctrlComm.SetRThreshold(1);

  //參數(shù)1表示每當(dāng)串口接收緩沖區(qū)中有多于或等于1個(gè)字符時(shí)將引發(fā)一個(gè)接收數(shù)據(jù)的OnComm事件

  m_ctrlComm.SetbbbbbLen(0); //設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長(zhǎng)度為0

  m_ctrlComm.Getbbbbb();//先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)

  return TRUE;

  3.2.2響應(yīng)串口事件,對(duì)數(shù)據(jù)進(jìn)行處理

  上位機(jī)發(fā)送數(shù)據(jù)到PLC的過程實(shí)際上就是根據(jù)該P(yáng)LC的通信協(xié)議,把命令字符串發(fā)送到串行口,上位機(jī)接收PLC數(shù)據(jù)的過程實(shí)際上是把接收到的數(shù)據(jù)根據(jù)PLC通信協(xié)議里規(guī)定的幀格式,把有用數(shù)據(jù)取出來的過程。

 ?。?)OMRON PLC(C200HX)的通信協(xié)議

  本文的通信協(xié)議采用的是上位機(jī)鏈接通信。上位機(jī)鏈接通信通過在上位機(jī)與PLC之間交換命令和應(yīng)答實(shí)現(xiàn)的。在一次交換中傳輸?shù)拿詈蛻?yīng)答數(shù)據(jù)稱為一幀,一個(gè)幀最多可包含131個(gè)數(shù)據(jù)字符。

  命令幀格式如下:

  識(shí)別碼和正文取決于傳輸?shù)纳衔粰C(jī)鏈接命令。當(dāng)傳送一個(gè)組合命令時(shí),還將有第二個(gè)識(shí)別碼(子識(shí)別碼)。FCS(幀檢查順序)碼由上位機(jī)計(jì)算,并設(shè)置在命令幀中,命令幀最多可以有131個(gè)字符長(zhǎng),一個(gè)等于或大于132字符的命令必須分成若干幀。命令分段,使用回車定界符(CHR$(13)),而不是終止符。終止符必須用在最后幀的末尾。

  應(yīng)答幀格式

[NextPage]

  識(shí)別碼和正文取決于接收到的上位機(jī)鏈接命令,結(jié)束碼表示命令完成的狀態(tài)(即是否有錯(cuò)誤發(fā)生),當(dāng)應(yīng)答超過132字符,它必須分成若干幀。在每個(gè)幀的末尾將自動(dòng)設(shè)置一個(gè)定界符(CHR$(13))代替終止符。終止符必須設(shè)置在最后幀的末尾。

  (2)響應(yīng)OnComm事件,對(duì)數(shù)據(jù)進(jìn)行處理

  // 發(fā)送事件

  void test_com::OnSend ()

  {

  // 根據(jù)(1)中的命令幀格式,寫出需要傳出的命令碼字符串Cbbbbbb m_send

  // 將這個(gè)字符串發(fā)送到串行口

  m_ctrlComm.SetOutput (COleVariant (m_send));

  }

  // 接收事件

  void test_com::OnComm ()

 ?。?/P>

  if (m_ctrlComm.GetCommEvent () = 2) //事件值為2表示接收緩沖區(qū)內(nèi)有字符

 ?。?/P>

  COle Variant m_bbbbb = m_ctrlComm.Getbbbbb ();

  //m_bbbbb中的數(shù)據(jù)即為接收到的數(shù)據(jù),根據(jù)應(yīng)答幀格式取出其中的有效數(shù)據(jù)

  UpdateData (FALSE);

  }

 ?。?/P>

4、結(jié)論

  通過在實(shí)際開發(fā)中的具體應(yīng)用,提出組態(tài)軟件中串口設(shè)備通信模塊的具體實(shí)現(xiàn)方法,在實(shí)際應(yīng)用中具有重要的應(yīng)用價(jià)值。

參考文獻(xiàn)

  [1] 馬國(guó)華 《監(jiān)控組態(tài)軟件及其應(yīng)用》清華大學(xué)出版社 2001.8

  [2] 王亞民 陳青劉暢生 王水平 《組態(tài)軟件設(shè)計(jì)與開發(fā)》2003.4

  [3] 李現(xiàn)勇 《Visual C++串口通信技術(shù)與工程實(shí)踐》 人民郵電出版社 2002.5

作者:未知 點(diǎn)擊:1305次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:組態(tài)軟件中串口設(shè)備通信實(shí)現(xiàn)方法設(shè)計(jì)
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《組態(tài)軟件中串口設(shè)備通信實(shí)現(xiàn)方法設(shè)計(jì)》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
關(guān)于“組態(tài)軟件中串口設(shè)備通信實(shí)現(xiàn)方法設(shè)計(jì)”的更多資訊

電子樣本

宏達(dá)振動(dòng)電機(jī)樣本
:岳紹義
:15303736697
:新鄉(xiāng)宏達(dá)振動(dòng)電機(jī)設(shè)備有限責(zé)任公司
個(gè)人求購(gòu)

王經(jīng)理 【求購(gòu)】  自動(dòng)器  2025-7-4
沈經(jīng)理 【求購(gòu)】  風(fēng)機(jī)  2025-7-4
 【求購(gòu)】  配電箱  2025-7-4
李經(jīng)理 【求購(gòu)】  電機(jī)散熱風(fēng)...  2025-7-4
 【求購(gòu)】  工業(yè)空調(diào)  2025-7-4
張經(jīng)理 【求購(gòu)】  閥門連接器  2025-7-3
沙經(jīng)理 【求購(gòu)】  玻璃破碎報(bào)...  2025-7-3
李旨軍 【求購(gòu)】  定量取樣器  2025-7-3
VIP公司推薦