版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PLC串口及红外控制装置设计 2008-10-29 15:19:59 【文章字体:大 中 小】 推荐 收藏 打印 摘要:随着自动化技术的不断发展,作为工业控制的核心设备PLC这几年得到了快速发展和广泛运用。PLC的接口也各种各样,而多数PLC都具有RS232接口,一般连接一些触摸屏,作为人机接口。本文主要介绍一款基于新华龙单片机开发的RS232接口装置,可以连接PLC作为人机界面,该装置还配有红外接收功能,可实现一定距离无线遥控PLC。 关键词:新华龙单片机,人机接口,红外遥控 Abstract : With the development of automation te
2、chnology Keywords: NewDragon microprocessor, Human machine interface, infrared remote control 1 引言 HMI、SCADA作为PLC的主要人机接口设备,具有外观简洁,可靠性高,功能强大,用户界面友好,程序二次开发简单等优点,并向着网络化、智能化方向不断发展。而在一些特殊情况下,比如数据安全要求高,控制空间小的场合,就较难实现。基于单片机开发的PLC串口装置,凭借单片机优良的数据处理能力和低廉的价格有着一定的应用范围。 本文通过运
3、用新华龙的C8051F33X系列的单片机开发了一款可编程RS232接口控制面板,本文主要介绍其电路设计和基本控制原理。 2 控制面板的控制方案 控制面板的外型如图2-1所示,具体功能键可参阅注释 图2-1 *注: RS232C口-串口通讯口; JTAG口-程序下载口; 红外接收头-可接受红外信号源; 电源灯-接上电源后点亮; 通讯灯-通讯正常情况下闪烁; 蜂鸣器-每次按下按钮后发出“嘀“声,并在有故障发生时连续报警; 复位按钮-可复位单片机; 故障清除键-清除故障代码; 模式选择键-可切换自动,手动,检修模式; 正,反转键-在手动和检修模式时,可点动控制对应控制号的电机正反转; 0-9-输入最
4、多两位数的控制号; 确定键-确定并发送信号键; 删除键-删除所显示的控制号; 控制号LED显示灯-显示两位控制号; 故障代码LED显示灯-显示两位故障代码; 自动、手动和检修灯-显示当前控制模式; 预留灯-预留; 2.1 面板控制原理 该面板可以运用于皮带运输系统、自动车库系统、存储系统等作为操作面板。用户可以根据需要切换各种模式。在自动模式时,可通过按钮选择控制号(控制号可以理解为控制电机号),并按确定键将信号发送给PLC; 在手动和检修模式时,选择控制号并按下确定键后,可通过正反转按钮点动控制相应控制号的电机正反转。PLC定时发送信号给控制面板,为用户提供各种信息,当有故障发生时,故障蜂鸣
5、器报警并显示故障代码,待故障排除后,通过清除故障键清除故障代码。 在自动模式下,可通过红外发生器(本次设计没有自行研发红外发生器,而是采用标准的电视遥控器作为红外发生器。)发射红外信号来选择控制号,控制面板上的控制号LED灯会跟随变化,按确定键(可自定义遥控器上的一个键为确定键)发送给PLC控制器。 2.2 通讯信号说明 本次设计中的通讯信号涉及两种信号:单片机与PLC的通讯信号和红外发射器(这里为电视遥控器)与单片机的通讯信号 单片机与PLC的通讯信号是双向的,分发送和接受信号。发送信号有两个字节。前8位包含控制模式、正反转和清除故障信号的信息,后8位包含控制号的信息;接受信号也是两个字节,
6、前8位包含控制模式及控制号反馈信息,后8位包含故障代码信息。 红外发射器与单片机的信号为单向信号,只有发送信号。标准的红外线发送信号为32位二进制码,即两个字。第一个字为用户识别码(能区别不同设备,防止不同机种遥控码互相干扰),第二个字为用户信息码。并且每一个字的第一个字节和第二个字节互为反码。在按下电视遥控器按键后,其发射头会连续周期性地发出32位二进制码的信号。 2.3 PCB面板电路图 图2-2 图2-2是控制面板的电路原理图,本次设计采用的芯片为新华龙的C8051330D单片机,并采用周立功单片机发展有限公司的ZLG7289B数码管显示驱动及键盘扫描管理芯片。 图2-3 单片机的时钟脉
7、冲由外部晶震提供,为12MHz,如图2-3。单片机的UART0(I/O口P0.4和P0.5)连接串口RS232。10针接口为JTAG程序下载口,并配有硬件复位电路。蜂鸣器由I/O口P0.1控制。 I/O口P0.0(SPI总线片选)P0.1(SPI数据信息)P0.6(SPI总线时钟信号),P0.7(键盘输入中断信号)与数码管显示驱动及键盘扫描管理芯片ZLG7289B实现通讯,如图2-4。ZLG7289B的工作原理可参考相关资料。 图2-4 红外线接收头如图2-5所示,两个接头为电源5V直流电压街头,另一个接头为信号接头与I/O口P0.7连接。单片机通过PCA计数/计时器捕捉电平信号。 图2-5
8、图2-6 2.4 PCB面板实物图 图2-6为PCB控制面板实物,大小为100x180mm.该装置仍处于研发阶段,故没有封装。在其正常工作时,需配有+15V直流电压,面板需被固定起来,切误拿在手上防止其电路短路。 3控制程序软件设计 新华龙C8051F33X系列的单片机可通过JTAG口连接PC打印机口直接下载程序。U-EC5仿真器可接入JTAG口提供在线模拟仿真。美国Keil Software研发的KEIL uvision3是最新的51系列兼容单片机C语言软件开发系统,具有友好的操作界面,并且程序有良好的可读性,被广大电子工程师所使用。本次程序设计采用其集成开发环境。 不同的控制工艺有着不同的
9、控制逻辑,在这里我们着重讨论通讯部分的程序编写,对其他功能逻辑不做过多讲解。 3.1 串口数据处理程序 C8051330D单片机芯片的UART0是一个异步、全双工串口,UART0具有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率,本次设计我们采用的波特率为9600。 UART提供两种方式的标准8051串行口,8位串行口和9位串行口。我们采用的是前者。在 8 位 UART 方式中,每个数据字节共使用 10 位:一个起始位、8 个数据位(LSB 在先) 和一个停止位。数据从 TX0 引脚发送,在 RX0 引脚接收。在接收时,8 个数据位存入 SBUF0, 停止位进入 RB80(SCON0
10、.2)。当软件向SBUF0寄存器写入一个字节时开始数据发送。在发送结束时(停止位开始)发送中断标志TI0(SCON0.1)被置1。在接收允许位REN0(SCON0.4)被置1后,数据接收可以在任何时刻开始。收到停止位后,如果满足下述条件则数据字节将被装入到接收寄存器SBUF0:RI0必须为逻辑0;如果MCE0为逻辑1,则停止位必须为1。在发生接收数据溢出的情况下,先接收到的8位数据被锁存到SBUF0,而后面的溢出数据被丢弃。 如果这些条件满足,则8位数据被存入SBUF0,停止位被存入RB80,RI0标志被置位。如果这些条件不满足,则不装入SBUF0和RB80,RI0标志也不会被置1。如果中断被
11、允许,在TI0或RI0置位时将产生一个中断。 具体的程序如下: *串口数据处理中断程序* void UART_ISR(void) interrupt 4 if(TI0) /当一个字节发送成功后,TI0被置位 TI0=0; /复位TI0 if(sendtime=first) /发送数据一共有两个字节,如果发送了第一个字节,需再发送第二个字节 sendtime=second; SBUF0=senddata1; /将待传送的数据放入串行数据缓冲器SBUF0 if(RI0) /有数据传送过来时,RI0置位 RI0=0; /复位RI0. DATA=SBUF0; /从串行数据缓冲器SBUF0读取数据 if
12、(DATA&0x80)=0x80) /传送一共有两个字节,判断当前传送的数据是不是第一个字节 readdata0=DATA; receivetime=second; /为接受第二个字节做准备 if(receivetime=second) /接收第二个字节 if(DATA&0x80)=0x80) /判断当前传送的数据是不是第二个字节 readdata1=DATA; receivetime=first; /为下次接收第一个字节做准备 display_errornumber(); /显示故障代码 3.2 红外线信号处理程序 标准的遥控编码采用脉宽调制的串行码,本次设计使用的红外发生器
13、是一个万能电视遥控器,通过示波器测试,得到如下的特征属性,如图3-1,以脉宽为0.56ms,间隔为1.125ms的脉宽信号为0;以脉宽为0.56ms,间隔为2.25ms的为1。一个完整的信号为32位二进制码,当按下按钮后,连续周期性发出同一种32位二进制码。 图3-1 通过红外接收头单片机接收信号, 当I/O口P0.7捕捉第一个电平信号时,PCA计时器捕捉该电平的脉宽,并触发CCF0传入中断程序,根据脉宽长度来判断输入的位是0或者1,并清除中断标志CCF0准备接收下一个位。直到接收完32位编码后,再根据接收到的数据判断控制号并通过LED 灯显示出来,如果接收的信号是确定信号,则将控制
14、号传送给PLC.具体程序如下: *红外线信号中断程序* void PCA_ISR (void) interrupt 11 unsigned cha r red_headh,red_headl,redh,redl,i; if(CCF0) CCF0 = 0; /清除中断标志位 PCA0L=0; PCA0H=0; red_time=(unsigned int)PCA0CPH0*256+PCA0CPL0; /读取捕捉到低电平的脉宽长度 if(red_time>15000) /32位编码信号接收完成后 redl=(unsigned cha r)redVALUE&0xff; /读取第一个字节
15、 redh=(unsigned cha r)(redVALUE>>8)&0xff; /读取第二个字节 red_headl=(unsigned cha r)(redVALUE>>16)&0xff; /读取第三个字节 red_headh=(unsigned cha r)(redVALUE>>24)&0xff; /读取第四个字节 if(choose=auto&&redh=redl&&red_headl=red_headh&&red_headh=0x02) /如果在自动模式下,并且信号正确识别,
16、则开始判断接收信号 switch (redh) case 0: disp_valuei=0; /如果按下数字按钮0的话,则接收为0 disp_flag=1; /LED显示标志位置位 break; case 0x80: disp_valuei=1; /如果按下数字按钮1的话,则接收为1 disp_flag=1; break; case 0x40: disp_valuei=2; /如果按下数字按钮2的话,则接收为2 disp_flag=1; break; case 0xc0: disp_valuei=3; /如果按下数字按钮3的话,则接收为3 disp_flag=1; break; case 0x
17、20: disp_valuei=4; /如果按下数字按钮4的话,则接收为4 disp_flag=1; break; case 0xa0: disp_valuei=5; /如果按下数字按钮5的话,则接收为5 disp_flag=1; break; case 0x60: disp_valuei=6; /如果按下数字按钮6的话,则接收为6 disp_flag=1; break; case 0xe0: disp_valuei=7; /如果按下数字按钮7的话,则接收为7 disp_flag=1; break; case 0x10: disp_valuei=8; /如果按下数字按钮8的话,则接收为8 di
18、sp_flag=1; break; case 0x90: disp_valuei=9; /如果按下数字按钮9的话,则接收为9 disp_flag=1; break; case 0x3A: /如果按下确定键的话,则将接收的数据传送到PLC control_num=(unsigned cha r)(disp_value0*10+disp_value1); Ti=0; /清除发送中断标志位。为发送数据做准备 sendtime=first;/为发送数据做准备 SBUF0=control_num; /发送数据 break; i+; /循环改变个位,十位的数值 if(i>1) i=0; redVAL
19、UE=0; /清除变量 redh=0; redl=0; red_headl=0; red_headh=0; elseif(red_time>2000) /如果脉宽大于2ms,则表示读到一个1,并左移一位 redVALUE=(redVALUE<<1)+1; else if(red_time>1000) /如果脉宽在1ms2ms之间,则读到一位0,并左移一位 redVALUE=(redVALUE<<1)+0; if(CF) /如果有溢出,清除溢出标志 CF = 0; 3.3 主程序 主程序的控制逻辑是,先初始化设置,包括晶震源及所有端口属性,使能所有中断源。当有
20、键按下的话,转入按键中断处理程序,显示和发送数据给PLC,当有接受到红外信号时,转入红外接收中断处理程序,显示和发送数据给PLC,PLC定时发送数据给单片机以显示故障及其他信息,当有信号从PLC发出时,转入串口通讯中断处理程序接受数据。程序如下: void main (void) Init_Device(); /端口初始化 var_init(); /数值初始化 zlg7289_init(); /LED显示初始化 IE|= 0x80; /使能中断源 PCA0CN|= 0x40; /使能PCA中断 SCON0|= 0x10; /设置UART0边沿出发 while(1) if(disp_flag=1
21、) display_controlnumber(); /刷新控制号显示 if(key_pressed != 0) /有键按下时 key_process(key_value); /转入按键处理程序 *住:key_process():这个函数的功能是显示数据,并将数据处理后传送给PLC 限于篇幅,这里省去了端口初始化程序,ZLg7289初始化程序,其他中断程序,键盘输入程序,LED显示程序,通讯灯的功能程序,点动控制功能程序等等。本节主要是为了向读者阐述如何实现PCB控制面板的通讯功能,其他程序可参阅相关资料。 4PLC调试程序 图4-1 为了检测PCB控制面板的功能,需要编写PLC上位机程序调试。这里我们选用了omron的C200H PLC。不同的PLC的RS232串口接线是不一样,如图4-1提供了C200系列PLC与该控制面板的串口接线图。 设置PLC的串口属性为:8位数据,一个起始位,一个停止位,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 孕产妇的心理评估及护理
- 泌尿外科膀胱癌综合治疗方案
- -安全教育课件
- 药剂科抗生素使用的临床指南
- 神经科进行性肌无力康复训练计划大纲
- 预防医学科疫苗接种技术指南
- 急性扁桃体炎的护理措施培训
- 老年人运动损伤与预防
- 全科医学科常见急性感染症的诊疗流程
- 肾功能预后预测指导
- 南农《土壤学》课件
- 车库进出口坡道施工方案
- 货架安全知识培训资料课件
- 文化创意产业园区工业厂房租赁与设计服务协议
- 制造业2025年质量审核指标评估方案
- (2025秋新修订)人教版二年级数学上册全册教案(教学设计)
- 2025年北京客运考试应用能力试题及答案详解大全
- 《无人机飞行控制技术》全套教学课件
- 适岗评价管理办法
- 二年级上册数学应用题100道含完整答案【名师系列】
- 东台辅警招聘考试真题2025含答案
评论
0/150
提交评论