关于any指针的另一些说明

关于any指针的另一些说明

西门子的any指针是一个很全面的指针。它可以实现很多高级功能,而之前也有很多资料关于any指针的说明,在此对近期遇到的any指针的一些新的发现进行简要的介绍。

文章目录

    • 关于any指针的另一些说明
      • 1 any指针的一般用途
        • 1.1 any指针简介
        • 1.2 any指针的一般用法
        • 1.3 any指针使用特例
      • 2 any指针中关于FC和FB以及DB作为参数的应用
        • 2.1 前提说明
        • 2.2 DB作为参数传递
        • 2.3 FB与FC块作为参数传递
        • 2.4 FC、FB、DB作为参数传递注意事项
      • 3 any指针中关于timer和counter作为参数的应用
        • 3.1 前提说明
        • 3.2 单个timer及counter传入
        • 3.3 多个timer及counter传入
      • 4 总结

1 any指针的一般用途

1.1 any指针简介

  • 1.1 any指针是一个增强的pointer指针,他拥有pointer指针的一切的性能。并且也拥有pointer指针另一些不具备的功能。

1.2 any指针的一般用法

  • 1.2 any指针一般是用作FC与FB的接口类型。这样,无论从FC及FB的外面传入一般数据区区域的任何参数,在FC和FB里面均可以得到相应的数据。在这里数据里一般包括M,I,Q,DB等,它不仅仅是可以传入单个的参数,还可以传入一串连续的数据。例如,从IB0到IB10一共11个字节的数据,也可以一次性传入MW10到MW32一共12个Word的数据。

1.3 any指针使用特例

  • 1.3 在这里便有另外一个特例,需要注意,这个便是FC与FB作为参数的时候,具体的细节见下节。

2 any指针中关于FC和FB以及DB作为参数的应用

2.1 前提说明

  • 此处所提及的FC、FB以及DB作为参数,并不是说将里面的数据作为参数传递,而是这个FC或者FB或者DB本身作为参数传递。

2.2 DB作为参数传递

  • 2.2.1 如上面所提到的,此处,所提及的DB作为参数传递并不是将DB块里面的数据作为参数传递。而是,将整个块作为参数传递。举例说明:如果在参数接口上写入DB1.DBW20,此时是将DB1块中的DBW20这个word的数据传入到调用的块里面去。而我们此时所说的DB块作为参数,是指将整个的DB块传进去。
    关于any指针的另一些说明_第1张图片
    此时,便是将整个DB块作为参数传入。在TIA中此用法也是可行的。 上图为TIA中用DB作为参数的编程及在线监控截图。

2.3 FB与FC块作为参数传递

  • 2.3 对于FB和FC块也是如上图在Step7中一样的调用,如下图:关于any指针的另一些说明_第2张图片
    此时,便是将FC作为参数传入FC1中。FB亦是相同,如下图:
    此时,便是将FB作为参数传入到FC1中。但是,此时需要注意的是,此时无法在TIA中进行相类似的操作。

2.4 FC、FB、DB作为参数传递注意事项

  • 2.4 在使用该方法将FC、FB、DB作为参数传入的时候,只可以每次传入一个块,不能同时传入两个或两个以上的块。这个需要注意。另一个便是在上面所提到的,在TIA中可以将DB作为参数传入,但是FC和FB却不可以,只能在Step7中进行操作。

3 any指针中关于timer和counter作为参数的应用

3.1 前提说明

  • 3.1 使用timer和counter作为参数使用的时候,定时器是指的西门子专有的S5定时器,如果采用Ton等IEC定时器的话,便是相当于传入一个DB块,而传入DB块的方法在上面已经说明,便不再表述。

3.2 单个timer及counter传入

  • 3.2 作为单个的timer或是counter话,使用方法同FB和FC块的使用,此处便不再赘述。

3.3 多个timer及counter传入

  • 3.3 如果需要传入连续的多个timer或是counter的话便已经基本上没有意义了,此处不再做出说明。

4 总结

原本将将FB和FC作为参数传入的目的是想将其做成函数指针的用法。但是,一来PLC本身不必用弄得太过复杂。二来也有简单的方式传入FB和FC(定义一个int类型的接口 in1 ,将此接口名称改成初始FC或者FB的编号,在调用块内部直接用UC FC[in1] 便可以),此时便也没有很大的实际意义,便不再过多求证了。

你可能感兴趣的:(工作)