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.

主站蜘蛛池模板: 亚洲妓女综合网995久久| 精品国产亚洲人成在线| 色综合中文综合网| 国产一级片网址| 久久人体视频| 国产欧美在线视频免费| 国产喷水视频| 伊人色在线视频| 午夜国产在线观看| 欧美翘臀一区二区三区| 欧美人人干| 国产色网站| 日本免费a视频| 无码高潮喷水专区久久| 亚洲欧美日韩精品专区| 亚洲国产综合自在线另类| 色综合中文| 成年人视频一区二区| 特级毛片免费视频| 国产无码精品在线播放| 99热这里只有精品在线观看| 国产视频a| 亚洲欧美日本国产综合在线| 国产毛片高清一级国语| 日韩欧美国产中文| 国产精品无码影视久久久久久久 | 国产精品亚洲专区一区| 成人午夜天| 福利视频一区| 自慰高潮喷白浆在线观看| 国产精品成人不卡在线观看| 亚洲一区二区在线无码| 99在线观看精品视频| 亚洲人免费视频| 国产精品视频白浆免费视频| 国产手机在线小视频免费观看| 91成人精品视频| 香蕉久久国产超碰青草| 国产福利观看| 99偷拍视频精品一区二区| 免费无码网站| 亚洲欧美国产视频| 国产嫖妓91东北老熟女久久一| 国产另类乱子伦精品免费女| 九九这里只有精品视频| 日韩精品专区免费无码aⅴ| 国产成人三级在线观看视频| 国产日韩欧美成人| 色妞永久免费视频| 亚洲91在线精品| 秘书高跟黑色丝袜国产91在线 | 成人日韩欧美| 国产一级精品毛片基地| 噜噜噜久久| 中国毛片网| 欧美 亚洲 日韩 国产| 六月婷婷激情综合| 超薄丝袜足j国产在线视频| 国产色伊人| 国产精品成| 99国产精品国产高清一区二区| 九色国产在线| 色噜噜狠狠色综合网图区| 久久人体视频| 午夜啪啪网| 久久精品中文无码资源站| 99偷拍视频精品一区二区| 婷婷99视频精品全部在线观看| 扒开粉嫩的小缝隙喷白浆视频| 91麻豆国产视频| 欧美激情,国产精品| 国产精品手机视频| 成人无码区免费视频网站蜜臀| 青青操视频在线| 国内99精品激情视频精品| 99久久精品美女高潮喷水| 午夜久久影院| 免费久久一级欧美特大黄| 中文字幕日韩欧美| 亚洲精品天堂自在久久77| 欧美精品不卡| 国产一级α片|