简介《XK3190-DS8耀华称重仪表说明书含通信协议》面向使用上海耀华XK3190-DS8数字式称重显示器的设备维护人员、衡器调试工程师与物联网称重系统集成开发者用于解决仪表接线、参数设置、串行通讯对接及现场故障排查等实际问题。整个压缩包为1个PDF文件约1.86MB按技术参数、安装连接、操作方法、选配件说明、维护保养、信息提示与附录的顺序编排目录清晰便于检索。安装章节给出前后面板功能示意图与各接口引脚定义数字传感器采用9芯D型插头座、全双工RS485、传输距离不超过1000米可接1至16只传感器打印机为25芯并行口大屏幕采用20mA电流环串口可选RS232或RS485且波特率可调。操作部分覆盖开机置零、去皮、日期时间设定、1023组皮重与1001组称重记录存储、报表打印及记录查询。附录中的通讯帧格式与提示代码对二次开发和排错尤其实用。目前已有7244人学习下载适合称重数据采集与远程监控项目参考。1. 地磅房那台表第三次上电才吐出对的数据地磅房那台 XK3190-DS8 换上去第三天物联网平台上的重量曲线开始跳变——同一车货上位机收到 70.15隔壁屏幕显示 7015。问题不在秤在说明书附录里那行小字tF2和tF3都叫「D2 连续通讯格式」一个每帧 8 字节一个每帧 9 字节。解析代码按 8 字节写的碰上 300 吨秤就整体错位。这类称重仪表的接入难点从来不是「装驱动」而是接口定义、参数编号、协议帧长三者对不上。XK3190-DS8 是数字式称重显示器只能配数字传感器全双工 RS4851~16 个传感器传输 1000 米上位机侧 RS232/RS485 二选一波特率 600~9600 五档。参数错一位现场就是数据错乱或者干脆不通讯。下面按「环境 → 接线 → 参数 → 协议 → 排错 → 验证」走一遍照着做能跑通。2. 环境清单先列清XK3190-DS8 的接口、供电与版本对照动手前先把现场条件摊开看一遍。这套东西不是插上 USB 就能用的消费级设备它有一堆物理接口、一个固定的传感器速率、还有两套外壳和两个协议版本任何一项对不上后面全白干。2.1 供电与环境别把仪表当普通工控机使仪表交流供电是 AC 220V允许 -15% ~ 10% 波动50Hz±2%。地磅房电压不稳是常态白天 loader 一启动就掉到 195V 以下这种场合我一般会在仪表前加一台 500VA 的稳压器比事后换主板便宜。机内保险丝 0.5A熔断后必须换同规格拿 1A 顶上去等于把保护扔掉。直流侧走外置 12V/7Ah 蓄电池红色插头接正极、黑色接负极。说明书里有一句很容易被忽略极性接反或短路会让直流自恢复保险丝断路正确接回后重新开机即可恢复。这不是永久损坏但现场第一次遇到会以为表烧了。充电约 20 小时关机充电更快首次使用必须先充满再用。电量指示在显示窗左侧三个符全亮是充足只剩最下面一个就该考虑充电继续用下去仪表会自动断电保护电池。使用温度 -10℃ ~ 40℃储运 -25℃ ~ 55℃相对湿度 ≤85%RH预热时间 ≤30 分钟。北方冬天早上开门就称重前半小时读数漂是正常的别急着去调标定。外壳两种295×185×200 塑料壳约 2.2 公斤316×250×170 铝合金壳约 3.5 公斤。粉尘大、振动强的料场选铝合金室内台秤用塑料壳够了。2.2 四类接口一张表先分清哪个口干什么XK3190-DS8 后面板塞了四种电气接口长得像但完全不通用的那种。先看表再动手。接口接插件电气方式速率距离能力数字传感器9 芯 D 型全双工 RS485固定 9600 baud≤1000 米1~16 个传感器DC10V ≤400mA上位机通讯15 芯 D 型与大屏共用RS232 或 RS485600/1200/2400/4800/9600 可选RS232 ≤30 米RS485 ≤1200 米连续或指令应答大屏幕显示15 芯 D 型 9、10 脚20mA 电流环600≤1200 米二进制串行每 100ms 三帧打印机25 芯 D 型标准并行—短线针打、宽行、热敏微打、面板式微打这里有两处特别容易翻车。第一传感器口和上位机口是两个独立的通讯通道传感器那侧速率是写死的 9600上位机这侧用bt参数调改bt不会影响传感器。第二15 芯插座是复用座RS232 占 6、7、8 脚RS485 占 1、2、8 脚大屏幕占 9、10 脚。三路信号挤在一个座子上插错针就是互相打架。2.3 版本与外壳V2.00 说明书里的两个 D2 格式手里这份是 V2.00 版说明书附录里同时保留了「老 D2」和「新 D2」两种连续输出格式靠tF参数选。老格式每帧 8 字节发送的是 70.15 这种净重输出形如51.070051.0700新格式每帧 9 字节给 300 吨大秤用的输出形如51.0700051.07000。两者都是 ASCII、低位在前、用「」分隔。判断该用哪个很简单看最大称量。常规 100 吨以下、分度值到 10kg 的场合老格式够用300 吨级汽车衡必须上新格式否则高位被截。这一步定错后面写的解析代码全废——这就是开头那个「7015 对 70.15」的来源。另外仪表可存 1023 组车号皮重、255 种货号、1001 组称重记录。做物联网数据采集时这 1001 条是断网续传的缓冲池不是无所谓的缓存采集程序重启后先按日期回读一遍再把游标归零能少丢一批数据。3. 接线落地9 芯传感器座、15 芯通讯座、25 芯打印座的正确顺序接线这一章值得单独拎出来写因为现场 80% 的「仪表坏」最后都查成接错线。DS8 的接口定义比较细厂家给的线色对照还有好几套必须逐个核。3.1 数字传感器全双工 RS485 的交叉接法仪表用的是全双工 RS485四根信号线发送正、发送负、接收正、接收负。全双工的意思是自己发的同时能收所以仪表侧的「发送」必须接到传感器侧的「接收」反之亦然。这一交叉是所有错误的源头。仪表 9 芯脚号仪表侧定义应当接到传感器端2信号发送负-T信号接收负-R4信号发送正T信号接收正R3信号接收负-R信号发送负-T5信号接收正R信号发送正T6电源正V电源正V9电源负-V电源负-V1屏蔽屏蔽线电源两脚不交叉屏蔽单独走 1 脚。传感器端的线色各家不同说明书列了三套对照某品牌是棕/黄/白/蓝/红/黑另一套是白/绿/黄/蓝/红/黑第三套把其中一根写成浅黄或棕色说明连厂家自己都在同一型号上改过色。我的做法是永远以传感器接线盒内标签为准不背色表万用表蜂鸣档测一遍 -T 和 T 之间的电阻几百欧到几 kΩ 之间才算正常开路就是压接没压透。线材方面超过 300 米的汽车衡我一般用 0.75mm² 屏蔽双绞屏蔽层只在仪表侧单端接地两端都接会形成地环流。总线末端加 120Ω 终端电阻仪表侧不加——这是 RS485 的常规做法说明书没提但长距离不加会随机丢包。3.2 15 芯插座RS232 用 6/7/8RS485 用 1/2/8上位机连这个口。仪表同时具备 RS232 和 RS485具体用哪组脚看你怎么接RS232第 6、7、8 脚传输距离 ≤30 米。适合仪表就在工控机旁边、线缆走线槽的场合。RS485第 1、2、8 脚传输距离 ≤1200 米。适合仪表在地磅房、上位机在办公楼的情况。大屏幕第 9、10 脚20mA 电流环600 波特≤1200 米。一个限制必须记住连续方式下RS232 和 RS485 可以同时用命令方式下只能二选一。因为指令方式需要仪表回帧两路同时发会撞在一起。现场做双屏显示本地大屏 远端系统的本地走大屏电流环远端走 RS485 连续方式这样互不干扰。USB 转 485 转换器选隔离型带 TVS 的更好。地磅房附近有变频器、电焊机非隔离模块被浪涌打坏是常事坏了还会顺着地线把仪表那侧的口一起带走。我一般的配置是转换器独立供电A/B 双绞屏蔽单端接地USB 侧拔插前先断电。3.3 打印与上电顺序先接线、再开仪表、最后开打印机打印机走 25 芯标准并口说明书里能配的类型包括针式微打、宽行针打、热敏微打POS58、T58D 一类还有面板式微打用 M-150Ⅱ 机头96 点阵纸宽 44.5±0.5mm、厚 0.07mm 的普通白纸。重点不是选型是上电顺序说明书连用了好几个感叹号先接好联接电缆再接通仪表电源最后开打印机电源结束时反过来先关打印机再断仪表最后拆线打印机必须可靠接地。顺序颠倒的后果说明书说得很直白——可能损坏仪表输出端口或打印机输入端口甚至同时损坏两边。这不是危言耸听并口是单向强驱动带电插拔的瞬间电流回灌能把驱动芯片打穿。大屏幕那路同理要求使用配套专用联接线接错会同时损坏两个端口。改打印参数之前还有一条容易忘在标定或修改打印参数后需清除所有称重记录。因为旧的记录是按老格式存的改了Y参数里的单位位或者车号位数以后回读出来的内容会串位。4. 通讯参数落配置Adr、bt、tF 三个参数与两套协议解析硬件接好、灯亮、屏幕有数接下来才是真正的配置活。DS8 的参数不是用菜单树是在称重显示状态下输密码进参数编号一位一位敲进去的。手速快了容易漏位建议对照着按键。4.1 按键进设置密码 98 走通讯密码 97 走打印两组密码别混通讯参数称重状态下按【参数设置】输入 9、8按【输入】显示 P00再按 1、按【输入】进 P01之后逐项设置。打印参数按【设置】输入 9、7按【输入】显示 P00按 1 进 P01之后是自动打印、打印机类型、打印限制、格式、走纸行数等十来项。进错密码设置的是另一组参数改完发现通讯还是不通就是因为改的是打印那边。另有一条硬性要求正常工作时应把标定开关拨到禁止标定的位置防止现场误碰改掉量程。4.2 Adr / bt / tF 怎么填一张取值表和三个判断三个参数取值和含义如下显示含义取值说明Adr **通讯地址01~26示例填 14bt*波特率0~4060011200224003480049600tF*通讯方式0~30连续发送不接收1指令应答2老 D2 连续8 字节3新 D2 连续9 字节怎么选只要单向读数、上位机不做控制选tF0仪表一直往外吐当前称量简单可靠。要按需读毛重/皮重/净重或者多台表挂同一条总线选tF1指令应答一问一答不打架。沿用老系统、代码已经按 8 字节写完的选tF2。300 吨级汽车衡、或者正在新建采集程序选tF3一步到位。示例里Adr填的是 14也就是地址 14bt填 1即 1200 波特tF填 0连续发送。设完最后一步按【输入】退出显示回到称重状态参数生效。串口侧的电脑参数是固定的8 位数据位、1 位停止位、无校验、无流控。因为协议帧本身自带起始位 0x02 和结束位 0x03硬件流控不需要也不该开。4.3 连续方式12 字节一帧的解析代码tF0时仪表按当前称量毛重或净重连续发送每帧 12 字节字节内容10x02XON开始2符号位 或 -3~8称量数据高位在前共 6 位9小数点位数从右到左 0~410异或校验高 4 位11异或校验低 4 位120x03XOFF结束异或 第 2 ⊕ 第 3 ⊕ …… ⊕ 第 8 ⊕ 第 9 字节也就是从符号位算到小数点共 8 个字节。注意不含起始 0x02也不含结束 0x03。import serial ser serial.Serial( portCOM3, # Linux 下换成 /dev/ttyUSB0 baudrate1200, # 必须与仪表 bt 参数一致 bytesize8, parityN, stopbits1, timeout0.5, ) def enc_nibble(n: int) - str: # 高/低 4 位 ≤9 加 0x309 加 0x37转成 ASCII return chr(n 0x30) if n 9 else chr(n 0x37) def xor_continuous(body: bytes) - str: # body 为第 2~9 字节共 8 个 x 0 for b in body: x ^ b return enc_nibble((x 4) 0x0F) enc_nibble(x 0x0F) def read_frame(): buf b while True: ch ser.read(1) if not ch: continue if ch b\x02: buf b\x02 elif buf and ch b\x03: return buf ch elif buf: buf ch raw read_frame() body raw[1:9] # 符号 6 位数据 小数点 if xor_continuous(body) ! raw[9:11].decode(ascii): raise ValueError(校验不通过先查波特率和帧长) sign -1 if raw[1:2] b- else 1 digits raw[2:8].decode(ascii) point int(raw[8:9].decode(ascii)) value sign * int(digits) / (10 ** point) print(value)代码逻辑先按 0x02/0x03 切帧避免串口粘包正文取第 2 到第 9 字节做异或与第 10、11 字节比对然后按符号、6 位数字、小数点位数还原成浮点。三个参数必须对baudrate跟bt一致bytesize8/parityN/stopbits1是协议规定的point直接决定小数点千万别自己猜。如果收到的是 9 字节一帧、以「」分隔的51.07000形态那是tF3解析方式完全不同要把分隔符切出来的字符串按低位在前反转。4.4 指令方式A/B/C/D 四个命令与两字节异或tF1时改成上位机主动问。发送帧 6 字节02 地址 命令 校验高 校验低 03。地址是 A~Z 的字符Adr 填 01 时帧里放的是字符 A0x41不是数值 0x01——说明书示例写的就是02 41 41 30 30 03很多人按数值地址发永远收不到回应。命令四个A 握手、B 读毛重、C 读皮重、D 读净重。按地址 01 算四条命令分别是命令含义发送十六进制A握手02 41 41 30 30 03B读毛重02 41 42 30 33 03C读皮重02 41 43 30 32 03D读净重02 41 44 30 35 03def build_cmd(addr_char: str, cmd: str) - bytes: body [ord(addr_char), ord(cmd)] x body[0] ^ body[1] # 指令方式只对地址、命令两字节异或 hi, lo (x 4) 0x0F, x 0x0F return bytes([0x02, *body, ord(enc_nibble(hi)), ord(enc_nibble(lo)), 0x03]) print(build_cmd(A, B).hex( )) # 02 41 42 30 33 03注意和连续方式的差别连续方式算 8 个字节指令方式只算地址和命令 2 个字节。这是两套规则写成同一个函数就会错。仪表回帧里 A 命令共 6 字节无数据B/C/D 各 14 字节02 地址 命令 符号 6 位重量 小数点位 校验高 校验低 03。回帧的异或范围是第 2 字节到倒数第 3 字节。校验的高/低 4 位转 ASCII 也有讲究值 ≤9 时加 0x309 时加 0x37。异或结果 0x0B高 4 位 0 转成字符0低 4 位 11 加 0x37 得 0x42也就是字符B最终校验字段是字符串0B。用十进制加法硬凑会得到乱码。5. 现场排查五条接线与协议的血泪记录这一章全是踩过的坑按「现象 → 原因 → 解决」记遇到对得上的直接照方抓药。5.1 接线上电类的三条现象一仪表上电后自检完不进称重状态或者一直显示找不到传感器。原因是 9 芯插头做成了直通——仪表的 -T 接了传感器的 -T。全双工 RS485 必须收发交叉直通等于自己跟自己对讲。解决断开电源按第 3 章那张表逐根核2 接对端 -R、4 接 R、3 接 -T、5 接 T用万用表测通断别信压线钳上的颜色。重接后上电自检9999999到0000000走完就该进称重。现象二接上打印机一开机仪表就黑屏或者打印口冒烟。原因是带电插拔或者上电顺序反了。并口是强驱动打印机先开、仪表后开开机瞬间的电位差会通过信号线回灌。解决立刻断电检查仪表 0.5A 保险丝确认顺序改成「接线 → 开仪表 → 开打印机」关机反过来打印机单独可靠接地不跟变频器共用一条地线。已经烧了口子的只能返修没有后悔药。现象三蓄电池接上没反应以为表坏了。原因是正负极接反或短路触发了直流自恢复保险丝。解决红色插头对正极、黑色对负极正确接回后重新开机即恢复不用换件。首次使用的电池必须先充 20 小时再上机否则电量指示一路掉到底仪表自动断电保护看着像故障其实是保护动作。5.2 数据解析类的两条现象四上位机收到的重量是对的但小数点永远差两位或者 300 吨秤读出来只有 70 吨。原因是tF2和tF3混用。老 D2 每帧 8 字节含小数点新 D2 每帧 9 字节两者都叫「连续格式」代码按 8 字节切就会整体错位。解决先看仪表tF实际值再改解析器换型或者换秤之后把帧长、分隔符、小数点位置三项重新确认一遍别直接复用旧代码。现象五指令方式发出去没回应换成连续方式却正常。两个原因叠在一起一是地址用了数值 0x01 而不是字符A0x41二是校验按连续方式的 8 字节范围算的。解决地址按Adr值映射成 A~Z 字符指令帧只对地址和命令两字节异或回帧则从第 2 字节算到倒数第 3 字节另外注意命令方式下 RS232 和 RS485 只能选一路两路同时接会互相顶掉。还有一条不算故障但经常被问车号超过 1023 个时仪表显示Err 10这不是通讯错是存储满了得按【检查】或【清除】清掉一部分车号或全部记录。清除后不可恢复操作前先想清楚。6. 装完怎么验证从一帧原始报文到一条能入库的记录装完不等于通了。我习惯走三步验证每步都有明确的判据不靠「看着像对的」。第一步空秤验零位。上电自检完成后不放任何东西连续方式下抓 20 帧符号位应当全是6 位数据全0小数点位数与你设置的分度值一致。这一步过不了说明传感器接线或量程设置有问题别往下走。第二步加载验数值。放上已知砝码或者上车称重把解析出来的浮点值和仪表 LED 显示逐位比对包括小数点。用下面这张对照表快速定位偏差类型现象大概率原因检查点数值差 10 倍/100 倍小数点位数取错第 9 字节符号反了第 2 字节判断写反/-判定数值错位、忽大忽小帧长按 8 字节切了 9 字节帧tF参数读数正确但校验总失败异或范围写错连续 2~9指令 2~n-3第三步验指令与补打。切到tF1依次发 A、B、C、D 四条命令确认回帧长度分别是 6、14、14、14 字节且符号位、重量位、小数点位置与 LED 显示一致。再按一次【打印】存一组记录故意关掉打印机电源制造一次失败然后开机按【补打】看能不能把当前贮存的记录补出来——这条走通说明存储和打印链路都活着。从那以后我每次接新表都会先用串口助手把原始报文存成一份 hex 文本连同Adr、bt、tF、Y参数一起记在交接单上。换人接手时这份 hex 就是唯一的黑匣子比任何口头描述都管用。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?