单片机在工业自动化控制上的应用.docx
《单片机在工业自动化控制上的应用.docx》由会员分享,可在线阅读,更多相关《单片机在工业自动化控制上的应用.docx(16页珍藏版)》请在冰豆网上搜索。
单片机在工业自动化控制上的应用
单片机在工业自动化控制中的直接应用
前言
在上个世纪80年代后期,传统的工业设备大量地进行技术改造或被新设备替代,设备的自动化水平不断提高。
这里面的主力核心是PLC(可编程控制器)。
进入21世纪,生产生活中设备控制精细化、智能化以及节能等方面要求越来越高。
MCU(微型控制器或称为单片机)崭露头角,其发展趋势不可限量。
本课题报告的是机电气一体化生产加工设备中上料环节的51单片机控制。
第一节控制流程
第二节单片机的驱动电路设计
第三节传感器的信号输入电路设计
第四节C51源程序
第一节
自动控制流程
第二节
Y
N
Y
Y
第三节单片机的驱动电路设计
第四节传感器的信号输入电路设计
(1)气缸上位和下位传感器采用SMCD-C73磁性开关
SMCD-C73
开关选择
SPST常开型
感应开关型式
有接点磁簧管型
使用电压
5~240VDC/AC
最大形状关电流
100毫安
最大接点容量
10W
内部消耗电流
无
残留压降
2.5V最大值@100mADC
泄露电流
无
指示灯
红色LED
电缆线
3.2∮,2C,米白色耐油PVC
最大开关切换频率
200HZ
保护回路
无
(2)检测物料传感器采用SUNX系列EX-43型号限定反射型光电传感器
EX-43电路接线:
3线传感器标准接法,棕正兰负黑输出。
(棕色线接+24V,兰色线接地,黑线送给单片机)
EX-43其主要特点:
1、体积只有W10×H14.5×D3.5mm(透过型,正面检测型),可安装在狭小空间内。
2、高速反应:
0.5ms适合检测细小部件和高速移动的物体。
3、清晰易见的双色指示灯,小型体积,并装备有方便的双色指示灯。
4、防水,其保护构造达到IP67,并且其金属配件用的全部是不锈钢,所以可以用水冲洗。
正
面
检
测
2~25mm(注)
(中心:
10mm)
EX-43
遮光时ON
第五节C51源程序
////////*******机电气一体化设备上料站51单片机自动控制程序*******/////////////////
#include
unsignedcharaa,bb,cc;
sbitgangxia=P3^1;//气缸下位检测传感器信号输入
sbitgangshang=P3^0;//气缸上位检测传感器信号输入
sbitguangdian=P3^4;//光电检料传感器信号输入
sbitdiancifa=P3^5;//电磁阀控制
sbitdianji=P3^6;//料盘电机控制
sbitbaojing=P3^7;//报警控制
sbitdd=P2^0;//紧急情况报警按键控制
//////////////////////////////////////////////////////
/////////*****延时子程序**********/////////////
voidyanshi(unsignedintz)
{
unsignedx,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
/////////////////////////////////////////////////////
//////////*******初始化子程序*********/////////
voidinit()
{
EA=1;EX0=1;EX1=1;aa=0;IT0=1;IT1=1;
}
///////////////////////////////////////////////////////////
///////////*******主程序*********//////////////
voidmain()
{
init();
while(!
aa);
while
(1)
{
if(aa==1&&gangxia==0)dianji=0;
else{dianji=1;diancifa=1;}
if(guangdian==0)
{
while
(1)
{
dianji=1;diancifa=0;if(gangshang==0)break;
}
}
else{yanshi(1000);diancifa=1;dianji=0;}
if(dd==0)baojing=0;
elsebaojing=1;
}
}
///////////////////////////////////////////////////////////
///////////*******启动按键外部中断服务子程序*********////////
voidqdong0()interrupt0
{
aa=1;EX0=0;EX1=1;
}
///////////////////////////////////////////////////////////
///////////*******停止按键外部中断服务子程序*********///
voidtngzhi0()interrupt2
{
aa=0;EX0=1;EX1=0;
}
////////*******机电气一体化设备上料站51单片机自动控制程序*********/////////////////
//////////*********带自动计件功能5位数码管动态显示************/////////////////////////////////
#include
#include
unsignedcharaa,bb,cc,duan,wan,qian,bai,shi,ge,i,num;
unsignedintgeshu;
bitkk,j,hh,tt;
sbitgangxia=P3^1;//气缸下位检测传感器信号输入
sbitgangshang=P3^0;//气缸上位检测传感器信号输入
sbitguangdian=P3^4;//光电检料传感器信号输入
sbitdiancifa=P3^5;//电磁阀控制
sbitdianji=P3^6;//料盘电机控制
sbitbaojing=P3^7;//报警控制
sbitbaojingjian=P2^0;//紧急情况报警按键控制
voidxianshi(unsignedintgeshu);
unsignedcharcodebiao[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
////////////////////////////////////////////////////
/////////*****延时子程序**********/////////////
voidyanshi(unsignedintz)
{
unsignedx,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
/////////////////////////////////////////////////////
//////////*******初始化子程序*********//////////
voidinit()
{
EX0=1;EX1=1;tt=0;IT0=1;IT1=1;
TMOD=0x06;TH0=255;TL0=255;
aa=0;geshu=0;
EA=1;ET0=1;
TR0=1;
}
////////////////////////////////////////////////////
///////////*********按键扫描子程序**********//
voidanjian()
{
if(baojingjian==0)
baojing=0;
elsebaojing=1;
}
//////////////////////////////////////////////////////////
////////////*******数据外理和显示**********////////
voidxianshi(unsignedintgeshu)
{
wan=geshu/10000;
qian=geshu%10000/1000;
bai=geshu%10000%1000/100;
shi=geshu%10000%1000%100/10;
ge=geshu%10000%1000%100%10;
yanshi
(1);
P0=0x01;P1=biao[ge];yanshi
(1);
P0=0x02;P1=biao[shi];yanshi
(1);
P0=0x04;P1=biao[bai];yanshi
(1);
P0=0x08;P1=biao[qian];yanshi
(1);
P0=0x10;P1=biao[wan];yanshi
(1);
}
//////////////////////////////////////////////////////////
////////////*******执行子程序**********////////
voidzhixing()
{
if(gangxia==0&&guangdian==1)dianji=0;
if(guangdian==0)
{
yanshi(3);
if(guangdian==0)
{
if(kk==1&&j==1&&hh==1){kk=0;j=0;hh=0;geshu++;}
kk=1;
while
(1)
{
dianji=1;diancifa=0;
if(gangshang==0)break;
xianshi(geshu);
anjian();
}
}
}
else
{j=1;
xianshi(geshu);
diancifa=1;dianji=0;
}
anjian();
}
///////////////////////////////////////////////////////////
///////////*******主程序*********//////////
voidmain()
{
init();
while
(1)
{
dianji=1;diancifa=1;
anjian();xianshi(geshu);
while(tt)
{
anjian();
xianshi(geshu);
zhixing();
}
}
}
///////////////////////////////////////////////////////////
///////////*******计数处理定时器中断服务子程序*********//////////
voidt00()interrupt1
{
hh=1;
}
///////////////////////////////////////////////////////////
///////////*******启动按键外部中断服务子程序*********//////////
voidqdong0()interrupt0
{
tt=1;EX0=0;EX1=1;
}
///////////////////////////////////////////////////////////
///////////*******停止按键外部中断服务子程序*********//////////
voidtngzhi0()interrupt2
{
tt=0;EX0=1;EX1=0;
}