自动化工程师:结合不同的西门子PLC编程语言,程序编写无压力
随着现代工控技术的不断发展,可能很多使用过PLC的技术人员都有这么一个感受传统的‘梯形图’是较为简单,容易上手,但是编程方式在面对越来越复杂的控制要求时,已显得有所不足。现在很多大品牌的中高级PLC都支持五种编程语言的混合编程,即梯形图(LD)、指令表(IL)、功能模块e(FBD)、顺序功能流程图(SFC)及结构化文本(ST)。
在这五种编程语言中,搭配过这么一个不错的组合就是梯形图+结构化文本,用梯形图写逻辑控制,用结构化文本写计算,这样可以加快编程效率并且使程序的可读性大大提高。而流程图编程则非常适用于一些“顺序控制”场合。至于指令表和功能块,我个人认为实用性并不太大。
西门子S7系列PLC在国内工控领域中使用很广,它的编程软件Step7默认情况下只支持梯形图和指令表编程,但通过安装“S7SCL”软件包和“S7Ggph”软件包可实现结构化文本和流程图编程。下面,笔者就结合自己的一些使用经验介绍一下如何在Step7中用结构化文本编程。
什么是结构化文本编程
结构化文本语言是用结构化的描述文本来描述程序的一种编程语言,它是类似于高级语言的一种编程语言。在大中型PLC系统中,常采用结构化文本来描述控制系统中各个变量的关系,完成所需的功能或操作。
具体的语法规则大家可参考西门子的相关手册,在此就不做详细介绍。下图为Step7中的SCL编程界面:
在Step7 中,结构化文本编程被称为结构化控制语言,缩写为SCL. Step7 V5.3的软件包中已包含了S7-SCL软件包,在安装Step7 V5.3时,系统会提示是否要安装S7-SCL,把复选框打钩即可,见下图:
SCL软件包用于以“源文件”的方式编写功能块、函数块。步骤如下:
第一步:当Step7中已正确安装SCL软件包后,会有如下界面
第二步:进入SCL编程界面,并选择准备编写的程序块的类别
第三步:编写程序并编译
经过以上四步,就完成了一个用SCL编写功能块的全过程, FC1的源程序,保存在“Sources”文件夹中,可随时打开进行修改。
用编程实现“间接寻址”
Step7中,梯形图编程不支持对PLC的间接寻址,用指令表的方式虽可实现,但步骤
烦琐且程序可读性差,相比之下,用SCL的方式来做就简便的多,具体方法如下:
1、位寻址
MX[i,j,i为字节地址,j表示该字节中的哪个位,当i=5;j=0时,表示M50
2、字节、字、双字寻址
MB[i] IW[i]、QB[i]、MD[i]
这次的分享就到这里,对于个人在学PLC或者在实际应用中,看习惯是用的哪一种编程语言更是有效,就首当其选那种编程语言!
以上,欢迎动动手分享及收藏!以上,欢迎动动手分享及收藏!
有人说:SCL将成为PLC的主流编程语言?
现在很多大品牌的中高级 PLC 都支持国际电工委员会 IEC61131 标准中规范的五种编程语言的混合编程,即梯形图(LD)、结构化文本(ST)、流程图(SFC)、指令表(IL)和功能块(FB)。在这五种编程语言中,
此外,由于西门子 S7 系列 PLC 在国内工控领域中使用很广,它的编程软件 Step7 默认情况下只支持梯形图和指令表编程,但通过安装“S7-SCL”软件包和“S7-Graph”软件包可实现结构化文本和流程图编程。
结构化文本是一种类似于计算机高级语言的编程方式,它的语法规范接近计算机中的PASCAL 语言。
所以有人就问:SCL将成为PLC的主流编程语言么?
于是很多电气人发表了自己的看法,一起来看看吧!
bnnyygy 说:
我献丑来一个,半成品,给设备改造的,用的欧姆龙CP1L,ST语言功能块,部分节选。
wenpian 说:
还是梯形图适合逻辑。
ljj977 说:
程序写的不错。tia protal中可以采用SCL与LAD混编的模式。这样的灵活性就更大了。
作为一个有C基础的人来说,用SCL他可能更擅长,入门更快。作为习惯了LAD编程的人员来说,写一般的逻辑关系程序,确实要清晰些。
计算机的普通编程人员将会有一部分人能胜任1200的编程工作,而且他们的转行不会有多大的门坎。可以说,PLC的编程人员来源会更广泛。
fujifa 说:
在JAVA出现之前,C语言的菜鸟们也是认为C语言将一统江湖,在PYTHON出来之前,JAVA的菜鸟们也是这么认为的。菜鸟们总是习惯使用必将,一定等词汇来描述他们认为的事物,为什么老鸟们不这样认为呢?因为老鸟们知道:
1:SCL,也就是ST语言,编译为机器码的执行效率比其他语言效率低。
2:梯形图编程语言也在进步,去看看诸如富士、AB这类在梯形图中使用高级语言编程等增强型梯形图语言的厂家就知道了。
hgxmm123 说:
老外喜欢用SCL语言编程,它功能丰富。国人喜欢用梯形图编程,易于推广。
有些PLC语言不能实现的功能,用SCL就能实现。
twtynijj 说:
最多只能说是备选的语言方法 ,主流怕是很难,可读性并不是很好,推广也难。老外是因为人家母语就是字母组成,对他们来说可读性还是非常强。
现在PLC还是以LAD SFC ST CFC 这一类为代表,也符合IEC标准的。如果哪一家PLC只有一种你说的SCL,怕是干不了几年在中国就只能关门了,这是由市场决定的。
cvlsam 说:
西门子之所以称为SCL而不是ST,是因为其编程语言指令表叫做STL,为了避免混淆,所以叫做SCL,其实就是其他厂家的ST语言。
“还是以 LAD SFC ST CFC 这一类为代表”,看到这句就说明您不太熟悉西门子了啊。
twtynijj 说:
嗯,西门子是不熟悉,刚出社会那会接触过。换工作环境后就没怎么接触。而且也只会用梯形图呀。
pqsh 说:
我觉得,5-10年这些语言都将消失。
人工智能,会听懂人的语言和思想。只要你说清楚,机器就会执行。当然,这样汉语会失去优势,因为汉语逻辑不严谨。
fsjnzhouyan 说:
现在有些智能家居就能接收中文语音控制家电。
vao 说:
梯形图,这种应该是主流趋势,不是你自己擅长什么就一定会主流,工人容易看懂的才好。
gaoyingchun 说:
工控人要失业了
ljj977 说:
在数据的处理方面,SCL还是要比LAD更具有它的它快捷性,计算的功能也是十分强大的。比如一个一维数组,你在使用时,感觉用LAD不难,但一个二维数组、一个多维数组你再使用LAD编程,难度就要大多了。
作为博图软件三大编程语言,SCL就是其中的标配,在原来300/400编程语言中,还没有列入标配行列之中。这也说明了西门子对它的重视,也给大家一个信号。因此了解它、学习它还是有必要的。
SCL是三大语言之一,说它是主流的编程语言不为过吧。
cvlsam 说:
用过AB的梯形图的话,觉得其他语言都可以不要了。
其实三大语言并不包括ST语言。
以前是梯形图,指令表和功能块,现在部分厂商取消了指令表,被SFC替代了。
当然,多学习一点没有错,不过不是以西门子SCL语言为基础,西门子的SCL语言离标准还有点距离,要用也应该从菲尼克斯的学起,人家才是完全符合IEC标准的。
wgefwgef 说:
越是菜鸟,越是水平差,越抵制ST。
逍遥的久鸣 说:
不管白毛黑猫抓到老鼠才是好猫,越简单明了越好,这么多年过去了,梯形图还是那么坚挺!
如果后期维护,现场水平不高,是不是就要失业了?
hnhyczj 说:
高级语言应当是发展的方向。
乌龟船长 说:
老外喜欢用SCL语言编程,它功能丰富。国人喜欢用梯形图编程,易于推广。
fuhuafeng72 说:
SCL确实好,但一些工控不适合。
ljj977 说:
LAD是PLC编程使用最广泛的语言,用户量最多,当然它是老大。但SCL也一定会壮大起来的,因为它有自己优势。这里并不是说LAD不好,但有时候,有些人用SCL去编程反而更方便,特别是熟悉高级语言(如C语言等)的人。这两种语言的使用肯定是因人而异的,喜好不同、知识背景不同,他们的选择就不同。
用LAD语言写的程序,复杂一点的话,一般的电工是看不懂的。说句实在话,LAD语言,当初就是为电工准备的编程语言。那时候只有逻辑控制。电工如果满足了一般的逻辑控制,数据处理程序的编写就成了一句空话,别人用LAD写出来的程序也不见得看得懂。
现在时代不同了,PLC不只是去处理逻辑控制,还多了好多些功能。老早之前,S7-200就明显看到它的结构化编程的思想。300/400,到现在的1200/1500,它们都在朝着更先进的方向发展,LAD的语言更是如此。现在的LAD就是面向开发人员、工程师、技术人员的。再说电工也分好几类吧,一般的电工在工厂里是接触不到编程这一块的。LAD现在也是也是十分强大。
SCL未来将成为主流的语言,并不意味着LAD不是主流语言。大家还是不要误解了我的观点。
SCL能作为标配的编程语言出现在博途中,说明了什么,不正是说明它的存在价值吗。
年轻的朋友们,如果感兴趣,学习一下SCL语言的程序编写,我觉得还是蛮好的。
liuxd6909 说:
但凡是主流都是被大多数人所认同 的,所接受的。
fuhuafeng72 说:
企业有三六九等,很多小作坊,你给他传统的继电器系统原理图都搞不明白,不要说英文类C的程序了。世界就是个矛盾体。
LAD确实是一种不错的编程方式,之于类C,形如安卓之于IOS。
zhanghaiw 说:
做逻辑SCL确实不怎么样,搞搞算法还可以。建议LAD+SCL的组合,感觉非常棒。
965528555 说:
做逻辑也是非常好的,算法更是好用。而且方便转换其他PLC
以上观点都非常棒!至于结论如何,小编自身觉得每个语言都有自己的可取之处,对于大型的主流化编程语言,是作为一个资深的电气人应该了解的内容,时刻把握行业潮流动态,才不会让自己处于被动状态。看了以上内容,你觉得呢?留言哦!
往期优秀文章回顾:
新手学西门子PLC,要从哪开始?「附PLC与电动机控制精品讲解」
相关问答
plc怎样解析g代码?
数控机床中G代表是一种文本格式的代码,数控系统中G格式不能够直接被PLC辨别的,一般需要另外转换工具或者通过I/O等方式实现与PLC的对接,而PLC本身就是用普通的...
plc如何识别G代码?
要让PLC能够识别和执行G代码,通常需要进行以下几个步骤:1.G代码解析:PLC需要具备相应的逻辑来解析G代码,将其分解为具体的运动指令和操作指令。这可以通过P...
西门子PLC支持G指令吗,都是什么系列的?
西门子PLC好像都不支持G码,选西门子数控系统吧西门子PLC好像都不支持G码,选西门子数控系统吧
发那科plc中的f与g怎么来的?
在发那科PLC中,F和G分别表示从CNC输入到PMC的输入信号和从PMC输出到CNC的输出信号。这些信号地址是由CNC给定的,用于实现CNC和PMC之间的信息交互。F信号通常是...
plc与C语言有什么关系啊!-ZOL问答
html是网页开发语言,以标记为主的客户端程序。asp是网页的服务端实现。如:数据库操作等!有用(0)回复zenglingcai大部分厂家的plc支持结构化文本语言,这是...
三菱Q系列PLC指令G.OUTPUT是什么意思?
原因太多了!可能是输出口没配对!指令的参数也可能配的不对,伺服驱动器没接对线,参数没配置对,原因太多!原因太多了!可能是输出口没配对!指令的参数也可...
三菱PLC编程软件中“U\G817.3”的意思是什么?
U后面跟着个数字代表模块的位置,在FX系列中,U后面跟0~7代表模块的位置,在L,Q等模块机型的中U后面跟的是模块组态是的IO地址来表示模块位置。G后面跟着的是B...
PLC的FG端口是什么?
一般FG为接地,而FG接地并不是为了为通讯口做隔离之用,而是屏蔽干扰的作用,如果您只是测试并非在大干扰设备旁(如:大功率变频器)使用,那么FG不接地也无妨。...
怎样把CAD的G代码输入到工业机器人?-懂得
请打开动态输入DYN,会在画线的时候提示输入。1.什么是DYN:就是随鼠标位置提供的数据输入框,替代在命令行中的输入,比如要在命令行输入命令或者数据,...
三菱plc上的lg和fg是接地吗?
一般FG为接地,而FG接地并不是为了为通讯口做隔离之用,而是屏蔽干扰的作用,如果您只是测试并非在大干扰设备旁(如:大功率变频器)使用,那么FG不接地也无妨。...