plc是专为工业控制而开发的装置,其主要使用者是工厂广大电气技术人员,为适应他们的传统习惯和掌握能力,通常PLC不采用微机的编程语言,而常常采用面向控制过程、面向问题的“自然语言”编程。PLC的编程语言很多,各厂家的编程语言也各有不同。为便于PLC的应用推广,国际电工委员会(IEC)在标准IEC61131-3(可编程控制器语言标准)中推荐了5种编程语言。目前已有越来越多的生产厂家提供符合IEC61131-3标准的产品。下面对常用的几种编程语言作简要介绍。
梯形图 功能模块图 顺序功能流程图 指令表 结构化文本
1. 梯形图(LD → Ladder Diagram)
梯形图是使用得最多的图形编程语言,被称为PLC的第一编程语言。这种表达方式与传统的继电器控制电路图非常相似,不同点是它的特定的元件和构图规则。它比较直观、形象,对于那些熟悉继电器--接触器控制系统的人来说,易被接受。这种表达方式特别适用于比较简单的控制功能的编程。
例如7.8a)所示的继电器控制电路,用PLC完成其功能的梯形图如图7.8b)。
梯形图的要点:梯形图按自上而下、从左到右的顺序排列。每个继电器线圈为一个逻辑行,即一层阶梯。每一逻辑行起于左母线,然后是触点的各种连接,最后终止于继电器线圈(也可以加上一条右母线)。整个图形呈阶梯状。
梯形图是形象化的编程手段。梯形图的左右母线是不接任何电源的,因而梯形图中没有真实的物理电流,而只有“概念”电流。“慨念”电流只能从左到右流动,层次的改变只能先上后下。
2. 功能模块图(FBD → Function Black Diagram)
功能模块图是一种类似于数字逻辑门电路的编程语言。
该语言用类似与门、或门的方框来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非”运算,方框被“导线”连接在一起,信号自左向右流动。例如对应于图7.8的功能模块图如图7.9所示。
功能模块图的特点是:以功能模块为单位,分析理解控制方案简单容易;以图形的形式表达功能,直观,有数字电路基础的人很容易掌握;对规模大、控制逻辑关系复杂的控制系统,由于功能模块图能够清楚表达功能关系,使编程调试时间大大减少。
3. 顺序功能流程图(SFC → Sequential Function Chart)
顺序功能流程图是为了满足顺序逻辑控制而设计的编程语言,类似于计算机常用的程序框图。
顺序功能流程图的规则是:将顺序流程动作的过程分成步和转换条件,根据转移条件对控制系统的功能流程顺序进行分配,一步一步的按照顺序动作。每一步代表一个控制功能任务,用方框表示。在方框内含有用于完成相应控制功能任务的梯形图逻辑。
由于顺序功能流程图描述控制过程详细具体(包括:每一步的输入信号,每一步的工作内容,每一步的输出状态,框与框之间的转换条件。),因此程序结构清晰,易于阅读及维护,可大大减轻编程工作量,缩短编程和调试时间。特别适用于系统的规模校大,程序关系较复杂的场合。右图是一个简单的顺序功能流程图的示意图。
4. 指令表(IL → Instruction List) LD I100
OR Q100
ANDN I101
OUT Q100
LD Q100
OUT Q101
EDN
它采用类似于汇编语言的指令语句来编程。指令语句的一般格式为:操作码 操作数
操作码又称为编程指令,用助记符表示,它指示CPU要完成的操作,包括逻辑运算、算术运算、定时、计数、移位、传送等。
操作数给出操作码所指定操作的对象或执行该操作所需的数据,通常为编程元件的编号或常数,如输入继电器、输出继电器、内部继电器、定时器、计数器、数据寄存器以及定时器、计数器的设定值等。
指令语句对熟悉汇编语言的编程者特别容易接受,它编程设备简单,编程简便。
采用指令语句编程时,通常都预先用以上几种方式之一表达控制原理,然后改写成相应的指令语句。应用最多的是采用梯形图与指令语句结合编程,即先按控制要求画出梯形图,再根据梯形图写出相应的指令程序。因PLC是按照指令存入存储器中的先后顺序来执行程序的,故要求程序中指令和顺序要正确。
用指令语句表达的图7.8所示电路逻辑如右。
5. 结构化文本(ST → Structured Text)
结构化文本是IEC工作组对各种高级编程语言合理地吸收、借鉴的基础上创建的针对工业控制的一种专用高级编程语言。
结构化文本表面上与PASCAL语言很相似,也支持变量赋值(既可是简单的赋值语句,也可是复杂的数组或结构赋值)、功能块调用、表达式、条件语句(IF语句、CASE语句)和迭代语句(FOR语句)等,但为了应用方便,在语句的表达方法及语句的种类等方面都进行了简化。
结构化文本的特点是:能实现较复杂的控制运算;编写的程序简洁、紧凑;需要有一定的计算机高级语言的知识和编程技巧。因此,这种语言主要用于其他编程语言较难实现的用户程序编制。
除上述5种语言外,还可用布尔逻辑语言编程,采用布尔逻辑表达式来表示输入信号、中间变量和输出信号间的关系很方便(例如图7.8的所示的梯形图,采用布尔逻辑语言表达时,只需两个逻辑表达式:Q100=(I400+Q100) Q101=Q100),因此,如把布尔逻辑语言与FBD、SFC等语言结合使用,常常会取得极佳的设计效果。