上周处理一台地磅的时候,故障码又是 Err 18。磅房管理员围着仪表转了几圈,问我是不是传感器坏了、要不要直接换主机。我让他先把打印机线拔了,仪表立刻恢复正常。这说明什么问题?说明 Err 18 盯上的根本不是传感器,而是“格式模板”或者“通讯帧”这条设置链路。
这类问题在电子地磅、平台秤、配料秤上非常常见,尤其容易出现在换过电脑、改过软件、重新下载过打印模板之后。对刚接触地磅维护的人来说,Err 18 看起来像一串神秘数字,其实它的逻辑很直白:仪表执行了一条输出动作(打印、连续通讯、串口应答),但格式对不上、链路不完整,于是把自己卡住了。
这篇文章按我的实际维修习惯来写:先讲 Err 18 到底在报什么,再讲现场怎么快速定位,然后分别拆“通讯帧”和“格式模板”两条线,最后给出一套修复顺序和防再犯的记录方法。不管是磅房管理员、设备科维修工,还是刚入门的仪表技术支持,都能照着这套思路一步步查。
1. 别急着换仪表,先搞懂 Err 18 盯着的到底是哪条链路
1.1 格式模板和通讯帧,两个“格式”的分工有本质区别
地磅仪表对外输出数据,通常走两条路:一条是打印,另一条是连续通讯。打印走的是“格式模板”,连续通讯走的是“通讯帧”。
可以这么理解:通讯帧是打电话时约定的语法。双方约定先说“主语”再说“动作”最后说“数量”,如果一方突然改用倒装句,对方就听不懂,对话只能中断。仪表发数据给电脑、给大屏幕、给打印机,同样要先约定“语法”——起始字符是什么、重量放在第几位、结尾要不要校验符。这套语法就是通讯帧。
格式模板则是填好的快递单。快递单上有固定的栏目:单号、收件人、地址、重量。把数据填到对应栏目里,打出来才能看。仪表打印三联单、两联单时,每一行的内容、顺序、单位,都是模板提前排好的。模板里字段代号写错、行长度算错,打印机拿到的东西就不完整,仪表也会报错。
Err 18 这个名字,不同厂家的定义不完全一样,有的叫“打印格式错误”,有的叫“通讯发送失败”,有的叫“模板非法”,但归纳起来都指向同一件事:仪表尝试按某个格式输出数据,但格式或承载格式的链路出了问题。把问题定性成“链路病”,排查思路就清晰了。
1.2 同样是 Err 18,不同仪表叫法不同,根因却都指向“格式”
有些仪表报 Err 18 是在打印机没有联机的情况下按了打印键,这时仪表检测不到打印机的握手信号,直接超时报错;有些仪表是在连续通讯模式下,发送数据后一直等不到上位机应答,最终以 Err 18 终结;还有些仪表更直接,模板区读到的数据和自校验值不匹配,一开机就亮 Err 18。
这几种现象表面上差异很大,但都有一个共同点:错误不是来自传感器测量环节,而是来自“输出格式”环节。传感器传递过来的重量值本身没问题,卡在后面的“翻译”阶段了。
少数情况下,数字传感器地磅也会因为传感器本身的通讯帧异常报出类似故障,但那种场景通常会和“传感器通讯中断”“无法寻址某只传感器”等提示一起出现,而且不会只在按打印键时才触发。只要故障点是“按某个键就报、拔掉某根线就好、换台电脑就变”,基本可以确定是格式层的问题。
2. 现场定位三刀:断开外设、观察时机、记录规律
2.1 第一刀:拔掉所有外联设备,只留传感器
到了现场,我一般不做任何设置操作,先做一次“最小系统测试”。所谓最小系统,就是仪表只保留传感器和电源,把打印机、上位机串口线、远程显示屏、道闸联机线全部拔掉。
拔完之后重启仪表。这时候可能出现两种情况:
第一种,Err 18 消失,仪表正常称重、正常置零。这说明问题出在外设链路,也就是打印机、上位机、通讯线或者外设本身的参数配置。接下来要做的不是继续折腾仪表,而是逐个接回外设,看到底接上哪一个就复现错误。
第二种,拔掉所有外设后 Err 18 依然存在。那问题大概率在仪表内部,优先怀疑格式模板存储区损坏、通讯参数被改乱,个别情况是主板存储电路出了故障。
这一步听起来简单,但很多维修员会跳过去直接进菜单翻参数,结果越翻越乱。先把故障范围砍掉一半,后面的工作才有的放矢。
2.2 第二刀:区分上电报警、按键报警与偶发闪烁
如果手机里有磅房管理员拍的视频,直接看报警出现的时机,这能省很多事。
上电就报 Err 18:优先怀疑模板损坏或仪表自检时模板校验失败。这种情况常见于模板下载中断、电池没电导致存储数据丢失、或者从旧仪表导出的模板灌进了新仪表。
按打印键才报 Err 18:优先怀疑打印格式模板里的字段错误,或者打印机握手信号异常。握手信号是打印机告诉仪表“我现在忙不忙”的一根控制线,接错、断开、打印机离线,仪表发出去的打印数据没有回应,就会报错。
连续通讯时报 Err 18:基本上跑不掉三个原因——上位机串口参数与仪表不一致、协议类型选错、通讯线受到干扰或串口被占用。
偶发闪烁、很快自己消失:这种现象最容易被人忽略,但恰恰是隐蔽故障的先兆。串口线破皮、接头氧化、附近有大功率设备启停造成干扰,都会让某几帧数据对不上,触发一次短时报警。
2.3 第三刀:把“每次必现”和“时好时坏”分开来看
我处理过一个案例,磅房反馈打印十次有三次 Err 18,换过打印机、换过数据线、重设过模板,问题一直没根治。到现场一看,打印机数据线从秤体穿线管经过的位置有一段破皮,屏蔽层搭在穿线管上,打印机一启动,信号就出乱码。
“每次必现”的故障,十有八九是参数错或模板错,不到万不得已不要怀疑硬件;“时好时坏”的故障,才需要把重心放到线缆、接头、干扰源这些物理环节上。判断思路反了,很容易把好的参数改成错的,还找不到根因。
3. 通讯帧排查:波特率、校验位、协议号三个位置最容易出错
3.1 一帧连续通讯数据从头到尾由什么组成
在进仪表菜单之前,先看懂一帧数据长什么样。地磅仪表对外连续发送的数据,常见是 ASCII 字符序列,典型结构大致包括:
- 帧起始符:可能是 STX 控制字符(十六进制 02),也可能是某个字母打头
- 仪表地址或站号:多台仪表并联时用来区分设备
- 命令或数据标识:比如用某个字母表示“稳定重量”“毛重”“净重”
- 数据本体:重量数字和单位
- 校验符:多数国产仪表用异或校验或累加和校验
- 帧结束符:ETX(十六进制 03)或回车换行
上位机软件收到这串字符后,会解析地址、识别标识、提取重量,再用约定的算法重新计算校验字符,和仪表发过来的校验符比对。任何一个环节不一致,数据直接被丢弃。上位机等不到有效数据,就会反复请求,仪表侧往往表现为发送超时或通讯类报警。
3.2 四个串口参数的匹配关系一张表说清
串口通讯有四个基础参数,必须上位机、打印机、仪表三端完全一致,少一个都不行。
| 参数 | 常见取值 | 出错典型表现 |
|---|---|---|
| 波特率 | 1200 / 2400 / 4800 / 9600 / 19200 | 数据完全乱码,甚至收不到数据 |
| 数据位 | 7 / 8 | 每个字符多一位少一位,内容错位 |
| 校验位 | 无 / 偶校验 / 奇校验 | 帧数据校验不过,偶发丢帧 |
| 停止位 | 1 / 2 | 收帧边界错乱,偶尔能通偶尔不能 |
举个实际例子:某公司更换了上位机软件,软件默认串口参数是“9600、8、偶校验、1位停止位”,而仪表还是出厂值“9600、8、无校验、1位停止位”。波特率没变,所以屏幕上看不到乱码,但每帧的校验字符都比对不上,上位机始终拿不到稳定重量,仪表这边就开始间歇性报 Err 18。把校验位改成偶校验后,立即恢复正常。
这类匹配问题,我用串口调试助手验证最省事:拿一根 USB 转串口线接仪表,打开调试助手,选对参数,如果能看到连续、整齐、能读懂的数据帧,说明仪表发送链路正常,问题出在上位机软件配置;如果看到乱码或者什么都不显示,优先查参数匹配。
3.3 协议号选错比参数不匹配更难发现
有的仪表菜单里除了波特率、校验位,还有一个不起眼的选项叫“通讯方式”或“协议号”。常见选项有连续发送、指令应答、打印协议、自定义协议等。
连续发送模式是仪表定时自发向外发数据;指令应答模式是仪表听到上位机发来特定命令后才回一帧;打印协议则是仪表把打印内容按串口输出给打印机或小票机。
协议号选错,表面参数全对,数据流方向却是错的。仪表设成指令应答,上位机却在被动等待,仪表自然不吭声;反过来,仪表设成连续发送,上位机却在等命令,双方都会超时。这种错误在菜单里不显眼,但出现频率非常高,尤其是换过上位机维护人员之后。
提示:串口调试助手是排查通讯帧最便宜的工具。接上线、设好参数、看数据内容,十分钟就能判断是仪表问题还是上位机问题。
3.4 一个容易忽略的联动:打印模板和连续通讯模板可能共用一套存储区
部分仪表的打印格式模板和连续通讯输出格式放在同一个存储区或同一套编辑工具里。磅房管理员为了改打印三联单的格式,用配置软件重新下发了一套模板,结果连续通讯输出也跟着变了,上位机收到的数据结构和原来完全不同。
这种情况最迷惑人:菜单里所有通讯参数都对,上位机参数也没动,数据就是解析不出来,仪表还偶发报 Err 18。排查方向会一直在“通讯参数”里打转,直到有人想起来模板被动过。所以每当我碰到通讯帧死活对不上的情况,都会顺便问一句:最近有没有下载过打印模板?有没有自己编辑过输出格式?这两条线看似独立,实际在不少仪表里是联动的。
4. 格式模板排查:非法字段、超长行、下载中断三个深坑
4.1 格式模板是怎么把重量数据“翻译”成打印内容的
格式模板的底层逻辑并不复杂:仪表内部预置了多个字段,比如“当前日期”“车号”“毛重”“皮重”“净重”“序号”“时间”等,每个字段对应一个代号。模板要做的就是把这些字段按顺序排列,加上必要的空格、汉字、分隔符,组成一行一行的打印内容。
模板可以存在仪表内部,也可以通过电脑软件编辑后下发。下发前,软件会把模板编译成仪表能识别的字节流,再加个校验值。仪表保存模板时,会把校验值一起写入。每次打印前,仪表重新计算一遍字段内容,发现和模板约定对不上,就直接终止打印,并在屏幕上给出 Err 18。
4.2 模板里最隐蔽的三个错误场景
第一种是非法字段代号。某型号仪表支持 0 到 29 号字段,模板里却写了一个 30。保存的时候软件不一定报错,因为软件对目标仪表的版本不敏感,但仪表在打印时解析到未知代号,无法生成内容,只能报 Err 18。
第二种是行长度超限。模板里堆放太多空格、制表符、回车换行,生成的打印行超过了打印机缓冲区允许的长度。打印机装不下,握手信号一直处于“忙”状态,仪表发送超时,错误又落到 Err 18 上。这种情况常见于非专业人员用编辑软件反复加空格对齐格式。
第三种是模板版本和仪表固件不匹配。从一台旧版本仪表上导出的模板,灌进新版本仪表,字段代号含义发生了变化,表面看模板文件完整,实际内容全是错的。这类问题没法靠肉眼判断,只有对照仪表支持的字段表逐个核查。
4.3 下载中断是最隐蔽的坑,我踩过不只一次
有一次,某地磅的管理员用电脑给仪表下载新模板,下载到一半的时候线缆被绊松了一下,软件提示“传输失败”。他马上重新下载一遍,这次显示成功。第二天开始,仪表打印偶尔报 Err 18,打印两联单尤其明显。
到了现场,我用配置软件把仪表里的模板读回来,发现模板内容看起来是完整的,用电脑软件重新下发一次标准模板后,问题消失,而且连续一周没有出现。原因后来也理清了:第一次传输失败时,模板数据已经写入了大约三分之二,第二次传输虽然完整覆盖了数据区,但仪表存储区残留了一段旧模板的索引信息,导致内部校验始终过不了。
这件事之后,我再下载模板必做三件事:先测串口通不通,传输过程中不动线材和电源,传输完成后断电重启并立即打一张测试页。三步走完,才敢判断模板是否真下载成功。
4.4 最小模板测试法:一步步把问题字段揪出来
如果怀疑模板本身有问题,又不想盲改,可以用“最小模板测试法”定位:
- 先把当前模板完整导出备份,存到电脑。
- 用配置软件把模板内容清掉,只保留一行最简输出,比如只打“序号”和“毛重”。
- 保存并下载到仪表,打一张测试页。
- 如果最简模板正常,说明仪表打印通道没问题,问题在模板内容。
- 每次加回一个字段,存一次、下载一次、打一张测试页。
- 加到哪个字段开始报 Err 18,那个字段就是嫌疑人。
这个方法耗时一点,但比对着模板文件猜来猜去高效得多,也适合没有厂家技术支持的情况。很多模板问题,用最小模板测试法十分钟内就能圈定范围。
5. 修复与验证:备份、重配置、分步确认的完整流程
5.1 动手前先备份,恢复出厂前更要备份
改任何参数之前,先把当前配置完整备份下来。备份有两种方式:
第一种,用厂家的配置软件连接仪表,导出参数文件和模板文件。这是最完整的备份,能覆盖所有菜单项。
第二种,没有电脑或软件的时候,至少用手抄或拍照记录每个相关菜单当前的数值。特别是通讯参数、协议号、模板版本这些字段,拍一张菜单界面比记在本子上更直观。
这里要特别提醒:不要轻易按“恢复出厂设置”。恢复出厂会清掉标定参数、零点追踪参数、分度值、量程这些关键项。如果没备份就恢复出厂,后面要重新用标准砝码做标定,现场未必有条件完成。恢复出厂是手段,不是起点,先备份再恢复才是安全的操作顺序。
5.2 先修通讯链路,再重建格式模板
排查和修复我习惯按一个固定顺序走,避免两头乱改:
- 先核对通讯链路参数,把波特率、数据位、校验位、停止位、协议号逐项对上。对不上的直接修正。
- 接上串口调试助手或配置软件,确认仪表向外发送的数据帧内容正确、校验正确。
- 通讯链路正常后,再处理格式模板。模板已乱的,直接重新下发一份标准模板;只是某一字段有问题的,用最小模板测试法定位并修改。
- 全部改完后断电重启,让仪表用新参数完成一次完整自检。
这个顺序的逻辑很简单:通讯帧是“路”,格式模板是“车”。路没修通之前,车本身再完好也跑不动。先确保底层链路稳定,再处理上层模板,每改一层只验证一层,出问题就知道是哪一层改错了。
5.3 最终验证清单:打印、采集、重启三项全过
修复完成后,我很少直接宣布“好了”,而是按下面这张清单做一轮完整验证:
| 验证项 | 具体操作 | 通过标准 |
|---|---|---|
| 打印验证 | 放一个标准砝码,打印一张三联单 | 内容完整、无乱码、不再报 Err 18 |
| 采集验证 | 上位机连续采集十分钟,模拟正常过磅 | 无丢帧、无超时、无 Err 18 重现 |
| 重启验证 | 断电重启,上电后立即手动打印一次 | 不再报警,自检正常 |
| 断电模拟 | 打印过程中突然断开打印机,再接回 | 故障能恢复,不再持续报警 |
如果这些项目全部通过,这台仪表的 Err 18 基本可以判定解决。若其中某一项失败,直接回到对应环节继续排查,而不是反复重启碰运气。
6. 把这次经验沉淀下来:台账、标签与可复用的排查思路
6.1 一份参数台账应该记哪些内容
很多磅房的 Err 18 反复出现,不是修不好,而是没有记录,每次都在重复踩同一个坑。我建议维护人员给每台仪表建立一份参数台账,至少包含:
| 字段 | 记录内容 |
|---|---|
| 日期 | 修改/维护时间 |
| 仪表编号 | 对应哪台秤 |
| 故障现象 | Err 18、打印乱码、通讯超时等 |
| 处理人 | 谁改的 |
| 改动项 | 波特率、校验位、协议号、模板版本等 |
| 改动前值 | 原始参数 |
| 改动后值 | 修改后参数 |
| 处理结果 | 验证方式与是否通过 |
下次同一台仪表再出问题,先翻台账,几分钟就能定位到上次改了哪里,大概率顺着反向核对就能找到原因。这个习惯帮我省过大量重复劳动。
6.2 标签和权限,是防止误改的两道保险
串口线是误改参数的重灾区。一台仪表后面通常挂着打印机线、电脑线、大屏幕线,时间一长没人分得清哪根对哪根,拔错线、插错口,Err 18 自然就跑出来了。
我的建议是用标签机给每条线的两端各打一个标签,标注“接打印机 COM1”“接上位机 COM2”“9600 8 N 1”,线材的端到端对应关系一目了然。这个动作成本极低,但在现场能省掉大量试错时间。
另一道保险是仪表菜单里的参数锁。很多仪表都有参数设置密码或前面板按键锁定功能。通讯参数、模板参数这类影响全局的配置,建议设成只有专人能改。磅房人员日常用秤、打单都不需要进通讯菜单,锁上并不会影响使用。
6.3 “先分链路、再查参数、后验证”适用于其他 Err 报警
Err 18 的排查思路其实可以迁移到更多仪表故障上。我习惯把它提炼成三步:先分链路,再查参数,后验证。
先分链路,是问自己故障发生在哪一段物理或逻辑通道上。传感器链路的报警通常和重量采集相关,显示链路的报警和屏幕驱动相关,通讯链路的报警和打印/输出相关。故障一出现,先定位链路,比乱改菜单靠谱得多。
再查参数,是在锁定链路后,逐个核对这一段链路涉及的配置项。通讯链路的参数就那几项,模板链路的字段就那些,逐项排除,总比整体推倒重来好。
后验证,是恢复正常后必须用实际动作确认。打印测试、通讯采集、断电重启,三者都过了才叫修好,而不是屏幕不亮代码就算胜利。
最后说一点个人体会:我修过的 Err 18 里,真正硬件损坏的比例很低,大部分是设置错位和模板残留。每次维修把“备份、定位、修改、验证、记录”这五步走完,很多看似神秘的 Err 18 都能顺藤摸瓜找到根因。尤其是模板下载中断那个坑,经历过一次就长记性了——现在每次下载模板前,我都会先测串口通不通再开始传,传完一定会断电重启并打一张测试页,确认无误才离开现场。