利用VB实现上位机与DX中波发射机通讯
时间:11-02
来源:互联网
点击:
这样在rslinx软件中对a-b plc的通信配置就完成了,建立与plc数据联结既可以完成与plc的数据交换。
利用vb开发dde客户端
vb作为microsoft 公司软件产品的重要一员,理所当然的对windows操作系统下的dde技术给予支持。vb为一些控件提供了用于dde动态数据交换的linktopic、linkitem、linktimeout、linkmode等属性,以及linkrequest、linkpoke、linkexecute、linksend等方法。其中,linktopic、linkitem两项属性分别对应于dde通讯架构中的主题名和数据项名,linktimeout、linkmode分别表示dde 客户端与dde服务器的尝试连接时间和连接模式(数据交换方式),linkmode有manual、notify、automatic三种方式,而automatic方式最为常用,它主要用于和dde server建立“热连接(hot link)”,即在dde服务器数据发生变化时主动发送数据给客户端。linkrequest、linkpoke分别用于dde客户端对dde服务器数据的读写操作。
在vb中实现与a-b plc的“热连接”
在visual basi建立一个新工程,添加几个label控件,并建立和rslinx的dde通讯连接,使其随上一步所设置好的连接的a-b plc数据“b01主系统”数值的变化而变化。
其代码如下:
private sub form_load()
label1.linktopic = “rslinx|” & “b01主系统”
label1.linkitem = “s:42”
label1.linkmode = 1
label1.linkrequest
label3.linktopic = “rslinx|” & “b01主系统”
label3.linkitem = “s:41”
label3.linkmode = 1
label3.linkrequest
label5.linktopic = “rslinx|” & “b01主系统”
label5.linkitem = “s:40”
label5.linkmode = 1
label5.linkrequest
label10.linktopic = “rslinx|” & “b01主系统”
label10.linkitem = “n60:11”
label10.linkmode = 1
label10.linkrequest
label12.linktopic = “rslinx|” & “b01主系统”
label12.linkitem = “n60:130”
label12.linkmode = 1
label12.linkrequest
label14.linktopic = “rslinx|” & “b01主系统”
label14.linkitem = “n60:131”
label14.linkmode = 1
label14.linkrequest
end sub
其中,代码中的“rslinx”和“b01主系统”分别表示应用程序名和主题名,“linkmode”值为1表示连接方式为automatic(即“热连接”)方式。这样当该应用代码被执行时,label的值便随a-b plc内存值的变化而变化。具体执行如图13所示。
sub start()
dim lngrow as long
dim varcycle as variant
dim varlogging as variant
dim varresults as variant
on error goto error
rsichan = ddeinitiate(“rslinx”, “ b01主系统”)
varlogging = dderequest(rsichan, “n60/163”)
varcycle = dderequest(rsichan, “n60/161”)
l/?
if varcycle(1) = “1” and varlogging(1) = “1” then
lngrow = 3
if range(“indata!a3”).value 》 3 then
lngrow = range(“indata!a3”).value
end if
for lngrow = lngrow to 65500
if cells(lngrow, 1) = “” then exit for
range(“indata!a3”).value=lngrow + 1
next
rsichan = ddeinitiate(“rslinx”, “n1”)
f810data = dderequest(rsichan, “f8:10”)
f811data = dderequest(rsichan, “f8:11”)
f812data = dderequest(rsichan, “f8:12”)
f816data = dderequest(rsichan, “f8:16”)
f818data = dderequest(rsichan, “f8:18”)
f817data = dderequest(rsichan, “f8:17”)
f820data = dderequest(rsichan, “f8:20”)
f821data = dderequest(rsichan, “f8:21”)
f822data = dderequest(rsichan, “f8:22”)
f823data = dderequest(rsichan, “f8:23”)
f824data = dderequest(rsichan, “f8:24”)
varresults = dderequest(rsichan, “f8:25”)
ddeterminate (rsichan)
cells(lngrow, 1).value = f810data
cells(lngrow, 2).value = f811data
cells(lngrow, 3).value = f812data
cells(lngrow, 4).value = f816data
cells(lngrow, 5).value = f818data
cells(lngrow, 6).value = f817data
cells(lngrow, 7).value = f820data
cells(lngrow, 8).value = f821data
cells(lngrow, 9).value = f822data
cells(lngrow, 10).value = f823data
cells(lngrow, 11).value = f824data
cells(lngrow, 13).value = now()
end if
end sub
- 中压电力线通信技术(01-07)
- 北京华深校园办公自动化系统方案(02-14)
- 基于DSP技术的变电站综合自动化系统简介(11-10)
- 数据中心的网络虚拟化和自动化(01-31)
- OFDM调制技术的配电自动化通信系统研究(02-17)
- 基于ITIL的云计算实施方案 (02-08)