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打印并换行
楼主最近还看过