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的编程方式。这么香干吗要放弃!
3种PLC软件中来看ST编程中的定时器编程
昨晚的文章用同一段点动控制程序,让大家看了一下博图/三菱/3S,三个品牌PLC中ST编程的一些特点,很相似吧!今天继续用同一段定时器程序,来看看这个3种PLC中对定时器编程的异同!
同样的废话不多说了,直接上动态图来看:
1,博图ST编程调用定时器运行程序:
TIA Portal V14中的SCL程序中对定时器监控动态图
在博图中SCL编程时,因为我是在0B1块中直接写的程序,因此调用调用定时器TON时,其实是调用IEC定时器,相当于一个功能块,熟悉STEP7的人应该知道和SFB4一样,总之是FB块就需要一个DB块,因此我程序中的T1.TON,这个T1其实就是一个DB块,我给他命名成T1了!
同样这个程序就是PB1值为1时,就让CONDITION_OK为真,这样定时器的IN管脚就接通了,定时器就开始工作!时间运行5S后,定时器的Q点也就是STEP_DONE就输出为真了!
PT处是设定的延时时间,T#5S就代表是5秒钟。
注意一下Q=>"STEP_DONE",这里的这个=>符号不是比较的意思,而是输出的意思!别的就没什么说的了,直接看另外2种PLC程序!
2,三菱ST编程调用定时器运行程序:
GX WORKS3中的定时器程序监控动态图
三菱这个程序是基于FX5U PLC的,这个TON指令,其实属于通用函数/FB下的定时器,和梯形图编程时使用的OUT T0是不一样的! OUT TO,OUTH T0这些不清楚的可以去看一下我的问答!
程序的内容是和上面博图软件中的解释一样的,就是延时接通而已,很简单!继续往下看。
3:3S codesys ST编程调用定时器运行程序:
codesys V2.39中的定时器程序监控动态图
codesys中的定时器和三菱的就很相似了,T1出现在了声明中,且是一个标准功能块FB,可以看一下变量声明中的图片:
T1是被声明成一个TON类型的参数
这个图片上T1不是被声明成TIME,而是声明成TON,这个TON是标准功能块中的一个函数!
从3种编程软件中可以看到,在ST编程中调用定时器时,其实这个定时器是相当于一个FB函数功能块!这个是他们的共同点!
博图/三菱/3S编程软件中ST编程定时器时的用法就如本篇文章所描述的,希望对小伙伴们有点帮助。STEP7软件中的定时器用法,我在问答中也有提及,需要的朋友可以关注我到主页中去搜索!
本文到此结束,感谢阅读!
相关问答
plc编程中,末尾t怎么写进?
OUT用于继电器、定时器、计数器的输出,可以连续使用无次数限制。OUT的程序步Y、M:1;特M:2;T:3;C:3~5。OUT指令不能用于输入继电器,在对定时器、计数器使用OUT...
plc中t和K怎么用?
PLC中,T代表了定时器。相当于继电器线路中的时间继电器,它在程序中用作延时控制。PLC定时器共有4中类型,型号T0-T199T200-T245T246-249T250-255分别为100....
三菱PLC里T怎么设置?
OUT用于继电器、定时器、计数器的输出,可以连续使用无次数限制。OUT的程序步Y、M:1;特M:2;T:3;C:3~5。OUT指令不能用于输入继电器,在对定时器、计数器使用OUT...
编程PLC时,X.Y.M.T.C.S各代表的是什么?
按照一般PLC的规则理解,以上标志均出现在位操作指令中:X:输入接点,有的PLC用"I"标志;Y:输出接点,也可指输出线圈,有的PLC用"Q"标志;M:内部继电...
怎么通过电脑读出PLC程序-ZOL问答
不管是什么PLC读取PLC程序的方法基本都一样。第一步:在电脑上安装与PLC对应的编程软件(一般买PLC时就随机带光盘,没有就网上下载)第二步:要有该PLC对应的数据...
plc中T1是什么意思?
在PLC中,T1表示延时器1。在PLC中,延时器1(T1)是一种特殊的定时器,它的作用是在输入信号到达后延迟一段时间,再触发相应的输出信号。T1通常用于控制电机、灯...
谁会三菱PLC的编程?这个T型图是什么意思呢?-汇财吧专业问答test
[回答]这些都是三菱PLC编程时所使用的X输入点(I)可连接外部输入信号如感应器或限位/按钮等M内部辅助继电器S内部步进不作步进使用时,可用作内部辅助继电器...
求解下图PLC的T型图的详解-汇财吧专业问答
[回答]在PLC里定义用T型图编程就可以了参考下面(官网说明)1、READ_RTCX与SET_RTCX是新指令,即为读取/设置夏令时的时钟。2、使用S7-200的READ_RTC(读取实...
T区别是什么?PLC输出R?
R:是继电器,不能发脉冲T:是晶体管,可以发脉冲只要不控制伺服,步进,等发脉冲的,都可以使用带R的PLCR:是继电器,不能发脉冲T:是晶体管,可以发脉冲只要不控制伺...
PLC中的X,Y,M,S,T,C各代表什么意思?
X,输入继电器Y,输出继电器M,中门继电器S,步继电器T,时间继电器c,计数器X,输入继电器Y,输出继电器M,中门继电器S,步继电器T,时间继电器c,计数器