您现在所在的是:

PLC论坛

回帖:5个,阅读:633 [上一页] [1] [下一页]
20901
bnnyygy
文章数:5988
年度积分:1567
历史总积分:20901
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2023/4/13 13:03:44
#0楼
例如,DATA[20]+DATA[21],其实是当成浮点用。

现在定义一个or_VAR浮点变量,

我想or_VAR:=DATA[20];

但是实际运行肯定不正常,问问大佬,如何实现?
20901
bnnyygy
文章数:5988
年度积分:1567
历史总积分:20901
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2023/4/13 13:14:18
#1楼
附件 (GN(1%2OXQHV9】BI{QX~{AW.jpg



DATA数据块 22+23 数组,(绝对地址是D1922+D1923},上位机是浮点使用的,


现在就是想FB-FB传递,绝对地址当然可以解决,不知道ST内有没有办法解决这个问题?
37231
cvlsam 版主
文章数:12401
年度积分:1583
历史总积分:37231
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2023/4/13 13:49:24
#2楼
以下是引用bnnyygy2023/4/13 13:03:44的发言:
例如,DATA[20]+DATA[21],其实是当成浮点用。

现在定义一个or_VAR浮点变量,

我想or_VAR:=DATA[20];

但是实际运行肯定不正常,问问大佬,如何实现?

1、对于支持绝对地址编程的PLC,你可以使用两个不同数据类型的数组,对应相同的地址。
附件 workpicture1.jpg

附件 workpicture2.jpg

附件 workpicture3.jpg

2、对于支持泛型编程的品牌,你可以使用变体数据类型Variant,例如西门子的博图(仅支持1200,1500系列)
3、如果使用Codesys原生的,你可以看看ANY类型,如果是二次开发的,你可以参考厂家的手册看是否支持这个功能。

Good Luck~
20901
bnnyygy
文章数:5988
年度积分:1567
历史总积分:20901
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2023/4/13 13:57:11
#3楼
直接用结构体,配方FB重新写.也更规范方便.
[此贴子已经被作者于2023/4/13 13:57:22编辑过]
20901
bnnyygy
文章数:5988
年度积分:1567
历史总积分:20901
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2023/4/13 15:16:32
#4楼
哎呀,这个螃蟹不好吃呀

定义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,理论上是同类型的表情
20901
bnnyygy
文章数:5988
年度积分:1567
历史总积分:20901
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2023/4/13 15:29:54
#5楼
哎,太难了,解决了.

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003