抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望

在这段时间里,最火的莫过于Deepseek的国产大模型爆火,点开任意一个短视频等自媒体平台,全都是deepseek,不管是国内外的顶流媒体,还是民间官方,甚至是在四五线的老家叔叔伯伯辈的口中,几乎把这个国产化的大模型夸上了天!

1.jpeg

2.jpeg

3.png

按照这个发展趋势,势必AI会进入各行各业,且会加速这个过程,特别是在编程领域,是不是未来不需要工程师去撸代码了呢?

4.png

当然,我看到有部分工控行业的自媒体在谈没法取代我们plc工程师或自动化工程师等类似岗位,毕竟有些处理接线、调试的活目前还是需要工程师们人为去解决的。


这个我们也不否认,但是在目前这种国内外的形势下,能够使用且灵活用好AI的工程师们肯定会取得更多的机会和更好解决实际项目的问题。


所以,我个人的观点是,巧用AI来帮助自身提高技能,提升编程效率,而不是在观望中或者浅尝辄止。


在这里,和大家分享两种极为方便的方式:


一、利用Cursor AI来实现PLC编程:


5.png

首选,下载好Cursor后,配置下这里:

6.png

模型这栏,可以勾选deepseek-r1和v3,如上图所示。我们这里以:请用st语言来实现卡尔曼滤波为例,之前项目想用,一直没有找到合适的代码,这下可以试试了:

7.gif

除了给出卡尔曼滤波的代码,还提供示例以及使用建议,同时还生成了.st后缀的文件,方便复制,所以为了把上述生成的代码显示的更清楚,我把其生成的kalman_filter.st文件中代码放到下方,供大家参考:

    (*
     * 卡尔曼滤波器实现
     * 用于工业自动化中的数据滤波
     *)

    FUNCTION_BLOCK KalmanFilter
    VAR_INPUT
        Measurement : REAL;  // 测量值输入
        Q : REAL;           // 过程噪声协方差
        R : REAL;           // 测量噪声协方差
        Reset : BOOL;       // 复位信号
    END_VAR

    VAR_OUTPUT
        FilteredValue : REAL;  // 滤波后的输出值
        Status : BOOL;         // 滤波器状态
    END_VAR

    VAR
        x : REAL := 0.0;      // 状态估计值
        P : REAL := 1.0;      // 估计误差协方差
        K : REAL := 0.0;      // 卡尔曼增益
        IsInitialized : BOOL := FALSE;  // 初始化标志
    END_VAR

    // 初始化方法
    METHOD PRIVATE Init
        x := 0.0;  // 初始状态估计值
        P := 1.0;  // 初始估计误差协方差
        K := 0.0;  // 初始卡尔曼增益
        IsInitialized := TRUE;
        Status := TRUE;
    END_METHOD

    // 主程序逻辑
    METHOD PUBLIC Run
        // 检查复位信号
        IF Reset THEN
            Init();
            RETURN;
        END_IF;

        // 检查参数有效性
        IF Q < 0.0 OR R < 0.0 THEN
            Status := FALSE;
            RETURN;
        END_IF;

        // 如果未初始化则初始化
        IF NOT IsInitialized THEN
            Init();
        END_IF;

        // 预测步骤
        P := P + Q;  // 更新估计误差协方差

        // 更新步骤
        K := P / (P + R);  // 计算卡尔曼增益
        x := x + K * (Measurement - x);  // 更新状态估计
        P := (1.0 - K) * P;  // 更新估计误差协方差

        // 输出结果
        FilteredValue := x;
        Status := TRUE;
    END_METHOD

    END_FUNCTION_BLOCK

    (*
     * 主程序 - 卡尔曼滤波器应用示例
     *)
    PROGRAM Main
    VAR
        // 实例化卡尔曼滤波器
        KF1 : KalmanFilter;

        // 输入变量
        RawValue : REAL;      // 原始测量值
        ProcessNoise : REAL;  // 过程噪声
        MeasureNoise : REAL;  // 测量噪声
        ResetFilter : BOOL;   // 复位信号

        // 输出变量
        FilteredResult : REAL;  // 滤波结果
        FilterStatus : BOOL;    // 滤波器状态

        // 控制变量
        FirstScan : BOOL := TRUE;  // 首次扫描标志
    END_VAR

    // 主程序逻辑
    IF FirstScan THEN
        // 初始化参数
        ProcessNoise := 0.1;   // Q值设置
        MeasureNoise := 1.0;   // R值设置
        ResetFilter := TRUE;   // 初始复位
        FirstScan := FALSE;
    END_IF;

    // 获取测量值 (示例中使用模拟量输入)
    RawValue := AI_Channel_1;  // 假设从模拟输入通道1读取数据

    // 设置滤波器参数
    KF1.Q := ProcessNoise;
    KF1.R := MeasureNoise;
    KF1.Measurement := RawValue;
    KF1.Reset := ResetFilter;

    // 执行滤波计算
    KF1.Run();

    // 获取滤波结果和状态
    FilteredResult := KF1.FilteredValue;
    FilterStatus := KF1.Status;

    // 复位信号处理
    ResetFilter := FALSE;  // 清除复位信号

    // 将滤波结果输出到模拟输出
    IF FilterStatus THEN
        AO_Channel_1 := FilteredResult;
    ELSE
        // 如果滤波器状态异常,输出原始值
        AO_Channel_1 := RawValue;
    END_IF;

    END_PROGRAM

    如果有问题,可以继续提问,这比我们之前使用搜索引擎的方式找资料及代码,方便非常多,不用浪费时间去各种网站登录、注册有些还要VIP等等,非常高效,当然前提是您会用,另外还有基本的编程基础知识(例如st结构化文本编程语言),否则无法确定AI的代码有没有问题。


    二、利用VS Code+Deepseek API 来实现PLC 编程


    8.png

    这里我们下载好VS code,申请好Deepseek的API key,好在是年前申请的,还没有那么火爆有14元的免费试用额度,现在无法确定,后续各位可以自行尝试:


    9.png

    如图所示,本例请用st语言编写红绿灯交通的运行逻辑,下方给出了推理的逻辑过程,非常详细,对我们程序设计员有很好的提示,当然这也是Deepseek AI的非常值得赞赏一点,最后会自动生成traffic_light.st文件,代码如下:

      (* Traffic Light Control Program *)
      PROGRAM TrafficLight
      VAR
          RedLight: BOOL;
          YellowLight: BOOL;
          GreenLight: BOOL;
          tRed: TON;
          tRedYellow: TON;
          tGreen: TON;
          tYellow: TON;
          PT: TIME := T#5s; (* Base time period *)
      END_VAR

      (* Main logic *)
      tRed(IN := NOT tRed.Q, PT := PT);
      tRedYellow(IN := tRed.Q, PT := PT);
      tGreen(IN := tRedYellow.Q, PT := PT);
      tYellow(IN := tGreen.Q, PT := PT);

      (* Light control *)
      RedLight := tRed.IN OR tRed.Q;
      YellowLight := tRedYellow.Q OR tYellow.Q;
      GreenLight := tGreen.Q;

      (* State transitions *)
      IF tRed.Q THEN
          tRed(IN := FALSE);
          tRedYellow(IN := TRUE);
      ELSIF tRedYellow.Q THEN
          tRedYellow(IN := FALSE);
          tGreen(IN := TRUE);
      ELSIF tGreen.Q THEN
          tGreen(IN := FALSE);
          tYellow(IN := TRUE);
      ELSIF tYellow.Q THEN
          tYellow(IN := FALSE);
          tRed(IN := TRUE);
      END_IF

      END_PROGRAM

      各位同行朋友们,怎么样?这只是简单的编程,同样复杂的都可以适配,只要您的描述够清楚,不需要再去到处要源代码了,这些成熟的方案AI直接生成,是不是能加快您的代码编写能力,喝喝茶,代码直接出来了。

      只不过,目前st代码的高亮显示不是很好,后期可能会越来越完善的。当然,我们也在仿照主流的对话式AI网页做专注服务自动化行业工程师的AI(神工AI,敬请期待,欢迎各位有兴趣的朋友加入共同推进,加微信mengman45,请备注:AI)

      10.png



      免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
      您需要登录后才可以回帖 登录 | 立即注册

      本版积分规则

      上一主题上一主题         下一主题下一主题
      QQ手机版小黑屋粤ICP备17165530号

      关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

      法律保护:PLC技术网,plcjs.com,plcjs.net等字样
      Copyright 2010-2030. All rights reserved. 


      微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码