亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        西門(mén)子S7—200PLC自由口通訊的兩種Delphi實(shí)現(xiàn)方法

        2014-12-31 00:00:00肖珊
        電子世界 2014年10期

        【摘要】本文介紹了PC機(jī)與PLC實(shí)現(xiàn)自由口通信的兩種方法。上位機(jī)采用的是PC機(jī),利用Delphi6.0編寫(xiě)應(yīng)用程序,詳細(xì)對(duì)其中的兩種方式做了詳細(xì)說(shuō)明。下位機(jī)采用西門(mén)子公司的S7-200PLC,文中列出了相應(yīng)的程序說(shuō)明。

        【關(guān)鍵詞】計(jì)算機(jī)通信;PLC;Delphi;自由口通信

        1.引言

        隨著大規(guī)模和超大規(guī)模集成電路等微電子技術(shù)的迅猛發(fā)展,PLC作為一種新型高能的控制器已經(jīng)越來(lái)越廣泛地用于工業(yè)現(xiàn)場(chǎng)控制的各個(gè)領(lǐng)域,它有著高可靠性、低能耗、易操作、易安裝等優(yōu)點(diǎn)。但是,由于PLC的人機(jī)交互能力差,獨(dú)立的PLC不能完成工業(yè)控制流程的實(shí)時(shí)和動(dòng)態(tài)監(jiān)控,PC機(jī)與PLC的通訊就愈加顯得重要。通過(guò)PLC與PC機(jī)的通訊,使得個(gè)人計(jì)算機(jī)和其他智能控制設(shè)備交換數(shù)字信息,使系統(tǒng)形成一個(gè)統(tǒng)一的整體,方便實(shí)現(xiàn)分散控制和集中管理。

        2.S7-200的通信與PC機(jī)的通信機(jī)理

        S7-200 PLC的CPU支持多種通信協(xié)議,包括:點(diǎn)到點(diǎn)接口協(xié)議(PPI)、多點(diǎn)接口協(xié)議(MPI)、Profibus協(xié)議、自由通信接口協(xié)議和USS協(xié)議。自由通訊口模式是S7-200PLC一個(gè)很有特色的功能,用戶(hù)可以通過(guò)用戶(hù)程序?qū)νㄐ趴谶M(jìn)行操作并且自己定義通信協(xié)議。應(yīng)用該通信方式,S7-200可以方便地和任何通信協(xié)議已知、具有串口的智能設(shè)備和控制器進(jìn)行通信。

        通過(guò)設(shè)定特殊存儲(chǔ)字節(jié)SMB30(端口0)或SMB130(端口1)允許自由口模式,設(shè)置它的波特率、奇偶校驗(yàn)和數(shù)據(jù)位數(shù)。用發(fā)送指令(XMT)和接收指令(RCV)對(duì)數(shù)據(jù)進(jìn)行通信操作。值得注意的一點(diǎn)是:只有在CPU處于RUN模式時(shí)才允許自由口模式,當(dāng)CPU處于STOP模式時(shí)自由口模式將自動(dòng)轉(zhuǎn)換為PPI協(xié)議模式。用反應(yīng)CPU模塊上的工作方式的特殊存儲(chǔ)器位SM0.7來(lái)控制自由口通訊方式的進(jìn)入,當(dāng)SM0.7為1時(shí)CPU處于RUN模式,可將通信口置為自由口模式。

        在PC機(jī)與PLC的通訊過(guò)程中,主要是由PC機(jī)發(fā)送信息來(lái)強(qiáng)制控制PLC的狀態(tài),接收PLC發(fā)送過(guò)來(lái)的信息來(lái)顯示控制狀態(tài)。PLC發(fā)送信息通過(guò)檢測(cè)SM4.5來(lái)每半分鐘發(fā)送有關(guān)PLC狀態(tài)的信息,以使PC機(jī)信息更新。

        3.下位機(jī)(PLC)實(shí)現(xiàn)

        對(duì)PLC的通信編程就是對(duì)串口進(jìn)行設(shè)置。當(dāng)CPU處于RUN模式時(shí),進(jìn)行自由口通信。

        3.1 端口的初始化

        4.上位機(jī)的Delphi實(shí)現(xiàn)

        Delphi是Borland公司推出的一種功能強(qiáng)大的高級(jí)編程語(yǔ)言,具有可視化面向?qū)ο蟮奶匦?。將Windows編程的復(fù)雜性封裝,實(shí)現(xiàn)可視化設(shè)計(jì)和Object Pascal語(yǔ)言的有機(jī)結(jié)合,特別適于在Windows環(huán)境下圖形界面和用戶(hù)程度的編制。Delphi的伸縮性很強(qiáng),控件功能強(qiáng)大,往往只需編寫(xiě)較少的代碼就可以實(shí)現(xiàn)較復(fù)雜的應(yīng)用。并且相對(duì)于WINCC、IFIX組態(tài)軟件,使用Delphi會(huì)降低很多成本。

        4.1 用第三方提供的控件MSComm實(shí)現(xiàn)

        首先要將Activex控件導(dǎo)入Delphi中:打開(kāi)主菜單[Component]選擇[Import ActiveX Control],選擇列表中的[Microsoft Comm Control 6.0]選項(xiàng)(安裝VB6.0后就可以看到這個(gè)選項(xiàng)),單擊Install按鈕,編譯后完成安裝,這時(shí),可以在Activex控件頁(yè)上看到一個(gè)電話圖標(biāo),這就是MSComm控件。

        新建一個(gè)Application項(xiàng)目,在主窗體Form1中添加一個(gè)MSComm控件后可進(jìn)行串行口的初始化。如設(shè)置COM口,設(shè)置發(fā)送、接收對(duì)列長(zhǎng)度、比特率、數(shù)據(jù)幀長(zhǎng)度、每次接受到字符即產(chǎn)生OnComm事件等[2]。

        4.2 用API函數(shù)實(shí)現(xiàn)串口通信

        在Windows系統(tǒng)下,由于應(yīng)用程序不能直接訪問(wèn)硬件,因此只能通過(guò)調(diào)用API(Application Programming Interface)函數(shù)來(lái)完成與下層設(shè)備的數(shù)據(jù)交換。操作系統(tǒng)為每個(gè)通信設(shè)備開(kāi)辟了用戶(hù)可定義大小的讀/寫(xiě)緩沖區(qū),數(shù)據(jù)進(jìn)出通信端口均由操作系統(tǒng)后臺(tái)完成,用戶(hù)只需調(diào)用API函數(shù)編寫(xiě)串行通信程序?qū)ψx/寫(xiě)緩沖區(qū)進(jìn)行操作而已。在Delphi中對(duì)串口編程的基本步驟是:

        首先,采用CreateFile函數(shù)打開(kāi)串行口,以確定本應(yīng)用程序?qū)Υ舜诘恼加袡?quán),并封鎖其它應(yīng)用程序?qū)Υ舜诘牟僮鳌?/p>

        其次,DCB中記錄有可定義的串行口參數(shù),設(shè)置串行口參數(shù)時(shí)必須先用GetCommState函數(shù)將系統(tǒng)默認(rèn)值填入DCB控制塊,然后再通過(guò)調(diào)用SetCommState函數(shù)配置串行口的波特率、數(shù)據(jù)位、校驗(yàn)位和停止位。

        然后通過(guò)ReadFile和WriteFile進(jìn)行串行口的讀寫(xiě)操作。

        最后用CloseHandle函數(shù)關(guān)閉串行口。

        4.3 多線程技術(shù)

        為了有效克服串口通信中的停滯和反應(yīng)不及時(shí)的情況,采用Delphi的多線程模式加以克服。

        在PC機(jī)中,同一時(shí)間只有一個(gè)線程在運(yùn)行。由于系統(tǒng)為每個(gè)線程劃分的時(shí)間片很?。?0毫秒左右),所以看上去是多個(gè)線程在同時(shí)運(yùn)行。進(jìn)程中的所有線程共享進(jìn)程的虛擬地址空間,這意味著所有線程都可以訪問(wèn)進(jìn)程的全局變量和資源。一方面為編程帶來(lái)了方便,但另一方面也容易造成沖突。所以,如果進(jìn)程既要進(jìn)行長(zhǎng)期的工作,又要響應(yīng)用戶(hù)的輸入,那么可以啟動(dòng)一個(gè)線程來(lái)專(zhuān)門(mén)負(fù)責(zé)費(fèi)時(shí)的工作,而主線程仍然可以與用戶(hù)進(jìn)行交互。對(duì)于通信程序這樣既要進(jìn)行耗時(shí)的工作,又要保持對(duì)用戶(hù)輸入響應(yīng)的應(yīng)用來(lái)說(shuō),使用多線程是最佳選擇。主要的處理邏輯如下:進(jìn)程一開(kāi)始先由主線程做一些必要的初始化工作,然后主線程根據(jù)需要在適當(dāng)時(shí)候建立通信監(jiān)視線程監(jiān)視通信口,當(dāng)指定的串行口事件發(fā)生時(shí),向主線程發(fā)送WM_COMMNOTIFY消息,主線程對(duì)其進(jìn)行處理。若不需要WM_COMMNOTIFY消息,則主線程終止通信監(jiān)視線程。

        多線程同時(shí)執(zhí)行,將會(huì)引起對(duì)共享資源的沖突。為避免沖突,就要用同步多線程對(duì)共享資源進(jìn)行訪問(wèn)。通過(guò)CraeteEvent()創(chuàng)建事件對(duì)象,使用SetEvent()或PulseEvent()函數(shù)將事件對(duì)象設(shè)置成信號(hào)同步。在應(yīng)用程序中,利用WaitforSingleObject()函數(shù)等待同步的觸發(fā),等到指定的事件被其它線程設(shè)置為有信號(hào)時(shí),才繼續(xù)向下執(zhí)行程序[3]。本系統(tǒng)采用上位機(jī)主動(dòng)的方式,將上位機(jī)與下位機(jī)的編程融為一體,不需要PLC內(nèi)部的梯形圖作為下位機(jī)程序,具有很好的通用性。

        5.結(jié)束語(yǔ)

        本文根據(jù)PLC和PC機(jī)的特點(diǎn),介紹了兩種PC機(jī)與PLC的基于Delphi通訊方法,用MScomm方法實(shí)現(xiàn)有封裝性、繼承性、多態(tài)性等特性,且編程簡(jiǎn)單;用API函數(shù)實(shí)現(xiàn)則有運(yùn)行效率高的特點(diǎn)。

        兩者各有其優(yōu)點(diǎn),無(wú)論是在系統(tǒng)的實(shí)時(shí)性、可靠性,還是在靈活性上均獲得了令人滿意的效果。

        參考文獻(xiàn)

        [1]李如甲.基于RS_485的智能儀表與PLC串行通訊[J].儀表技術(shù)與傳感器,2011,8:34-36.

        [2]王正強(qiáng).VC中應(yīng)用MSComm控件實(shí)現(xiàn)串口通信[J].電子測(cè)試,2010,5:73-76.

        [3]呂實(shí)誠(chéng).多線程技術(shù)在串口通信中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2010,2:74.

        [4]林盛.基于VC的PC與PLC自由口通訊[J].當(dāng)代化工, 2013,7:1015-1016.

        [5]吳帆.VB6.0與S7_200的自由口通訊研究[J].現(xiàn)代科學(xué)儀器,2011,1:48-51.

        av在线免费观看网站,| 久久一日本道色综合久久大香| 亚洲va精品va国产va| 国产精品自拍午夜伦理福利| 性猛交ⅹxxx富婆视频| 最近中文字幕mv在线资源| 精品久久综合一区二区| 在线免费观看毛视频亚洲精品 | 国产成a人亚洲精v品无码性色| 日韩在线视精品在亚洲| 91人妻一区二区三区蜜臀| 久久精品国产视频在热| 亚洲免费一区二区三区四区| 亚洲精品久久区二区三区蜜桃臀| 久久亚洲av永久无码精品| 免费人成视频网站在线| 日本免费一区二区三区在线播放| 国产一区内射最近更新| 国产精品一区二区在线观看99| 黑人一区二区三区啪啪网站| 国内久久婷婷六月综合欲色啪| 国产精成人品日日拍夜夜免费| 99热最新在线观看| 一区二区三区日本久久| 午夜精品久久久久久久久| 天堂一区人妻无码| 欧洲亚洲色一区二区色99| 亚洲av日韩专区在线观看| 麻豆一区二区三区蜜桃免费| y111111少妇影院无码| 一片内射视频在线观看| 国产一区二区视频在线免费观看| 亚洲av蜜桃永久无码精品| 亚洲精品中文字幕不卡在线| 自拍偷拍韩国三级视频| 亚洲精品色午夜无码专区日韩| 久久国产精品波多野结衣av| 日本经典中文字幕人妻| 国产婷婷色一区二区三区深爱网| 免费观看性欧美大片无片| 加勒比在线一区二区三区|