用户中心

资讯 > 嵌入式系统

VB与西门子S7-300的通讯方式

2007.12.05阅读 3094

  西门子S7-300通讯协议不公开,我们无法按相应的协议写程序,但是西门子提供给我们更为简单的方式来与之通讯。

  大家可以在某些组态软件中找到这样一个DLL:w95_s7.dll,就是这个DLL,使的我们与PLC进行数据交互极为简单

  在DLL时定义了如下一些接口函数:

  Public Declare Function load_tool Lib "w95_s7.dll" (ByVal nrAs Byte, ByVal dev As String, adr As Type_PlcAddressType) As Long

  这个函数是初始化连接用的,这个过程比较慢,大约要20S左右,这大概也是西门子为什么启动那么慢的原因吧;包括了如下几个参数:nr是指激活的连接数,范围是1-4

  dev是设备名,SetPG/PC里面有这个指定www.cechina.cn,一般用S7ONLINE就可以了,adr是指参数表,它是这样的一个type:

  Type Type_PlcAddressType

  bytAddress      As Byte’这是

站号,默认是2
  bytPlcSegmentID  As Byte’SegmentID,默认是0
  bytPlcSlotNo    As Byte’槽号,默认是2
  bytPlcRackNo    As Byte’Rack号www.cechina.cn,默认是0
  End Type

  Public Declare Function new_ss Lib "w95_s7.dll" (ByVal nr As Byte) As Long

  这个函数没用到,可以去找一些资料来看

  Public Declare Function unload_tool Lib "w95_s7.dll" () As Long’这个函数是程序退出时用的,用来断开连接
  ’ no, amount, value

  Public Declare Function d_field_read Lib "w95_s7.dll" (ByVal dbAs Long, ByVal nr As Long, ByVal anz As Long, value As Byte) As Long’这是读取DB块中数据的函数

  db 是指DB块号,比如DB10,则这个参数指定为10就可以了

  nr 是指起始地址,比如读DB10的第4个字节中数据,则指定为4

  anz是指读取的长度

  value是返回的值CONTROL ENGINEERING China版权所有,表面上看这是一个字节控制工程网版权所有,但实际上它是一个字节数组,比如你要读取二十个字节的数据,那么应定义dim ReturnValue(20) as byte,然后用ReturnValue来做为传递的参数

  Public Declare Function d_field_write Lib "w95_s7.dll" (ByVal db AsLong, ByVal nr As Long, ByVal anz As Long, value As Byte) As Long

  这是写DB块数据的函数控制工程网版权所有,参数跟读数据函数一样,不多说了

  ’ no, amount, value

  Public Declare Function e_field_read Lib "w95_s7.dll" (ByVal nr AsLong, ByVal anz As Long, value As Byte) As Long

  ‘这个是用来读取外部输入的值,包括开关量输入,模拟量输入

  nr 是指起始地址

  anz是指读取的长度

  value是返回的值CONTROL ENGINEERING China版权所有,表面上看这是一个字节控制工程网版权所有,但实际上它是一个字节数组,比如你要读取二十个字节的数据,那么应定义dim ReturnValue(20) as byte,然后用ReturnValue来做为传递的参数

  从分析也可以看出,只有外部输入的值不可以写,因而它单独存在

  Public Declare Function a_field_read Lib "w95_s7.dll" (ByValnr As Long, ByVal anz As Long, value As Byte) As Long

  ‘这是用来读取外部输出的值,包括开关量输出,模拟量输出,参数可以参照上面的函数,

  Public Declare Function a_field_write Lib "w95_s7.dll" (ByValnr As Long, ByVal anz As Long, value As Byte) As Long

版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688