5.3.2动态链接库声明
程序中用到的PRODAVE 函数主要有:
⑴load_tool 函数用于PC 机与PLC 系统的初始化链接。
⑵unload_tool 函数用于断开PC 机与PLC 系统的链接。
⑶db_read 函数用于从PLC 的DB 块中读数据字。
⑷db_write 函数用于向PLC 的DB 块中写数据字。
首先,在模块中应该声明程序使用的用户自定义的数据类型PlcAdrType:
Type PlcAdrType
ADDRESS As Byte
SEGMENTID As Byte
SLOTNO As Byte
PACKNO As Byte
End Type
在通信开始之前,首先用load_tool 函数建立与上位机与PLC 的链接,通信结束时必须用unload_tool 函数断开PC 与PLC 的链接,否则会引起上位机死机或上位机系统的异常状况。VB 在调用DLL 函数之前,需要用Declare 语句在模块中声明所要使用的DLL 函数。
声明DLL 函数的主要作用是指明该函数所在的DLL 库名及路径,以及该函数的参数说明,以便Windows 能找到该函数,并能正确的执行该函数。
Declare Function load_tool Lib "w95_s7.dll" (ByVal nr As Byte, ByVal dev As String, adr As PlcAdrType) As Long
//nr 是PC 要激活的连接的个数(1-32 个);
//dev 是用户驱动设备的名称MPI 接口时为“S7ONLINE”;
//adr 是连接的地址列表;
Declare Function unload_tool Lib "w95_s7.dll" () As Long
//断开连接
Declare Function db_read Lib "w95_s7.dll" (ByVal blockno As Long, ByVal no As Long, Amount As Long, value As Byte) As Long
//读取DB 块号为blockno 中的从地址no 开始的Amount 个数据字。
//读取的数据存放于PC 的变量区value 中。
Declare Function db_write Lib "w95_s7.dll" (ByVal blockno As Long, ByVal no As Long, Amount As Long, value As Byte) As Long
//将PC 的变量存储区value 中的amount 个数据字写入到PLC 的数据块DB
中从no 开始的数据区。
5.3.3 读写函数使用的注意事项
我们在调试过程中曾发现读入的模拟量(双字)存在突然变小的情况,在排除硬件故障后,发现是由于VB 对于字符串的处理比较特殊而造成的错误结果。因此,在使用PRODAVE工具箱进行通信的程序中,要特别注意的是VB 在处理字符串时对“0”是自动舍弃的,现举例说明如下:
PIW292 是4~20mA 模拟量输入信号在PLC 中的地址PIW292 的数据类型是整数,经过数据转换存于DB1.DBD36 中,DB1.DBD36 的数据类型是双整数。转换的梯形图如图5.1 所示。