论文导读:微型热敏打印机具有打印速度快、噪音低、可靠性高、字迹清晰、机头小而轻等优点,可满足各种场合的打印要求[3]。使用并行接口的微型打印打印在传输数据时,8位数据同时通过并行线进行传输,速度较快。因此,设计一个热敏打印机驱动专用模块,将热敏打印机挂接在RS485总线上,主机和打印机驱动模块之间采用Modbus协议通信,由于RS485总线的传输距离可达1200米,打印机可以安装在远离恶劣现场环境的位置,从而解决了打印机因干扰而工作失效的问题。按照Modbus协议的消息帧格式,热敏打印机驱动接口的消息帧格式如图5所示。
关键词:热敏打印机,RS485总线,Modbus协议,接口
随着自动化技术的推广,微型和小型打印机的应用越来越广泛了[1]。各种测量仪表仪器已经由最初的数码管显示发展到自带微型打印机,到目前为止,在各种测量型仪器仪表中,或大或小都有一个打印子系统,打印机已经成为打印测量结果和实现人机对话的重要工具[2]。微型热敏打印机具有打印速度快、噪音低、可靠性高、字迹清晰、机头小而轻等优点,可满足各种场合的打印要求[3]。使用并行接口的微型打印打印在传输数据时,8位数据同时通过并行线进行传输,速度较快。但当线路较长、传输位数多时,成本会有所提高,而且会受到不同程度的干扰,出错的可能性也较大。在环境恶劣、不适合人工经常操作的场合,往往造成打印机工作失效。
因此,设计一个热敏打印机驱动专用模块,将热敏打印机挂接在RS485总线上,主机和打印机驱动模块之间采用Modbus协议通信,由于RS485总线的传输距离可达1200米,打印机可以安装在远离恶劣现场环境的位置,从而解决了打印机因干扰而工作失效的问题。
1 热敏打印机接口
热敏打印机一般采用CENTRONICS标准的并行接口,它是一种增强的双向并行传输的接口类型,最高传输速度是1.5Mbps,一般使用的是25针D形接口,如图1所示。

图1 打印机并行接口
主机和打印机通过打印机接口25个信号线完成打印功能,各IO信号线的功能如表1所示。
表1打印机并行引脚接口
引脚号 |
引脚名 |
方向 |
说明 |
1 |
STROBE 选通 |
输入 |
选通触发,上升沿有效 |
2-9 |
DATA0-DATA7数据0-7 |
输入 |
数据信号线,DATA0表示数据最低位 |
10 |
ACKNLG 确认 |
输出 |
低电平表示数据已接收,且可接收下一组数据 |
11 |
BUSY 忙 |
输出 |
高电平表示打印机“忙”,不能接收数据 |
12 |
PE 缺纸 |
输出 |
高电平表示打印机有纸,低电平表示无纸 |
13 |
SLCT 选择 |
输出 |
一般接上拉电阻,表示打印机“在线” |
14 |
AUTO FEED走纸 |
输入 |
使打印机打印后自动走纸一行 |
15 |
ERROR 错误 |
输出 |
一般接上拉电阻,高电平表示打印机无故障 |
16 |
INIT 初始化 |
输入 |
使打印机复位成初始状态 |
17 |
SLCT IN 选择输入 |
输入 |
低电平表示打印机被选中 |
18-25 |
GND 地线 |
|
电源地 |
微型打印机是严格按照打印机接口控制信号线的电平状态进行工作的,如图2所示。当打印机接口将数据通过数据线Data0-7送出后,需要通过STROBE信号线发出一个负脉冲,将数据存入打印机接收缓冲区。打印机在接收数据时,BUSY信号线处于高电平,以通知数据发送方打印机正在接收数据。当数据接收完毕,BUSY变为低电平,同时ACK信号线发出一负脉冲,表示本次数据传输完成。

图2 打印机接口打印时序
当接通打印机电源后,在打印机控制电路中的CPU控制下,先完成初始化,然后打印机开始处于接收状态,接收由主机送来的信息,并进行判断。若是功能码,则进入相应的处理;若是字符码,则送入字符缓冲器。再从点阵字库中找出相应的字符点阵信息存入打印码缓冲区。当接收的数据为打印命令(如回车、换行符等)或一行缓冲打印码已满,则进入打印过程。
2 热敏打印机驱动接口电路
热敏打印机驱动接口的任务是接收主机送来的数据,然后按照图2的打印机时序要求向打印机写入数据,从而完成打印任务。采用AT89S51作为接口控制器,P0口输出待打印的数据,控制线分别采用P3.2作为ACK信号线,P3.3作为BUSY信号线,P3.4作为STROBE信号线,其电路连接如图3所示。科技论文。

图3 热敏打印机驱动接口
由图3可以看出,热敏打印机驱动接口电路中比较重要的电路是RS485接口电路,它担负着整个打印机模块的通信任务。采用Max485作为通信控制器,AT89S51的异步串行口的数据接收端连接到Max485的RO端作为数据接收线,AT89S51的数据发送端连接到Max485的DI端作为数据发送线,AT89S51的P1.0口连接到Max485的RE和DE端作为通信方向控制线,RS485通信的接口电路如图4所示。

图4 RS485接口电路
电路中采用10K的上拉电阻R2和10K的下拉电阻R5是为了使高、低电平在TTL电平规定的范围之内,避免出现非法数据。采用2个20Ω的电阻是为了防止信号线A、B短路,提高通信的可靠性。
3 软件设计
在实际的打印过程中,为了保证数据通信的可靠进行,除了进行数据校验和通信握手之外,尽可能减少通信数据,提高通信速度和质量是通信的成功的关键。因此,首先需要对需要打印的数据进行分类。使用微型打印机的场合通常打印数据量小,格式固定,说明性信息较多,如果每次仅发送需要打印的数据,由接收数据的AT89S51将这些数据按照打印的内容和要求分类,重新组合成打印内容,将大大降低通信的数据量。科技论文。
按照Modbus协议的消息帧格式,热敏打印机驱动接口的消息帧格式如图5所示。地址是接收方的地址,在同一个总线上,不能有重复的地址;类型表示本帧数据的意义,便于接收方重新组织数据;帧号表示发送方发出的消息数目。数据长度表示本帧消息的数据域有多少个字节的数据;校验域是对本帧除校验域外所有的数据的进行CRC16校验的结果。

图5 打印数据帧格式
每帧数据首先发送接收数据的目标机地址,然后是本帧消息的类型,以便接收机重新组织数据。设置帧号的目的是在发送方发送数据中途丢失或者接收错误时,便于按照帧号重新发送消息。
热敏打印机驱动接口上电时,通信方向控制线P1.0为低电平,RS485接口处于接收状态,设置异步通信方式为11位通信,即:1位起始位,8位数据位,1位地址/数据位和1位停止位。主控器AT89S51的串行缓冲区只有一个字节,需额外的设置串行缓冲区以保证多字节通信的正常进行,当接收到发送方发送的地址数据时,首先与本节点地址比较,如果为发送到本节点的数据,则将清除SM2控制位,并将接收到的所有数据转存到接收缓冲区。根据每帧的第四个字节的内容决定后续的数据长度,如果接收的数据数达到发送的数据数,则结束本次接收,置位SM2,进入消息帧判断程序,数据接收流程如图6所示。
数据接收完毕后,首先进行CRC16校验,如果校验错误,则将RS485总线处于发送模式,返回错误报告,以便发送方重新发送错误帧的数据。科技论文。如果校验正确,通过判断帧类型,可以知道后续数据的内容和意义,调用打印组织程序,将数据和说明信息按照需要的格式重新组合,发送给热敏打印机,启动打印。

图6 数据接收流程
4 结束语
按照上述思路设计的热敏打印机驱动接口电路已应用烘炉干燥系统,解除了操作人员现场抄写烘炉数据的麻烦,经实践证明,使用RS485总线方式驱动热敏打印机的通信模式符合生产实际,具有一定的推广意义。
参考文献
[1]范传杭.单片机控制的小型热敏打印机[J].电子技术参考,1992,(1):67-73
[2]张蓬鹤等.热敏打印机与高速数字处理器DSP的接口与应用[J],国外电子元器件,2005,(5):29-30
[3]余翔,吴优宇.基于89S51单片机的微型热敏打印机软件设计[J].PLC技术应用200例,2007,(23):120-121
|