线下实训
HOME
线下实训
正文内容
plc编程平台源码 如何使用三菱ST语言编写一个完整的项目程序,照着写就能成功
发布时间 : 2025-05-18
作者 : 小编
访问数量 : 23
扫码分享至微信

如何使用三菱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语言感兴趣,可以来常州智控教育学习,这里有配套完整、功能先进的教学设备,有认真负责、一丝不苟的专业老师,能够帮助您在工控之路上,走得更快、更远!!!

CODESYS平台,工控界的安卓

CODESYS(Controller Development System)是德国3S(SMART,SOFTWARE,SOLUTIONS)公司开发的开放式、可重构的IEC 61131-1(PLCopen)编程软件,不依赖于任何硬件平台。3S公司本身不生产任何控制器,只负责开发软件,类似手机操作系统界的安卓。目前有大量的知名自动化厂商基于该平台开发自动化控制设备,例如:施耐德、倍福、力士乐、ABB等超过150家(官方号称,实际也真的挺多的,OMRON运动控制平台貌似也是)自动化厂商,国内也有如和利时、汇川、步科、固高等厂家。

据官方介绍CODESYS基于微软Microsoft.NET ,采用面向对象技术进行构建的,整个软件分为应用开发层、通信层和设备层 ,支持CANopen、Profibus、EtherCAT、SERCOS、Device Net、ProfiNet、Modbus、Ethernet 等多种现场总线(取决于OEM厂家)。CoDeSys Soft Motion 软件包包含逻辑控制(SoftPLC)、运动控制 (SoftMotion) 、数控机床(SoftMotion CNC)、人机界面控制(Visualization)、总线集成和配置(Field Bus Integration And Configuration)、库(CoDeSys Libraries)、ENI服务(ENI Server)、冗余(CoDeSys Redundancy) 和安全(Safety)等功能模块组成完美地实现从单轴运动到复杂的多轴轨迹插补的编程和控制。3S公司于1994发布CODESYS1.0版本,经过多年迭代更新,目前最新的版本是V3.5.12.20。CODESYS支持IEC61131-3标准所描述的6种编程语言:IL(指令列表) 、ST(结构化文本)、 FBD(功能块图) 、LD(梯形图)、CFC(连续功能图)、 SFC(顺序功能图)。在编程上CODESYS支持标准IEC数据类型及LTIME、DATE、TIME、DATE_AND_TIME 、TIME_OF_DAY 外,另外CODESYS还支持数据单元类型ARRAY(数组)、STRUCT(结构)、ENUMERATION(枚举)。

在CODESYS V3.5版本中3S公司越来越强调其面向对象的编程方式,指针功能也包含在其中,通过强大的指令系统以及库功能能够灵活的实现程序的复用,减少编程、调试工作同时增强程序的稳定性。同时CODESYS内置的Visualization能够轻松实现人机对话,个人觉得基本上用于替换触摸屏操作是没问题的,通过IP地址就能实现界面的访问,非常方便。曾经亲自看见过施耐德的工程师在TM241平台上演示利用PLC和Visualization功能编写的一套完整的五子棋游戏,可见其编程语言和可视化界面的强大。CODESYS的库分为内部库和外部库,内部库是完全利用CODESYS实现的自定义LIB库。外部库则需要利用相关的编译链去编译,由大多数OEM厂商提供,可以直接利用OS底层的API进行编程,性能效率更高。同时用户自定义库方面可以生成标准库文件和编译库,其区别是当用户将自定义库导入到项目中后,标准库是可以看见源代码的,而编译库则只能看见输入输出引脚,而无法查看内部算法,这对于知识产权的保护非常有利。CODESYS默认下载程序前都需要进行编译生成的二进制文件导入到PLC中,并且不允许上传(也可以选择将源码下载到PLC允许上传操作,但实际上PLC还是运行的是编译后的文件,而不是程序解释代码,下载源代码其实相当于在PLC上备份程序,理论上讲CODESYS平台的PLC应当属于编译型而非解释型),这种操作进一步保护了程序安全,防止COPY。

CODESYS与日系等PLC相比较,完全属于不同的体系,编程思想也完全不同,个人觉得CODESYS的编程环境和语言更加强大,当然目前日系的PLC比如三菱、OMRON也开始慢慢支持部分IEC61131-3标准,并且支持其部分编程语言例如ST,但并不彻底(OMRON的Sysmac Studio除外)。与西门子TIA相比,西门子SCL的输入方式更加便捷,但CODESYS的SFC语言比西门子的GRAPH更加直观、强大、方便。从编程方式来看CODESYS完全基于标签编程(类似AB RSLOGIX STUDIO),编程过程中不用考虑地址问题,当然西门子TIA也可以实现符号编程,但两者之间还是有不一样的地方,比如CODESYS平台中没有DB的概念,更加类似与高级编程C语言等。从长远看,CODESYS应该很有前景,首先,学会CODESYS编程环境,那么采用该平台的控制都非常容易上手,相同的编程环境、指令、语法结构。其次,程序移植也非常方便,A家的产品程序移植到B家的控制器只需修改少部分代码即可使用,减少了程序开发时间、并且代码质量有保证。第三,功能非常强大,目前CODESYS广泛应用于PLC、运动控制器、数控机床、机器人,而且OEM厂商提供了大量成熟的解决库文件,比如施耐德在其运动控制器PD3系统中就提供了标准的机器人功能库,只需要拖拽相应的功能块链接相关参数变量即可实现如Piack&Place或DELTA机械手。力士乐等其他厂商也有相应的解决方案库,这些使用起来都非常方便。在完成机器人动作的同时还能集成PLC任务,一机多用,减少用户成本。自动化行业技术更新越来越快、信息技术的应用也越来越多,而且PLC已经不再仅仅是为了解决传统的逻辑控制,更多的包含运动、信息技术,编程方法(例如ISA88模型)也不再局限于流程控制,更多软件工程的思想比如面向对象技术的应用使得PLC能够完成更多的功能。

时代在进步,自控人应当以更加开放的心态面对新的技术,行业同仁之间应多交流才能实现共同进步!本文仅代表个人意见,由于才疏学浅难免有疏漏,还请同仁多多指点。

相关问答

plc程序是代码么?

PLC的程序是代码。PLC的程序源代码通常由一系列指令和逻辑语句组成,编写它们的目的是实现特定的任务或控制过程。PLC的程序是代码。PLC的程序源代码通常由...

三菱源代码信息是什么意思?

开发过程中编写的原始代码。这些代码包含了产品的功能、算法和逻辑等方面的实现细节,是软...你好,三菱源代码信息可能指的是三菱电机公司产品的源代码信息,即...

西门子plc的源程序?

源程序是用STL语言写的,可以通过梯形图生成。打开程序块,文件菜单下边有一个生成源文件就可以。最常用到的使用源文件的地方就是给程序块加密(虽然现在可以很...

plc点坏了怎么解决?没办法改点加个继电器怎么接线?

一般PLC从开始选型设计的时候,就要考虑留有余量点来处理这些问题的,虽然PLC可靠性非常高,但是不代表不会坏了,一般工厂设备考虑的基本上是继电器输出点,继电...

三菱plc程序超出容量咋办?

程序超过容量,根本写不进去,不担心程序超过容量,根本写不进去,不担心

plc输出点烧坏怎么处理?

一般PLC从开始选型设计的时候,就要考虑留有余量点来处理这些问题的,虽然PLC可靠性非常高,但是不代表不会坏了,一般工厂设备考虑的基本上是继电器输出点,继电...

plc中decoc0m0k3是什么?

DECO是解码指令,D0存储源码,解码后存放在K3M100里面,共8位。D0=0时,M100=1;当D0=1时,M101=1当D0=2时,M102=1;当D0=3时,M103=1当D0=4时,M104...

什么是OSR?

PLC语言是逻辑指令类语言,适用于可控自动化控制器的编程语言,写入控制器后给机械设备指令实现自动化作业。OSR是C++语言,为命令语言,通用性很强,网络平台...

S7-300中怎么看DB是谁的背景块或是共享块?

在S7-300中,要查看DB(数据块)的背景块或共享块,可以按照以下步骤进行操作:1.打开STEP7编程软件,并连接到PLC。2.在项目树中,展开PLC站点下的"Blocks&qu...

三菱plc无法解除的保护能破解吗?

无法破解因为三菱plc设置的保护是为了确保系统的稳定性和安全性,不允许随意篡改或更改程序。这些保护措施包括密码保护、源代码保护等,一般工程师无法解除。如...

 中国防空识别区  赏金猎人剧情介绍 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部