最近要做一个项目,使用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中的数据。之后可以扩展内容,编写一个监控软件。 [upload=rar,用vb编写pc与s7-200通讯软件,带原代码.rar]viewFile.asp?ID=1745[/upload]
|