欧美极品jizzhd欧美,91精品久久一区二区三区,欧美乱妇无乱码大黄a片,欧美日韩国产一区在线看

PLC技術(shù)資料
    上位機與PLC通信與實時控制的實現(xiàn)
    發(fā)布者:用戶投稿  發(fā)布時間:2008/4/25 13:53:16

    1  引言


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

    2  方案概述


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


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


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


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

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

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

    [NextPage]
    3.2  控制數(shù)據(jù)的處理

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

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

    4.1  初始化
        設(shè)定串口的通訊參數(shù)。接收完成以及發(fā)送完成都要產(chǎn)生中斷,中斷號分別為9、23。
    main:
    NETWORK 1
    LD     SM0.1
    MOVB   16#09, SMB30  //自由口參數(shù):無校驗,8位數(shù)據(jù)位,波特率9600,自由口通信;
    MOVB   16#B0, SMB87 
    //接收信息控制,啟動接收功能,檢測信息結(jié)束標(biāo)志;
    MOVB   16#2A, SMB89 
    //定義信息結(jié)束標(biāo)志,與上位機配合;
    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
    //檢測到要求起動機器的控制信息,轉(zhuǎn)入開動操作
    LPS
    S      V10.0,1        //設(shè)置啟動標(biāo)志位
    A      V10.0    //檢測啟動標(biāo)志位
    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
        這段程序?qū)⒔邮盏降目刂茢?shù)據(jù)的啟動、停止控制位進行判斷,根據(jù)判斷的結(jié)果決定啟動還是停止設(shè)備;在這段程序里面還將上位機發(fā)送的時間數(shù)據(jù)送給定時器;這樣上位機就能實時控制下位機的起停,并且能實時的對定時器的定時長度進行修改,實現(xiàn)遠程控制。

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


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

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

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

    版權(quán)聲明PLC信息網(wǎng)轉(zhuǎn)載作品均注明出處,本網(wǎng)未注明出處和轉(zhuǎn)載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內(nèi)容的真實性。如轉(zhuǎn)載作品侵犯作者署名權(quán),或有其他諸如版權(quán)、肖像權(quán)、知識產(chǎn)權(quán)等方面的傷害,并非本網(wǎng)故意為之,在接到相關(guān)權(quán)利人通知后將立即加以更正。聯(lián)系電話:0571-87774297。
0571-87774297  
欧美大屁股喷潮水xxxx| 久久日本片精品AAAAA国产| 国内精品视频一区二区三区八戒| 男女男精品免费视频网站| 中国人体艺术视频| 激情综合色综合啪啪开心| 国产麻豆剧传媒精品国产av| 欧美成人精品第一区| 久久久综合香蕉尹人综合网| 一区二区三区在线视频视频| 欧美日韩一区二区深夜福利 | 无码专区一va亚洲v专| 丰满高跟丝袜老熟女久久| 日本欧美久久久久免费播放网| 国产性猛交╳xxx乱大交 | 日韩精品无码一区二区三区不卡 | 欧美性猛交aaaa片黑人| 亚洲成AV人片在线观看无 | 欧美成人精品第一区二区三区| 亚洲 中文 欧美 日韩 在线| 成人亚洲性情网站www在线观看| 我和黑帮老大的365天| 狠狠躁夜夜躁人人爽超碰97香蕉 | 91午夜国产在线观看 | 中文字幕无线码在线四区| 欧美国产成人精品二区芒果视频| 国产超碰AV人人做人人爽| 大白肥妇bbvbbw高潮| 日本无码小泬粉嫩有套在线| 亚洲国产日韩一区三区2| 憋尿快崩溃的时候注水| 成人三级精品视频在线观看| 五级黄高潮片90分钟视频| 女人被狂躁c到高潮视频| 一区二区性生活免费播放| 我的真實亂倫故事| 国产成人av无码一二三区| 夜月直播视频直播免费观看| 久久久久久a亚洲欧洲av冫 | 在线观看大片免费播放器| 精品97久久久久久久性|