PLC编程软件
PLC编程软件(精选9篇)
PLC编程软件 第1篇
当今世界电子技术突飞猛进的发展,特别是微处理和数字技术的发展,使可编程逻辑控制器(PLC)的性能和功能有了很大的提高。西门子SIMATIC S7-300是一种通用型的PLC,能适合自动化工程中的各种应用场合。具备模块化、无风扇结构、易于实现分布式的配置以及易于掌握等特点,S7-300在很多工业控制领域实施各种控制任务时,成为一种既经济又切合实际的解决方案。
运载火箭发动机试验是一种高集成、高成本、高风险的试验。试验台控制系统的可靠性和稳定性直接影响试验成败。控制系统的程序控制要求对发动机上所有电动阀门、点火器和试车台上少数电磁阀进行时序开关控制,并为相对独立的各子系统提供阶段时统信号。某型号发动机试验台控制系统采用S7-300 PLC来实现。
2、应用中遇到的问题
程序控制系统对时序间隔精度要求较高,要求两个动作实际值和设定值相差不超过20ms。时序开关控制需要用到定时器指令。
西门子Step7提供了10种定时器指令。在CPU的存储器中,为定时器保留有存储区。该存储区为每一定时器地址保留一个16位的字。定时器字的位0至位9包含二进制码的时间值。时间值按单位个数给出。时间刷新按时基规定的时间间隔为单位减少时间值。时间值逐渐连续减少,一直到等于“0”。
定时器字的位12和位13包含二进制码的时基。时基定义时间值递减的单位时间间隔。最小时基为10ms;最大时基为10s。时基自动选择,时间值按其所取时基取整为下一个较小的数。数值不允许超过2h46m30s。对于范围极限分辨率太高的时间值(例如,2h10ms),将向下舍入为一个有效的分辨率。S5TIME的一般格式具有如表1所示的范围和分辨率。
S7-300的最小定时精度为10ms,时基自动选择。S7-300PLC的硬件计数指标较高,长时间的定时器,定时精度较好。但是应用中,短定时器和长定时器相临,短定时器分辨率高,长定时器分辨率低,这时长定时器的定时精度就会变差,如100s的误差就有60ms。在发动机试验中,对时间精度要求较高,精度大于20ms,60ms这样的误差就不能满足要求。下面是对某次程序运行的记录结果。时间差值为63ms。
3、解决途径和效果
3.1 解决途径
时基自动选择是PLC本身的特性,采用化整为零的思想,使用短定时器,通过软件编程的方法,避开PLC定时器时基自动选择的缺陷。下面是我们在应用中采用的两种方法。
第一种方法短定时器(小于9.99s)串联,动作1的执行时间距时间基准点为T,T=t1+t2++tn,用短定时器t1,t2,tn串联,达到时间T,执行动作1。图1为定时器串联示意图。该方法操作简单。PLC的定时器个数有限,不同CPU支持的定时器个数不同,如CPU315-2 DP支持定时器的最大数量是128。该方法适用于长时间个数少且时间相对短的情况。
第二种方法是计数器和短定时器结合使用。定义短的定时器,设置中间变量,使其循环运行。把计数器引入到循环中,定时器每运行一次,计数器加1。动作1的时间为定时器的X倍,X与计数器值比较,定时时间到,执行动作1。依次执行后面的动作。当时间累计值到达最后一个动作,执行该动作,同时复位中间变量,中断定时器循环,计数器停止计数。图2是使用计数器提高时间精度方法的流程图。此方法适用于长时间个数多的情况。
3.2 效果
按照上述两种方法,对发动机试车程序中长时间间隔部分重新编程,然后做了大量调试,用程序记录系统记下修改后程序的运行结果,时间精度均达到10ms。以下是采用第二种方法编程,某次试车运行记录结果和PLC程序片段。本程序已用于多次发动机试车,时间精度均大于10ms。
如图3所示。
4、结语
工程应用中,在PLC技术指标满足要求的情况下,通过软件编程,提高定时器定时精度,满足定时精度要求较高的使用场合。此编程思想对其它PLC编程也有一定的借鉴意义。通过软件编程技巧,提升PLC的性能,使PLC的表现更加卓越。
摘要:西门子S7-300PLC的定时器时基自动选择,在实际工程应用中,长定时和短定时器相临时,长定时器的定时精度就变差。本文提出采用化整为零的思想,通过软件编程的方法,避免定时器时基自动选择的缺陷,从而达到提高PLC定时精度的效果。给出了具体实现方法和实际效果。
关键词:PLC,定时器,精度
参考文献
[1]深入浅出西门子S7-300PLC.西门子(中国)有限公司自动化与驱动集团.北京:北京航空航天大学出版社,2004.8.
三菱PLC编程软件的安装注意事项 第2篇
三菱大部分软件都要先安装“环境”,否则不能继续安装,这一步还好办,如果不能安装,系统会主动提示你需要安装环境。
2.进入SW8D5C-GPPW-C文件夹,点击“SETUP” 安装,安装时最好将杀毒软件关闭;
3.输入GX系列软件的通用序列号:998-598638072(序列号可以在三菱PLC官方网站上申请到)。
4.特别注意:“监视专用”这项不能打勾,否则软件只能监视,这个地方也是出现问题最多的地方。这是很多朋友会容易钩选错误的地方。
5.根据提示选项安装完成后,运行三菱PLC编程软件测试程序是否正常,如果正常刚安装成功,如果程序不正常,有可能是因为操作系统的DLL文件或者其他系统文件丢失,一般程序会提示是因为少了文件而造成的。
艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有 10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感 器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
PLC编程软件 第3篇
运行方向的判断用处比较广泛, 其关键有两点:一是找出电机现在所处的位置;二是下面要往前运行还是往后退运行。本文结合某高校维修电工竞赛试题提出基本思路和编程方法, 给读者一些处理此类问题建议和参考。
2. 控制要求和I/O口分配
某公司装配车间有料车一部, 料车在轨道上行驶, 需要装配的组件由上料点装入料车, 具有相同功能的装配点有三个。料车装满料后可根据各装配点的需料请求驶往各装配点。
料车采用半自动管理, 每个装配点都有一名员工, 当装配点需料时按下“需料按钮”, 料车将驶往该装配点, 料车在该装配点停留一段时间供该点下料, 下料时间到后料车即可响应其它装配点的需料请求, 一车料可供各装配点使用若干次;当某装配点发现料车无料时按下“上料按钮”, 料车即驶往上料点上料。
3. 程序编写思路
初始化完毕后小车所处的位置不定, 而A、B、C点都有可能呼唤。小车的运行取决于两点:一是小车所处的位置;二是呼唤与所在位置的相对方向。我就结合这两点个人提出两类处理的办法。
3.1 巧用计数器来判断小车位置。
将呼唤者的位置确定假定小车在其余两个位置 (如图) 。穷尽所有可能性, 小车在运行碰到行程开关通过计数据来判断小车位置并复位, 为下次运行做准备。
参考程序解释
3.2 采用高级指令ENCO、DECO指令。
经过分析我们可以看出有这样一种规律:按钮和行程开关有相对位置时候向着按钮的方向运行, 思路非常清晰简洁。
参考程序解释:
4. 编程方法总结
通过实训事例我们得到关于用PLC编写关于呼唤运行方面程序的方法和思路是切实可行的, 对解决类似的问题具有借鉴意义。
参考文献
plc编程学习总结 第4篇
1:PLC编程语言有5种,即顺序功能图(SFC),梯形图(STL),功能块图,指令表,和结构文本。其中顺序功能图(SFC)是最容易理解的,按照时间的先后顺序执行。然后转换成梯形图,因为梯形图是PLC普遍采用的编程语言。不过SFC转换梯形图是很简单的。
2:就好比是开关在合上时两触点接触的一瞬间继电器就有动作了,这叫上升沿。
下降沿就好比开关两触点始终保持接触时,继电器没有动作,只有开关两点断开时的瞬间继电器才动作。
数控PLC编程常见问题 第5篇
1 输出“双线圈”
梯形图是一种顺序控制逻辑[1], 按常规思路编辑梯形图, 容易出现一些问题。如图1示例梯形图, 其中预实现的功能有两个:
X0.1为输入按钮, 控制Y0.0输出并自锁;
X0.2为输入按钮, 控制Y0.0点动输出并取消自锁。
图1为按功能①、②编写的梯形图, 两段程序如果放在各自的梯形图中单独执行, 都能正常工作, 但当放在一个梯形图中时, 功能①就无法实现。因为, 同一个梯形图中不允许出现两个输出线圈, 否则会以后一个线圈的状态为准, 因此, 图1中, X0.1按钮不能控制Y0.0输出并自锁。这就是“双线圈”现象, 对于一些初学者很容易出现此类问题。
为避免图1中所示问题, 很容易将梯形图修改成图2所示程序。
图2所示程序中, 避免了双线圈现象, 功能①的要求能满足, 但X0.2按钮输入时, Y0.0输出, 当X0.2按钮松开时, 由于Y0.0触点为闭合状态, X0.2的常闭触点也为导通状态, 因此, Y0.0输出仍是导通的, 即X0.2按钮输入时, Y0.0输出也自锁了, 并没有点动输出, 不满足功能②的要求。
为避免图1、图2所示问题, 可用中间继电器来保存功能①和功能②的输出状态, 最后再并联输出给Y0.0, 有效地避免了“双线圈”和条件干扰的问题, 如图3所示。
2 控制条件对功能指令的影响
一般数控系统提供了许多功能指令, 以简化梯形图程序的编写。不同的功能指令对控制条件 (ACT) 的要求不一样, 在GSK980TD数控系统中主要有以下几类。
2.1 ACT闭合时执行, 断开时已有结果保持不变
如图4、图5示例指令。
2.2 ACT上升沿时执行, 断开时已有结果保持不变
如图6示例指令。
2.3 ACT闭合时执行, 断开时已有结果清零
指令如图7所示。
根据功能指令对ACT条件要求的不同, 编写梯形图时需注意条件的灵活使用。如, 对ACT断开但结果保持不变的指令, 若要清除结果则需再编写对结果清除的语句;对ACT断开结果清零的指令, 在结果仍在使用时, 则不能断开ACT。
如图8示例程序, 其中预实现的动作为:按钮X0.0每按一次, 数据地址D1的值加1。
执行图8程序, 当按钮X0.0按一次时, 数据地址D1中增加的值往往大于1。这是因为数据加指令ADDB为“ACT闭合时执行, 断开时已有结果保持不变”的类型指令。只要X0.0处于闭合状态, ADDB功能指令就将一直执行, 而按钮X0.0被按下到松开时, 其保持的时间一般都会远远大于PLC的扫描周期。在按钮X0.0在断开前, AD⁃DB指令被执行了多次, 而每执行一次D1都加1。
为避免上述现象, 可按图9修改, 保证X0.0每按一次, 只执行一次ADDB功能指令。
3 地址的数据长度
本PLC中的地址主要分为两种:单字节地址和四字节地址, 其中单字地址包括R、K、X、Y、G、F、A等, 四字节地址包括D、DT、DC、T、C等。对于单字节地址可以按位取值和按字节取值, 而四字节地址则只能按字节取值[5]。
由于单字节地址和四字节地址都能按字节进行取值, 则在单字节地址和四字节地址之间进行数据交换或赋值时, 就需要考虑数据的长度值。
如图10、图11示例程序中, 在图10示例程序中, 通过MOVN指令将R1地址的值赋值到D1中, 取值长度为一个字节, 最终结果是R1地址中的值赋给了D1。在图11的示例程序中, 也是通过MOVN指令将R1地址的值赋值到D1中, 但取值长度为四个字节, 而R地址为单字节地址, 最终的结果是以R1为起始地址的连续4个字节地址, 即R1~R4地址中的数据赋给了D1, 与图10中的结果完全不同。由于二者在程序编写的格式上和逻辑上基本相同, 编写梯形图程序时很容易被忽略。
4 子程序的调用
在设计一些功能模块时, 往往将设计好的功能编入子程序中, 在启用该功能时调用该子程序, 功能动作结束时停止调用该子程序, 以提高运行效率。梯形图为顺序控制逻辑, 只有语句被扫描到时, 其语句功能才生效。因此, 在设计含子程序的梯形图程序时, 需注意子程序调用条件的复位时机, 必须保证子程序的逻辑处理结束后才能停止子程序的调用。
如图12示例程序, 其中预实现的动作为:按钮X0.0有效时, 控制Y0.0信号输出, 按钮X0.0无效时关闭Y0.0信号。
执行图12程序, 当按钮X0.0有效时, 调用子程序P1, 并控制Y0.0信号输出;当按钮X0.0无效时, 从子程序P1的逻辑看Y0.0信号是被断开的, 但由于此时子程序P1没有被调用, 导致Y0.0信号的输出无法关闭。
为避免上述问题, 可用中间继电器来保存子程序P1的调用条件, 在子程序P1中将逻辑处理结束后再清除调用条件, 如图13。
5 结束语
不同数控系统、通用PLC控制器中的梯形图指令格式或有不同, 但其基本思路类似, 本文中描述的问题也可作为参考。
参考文献
[1]王志成.数控机床PLC程序设计与调试[J].沈阳工程学院学报, 2012, 8 (4) :372-374.
[2]陈学军.数控机床的PLC编程方法[J].机床电器, 2009 (5) :18-20.
[3]周昊.三菱FX系列PLC编程常见问题探析[J].冶金动力, 2009 (2) :88-90.
[4]李叶龙.数控机床与PLC的关系[J].机床电器, 2009, 25 (6) :35-36.
解析PLC的编程逻辑核心要义 第6篇
关键词:解析,PLC,编程,逻辑,核心,要义
随着电子信息技术的发展, PLC作为一种可编辑逻辑控制器, 应用的范围越来越广泛, 通过PLC的使用, 可以极大提高设备的自动化程度, 对于实际的工业生产来说, 具有非常重要的意义, 因此每个国家都很重视PLC的应用, 受到特殊的历史因素影响, 我国信息技术的水平较低, 与西方发达国家相比, 还有很大的差距。随着近些年国家开始重视PLC技术, 出台了一些优惠的政策, 鼓励和扶持我国PLC产业的发展, 在一定程度上提高了PLC应用的水平, 但是通过实际的调查发现, 目前市面上的PLC设备, 大多都是国外的公司研发的, 我国必须从国外引进相关的设备, 才能够在实际的生产中应用。
1 PLC应用的现状
1.1 我国PLC应用的发展
随着计算机的普及应用, 只要编写相应的程序, 计算机就可以自行的处理任务, 正是由于这个特点, 人们意识到了计算机的重要性, 并想将计算机应用到实际的工业生产中, 但是由于计算机的体积较大, 很难连接到生产线中, 在这种背景下, 人们开发了单片机等微型计算机, 很好地达到了控制的效果。在微型处理器出现后, 人们将其集成到了可编程控制器中, 使其可以具有更多的功能, 从1969年世界上第一台PLC诞生开始, 每个国家都意识到了PLC的重要性, 开始研发自己的PLC设备, 我国经过多年的研究, 在上世纪70年代时期, 开发了自己的PLC设备, 并且应用到六十几的工业控制中。通过实际的调查发现, 我国虽然能够自主的生产PLC, 但是与西方发达国家相比, 在PLC的性能上, 还存在一定的差距, 而且PLC在实际应用的过程中, 需要根据控制的需要, 针对性的编写一个程序, 程序执行的情况, 将会直接决定PLC工作的效果, 由此可以看出, PLC编程的重要性。
1.2 影响PLC应用效果的因素
经过了多年的发展, PLC已经得到了普及应用, 在实际的工业生产中, 为了提高自动化的水平, 大多数企业都采用PLC设备, 但是通过实际的调查发现, 应用PLC的方式不同, 对于工业生产效率提高的程度, 也会有一定的差异, 如PLC的型号, 作为电子产品的一种, 设备和技术更新换代的速度很快, 每次型号的更新, 都会增加一些新的技术, 因此先进的PLC, 将会进一步提高工业生产的效率。除了硬件上的因素外, PLC编程的情况, 也能够在很大程度上影响其应用的效果, PLC在实际的工作中, 主要就是其内部程序的运行, 通过协调一些外部设备, 对电路的工作状态进行控制, 如果程序设计存在问题, 将无法完成控制的目的, 技术程序没有问题, 能够很好地达到控制的效果, 由于编写语言和逻辑关系的不同, 工作的效率也会有一定的差异。考虑到编程自身的特点, 要想实现一个功能, 通常有多个语句可以实现, 但是不同的语句和逻辑关系, 程序执行的效率也会有一定的差异, 因此在实际的程序编写中, 编写人员自身的专业素质非常重要, 只有那些自身经验比较丰富的人, 才能够编写出一个合理的程序。
1.3 我国PLC应用的现状
现在我国已经成为了世界第二大经济体, 在足够经济实力的基础上, 工业水平也有了很大的提高, 在实际的工业生产中, 为了最大程度的提高生产效率, PLC的使用比较广泛, 尤其是在一些大型企业中, 基本都实现了生产的自动化, 在日常生产过程中, 只需要少量的技术人员, 就可以实现二十四小时不间断生产, 而且能够节省人员的成本, 对于企业发展来说, 具有非常重要的作用。我国虽然已经能够自主的生产PLC, 但是在性能上, 与国外的一些产品相比, 仍然具有一定的差异, 因此在实际应用的过程中, 通常会采用国外的PLC, 由于其功能比较完善, 应用起来更加简单、方便, 但是我国一直受到西方国家的科技封锁, 很多先进的PLC型号, 无法进入到我国的市场, 在很大程度上影响了我国PLC的应用。在实际的PLC应用过程中, 程序的设计和编写是非常重要的环节, 为了提高我国PLC应用的水平, 我国在高校中开设了PLC相关的课程, 培养学生程序编写的能力, 学生在毕业进入到企业后, 可以根据自己所学的知识, 很好地完成PLC程序的编写, 但是受到我国教育水平的限制, 大多数学生的实践能力较差, 在进入到企业后, 还需要一段适应的时间。
2 PLC编程的重要性
2.1 PLC编程简述
随着计算机的普及应用, 由于其能够自行的处理任务, 极大的提高自动化程度, 因此如何在工业控制领域中, 应用计算机成为了重要的问题, 受到计算机体积的限制, 很难应用在实际的生产线上, 在这种背景下, 人们开发了具有计算机的功能, 而且自身的体积较小的PLC等设备, PLC以微处理器为核心, 内部可以写入相应的程序, 根据应用领域的不同, 编写不同的程序即可, 因此PLC是目前通用的一种工业控制装置。由此可以看出, PLC之所以能够在不同的生产中应用, 主要就是由于程序的变化, PLC在执行程序的过程中, 主要采用顺序扫描和不断循环的方式, 程序写入到PLC中后, 会按照语句的顺序, 逐句的进行扫描, 然后按照顺序执行, 如果有语句跳转的指令, 就会跳转到相应的位置, 继续执行程序指令。通过实际的调查发现, 目前PLC编程语言主要有五种, 分别是IEC11313、1L、FBD、SCF、ST, 这五种语言都是在标准编程语言的基础上, 根据PLC自身的特点, 针对性的开发出来的, 在实际学习的过程中, 只要能够掌握一门标准语言, 如常用的C语言等, 就可以很快的掌握这五种语言。
2.2 PLC编程中逻辑关系的处理
通过前面的分析可以知道, PLC在实际工作的过程中, 就是内部程序的执行, 因此程序编写的情况, 能够直接决定PLC工作的效率, 而在程序执行时, 主要是按照顺序来执行, 如果没有跳转的指令, PLC从第一条语句开始, 一条一条的执行, 但是在实际编写的过程中, 为了更好地完成控制等功能, 跳转语句必不可少, 这就涉及了语句逻辑关系的问题。在所有的程序编写过程中, 逻辑关系非常重要, 只有正确的处理好了语句之间的逻辑关系, 程序才能够有一个良好的执行效率, 如果逻辑关系处理不当, 可能会导致程序陷入死循环, 使得PLC无法正常的工作, 对于一个程序编写人员来说, 写出实现相应功能的语句非常简单, 如何将这些语句利用一定的逻辑关系组合起来, 是程序编写中的主要问题。通常情况下, 逻辑关系处理的能力, 是衡量一个编写人员专业素质的重要因素, 在实际的程序编写之前, 首先要进行程序的设计工作, 根据控制功能上的要求等, 针对性的设计一个程序流程图, 将不同功能模块之间的逻辑关系, 用流程图的形式表达出来, 这样能够方便具体的编写工作。
2.3 PLC编程的意义
PLC编程作为其工作的基础, 程序编写的情况, 能够直接影响其工作的效率, 在这种背景下, 如何设计一个科学、合理的程序, 使其在具体的工业控制中, 很好的完成应用的控制功能, 是每个程序编写人员所希望的, 在实际的程序编写中, 首先要了解PLC的型号和特点, 然后针对性地选择一个编写语言, 在做好了这些准备工作后, 才能够进行程序的设计。经过了多年的发展, 现在程序编写技术已经比较完善, 一个程序中通常会有多个功能, 根据每个功能的特点, 可以编写一个相应的模块, 程序在正常执行的过程中, 不会扫描这些模块, 只有执行到特定的跳转指令时, 才会调出相应的功能模块执行, 这种模块化的编程方式, 可以在很大程度上提高程序执行的效率。考虑到我国编程人员自身的素质较差, 目前我国还没有大型的软件公司, 随着软件编程越来越重要, 政府部门也意识到了这个问题, 近些年出台了很多相应的政策, 在加大高校中编程人员培养力度的同时, 也鼓励企业采用PLC编程来提高生产的效率, 在这种双重的促进下, 我国的PLC产业得到了极大的发展。
3 PLC的编程逻辑核心要义分析
3.1 PLC编程逻辑关系的设计
在实际的编程过程中, 逻辑关系的处理非常重要, PLC作为可编程逻辑控制器, 主要对电路中的逻辑关系进行控制, 因此在程序编写之前, 逻辑关系设计是最重要的一个环节, 但是逻辑关系的设计, 受到设计人员自身素质的影响很大, 如果编写人员的经验比较丰富, 就可以根据控制功能的要求, 很轻松的设计一个良好的逻辑关系。但是通过实际的调查发现, 我国PLC编程领域中, 具有丰富经验的编程人员很少, 虽然近些年我国培养了大量的PLC编程人员, 受到我国教育水平的限制, 这些人员的自身素质较差, 因此我国的企业在使用PLC时, 通常会采用国外软件公司的解决方案, 或者直接提出自己的需求, 让国外的公司来进行PLC程序的编写。这种现象在很大程度上限制了我国PLC编程的发展, 由于我国的人员得不到程序编写的实践机会, 自身的能力得不到锻炼, 而国外的公司有了更多的锻炼机会, 随着时间的推移, 我国PLC编程人员的素质只会变得越来越差, 而国外程序编写人员的素质越来越高, 严重影响了我国PLC编程的发展。
3.2 PLC编程逻辑核心解读
由于PLC主要负责控制电路中的一些逻辑关系, 因此编程中涉及的很多算法, 都是建立在逻辑关系的基础上, 如PLC编程中常见的开关量算法, 其取值只有两个, 分别对应开关的两种状态, 这样的取值刚好和逻辑关系所对应, 因此开关量通常也被称为逻辑量, 通常情况下, 开关量的取值为0或1。PLC编程过程中, 算法的分析非常重要, 在了解要实现控制功能的基础上, 利用现有的一些算法, 针对性的编写相应的程序, 对于逻辑关系的处理, 在程序设计的阶段, 程序流程图中就应该表示出来, 但是在实际编写的过程中, 根据编写的实际情况, 应该对逻辑关系进行一定的优化处理, 以此来保证PLC编程中逻辑关系合理。PLC编程中, 逻辑核心的确定非常重要, 根据PLC编程的实际情况, 通常情况下, 一个控制程序要实现多个功能, 但是这些功能之间, 会有一个主要的功能, 要想使程序执行的效率最大化, 必须将这个功能作为逻辑的核心, 其他功能在以功能模块的形式存在, 这个功能集成到主程序中。
3.3 PLC编程逻辑核心的确定
要想让PLC在实际的工业生产中, 具有相应的控制功能, 通常要实现多个功能, 而不同的功能之间, 具有一定的主次关系, 这个主次关系的确定, 也是逻辑关系中的重要环节, 编程逻辑核心的确定, 不仅决定程序是否能够正常的工作, 也能够在很大程度上影响程序执行的效率, 由此可以看出, PLC编程逻辑核心确定的重要性。在实际编程的过程中, 首先应该根据控制的实际需要, 找到主要实现的功能, 然后在这个功能的基础上, 设计其他次要的功能, 这样就确定了功能上的逻辑核心, 对于其他的一些功能, 可以设计成相应的模块, 然后在主函数中, 需要调用该功能的位置, 设置一个跳转的指令, 这样既能够减少扫描的时间, 也提高了程序的可读性, 方便后续的程序的修改和维护。
4 结语
通过全文的分析可以知道, PLC在现代的工业生产中, 具有非常重要的应用, 利用PLC的控制技术, 可以极大的提高生产的自动化水平, 从而提高生产的效率, 对于生产企业来说, 是提高自身利益的有效方式, 在这种背景下, 很多企业都进行了相应的改造, 建设了带有PLC控制系统的生产线。我国受到特殊的历史因素影响, 自身的技术水平较差, 虽然在上个世纪70年代时期, 就能够自主的生产PLC, 但是从性能上看, 与西方发达国家相比, 还有很大的差距, 在实际的PLC使用中, 程序作为控制的基础, 如何确定编程逻辑核心非常重要, 如果能够编写出一个科学、合理的程序, 能够在很大程度上弥补硬件设备上的不足, 相信随着技术水平的提高, 以及人们对PLC的重视, 我国PLC编程一会得到了快速的发展。
参考文献
[1]齐薇.浅谈PLC的编程方法之一——逻辑设计法[J].辽宁师专学报 (自然科学版) , 2007 (02) :26-27+62
[2]温晓玲.几种复杂系统的PLC编程方法[J].安徽职业技术学院学报, 2005 (01) :10-13
[3]尹淑娟.逻辑设计法编程在PLC程序开发中的应用[J].科技信息, 2011 (18) :627
[4]彭建坡, 李玉伟.PLC控制系统的设计方法及要点浅析[J].科技信息 (科学教研) , 2007 (14) :259
PLC编程软件 第7篇
一、加强基础学习, 巩固基础知识
要有好的设计编程能力, 必须要有良好扎实的PLC基础知识, 必须掌握PLC各条指令的名称、符号、适用范围及其功能, 熟悉PLC的编程语言, 熟悉PLC的结构, 接线方式及具体的编程规则。另外, PLC是一门技术专业课, 要学好PLC必须要学好专业基础课的知识, 所以工作中应根据自己的具体情况, 适当补充电工专业和自动控制技术的基础知识学习, 巩固专业基础知识, 为设计打下良好的基础。
二、P L C是“串行”工作的
PLC是代替传统继电器控制盘的一种自动控制装置。PLC最初产生的本意是代替稳定性差、可靠性低、反应慢的继电器控制盘。功能就是用计算机代替继电器控制盘, 用程序代替硬件接线。PLC使用的编程语言是电气工程人员易懂的一种专业语言。可以认为, PLC是电拖演变过来的。但PLC的工作方式与电器控制盘的工作方式是有很大区别的。电器控制盘的工作方式是“并行”的, 意思是无顺序的区别。PLC的工作方式是“串行”的, 它的工作遵守由上而下, 从左到右的规则, 每一个元件的信息都是取自上面最近的信息。所以PLC梯形图的排列顺序不同时, 控制结果就会有差异。图1是电机Y1转次数的控制梯形图。
图1-A, 图1-B图形只是计算器C1复位指令的行位置不同, 但图A控制电机Y1转3次。图B控制电机Y1转2次。
如图2的控制要求是Y2按第一次通, 按第二次断的。
图2-A可以正常工作。但图2-B是没任何反应的。
从上二例子可以知道, PLC是串行工作的, 是按顺序执行程序, 逻辑行之间不能像电拖的电路图随意调换, 图形一样, 但顺序不同时, 控制效果也不同。
三、重视PLC的保护环节设计
我们设计PLC控制程序时, 除了满足控制要求外, 还会设计很多保护程序。保护程序设计的原则是:当生产发生故障时, 尽可能减少经济损失和设备的损坏情度。这就要求我们当发生不同的故障时, 根据具体情况, 不同的故障, 采取不同的措施, 才能减小损失。但有时只是在程序上编写了保护程序, 达不到保护效果的, 必须联系其他才能起保护作用。例图3是电机正反转控制程序。
在程序中, 采用了双重互锁的保护程序, 理论上Y1、Y2绝对不会同时吸合, 我们不再采取其他保护措施, 能保证电路不会短路的。一般情况下按图4-A接IN/OUT接线。但如果我们不再采取其他保护措施, 就有可能发生KM1、KM2同时吸合, 发生电路短路的事故。特别是电机容量大的时候。
原因是, 虽然Y1、Y2不会同时吸合, 线圈KM1、KM2不会同时通电, 但如果Y1断了, 线圈KM1失电, 因为电磁感应的原因, 即使KM1线圈失电磁吸KM1不会马上释放, 在KM1没释放前, 按下X2, Y2吸合, 线圈KM2通电也吸合, KM1、KM2同时吸合, 短路故障就发生了。为了防止此事故的发生, 在线圈KM1、KM2的输出上再采取交流接触器触头的互锁措施, 问题就解决了, 如图4-B所示。
保护程序设计得好与坏, 关系到生产设备 (机械) 发生故障时, 对生产造成直接经济损失多少和设备损坏的情度。保护程序的设计, 必须要熟悉生产工艺, 了解设备结构和工作原理。才能估算到可能发生的故障和解决的方法。
作为一名电气专业的技术从业人员, 要有高超的PLC编程能力, 除了有良好的专业理论知识, 熟悉PLC的结构, 接线方式及具体的编程规则。掌握掌握PLC指令的名称、符号、适用范围及其功能外, 还必须要熟悉生产工艺, 了解设备结构和工作原理。才能编写出既满足生产要求, 又能在设备出现故障时, 能很好进保护设备减少经济损失的高水平的PLC控制程序。
参考文献
[1]三菱FX系统PLC使用说明书
[2]蔡德权编著.PLC技术与应用.广东科技出版社
PLC手持编程器编译系统的设计 第8篇
近几年,随着计算机、网络、微处理器等技术的迅速发展,PLC编程器所用硬件平台的核心由8位微处理器转变为32位微处理器,软件平台所用操作系统由DOS、Windows系统转变为Linux嵌入式系统或者u C/OS-II实时操作系统。目前编程器的编译系统主要有翻译性和解释性两种。其中翻译型的编译过程是将源代码程序翻译为目标机器可识别的语言(通常为二进制机器码),并由硬件执行的过程[1]。其优点是生成目标代码后,目标机器执行效率高,占用资源小。解释型的编译过程是将源代码程序在目标机器上直接逐条解释执行,无需先将其翻译为目标机器代码。该型编译需要将编译器直接植入硬件,其缺点是源代码程序运行的每一步都要对其进行解释,使得程序运行效率相对低下,占用资源高,无法满足工业控制过程的高效性、高实时性要求。
针对自主研制的基于ARM+FPGA组成的小型可编程控制器,设计一种PLC手持编程器的翻译型编译系统,选用32位ARM微控制器LPC2478和u C/OS-II实时操作系统作为设计平台的核心。
1 手持编程器的总体设计
手持编程器由硬件和软件两部分组成。硬件设计以32位微控制器LPC2478为核心。LPC2478微控制器内部集成多种资源,包括CAN控制器、SDRAM控制器、液晶显示屏控制器、UART控制器、外部存储控制器等,减少了系统外围元件数量,使系统的硬件最小化。软件设计选择u C/OS-II作为系统的核心。u C/OS-II实时操作系统是一个完整、可移植、可固化、可裁剪、可剥夺、抢占式实时多任务内核的嵌入式操作系统,可以管理64个任务,具有信号量、事件标志组、消息邮箱、任务管理和内存块管理等系统功能。手持编程器利用CAN总线与PLC主机通信;用LCD屏显示编译系统的相关信息;用存储器存储PLC程序及相关数据。手持编程器的总体框架如图1所示。
2 编译系统的设计
PLC手持编程器的编译系统由源代码编制、编译、存储、显示、通讯五大模块组成,总框架如图2所示,执行流程如图3所示。
2.1 源代码编制模块的设计
IEC61131-3是PLC编程语言的国际标准[2],它定义了梯形图、顺序功能图、功能模块、结构化文本和指令表5种PLC编程语言规范。其中,指令表是一种较“低级”的编程语言,它类似于计算机的汇编语言,其代码由一系列的指令行组成,常作为其它文本化语言和图形语言转译过程的中间语言。因此,选用指令表作为程序的编程语言,比较直接,不用其它语言转换。
PLC源代码编制模块用来完成对PLC源代码指令表程序的新建、插入、修改、添加、删除、查找、替换、复制、粘贴、保存等功能。
2.2 存储模块的设计
存储模块主要将编译生成的PLC主机能识别的二进制目标代码及PLC的源代码指令表等数据存储起来,以便查看使用。设计中采用数组的形式存放编译生成的二进制目标代码,采用链表的形式存放PLC源代码指令表程序。在链表处理过程中每条指令用一个结点的数据结构来表示,该结点的结构带有两个指针,分别指向左右两个有相邻逻辑关系的其它结点,其结构如图4所示。
程序设计中采用结构体来表示结点数据结构,其定义如下:
其中,data存放该结点的关键值,可以是操作数的编号或操作码的代码号;flag存放结点数据结构的标志位,表示该结点存放的是操作数或操作码;结点指针分别指向该结点的上层和下层结点,这样结点之间可通过指针连接,进行扫描和结点元素的插入、删除、修改等操作。在扫描PLC源程序指令表过程中,以空格作为分隔界限,将各独立字符取出,再将该独立字符与系统关键字对照来识别该字符。对已识别的关键字字符,系统申请结点struct node数据结构空间,将该关键字存放入data。根据关键字为指令操作符或者操作软元件,分别将flag标志位置0或1;同时设置结点的指针指向。
在PLC指令表程序中用二叉树的结构[3]表示指令的逻辑关系,其结构如图5所示。每个二叉树的根结点为系统的指令操作符,叶子结点表示系统的操作软元件。对该二叉树的逻辑结构进行后序遍历后可以得到对应的指令表程序。
2.3 编译模块的设计
PLC指令主要分为基本指令和应用指令。基本指令是使用较多的指令,完成位逻辑运算功能;而应用指令完成特定运算的功能。以字为单位对PLC指令进行编码,每条PLC指令包含操作码和操作数两部分,其中操作码有1个,操作数有1个、2个、3个或者更多,例如应用指令的源操作数和目的操作数。所以,根据操作数的个数不同,将PLC指令分为三类:第一类是LD、LDR、OR、AND;第二类是基本指令中无操作数指令、单操作数指令和步进指令;第三类是应用指令。用32位中的最高四位D31~D28区别这三类指令。其中,第二类指令对应的是0110;第三类指令对应的是0111;第一类指令对应的是4位二进制数的其它组合。
位单元软元件PLC指令共有8种,分为X、Y、T、C和M1、M2、M3、S两类。对每种软元件进行编码,从0开始编号。M是各类软元件中编号最多的软元件,故将M以1024个软元件为一个单位分为M1、M2和M3三种类型。其中,X、Y、T、C用2位二进制数编码(称为软元件的基地址)区分,4种软元件各自最多有256个,所以用8位二进制数(称为软元件的位地址)进行编码,共用10位二进制数判断4种软元件及其编号;对M1、M2、M3、S用2位二进制数区分,分别用10位二进制数进行编号,即共用12位二进制数判断4种软元件及其个数;系统中有常开、常闭、上升沿微分、下降沿微分四种接点类型,用2位二进制数进行编码区分。
对第一类指令进行编码时又将LD、LDR、OR、AND分为LD、LDR和OR、AND两类。D31~D28从0000~0101表示LD、LDR,若D27是0,则表示LD;若D27是1,则表示LDR。D31~D28从1000~1101表示AND、OR,若D27是0,则表示AND;若D27是1,则表示OR。若它们只有1个操作数,则D26~D17依次是软元件的基地址和位地址,D16~D15表示接点类型,D14~D13表示指令结束标志,其它为无关项置1;若它们有2个操作数,则第1个操作数和第2个操作数分别占D26~D15、D14~D1,最后1位表示指令结束。标志位,0表示未结束,1表示结束。
对第二类指令进行编码时比较简单,8种软元件编码,详见表1、表2。
对第三类指令进行编码时仅涉及48条应用指令,分别给其编号,编号的范围是0~47,采用7位二进制代码对D27~D21编码,编码值等于各自的编号。用D20区分是否为脉冲执行方式,若是,则D20为1;否则,D20为0。而其它应用指令的操作数有源操作数和目的操作数,有些应用指令没有操作数。对有操作数的应用指令,用2个或3个32位二进制数表示,将应用指令的编号、脉冲执行方式位和源操作数用一个32位编码,目的操作数用另外一个32位编码。将操作数分为软元件的编号和转移地址,转移地址就是软元件的位地址,源操作数占20位,目的操作数占32位,无关项都置为1。源操作数有T、C、D、K(十进制整数)、H(十六进制整数)、V、Z、Kn X、Kn Y、Kn S、Kn M1、Kn M2、Kn M3共13种软元件,用4位二进制数进行编码区分,从0000到1100;目的操作数有T、C、D、V、Z、Kn Y、Kn S、Kn M1、Kn M2、Kn M3共10种软元件,用4位二进制数进行编码区分,从0000到1001。对无操作数的应用指令(如CJ、CALL、SRET等)用一个32位二进制数表示,D27~D21用来指令编码,从0000000开始,需要脉冲执行方式位的指令仍用D20位表示,需要转移地址的指令用D19至后面的位表示,无关项都置1。
编译模块的功能是对PLC源代码指令表进行词法分析、语法分析、语义分析、代码优化[4],若出现错误则进行错误处理;反之,则生成PLC主机能识别的二进制目标代码。词法分析和语法分析的实质是检查源程序的整个输入是否构成一个完整的PLC指令程序。
词法分析采用有限自动机的原理来实现扫描功能,从PLC源文件中逐个读取字符,再对各个字符进行识别,分离出关键字、变量、数字、常量等。将软元件(如X、Y、S)和指令符(如基本指令)设置为关键字。同时检查源程序指令中操作符和操作数的关系是否正确。例如,对系统的位单元元件S不能使用ORB、ANB等块操作符,对数据寄存器软元件D、V、Z使用SET等位操作指令等类似的错误。当对应的操作符与操作软元件不相符时系统提示错误,停止相应程序的处理。
语法分析则是针对词法分析阶段中产生的单词序列进行检查,判断是否符合指令表语言的语法规则,确定整个输入字符串是否构成一个在语法上正确的程序等等。将词法分析阶段识别的关键字分类为表达式、语句等语法单元。再根据关键字的意义将该源程序的二叉树的逻辑结构转换为布尔表达式。根据语法规则的描述,确定该布尔表达式的逻辑结构是否与PLC程序的语法规则相符。
语义分析则分析整个句子是否符合PLC指令编程规则、数据的类型是否匹配、程序在逻辑上是否有错误等。
代码优化就是在PLC编程规则下将多余的空格符、制表符、注释等字符过滤掉,减少代码的存储空间。错误处理则是在编译过程中自动加入冗余容错逻辑,提高容错能力,增强系统的自适应能力。
经过以上阶段,可生成结构和逻辑上正确的PLC源指令代码。对PLC源指令代码进行遍历,根据树状结构对其存储。对PLC源指令代码通过后序遍历,从后序遍历根结点的各个子树,然后访问根结点。将操作码的编译代码和操作软元件的编译代码移位相加就构成了最终的二进制目标代码。
3 实例测试
编译一段PLC源程序指令,进行测试,以验证编译系统编译PLC指令的正确性。
输入PLC指令代码时规定:指令符和软元件之间只有一个空格符,若多个或者没有空格符,则会出现输入代码错误;各类软元件与其编号之间不能有任何符号,否则提示错误。
将这段PLC代码通过外围按键输入,通过代码扫描函数Code_Scan(),返回该段代码的总行数。由编译函数Compile Code()编译该段PLC源代码,将编译结果显示在液晶显示屏上,如表3所示。第1列是PLC源程序指令,第2列是以十六进制形式表示的目标代码。
编译每行代码时,分辨出指令符和软元件之间的空格符;根据空格符的位置找出软元件编号的起始位置;利用截取子字符串函数substr()分别读取指令符、软元件和软元件的编号,利用字符串处理函数strcmp()判断指令符与可编程控制器的指令符是否相同。若相同,则判断软元件具体类别。结合软元件编号,整行PLC指令代码被编译成十六进制代码,再通过十六进制数转变为二进制数函数Sieteen To Bin(),生成相应的二进制代码;若没有一个相同,则提示错误。
读取指令符和软元件之间空格符的位置函数如下:
4 结束语
本文介绍了一种PLC手持编程器的编译系统。该编译系统在ADS1.2开发软件上实现,在人机界面输入PLC指令,经编译后生成以十六进制形式显示的目标代码。通过实例测试,证明该系统能正确完成将PLC源代码指令表编译成PLC主机能识别的二进制机器代码。
参考文献
[1]Andrew W Appel.现代编译原理C语言描述[M].北京:人民邮电出版社,2006.
[2]高金刚,陈建春,刘雄伟.数控系统的软PLC系统开发[J].计算机测量与控制,2010,12(3):254-256.
[3]姚远,丑武胜,陈友东,等.软PLC编程开发系统的设计和实现[J].组合机床与自动化加工技术,2006(6):14-18.
[4]陆林,白瑞林.一类PLC的编译器的设计与实现[J].微计算机信息,2008,24(12):17-19.
PLC编程软件 第9篇
关键词:PLC,虚拟现实技术,Converse3D
1 虚拟PLC介绍
虚拟现实技术是人们通过计算机对复杂数据进行可视化、操作以及实时交互的环境。它通过给用户同时提供实时感知交互手段, 最大限度地方便用户的操作, 给用户一种真实的效果。根据虚拟现实技术所应用的对象不同, 虚拟现实技术可以表现为不同的形式, 例如将某种概念或构思可视化和可操作化, 实现逼真的现场效果等。
虚拟PLC就是根据虚拟现实技术对概念的可视化和可操作性特点设计的, 是具有传统硬件PLC特点的软件控制系统。它综合了计算机技术和PLC的开关量控制、模拟量控制、数学运算、数值处理、网络通信等功能, 提供强大的指令集、快速而准确的扫描周期、可靠的开放式操作结构。所以, 虚拟PLC提供了与传统硬件PLC同样的功能, 同时又提供了基于PC控制系统的各种优点。
考虑到PLC的直观控制效果, 系统中还用到了三维可视化仿真技术。所谓三维可视化仿真就是用三维建模软件创建各种典型的工业控制对象的三维模型, 并导入到具有独立功能的虚拟现实系统中, 成为三维虚拟控制对象。用户利用虚拟PLC的可视化编程环境编辑控制程序, 然后解释、运行, 根据虚拟PLC的运行结果控制三维虚拟控制对象运动, 从而在没有任何外部硬件电路的情况下, 使用一台计算机就可以实现PLC三维可视化仿真控制。本系统主要是采用3Ds Max建立控制对象模型, 导入Converse3D中来控制三维虚拟对象运动。
2 软件系统总体框架设计
本文是利用Visual C++开发平台, 研究和开发的虚拟PLC仿真软件。通过对系统的功能进行分析, 结合PLC梯形图的编译原理, 设计了如图1所示的PLC编程技能训练系统的逻辑架构。
上述逻辑架构不仅仅揭示了本软件基本的使用逻辑, 更在深层次展示了PLC模块实现的技术路线。用户首先根据梯形图工具条的元器件画出梯形图以及指令表菜单绘制出指令表, 经过编译器进行编译, 也可以调用已存在的梯形图文件以及指令表文件, 经过加载器加载后再通过编译器进行编译。最后再在交互区通过开关控制按钮控制系统的逻辑输出, 调用场景模型文件, 显示控制模型的相应运动过程。
3 梯形图编辑
PLC程序可看作由专用的编程语言 (梯形图、语句表等) 所编写的源程序, 它不能直接被计算机执行而必须翻译成机器语言。通常在计算机上翻译执行用某种高级语言编写的源程序时, 通常有两种方式:一是编译执行方式, 二是解释执行方式。计算机对PLC程序的识别是模拟PLC程序编译执行的关键。本系统中PLC的执行过程就是根据解释方式实现的。
解释方式就是按照源程序中语句的动态顺序, 直接地逐句进行分析解释, 并立即执行, 而不形成目标程序。
由于梯形图的编辑是一个动态的过程, 程序的行数, 每行的元素个数都是未知的。为表达这种动态过程, 可采用两个结构体数组解决。
系统中选取PLC编程常用的元器件以及常用的指令来提高虚拟PLC编程训练的通用性, 例如常用的元器件有:常开触点、常闭触点、线圈等;常用的功能指令有:“LD”读、“AND”与、“OR”或、“LDI”读非、“ANI”与非、“ORI”或非、“OUT”输出、“T”定时、“C”计数、“END”结束等。
系统是在主流PLC软件的特点上总结出来的一个通用模板, 集成了十种通用的梯形图指令, 基本上实现了一个“软PLC”的功能特点。 在设计工具条之后, 会对每个工具条按钮添加相应的消息函数, 再根据工具条的符号特征以及鼠标光标的位置, 在消息相应函数中填充相应的数据结构。
梯形图绘制完成后, 在进行编译时, 会执行编译按钮的消息响应函数, 也就是将把lad[1002]数组转换成Instruct[1002]数组的过程。
4 系统实现
虚拟PLC编程技能训练系统主要是通过分割窗口来实现界面的, 把主窗口进行了三态分割, 又为每个静态窗口建立对应的视图。其中, CSingleView主要负责交互区响应, CPLCView 建立并维护梯形图、指令表结构数组以及一切与之有关的变量和操作, CConView 负责调用场景和动画操作, 这些视图之间是通过主窗口指针来进行通信的。菜单、工具条响应函数全部加载在CSingleDoc类中。
系统界面如图2所示。
用户在Tasks Panel窗口中从任务列表下方选择所需要的任务, 即选择加载场景模型, 三维场景仿真区中就会显示对应的场景模型, 同时任务详细列表中也会列出该模型的实验指导说明以及控制要求。
三维场景仿真区的实现得益于Converse3D开发平台, 在工程中插入插件后就可以自由使用Converse3D自带的API函数, 加载场景和控制动画都很方便。
在PLC梯形图编辑区可以看到它包括工具栏和编辑窗口两个部分。可将已有的PLC代码导入编辑区, 也可通过工具栏上的图标新建一个梯形图。选择菜单栏的编译、在线 (写入PLC) 功能完成PLC梯形图的编译及下载, 通过则启动仿真程序。
在交互区通过添加按钮和开关的消息响应函数, 设置对应输入值并结合Instruct[1002]数组进行逻辑运算得到PLC的输出, 在定时器函数里面根据对应的输出来驱动对应的模型动画。
5 结语
虚拟PLC编程技能训练系统是一个能利用3D场景模拟出PLC梯形图程序运行效果的教学平台, 这将是PLC传统教学方式的一次突破。它操作简单, 利用了3D虚拟空间设计, 模拟出各种真实场景, 学生只需要进行电脑上机操作, 进行仿真实践, 便可以很好地理解和运用所学的理论知识, 同时也能够提升学生学习的主动性和兴趣, 使他们更好地掌握PLC。
参考文献
[1]毕辉, 程良鸿.关于软PLC梯形图向语句表转换方法的研究[J].微计算机信息, 2007 (9) .
[2]田裕康.PLC编程语言解释方法研究与系统实现[D].武汉:武汉理工大学, 2004.
[3]秦兵.可视化虚拟PLC系统关键技术研究[D].广州:广东工业大学, 2009.
PLC编程软件
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。