国产视频一区二区在线,五月伊人av,色哟哟中文,久久玲五月,七久久久久,你懂的在线视频,日韩精品第一页,青青草好色叼,日韩午夜在线三级片

技術頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 上位機與PLC通信與實時控制的實現(xiàn)

上位機與PLC通信與實時控制的實現(xiàn)

時間:2008-01-08 15:14:00來源:dujing

導語:?在工業(yè)控制中,可編程控制器(PLC)由于控制能力強、體積小、抗干擾能力強、可靠性高、使用極為方便等優(yōu)點而得到了廣泛的應用,已經成為現(xiàn)代工業(yè)控制的主要技術平臺之一
1 引言   在工業(yè)控制中,可編程控制器(PLC)由于控制能力強、體積小、抗干擾能力強、可靠性高、使用極為方便等優(yōu)點而得到了廣泛的應用,已經成為現(xiàn)代工業(yè)控制的主要技術平臺之一。實際應用中往往需要利用PC機對PLC控制程序中的少量參數(shù)進行設置或修改,這樣就需要解決PC機與PLC進行通信的問題。本文以PLC在罐蒸呢機控制系統(tǒng)中與上位機PC之間通信的實際應用為基礎,探討了PLC與PC機通信問題。系統(tǒng)框圖如圖1所示:
2 方案概述   罐蒸呢機是在紡織行業(yè)當中應用較多的設備,其工作流程為:打開高壓釜的門;小車從高壓釜中退出;梁(軸)裝在星形件上;星形件轉動;梁裝在小車上;小車進入高壓釜;高壓釜門關閉;在高壓釜中循環(huán)。   在罐蒸呢機的控制當中,采用西門子S7-200系列的PLC可滿足要求,在系統(tǒng)造價方面要求盡量低。上位機方面:需要控制的數(shù)據不是很多,采用專門的組態(tài)軟件成本太高?;谶@種思路,我們在上位機上采用VC++編制串口通訊程序進行數(shù)據的傳輸、控制。   一般S7-200系列通信端口分為四種工作方式:PPI,MPI,PROFIBUS和自由口通 信。其中PPI模式只能在PLC停止方式(STOP)下通信,而自由口模式只能在PLC運行方式(RUN)下通信。CPU的串行通信口可由用戶程序控制,這種操作方式稱之為自由口模式。當選擇自由口模式時,用戶程序即可以通過發(fā)送中斷、接收中斷、發(fā)送指令(XMT)和接收指令(RCV)來控制串行通信口的運行。在自由口模式下,通信協(xié)議完全由用戶程序來控制。   由于在自由端口模式下,通信協(xié)議可完全由梯形圖程序控制,還可使用接收中斷、發(fā)送中斷、發(fā)送指令和接受指令來控制通信操作,因而選用自由口通信方式。   3 上位機(PC)控制程序編程   3.1 初始化   上位機的控制程序的編寫按照如下步驟進行:  ?。?) 建立基于對話框的MFC應用程序;  ?。?) 在對話框中插入MSComm控件;  ?。?) 利用ClassWizard定義CMSComm類控制對象;   (4) 在對話框中添加MSComm控件,并賦予變量;  ?。?) 打開串口、設置參數(shù):需要完成的任務是選擇、打開串口,規(guī)定波特率,校驗類型,數(shù)據位、停止位等一些控制信息;   if(m_ctrlComm.GetPortOpen())   m_ctrlComm.SetPortOpen(FALSE);   m_ctrlComm.SetCommPort(1); //選擇com1   if( !m_ctrlComm.GetPortOpen())   m_ctrlComm.SetPortOpen(TRUE);   //打開串口   else   AfxMessageBox("cannot open serial port");   m_ctrlComm.SetSettings("9600,n,8,1");   //波特率9600,無校驗,8個數(shù)據位,1個停止位   //在該處的設置要同下位機的通訊參數(shù)相匹配,一般根據下位機的具體情況設定   m_ctrlComm.SetInputMode(1);   //1:表示以二進制方式檢取數(shù)據   m_ctrlComm.SetRThreshold(1);   //SetRThreshold(1);   //參數(shù)1表示當串口接收緩沖區(qū)中有大于等于1個字符時將引發(fā)接收數(shù)據的OnComm事件   m_ctrlComm.SetInputLen(0);   //設置當前接收區(qū)數(shù)據長度為0   m_ctrlComm.GetInput();   //先預讀緩沖區(qū)以清除殘留數(shù)據  ?。?) 添加串口事件消息處理函數(shù)OnComm。 這個函數(shù)是用來處理串口消息事件的,即每當串口接收到數(shù)據,就會產生一個串口接收數(shù)據緩沖區(qū)中有字符的消息事件,就會執(zhí)行剛才添加的函數(shù),在OnComm()函數(shù)中加入相應的處理代碼就能實現(xiàn)自己想要的功能。   3.2 控制數(shù)據的處理   對控制數(shù)據進行存儲操作,編程時給控制量賦初值即默認值,每次運行上位機控制程序時將控制數(shù)據讀出并送給相應的控制單元,即使是第一次運行該程序,點擊"運行"也能將控制數(shù)據從文件中取出并同步下達到下位機;以后每次更改控制數(shù)據時就將該控制數(shù)據進行保存,作為新的默認控制數(shù)據,以備以后啟動設備時使用。   在這里我們要實現(xiàn)的功能是控制下位機的啟動和停止,以及三個定時器的定時長度的給定。所發(fā)送的數(shù)據包括下位機的起停標志,3個定時器定時長度和控制信息結束標志。需要注意的是在控制信息的結尾要添加結束標志,該結束標志在PLC上規(guī)定,需要上位機配合,作用是下位機接收到該標志以后產生接收完成中斷,從而響應上位機的控制。具體操作如下:   發(fā)送數(shù)據:由發(fā)送按鈕觸發(fā)一個單擊消息,用以讀取編輯框的內容,將讀取的數(shù)據保存到文件當中,并向串口發(fā)送數(shù)據。   UpdateData(TRUE); //讀取編輯框內容   CFile OutFile;   OutFile.Open(pFileName,CFile::modeCreate|CFile::modeWrite);   OutFile.SeekToEnd();   CArchive ar(&OutFile,CArchive::store);   UpdateData(true);   ar << m_strTXData<<   ar.Close();   OutFile.Close(); //文件關閉   CtrlData=MachineState+m_strTXData+m_strTXData2   +m_strTXData3+EndFlag; & nbsp; //控制數(shù)據   MessageBox("發(fā)送給定數(shù)據?","發(fā)送提示!",0+48+512);//添加消息提示框   m_ctrlComm.SetOutput(COleVariant(CtrlData));   //發(fā)送數(shù)據   CtrlData="";   另外,啟動、停止按鈕也會觸發(fā)單擊消息,處理方法跟上述發(fā)送數(shù)據的過程相似,只是在處理時要首先置位MachineState,啟動時置1,停止時置0,用來啟動或停止設備;而且不再對保存控制數(shù)據的文件進行操作。   4 下位機(PLC)控制程序編程   4.1 初始化   設定串口的通訊參數(shù)。接收完成以及發(fā)送完成都要產生中斷,中斷號分別為9、23。   main:   NETWORK 1   LD SM0.1   MOVB 16#09, SMB30 //自由口參數(shù):無校驗,8位數(shù)據位,波特率9600,自由口通信;   MOVB 16#B0, SMB87   //接收信息控制,啟動接收功能,檢測信息結束標志;   MOVB 16#2A, SMB89   //定義信息結束標志,與上位機配合;   MOVW +5, SMW90   //空閑行時間期限,單位微秒;   MOVB 100, SMB94 //接收字符數(shù)目最大值   ENI //開中斷   ATCH INT_0, 23 //接收中斷連接   ATCH INT_2, 9 //發(fā)送中斷連接   RCV VB100, 0   4.2 控制主程序   NETWORK 1   LDB= VB101, 16#31   //檢測到要求起動機器的控制信息,轉入開動操作   LPS   S V10.0,1 //設置啟動標志位   A V10.0 //檢測啟動標志位   A I0.1 //檢測輸入是否為1   TON T51, VW600   //若各條件具備,啟動定時器,其定時參數(shù)由上位機給定   A T51   A V10.0   //若定時到并且下位機處于啟動狀態(tài),置位輸出Q0.4   = Q0.4   NETWORK 2   LDB= VB101, 16#30   A V10.0   S V10.0, 1   這段程序將接收到的控制數(shù)據的啟動、停止控制位進行判斷,根據判斷的結果決定啟動還是停止設備;在這段程序里面還將上位機發(fā)送的時間數(shù)據送給定時器;這樣上位機就能實時控制下位機的起停,并且能實時的對定時器的定時長度進行修改,實現(xiàn)遠程控制。   4.3 中斷處理   INT_0:   //接收完成中斷如果接收狀態(tài)顯示接受到結束字符,連接一個10ms定時器   // 發(fā)發(fā)送,同時將接收到的控制信息中的控制數(shù)據部分進行轉換,以便后續(xù)程序的應用   LDB= SMB86,16#20   MOVB 10,SMB34   BTI VB102, VW600   //數(shù)據轉換,由ASCII轉換為整型數(shù)據   -I 16#0030, VW60 0   //將整型數(shù)據進行運算得出操作者見到的數(shù)據  ?。狪 +10, VW600   ATCH 1,10   CRETI   NOT   RCV VB100,0   //如果接收完成,然后啟動一個新的接收   在這段程序中將接收到的數(shù)據信息部分進行轉換和運算。因為默認的下位機接收和發(fā)送的數(shù)據都是文本信息,格式為ASCII碼值,所以如果想得到用戶在上位機上給定值轉換成為整數(shù),然后將這些數(shù)據用于控制。   4.4 注意事項   在編程時有一點應該注意:那就是接收和發(fā)送兩種模式之間的切換時間,因為用485通訊口進行通訊時,發(fā)送結束后不能立即轉為接收模式,有一個反應時間。所以在接收完成后如果要接著發(fā)送數(shù)據的話,需要設一個定時器,延遲一段時間以后再進行發(fā)送操作,反之亦然。主程序及各中斷服務程序流程圖如圖2所示:
  5 結束語   上位機的運行界面如圖3所示,在該界面下就能實現(xiàn)對下位機的啟動、停止控制,以及對控制參數(shù)的修改,并可實現(xiàn)參數(shù)的在線修改。
  在該工程中控制對象的控制點數(shù)不是很多,人機交互也不是很多,功能相對獨立,能夠獨立組成一個小系統(tǒng)。在這種情況下該方案能有效節(jié)約投資,簡化控制,維護方便,操作簡單,且能保證控制系統(tǒng)的實時性,在小型控制系統(tǒng)尤其是需要交互的數(shù)據不太多的情況下,優(yōu)勢較為明顯。

標簽:

點贊

分享到:

上一篇:基于LabVIEW的電能質量校驗裝...

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

傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(m.cqlanhua.cn)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。

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

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

傳動網-工業(yè)自動化與智能制造的全媒體“互聯(lián)網+”創(chuàng)新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2026 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

宁德市| 峡江县| 慈溪市| 香河县| 昌都县| 三亚市| 阿拉善盟| 台北市| 安乡县| 南平市| 大宁县| 荔浦县| 宽甸| 莆田市| 马龙县| 威海市| 台中市| 浦城县| 自治县| 兴城市| 双桥区| 罗城| 肥西县| 永州市| 苗栗县| 台州市| 永城市| 香港| 南京市| 洪江市| 渝北区| 弥渡县| 育儿| 九江县| 广饶县| 神农架林区| 通辽市| 内乡县| 邓州市| 桐柏县| 苍山县|