用_VB_实现施耐德小型PLC_Twido_的Modbus_TCP-IP..doc
文本预览下载声明
用 VB 实现Twido 的Modbus TCP/IP 的通讯实例精讲!!
2009-12-25 11:02
?? Twido系列PLC(twido为施耐德小型PLC,与西门子200PLC极为相似)支持TCP Modbus的通讯,尤其是TWDLCAE40DRF提供了内置的以太网接口,能实现?? 下图所示的结构;通过HUB,不仅能对Twido进行编程,也能对Twido PLC中的数据进行读写。对于上位机,我们利用VB 的WinSock 套接字控件能很容易的进行编程。新建 1 个套接字对象,设定其属性如右,注意其远程主机的IP 就是以上TWDLCAE40DRF 的IP 地址:1. 建立网络连接Private Sub Command2_Click()On Error Resume NextWinsock1.CloseWinsock1.Connect , 502If Err ThenMsgBox 网络连接时发生错误: Err.Description, vbCritical, 网络连接Err.ClearEnd IfEnd Sub
2. 读多个字的命令(本例表示从PLC读%MW3和%MW4两个字):Private Sub cmdSend_Click()On Error GoTo ErrProcDim SendStr(11) As ByteDim RcvStr() As ByteSendStr(0) = 0 交换识别号高字节,通常为0SendStr(1) = 0 交换识别号低字节,通常为0SendStr(2) = 0 协议识别号高字节,为0SendStr(3) = 0 协议识别号低字节,为0SendStr(4) = 0 字节长度高字节SendStr(5) = 6 以下字节长度低字节SendStr(6) = 255 单元识别号,确省为255SendStr(7) = H3 读多个字命令代码SendStr(8) = 0 读数据的起始地址高字节SendStr(9) = 3 读数据的起始地址低字节SendStr(10) = 0 数据长度高字节SendStr(11) = 2 数据长度低字节Dim aStr As StringDim i As IntegerFor i = 0 To 11aStr = aStr Chr(SendStr(i))NextWinsock1.SendData aStrExit SubErrProc:MsgBox 传输数据失败, vbCritical, 网络传输End Sub3. 写多个字的命令(本例表示写%MW3、%MW4、%MW5三个字到PLC 中):Private Sub cmdwrite_Click()On Error GoTo ErrProcDim SendStr(18) As ByteDim RcvStr() As ByteSendStr(0) = 0 交换识别号高字节,通常为0SendStr(1) = 0 交换识别号低字节,通常为0SendStr(2) = 0 协议识别号高字节,为0SendStr(3) = 0 协议识别号低字节,为0SendStr(4) = 0 字节长度高字节SendStr(5) = 13 以下字节长度低字节SendStr(6) = 255 单元识别号,确省为255SendStr(7) = H10 写多个字命令代码SendStr(8) = 0 写数据的起始地址高字节SendStr(9) = 3 写数据的起始地址低字节SendStr(10) = 0 数据长度字数的高字节SendStr(11) = 3 数据长度字数的低字节SendStr(12) = 6 数据长度的字节数SendStr(13) = HA 写的第1 个字的高字节SendStr(14) = HB 写的第1 个字的低字节SendStr(15) = HC 写的第2 个字的高字节SendStr(16) = HD 写的第2 个字的低字节SendStr(17) = HE 写的第3 个字的高字节SendStr(18) = HF 写的第3 个字的低字节Dim aStr As StringDim i As IntegerFor i = 0 To 18aStr = aStr Chr(SendStr(i))NextWinsock1.SendData aStrExit SubErrProc:MsgBox 传输数据失败, vbCritical, 网络传输End Sub4. 通讯数据处理(本例是得到4 个字节的数据):Private Sub Winsock1_DataArrival(ByVal bytes
显示全部