redelz 发表于 2023-7-9 15:59:11

STC单片机PLC如何解决变量内存分配问题

本帖最后由 redelz 于 2023-7-10 15:29 编辑

      一个完整PLC必须具备输入输出变量,延时时间变量,计数变量,中间继电器变量,系统状态变量,表格变量,还必须具备现场总线协议变量。必须对逻辑运算,基本数学运算实现内存分配支持。按照嵌入式操作系统的基本办法就是malloc和free,尽管我们可以重定向内存分配算法,但是对于STC单片机这样的内存资源,利用C语言和嵌入式操作系统的内存管理方式实现PLC这样式复杂系统是完全不可行的。
      我们的STC单片机PLC驻机软件完全不需要嵌入式操作系统,完全采用原生MCS51汇编指令编写,这是业内唯一采用51单片机实现的PLC产品。后续本人将进一步揭秘STC单片机高水平汇编语言软件开发细节,过一段时间我将提供STC学习板的二进制烧入文件,大家可以将其烧入学习板后使用PLC编程工具开发单片机程序。
      为了在STC单片机及其有限的内存资源内实现PLC变量,首先我们将PLC变量分为逻辑变量和数据变量两种,对于大部分自动控制算法系统是完全够用的。然后将所有变量提前命名,例如输入是Xn,输出是Yn,时间变量是Tn,计数器变量是Cn。并且变量采用多态方式,及逻辑变量和数据变量采用相同命名,通过具体指令实现多态辨识。这样所有的PLC变量就可以提前分配,因为PLC控制是不允许发生软件故障的,很多设备投入运行后永远不停电。所以任何动态内存分配算法都是不可行的。

电子DIY小家 发表于 2023-7-12 13:32:14

这些变量直接存到xdata不就好了吗,需要哪个就调用哪个,不过需要强制指定存储地址,这样可以直接通过dma去调用数据

redelz 发表于 2023-7-12 14:53:13

电子DIY小家 发表于 2023-7-12 13:32
这些变量直接存到xdata不就好了吗,需要哪个就调用哪个,不过需要强制指定存储地址,这样可以直接通过dma去 ...

对于小规模软件代码无论采用哪种方案均属可行,但是对于一个功能完整的系统软件,维护修改升级时间将持续非常长的时间(超过十年,有使用价值的工业软件,都必须有十年以上的积累,数千个内部版本迭代),所以变量分配策略非常复杂,是系统软件成功的基础。感谢关注。

电子DIY小家 发表于 2023-7-12 15:06:10

redelz 发表于 2023-7-12 14:53
对于小规模软件代码无论采用哪种方案均属可行,但是对于一个功能完整的系统软件,维护修改升级时间将持续 ...

网上很多仿三菱的开源代码,好多都跑了n多年了,可以看看打开思路的,我刚说的就是开源代码里最常用的之一。

redelz 发表于 2023-7-12 15:20:54

本帖最后由 redelz 于 2023-7-12 15:31 编辑

电子DIY小家 发表于 2023-7-12 15:06
网上很多仿三菱的开源代码,好多都跑了n多年了,可以看看打开思路的,我刚说的就是开源代码里最常用的之 ...
我们的产品,原始开发于1999年,嵌入式驻机软件和编程工具软件均属原始代码原创。包括梯形图指令系统,如有类似均属偶然。正式产品的外壳也是我们设计,和专用模具压制,拥有外形专利。可以说是彻底国产原创。

星星点灯 发表于 2023-7-26 12:30:55

飞捷 发表于 2023-10-13 08:56:59

redelz 发表于 2023-7-12 15:20
我们的产品,原始开发于1999年,嵌入式驻机软件和编程工具软件均属原始代码原创。包括梯形图指令系统,如 ...

如是用三菱的软件,其实就是山寨了
页: [1]
查看完整版本: STC单片机PLC如何解决变量内存分配问题