green 发表于 2012-7-11 18:25:41

求程序解释

诚心指教,附程序,设备程序中可以储存12个设备配方,也可调用,删除,现很多触摸屏都有配方储存功能,可能都不用这个程序的,附件这个是用程序保存,调用,删除,我只是想明白编程的思路,明白其中的道理,怎样保存,调用,删除的。想学欧姆龙,没人指点,这个程序想了很久都没明白其中的原理,家园的高手能否指点,说说其中的道理,不胜感激!!!!

小空分 发表于 2012-7-11 22:20:11

学习一下

hurry 发表于 2012-7-12 02:14:41

学习一下!!

宝乐婶的烦心事 发表于 2012-7-12 06:09:11

研究一下 http://www.ymmfa.com/images/post/smile/default/18.gif

liion 发表于 2012-7-12 10:03:41

一般的都是用变址寻址方式。*或者DR之类的。没装软件,有空看看。

冰雨 发表于 2012-7-12 13:58:11

你可以在触摸屏里做好你需要的配方,以及配方号。在PLC程序里写入你需要调用的配方号。 http://www.ymmfa.com/images/post/smile/default/18.gif

拉丁教父 发表于 2012-7-12 17:52:42

你这个配方还不支持配方内容的编辑只是一个寻位算法而已,如果用st语言写出来的话基本用不了几行,而且还不支持配方内容编辑,不够强。
如果想理解本程序思路建议你看看汇编程序的基址与变址的相关定义,这样你再看就很清楚了

誓言 发表于 2012-7-12 21:47:12

先说一下程序的主要思路:
1.配方号1-12的参数实际值分别存储在D2200-D2207 D2208-D2215 ...中(共12组,每组8个字)。 即每个配方号下有8个参数值。
2.添加删除或者调用3个过程其实差不多,都是建立配方号与存储地址首字之间的关系。就是程序中*8 +2200之类的操作。
3.添加时,把D400-D407存入前加@的上记2中得到地址中。
注:前加@表示内容作为地址再操作,和*作用差不多,只是BIN和BCD的问题。
4.其他D2000当前存储的配方数量。D2002 D2004 D2006 。。。依次的配方号。

下面说下个人意见,
如果单就这几段程序来讲,有几处需要改进之处。
1.存储地址规划的很不好(如果没有其他未写的用途的话),比如如果第一个添加配方1,存储地址是D2200-D2207,第二个如果添加配方3,存储地址是D2208-D2215。这种规划就带来了混乱,自己给自己找麻烦,程序做的很复杂,相信大家看不懂的地方就是本来不必要的程序。好的规划应该是按照可以计算规则的顺序存储,不管第几个什么时候添加的配方3,它的参数存储地址永远是D2216-D2223(即2200+3X8=2216~)。这样程序就会简化很多,至少精简一半行数。循环程序FOR都不用写,D2060 D2061这两个让人迷糊的中间量就可以不用了。程序会很容易看懂的。
2.添加删除和调用不应该在一个界面中(从共用D400-D407这一点猜测的)。应该放到不同的操作权限界面中去,避免误删。同时这三个的操作习惯让人费解,比如按下按钮W53.xx后配方号清零,调用不存在的配方号,会显示上一次存在的配方参数等等。
3.D2002 D2004 D2006中存储的配方号,意义不是很大。不如简单点用一个字L0中的16位表示是否存在对应的配方。比如L0=#008F表示存在配方1 2 3 4 8.
页: [1]
查看完整版本: 求程序解释