您现在所在的是:

西门子SIEMENS

回帖:9个,阅读:1466 [上一页] [1] [下一页]
2294
byf394127375
文章数:416
年度积分:99
历史总积分:2294
注册时间:2010/12/14
发站内信
发表于:2020/1/10 8:31:40
#0楼
我创建FC1和FC2两个子程序,FC1中TEMP创建BOOL型0.0位,又在FC2中TEMP创建BOOL型0.0位,搞不明白了?

为什么我调用FC1中TEMP的0.0位置1时,FC2中的0.0也会同时置位?

按道理FC1和FC2中的临时变量都属于各自的局部变量,互不影响的,为什么FC1里的0.0接通FC2里的0.0呢?
求大神帮忙解释下
[此贴子已经被作者于2020/1/10 8:36:01编辑过]
此帖发自手机工控论坛
36681
cvlsam 版主
文章数:12339
年度积分:1033
历史总积分:36681
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2020/1/10 9:42:32
#1楼
以下是引用byf3941273752020/1/10 8:31:40的发言:
我创建FC1和FC2两个子程序,FC1中TEMP创建BOOL型0.0位,又在FC2中TEMP创建BOOL型0.0位,搞不明白了?

为什么我调用FC1中TEMP的0.0位置1时,FC2中的0.0也会同时置位?

按道理FC1和FC2中的临时变量都属于各自的局部变量,互不影响的,为什么FC1里的0.0接通FC2里的0.0呢?
求大神帮忙解释下
[此贴子已经被作者于2020/1/10 8:36:01编辑过]

TEMP使用的是PLC的临时区域,这个区域的特点是系统只管分配,不管回收的。

当你FC1申请临时区域时,FC1执行完毕后,原本FC1占用的临时区域被标记为不使用,然后FC2调用时,系统会将不使用的临时区域分配给FC2使用,但是分配给FC2的临时区域里面有没有数据系统是不管的,那是程序员的事情,因此使用临时区域的原则就是:先赋值,后使用。

Good Luck~
2294
byf394127375
文章数:416
年度积分:99
历史总积分:2294
注册时间:2010/12/14
发站内信
发表于:2020/1/10 9:49:04
#2楼
以下是引用cvlsam2020/1/10 9:42:32的发言:
以下是引用byf3941273752020/1/10 8:31:40的发言:
我创建FC1和FC2两个子程序,FC1中TEMP创建BOOL型0.0位,又在FC2中TEMP创建BOOL型0.0位,搞不明白了?

为什么我调用FC1中TEMP的0.0位置1时,FC2中的0.0也会同时置位?

按道理FC1和FC2中的临时变量都属于各自的局部变量,互不影响的,为什么FC1里的0.0接通FC2里的0.0呢?
求大神帮忙解释下
[此贴子已经被作者于2020/1/10 8:36:01编辑过]

TEMP使用的是PLC的临时区域,这个区域的特点是系统只管分配,不管回收的。

当你FC1申请临时区域时,FC1执行完毕后,原本FC1占用的临时区域被标记为不使用,然后FC2调用时,系统会将不使用的临时区域分配给FC2使用,但是分配给FC2的临时区域里面有没有数据系统是不管的,那是程序员的事情,因此使用临时区域的原则就是:先赋值,后使用。

Good Luck~
您好,可以麻烦具体下,先赋值后使用方法么?
此帖发自手机工控论坛
36681
cvlsam 版主
文章数:12339
年度积分:1033
历史总积分:36681
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2020/1/10 10:37:10
#3楼
以下是引用byf3941273752020/1/10 9:49:04的发言:
以下是引用cvlsam2020/1/10 9:42:32的发言:
以下是引用byf3941273752020/1/10 8:31:40的发言:
我创建FC1和FC2两个子程序,FC1中TEMP创建BOOL型0.0位,又在FC2中TEMP创建BOOL型0.0位,搞不明白了?

为什么我调用FC1中TEMP的0.0位置1时,FC2中的0.0也会同时置位?

按道理FC1和FC2中的临时变量都属于各自的局部变量,互不影响的,为什么FC1里的0.0接通FC2里的0.0呢?
求大神帮忙解释下
[此贴子已经被作者于2020/1/10 8:36:01编辑过]

TEMP使用的是PLC的临时区域,这个区域的特点是系统只管分配,不管回收的。

当你FC1申请临时区域时,FC1执行完毕后,原本FC1占用的临时区域被标记为不使用,然后FC2调用时,系统会将不使用的临时区域分配给FC2使用,但是分配给FC2的临时区域里面有没有数据系统是不管的,那是程序员的事情,因此使用临时区域的原则就是:先赋值,后使用。

Good Luck~
您好,可以麻烦具体下,先赋值后使用方法么?

附件 workpicture1.jpg


Good Luck~
2294
byf394127375
文章数:416
年度积分:99
历史总积分:2294
注册时间:2010/12/14
发站内信
发表于:2020/1/10 10:56:02
#4楼
以下是引用cvlsam2020/1/10 10:37:10的发言:
以下是引用byf3941273752020/1/10 9:49:04的发言:
以下是引用cvlsam2020/1/10 9:42:32的发言:
以下是引用byf3941273752020/1/10 8:31:40的发言:
我创建FC1和FC2两个子程序,FC1中TEMP创建BOOL型0.0位,又在FC2中TEMP创建BOOL型0.0位,搞不明白了?

为什么我调用FC1中TEMP的0.0位置1时,FC2中的0.0也会同时置位?

按道理FC1和FC2中的临时变量都属于各自的局部变量,互不影响的,为什么FC1里的0.0接通FC2里的0.0呢?
求大神帮忙解释下
[此贴子已经被作者于2020/1/10 8:36:01编辑过]

TEMP使用的是PLC的临时区域,这个区域的特点是系统只管分配,不管回收的。

当你FC1申请临时区域时,FC1执行完毕后,原本FC1占用的临时区域被标记为不使用,然后FC2调用时,系统会将不使用的临时区域分配给FC2使用,但是分配给FC2的临时区域里面有没有数据系统是不管的,那是程序员的事情,因此使用临时区域的原则就是:先赋值,后使用。

Good Luck~
您好,可以麻烦具体下,先赋值后使用方法么?

附件 workpicture1.jpg


Good Luck~
那我FC1内的temp的0.0没有复位情况下,同时又调用FC2,这时候FC2内的0.0也是接通的,按照先赋值,后执行原则,FC2中的点就无法复位,这样就没法用了
此帖发自手机工控论坛
36681
cvlsam 版主
文章数:12339
年度积分:1033
历史总积分:36681
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2020/1/10 11:05:01
#5楼
以下是引用byf3941273752020/1/10 10:56:02的发言:
以下是引用cvlsam2020/1/10 10:37:10的发言:
以下是引用byf3941273752020/1/10 9:49:04的发言:
以下是引用cvlsam2020/1/10 9:42:32的发言:
以下是引用byf3941273752020/1/10 8:31:40的发言:
我创建FC1和FC2两个子程序,FC1中TEMP创建BOOL型0.0位,又在FC2中TEMP创建BOOL型0.0位,搞不明白了?

为什么我调用FC1中TEMP的0.0位置1时,FC2中的0.0也会同时置位?

按道理FC1和FC2中的临时变量都属于各自的局部变量,互不影响的,为什么FC1里的0.0接通FC2里的0.0呢?
求大神帮忙解释下
[此贴子已经被作者于2020/1/10 8:36:01编辑过]

TEMP使用的是PLC的临时区域,这个区域的特点是系统只管分配,不管回收的。

当你FC1申请临时区域时,FC1执行完毕后,原本FC1占用的临时区域被标记为不使用,然后FC2调用时,系统会将不使用的临时区域分配给FC2使用,但是分配给FC2的临时区域里面有没有数据系统是不管的,那是程序员的事情,因此使用临时区域的原则就是:先赋值,后使用。

Good Luck~
您好,可以麻烦具体下,先赋值后使用方法么?

附件 workpicture1.jpg


Good Luck~
那我FC1内的temp的0.0没有复位情况下,同时又调用FC2,这时候FC2内的0.0也是接通的,按照先赋值,后执行原则,FC2中的点就无法复位,这样就没法用了

FC1执行完毕后,不存在FC里面执行不退出的情况(发生这一情况的话看门狗错误),临时区就空出来分配给FC2,如果FC2不执行先赋值后使用的原则,那么它拿到的临时区地址里可能存在数据,因此,为了避免数据的混乱,就务必先赋值后使用。

要彻底确保不会互相干扰,那么就需要使用FB,系统为FB单独分配存储空间。

你目前的问题在于,FC2拿到的临时区中存在数据,因此导致程序的运行混乱,这个问题早先在论坛上已经多次讨论过了。

理解PLC的工作机制,包括各个存储区域的工作机制很重要。

Good Luck~
2294
byf394127375
文章数:416
年度积分:99
历史总积分:2294
注册时间:2010/12/14
发站内信
发表于:2020/1/10 12:34:05
#6楼
以下是引用cvlsam2020/1/10 11:05:01的发言:
以下是引用byf3941273752020/1/10 10:56:02的发言:
以下是引用cvlsam2020/1/10 10:37:10的发言:
以下是引用byf3941273752020/1/10 9:49:04的发言:
以下是引用cvlsam2020/1/10 9:42:32的发言:
以下是引用byf3941273752020/1/10 8:31:40的发言:
我创建FC1和FC2两个子程序,FC1中TEMP创建BOOL型0.0位,又在FC2中TEMP创建BOOL型0.0位,搞不明白了?

为什么我调用FC1中TEMP的0.0位置1时,FC2中的0.0也会同时置位?

按道理FC1和FC2中的临时变量都属于各自的局部变量,互不影响的,为什么FC1里的0.0接通FC2里的0.0呢?
求大神帮忙解释下
[此贴子已经被作者于2020/1/10 8:36:01编辑过]

TEMP使用的是PLC的临时区域,这个区域的特点是系统只管分配,不管回收的。

当你FC1申请临时区域时,FC1执行完毕后,原本FC1占用的临时区域被标记为不使用,然后FC2调用时,系统会将不使用的临时区域分配给FC2使用,但是分配给FC2的临时区域里面有没有数据系统是不管的,那是程序员的事情,因此使用临时区域的原则就是:先赋值,后使用。

Good Luck~
您好,可以麻烦具体下,先赋值后使用方法么?

附件 workpicture1.jpg


Good Luck~
那我FC1内的temp的0.0没有复位情况下,同时又调用FC2,这时候FC2内的0.0也是接通的,按照先赋值,后执行原则,FC2中的点就无法复位,这样就没法用了

FC1执行完毕后,不存在FC里面执行不退出的情况(发生这一情况的话看门狗错误),临时区就空出来分配给FC2,如果FC2不执行先赋值后使用的原则,那么它拿到的临时区地址里可能存在数据,因此,为了避免数据的混乱,就务必先赋值后使用。

要彻底确保不会互相干扰,那么就需要使用FB,系统为FB单独分配存储空间。

你目前的问题在于,FC2拿到的临时区中存在数据,因此导致程序的运行混乱,这个问题早先在论坛上已经多次讨论过了。

理解PLC的工作机制,包括各个存储区域的工作机制很重要。

Good Luck~
不好意思再麻烦问您下,看门狗错误在哪里看
此帖发自手机工控论坛
36681
cvlsam 版主
文章数:12339
年度积分:1033
历史总积分:36681
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2020/1/10 12:51:35
#7楼
以下是引用byf3941273752020/1/10 12:34:05的发言:
以下是引用cvlsam2020/1/10 11:05:01的发言:
以下是引用byf3941273752020/1/10 10:56:02的发言:
以下是引用cvlsam2020/1/10 10:37:10的发言:
以下是引用byf3941273752020/1/10 9:49:04的发言:
以下是引用cvlsam2020/1/10 9:42:32的发言:
以下是引用byf3941273752020/1/10 8:31:40的发言:
我创建FC1和FC2两个子程序,FC1中TEMP创建BOOL型0.0位,又在FC2中TEMP创建BOOL型0.0位,搞不明白了?

为什么我调用FC1中TEMP的0.0位置1时,FC2中的0.0也会同时置位?

按道理FC1和FC2中的临时变量都属于各自的局部变量,互不影响的,为什么FC1里的0.0接通FC2里的0.0呢?
求大神帮忙解释下
[此贴子已经被作者于2020/1/10 8:36:01编辑过]

TEMP使用的是PLC的临时区域,这个区域的特点是系统只管分配,不管回收的。

当你FC1申请临时区域时,FC1执行完毕后,原本FC1占用的临时区域被标记为不使用,然后FC2调用时,系统会将不使用的临时区域分配给FC2使用,但是分配给FC2的临时区域里面有没有数据系统是不管的,那是程序员的事情,因此使用临时区域的原则就是:先赋值,后使用。

Good Luck~
您好,可以麻烦具体下,先赋值后使用方法么?

附件 workpicture1.jpg


Good Luck~
那我FC1内的temp的0.0没有复位情况下,同时又调用FC2,这时候FC2内的0.0也是接通的,按照先赋值,后执行原则,FC2中的点就无法复位,这样就没法用了

FC1执行完毕后,不存在FC里面执行不退出的情况(发生这一情况的话看门狗错误),临时区就空出来分配给FC2,如果FC2不执行先赋值后使用的原则,那么它拿到的临时区地址里可能存在数据,因此,为了避免数据的混乱,就务必先赋值后使用。

要彻底确保不会互相干扰,那么就需要使用FB,系统为FB单独分配存储空间。

你目前的问题在于,FC2拿到的临时区中存在数据,因此导致程序的运行混乱,这个问题早先在论坛上已经多次讨论过了。

理解PLC的工作机制,包括各个存储区域的工作机制很重要。

Good Luck~
不好意思再麻烦问您下,看门狗错误在哪里看

模块诊断信息。

Good Luck~
18828
pqsh 版主
文章数:7382
年度积分:658
历史总积分:18828
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2020/1/10 21:09:30
#8楼
简单说一下吧,就是你进入一个FC,temp的值不是知道的.
所以temp都是作为一个中间变量,用的时候先是别的运算的结果(先赋值),再用,用完了,就不管了,扔掉了.下次进来,又不知是什么了.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
2294
byf394127375
文章数:416
年度积分:99
历史总积分:2294
注册时间:2010/12/14
发站内信
发表于:2020/1/15 17:15:48
#9楼
谢谢了明白
此帖发自手机工控论坛

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

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

109.2007