搜索
bottom↓
回复: 13

PLC的指令是从EEPROM中一条条读取还是一次性读到单片机中?

[复制链接]

出0入0汤圆

发表于 2012-8-16 13:06:23 | 显示全部楼层 |阅读模式
坛子有研究过PLC的大侠们,高手们,先生们,女士们,还有先女们,PLC指令下载到单片机系统中后,需要将PLC指令存放EEPROM或flash中,那单片机解释程序执行的时候是从EEPROM中读取一行代码解释还是一次性将PLC指令代码从EEPROM中全部读取,在单片机的内存区开辟一个存储区,然后再一条一条的解释程序?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-8-16 22:52:45 | 显示全部楼层
不同公司不同型号的plc电路结构差异巨大,简单的plc用的是单片机加外部flash,编译型的直接串行执行编译后的机器指令,解释型的串行解释flash中的指令。国内有些山寨的也是编译型的,程序直接烧在单片机里。高端plc有带操作系统的,用SDRAM的,无论解释还是编译型全部都是将存储卡中的程序读入内存后执行的。

实际这个过程中有些plc还有加密处理,有些直接是读取时解码,也有些是读入到内存后解码。

出0入0汤圆

 楼主| 发表于 2012-8-17 11:22:02 | 显示全部楼层
2楼的大侠好,我还有疑问:
一、PLC下载OK后,肯定先将程序存储到存储卡中,如果是将存储卡的程序一次性读到内存中的话,这样需要在单片机中开辟一块内存区域来存放程序,这样一个区域是事先开辟好的固定的容量吗?1:如果固定容量那么说程序就有一个最大程序网络(行),这个大小可能每家都不一样?2:如果不是固定的容量,那么该如何确定和开辟内存区域来存储程序?
二、如果每执行一句指令则从存储卡中读取一句(比如4K存储卡的固定区域存放程序)来执行,那么这样指令的解释和执行都耗费时间,这样还可行吗?
菜鸟提问,恳请2楼解答,谢谢非常!

出0入0汤圆

 楼主| 发表于 2012-8-18 12:49:58 | 显示全部楼层
顶起来啊,大伙来说道俩句啊,解困惑啊

出0入264汤圆

发表于 2012-8-18 13:17:38 | 显示全部楼层
我认为应该是开辟固定大小的内存空间存放吧,但是这也要看选用的MCU的RAM空间大小。毕竟一条条的从FLASH中取指令是比较慢的,但是也未尝不可,只是速度慢一些。全部读取到RAM中,然后再访问速度是比较快的。程序容量每家的每个机种都是不一样的,而且指令编码占用的字节数也是不一样的。
简单的应用场合速度慢一点也没有关系,主要是稳定性要好。而且PLC的扫描周期是随着程序的步数增加而增加。所以还是要分应用场合来定。

出0入0汤圆

 楼主| 发表于 2012-8-18 13:48:47 | 显示全部楼层
可是一旦一款PLC批量后,不会分是开辟固定内存执行指令的方式还是从flash读取一条再执行一条指令的方式;揪心啊,还有个问题,PLC内的指令中间代码会使用二维或多维数组的形式呢还是只使用一维数组的形式,多维数组执行慢,一维数组程序编写复杂,也是一个平衡的点。大侠啊 再恳请给予见解!!!!!!

出0入0汤圆

发表于 2012-8-22 12:21:18 | 显示全部楼层
梯形图指令是可以直接存在单片机内部FLASH里的(前提是这款单片机支持应用程序读写FLASH),执行梯形图的时候,一条一条读出来解释执行,不比存在RAM里慢。你们所谓的慢,估计都想着把梯形图存在外部的串行EEPROM吧。

出0入0汤圆

 楼主| 发表于 2012-8-23 21:23:04 | 显示全部楼层
biscuit2 发表于 2012-8-22 12:21
梯形图指令是可以直接存在单片机内部FLASH里的(前提是这款单片机支持应用程序读写FLASH),执行梯形图的时 ...

FLASH是程序存储器,是程序存放的位置,我的意思是:梯形图翻译的中间代码下载到单片机系统中后,我们暂称为PLC指令,这个PLC指令时在单片机运行时开辟RAM存储然后解释程序翻译每句指令,还是存放EEPROM或SDRAM中再由单片机从SDRAM或EEPROM读取一句指令执行一次,然后再读取再执行,如此这样。如果要是开辟RAM时,这个RAM应该是固定大的,这就要求PLC指令是有长度限制的,如果指令少那就比较浪费了。

出0入0汤圆

发表于 2012-8-24 11:13:18 | 显示全部楼层
梯形图指令可以存在单片机的FLASH里的,跟单片机的程序一起,只是地址不同,不需要开辟RAM。

出0入0汤圆

发表于 2012-8-24 11:13:57 | 显示全部楼层
有一种技术叫IAP,你去看看书。

出0入0汤圆

发表于 2012-8-24 17:37:15 | 显示全部楼层
plc能有多复杂?很多plc就是单片机系统,单片机都是串行执行程序的,复杂高端的plc用流行话说就是嵌入式系统,有高速的处理器,存储器,但也就是个专用系统而已,本质上依然是计算机。并没有什么神秘的高技术,至于可靠性,是系统设计思想,在生产中逐步积累的经验而已,对于学术来说,并没有新货

对于应用来说,根本不必考虑程序存储和加载问题,否则plc就不是个高中生就能玩的东西了。简单易用是plc的价值。
楼主如果要设计plc,也要看目的,玩兴趣,个人力量不大,基于单片机即可,而且要学的东西还多,知识储备还差的远;搞个plc开源,这个坛里有人搞过,看看即可;搞商业,要么就多了个山寨货,要么就是低价低质量货,这个淘宝上也是一找一大堆。当然还流行所谓软plc,就不过是另类的解释器而已,这个就是纯软件搞的编译原理的实践课了。
总结来说,搞plc的基本知识:编译原理,基本编程语言,基本单片机知识,上位机通信编程,gui(界面)编程。至于杂乱的其他东西就更多了,
所以,个人要搞plc就最好不要搞太复杂的。

出0入0汤圆

 楼主| 发表于 2012-8-24 23:00:11 | 显示全部楼层
明白楼上2位所说,我是想把软PLC做好,放在我其他系统中会用到,其实就像把点位控制做好,现在已经做好了,赶紧运行挺稳定的

出0入0汤圆

发表于 2012-9-12 11:21:51 | 显示全部楼层
一、PLC下载OK后,肯定先将程序存储到存储卡中,如果是将存储卡的程序一次性读到内存中的话,这样需要在单片机中开辟一块内存区域来存放程序,这样一个区域是事先开辟好的固定的容量吗?1:如果固定容量那么说程序就有一个最大程序网络(行),这个大小可能每家都不一样?2:如果不是固定的容量,那么该如何确定和开辟内存区域来存储程序?

三菱FX1N,最大程序是8000行,西门子S7-200PLC,最大程序是16K。

出0入0汤圆

 楼主| 发表于 2012-9-12 20:55:54 | 显示全部楼层
收到楼上,已经跑起来了我的PLC,并且上位机下载PLC程序正常,运行正常,存储正常,会考虑更改存储和电源断电存储方面
相信只要改善上述弱点,即将完成整套系统。呵呵,感觉只有真实搞了,才能考虑所有问题,否则都只是空想,实际搞的跟想象的,差别很大很大。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 20:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表