<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
      首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
      中華工控網首頁
        P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
        D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
        電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
      在Windows下用Delphi開發微機與PLC的串行通信程序
      中華工控網
      收藏本文     查看收藏
      在Windows95下用Delphi開發微機與PLC的串行通信程序</P><P> 魯昌華 徐 穩</P><P>   摘 要:在Windows95下利用Delphi實現微機與PLC的串行通信的 幾種方法。<BR>   關鍵詞:串行通信 Delphi 動態鏈接庫DLL 構件 句柄 設備控制 塊DCB 可編程控制器 PLC</P><P>   在自動測量和控制系統中,常常需要在上位機(微機)和PLC(可編程控制器) 之間進行數據交 換和發送控制信號,串行通信是其主要手段,我們在開發一套自動測試系統時就是采用串行 通信的方法,即由上位機向PLC發送命令,控制其進行各種測試線路的切換。</P><P> 1 通信協議<BR>   在本系統中微機和PLC采用一對一通信連接,上位機作主局,PLC作子局。通信開始時由上位 機向PLC發出呼叫,PLC收到上位機的呼叫后應答,并返回應答信號,然后上位機發首標,PL C應答,接著上位機發數據塊,PLC應答,數據全部發完后上位機發一結束標志,至此上位機 與PLC的通信結束。<BR>   上述通信協議可用圖1描述<BR> <br><A HREF="/editor/uploadfiles/learns01/200310231641361147.gif" TARGET=_blank><IMG SRC="/editor/uploadfiles/learns01/200310231641361147.gif" border=0 alt=按此在新窗口瀏覽圖片 onload="javascript:if(this.width>580)this.width=580"></A></P><P> <BR> 該協議使用的傳輸控制字符有:<BR>   ENQ(查詢):在需要通信時作為發送方的請求。<BR>   ACK(認可):接收方給發送方的應答,表示正確接收信息包。<BR>   SOH(首標):表示要傳送的是首標。<BR>   ETB(數據結束):標志數據塊的結束。<BR>   STX(文本開始):標志數據塊的開始。<BR>   ETX(文本結束):標志文本塊的結束。<BR>   EOT(結束):表示傳送結束。<BR>   LRC:縱向冗余校驗碼,即對前面所有的傳輸碼進行異或計算。 </P><P> 2 Windows95下用Delphi實現串行通信<BR>   在Windows95環境下用Delphi3.0實現串行通信有3種方法:①使用VB的通信構件MSComm ;② 調用Windows95下的API函數來完成通信;③熟悉C/C++或其它語言的用戶可以將自己的程序 編譯鏈接為DLL(動態鏈接庫),這樣Delphi就可以調用DLL里的函數來通信。下面就這3種方 法分別加以討論。<BR> 2.1 使用VB通信構件<BR>   在使用VB構件之前,首先要將VB構件文件MSComm32.OCX安裝到Delphi的動態構件庫中。打開 主菜單Component選擇Import ActiveX Control...項,在彈出的對話框里選中Microsoft Co mm Control5.0(安裝VB5.0后必有此項),再單擊Install按鈕。此時Delphi載入VB構件文件并重新編譯DCL(Delphi Component Library)。編譯完成后,MSComm的小按鈕出現在ActiveX 頁中,這時程序就可以使用此 構件了。應該注意的是,安裝前要確保VB通信構件的控制文件MSComm32.OCX(在VB4.0以上版 本中)在編譯DCL之前已在\Windows\System下。接著向窗體中 添加1個MSComm構件并進行串行口的初始化,初始化子例程序如下:</P><P> Procedure TForm1.FormCreate(Sender:TObject);<BR> begin<BR> MSComm1.CommPort:=2; {使用COM2口為通信口}<BR> MSComm1.InBufferSize:=1024; {設定接收隊列長度為<BR> 1KB}<BR> MSComm1.OutBufferSize:=1024; {設定發送隊列長度為<BR> 1KB}<BR> MSComm1.Settings:=‘9600,N,8,1';{波特率9600b/s,無校驗,8個數據位,1 個停止位}<BR> MSComm1.InputLen:=0; {讀取整個接收緩沖區內容}<BR> MSComm1.InputBufferCount:=0; {清除接收緩沖區}<BR> MSComm1.PortOpen=:True; {打開串行口}<BR> End;<BR>   用Input屬性從接收對列讀入字符串:ReadBuffer:=MSComm1.Input;用Output屬性發送字 符串:MSComm1.Output:=WriteBuffer;然后根據上述通信協議,即可快速編制出通信軟件 。<BR> 2.2 調用Windows95下的API函數<BR>   Windows95對通信功能的支持非常強,它增加了一系列用于通信的API函數供用戶調用。同樣 ,要進行串行通信,也需要先對串口進行初始化。Windows95把串行口作為設備文件,對串 口操作就是對文件操作。因此,必須先為串口分配1個文件句柄,以后對串口操作都將通過 這個文件句柄來完成。初始化過程如下:<BR>   (1)調用CreateFile函數為串口分配1個文件句柄。<BR>   Var HComm:THandle;<BR>   HComm:=CreateFile(‘COM2',GENERICREAD or GENERICWRITE ,0,@NULL,OPENEXISTING,FILEFLAGOVERLAPPED,0);<BR>   如果對串行口1操作,用字符串COM1代替COM2即可。<BR>   (2)調用SetupComm函數設置串行口的輸入和輸出緩存區。<BR>   SetupComm(HComm,1024,1024);<BR>   (3)填充1個DCB(設備控制塊)結構來設置通信參數。通過調用GetCommState函數 獲得當前系統的DCB結構,按需要賦值給DCB的成員,如波特率、奇偶校驗、數據位、停止位 等,最后將創建后的DCB結構作為參數傳給SetCommState函數就可以初始化串口了。</P><P>   Var DCB:TDCB;<BR>   GetCommState(HComm,DCB);<BR>   BuildCommDCB(‘9600,N,8,1',DCB);<BR>   SetCommState(HComm,DCB);<BR>   (4)用PurgeComm函數來清除接收緩存區的內容。<BR>   PurgeComm(HComm,PurgeRXCLEAR);</P><P>   (5)串行口的初始化完成后,接下來的工作就是根據通信協議發送和接收串行口上的數據。R eadFile函數用于接收數據,WriteFile函數用于發送數據。</P><P>   Var<BR>   OverLapped:TOverLapped;<BR>   DataIn:Byte;<BR>   DataOut:Byte;<BR>   BufferSize:Integer;<BR>   COMSTAT cs;<BR>   ReadFile(HComm,DataIn,cs.cbInQue,BufferSize,@OverLapped);<BR>    {從串行口讀輸入緩存的字節,存入DataIn變量中}<BR>   WriteFile(HComm,DataOut,cs.cbOutQue,BufferSize,@OverLapped); <BR>    {向串行口寫輸出緩存的字節,要寫的數據存放在DataOut}<BR>   按照上述步驟,再根據前面的通信協議,即可完成串行通信。<BR> 2.3 調用其它語言編寫的DLL<BR>   由于這里所說的其它語言包含面很廣,可以是開發人員所熟悉的編程語言(只要其支持DLL即 可),如C和C++等,所以如何編寫DLL就不再詳述了。將編寫好的DLL進行編譯,然后把編譯 通過后的DLL放在\Windows\System子目錄下,在Delphi下打開1個單元文件,將DLL里的所 有函數在單元文件中聲明,格式如下:</P><P>   unit UnitName;<BR>   interface<BR>   procedure p1(param1:type1;param2:type2;...);stdcall;<BR>   external‘DLLName';<BR>   …<BR>   implementation<BR>   end</P><P>   其中UnitName為單元文件名,p1為調用過程名,param1、param2為參數名,type1、type2為 參數類型名,DLLName為DLL名。串行通信時,只要將此單元包含進編程單元就行了。</P><P> 3 結 論<BR>   對使用Delphi開發Windows95下與PLC進行串行通信程序的3種方法進行比較可以得出這樣的 結論:<BR>   (1)使用VB通信構件不但能夠實現API的所有功能,而且程序簡單明了。<BR>   (2)調用Windows95的API通信函數,可以設計和開發出各種通信軟件,但編程復雜。<BR>   (3)第3種方法適合那些熟悉其它編程語言的開發人員。<BR>   以上所有程序均在Windows95中文版下使用Delphi3.0調試通過。</P><P> 作者單位:合肥工業大學計算機系(230061)</P><P> 參考文獻</P><P>  1 李漢濤,楊長春.Windows下三線制串行通信的實現方法.電腦技 術,1998;(7)<BR>  2 王仲文譯.精通串行通信.北京:電子工業出版社</P><P>
       

      狀 態: 離線

      公司簡介
      產品目錄

      公司名稱: 中華工控網
      聯 系 人: 客服中心
      電  話: 0755-26546361
      傳  真: 0755-26585268
      地  址: 深圳市南山區創業路現代城華庭1棟6A
      郵  編: 518054
      主  頁:
       
      該廠商相關技術文摘:
      智能儀器儀表的發展特點與前景分析
      電動機性能虛擬儀器測試系統設計與實現
      視頻監控護航高鐵安全運營
      基于PLC,觸摸屏及變頻器對吹膜機的改造
      永宏PLC應用于自助圖書借還終端機
      基于永宏PLC的GSM通訊原理及其應用
      改善汽車生態學、安全性和舒適性,四大測試分析是關鍵
      改善汽車生態學、安全性和舒適性,四大測試分析是關鍵
      數控技術的發展趨勢及產業化
      數控技術發展戰略與發展途徑的思考
      用Energid 的軟件進行機器人的抓取和操作
      如何借助RFID技術升級企業信息管理水平
      更多文摘...
      立即發送詢問信息在線聯系該技術文摘廠商:
      用戶名: 密碼: 免費注冊為中華工控網會員
      請留下您的有效聯系方式,以方便我們及時與您聯絡

      關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
      工控網客服熱線:0755-86369299
      版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

      主站蜘蛛池模板: 在线涩涩免费观看国产精品 | 激情综合网激情综合| 中文亚洲成A人片在线观看| 亚洲乱理伦片在线观看中字| 国产99在线 | 免费| 国产欧美VA天堂在线观看视频| 久久综合色之久久综合色| 无套内谢少妇毛片aaaa片免费| 91一区二区三区蜜桃臀| 伊人色综合一区二区三区| 久草热在线视频免费播放| 亚洲成人av在线资源| 久久91综合国产91久久精品| 亚洲嫩模一区二区三区| 国产在线观看免费观看不卡| 少妇久久久被弄到高潮| 国产日韩乱码精品一区二区 | 国产精品久久露脸蜜臀| 欧美日韩精品一区二区三区高清视频| 精品国产人妻一区二区三区久久| 91制服丝袜国产高清在线| 高潮迭起av乳颜射后入| 色综合夜夜嗨亚洲一二区| 国产三级国产精品国产专| 亚洲熟妇熟女久久精品一区| 99热精品毛片全部国产无缓冲| 欧美日韩精品一区二区三区高清视频| 亚洲最大成人网色| 国产亚洲av夜间福利香蕉149| 综合色一色综合久久网| 四虎永久免费很黄的视频| 久热久视频免费在线观看| 99久久国产成人免费网站| 国产免费AV片在线看| 五月综合激情婷婷六月| av高清无码 在线播放| 国产精品福利午夜久久香蕉| 嗯灬啊灬把腿张开灬动态图| 天天澡日日澡狠狠欧美老妇| 国产精品久久精品| av永久免费网站在线观看|