PLC编程的结构化:走向成功的7个步骤
作者 | Eelco van der Wal
“
IEC 61131-3标准包括强大的结构化工具,可以帮助用户将控制系统分解为可管理的单元,从而提高整体效率。
”
根据现代软件开发环境的需求,国际电工委员会 (IEC) 的可编程逻辑控制器标准第 3 部分编程语言 IEC 61131-3 包括了强大的结构化工具。其中关键部分是顺序功能图 (SFC) 和用户自定义的功能块 。两者都为将控制系统分解成可管理的单元提供了一个很好的方法。
这些单元更容易被不同背景的人使用和理解。它提供了系统工程师、软件开发人员以及安装和维护人员之间缺失的环节。此外,它还为这些不同的群体提供了一种表达和交流的工具。
通过这种方式,在更大的应用中,多专业团队也可以相互协作,编制更易于理解和可复用的代码,并在程序员、安装和维护人员以及用户之间提供不同级别的隔离。
此外,在软件开发初期就可以进行错误检测和错误处理。另一种方法,是在安装过程中(甚至在运行期间)创建这些程序,但对于供应商(支持)和用户(停机)来说成本都太昂贵。
为控制系统编程提供结构
控制系统代码结构化的优点很多,包括:更好的系统概览,不仅对原始程序员很重要,对安装和维护人员也很重要;为多专业开发团队的内部沟通提供更好的基础;不同职责之间的明确分离;更好地关注真正的问题和可能的解决方案;以及可复用软件的基础。
结构化是通过将问题分成更小的部分来完成的 。这些部分可以进一步细分。但这样做也有局限性 :不能无限制的持续细化,因为这会增加集成工作。
模块化块的使用涉及 5 个基本原则 :
• 编程语言应支持模块化单元。
• 单元的组成方式和数量,应使其具有最少的接口和最少的交互。
• 接口要小,需要最少的数据交换。
• 模块交互需要明确定义,以增加其可复用性。
• 模块应该提供数据封装功能 :应用程序数据是分区的,每个分区只能由一组功能访问,这 样就可以将其隐藏起来,避免不必要的访问。
编程软件结构化的 7 个步骤
以下 7 个步骤,为控制系统编程软件的结构化提供了一条成功之路 :
• 识别控制系统的外部接口。
• 定义控制系统和工厂其它部分之间交换的主要信号。
• 定义所有操作人员的交互、覆盖和监控数据。
• 控制问题分析,从顶层到逻辑分区,逐步分解。
• 定义所需的功能块。
• 定义应用程序不同部分的扫描周期要求。
• 通过定义资源、将程序与物理输入和输出相连接,以及将程序和功能块分配给任务来配置系统。
IEC 61131-3 提供的合适环境可以支持这些步骤。下面将以发酵过程及其控制系统为例详细探讨编程软件结构化的过程。图 1 是整个系统的示意图。
发酵过程包括一个大容器,它可以装满液体(进料阀),可以用加热带加热(通过对流冷却), 通过电机搅拌,并且可以添加酸和碱液进入容器。处理完成后,就用收获阀来收获产品。要为此示例创建控制程序,需要完成上述 7个步骤 :
1 步骤一
识别控制系统的外部接口,包括 :
• 来自温度传感器的反馈 ;
• 来自 pH 传感器的反馈 ;
• 来自阀门位置的反馈 ;
• 来自电机的反馈(速度);
• 输出到阀门 ;
• 输出到电机 ;
• 输出到加热带。
2 步骤二
定义控制系统和工厂其它部分之间交换的主要信号。
在该例中,系统与工厂的其余部分没有耦合,但是在现实中不太可能。例如,人们可能需要 一个连接到容器的管道,该管道还需要接到接收系统,如容器或瓶子的运输系统。也可能与企业资源规划 (ERP) 系统耦合。
3 步骤三
定义所有操作人员交互、覆盖和监控数据。
对于操作人员,我们定义了 “开始”、“停止”和“持续时间” 按钮作为系统的输入。
4 步骤四
控制问题分析,从顶层到逻辑分区,逐步分解。
这个过程有 5 个主要功能 :
a. 主顺序,例如,顶层工艺步骤——灌装、加热、搅拌、发酵、收获、清洁 ;
b. 阀门控制,操作用于填充和清空容器的阀门 ;
c. 温度控制,用于监测容器温度, 调节加热器 ;
d. 搅拌器控制,用于根据主工艺顺序的要求启动搅拌器电机。
e.pH 控制,用于监测发酵内容物的酸度,根据需要添加酸液或碱液。
5 步骤五
定义所需的功能块。
使用上面的定义并向其添加(高级)功能块,我们就可以在编程语言中使用这些功能块图。发酵控制程序的功能块图如图 2 所示。
▎ 图 2 :此图表示的是发酵过程的功能块图,左侧是输入,右侧是输出。
功能块主序列连接到运行人员输入。它由其它控制块支持,这些块连接到相关的输入和输出。这些附加块可以是供应商提供的块,例如使用 PID 控制的温度控制块 ;也可以由您自己创建(图 3 所示的就是用 SFC 构 造序列)。
▎ 图3 :顺序功能图 (SFC) 提供了一种方法,可以将可编程控制器程序划分为一系列的步骤和转换,它们直接相互连接。
SFC 提供了一种方法,可以将可编程控制器程序划分为一系列的步骤和转换,它们直接相互连接。与每个步骤相关联的是一组动作,与每个转移相关联的是转移条件。
从初始化开始,因为在第一次启动系统时,并不知道系统的状态,所以我们必须检查阀门的位置等。然后开始填充,直至达到合适的液位。下一阶段是加热直到发酵过程开始。接着,进入实际发酵过程控制部分。
完成后,收获产品,然后清理干净,准备重新开始。这种分解,使每个参与者都清楚地了解所涉及的序列,并进一步模块化为功能块,然后用 4 种语言中的任何一种来进行编程。
现在要完成执行级别的编程工作。这些工作可以分配给不同背景的人。为此,IEC 定义了 2 种图形和 2 种文本编程语言,即指令列表、结构化文本、梯形图和功能块图,以最好地满足需要和手头的问题。此外,如果需要,还可以通过 SFC 进一步分解执行块。
6 步骤六
定义应用程序不同部分的扫描周期要求。
在这个例子中,我们原则上只有一个循环,可以在连续模式下运行。或者,我们可以让其定时运行,例如每 20 毫秒运行一次。剩余时间可用于附加序列,例如在收获期间检查,或控制运输 / 装瓶系统,或检查所有边界和错误条件。
7 步骤七
通过定义资源,将程序与物理输入和输出相链接,以及将程序和功能块分配给任务来配置系统。该阶段是专门针对相关系统的。
它包括符号到 I/O 地址的物理映射。通过使用符号表示,可以获得更好的硬件独立性。这对于创建独立于硬件的功能块尤其有效。有了清晰的物理映射,在现场重新布线更容易完成。例如,交换两个数字输入的接线,在物理映射中只需更改 两行,程序的其余部分仍然有效,无需更改。
在这里,资源是相互映射的,意味着无论哪个部分运行在系统中的哪个处理器上,都能一一对应。IEC 61131-3 支持多线程处理环境,尽管大多数系统实际仍使用一个处理器来处理程序。
用户还必须将任务映射到扫描周期和事件,如步骤 6 中定义的那样。这样,一个系统中可以有多个程序,例如这里描述的发酵过程,由整体检查和控制支持,而其背后又有支持环境,例如供应链前端的装瓶或液位。
IEC 61131-3 编程标准为多层次的用户和应用,提供了强大的工具。使用高级 SFC,可以为正在开发的系统提供很好的概览,从而提高可读性和透明度。它为手头的控制问题的模块化提供了指导。此外,它还为区分不同的开发任务提供了基础,并将注意力集中在实际编码层,创建可复用的软件代码上。
关键概念:
■ IEC 61131-3 编程标准为多层次的用户和应用提供了强大的工具。
■ 顺序功能图 (SFC) 和用户衍生功能块,是必不可少的部分。
思考一下:
您是否充分利用了IEC 6113-3 标准进行结构化设计?
用PLC设计的温度在线报警系统,用于监测电缆中间接头的温度
作者探讨了一种基于PLC的10kV电缆中间接头温度在线监测报警系统的构建,实现了利用预埋传感器位置温度来判定当前电缆中间接头的暂态温度。
由于输电线路本身存在一定的电流抗阻,在电流通过的时候,不可避免的会由于电能转换为热能而导致输电线路产生一定的热量。如果热量过高,则很有可能导致输电线路由于过热而损坏。
同时,由于在输电线路之中存在大量的电缆接头,由于存在电缆头接触不良、压接头不紧、绝缘强度损坏等问题都可能导致温度的异常升高。因此,电缆接头相较于电缆的其他部位更容易损坏,不仅仅可能导致电缆损毁,同时还必然导致大面积的停电,甚至可能引发火灾事故。
然而,在当前的技术条件之下,我们还无法避免电缆接头的发热问题,只能够针对这一现象研发电缆温度实时监控系统,从而及时的发现温度异常现象,并且有针对性的采取相应的措施,将危险消灭在萌芽状态。因此,从这个角度来看,对10KV电缆中间接头温度的在线监测报警系统的研究具有一定的现实意义。
电缆中间接头温度在线监测报警系统的方案设计
1 系统方案设计
针对电缆中间接头的温度过热现象的物理特征,文章拟采取以温度检测为主要检测手段,同时辅以烟雾检测作为温度检测失灵条件下的补救措施,并且整合电话报警系统。
除此之外,为了防止传感器由于电缆接头爆燃或者炸裂过程中受损,导致无法向上位机传输信号,本文设计的是多主机系统,即每一个传感器对应的都是一个主机,主机之间可以相互通信,并且通过RS485现场总线向上位机系统设计方案如图1所示。
图1 基于单片机的多主机通信系统方案
如图1所示,基于RS485现场总线实现的单片机多主机通信系统的各个传感器终端都是主机,在通常状态之下都处于信息接收状态,只有在某个终端需要向上位机以及其他主机发送数据的时候,才转换成发送状态,向RS485现场总线发送数据。
这种系统设计方案的优势在于改变了过去的主机轮流循环询问各个从机的操作流程,各个终端设备之间的通信变成了按需发布信息或者接收信息,从而减少了单个主机的负荷,提升了系统的实时性。在终端设备需要报警的时候,能够及时的报警,并产生其他的一系列的连锁动作。但是,在该方案之下,需要解决一个重要的问题就是通信协议的解决问题。
2 硬件选型
本方案的关键硬件为PLC,文章选择西门子PLC SP300以及三菱PLC FX2N。上位机采用的是西门子PLC SP300,西门子PLC SP300用于对过程处理能力和响应时间要求很高的应用。
通过其工作存储器,该PLC也适用于中等规模的应用。该PLC的微处理器每条二进制指令执行时间约100ns,每条浮点数运行指令约3µs,具有96 KB 高速 RAM(相当于大约 32 K 的指令)用于执行相关的程序部分,为用户程序提供充分的空间;微存储卡(最大8 MB)作为程序的装载存储器,也允许在 CPU 中保存项目;拥有多达4排结构的32个模块;内置 MPI 接口可以最多同时建立 12 个与 S7-300/400 或与 PG、PC、OP 的连接。
在这些连接中,始终分别为 PG 和 OP 各保留一个连接。通过“全局数据通信”,MPI可以用来建立最多16个CPU组成的简单网络。各个设备终端主机采取用的是三菱PLC FX2N,其具有小型化、高速度以及高性能等特点,编程简单,除输入出16-25点的独立用途外,还可以适用于在多个基本组件间的连接,模拟控制,定位控制等。
在基本单元上连接扩展单元或扩展模块,可进行16-256点的灵活输入输出组合。可选用16/32/48/64/80/128点的主机,可以采用最小8点的扩展模块进行扩展。除此之外,还可根据电源及输出形式,自由选择程序容量。因此,该PLC组合能够完全满足系统功能的需求。
温度传感器选用的是DS1820传感器,该传感器是美国达拉斯(DALLAS)公司生产的单线数字温度传感器,具有低功耗、高性能、抗干扰能力强以及适配性好等特点,在多点温度测控系统之中应用较为广泛,能够直接将温度转化成串行数字信号,从而供PLC处理。
除此之外,在每一个传感器之上都有唯一的产品序列号,并且能够存储在其Rom之中,这就使得在构成大型温度监控系统的时候,在但线上挂接任意多的传感器都是可行的。
由于DS1820传感器自身的设计较为科学合理,从其中读取或者写入信息都只需要一根口线,其读取温度或者变换频率都来源于数据总线,而且总线本身还兼有给芯片供电的功能,不需要额外的电源,因此能够有效的减少布线的难度和工作量,而且该芯片能够提供9位数的温度读数,不需要任何的其他外围硬件的检测就能够方便的构成温度监控系统。
通信方案的设计
本方案的通信是基于西门子PLC以及三菱PLC自身的通信模块,依据MODBUS协议,通过主站/主站的模式进行数据通信。
该通信是通过现场总线RS485实现的。而各个设备终端主站之间的通信则是利用三菱PLC FX2N的串口通信模块,并且在PLC之上增加一个CP340串口通信模块,运用主站广播模式,向各个设备终端发布查询命令通信程序包括了信息的发送、接受、验证以及校验计算等几个部分,其基本结构如表1所示。
表1 串口通信数据结构
设计的方案包括了两个PLC,因此进行通信模块的设置时也要在两个通信模块分别进行设置。
首先,在西门子PLC S7-300中,设置工作模式为RS485,然后将串口设置为9600.8.1.None,将通信模式选择为双工通信,其余设置采用默认设置,完成组态编辑之后,保存设置,并将其下载到PLC站点之中。
完成西门子PLC的通信模块设置之后,继续对三菱PLC FX2N进行设置,由于三菱PLC FX2N的通信接口型号为FX2N-485-BD,该通信模块实际上采用的是双芯屏蔽电缆,屏蔽层接入SG,电缆的双芯分别接入的是SDA以及SDB。可以依据三菱PLC FX2N随机自带的通信手册采用无协议通信方式,利用MODBUS通信协议原理自行设计具体的通信规则。
结论
对电力电缆的中间接头温度进行实施检测,不仅仅能够及时的发现电缆接头部分局部过热问题,及早处理安全隐患,同时也能够为电力电缆的符合调控或者动态增容提供依据。基于单片机的10KV电缆中间接头温度在线监测报警系统具有低成本、高便捷性的特点。
但是,现有的单片机通信系统在应用的过程中存在较多的缺点,关键是在于其主站/从站的通信模式,使得各个设备终端之间无法实现直接通信,而设备终端与上位机之间的通信也只能够完全遵循主机轮流循环询问各个从机的操作流程,使得主机的负荷较高,处理效率得不到保障,一旦出现温度异常无法及时报警处理。
本文研究了一种基于RS485现场总线以及串口通信的多主机通信网络系统,在上位机与各个温度、烟雾传感器之间通过RS485现场总线进行通信,提升了通信效率,而各个设备终端之间则通过串口通信实现相互之间的直接通信,进一步降低了上位机的工作负荷,同时也确保了通信的实时性,在功能性和效率性方面都得到了有效的保障,能够及时的侦测电缆中间接头温度异常现象,因此具有很好的发展前景。
本文编自《电气技术》,标题为“10kV电缆中间接头温度在线监测报警系统”,作者为阮浩洁、姚延军。
相关问答
PLC控制温度,要想实现5分钟内从200℃升温至1200℃,请问升温斜率如何计算,编程的时候又该怎样写入程序中?
可以通过PLc用温度控制不同功率加热设备的启停来实现温升快慢,温升斜率不固定,可以先高后低,也可先低后高,平均斜率为温升范围/升温时间可以通过PLc用温度控...
plc温度换算公式?
PLC(可编程逻辑控制器)是一种用于自动化控制的电子设备,它通常用于监测和控制工业过程中的各种参数,包括温度。温度的换算公式取决于所使用的温度单位。以下...
新人不太懂,求温度变送器接入PLC接线方法-盖德问答-化工人...
温变的线制可能存在两种意思:(一)指变送器供电/信号传输时,通加有以下三种情况两线制,2芯导线供电同进行信号传输;三线制,3芯导线供电/信号各用...
plc怎样控制温度?
PLC可以通过多种方式控制温度,最常用的方法是使用传感器监测温度,并根据设定的温度值控制加热或冷却设备的输出功率,从而实现温度的控制。PLC还可以通过PID控...
在西门子PLC中,如何对热电阻信号进行转换,范围:0-300,当温度低于0度时,如何编程?
如果你用的是RTD模块,不需要转换,读取通道地址的数据,除以10就是温度值。如果用的是电流模块,你就要用温度变送器进行转换,转换为4-20MA的电流信号。分别对...
plc温度值计算公式?
用程序生成一个100ms的脉冲,DB0为本次采样,DB1为上次采样,在脉冲的上升沿将计算DB0和DB1差值,再将DB0传送给DB1,再将温度数据传送给DB0。这样就可以计算出本...
欧姆龙plc温度控制程序实例?
一、概述欧姆龙PLC温度控制程序实例是一种用于控制和监控温度的程序,它可以帮助用户实现温度的自动控制,以达到更好的控制效果。二、程序实例1、程序实例一...
怎么把温度传感器输出的模拟信号引入西门子PLC最终实现人机...
要有相应模块,元件,数据进了PLC,通过编程奖数据采集,做出运算,得到结果。再用组态软件,将结果做到画面上就OK了!方案A:1)如果是热电偶,可以直接用P...
wincc如何组态画面显示plc温度?
使用WinCC软件,可以通过添加PLC的温度变量,并通过图形对象(如Text、Picture、Bar等)来显示PLC的温度数据。首先在WinCC中创建一个Tag,将该Tag与PLC中的温度...
怎样用PLC控制恒温?
采集温度,输入plc,内部pid控制,控制输出数值控制阀门或调功器的等。也可以用温度控制器控制,开关量或模拟量输出控制接触器或阀门等采集温度,输入plc,内部pi...
扫一扫微信交流