登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:请教一个问题,配方DATA是int数组,有些当成real使用,现在有个问题。如何把两个连续的变量变成Real?

点击:806 回复:5

例如,DATA[20]+DATA[21],其实是当成浮点用。
现在定义一个or_VAR浮点变量,
我想or_VAR:=DATA[20];
但是实际运行肯定不正常,问问大佬,如何实现?
23-04-13 13:03
附件 (GN(1%2OXQHV9】BI{QX~{AW.jpg
DATA数据块 22+23 数组,(绝对地址是D1922+D1923},上位机是浮点使用的,
现在就是想FB-FB传递,绝对地址当然可以解决,不知道ST内有没有办法解决这个问题?
23-04-13 13:14

引用 bnnyygy 在 2023/4/13 13:03:44 发言【内容省略】

1、对于支持绝对地址编程的PLC,你可以使用两个不同数据类型的数组,对应相同的地址。
附件 workpicture1.jpg
附件 workpicture2.jpg
附件 workpicture3.jpg
2、对于支持泛型编程的品牌,你可以使用变体数据类型Variant,例如西门子的博图(仅支持1200,1500系列)
3、如果使用Codesys原生的,你可以看看ANY类型,如果是二次开发的,你可以参考厂家的手册看是否支持这个功能。
Good Luck~
23-04-13 13:49
直接用结构体,配方FB重新写.也更规范方便.
最后修改:2023/4/13 13:57:22
23-04-13 13:57
哎呀,这个螃蟹不好吃呀
定义2个结构体:
S1:
名称:类型
i_VAR:INT
S2:
名称:类型
R_VAR:REAL
S_1:S1
程序重定义数组变量
DATAOUT: 类型 S1
DATA:0..28,类型 S2
这样表述:
DATAOUT:=DATA[0].S_1;
会提示: 变量地址编码无效.
DATAOUT 类型是S1,DATA[0].S_1类型也是S1,理论上是同类型的表情
23-04-13 15:16
哎,太难了,解决了.
23-04-13 15:29

工控新闻

更多新闻资讯