回复:子程序要用上16个以上传入传出参数,你可以这么做。

'Razor

西门子1847工业学习平台

  • 帖子

    3240
  • 精华

    42
  • 被关注

    224

论坛等级:至圣

注册时间:2008-03-31

钻石 钻石 如何晋级?

发布于 2015-02-13 23:09:39

24楼

这样的帖子竟然封了”精“,只能表示”呵呵“了。

200编程软件的帮助文件中对”局部变量“有以下描述:
1、局部变量可用作传递至子程序并可用于增加子程序的移动性重新使用子程序的参数。
程序中的每个POU都有自己的局部变量表,配备64个字节的L内存。
2、** 每个子程序调用的输入/输出参数的最大限制是16,如果您尝试下载的程序超过此一限制,会返回一则错误信息。

为什么会出现”子程序“这个东西?
个人认为其最大的优点是可以“多次使用”,也就是经典但不过时的“复用”
同样还有以简御繁的“一次修改”

为什么会出现L内存?它的出现也是为了“复用”,“指针”也是为了“复用”,当然还有其它。在很多行业软件中,“复用”思维的运用相当广泛,举个常见的例子,电气绘图软件中也常见的“模块”/“模型”,一次创造/制造,多次使用,甚至还出现了“电气子回路”的概念;当然在PLC编程中也一样,最初的PLC的编程直接就是“面条式”的,到后来划分成“模块”“子程序”“宏”等。

楼主这种突破“极限”/“限制”的想象力是好的,没有“异想”不会有“天开”,但是想象力有时是需要约束的。

软件帮助中说有16个IN/OUT参数个数的限制,我想软件的设计者对我们这些软件编程的使用者已经是相当“仁慈”和“大方”的了,竟然让我们可以使用数量可以达到“16”个之多的参数!
如果说所说设计的子程序的IN/OUT参数再多的话,那我只能说,子程序设计的不合格,里面牵涉了太多的数据,包含了太多的内容,完全可以把子程序“重构”,拆解,“分治”,减少不必要的东西,让子程序只做一件事!
设计要像搭“积木”一样,“要配置,而不是集成!”

再说在子程序中,使用全局变量的问题,网络曾经流行一句话,叫做”不作不死!“,感觉这种做法正适合用这个断语。在子程序中使用全局变量,无形中降低了程序的”安全系数",同时增加了全局数据发生变化的“故障可能性“。

孔子有一句话,”从心所欲而不逾矩“,感觉就说得相当到位。
少即是多
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33265条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。