|
楼主 |
发表于 2020-8-28 13:08:32
|
显示全部楼层
本帖最后由 RaymondLee 于 2020-8-28 13:23 编辑
我估计是通讯协议应用有问题。I/O模块通过总线通讯协议来传输数据,先是将I/O通道的电信号(这里的电信号理论上来说既可以是开关量信号也可以是模拟量信号)通过模数转换成数字信号(信息帧),再按照总线通讯协议的规则将 地址帧、信息帧、功能帧等编码成一条完整的报文,再发给FAS的主机。 以下以MODBUS-RTU的报文结构为例;
起始位,可以理解为I/O模块的固有寄存器中用来存储有效数据(比如DI状态)的索引号。
设备地址,指的就是某台模块的地址,在同一总线系统中这个地址和设备是一一对应的,不能重复。
功能码,是用来表明这条报文的目的和功能,比如是读寄存器或是写寄存器。
数据,就是写入/读出的I/O通道状态
后面的CRC校验和结束符,是用来保证通讯有效性和协调报文发送结束而设立的。
基于MODBUS通讯协议,比如FAS主机想知道一个地址为25的4DI模块的4个开关量状态,主机会先发一条报文给IO模块,通知它把你的开关量状态告诉我,这条报文只会带一个地址“25”(不像你说的多个地址,地址就对应这个模块,不对应这个模块的某个通道)。I/O模块收到这条信号后,就会回复给主机,假如模块的4个通道都是高电平,回复报文的数据帧就是“11110000”(二进制表示8位;实际上可以不止8位),假如前两个通道低电平后两个通道高电平,回复报文的数据帧就是“00110000”。这样用一个设备地址,同样可以传输多个通道的状态。
我看国内消防系统用得多的二总线叫做POWERBUS,这种总线是可以兼容MODBUS协议的。理论上是可以轻松实现1个设备地址传输多I/O通道数据。这个问题我昨天咨询了泰和安的技术,他说其实是可以做多通道的,主要是考虑到应用层面上。他指的是现场施工和调试人员素质参差不齐,必须要给他们一个简单的系统。
C:\Users\Administrator\AppData\Local\YNote\data\weixinobU7VjjXNhbYFEHbTCidWJnR-jO4\3fdd43344927440e9f0e9755c5a7a433\clipboard.png
|
-
MODBUSRTU报文结构
|