PLC的编程要领:让工程师受益的PLC编程技巧

摘要

PLC编程是一个容易让工程师们头痛的问题。本文将从梯形图逻辑和PLC扫描、BCD码以及可复用代码3个方面详述PLC编程的小技巧。

梯形图逻辑和可编程逻辑控制器(PLC)的扫描、二进制编码的十进制数(BCD码)、以及代码复用,是CONTROL ENGINEERING编辑咨询委员会成员Frank Lamb建议在PLC编程时需要多加留心的地方。作为一家自动化咨询服务公司的创始人,他认为控制工程师们可以从这3个角度来学习PLC的编程要领。

BCD码是一种十进制数的二进制编码,其中每个数都用特定的位来表示,通常是4位或8位,这与人类计算的方式大不相同。这种割裂会给可编程逻辑控制器(PLC)的用户带来困扰。

梯形图逻辑与PLC扫描

几乎所有的PLC都以同样的方式来处理扫描。首先,CPU将物理输入读入内存表,通常称为“输入表”。该表经评估后在程序中使用。不同平台,使用不同类型的寄存器;在每个扫描周期,按照从左向右,从上到下的顺序处理逻辑,同时更新寄存器。包括更新输出表,稍后用其驱动连接到PLC的物理设备。

为实现各种功能,程序可能会调用不同的子程序,需要注意的是调用顺序很重要。根据内存寄存器和输出表的位置,物理输出最多可能会延迟两个周期。在任何情况下,从程序调用处开始执行所调用的子程序,子程序执行完毕,回到最初调用该子程序的主程序,继续完成最初的扫描周期。大多数程序,使用一个初始循环例程,用于调用所有其它例程。

然而,也有一些程序是固定周期运行,并不是连续运行的。不过,这种情况并不常见。大多数程序的配置,都是以最快速度连续运行。执行完所有代码,评估逻辑,并更新所有表(扫描开始时写入的输入表除外),将生成的输出表或寄存器内容写入物理输出。

需要花费多长时间?这取决于平台(处理器速度)、程序代码量、以及所使用的指令类型。在程序中,程序员有时会使用循环处理,或者重复调用同一个子程序。所有这些都会影响PLC总扫描时间。通常,在帮助文档中都会说明不同指令的执行时间,但是并没有涉及到如何估计执行所有代码所需要的时间。基本上这些说明都太简单,只能作为参考。

有时,扫描时间可能长达80毫秒。如果扫描时间超过50毫秒(对机器控制项目而言),用户就应寻求更强大的处理器或使用更高效的代码。在机器控制项目中,如果扫描时间超过50毫秒,对输出响应的影响非常明显;对于过程控制项目而言,这可能不是特别重要。

二进制编码的十进制数

二进制编码的十进制数(BCD码),是一种二进制编码(通常用4或8位来表示)。对我们人类来讲,需要在我们的“寄存器”中累加每位,将它们转换为十进制数,这是上帝赋予人类的编程思考方式。

早在使用触摸屏之前,7段显示器和指轮开关就被用作人和PLC之间的数字接口。甚至更早,在使用PLC之前,这些设备也是与电路之间实现数字接口的唯一图形化设备。用户可以像在ENIAC(第一电子通用计算机)一样,移动短接片,但利用这些设备,更容易查看和调整十进制数。问题是,它们是输入/输出(I/O)密集型的。每个指轮段需要4个输入(+电源),而每个7段显示器则需要4个输出(+2个电源连接)。然而,与使用按钮和指示灯相比,它更容易与十进制数中带符号或无符号整数连接。

最常见的抱怨来自于数学方面;每个数据类型都必须显式声明,如果数据类型不匹配,则必须对其进行转换。不仅如此,标准计时器和计数器类型还需将BCD纳入到它们的数据结构。这是因为这些数据结构,可以追溯到人们需要处理诸如指轮和7段显示器的时代。事实上,计时器设定值,仍然需要输入“S5T # 3S”来完成3秒钟的设定。定时器使用3位BCD来表征数字(12位),还需要2位BCD来表征时基。对计数器也是如此,这意味着它们的计数范围只能从-999到+999。

每一个4位区段可以代表0000到1001的数值;下一个值,不是从1010(有符号或无符号十进制的“10”或十六进制中的“A”)开始,而是直接跳到下一区段的位。这意味着最后6个位组合(A-F)实际上被浪费了——这在BCD结构中是不可能的。

在许多较新的触摸屏中,仍然使用BCD结构或基础,但大多数程序员更倾向于选择整数基来表示十进制数。BCD有点像DOS;工程学校仍然在利用它,但是人们真的不知道它是从哪里来的。参考旧指轮和7段显示,可能有助于澄清某些神秘事项和选择BCD的原因。

PLC的可复用代码,为用户提供了灵活性,并允许构建可从一个应用程序导出到另一个应用程序的结构。

PLC可复用代码的优势

国际电工委员会(IEC)在1993年时就颁布了可编程控制器的国际标准IEC 61131,其中的第三部分关于编程语言的标准,规范了可编程控制器的编程语言及其基本元素。旧的基于寄存器的系统和最新PLC系统之间的一个重要区别,就是能够构建可复用的代码块。支持平台必须具备3个基本特征:

1.局部变量与全局变量。可复用代码必须具有可适用于每个代码实例的变量;在理想情况下,只需在原始代码中定义一次数据格式。这意味着,不需要为每个实例或调用重新定义标签或符号。多次调用子例程,并更新程序中的地址,虽然这样可以节省时间,但这实际上并不是真正的可复用代码。

2.用户自定义的数据类型(UDT)。创建UDT允许构建结构。从一个应用程序导出的结构可以应用到另一个程序中。它们允许使用通用术语来描述组件,如“速度”、“开始”和“拒绝”。UDT不需要使用基于标签的系统,但是它们确实需要更有效的利用符号。

3.受保护的自保持程序块。非常重要的是:代码必须包含在允许变量输入和输出的程序块中,并受到保护,这样用户就不能修改实例中的程序。如果修改,需要密码或软件密钥。

利用满足IEC标准要求的其它PLC语言来编写程序,也有助于使平台功能更强大,代码开发速度更快。不管平台是否使用具有局部变量或用户定制指令的子例程,可复用代码是快速创建功能强大程序的关键部分。许多平台都允许使用复用代码,并且每个平台都有自己的方法。

本文来自于《控制工程中文版》(CONTROL ENGINEERING China)2017年1-2月刊《封面故事》栏目,原标题为:让工程师受益的PLC编程技巧

————本期杂志封面————

(0)

相关推荐

  • 【上】三菱FX PLC学习之数据处理指令

    蓝字  '技成PLC课堂"   关注我们哦! 上几篇文章中分享的都是有关数值运算的指令,这次,我们接着学习数据处理指令. 数据处理,包括对数据的采集存储.加工计算.检索排序.变换和传输等.所 ...

  • 西门子S7-1200的数据类型有哪些

    今天我们来讲一下西门子S7-1200的数据类型有哪些.数据类型用于指定数据元素的大小,以及如何解释数据.西门子S7-1200支持的基本数据类型包括以下几类: 布尔型数据为一位二进制数,其取值为0或1, ...

  • 关于PLC编程,老工程师的这12点建议,赶紧看看吧!

    关于PLC编程,老工程师的这12点建议,赶紧看看吧!

  • 关于PLC编程,老工程师的这12点建议,赶紧收藏吧!

    关于启程 启程自动化成立于2012年,培训项目主打西门子PLC编程系统集成.工业机器人编程.EPLAN电气设计.视觉等培训与技术服务的机构.官网:www.qichengplc.com 1.PLC和上位 ...

  • PLC工程师:ABB机器人编程实用技巧,多项案例!

    ABB机器人Pdisp 轨迹偏移使用 1.如果有下图两个产品,已经完成了右边产品轨迹,左边产品估计一样,如何快速生成左边轨迹(左边产品可能有平移和旋转). 2.完成右边轨迹示教Path_30,如上图. ...

  • PLC梯形图编程规范,工程师都需要!

    PLC梯形图编程的四个基本概念 1 软继电器  PLC梯形图中的某些编程元件沿用了继电器这一名称,如输入继电器.输出继电器.内部辅助继电器等,但是它们不是真实的物理继电器,而是一些存储单元(软继电器) ...

  • 7个基础指令4个编程实例,带你学好PLC!

    在PLC学习的过程中,逻辑指令是PLC编程中一个非常重要的环节,其中基础指令是PLC可以识别的语言,在使用PLC之前,我们需要针对现场工况的需求对PLC进行编程,之后PLC才能按照事先写入的程序进行自 ...

  • 想学PLC编程?先弄清5种PLC专用语言!

    蓝字   '电气达人"  PLC目前有5种标准的编程语言,包括图形化编程语言和文本化编程语言. 图形化编程语言包括: 梯形图(LD-Ladder Diagram): 功能块图(FBD - F ...

  • 80%以上的工程师,对PLC指针类型与间接寻址无从下手

    电气工程及其自动化 80篇原创内容公众号点击上方电气工程及其自动化,关注并星标由于微信改版,只有星标才能及时看到我们的消息哦我每天醒在鸟声里.我从梦里就听到鸟叫,直到我醒来.我听得出几种极熟悉的叫声, ...

  • 西门子经典编程案例,新手快速入门PLC绝配!

    技成电工课堂 学技术,找技成. 100篇原创内容 公众号 额,没错!很多朋友可能已经发现了西门子特别难学,其实,西门子的编程软件的数据变量及类型的命名方式,要更接近高级语言! 三菱.欧姆龙属于日系品牌 ...

  • 90%的工程师,对PLC指针类型与间接寻址无从下手

    爱上PLC公众号 一起爱上PLC在西门子S7-300和S7-400的编程中经常需要调用一些系统功能或功能块,在输入参数时经常碰到有指针类型的参数,那么你对指针类型了解吗?我第一次接触指针一词是在学习C ...