西門子PLC怎么把16個BOOL變量用一個WORD型變量代替?
職場生存攻略 提高工作效率的8大必備軟件
Photoshop word Excel Dreamweaver
Else gb_PlcConnected = True MsgBox ("plc連接正確")6 b8 D; Z* c& C) o' j( s。
C Label1。Caption = buffer(0) * 256 + buffer(1) End If% ^, R5 U P _6 y( M: ?' j# n End Sub 通過以上程序可以正確讀出PLC中的數(shù)據(jù)。
之后可以擴展內(nèi)容,編寫一個監(jiān)控軟件。 w95_s7。dll,w95_s7。lib。w95_s7。j,komfort。dll,komfort。lib,komfort。h 用VB+PRODAVE做上位機 下面引用: 西門子S7-300系列PLC與PC機通信實現(xiàn)的研究 姜建芳 南京理工大學自動化系 摘要 本文主要介紹了在DELPHI和Microsoft Access數(shù)據(jù)庫開發(fā)環(huán)境下,PC機應用軟件與西 門子S7-300 系列PLC的數(shù)據(jù)通信的實現(xiàn)方法。
并把此方法應用于復雜控制系統(tǒng)的調(diào)試及PC 機管理系統(tǒng)與PLC控制系統(tǒng)的信息交換中。 關鍵字 DELPHI,PRODAVE,數(shù)據(jù)通信,可編程序控制器,MPI 1 引言 西門子工控產(chǎn)品在我國有較高的市場占有率,它的通信及網(wǎng)絡產(chǎn)品有著引導世界工控 技術潮流的作用,研究西門子工控產(chǎn)品及通信技術的實際應用問題有著廣泛普遍的重要意 義。
本文通過對某市級煙草公司的卷煙配送分揀系統(tǒng)的研究,探討了在Windows環(huán)境下,用 Delphi開發(fā)的數(shù)據(jù)庫應用軟件與西門子S7-300之間通信的實現(xiàn)問題。該卷煙配送分揀系統(tǒng) 計算機部分結構如圖1所示。 該系統(tǒng)管理計算機接收信息中心局域網(wǎng)發(fā)送來的各條送貨線路當天的訪銷
信息數(shù)據(jù), 在此基礎上管理計算機建立起以送貨線路為單位的配方數(shù)據(jù)庫,將配方數(shù)據(jù)分批次連續(xù)地 下傳給PLC。
PLC 根據(jù)下傳的配方數(shù)據(jù)對系統(tǒng)控制使其連續(xù)分揀和收集,同時系統(tǒng)工作狀態(tài) 及工作數(shù)據(jù)通過PROFIBUS 現(xiàn)場總線在兩個觸摸屏TP27-10得到動態(tài)顯示,最后在收集工位 自動得到一箱對應一個銷售網(wǎng)點的用戶配料。為了提高調(diào)系統(tǒng)試效率,我們在DELPHI和 Microsoft Access數(shù)據(jù)庫平臺上編寫了用于PLC控制程序的調(diào)試軟件。
從上看出該系統(tǒng)能否研制成功必須要解決的問題是:西門子S7-300系列PLC通訊協(xié)議不 公開,管理計算機和調(diào)試計算機上第三方軟件編制的程序如何實現(xiàn)PC機與西門子S7-300系 列PLC信息交換?通過技術調(diào)研和實際調(diào)試,我們成功實現(xiàn)了在VB、DELPHI程序開發(fā)平臺上 開發(fā)的管理程序及調(diào)試程序與S7-300系列PLC通信,順利完成了系統(tǒng)研制任務。
限于篇幅, 本文以調(diào)試軟件的通信實現(xiàn)方法來討論第三方應用軟件與西門子S7-300 PLC的通信問題。 中國工控信息網(wǎng) 7613。com 中國工控信息網(wǎng) 7613。com 收錄 2 調(diào)試軟件設計 根據(jù)PLC控制程序的調(diào)試要求,該調(diào)試軟件使用DELPHI的數(shù)據(jù)庫技術把事先設計的60個 配方數(shù)據(jù)寫入數(shù)據(jù)庫,根據(jù)調(diào)試需要也可通過人機界面對數(shù)據(jù)庫中的數(shù)據(jù)進行任意修改, 當執(zhí)行“下傳數(shù)據(jù)”命令時把數(shù)據(jù)庫中的數(shù)據(jù)字段進行一定數(shù)據(jù)處理后通過調(diào)用PRODAVE S7 軟件包寫入PLC中對應的DB(DATA BLOCKS)塊,其中一條記錄對應一個DB塊,每條記錄的 一個字段對應該DB塊中的一個字。
該調(diào)試軟件也可按一定順序讀PLC中各DB塊中的字,并把 讀取的數(shù)據(jù)經(jīng)過處理后寫入數(shù)據(jù)庫,以供調(diào)試人員檢查寫入數(shù)據(jù)的正確性。PC機與PLC CPU318-2DP MPI口之間的數(shù)據(jù)通信是通過PC/MPI適配器硬件連接實現(xiàn)的。 3 數(shù)據(jù)通信 3。
1 通信軟件 實現(xiàn)PC機與PLC之間的數(shù)據(jù)通信是一個棘手的問題。西門子公司的PRODAVE S7軟件包的 動態(tài)鏈接庫(DLL)提供了大量的基于Windows NT,Windows95/98,Windows3。11或MS-DOS 的函數(shù),這樣就使用戶解決PLC與PC之間的數(shù)據(jù)交換和數(shù)據(jù)處理問題變
為可能。
3。2 通信函數(shù) 在DELPHI的Object Pascal語言中,要訪問動態(tài)鏈接庫DLL(Dynamic Link Library) 中的例程有兩種方式。一種是靜態(tài)引入方式;另一種是動態(tài)引入方式。 本軟件使用靜態(tài)引入方式,即在單元的Interface部分用External指示字列出要從DLL 中引入的例程。
如果要引入的例程比較多,就可以用一個專門的單元來集中聲明要引入的 例程。 PLC控制程序調(diào)試軟件用到的PRODAVE函數(shù)主要有: (1)load_tool PC機與PLC系統(tǒng)初始化鏈接; (2)unload_tool 斷開PC機與PLC系統(tǒng)鏈接; (3)db_read 從PLC的DB塊中讀數(shù)據(jù)字; (4)db_write 向PLC的DB塊中寫數(shù)據(jù)字。
3。3 通信程序的實現(xiàn) 在該調(diào)試軟件中用一個專門的單元集中聲明要引入的PRODAVE S7動態(tài)鏈接庫的例程, 中國工控信息網(wǎng) 7613。com 中國工控信息網(wǎng) 7613。com 收錄 然后在程序中在引用這個單元,即把引入單元“prodave”加到程序的Uses子句。
該引入單元 的代碼如下: unit prodave; interface type Tadr_table_type=record adr:byte; segmentid:byte; slotno:byte; rackno:byte; end; function load_tool(no:Byte;name:PChar;adr_table_type:PChar):Integer;stdcall;external "w95_s7。
dll"; function unload_tool:Integer;stdcall;external "w95_s7。dll"; function db_read(blockno:integer;no:integer;amount:pointer;buffer:pointer):integer;stdc all;external "w95_s7。
dll"; function db_write(blockno:integer;no:integer;amount:pointer;buffer:pointer):integer;std call;external "w95_s7。dll"; ……
implementation end。
在調(diào)試軟件的主程序中調(diào)用該引入單元前,須將軟件包prodave。pas文件加到工程中。 這樣才能在主程序中調(diào)用w95_s7。dll中的函數(shù),具體程序調(diào)用實現(xiàn)如下: implementation uses prodave; {$R *。DFM} …… begin plc_adr_table[0] := 2; {address} plc_adr_table[1] := 0; {segment id} plc_adr_table[2] := 2; {slotno} plc_adr_table[3] := 0; {rackno} plc_adr_table[4] := 0; res := Load_tool(1,"S7ONLINE",@plc_adr_table); //初始化鏈接 函數(shù)load_tool的作用在于初始化適配器,初始化參數(shù)的地址以及激活選定的界面。
程 序在讀寫PLC數(shù)據(jù)前應該用該函數(shù)初始化PC機與PLC的連接。 此函數(shù)傳送以下3個參數(shù): no:此參數(shù)設置可激活連接的數(shù)量,連接個數(shù)可以達到16個。此例中,no=1; device:用戶驅(qū)動設備名稱,如MPI驅(qū)動器的設備名為“S7ONLINE”; plc_adr_table:連接部分的地址列表指針。
如果沒有錯誤,此函數(shù)返回0,否則返回錯誤信息的相應十六進制代碼。下面給出數(shù)據(jù) 下載程序: begin error:=false; table1。first; //定位到配方表的首記錄 中國工控信息網(wǎng) 7613。com 中國工控信息網(wǎng) 7613。
com 收錄 for i:=2 to 61 do //把60個配方數(shù)據(jù)寫到DB2-DB61 begin for j:=1 to 42 do //把42個庫位的自動配煙數(shù)的值高低字節(jié)調(diào)換位置存入buffer數(shù)組 begin c0:=table1。
fields。fields[j]。asinteger; clow:=c0 shl 8; chigh:=c0 shr 8; cdate:=clow xor chigh; buffer[j-1]:=cdate; end; anzahl:=42; dbno:=i; //DB塊 dwno:=1; //第1個數(shù)據(jù)字,即DW2
res := db_write(dbno,dwno,@anzahl,@buffer); 函數(shù)db_write()的作用是從PC機的數(shù)組變量“buffer”中給PLC的第“dbno”個數(shù)據(jù)塊中 從“dwno”個數(shù)據(jù)字開始寫“anzahl” 個數(shù)據(jù)字。
如果數(shù)據(jù)塊不存在,將返回錯誤信息的代碼。 如果要寫的數(shù)據(jù)字數(shù)目的長度超過了數(shù)據(jù)塊的長度,要寫的數(shù)據(jù)字的長度將得到更正,同 時此函數(shù)還返回303H的錯誤信息。 需要特別注意的是:數(shù)據(jù)在緩沖區(qū)存放的順序是從高字節(jié)到低字節(jié)。而Object Pascal 語言中,變量類型為word的變量,它的數(shù)據(jù)存放順序是從低字節(jié)到高字節(jié)。
因而,在對所讀 取的數(shù)據(jù)進行操作時或給PLC數(shù)據(jù)塊中寫數(shù)據(jù)字時要進行相應的處理。 結束程序之前,必須調(diào)用適配器函數(shù)unload_tool斷開PC機與PLC的連接。否則,將引起PC 機死機,或者系統(tǒng)紊亂。 由于數(shù)據(jù)上傳與數(shù)據(jù)下載的實現(xiàn)方法相近,限于篇幅,數(shù)據(jù)上傳實現(xiàn)的方法本文不予 介紹,請讀者參考數(shù)據(jù)下載實現(xiàn)方法部分。
4 結束語 運用DELPHI開發(fā)環(huán)境編寫的PLC控制程序調(diào)試軟件,具有界面友好、人機交互功能方便、 數(shù)據(jù)庫功能強大靈活的優(yōu)點,具有一定的通用性和實用性。而且通過調(diào)用PRODAVE S7軟件 包的動態(tài)鏈接庫實現(xiàn)PC機對PLC CPU318-2DP數(shù)據(jù)的讀寫操作,不但數(shù)據(jù)傳輸數(shù)率快,而且 數(shù)據(jù)傳輸正確率高。
在對PLC控制系統(tǒng)的調(diào)試過程中,可以大大縮短調(diào)試周期,提高工作效 率。此通信技術的實現(xiàn)對西門子工控產(chǎn)品的應用及PROFIBUS現(xiàn)場總線的推廣應用有著廣泛 普遍的重要意義。