回复:S7-200Smart子程序编程思路之一

已锁定

holdkcsxyz

西门子1847工业学习平台

  • 帖子

    1577
  • 精华

    24
  • 被关注

    163

论坛等级:至圣

注册时间:2015-06-03

白金 白金 如何晋级?

发布于 2022-08-08 11:03:46

24楼

展开查看
以下是引用xiatianyun在2022-08-07 22:58:54的发言 >22楼

倒是说说如何用指针把全局V数据传到L中来,我说的是如何简单地使用传过来的变量,不是使用指针。

指针嘛还是很好的,但也只是很好。

关键是如何简单地使用传过来的变量,最好还是符号寻址,如果是指针寻址的话恐怕要借助Excel了。

我对楼主的可以无限扩展子程序IO接口的方法很感兴趣,目前我在考虑如何扩展子程序的IO接口又不影响子程序temp变量的使用数量。

不过,我想放弃,因为并无实际用途,要这么作的话还是换成高档些的PLC简单些。

------------------------------

有机会的话我把如何把子程序变成带静态存储可以实例化的类似1200FB的方法,以及如何扩展临时变量的方法分享给大家指正。

但关于如何扩展接口...,还是受制于如何使用符号变量,暂时没有想法。

如果项目中多是几类同类型的设备的话还是可以的,可以定义成相同的接口,这样可以只使用少量几个公共数据块来实现扩展接口,不受16个的限制。

1关于16个接口参数的限制芳工以及很多工程师以前的帖子有类似介绍

2正如你说的无限扩展IO口的困惑可能是编译器非智能化导致的.比如我在C里每个指针的长度都由宏定义编译确定了,因此子程序里面绝对不会出现Smart编译环境中具体固定数字(比如指针+4以及BLKMOVB+具体长度等操作)的指针偏移量,而是用Data_Ptr_Len=Length();=Sizeof(Data_Ptr)这些相对"智能"的编译方式.

3确实没太多实际用途,重要实时控制场合直接用工业PN等实时总线,个性消费交互性场合用PC编译器+PCIE扩展硬件以及USB/以太网/WIFI等接口就好

4指针对于个性化的自由编程还是必要的因为指针的本质就是数字化二进制,比如Linux_Kernel源码的实现方式基本都是用函数指针组别的用法,指针用法的自由有多少诟病就有多少赞美.

5如果想无限扩展显然指针除了传递必要的参数外还要多出许多多余的中间缓存性质的参数.

6一个子程序内部大概有公共变量/公共方法;私有变量/私有方法,接口越多耦合性越强,接口太多在编译器不太智能时以至于在调用子程序时为它分配外部数据接口的工作量有时比写个子程序还要复杂,因此这个要综合考虑不是越多越好.

7有人说C的函数指针是解耦对象关系的最佳利器,虽然不一定全对,但显然有点道理.




评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9388条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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