ysusy
級別: *
|
想用PC直接對PLC進行讀寫操作,想用PRODAVE,照寫了網(wǎng)上的一個例子[如下],但是沒有實現(xiàn),PS:我的PPI電纜是U口的, 如果不用這個方法,直接在VB下用自由口通信,哪位朋友能給個示例程序么,謝謝了 來自網(wǎng)上的一個例子 “最近要做一個項目,使用S7-200,用VB編寫程序,來調(diào)用w95_s7.dll動態(tài)鏈接數(shù)據(jù)庫。通過3天的努力,終于小有成果,一下是我試驗基本方法。供大家參考! 1.Prodave 是用于pc 與s7 系列plc 之間的數(shù)據(jù)鏈接通信的工具箱。其實質(zhì)就是用戶通過調(diào)用“w95_s7.dll”等庫函數(shù)來解決 PLC 與PC之間的數(shù)據(jù)交換和數(shù)據(jù)處理問題。 所需硬件為:CPU22x,PC/PPI編程電纜,帶COM口的PC。這可能是最簡單的配置,很容易實現(xiàn)試驗的目的。這里不需要安裝Prodave軟件,只要把“w95_s7.dll”文件拷貝到您程序相應的目錄中去即可。 2.通訊設置:打開“控制面板”中“設置PG/PC接口”選項,在“應用程序訪問點”列表框內(nèi)選擇“S7ONLINE (STEP7) PC/PPI Cable”,在其屬性內(nèi)的“超時”可以設置大點,這里設置為100ms,“波特率”設置為9.6kbps(因為我的pc/ppi電纜為國產(chǎn)的,不支持多主站),“地址”為0。 3。源代碼:①PLC程序:LD I0.0 MOVW 4766, VW0 ②VB程序: ****在模塊中聲明****: Public plcadr As plcadrtype Public gb_PlcConnected As Boolean Type plcadrtype adr As Byte ‘站地址,默認值為2 SEGMENTID As Byte ‘段標識符,固定值為0 SLOTNO As Byte ‘槽的編號,默認值為2 RACKNO As Byte ‘機架號,固定為0 End Type Public Res As Long Declare Function load_tool Lib "w95_s7.dll" (ByVal nr As Byte, ByVal dev As String, adr As plcadrtype) As Long 。。。。。。。 ‘省略其它定義函數(shù)。 Declare Function as200_vs_field_read Lib "w95_s7.dll" (ByVal nr As Long, ByVal anz As Long, value As Byte) As Long ‘讀200PLC V存儲區(qū)的數(shù)據(jù)函數(shù) ****在窗體中聲明**** Private Sub Form_Load() Dim buffer(1) As Byte plcadr.adr = 2 plcadr.SEGMENTID = 0 plcadr.SLOTNO = 2 plcadr.RACKNO = 0 Res = load_tool(1, "S7ONLINE", plcadr) Res = as200_vs_field_read(0, 2, buffer(0)) If Res <> 0 Then MsgBox ("PLC連接錯誤") gb_PlcConnected = False Else gb_PlcConnected = True MsgBox ("plc連接正確") Label1.Caption = buffer(0) * 256 + buffer(1) End If End Sub 通過以上程序可以正確讀出PLC中的數(shù)據(jù)。之后可以擴展內(nèi)容,編寫一個監(jiān)控軟件! |
---|---|
|