四川省西门子一级代理商

报价
请来电询价
西门子
西门子代理商
西门子CPU
西门子plc
德国
全新原装
关键词
西门子PLC,西门子CPU,西门子代理商,西门子授权代理商,西门子一级代理商
更新时间
2026-05-31 08:45

1 引言

      在工业生产中,常需要用闭环控制方式来实现温度、压力、流量等连续变化的模拟量控制。无论使用模拟控制器的模拟控制系统,还是使用计算机(包括PLC)的数字控制系统,PID控制都得到了广泛的应用。

PID控制器是比例-积分-微分控制的简称,具有

(1) 不需要的控制系统数学模型;

(2) 有较强的灵活性和适应性;

(3) 结构典型、程序设计简单,工程上易于实现,参数调整方便等优点。积分控制可以消除系统的静差,微分控制可以改善系统的动态相应速度,比例、积分、微分三者有效地结合可以满足不同的控制要求。

2 PLC实现PID的控制方式

2.1 PID过程控制模块

      这种模块的PID控制程序是PLC生产厂家设计的,并存放在模块中,用户使用时序要设置一些参数,使用起来非常方便,一个模块可以控制几路甚至几十路闭环回路。

2.2 PID功能指令

      现在很多PLC都有供PID控制用的功能指令,如S7-200的PID指令。它们实际上是用于PID控制的子程序,与模拟量输入/输出模块一起使用,可以得到类似于使用PID过程控制模块的效果。

2.3 用自编的程序实现PID闭环控制

      有的PLC没有PID过程控制模块和PID控制用的功能指令,有时虽然可以使用PID控制指令,但是希望采用某种改进的PID控制算法。在上述情况下都需要用户自己编制PID控制程序。

3 PLC-PID控制器的实现

      本文以西门子S7-200PLC为例,说明PID控制的原理及PLC的PID功能指令的使用及控制功能的实现。

3.1 PID控制器的数字化

      PLC的PID控制器的设计是以连续系统的PID控制规律为基础,将其数字化写成离散形式的PID控制方程,再跟据离散方程进行控制程序设计。

在连续系统中,典型的PID闭环控制系统如图1所示。图1中sp(t)是给定值,pv(t)是反馈量,c(t)是系统的输出量,PID控制的输入输出关系式为:

 

式中:

M(t)—控制器的输出量,M0为输出的初始值;

e(t)=sp(t)-pv(t)-误差信号;

KC比例系数;

TI-积分时间常数;

TD-微分时间常数。

 

图1 连续闭环控制系统方框图

 

式(1)的右边前3项分别是比例、积分、微分部分,它们分别与误差,误差的积分和微分成正比。如果取其中的一项或两项,可以组成P、PD或PI控制器。

假设采样周期为TS,系统开始运行的时刻为t=0,用矩形积分来近似积分,用差分近似微分,将公式1离散化,第n次采样时控制器的输出为:  (2)

式中:

en-1-第n-1次采样时的误差值;

KI-积分系数;

KD-微分系数。

      基于PLC的闭环控制系统如图2所示。图中的虚线部分在PLC内。其中spn、pvn、en、Mn分别为模拟量在sp(t)、pv(t)、e(t)、M(t)在第n次采样时的数字量。

 

图2 PLC闭环控制系统方框图

      在许多控制系统内,可能只需要P、I、D中的一种或两种控制类型。如可能只要求比例控制或比例与积分控制,通过设置参数可对回路进行控制类型进行选择。

3.2 输入输出变量的转换

      PID控制有两个输入量:给定值(sp)和过程变量(pv)。多数工艺要求给定值是固定的值,如加热炉温度的给定值。过程变量是经A/D转换和计算后得到的被控量的实测值,如加热炉温度的测量值。给定值与过程变量都是与被控对象有关的值,对于不同的系统,它们的大小、范围与工程单位有很大的区别。应用PLC的PID指令对这些量进行运算之前,必须将其转换成标准化的浮点数(实数)。

同样,对于PID指令的输出,在将其送给D/A转化器之前,也需进行转换。

3.3 回路输入的转换

      转换的第一步是将给定值或A/D转换后得到的整数值由16位整数转换成浮点数,可用下面的程序实现这种转换:

XORD AC0, ACO 

https://清除累加器

MOVW AIWO, AC0 

https://将待转化的模拟量存入累加器

LDW>= AC0, 0 

https://如果模拟量数值为正

JMP 0 

https://直接转换成实数

ORD 16#FFFF0000, ACO 

https://将AC0内的数值进行符号扩展,扩展为32位负数

LBL 0

DTR AC0, AC0 

https://将32位整数转换成实数

转换的下一步是将实数进一步转换成0.0~1.0之间的标准化实数,可用下面的式(3)对给定值及过程变量进行标准化:

RNorm=(RRaw/Span)+Offset (3)

式中:

RNorm-标准化实数值;

RRaw-标准化前的值;

Offset-偏移量,对单极性变量为0.0,对双极性变量为0.5;

Span-取值范围,等于变量的大值减去小值,单极性变量的典型值为32000,双极性变量的典型值为64000。

下面的程序将上述转换后得到的AC0中的双极性实数(其Span=64000)转换成0.0~1.0之间的实数:

/R 64000.0, AC0 

https://累加器中的实数标准化

+R 0.5, AC0

https://加上偏移值,使其在0.0~1.0之间

MOVR ACO, VD100 

https://加标准化后的值存入回路表内

3.4 回路输出的转换

      回路输出即PID控制器输出,它是标准化的0.0~1.0之间的实数。将回路输出送给D/A转换器之前,必须转换成16位二进制整数。这一过程是将pv与sp转换成标准化数值的逆过程。用下面的公式将回路输出转换成实数:

RScal=(Mn-Offset)×Span (4)

式中,RScal是回路输出对应的实数值,Mn是回路输出标准化的实数值。

下面的程序用来将回路输出转换为对应的实数:

MOVR VD108, AC0 

https://将回路输出送入累加器

-R 0.5, AC0 

https://仅双极性数才有此语句

*R 64000.0, AC0 

https://单极性变量乘以32000.0

用下面的指令将代表回路输出的实数转换成16位整数:

ROUND AC0, AC0 

https://将实数转换为32位整数

MOVW AC0, AQW0 

https://将16位整数写入模拟输出(D/A)寄存器

3.5 PID指令及回路表

S7-200的PID指令如图3所示:

 

图3 PID指令

      指令中TBL是回路表的起始地址,LOOP是回路的编号。编译时如果指令指定的回路表起始地址或回路号超出范围,CPU将生成编译错误(范围错误)仪器编译失败。PID指令对回路表中的某些输入值不进行范围检查,应保证过程变量、给定值等不超限。回路表参见附表。

附表 PID指令的回路表

 

 

      如果PID指令中的算术运算发生错误,特殊存储器SMI.1(溢出或非法数值)被置1,并将终止PID指令的执行。要想消除错误,在下次执行PID运算之前,应改变引起运算错误的输入值,而不是更新输出值。

4 PID指令编程举例

      某一水箱里的水以变化速度流出,一台变频器驱动的水泵给水箱打水,以保持水箱的水位维持在满水位的75%。过程变量由浮在水面上的水位测量仪提供,PID控制器的输出值作为变频器的速度给定值。过程变量与回路输出均为单极性模拟量,取值范围为0.0~1.0。

      本例采用PI控制器,给定值为0.75,选取控制器参数的初始值为:KC=0.25,TS=0.1s,TI=30min。编程如下:

https://主程序(OBI)

LD SM0.1 https://首次扫描时

CALL 0 https://调用初始化子程序

https://子程序

LD SM0.0

MOVR 0.75, VD104 https://装入给定值75%

MOVR 0.25, VD112 https://装入回路增益0.25

MOVR 0.10, VD116 https://装入采样时间0.1s

MOVR 30.0 VD120 https://装入积分时间30min

MOVR 0.0, VD124 https://关闭微分作用

MOVB 100, SMB34 

https://设置定时中断0的时间间隔为100ms

ATCH 0, 10 

https://设定定时中断以执行PID指令

ENI 

https://允许中断,子程序0结束

https://中断程序0

LD SM0.0

LTD AIW0, AC0 

https://单极性模拟量经A/D转换后存入累加器

DTR AC0, AC0 

https://32位整数转换为实数

/R 32000.0, AC0 

https://标准化累加器中的实数

MOVR AC0, VD100 https://存入回路表

LD 10.0

https://在自动方式下,执行PID指令

PID VB100, 0 

https://回路表的起始地址为VB100,回路号为0

LD SM0.0

MOVB VD108, AC0 

https://PID控制器的输出值送入累加器

*R 32000.0 AC0 

https://将累加器中的数值标准化

ROUND AC0, AC0 

https://实数转换为32位整数

DTI AC0, AQW0

https://将16位整数写入到模拟量输出(D/A)寄存器

5 结束语

      PLC实现PID控制的方法多种,直接应用PID指令来实现基于PLC的PID控制,是一种易于实现且经济实用的方法。

    1.差错控制方式

    差错控制是指对传输的数据信号进行检测错误和纠正错误。实际中常用的差错控制方式主要有以下4种:

    (1)自动检错重传(ARQ) 在这种方式中,发送端按编码规则对拟发送的信号码附加冗余码后,再发送出去。接收端对收到的信号序列进行差错检测,判决有无错码,并通过反馈信道把判决结果送回到发送端。若判决有错码,发送端就重新发送原来的数据,直到接收端认为无差错为止;若判决为无错码,发送端就可以继续传送下一个新的数据。

    (2)前向纠错(FEC) 在这种方式中,发送端按照一定的编码规则对拟发送的信号码元附加冗余码,构成纠错码。接收端将附加冗余码元按照一定的译码规则进行变换,检测信号中有无错码,若有错码,自动确定错码位置,并加以纠正。该方式物理实现简单,无需反馈信道,适用于实时通信系统,但译码器一般比较复杂。

    (3)混合纠错混合纠错方式是前向纠错与自动检错重传两种方式的综合,发送端发送具有检测和纠错能力的码元,接收端将通过反馈信道要求发送端重新发送该信息。混合纠错方式综合了ARQ和FEC两者的优点,却未能克服它们各自的缺点,因而在实际应用中受到了一定的限制。

(4)不用编码的差错控制不用编码的差错控制是指不需要对传输的信号码元进行信号编码,而在传输方法中附加冗余措施来减少传输中的差错。

 2.检错码

 常见的检错码有奇偶校验码和循环冗余校验( CRC)码等。由于奇偶校验码只需附加一位奇偶校验位进行编码,效率较高,因而得到了广泛的应用。

    奇偶校验码是以字符为单位的校验方法。一个字符一般是由8位组成,低7位是信息字符的ASCII,高位是奇偶校验位,该位可以是“0”也可以是“1”。其原则是:使整个编码中“1”的个数为奇数或偶数,若“1”的个数为奇数就称为奇校验,若“1”的个数为偶数就称为偶校验。

    奇偶校验的原理是:若采用奇校验,发送端发送一个字符码(含有校验码),则“1”的个数一定是奇数,在接收端对“1”的个数进行统计,如果统计的结果“1”的个数为偶数,那一定意味着在传输过程中发生了差错。显然,若发生了奇数个位差错,接收端都可以发现,但若发生了偶数个位差错,接收端将无法查出。


西门子PLC,西门子CPU,西门子代理商,西门子授权代理商,西门子一级代理商
浔之漫智控技术(上海)有限公司已认证
统一社会信用代码
91310117MA1J3R698D
成立日期
2018年04月08日
注册资本
500

主营产品

西门子模块代理商

经营范围

从事智能科技、自动化科技、机电领域内的技术开发、技术转让、技术咨询、技术服务,工业自动化设备安装,工业自动化控制设备、电气设备、机电设备、电子产品、五金产品、金属材料、仪器仪表、橡塑制品销售,商务信息咨询,软件开发,建筑装修装饰建设工程专业施工,建筑安装工程(除特种设备),机械设备租赁(不得从事金融租赁),物业管理。工业自动化设备加工、销售。【依法须经批准的

公司简介

浔之漫智控技术有限公司西门子代理。联系人:小聂(15221406036)浔之漫智控技术有限公司主要产品有“PLC,变频器,触摸屏,模块,传感器,低压器,伺服电机,工控机”。全新原装,质量保证,保修一年,价格合理,支持技术服务!SIEMENS 可编程控制器1、 SIMATIC S7 系列PLC:S7-200、S7-1200、S7-300、S7-400、ET-2002、 逻辑控制模块 LOGO!230RC、230RCO、230RCL、24R...

查看公司详情
电话/手机
15221406036
微信号
15221406036
QQ
3064686604
邮箱
3064686604@qq.com
经理
聂经理
地址
上海市松江区广富林路4855弄星月大业领地88号3楼
我们其他产品
我们的新闻
微信咨询
拨打电话