如何使用Excel通过 DDE VBA方式访问Allen Bradley PLC? WWW_PLCJS@_COM%-PLC-技.术_网
首先必须先安装RS Linx创建DDE topic. 比如我们定义一个topic名叫“N1”WWcW_PLCJS_COM-PLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
打开Excel,创建宏命令 ,编写VBA脚本如何读取和写入数据,从而完成与PLC的数据交换.WWW_P※LCJS_COM-PLC-)技.术_网
WWcW_PLCJS_COM-PLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
<<<<<<<<<<<<<<<<<<<开始>>>>>>>>>>>>>>>>>>W1WW_P4LCJS_COM-PLC-技.术_网
Sub Start()WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PL※CJS_COM-PLC-技.术_网
Dim lngRow As LongWWW_PL※CJS_COM-PLC-技.术_网
Dim varCycle As Variant——可——编——程——控-制-器-技——术——门——户
Dim varLogging As VariantWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
Dim varResults As VariantWWW_PL※CJS_COM-PLC-技.术_网
On Error GoTo ErrorWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PLC※JS_COM-PmLC-技.术_网
opens a COLD DDE linkP.L.C.技.术.网——可编程控制器技术门户
RSIchan = DDEInitiate("RSLinx", "N1")WWW_PLC※JS_COM-PmLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
assign PLC bit values to VB variant varibles——可——编——程——控-制-器-技——术——门——户
varLogging = DDERequest(RSIchan, "B3/163")WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
varCycle = DDERequest(RSIchan, "B3/161")WWW_PL※CJS_COM-PLC-技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
close COLD DDE linkWW.W_PLCJS_COM-PLC-技.术_网
DDETerminate (RSIchan)WWW_P※LCJS_COM-PLC-)技.术_网
WWW_PLCJS@_COM%-PLC-技.术_网
check to see if the Cycle bit went to "1" if it did, excute read dataWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
If varCycle(1) = "1" And varLogging(1) = "1" ThenWWW_PL※CJS_COM-PLC-技.术_网
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
starts at row 3 of sheetP.L.C.技.术.网——可编程控制器技术门户
lngRow = 3WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
——可——编——程——控-制-器-技——术——门——户
If Range("INDATA!A3").Value > 3 ThenWWW.PLCJS.COM——可编程控制器技术门户
look up last cell and change positionWWcW_PLCJS_COM-PLC-技.术_网
lngRow = Range("INDATA!A3").ValueWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
End IfWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
plcjs.技.术_网
check until end of sheetWW.W_PLC※JS_C,OM-PL,C-技.术_网
For lngRow = lngRow To 65500WWW.PLCJS.COM——可编程控制器技术门户
look for next empty cellWWW_PLCJS_COM-PLC-技.术_网
If Cells(lngRow, 1) = "" Then Exit ForP_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PL※CJS_COM-PLC-技.术_网
write current cell location to sheet INDATAWWW_P※LCJS_CO※M-PLC-技-.术_网
rather than writing a loop to search on——可——编——程——控-制-器-技——术——门——户
every cycle, by the time the log is at row 21,500P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户