ysusy
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看ysusy的 主题 / 回贴
楼主  发表于: 2008-12-28 14:36
想用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中的数据。之后可以扩展内容,编写一个监控软件。”