999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

西門子S7—200PLC自由口通訊的兩種Delphi實現方法

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

【摘要】本文介紹了PC機與PLC實現自由口通信的兩種方法。上位機采用的是PC機,利用Delphi6.0編寫應用程序,詳細對其中的兩種方式做了詳細說明。下位機采用西門子公司的S7-200PLC,文中列出了相應的程序說明。

【關鍵詞】計算機通信;PLC;Delphi;自由口通信

1.引言

隨著大規模和超大規模集成電路等微電子技術的迅猛發展,PLC作為一種新型高能的控制器已經越來越廣泛地用于工業現場控制的各個領域,它有著高可靠性、低能耗、易操作、易安裝等優點。但是,由于PLC的人機交互能力差,獨立的PLC不能完成工業控制流程的實時和動態監控,PC機與PLC的通訊就愈加顯得重要。通過PLC與PC機的通訊,使得個人計算機和其他智能控制設備交換數字信息,使系統形成一個統一的整體,方便實現分散控制和集中管理。

2.S7-200的通信與PC機的通信機理

S7-200 PLC的CPU支持多種通信協議,包括:點到點接口協議(PPI)、多點接口協議(MPI)、Profibus協議、自由通信接口協議和USS協議。自由通訊口模式是S7-200PLC一個很有特色的功能,用戶可以通過用戶程序對通信口進行操作并且自己定義通信協議。應用該通信方式,S7-200可以方便地和任何通信協議已知、具有串口的智能設備和控制器進行通信。

通過設定特殊存儲字節SMB30(端口0)或SMB130(端口1)允許自由口模式,設置它的波特率、奇偶校驗和數據位數。用發送指令(XMT)和接收指令(RCV)對數據進行通信操作。值得注意的一點是:只有在CPU處于RUN模式時才允許自由口模式,當CPU處于STOP模式時自由口模式將自動轉換為PPI協議模式。用反應CPU模塊上的工作方式的特殊存儲器位SM0.7來控制自由口通訊方式的進入,當SM0.7為1時CPU處于RUN模式,可將通信口置為自由口模式。

在PC機與PLC的通訊過程中,主要是由PC機發送信息來強制控制PLC的狀態,接收PLC發送過來的信息來顯示控制狀態。PLC發送信息通過檢測SM4.5來每半分鐘發送有關PLC狀態的信息,以使PC機信息更新。

3.下位機(PLC)實現

對PLC的通信編程就是對串口進行設置。當CPU處于RUN模式時,進行自由口通信。

3.1 端口的初始化

4.上位機的Delphi實現

Delphi是Borland公司推出的一種功能強大的高級編程語言,具有可視化面向對象的特性。將Windows編程的復雜性封裝,實現可視化設計和Object Pascal語言的有機結合,特別適于在Windows環境下圖形界面和用戶程度的編制。Delphi的伸縮性很強,控件功能強大,往往只需編寫較少的代碼就可以實現較復雜的應用。并且相對于WINCC、IFIX組態軟件,使用Delphi會降低很多成本。

4.1 用第三方提供的控件MSComm實現

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

新建一個Application項目,在主窗體Form1中添加一個MSComm控件后可進行串行口的初始化。如設置COM口,設置發送、接收對列長度、比特率、數據幀長度、每次接受到字符即產生OnComm事件等[2]。

4.2 用API函數實現串口通信

在Windows系統下,由于應用程序不能直接訪問硬件,因此只能通過調用API(Application Programming Interface)函數來完成與下層設備的數據交換。操作系統為每個通信設備開辟了用戶可定義大小的讀/寫緩沖區,數據進出通信端口均由操作系統后臺完成,用戶只需調用API函數編寫串行通信程序對讀/寫緩沖區進行操作而已。在Delphi中對串口編程的基本步驟是:

首先,采用CreateFile函數打開串行口,以確定本應用程序對此串口的占有權,并封鎖其它應用程序對此串口的操作。

其次,DCB中記錄有可定義的串行口參數,設置串行口參數時必須先用GetCommState函數將系統默認值填入DCB控制塊,然后再通過調用SetCommState函數配置串行口的波特率、數據位、校驗位和停止位。

然后通過ReadFile和WriteFile進行串行口的讀寫操作。

最后用CloseHandle函數關閉串行口。

4.3 多線程技術

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

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

多線程同時執行,將會引起對共享資源的沖突。為避免沖突,就要用同步多線程對共享資源進行訪問。通過CraeteEvent()創建事件對象,使用SetEvent()或PulseEvent()函數將事件對象設置成信號同步。在應用程序中,利用WaitforSingleObject()函數等待同步的觸發,等到指定的事件被其它線程設置為有信號時,才繼續向下執行程序[3]。本系統采用上位機主動的方式,將上位機與下位機的編程融為一體,不需要PLC內部的梯形圖作為下位機程序,具有很好的通用性。

5.結束語

本文根據PLC和PC機的特點,介紹了兩種PC機與PLC的基于Delphi通訊方法,用MScomm方法實現有封裝性、繼承性、多態性等特性,且編程簡單;用API函數實現則有運行效率高的特點。

兩者各有其優點,無論是在系統的實時性、可靠性,還是在靈活性上均獲得了令人滿意的效果。

參考文獻

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

[2]王正強.VC中應用MSComm控件實現串口通信[J].電子測試,2010,5:73-76.

[3]呂實誠.多線程技術在串口通信中的應用[J].數字技術與應用,2010,2:74.

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

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

主站蜘蛛池模板: 无码专区在线观看| 国产自在线播放| 国产喷水视频| 欧美福利在线播放| 69视频国产| 精品自窥自偷在线看| 欧美成人第一页| 亚洲AV电影不卡在线观看| 波多野结衣中文字幕一区二区| 国产成人精品综合| 91无码人妻精品一区| 精品国产欧美精品v| 热99精品视频| 免费一级毛片| 玖玖免费视频在线观看| 国内精品小视频福利网址| 97成人在线视频| 波多野结衣久久精品| 四虎影视8848永久精品| 欧洲日本亚洲中文字幕| 欧美日韩国产综合视频在线观看 | a国产精品| 亚洲手机在线| 国产精品一区在线麻豆| 国产一级毛片高清完整视频版| 成人国产精品2021| 亚洲妓女综合网995久久| 国产黑丝视频在线观看| 妇女自拍偷自拍亚洲精品| 中文字幕 91| 日韩高清中文字幕| 黄色三级网站免费| 精品综合久久久久久97超人| 国产成人精品综合| 国产无码性爱一区二区三区| 亚洲无码熟妇人妻AV在线| 欧美综合中文字幕久久| 在线播放国产一区| 丁香婷婷久久| 国产一区三区二区中文在线| 亚洲美女一区二区三区| 一区二区三区四区在线| 免费午夜无码18禁无码影院| 97se亚洲综合在线韩国专区福利| 日韩无码视频专区| 日本高清在线看免费观看| 好吊妞欧美视频免费| 毛片卡一卡二| 456亚洲人成高清在线| 日韩av资源在线| 国产高清在线观看| 国产一区二区三区视频| 亚洲男人的天堂网| 毛片久久久| 无码一区中文字幕| 国产人人干| 久久天天躁夜夜躁狠狠| 国产97视频在线观看| 在线免费不卡视频| 久久永久视频| 午夜精品久久久久久久2023| 欧美天堂在线| 囯产av无码片毛片一级| 91欧美在线| 国产在线自揄拍揄视频网站| 午夜精品一区二区蜜桃| 天天爽免费视频| 狠狠做深爱婷婷综合一区| 欧美一级片在线| 国产福利观看| 亚洲av综合网| 91青青视频| 国产亚洲精久久久久久久91| 国产精品久久国产精麻豆99网站| 一级毛片在线免费看| 高清无码手机在线观看| 日本黄色不卡视频| 久久鸭综合久久国产| 爽爽影院十八禁在线观看| 欧美三级不卡在线观看视频| 久久黄色免费电影| 国产精品流白浆在线观看|