回复:variant 是否被程序修改指向?

已锁定

耀眼光芒

西门子1847工业学习平台

  • 帖子

    376
  • 精华

    3
  • 被关注

    35

论坛等级:侠圣

注册时间:2013-08-16

普通 普通 如何晋级?

发布于 2021-04-18 14:36:13

11楼

展开查看
以下是引用Zane在2021-04-18 13:38:17的发言 >10楼

REF只支持S71500,我本来想改一版的,但后来放弃了,还是坚持通用的原则。


单次任务的数据结构是固定的,但任务的数量是可以改变的,所以我不清楚你要改变DATA_PTR什么?什么情况下,你需要调整什么样的参数?


你到底是要做,单个MB通信,基于从站的轮询?还是就是想做多个MB通信?

以下是引用耀眼光芒在2021-04-18 11:02:09的发言 >9楼:用variant不能像any...

引用9楼详细内容:

用variant不能像any结合AT一样修改指向位置,不能通过用户程序修改,例如

调用Modbus_Master 一次,DATA_PTR 只能给定一个地址,我称之为一个缓冲区 Buffer或swap,数据交互都被限定在那里,如果下一个周期需要调整参数不能像any那样修改指向。


当然在潘工提醒下,1500 可以用REF,当时必须V16+1500,而我为了用win7和TIA wincc pro,暂时无法升级到V16(期待V17的cfc中……


这种东西就是一次写对了以后就都不会错,就是来回调用的问题啦。

以下是引用Zane在2021-04-15 22:09:30的发言 >6楼:没明白你说的意思

引用6楼详细内容:

没明白你说的意思

以下是引用耀眼光芒在2021-04-15 08:27:25的发言 >楼主:大家好,variant可...

引用楼主详细内容:

大家好,variant可以用于优化DB和非优化的DB,适合于符号寻址。

但是是否有改变其指向的办法? 类似于any指针通过指针或at方式改变指向?

现在Modbus RTU多主站调用比较头疼,虽然可以用buffer的办法,但是相当于buffer是被更新的,不是真正的指针方式。


祝大家健康!

师兄周末也没休息呀


那个1200使能满足需要的,建议Zane再贴一下你之前发的1200轮询案例那个已经实现了我的需求。


实际上我想借用variant把之前的祖传代码改为名称寻址的方式,之前的方式都是指针方式。


这里隐含一个 Modbus异步通讯的问题,Modbus 类似于 S7通讯单边发起,但是对方也需要组态。

Modbus一般情况下读取40001地址为对方CPU的内部寄存器,这个寄存器有时候是对方也在用的,也就是说读取可以读取,但修改的时候应该只修改需要修改word(modbus最小修改单位,直接修改40001某一个bit是不行的),这时就想通过改变variant的指向了,而不是把要修改的内容复制到原variant指向位置。

可能序列化和反序列化能帮助执行。


实际上还是为了在自己编写FB FC的时候用好variant,结合udt会比any+at好很多

工艺第一& 我所说的一切均代表个人意见
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10590条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。