签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
如图,第一个图就是FC块中我写的某一段程序,图2是整个程序。想请教大家一个问题:
我看资料上面写着FC/FB块中使用全局变量只可读,不可写,如果写入就会产生冲突。
可我在这个程序段中使用了全局变量,MD18、MD22、MD26全都是写入,我在OB1中调用了两次FC程序,可是没观察出有什么冲突现象,两个FC中累积的数值都为正常,我有点不理解这是为什么,请大神指教一下。谢谢,下图是两次调用的结果,没看出冲突。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1671572&b_id=4&s_id=0&num=7
你这种使用全局变量的方式是没问题的,因为全局变量在调用时先赋值后使用了,并没有用到全局变量的历史数据。这种情况完全可以不用全局变量,用临时变量就可以,还更规范。FC中如果需要用到全局变量的历史数据就需要通过接口指定,每次调用不能相同,否则会出错。
你的全局变量在这里都是作为fc的临时变量使用了,你保证了先赋值后使用,是没有问题的。
MD18 - MD26当内部变量使用,且先赋值了,没问题。但 M19.0 = 1,且重复调用的时候可能会有问题。
先赋值后使用
不建议这么处理,你完全可以都用临时变量啊,MD在FC外赋值过去。
个人看法,这种写法使用是有问题的。不要把全局和临时用混淆了,这样你读出来的值是有问题的
用临时变量处理
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录