如何使用三菱ST语言编写一个完整的项目程序,照着写就能成功
哈喽,大家上午好呀!
今天给大家带来如何使用三菱ST语言编写一个完整的项目程序 。
本文作者:陆冯
【本文如有不足之处,请各位高手指点】
众所周知,目前类似于C语言的ST结构化文本语言,已经成为了目前工控行业PLC编程的主流发展趋势。目前,三菱、西门子、施耐德等各大PLC厂商的编程软件,包括国产PLC所采用的CODESYS软件,这些编程开发平台均支持ST结构化文本语言。例如:西门子的SCL、三菱的ST等等。
当然,各家之间只是叫法不一样,但是本质上都是一样的。各家PLC厂商的ST结构化文本语言和C语言非常类似,并且符合IEC-61131-3国际电工委员会规定的标准,像定时器、计数器这些软元件,都有标准的数据结构和形式。因此,ST结构化文本语言,有着“支持跨平台移植”的独特能力,在它的面前,所有的PLC众生平等,不再有品牌之分,只要写一遍程序,就可以同时下载进入不同厂商生产的PLC,实现同样的功能;另外,ST结构化文本语言,也有着在“复杂数据运算处理”方面的天然优势。
那么,【西门子的SCL语言】或者【三菱的ST语言】好学吗?难吗?好用吗?为了回答这些问题,我特意今天给大家写出这样一篇文章,以FX3U小型PLC控制分拣设备为例,详细阐述三菱ST语言的在项目中的使用方法,并对程序进行详细的解析。
(设备总体视图)
正文开始:
内容目录
一、程序架构
二、详细程序解释
(注意:本文中全部程序是面向智控教育新北校区的物料分拣设备所编写的,不适用于世界上任何其他设备)
首先我们明确一点,我们要做的,是让这个设备安全、正确、高效 地运作起来。这是我们的唯一目的!那么为了这个目的去进行PLC编程调试。一个好的电气工程师编写出来的程序,应当具有:安全性、正确性、高效性、移植性和扩展性。PLC程序其实就是人的意志的延伸,你的思维和意识基本决定了这台设备是个傻瓜,还是聪慧过人,当然,这个世界上不可能有完美的程序.......
一、程序架构
为了我们的设备能够正常运行,我们将程序分为以下几个部分:
IO映射程序:
负责PLC输入输出虚拟地址与实际地址的映射。这样的做法,可有效降低PLC某个触点在损坏后,现场维修人员的工作量;并且,我们在本文第二章中,将详细讲解如何借助IO映射实现暂停和设备定时停机功能。
手动程序:
负责在设备进入手动状态后,对各个执行机构的手动操纵。
自动程序部分又分为6个小部分:
1.复位程序:
负责执行设备的复位,并对设备复位完成情况进行判断。
2.急停程序:
负责执行设备的紧急停止,该程序在被调用后,设备将无条件立即停止运行,所有机构停止运动,并保持当前位置不动,等待用户确认后,按下“复位按钮”进行设备复位。
3.暂停程序:
负责设备的暂时停止,该程序在被调用后,设备将无条件立即停止运行,所有机构停止运动,并保持当前位置不动,等待用户按下“启动按钮”进行重新启动,设备将继续去执行没有完成的任务,接着暂停前的流程继续正常运行。
4.预停程序:
负责执行设备的预先停止,该程序在被调用后,设备将在搬运完一个工件,也就是完成一个周期的顺序动作后立即停止运行,所有机构停止运动,并保持当前位置不动,等待用户确认后,按下“复位按钮”进行设备复位。
5.统计程序:
负责设备的完成工件数量的计数,并将数据存储到对应的数据寄存器中;同时为我们这套系统的1分钟工件完成趋势曲线提供参照数据。
6.顺控程序:
作为承载和配合以上4个子功能程序的主体,它负责对设备各个状态下的机构控制,但是也是最好写、行数最多的程序。
二.详细程序解释
1.实际输入信号X的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件X的编号,GXworks2软件会自动调出对应的X输入软元件地址。
2.实际输出信号Y的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件Y的编号,GXworks2软件会自动调出对应的Y输出软元件地址。
3.IO映射数据的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件M的编号,GXworks2软件会自动调出对应的M辅助继电器的软元件地址。
注意:在ST语言的全局标签建立过程中,可以不指定绝对地址,但是我们为了方便上位机HMI从PLC中读取各个信号的数据,要进行绝对地址指定,否则程序就会多出一个子程序部分,用这个子程序把数据传到绝对地址中,用来对监控信号的抓取操作,这样就不可取了,还不如直接在这里指定。
4.开关量数据(0/1标志位)的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件M的编号,GXworks2软件会自动调出对应的M辅助继电器的软元件地址。
注意:这些“0/1标志位”的建立,是为了ST语言程序在设备动作中,存储设备的动作完成信号、物料判别信号、系统中断信号、下一步动作许可信号等程序数据。
5.数字量数据(“字”数据类型状态存储器)的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Word”(“字”数据类型),并指定输入软元件D的编号,GXworks2软件会自动调出对应的D数据寄存器的软元件地址。
注意:这些“字”数据类型状态存储器的建立,是为了ST语言程序在设备动作中,存储设备的状态信号、完成个数、周期数量统计等程序数据。
6.HMI交互数据的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件M的编号,GXworks2软件会自动调出对应的M辅助继电器的软元件地址。
注意:这些“HMI交互数据”的建立,是为了PLC与上位机HMI之间的信号交互,主要是操作按钮,也是这台设备实现“人机交互”的关键一步。
7.IO映射、设备暂停程序的编写
将实际输入X软元件的状态,通过赋值语句传递到PLC内部我们建立的“I映射数据”;将PLC内部的“O映射数据”通过赋值语句传递到实际输出Y软元件。
注意:我们在“输出映射”程序段中,IF语句的执行条件被设为“暂停标志”的不得电状态,如果我们将“暂停标志”设置为1,设备将不再进行输出信号的数据更新,PLC所有实际输出软元件Y,将保持“暂停标志”为1前的状态,保持当前位置不动,从而实现设备暂停的功能。
PS:当然我们可以使用“级联方式”对时间继电器编程,自由设置一段时间,当时间到了之后,将“暂停标志”设置为1,设备将不再进行输出信号的数据更新,从而实现“设备的定时停机”。当然,这只是IO映射程序的一种特殊用法,希望能帮助到大家。
8.初始化程序的编写
当设备上电时,所有输出全部复位,为设备运行做好准备。
9.手动程序的编写
当设备处于手动状态时,上位机HMI交互数据(也就是触摸屏上的按钮),将分别控制每个执行机构动作,实现对设备的手动操纵。
10.复位程序的编写
当设备处于自动状态,并按下复位按钮时,系统状态将置为2,系统执行复位,在满足所有复位条件(所有机构的复位信号传感器得电)的情况下,将证明系统复位已经完成,系统状态将变为3,设备进入等待启动状态。
11.顺控程序的编写
主要是,一步一步走下去,正确地操作状态的转移和标志位的更新,就可以完成任务了。我们的顺序控制程序,主要分为3个部分,每个部分之间,依靠标志位进行信息的交换,这些交换的数据内容有很多,比如:设备的动作完成信号、物料判别信号、系统中断信号、下一步动作许可信号等。
顺序控制程序,需要把“0/1标志位”和“字”数据类型状态存储器的配合使用,烂熟于心,因为顺控程序承载的是整个程序的主体,其他所有的功能都是在这个主体上建立的,这个程序要是写不好,基本什么都没戏了。
12.急停、预停程序的编写
当接收到“急停”或者“预先停止”信号时,系统将判断在何时,将顺序控制程序的“字”数据类型状态存储器置为“1”,让设备进入停止状态,设备将从顺序控制的自动运行状态中跳出,不再继续向下执行,PLC所有输出软元件保持当前状态不动作,0依旧为0、1依旧为1,所有机构不会再动,由此可以实现设备的安全停止,防止对人员的二次伤害。
13.统计程序的编写
根据程序中抓取到的信号标志位,并配合“字”数据类型状态存储器,实现对物料分拣总数量的统计;通过定时器T20定时,每隔1分钟对“一分钟统计个数产能”清零,为上位机HMI的统计趋势曲线提供数据依据。
到这里,我们的“智控分拣设备ST语言程序”就全部解释完了。
如果大家对三菱ST语言感兴趣,可以来常州智控教育学习,这里有配套完整、功能先进的教学设备,有认真负责、一丝不苟的专业老师,能够帮助您在工控之路上,走得更快、更远!!!
有人说: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与电动机控制精品讲解」
相关问答
三菱FX3U系列PLC到底能不能用ST语言编程?
可以使用ST语言编程,需要使用GXWorks软件。可以使用ST语言编程,需要使用GXWorks软件。
老铁们跪求回复,国产plc兼容西门子的品牌有哪些?国产plc品...
[回答]Quantum系统同时提供了IEC要求的全部5种编程方式:LD、FBD、SFC、IL、ST,将传统DCS与PLC的优势完美地结合于一体,同时具备了强大的过程控制功能和离...
三菱st语言可以转换到其他plc吗?
三菱st语言本身是一种编程语言,只能在三菱PLC上运行。如果要将三菱PLC程序转换到其他PLC品牌上,需要通过手动重新编写程序或使用转换工具进行转换。因为不同...
plc编程谁家的好用?
很高兴回答的问题!就市场占有率来看,西门子最大,其次是三菱、欧姆龙。具体谁家好用,这个不能一概而论,还取决于编程人员对其使用的熟练程度。西门子PLC又...这...
支持带参调用子程序st语言plc推荐?
ST语言支持功能块调用,子程序调用,函数调用,目前支持ST语言的有倍福,和利时,AB,三菱,西门子,ST语言基于IEC-61131-3国际通用PLC语言系统。功能强大,编...ST...
plc用st语言编程调试方便吗?
PLC用ST语言编程调试相对比较方便。ST语言是一种结构化的编程语言,它具有类似于传统计算机编程语言的特性,如变量定义、循环控制和函数调用等,因此对于熟悉传...
plc编程st语言会成为主流吗?
ST语言在PLC编程中是否会成为主流语言,这个问题涉及到多个因素,包括技术发展、应用需求、以及教育领域的倾向等。首先,从技术发展的角度来看,PLC已经经历了半...
信捷plc支持st语言吗?
1.是的,信捷PLC支持ST语言。2.因为ST语言是一种结构化文本编程语言,适用于复杂的控制逻辑和算法。信捷PLC作为一种先进的可编程逻辑控制器,提供了对ST语言的...
st-20plc用什么软件?
西门子PLC模块ST20提供不同类型、I/O点数丰富的CPU模块,单体I/O点数可达60点,可大部分小型自动化设备的控制需求。另外,CPU模块配备型和经济型供用户选择,对...
PLC初学者如何从梯形图过渡到ST语言编程?
说一点个人看法。如果你本来是学计算机的转行到工控自动化行业,那么ST语言编程对你来说应该是轻而易举,看看帮助文件或者实际测试一下应该很容易就能上手!下...