您现在的位置: 范文先生网 >> 理工论文 >> 计算机论文 >> 正文

基于VB的分布式监控系统通信设计

时间:2007-1-30栏目:计算机论文

bsp;       '计算接收字符串长度
进行命令发送和接收应答处理:
Dim  FCS, I as integer
Dim  s ,f as string
s="@"+node+Commad+begin+number
FCS=0
For i=1 to Len(s)
   FCS=FCS xor Asc(Mid$(s,i,1) )      '帧校验码FCS
Next i
f=Hex$(FCS)
If  Len(f)=1  Then  f="0"+f
Commfrm.MSComm1.Output=s + f + "*" + CHR$(13)   '命令帧发送
Do
Dummy=DoEvents()
Loop Untill Commfrm.MSComm1.InbufferCount >= Answerlen   '等待应答帧
Do tag1= Commfrm.MSComm1.Input
Loop Un

till Commfrm.MSComm1.InbufferCount=0  '读完应答帧
上述程序具有相当的通用性,对于其它设备不同的只是各自的数据帧格式,因而只需做相应少量修改即可。
3. 节点自身的"通信"
节点自身的"通信"是一种形象的说法,严格说来应是VB应用程序利用DDE技术与本节点其它Windows应用程序进行数据交换。DDE(Dynamic Data Exchange)即动态数据交换,它是Windows支持的三种内部通信机制之一,是应用程序间通过共享内存进行进程间通信的一种形式。应用程序间进行数据交换称为"会话"(Conversation),申请会话端叫客户(Client),响应申请端叫服务器(Server)。一旦客户与服务器间建立起DDE所需的数据链路就可自动进行数据交换。
在监控系统开发中,工控组态软件以其功能强大、使用方便等特点得到广泛应用,但在处理复杂数据时其计算功能受到一定限制,而VB可以较好地弥补这一不足,并且还能承担数据采集、报表打印等功能。这就需要在VB应用程序与组态软件应用程序间进行动态数据交换。
VB中只有TextBox、PictureBox、Label和Form可以与其它应用程序进行动态数据交换,控件用于DDE的属性项有LinkTopic(连接主题)、LinkItem(连接项)、LinkMode(连接模式)和LinkTimeout(连接等待时间)。
这里以本实验室的小型分布式监控实验系统为例,介绍一个VB应用程序与组态王5.0应用程序间实现DDE的实例。
3.1 VB作为Server,组态王作为Client
当有些参数需要从VB应用程序传输到组态王应用程序,如VB从PLC采集水位值参数至程序Ser.vbp的Text1,再将数据动态传递给组态王的I/O变量SW,这时VB作为Server,组态王作为Client。
VB程序Ser.vbp 中属性设置如下(Form1为Text1所在窗体):
Form1.LinkTopic = "water"      数据交换的话题
Form1.LinkMode = 1           作为服务器
组态王的设置如下:
新建一个名为vbdde的DDE设备,服务程序名Ser,话题名water,数据交换方式为标准WINDOWS项目交换。新建一个名为SW的I/O变量,连接设备设为vbdde,项目名设为Text1。
3.2 组态王作为Server,VB作为Client
当有些参数需要从组态王传输到VB,如为了提高变频器电压以提升泵速,可在组态王应用程序中改变I/O变量BS值并动态传递给VB的Text2,VB接收到数据后经处理再传递给PLC相应继电器区。这时组态王作为Server,VB作为Client。
组态王设置如下:
新建一个名为BS的I/O变量,连接设备设为已建立的vbdde设备,项目名设为bengsu。
VB程序Ser.vbp中设置如下:
Text2.LinkTopic = "view|tagname"
Text2.LinkItem = "bengsu"
Text2.LinkMode = 1
TextBox控件有无连接、自动式连接、被动式连接和通知式连接四种连接模式,可依据实际情况灵活运用。
4

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页