当前位置:网站首页 > 云服务教程 > 正文

plc1200视频教程(plc1200ctu)



使用折线实现水流的的启停、方向和流速的控制。

新建项目。

新建3个内部变量:水流启停(二进制变量)、水流方向(二进制变量)、水流速度(无符号8位)。

新建画面,并设置为启动画面。

打开画面开始编辑,调整网格尺寸为5,方便对齐对象。

绘制管道,修改索引为1,调整X轴和Y轴到合适位置,设置管道宽为20。

使用折线来绘制水流。将折线命名为水流1,设置索引为1,调整X轴和Y轴,设置颜色为蓝色,线宽设置为10,设置线型种的三个选项,将全局方案改为否。

将水流当前X轴设置为VBS动作。

水流代码:

Function ActualPointLeft_Trigger(ByVal Item)

Dim poly,lft,speed

Set poly=ScreenItems("水流1")

poly.Index =1

lft=poly.ActualPointLeft '取当前x坐标值

If HMIRuntime.Tags("水流方向").Read Then

If HMIRuntime.Tags("水流速度").Read =2 Then

poly.ActualPointLeft=lft+5

'ActualPointLeft_Trigger=lft+5 ‘使用ActualPointLeft_Trigger也是可以的

Else If HMIRuntime.Tags("水流速度").Read =1 Then

poly.ActualPointLeft=lft+3

'ActualPointLeft_Trigger=lft+3 ‘使用ActualPointLeft_Trigger也是可以的

Else If HMIRuntime.Tags("水流速度").Read =0 Then

poly.ActualPointLeft=lft+1

'ActualPointLeft_Trigger=lft+1 ‘使用ActualPointLeft_Trigger也是可以的

End If

End If

End If

If lft>=118 Then

poly.ActualPointLeft=100

'ActualPointLeft_Trigger=40

End If

Else

If HMIRuntime.Tags("水流速度").Read =2 Then

poly.ActualPointLeft=lft-5

'ActualPointLeft_Trigger=lft-5 ‘使用ActualPointLeft_Trigger也是可以的

Else If HMIRuntime.Tags("水流速度").Read =1 Then

poly.ActualPointLeft=lft-3

'ActualPointLeft_Trigger=lft-3 ‘使用ActualPointLeft_Trigger也是可以的

Else If HMIRuntime.Tags("水流速度").Read =0 Then

'ActualPointLeft_Trigger=lft-1 ‘使用ActualPointLeft_Trigger也是可以的

poly.ActualPointLeft=lft-1

End If

End If

End If

If lft<=100 Then

poly.ActualPointLeft=118

'ActualPointLeft_Trigger=58 ‘使用ActualPointLeft_Trigger也是可以的

End If

End If

End Function

代码说明:不断改变水流折线“水流1”的X轴坐标值,导致折线虚线点位置不断发生改变,从而产生流动的效果,X增加,对应水流向右,X减少,对应水流向左,步长影响水流速度。

修改触发器为“动画周期”。

绘制一个阀门到管道上,可以调用库里的现成图形。

绘制控制水流启停、流动方向和速度的按钮。

为开始按钮添加VBS动作。

开始按钮代码:

Sub OnClick(ByVal Item)

Dim poly

Set poly=ScreenItems("水流1")

poly.Visible=True

Select Case HMIRuntime.Tags("水流速度").Read

Case 0

poly.ActivateDynamic "ActualPointLeft","CycleTime500ms"

Case 1

poly.ActivateDynamic "ActualPointLeft","CycleTime250ms"

Case 2

poly.ActivateDynamic "ActualPointLeft","CycleTime125ms"

End Select

HMIRuntime.Tags("水流启停").Write True

End Sub

代码说明:首先让两个折线水流可见。然后根据速度设定值,以不同的触发周期激活动画触发器,最后设置启动变量“水流启停”为真。

为停止按钮添加VBS动作。

停止按钮代码:

Sub OnClick(ByVal Item)

Dim poly

Set poly=ScreenItems("水流1")

poly.Visible=False

poly.DeactivateDynamic "ActualPointLeft"

HMIRuntime.Tags("水流启停").Write False

End Sub

代码说明:将两个折线水流动画触发器取消激活,然后隐藏,并设置“水流启停”变量为假。

为水流正向按钮添加VBS动作。

正向按钮代码:

Sub OnClick(ByVal Item)

hmiruntime.Tags("水流方向").Write True

End Sub

代码说明:设置变量“水流方向”为假即可。

为水流逆向按钮添加VBS动作。

逆向按钮代码:

Sub OnClick(ByVal Item)

hmiruntime.Tags("水流方向").Write False

End Sub

代码说明:设置变量“水流方向”为真即可。

为慢速按钮添加VBS动作

Sub OnClick(ByVal Item)

Dim poly

Set poly=ScreenItems("水流1")

poly.ActivateDynamic "ActualPointLeft","CycleTime500ms"

hmiruntime.Tags("水流速度").Write 0

End Sub

代码说明:将动画触发器周期改为500ms,同时设置变量“水流速度”为0,这样可以使X轴和Y轴每500ms才变化一次,所以感觉是慢的。

为中速按钮添加VBS动作

中速代码:

Sub OnClick(ByVal Item)

Dim poly

Set poly=ScreenItems("水流1")

poly.ActivateDynamic "ActualPointLeft","CycleTime250ms"

hmiruntime.Tags("水流速度").Write 1

End Sub

代码说明:将动画触发器周期改为250ms,将变量“水流速度”设置为1。

为快速按钮添加VBS动作

高速代码:

Sub OnClick(ByVal Item)

Dim poly

Set poly=ScreenItems("水流1")

poly.ActivateDynamic "ActualPointLeft","CycleTime125ms"

hmiruntime.Tags("水流速度").Write 2

End Sub

代码说明:将动画触发器周期改为125ms,将变量“水流速度”设置为2。

保存画面并激活,测试动画。

概念清晰,逻辑思路清晰,是搞一切工程技术的必备条件。从事工业控制,如果你对概念是模糊的,或是一知半解的,那么,你永远无法深刻理解各种知识,你永远都会疲于奔命!!就像很多棒槌说的,怎么我学了西门子S7-200SMART,再去学习西门子的S7-1200像换了一个品牌,还要重新学?所以,明确各种概念,是成为大神的必备条件。

虽然很多梯形图的铁杆粉丝进行了一轮又一轮的拉锯战,但是发现很多人连ST语言到底是什么都搞不清,喜欢ST语言的人也搞不太清什么是ST语言,今天就跟大家科普一下。

ST,是STRUCT TEXT 的缩写,是IEC61131-3标准制定的编程语言!!从字面理解,是结构化文本语言!很明显,它是为结构化编程而诞生的!!它以计算机的Pascal语言为基础,针对工业控制进行了一系列的优化和修改!!也可以认为它是根据C语言来的,但这种说法不太严谨,因为ST语言是不区分大小写的,而C语言严格区分大小写。这些都是根据工业控制的实际情况而制定的。

比如, Axis_Enable 和 AXIS_ENABLE 这两个变量,在ST语言中是没任何区别的,但在C语言中,可是完全不一样的。

提到工业4.0,提到工业自动化,西门子是一个绕不开的坎!!总之,它在工业自动化领域,就是泰山北斗,少林武当!而西门子也是非常强势的,它推出的博途软件平台,并不是完全遵守IEC61131-3标准,而是略有修改,就好比武林大佬们自创武功或是修改前辈留下的武功。西门子推出了自己的编程语言,SCL(Structured Control Language)语言,也就是结构化控制语言,它其实和IEC标准制定的ST语言是一样的,只是在个别语法和功能块(FB)调用上,略有不同!!最需要主要的比如:

IF

语句 ;

END_IF;

在西门子的SCL中,END_IF是要加分号的,而在标准的ST语言中,是不用的。

所以,ST和SCL是一回事!!

而STL,是西门子在STEP7时代推出的语言,它不是STRUCT TEXT LANGUAGE的缩写,所以,它和ST语言完全没关系。STL语言是一种汇编语言,是面向机器底层的语言,可以直接操作寄存器,可读性不强,和80C51单片机的机器语言是一个层面。所以,它是一种低级语言,而ST,SCL都是中高级语言。

越高级的语言,可读性越好,越侧重于变量和算法,和硬件无关,而越低级的语言,越侧重于寄存器地址,和硬件关系紧密,并可以直接操作硬件,但可读性差,执行效率高。现在,西门子的博途平台是主推SCL的。

所以,STL和ST,SCL完全不是一回事,不可混为一谈,不要看上去都MOVE,都是英文,就认为是同一种东西!!这种思维方式,注定你会概念混乱的,而概念混乱,是从事工控行业的大忌!

还有一种语言IL,称之为指令表,它其实是梯形图的一种描述,是可以和梯形图相互转换的,根本不是一种编程语言,严格说来,它只是梯形图的一种表现形式。

近几年S7-1200和1500肯定是西门子的主推产品。尽管现在S7-300和400依然被广泛的运用,但随着博途软件的高度集成化,并被越来越多的工程师接受,S7-1200/1500以及一些只有博途才兼容的其它自动化产品将会被越来越多的运用在项目中。

一、S7-1200作为新推出的紧凑型控制器,其产品定位在原有的SIMATIC S7-200和S7-300之间,它与S7-300的区别主要体现在硬件、通信、工程、存储器、功能块、计数器、定时器、工艺功能等方面。一、硬件的区别。在硬件扩展方面,S7-300的主机架多支持八个扩展模块,而S7-1200支持扩展多八个信号模块和多三个通信模块。以S7-300 CPU313C和S7-1200 CPU1214C为例,S7-1200的CPU支持通过信号板来增加IO点数,而S7-300CPU的IO点数是固定的。在硬件组态方面,S7-300和S7-1200的地址都可以由用户手动进行重新分配。

硬件的区别

二、通信方面的区别。串行通信方面,S7-300和S7-1200都支持通过RS232和RS485实现点对点通信,支持ASCII、USS和MODBUS等通信协议。S7-300需要选用带PTP接口的CPU或者CP模块,实现RS232的串口通信。而S7-1200则是通过RS232通讯模块来实现串口通信。S7-1200本机集成了PROFINET接口,支持与编程设备、HMI以及其他CPU之间的通信。

通信的区别

三、工程方面。S7-1200的编程软件STEP7 Basic提供了一个易用集成的工程框架,可用于SIMATIC S7-1200和精减HMI面板的组态。

工程框架

四、存储方面的区别。S7-300和S7-1200的程序存储器和数据存储器的大小都是浮动的。S7-1200 CPU的符号表和注释可以保存在CPU中,可在线获取。在S7-1200中利用符号化存取,可以zui优化分配数据块所占的存储区。在保持存储区方面,S7-1200多可以设置2048个字节的保持区,可以对数据块中的离散变量设置保持性。而S7-300是以字节为单位进行保持性设置的。在存储容量方面,S7-1200的存储卡大可到24兆字节,对于S7-1200存储卡是可选项,而S7-300的存储卡是必选的。S7-300的存储卡无法存放配方和数据记录等。另外S7-1200的存储卡还将用来实现存储区扩展,程序分配及固件升级等功能。

存储的区别

五,程序结构的不同。S7-1200和S7-300一样,有OB块、FB块、FC块及数据块等,程序结构高度模块化,并且可以重复利用,大嵌套深度为16。S7-1200和S7-300类似,都是通过组织块来分配事件的。

程序结构的区别

六、数据类型的不同。S7-1200中的新数据类型使应用更加灵活。例如用于日期和时间时,S7-300通过调用系统功能块SFC读取日期时间数据,而S7-1200可以通过符号名访问DTL结构的所有组成部分。

数据类型的区别

七、计数器指令的区别。S7-300中的计数器在计数值大于零时,计数器输出置位,而S7-1200中的计数器,在计数值大于等于设定值时,输出置位。S7-300 S5计数器的计数范围是0到999,而S7-1200的计数范围是可调的。

计数器指令的区别

八、定时器指令的区别,S7-300中的定时器在计时值大于设定值时,定时器输出置位,而S7-1200的定时器在计时值大于等于设定值时输出置位。另外S7-1200的定时时间可以像S7-300一样直接输入。

定时器指令的区别

九、工艺功能。S7-1200和S7-300类似,都是通过调用相应的块来实现不同的工艺功能。

工艺功能

前言

前面的课程(ixigua.com/1)已经讲完了西门子1200PLC的系统参数、外围设备接线和寻址方式等内容,接下来是编程的环节。对于PLC从业者来说,最常用的编程语言就是梯形图,简单的梯形图实际上是从电气控制图简化而来的,下面介绍基本指令的第一个内容:触点、线圈指令及逻辑运算。


1.1 常开触点指令,如上图所示,它是一个逻辑开关,可以理解为是电气控制图中的常开按钮,这个逻辑开关是否接通是受寻址的结果而决定的,若I0.0(按位寻址)的寻址结果为“1”,这个逻辑开关就会导通,若寻址结果为“0”,则这个逻辑开关就不会动作,保持常开。相当于,当有人按了下常开按钮(带自动复位的按钮),常开按钮就会接通,不按它,按钮就会保持常开。

1.2 常闭触点指令,如上图所示,同样也是一个逻辑开关,可以理解为是电气控制图中的常闭按钮,这个逻辑开关是否接通是受寻址的结果而决定的,若I0.5(按位寻址)的寻址结果为“1”,这个逻辑开关就会断开(注意:这里的与常开触点相反的),若寻址结果为“0”,则这个逻辑开关就保持接通,不会动作。相当于,当有人按了下常闭按钮(带自动复位的按钮),常闭按钮就会断开,不按它,按钮就会保持闭合。

1.3 取反指令,如上图所示,它一般与其它指令进行配合使用,作用是将它前面指令的逻辑运算结果进行取反操作。若“NOT”左边的运算结果为“0”,则“NOT”右边的输出结果就是“1”,反之亦然。

1.4 线圈指令有常开线圈指令和常闭线圈指令。

1.5 常开线圈指令,如上图所示,常开线圈指令可以理解为接触器的线圈(未通电状态下),它的状态也是受寻址的结果所决定的,若Q0.4的寻址结果为“1”,则常开线圈指令闭合,相当远接触器线圈通电了,接触器主触点吸合,若Q0.4的寻址结果为“0”,则常开线圈指令不变化。

1.6 常闭线圈指令,如上如所示,常闭线圈指令也可以理解为接触器的线圈(通电的状态下),它的状态也是受寻址的结果所决定的,若Q0.5的寻址结果为“1”,则常闭线圈指令断开,相当于接触器的线圈失电,接触器主触点断开,若Q0.5的寻址结果为“0”,则常闭线圈指令不变化,线圈保持得电的状态,接触器主触点保持吸合。


2.1 “与”运算

所谓的逻辑运算,本质上是寻址结果“与”、“或”、“非”运算,下图中,两个触点线圈连接在一起,相当远一个“串联”电路,串联电路的一个特点就是,只要有一个元器件没有“导通”,都不会有输出结果,所有只有I0.0和I0.1的寻址结果都为“1”,下面“串联”的两个触点的“与”运算的结果才是“1”,这时线圈指令Q0.0的寻址结果为“1”,常开线圈接通。

2.2 “或”运算

“或”运算实际上相当于一个并联电路,只要有一个开关(也就是下图中的触点指令)闭合或者导通,其输出的结果都是“1”,进而控制线圈指令的接通和断开。

2.3 “取反”运算

“取反”运算是将前面指令的运算结果进行取反操作,以下图程序为例,若I0.4和I0.5的寻址结果都是“1”,则常开触点和常闭触点的“与”运算结果为“0”,这个“0”分两路,一路直接给Q0.5,即Q0.5的寻址结果为“0”,常闭线圈触点保持不变;另一路通过“取反”指令输出结果为“1”给Q0.4,即Q0.4的寻址结果为“1”,常开线圈闭合。

从本篇文章开始连续4篇讲解西门子S7-1200PLC基本指令的沿脉冲指令,今天讲解沿脉冲指令的第一个部分的内容:扫描操作数信号上升沿(下降沿)指令。

扫描操作数信号上升沿指令有2两个寻址值,分别为寻址值1:当前扫描周期存储值;寻址值2:上一个扫描周期寻址值1的值。

当I0.0由寻址的值由0变为1的时候(或者说开关I0.0对应的开关由断开变成闭合的时候),由于M20.0存储的是上一个扫描周期I0.0的值:0,所以就会产生一个上升沿信号(0~1的跃迁,也可以理解是电瓶车启动加速那种状态),这样上升沿指令就会接通一个扫描周期,这里特别要注意哦:只接通一个扫描周期。但是这一个扫描周期的时间足以让置位输出指令接通,将Q0.0的值置位为1。

同样,扫描操作数信号下降沿指令也有2两个寻址值,分别为寻址值1:当前扫描周期存储值;寻址值2:上一个扫描周期寻址值1的值。

当I0.1由寻址的值由0变为1的时候(或者说开关I0.1对应的开关由断开变成闭合的时候),由于M20.1存储的是上一个扫描周期I0.0的值:0,所以就会产生一个上升沿信号(0~1的跃迁,也可以理解是电瓶车启动加速那种状态),下降沿指令不会响应这个上升沿信号,所以不会接通,但是有一点需要注意的是,由于按钮开关已经闭合了,而扫描周期的时间很短,所以M20.1存储的值就一直保持为值1(只要按钮不松开,M20.1的值就一直为值1,因为他存储的是上一个扫描周期I0.1的值)。

当I0.1寻址的值由1变为0的时候(或者松开I0.1对应的按钮开关的时候),由于M20.1的存储的上一个扫描周期的值为1,所以在当前扫描周期就会产生一个下降沿(1~0的信号跃迁,也就是电瓶车急刹车的那种状态),那这样的话下降沿指令就会在当前扫描周期内接通,让复位输出指令接通,将Q0.0的值复位为0。

(本片完结,持续更新中~)

在西门子S7-1200PLC的指令系统中,定时器和计数器都是采用IEC标准(即International Electro technical Commission,国际电工委员会,简称IEC),S7-1200PLC有3种类型的定时器(1.加计数器:CTU;2.减计数器:CTD;3.加减计数器:CTUD)。

每个计数器都使用数据块来保存计数器的数据,用户在编辑器中放置计数器指令时,系统会自动分配相应的数据块,计数器指令使用的是软件的计数器,其计数的速率受PLC扫描周期控制。对于需要记录速率变换很快的信号,需要使用高速计数器。

加计数器有5个输入输出端,分别为:1.加计数信号输入端——CU;2.复位端——R;3.预设计数值——PV;4.当前计数值——CV;5.计数器信号输出——Q,如下图所示:

每当CU从“0”变为“1”,CV增加1;当CV=PV时,Q输出“1”,此后每当CU从“0”变为“1”,Q保持输出“1”,CV继续增加1直到达到计数器指定的整数类型的最大值。在任意时刻,只要R为“1”时,Q输出“0”,CV立即停止计数并回到0。

计数器所指定的不同整数类型对应的计数最大值不一样,具体见下图所示:

减计数器同样也有5个输入输出端,分别为:1.减计数信号输入端——CD;2.值装载端——LD;3.预设计数值——PV;4.当前计数值——CV;5.计数器信号输出——Q,如下图所示:

每当CD从“0”变为“1”,CV减少1;当CV=0时,Q输出“1”,此后每当CU从“0”变为“1”,Q保持输出“1”,CV继续减少1直到达到计数器指定的整数类型的最小值。

在任意时刻,只要LD为“1”时,Q输出“0”,CV立即停止计数并回到PV值。

注意:若当前计数值CV没有被保存,是看不到计数值的,一直显示为“0”。

减计数器同样有8个输入输出端,分别为:1.加计数信号输入端——CD;2.减计数信号输入端——CD;3.复位输入端——R;4.值装载端——LD;5.预设计数值——PV;6.当前计数值——CV;7.计数器信号输出1——QU;8.计数器信号输出1——QD,如下图所示:

每当CU从“0”变为“1”,CV增加1,每当CD从“0”变为“1”,CV减少1;当CV>=PV时,QU输出“1”。

当CV<PV时,QU输出“0”;

当CV<=0时,QD输出“1”,当CV>0时,QD输出“0”; CV的上下限取决于计数器指定的整数类型的最大值与最小值。

在任意时刻,只要R为“1”时,QU输出“0”,CV立即停止计数并回到0;只要LD为“1”时,QD输出“0”,CV立即停止计数并回到PV值。

到此这篇plc1200视频教程(plc1200ctu)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • st7735s视频教程(st7735配置说明)2025-10-15 13:54:04
  • 启动盘u盘制作(u盘启动盘制作视频教程)2025-10-15 13:54:04
  • esp8266获取天气教程(esp8266天气预报固件)2025-10-15 13:54:04
  • cmake项目目录结构(cmake教程 多层目录)2025-10-15 13:54:04
  • ad21安装及破解教程(ad18安装及破解教程)2025-10-15 13:54:04
  • libxml2 c教程(libxml2源码)2025-10-15 13:54:04
  • ad20软件安装教程(ad软件的安装)2025-10-15 13:54:04
  • 服务器部署软件教程(服务器部署软件教程视频)2025-10-15 13:54:04
  • yolov3视频教程(yolov3.cfg)2025-10-15 13:54:04
  • 用u盘制作启动盘安装系统教程(用u盘制作启动盘安装系统教程图片)2025-10-15 13:54:04
  • 全屏图片