巧改PLC软件程序
PLC控制程序设计方法与技巧

PLC控制程序设计方法与技巧摘要:当前主流的PLC程序设计方法包括仅适用于简单系统的经验设计方法,无法处理并行系统的逻辑代数设计方法,和存在数据膨胀问题的Petri网设计等。
随着PLC硬件技术的不断完善,PLC应用的不断深入,人们开始不断探索新的PLC程序设计法方法与思想,以适应不断发展的PLC硬件技术,促进PLC技术的不断发展完善与推广应用。
关键词:PLC控制系统;程序设计;技巧引言PLC控制系统梯形图程序设计的方法主要有两种,即经验编程法和顺序控制编程法。
最常用的是经验编程法,它没有固定的方式和步骤可以遵循,具有很大的试探性和随意性,对于不同的控制系统,没有一种容易掌握的通用设计方法,即使是相同的硬件系统,由不同的人设计,肯定会设计出不同的程序,有的人设计的程序简洁明了,而有的人设计的程序虽然能达到控制系统的要求,完成控制任务,但冗长复杂,阅读起来十分艰难。
由此可见,梯形图程序设计的难度较大,是一种高端、复杂、烦琐、乏味、耗时、费力的智力“游戏”。
一个结构清晰、简单易懂的简洁程序,一是可以大大减少设计工作量,降低设计者劳动强度;二是可以提高程序的可读性,让程序的用户一目了然;三是可以减少程序运行的时间,节省程序占用的空间。
掌握一定的梯形图程序设计诀窍,有助于实现这些目的和要求。
本文介绍了一些梯形图程序设计的技巧和经验,希望对提高PLC技术初学者的编程能力有一定的帮助。
1面向对象的PLC程序设计方法1.1STEP7平台简介STEP7是西门子PLC的编程软件平台,提供了数据块(DB)、组织块(OB)、系统功能(SFC)、功能块(FB)、系统功能块(SFB)、功能(FC)等功能模块其中,DB用于存储程序变量,OB为系统程序接口,SFC可被用户直接调用,FB可实现动态、静态分配,SFB具有存储空间且可被用户直接调用,FC没有存储空间且只有在调用时才被分配。
1.2STEP7中类的设计STEP7中的FB和DB模块分别实现了控制逻辑与数据管理的封装,借助这两模块,可实现面向对象语言中类的特性。
零基础也能学懂的PLC编程入门图解

一、PLC的定义与分类PLC是以微处理器为基础,综合了计算机技术、自动控制技术和通信技术,用面向控制过程面向用户的“自然语言”编程,适应工业环境,简单易懂、操作方便、可靠性高的新一代通用工业控制装置。
PLC是在继电器顺序控制基础上发展起来的以微处理器为核心的通用自动控制装置。
1.PLC的定义可编程序控制器是一种数字运算操作电子系统,专为在工业环境下应用而设计。
它采用了可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作指令,并通过数字的、模拟的输入和输出,控制各种类型的机械或生产过程。
可编程序控制器及其有关的外围设备,都应按易于与工业控制系统形成一个整体、易于扩充其功能的原则设计。
2.PLC的分类PLC产品种类繁多,其规格和性能也各不相同。
对于PLC,通常根据其结构形式的不同、功能的差异和I/O点数的多少等进行大致分类。
2.1.按结构形式分类根据PLC的结构形式,可将PLC分为整体式和模块式两类。
(1)整体式PLC整体式PLC是将电源、CPU、I/O接口等部件都集中装在一个机箱内,如图所示。
具有结构紧凑、体积小、价格低的特点。
小型PLC一般采用这种整体式结构。
整体式PLC由不同I/O点数的基本单元(又称主机)和扩展单元组成,基本单元内有CPU、I/O接口、与I/O扩展单元相连的扩展口以及与编程器或EPROM写入器相连的接口等;扩展单元内只有I/O和电源等,而没有CPU。
基本单元和扩展单元之间一般用扁平电缆连接。
整体式PLC一般还可配备特殊功能单元,如模拟量单元、位置控制单元等,使其功能得以扩展。
(2)模块式PLC模块式PLC将PLC的各组成部分分别做成若干个单独的模块,如CPU模块、I/O模块、电源模块(有的含在CPU模块中)以及各种功能模块。
模块式PLC 由框架或基板和各种模块组成,模块装在框架或基板的插座上,如图所示。
这种模块式PLC的特点是配置灵活,可根据需要选配不同规模的系统,而且装配方便,便于扩展和维修。
施耐德PLC教程

TWIDO PLC 高级教程
目录
1.1 宏功能的应用 1.1.1 一般COMM通讯 1.1.2 变频器DRIVER通讯
1.2 CANOPEN通讯介绍 1.2.1 CANOPEN配置工具的用法 1.2.2 CANOPEN的编程方法
1.3 AS-I通讯介绍 1.3.1 AS-I配置工具的用法 1.3.2 AS-I的编程方法
1.6 PID指令的用法
13
Байду номын сангаас
第一章 PLC基础知识
目录
1.1 可编程控制器的发展历程 1.2 可编程控制器的基本结构 1.3 可编程控制器的工作原理
• 1.3.1 扫描原理 • 1.3.2 I/O映象区,响应时间 • 1.3.3 PLC如何取代传统的继电器、接触器控制电路
14
1.1 可编程控制器的发展历程 在现代化生产设备中,有大量的开关量、数字量、以及模拟量的控制装置。例
20
PLC的I/O响应时间 为了增强PLC的抗干扰能力,提高其可靠性,PLC的每个开关量输入端都采用光
电隔离等技术。为了能实现继电器控制线路的硬逻辑并行控制, PLC采用了不同于一 般微型计算机的运行方式(扫描技术)。以上两个主要原因,使得PLC得I/O响应比一 般微型计算机构成的工业控制系统慢很多,其响应时间至少等于一个扫描周期,一般 均大于一个扫描周期甚至更长。
2.2 TWIDO的选型 2.2.1 如何理解PLC的性能指标
2.3 TWIDO的安装与接线 2.3.1 导轨安装 2.3.2 CPU电源接线 2.3.3 离散量I/O模块接线 2.3.4 模拟量I/O模块接线
3
第三章 硬件寻址和内部软元件
目录
3.1 硬件地址分配方法 3.1.1 图解说明硬件地址分配方法(离散量%I、%Q和模拟量%IW、%QW的寻址规则)
PLC常见编程问题点总结

二、PLC编程常见问题
简单错误 : 5.语句执行先后顺序
程序原目的:
T1定时器每秒导通一次,C1及C2会每隔一秒 进行一次加1操作。
故障现象:
实际监控结果:C1工作正常,C2并未继续计数
PLC扫描程序时由头至尾依次执行的,所以编程人员必须重视程序语句执行 顺序对逻辑结果的影响。简单的逻辑程序如上面程序的例子比较容易看出 缘由,但在复杂的程序当中涉及其他的干扰因素出现,对于语句执行先后 顺序引起的错误容易被编程人员所忽视。对此类程序必须要做好厂内程序 试验。 清楚了解语句执行的先后顺序并巧妙的加以利用往往可减少程序的编写量。
二、PLC编程常见问题
简单错误 :
7.定时器常见问题
4)定时器时间设置为0: 在使用定时器编程时很多时候并未注意到定时器时间如果设置为0时会 产生什么后果。如果程序编程中不考虑对定时器时间为0时设备该如何 运行,那么可能会对实际设备运行造成设备严重伤害。 下面案例是某时间控制程序的错误案例简化程序:
简单错误 : 3.数据类型匹配与浮点运算
瞬时流量模拟累计错误程序案例:
MD2:累计流量存储值 MD4:流量瞬时值
在流量累计或其他累计计算编程中常会遇到实数加法的问题。 上述程序案例是否存在问题? 在流量累计初期运行是正常的,因为流量累计初始值及瞬时值都为一个很小的浮点数, 两数相加结构正确。但经过一段时间后,两数相差很大,执行加法操作后,瞬时流量的 数值将被忽略掉(如9999990.0+0.2)。因此在编程时比避免数量级相差太多的浮点数 之间进行运算。
二、PLC编程常见问题
FC/FB使用中常见问题 :
3.FC/FB中临时变量的使用
TEMP区的临时变量在编程中起着重要的作用而被大量的使用。但在编程中如果 对临时变量的特性不熟悉,很容易出现一些错误。 对于FC或FB中的临时变量,不要希望将本次调用的数值可以存储在里面以供下 次程序调用,因为这些临时变量所使用的L堆栈空间在FC或FB调用结束后就释放 给系统了,其他后续程序可以任意使用。所以下列用法都是错误的: 1)将临时变量用于上升/下降沿指令 2)将临时变量用于自保持逻辑 3)临时变量未在所在程序段中赋值,直接使用 注:在熟悉临时变量的特性前提下,上面第1、2点还是可以使用的。 在编程过程中,临时变量有着使用方便简单,占用存储空间小等很多优点,因 此在FC/FB编程中能使用临时变量的地方推荐尽量采用临时变量。
学习如何进行PLC的模拟仿真和调试

常见模拟仿真软件比较
MATLAB/Simulink
MATLAB/Simulink是MathWorks公司开发的一款工程模拟软件,提供了一套完整的建模、仿真和分析工具,支持多 领域的应用,如控制系统、信号处理、通信等。
LabVIEW
LabVIEW是National Instruments公司开发的一款图形化编程软件,提供了丰富的数据采集、仪器控制和数据分析 工具,同时也支持模拟仿真功能。
03
PLC编程与调试方法论述
编程环境搭建与配置
1 2
选择合适的PLC型号和软件
根据实际需求选择适合的PLC型号和编程软件, 例如Siemens的TIA Portal或Rockwell的 RSLogix5000。
安装编程软件
按照软件安装向导逐步完成软件的安装,包括选 择合适的安装路径、语言、组件等。
根据项目需求,编写PLC控制程序, 包括主程序、子程序、中断程序等。
程序下载与调试
将编写好的程序下载到PLC中,并进 行初步的调试和测试。
调试结果分析
调试过程记录
详细记录调试过程中的操作步 骤、遇到的问题以及解决方法
。
调试结果展示
通过PLC的输入输出信号、内部 变量等,展示调试结果,验证 程序功能的正确性。
问题分析与解决
遇到问题时,要仔细分析问 题的原因,并采取相应的措 施进行解决,例如修改程序 逻辑、调整参数设置等。
04
案例分析:具体项目实践应 用
案例背景描述
项目需求
01
某生产线自动化控制系统,需要实现设备的启动、停止、故障
检测等功能。
PLC选型
02
根据项目需求,选用合适的PLC型号,如Siemens S7-300或
plc博图软件的简单使用

博图软件的简单使用
1.软件安装完成后,桌面会出现方框圈中的四个图标。
此时双击打开TIA(如蓝色箭头指示)
2.创建新项目
点击项目视图(屏幕左下角)
3.添加plc
4.添加常规pc
5.添加常规IE和HMI
6.连接PLC和常规PC
7.建立程序(这里我用简单的启保停程序做示范)
需要添加其他块时,点击添加新快即可,程序运行时,FB 、FC 块需要添加到main 程序块中才能运行。
8.
制作画面
12
9.启动按钮图形关联变量
10.启动按钮制作动画效果
11.停止按钮图形关联变量和制作动画效果和启动按钮一样,不过关联的变量不一样,注意区分。
12.电机只需要制作动画即可,具体步骤和启动按钮一样,注意关联的变量不一样。
13.启动仿真
(这个过程执行需要一段时间)
步骤5代表的是开始搜索后的现象,只有5没有出错后,才能进行
6
6
14.程序运行,效果展示。
15.监视程序,在程序运行的状态下才能监视
出现虚线代表程序可以运行,程序编程没有错误。
如果程序出现逻辑错误,而没有程序编程
错误时,可以对程序进行监视,从而发现哪一点的逻辑出现了问题,进而对程序进行修改。
还可以在这里直接更变按钮状态,来运行程序,不再需要进入画面就能调试(这种要求程序比较小,太大就不适合了)
这里讲述的只是通用做程序的方式,待以后熟练掌握软件后,就可以发现里面还有很多强大的功能,有些操作步骤也和这里讲述的顺序或者操作不同,待大家熟能生巧后,完全可以按自己喜欢的方式来操作。
设计巧妙的plc程序梳理

合理利用函数块也是设计巧妙的PLC程序的关键之一。在实际编程中,可以将一些常用的逻辑、算法或控制功能封装成函数块,这样可以大大提高程序的复用性,同时也便于程序维护和调试。
五、状态机设计
状态机在PLC程序设计中有着广泛的应用,尤其是在复杂控制系统中。合理设计状态机可以使控制逻辑清晰明了,易于调试和维护。此外,状态机还可以有效降低程序的复杂度,提高系统的可靠性。
通过以上介绍,可以看出设计巧妙的PLC程序需要考虑诸多方面,包括功能分区、逻辑架构、模块化编程、函数块利用、状态机设计、命名规范和测试验证等。只有在这些方面都做到位,才能设计出稳定可靠且易于维护的PLC程序。希望以上经验可以为后来者在PLC程序设计方面提供一些借鉴。
二、清晰的逻辑架构
其次,一个清晰的逻辑架构对于设计巧妙的PLC程序至关重要。逻辑架构需要合理划分,模块化设计,并且需要遵循一定的设计规范。这样可以方便后续的编程和维护,同时也有利于团队的协作和沟通。
三、采用模块化编程方法
在实际的PLC程序设计中,采用模块化的编程方法可以大大提高开发效率。模块化编程可以将整个程序划分成若干个小模块,每个模块完成特定的功能。这样不仅可以减小单个程序模块的复杂度,更有利于各模块之间的协作和测试。
六、规范的命名和注释
在PLC程序设计中,规范的命名和注释是至关重要的。良好的命名规范可以使程序易读易懂,方便后续的维护和修改。同时,详细的注释也能够帮助他人更快地理解程序的逻辑和功能。
七、严格的测试和验证
最后,设计巧妙的PLC程序还需要经过严格的测试和验证。在程序编写完成后,需要进行充分的测试,包括模拟仿真测试和实际硬件测试。只有通过了各项测试,程序才能够投入实际生产使用。
设计巧妙的plc程序梳理
任务二 水塔水位的PLC控制

低速定时器
OUT T
低速累计定时器 OUT ST
0.1~3276.7
ENO:=OUT_T(EN,C oil,Value);
普通定时器 累计定时器
OUTH T OUTH ST
0.01~327.67
高速定时器
OUTHS T
高速累计定时器 OUTHS ST
0.001~32.767
ENO:=OUTH(EN,Co il,Value);
11
项目一 任务二 水塔水位的PLC控制
FX5UPLC定 时器的分类
通用定时器 累计定时器
低速定时器
普通定时器
高速定时器
低速累计定 时器
普通累计定 时器
高速累计定 时器
12
项目一 任务二 水塔水位的PLC控制
表1-14 定时器输出指令使用要素
名称
助记符 定时范围(s)
梯形图表示
FBD/LD表示
ST表示
编号
功能描述
SM400 SM401 SM402
SM0 SM52 SM409 SM410 SM412 SM471030
SM8000 SM8001 SM8002 SM8004 SM8005 SM8011 SM8012 SM801231 SM8-022 SM801249 SM802304
运行监视,PLC运行时为ON 运行监视,PLC运行时为OFF 初始化脉冲,仅在PLC运行开始时ON一个扫描周期 发生出错,OFF:无出错,ON:有出错 PLC内置电池电压过低时为ON 10ms时钟脉冲,通、断各5ms 100ms时钟脉冲,通、断各50ms 1借s位时标钟志脉位冲:,减通、运断算各结0果.5为s 零时置位 2进s时位钟标脉志冲位,:通加、运断算各有1进s 位或结果溢出时置位 1指mi令n时执钟行脉完冲成,标通志、位断:各执3行0s完成为ON 零为标ON志时位禁:止加全减部运输算出结果为零时置位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
巧改PLC软件程序,节省硬件投资
一款B级新车B12,由于工艺线路的特殊性,此车型需要在四厂涂装车间喷涂,然后经过二厂涂装车间的喷蜡线进入二厂总装车间装配。
具体工艺布局如图1所示:B12经过RB003~RB001(图中红色部分)至CC09-TC/RB048(图中黑色部分),然后经过CC09-RB050、CC09-RB052/054到CC09-RB056,经过此处的MOBY-i读写头,读取滑橇上的移动数据载体内的信息,并将其中的车型信息发给总装车间。
其他车型来自
CC09-RD026或CC09-RD06,通过CC09-TC/RB048进入喷蜡线。
但是B12车型所用的滑橇是从滑橇返回线随机抽取的,滑橇数据载体内部仍然记录着先前携带车身的有关信息,与当前携带的车型B12并不相符。
为了保证此处读取的车型信息与实际车型一致,最直接的办法是在此读写站之前新增一个读写站,通过人工方式,将车型信息写入滑橇数据载体。
图1 现场工艺流程布置
由于二厂涂装车间的设备由德国Dürr公司提供,输送系统采用滚床和滑橇的输送方式。
设备的控制采用了Dürr公司基于西门子S7-PLC开发的模块化标准程序。
为了实现输送设备和自动喷涂系统之间的车型、喷涂颜色信息传递,以及根据质量信息,判断车身物流走向等目的,输送设备采用了RFID射频识别系统。
二厂涂装车间采用的是西门子MOBY-i识别系统,其硬件系统包括安装在滑橇上的数据载体MDS430,安装在特定位置的读写头SLG43,安装在PLC主机架上的ASM451接口模块,接口模块内置CM422通信卡与读写头进行通信。
另外MOBY-i的软件系统也比较复杂,Dürr公司在其软件内部进行了大量的封装处理,给用户调整修改其软件带来了很大的困难。
同时,增加MOBY-i系统还需要增加相关的硬件设备,并且要求将读写头安装在图1中红色设备上,而红色部分与黑色部分分别属于两个不同的PLC控制组,两者之间需要设计大量的连锁信号,这也给我们带来了很大的技术难度。
解决方案
为了不增加改造成本,我们另寻其他途径,并对这两部分设备的PLC控制软件进行了深入的研究,发现CC09-RB056的MOBY-i程序把读写的结果存放在一个数据块DB580内部,而程序的其他部分都从数据块获取车型信息,于是我们把研究方向放在该数据块上。
在CC09-RB056工位,若当前实际的车型为B12,则对MOBY-i的读写结果进行修改,最终解决了这个问题。
首先定义4个布尔类型变量,分别记录进入CC09-RB048、RB050、RB052和RB056的车型是否为B12,具体变量定义如表所示。
变量定义
由于来自RB001(红色部分)的车型都是新车型B12,而来自CC09-RD026、
CC09-RD046(黑色部分)的车型都不是B12,利用这个规律可以判断进入CC09-TC/RB048的车型,并将判断结果存在RB048-TYPE-B12中,当滑橇由CC09-RB048进入
CC09-RB050时,把变量RB048-TYPE-B12的信息复制到变量RB050-TYPE-B12,依次传递下去。
在CC09-RB056滚床位置,MOBY-i读写头读取滑橇MDS内部的全部信息,并存储在数据块DB580内部。
这时我们可以据变量RB056-TYPE-B12的状态来决定是否对数据块DB580内部的车型信息数据进行中途修改:
若RB056-TYPE-B12=“TRUE”,则修改;
若RB056-TYPE-B12=“FALSE”,则数据不变。
其他的程序将根据DB580内部存储的车型信息,给总装设备发送信息,通知其发送相应的吊具来接喷漆车身。
上述的方法中涉及到3个关键技术环节,即信息的获取、传递和修改。
1.RB048-TYPE-B12初始信息的获取
关键是检测滚床在运动状态下,CC09-RB048上的3个接近开关的触发顺序:若RB001的占位开关和CC09-RB048的前占位开关同时触发,表明车型为B12,
RB048-TYPE-B12=“TRUE”;若CC09-RD026或者CC09-RD026的占位开关与
CC09-RB048的后占位开关同时触发,表明车型非B12,RB048-TYPE-B12=“FALSE”。
具体程序如图2所示。
图2 初始车型信息获取
2.车型信息传递
车型信息要从RB048-TYPE-B12传给RB050-TYPE-B12,从RB052-TYPE-B12到RB056-TYPE-B12。
以车身滑橇从CC09-RB048移动到CC09-RB050为例,其关键步骤是判断在车身由CC09-RB048进入CC09-RB050的过程中,若RB048-TYPE-B12=“TRUE”,则对RB050-TYPE-B12进行置位操作,否则对RB050-TYPE-B12进行复位操作,详细程序如图3所示。
图3 车型信息传递
3.车型信息的修改
按照车间车型定义表,B12车型代号定义为“0940”。
在CC09-RB056位置,MOBY-i读写
站读取滑橇MDS信息中,并存储在在数据块DB580中,以后的操作都依此数据为准。
若RB056-TYPE-B12=“TRUE”,则用新车型信息“0940”修改数据块DB580。
后面的程序将根据数据块内部的车型信息来通知总装车间发送相应的吊具过来。
具体程序如图4所示。
图4 车型信息修改
结语
至此,我们就完成了相关的技术改造,在不增加任何硬件投资的前提下,仅通过对现有软件的探索和增加部分PLC程序,实现了与增加MOBY-i站完全相同的功能,大大简化了项目改造技术方案,并节省了设备投资费用以及聘请Dürr公司专家的劳务费用,同时也极大地鼓舞了员工学习、研究和提升业务技能的积极性。