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的指令寻址方式相对较少,一般有下面三种:
1、直接寻址
操作数就存放在数据的地址。基本逻辑指令都是直接寻址方式。
2、立即寻址
其特点是操作数(一般为源址)就是一个10进制或16进制的常数。
3、变址寻址
这是一种最复杂的寻址方式,立即寻址和变址寻址均用在功能指令中。我们只能举例加以说明。
MOV D5V0 D10Z0
这是一条传送指令,D5V0表示操作数的地址存放在从D5开始向后偏移(V0)的寄存器中,而D10Z0表示把数的传送到D10向后偏移(Z0)的寄存器中,如果V0=K8,Z0=K10,且D13中存放的数据是K300,则指令执行结果是把D5向后偏移8个单位,即5+8=13,也就是数D13所存的数据K300送到10+10=20即D20寄存器中去。
变址方式可以使一些程序设计变得十分简短。
上面所讲的指令寻址方式的某些知识,在这门课程中虽然不会用到,但只要希望不断提高自己的PLC应用能力,就一定会用到。
二、编程元件
PLC内部有许多具有不同功能的器件,这些器件通常都是由电子电路和存储器组成的,它们都可以作为指令中操作数地址,我们把常数K/H和这些器件(又称作软元件)统称为PLC的编程元件。
三菱FX2N的编程元件可以分为位元件和字元件两大类。位元件是只有两种状态的开关量元件,而字元件是以字为单位进行数据处理的软元件。位元件有X,Y,M,S。字元件有T,C,D,V,Z,P,I,N和组合位元件。我们把常数K/H也归入字元件。
往期优秀文章回顾:
多种方法教你用PLC与变频器连接!可以说是很全面啦
相关问答
plc地址m代表什么?
在PLC编程中,"M"表示内存位(MemoryBit)地址。内存位通常用于存储逻辑状态或触发条件,用于控制PLC的输入和输出。PLC的内存位地址通常由字母和数字组成。在...
m代码在plc中怎么查?
要查看M代码在PLC中的具体实现,可以使用相应的编程软件,如Siemens的STEP7、Allen-Bradley的RSLogix等,通过连接PLC编程口,打开PLC中的...
西门子300PLC中,MB0,MB1,MW1,MW0,是什么意思?_作业帮
[最佳回答]M是位地址.比如M0.0,M0.1等.MB0是字节地址,包括8个位地址,从M0.M0.7.MB1的8个位地址,从M1.M1.7.MW0是字地址,包括MB0和MB1,即从M0.M1.7共16个位地.....
plc中M是什么指令?
PLC中的M指令是“状态指令”,用于检测指定位置上的内存单元是否有特定条件发生。M指令可以作为一个数据检测和逻辑控制语句,这意味着它可以改变PLC的运行流程,...
西门子PLC编程,存储区域IQMLD分别是什么意思?
I:输入地址,对应输入模块通道q:输出地址,对应输出模块通道M:辅助寄存器地址L:局部变量地址,相当于程序中的内部变量地址D:应该对应的书DB数据块地址。I:...
为什么plc的输入端只有m端?
PLC(可编程逻辑控制器)的输入端并不只有M端,实际上,PLC的输入端可以接受多种类型的输入信号,包括触点输入、传感器输入等。M端通常代表中间继电器,它可以...
PLC中的X、Y、M、S、T、C各代表什么意思_作业帮
[最佳回答]没人回答那我就献丑啦X是plc中的输入,y是输出,m是辅助继电器,s是状态继电器(不是用在步进指令的时候s和m的用法相同),t是计时器,c是计数器没人回答...
三菱plc中的m指令怎么找到?
m指令在三菱plc中属于数据存储指令之一,可以通过以下几种方式找到:可以通过三菱plc编程软件中的搜索功能或查阅三菱plc相关的资料,找到m指令。在三菱plc编程软...
什么是plc的间接寻址?
PLC(可编程逻辑控制器)的间接寻址是一种编程方法,通过使用指针或地址标识符来访问存储器中的数据,而不是直接给出操作的地址。间接寻址在PLC编程中并不常用...
三菱plcm8006程序怎么写?
三菱PLC编程软件模拟运行步骤如下:1、首先,我们需要在开始菜单中打开三菱PLC编程软件GXDeveloper:2、然后,需要从工程菜单中创建新工程,并选择使用plc的...
扫一扫微信交流