第2章:操作系统与驱动安装
好,咱们直接进入正题。工控机要干活,第一步就是选对操作系统、装好驱动。这一步要是没走稳,后面数据采集、存储全得翻车。我见过太多项目,硬件选得挺好,结果系统没配好,现场跑起来各种卡顿、丢包。嗯,今天我就把这块的经验掰开揉碎了讲给你听。
2.1 Windows vs Linux:到底选哪个?
这个问题,几乎每个刚入行的朋友都会问我。我的回答很简单:看你的实时性要求和生态依赖。
| 对比项 | Windows | Linux |
|---|---|---|
| 实时性 | 一般(非实时内核) | 强(可打RT补丁) |
| 驱动生态 | 丰富,厂商支持好 | 部分硬件需要自己编译 |
| 稳定性 | 中(蓝屏风险) | 高(7×24小时运行) |
| 开发工具 | Visual Studio、LabVIEW | GCC、Python、Eclipse |
| 成本 | 需要授权费 | 免费开源 |
我个人习惯是:如果项目里用了很多PLC、运动控制卡,而且厂商只给了Windows驱动,那就老老实实用Windows。但如果你要做高速数据采集、精密运动控制,或者系统需要跑几个月不重启,那Linux是更好的选择。
2.2 实时系统RT-Linux:为什么需要它?
普通Linux,它的内核调度是有延迟的。你想想看,一个中断来了,内核可能先处理别的任务,等个几毫秒才响应你的采集程序。对于工控来说,这几毫秒可能就是灾难。
RT-Linux,说白了就是在Linux内核下面加了一个实时微内核。它把实时任务和非实时任务隔离开,实时任务优先执行。这样,你的数据采集周期就能稳定在微秒级。
安装RT-Linux,我建议你走这条路:
- 下载内核源码:去kernel.org下载你需要的版本。
- 打RT补丁:从rt.wiki.kernel.org下载对应版本的补丁文件。
- 配置内核:运行
make menuconfig,开启Preemption Model为Fully Preemptible Kernel (RT)。 - 编译安装:
make -j4 && make modules_install && make install。 - 更新引导:
update-grub,重启选择RT内核。
2.3 驱动安装与调试:别让硬件“哑巴”
驱动装不上,工控机就是块砖。我见过最坑的情况是,采购的采集卡厂商说支持Linux,结果给的驱动是2.6内核的,而系统是4.19的。嗯,这种时候只能自己动手改源码。
驱动安装一般分三步:
- 确认硬件ID:用
lspci -v或lsusb查看设备VID/PID。 - 下载对应驱动:去厂商官网或GitHub找。
- 编译安装:
make && make install,然后modprobe加载。
调试驱动时,我习惯用dmesg看内核日志。如果驱动加载失败,dmesg | tail -20会告诉你原因。比如“Unknown symbol”说明有依赖没解决,“Permission denied”就是权限问题。
SUBSYSTEM=="tty", ATTRS{idVendor}=="xxxx", MODE="0666"才搞定。
2.4 系统优化:让工控机跑得更稳
系统装好了,驱动也认了,但别急着跑数据。优化这一步,能让你少掉很多头发。
我一般会做这几件事:
- 关闭不必要的服务:比如蓝牙、打印服务、桌面环境(如果是服务器)。用
systemctl disable关掉它们。 - 调整内核参数:在
/etc/sysctl.conf里加kernel.sched_rt_runtime_us=-1,让实时任务不受限制。 - 设置CPU亲和性:把采集进程绑定到特定CPU核心,用
taskset -c 0 ./采集程序。 - 内存锁定:用
mlockall()防止内存被换出,保证采集不卡顿。
chrt -f 99 ./采集程序。
嗯,操作系统和驱动这块,说白了就是打好地基。地基不稳,上层建筑再漂亮也没用。下一章,咱们聊聊数据采集的硬件接口和协议,那才是真正开始“干活”的时候。