您的位置:控制工程论坛网论坛 » PLC与PAC » S7-200通讯程序

tony_k

tony_k   |   当前状态:离线

总积分:917  2025年可用积分:0

注册时间: 2008-09-27

最后登录时间: 2008-11-28

空间 发短消息加为好友

S7-200通讯程序

tony_k  发表于 2008/11/12 10:53:15      1765 查看 1 回复  [上一主题]  [下一主题]

手机阅读

最近要做一个项目,使用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楼 0 0 回复