《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > POS機數(shù)據(jù)采集器的設(shè)計
POS機數(shù)據(jù)采集器的設(shè)計
來源:微型機與應(yīng)用2013年第24期
臧 慧, 楊江寧, 焦鳳昌
(廣西大學(xué) 電氣工程學(xué)院,廣西 南寧530004)
摘要: 以RISC架構(gòu)的微控制器為核心,通過分析日常使用較多的零售POS機,結(jié)合帶糾錯機制的通信方式,設(shè)計POS收款機數(shù)據(jù)采集器。采用熱敏POS機和針式POS機對設(shè)計樣品進行了測試,結(jié)果表明,該設(shè)備采集的準(zhǔn)確率符合要求,具有較好的應(yīng)用前景。
Abstract:
Key words :

摘  要: RISC架構(gòu)的微控制器為核心,通過分析日常使用較多的零售POS機,結(jié)合帶糾錯機制的通信方式,設(shè)計POS收款機數(shù)據(jù)采集器。采用熱敏POS機和針式POS機對設(shè)計樣品進行了測試,結(jié)果表明,該設(shè)備采集的準(zhǔn)確率符合要求,具有較好的應(yīng)用前景。
關(guān)鍵詞: POS機;票據(jù)打印機信號調(diào)理;數(shù)據(jù)存儲

    POS機最早用于零售業(yè),但因其方便、快捷的特性,當(dāng)今已用于生活的各方面。隨著POS機的大規(guī)模使用,對其通信信息的監(jiān)控和管理也變得越發(fā)重要。通過使用POS機,用戶可以很方便地管理日常銷售、進出貨物等,但相關(guān)部門無法透明地對其進行監(jiān)管。針對這一現(xiàn)象,本文以零售業(yè)的POS收款機為例,在不影響票據(jù)打印機正常工作的前提下,通過截取打印時的數(shù)據(jù),實現(xiàn)了對其通信數(shù)據(jù)的監(jiān)控。
1 系統(tǒng)總體方案設(shè)計
    POS主機與票據(jù)打印機的接口方式有并口、串口和USB,但目前應(yīng)用較多的還是并口,因此本文主要研究的是并口方式。POS收款機的每一筆銷售及收款數(shù)據(jù)都會通過票據(jù)打印機打印成銷售小票,在POS主機與票據(jù)打印機之間加入數(shù)據(jù)采集裝置,每當(dāng)打印票據(jù)時都會同時觸發(fā)采集器進行數(shù)據(jù)采集,并通過有線通信方式上傳至數(shù)據(jù)服務(wù)器。圖1為設(shè)計方案結(jié)構(gòu)。

2 硬件設(shè)計
    本文設(shè)計的數(shù)據(jù)采集器由信號調(diào)理單元、通信單元、存儲單元、微控制器和供電單元五部分組成。硬件結(jié)構(gòu)框圖如圖2所示。


    6N137有正邏輯和反邏輯兩種工作方式,本文使用的是正邏輯方式,如圖9所示,使用時需要注意以下幾點:

  (1) 當(dāng)6N137工作于正邏輯時,前端供電應(yīng)獨立于系統(tǒng)電源。
     (2)由6N137的內(nèi)部結(jié)構(gòu)可知,PIN2與PIN3之間為發(fā)光二極管,發(fā)光二極管正向壓降1.2 V~1.7 V,正向電流為6.5 mA~15 mA,光敏管導(dǎo)通。若不加限流電阻或阻值很小,6N137仍能工作,但發(fā)光二極管導(dǎo)通電流很大,對VCC1有較大沖擊,尤其是數(shù)字波形較抖時,上升、下降沿的頻譜很寬,會造成相當(dāng)大的尖峰脈沖噪聲。因此在可能的情況下,限流電阻盡量取大[2]。
     (3)VCC和GND引腳之間必須連接一個高頻特性很好的陶瓷電容或固體鉭電容CF(容值為0.1 ?滋F或者更大),而且盡可能靠近VCC和GND引腳。此電容可以吸收電源線上的紋波,同時減小光電隔離器接收端開關(guān)工作時對電源的沖擊。
     (4)輸出端(PIN6)是集電極開路輸出,通常加上拉電阻RL。此電阻若取的太小,會使6N137的耗電增大,加大對電源的沖擊,使旁路電容CF無法吸收[2]。
2.2 存儲單元
    每張票據(jù)包含的信息量大小不一,統(tǒng)計發(fā)現(xiàn)8 KB能包含絕大數(shù)消費者單次購物的信息量。ATmega128A片內(nèi)集成有4 KB的SRAM,因此需要外部擴展。本文選用Cypress公司的CY62256,具有15 bit地址線和8 bit數(shù)據(jù)線,容量為32 KB。由于Atmega128A是高速單片機,建議在高速系統(tǒng)中使用74AHC系列地址鎖存器[3]。
  為使數(shù)據(jù)掉電不丟失,使用RAMTRON公司的鐵電存儲器(FRAM)FM24C64,容量64 kbit,可承受一萬億次的擦寫操作,帶I2C接口[4]。本系統(tǒng)使用8片F(xiàn)M24C64,每片單獨存放一張小票的數(shù)據(jù)。
2.3 通信部分
    串行通信方式有EIA-232[5]、 RS-485D等。本文采用RS-485通信,考慮到系統(tǒng)的穩(wěn)定性,本文分別在前端和后端加入了隔離電路,如圖10所示。
2.4 電源部分
    本文采用DC-DC電源轉(zhuǎn)化器件,與LDO器件相比,其轉(zhuǎn)換效率更高,熱耗散小。典型應(yīng)用電路見參考文獻[6],圖11為PIN2(Output)輸出波形。

    采用DC-DC隔離器使6N137前端供電獨立于系統(tǒng)電源,IB050LS-1W在使用時因注意以下幾點:
    (1)輸入和輸出端應(yīng)該加入濾波電路,實驗發(fā)現(xiàn)在不加入濾波電路的情況下,關(guān)閉系統(tǒng)電源,會有自動出紙的現(xiàn)象發(fā)生。
    (2)推薦使用簡單的被動LC電路濾波,并且電感的自諧振頻率必須遠離于DC-DC模塊的典型工作頻率,電感的DC電流額定值最好大約兩倍于DC-DC模塊的額定輸出電流值[7]。
3 軟件設(shè)計
    主流程如圖12所示,在主循環(huán)中,用指令包標(biāo)志位的0、1狀態(tài)來表示是否正確接收一個指令包,通過查詢其狀態(tài)來執(zhí)行往后函數(shù)。為提高系統(tǒng)的穩(wěn)定性,加入了指令防錯機制,若上位機發(fā)送的指令不符合本系統(tǒng)設(shè)定,則返回錯誤狀態(tài)數(shù)據(jù)包。

 

 

    采集的數(shù)據(jù)直接緩存在外擴的存儲器內(nèi),32 KB被均勻分成4塊區(qū)域,每塊區(qū)域單獨緩存一張小票的數(shù)據(jù)。并行接口在SPP模式下,速率是50 KB/s~150 KB/s[1],傳輸一張信息量為8 KB的票據(jù),最長也只需0.16 s。本文的設(shè)計思想:在每張票據(jù)第一次觸發(fā)外部中斷采集數(shù)據(jù)的同時打開定時器,如圖13所示,1 s后POS主機已將票據(jù)的信息傳送給票據(jù)打印機,緩存區(qū)域內(nèi)也已存有這張票的數(shù)據(jù),此時進入定時中斷服務(wù)函數(shù)完成數(shù)據(jù)的轉(zhuǎn)存。本文使用狀態(tài)機[6]思想完成數(shù)據(jù)的轉(zhuǎn)存,如圖14所示。輸入為0時進入狀態(tài)0,緩存塊0中的數(shù)據(jù)被轉(zhuǎn)存至第一片F(xiàn)M2C64內(nèi),指針指向緩存塊1,關(guān)定時器,中斷返回,其后狀態(tài)與之類似。
     如圖15所示,在串口接收中斷服務(wù)函數(shù)內(nèi),將ATmega128A自帶的各種錯誤標(biāo)志位作為第一層篩選條件,讀取緩存區(qū)的數(shù)據(jù)后將系統(tǒng)設(shè)定值作為第二層篩選條件。滿足以上條件表示數(shù)據(jù)接收正確,將指令包標(biāo)志位置1,中斷返回。

    ATmega128A片內(nèi)集成硬件看門狗,所以本系統(tǒng)并未加入外圍看門狗復(fù)位電路。本文采用的方式是,設(shè)置看門狗典型溢出時間為0.9 s,使用定時器每0.5 s進入中斷服務(wù)函數(shù)喂狗。
4 結(jié)果及分析
    分別采用針式打印機和熱敏打印機對本系統(tǒng)進行測試。往ATmega128A燒寫程序前應(yīng)先配置好熔絲位,對熔絲位的誤操作會將芯片鎖死。
    表1為測試用的6種指令包,首先設(shè)定裝置所在的地址范圍,第1個指令包將設(shè)備的地址限定在了0X01~0X50內(nèi),起始字節(jié)0X24與結(jié)束字節(jié)0X2A分別為特殊字符S和*,第6個字節(jié)與第7個字節(jié)為前5個字節(jié)的CRC-16校驗字,返回相同的數(shù)據(jù)包表明配置成功;接著第2個指令包將設(shè)備的地址設(shè)為0X05,之后數(shù)據(jù)采集裝置就可開始工作;指令包3的含義是將設(shè)備的地址設(shè)定成0X57,然而先前設(shè)備的地址已經(jīng)被限定在了0X01~0X50范圍內(nèi),指令有誤,應(yīng)返回錯誤狀態(tài)數(shù)據(jù)包。程序中定義了一系列錯誤狀態(tài)標(biāo)志位,以指示不同的錯誤狀態(tài),防止誤操作。

    第4個指令包發(fā)送后,回傳第一張小票的數(shù)據(jù),需注意返回的數(shù)據(jù)包中第7個字節(jié)起才是票據(jù)的數(shù)據(jù),將其與打印出的小票進行核對,最后第2和第3個字節(jié)是對小票數(shù)據(jù)進行CRC-16的校驗字;與指令5對應(yīng)的數(shù)據(jù)包表明存儲的第二張小票的數(shù)據(jù)被清除;而對應(yīng)于指令6返回的數(shù)據(jù)包說明小票地址有誤。
    本文設(shè)計的POS收款機數(shù)據(jù)采集器解決了零售行業(yè)中票據(jù)信息無法監(jiān)控的問題,對數(shù)據(jù)統(tǒng)計和管理具有實際意義。創(chuàng)新地加入了鐵電存儲器,數(shù)據(jù)信息頻繁擦寫的同時延長了設(shè)備的有效壽命。隨著POS機的發(fā)展和儀表的智能化、人性化,可以近一步完善產(chǎn)品功能,從通信方面考慮改用無線方式(如Wi-Fi)完成數(shù)據(jù)的傳送,減少線纜鋪設(shè)成本。
參考文獻
[1] 計算機的并行接口大全[EB/OL].(2010-03-09)[2013-09-24].http://www.elecfans.com/baike/computer/taishiji/20100309183757.html.
[2] 高速光耦6N137應(yīng)用電路[EB/OL].(2011-03-21)[2013-09-24]. http://wenku.baidu.com/view/43b6857e5acfa1c7aa-00ccff.html.
[3] Atmel Corp..ATmega128A complete[EB/OL].(2011-02-xx)[2013-09-24].http//www.atmel.com/devices/ATMEGA128A.aspx?tab=documents.
[4] Cypress Incorporated. FM24C64B:64Kb Serial 5 V F-RAM  Memory[EB/OL].(2013-07-19)[2013-09-24].http://www.cypress.com/?rID=73453
[5] 韋曉茹,蔡志堅,居戩之.AVR單片機ATmega16與計算機串行通信的實現(xiàn)[J].微型機與應(yīng)用,2012,31(14):30-33.
[6] Teax Instruments Corp..LM2596 simple switcher power con verter 150 kHz 3A step-down voltage regulator[EB/OL]. (2013-04-xx)[2013-09-24].http://www.ti.com/lit/ds/symlink/lm2596.
[7] Delus Corp..模塊電源產(chǎn)品選型手冊[EB/OL].(2009-xx-xx)[2013-09-24].http://www.delus.cn.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。