Foxtable(狐表)用户栏目专家坐堂 → 通信协议请教


  共有2254人关注过本帖平板打印复制链接

主题:通信协议请教

帅哥哟,离线,有人找我吗?
ljh29206
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1361 积分:12049 威望:0 精华:0 注册:2012/3/5 11:32:00
通信协议请教  发帖心情 Post By:2015/12/29 14:46:00 [只看该作者]

采用RS485 MODBUS RTU标准通讯

,说明如下

    2、数字量输入信号采集命令:

    

 发送:01 02 00 00 00 08 79 CC (例/16进制)

数据

字节

数据说明

备注

01

1

模块地址

地址范围01-FE

02

1

功能码

02-读取输入位

0000

2

输入地址(1x型)

0000-输入位起始地址

0008

2

读取输入位长度

0008-读取8个输入位

79CC

2

CRC校验码

前面所有数据的CRC校验码

 

 接收:01 02 01 C2 20 19(例/16进制)

数据

字节

数据说明

备注

01

1

模块地址

地址范围01-FE

02

1

功能码

02-读取输入位

01

1

字节数

01-读取1个字节长度

C2 

1

读取数据

C2-读取输入位状态

2019

2

CRC校验码

前面所有数据的CRC校验码

 

读取的数据“C2”,转换成2进制数为“11000010”,从左至右分别对应8路数字量输入信号DI_08-DI_01的状态,即DI_08、DI_07、DI_02有输入,其它通道无输入


项目打开后写入

Ports.Add("COM15")
With
Ports("COM15")
    .Close()
    .Parity = Parity.None
    .Handshake = Handshake.None
    .StopBits = StopBits.One
    .BaudRate =
9600
    .DataBits =
8
    .Open

End
With

 窗体 计时器写入

 Ports("COM15").Write("01 02 00 00 00 08 79 CC ")

Dim s1 As String  = Ports("COM15").ReadExisting()

Dim s2 As String

s2 = s1.Replace("g","").Trim()

e.Form.Controls("TextBox1").text = s2

e.Form.Controls("Label1").text = s2


不能读出数值,求指点


 回到顶部