登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:PLC的M究竟是什么,今天就来认识它!学过单片机的就不用看了。

点击:4532 回复:61

最近几天论坛火热,有大虾表示PLC编程中不用M和T。我发现大家有些观点有误,这段时间比较忙,但忍了很久,实在忍不住了,抽半天时间写个帖子。
用不用先不说,首先得知道M和T究竟是什么?T有点特殊,先不谈,把M搞清楚了T就容易搞清楚。
如果学过单片机或计算机原理或嵌入式等硬件课程的就不用看了,因为这是非常基础的概念,我今天不用电子技术的语言来说,那么语言会不严谨,主要目的是用通俗易懂的语言让搞PLC的人听懂。请大虾手下留情不要把我脸打肿了。
先说说我接触编程的过程,我是学硬件的,编程最先学的是51单片机和X86汇编,然后学C/C++,最后才学的PLC,编程掌握不好,即使到今天我也无法准确阐述什么是面向对象!先自己打脸!但这不影响我用PLC做项目。
其实PLC是最像单片机的,完全就是单片机的硬件升级软件简化版本。扯远了!
下图是西门子S7-200手册里关于存储器结构的介绍。左边这个RAM就是今天的主角。
附件 IMG_1766.jpg
下图是对数据存储器的定义。
附件 IMG_1767.jpg
下图来看数据存储区究竟有些啥?请注意看M区。
附件 IMG_1768.jpg
看了上图可能明白了,M存储区在数据存储区,数据存储区又在RAM中。RMA长啥样?
下图左上那个蜈蚣状的CY62256就是西门子S7-222CPU的RAM。
附件 IMG_9559.jpg
就是块集成电路,我还是看不懂!
那就“拆”开给你看。下图就是内部结构。
附件 无标题.jpg
没错,它就是一堆“房间”,32k字节。S7-222CPU使用了2k字节的存储空间,不管你是M还是T还是C,还是V,通通都在这里面。
那么如何在这一堆房间里访问找到我需要的那个她呢?看上图中A0---A14,这就是地址线,就是访问这些房间的地址,通过这些房间就能访问M、T、C、V等等。
那么M和V有什么区别吗?半毛区别都没有!除了把M区放到MCU高速缓存中的PLC结构,像西门子S7-200系列这样的都是放到一个存储芯片中的。
文章开头说过,T跟M还有点不一样。对的,因为有些PLC的有些T是由硬件产生的,那就是集成在MCU里的硬件定时器,比如西门子S7-300就有硬件定时器。那么C呢?C也有硬件计数器和软件计数器之分,硬件计数器同样是由集成在MCU里的硬件来完成的。当然,PLC已经做好了,把这些硬件T、C的数据都映射(复制)到RAM里了,我们直接访问RAM就可以了,不用关系那些硬件T和C。当然,如果你喜欢,PLC也是有指令让你能够直接访问这些硬件计数器的,比如台达就可以直接去读硬件计数器的当前值。
说了这么多如何证明M和V都是在一个芯片里呢?
那就是PLC提供了绝对地址访问功能,比如寄存器寻址,一个数据寄存器里存放的数据是一个地址数据,对的这个地址数据就是绝对地址,就是上图A0-----A14这个地址。
再来看看国货之光汇川的PLC对存储空间的定义,下图:
附件 无标题.jpg
这个就更清晰了,M和D有区别吗?半毛区别都没有!
其实还是有区别的,唯一的区别就是M区能让我们很方便的进行位寻址。
那么不用M可以吗?
当然可以!
不过,既然M和D(V)没有区别,我们为什么不用?
我也不知道!
那么大虾说的所谓标准化编程究竟是什么呢?
我没买过他的资料,准备说我从来没买过这样的资料,厂家的手册难道不香吗?
从他帖子中的描述,我的理解是,哪里是不用什么M、T,估计他宣扬的只是全部用局部变量,不用全局变量,这样程序在进行移植的时候不用关心存储空间的分配,直接交给编程软件的编译系统来完成。
M也可以定义为局部变量呀!为什么不可以用?
因为有些使用通用MCU的PLC,位寻址能力很弱,位寻址的时间比字寻址时间还长!
那么如何做到不用M呢?
很简单,你把V(D)数据地址当成一个M来使用就可以了。
但大厂PLC使用的CUP都是自己设计的,保留了很强的位寻址和操纵能力。
那么放弃使用M和T有实际意义吗?
只要大厂还提供直接的位寻址和操纵能力,就没有必要放弃!特别是梯形图,天生的就非常适合位寻址,用M的编程方式。这么香干吗要放弃!
吃饭去了!
21-08-19 11:44
开始理解其所说的M,T,是哪一个一个“小房子”,甚至还曾以为其突破PLC系统直指这个“小房子”.......
经过探讨--他认为抬杠,所谓的M只是厂家给编程者定义好的M,V,T,D....,后其称之为全局变量
由于他的广告宣传太夸张虚假,所以抬。
其可能想说明,他的编程方法方法,可以避免多人同项目编程时可能出现的M冲突问题,为吸睛使用了很不恰当的宣传语,所以很多人称之为骗子。
21-08-19 13:20

引用 lvpretend 在 2021/8/19 11:44:45 发言【内容省略】

写的真好,我一个不怎么懂集成电路的人都看的懂,津津有味
另外不用管老骗子,做工控这行,能拿得出手的永远是设备的正常运行,程序易解读,而不是什么标准化编程
21-08-19 13:48
。。。。我现在用博途写项目,多用优化快数据块符号编程,地址我都不管。
       再创建一个非优化数据块,用来和第三方HMI 通讯使用。
       M 位(布尔量)也不怎么用了,都在数据块里指定。。。正如楼主说
       的,反正没区别。
       T 和 C 需要就用。。系统里给你准备好了,不用白不用 !
最后修改:2021/8/21 19:53:28
21-08-21 19:46
话说得再多, 无非证明自己离不了。
而根本想象不到别人离开了M和T的羁绊之后编程有多爽。
21-08-21 21:37
5楼
该帖内容不符合相关规定!
21-08-22 00:10
不要吵,
万师傅推广自己的课程也无可厚非。
有需要的可以联系他。
大家交流讨论也很正常。
都是在这行当打拼,挣工分。
求同存异吧
21-08-22 05:06
这种观点的争论与课程无关。
也是早在有标准化方法之前,就已经存在的争论与共识。
21-08-22 06:37
不用白不用表情
最近用博图也是,管他FB FC 一概FB,反正资源多,用不完。
DB块也是,一个非优化DB块和第三方HMI链接,其它非必要都是优化DB块,管它怎么分配,反正用不完。表情
21-08-22 09:09

引用 bnnyygy 在 2021/8/22 9:09:10 发言【内容省略】

不用白不用
这句话是实在话
21-08-22 09:18

上一页下一页

工控新闻

更多新闻资讯