RTU的顶层任务分布及任务间通讯方式
0、开始任务,创建以下几个任务后,挂起本身
1、数据采集任务:创建连接于RTU的各个接口的数据采集任务。创建完毕后,进入死循环中,被消息邮箱Em1阻塞,等待各个采集任务采集完毕或者超时;消息邮箱Em1中的消息某位置位,表示某个采集任务完毕
1)各个任务被“采集任务消息邮箱Em2”阻塞,依据消息邮箱里的值决定是否进行采集流程。例如采集任务A中,消息邮箱中的消息中是'A'或者‘O’,则采集任务A进行数据采集;否则,continue,继续被消息邮箱阻塞,等待进行采集。
11)采集任务调用协议层,封装有效命令数据,被发送缓冲区互斥锁阻塞;当可写时,将命令数据写入发送缓冲区,释放锁,并发送消息队列Eq1数据(包括有效数据起始地址及长度)至串口发送任务,然后被接收消息邮箱Em3阻塞。
12)串口被消息队列数据Eq1阻塞;当有消息队列数据时,读取队列数据(发送缓冲区数据地址及长度);检测发送缓冲区互斥锁,锁有效时,复制有效数据及长度,释放锁;调用串口发送函数,发送有效数据;无效,需要等待锁有效;
13)串口接收中断,将接收到的数据写入接收缓冲区,并发送消息至消息邮箱Em3
14)各个采集任务接收到消息邮箱Em3的消息,按照本身协议检查数据是否正确,正确,则提取有效数据,并发送某位置位消息至消息邮箱Em1,
4)采集任务采集完毕或者超时,各任务不用信号量阻塞的原因所在就是某个采集任务可能被指定运行。
将有效数据地址发送到
每个采集任务被数据采集消息邮箱阻塞,中的值决定每个采集任务进行一次,或某个采集任务进行一次,或其中某几个进行一次;采集到的数据相对位置固定(或者由系统配置决定);该任务是由定时器或者GUI显示任务所触发
2、数据存储任务:当需要存储某些数据时,由消息邮箱决定该存储哪些数据及存储的位置,该任务由采集任务触发
3、数据传输任务:数据的上传。该任务由定时器和数据采集任务触发
4、设备配置任务:接收到配置数据后,启动设备配置任务,锁定相关系统配置存储区,该任务由GUI或者网络数据触发
5、GUI显示任务:捕获对显示设备的操作,使用消息邮箱中的消息触发显示何种内容,该任务由用户触发