最新s7300中udt与struct型数据总结电子教案.docx

上传人:b****4 文档编号:5221354 上传时间:2022-12-14 格式:DOCX 页数:20 大小:642.49KB
下载 相关 举报
最新s7300中udt与struct型数据总结电子教案.docx_第1页
第1页 / 共20页
最新s7300中udt与struct型数据总结电子教案.docx_第2页
第2页 / 共20页
最新s7300中udt与struct型数据总结电子教案.docx_第3页
第3页 / 共20页
最新s7300中udt与struct型数据总结电子教案.docx_第4页
第4页 / 共20页
最新s7300中udt与struct型数据总结电子教案.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

最新s7300中udt与struct型数据总结电子教案.docx

《最新s7300中udt与struct型数据总结电子教案.docx》由会员分享,可在线阅读,更多相关《最新s7300中udt与struct型数据总结电子教案.docx(20页珍藏版)》请在冰豆网上搜索。

最新s7300中udt与struct型数据总结电子教案.docx

最新s7300中udt与struct型数据总结电子教案

UDT型说明:

从数据类型的意义上说UDT并不被CPU所识别,而是在离线程序中自定义(组合)的数据类型。

S7 程序的自定义数据类型并不能装载到S7 CPU中。

UDT是由递增的编辑器创建并编辑或由源文件的编译而生成。

当在块调用中进行变量传递时是不能将UDT作为内存地址区域来传递的。

因此推荐将传递的变量指定为字节数据类型并与其数据长度相一致,或者使用 UDT的符号名来定义 IN,OUT 和IN_OUT参数,因为系统将自动生成相对应的地址。

下表介绍了如何创建和参数化 UDT 类型变量的过程。

我们将以两组各十台相同的电机为例。

UDT1对应这些电机的所有输入变量。

 

序号

步骤

1

在STEP7项目中插入自定义数据类型。

如图01鼠标选中“block”文件夹并点击右键,再弹出菜单中选择命令“InsertNewObject>DataType”。

图01

2

在“Properties-DataType”对话框中输入UDT1的符号名(这里以“Motor”为例)后点击OK确认。

图02

3

打开UDT1并输入相关数据类型的变量及其初始值。

图03为UDT1变量声明的例子。

图03

4

然后通过菜单命令“Insert>S7Block>DataBlock”在STEP7项目中添加一个数据块DB1,并在“Properties-DataBlock”属性对话框中为其定义符号名(例如此例为“Halle_Motoren”(Hall-Motors))。

点击OK确认。

 

图04

5

打开DB1将变量数据类型定义为UDT1(符号名“Motor”)。

例如图05所示:

两个数组(ARRAY)变量,每组包括10个以UDT1为数据类型的变量(编号1到10)。

图05

由于此例两组电机是独立的,所以在DB1中要为每一组电机创建数据结构。

例如第一组的数据结构定义为数据类型为UDT1的数组“Array[1..10]”,符号名为“Halle_1_Motor”。

6

选择菜单命令“View>DataView”可显示所有DB1数据。

图06

注意事项:

在数据块中变量定义为 UDT情况下只能对实际值进行编辑。

即可以在数据块的数据视图中输入变量的当前值。

初始值“InitialValue”纵栏显示的是在定义UDT 变量时所设的初值。

只是在DB块第一次存储时将初值作为当前值。

7

为FC或FB定义UDT1类型的IN参数

创建FB或FC时,可以定义UDT1(Motor)类型的IN参数,如图07所示。

例如,与操作语句:

“U #Eingabe.Einschalten”(A #Input.SwitchOn)

∙Eingabe:

FC1的IN参数变量 

∙Einschalten:

UDT1中的一个变量名

图07

UDT数据类型同样适用于OUT 和IN_OUT参数,方法同上。

8

数据块DB1 的寻址及编程

图 08所示为变量定义为UDT1类型数据结构的DB1的编程例子。

例如与操作:

U “Halle_Motoren”.Halle_1_Motor[2].Einschalten(“UHall_Motors.Hall_1_Motor[2].SwitchOn)

∙Halle_Motoren:

DB1的符号名

∙Halle_1_Motor[2]:

DB块数组2的变量

∙Einschalten:

UDT1中的一个变量名

图08

9

 在FC或FB 中参数化IN参数

当调用FC1时,UDT类型的输入变量必须赋值,例如可以用如下语句将第一组电机地址指针赋给输入参数。

∙“Halle_Motoren”.Halle_1_Motor[1] (“Hall_Motors”.Hall_1_Motor[1])

图09

这种参数化过程同样适用于定义为UDT类型的 OUT和IN_OUT参数的其它变量。

10

在交叉参考表中可以显示S7用户程序所用地址及应用(例如DB1)的列表。

 

图10

数据块“unlinked”属性注意事项:

如果在DB块中定义了UDT数据类型并且将DB“unlinked”属性激活,对于STEP7V5.2/V5.3,如果对UDT作了修改,STEP7会应用“Checkblockconsistency”功能自动调整数据块,此时“unlinked”的属性可能会失效。

当块一致性检查完成后,确保DB的“unlinked”属性依然有效,否则可作相应设置。

 

 STEP7在线帮助可提供更多相关信息:

∙“User-DefinedDataTypes(UDT)”

∙“EnteringandDisplayingtheStructureofDataBlocksReferencingaUDT”

∙“EnteringtheDataStructureofSharedDataBlocks”

关键词:

块例程,自定义数据类型

一、案例说明

1、控制对象4个控制方式相同的电机。

2、单个电机控制要求

(1)按下启动按钮--电机启动,并开始计时--到达设定时间后发出电机维护提示

(2)按下停止按钮--电机停止,并停止计时,但并不将时间清零。

(3)电机运行时间小于设定值,时间不能复位,电机运行时间达到或。

超过设定值后按下复位按钮时间置0,电机维护提示消失。

(4)当电机发生故障时,电机停止运行,并发出报警,故障处理完毕后必须手动确认复位报警信号才能再次启动电机。

     

(5)任何时间电机停止,计时停止,电机运行,继续计时,时间只能有复位按钮可以清零。

 

3、要求将四个电机的所有参数放在1个DB块中,方便管理和做上位接口

 

二、案例分析

根据控制要求得出单个电机所需I/O

输入:

启动、停止、故障复位、计时复位、电机维护周期、电机故障报警

输出:

运行、故障报警、已运行时间、电机维护提示

根据案例说明3中的要求我们需要自定义结构UDT和DB块的配合使用

 

三、编程

1、首先建立UDT结构如下图所示

 

2、建立存放参数的DB块,并建立以上图为结构的四个电机的数据

 

3、建立FB1块进行编程,首先建立接口如下图所示

 

程序如下

 

4、为四个电机分别建立FB1程序的背景DB块,从DB2到DB5如下所示

 

5、OB1中编写程序如下图所示

 

四、仿真监控

 变量表监控

 

DB块监控

Struct(结构性类型)是由不同数据类型组成的、属于复合型数据类型,它是用来定义一组相关的数据,其长度由用户定义,它与数组(Array)类型相反(ARRAY是由相同类型的数据组成的数组)。

许多关于结构类型的书籍中提到的关于电机控制系统中,把一个电机所有控制元素,如运行速度、额度电流、起动电流和运行方向等作为参数或逻辑块的局部变量,并且在全局数据块中声明,这样利用它可以结构化大量的数据并且可以用符号进行处理,由于访问结构的元素包含结构的名称,使程序更容易读,指令编写更清晰。

如电机的一组不同类型的数据(称为元素)组成的结构命名为Motor_Data,并且放在共享数据块DB1中,为了用符号访问结构中的一个元素,需要给数据块分配一个符号名,如Drive_1. 结构的关键字是‘STRUCT“,结构的结束用END_STRUCT. 这样在打开数据块DB1(符号名Drive_1),可以看到上面变量声明表为:

Address(地址)  Name(名称)            Type(类型) Initial Value(初始值)

0.0                                       Struct

0.0              Motor_Data(电机数据)    Struct

0.0              Operating_speed(运行速度) INT

2.0              Rated_current(额定电流)   REAL

6.0              Start_current (起动电流)   REAL

10.0             Max_temperature (最大温度)REAL

14.0             Turning_direction (转动方向)BOOL

=16.0                               END_STRUCT

=16.0                               END_STRUCT

如果访问上述结构中的某个元素,如Rated_current(额度电流),可以直接用下列指令:

L “Drive_1”.Motor_data.Rated_current

其中,“Drive_1”是数据块的符号名,该数据块包含结构、结构名称(用点分割)在数据块的后面。

结构的元素名(用点分割)跟在结构名的后面。

1.Struct是什么数据类型

2.结构,属于自定义的数据类型,和C或C++或VC中的结构定义一样。

3.2. 在什么样的情况下需要用到 Struct 数据类型

4.举个简单的例子,一个电机需要运行、报警、手动启动、手动停止、自动启动、自动停止、联锁信号、电机电流信号等;

5.楼主可以将上述信号定义在一个结构中,这样有100个电机,分别定义100个结构名称,即可完成100台电机的相关参数定义,比你100台电机的每个参数分别定义简单多了。

不过结构的缺点是占用内存空间较大。

最大的区别是UDT定义的是一种数据类型,不分配变量不传送到S7中去,但是STRUCT定义的是一个具体的数据。

家访内容记录:

学习上缺乏自觉性,作业比较马虎,所以成绩不理想。

特别是作文写不具体,常常三排五排就马虎了事。

但让他重做,他总是态度端正,非常虚心,积极改正。

很有可塑性。

爸爸在听我讲他孩子在校表现时不时点头,表示认同。

他透露,孩子在家做作业也不够自觉。

不看好他做,作业就偷懒。

为此,他还打过孩子好几回呢!

但我们去家访的目的决不是告状,而是本着促使孩子进步的诚意来的。

所以我把我此次家访的最终目的和盘托出:

三慈成绩之所以不理想,绝不是天资不足,确实不是。

我坚信这孩子在学习方面还有很大的潜力可以挖掘,因为孩子阅读分析的能力、语文综合运用的能力是可以的。

也足见他平时学习之马虎。

所以我们此次家访主要是提醒他,在学习上他如果肯花工夫,能够扎扎实实学好基础知识,就一定能创造喜人的进步。

他需要进步,也能够进步。

家长表示全力配合老师及学校的工作。

 

家访内容记录:

学生自理能力很强有自己的主见但学习态度不端正缺乏自觉性,作业比较马虎,所以成绩不理想九年级就有不及格现象问题比较严重。

父母工作很忙顾不上孩子所以孩子很固执学习上的懒惰也由此而生。

经过交流妈妈认为孩子从小就知道偷懒想过很多办法现在已经没办法了。

本着促使孩子进步的诚意给家长交流改掉坏习惯的方法希望家长能够配合家长表示愿意试一试。

 

家访内容记录:

曹春苗是个好孩子,很听话。

学习能力有待提高。

家长介绍该生能帮助料理家务,但学习环境不好。

家里在菜场做小生意很吵乱放学后没有良好的学习氛围。

父亲明确表示家长能力有限,但只要对学生有帮助,愿意尝试。

为此买了一些相关的学习工具 ,例如复读机之类的。

还准备请专人进行辅导。

对此我给予肯定相信有家长的关心老师的帮助学生一定会有步。

         

 

家访内容记录:

陈鹏飞是个较开朗、领悟性较高的孩子。

父母很支持儿子读书,为了创造较好的学习条件,父母为他们买了电脑,和学习软件。

平时哥哥较自觉,但陈鹏飞大多时间以玩为主,到很晚才能去写作业,父母生意一忙也无暇顾及作业从来不给检查只是问一问。

了解情况后我针对学生的情况给家长提出了合理的建议希望家长能够接受,光提供好的条件是不够的,要多花点时间和精力对孩子进行辅导特别是要改掉懒惰的坏毛病。

家长表示全力配合。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1