七天学会plc加机器视觉之AI 接入 外设模块开发全详细操作文档(全程配套视频按文档实操)

本文分为三部份,

第一部份,什么是模块,模块在西门子的软件梯形图和硬 件处设
第二部份,本地plc 源码模型训练,让ai更正常可工程化代码
第三部分,怎么调用ai 功能快速参与模块开发,提高个人开发能力

以下详细流程

西门子模块与 Openness 上位机开发完整文档

第一部分:西门子模块基础
1. 什么是西门子模块?

模块是 PLC 系统的硬件功能单元,通过标准化接口与 CPU 或背板总线连接,扩展 PLC 的输入输出、通信、工艺等能力。例如 S7-1200 的信号板、ET200SP 的分布式模块等。

2. 为什么需要模块?(三大核心原因)
  • 弥补 CPU 原生功能不足 :CPU 通常集成 TTL 电平的数字量接口,但无法直接驱动远距离通信。RS485 模块通过差分信号转换(将单端信号转为两根线的电压差),抗干扰能力提升,支持 1000 米以上通信,解决了 CPU 原生接口的距离限制。
  • 支持多样化协议与场景 :工业通信需适配 Modbus、Profinet 等协议,Modbus 模块封装了协议解析逻辑(如 CRC 校验、数据帧格式),用户无需手动编写串口通信代码,直接通过梯形图调用模块功能块即可实现数据交互。
  • 扩展系统容量与灵活性 :当 CPU 自带 I/O 点数不足(如 S7-1214C 仅 14DI/10DO),可通过数字量 / 模拟量扩展模块 (如 SM 1223)增加输入输出通道;或通过通信模块(如 CM 1241 RS485)扩展多协议通信接口。
3. 常用模块功能与梯形图使用
  • RS485 通信模块(如 CM 1241 RS485):功能:支持 Modbus RTU/ASCII、自由口通信,实现 PLC 与变频器、仪表等设备的双向数据传输。梯形图使用:直接拖拽模块对应的功能块(如 MB_COMM_LOAD、MB_MASTER),配置波特率、奇偶校验等参数,通过数据缓冲区(如 DB 块)读写数据。
  • Modbus TCP 模块(如 CM 1243-1):功能:支持 Modbus TCP 协议,通过以太网实现高速通信(100Mbps),适用于工业以太网组网。梯形图使用:调用 MB_CLIENT 功能块,填写 PLC IP、端口号、从站地址,实现与 Modbus TCP 从站的数据交互。
第二部份 如何利cursor 训练公司老代码,
首先我们要有针对这个plc的老代码,最好有有几个文件,有基础功能的,类似如下
然后安装cursor ,选择 你喜欢的,你觉得好用的大模型,让他学习一下自己项目的源码
最后提需求,生成工程源码,最后导到工程

第一步:准备外部 SCL 源码文件

1. 编写 SCL 代码(假设以下代为为ai 生成)

新建文本文档,写入测试代码(简单加减运算),演示标准格式:

scl

复制代码
// 外部SCL文件示例:加法运算功能块
FUNCTION FC_Add : Void
VAR_INPUT
    IN1: Int;
    IN2: Int;
END_VAR
VAR_OUTPUT
    OUT_RESULT: Int;
END_VAR

// 逻辑体
OUT_RESULT := IN1 + IN2;

END_FUNCTION

2. 修改文件后缀

  1. 保存文本文件;
  2. 将后缀 .txt 改为 .scl ,例如:FC_Add.scl

注意:系统需显示文件扩展名 ,避免变成 FC_Add.scl.txt


三、第二步:TIA Portal 导入外部 SCL 文件,生成程序块

场景前提

已打开 S7-1200 项目,CPU 设备已组态完成。

完整操作步骤

  1. 打开项目树 → 选中 PLC 程序块文件夹 项目树 → PLC 变量 / 程序块 → 右键【程序块】文件夹。

  2. 右键菜单选择:导入 → 外部源文件

  3. 在弹窗中,浏览选中刚才准备的 FC_Add.scl 文件,点击导入

  4. 导入规则说明(讲课重点)

    • SCL 文件内第一行 FUNCTION / FUNCTION_BLOCK 决定生成块类型:
      • FUNCTION → 生成 FC 功能(无静态变量)
      • FUNCTION_BLOCK → 生成 FB 功能块(带静态变量、有记忆)
    • 块名称、IO 引脚、变量会自动解析生成,无需手动创建引脚。
  5. 导入完成校验回到【程序块】列表,能看到新生成的 FC_Add,双击可打开查看 SCL 源码。

  6. 编译块(必做) 选中该块 → 点击工具栏 编译(灯泡图标),无报错代表导入成功。


四、第三步:在主程序 OB1 中调用该 SCL 块

OB1 是 S7-1200 主循环组织块,PLC 上电后循环执行,作为主函数。

方式 1:梯形图(LAD)调用(最常用,学员易理解)

  1. 双击打开 OB1 (Main) ,切换到梯形图视图

  2. 在指令库 → 程序控制 中,直接拖拽 FC_Add 到网络段中。

  3. 分配变量 / 地址:

    • IN1、IN2:填写常量(如 10、20)或 PLC 变量(M、DB、I、Q)
    • OUT_RESULT:绑定输出变量(如 DB1.DBD0MW0
  4. 示例接线逻辑: plaintext

    复制代码
    IN1 := 10
    IN2 := 20
    调用 FC_Add
    OUT_RESULT = 30

方式 2:SCL 语言调用(如果 OB1 也用 SCL)

若 OB1 切换为 SCL 编辑,调用语法:

scl

复制代码
// OB1 主程序内调用外部导入的FC
FC_Add(
    IN1 := 10,
    IN2 := 20,
    OUT_RESULT => MW0
);

五、第四步:下载程序到 PLC + 在线监控验证

  1. 编译整个项目(快捷键 Ctrl+B),确保无错误、无警告。
  2. 连接 PLC(以太网 / PN),点击在线 & 下载,将程序下载到 S7-1200。
  3. 进入在线监控
    • 查看引脚数值变化,验证 SCL 逻辑正常执行。
    • 证明:外部 SCL 文件 → 导入成块 → 主程序调用 全流程生效。

六、补充:导入 FUNCTION_BLOCK(FB 块)示例

1. 外部 SCL 源码(FB 格式)

scl

复制代码
FUNCTION_BLOCK FB_Count
VAR
    Counter: Int;  // 静态变量,断电保持状态
END_VAR
VAR_INPUT
    Add_Pulse: Bool;
END_VAR
VAR_OUTPUT
    Count_Out: Int;
END_VAR

IF Add_Pulse THEN
    Counter := Counter + 1;
END_IF;
Count_Out := Counter;

END_FUNCTION_BLOCK

同样改后缀为 .scl,按上面步骤导入,会自动生成 FB 功能块,调用方式和 FC 完全一致。

第三部分:Openness 开发环境配置(C# 上位机)
1. 软硬件环境要求(视频部分根据粉丝需要讲c#还是python调整 )
  • TIA Portal 版本:V17(推荐,稳定支持.NET 4.8)或 V18/V19(支持.NET 6+)。
  • Visual Studio 版本:VS 2019(V17)或 VS 2022(V18/V19)。
  • .NET 框架:.NET Framework 4.8(V17)或.NET 6+(V18/V19)。
  • PLC 型号:西门子 S7-1200(需确保 CPU 固件版本与 TIA Portal 兼容)。
  • cursor 千问等编程,利用ai 参与工程设计和开发,
2. TIA Portal 权限配置
  1. 以管理员身份启动 TIA Portal。
  2. 依次点击【选项】→【设置】→【常规】→【专家设置】。
  3. 勾选【通过外部程序启用 TIA Portal 的访问】,点击【确定】后重启 TIA Portal。
3. Visual Studio 项目配置
  1. 创建 C# 控制台应用(.NET Framework 4.8)。
  2. 引用 Openness 核心 DLL(路径示例:C:\Program Files\Siemens\Automation\Portal V17\PublicAPI\V17):
    • Siemens.Engineering.dll(核心 API)
    • Siemens.Engineering.HW.dll(硬件组态)
    • Siemens.Engineering.SW.dll(软件对象如程序块)
  3. 设置 DLL 属性:右键每个 DLL→【属性】→【复制到本地】设为False
4. 操作系统权限与防火墙配置
  • 权限设置
    • 开发时,Visual Studio 需以管理员身份运行(右键 VS 图标→【以管理员身份运行】)。
    • 编译后的 EXE 文件,右键→【属性】→【兼容性】→勾选【以管理员身份运行此程序】。
  • 防火墙配置
    • 允许 TIA Portal 通过防火墙:控制面板→【Windows Defender 防火墙】→【允许应用通过防火墙】→找到Siemens.Automation.Portal.exe并勾选 "专用" 和 "公用" 网络。
    • 允许上位机程序通过防火墙:同上步骤,添加编译后的 EXE 文件。
第三部分:C# 上位机操作 S7-1200 示例(Openness)
功能:通过 Openness 连接 TIA Portal,读取 S7-1200 的程序块信息

csharp

复制代码
using System;
using Siemens.Engineering;
using Siemens.Engineering.SW;

class OpennessDemo
{
    static void Main(string[] args)
    {
        // 1. 创建TIA Portal实例(无界面模式)
        using (var tiaPortal = new TiaPortal(TiaPortalMode.WithoutUserInterface))
        {
            try
            {
                Console.WriteLine("正在连接TIA Portal...");

                // 2. 打开现有项目(替换为你的TIA项目路径)
                var project = tiaPortal.LoadProject(@"C:\Siemens\Projects\S7-1200_Demo.ap17");
                Console.WriteLine($"成功打开项目: {project.Name}");

                // 3. 遍历项目中的设备,找到S7-1200 CPU
                foreach (var device in project.Devices)
                {
                    if (device.Type.Contains("S7-1200"))
                    {
                        Console.WriteLine($"\n找到S7-1200 CPU: {device.Name}");

                        // 4. 获取CPU的程序块(OB、FB、FC等)
                        var software = device.Software as PlcSoftware;
                        if (software!= null)
                        {
                            Console.WriteLine("程序块列表:");
                            foreach (var block in software.Blocks)
                            {
                                Console.WriteLine($"类型: {block.GetType().Name}, 名称: {block.Name}");
                            }
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"操作失败: {ex.Message}");
            }
        }
        Console.WriteLine("\n按任意键退出...");
        Console.ReadKey();
    }
}
代码说明
  1. TIA Portal 连接 :通过TiaPortal类创建实例,支持有界面(WithUserInterface)或无界面模式。
  2. 项目操作LoadProject打开现有项目,SaveProject保存修改,CreateNewProject创建新项目。
  3. 硬件与软件访问 :通过Devices遍历设备,Software属性获取 PLC 程序块,支持读写变量、修改程序块逻辑等高级操作。
第四部分:常见问题与注意事项
  1. 版本兼容性:确保 TIA Portal 版本、.NET 框架、VS 版本严格匹配(参考本文第二部分第 1 点),否则会出现 DLL 加载失败。
  2. 权限问题:若提示 "无法访问 TIA Portal",检查是否以管理员身份运行 TIA Portal 和 VS,以及 "专家设置" 中的外部访问权限是否开启。
  3. PLC 在线连接:若需通过 Openness 控制 PLC 在线(如下载程序、监控变量),需确保 TIA Portal 已通过以太网连接 S7-1200(IP 地址需在同一网段)。
相关推荐
ckjoker1 小时前
手敲三Agent串行流水线,我发现了多Agent协作的隐形杀手
python·agent
tedcloud1231 小时前
FluentFlyout部署教程:打造更美观的Windows桌面环境
数据库·人工智能·sql·学习·自动化
KaMeidebaby1 小时前
卡梅德生物技术快报|细胞周期检测抗原流式分析:参数调试、软件拟合与问题排查
网络·人工智能·python·网络协议·tcp/ip·算法·机器学习
艾莉丝努力练剑1 小时前
【QT】界面优化:QSS
linux·运维·开发语言·网络·qt·计算机网络·udp
zmzb01031 小时前
Python课后习题训练记录Day124
开发语言·python
geovindu1 小时前
python: Broadcast Pattern
开发语言·python·设计模式·广播模式
winfredzhang2 小时前
Python 实战:用 wxPython 写一个 MD5 文件查重清理工具
python·sqlite·json·wxpython·md5·预览·查重
装不满的克莱因瓶2 小时前
了解不同机器学习模型的分类
人工智能·python·算法·机器学习·ai·分类·数据挖掘
小江的记录本2 小时前
【Spring全家桶】Spring Cloud 2023.0.x:配置中心:Nacos Config、Apollo(附《思维导图》+《面试高频考点清单》)
java·spring boot·后端·python·spring·spring cloud·面试