发送信息时,数组s中第一个元素s(0)存储第一个待发送字节……最后一个元素s(m-1)存储最后一个待发送字节,发送方式为mscomm1.output=s。
接收方式为r=mscomm1.input。
由于PLC中的信息是以byte的形式传输到计算机中,因此上位机需要对接收的数据进行数据处理。由于plc中模拟量传感器数据是以word的形式存储在aiw中,而plc在发送该数据时是按照word对应的两个byte发送,故计算机在后台计算中要将其对应的两个byte转换为word。为了在人机界面中表达数字量(qb,ib,mb)的各个状态,需要在计算机后台计算中把plc的各数字量的十进制转换为八位二进制,通过对八位二进制的每个位做0、1判断,利用vb6.0可使用多种方法把判断结果表达在界面中。
(2)下位机通讯方式
为了在计算机中实时显示plc运行状况及传感器的实时数据,就需要plc主动发送信息。为此,本文通过“定时中断”使plc周期地向计算机发送数据。具体方法是在定时中断事件里,使用plc自带的发送指令xmt发送数据,定时中断的时间设置(1ms~255ms)即为发送周期。
S7-200系列的plc接收指令有两种方法:第一种方法是使用plc自带的rcv指令来接收计算机数据;第二种方法采用plc提供的“接收字符中断”方式,将smb2(自由口接收字符缓冲区)定义指针,使用指针接收数据。在这两种方法中,第二种方法更加灵活,因此在本文中,plc在接收信息时采用指针接收数据。即在plc接收数据时,每次接收m个字节,仅在第一个字节进入smb2时定义指针,并将该字节写入指针所指向的变量存储字节;第二个字节进入smb2时,指针指向下一个变量存储字节,并把第二个字节写入……最后一个字节进入smb2时,指针指向下一个变量存储字节,把第m个字节写入。若数据接收完成,则清空用于计数的变量存储字节,等待下次接收数据,至此完成一次数据接收。本文中在接收字符中断里使用指针接收2个字节:
ld sm4.5 //变送器闲置时动作
lps
ab= vb99, 0 //vb99为0时
movd &vb100, ac1
//定义指针ac1,存储于vb100
lrd
movb smb2, *ac1
//指针指向自由口接收字符缓冲区
lrd
incd ac1//指针递增
lrd
incb vb99 //接收字节个数递增
lpp
ab= vb99, 2 //接收字节个数为2
movb 0, vb99 //计数清零,完成一次接收
3数据存储
vb6.0可将数据存储在多种数据库中(如access、excel等)。考虑到excel简单实用且应用广泛,通过设置excel的宏属性,就可将实时数据保存在创建的excel文件中,并可方便的查看历史数据。
本文通过vb6.0链接一个指定的excel文件,在vb程序里定时器的触发事件将数据存储至excel文件,存储方法如下:k=k+1
xlsheet.cells(k,r)=v`数据v写入excel第r列,随着时间k的增加依次逐行存储。
为了建立vb6.0与指定excel文件的链接,需要对链接的双方分别进行设置。首先建立并指定一个excel文件,命名为“g”,存储路径为“d:\g”,通过设置该文件宏属性,可建立excel向vb6.0的链接。exel中的宏属性设置设置为:subauto_open()
open “ d:\g ” for output as #1 `写标志文件close #1
end subsub
auto_close()kill “ d:\g ” `删除标志文件end sub
在vb6.0向excel链接时,考虑到数据快速地写入excel,为避免误操作引起excel运行终止,本文在打开exel时设置excel不可见,当数据存储完毕后,设置excel可见。
(1) 打开exel(链接到指定的exel文件)
set xlapp=createobject(“excel.application”)`创建excel应用类
xlapp.visible = false`
设置excel不可见
台达DOP-W系列提供10.4”/12”/15&rdqu…
JetNet 3005G · 5口全千兆RJ-45交换机 …
显示规格 一般规格 环境规格 结构规格 外形…
功能规格 …
功能规格 …
西门子SIMATIC S7-400PLC的主要特色为:极高的处理…