999国内精品永久免费视频,色偷偷9999www,亚洲国产成人爱av在线播放,6080亚洲人久久精品,欧美超高清xxxhd

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  P L C | 變頻器與傳動(dòng) | 傳感器 | 現(xiàn)場(chǎng)檢測(cè)儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動(dòng)控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場(chǎng)總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測(cè)控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺
VC環(huán)境下三菱PLC與微機(jī)的串行通信
中華工控網(wǎng)
收藏本文     查看收藏
<b> VC環(huán)境下三菱PLC與微機(jī)的串行通信<BR> 周萬里 曾文火<BR> 蘇科技大學(xué) 機(jī)械與動(dòng)力工程學(xué)院,江蘇 鎮(zhèn)江 212003)</b><BR> 摘 要:主要介紹三菱FX系列PLC與上位機(jī)之間的通訊協(xié)議,并采用CSerial類來實(shí)現(xiàn)串行通信,本文給出了程序設(shè)計(jì)方法和部分源代碼。<BR> <div align=center>關(guān)鍵字:串行通信 PLC CSerial[/align]<BR> 0 [align=center]引言</div><BR> 可編程控制器(PLC)是集計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)、通信技術(shù)為一體的新型自動(dòng)控制裝置。由于體積小、可靠性高以及組態(tài)靈活等優(yōu)點(diǎn),PLC在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。將PC機(jī)與可編程控制器組合起來,充分利用PC機(jī)強(qiáng)大的人機(jī)接口功能、豐富的應(yīng)用軟件和低廉的價(jià)格來共同實(shí)現(xiàn)管理、控制一體化成為一個(gè)新的發(fā)展趨勢(shì)。本文重點(diǎn)介紹在Windows 2000環(huán)境下如何利用VC來實(shí)現(xiàn)PC機(jī)與三菱PLC之間的串行通訊。<BR> 1 三菱PLC與計(jì)算機(jī)之間通信協(xié)議<BR> FX2系列PLC與計(jì)算機(jī)之間的通信采用RS-232標(biāo)準(zhǔn),其傳輸速率固定為9600bps,奇偶校驗(yàn)位采用偶校驗(yàn)。數(shù)據(jù)格式如表1所示。數(shù)據(jù)以幀為單位發(fā)送和接收。一個(gè)多字符幀由圖1所示的五部分組成,其中和校驗(yàn)值是將命令碼STX——ETX之間的字符的ASCII碼(十六進(jìn)制數(shù))相加,取得所得和的最低二位數(shù)。STX和ETX分別表示該字符幀的起始標(biāo)起和結(jié)束標(biāo)志。<BR> <br><A HREF="/editor/uploadfiles/learns01/2006161153260078.bmp" TARGET=_blank><IMG SRC="/editor/uploadfiles/learns01/2006161153260078.bmp" border=0 alt=按此在新窗口瀏覽圖片 onload="javascript:if(this.width>580)this.width=580"></A><BR> (1) 起始字元(STX):ASCII碼的起始字元STX對(duì)應(yīng)的16進(jìn)制數(shù)位0x02。無論命令信息還是回應(yīng)信息,它們的起始字元均為STX,接收方以此來判知傳輸資料的開始。<BR> (2) 命令號(hào)碼:為兩位16進(jìn)制數(shù)。所謂命令號(hào)碼是指上位機(jī)要求下位機(jī)所執(zhí)行的動(dòng)作類別,例如要求讀取或?qū)懭雴吸c(diǎn)狀態(tài)、寫入或讀取暫存器資料、強(qiáng)制設(shè)定、運(yùn)行、停止等。在回應(yīng)信息中,下位機(jī)會(huì)將上位機(jī)接收到的命令號(hào)碼原原本本的隨同其它信息一同發(fā)送給上位機(jī)。<BR> (3) 元件首地址:對(duì)應(yīng)要操作的元件的相應(yīng)的地址。如從D123單元中讀取數(shù)據(jù)時(shí),要把它對(duì)應(yīng)的地址:0x10F6發(fā)送給PLC。<BR> (4) 元件個(gè)數(shù):一次讀取位元件或字元件的數(shù)量。<BR> (5) 結(jié)束字元(ETX):ASCII碼的結(jié)束字元ETX對(duì)應(yīng)的16進(jìn)制數(shù)為0x03。無論命令信息還是回應(yīng)信息,它們的結(jié)束字元均為ETX,接收方以此來判知此次通訊已結(jié)束。<BR> (6) 校驗(yàn)碼(Checksum):校驗(yàn)碼是將STX-ETX之間的ASCII字元的16進(jìn)制數(shù)值以“LRC(Longitudinal Redundancy Check)”法計(jì)算出1個(gè)Byte長(zhǎng)度(兩個(gè)16進(jìn)制數(shù)值00-FFH)的校驗(yàn)碼。當(dāng)下位機(jī)接收到信息后,用同樣的方法計(jì)算出接收信息的校驗(yàn)碼,如果兩個(gè)校驗(yàn)碼相同,則說明傳送正確。<BR> FX2系列與計(jì)算機(jī)之間的通信是以主機(jī)發(fā)出的初始命令,PLC對(duì)其做出響應(yīng)的方式進(jìn)行通信的。共有0、1、7、8四種命令,上位機(jī)實(shí)現(xiàn)對(duì)PLC的讀寫和強(qiáng)行置位。通過ENQ、ACK和NAK,上位機(jī)協(xié)調(diào)與PLC的通信應(yīng)答。<BR> 2 編程口操作命令類型 <BR> 串行通信是計(jì)算機(jī)與其他機(jī)器之間進(jìn)行通信的一種常用方法,在Windows操作系統(tǒng)中提供了實(shí)現(xiàn)各種串行通信的API函數(shù)。通過SC-09編程電纜或FX-232-BD通訊模塊,可以將PC機(jī)和計(jì)算機(jī)串行通信口RS-232連接起來,可以實(shí)現(xiàn)PC機(jī)對(duì)PLC的RAM區(qū)數(shù)據(jù)進(jìn)行讀、寫操作。根據(jù)PLC本身所具有的特性,計(jì)算機(jī)可對(duì)PLC進(jìn)行以下4種類型的操作:<BR> (1) 位元件或字元件狀態(tài)讀操作(CMD0);<BR>   (2) 位元件或字元件狀態(tài)寫操作(CMD1);<BR>   (3) 位元件強(qiáng)制ON操作(CMD7);<BR>   (4) 位元件強(qiáng)制OFF操作(CMD8)。<BR> 3 軟件編程<BR> (1) 串行通信實(shí)現(xiàn)方法<BR>  在進(jìn)行以上四種操作之前要對(duì)串行通信口進(jìn)行必要的初始化。本人采用了一個(gè)專門針對(duì)串行通信的CSerial類,并在Open函數(shù)中進(jìn)行了進(jìn)一步的完善。它由MuMega Technologies公司提供的一個(gè)Visual C++類,我們只要理解CSerial類種的幾個(gè)成員函數(shù),就能很方便地實(shí)現(xiàn)串行通信了。以下是該類定義:<BR> class CSerial<BR> {<BR> public:<BR>  CSerial();<BR>  ~CSerial();<BR>  BOOL Open( int nPort , int nBaud,int nParity,int nByteSize,int nStopBits );<BR>  BOOL Close( void );<BR>  int ReadData( void *, int );<BR>  int SendData( const char *, int );<BR>  int ReadDataWaiting( void );<BR>  BOOL IsOpened( void ){ return( m_bOpened ); }<BR> protected:<BR>  BOOL WriteCommByte( unsigned char );<BR>  HANDLE m_hIDComDev;<BR>  OVERLAPPED m_OverlappedRead, m_OverlappedWrite;<BR>  BOOL m_bOpened;<BR> };<BR> ① Serial::Open這個(gè)成員函數(shù)打開通信端口。帶五個(gè)參數(shù),第一個(gè)是串口號(hào),第二個(gè)參數(shù)是數(shù)據(jù)傳輸速率,第三個(gè)是數(shù)據(jù)效驗(yàn)方式,第四個(gè)是數(shù)據(jù)位數(shù),第五個(gè)是數(shù)據(jù)停止位。<BR> ② Serial::Close函數(shù)關(guān)閉通信端口。<BR> ③ CSerial::SendData函數(shù)把數(shù)據(jù)從一個(gè)緩沖區(qū)寫到串行端口。第一個(gè)參數(shù)是緩沖區(qū)指針,其中包含要被發(fā)送的資料;第二個(gè)參數(shù)是發(fā)送的字節(jié)數(shù)。<BR> ④ CSerial::ReadData函數(shù)從斷口接收緩沖區(qū)讀入數(shù)據(jù)。第一個(gè)參數(shù)是緩沖區(qū)指針,資料將被放入該緩沖區(qū);第二個(gè)參數(shù)緩沖區(qū)的大小。<BR> (2) 位元件或字元件狀態(tài)讀操作<BR> 操作對(duì)象元件:PLC內(nèi)部的X、Y、M、S、T、C、D元件;命令格式如表1;在發(fā)送完上述命令格式代碼后,就可以讀取PLC響應(yīng)信息了。響應(yīng)信息格式如圖2; <BR> <br><A HREF="/editor/uploadfiles/learns01/20061611103415492.bmp" TARGET=_blank><IMG SRC="/editor/uploadfiles/learns01/20061611103415492.bmp" border=0 alt=按此在新窗口瀏覽圖片 onload="javascript:if(this.width>580)this.width=580"></A><BR> 部分程序代碼:<BR> BOOL CPlcComDlg::ReadPLC(char *Read, char *address, int bytes)<BR> {<BR>  CSerial Serial;<BR>  char read_BUFFER;<BR>  if(Serial.Open(m_com, m_Buad, m_Parity, m_Byte, m_StopBites))<BR>  {<BR>   Serial.SendData(&ENQ_request,1);//發(fā)送聯(lián)絡(luò)訊號(hào)<BR>   Sleep(100);<BR>   Serial.ReadData(&read_BUFFER,1);//讀取PLC響應(yīng)訊號(hào)<BR>   if(read_BUFFER==ACK)<BR>   {<BR>    //初始化變量<BR>    //發(fā)送圖2命令格式代碼<BR> ASCII(readdatasum_check,readdata_sum);<BR> //將STX-ETX之間的字符相加,轉(zhuǎn)換成ASCII(十六進(jìn)制),并取和的低二位數(shù)。<BR>     if(*readdatasum_CHECK==*readdatasum_check)//和校驗(yàn)<BR>     { <BR> //對(duì)讀出的數(shù)據(jù)進(jìn)行處理,轉(zhuǎn)換成整型數(shù)   <BR>      for(int j=0;j<bytes/2;j++) <BR>      { <BR>       for(i=j*2;i<j*2+4;i++)<BR>       Read[i]=(Read[i]>0x39)?(Read[i]-0x41+0xA):(Read [i]-0x30);<BR>       Read_value[j]=(((((Read [j*4+2]<<4)+Read [j*4+3]))+Read [j*4+0])<<4)+Read [j*4+1];<BR>      }<BR>      return TRUE;<BR>     }<BR>     else<BR>      return FALSE;<BR>    }<BR>   }<BR>  }<BR> }<BR> //將整數(shù)轉(zhuǎn)換成ASCII(十六進(jìn)制),并取低二位,<BR> void CPlcComDlg::ASCII(char *total_databytes, int read_bytes)<BR> {<BR>  unsigned int uTmp;<BR>  uTmp=read_bytes & 0x000f; <BR>  total_databytes[1]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xA); <BR>  uTmp=(read_bytes>>4) & 0x000f;<BR>  total_databytes[0]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xA);<BR> }<BR>  (3) 位元件或字元件狀態(tài)寫操作<BR> 操作對(duì)象元件:PLC內(nèi)部的X、Y、M、S、T、C、D元件;命令格式如圖3所示。<BR> <br><A HREF="/editor/uploadfiles/learns01/20061611122227539.bmp" TARGET=_blank><IMG SRC="/editor/uploadfiles/learns01/20061611122227539.bmp" border=0 alt=按此在新窗口瀏覽圖片 onload="javascript:if(this.width>580)this.width=580"></A><BR> 程序代碼(略)。<BR> (4) 位元件強(qiáng)制ON操作<BR> 操作對(duì)象元件:PLC內(nèi)部的X、Y、M、S、T、C元件;命令格式如圖4所示。<BR> <br><A HREF="/editor/uploadfiles/learns01/20061611141777171.bmp" TARGET=_blank><IMG SRC="/editor/uploadfiles/learns01/20061611141777171.bmp" border=0 alt=按此在新窗口瀏覽圖片 onload="javascript:if(this.width>580)this.width=580"></A></P><P> 部分程序代碼如下:<BR>  void CPlcComDlg::ForceOnOpreation(char *Address)<BR> {<BR>  CSerial Serial;<BR>  char read_BUFFER;<BR>  CString strtemp;<BR>  if(Serial.Open(m_com,9600))<BR>  {<BR>   Serial.SendData(&ENQ_request,1);<BR>   Sleep(100);<BR>   Serial.ReadData(&read_BUFFER,1);<BR>   if(read_BUFFER==ACK)<BR>   { <BR>  //初始化變量<BR>    //發(fā)送圖4命令格式代碼<BR> ASCII(Sum_Check,sum); //將STX-ETX之間的字符相加,轉(zhuǎn)換成ASCII(十六進(jìn)制),并取和的低二位數(shù)<BR>    for(i=0;i<2;i++)<BR>     Serial.SendData(&Sum_Check[i],1);//和校驗(yàn)<BR>    Sleep(100);<BR>    Serial.ReadData(&read_buffer,1);<BR>    if(read_buffer==ACK)<BR>     return TRUE;<BR>    else<BR> return FALSE;<BR>   }<BR>  }<BR> }<BR>  (5) 位元件強(qiáng)制OFF操作<BR> 操作對(duì)象元件:PLC內(nèi)部的X、Y、M、S、T、C元件;命令格式如圖5所示。<BR> <br><A HREF="/editor/uploadfiles/learns01/2006161116315384.bmp" TARGET=_blank><IMG SRC="/editor/uploadfiles/learns01/2006161116315384.bmp" border=0 alt=按此在新窗口瀏覽圖片 onload="javascript:if(this.width>580)this.width=580"></A><BR> 4 實(shí)時(shí)通訊控制界面<BR> 本程序能夠?qū)崿F(xiàn)遠(yuǎn)程控制FX系列PLC的運(yùn)行。能讀取位元件的當(dāng)前狀態(tài),以及對(duì)它們置位和復(fù)位。能夠讀取字元件的值和往字元件寫值。并能自動(dòng)連續(xù)讀取單個(gè)字元件的值。<BR> <br><A HREF="/editor/uploadfiles/learns01/20061611252665808.bmp" TARGET=_blank><IMG SRC="/editor/uploadfiles/learns01/20061611252665808.bmp" border=0 alt=按此在新窗口瀏覽圖片 onload="javascript:if(this.width>580)this.width=580"></A>圖6 通訊界面<BR> 5 結(jié)論<BR> 本程序?qū)崿F(xiàn)了上位機(jī)對(duì)三菱PLC的實(shí)時(shí)監(jiān)控,傳送數(shù)據(jù)準(zhǔn)確,這種通信方法不僅成本低,而且簡(jiǎn)單、穩(wěn)定、實(shí)用性強(qiáng)。</P><P> <BR> 參考文獻(xiàn)<BR> [1] 李現(xiàn)勇. Visual C++串口通信技術(shù)與工程實(shí)踐.人民郵電出版社,2002年5月</P><P>
 

狀 態(tài): 離線

公司簡(jiǎn)介
產(chǎn)品目錄

公司名稱: 中華工控網(wǎng)
聯(lián) 系 人: 客服中心
電  話: 0755-26546361
傳  真: 0755-26585268
地  址: 深圳市南山區(qū)創(chuàng)業(yè)路現(xiàn)代城華庭1棟6A
郵  編: 518054
主  頁:
 
該廠商相關(guān)技術(shù)文摘:
智能儀器儀表的發(fā)展特點(diǎn)與前景分析
電動(dòng)機(jī)性能虛擬儀器測(cè)試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
視頻監(jiān)控護(hù)航高鐵安全運(yùn)營(yíng)
基于PLC,觸摸屏及變頻器對(duì)吹膜機(jī)的改造
永宏P(guān)LC應(yīng)用于自助圖書借還終端機(jī)
基于永宏P(guān)LC的GSM通訊原理及其應(yīng)用
改善汽車生態(tài)學(xué)、安全性和舒適性,四大測(cè)試分析是關(guān)鍵
改善汽車生態(tài)學(xué)、安全性和舒適性,四大測(cè)試分析是關(guān)鍵
數(shù)控技術(shù)的發(fā)展趨勢(shì)及產(chǎn)業(yè)化
數(shù)控技術(shù)發(fā)展戰(zhàn)略與發(fā)展途徑的思考
用Energid 的軟件進(jìn)行機(jī)器人的抓取和操作
如何借助RFID技術(shù)升級(jí)企業(yè)信息管理水平
更多文摘...
立即發(fā)送詢問信息在線聯(lián)系該技術(shù)文摘廠商:
用戶名: 密碼: 免費(fèi)注冊(cè)為中華工控網(wǎng)會(huì)員
請(qǐng)留下您的有效聯(lián)系方式,以方便我們及時(shí)與您聯(lián)絡(luò)

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動(dòng)態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報(bào)
工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved