论文部分内容阅读
摘要:该文就单片机在卧龙湖煤矿司控道岔控制器中的应用进行了探讨,具有一定借鉴意义。
关键词:单片机 司控道岔控制器
1 问题现状
卧龙湖矿所使用的气动道岔全部采用日本三菱PLC进行控制,它是通过PLC外接继电器对各种负荷及指示灯进行控制,这是一种经典的控制方案,其优点显而易见,但缺点是体积大,资源浪费(PLC许多功能得不到有效利用),价格昂贵,维护费用太高。以下是采用单片机对道岔进行控制的电路制作过程和原理分析。
2 电路原理分析
I/O端口随意设置,使用更加方便灵活,下面是以该单片机为核心的控制模块原理图。
注:1.图中R1为1W功率电阻。其余未标明功率的电阻均为普通的1/4W碳膜电阻;2.二级管型号均为IN4007;3.光电耦合器TLP521-4为16脚塑料DIP封装;4.单片机STC12C5204AD为20脚塑料DIP封装;5.TIP122为NPN型达林顿管,采用T0-200封装形式,无需散热片,该管耐压100V,电流5A,可满足电路需要;6.C1,C2为小型电解电容,C3为普通瓷片电容;7.5V稳压块需加散热片,采用T0-200封装。
2.1 元件作用及原理分析
①光电耦合器TLP521-4
该元件共有4路输入输出端子,输入端分别接两路到位传感器和无线遥控触点、手动按钮,输出端接单片机输入端。
②单片机STC12C5204AD
由图中可以看出,单片机STC12C5204AD是整个控制电路的核心元件,由它来完成整个电路的控制功能,由于该单片机内置高稳定复位及振荡电路,只需给它提供5V电源即可正常工作,所以硬件电路特别简单。
③驱动元件TIP122
由于单片机最大输出电流仅为26mA,所以为了能使负载正常工作,在此用于驱动各路负载。
2.2 单片机程序编制及功能实现
①可手动控制或远距离无线遥控气动电磁阀吸合,道岔再右运行,3秒后电磁阀自动断电;
②外设到位传感器和到位指示,当输入端有到位信号时,其到位指示灯亮,当两端均无到位传感器信号时,红色警示灯0.5秒闪亮,提示维护人员检修。
//--------司控道岔控制器单片机控制模块C语言程序--------//
/*************************************************************
程序名:司控道岔控制模块程序
硬件支持:STC12C5204AD 内部RC时钟
功能说明:该司控道岔控制器可实现道岔的各种保护及手动、遥控控制功能,具有左、右到位及不到位红灯闪烁指示
/************************************************************/
#include//包含单片机头文件STC12C52.h
#define uint unsigned int//数据类型宏定義
#define uchar unsigned char
uchar a,b,c,d,e;//定义无符号字符型变量
//位变量定义
sbit red=P1^3;//红色警示灯
sbit lled=P1^5;//左到位指示灯
sbit rled=P1^1;//右到位指示灯
sbit lfa=P1^7;//左气动电磁阀
sbit rfa=P3^7;//右气动电磁阀
sbit lcg=P3^0;//左到位传感器
sbit rcg=P3^2;//右到位传感器
sbit yk=P3^5;//遥控信号输入
sbit sd=P3^4;//手动信号输入
/**********************************************************
函数名:毫秒级CPU延时函数
调 用:delay (?);
参 数:1~65535(参数不可为0)
返回值:无
结 果:占用CPU方式延时与参数数值相同的毫秒时间
/***********************************************************/
void delay(uint z) //延时子函数
{
uint i,j;
for(i=z;i>0;i--)
for(j=120;j>0;j--);
}
/*************************************************************
函数名:程序初始化设置
调 用:init();
参 数:无
返回值:无
结 果:I/O接口工作方式设置,中断方式及时间设置
/*************************************************************/
Void init()//初始化子函数
{
TMOD=EA=ET0=TR0=1;//中断初始化
TH0=0x3c;//赋值50ms
TL0=0xb0;
// I/O接口工作方式设置
P1M0=0x00;//0000 0000
P1M1=0xff;//1111 1111 P1端口均设为推挽输出状态
P1=0x00;//开机IO接口状态设置
P3=0xff;
}
/*************************************************************
函数名:定时器0中断程序
调 用:无
参 数:无
返回值:无
结 果:条件判断红灯闪、气动电磁阀闭合或断开
//***************************************************************/
void scankey()//传感器扫描子函数
{
if(lcg==0)//如果左传感器到位
lled=0;//左到位指示灯亮
else lled=1;//否则左到位指示灯灭
if(rcg==0)//如果右传感器到位
rled=0;//右到位指示灯亮
else rled=1;//否则右到位指示灯灭
if(lcg==1&&rcg==1)//如果左右传感器都不到位
c++;//红灯闪
else red=1,c=0;//只要有一个到位则红灯灭
}
/****************************************************************
函数名:遥控扫描函数
调 用:ykscan();
参 数:无
返回值:无
结 果:遥控开关气动电磁阀
/***************************************************************/
void main()//主程序函数
{
init();//程序初始化
while(1)//循环扫描
{
scankey();//传感器到位扫描
ykscan();//遥控信号扫描
}
}
3 安装调试
按接线图所示接上各控制连线,将程序下载至单片机中,可发现控制功能和原有PLC控制功能相同,原来红色警示灯是道岔不到位亮,这里程序设计为0.5秒闪亮,更能起到警示效果。经过长期使用,证明该单片机控制模块无论在抗干扰能力还是在控制功能上,完全可以和PLC相媲美,如果能在司控道岔控制器上广泛使用,每年节约的材料费用相当可观。
关键词:单片机 司控道岔控制器
1 问题现状
卧龙湖矿所使用的气动道岔全部采用日本三菱PLC进行控制,它是通过PLC外接继电器对各种负荷及指示灯进行控制,这是一种经典的控制方案,其优点显而易见,但缺点是体积大,资源浪费(PLC许多功能得不到有效利用),价格昂贵,维护费用太高。以下是采用单片机对道岔进行控制的电路制作过程和原理分析。
2 电路原理分析
I/O端口随意设置,使用更加方便灵活,下面是以该单片机为核心的控制模块原理图。
注:1.图中R1为1W功率电阻。其余未标明功率的电阻均为普通的1/4W碳膜电阻;2.二级管型号均为IN4007;3.光电耦合器TLP521-4为16脚塑料DIP封装;4.单片机STC12C5204AD为20脚塑料DIP封装;5.TIP122为NPN型达林顿管,采用T0-200封装形式,无需散热片,该管耐压100V,电流5A,可满足电路需要;6.C1,C2为小型电解电容,C3为普通瓷片电容;7.5V稳压块需加散热片,采用T0-200封装。
2.1 元件作用及原理分析
①光电耦合器TLP521-4
该元件共有4路输入输出端子,输入端分别接两路到位传感器和无线遥控触点、手动按钮,输出端接单片机输入端。
②单片机STC12C5204AD
由图中可以看出,单片机STC12C5204AD是整个控制电路的核心元件,由它来完成整个电路的控制功能,由于该单片机内置高稳定复位及振荡电路,只需给它提供5V电源即可正常工作,所以硬件电路特别简单。
③驱动元件TIP122
由于单片机最大输出电流仅为26mA,所以为了能使负载正常工作,在此用于驱动各路负载。
2.2 单片机程序编制及功能实现
①可手动控制或远距离无线遥控气动电磁阀吸合,道岔再右运行,3秒后电磁阀自动断电;
②外设到位传感器和到位指示,当输入端有到位信号时,其到位指示灯亮,当两端均无到位传感器信号时,红色警示灯0.5秒闪亮,提示维护人员检修。
//--------司控道岔控制器单片机控制模块C语言程序--------//
/*************************************************************
程序名:司控道岔控制模块程序
硬件支持:STC12C5204AD 内部RC时钟
功能说明:该司控道岔控制器可实现道岔的各种保护及手动、遥控控制功能,具有左、右到位及不到位红灯闪烁指示
/************************************************************/
#include
#define uint unsigned int//数据类型宏定義
#define uchar unsigned char
uchar a,b,c,d,e;//定义无符号字符型变量
//位变量定义
sbit red=P1^3;//红色警示灯
sbit lled=P1^5;//左到位指示灯
sbit rled=P1^1;//右到位指示灯
sbit lfa=P1^7;//左气动电磁阀
sbit rfa=P3^7;//右气动电磁阀
sbit lcg=P3^0;//左到位传感器
sbit rcg=P3^2;//右到位传感器
sbit yk=P3^5;//遥控信号输入
sbit sd=P3^4;//手动信号输入
/**********************************************************
函数名:毫秒级CPU延时函数
调 用:delay (?);
参 数:1~65535(参数不可为0)
返回值:无
结 果:占用CPU方式延时与参数数值相同的毫秒时间
/***********************************************************/
void delay(uint z) //延时子函数
{
uint i,j;
for(i=z;i>0;i--)
for(j=120;j>0;j--);
}
/*************************************************************
函数名:程序初始化设置
调 用:init();
参 数:无
返回值:无
结 果:I/O接口工作方式设置,中断方式及时间设置
/*************************************************************/
Void init()//初始化子函数
{
TMOD=EA=ET0=TR0=1;//中断初始化
TH0=0x3c;//赋值50ms
TL0=0xb0;
// I/O接口工作方式设置
P1M0=0x00;//0000 0000
P1M1=0xff;//1111 1111 P1端口均设为推挽输出状态
P1=0x00;//开机IO接口状态设置
P3=0xff;
}
/*************************************************************
函数名:定时器0中断程序
调 用:无
参 数:无
返回值:无
结 果:条件判断红灯闪、气动电磁阀闭合或断开
//***************************************************************/
void scankey()//传感器扫描子函数
{
if(lcg==0)//如果左传感器到位
lled=0;//左到位指示灯亮
else lled=1;//否则左到位指示灯灭
if(rcg==0)//如果右传感器到位
rled=0;//右到位指示灯亮
else rled=1;//否则右到位指示灯灭
if(lcg==1&&rcg==1)//如果左右传感器都不到位
c++;//红灯闪
else red=1,c=0;//只要有一个到位则红灯灭
}
/****************************************************************
函数名:遥控扫描函数
调 用:ykscan();
参 数:无
返回值:无
结 果:遥控开关气动电磁阀
/***************************************************************/
void main()//主程序函数
{
init();//程序初始化
while(1)//循环扫描
{
scankey();//传感器到位扫描
ykscan();//遥控信号扫描
}
}
3 安装调试
按接线图所示接上各控制连线,将程序下载至单片机中,可发现控制功能和原有PLC控制功能相同,原来红色警示灯是道岔不到位亮,这里程序设计为0.5秒闪亮,更能起到警示效果。经过长期使用,证明该单片机控制模块无论在抗干扰能力还是在控制功能上,完全可以和PLC相媲美,如果能在司控道岔控制器上广泛使用,每年节约的材料费用相当可观。