西门子S7-300入门级教程02-数据类型篇03

<a href=https://www.xmzyj.com/ximenzi>西门子</a>S7-300入门级教程02-数据类型篇03″ inline=”0″></p>
<p class=S7-300

实验三 复杂数据类型_2

1) 目的

掌握复杂数据类型:DATE_AND_TIME / STRING / STRUCT / UDT / FB / SFB。

2) 实验内容

①使用标准库\系统功能块中的SFC0,设定CPU系统时钟的日期和时长。

②使用标准库\系统功能块中的SFC1,读出CPU系统时钟的当前日期和时长。

③利用标准库\IEC功能块中的FC3,将DATE型变量与TIME_OF_DAY变量组合为DATE_AND_TIME型变量;

④利用标准库\IEC功能块中的FC31,用一个STRING型变量替换另一个STRING型变量的若干元素;并使用标准库\IEC功能块中的FC10比较两个输入变量。

⑤设置DB13的写保护功能,调用标准库\系统功能块中的SFC24,查看DB13的字节数和写保护标识输出。

3) 实验流程

创建DB1,定义实验三①②③所使用变量,变量名称和类型如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图1-在DB1中定义变量

①在OB1中调用标准库\系统功能块中的SFC0(设定CPU系统时钟的日期和时长),并为其赋值为上述已创建的变量,编程如下图所示。(当我通过I50.0接通时,通过上升沿检测,马上就把值赋给了CPU,并且一个周期后自动断开就不会出现每个周期一直赋值,导致CPU时钟一直为赋值而不动。)

西门子S7-300入门级教程02-数据类型篇03

图2-调用SFC0

新建变量表VAT_1来监视程序的变量,因DATE_AND_TIME为存储空间为64位,将其拆分为8个字节来监视,可修改数值,如下图所示。(也可以在DB1中修改,不过修改后必须要对在View-Date View 视图中在Edit对DB块进行初始化)

西门子S7-300入门级教程02-数据类型篇03

图3-监视DATE_AND_TIME

②在OB1中调用标准库\系统功能块中的SFC1(读出CPU系统时钟的当前日期和时长),并为其赋值为上述已创建的变量,编程如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图4-调用SFC1

在变量表VAT_1来监视程序的变量,将DATE_AND_TIME变量拆分为8个字节来监视,与上述修改的数值一致,如下图所示。(从赋值开始后就开始计时了)

西门子S7-300入门级教程02-数据类型篇03

图5-监视DATE_AND_TIME

③在OB1中调用标准库\IEC功能块中的FC3,将DATE型变量与TIME_OF_DAY变量组合为DATE_AND_TIME型变量;编程如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图6-调用FC3

在变量表VAT_1来监视程序的变量,将DATE_AND_TIME变量拆分为8个字节来监视,修改DATE和TIME_OF_DAY变量的数值,查看是否组合成功,如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图7-修改DATE和TIME_OF_DAY变量

首先建立DB2来定义所使用的变量,如下图所示:

西门子S7-300入门级教程02-数据类型篇03

图8-建立DB2定义变量

④在OB1中调用标准库\IEC功能块中的FC31(用一个STRING型变量替换另一个STRING型变量的若干元素),将IN2的字符串插入到IN1字符串中,插入地址由P指定,长度由L指定(大于0时全部将IN2插入到IN1,将IN1多余字符挤出),编程如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图9-调用FC31

在变量表VAT_1来监视变量,将STRING变量拆分为字节来监视,如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图10-将STRING变量拆分1

西门子S7-300入门级教程02-数据类型篇03

图11-将STRING变量拆分2

其他各种对了l或者p的情况按f1对应查询,同时in2字符串是整体替换到p指定的位置,替换的长度为l指定。

在OB1中调用标准库\IEC功能块中的FC10比较两个输入变量,编程如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图12-调用FC10

在变量表VAT_1来监视变量,将STRING变量拆分为字节来监视,当S1和S2字符串内容或者长度不一致时,比较结果为false,如下图所示。输出为false时:

西门子S7-300入门级教程02-数据类型篇03

图13-比较结果-false

输出为ture:

西门子S7-300入门级教程02-数据类型篇03

图14-比较结果-ture

⑤新建DB13,右键在其属性中,勾选写保护功能,如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图15-建立写保护的DB13

在DB13中新建变量,如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图16-在DB13中新建变量

在OB1中调用标准库\系统功能块中的SFC24,查看DB13的字节数和写保护标识输出,编程如下图所示。

西门子S7-300入门级教程02-数据类型篇03

图17-调用SFC24

在变量表VAT_1来监视变量,修改DB编号为13,可查看程序执行结果如下图所示。 (处于只读,无法修改83)

西门子S7-300入门级教程02-数据类型篇03

图18-执行结果

4)总结

1. DATE_AND_TIME和STRING等数据类型的长度大于DWORD,所以没办法在符号表中定义,只能在数据块中定义,其输入输出的存储都在数据块中;在变量表监视该数据类型的变量时,则可以通过将其拆分为以字节为单位来监视和修改。

2. STEP7 V5.5中的DATE_AND_TIME数据类型存储空间为8个字节,可选中其按F1查询它每个字节的具体含义;STEP7 V5.5中的STRING数据类型存储空间为设置字符串长度再加2个字节,这两个字节在字符串的开始处,第一个字节表示字符串设定的长度,第二个字节表示字符串中字符实际占用的长度。

3. 在程序块中点Options->Customize来设置的地址优先还是符号优先,在编程时使用绝对地址可减少出错几率,同时记得不要勾上下图所示。

西门子S7-300入门级教程02-数据类型篇03

图19-Customize位置

西门子S7-300入门级教程02-数据类型篇03

图20-取消上述功能

4. 有些指令并不会很智能,比如设定STRING数据类型,在初始的时候它会在第一个字节存储总长,第二个字节存储实际字节长度,如果后期在变量表中修改了实际字节数,第二个字节存储的数字还是不会变化,需要自己手动更改。

敬请期待下一篇数据类型篇04-复杂数据类型_3

PS:友情提醒,所有文章都是一个系列,是连贯的,顺着看效果更好~

作者简介

谭俊豪:重庆大学机械工程学院学士,西门子中国公司培训生

本文为原创文章,于头条首发,欢迎转载,请注明出处和作者!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据