ysusy
級(jí)別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個(gè)
工控威望: * 點(diǎn)
下載積分: * 分
在線(xiàn)時(shí)間: (小時(shí))
注冊(cè)時(shí)間: *
最后登錄: *
查看ysusy的 主題 / 回貼
樓主  發(fā)表于: 2008-12-28 14:36
想用PC直接對(duì)PLC進(jìn)行讀寫(xiě)操作,想用PRODAVE,照寫(xiě)了網(wǎng)上的一個(gè)例子[如下],但是沒(méi)有實(shí)現(xiàn),PS:我的PPI電纜是U口的,
如果不用這個(gè)方法,直接在VB下用自由口通信,哪位朋友能給個(gè)示例程序么,謝謝了
來(lái)自網(wǎng)上的一個(gè)例子
“最近要做一個(gè)項(xiàng)目,使用S7-200,用VB編寫(xiě)程序,來(lái)調(diào)用w95_s7.dll動(dòng)態(tài)鏈接數(shù)據(jù)庫(kù)。通過(guò)3天的努力,終于小有成果,一下是我試驗(yàn)基本方法。供大家參考!
1.Prodave 是用于pc 與s7 系列plc 之間的數(shù)據(jù)鏈接通信的工具箱。其實(shí)質(zhì)就是用戶(hù)通過(guò)調(diào)用“w95_s7.dll”等庫(kù)函數(shù)來(lái)解決 PLC 與PC之間的數(shù)據(jù)交換和數(shù)據(jù)處理問(wèn)題。 所需硬件為:CPU22x,PC/PPI編程電纜,帶COM口的PC。這可能是最簡(jiǎn)單的配置,很容易實(shí)現(xiàn)試驗(yàn)的目的。這里不需要安裝Prodave軟件,只要把“w95_s7.dll”文件拷貝到您程序相應(yīng)的目錄中去即可。
2.通訊設(shè)置:打開(kāi)“控制面板”中“設(shè)置PG/PC接口”選項(xiàng),在“應(yīng)用程序訪問(wèn)點(diǎn)”列表框內(nèi)選擇“S7ONLINE (STEP7)  PC/PPI Cable”,在其屬性?xún)?nèi)的“超時(shí)”可以設(shè)置大點(diǎn),這里設(shè)置為100ms,“波特率”設(shè)置為9.6kbps(因?yàn)槲业膒c/ppi電纜為國(guó)產(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                ‘站地址,默認(rèn)值為2
     SEGMENTID As Byte       ‘段標(biāo)識(shí)符,固定值為0
     SLOTNO As Byte           ‘槽的編號(hào),默認(rèn)值為2
     RACKNO As Byte           ‘機(jī)架號(hào),固定為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存儲(chǔ)區(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連接錯(cuò)誤")
        gb_PlcConnected = False
    Else
        gb_PlcConnected = True
        MsgBox ("plc連接正確")
        Label1.Caption = buffer(0) * 256 + buffer(1)
    End If
End Sub
通過(guò)以上程序可以正確讀出PLC中的數(shù)據(jù)。之后可以擴(kuò)展內(nèi)容,編寫(xiě)一個(gè)監(jiān)控軟件!