用VB写的程序与施耐德PLC(PLC 型号:BMX P34 2020)实现以太网通信
调用winsock控件,采用modbus 协议
已经顺利实现读线圈、写线圈、读寄存器整数、读寄存器浮点数
(唯独没有写寄存器成功,原因在下) 因为有个很奇怪的问题,在所有的读写过程中,不管是地址还是数据内容,每个字节都不可以超过&H80(十六进制数 80)
比如:向字寄存器%MW42 写数据,该寄存器存的是整数,数据长度为一个字(也就是16 位二进制,4 位 16 进制字符): 运行结果如下: 一、 向寄存器%MW42(其地址为十六进制数 002A)写入字符&H000F,运行结果如下: %MW42 数据类型如下:整数 1、VB 里的发送数据程序: (1) Private Sub Command1_Click() (2) Dim str2(12) As Byte (3) str2(0) = &H0 '交换识别号高字节,通常为 0 (4) str2(1) = &H0 '交换识别号低字节,通常为 0 (5) str2(2) = &H0 '协议识别号高字节,为 0 (6) str2(3) = &H0 '协议识别号低字节,为 0 (7) str2(4) = &H0 '字节长度高字节 (8) str2(5) = &H6 '字节长度低字节 (9) str2(6) = &HFF '单元识别号,确省为 255 (10) str2(7) = &H6 'modbus 功能码,06 为预置单寄存器 (11) str2(8) = &H0 '寄存器的起始地址高字节 (12) str2(9) = &H2A '寄存器的起始地址低字节 (13) str2(10) = &H0 '数据内容高字节 (14) str2