PLC工作原理与I/O滞后分析

需积分: 13 1 下载量 121 浏览量 更新于2024-08-24 收藏 1.48MB PPT 举报
"理解PLC的I/O滞后现象及其原因,以及PLC的基本概念、硬件组成、软件系统、工作原理和历史发展" PLC(可编程逻辑控制器)是一种专门设计用于工业环境中的数字运算操作电子系统,它能执行逻辑运算、顺序控制、定时、计数和算术运算等功能,并通过数字或模拟输入/输出来控制各种机械和生产过程。根据国际电工委员会(IEC)的定义,PLC具有可编程的存储器,可以存储并执行指令,且具备与其他工业控制系统集成和扩展的能力。 PLC的产生源于20世纪60年代,当时汽车制造业对生产线灵活性和可靠性的需求日益增加。传统的继电接触器控制系统难以适应频繁的工艺变更,于是美国通用汽车公司提出了"GM十条",推动了PLC的发展。PLC的出现克服了继电器系统的局限,提供了更便捷的编程、更高的可靠性和更小的体积。 PLC的工作原理基于循环扫描机制。在每个扫描周期中,它会分阶段进行输入处理、程序执行和输出刷新。这种工作方式导致了一个名为I/O滞后的问题:输入信号在被PLC读取后,可能需要等待整个扫描周期才能在输出端反映出来,尤其当输入滤波器存在时,滤波器的时间常数越大,输入信号的延迟越显著。某些PLC允许用户调整输入滤波器的时间常数以适应不同的应用需求。 PLC的硬件通常包括中央处理器(CPU)、内存、电源、输入/输出模块、编程设备和通信接口等部分。硬件的设计使其能在恶劣的工业环境中稳定工作。软件系统则由系统软件和用户程序组成,系统软件负责管理PLC的运行,用户程序则是用户根据实际需求编写的控制逻辑。 PLC的主要性能指标包括处理速度、输入/输出点数、内存容量、通信能力等。根据功能和规模,PLC可以分为微型、小型、中型和大型等多种类型,以满足不同行业的控制需求。 了解PLC的工作原理和I/O滞后现象对于有效设计和优化工业自动化系统至关重要。通过合理配置PLC硬件,如选择适当的输入滤波器时间常数,以及编写高效的用户程序,可以最大限度地减少I/O滞后,提高系统的响应速度和控制精度。

clear all; close all; clc; Ia=imread('/Users/aa/Desktop/截屏2023-05-31 16.55.11.png'); I=rgb2gray(Ia); [m n]=size(I); I=double(I); w=fspecial('gaussian',[5 5]);%%高斯滤波 I=imfilter(I,w,'replicate'); imshow(uint8(I))%%sobel边缘检测 w=fspecial('sobel'); Iw=imfilter(I,w,'replicate');%求横边缘 w=w'; Ih=imfilter(I,w,'replicate');%求竖边缘 I=sqrt(Iw.^2+Ih.^2);%平方和在开方。 imshow(uint8(I))%%下面是非极大抑制 new_edge=zeros(m,n); for i=2:m-1%避开边缘像素值检测 for j=2:n-1 Mx=Iw(i,j); My=Ih(i,j); if My~=0 o=atan(Mx/My); %边缘的法线弧度 elseif My==0 && Mx>0 o=pi/2; else o=-pi/2; end %Mx处用My和img进行插值 adds=get_coords(o); %边缘像素法线一侧求得的两点坐标,插值需要 M1=My*I(i+adds(2),j+adds(1))+(Mx-My)*I(i+adds(4),j+adds(3)); %插值后得到的像素,用此像素和当前像素比较 adds=get_coords(o+pi); %边缘法线另一侧求得的两点坐标,插值需要 M2=My*I(i+adds(2),j+adds(1))+(Mx-My)*I(i+adds(4),j+adds(3)); %另一侧插值得到的像素,同样和当前像素比较 isbigger=(Mx*I(i,j)>M1)*(Mx*I(i,j)>=M2)+(Mx*I(i,j)<M1)*(Mx*I(i,j)<=M2); %如果当前点比两边点都大置1 if isbigger new_edge(i,j)=I(i,j); end end end imshow(uint8(new_edge)) %%下面是滞后阈值处理 up=120; %上阈值 low=100; %下阈值 set(0,'RecursionLimit',10000); %设置最大递归深度 for i=1:m for j=1:n if new_edge(i,j)>up &&new_edge(i,j)~=255 %判断上阈值 new_edge(i,j)=255; new_edge=connect(new_edge,i,j,low); end end end imshow(new_edge==255)

2023-06-01 上传