qepuemc
发表于 2024-7-6 17:14:30
Yim_Hom 发表于 2024-7-6 08:41
那接下来的想法就是。有主机ABC。分别需要对从机123 4 5进行采样。为了使主机ABC不互相干扰。需要对他们的 ...
这样说的不太清楚。假如有主机ABC。他们都对123 4 5进行采样。比如说主机b还需要联网。但是每次的采样周期都相对比较长,比如一分钟。
而主机a作为CPU处理器。可能每200毫秒就要采集一个数据。毕竟要采集多种数据,可能需要更长时间。这个时候他就会把。数据统一发送的问询的485网络。这个时候12345可以接受的数据如果这条数据是发给三的,那么三就做处理1245不予理会。但是这时候这些数据不管是发的还是回的都会发到。主机b。这样的话主机b也会比较繁忙。接受了很多他不需要的数据。还有可能加上主机c呢。要想屏蔽掉这些无用的信息。我觉得一种方法就是加上一个转换模块。接收到主机的信息就去分机上请求。并把请求完成的数据发给主机。平时就是等待主机的命令。也就是把串口引脚设置到主机的位置。等到接收到指令后再换从机的位置。
用一个芯片能不能同时接收两个串口中断。这个我没有试过,所以还不知道。
晓飛飛
发表于 2024-7-6 20:16:46
qepuemc 发表于 2024-7-6 17:04
STC32G12K128都有四个独立的物理串口
上面这一句我的理解就是。这个芯片可以有4组独立的串口缓存。只要接 ...
STC32G12K128有四个独立的物理串口,就是字面意思,没有其它含义。
你说的4组独立缓存也好,数据保存也罢,都需要代码实现,单片机能提供给你的就是足够的串口、存储空间和指令处理能力,其它的都需要通过代码实现。
标准的RS-485总线是一主多从的结构,你可以使用一个单片机的多个串口接入多个485总线,并接收各个网络里面的主机指令,至于指令什么过滤,怎么转发,只要逻辑清楚都可以通过代码实现。
soma
发表于 2024-7-6 22:18:00
MCU都是一步一步执行任务的多串口应该也是有任务延时吧。不可能同时发送同时接收。
Yim_Hom
发表于 2024-7-6 23:52:57
qepuemc 发表于 2024-7-6 17:14
这样说的不太清楚。假如有主机ABC。他们都对123 4 5进行采样。比如说主机b还需要联网。但是每次的采样周 ...
要纠结的话,同一优先级,也会有很轻微的先后,可以忽略不计。
但是01 02 03…编码,或者叫帧头+地址码+功能码+校验码+帧尾的方式,是能实现你的需求的。长度你自己可控啊。
比如
FF FE 做帧头
01
02…做地址码
03 04 78 89 90 1A做功能码
FE FF做帧尾
根据地址码再确定处理与否
把串口当作类modbus来用也不是不行。
qepuemc
发表于 2024-7-7 08:02:37
Yim_Hom 发表于 2024-7-6 23:52
要纠结的话,同一优先级,也会有很轻微的先后,可以忽略不计。
但是01 02 03…编码,或者叫帧头+地址码+ ...
这么说明,主机从机都是我自己做的。不过也是符合modbus协议的。也有校验。这样方便加其它设备通信。现在在加有人的DR154上云,这就需要地modbus的。本地当然也可以做两套从站协议,不过还是有过多的数据发送到串口总线。然后还要加触摸屏幕的通信。所以要做到数据过滤。免得上云设备数据太多(估计有边缘处理功能就不用了)。现在是没有。所以需要这样的考虑。
qepuemc
发表于 2024-7-7 08:07:10
晓飛飛 发表于 2024-7-6 20:16
STC32G12K128有四个独立的物理串口,就是字面意思,没有其它含义。
你说的4组独立缓存也好,数据保存也罢 ...
你这意思和工程师说的不一样可能。他们说的就是只有一个串口。但是可以设备多组引脚。
我的意思是如果有30 31 1617 3637这个时候设置为等1617 的中断数据就不可以等36 37的中断数据,所以没法处理两个485串口过来的数据。 是不是只能设置16 17 口中断然后等数据来了。再处理然后再发到36 37然后再去16 17 口去等待呢?
qepuemc
发表于 2024-7-7 08:09:01
soma 发表于 2024-7-6 22:18
MCU都是一步一步执行任务的多串口应该也是有任务延时吧。不可能同时发送同时接收。 ...
就是这样意思。我咨询过。不可以是4个口都设备中断。只能选用其中一个。32脚的话只有三个。所以理解不了四个串口
Yim_Hom
发表于 2024-7-7 08:16:44
qepuemc 发表于 2024-7-7 08:02
这么说明,主机从机都是我自己做的。不过也是符合modbus协议的。也有校验。这样方便加其它设备通信。现在 ...
那你肯定也是先采集数据,然后往外发或者到云端完成数据的发送和处理,大家都明白你的意思,重要的是思路和方法,不然怕是没有mcu能满足你。
晓飛飛
发表于 2024-7-7 10:44:43
soma 发表于 2024-7-6 22:18
MCU都是一步一步执行任务的多串口应该也是有任务延时吧。不可能同时发送同时接收。 ...
简而言之,某个串口的收发不会阻塞其它串口的收发
晓飛飛
发表于 2024-7-7 10:47:16
qepuemc 发表于 2024-7-7 08:09
就是这样意思。我咨询过。不可以是4个口都设备中断。只能选用其中一个。32脚的话只有三个。所以理解不了 ...
你自己看过芯片手册就不会有这样的疑惑了,因为芯片资源太多,不得已才通过交叉复用的方式把资源分配到一些固定的IO上,如果选了引脚较少的芯片,那些删减掉的引脚的资源自然无法引出。你可以选择64PIN的芯片,4个串口都可以使用。