您现在所在的是:

欧姆龙OMRON

回帖:4个,阅读:3905 [上一页] [1] [下一页]
708
yuanyaozi
文章数:12
年度积分:50
历史总积分:708
注册时间:2014/4/12
发站内信
发表于:2017/11/14 9:18:28
#0楼
附件 1.jpg

各位大佬,如上图片所述,在功能块内用内部变量求余数的值。
商若是D100,余数就是D101,但是在内部变量里面如何定义商与余数的关系?
如若是用At数据,则在程序里面只能调用一次功能块,第二次调用就处乱了。
求各位大佬帮忙看下,谢谢、



8302
fujifa
文章数:2937
年度积分:235
历史总积分:8302
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2017/11/14 9:49:36
#1楼
以下是引用yuanyaozi2017/11/14 9:18:28的发言:
附件 1.jpg

各位大佬,如上图片所述,在功能块内用内部变量求余数的值。
商若是D100,余数就是D101,但是在内部变量里面如何定义商与余数的关系?
如若是用At数据,则在程序里面只能调用一次功能块,第二次调用就处乱了。
求各位大佬帮忙看下,谢谢、




我给给你普及一下为什么要用FB!

使用FB的原因有2个:
1、减少重复代码。
2、提高代码的重复利用率。

第一个原因非常好解释,第二个原因就是通过在不同的项目中使用相同的FB功能,从而使得我们只需要为一个功能编写一次FB,从而提高了代码重复利用率。

要实现提高代码的重复利用率,那么就势必需要在编程中不使用外部,即PLC的实际地址,而是通过输入,输入输出引脚给FB中的数值赋值,因此楼主在内部变量中使用外部地址从而使得代码重复利用率受到极大的影响,因此你不需要FB,只需要一个子程序就可以了。

在来普及以下FB的运行机制:
   对于系统来,为FB的存储随机的分配系统内存,当系统中存在带保持的地址时,例如内部静态变量,系统会分配永久存储区供其使用,而对于临时变量,在FB调用结束时,系统会回收资源供其他FB使用,因此这些地址是共用的。
   而系统调用FB,并非等FB全部运行完成,而是只要FB运行返回主程序时,就对其进行资源回收。

所以,你的这个FB的正确做法是:
将被除数与除数作为IN变量引入,结果与余数作为OUT变量输出,你这个程序只要一个FC就结束了。

最后,Omron在FB,FC上与其他主流厂商还有一定的差距,特别是CX-ONE,受早期编程方式的拖累,如果使用SysmacStudio的话,会好很多。

HAVE FUN!
708
yuanyaozi
文章数:12
年度积分:50
历史总积分:708
注册时间:2014/4/12
发站内信
发表于:2017/11/14 15:23:16
#2楼
以下是引用fujifa2017/11/14 9:49:36的发言:
以下是引用yuanyaozi2017/11/14 9:18:28的发言:
附件 1.jpg

各位大佬,如上图片所述,在功能块内用内部变量求余数的值。
商若是D100,余数就是D101,但是在内部变量里面如何定义商与余数的关系?
如若是用At数据,则在程序里面只能调用一次功能块,第二次调用就处乱了。
求各位大佬帮忙看下,谢谢、




我给给你普及一下为什么要用FB!

使用FB的原因有2个:
1、减少重复代码。
2、提高代码的重复利用率。

第一个原因非常好解释,第二个原因就是通过在不同的项目中使用相同的FB功能,从而使得我们只需要为一个功能编写一次FB,从而提高了代码重复利用率。

要实现提高代码的重复利用率,那么就势必需要在编程中不使用外部,即PLC的实际地址,而是通过输入,输入输出引脚给FB中的数值赋值,因此楼主在内部变量中使用外部地址从而使得代码重复利用率受到极大的影响,因此你不需要FB,只需要一个子程序就可以了。

在来普及以下FB的运行机制:
   对于系统来,为FB的存储随机的分配系统内存,当系统中存在带保持的地址时,例如内部静态变量,系统会分配永久存储区供其使用,而对于临时变量,在FB调用结束时,系统会回收资源供其他FB使用,因此这些地址是共用的。
   而系统调用FB,并非等FB全部运行完成,而是只要FB运行返回主程序时,就对其进行资源回收。

所以,你的这个FB的正确做法是:
将被除数与除数作为IN变量引入,结果与余数作为OUT变量输出,你这个程序只要一个FC就结束了。

最后,Omron在FB,FC上与其他主流厂商还有一定的差距,特别是CX-ONE,受早期编程方式的拖累,如果使用SysmacStudio的话,会好很多。

HAVE FUN!

嗯嗯,感谢大佬回复。

从西门子与欧姆龙这CX-ONE区别来说,西门子的FB是有DB的,FC没有;而CX-ONE这所有的功能块,没有At数据的话就应该相当于只是FC而已,At了数据的有点FB的意思,不知是不是?因为我也是小白刚上手欧姆龙PLC的。

回到上边的商与余数的关系,

如果我不用功能块去做,直接用除法指令,余数可在数据存储器中看到。

附件 QQ拼音截图20171114150625.jpg

但是现在我觉得这么做有点直接,我想绕个弯尝试用功能块来实现,那么我现在遇到的问题是,在功能块的变量上,被除数作为输入变量,除数赋值为&2,商我不需要知道多少,我只要余数值做输出变量,这时在这个功能块里面如何定义商与余数关系?(1楼的D100与D101可无视)
如有简单例程讲一下最好,谢谢!
[此贴子已经被作者于2017/11/14 16:18:08编辑过]
37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2017/11/14 20:33:34
#3楼
以下是引用yuanyaozi2017/11/14 15:23:16的发言:
以下是引用fujifa2017/11/14 9:49:36的发言:
以下是引用yuanyaozi2017/11/14 9:18:28的发言:
附件 1.jpg

各位大佬,如上图片所述,在功能块内用内部变量求余数的值。
商若是D100,余数就是D101,但是在内部变量里面如何定义商与余数的关系?
如若是用At数据,则在程序里面只能调用一次功能块,第二次调用就处乱了。
求各位大佬帮忙看下,谢谢、




我给给你普及一下为什么要用FB!

使用FB的原因有2个:
1、减少重复代码。
2、提高代码的重复利用率。

第一个原因非常好解释,第二个原因就是通过在不同的项目中使用相同的FB功能,从而使得我们只需要为一个功能编写一次FB,从而提高了代码重复利用率。

要实现提高代码的重复利用率,那么就势必需要在编程中不使用外部,即PLC的实际地址,而是通过输入,输入输出引脚给FB中的数值赋值,因此楼主在内部变量中使用外部地址从而使得代码重复利用率受到极大的影响,因此你不需要FB,只需要一个子程序就可以了。

在来普及以下FB的运行机制:
   对于系统来,为FB的存储随机的分配系统内存,当系统中存在带保持的地址时,例如内部静态变量,系统会分配永久存储区供其使用,而对于临时变量,在FB调用结束时,系统会回收资源供其他FB使用,因此这些地址是共用的。
   而系统调用FB,并非等FB全部运行完成,而是只要FB运行返回主程序时,就对其进行资源回收。

所以,你的这个FB的正确做法是:
将被除数与除数作为IN变量引入,结果与余数作为OUT变量输出,你这个程序只要一个FC就结束了。

最后,Omron在FB,FC上与其他主流厂商还有一定的差距,特别是CX-ONE,受早期编程方式的拖累,如果使用SysmacStudio的话,会好很多。

HAVE FUN!

嗯嗯,感谢大佬回复。

从西门子与欧姆龙这CX-ONE区别来说,西门子的FB是有DB的,FC没有;而CX-ONE这所有的功能块,没有At数据的话就应该相当于只是FC而已,At了数据的有点FB的意思,不知是不是?因为我也是小白刚上手欧姆龙PLC的。

回到上边的商与余数的关系,

如果我不用功能块去做,直接用除法指令,余数可在数据存储器中看到。

附件 QQ拼音截图20171114150625.jpg

但是现在我觉得这么做有点直接,我想绕个弯尝试用功能块来实现,那么我现在遇到的问题是,在功能块的变量上,被除数作为输入变量,除数赋值为&2,商我不需要知道多少,我只要余数值做输出变量,这时在这个功能块里面如何定义商与余数关系?(1楼的D100与D101可无视)
如有简单例程讲一下最好,谢谢!
[此贴子已经被作者于2017/11/14 16:18:08编辑过]

前面有人已经说过了,欧姆龙的FB/FC并不符合IEC规范,而欧姆龙内部不使用寄存器地址不代表不能使用FB,即使在西门子中,你仍然对FB/FC的使用存在很大误解。

首先,你应该定义两个输入变量,用于除数与被除数的输入。



附件 snap1.jpg

然后,定义一个数组用于存放商与余数。




附件 snap2.jpg

最后,定义输出变量用于返回结果。




附件 snap3.jpg

这样,你不需要使用地址即可完成你的要求。




附件 snap4.jpg

当然,完整的可以供使用的程序你还需要做到错误侦测以及错误提示,例如如果用户除数输入了0怎么办,当然,在我的程序中是不会的,因为我给除数定义了初始值,但是你仍然需要做错误侦测并返回执行结果。




附件 snap5.jpg

最后说一下,你的PLC水平弱爆了~~

Good Luck~
708
yuanyaozi
文章数:12
年度积分:50
历史总积分:708
注册时间:2014/4/12
发站内信
发表于:2017/11/15 8:47:26
#4楼
以下是引用cvlsam2017/11/14 20:33:34的发言:
以下是引用yuanyaozi2017/11/14 15:23:16的发言:
以下是引用fujifa2017/11/14 9:49:36的发言:
以下是引用yuanyaozi2017/11/14 9:18:28的发言:
附件 1.jpg

各位大佬,如上图片所述,在功能块内用内部变量求余数的值。
商若是D100,余数就是D101,但是在内部变量里面如何定义商与余数的关系?
如若是用At数据,则在程序里面只能调用一次功能块,第二次调用就处乱了。
求各位大佬帮忙看下,谢谢、




我给给你普及一下为什么要用FB!

使用FB的原因有2个:
1、减少重复代码。
2、提高代码的重复利用率。

第一个原因非常好解释,第二个原因就是通过在不同的项目中使用相同的FB功能,从而使得我们只需要为一个功能编写一次FB,从而提高了代码重复利用率。

要实现提高代码的重复利用率,那么就势必需要在编程中不使用外部,即PLC的实际地址,而是通过输入,输入输出引脚给FB中的数值赋值,因此楼主在内部变量中使用外部地址从而使得代码重复利用率受到极大的影响,因此你不需要FB,只需要一个子程序就可以了。

在来普及以下FB的运行机制:
   对于系统来,为FB的存储随机的分配系统内存,当系统中存在带保持的地址时,例如内部静态变量,系统会分配永久存储区供其使用,而对于临时变量,在FB调用结束时,系统会回收资源供其他FB使用,因此这些地址是共用的。
   而系统调用FB,并非等FB全部运行完成,而是只要FB运行返回主程序时,就对其进行资源回收。

所以,你的这个FB的正确做法是:
将被除数与除数作为IN变量引入,结果与余数作为OUT变量输出,你这个程序只要一个FC就结束了。

最后,Omron在FB,FC上与其他主流厂商还有一定的差距,特别是CX-ONE,受早期编程方式的拖累,如果使用SysmacStudio的话,会好很多。

HAVE FUN!

嗯嗯,感谢大佬回复。

从西门子与欧姆龙这CX-ONE区别来说,西门子的FB是有DB的,FC没有;而CX-ONE这所有的功能块,没有At数据的话就应该相当于只是FC而已,At了数据的有点FB的意思,不知是不是?因为我也是小白刚上手欧姆龙PLC的。

回到上边的商与余数的关系,

如果我不用功能块去做,直接用除法指令,余数可在数据存储器中看到。

附件 QQ拼音截图20171114150625.jpg

但是现在我觉得这么做有点直接,我想绕个弯尝试用功能块来实现,那么我现在遇到的问题是,在功能块的变量上,被除数作为输入变量,除数赋值为&2,商我不需要知道多少,我只要余数值做输出变量,这时在这个功能块里面如何定义商与余数关系?(1楼的D100与D101可无视)
如有简单例程讲一下最好,谢谢!
[此贴子已经被作者于2017/11/14 16:18:08编辑过]

前面有人已经说过了,欧姆龙的FB/FC并不符合IEC规范,而欧姆龙内部不使用寄存器地址不代表不能使用FB,即使在西门子中,你仍然对FB/FC的使用存在很大误解。

首先,你应该定义两个输入变量,用于除数与被除数的输入。



附件 snap1.jpg

然后,定义一个数组用于存放商与余数。




附件 snap2.jpg

最后,定义输出变量用于返回结果。




附件 snap3.jpg

这样,你不需要使用地址即可完成你的要求。




附件 snap4.jpg

当然,完整的可以供使用的程序你还需要做到错误侦测以及错误提示,例如如果用户除数输入了0怎么办,当然,在我的程序中是不会的,因为我给除数定义了初始值,但是你仍然需要做错误侦测并返回执行结果。




附件 snap5.jpg

最后说一下,你的PLC水平弱爆了~~

Good Luck~

定义一个数组用于存放商与余数。

您的这句话解决了我的问题,多谢了。
您讲出我水平弱爆对我来说这是好事啊,至少,我是不耻下问的,以后遇到其他问题,还得请这边各位大佬多指点指点呢,谢谢。

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

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

109.2007