一、电动机顺序启动、顺序停止控制(I/O分配表、PLC接线图、梯形图程序)
二、电动机的顺序启动、同时停止(I/O分配表、PLC接线图、梯形图程序)
三、电动机的顺序启动、逆序停止(I/O分配表、PLC接线图、梯形图程序)
四、电动机延时启动、停止控制(I/O分配表、PLC接线图、梯形图程序)
五、笼型感应电动机定子绕组从串电阻降压启动控制系统(I/O分配表、PLC接线图、梯形图程序)
六、三相绕线感应电动机转子绕组串电阻降压启动控制系统(I/O分配表、PLC接线图、梯形图程序)
七、Y-△降压启动控制系统(I/O分配表、PLC接线图、梯形图程序)
Y-△降压启动控制(1)
Y-△降压启动控制(2)
八、自耦变压器降压启动控制系统(I/O分配表、PLC接线图、梯形图程序)
中断控制程序:
#include <AT89X52H>
#define uchar unsigned char
#define uint unsigned int
#define port_count P2 //P2接8LED接口
//将计数器的二进制值用8个LED显示出来
uchar count;//计数器(存储中断次数)
void main(void)
{
count=0; //清零计数器
port_count=~count;//清零P2口
IT0=1; //INT0设为边沿触发方式�IT0=0则为电平触发方式
EX0=1; //开INT0中断
EA=1; //开系统中断
while(1); //等待中断处理
}
//INT0中断处理函数
void int0_interrupt() interrupt 0 //INT0中断号0
{
count++;
port_count=~count; //当达到255时,溢出,又从0开始
}
I/O控制程序:
#include <AT89X52H>
#include <intrinsh>
#define uchar unsigned char
#define uint unsigned int
#define flowlight P2
void delay10ms()
{uchar a,b;
for(a=200;a>0;a--)
for(b=225;b>0;b--);
}
void main()
{
uchar flag=0;//判断移动方向 flag==0 左移 flag==1 右移
uchar port_state=0x01;
flowlight=~port_state;
while(1)
{
delay10ms();
if(port_state==0X80&&flag==0)
{
flag=1; //流水灯左移到第八位又移回来 ~1000 0000
}
else
if(port_state==0X01&&flag==1)
{
flag=0; //流水灯右移到第1位又移回来 ~0000 0001
}
if(flag==0)
{
port_state=port_state<<1;
flowlight=~port_state;
}
else
{
port_state=port_state>>1;
flowlight=~port_state;
}
}
串口通信程序:
主机程序:
#include <AT89X52H>
#define NODE_ADDR 3 //目的节点地址
#define COUNT 10 //发送缓冲区buffer大小
typedef unsigned char uchar;
uchar buffer[COUNT]; //定义buffer
int pt; //设置指针
main()//////////////////////////////////////////发送程序
{
//buffer初始化
pt=0;
while(pt<COUNT)
{
buffer[pt]='1'+pt; //[buffer]=0X31,[buffer+1]= 0X32,[buffer+2] 0X33
pt++;
}
////初始化串口和T1(波特率发生器)/////////PCON缺省为0
PCON=0X00;
SCON=0Xc0; //SCON=1100 0000B,置串口为方式3, SM2=0,REN=0,主机不接收地址帧
TMOD=0X20; //20H=0010 0000B,置T1为方式2,TR1控制T1的开关,定时器方式
TH1=253;TL1=253; //方式2为自动重装///f(bps)=9600bps (f(osc)=110592MHZ)
TR1=1; //启动T1
ET1=0; //关T1中断 由于自动重装
ES=1; //开串口中断
EA=1; //开系统中断
pt=0;
///////////////发送地址帧
TB8=1; //地址帧标志
SBUF=NODE_ADDR; //发送目的节点地址
while(pt<COUNT); //等待发送完全部数据
while(1);//不执行任何 *** 作
} //end main
/////发送完中断函数
void send()interrupt 4
{
TI=0; //清发送中断标志
if(pt<COUNT)
{
//发送一帧数据
TB8=0;//数据帧标志
SBUF=buffer[pt]; //启动发送
pt++;//指针指向下一单元
}
else
{
ES=0; //关串口中断
EA=0; //关系统中断
return; //若发送完则停止发送并返回
}
}
接收程序:
#include<reg52h>
#define uchar unsigned char
#define NODE_ADDR 3 //本机节点地址
#define COUNT 10 //定义接收缓冲区buffer大小
uchar buffer[COUNT]; //定义buffer
int pt; //当前位置指针
void send_char_com(unsigned char ch); //向串口发送一个字符的函数声明
void delay(void);
main() ////////////////串行异步从机接收程序
{
PCON=0X00; //初始化串口和T1(波特率发生器)/////////PCON缺省为0
SCON=0XF0; //SCON=1111 0000B,方式3,SM2=1,REN=1,允许接收地址帧
TMOD=0X20; //20H=0010 0000B,置T1为方式2,TR1控制T1的开关,定时器方式
TH1=253;TL1=253; //方式2为自动重装///f(bps)=9600bps (f(osc)=110592MHZ)
TR1=1; //启动T1
ET1=0; //关T1中断 由于自动重装
ES=1; //开串口中断
EA=1; //开系统中断
pt=0;
while(pt<COUNT); //等待接收地址帧和全部数据帧
delay() ;
//接收完后返回数据
SCON=0XC0; //SCON=1100 0000B,置串口为方式3, SM2=0,REN=0,主机不接收地址帧
EA=0;
for(pt=0;pt<COUNT;pt++)
{
send_char_com(buffer[pt]);
}
while(1);
} //end main
///////////串口接收中断函数
void receive()interrupt 4 using 3
{
RI=0; //清除接收中断标志
if(RB8==1) //地址帧
{//若为本机地址,则置SM2=0,以便接收数据
if(SBUF==NODE_ADDR)
{
SM2=0;
}
}
/////RB8=0,数据帧
else if(RB8==0)
{buffer[pt]=SBUF; //数据帧送buffer
pt++;
if(pt>=COUNT)
SM2=1; //若接收完全部数据帧,则通信结束;置SM2=1,准备下一次通信
}
}
//向串口发送一个字符
void send_char_com(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
///////////////////////////////////////////////////////////////////////////////////
void delay(void)
{uchar i=100;
while(i--);
}
#include <stdlibh>
#include "global_varibleh"
/
模块名: PID
描述: PID调节子程序
采用PID-PD算法。在偏差绝对值大于△e时,用PD算法,以改善动态品质。
当偏差绝对值小于△e时,用PID算法,提高稳定精度。
PIDout=kpe(t)+ki[e(t)+e(t-1)++e(1)]+kd[e(t)-e(t-1)]
============================================================================
入口: 无
出口: 无
改变: PID_T_Run=加热时间控制
/
void PID_Math(void)
{
signed long ee1; //偏差一阶
//signed long ee2; //偏差二阶
signed long d_out; //积分输出
if(!Flag_PID_T_OK)
return;
Flag_PID_T_OK=0;
Temp_Set=3700; //温度控制设定值3700度
PID_e0 = Temp_Set-Temp_Now; //本次偏差
ee1 = PID_e0-PID_e1; //计算一阶偏差
//ee2 = PID_e0-2PID_e1+PID_e2; //计算二阶偏差
if(ee1 > 500) //一阶偏差的限制范围
ee1 = 500;
if(ee1 < -500)
ee1 = -500;
PID_e_SUM += PID_e0; //偏差之和
if(PID_e_SUM > 200) //积分最多累计的温差
PID_e_SUM = 200;
if(PID_e_SUM < -200)
PID_e_SUM = -200;
PID_Out = PID_kpPID_e0+PID_kdee1; //计算PID比例和微分输出
if(abs(PID_e0) < 200) //如果温度相差小于15度则计入PID积分输出
{
if(abs(PID_e0) > 100) //如果温度相差大于1度时积分累计限制
{
if(PID_e_SUM > 100)
PID_e_SUM = 100;
if(PID_e_SUM < -100)
PID_e_SUM = -100;
}
d_out = PID_kiPID_e_SUM; //积分输出
if(PID_e0 < -5) //当前温度高于设定温度05度时积分累计限制
{
if(PID_e_SUM > 150)
PID_e_SUM = 150;
if(PID_e_SUM > 0) //当前温度高于设定温度05度时削弱积分正输出
d_out >>= 1;
}
PID_Out += d_out; //PID比例,积分和微分输出
}
else
PID_e_SUM=0;
PID_Out/=100; //恢复被PID_Out系数放大的倍数
if(PID_Out > 200)
PID_Out=200;
if(PID_Out<0)
PID_Out=0;
if(PID_e0 > 300) //当前温度比设定温度低3度则全速加热
PID_Out=200;
if(PID_e0 < -20) //当前温度高于设定温度02度则关闭加热
PID_Out=0;
Hot_T_Run=PID_Out; //加热时间控制输出
PID_e2 = PID_e1; //保存上次偏差
PID_e1 = PID_e0; //保存当前偏差
}
////////////////////////////////////////////////////////////void PID_Math() end
Python程序开发之简单小程序实例
(11)小 游戏 -跳动的小球
一、项目功能
用户控制挡板来阻挡跳动的小球。
二、项目分析
根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。
三、程序源代码
源码部分截图:
源码:
#!/usr/bin/python36
# -- coding: GBK --
#导入相应模块
from tkinter import
import random
import time
#自定义小球的类 Ball
class Ball:
# 初始化
def __init__(self,canvas,paddle,color):
#传递画布值
selfcanvas=canvas
#传递挡板值
selfpaddle=paddle
#画圆并且保存其ID
selfid=canvascreate_oval(10,10,25,25,fill=color)
selfcanvasmove(selfid,245,100)
#小球的水平位置起始列表
start=[-3,-2,-1,1,2,3]
#随机化位置列表
randomshuffle(start)
selfx=start[0]
selfy=-2
selfcanvas_heigh=selfcanvaswinfo_height()#获取窗口高度并保存
selfcanvas_width=selfcanvaswinfo_width()
#根据参数值绘制小球
def draw(self):
selfcanvasmove(selfid,selfx,selfy)
pos=selfcanvascoords(selfid)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标)
#使得小球不会超出窗口
pad=selfcanvascoords(selfpaddleid)#获取小球挡板的坐标
if pos[1]=selfcanvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]
1程序设计
大家在做程序设计的时候要根据系统的控制要求,采用合适的设计方法来设计三菱PLC程序。程序要以满足系统控制要求为主线,逐一编写实现各控制功能或各任务的程序,逐步完善系统指定的功能。除此之外,程序通常还应包括以下内容:
1)初始化程序。在三菱PLC上电后,一般都要做一些初始化的 *** 作,为启动作必要的准备,避免系统发生误动作。初始化程序的主要内容有:对某些数据区、计数器等进行清零,对某些数据区所需数据进行恢复,对某些继电器进行置位或复位,对某些初始状态进行显示等等。
2)检测、故障诊断和显示等程序。这些程序相对独立,一般在程序设计基本完成时再添加。
3)保护和连锁程序。保护和连锁是程序中不可缺少的部分,必须认真加以考虑。它可以避免由于非法 *** 作而引起的控制逻辑混乱。
2 程序模拟调试
程序模拟调试是以方便的形式模拟产生现场实际状态,为程序的运行创造必要的环境条件。模拟调试有硬件模拟法和软件模拟法两种形式。
1)硬件模拟法是使用一些硬件设备模拟产生现场的信号,并将这些信号以硬接线的方式连到PLC系统的输入端,其时效性较强。
2)软件模拟法是在三菱PLC中另外编写一套模拟程序,模拟提供现场信号,其简单易行,但时效性不易保证。模拟调试过程中,可采用分段调试的方法,并利用编程器的监控功能。
西门子模拟量模块控制温度的程序实例:
一、控制要求
将被控系统的温度控制在某一范围之间,当温度低于下限或高于上限时,应能自动进行调整,如果调整一定时间后仍不能脱离不正常状态,则采用声光报警,来提醒 *** 作人员注意,排除故障。
系统设置一个启动按钮来启动控制程序,设置绿、红、黄三台指示灯来指示温度状态。当被控系统的温度在要求范围内,则绿灯亮,表示系统运行正常;当被控系统的温度超过上限或低于下限时,经调整且在设定时间内仍不能回到正常范围,则红灯或黄灯亮,并伴有声音报警,表示温度超过上限或低于下限。
该系统充分利用电气智能平台现有设备,引入PLC和变频器于系统中,将硬件模拟和软件仿真有机结合,有效的运用了平台资源。本文通过对该系统的阐述,详细介绍了PLC和变频器在模拟量信号监控中的运用。
二、控制系统原理及框图
该系统共涉及四大部分,包括温度传感器、变送器、PLC温度监控系统和外部温度调节设备。首先,选取监控对象,在其内部(比如孵坊)选取四个采样点,利用四个温度传感器分别采集这四点温度后;通过变送器将采集到的四点温度的采样值转换为模拟量电压信号,从而得到四个采样点所对应的电压值,输入到PLC的四个模拟量输入端口;PLC温度监控系统将这四点温度读入后,取其平均值,作为被控系统的实际温度值,将其与预先设定的正常温度范围上下限相比较,得出系统所处状态,并向外部温度调节设备输出模拟量控制信号;外部温度调节设备根据输出的模拟量的大小来调节温度的上升与下降或保持恒温状态。
以0~10V来对应温度0~100℃,设置40~60℃为系统的正常温度范围,对应的模拟量电压为4~6V,也即40℃(4V)为下限,60℃(6V)为上限,调节时间设定为20S。
其中,50℃(5V)为我们的温度(电压)基准值。这样,我们就将PLC温度控制系统对温度的监测与控制转变成了PLC对模拟量电压的输入与输出的控制。当被控系统的实际温度低于设定的下限(40℃)时,PLC温度监控系统经过比较运算后,通过其模拟量输出端口向外部温度调节设备输出5-10V的电压,而且输出的电压会根据被控系统实际温度值的降低而升高,从而改变外部温度调节设备,调节温度的幅度。同理,当被控系统的实际温度高于设定的上限(60℃)时,PLC温度监控系统经过比较运算后,通过其模拟量输出端口向外部温度调节设备输出0~5V的电压,而且输出的电压会根据被控系统实际温度值的升高而降低,从而改变外部温度调节设备,调节温度的幅度。而当被控系统的实际温度处于设定的温度正常范围(40—60℃)时,PLC温度监控系统经过比较后,通过其模拟量输出端口向外部温度调节设备输出5V恒定的电压,即输出电压的调节基准量,使温度调节设备保持恒温状态。
计算机过程控制系统,是指由被控对象、测量变送装置、计算机和执行装置组成,以实现生产过程闭环控制为目的的系统。将计算机用于过程控制系统,就称之为计算机过程控制系统。计算机过程控制系统的最基本特征是一个实时系统,计算机过程控制系统由硬件和软件两大部分组成。
1、硬件组成
计算机过程控制系统的硬件一般由被控制对象(生产过程)、过程通道、计算机、人机联系设备,控制 *** 作台等几部分组成。
2、软件组成
计算机控制装置配置了必要的软件,才能针对生产过程的运行状态,按照人的思维和知识进行自动控制,完成预定控制功能。计算机控制装置的软件通常分为两大类:系统软件和应用软件。
计算机过程控制系统能够完成数据采集与处理、顺序控制与数值控制、直接数字控制与监督控制、最优控制与自适应控制、生产管理与经营调度等任务,它的出现不仅给企业带来巨大的经济效益和社会效益,而且给工业生产带来革命性的变化。
扩展资料:
计算机过程控制系统的分类:
(1)数据处理系统(DAS),对生产过程参数作巡检、分析、记录和报警处理。
(2) *** 作指导控制系统(OGC),计算机的输出不直接用来控制生产过程,而只是对过程参数进行收集,加工处理后输出数据, *** 作人员据此进行必要的 *** 作。
(3)直接数字控制系统(DDC),计算机从过程输入通道获取数据,运算处理后,再从输出通道输出控制信号,驱动执行机构。
(4)监督控制系统(SCC),计算机根据生产过程参数和对象的数字模型给出最佳工艺参数,据此对系统进行控制。
(5)多级控制系统,企业经营管理和生产过程控制分别由几级计算机进行控制,一般是三级系统,即经营管理级(MIS)、监督控制级(SCC)和直接数字控制级(DDC)。
(6)集散控制系统(DCS),以微处理器为核心,实现地理和功能上的分散控制,同时通过高速数据通道将分散的信息集中起来,实现复杂的控制和管理。
(7)监控与数据采集系统(SCADA),SCADA是以计算机、控制、通讯与CRT技术为基础的一种综合自动化系统,更适用于/点多、面广、线长0的生产过程。由于控制中心和监控点的分散而自然形成了两层控制结构。
(8)现场总线控制系统(FCS),是新一代分布式控制系统,与DCS的三层结构不同,其结构模式为/工作站)现场总线智能仪表0两层结构,降低了总成本,提高了可靠性,系统更加开放,功能更加强大。在统一的国际标准下,可实现真正的开放式互连系统结构。
(9)计算机集成过程控制系统(CIPS),利用DCS作基础,开发高级控制策略,实现各层次的优化,利用管理信息系统MIS进行辅助管理和决策,将企业中有关过程控制、计划调度、经营管理、市场销售等信息进行集成,经科学加工后,为各级领导、管理及生产部门提供决策依据,实现控制、管理的一体化。
参考资料:
以上就是关于西门子PLC编程接线图详解及梯形图程序实例全部的内容,包括:西门子PLC编程接线图详解及梯形图程序实例、大家帮忙找一些51单片机的基本C语言程序例子,最好带说明,谢啦、求一个单片机C语言编写的PID控制程序。谢谢!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)