30
ELEVATOR INDUSTRY
http:www.chinalift.net
检测标志位上,在本例中 CPU 不
仅进行串行通信,还需要响应厅
召唤信号等其他信号,这样严重
影响系统的实时性。
中断方式可以使 CPU 和外设
之间并行工作,在串口部分进行
收发和移位等操作时 CPU 不用干
涉,相对查询法能提高 CPU 的效
率。鉴于系统对实时性要求较高
故选用中断的方式进行,实现高
效、安全的信息传输,提高软件
的效率。在中断方式下串口通信
的基本流程图如上所示。
3 . 2 、
中断服务
程序设计
及缓冲区
的管理
中
断 的 方
式 虽 然
满 足 了
实 时 性,
但 同 事
串 口 通
信 软 件
变 得 比
较 复 杂,
需 要 增
加 相 应
的 中 断
服 务 子
程
序
( I S R )
以 及 相
关 的 软
件 缓 冲
区管理。
ISR 设 计 的 思 想 为: 根 据 不
同 的 中 断 源, 接 受 或 发 送 数 据,
中断处理代码应该尽量短,只完
成接收 / 发送数据工作。其他工
作在中断服务程序以外的地方进
行。缓冲区的管理办法:每当接
受缓冲寄存器收满一定的字节数
时,出发一次串口接收中断,将
数据转移给一个事先给定的数据
接收缓冲区并计数。校验帧头正
确且计数达到一定时这些数据转
移到数据处理存储取并通知主程
序处理。
四、通信系统的实现
4.1 PLC 的设置
实现上位机与 PLC 通信单元
的通信只需写上位机程序,因为
PLC 本身带有通信程序,只要进
行适当设置就可以通信了。下面
以松下 FP0 可编程控制器为例说
明在 PLC 串行通信之前必要的系
统寄存器设置。
系 统 寄 存 器 412、413、414、
417 和 418 用于设置串行通信方
式和格式。
(1)412: 串行通信方式设置。
设置值为 K1,与计算机相连;
(2)413: 串行通信格式的设
置。设置值为 H1,413 的内容自
动加到发送的数据中,而无需写
入结束符;
(3)414: 串 行 通 信 波 特
率 设 置 值 为 K1, 对 应 波 特 率 为
9600bps;
(4)417、418:417 用 于 串
口接收数据缓冲区起始地址的设
定;418 用于接收数据缓冲区容
量的设定。417、418 的设置范围
依 /01 的型号而定。
4.2 μc/os 操作系统环境下程
序设计的实现
μc/os 称 的 上 是 最 小 的 操
作 系 统 内 核 软 件, 自 问 世 以 来
μc/os 的稳定性和可靠性得到广
泛的认可,先已经通过美国 FAA
认证广泛应用到各个硬件平台上。
下面在 μc/os 平台下介绍数据接
收的程序实现,至于串口初始化
等其他程序实现就不再赘术。
数据接收
任务名 TaskUart0Revice,从
UART0 接 收 数 据, 当 接 收 完 一
帧 数 据 后 通 过 消 息 邮 箱 传 送 到
TaskStart 任务。具体实现如下。
void TaskUart0Revice(void
*pdata)
{
uint8 *cp;
uint8 Buf[4], temp, i;
p d a t a = p d a t a ;
/* 避免编译警告
*/
for (;;)
{
err:
cp = Buf;
while (UART0Getch()
!= 0xff); /* 接
收数据头 */
for (i = 0; i < 4; i++)
{
t e m p =
UART0Getch();
if (temp == 0xff)
{
goto err;
}
*cp++ = temp;
}
OSMboxPost(Uart0Rev
iceMbox, (void *)Buf);
}
}
五、结束语
用 ARM 开 发 的 基 于 μc/os
嵌 入 式 系 统 和 PLC 的 实 时 串 行
通信软件运行稳定,充分利用了
PLC 本身的资源,实现了上位机
与 PLC 的实时通信,数据传输达
到预期的目标。可见使用嵌入式
系统对电梯的监控是完全可行的。
参考文献
1、 松 下 FPO 系 列 可 编 程 控
制器编程手册 .
2、 可 编 程 序 控 制 器 原 理 ・
应用 ・ 实验 . 北京:机械工业出
版社,1997
3、甄小琴,张世光 .PLC 机
的串行通讯程序设计 . 中国仪器
仪表,2001(5)
:45-48.