想用PC直接对PLC进行读写操作,想用PRODAVE,照写了网上的一个例子[如下],但是没有实现,PS:我的PPI电缆是U口的,
如果不用这个方法,直接在VB下用自由口通信,哪位朋友能给个示例程序么,谢谢了
来自网上的一个例子
“最近要做一个项目,使用S7-200,用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中的数据。之后可以扩展内容,编写一个监控软件。”