您的位置:控制工程论坛网论坛 » 西门子社区 » variant数据类型如何做指针寻址?

hypermill9

hypermill9   |   当前状态:在线

总积分:7709  2024年可用积分:0

注册时间: 2007-02-07

最后登录时间: 2023-08-18

空间 发短消息加为好友

variant数据类型如何做指针寻址?

hypermill9  发表于 2016/6/15 12:59:18      1979 查看 6 回复  [上一主题]  [下一主题]

手机阅读

想用一个MB_MASTER读2个从站,通过修改DATA_PTR管脚使2个从站的回复数据分别缓存到各自到通信缓存区。通过切换缓冲区来读写数据,其中涉及到variant数据类型如何做指针寻址?

1楼 0 0 回复
  • zhanghe

    zhanghe   |   当前状态:在线

    总积分:3518  2024年可用积分:0

    注册时间: 2010-03-22

    最后登录时间: 2023-08-14

    空间 发短消息加为好友

    zhanghe   发表于 2016/6/15 13:58:26

    好问题。variant to dbany, 然后可以打开了。

    但是我的分享贴里的例子你可以参考,换一种思路来编s7-1200,s7-1500 的间接寻址,不用指针,而是使用符号寻址。

     

    2楼 回复本楼

    引用 zhanghe 2016/6/15 13:58:26 发表于2楼的内容

  • zhangmengmeng

    zhangmengmeng   |   当前状态:在线

    总积分:1956  2024年可用积分:0

    注册时间: 2013-12-26

    最后登录时间: 2023-08-14

    空间 发短消息加为好友

    zhangmengmeng   发表于 2016/6/15 20:29:54

    楼主走偏了, 你不能为了用指针而用指针。 象你这个要求根本就不需要用指针来完成啊。 比如我提供一个方法:


    你有30个从站,假设站号为1~30。  那么在你的DB块里建立31个数组, 其中1~30号的数组对应1~30号的从站返回报文。   而数组0则对应的你调用MB_Master指令的DATA_PTR的实参。

    然后后续程序利用 DONE标志和站号就可以将数组0分别赋值给数组1~30... ...

     

     

    3楼 回复本楼

    引用 zhangmengmeng 2016/6/15 20:29:54 发表于3楼的内容

  • bonbo

    bonbo   |   当前状态:在线

    总积分:4881  2024年可用积分:0

    注册时间: 2013-06-20

    最后登录时间: 2023-08-10

    空间 发短消息加为好友

    bonbo   发表于 2016/6/15 21:42:47

    我遇到同样的问题,用SCL也没找到更好的办法,因而我就做了一个数据整理FB,专门来把当前要发送的数据放到指针所指的位置。

    做起来简单,工作量很小,效果不错

     

    4楼 回复本楼

    引用 bonbo 2016/6/15 21:42:47 发表于4楼的内容

  • luck

    luck   |   当前状态:在线

    总积分:4492  2024年可用积分:0

    注册时间: 2013-06-20

    最后登录时间: 2023-08-14

    空间 发短消息加为好友

    luck   发表于 2016/6/15 22:18:31

    哈哈,我也是这样。如果事情太多(都在催),就干脆不做了。玩。

    (其实是在理清头绪,从哪里入手。)

    有的事情,简单,但催的不紧;

    有的事情,复杂、麻烦,但催得紧。

    有的事情,效益高;

    有的事情,收效低。

     

    5楼 回复本楼

    引用 luck 2016/6/15 22:18:31 发表于5楼的内容

  • martion

    martion   |   当前状态:在线

    总积分:5074  2024年可用积分:0

    注册时间: 2013-07-25

    最后登录时间: 2019-12-19

    空间 发短消息加为好友

    martion   发表于 2016/6/16 16:19:55

    其实博途里的赋值语句是功能很强的。 不光是我们常见的数据类型(位,整数,浮点数等)可以赋值, 结构变量也可以赋值,数组也可以赋值,甚至于整个数据块都可以直接赋值呢! 多用一用,你就会发现,其实完全可以脱离以前老版STEP7的指针寻址的概念了, 老版的STEP7讲究的是以绝对地址为基础,而博途则是以符号名称为基准,同时在一定的特殊场合又保留了部分的绝对地址的指令操作,所以可以说即提高了程序的安全可读性,又保留了一定的灵活性... ...

     

    6楼 回复本楼

    引用 martion 2016/6/16 16:19:55 发表于6楼的内容

  • martion

    martion   |   当前状态:在线

    总积分:5074  2024年可用积分:0

    注册时间: 2013-07-25

    最后登录时间: 2019-12-19

    空间 发短消息加为好友

    martion   发表于 2016/6/18 11:38:07

    我发现我最近是事太多了反而不想做了,天天逛论坛了,呵呵。 刚试了一下,用二维数组从程序结构上就会更简单......

    同上面的贴子,假定从站号为1~30, 那么首先iSlave对应的是当前需要读取的从站号, 一维数组pData对应的是DATA_PTR, 然后二维数组aData对应每一个从站读回的数据

     

    7楼 回复本楼

    引用 martion 2016/6/18 11:38:07 发表于7楼的内容

总共 , 当前 /