PLC的M究竟是什么,今天就来认识它
最近几天有某工友表示PLC编程中不用M和T。我发现大家有些观点有误,这段时间比较忙,但忍了很久,实在忍不住了,抽半天时间写篇文章。用不用先不说,首先得知道M和T究竟是什么?T有点特殊,先不谈,把M搞清楚了T就容易搞清楚。如果学过单片机或计算机原理或嵌入式等硬件课程的就不用看了,因为这是非常基础的概念,我今天不用电子技术的语言来说,所以语言会不太严谨,主要目的是用通俗易懂的语言让搞PLC的人听懂,请工友们手下留情不要把我脸打肿了。先说说我接触编程的过程,我是学硬件的,编程最先学的是51单片机和X86汇编,然后学C/C++,最后才学的PLC,编程掌握不好,即使到今天我也无法准确阐述什么是面向对象!先自己打脸,但这不影响我用PLC做项目。其实PLC是最像单片机的,完全就是单片机的硬件升级软件简化版本,扯远了!下图是西门子S7-200手册里关于存储器结构的介绍。左边这个RAM就是今天的主角。
下图是对数据存储器的定义:
下图来看数据存储区究竟有些啥,请注意看M区:
看了上图可能明白了,M存储区在数据存储区,数据存储区又在RAM中。RMA长啥样?
下图左上那个蜈蚣状的CY62256就是西门子S7-222CPU的RAM。
就是块集成电路,我还是看不懂!那就“拆”开给你看。下图就是内部结构:
没错,它就是一堆“房间”,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对存储空间的定义,下图:
这个就更清晰了,M和D有区别吗?半毛区别都没有!其实还是有区别的,唯一的区别就是M区能让我们很方便地进行位寻址。
那么不用M可以吗?当然可以!不过,既然M和D(V)没有区别,我们为什么不用?我也不知道!那么某工友说的所谓标准化编程究竟是什么呢?我没买过他的资料,厂家的手册难道不香吗?
从他的描述中,我的理解是,哪里是不用什么M、T,估计他宣扬的只是全部用局部变量,不用全局变量,这样程序在进行移植的时候不用关心存储空间的分配,直接交给编程软件的编译系统来完成。M也可以定义为局部变量呀!为什么不可以用?因为有些使用通用MCU的PLC,位寻址能力很弱,位寻址的时间比字寻址时间还长!
那么如何做到不用M呢?
很简单,你把V(D)数据地址当成一个M来使用就可以了。但大厂PLC使用的CUP都是自己设计的,保留了很强的位寻址和操纵能力。那么放弃使用M和T有实际意义吗?只要大厂还提供直接的位寻址和操纵能力,就没有必要放弃!特别是梯形图,天生的就非常适合位寻址,用M的编程方式。这么香干吗要放弃!
想学PLC编程?怎么学性价比高?老电工给出建议
经常有电工朋友发信息问我,想学PLC可不可以去那些培训机构学习?肯定是可以去培训机构学习的。培训机构一般都比较专业,会系统的全面的讲解PLC知识。但是我的建议是如果对PLC完全零基础纯小白一点不懂,不建议直接去培训机构进行学习。
因为第一个培训机构收费比较昂贵,比如大几千甚至上万。再一个就是培训机构培训的时间一般都比较短,可能就最多一个月的时间。要知道学习PLC编程不是一朝一夕的事情,不可能一个月就把它掌握了。可能人家上大学上三年也就学这么多东西,可能还学不到这么多。
所以要学一门学科要一步一个脚印,把基础夯实了再说学习。比如这是一款西门子PLC,如果想学西门子PLC一点基础也没有,比如像一些存储单位、存储器还没掌握直接去学肯定是不现实的。比如给你一个QL0,这个什么意思?像这些在编程的时候经常会用到。
VW100什么意思?MD10什么意思?这个还不清楚怎么去学PLC编程?像这些村住区、I区、Q区、M区、V区、L区、S区这些区都什么意思?都能干什么用?这个都要掌握。如果不掌握不知道什么是位、不知道什么是字节、不知道什么是字、不知道什么是双字、不知道数据类型是什么意思,直接去学PLC肯定培训机构也会讲。
但是时间这么短不可能讲的太细软,即使每个都讲了软,讲了以后就好比举个例子,小学生学乘法口诀,比如老师教会你了三五十五、四五二十五、五二十五,可能培训机构的第一天教会你了,第二天就让你去解方程,还没乘法口诀还没搞明白还没记住,第二天就让你去应用,肯定是学着学着就蒙了,根本就掌握不了。
所以像这些基础知识还是可以自己现在网上资源这么发达,可以自己先把这些基础知识学一下,有条件就去培训机构系统的再学一下,这个也是可以的。有好几个朋友都给我发信息说自己去培训机构学习完了以后非常的后悔,白花了那么多钱基本上什么也没学会。
曾经有好几个朋友给我发信息说买了西门子PLC的课程以后花了大几千,学的内容还没这套四十多块钱课程学的东西多。但这套手把手带你零基础PLC入门的课程就是讲西门子PLC的。目前像西门子PLC、在市场上占有率是非常高。一般一说学PLC,第一个想到就是西门子PLC,西门子司马的PLC就是最为经典的一款小型的PLC,一般学都从这里开始学。
如果有电工基础想学PLC编程,不妨先学一下这条课程。这条课程点击下方这张卡片就可以看到学习这套手把手带你零基础PLC入门的课程,就是西门子司马的PLC。或者点击我的头像,进入主页以后再点击专栏选项,可以看到全部课程,可以找到这套手把手带你零基础PLC入门的课程,可以系统的学习一下。
课程当中像这些基础知识,像PLC接线、PLC编程、各种实例都有详细的讲解。可能学完这套课程以后就不用再去花那么多钱去培训机构学习了。如果没有变成软件可以私信我,把软件也发给你。
相关问答
plc中M是什么指令?
PLC中的M指令是“状态指令”,用于检测指定位置上的内存单元是否有特定条件发生。M指令可以作为一个数据检测和逻辑控制语句,这意味着它可以改变PLC的运行流程,...
plc输入按钮的公共端应该接l还是m?
PLC的M端和L端是DC24V的接线端子,M端子接DC24V24V-,L端子接DC24V24V+,M端和L端之间电压为24V。同时M端也作为输入输出的公共端。输入端一般有I、X、E等标志...
plc中间继电器m的用法?
M是最常用的辅助继电器,其只有OFF(0)和ON(1)两种状态,和通常我们接触到的中间继电器一样,又分为常开触点和常闭触点常开触点和常闭触点是相反的两个触点...M...
plc的端子是对应的m吗?
PLC的端子是对应的M,但并不是所有的端子都对应M。PLC的端子分为输入端子和输出端子,其中输入端子对应的是I/O模块中的输入信号,输出端子对应的是I/O模块中的输...
scl编程语言只能用m区吗?
是的,SCL编程语言只能使用M区。这是因为SCL是一种结构化控制语言,主要用于S7-300/400PLC上,而在该PLC中,M区是用于存储程序数据和使用长字(DWord)类型的内...
plc编程指令m000什么时候用?
例:一个程序中可以有一个SETY000,而可以有多个RSTY000。当然也可以有多个SETY000,而可以有一个RSTY000。2:就一个启动停止和保持电路而言。用SET指令和一般...
plc输出m和q的区别?
Q线圈是输出过程映像寄存器,简单的说,就是数据传送给输出模块的,再驱动外部负载,而M是位存储器,是在程序执行过程中存放中间结果或保存数据用,可以理解成为...
西门子PLC编程软件step7microwinI输入点为什么不能输入I5.0以上?
不能输入I5.0以上,是因为根本没有I5.9,对于PLC的输入输出出点都是8个,0到7,超过7就到另一个地址了。也就是I0.0-I0.7,I1.0到I1.7以此类推,加扩展模块也是...
三菱plc编程m指令?
轴1定位完成---M代码输出---轴2定位启动其次,在定位数据的最后一列,就是设置M代码的地方,每一个定位数据都可以设置一个M代码,M代码可以.轴1定位完成---M代...
PLC编程里面M8002是什么意思?
在PLC(可编程逻辑控制器)编程中,M8002是一个输入或输出变量的地址标识符。具体含义取决于PLC的型号和编程语言。在常见的PLC编程语言中,如LadderDiagram(...