當前位置:股票大全官網 - 基金投資 - 用VB實現PLC與上位機的通信

用VB實現PLC與上位機的通信

可以通過OPC服務器完成,比較方便。它可以應用於各種PLC。

這裏以西門子PLC為例,實現方法如下:

1.通過STEP7軟件建立壹個新的項目OPC,在項目中增加SIMATIC 300站和壹個PC站,其中CP343模塊安裝在PLC站的第四個插槽中。PC站第壹個槽是OPC服務器,第三個槽是IE通用,然後在NETPRO下配置PLC和PC站的網絡連接:(註意:是PC站上新的網絡連接,連接類型是S7連接)。

第二,通過站配置器軟件配置本機的PC站(與STEP7配置的相同),然後同時下載PLC和PC站(註意:下載PC站時要把S7聯機(Step 7)->;PC內部(本地).

第三,打開OPC Scout,(Start & gt;SIMATIC & gt;SIMATICNet & gt;Opscout),雙擊&;ldquo(同OligomericProanthoCyanidins)原花青素

西門子網絡公司;rdquo在隨後彈出的&;ldquo添加組& amprdquo對話框中,輸入組和。在本例中,它被命名為&;ldquoOPC & amprdquo。

單擊“確定”進行確認;

;雙擊添加的連接組(OPC),然後將&;ldquoOPC導航器& amprdquo對話框,其中顯示

所有的連接協議。雙擊&;ldquoS7 & amprdquo,將顯示PC站配置NetPro中內置的連接名稱(S7

connection_1).雙擊此連接,將出現壹個可以訪問的對象樹。在PLC中,

CPU中已經存在的數據庫塊也會出現。

以上完成了OPC服務器部分的配置。

第四,用VB編寫了OPC客戶端應用程序。主程序代碼如下:

VB中也要引用西門子opc daautomation 2.0。

(1)連接OPC服務器。

dimwithevents MyOPCServer as OPC server '定義了服務器對象變量MyOPCServer。

' dimwithevents MyOPCGroup as OPC group '定義OPC組對象變量MyOPCGroup。

設置MyOPCServer =新的OPCServer

我的OPC服務器。連接“OPC。SIMATICNET " '連接SIMATIC NET的OPC服務器。

(2)添加OPC組對象

設置MyOPCGroup=MyOPCServer。OPCGroups.Add("Group1 ")

添加OPC組對象

MyOPCGroupissued = True

將這組數據設置為後臺刷新。

MyOPCGroupIsActive = True

將該組設置為活動。

MyOPCGroup更新率=1000

將數據刷新時間設置為1000。

(3)添加數據項

Dim abItemIDs()作為字符串

項目標識符

Dim abClientHandles()壹樣長

客戶端句柄

Dim abServerHandles()壹樣長

服務器端句柄

Dim abErrors()壹樣長

暗淡我壹樣長

ItemCount=3

abItemIDs(1) = " S7:S7連接_1IB1 "

abItemIDs(2) = " S7:S7連接_1MB1 "

abItemIDs(3) = " S7:S7連接_1QB1 "

對於i=1到3

abClientHandles(i) = i

給客戶端句柄賦值

然後

MyOPCGroupOPCItems.AddItems ItemCount,abItemIDs,abClientHandles,abServerHandles,abErrors

添加數據項操作

(4)同步數據讀寫

OPC數據訪問有兩種模式:同步模式和異步模式。異步讀寫數據比較復雜,需要結合事件。與同步相比,它速度慢但很準確。同步讀寫數據很簡單,直接用OPCItem的方法就可以了。

將壹個調暗為操作項

Dim索引為Long

索引是標簽序列號。

Dim OneRead As String

黯然謝如弦

Set One = MyOPCGroup。操作項目(索引)

壹個。讀取OPCCache

OneRead = One。價值

讀出數據

MyOPCGroupSyncWrite項目計數,服務器句柄,無值,錯誤

同步寫入數據

MyOPCGroupSyncRead OPCCache,ItemCount,ServerHandles,ReadValue,Errors

同步讀取數據

壹個。寫(謝)

寫入數據

如果只讀取數據,可以使用DataChange事件,當控制器中要訪問的數據發生變化時會觸發該事件,數據會自動讀入TxtValue文本框中。

private Sub MyOPCGroup _ data change(ByVal transaction id為Long,ByVal NumItems為Long,ClientHandles()為Long,ItemValues()為Variant,Qualities()為Long,TimeStamps()為Date)

自動刷新數據

暗淡我壹樣長

對於i = 1到NumItems

txt value(client handles(I))= item values(I)

獲取項目的值

txtTime(ClientHandles(i)) =時間戳(I)

獲取項目的時間戳

txt quantity(client handles(I))= GetQualityString(Qualities(I))

獲取項目的質量

接下來我

末端接頭

(5)斷開OPC服務器。

MyOPCServer。OPCGroups.RemoveAll

刪除所有OPC組,為資源騰出空間。

設置MyOPCGroup = Nothing

MyOPCServer。拆開

拆開