求PLC工作原理 点击:1787 | 回复:18



大黄鱼吃小黄鱼

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 17回
  • 年度积分:0
  • 历史总积分:101
  • 注册:2010年8月20日
发表于:2010-08-21 07:13:14
楼主

我是个菜鸟,刚学PLC不久,还不太清楚PLC的工作原理,请各位大虾不吝赐教。

我想问问各位高手,PLC是冯*诺依曼结构还是哈弗结构?

也就是说,PLC工作时是将EEROM里的用户程序调到RAM中再执行(像计算机将程序从硬盘调到内存运行),还是直接从

EEROM中一条一条取出来执行(像单片机一样)?




老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 08:52:30
1楼

1、考虑了很久,查阅了一下,在网上基本上找不到关于PLC是冯氏结构还是哈佛结构的论述。因此,我来回答一下。

2、这个问题不是一个简单的问题,能问出这样的问题,楼主也并不菜。

3、PLC不是纯粹意义上的单片机。

4、要讨论这个问题,首先来很简单的了解下冯式结构和哈佛结构。

        冯·诺依曼结构:将数据和指令都存储在存储器中。系统由一个中央处理单元(CPU)和一个存储器组成。存储器拥有数据和指令,并且可以根据所给的地址对它进行读或写。因此程序指令和数据的宽度相同;目前使用冯·诺依曼结构的 CPU 和微控制器有很多。其中包括英特尔公司的8086及其他CPU,TI的MSP430处理器,ARM公司的ARM7、MIPS公司的MIPS处理器也采用了冯·诺依曼结构。

        哈佛结构:为数据和程序提供了各自独立的存储器。程序计数器只指向程序存储器而不指向数据存储器,这样做的后果是很难在哈佛机上编写出一个自修改的程序,独立的程序存储器和数据存储器为数字信号处理提供了较高的性能。指令和数据可以有不同的数据宽度,哈佛结构的CPU 通常具有较高的执行效率。目前使用哈佛结构的 CPU 和微处理器有很多,除了所有的DSP 处理器,还有摩托罗拉公司的MC68系列、Zilog 公司的Z8系列、Microchip(微芯)公司的PIC处理器(MCU+MPU)、公司ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11(特别说明:ARM 7使用冯·诺依曼体系结构)等。

        哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独 立访问。与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线允许在一个机器周期 内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。又由于程序和数据存储器在两个分开的物 理空间中,因此取指和执行能完全重叠。CPU首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一 步的操作(通常是执行)。

 

       哈佛结构采用数据存储器与程序代码存储器分开,各自有自己的数据总线与地址总线。但这是需要CPU提供大量的数据线,因而很少使用哈佛结构作为CPU外部 构架来使用。但是对于 CPU内部,通过使用不同的数据和指令cache,可以有效的提高指令执行的效率,因而目前大部分计算机体系都是CPU内部的哈弗结构+CPU外部的冯· 诺伊曼的结构。 

        冯诺依曼结构可能有以下的特点:(1) 程序存储和数据存储统一编址。(2) CPU使用统一的总线来访问程序和数据。(3) CPU采用相同的指令来访问程序和数据。

        哈佛结构可能有以下的特点:(1)程序存储和数据存储物理独立。(2)CPU采用独立的总线来访问程序和数据。(3)CPU采用不同的指令来访问程序和数据。

        其实,对于单片机而言,现在已经不能很严格的去区分其结构了————只要性能最好,结构可以改进。当我们还在讨论某种单片机是什么结构的时候,厂商可能又揉合了几种完全不属于这两种结构之外的结构(我们暂且可以称之为某结构的改进型)。例如51单片机就是这种情况。下面顺便来聊聊。首先8051的结构是一种哈佛结构(虽然是改进的)没错,但是8051单片机相对以上的另外几款单片机还有一个区别,8051可以外接程序存储器和/或者数据存储器。的确对于内核数据器和内部程序器8051的ALU会采用不同的地址总线来访问。但是对于外接的数据存储器和程序存储器,却采用同样的地址总线(P0,P2)和数据总线(P0),区分是访问数据存储器和程序存储器是通过控制总线(PESN,RD,WR)来区分的。而这个外部的总线的接法是我们硬件设计者自己设计的。如果我们把PESN和RD通过与门连接到外接RAM的RD引脚。那么无论51采用读程序的指令还是采用读数据的指令,只要地址一样,都会被定位到外部RAM的同一位置,也就相当于存储结构变成了冯诺依曼结构。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 09:07:19
2楼

5、我们来谈一下PLC的数据的存储结构。下面以三菱FX系列PLC和西门子S7-200系列PLC为例。

        三菱FX系列PLC。我们首先来看张图。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 09:20:34
3楼
。。。。。。。。。。

大黄鱼吃小黄鱼

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 17回
  • 年度积分:0
  • 历史总积分:101
  • 注册:2010年8月20日
发表于:2010-08-21 09:35:37
4楼

谢谢指教

我对三菱的PLC不太熟,西门子和欧姆龙的了解多一点,貌似各类型PLC结构不太一样,有的PLC内核就是单片机,通过单片

机和其他芯片组成的系统,PLC的操作系统固化在单片机芯片的EEROM中。可能就是一种“混合结构”吧。不知道是不是这

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 09:39:11
5楼
        从上面可以看出,三菱FX系列PLC的程序存储器可以存储在选件设备RAM、EPROM或EEPROM中,也可以存储在内置RAM中。而数据存储器可以存储在内置RAM或者EEPROM中(虽然停电保持软元件和部分特殊软元件说可以存储到EEPROM,但笔者在相关手册上没找到存储的方法)。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 09:51:34
6楼

        西门子S7-200系列PLC。

        对于西门子S7-200系列PLC的存储结构,相关手册上没做太多说明。总结如下。

        对于用户程序的存储,可以存储在内置的EEPROM中,也可以存储在选件设备——外置的EEPROM存储卡中。

        PLC数据可以存储在内置的RAM(例如CPU224的RAM就是M68AF127,这是一个SRAM。SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,且功耗较大。所以在主板上SRAM存储器要占用一部分面积)中,也可以存储在内置EEPROM中(是否可以存储在外置EEPROM选件卡中,这点笔者还未去研究)————通过特殊的读写指令可以把数据存储到EEPROM中。

        存储到SRAM中的数据靠超级电容和外置电池保存其数据。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 09:57:13
7楼

        题外话,这里就可以看出,三菱标配RAM而西门子标配EEPROM,这也验证了一分价钱一分货的道理了————价格高的配置还是要好一些。

        EEPROM的掉电保存一般存储时间大约10年,也有产品宣称其产品的掉电保存一般存储时间为150年!!!

        EEPROM的读写次数和温度有关,一般为30~100万次。所以,要把用户数据存储在EEPROM中的时候就需要注意,不要在每个扫描周期都去写EEPROM,否则很快EEPROM就会报废了!!!

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 09:58:14
8楼
        综合上述,从存储结构上来说。PLC就是哈佛结构!!!

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 10:18:44
9楼
        至于PLC的固件程序,和PLC的用户程序是存储在一起的,根据PLC不同,要么是RAM中,要么是EEPROM中。而且这个固件程序,对于部分PLC来说,是用户可以升级的————网上就有关于“使用Twido位控模块时,必须将Twido40点一体型PLC的固件升级到V5.1或以上”的相关说明,并且提供了升级程序。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 10:25:51
10楼

        至于PLC的用户程序存储的数据总线和地址总线、PLC的数据存储的数据总线和地址总线是否复用的问题。这个比较难以查询,因为PLC的CPU不是通用的单片机或CPU,制造商没有公开CPU内部的具体结构和工作方式————可能也是商业秘密的问题。

        至于PLC采用相同的还是不同的指令来访问程序和数据,这个问题也不好查询,原因同上。我们的用户程序指令只是访问数据存储区,至于CPU是用什么指令访问程序存储的,也不清楚。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 10:26:43
11楼
        综合上述,PLC可以认为是哈佛结构或者是改进型的哈佛结构!!!!!!

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 10:29:25
12楼
        其实,这个问题如果讨论到很深的层次的时候,就比较复杂了。而且,我们这样的旁观者是无法了解PLC的CPU结构的。只有进行PLC的CPU研发的相关技术人员最有资格来研讨这个问题。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-08-21 10:30:28
13楼
        我的论述仅作抛砖引玉,希望大家能够也来谈谈对这个问题的看法。。。。。。

大黄鱼吃小黄鱼

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 17回
  • 年度积分:0
  • 历史总积分:101
  • 注册:2010年8月20日
发表于:2010-08-21 11:53:58
14楼

老菜鸟先生还真是老鸟,懂真多。

一下回复这么多,很感动。希望大家都来探讨探讨

GinGK

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2010年8月29日
发表于:2010-08-29 14:37:42
15楼
受教了,老菜鸟大好人~~

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-08-29 22:02:21
16楼

引用老菜鸟 的回复内容:        我的论述仅作抛砖引玉,希望大家能够也来谈谈对这个问题的看法。。。。。。




“老菜鸟”应该改名“曾经的老菜鸟”;做PLC 的能懂这么多已经超出PLC 程序开发的范畴了!

这属于 计算机硬件系统学科 范畴了!

lujun623

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:49
  • 注册:2011年2月13日
发表于:2011-02-18 14:40:55
17楼
理论太厉害了,佩服……

有烟没火机

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 54回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2011-03-06 10:18:52
18楼
辛克了  喝水

热门招聘
相关主题

官方公众号

智造工程师