串口通信
协议介绍
modbus协议
modbus通讯分为 Modbus RTU 和 Modbus TCP 通讯方式
合理参数
2026年4月6日 为天天虹PLC计米器制作的读取程序,打开串口的参数设置如下。读取米数的指令是 0103177A0002E066,其中 177A 是读取寄存器的起始地址,总共读取两个寄存器,E066 是校验码。要特别注意下面的参数 RThreshold,是针对响应数据 01030402B200005BAC 做的定制,字符长度18,对应字节长度是9,意思在接受一个完整的响应结果后触发 onComm 事件,让监听的客户端读取数据。最后两个参数 RTSEnable,DTREnable 一般都设置为 false
MSComm1.CommPort = 2
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 9
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
MSComm1.PortOpen = True
MSComm1.RTSEnable = false
MSComm1.DTREnable = false
调试工具
SSCOM

兰申协议
兰申协议(Lanshan Protocol)是一种在Modbus协议基础上发展而来的通信协议,主要用于工业自动化和设备间的数据传输。它通常用于PLC、传感器、变频器等设备之间的通信。
兰申协议的特点包括:
- 兼容性:可以与Modbus协议兼容,支持Modbus RTU和Modbus TCP等不同形式的通信。
- 扩展功能:提供了额外的功能和命令,支持设备的远程管理和监控。
- 数据格式:定义了特定的数据帧结构,以确保设备间的信息交换的准确性和可靠性。
- 应用广泛:在智能制造、楼宇自动化等领域得到广泛应用。
Li 协议
Li协议(Li Protocol)也是一种用于工业设备通信的协议,通常与Modbus等协议相辅相成。Li协议主要用于设备间的数据交换,尤其是在一些特定的应用场景中。
Li协议的特点包括:
- 高效性:相较于传统的协议,Li协议在数据传输的效率和实时性上有更好的表现。
- 简化通信:设计上简化了数据帧结构,使得设备间的通信更加方便。
- 灵活性:支持多种设备类型,可以根据不同的应用需求进行扩展。
- 实时监控:常用于需要实时数据采集和监控的场景。
Li协议与兰申协议和Modbus协议在一些领域可能有交集,但它们各自有不同的适用场景和特点。
采集/解析数据
兰申协议
发送指令:
- 构建数据帧,包括起始符、地址、功能码、数据长度、数据内容和校验码。
- 将构建好的数据帧通过串口或网络发送至目标设备。
解析数据:
- 接收数据帧后,检查起始符和校验码以确保数据完整性。
- 提取地址、功能码和数据内容,进行相应的处理。
- 根据功能码执行相应的操作,返回数据或状态信息。
- 进行
IEEE754解码时注意接收到的数据默认是大端序,直接进行解码。如果设备要求按照小端序解码则需要反转后解码。例如接收到的数据是C2ED4000,按照小端序反转后是0040EDC2
TAS
TAS-LAN-460 单口
记录于 2024年6月25日 17:20:36 ,TAS-LAN-460 单口485交换机的参数设置如下图,默认IP:192.168.0.80,登录账号密码是:admin/12345678。初次使用在天力

8口交换机

读取数据
使用 SSCOM 读取作为服务端的 tas 交换机在软件上的配置如下图,设置后先点击“连接”,再点击“发送”。软件在阿里云盘:备份文件 > setup > dev > SSCOM读取Tas460ModBusRTU数据.zip

RS485布线规范
- 选择合格的电缆,此为最基本项,线材需选择合格的电缆,一般建议选择4芯屏蔽线,通讯效果更好。
- RS485总线必须要接地,严格来说必须要单点可靠接地,单点就是整个485总线上只能有一个点接地,不能多点接地,防止共模干扰。接地时整个线路的地线必须要有良好的接触,从而保证电压一致。
- RS485信号线不可和强电电源线一同走线,在施工中,有时工人为图方便会直接将同一管线中的RS485信号线与电源线绑在一起,此时强电的电磁信号会对弱电进行干扰,从而导致RS485信号不稳定、通讯不畅,需避免一同走线。
- RS485布线不可布置成星型或树形接线,必须要手拉手的布线,若直接设为星型连接或树形连接,很容易造成信号反射导至总线不稳定。(在接下来的内容中会反复强调)
RTU 和 ASCⅡ 模式
有些串口设备可以调节 MODBUS 使用 RTU模式或者 ASCⅡ 模式通信。根据传输特点,后者抗干扰能力更强,如果使用 RTU 模式建议波特率调整在 9600 以上。RTU 模式一般采用 CRC校验,ASCⅡ 采用LRC校验。两种传输模式的区别如下
| 传输模式 | ASCII (7 bit) | RTU (8 bit) |
|---|---|---|
| 编码格式 | ASCII码 (‘0’-‘9’ ‘A’-‘F’) | 8bit二进制 (0x00 – 0xff) |
| 起始位 | ||
| 数据位 | ||
| 校验位 | ||
| 停止位 | 1 | |
| 7,8 | ||
| 无、奇、偶 | ||
| 1、2 | 1 | |
| 8 | ||
| 无、奇、偶 | ||
| 1、2 | ||
| 帧校验 | LRC | CRC16 |
ASCⅡ 解析方式见下:
TCP 通讯
寄存器和数据类型
| 寄存器类型 | 数据长度 | 寄存器数量 | 描述 |
|---|---|---|---|
| COIL | 1 bit | - | 布尔变量(ON OFF) |
| FLOAT | 32 bit | 2 | 32位浮点数(IEEE754格式) |
| INT | 16 bit | 1 | 无符号整型(0x0 – 0xFFFF) |
| DOUBLE | 64 bit | 4 | 64位浮点数(IEEE754格式) |
各种数据类型介绍
COIL
布尔变量 0xFF00 -> ON 0x0000 -> OFF
FLOAT
使用2个寄存器存储单精度IEEE754格式的浮点数。 每个浮点数包含4个字节,具体定义如下: SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM S:符号位 0->正 1->负 (1位) E:阶码 (8位) M:尾数的小数部分 (23位) 例如:0xC1480000 = -12.5
DOUBLE
使用4个寄存器存储单精度IEEE754格式的浮点数。 每个浮点数包含8个字节,具体定义如下: S:符号位 0->正 1->负 (1位) E:阶码 (11位) M:尾数的小数部分 (52位)
INT
使用1个寄存器存储无符号整型数。 例如:0x0025 = 37 0x1234 = 4660
