PLC编程时变量太多,怎么规划地址和便于记忆?

道高龙虎俯


其实呢plc编程时,小的程序不用怎么规划变量!但是呢如果要养成好的编程习惯,我们看完图纸之后就应该规划变量,变量一般要分区来做,一般存储区的话一般用v区或者db数据块的区,中间变量我喜欢用m点,也是要分段的,有的m段就用中间变量,有的m段专门用作报警!

总而言之,要规划好点位的使用!并且还要有一定的预留,这样方便以后完善程序!如果做一条程序设置一个中间变量,完全没有规律而言,自己看着都蒙圈!

我们分区分段的好处,在于自己能大概知道这个m是起什么作用的,也方便程序的梳理!

当然了也有人喜欢都用m区或者v区,那么更需要规划了!


电气PLC系统教学


其实你问的这个,在我刚使用PLC的时候也会遇到,但是理解了PLC的编程思想后,尤其是使用SIEMENS的PLC后,不会有这样的问题。

这里针对SIEMENS的PLC来说吧。

SIEMENS有好多M,MB或者MD也可以使用。但是使用这些变量后,发现程序是杂乱无章的。包括输入输出点。

举个例子:我的程序里面用到了输入输出点,每一个人对输入输出点的名称定义会有出入,例如有一个按钮,输入I1.0,是启动按钮。如果按照IT的那些命名规则,BtnStart,BtnStop。如果一个PLC里面出现多个,程序很难规范。

针对这个问题,EPLAN给出了答案。

在EPLAN软件,项目数据--PLC--地址/分配列表。里面有完整的命名。如下图:

尚未完成的项目。后面备注会是中文的名称。

从中可以看出PLC的输入点,PLC的输出点也会是类似的。

这里面有一个重要的信息。就是这个输入点,对应的图纸在哪里。

对应的PLC程序也是一样的。

对应的报警信息也是一样的:

不仅仅是输入输出的PLC地址,其他总线过来的,例如相机,螺丝刀等,实际上是不需要用对应的IO地址的,会建立块。这次用到一个Cognex相机,会封装一下,对应的接口有总线起始地址,Ready,Running,Result,Start等都封装成接口。一个相机对应一个FB块,一个对应的DB背景块。用到10个相机,就是10个DB背景块。测试一个可以了,其他的也都可以了。

下面是用到的Schmersal带锁安全门程序块。

气缸作为常用的执行元件,会有输入接口和输出接口,手自动,运行报警灯。实际上也是不需要中间变量的,只要有背景块就行了。

时间继电器,自动运行也是需要封装的。

在用到的时候,有一个项目是一条主的流水线,上面有托盘,托盘有RFID号。另外有一条支路,然后在一起装配起来。

建立了UDT,DB块集中这些UDT。如下:

可以看出,从头到尾,压根就没有M变量,更不会有地址的规划。

至于PLC FC块、FB块、DB块每个公司都不一样。最好的方法是按照EPLAN图纸来。例如这个相机,图纸的地址为=ST20.OP40+E-270A1,给相机的FC块为FC270,相机的FB块为FB270,背景块为DB270,另外一个相机地址=ST20.OP40+E-271A1,背景块地址为DB271.

至于图纸,也是有规范的。

当你编程,不再为地址规划,记忆发愁的时候,就算成功了!!



儒拉小镇


我们在编写PLC梯形图时常常会遇到输入信号量较多,特别是对大型复杂的梯形图,梯形图里的变量涉及到十几个甚至几十个的时候我们会感到“力不从心”的感觉。那么当遇到这种情况如何进行规划地址呢?下面针对我编写梯形图时对变量地址的处理的经验来谈谈我的是如何处理的。

现在的PLC编程软件都是具有设置变量表的功能,例如三菱PLC的编程软件GX-WORKS2、西门子(SIEMENS)的博图TIA(PORTAL)软件以及施耐德的SoMachine编程软件都具有建立变量表的功能,我以自己正在使用的施耐德SoMachine可编程控制器编程软件为例来说明如何来规划变量地址。

当我们接到控制任务编制梯形图时,我们都要根据控制要求创建控制变量,这种变量一般设置局部变量和全局变量两种类型,若设置局部变量时就会在程序组织单元(POU)中创建变量表格,在这个变量表格中会有变量(VAR)的范围、变量的名称、变量地址、变量数据类型以及对变量的注释等。在这种软件中变量的地址我们只要变量的范围前缀(I、Q、M)、长度前缀(X、B、W、D)和地址偏移量就可以了,我们的主要工作是为了便于对变量的记忆要给变量定义名称,变量定义名称的原则是“看名知其意”。我们以最熟悉的电机正反转程序为例,我们要在POU中创建6个局部变量,分别给这些变量起名称为PosButton(正转按钮)、NegButton(反转按钮)、 StopButton(停止按钮)、EmergencyStop(急停按钮)、PosRun(正转运行控制)、NegRun(反转运行控制),这些变量名称都符合“看名知其意”的原则。通过对这样的变量命名不管变量有多少都能够很好的记忆。变量命名后只要与相关PLC物理地址相关联就可以对外部负载进行控制了,所以这种软件对变量的命名非常之灵活,不像以前的PLC软件对变量的命名有固定的格式要求很呆板。

通过变量与PLC的物理地址向关联后,我们可以给变量进行注释,如上图所示的那样,然后在梯形图中显示出注释,这样能够进一步对理解记忆变量所对应PLC的物理地址有好处。

以上就是我对这个问题的回答,欢迎大家参与这个话题的讨论,敬请关注电子及工控技术。


电子及工控技术


辅助继电器M有两类,普通的和掉电保存的,根据需要来选择,在规划地址的时候一段程序或者功能块使用连续的M,从编号0、10、20等开始,中间留有部分以备补充,比如这段用到M206,下一段就从M210或者M220开始。对于并联输出的,LD M72 OR M82 OR M92 OUT Y1,这样把编号的最后弄成统一的便于记忆也方便我们在最后调试的时候好检查。

定时器有不同单位的时间如1ms、10ms、100ms的,也有普通型和累计型的,也是根据需求来选择,向M一样可以根据使用的地方进行规划地址编号。计数器也有普通计数器和高速计数器、16位和32位之分,也有保持型计数器等,同样根据需要来确定,一般高速计数器的使用都是固定的,对应的输入都有固定的计数器。

地址的规划和选择首先要根据需要、功能来决定,然后在PLC编程中所表达的动作进行统一编号,对于PLC的顺控程序,我们尽量在编程时进行段的声明、注释准确如下图,把整个PLC程序分成好几个小段写,每个小段可以写特定的动作组合、部分、功能、意义等,然后地址的规划在每段进行排列,第一段用M0~M100,第二段用M100~M200等等设计,方便我们寻找元件变量,对编程和后期的调试都很有帮助。


还有就是为了便于记忆,我们也可以采用标签对软件变量进行标记,免去注释,比如X0的标签是开始,Y0的标签是指示灯,以后我们就可以直接用“ LD 原点 OUT 指示灯”来表示 LD X0 OUT Y0了,这样就更方便了,PLC中每个变量都可以做标签进行声明。

以上就是在PLC编程时对变量地址进行规划需要注意的几方面,希望能帮到你!


工控人


现在很多PLC都支持符号优先的编程方法了! 因此,在定义变量的时候用自己熟悉的符号+设备代号的表示方法是比较好的!

其实,每个人和每个单位的编辑符号的方法不同,但是只要是在一个项目中是比较统一的,且便于编程人员快速读懂程序内容的,都库说是较好的方法!

而且,PLC控制的这些设备,大体上用的比较多的也就那么几类,比如,电机,阀门,气缸,温度信号,液位信号,流量信号等等!因此当你熟知这些设备需要采集的相关点之后,就可以来规划了!

说一下我常用的规划方法:

电机,比如Motor1,motor2,或者M#1,M#2,这样就表示一个大的电机代号,而电机通常也就是启动,停止,运行,故障这些,因此可以用:

Motor1_bRun来表示启动,这里的b就表示bool。

那么Motor1_bStop表示停止,Motor_bOut表示输出控制接触器的线圈,Motor_bTrip表示热继电器跳闸的故障点信号!

当然,其实可以在前边加上i或者o来表示是DI信号还是DO信号,也可以在结尾,比如:

oMotor_bOut表示这个是电机的输出DO信号,iMotor_bTrip表示是电机的DI输入热故障信号!

像阀门的话,也是开关输入信号和打开关闭的输出信号,通常用valve这个英文字面意思直接表示,比如Valve1_bOut,Valve_bOpen,Valve_bClose,前边或者后边也可以加入i或者o表示是di或者do!

气缸的话就是cylinder,因此气缸前进应该是iCylinder1_bAdvance,气缸后退应该是iCylinder1_bReturn这样!

还有就是模拟量的,就以温度传感器来举例,用TE表示温度传感器,比如TE_IntValue,因为模拟量信号输入通常是16位的整数,因此这里是Int,Value就是数值的意思!然后TE_bHAlrrm,这个是温度高报警的一个bool变量,同样,TE_bLAlarm就是温度低报警信号!


就简单说这么多了,总之呢,你给变量定义的符号名已经是能让你清晰的辨认出来这个变量的属性的,比如是DI信号还是DO信号,是bool类型还是int类型,或者是实数real类型!---尽量的表述完整清晰,该用缩写的时候用一些缩写,免得太长了,这样就差不多了!


希望能对你有点帮助,谢谢!


控制研究控


一种最佳实践是文档化,提前把不同范围、不同用途的变量规划好,可以参考网络上现成的一些企业编程的实践和规范。如果地址空间充裕,可以在不同分区之间提前留好充足的空间。最后,两个可以改进的手段,一是地址空间重构,大部分plc现在都支持一键修改所有变量名/地址的功能(至少西门子有),在编程之后可以集中检查把不规范的地址重新分配,而不是一次一次姑息纵容。二是迭代改进,下一次编程前回顾一下上一次不合理的地方,持续改进。


魏智勇


早就有不用规划内存的PLC了!看看施耐德电气的So Machine 平台吧。根本不用管理变量存储空间,支持结构化变量,面向对象编程,让你脱离低层次的编程方式,不再烦心于地址记不住,让你完全进入算法研究,工艺流程,瞬间感觉进入了自由空间!


凹凸美神


这也简单,举个例,0-100用来做伺服数据,200-400用来做保存,500-700用来做其它数据,不是很好记忆吗


机械自动化


根据功能去划分


分享到:


相關文章: