APP下载

自动售货机中MDB/ICP协议通讯的实现

2015-10-19赵政

科技视界 2015年29期
关键词:单片机

赵政

【摘 要】MDB协议又名ICP协议是由国家自动机械销售协会(NAMA)和欧洲售货机协会(EVA)的有关成员制订,是一套用于协调自动售卖机的主控制器(VMC)与多个外设之间通信的协议。本文提出以STC单片机为例,实现VMC与外设的MDB/ICP协议通讯。

【关键词】自动售货机;单片机;MDB/ICP协议

【Abstract】MDB protocol, also known as the ICP protocol is formulated by the concerned members of the National Automated Machinery Sales Association (NAMA) and European vending machine Association (EVA), it is set for the communication between vending machine main controller (VMC) and multiple peripherals. This paper introduces and presents the MDB/ICP protocol communication between VMC and peripheral using STC Single chip microcomputer.

【Key words】Vending machine; Single chip microcomputer; MDB/ICP protocol

0 引言

自动售货机被称为“永不下班的超级营业员”。是20世纪70年代在日本和欧美发展起来的高新技术产品,这种零售方式已经在世界65个国家和地区出现。自动售货机在日本被亲切地称为“微型小店”。 “微型小店”出售的商品,从咖啡、香烟、各种酒类已经发展到部分日常生活用品,就连报纸、大米、邮票、明信片、电池、录像带等也可以自动出售。在自动售货机的使用过程中,VMC(Vending Machine Controller)与外设(读卡器、硬币器、纸币器等)的通讯是很重要的,因此,采用一种可靠的内部通讯总线协议非常必要。MDB/ICP协议是由国家自动机械销售协会(NAMA)和欧洲售货机协会(EVA)的有关成员制订,用于协调自动售卖机的主控制器(VMC)与多个外设之间通信的协议。

1 MDB/ICP 协议

1.1 简介

MDB 为一个主从结构的串行总线接口标准,采用9600bps 的波特率通信。主从操作模式,MDB 规定总线有唯一1个主机和最多32个外设。每个外设有唯一的地址和命令。所有通信的外设都是主机完成初始化的。

1.2 通信格式

a.字节格式

一个字节被定义为11位的格式,1个起始位+8个数据位+1个模式位+1位停止位;其中,模式位根据传递方式的不同分别置0或置1:当控制器VMC 发送数据到外设时,模式位置1表示为地址字节,置0表示数据字节;当外设发送数据到控制器VMC时,模式位置1表示所有字节发送完毕。

b.块格式

主到从:

控制器VMC 传送给外设的数据由1个地址字节、若干数据字节和1个校验字节组成,总数不超过36个字节。

地址字节包含两部分命令,高5 位是外设的地址,低3 位是外设的命令。

主控器响应外设时发送应答(ACK)、非应答(NAK)、重发(RET)。5ms 超时(无响应)等价于非应答。

如果从机地址在5mS 内无响应,主控器重发相同的命令或不同的命令,直到收到从机的响应或达到最大无响应时间(硬币器为2S、纸币器为5S)。在这期间,主控器同时应该访问其他外设。

主控器可以通过拉低发送线(至少100mS)对总线进行复位。

从到主:

一帧数据包含一个数据块、1字节校验和、1字节应答或非应答。校验和字节包含在最大数据块(36 字节)之内。

外设响应主控器时,主控器必须响应一个应答,非应答或重发。

外设在相应ACK或NAK时无需校验和。

当外设发送一个数据块之后,主控器在5ms无响应时间之内必须响应一个ACK、NAK或RET。

c.校验和

校验和字节在每个数据块的最后发送。校验和字节是地址字节和所有数据字节的累加,校验和字节并不包含在总和中。

1.3 MDB/ICP通讯模式

每次通讯过程都由VMC发起,外设响应,这种方式可以避免总线冲突,同时利用校验和(CHK)和重发机制实现错误检查和更正,提高了内部通讯的可靠性。

几种典型的通讯过程下图(图1)所示。其中:ADD表示地址字节,DAT表示数据字节,CHK表示校验和(计算ADD和所有DAT之和的字节),“*”表示模式位置1。

2 硬件结构

在MDB总线协议基础上,采用51系列单片机通过MDB总线与投币机、读钞机和读卡器交互,控制外设的运转,并从外设获得用户的支付情况。同时也负责处理与用户之间的交互,驱动液晶显示,处理键盘输入,控制电机运转出货。系统结构图(图2)如下:

3 软件构架

3.1 程序流程图(图3)

3.2 软件代码

a.串口初始化

初始化串口时,主要工作是设置波特率为9600和传输方式为11位传输。为顺利获得9600波特率,本项目单片机采用11.0592Mhz晶振为。源代码如下(采用C语言编写,Keil编译):

b.MDB协议通讯

这是通讯的核心部分。根据需要传送数据包,计算校验字节,控制方式位,在时序允许的响应时间内接受外设返回的数据,做出NAK或ACK等反应。并且按照MDB/ICP标准中推荐的方式处理异常情况,当接受数据超时或校验和错时, 重复发送命令多次,以增强容错性能。将接收到的数据返回给调用者,并返回结果码。源代码如下(采用C语言编写,Keil编译):

【参考文献】

[1]徐爱钧,彭秀华.Keil C51单片机高级语言应用编程与实践[M].电子工业出版社,2013.

[2]Stephen Prata. C Primer Plus [M] Addison-Wesley Educational Publishers Inc.2004.

[3]NAMA. Multi-Drop Bus/Internal Communication Protocol MDB/ICP[EB/OL]. [2003].http://ww.vending.org.

[4]洪强宁,齐国生,叶丹.基于MDB/ICP 协议的自动售卖系统的主控制器实现[J].电子技术应用,2002(9):28-30.

[5]陈安宝.基于MDB/ICP 协议的纸币识别器与自动售货机通讯的研究[J].机械管理开发,2004(4):77-78.

[责任编辑:杨玉洁]

猜你喜欢

单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
MSP430单片机在仿真中要注意的几点问题
基于单片机的平衡控制系统设计
基于单片机的三维LED点阵设计
Microchip推出两个全新PIC单片机系列
基于Proteus的单片机控制系统的仿真设计