技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 用歐姆龍PLC與上位機(jī)通信實(shí)現(xiàn)振動(dòng)磨的變頻控制

用歐姆龍PLC與上位機(jī)通信實(shí)現(xiàn)振動(dòng)磨的變頻控制

時(shí)間:2009-04-09 15:32:19來(lái)源:lihan

導(dǎo)語(yǔ):?本文給出了用VC++6.0實(shí)現(xiàn)OMRON可編程控制器與上位機(jī)之間的通信程序設(shè)計(jì)方法
摘要:本文給出了用VC++6.0實(shí)現(xiàn)OMRON可編程控制器與上位機(jī)之間的通信程序設(shè)計(jì)方法,并提供了利用RS232串行通訊端口實(shí)現(xiàn)計(jì)算機(jī)與可編程控制器通訊的方法。此方案成功應(yīng)用在振動(dòng)磨的變頻控制中。 關(guān)鍵詞:上位機(jī);PLC;串口通信;VC++6.0;振動(dòng)磨 Abstract:This article mainly introduces a method of programming design based on VC++6.0 to realize the communication of PLC and host omputer and also discusses how to use the RS232 communication port to realize the communication between PC and PLC. Thisprogram has been successfully applied in the frequency control of vibration mill. Key words: Host computer, PLC, Serial communication, VC++6.0,Vibration mill 1.引 言 當(dāng)今,在自動(dòng)化的工業(yè)生產(chǎn)中,變頻控制往往與計(jì)算機(jī)遠(yuǎn)程控制相聯(lián)系在一起,從而實(shí)現(xiàn)電機(jī)的遠(yuǎn)程變頻控制??删幊绦蚩刂破飨到y(tǒng)不僅可作為單一的機(jī)電控制設(shè)備,而且作為通用的自動(dòng)控制設(shè)備,也被大量地用于過(guò)程工業(yè)的自動(dòng)控制。歐姆龍最新推出的可編程控制器SYSMAC CP1H,具有“高度擴(kuò)張性”的端子臺(tái)型一體化[1]。與以往產(chǎn)品CPM2A 40 點(diǎn)輸入輸出型為相同尺寸,但處理速度可達(dá)到約10倍的性能。本課題通過(guò)控制機(jī)(即為PLC)設(shè)定比例運(yùn)行參數(shù),然后控制機(jī)通過(guò)D/A轉(zhuǎn)換模件發(fā)出控制變頻調(diào)速器的指令,使變頻調(diào)速器帶動(dòng)振動(dòng)磨電機(jī)按輸入的速度和時(shí)間運(yùn)轉(zhuǎn)?;贠MRON PLC的鏈接通信(有通信協(xié)議),我們采用功能強(qiáng)大的Visual C++6.0語(yǔ)言來(lái)實(shí)現(xiàn)這種小型集散控制系統(tǒng)的上、下位機(jī)的通信和友好的監(jiān)控界面,實(shí)現(xiàn)了上位機(jī)與PLC間的通信。 2.通訊軟件的設(shè)計(jì) 在本項(xiàng)目中,上位機(jī)選用計(jì)算機(jī), 下位機(jī)選用日本Omron公司的CP1H系列XA40DR-A可編程序控制器。在計(jì)算機(jī)外設(shè)中,RS-232串口因?yàn)槠浣M成方式簡(jiǎn)單,編程控制方便而成為應(yīng)用最為廣泛的I/O通道之一。32 位下串口通信程序通常采用兩種方法實(shí)現(xiàn):一是利用ActiveX控件; 二是使用API通信函數(shù)。使用ActiveX控件, 程序?qū)崿F(xiàn)非常簡(jiǎn)單, 結(jié)構(gòu)清晰,缺點(diǎn)是欠靈活; 使用API通信函數(shù)的優(yōu)缺點(diǎn)則基本上相反[2]。VC++6.0的MSComm是Microsoft 公司提供的簡(jiǎn)化Windows 下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過(guò)串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法,筆者采用了這種方法。其端口接線見(jiàn)附圖。
2.1 上位機(jī)與PLC的通訊協(xié)議 HOST Link系統(tǒng)使用HOST Link 通信協(xié)議進(jìn)行通信,上位機(jī)具有傳送優(yōu)先權(quán),總是首先發(fā)出命令并啟動(dòng)通信,HOST Link 通信單元收到命令交由PLC執(zhí)行,然后將執(zhí)行結(jié)果返回上位機(jī),兩者以幀為單位輪流交換數(shù)據(jù)。 2.2 上位機(jī)的PLC鏈接通訊 通信時(shí)一組傳送的數(shù)據(jù)稱為塊,它是命令或響應(yīng)的單位,從上位機(jī)發(fā)送到HOSTLink 單元的數(shù)據(jù)稱為命令塊,相應(yīng)的,從HOSTLink單元發(fā)送到上位機(jī)的數(shù)據(jù)稱為響應(yīng)塊。多點(diǎn)通信時(shí),單幀發(fā)送的最大數(shù)據(jù)塊為131 個(gè)字符,因此當(dāng)一個(gè)數(shù)據(jù)塊含有132 個(gè)或更多字符時(shí),要分成兩幀或多幀進(jìn)行發(fā)送。多幀發(fā)送時(shí)中間幀的格式為:正文、FCS、分界符。起始幀、中間幀的長(zhǎng)度為131 ,結(jié)束幀的長(zhǎng)度最多為131 個(gè)字符。 Omron系列的PLC 通過(guò)RS232 口與主機(jī)通信有兩種方式,第一種是由上位機(jī)向PLC 發(fā)送初始命令,第二種是由PLC 向上位機(jī)發(fā)送初始命令[3]。在監(jiān)測(cè)系統(tǒng)中一般采用第一種方式。有關(guān)通信協(xié)議如下所述: 2.2.1上位機(jī)→PLC 的命令格式 其中: (1)@為起始標(biāo)志符; (2)N2 、N1 為PLC 節(jié)點(diǎn)標(biāo)志碼,由兩位十進(jìn)制數(shù)表示,它們用來(lái)指定與上位機(jī)通信的PLC。而PLC 自己的通信節(jié)點(diǎn)碼可由它的DM6648 和DM6653 來(lái)設(shè)置; (3)CMD2 、CMD1 為兩字節(jié)命令碼; (4)MT 為命令內(nèi)容,用來(lái)設(shè)置具體的命令參數(shù); (5)V2、V1 為兩字節(jié)的幀校驗(yàn)碼,它是從開(kāi)始符“@”到MT碼結(jié)束的所有字符的ASCII 碼按位異或的結(jié)果; 幀校驗(yàn)和是一個(gè)轉(zhuǎn)換成2 個(gè)ASCII 字符的8 位數(shù)據(jù)。它把幀中每一個(gè)字符順序地進(jìn)行異或操作而得到的結(jié)果,即把幀的第一個(gè)字符到正文結(jié)束的所有字符轉(zhuǎn)換成二進(jìn)制形式的ASCII 碼后,逐個(gè)異或而得到的[4]。當(dāng)發(fā)送命令時(shí),將其加在命令格式中,作為幀的一部分發(fā)送到接收端。當(dāng)接收數(shù)據(jù)時(shí),按上述步驟重新計(jì)算FCS ,當(dāng)計(jì)算結(jié)果與數(shù)據(jù)塊中所帶的FCS 相同時(shí),說(shuō)明傳輸無(wú)誤,否則,說(shuō)明接收到的數(shù)據(jù)不正確。 (6)“*”和“CR”兩字符表示命令結(jié)束。 例如,@00WD00060500表示寫(xiě)一個(gè)數(shù)500到節(jié)點(diǎn)為0的PLC的DM0006中。 2.2.2 PLC→上位機(jī)的響應(yīng)格式
其中S2 、S1 為命令結(jié)束狀態(tài)碼,如00 表示正常結(jié)束,01 表示RUN 模態(tài)下PLC 無(wú)法完成上位機(jī)命令,其余符號(hào)代碼意義同上。實(shí)現(xiàn)上位機(jī)與HOST Link 通信單元的通信只需編寫(xiě)上位機(jī)程序,因?yàn)镠OST Link 通信單元自身帶有通信程序,上位機(jī)下發(fā)命令,地址相符的PLC 自動(dòng)上傳響應(yīng)幀,所以這一部分程序不需要客戶編寫(xiě),但是,編寫(xiě)上位機(jī)的通信程序時(shí),通信參數(shù)的設(shè)置必須保證與PLC 的通信參數(shù)一致性。 3.用VC++6.0編寫(xiě)串行通信程序 首先建立一個(gè)基于對(duì)話框的MFC應(yīng)用程序SCommTest,支持ActiveX控件,電話形狀的控件是在系統(tǒng)中注冊(cè)過(guò)的MicrosoftCommunications Control, version 6.0,接受缺省的選項(xiàng)。 1.打開(kāi)串口設(shè)置串口參數(shù) 在主對(duì)話框CSCommTestDlg::OnInitDialog()中打開(kāi)串口,加入如下代碼: if(m_ctrlComm.GetPortOpen()) m_ctrlComm.SetPortOpen(FALSE); m_ctrlComm.SetCommPort(1); //選擇com1 i f ( ! m _ c t r l C o m m . G e t P o r t O p e n ( ) ) m _ c t r l C o m m . SetPortOpen(TRUE);//打開(kāi)串口 else AfxMessageBox("cannot open serial port"); m_ctrlComm.SetSettings("9600,E,7,2"); //波特率9600,偶校驗(yàn),7個(gè)數(shù)據(jù)位,2個(gè)停止位m_ctrlComm.SetInputModel(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.SetInputLen(0); //設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長(zhǎng)度為0 m_ctrlComm.GetInput();//先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù) 2.發(fā)送數(shù)據(jù) 為發(fā)送按鈕添加一個(gè)單擊消息BN_CLICKED處理函數(shù),選擇IDC_BUTTON_MANUALSEND,添加OnButtonManualsend()函數(shù),并在函數(shù)中添加如下代碼: UpdateData(TRUE); //讀取編輯框內(nèi)容 SendData(m_strTXData1,6); // m_strTXData1表示發(fā)送速度命令的具體數(shù)值,6表示寫(xiě)數(shù) 據(jù)的地址DM0006 Sleep(100); SendData(m_strTXData2,12); //m_strTXData1表示發(fā)送時(shí)間命令的具體數(shù)值,12表示寫(xiě)數(shù)據(jù)的地址DM0012 3.發(fā)送命令 按照命令格式,本課題主要發(fā)送兩個(gè)WD命令: (1)數(shù)據(jù)采用十進(jìn)制發(fā)送,向DM0006中寫(xiě)入速度指令; (2)數(shù)據(jù)采用十進(jìn)制發(fā)送,向DM0012中寫(xiě)入時(shí)間指令。部分程序如下: Void CSCommTestDlg::SendData(int m_TobeSend,intm_address) { CByteArray Array; unsigned char auchMsg[45]={0} auchMsg[0]=64; // 起始標(biāo)志符 auchMsg[1]=0x0; //節(jié)點(diǎn)號(hào) auchMsg[2]=0x0; auchMsg[3]=‘W‘; //命令符 auchMsg[4]=‘D‘; auchMsg[5]=m_address/1000; auchMsg[6]=(m_address%1000)/100; auchMsg[7]=(m_address%100)/10; auchMsg[8]=m_address%10; auchMsg[9]=m_TobeSend/1000; auchMsg[10]=(m_TobeSend%1000)/10; auchMsg[11]=(m_TobeSend%100)/10; auchMsg[12]=m_TobeSend%10; LRC(auchMsg,13); //auchMsg[13] ,auchMsg[14] ,保存FCS值 auchMsg[15]=‘*‘; //命令結(jié)束符 auchMsg[16]=13; Array.RemoveAll(); for (Count=0;Count<17;Count++) Array.Add(auchMsg[Count]); m _ c t r l C o m m . S e t O u t p u t ( C O l e Va r i a n t ( A r r a y ) ) ; 4.計(jì)算校驗(yàn)碼函數(shù) unsigned char uchLRC = 0 ; 初始值設(shè)定 while (usDataLen——) {uchLRC ︿= *auchMsg++; } unsigned char high=0xF0; //high為校驗(yàn)碼的高位 unsigned char low=0x0F; //low為校驗(yàn)碼的低位 high&=uchLRC; low&=uchLRC; high>>=4;右移四位 if(high<=9) high=high+48; else high=high+55; if(low<=9) low=low+48; else low=low+55; *auchMsg++=high; *auchMsg++=low; 四.結(jié)束語(yǔ) 此程序在VC++6.0中運(yùn)行通過(guò),并成功應(yīng)用于振動(dòng)磨的控制中。該系統(tǒng)采用OMRON XA40DR-A PLC與上位機(jī)連接組成控制系統(tǒng),上位機(jī)通過(guò)串行口向PLC發(fā)出寫(xiě)命令及數(shù)據(jù),PLC接受數(shù)據(jù)后,通過(guò)D/A轉(zhuǎn)換模塊,將模擬量發(fā)給變頻器,從而實(shí)現(xiàn)了振動(dòng)磨振動(dòng)速度和時(shí)間的控制。 參考文獻(xiàn) [1]OMRON公司.CP1H操作手冊(cè).2005 [2]萬(wàn)曼影.視窗環(huán)境下歐姆龍PLC的實(shí)時(shí)通信.微處理 機(jī).2004(6) [3]何華東,趙喜榮.PLC與上位計(jì)算機(jī)的串行通信程序設(shè) 計(jì).機(jī)電工程.2002(6) [4]OMRON公司.CPM編程手冊(cè).2003 基金項(xiàng)目:國(guó)家自然科學(xué)基金資助項(xiàng)目(編號(hào):50575147) 作者簡(jiǎn)介:蘇丹(1982-),女,在讀碩士; 王樹(shù)林(1951—),男,教授,博士生導(dǎo)師。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:油液污染度檢測(cè)儀動(dòng)態(tài)校準(zhǔn)試...

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

中國(guó)傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)