最近在做200Smart的项目,好久没用Smart了。看了一些论坛帖子,发现大家都挺上心的,居然把Smart给弄得这么高大上,我也来做个轮询程序。
不过说实话,这个轮询程序花费了不少时间,都是零零碎碎的,每次都需要重新熟悉以前的思路,好累人。
---------------------------------
实现要求:
通讯的从站可以是N个,只要通讯需要就可以适配,通讯的任务可以是X个,每个从站X条。
通讯任务只需要简单定义V中的地址符号名称,然后填写数据表实现任务数据化就行,运行后自动执行轮询。
轮询中如果有从站通讯错误,并达到一定的错误数量就降级为异步通讯,该从站并不会在此后的通讯中被每次轮询,只在同步从站轮询一定次数后才尝试轮询一次。错误的异步从站在轮询一定次数都成功后升级为同步从站,也就是普通站参与正常轮询。
-----------------------------------
由于采用我之前实现的静态背景数据块方案,以及几个关于表格处理的子程序,程序显得很大,在我做实验的ST20中占用了10K左右的空间,大多是静态管理和表格处理占用。
有时间做些优化,去除静态管理和简化表格处理。当程序方案确定后其实静态管理大多每周期只执行一个获取地址的动作,表格处理较为头疼,多处调用,不能简单地放到程序中而不用子程序。
-----------------------------------
立此贴以纪念这么多无聊的时间。