当前位置: 首页 > news >正文

西门子TIA-SCL转STL指令项目案例及技巧

文章目录

    • 前言
    • 📑知识点①:赋值指令
    • 📑知识点②:条件执行
    • 📑知识点③:循环执行
    • 📑知识点④:分支执行
    • 📑知识点⑤:调用程序
    • 案例

前言

提示:这是一篇关于SCL转换成STL编程语言的文章

在西门子TIA软件中,将STL转换SCL语言有相关的工具,这个不再细谈,可以查找很多资料且有迹可循,但将SCL转换STL指令的资料确是很少。记得上次使用STL指令还是学生时期,之前有朋友项目上遇到需要将SCL转换STL指令,借此机会,研究了下STL指令,成功编译并仿真实现了同样的功能。

📑知识点①:赋值指令

提示:在LAD等编程语言中使用Move指令,比较常见。指令解释:L-加载指令,T-传送指令;

源程序,在SCL语言中:

b:=a

翻译后,在STL语言中:

L b
T a

以上是否很简单,那么我们使用数组+变量增加下难度。

源程序,在SCL语言中:

b[m+1]:=a[m]

翻译后,在STL语言中:

L m
T x
L x
+ 1
T y
L a[x]
T b[y]

📑知识点②:条件执行

提示:"与","或","非"是电路组成的基本知识,指令解释:A-与,O-或,X-异或,AN-与非,ON-或非,XN-异或非

源程序,在SCL语言中:

if a and b=0 or c=0 or not d thene:=TRUE;
elsee:=false; 
end_if;

翻译后,在STL语言中:

A a
A(
L b
L 0
==I
)
O(
L c
L 0 
==I
)
ON d
= e

📑知识点③:循环执行

提示:为了提高编程效率,常用for循环遍历执行运算,指令解释:JC-满足跳出,JU-无条件跳出, L_LOOP-循环开始标记,可自定义,L_END-循环结束标记,可自定义。

源程序,在SCL语言中:

for a:=0 TO 10 DOb:=b+1;
end_for;

翻译后,在STL语言中:

L_LOOP:L a
L 10
>I
JC L_END
L a
+1
T a
JU L_LOOP
L_END: NOP 0

📑知识点④:分支执行

提示:如果遇到多层嵌套或者分支语句,可以进行多次拆分和跳转,一定要做好编号,建议先执行小语句,验证完成后,再嵌入大语句中即可,指令解释:同上;

源程序,在SCL语言中:

if a thencase c of0:d:=TRUE;1:e:=0;ELSEf:=0;end_case;
elseb=0 
end_if;

翻译后,在STL语言中:

A a
JC MAIN
L 0
T b
JU ENDMAIN: L C
L 0
==I 
JC CASE0
L C
L 1
==I
JC CASE1
JU CASEDEFCASE0:L 1
T d
JU ENDCASECASE1: L 0
T e
JU ENDCASECASEDEF: L 0
T f
ENDCASE: NOP 0
END: NOP 0

http://www.lryc.cn/news/620218.html

相关文章:

  • 【Python】Python 函数基本介绍(详细版)​
  • ARM 实操 流水灯 按键控制 day53
  • ACL 可以限制哪些流量?入方向和出方向怎么判断?
  • vue路由_router
  • rk3588 ubuntu20.04安装包经常出现的问题总结(chatgpt回复)
  • C++ 优选算法 力扣 209.长度最小的子数组 滑动窗口 (同向双指针)优化 每日一题 详细题解
  • VUE基础笔记
  • 计算机网络---IPv6
  • 向长波红外成像图注入非均匀噪声
  • ROS2实用工具
  • 小电视视频内容获取GUI工具
  • Ansible 实操笔记:Playbook 与变量管理
  • 传输层协议 TCP(1)
  • C语言队列的实现
  • 浪浪山小妖怪电影
  • HarmonyOS 开发实战:搞定应用名字与图标更换,全流程可运行示例
  • 《卷积神经网络(CNN):解锁视觉与多模态任务的深度学习核心》
  • 从 VLA 到 VLM:低延迟RTSP|RTMP视频链路在多模态AI中的核心角色与工程实现
  • AI驱动的前端革命:10项颠覆性技术如何在LibreChat中融为一体
  • Java19 Integer 位操作精解:compress与expand《Hacker‘s Delight》(第二版,7.4节)
  • Docker部署RAGFlow:开启Kibana查询ES数据指南
  • 学习嵌入式的第十九天——Linux——文件编程
  • 如何生成.patch?
  • 开发Excel Add-in的心得笔记
  • Redis ubuntu下载Redis的C++客户端
  • 3分钟 Spring AI 实现对话功能
  • 二次筛法Quadratic Sieve因子分解法----C语言实现
  • 【MCP开发】Nodejs+Typescript+pnpm+Studio搭建Mcp服务
  • 每日五个pyecharts可视化图表-line:从入门到精通 (5)
  • 物联网之小白调试网关设备