最近要做一个项目,使用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)指出,本站将立即改正。
|