目录
第1章 PLD编程概述
1.1 常见的程序运行硬件平台
1.2 PLC程序与计算机程序的比较
1.3 C语言编程
1.4 PLC程序的特点
第2章 常见的PLC编程语言
2.1 梯形图 (图形化编程)
2.2 指令语句编程(相当于计算机中的汇编语言编程)
2.3 顺序功能图 (相当于高级语言的功能逻辑图)
2.4 功能模块图 (类似Veriglog的硬件逻辑功能图)
2.5 结构化文本 (类似高级编程语言)
第3章 常见的7款PLC编程软件(集成开发环境)
3.1 德国:西门子PLC
3.2 台湾:Delta WPLSoft台达PLC编程软件
3.3 日本:欧姆龙plc编程软件
3.4 日本:三菱PLC编程软件
3.5 日本:松下plc编程软件
3.6 免费:PLCEdit V2.2.1 正式版
3.7 KGL WIN
第1章 PLD编程概述
1.1 常见的程序运行硬件平台
(1)通用服务器
(2)通用个人计算机
(3)嵌入式计算机
(4)单片机
(5)工业控制计算机(工业环境上位机)
(6)PLC(工业环境下位机) =》 PLC的本质和核心是一个经过严格EMC设计的单片机。
1.2 PLC程序与计算机程序的比较
(1)面向目标
- 计算机编程语言,如C语言,是通用计算机编程语言
- PLC编程语言是面向工业控制的编程语言
(2)编程应用范围
- 计算机操作系统编程可用于上位机
- 嵌入式操作系统编程用于下位机
- 单片机编程用于下位机
- PLC编程用于下位机
(3)程序执行环境
- 计算机操作系统编程,有操作系统、支持进程、多线程环境。
- 计算机操作系统编程,有操作系统、支持进程、多线程环境。
- 单片机没有操作系统,不支持多进程,属于单线程执行
- PLC程序不支持多进程,属于单线程执行
备注:从这个角度看,PLC编程与单片机编程是类似的!
1.3 C语言编程
C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。
C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。
在C语言编程中 ,都是文本的方式进行编程,使用C语言提供的关键字,编写语句,按照数据结构+ 算法的基本原则进行编程 。
C语言的程序有三种基本的结构:
C语言的程序,在操作系统环境就是一个进程:
.
1.4 PLC程序的特点
第一:PLC可以工作在极其恶劣的电磁环境中
如果我们把计算机直接放到PLC工作的环境中,无需太久,这些计算机机将死机甚至烧毁。
把工业控制计算机直接放在变电站开关柜中,用来实施监控和数据处理。用不了多久,电源故障和硬盘故障,还有输入输出接口的故障就接踵而来。直到我们用PLC替换下这些工控机,事情才算完。
这叫做抵御电磁骚扰EMC的能力,PLC可达三级甚至四级,而工业计算机能达到二级、普通计算机通常只有一级。
抵御EMC电磁骚扰,会有许多措施。例如隔离技术、接地技术等等都是。
第二:PLC的程序是一行行程序顺序执行的,不会陷入死循环 (串行性)
我们在编写普通计算机程序时,经常会遇见循环。如果一个循环子程序设计不恰当,或者条件引起了程序返回,有可能进入到死循环中,系统当然就死机了。
然而,PLC的程序是一条接一条顺序执行的,只有到了程序末尾才会回头。在程序中任何部位,若条件满足,可以实现跳转,但程序还是一条接一条顺序执行。
如此一来,PLC几乎不会死机。这也是PLC区别于普通计算机的根本特性。
因此,我们会发现PLC的可靠性极高,这是普通计算机完全不能比拟的。
第三:冗余配置
所谓冗余配置,就是在控制过程中存在主机和从机,它们依靠握手线关联,并共享资源和信息。
如果是计算机,当主机出现问题时,切换到从机的时间较长。
如果是PLC, 当主机出现问题时,它们之间的转换仅几个时钟周期即可完成。
例如我们的控制对象是汽轮机,它的转子在高速旋转。我们不妨假定转子的转速就是工频周期,也即每分钟3000转。如果我们对汽轮机实施DCS监控,在现场层面我们只能选用带冗余配套的PLC,绝不可能使用计算机。一旦PLC的主机发生故障,它立刻就转入从机控制,对于受控对象来说几乎感觉不到,但计算机就未必可以实现类似功能了。
事实上,带冗余配套的PLC系统就属于规模较大的PLC了。
第四:PLC的工作范围
PLC的内存不大,尽管它的可靠性很高,但PLC不能用于较大的计算。如果设计一个PLC程序,用于浮点数的乘法,麻烦得很,最后不得不使用模块配合查表来解决问题。
PLC的内部其实就是单片机,只不过整个PLC的单片机系统经过了严格的EMC测试,而操作系统和编程系统也进行了优化,方便我们这些编程者使用。
既然PLC只是一台单片机系统,可想而知它与计算机的计算能力不在同一个技术水平上。计算机能够完成的工作,哪怕只是一篇WORD文档的写作,用PLC绝不可能完成。但PLC能够轻松实现的控制功能,用计算机虽然也能勉强实现,但效果极差,且可靠性极低,尺寸也巨大。
如此看来,PLC与计算机的工作特性不一样,适用的工作对象当然也不一样。
第五 小规模性、可视性、便捷性、串行性
(1)小规模性
PLC的程序规模都不大,一般才几千字节,能上万字节就算很大的程序了。
PLC有许多输入输出接口,以及各种类型的变量,这些都需要专门设置地址,以便在程序中使用。
(2)可视性
我们看下图,此图是用PLC国际通用标准IEC61131-3模块化编程语言写成的:
图1 某地铁配电控制系统PLC的输入接口参数定义程序和延迟判误程序
在图1中,大家在左侧看到了许多输入参量,它们的末尾都有_s的标识,这些就是开关量输入参数,它们不但有地址,还有名称。这是必须的,否则程序无法辨识和使用它们。
(3)便捷性
由图1的程序看到,这种编程方法比所谓的C语言方便得多。事实上,每一个功能块就相当于一段C语言。例如TON模块,它是延迟模块,如果用C语言,怎么也要若干语句行,但这里仅仅只是一个程序模块而已。何者更方便一看便知。
再看下图:
图2 PLC的16位字解析为单个开关量的程序段
图2中,程序开头的AND(与逻辑模块)实施程序转移。当条件满足时,AND启动子程序入口。在图2中,我们看到了UNPACK16模块,它的任务是把一个16位的字解析为16个开关量,供下一步程序使用。
我们很容易想到,这个UNPACK16模块若用C语言来写,又会有何种形式?何者更方便?
我们看下图:
图3 数据交换的RS485接口定义和MODBUS通信管理
图3是PLC对系统中各种数据交换的定义、数据采集和管理。图中的一个个模块就是处理MODBUS通信协议数据的,同时还实现数据采集轮巡操作。 这些模块用C语言该如何写?是不是会麻烦很多?我们看到,PLC程序的便捷性是C语言无法比拟的。
(4)串行性
在上图中,程序的执行并非是并行的,而是串行的,从第一行,依次执行到下一行。直到执行到最后一行后,重新开始执行 。这与FPGA的verilog编程是不同的,FPGA的verilog编程是并行的。
串行执行的根本原因在于,PLC的内核是一个单片机,而不是FPGA。
第2章 常见的PLC编程语言
PLC 常用的编程语言有梯形图编程语言、指令语句表编程语言、顺序功能图编程语言、高级编程功能语言等。
2.1 梯形图 (图形化编程)
梯形图编程语言习惯上叫梯形图, 是目前用得最多的一种 PLC 编程语言。
它是在继电器控制电路的基础上演绎出来的,具有形象、直观、实用的特点,电气技术人员容易接受。
- 1、具有直观性、形象性及实用性,与电气操作原理图相对应
- 2、梯形图程序与继电器控制系统相类似,电气从业人员易于掌握
- 3、梯形图使用的继电器是由软元件来实现的,使用和修改较为灵活方便
梯形图通常由触点、线圈两个基本编程要素构成。
为了解梯形图,需要清楚以下几个基本概念:
1) 能流:
在梯形图中,为了分析各编程元件的输入/输出关系,而引入一种称为“能流” 的假想电流。通常认为能流是按从左到右的方向流动,而不能倒流, 这样的流向与用户程序的逻辑运算关系一致。
如在图 1. 1-1 中, 在 X0 闭合的前提下, 能流有两条流动路径,一条为动合触点 X0→动断触点 X1→线圈 Y0,另一条为动合触点 Y0→动断触点 X1→线圈 Y0。
备注:
“能流”本质上反应的是自动控制硬件电路的逻辑关系!!!
从这个角度看,PLD编程与FPGA verilog图形化编程是相似的,都反应的是硬件的逻辑关系。
但由于PLD的本质是单片机,因此,程序的执行无法做到并行,而是串行执行的 ,这一点与FPGA是不相同的。
2) 母线:
母线是指多个设备以并列分支的形式接在其上的一条共用的通路。在计算机系统里,是指多台计算机并列接在其上的一条共享的高速通路,可以供这些计算机之间任意传输数据,但在同一时刻内,只能有一个设备发送数据,电气自动化中的母线,相当于计算机系统中的“总线”。
在梯形图中的两条垂直的公共线,称为左、右母线。
左母线不可省略,右母线可省略,可以看成能流由左母线流向右母线, 如图 1. 1-1 所示。
母线槽(简称母线槽)是由金属板(钢板或铝板)为保护外壳、导电排、绝缘材料及有关附件组成的母线系统。它可制成每隔一段距离设有插接分线盒的插接型封闭母线,也可制成中间不带分线盒的馈电型封闭式母线。在高层建筑的供电系统中,动力和照明线路往往分开设置,母线槽作为供电主干线在电气竖井内沿墙垂直安装一趟或多趟。
3) 触点:触点表示逻辑输入条件。触点分为动合触点和动断触点,如图 1. 1-1 所示。
触点闭合表示可以有“能流”流过,触点断开表示“能流”不能流过。
在自动化控制领域,“触点”就是一个能够开合的“开关”。合上,电流通过;断开,电流无法通过。
在计算机领域,“触点”相当于一个0和1的布尔变量。布尔变量等于1,表示条件满足,相当于开关“合上”。 布尔变量等于0,表示条件不满足,相当于开关“断开”。
4) 线圈:线圈表示逻辑输出结果。若有 “能流” 流过线圈, 线圈吸合,否则断开。
2.2 指令语句编程(相当于计算机中的汇编语言编程)
PLC指令语句编程,相当于计算机中的汇编语言编程。
PLC提供了一组汇编指令, 指令语句编程就是用汇编语言的一系列操作指令组成的语句表将控制流程描述出来,并通过编程器(编译后的二进制单片机指令)送到 PLC中去。
不同PLC厂家的PLC 指令语句表使用的助记符并不尽相同,取决于采用的单片机,PLC的单片机并非通用的单片机,而是PLC常见自定义的单片机。
特点:
- 1、常采用助记符来表示操作功能,具有容易记忆,便于掌握
- 2、与梯形图有对应关系,在PLC编程软件下可以相互转换有部分软件没有这个功能(如:三菱的GX Works2)
- 3、便于操作,在手持编程器的键盘上采用助记符表示,在无计算机的场合可实现编程设计
下图1. 1-2 所示的指令语句表完成图 1. 1-1 所示梯形图功能编写的程序。
指令语句表是由若干条语句组成的程序,语句是程序的最小独立单元。每个操作功能由一条或几条语句来执行。 PLC 的语句表由操作码和操作数两部分组成。
操作码用助记符表示 (如 LD 表示“取”、OR 表示“或”等),用来说明要执行的功能,告诉CPU该进行什么操作。 例如逻辑运算的与、或 非;算术运算的加、减、乘、除;时间或条件控制中的计时、计数、 移位等功能。操作数一般由标识符和参数组成。标识符表示操作数的类别,例如表明是输入继电器、 输出继电器、 定时器、 计数器、 数据寄存器等。 参数表明操作数的地址或一个预先设定值。
2.3 顺序功能图 (相当于高级语言的功能逻辑图)
用梯形图或指令语句表对于一个复杂的控制系统编程, 尤其是顺序控制程序, 由于内部的联锁、 互动关系极其复杂, 其梯形图往往长达数百行,如果在梯形图上不加注释,则会大大降低这种梯形图的可读性。
顺序功能图常用来编制复杂的顺序控制类程序,这种方法也为调试、试运行带来许多方便。它包含步、 动作、 转换这三个要素。 顺序功能图编程法可将一个复杂的控制过程分解为一些小的工作状态, 对这些小的工作状态的功能分别处理后再依一定的顺序控制要求连接成整体的控制程序。 图 1. 1-3 所示为顺序功能图示意图。
顺序功能流程图语言是为了满足顺序逻辑控制而设计的编程语言。具有图形表达方式,能较简单和清楚地描述并发系统和复杂系统的所有现象,在模型的基础上能直接编程,所以得到了广泛的应用。
特点:
1、以功能为主线,按照功能流程的顺序分配,条理清楚,便于对用户程序理解
2、对大型的程序可分工设计,采用较为灵活的程序结构,可节省程序设计时间和调试时间
2.4 功能模块图 (类似Veriglog的硬件逻辑功能图)
功能模块图语言是与数字逻辑电路类似的一种PLC编程语言,对于有数字电路基础的人比较容易掌握。
特点:
- 1、以功能模块为单位,分析理解控制方案简单容易
- 2、功能模块是用图形的形式表达功能,直观性强,有较好的易操作性
- 3、对规模大、由于功能模块图能够清楚表达功能关系,使编程、组态及调试时间大大减少
2.5 结构化文本 (类似高级编程语言)
结构化文本语言是用结构化的描述文本来描述程序的一种编程语言,它是类似于高级语言的一种编程语言。在大中型PLC系统中,常采用结构化文本来描述控制系统中各个变量的关系,完成所需的功能或操作。
特点:
- 1、采用高级语言进行编程,可以完成较为复杂的控制运算
- 2、要求较高,需要有一定的计算机高级语言的知识和编程技巧,门槛较高。
- 3、因为直观性和操作性较差,常用于其他编程语言较难实现的用户程序编制
在PLC控制系统设计中,不同型号的PLC编程软件对以上五种编程语言的支持种类是不同的,所以不但对PLC的硬件性能了解外,也要了解PLC对编程语言支持的种类。
第3章 常见的7款PLC编程软件(集成开发环境)
PLC控制领域,不同厂家的PLC, 提供了不同的PLC编程软件。不同厂家的PLC编程软件,对以上五种编程语言的支持种类是不同的。下面展现的是常见的7款PLC编程软件。
3.1 德国:西门子PLC
德国西门子股份公司(SIEMENS AG)创立于1847年,是全球电子电气工程领域的领先企业。西门子自1872年进入中国,140余年来以创新的技术、卓越的解决方案和产品坚持不懈地对中国的发展提供全面支持,并以出众的品质和令人信赖的可靠性、领先的技术成就、不懈的创新追求,确立了在中国市场的领先地位。
西门子股份公司是一家专注于工业、基础设施、交通和医疗领域的科技公司。从更高效节能的工厂、更具韧性的供应链、更智能的楼宇和电网,到更清洁、更舒适的交通以及先进的医疗系统,西门子致力于让科技有为,为客户创造价值。通过融合现实与数字世界,西门子赋能客户推动产业和市场变革,帮助数十亿计的人们,共创每一天。
step7是西门子PLC编程软件最新中文版,支持32位MS Windows 7 Professional、Ultimate和Enterprise(标准安装)操作系统。
3.2 台湾:Delta WPLSoft台达PLC编程软件
中国台湾的台达集团创立于1971年,为电源管理与散热管理解决方案的领导厂商,并在多项产品领域居世界级重要地位。面对日益严重的气候变迁议题,台达秉持“环保 节能 爱地球”的经营使命,运用电源设计与管理的基础,整合全球资源与创新研发,深耕三大业务范畴,包含“电源及零组件”、“能源管理”与“智能绿生活”。
在工业自动化领域的发展上,台达电子凭借电力电子及自动控制的多年制造经验与技术,专注于驱动 (Drive)、运动 (Motion) 与控制 (Control) 领域,提供了众多的产品。
台达PLC编程软件WPLSoft 最新版,在没有真实PLC的情况下,在电脑上模拟运行PLC程序的执行情况。先点仿真,在点那个梯形图监控。就可以右击控制一些量的状态。实现仿真。注意要和PLC连接起来。
3.3 日本:欧姆龙plc编程软件
日本的欧姆龙集团,从1933年5月10日创业,通过不断创造新的社会需求,已经发展成为全球知名的自动化控制及电子设备制造厂商,掌握着世界领先的传感与控制核心技术。
欧姆龙plc编程软件集成了CX-Programmer V9.5,能够为欧姆龙PLC编程提供全面的软件支持,本版本为最新版,全面支持32/64位WIN8系统,为多国语言版,支持简体中文。能为网络、可编程终端及伺服系统、电子温度控制等进行设置。
适用于已具有电气系统知识(电气工程师或等同者)的负责安装FA系统者、负责设计FA系统者和负责管理和维护FA系统者使用。
3.4 日本:三菱PLC编程软件
日本的三菱(Mitsubish)不是一个单独的公司,是由众多的独立公司组成的团体,其中大多数公司使用“三菱”这一名称,但不会简单地自称“三菱”。三菱Kinyokai(也被称为Friday Club,直译为星期五俱乐部)的核心成员有28家,三菱的成员公司约有500家,名称中有“三菱”的公司约有400家,另有数以百计的三菱公司名称中没有“三菱”。这些公司的商业活动是独立进行的,甚至在很多领域彼此竞争,现在三菱已建立起一系列的企业,在日本工业现代化的过程中扮演着举足轻重的角色。
三菱PLC编程软件适用于Q、QnU、QS、QnA、AnS、AnA、FX等全系列可编程控制器。三菱PLC编程软件GX Developer定位为可编程控制器综合开发平台,支持梯形图、指令表、SFC、 ST及FB、Label语言程序设计,网络参数设定,可进行程序的线上更改、监控及调试,具有异地读写PLC程序功能。三菱公司目前最新PLC编程软件。
3.5 日本:松下plc编程软件
日本松下电器产业株式会社自1918年松下幸之助创业,发展品牌产品涉及家电、数码视听电子、办公产品、航空等诸多领域而享誉全球;该企业品牌跃入《世界品牌500强》排行榜。
松下FP系列PLC编程软件FPWIN GR 是一款功能强大,好用的系统编程软件。下载后压缩包说明内有序列号,已测试能用。安装包括MEWNET-H链接系统时所需要的软件,用于各种智能模块的设定软件,编程手册。
3.6 免费:PLCEdit V2.2.1 正式版
plcedit是一个免费的PLC编程源代码编辑器。
现在开始流行plc编程了,这个plc编程软件也就是PLCEdit是用来源代码编辑器的PLC编程。 plc编程软件PLCEdit可以阅读和编辑文件,兼容SucoSoft和easySoftCoDeSys,CoDeSys v2.3.x等文件
3.7 KGL WIN
KGL WIN是一款非常不错的PLC编程软件,小编提供的这个版本包含了软件、说明书、示例程序和PPT演示以及中文使用手册。用户可以进行简单的PLC编程操作,你可以选择直接打开二进制文件,将已经设计好的程序放到软件中进行整理,从而对代码进行调试。
KGL WIN是一款PLC编程工具,这款软件能够让设计人员快速设计出符合产品的控制器,增加产品的可控制性,软件内的功能非常丰富,操作也很简单,是一款非常不错的PLD编程工具。