西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

<a href=https://www.xmzyj.com/ximenzi>西门子</a>S7-300入门级教程03-参数类型篇02(跑马灯示例)” inline=”0″></p>
<p class=S7-300

实验二 参数类型应用2

1)目的

不同类型参数应用和程序编写

2) 实验内容

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图1-彩灯

如图所示,16个彩灯从左至右分别接到Q0.0~Q1.7的开关量输出端子,需要按照以下要求点亮:

模式一:从左至右循环,一次同时点亮一组彩灯(两个为一组),亮灯0.5s后该组灯熄灭,下一组被点亮,前后组的灯互不交叠。如此走灯直到最右端后又从最左端循环开始。

模式二:从右至左循环,一次同时点亮一组 彩灯(两个为一组),亮灯0.5s后该组第一个灯熄灭,第二个灯与紧邻它的下一个灯一起组成新的组被点亮0.5s(存在交叠)。如此走灯直到最左端后又从最右端循环开始。

模式三,从两端至中间循环,一次同时点亮两个彩灯。以从左至右为例,从第一个灯逐次走灯到第8个灯后,又从第一个灯开始循环。

以上三种模式的亮灯程序写在不同的FB中,在OB1中有条件地调用执行它们。

3)实验流程

模式一

创建FB1,根据模式一要求,通过脉冲定时器的特性来编程如下图所示。

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图2-模式一编程思路

在OB1中调用FB1,并为其分配背景数据块。

保存编译将程序下载到PLCSIM中,在变量表VAT_1中监视程序执行结果,或者可在PLCSIM中监视执行结果,如下图所示。

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图3-仿真执行结果

模式二

创建FB2,根据模式二要求,采用循环右移(ROR_DW),该指令的操作数是DWORD类型,而实验要观察QW10的移动,则就是在QW10/QW12的最高两位赋1),也就是Q13.7和Q13.6为1;Q11.7和Q11.6为1。

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图4-模式二编程思路1

循环时长控制是通过前面编写的方波程序来控制,如图所示:

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图5-模式二编程思路2

同时编写程序如下:

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图6-模式二编程思路3

在OB1中调用FB2,并为其分配背景数据块。

保存编译下载到PLCSIM中,可在变量表VAT_1中监视程序执行结果,或者可在PLCSIM中监视执行结果。

模式三

创建FB3,根据模式三要求,采用shift/Rotate中的循环左移(ROL_DW)和循环右移(ROR_DW),该指令的操作数是DWORD类型,实验需要QB0从低位到高位的移动,而QB1从高位到低位移动(此处用QB40/41代替),故采用中间变量的将QB40和QB41的移动转移到MD44和MD40中执行,然后将MB44/MB40移动后的结果传送给QB40和QB41。照着模式二的思路,就是一个左移和右移结合起来,所以对MD44需要对其每个字节最高位进行赋1,对MD40的每个字节最低位进行赋1(据模式二的思路,循环出现)。同理如模式二一样,通过方波程序来控制脉冲(每秒移动),如图所示:

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图7-模式三编程思路1

同时对MD44、MD40赋值如下图所示:

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图8-模式三编程思路2

低位QB40左移编程如下图所示:

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图9-模式三编程思路3

高位QB41右移编程如下图所示:

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图10-模式三编程思路4

在OB1中调用FB3,并为其分配背景数据块DB3,同时保存编译下载到PLCSIM中,监视图如下图所示:

西门子S7-300入门级教程03-参数类型篇02(跑马灯示例)

图11-仿真执行结果

4)总结

1) 线圈同一地址(比如Q1.0)不能够重复被赋值,否则一会被赋1一会被赋0,且一定会以后面赋值为主,且一定要注意当需要一开始对某位进行赋1,最好使用置位指令,否者赋值无法保持,见模式二、三。

2) 可定义TIMER、COUNTER、BLOCK_FC、BLOCK_FB、BLOCK_DB、BLOCK_SDB POINTER 和ANY数据类型,将定时器、计数器、数据块、功能和功能块作为一种数据类型来使用,使其调用更加灵活,并且可以更加合理分配号,当程序多了后不会乱。其中T1在程序中即是TIMER量,也可以当BOOL量用来当开关(PS:T1在变量表中可以修改定时器的时长,C1可以修改计数器的号码)。

3) 跑马灯程序主要是使用移位指令来实现,比如循环左移(ROL_DW)和循环右移(ROR_DW),注意的是该指令的操作数是DWORD型。在移位操作前,要对需移位的操作数进行赋值,可在低位赋值或高位赋值.如果不是对位(Q10.0)直接赋值,一定要注意,用MD/MW是低位高字节(比如MW2是MB2/MB3)对其进行赋值是先对低位赋值,也就是说先对高字节MB3赋值后,之后才想MB2赋值,所以需要对固定位进行状态赋值时,一定要注意到高位低字节的问题,否者容易出错。

4) 在跑马灯模式三实验中,因为两个QB的移位方向不同,无法同时左移和右移,将两个QB的移位操作转移到其他地址来实现,采用中间变量过渡一下。

5) 在编写程序时一定要规划好绝对地址的运用,否者写到后面非常容易紊乱,导致程序写对了还是出错,如果把握不准就到使用交叉引用功能查看变量使用情况、地址分配表,这样程序写到后面才不会乱。也可通过交叉引用查看程序结构。

敬请期待下一篇参数类型篇03

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

作者简介

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

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

发表评论

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

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