主页 > 焦点科技 >代理之星_在PLC编程中如何实现PI算式 >

代理之星_在PLC编程中如何实现PI算式

在PLC编程中如何实现PI算式
指点谈不上,大家交下。
我是这样做的,在中感觉还行(一个用控机频率来实现加温结果恒定的系统):
第一步:先用被控对象目标测量值与设定值都除以量程,(相当于换成百分比了,程序里过程为LAD2,15-16行,F8:27—F8:31/850---F8:35,设定F8:77-F8:33/850—F8:37);
第二步:用换成百分比的设定值减测量值,(LAD3中第1行,F8:11存储),用相减的结果乘以I值(F8:73存储I值,积分系数);
第三步:再计算一个换成百分比的设定值减测量值,乘以0.1后乘以I值后除以P值,然后将此数值和主程序值相加(F8:15,初始切换到自动PID调节时此值为0,见LAD2第18行,自动后每个周期加一次此数),同时把结果也存储到F8:15中(如果调节目标的测量值和实际值之差小于0.2,则将F8:15赋值0,相当于不再累加LAD2第59行);
第四步:将第二步和第四步的值相减存储于F8:17中,并判断其是否大于1,大于1则赋值1;(F8:15和值系数也需要这样一个判读和赋值,不过基本上不可能)
第五步:将计算结果在主程序中(LAD2第20行)乘以输出幅度(输出为风机频率,最大50赫兹),然后在在上一周期输出值基础上累加(LAD2第61行)。
第六步:将上述计算结果换算成模块的输出信号值(先除以输出幅度,变换为百分比,标度变换系数12483)

上述内容自己看着都别扭,简单点讲就是将调节目标的实际值和设定值转换为百分比后取差,然后将差值的1/10×I÷P后再求差,结果累加到输出上去。P值越大,差值越大,I值越大,差值越小,每个扫描周期累加一次,直到实际值和设定值接近。
我用的PLC是AB的MicroLogix1200系列,不知道你能打开不?你看看相关单片机的PID算法的汇编语言的例程如果你能看懂用的话可以用PLC的指令语句移植过来!
在PLC编程中如何实现PI算式
指不上,大家交流一下。
我是这的,在实际应用中还行(一个用控制风机频实现加温结果恒定的系统):
第一步:先用被控对象目标测量值与设定值都除以量程,(相当于换成百分比了,程序里过程为LAD2,15-16行,F8:27—F8:31/850---F8:35,设定F8:77-F8:33/850—F8:37);
第二步:用换成百分比的设定值减测量值,(LAD3中第1行,F8:11存储),用相减的结果乘以I值(F8:73存储I值,积分系数);
第三步:再计算一个换成百分比的设定值减测量值,乘以0.1后乘以I值后除以P值,然后将此数值和主程序值相加(F8:15,初始切换到自动PID调节时此值为0,见LAD2第18行,自动后每个周期加一次此数),同时把结果也存储到F8:15中(如果调节目标的测量值和实际值之差小于0.2,则将F8:15赋值0,相当于不再累加LAD2第59行);
第四步:将第二步和第四步的值相减存储于F8:17中,并判断其是否大于1,大于1则赋值1;(F8:15和值系数也需要这样一个判读和赋值,不过基本上不可能)
第五步:将计算结果在主程序中(LAD2第20行)乘以输出幅度(输出为风机频率,最大50赫兹),然后在在上一周期输出值基础上累加(LAD2第61行)。
第六步:将上述计算结果换算成模块的输出信号值(先除以输出幅度,变换为百分比,标度变换系数12483)

上述内容自己看着都别扭,简单点讲就是将调节目标的实际值和设定值转换为百分比后取差,然后将差值的1/10×I÷P后再求差,结果累加到输出上去。P值越大,差值越大,I值越大,差值越小,每个扫描周期累加一次,直到实际值和设定值接近。
我用的PLC是AB的MicroLogix1200系列,不知道你能打开不?你看看相关单片机的PID算法的汇编语言的例程如果你能看懂用的话可以用PLC的指令语句移植过来!
PLC简单 编程 双通道
用一个计数器,计数c0 4,用比较指令,c0=1时,c0=2 c0=3 c0=4时,四种状态,用四个中间继电器,我要知道你PLC是什么牌子的啊因你没说用什么厂牌的PLC,所使用三菱FX2N,X0关,Y0为1号灯,Y1为2号灯

程序:
LD X0
OUT C0 K4
LD= C0 K1
MOV K3 K1Y0
LD= C0 K2
MOV K1 K1Y0
LD= C0 K3
MOV K2 K1Y0
LD= C0 K4
MOV K0 K1Y0
RST C0
END兄弟,我以西门子S7-200的程Q0.0为1号灯,Q0.1为2号灯,你拿己转换为欧姆龙的吧!
LDI0.0每按一次,VB100自动加一
INCBVB100
LDB=VB100, 1按第Q0.0亮
OB=VB100, 2按第二次Q0.0亮
ANM0.0M0.0为1,把Q0.0置0,即1号灯不亮
=Q0.0
LDB=VB100, 1按第一次Q0.1亮
OB=VB100, 3按第三次Q0.1亮
ANM0.0M0.0为1,把Q0.1置0,即2号灯不亮
=Q0.1
LDB=VB100, 4按第四次M0.0为1,并把VB100置为0
=M0.0
LDM0.0
MOVB0, VB100这个很简单的,没必要有日本PLC的,国产的也很好用,而且价格便宜很简单,怎么给你?
PLC编程问题
帮你记指令,"mov"是英move “bbyte “w”是word。
movb 222,vb100 的意思就是把十进制数222VB100这个字节中。执行后VB100对应的存储空间,存储的是二进制的11011110(数字量系统以二进制形式存储,看过骇客帝国吧)
movw 222,vw200 把十进制数222放到VW200这个中,执行完毕后VB200存储二进制00000000,VB201存储11011110(如果是西门子的话,高位在前存储)
一字节8个二进制位,word 16个二进制位…… 根据你数值的大小,看看用二进制表达得占用多少个位,比如0~255的数值字节就能放下,用word存储也没有问题。256以上用字节存储就放不下了。PLC初学者梯形图编程原
初学PLC梯形图编程,遵循一定的规则,并养成良好的习惯。下面以三菱FXPLC为例,简单介绍一下PLC梯形图编程时需要遵循则,希望对大家有所帮助。有一点需要说明的是,本文虽以三菱PLC为例,但这些规则在其它PLC编程时也可同样遵守。
一,梯形阶梯都是始于左母线,终于右母线(通常可以省掉不画,仅画左母线)。每行的左边是接点组合,表示驱动逻辑线圈的条件,而表示结果的逻辑线圈只能接在右边的母线上。接点不能出现在线圈右边。如下图(a)应改为(b):

二,接点应画在水平线上,不应画在垂直线上,如下图(a)中的接点X005与其它接点间的关系不能识别。对此类桥式电路,应按从左到右,从上到下的单向性原则,单独画出所有的去路。如图(b)所示:

三,并联块串联时,应将接点多的去路放在梯形图左方(左重右轻原则);串联块并联时,应将接点多的并联去路放在梯形图的上方(上重下轻的原则)。这样做,程序简洁,从而减少指令的扫描时间,这对于一些大型的程序尤为重要。如下图所示:

四,不宜使用双线圈输出。若在同一梯形图中,同一组件的线圈使用两次或两次以上,则称为双线圈输出或线圈的重复利用。双线圈输出一般梯形图初学者容易犯的毛病之一。在双线圈输出时,只有最后一次的线圈才有效,而前面的线圈是无效的。这是由PLC的扫描特性所决定的。
PLC的CPU采用循环扫描的工作方式。一般包括五个阶段(如图所示):内部诊断与处理,与外设进行通讯,输入采样,用户程序执行和输出刷新。当方式开关处于STOP时,只执行前两个阶段:内部诊断与处理,与外设进行通讯。

1,输入采样阶段
PLC顺序读取每个输入端的状态,并将其存入到我们称之为输入映像寄存器的内在单元中。当进入程序执行阶段,如输入端状态发生改变.输入映象区相应的单元信息并不会跟着改变,只有在下一个扫描周期的输入采样阶段,输入映象区相应的单元信息才会改变。因此,PLC会忽视掉小于扫描周期的输入端的开关量的脉冲变化。
2,程序执行阶段
PLC从程序0步开始,按先上后下,先左后右的顺序扫描用户程序并进行逻辑运算。PLC按输入映象区的内容进行逻辑运算,并把运算结果写入到输出映象区,而不是直接输出到端子。
3,输出刷新阶段
PLC根据输出映象区的内容改变输出端子的状态。这才是PLC的实际输出。
以上简单说明了PLC的工作原理,下面我们再以实例说明为什么编写梯形图程序,不宜重复使用线圈。如下图所示,设输入采样时,输入映象区中X001=ON,X002=OFF,Y003-ON,Y004=ON被实际写入到输出映象区。但继续往下执行时,因X002=OFF,使Y003=OFF,这个后入为的结果又被写入输出映象区,改变原Y003的状态。所以在输出刷新阶段,实际外部输出Y003=OFF,Y004=ON。许多新手就碰到过这样的问题,为什么X001已经闭合了,而Y003没有输出呢?逻辑关系不对。其实就是因为双线圈使用造成的。
[url=] [/url]
注意:我们所说的是不宜(最好不要)使用双线圈,双线圈使用并不是绝对禁止的,在一些特殊的场合也可以使用双线圈,这时就需要你有较丰富的编程经验和技巧了。下面我们会谈到这一点。但对于初学者还是不要冒这个险。其实,从以上的例子可以看出,重复利用线圈之所以会造成Y003的输出混乱,是由于程序是从上到下顺序执行的缘故造成的。但如果我们可以改变程序执行的顺序,保证在任何时刻两个线圈只有一个驱动逻辑发生,就可以使用双线圈。其中,最常用的方法就是使用跳转指令。如下图所示:
[url=] [/url]
程序分析:M0闭合,程序跳至P0处(不执行X001语句),M0常闭断开,CJP1不会发生,执行下一语句。此时,Y003将X002状态进行驱动。M0断开时,程序顺序执行并按X001的状态对T003进行驱动,M0常闭闭合,跳至P1按X003状态对Y004进行驱动,即跳过了X002驱动Y003的语句。可见,在同一时刻,Y003驱动只有一个可以发生。此时,双线圈利用是可以的。
但在梯形图编程时,我们还是要尽量避免使用双线圈,而引入辅助继电器是一个常用的方法。如下图所示:

图(b)中,X001和X002接点控制辅助继电器M000,X003~X005接点控制辅助继电器M001,再由两个继电器M000,M001接点的并联组合去控制线圈Y000。这样逻辑关系没变,却把双线圈变成单线圈。

误区一:

认为学习PLC是必须要很高的学历

这个想法是错误的,其实只需要初中毕业的学历就可以(为什么要初中,因为初中以上才有物理这门学科,我们做电的,物理还是

必须要懂一些的)!

PLC的起源,就是从我们电工的基础之上发展起来的,PLC本来就是给我们电工人员使用的,不是给高科技分子使用的,这点我们要

有绝对的自信,PLC里面的梯形图,和我们的继电器电路是一模一样的!

误区二:

认为想要成为自动化工程师,就必须要记住很多很多的 编程指令

要清楚,全世界有多少个品牌的PLC? 指令,我们是记不完的,但是一定要记住,PLC能做什么功能,一般应该怎么样去实现!

而差不多各大品牌的功能(指令)大同小异,

而我们需要做的就是:

1)找到它的用法,这个手册上有,一般我们买PLC时,都可以要求供应商给你提供一本或电子版的。

2)然后用相应的功能(指令)达到我们需要的控制功能。往往实现同样的功能,可以使用不同的方法或指令都可以实现

误区三:

要想成为一个优秀的自动化工程师就要会很多很多的品牌的PLC,包括记住它们的指令

当然,记住了要比不记住要强

最重要的是要掌握一种系统的解决办法,剩下的就是查看相应的手册,找出相应的功能,及其编程的方式,然后按照控制的思路一

步一步地往PLC里编写程序

注意:编程方法远远要比记住指令重要千万倍!!

-----------------------------------------------------------------------------------------------------华丽分割线

下面说下我的一些个人体会,希望对初学者有些帮助,高手就见笑了。

1、PLC里面的逻辑控制就是两个关键字 开 和 关(也就是0和1)

2、而我们需要做的是往里面写一个程序,让PLC的输出根据我们的条件(输入信号,或时间等)需要,相应地输出

3、在学习的过程中,先不要急着去了解那些什么所谓的高级指令,而我们需要做的是编程的思路,最好做到得心应用地应用三个东

,1)常开 2)常闭 3)线圈。要知道,我们程序里的80%用的全是这些东西

4、在尽可能的情况下,掌握PLC的寄存器的概念及其扫描过程及扫描周期,可能有一些人会说,这有什么难的,不就是由上往下,

由左往右扫描吗?如果这么认为的,那就大错特错,我们需要了解到PLC执行到每一个节点的,各个寄存器的状态。222就是一个数据,不同德传送方式导致了VB100 VW200中的数据格式不一样,值还是一样的。最后一个问题,这个要看使用的数据范围,字节0-255(2的八次方减1)或-128-127 以此类推第一个问题,传的是一个字。就是AIW0或别的路径到PLC的寄存器里就行。
第问题,MOVB 222 vb100,传完的结果是,VB100里是222,而MOVW 222 VW200传完的结果是,VB201里是222,VB200里是0。VW200是16位的寄存器,它包括VB200和VB201,VB200是高位。
第三个问题,没发给你说清楚。那得根据程序的需要。建议你多看看书。1。一般是-32767-32767就是字。
2。PLC每家的指令不尽相同。你传什么进去,里面就是存了什么。
3.222是字还是字节与你无关,与你有关的是目标变量是字还是字节。
4。


上一篇: 下一篇: