签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
关于指针使用的问题,能不能将指针设为变量。我这段程序就是想做一个累加计算,要求起始地址是可改变的,必须是一个变量。我程序中直接做了一个Pointer的变量接口,但是使用时提示错误,求教如何实现,谢谢。程序如下图
将FC块取消优化了,就不报错了。
又试着将N移动到下面那个偏移量那里,直接报错:
有没有大神知道为什么把#N移到下面会报错的?
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1636895&b_id=66&s_id=0&num=10
input里面定义变量offset,类型dint。程序:L offset, sld 3,lar1
地址寄存器需要有实际地址。
比如FB取消优化访问的接口。
取消FC优化,就不报错了,但是依然没得到通过改变N来实现变址。试着把下面指针改成N,结果还是报错。
我那个N是偏移的字的数量,比如我db接口是DB5,N是2,然后里面的数据是DWord类型,那么我第一个数据是DB5.DBD2.
DB_ANY+Point
直接用ANY不就好了。
在TEMP里声明一个ANY,
然后用Input里的DB号,偏移量去拼ANY。
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1577529&b_id=66&s_id=85&num=19#anch
原来帖子里有分享代码。
不用ANY也可以,但还是得按照格式去拼。
不要钻到自己的死胡同不出来。
接口想要填什么?
想要填DB5.DBD4?
那为什么不干脆补全DB5.DBX4.0 BYTE X?
实际上想要填什么?
填5,填4,填X
然后拼成DB5.DBX4.0 BYTE X
想要填“Tag_1”(DB5.DBD4)?
输入是符号寻址,程序凭什么按绝对寻址运算指针?
首先就要把变量的地址读出来,VARIANT应该可以,用REF()
但是VARIANT操作起来权限很低,没什么操作的空间。
综合判断填“Tag_1”非常难实现。
7楼链接里我写的Modus块,照着那个写就能解决你的问题。
至于截图,先观察左边的DB。Before是数组的索引号。
为什么左移8位?
实际上是先左移5位再左移3位。
比如Before=4,左移5位等于128。Band[4]的起始地址就是128。
再左移3位是补0,代表128.0。具体参考AR1的格式。
1500为什么还要坚持用语句表呢?
抄来的程序,自己看不懂也改不了!
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录