3. 开发环境搭建:工欲善其事,必先利其器

说实话,做工业通信开发,环境搭不好,后面全是坑。我见过太多人上来就写代码,结果连串口都打不开,折腾半天发现是驱动没装。所以这一章,咱们老老实实把环境整利索。

我会带着你一步步来:Python环境、pyModbus库、虚拟串口工具。嗯,这三样东西,缺一不可。

3.1 Python环境配置

我个人习惯用Python 3.8以上版本。为什么?因为pyModbus库对3.8+支持最好,而且很多工业现场的工控机,装的就是这个版本。

下载地址我就不贴了,你直接去python.org下载安装包。安装时记得勾选「Add Python to PATH」——这个选项不勾,后面你敲python命令会提示找不到。

⚠️ 注意: 我曾经遇到一个学员,装完Python后死活跑不了pip命令。排查了半天,发现他安装时没勾PATH选项。后来手动加环境变量才解决。所以这一步千万别省。

装完后,打开命令行(CMD或PowerShell),验证一下:

python --version
pip --version

如果能看到版本号,说明环境OK。如果提示「不是内部或外部命令」,嗯,回去检查PATH吧。

3.2 pyModbus库安装

pyModbus是Python里最成熟的Modbus库之一。我最早用的时候它还叫pymodbus,后来改成了pyModbus。名字变了,但用法基本一致。

安装命令很简单:

pip install pyModbus

如果你在公司内网,或者网络不好,可以用国内镜像源:

pip install pyModbus -i https://pypi.tuna.tsinghua.edu.cn/simple

装完后,进Python环境测试一下:

python
>>> from pymodbus.client import ModbusTcpClient
>>> client = ModbusTcpClient('127.0.0.1')
>>> print(client)
<pymodbus.client.ModbusTcpClient object at 0x...>

没报错?恭喜,库装好了。

💡 小技巧: 我建议你用虚拟环境(virtualenv或conda)来隔离项目。这样不同项目用不同版本的库,不会打架。尤其是你后面可能还要装其他工业通信库,比如OPC UA、CANopen之类的。

3.3 虚拟串口工具使用(VSPD)

这是整个环境搭建里最容易被忽略的一环。你想想看,没有真实PLC的时候,你怎么调试Modbus通信?

答案就是虚拟串口。VSPD(Virtual Serial Port Driver)可以在你的电脑上创建一对虚拟串口,比如COM1和COM2。它们之间是连通的——你往COM1发数据,COM2就能收到。反过来也一样。

说白了,就是模拟两根物理串口线。

3.3.1 安装VSPD

去Eltima官网下载VSPD。有试用版,够我们学习用了。安装过程一路Next就行,没什么坑。

3.3.2 创建虚拟串口对

打开VSPD,界面很简洁。你会看到两个下拉框:

  • 第一个选COM1
  • 第二个选COM2

然后点击「Add Pair」按钮。搞定。

这时候你打开设备管理器,会看到多出两个串口:COM1和COM2。它们就是一对虚拟串口。

🔑 核心逻辑: 虚拟串口对的工作原理,就是让两个串口互相映射。你往COM1写数据,数据会从COM2读出来。这正好模拟了上位机(COM1)和PLC(COM2)之间的物理连接。

3.3.3 验证串口通信

我习惯用串口调试助手来验证。打开两个串口助手窗口:

  • 一个打开COM1,波特率9600,8数据位,1停止位,无校验
  • 另一个打开COM2,参数一样

在COM1的发送区输入「Hello PLC」,点发送。COM2的接收区应该能收到同样的内容。反过来也试试。

能收发数据?说明虚拟串口对工作正常。

⚠️ 注意: 串口参数必须一致。波特率、数据位、停止位、校验位,任何一个不匹配,数据都收不到。我曾经在项目现场排查了半天,最后发现是PLC那边设的是19200,我这边设的是9600。低级错误,但很容易犯。

3.4 本章知识体系

下面这张图,帮你理清整个环境搭建的逻辑关系:

开发环境搭建知识体系 Python 3.8+ pyModbus库 VSPD虚拟串口 安装与PATH配置 pip包管理器验证 虚拟环境(推荐) pip install pyModbus 国内镜像源加速 导入测试验证 创建虚拟串口对 参数一致性检查 串口助手收发测试 三者配合:Python写代码 → pyModbus做协议 → VSPD模拟硬件

3.5 避坑指南

最后,分享几个我踩过的坑:

  • 串口号冲突: 有些电脑的蓝牙或虚拟COM口会占用COM1。如果VSPD创建失败,换个串口号试试,比如COM3和COM4。
  • 权限问题: 在Windows上,有些串口操作需要管理员权限。如果代码报错说打不开串口,试试以管理员身份运行你的IDE或命令行。
  • 防火墙拦截: 如果你用Modbus TCP(后面章节会讲),Windows防火墙可能会拦截通信。临时关掉防火墙测试一下,能通的话,再给Python加防火墙规则。

好了,环境搭好了。下一章咱们就开始写真正的Modbus通信代码了。你准备好了吗?


专注资料整理