安装与启动故障

IDE 启动报错

错误信息 可能原因 解决方案
“无法加载扩展” 扩展安装损坏 删除 ~/.kvpac/extensions/ 重新安装
“端口已被占用” 其他进程占用端口 使用 lsof -i :<port> 查找冲突进程
“段错误 (Segmentation Fault)” 系统资源不足 关闭其他应用程序释放内存
“数据库初始化失败” 权限不足 检查 workspace 目录写入权限

许可证错误

错误代码 含义 处理
E001 许可证密钥无效 确认密钥格式正确,联系管理员
E002 许可证已过期 申请续期
E003 已达到最大激活数 在旧设备上取消激活
E004 网络验证失败 检查网络连接和 DNS 设置

编译故障

常见编译错误

错误: 未定义的标识符 'var_name'
  • 变量未声明或拼写错误
  • 确认变量在 VAR 块中已声明
  • 检查变量作用域(全局 vs 局部)
错误: 类型不匹配: INT != BOOL
  • 赋值或表达式中类型不一致
  • 使用类型转换函数:BOOL_TO_INT(), INT_TO_REAL()
错误: 重复定义 'MyFunctionBlock'
  • 功能块/函数名称冲突
  • 使用命名空间或重命名
错误: 数组索引越界
  • 数组访问超出声明范围
  • 检查索引变量是否在 0..N-1 范围内

编译警告

警告不阻止编译,但建议排查:

警告 说明
“变量 ‘x’ 已声明但未使用” 存在未使用的变量,建议移除
“隐式类型转换” 不同精度类型自动转换可能丢失精度
“不可达代码” RETURN 或 EXIT 后的代码不会被执行
“常量重新赋值” 试图修改 CONSTANT 变量

编译通过但无输出

  1. 检查 target 配置是否正确
  2. 确认目标平台 SDK 已安装
  3. 查看编译输出目录是否有生成 output.bin
  4. 使用 kvpac-maker build --verbose 获取详细日志

调试故障

连接问题排查表

症状 排查步骤
连接超时 1. ping <target_ip> 测试网络
2. 确认 RTE 已启动
3. 检查端口 2020 是否开放
连接被拒绝 1. RTE 版本兼容性
2. 防火墙规则
3. 认证 Token 是否有效
连接不稳定 1. WiFi vs 有线网络
2. 网线/交换机故障
3. 电磁干扰
只能连接一次 RTE 单连接模式,关闭前一个调试会话再试

断点问题

断点变成空心圆:表示断点未生效。可能原因:

  • 代码行不可执行(注释、空行、声明行)
  • 代码被优化器移除了
  • 断点所在的 POU 未被加载到 RTE

断点被跳过

  • 确认断点所在代码路径确实被执行
  • 条件判断可能短路求值
  • 尝试在更大范围的代码行设置断点

变量监视无数据

  1. 变量未在作用域内:局部变量仅在 POU 执行期间可见
  2. 变量被优化掉:降低 optimization 级别重新编译
  3. 类型不匹配:在监视面板确认变量类型
  4. RTE 版本差异:更新 RTE 到与 IDE 匹配的版本

运行时故障

程序崩溃

flowchart TD
    A[程序崩溃] --> B{崩溃类型}
    B -->|硬错误| C[检查异常向量表]
    B -->|看门狗复位| D[增加任务周期/优化代码]
    B -->|内存错误| E[检查数组边界/减少动态分配]
    B -->|原因不明| F[启用调试信息重新编译]

IO 故障

数字量输入不变化

  1. 用万用表测量输入端子电压
  2. 检查信号类型(NPN vs PNP)
  3. 确认 IO 配置中的通道号
  4. 测试模式下强制 IO 点验证

模拟量读数异常

  1. 确认信号范围(0-10V, 4-20mA)
  2. 检查接线极性
  3. 在配置中设置正确的量程
  4. 使用信号发生器测试通道

输出不动

  1. 检查负载电源
  2. 确认输出类型(继电器/晶体管)
  3. 测量输出端子输出电压
  4. 程序中强制输出测试

性能问题

现象 可能原因 解决方案
任务周期超时 代码执行时间过长 1. 拆分高耗时操作
2. 使用更快的算法
3. 将非关键任务移到 Slow Task
IO 响应延迟 通信负载过高 1. 减少 Modbus 轮询频率
2. 使用 IO 缓存批量读取
3. 优化 IO 映射配置
内存持续增长 内存泄漏 1. 检查动态分配
2. 确保每个 ALLOCATE 有对应的 DEALLOCATE
3. 检查功能块实例的初始化/复位逻辑
RTE 间歇性卡顿 高频中断冲突 1. 检查中断优先级
2. 减少高优先级任务
3. 检查 CAN/Modbus 中断频率

通信故障

WebSocket 连接

# 测试 WebSocket 连接
curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: localhost:2020" http://localhost:2020/

# 查看 TCP 连接状态
netstat -an | grep 2020

# 抓包分析
tcpdump -i any port 2020 -X

Modbus 调试步骤

1. 确认 Modbus 在 RTE 配置中已启用
2. 检查端口占用:lsof -i :502
3. 使用 Modbus 工具读取保持寄存器地址 0
4. 如果无响应,检查防火墙和路由
5. 查看 RTE 日志中的 Modbus 错误

故障报告模板

当需要向技术支持报告问题时,请提供以下信息:

- KVPAC IDE 版本: 
- RTE 版本: 
- 目标平台: [模拟器 / STM32-型号]
- 操作系统: 
- 问题描述: 
- 复现步骤: 
  1. 
  2. 
  3. 
- 预期行为: 
- 实际行为: 
- 日志/截图: 

提示:大多数问题可以通过重新编译(Clean Build)或重启 RTE 解决。在提交工单前,建议先尝试这两个基本操作。