国产强伦姧在线观看无码,中文字幕99久久亚洲精品,国产精品乱码在线观看,色桃花亚洲天堂视频久久,日韩精品无码观看视频免费

      您現(xiàn)在的位置:智能制造網(wǎng)>技術(shù)中心>VC環(huán)境下三菱PLC與微機(jī)的串行通信

      直播推薦

      更多>

      企業(yè)動(dòng)態(tài)

      更多>

      推薦展會(huì)

      更多>

      VC環(huán)境下三菱PLC與微機(jī)的串行通信

      2009年05月14日 17:09:15人氣:1461來(lái)源:煙臺(tái)勾股通信技術(shù)有限公司

      VC環(huán)境下三菱PLC與微機(jī)的串行通信
      周* 曾文火
      蘇科技大學(xué) 機(jī)械與動(dòng)力工程學(xué)院,江蘇 鎮(zhèn)江 212003)
      摘 要:主要介紹三菱FX系列PLC與上位機(jī)之間的通訊協(xié)議,并采用CSerial類來(lái)實(shí)現(xiàn)串行通信,本文給出了程序設(shè)計(jì)方法和部分源代碼。

      關(guān)鍵字:串行通信 PLC CSerial[/align]
      0 [align=center]引言

      可編程控制器(PLC)是集計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)、通信技術(shù)為一體的新型自動(dòng)控制裝置。由于體積小、可靠性高以及組態(tài)靈活等優(yōu)點(diǎn),PLC在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。將PC機(jī)與可編程控制器組合起來(lái),充分利用PC機(jī)強(qiáng)大的人機(jī)接口功能、豐富的應(yīng)用軟件和低廉的價(jià)格來(lái)共同實(shí)現(xiàn)管理、控制一體化成為一個(gè)新的發(fā)展趨勢(shì)。本文重點(diǎn)介紹在Windows 2000環(huán)境下如何利用VC來(lái)實(shí)現(xiàn)PC機(jī)與三菱PLC之間的串行通訊。
      1 三菱PLC與計(jì)算機(jī)之間通信協(xié)議
      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ù))相加,取得所得和的zui低二位數(shù)。STX和ETX分別表示該字符幀的起始標(biāo)起和結(jié)束標(biāo)志。


      (1) 起始字元(STX):ASCII碼的起始字元STX對(duì)應(yīng)的16進(jìn)制數(shù)位0x02。無(wú)論命令信息還是回應(yīng)信息,它們的起始字元均為STX,接收方以此來(lái)判知傳輸資料的開(kāi)始。
      (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ī)。
      (3) 元件首地址:對(duì)應(yīng)要操作的元件的相應(yīng)的地址。如從D123單元中讀取數(shù)據(jù)時(shí),要把它對(duì)應(yīng)的地址:0x10F6發(fā)送給PLC。
      (4) 元件個(gè)數(shù):一次讀取位元件或字元件的數(shù)量。
      (5) 結(jié)束字元(ETX):ASCII碼的結(jié)束字元ETX對(duì)應(yīng)的16進(jìn)制數(shù)為0x03。無(wú)論命令信息還是回應(yīng)信息,它們的結(jié)束字元均為ETX,接收方以此來(lái)判知此次通訊已結(jié)束。
      (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)碼相同,則說(shuō)明傳送正確。
      FX2系列與計(jì)算機(jī)之間的通信是以主機(jī)發(fā)出的初始命令,PLC對(duì)其做出響應(yīng)的方式進(jìn)行通信的。共有0、1、7、8四種命令,上位機(jī)實(shí)現(xiàn)對(duì)PLC的讀寫和強(qiáng)行置位。通過(guò)ENQ、ACK和NAK,上位機(jī)協(xié)調(diào)與PLC的通信應(yīng)答。
      2 編程口操作命令類型
      串行通信是計(jì)算機(jī)與其他機(jī)器之間進(jìn)行通信的一種常用方法,在Windows操作系統(tǒng)中提供了實(shí)現(xiàn)各種串行通信的API函數(shù)。通過(guò)SC-09編程電纜或FX-232-BD通訊模塊,可以將PC機(jī)和計(jì)算機(jī)串行通信口RS-232連接起來(lái),可以實(shí)現(xiàn)PC機(jī)對(duì)PLC的RAM區(qū)數(shù)據(jù)進(jìn)行讀、寫操作。根據(jù)PLC本身所具有的特性,計(jì)算機(jī)可對(duì)PLC進(jìn)行以下4種類型的操作:
      (1) 位元件或字元件狀態(tài)讀操作(CMD0);
       ?。?) 位元件或字元件狀態(tài)寫操作(CMD1);
       ?。?) 位元件強(qiáng)制ON操作(CMD7);
       ?。?) 位元件強(qiáng)制OFF操作(CMD8)。
      3 軟件編程
      (1) 串行通信實(shí)現(xiàn)方法
      在進(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)串行通信了。以下是該類定義:
      class CSerial
      {
      public:
      CSerial();
      ~CSerial();
      BOOL Open( int nPort , int nBaud,int nParity,int nByteSize,int nStopBits );
      BOOL Close( void );
      int ReadData( void *, int );
      int SendData( const char *, int );
      int ReadDataWaiting( void );
      BOOL IsOpened( void ){ return( m_bOpened ); }
      protected:
      BOOL WriteCommByte( unsigned char );
      HANDLE m_hIDComDev;
      OVERLAPPED m_OverlappedRead, m_OverlappedWrite;
      BOOL m_bOpened;
      };
      ① Serial::Open這個(gè)成員函數(shù)打開(kāi)通信端口。帶五個(gè)參數(shù),*個(gè)是串口號(hào),第二個(gè)參數(shù)是數(shù)據(jù)傳輸速率,第三個(gè)是數(shù)據(jù)效驗(yàn)方式,第四個(gè)是數(shù)據(jù)位數(shù),第五個(gè)是數(shù)據(jù)停止位。
      ② Serial::Close函數(shù)關(guān)閉通信端口。
      ③ CSerial::SendData函數(shù)把數(shù)據(jù)從一個(gè)緩沖區(qū)寫到串行端口。*個(gè)參數(shù)是緩沖區(qū)指針,其中包含要被發(fā)送的資料;第二個(gè)參數(shù)是發(fā)送的字節(jié)數(shù)。
      ④ CSerial::ReadData函數(shù)從斷口接收緩沖區(qū)讀入數(shù)據(jù)。*個(gè)參數(shù)是緩沖區(qū)指針,資料將被放入該緩沖區(qū);第二個(gè)參數(shù)緩沖區(qū)的大小。
      (2) 位元件或字元件狀態(tài)讀操作
      操作對(duì)象元件:PLC內(nèi)部的X、Y、M、S、T、C、D元件;命令格式如表1;在發(fā)送完上述命令格式代碼后,就可以讀取PLC響應(yīng)信息了。響應(yīng)信息格式如圖2;


      部分程序代碼:
      BOOL CPlcComDlg::ReadPLC(char *Read, char *address, int bytes)
      {
      CSerial Serial;
      char read_BUFFER;
      if(Serial.Open(m_com, m_Buad, m_Parity, m_Byte, m_StopBites))
      {
      Serial.SendData(&ENQ_request,1);//發(fā)送聯(lián)絡(luò)訊號(hào)
      Sleep(100);
      Serial.ReadData(&read_BUFFER,1);//讀取PLC響應(yīng)訊號(hào)
      if(read_BUFFER==ACK)
      {
      //初始化變量
      //發(fā)送圖2命令格式代碼
      ASCII(readdatasum_check,readdata_sum);
      //將STX-ETX之間的字符相加,轉(zhuǎn)換成ASCII(十六進(jìn)制),并取和的低二位數(shù)。
      if(*readdatasum_CHECK==*readdatasum_check)//和校驗(yàn)
      {
      //對(duì)讀出的數(shù)據(jù)進(jìn)行處理,轉(zhuǎn)換成整型數(shù)
      for(int j=0;j {
      for(i=j*2;i Read[i]=(Read[i]>0x39)?(Read[i]-0x41+0xA):(Read [i]-0x30);
      Read_value[j]=(((((Read [j*4+2]<<4)+Read [j*4+3]))+Read [j*4+0])<<4)+Read [j*4+1];
      }
      return TRUE;
      }
      else
      return FALSE;
      }
      }
      }
      }
      //將整數(shù)轉(zhuǎn)換成ASCII(十六進(jìn)制),并取低二位,
      void CPlcComDlg::ASCII(char *total_databytes, int read_bytes)
      {
      unsigned int uTmp;
      uTmp=read_bytes & 0x000f;
      total_databytes[1]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xA);
      uTmp=(read_bytes>>4) & 0x000f;
      total_databytes[0]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xA);
      }
      (3) 位元件或字元件狀態(tài)寫操作
      操作對(duì)象元件:PLC內(nèi)部的X、Y、M、S、T、C、D元件;命令格式如圖3所示。


      程序代碼(略)。
      (4) 位元件強(qiáng)制ON操作
      操作對(duì)象元件:PLC內(nèi)部的X、Y、M、S、T、C元件;命令格式如圖4所示。



      部分程序代碼如下:
      void CPlcComDlg::ForceOnOpreation(char *Address)
      {
      CSerial Serial;
      char read_BUFFER;
      CString strtemp;
      if(Serial.Open(m_com,9600))
      {
      Serial.SendData(&ENQ_request,1);
      Sleep(100);
      Serial.ReadData(&read_BUFFER,1);
      if(read_BUFFER==ACK)
      {
      //初始化變量
      //發(fā)送圖4命令格式代碼
      ASCII(Sum_Check,sum); //將STX-ETX之間的字符相加,轉(zhuǎn)換成ASCII(十六進(jìn)制),并取和的低二位數(shù)
      for(i=0;i<2;i++)
      Serial.SendData(&Sum_Check[i],1);//和校驗(yàn)
      Sleep(100);
      Serial.ReadData(&read_buffer,1);
      if(read_buffer==ACK)
      return TRUE;
      else
      return FALSE;
      }
      }
      }
      (5) 位元件強(qiáng)制OFF操作
      操作對(duì)象元件:PLC內(nèi)部的X、Y、M、S、T、C元件;命令格式如圖5所示。


      4 實(shí)時(shí)通訊控制界面
      本程序能夠?qū)崿F(xiàn)遠(yuǎn)程控制FX系列PLC的運(yùn)行。能讀取位元件的當(dāng)前狀態(tài),以及對(duì)它們置位和復(fù)位。能夠讀取字元件的值和往字元件寫值。并能自動(dòng)連續(xù)讀取單個(gè)字元件的值。

      圖6 通訊界面
      5 結(jié)論
      本程序?qū)崿F(xiàn)了上位機(jī)對(duì)三菱PLC的實(shí)時(shí)監(jiān)控,傳送數(shù)據(jù)準(zhǔn)確,這種通信方法不僅成本低,而且簡(jiǎn)單、穩(wěn)定、實(shí)用性強(qiáng)。


      參考文獻(xiàn)
      [1] 李現(xiàn)勇. Visual C++串口通信技術(shù)與工程實(shí)踐.人民郵電出版社,2002年5月
      全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

      免責(zé)聲明

      • 凡本網(wǎng)注明"來(lái)源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請(qǐng)必須注明智能制造網(wǎng),http://www.towegas.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
      • 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
      • 本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
      • 如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

      <
      更多 >

      工控網(wǎng)機(jī)器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機(jī)械包裝機(jī)械印刷機(jī)械農(nóng)業(yè)機(jī)械食品加工設(shè)備制藥設(shè)備倉(cāng)儲(chǔ)物流環(huán)保設(shè)備造紙機(jī)械工程機(jī)械紡織機(jī)械化工設(shè)備電子加工設(shè)備水泥設(shè)備海洋水利裝備礦冶設(shè)備新能源設(shè)備服裝機(jī)械印染機(jī)械制鞋機(jī)械玻璃機(jī)械陶瓷設(shè)備橡塑設(shè)備船舶設(shè)備電子元器件電氣設(shè)備


      我要投稿
      • 投稿請(qǐng)發(fā)送郵件至:(郵件標(biāo)題請(qǐng)備注“投稿”)1271141964.qq.com
      • 聯(lián)系電話0571-89719789
      工業(yè)4.0時(shí)代智能制造領(lǐng)域“互聯(lián)網(wǎng)+”服務(wù)平臺(tái)
      智能制造網(wǎng)APP

      功能豐富 實(shí)時(shí)交流

      智能制造網(wǎng)小程序

      訂閱獲取更多服務(wù)

      微信公眾號(hào)

      關(guān)注我們

      抖音

      智能制造網(wǎng)

      抖音號(hào):gkzhan

      打開(kāi)抖音 搜索頁(yè)掃一掃

      視頻號(hào)

      智能制造網(wǎng)

      公眾號(hào):智能制造網(wǎng)

      打開(kāi)微信掃碼關(guān)注視頻號(hào)

      快手

      智能制造網(wǎng)

      快手ID:gkzhan2006

      打開(kāi)快手 掃一掃關(guān)注
      意見(jiàn)反饋
      關(guān)閉
      企業(yè)未開(kāi)通此功能
      詳詢客服 : 0571-87858618