<wbr id="pbjqz"><pre id="pbjqz"><noscript id="pbjqz"></noscript></pre></wbr>

            <nav id="pbjqz"></nav>
              <wbr id="pbjqz"><legend id="pbjqz"><video id="pbjqz"></video></legend></wbr>

              PLC技術資料
                上位機與PLC通信與實時控制的實現
                發布者:用戶投稿  發布時間:2008/4/25 13:53:16

                1  引言


                    在工業控制中,可編程控制器(PLC)由于控制能力強、體積小、抗干擾能力強、可靠性高、使用極為方便等優點而得到了廣泛的應用,已經成為現代工業控制的主要技術平臺之一。實際應用中往往需要利用PC機對PLC控制程序中的少量參數進行設置或修改,這樣就需要解決PC機與PLC進行通信的問題。本文以PLC在罐蒸呢機控制系統中與上位機PC之間通信的實際應用為基礎,探討了PLC與PC機通信問題。系統框圖如圖1所示:

                2  方案概述


                    罐蒸呢機是在紡織行業當中應用較多的設備,其工作流程為:打開高壓釜的門;小車從高壓釜中退出;梁(軸)裝在星形件上;星形件轉動;梁裝在小車上;小車進入高壓釜;高壓釜門關閉;在高壓釜中循環。


                    在罐蒸呢機的控制當中,采用西門子S7-200系列的PLC可滿足要求,在系統造價方面要求盡量低。上位機方面:需要控制的數據不是很多,采用專門的組態軟件成本太高;谶@種思路,我們在上位機上采用VC++編制串口通訊程序進行數據的傳輸、控制。


                    一般S7-200系列通信端口分為四種工作方式:PPI,MPI,PROFIBUS和自由口通信。其中PPI模式只能在PLC停止方式(STOP)下通信,而自由口模式只能在PLC運行方式(RUN)下通信。CPU的串行通信口可由用戶程序控制,這種操作方式稱之為自由口模式。當選擇自由口模式時,用戶程序即可以通過發送中斷、接收中斷、發送指令(XMT)和接收指令(RCV)來控制串行通信口的運行。在自由口模式下,通信協議完全由用戶程序來控制。


                    由于在自由端口模式下,通信協議可完全由梯形圖程序控制,還可使用接收中斷、發送中斷、發送指令和接受指令來控制通信操作,因而選用自由口通信方式。

                3  上位機(PC)控制程序編程

                3.1  初始化
                    上位機的控制程序的編寫按照如下步驟進行:
                (1) 建立基于對話框的MFC應用程序;
                (2) 在對話框中插入MSComm控件;
                (3) 利用ClassWizard定義CMSComm類控制對象;
                (4) 在對話框中添加MSComm控件,并賦予變量;
                (5) 打開串口、設置參數:需要完成的任務是選擇、打開串口,規定波特率,校驗類型,數據位、停止位等一些控制信息;
                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個數據位,1個停止位
                //在該處的設置要同下位機的通訊參數相匹配,一般根據下位機的具體情況設定
                 m_ctrlComm.SetInputMode(1);
                //1:表示以二進制方式檢取數據
                 m_ctrlComm.SetRThreshold(1);
                //SetRThreshold(1);
                 //參數1表示當串口接收緩沖區中有大于等于1個字符時將引發接收數據的OnComm事件
                 m_ctrlComm.SetInputLen(0);
                //設置當前接收區數據長度為0
                 m_ctrlComm.GetInput();
                //先預讀緩沖區以清除殘留數據
                (6) 添加串口事件消息處理函數OnComm。 這個函數是用來處理串口消息事件的,即每當串口接收到數據,就會產生一個串口接收數據緩沖區中有字符的消息事件,就會執行剛才添加的函數,在OnComm()函數中加入相應的處理代碼就能實現自己想要的功能。

                [NextPage]
                3.2  控制數據的處理

                    對控制數據進行存儲操作,編程時給控制量賦初值即默認值,每次運行上位機控制程序時將控制數據讀出并送給相應的控制單元,即使是第一次運行該程序,點擊“運行”也能將控制數據從文件中取出并同步下達到下位機;以后每次更改控制數據時就將該控制數據進行保存,作為新的默認控制數據,以備以后啟動設備時使用。
                在這里我們要實現的功能是控制下位機的啟動和停止,以及三個定時器的定時長度的給定。所發送的數據包括下位機的起停標志,3個定時器定時長度和控制信息結束標志。需要注意的是在控制信息的結尾要添加結束標志,該結束標志在PLC上規定,需要上位機配合,作用是下位機接收到該標志以后產生接收完成中斷,從而響應上位機的控制。具體操作如下:
                發送數據:由發送按鈕觸發一個單擊消息,用以讀取編輯框的內容,將讀取的數據保存到文件當中,并向串口發送數據。
                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;    //控制數據
                 MessageBox("發送給定數據?","發送提示!",0+48+512);//添加消息提示框
                 m_ctrlComm.SetOutput(COleVariant(CtrlData));
                //發送數據
                 CtrlData="";
                    另外,啟動、停止按鈕也會觸發單擊消息,處理方法跟上述發送數據的過程相似,只是在處理時要首先置位MachineState,啟動時置1,停止時置0,用來啟動或停止設備;而且不再對保存控制數據的文件進行操作。

                4  下位機(PLC)控制程序編程

                4.1  初始化
                    設定串口的通訊參數。接收完成以及發送完成都要產生中斷,中斷號分別為9、23。
                main:
                NETWORK 1
                LD     SM0.1
                MOVB   16#09, SMB30  //自由口參數:無校驗,8位數據位,波特率9600,自由口通信;
                MOVB   16#B0, SMB87 
                //接收信息控制,啟動接收功能,檢測信息結束標志;
                MOVB   16#2A, SMB89 
                //定義信息結束標志,與上位機配合;
                MOVW   +5, SMW90   
                //空閑行時間期限,單位微秒;
                MOVB   100, SMB94    //接收字符數目最大值
                ENI    //開中斷
                ATCH   INT_0, 23      //接收中斷連接
                ATCH   INT_2, 9  //發送中斷連接
                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
                //若各條件具備,啟動定時器,其定時參數由上位機給定
                A      T51
                A      V10.0
                //若定時到并且下位機處于啟動狀態,置位輸出Q0.4
                =      Q0.4
                NETWORK 2
                LDB=   VB101, 16#30
                A      V10.0
                S      V10.0, 1
                    這段程序將接收到的控制數據的啟動、停止控制位進行判斷,根據判斷的結果決定啟動還是停止設備;在這段程序里面還將上位機發送的時間數據送給定時器;這樣上位機就能實時控制下位機的起停,并且能實時的對定時器的定時長度進行修改,實現遠程控制。

                [NextPage]
                4.3  中斷處理
                INT_0:   
                //接收完成中斷如果接收狀態顯示接受到結束字符,連接一個10ms定時器
                // 發發送,同時將接收到的控制信息中的控制數據部分進行轉換,以便后續程序的應用
                LDB= SMB86,16#20  
                MOVB 10,SMB34
                BTI     VB102, VW600     
                //數據轉換,由ASCII轉換為整型數據
                -I 16#0030, VW600    
                //將整型數據進行運算得出操作者見到的數據
                *I +10, VW600
                ATCH 1,10
                CRETI
                NOT
                RCV VB100,0  
                //如果接收完成,然后啟動一個新的接收
                    在這段程序中將接收到的數據信息部分進行轉換和運算。因為默認的下位機接收和發送的數據都是文本信息,格式為ASCII碼值,所以如果想得到用戶在上位機上給定值轉換成為整數,然后將這些數據用于控制。


                4.4  注意事項
                    在編程時有一點應該注意:那就是接收和發送兩種模式之間的切換時間,因為用485通訊口進行通訊時,發送結束后不能立即轉為接收模式,有一個反應時間。所以在接收完成后如果要接著發送數據的話,需要設一個定時器,延遲一段時間以后再進行發送操作,反之亦然。主程序及各中斷服務程序流程圖如圖2所示:

                5  結束語
                    上位機的運行界面如圖3所示,在該界面下就能實現對下位機的啟動、停止控制,以及對控制參數的修改,并可實現參數的在線修改。

                 在該工程中控制對象的控制點數不是很多,人機交互也不是很多,功能相對獨立,能夠獨立組成一個小系統。在這種情況下該方案能有效節約投資,簡化控制,維護方便,操作簡單,且能保證控制系統的實時性,在小型控制系統尤其是需要交互的數據不太多的情況下,優勢較為明顯。

                版權聲明PLC信息網轉載作品均注明出處,本網未注明出處和轉載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內容的真實性。如轉載作品侵犯作者署名權,或有其他諸如版權、肖像權、知識產權等方面的傷害,并非本網故意為之,在接到相關權利人通知后將立即加以更正。聯系電話:0571-87774297。
              0571-87774297  
              免费人成激情视频在线看