楼主已经知道485理论的东西了,不需要多说,给个例子你看看就明白了,很简单的:
从硬件上看,485任何时候都是广播的通讯方式,所以有下面的做法:
例如, 主机发送一个消息给全部从机, 格式是
第1个字节 #
第2个字节 消息代码 例如 0x01
第3个字节 从机地址
n个字节 消息数据
最后1个字节 CRC校验码
主机发送的这个消息, 全部从机都会收到, 如果从机发现"消息代码"是自己可以识别和处理的类型, 并且自己的地址和消息中的地址相同, 则处理消息并按以下格式发送响应消息
第1个字节 #
第2个字节 响应消息代码 例如 0x02
n个字节 消息数据
最后1个字节 CRC校验码
要注意的是,这个响应消息同样是"广播"的,所有从机和主机都会收到,在这个例子里,0x02的消息代码是只发送给主机的,所以消息里没有地址. 实际上如果需要的话, 这个响应消息也可以加上地址码, 由这个从机发送给另外一个从机, 达到令牌传递的效果
因为485的广播特点, 在各个节点, 包括主机和从机, 消息响应的程序必须考虑到各种消息类型都能正确处理, 或正确"忽略", 否则接收到无法处理的消息就乱了 |