1.png (6.38 KB)
下載附件
2018-4-26 00:38 上傳
最近要做一個項目,使用S7-200,但是數據交換量不是很大,用WINCC感覺比較浪費,所以就想自己做個監控軟件,就想到了用VB編寫程序,來調用w95_s7.dll動態鏈接數據庫。通過3天的努力,終于小有成果,一下是我試驗基本方法。供大家參考! 1.Prodave 是用于pc 與s7 系列plc 之間的數據鏈接通信的工具箱。其實質就是用戶通過調用“w95_s7.dll”等庫函數來解決 PLC 與PC之間的數據交換和數據處理問題。 所需硬件為:CPU22x,PC/PPI編程電纜,帶COM口的PC。這可能是最簡單的配置,很容易實現試驗的目的。這里不需要安裝Prodave軟件,只要把“w95_s7.dll”文件拷貝到您程序相應的目錄中去即可。 2.通訊設置:打開“控制面板”中“設置PG/PC接口”選項,在“應用程序訪問點”列表框內選擇“S7ONLINE(STEP7) PC/PPI Cable”,在其屬性內的“超時”可以設置大點,這里設置為100ms,“波特率”設置為9.6kbps(因為我的pc/ppi電纜為國產的,不支持多主站),“地址”為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
- 。。。。。。。 ‘省略其它定義函數。
- 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存儲區的數據函數
- ****在窗體中聲明****
- 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中的數據。之后可以擴展內容,編寫一個監控軟件。
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|