PLC串口及红外控制装置设计

   2023-05-12 互联网3470
核心提示:1. 引言HMI、SCADA作为PLC的主要人机接口设备,具有外观简洁,可靠性高,功能强大,用户界面友好,程序二次开发简单等优点,并向

1. 引言

HMI、SCADA作为PLC的主要人机接口设备,具有外观简洁,可靠性高,功能强大,用户界面友好,程序二次开发简单等优点,并向着网络化、智能化方向不断发展。而在一些特殊情况下,比如数据安全要求高,控制空间小的场合,就较难实现。基于单片机开发的PLC串口装置,凭借单片机优良的数据处理能力和低廉的价格有着一定的应用范围。 本文通过运用新华龙的C8051F33X系列的单片机开发了一款可编程RS232接口控制面板,本文主要介绍其电路设计和基本控制原理。

2. 控制面板的控制方案

控制面板的外型如图2-1所示,具体功能键可参阅注释

图2-1

*注:

RS232C口---串口通讯口;

JTAG口---程序下载口;

红外接收头---可接受红外信号源;

电源灯---接上电源后点亮;

通讯灯---通讯正常情况下闪烁;

蜂鸣器---每次按下按钮后发出“嘀“声,并在有故障发生时连续报警;

复位按钮---可复位单片机;

故障清除键---清除故障代码;

模式选择键---可切换自动,手动,检修模式;

正,反转键---在手动和检修模式时,可点动控制对应控制号的电机正反转;

0-9---输入最多两位数的控制号;

确定键---确定并发送信号键;

删除键---删除所显示的控制号;

控制号LED显示灯---显示两位控制号;

故障代码LED显示灯---显示两位故障代码;

自动、手动和检修灯---显示当前控制模式;

预留灯---预留;

2.1 面板控制原理

该面板可以运用于皮带运输系统、自动车库系统、存储系统等作为操作面板。用户可以根据需要切换各种模式。在自动模式时,可通过按钮选择控制号(控制号可以理解为控制电机号),并按确定键将信号发送给PLC; 在手动和检修模式时,选择控制号并按下确定键后,可通过正反转按钮点动控制相应控制号的电机正反转。PLC定时发送信号给控制面板,为用户提供各种信息,当有故障发生时,故障蜂鸣器报警并显示故障代码,待故障排除后,通过清除故障键清除故障代码。

在自动模式下,可通过红外发生器(本次设计没有自行研发红外发生器,而是采用标准的电视遥控器作为红外发生器。)发射红外信号来选择控制号,控制面板上的控制号LED灯会跟随变化,按确定键(可自定义遥控器上的一个键为确定键)发送给PLC控制器

2.2 通讯信号说明

本次设计中的通讯信号涉及两种信号:单片机与PLC的通讯信号和红外发射器(这里为电视遥控器)与单片机的通讯信号

单片机与PLC的通讯信号是双向的,分发送和接受信号。发送信号有两个字节。前8位包含控制模式、正反转和清除故障信号的信息,后8位包含控制号的信息;接受信号也是两个字节,前8位包含控制模式及控制号反馈信息,后8位包含故障代码信息。

红外发射器与单片机的信号为单向信号,只有发送信号。标准的红外线发送信号为32位二进制码,即两个字。第一个字为用户识别码(能区别不同设备,防止不同机种遥控码互相干扰),第二个字为用户信息码。并且每一个字的第一个字节和第二个字节互为反码。在按下电视遥控器按键后,其发射头会连续周期性地发出32 位二进制码的信号。

2.3 PCB面板电路图

图2-2

图2-2是控制面板的电路原理图,本次设计采用的芯片为新华龙的C8051330D单片机,并采用周立功单片机发展有限公司的ZLG7289B数码管显示驱动及键盘扫描管理芯片。

图2-3

单片机的时钟脉冲由外部晶震提供,为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 图2-6

2.4 PCB面板实物图

图2-6为PCB控制面板实物,大小为100x180mm.该装置仍处于研发阶段,故没有封装。在其正常工作时,需配有+15V直流电压,面板需被固定起来,切误拿在手上防止其电路短路。

3.控制程序软件设计

新华龙C8051F33X系列的单片机可通过JTAG口连接PC打印机口直接下载程序。U-EC5仿真器可接入JTAG口提供在线模拟仿真。美国Keil Software研发的KEIL uvision3是最新的51系列兼容单片机C语言软件开发系统,具有友好的操作界面,并且程序有良好的可读性,被广大电子工程师所使用。本次程序设计采用其集成开发环境。

不同的控制工艺有着不同的控制逻辑,在这里我们着重讨论通讯部分的程序编写,对其他功能逻辑不做过多讲解。

3.1 串口数据处理程序

C8051330D单片机芯片的UART0是一个异步、全双工串口,UART0具有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率,本次设计我们采用的波特率为9600。

UART提供两种方式的标准8051串行口,8位串行口和9位串行口。我们采用的是前者。在 8 位 UART 方式中,每个数据字节共使用 10 位:一个起始位、8 个数据位(LSB 在先) 和一个停止位。数据从 TX0 引脚发送,在 RX0 引脚接收。在接收时,8 个数据位存入 SBUF0, 停止位进入 RB80(SCON0.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’。如果中断被允许,在TI0或RI0置位时将产生一个中断。 具体的程序如下:

*************串口数据处理中断程序************************************

void UART_ISR(void) interrupt 4

{

if(TI0) //当一个字节发送成功后,TI0被置位

{

TI0=0; //复位TI0

if(sendtime==first) //发送数据一共有两个字节,如果发送了第一个字节,需再发送第二个字节

{

sendtime=second;

SBUF0=senddata[1]; //将待传送的数据放入串行数据缓冲器SBUF0

}

}

if(RI0) //有数据传送过来时,RI0置位

{

RI0=0; //复位RI0.

DATA=SBUF0; //从串行数据缓冲器SBUF0读取数据

if((DATA&0x80)==0x80) //传送一共有两个字节,判断当前传送的数据是不是第一个字节

{

readdata[0]=DATA;

receivetime=second; //为接受第二个字节做准备

}

if(receivetime==second) //接收第二个字节

{

if((DATA&0x80)==0x80) //判断当前传送的数据是不是第二个字节

{

readdata[1]=DATA;

receivetime=first; //为下次接收第一个字节做准备

display_errornumber(); //显示故障代码

}

}

}

}

3.2 红外线信号处理程序

标准的遥控编码采用脉宽调制的串行码,本次设计使用的红外发生器是一个万能电视遥控器,通过示波器测试,得到如下的特征属性,如图3-1,以脉宽为 0.56ms,间隔为1.125ms的脉宽信号为0;以脉宽为0.56ms,间隔为2.25ms的为1。一个完整的信号为32位二进制码,当按下按钮后,连续周期性发出同一种32位二进制码。


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅