简介:工业自动化场景中,串口通讯仍是连接PLC、仪表和传感器的主流方式。PCI串口卡作为扩展串口的经典方案,凭借稳定性和抗干扰能力广泛应用于老工控机改造。理解驱动安装只是起点,硬件拨码、模式切换与回环测试才是确保通讯畅通的关键。研华PCI-1680U作为常见双端口RS-232/422/485通讯卡,在Windows与Linux下的驱动部署存在诸多细节。通过系统化的调试方法,可有效解决设备管理器识别但无COM口、RS-485收发异常、高波特率丢包等典型问题。本文结合工程实践,梳理从硬件准备到驱动选型、回环验证及故障排查的完整流程,帮助技术人员快速掌握工业串口卡的正确使用方式。 前阵子帮朋友改造一条小产线,工控机上只剩一个PCI槽,手里正好有块研华PCI-1680U,折腾了两天才把驱动彻底跑稳。这块卡在工控圈里存量不小,但相关驱动安装、调试的完整经验却很少能搜到,很多朋友卡在“设备管理器里能看到卡,却没有COM口”这一步就直接放弃了。这篇就把我实际踩坑、反复验证过的流程完整写出来,覆盖Windows和Linux两大系统,从硬件拨码到驱动选择,从回环测试到485收发异常排查,尽量做到拿来就能用。
研华PCI-1680U本质是一块双端口RS-232/422/485 PCI通讯卡,典型的工业串口扩展方案。它的价值在于给老工控机、工控一体机扩展出两路原生串口,用来接PLC、条码枪、称重仪表、变频器或者老式数控设备都很稳。很多人一听到“驱动”两个字就头疼,其实只要搞懂几个关键点,安装和排查并不比装个打印驱动复杂多少。
1. 为什么还要折腾一块老PCI串口卡
1.1 双口串口卡的典型应用场景
别被“PCI”这个字眼劝退,2025年的今天,老PCI槽设备依然大量存在。许多工厂里的工控机、嵌入式整机,因为要兼容旧采集卡、运动控制卡,机箱里还保留着PCI插槽。这类设备通常跑Windows XP、Win7或者Win10 LTSC,系统不会轻易升级,所以USB转串口方案并不总是最合适的选择。
这块卡最常见的三个使用场景:
- 设备联网改造:老机床、老PLC没有以太网口,但带有RS-232或RS-485串口,需要用工控机作为数据网关。
- 多串口采集:一套机器上同时挂了电子秤、条码枪、温控仪表,主板自带的COM口不够用,插上PCI-1680U立刻多出两路独立串口。
- 长距离稳定通讯:RS-485总线要走几十米甚至上百米,USB转串口在线路稍长时很容易出现丢包,PCI插槽板卡天生就更稳。
我用这块卡主要是为了接一台台达PLC和一台海康读码器,一个走RS-232,一个走RS-485,两个口同时工作,一跑就是十几个小时,稳定性和板载PCI串口比,USB方案完全没法比。
1.2 驱动在整套串口方案里扮演什么角色
很多人以为“插上卡,系统自己就能识别”,这个想法对PCI串口卡来说只对了一半。PCI总线确实能识别到设备,但系统还不知道这块卡对应的串口控制器该怎么初始化。驱动在这里承担三件事:
第一,把PCI设备映射成标准的COM口或ttyS设备,让上层软件能像操作普通串口一样收发数据。
第二,初始化板载UART控制器,配置FIFO缓冲区大小、中断触发方式和波特率发生器。1680U这类卡用了大容量FIFO,驱动如果没把缓冲区参数配好,高速通讯时必丢数据。
第三,管理板卡的特殊功能,比如RS-422/485模式切换、终端电阻配置、隔离保护逻辑。这些功能有些靠卡上跳线实现,有些靠驱动寄存器间接控制,驱动不装对,软件层面根本无法触发。
所以驱动不只是“装完能用”这么简单,它直接决定了串口通讯的稳定性上限。我见过很多现场,驱动说装好了,串口助手也能打开,但跑Modbus轮询就是总报错,最后查来查去,问题就出在驱动版本太老,对高波特率支持有缺陷。
2. 装驱动前的关键准备:硬件识别与驱动选型
2.1 先看卡上的DIP开关和跳线
这一步很多人忽略,甚至装完驱动发现485通讯不正常才回头翻硬件手册。PCI-1680U的卡身上有几个关键拨动部件:工作模式选择开关、终端电阻跳线,部分版本还有COM口映射顺序的跳线。
安装驱动之前,先做一次硬件状态确认:
- 确定板卡要工作在RS-232还是RS-422/485模式,按手册把对应拨码拨到正确位置。
- 如果走RS-485总线且通讯距离较长,终端电阻跳线需要按实际拓扑决定是否短接。
- 确认卡上的串口线序,别把TXD/RXD接反,接反后驱动再正常也收不到数据。
以485通讯为例,很多人在驱动上折腾半天,最后发现卡上DIP开关还在RS-232档位,发送端自然没有任何电平输出。先硬件后软件,这个顺序一定不能乱。
2.2 从哪个渠道拿驱动最靠谱
市面上能下载驱动的渠道很多,但我的建议只有两个:
第一,研华官网支持专区。在官网搜索“PCI-1680U”就能进入产品页面,通常在“下载”或“支持”分类下有完整的驱动包。这里拿到的驱动版本、说明文档、硬件手册都是对应这个型号的,不会出现装错的情况。
第二,研华的设备管理工具Advantech Device Manager。这个工具类似一个驱动管家,装到系统里后会自动识别研华的板卡,然后推荐对应驱动版本。我个人的习惯是先装这个工具,让它自动帮我找版本,因为人工去官网找驱动,很容易找错隔壁型号的下载包,比如把PCI-1680的驱动装到PCI-1680U上,系统不蓝屏就算运气好。
至于第三方驱动站、某度搜出来的驱动精灵之类,我强烈建议避开。工控板卡驱动讲究“原版原味”,第三方打包的驱动经常附带旧版本控件、缺少签名文件,装完反而会出现兼容性报错。
2.3 Windows系统版本与驱动的兼容性取舍
PCI-1680U在Windows XP时代是主力通讯卡,到了Win7、Win10时代,官方驱动也在不断更新。我实测的三个典型环境:
- Windows XP 32位:老版本驱动即可,没有任何兼容问题,这个系统本身就该退役了,除非特殊情况不建议再装。
- Windows 7 32位/64位:官方新驱动依然支持良好,不需要特殊设置。
- Windows 10/11 64位:需要安装较新的驱动版本。如果遇到“数字签名无法验证”的提示,要进入系统高级启动选项,禁用驱动强制签名后再装。
我目前主力环境是Windows 10 LTSC 64位,用的官方最新版驱动,稳定运行半年没有掉过链子。这里的核心经验是:别因为系统能识别旧版就坚持用老驱动,老驱动在大容量FIFO和中断处理上可能存在兼容问题,特别是在11代以后的新主板上,老驱动很容易导致高波特率数据丢帧。
3. Windows下的驱动安装与串口配置实战
3.1 从插卡到认到两个COM口的完整流程
以Windows 10 LTSC为例,完整流程如下:
- 关机断电,把PCI-1680U插入空闲PCI槽,拧紧挡板螺丝。
- 开机进入系统,正常情况下系统会提示“发现新硬件”,设备管理器里出现带问号的PCI设备。
- 如果系统自动联网搜索驱动,大概率会失败或装一个通用驱动。我建议直接在设备管理器里右键该设备,选择“更新驱动程序” -> “浏览我的电脑以查找驱动程序”。
- 定位到从官网解压的驱动目录,勾选“包括子文件夹”,点击“下一步”。
- 安装过程中如果提示“不信任的发布者”,选择“仍要安装”,前提是你确认驱动包是从官网下载的。
- 安装完成后,设备管理器里“端口(COM和LPT)”分类下会新增两个设备,一般显示为“Advantech PCI-1680U: COM3”和“COM4”。
到这一步,两块串口基本驱动完成,但还不能马上投入使用。建议在设备管理器里打开两个COM口的属性,进入“端口设置”,把波特率、数据位、停止位先按你的设备需求设定好,比如PLC常用9600、8、N、1,读码器有些用到115200,这个提前设置可以避免后续调试时报参数错误。
3.2 RS-232/422/485模式切换:硬件为主,软件为辅
这里要说清楚一个容易混淆的点:PCI-1680U的工作模式主要由卡上DIP开关决定,驱动更多是配合识别和初始化,而不是用软件随意切换。
具体来说:
- 如果卡上拨到RS-232模式,两个COM口就是标准的RS-232电平,可以直接接PC串口线或工控设备的DB9接口。
- 如果拨到RS-485模式,需要注意接线是A/B两线,不是RXD/TXD三线。很多初学者把设备的RXD接到卡的TXD上,结果收发全无反应,就是因为485是差分信号,必须A对A、B对B。
- RS-422模式则是四线制,TXD+/-和RXD+/-分别对应,适合点对多点全双工通讯。
驱动安装后,你可以用串口调试工具测试两个口是否都能正常打开,但模式切换本身必须依赖硬件设置。换句话讲,你先把卡上的模式拨对,驱动才能提供一个可用的通讯链路。
3.3 用回环测试验证驱动是否真正跑通
驱动装好、模式拨对,不代表万事大吉。我每次装完必做一次回环测试,这个操作能快速验证驱动、串口控制器、硬件链路是否全部正常。
回环测试的操作方法:
- 准备一个DB9公母头转换器,把TXD和RXD两个引脚用导线短接。如果不方便做转接头,直接找一根两头都是公头的串口线,用杜邦线在接头处短接2脚和3脚。
- 打开串口调试助手,选择对应的COM口,波特率设为115200,打开串口。
- 在发送区输入一串测试字符,点击发送,如果接收区能原样收到同样的字符,说明发送回环正常。
- 再试一次用较低波特率,比如9600,看是否依然正常。这一步能排查波特率自动适配问题。
两个COM口分别测试一遍。如果测试1口正常、2口不通,多半是2口对应的接线或卡上跳线有问题;如果两个口都不通,优先检查驱动版本、PCI槽接触以及回环线是否接对。
回环测试是一个性价比极高的验证手段,能把问题范围从“驱动、硬件、线缆”快速缩小到具体环节。我发现很多客户报“驱动装不好”,实际是硬件或线缆问题,并非驱动本身。
4. Linux下的驱动编译与加载
4.1 工业现场为什么还要在Linux下用这块卡
越来越多的工控项目开始用Linux,特别是基于Debian、Ubuntu或自研嵌入式系统的边缘网关。研华PCI-1680U在Linux下依然可用,只是安装方式和Windows差别很大。
Linux下,驱动有两种途径:一种是内核自带的8250_pci驱动直接识别,另一种是使用官方提供的Linux驱动源码编译加载。具体走哪条路,取决于你的内核版本和板卡识别情况。
先看系统认不认卡,命令行执行:
lspci -v | grep -i -A5 "1680"如果看到类似“Serial controller”的描述,说明PCI设备已经被内核识别。接着检查是否自动生成了串口设备:
ls -l /dev/ttyS*如果出现了新的ttyS设备,先别急着高兴,还要测试通讯是否正常。如果系统只识别PCI设备但没有ttyS节点,就需要走官方驱动编译流程。
4.2 官方驱动模块的编译安装步骤
研华官方提供了Linux驱动源码包,常见的是sci1680内核模块。解压后目录里有Makefile,编译前需要确保系统安装了内核头文件和gcc:
sudo apt install build-essential linux-headers-$(uname -r)进入驱动源码目录,执行:
make sudo make install sudo modprobe sci1680加载模块后,再检查:
dmesg | tail -20 ls -l /dev/ttyS*正常情况下会看到新生成的ttyS设备编号,同时在dmesg日志里能看到“ttyS3: detected caps 00000700”之类的提示,说明串口控制器已经初始化完成。
我给一台Ubuntu 22.04机器编译时,遇到过一个问题:新版内核把串口子系统内部接口改了,官方老驱动源码编译报错,提示找不到某些内核符号。解决思路是打补丁或改用内核自带的8250_pci驱动。如果你也碰到类似问题,优先考虑升级驱动源码到最新版本,实在不行就回头用内核通用驱动。
4.3 内核通用驱动的启用方法
很多Linux内核已经内置了对PCI串口卡的支持,16550A兼容的UART设备基本都能识别。如果lspci能看到设备但没有生成ttyS,可以尝试强制加载8250驱动:
sudo modprobe 8250_pci sudo modprobe 8250然后查看:
dmesg | grep -i tty如果还是没有设备节点,可以尝试在启动参数里追加“8250.nr_uarts=”来增加串口数量,但这一步涉及到内核配置,普通用户不要轻易尝试,更适合有一定内核经验的人操作。
Linux下调试串口,可以先用Python写一个简单的回环测试脚本,用pyserial库向新生成的串口设备发送数据,同时接收。这里要注意权限问题,当前用户要加入dialout组:
sudo usermod -aG dialout $USER重启登录后,再用串口工具测试。如果不加这个权限,会报“Permission denied”,很多人在这一步反复卡住。
5. 常见故障排查与避坑实录
5.1 设备管理器出现黄色感叹号
这是装工控驱动时被问得最多的问题。PCI-1680U在设备管理器里出现黄色感叹号,原因一般有几种:
- 驱动版本和系统版本不匹配,尤其是Windows 10以上系统用老驱动。
- PCI槽接触不良或者槽位供电不足,特别是老主板上的PCI槽,氧化会导致设备无法正常初始化。
- 系统里有其他硬件占用了中断资源,这种情况少见但存在。
排查时,先卸载当前驱动,重新插拔板卡,更换一个PCI槽位再试。如果问题依旧,进入驱动属性,查看“错误代码”,代码10一般表示设备无法启动,代码28表示未安装驱动。根据错误代码再去官网查相关说明,比盲目重装系统高效得多。
5.2 RS-485收发异常,发送正常但收不到响应
485模式下最常见的故障是:能发不能收,或者收发都乱码。这里要区分硬件问题还是驱动问题。
先做的检查项:
- 确认A/B线没有接反。485总线对极性有明确要求,A接A、B接B,接反了就是收不到数据。
- 确认通讯两端共地。这句话说一百遍都不嫌多,485总线虽然是差分信号,但最好还是拉一根公共地线,否则在一些强干扰现场会随机丢包。
- 确认终端电阻。总线两端各接一个120欧姆终端电阻,短总线可以只在一端接,两端的匹配电阻不能乱加,否则电阻值过低会让驱动器过载,波形变形。
驱动本身导致485完全不通的情况相对较少,但我在实践中遇到过驱动中断参数配置不当导致收发切换不及时的问题,具体表现为上位机发完请求后,485芯片来不及从发送模式切回接收模式,导致响应帧的前几个字节丢失。这类问题可以考虑从软件上做延时,或者干脆换更新版驱动。
5.3 波特率不准、数据丢包的处理建议
有一类故障很隐蔽:低速通讯一切正常,一上115200就频繁丢包。PCI串口卡的数据传输链路包括:工控机软件 -> 驱动 -> PCI总线 -> 板卡UART芯片 -> 电平转换 -> 通讯线缆。
任何一个环节出了问题都会丢包。优先级最高的排查方向:
- 线缆质量。工控现场如果用劣质屏蔽线,高波特率下误码率会显著上升,尽量使用合格的屏蔽双绞线。
- 驱动FIFO设置。Windows下一些研华驱动开放了高级设置,可以调整接收缓冲区大小。如果缓冲区设得太小,系统处理不及时就会丢数据。
- USB和PCI的差异。如果同一条通讯链路用USB转串口就有问题、用PCI卡就正常,那基本可以排除驱动问题,问题在总线通讯环节。
为了定位丢包问题,我惯用的办法是:用串口调试助手向另一台机器连续发送大量数据,比如一次发送100KB,然后在接收端统计收到的字节数。两边计数如果一致,说明物理链路没问题,重点检查上层协议;如果不一致,就要逐步排查线缆、终端电阻和驱动参数了。
5.4 PCI-1680U、USB转串口与PCIe串口卡的选型对比
经常有人问,台式机装串口卡,到底选PCI还是PCIe,还是直接用USB转串口?我按我的实际经验给个对照表:
| 方案 | 适合场景 | 稳定性 | 成本 | 典型限制 |
|---|---|---|---|---|
| PCI-1680U | 老工控机、要求高稳定性的多串口场景 | 高 | 中等 | 必须有PCI槽,非主流新主板不适用 |
| USB转串口 | 临时调试、笔记本扩展、一次性测试 | 一般 | 低 | 对时序敏感场景容易抖动,多个USB转串口共同工作时可能互相干扰 |
| PCIe串口卡 | 现代台式机/工控机扩展多串口 | 高 | 中高 | 需要主板有空闲PCIe槽,成本比PCI旧卡高 |
我自己的判断标准:固定安装、长期运行、对通讯稳定性要求高的设备,优先选PCI或PCIe板卡;只做调试、临时接笔记本,USB转串口完全够用。PCI-1680U的价值现在恰恰在很多老设备改造项目里体现出来,一台用了多年的工控机只需要加一块卡就能多出两路可靠串口,不用换整机。
6. 几个别人不会告诉你的细节技巧
这里分享几个我在实际使用中积累的小技巧,算是一些文档里不会特意写的经验。
第一,驱动安装顺序会影响COM口编号。如果系统里还有其他串口设备,安装PCI-1680U驱动后COM口编号可能靠后,比如直接跳到COM5、COM6。有些上位机组态软件对COM口编号有限制,只支持COM1到COM4。遇到这种情况,可以在设备管理器里把其他设备的COM口编号提前,或者给PCI-1680U的两个端口手动指定一个没有被占用的编号,重启后就能固定下来。
第二,研华Device Manager除了装驱动,还可以做端口诊断。软件界面里能看到每个COM口的状态、板卡温度之类的信息,对现场远程排查问题很有用。我一般装完驱动后顺手打开这个工具,跑一遍自诊断,顺便确认两个口是否都在线。
第三,在485模式下,如果通讯持续运行数小时后出现偶发超时,先别急着换卡。查一下总线上是否只有两台设备在通讯,如果有多台设备,注意从机地址是否冲突,地址冲突在485总线上的表现就是间歇性收到乱码。这个和驱动本身没有关系,但现场排查时很容易被误判成驱动故障,白折腾好几个小时。
第四,如果你用的是虚拟机,比如VMware或Hyper-V里跑工控软件,PCI-1680U这类PCI直通卡驱动会比较麻烦。虚拟化平台默认不会把物理PCI串口卡映射到虚拟机里,这种情况下优先考虑USB转串口给虚拟机用,别执着于物理PCI卡。
最后再分享一个经验:调试串口驱动时,桌面上的串口调试助手一定要选支持“按十六进制发送”的工具,不要用那种只支持ASCII文本的阉割版。往一个串口发“\x01\x03\x00\x00\x00\x0a\xc5\xcd”这样的Modbus RTU报文,用十六进制方式能直接看到字段错位还是线缆干扰,比对着ASCII码猜要直观得多。这块卡本身很皮实,驱动装好、模式拨对、线序正确,剩下的就只是现场环境适配的老问题。
本文还有配套的精品资源,点击获取