西门子博途编程-泛型和变长数组编程

我们知道在高级语言中普遍使用泛型,那么在PLC中是否可以使用泛型呢?可以,但罗嗦。。

控制要求

求数组中的最大值,数值类型包括Real和Int,我们这里选择两种类型,控制代码量。

控制程序 一

1

2

array是传进来的数组,可以是Int或Real类型。但有大小限制,长度必须小于maxSize。后面我们会写个无大小限制的程序。

程序比较简单,有几个要点我们简要说下:

第二行,必须用UDINT_TO_DINT, 因为后面的索引号需用DINT。最后输出的是泛型的数值,所有需要把maxElement设置为Variant,所以需要用VairantPut指令把相应的数值传出来。

另外,每种类型都需要写相应的处理代码,PLC的泛型很罗嗦,代码量很大,其实跟PC的泛型有本质上的区别。

控制程序 二

3

4

这次我们用MOVE_BLK_VARIANT函数来去Variant 数组中的值,所以可以实现真正的变长数组。最后把最大值通过VariantPut指令输出。指令的详细说明可以看系统自带的手册。

控制程序 三

这个程序只实现变长数组,长度无限制.

5

6

看申明第二行,类型为Array〔*〕of Int。另外请注意程序第1和2行,用了Lower_Bound和Upper_Bound两个函数。另外S7-1200的模拟器运行这个程序出错,真机可以.S7-1500模拟器可以正常运行.

转载于:https://www.cnblogs.com/TomDing/p/7194236.html

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值