|
在这段时间里,最火的莫过于Deepseek的国产大模型爆火,点开任意一个短视频等自媒体平台,全都是deepseek,不管是国内外的顶流媒体,还是民间官方,甚至是在四五线的老家叔叔伯伯辈的口中,几乎把这个国产化的大模型夸上了天!
按照这个发展趋势,势必AI会进入各行各业,且会加速这个过程,特别是在编程领域,是不是未来不需要工程师去撸代码了呢?
当然,我看到有部分工控行业的自媒体在谈没法取代我们plc工程师或自动化工程师等类似岗位,毕竟有些处理接线、调试的活目前还是需要工程师们人为去解决的。
这个我们也不否认,但是在目前这种国内外的形势下,能够使用且灵活用好AI的工程师们肯定会取得更多的机会和更好解决实际项目的问题。
所以,我个人的观点是,巧用AI来帮助自身提高技能,提升编程效率,而不是在观望中或者浅尝辄止。
在这里,和大家分享两种极为方便的方式:
一、利用Cursor AI来实现PLC编程:
首选,下载好Cursor后,配置下这里: 模型这栏,可以勾选deepseek-r1和v3,如上图所示。我们这里以:请用st语言来实现卡尔曼滤波为例,之前项目想用,一直没有找到合适的代码,这下可以试试了:
除了给出卡尔曼滤波的代码,还提供示例以及使用建议,同时还生成了.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; MeasureNoise := 1.0; ResetFilter := TRUE; FirstScan := FALSE; END_IF;
RawValue := AI_Channel_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 编程
这里我们下载好VS code,申请好Deepseek的API key,好在是年前申请的,还没有那么火爆有14元的免费试用额度,现在无法确定,后续各位可以自行尝试:
如图所示,本例请用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):
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |