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

好,咱们正式开始动手。搭建开发环境这件事,说实话,很多新手觉得枯燥,总想跳过。但我见过太多人因为环境问题卡住一整天,最后发现是Python版本不对。所以,咱们还是老老实实把这一步走稳。

2.1 Python环境安装

我个人习惯用Python 3.8到3.11之间的版本。为什么?因为pymodbus库在3.12上我踩过坑,有些底层依赖还没完全适配。你想想看,一个SCADA系统跑着跑着突然报错,就因为Python版本太新,这多冤。

下载与安装步骤:

  1. 去Python官网(python.org)下载对应操作系统的安装包
  2. 安装时记得勾选「Add Python to PATH」——这个选项我每次都会强调,忘了勾后面会很麻烦
  3. 安装完成后,打开命令行(CMD或终端),输入 python --version 验证

验证命令:

python --version
# 输出示例:Python 3.10.11

pip --version
# 输出示例:pip 23.0.1 from ...

嗯,这里要注意:如果你电脑上同时装了多个Python版本,可以用 py -3.10 来指定版本。我在项目现场就遇到过这种情况,工控机上预装了Python 2.7,差点把新系统搞崩。

2.2 虚拟环境配置

虚拟环境这东西,说白了就是给你的每个项目建一个独立的小房间。不同项目用不同版本的库,互不干扰。我曾经因为没隔离环境,导致一个项目需要Flask 1.x,另一个需要2.x,结果两个都跑不起来。

创建虚拟环境:

# 在项目目录下执行
python -m venv scada_env

# 激活虚拟环境(Windows)
scada_env\Scripts\activate

# 激活虚拟环境(Linux/Mac)
source scada_env/bin/activate

激活后,命令行前面会出现 (scada_env) 字样。看到这个,就说明你已经在虚拟环境里了。我个人习惯把虚拟环境放在项目根目录下,取名 venvscada_env,方便识别。

小技巧:pip freeze > requirements.txt 可以把当前环境的所有依赖导出。换电脑时,直接 pip install -r requirements.txt 就能一键恢复。我在给客户部署时经常用这招,省了不少事。

2.3 常用库介绍

咱们这个小型SCADA系统,核心就三个库:pymodbus、Flask、sqlite3。别小看这三个,搭一个能用的原型绰绰有余。

库名 用途 安装命令
pymodbus 与PLC、RTU等设备通信(Modbus协议) pip install pymodbus
Flask 搭建Web界面,展示数据 pip install flask
sqlite3 轻量级数据库,存储历史数据 Python内置,无需安装

pymodbus:这是咱们和底层设备打交道的桥梁。Modbus协议在工业现场太常见了,几乎是个PLC就支持。我遇到过最老的设备是2003年的西门子S7-200,照样用pymodbus读数据。

Flask:选它不是因为功能最强,而是因为够轻、够快。你想想看,咱们的目标是「从零搭建」,不是「从零学一个重型框架」。Flask上手快,文档好,适合快速出原型。

sqlite3:这个库是Python自带的,连安装都省了。对于小型SCADA系统,几百个测点、存个把月的数据,sqlite3完全扛得住。我在一个水处理项目里就用它存了半年的数据,查询速度依然能接受。

避坑指南: 我曾经在安装pymodbus时遇到版本冲突。原因是系统里已经装了旧版的twisted库。解决办法很简单:先升级pip,再安装pymodbus。命令如下:

pip install --upgrade pip
pip install pymodbus

2.4 IDE选择与配置

IDE这东西,说白了就是趁手的工具。我个人推荐VS Code,原因有三:免费、插件丰富、轻量。当然,你用PyCharm也行,但咱们这个课程以VS Code为例。

VS Code推荐插件:

  • Python(微软官方)——语法高亮、代码补全、调试
  • Pylance——类型检查,写代码时能提前发现错误
  • GitLens——版本管理,方便回退
  • Flask Snippets——Flask代码片段,提高效率

配置虚拟环境:

  1. 打开VS Code,按 Ctrl+Shift+P(Mac是 Cmd+Shift+P
  2. 输入 Python: Select Interpreter
  3. 选择你刚才创建的虚拟环境(路径里应该包含 scada_env

配置好后,VS Code右下角会显示当前使用的Python解释器。我习惯看一眼确认一下,免得用错环境。

我的习惯: 在项目根目录下创建一个 .vscode 文件夹,里面放 settings.json,把虚拟环境路径写死。这样项目分享给同事时,他们打开就能直接用,不用再手动选解释器。

{
    "python.defaultInterpreterPath": "./scada_env/bin/python"
}

好了,环境搭好了,咱们就可以开始写真正的代码了。下一章,我会带大家用pymodbus连一个真实的Modbus设备——当然,如果你手头没有设备,咱们也可以用模拟器。别担心,我会把两种方式都讲清楚。