设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
【快速入门】西门子S7-200smart V2.8新指令介绍(中) ...
返回列表
发新帖
[西门子]
【快速入门】西门子S7-200smart V2.8新指令介绍(中)
[复制链接]
36852
|
0
|
2024-7-1 11:24:08
|
显示全部楼层
|
阅读模式
导读:
西门子S7-200smart V2.8软件更新以后多了很多的功能,需要CPU固件升级到V2.8才可以使用,这篇文章接着介绍西门子S7-200smart V2.8数学运算的新指令,西门子的S7-200smart V2.8新指令介绍分为上、中、下三篇,想了解更多内容可以关注“电工小青年”。
一、数学运算指令
1.取最大值或最小值
指令如图1所示,“取最大值或最小值”指令比较可用输入的值,然后将最小值和最大值的值及索引写入 MinValue, MinValueIndex, MaxValue 和 MaxValueIndex 的输出。
如果数组中有多个最小值或最大值,则会输出第一个最小值或最大值的索引号,数组的索引从 0 开始。
这四个指令引脚功能都是一样的,除了部分数据类型不一样,把鼠标放到指令处停顿2s左右,既可以看到对应的引脚的数据类型。
图1
这里以MIN_MAX_B指令为例:取源 6 字节地址序列(VB0 到 VB5)中的 MinValue、MinValueIndex、MaxValue 和 MaxValueIndex,并将其写入到目标字地址序列(VB100 到 VB103)。
数据值
1
2
3
4
5
6
源数据地址
VB0
VB1
VB2
VB3
VB4
VB5
数组索引
0
1
2
3
4
5
表1
PLC RUN模式,则执行 MIN_MAX_I 获取 MinValue、MinValueIndex、MaxValue 和 MaxValueIndex,并将其写入到目标地址
目标数据值
1
0
6
5
目标地址
Vb100
Vw101
Vb103
Vw105
表2
执行结果如图2所示,其他的指令都是一样的原理,引脚数据类型不一致。
图2
2.取随机数
指令如图3所示,随机指令向 OUT 输出生成所设定范围内的一个随机值。
取 lowerBound 和 Upper Bound 之间的两个封闭区间间的随机数,执行 RAND_R 以获取源数据值中的随机值,并将其写入到OUT目标地址。
图3
测试如视频1所示,对vb0—vb9赋值1-10的数值,M0.0为1时,随机输出1-10范围内任意数值到VB10中。
video:
https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3298110359970611206
视频1
3.取平均值
指令如图4所示,取平均值指令计算从StartAddr引脚地址开始,数据长度位Len引脚地址的数组,求和并输出平均值到OUT引脚地址。
例如:从VB0开始的10个数据,求和输出到VB500中,其他几个指令都是一样的,不同的指令是数据类型不一样,使用过程中需要特别注意你需要进行运算的数据类型。
指令数据类型如下:AVG_B是Byte的数据类型,AVG_W是Int的数据类型,AVG_DI是Dint的数据类型,AVG_R是Real的数据类型。如果不太清楚指令的数据类型,可以把鼠标放在指令处不动2s即可看到指令对应引脚的数据类型。
图4
测试如图5所示,在状态图表中分别对AVG_B指令StartAddr引脚地址VB0开始10个字节(VB0—VB9)进行赋值,并把平均值结果输出到VB500。
图5
4.数组排序
指令如图6所示,数组排序指令表示的是从StartAddr引脚地址开始,数据长度位Len引脚地址的数组,并根据Mode引脚的数值进行排序输出到Out引脚地址,当Mode的值为0时按升序排序,值为1时按降序排序。
指令数据类型如下:SORT_B是Byte的数据类型,SORT _W是Int的数据类型,SORT _DI是Dint的数据类型,SORT _R是Real的数据类型。如果不太清楚指令的数据类型,可以把鼠标放在指令处不动2s即可看到指令对应引脚的数据类型。
图6
测试如图7所示,在状态图表中分别对SORT_B指令StartAddr引脚地址VB0开始5个字节(VB0—VB4)进行赋值,并根据Mode引脚的地址数值为0时按升序排序,把结果输出到VB50开始的5个字节(VB50—VB54)存放。当Mode引脚的地址数值为1时按降序排序,如图如8所示。
图7
图8
5.求绝对值
指令如图9所示,求绝对值指令表示对输入 IN 处指定的值取绝对值,并将结果输出到OUT地址中。
指令数据类型如下:ABS_W是Int的数据类型,ABS _DI是Dint的数据类型,ABS _R是Real的数据类型。如果不太清楚指令的数据类型,可以把鼠标放在指令处不动2s即可看到指令对应引脚的数据类型。
图9
测试如图10所示,对输入 IN 处指定的值取绝对值,并将结果输出到OUT地址中。
图10
6.反三角函数
正弦 (SIN)、余弦 (COS) 和正切 (TAN) 指令计算角度值(弧度为单位) IN 的三角函数,并在 OUT 中输出结果,这几个三角函数指令在这里不做介绍。
要将角度从度转换为弧度:使用 MUL_R (*R) 指令将以度为单位的角度乘以 1.745329E-2(约为 π/180),浮点数为0.01745329。
指令如图11所示,反正弦 (ARC_SIN)、反余弦 (ARC_COS) 和反正切 (ARC_TAN) 指令是对正弦 (SIN)、余弦 (COS) 和正切 (TAN) 指令输出的结果的进行反三角函数,并在 OUT 中输出结果。
反正弦 (ARC_SIN)、反余弦 (ARC_COS) 和反正切 (ARC_TAN) 指令的IN引脚和OUT引脚都是Real的数据类型。
图11
测试如图12所示,在状态图表中对VD0复制30.0,程序段1中,通过MUL_R指令乘以0.01745329,把30°转换成弧度,使用正弦 (SIN)指令求出弧度的正弦指令输出结果,使用反正弦 (ARC_SIN)指令把正弦指令输出结果转换程弧度,然后使用DIV_R指令除以0.01745329,把弧度转换成角度值。
反余弦 (ARC_COS) 和反正切 (ARC_TAN) 指令也是一样的计算过程,这里不做过多的介绍。
图12
7.低通滤波器
指令如图13所示,可使用“低通滤波器”指令来衰减高频分量,例如信号中的噪声。
使用以下公式计算指令的结果:
y(n) = Coef*y(n-1) + (1- Coef)* x(n);
y(n) 为当前滤波器输出,Coef 为滤波器系数,y(n-1) 为上一个滤波器输出,x(n) 为当前采样值。
可指定以下滤波器参数:
Coef:滤波器系数,如果作为命令中的比率参数的滤波器系数被设为 0,则不执行滤波。
N:目前,S7-200 SMART 支持 64 个一阶低通滤波器,因此在编程时必须指定使用哪个滤波器。
相同编号的低通滤波器将使用历史滤波值和当前采样值一起计算,得到当前滤波值。
图13
测试如图14所示和图15所示,图14为滤波前的波形图,图15为使用低通滤波器指令后的波形图。
8.总结
以上就是整个西门子S7-200smart v2.8新增的数学运算指令内容,
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
gm2637
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』