? ?
?
CM1241-RS232與標簽打印機的通信案例
踏入工作有十幾個年頭了,說實話摸爬滾打中了解一些工控的知識,也算是在蹉跎歲月的同時找到一個混口飯吃的手藝。畢竟大多數的工控人都是應用階段,無非是上位機的種類,PLC的品牌不同,但是基本停留于應用層,給本手冊研究半天,憑多年的經驗總能折騰出個三五二。
我一直在使用AB的plc,對于其他的控制器可以說用的很少,早期還折騰過臺達,西門子200這些后來基本沒有涉及過了。湊巧,受人之托要求使用S7-1200完成一套溶液配置的小項目,讓我有幸和西門子來了一次親密接觸。話不多說看項目說話。
如上圖,兩種溶液按照一定的比例混合,并循環攪拌一定時間,只是涉及幾個閥門和泵按照順序動作而已還算簡單,最后要求在混合完成后,通過標簽打印機打印溶液的濃度,PH值等信息。寫到這忍不住想吐槽一下第一次使用西門子,被FB,FC折磨的夠夠的,對于定時器的使用更是恨的牙癢癢。這個單獨在開篇寫把說說自己第一次使用的經歷。
打印標簽使用的是一個串口通信的打印機,使用西門子CM1241-RS232模塊,打印機兼容ESC打印指令具體如下:
CM1241和打印機串口接線為交叉線,如下圖:
硬件連接完畢,接下來是軟件的使用情況。
首先按照打印機的通信要求設置CM1241串口的波特率,數據位,停止位以及校驗,如下圖:
至于其他的組態傳送消息和接收消息的設定,如果不是復雜的消息,采用默認即可。采用這里的組態方式那么在程序里面就無需在利用port_Configure,send_config以及recive_Config這些指令,除非你想把這些設置放在觸摸屏上變成一種可以更改的參數。
發送消息指令:
其實發送消息指令就是想Buffer中的數據在request=1時,按照指定的length通過port發送出去。同時返回發送完成,是否錯誤等狀態。其實到這打印機設置和打印的過程就算結束了。是不是太簡單了,不錯,本來打印標簽調用串口指令這些并不難,難的是如何配置標簽的內容。
標簽打印機結束的指令和字符均為16進制,數字以及字母都是ASCII字符的形式,漢字則是按照GB2312編碼編制的4位16進制數字。例如 “濃”的編碼為C5 A8 “度”為B6 C8.如果要打印“濃度”則需要發送”C5 A8 B6 C8”至打印機。
假設我們要打印的標簽格式如下圖:
混合液
品名:酸性 PH值:10.5
濃度:25%
操作員:
日期:2019-09-26 18:31:25
其中酸性,10.5,25,2019-09-26 18:31:25這些參數都是變動的,因此我們需要先建立一套沒有參數的模板,然后將變動參數傳送入對應的位置即可。
標簽模板如下圖:
框中數據為需要傳送的數據位置,在新的溶液配置完成時,將數據送入這個位置即可:如下
如此以來就可以得到自己需要的標簽了。希望這些簡單的說明,能夠為大家提供一些思路,當然了現在還在使用串口打印的已經不多了,基本都是MES系統或者上位機輔助,但是仍然希望能夠給一些困惑的同學帶來些啟迪。。
注釋:打印機指令:OD 換行,OA打印并換行
樓主最近還看過
BOB彩票客户端