S7-300
实验二 复杂数据类型_1
1)目的
掌握复杂数据类型:ANY / ARRAY / STRING / UDT / STRUCT 。
2)实验内容
①建立UDT1,其元素依次为一个Byte、一个 Word、一个Bool、一个Dword和一个Real等类型的变量,名称自拟。
②建立DB10,要求包含一个6*10的二维数组,其元素类型为Byte,并设置初始化值。
③建立DB11,要求包含一个有8个字符串元素的一维数组,每个字符串长度均为20 。
④建立DB12,要求包含一个类型为UDT1的STRUCT。
⑤建立DB13,要求其包含150个WORD,将常量十进制数96赋给MB3,并且调用标准库\系统功能块中的SFC21填充DB13的从第一位起的300个字节。
3)实验流程
①建立UDT1
在Blocks中右键插入一个Data Type,设置名称和符号名,单击OK完成UDT1创建,如下图所示。
图1-Data Type
双击UDT1来打开,依次创建一个Byte、一个 Word、一个Bool、一个Dword和一个Real类型变量,并命名该变量,如下图所示。
图2-建立变量
②建立DB10
在Blocks中右键插入一个Data Block,设置名称和符号名,类型为共享DB,单击OK完成DB10创建,如下图所示。(因已经创建过DB10,所以名称一栏为报红)
图3-建立DB10
双击DB10来打开,创建一个6*10的二维数组,其元素类型为Byte,并设置初始化值,前20个字节赋值为5,后40个字节赋值为10,如下图所示。(如果每一个数据都不一样就只有手动1.2,4,2..)
图4-创建数组
通过VIEW->Data view来查看每个元素的初始值信息,如下图所示。
图5-初始值信息
然后可以在这个视图中实际值有针对性的修改或者赋值,但不能改初始值。
③建立DB11
同上所示,建立DB11,双击DB11来打开,创建一个有8个字符串元素的一维数组,每个字符串长度均为20 ,将默认的STRING[254]改为20,如下图所示。(STRING[20]实际是占用了22的字节,第一个字节用于储存字符串总长度20,第二个字节用于存储字符串实际长度)
图6-在DB11中建立一维数组
④建立DB12
同上所示,建立DB12,双击DB12来打开,创建一个类型为UDT1的STRUCT,如下图所示。(尽管自带STRUCT,还是建议自己建立一个STRUCT数据类型)
图7-在DB12中建立UDT1
通过VIEW->Data view来查看元素的信息,如下图所示。
图8-Data view
⑤建立DB13
同上所示,建立DB13,双击DB13来打开,创建包含150个WORD,如下图所示;
图9-在DB13中建立150个WORD
使用STL将常量十进制数96(16进制的60)赋给MB3,并且调用标准库\系统功能块中的SFC21(FILL指令)填充DB13的从第一位起的300个字节。如下图所示。
图10-编程逻辑
打开S7-PLCSIM,下载Blocks,进行测试,运行结果如下图所示。
图11-测试结果
也可以建立数据表VAT,把DB13中的输出来显示。
图12-数据表VAT
4)总结
1、 数据类型中数组最多能够用六维如:ARRAY[1..3,1..4,1..2,1..13,1..4,1..5]。
2、熟悉了STEP7中数据类型的存储空间、关键字、长度、常量以及变量表示方式,其中较为复杂的是二维数组的定义和赋初始值;UDT的建立和调用等。这是编程的重要基础(M1.1位,MB1字节,MW2字,MD4双字;其中MW2包括MB2,MB3,MD4中包括MB4,MB5,MB6,MB7;所以在命名是一定不要重合,考虑好字节长度,不要出现MD4,MD6,这就重合了一部分)。
敬请期待下一篇数据类型篇03-复杂数据类型_2
PS:友情提醒,所有文章都是一个系列,是连贯的,顺着看效果更好~
作者简介
谭俊豪:重庆大学机械工程学院学士,西门子中国公司培训生
本文为原创文章,于头条首发,欢迎转载,请注明出处和作者!