回复:FC函数INPUT形参设置为数组的时候,无法正常工作,传递进去的都是0,我用的不对还是另有用法?

已锁定

一指禅_LYG

  • 帖子

    256
  • 精华

    0
  • 被关注

    3

论坛等级:侠士

注册时间:2021-06-24

黄金 黄金 如何晋级?

发布于 2021-08-13 06:13:48

5楼

展开查看
以下是引用Zane在2021-08-12 23:27:45的发言 >4楼

看你是如何调用FC的?是如何赋值的?

版主辛苦,这么晚了还在回复帖子


函数功能比较简单,将包含年月日或者时分秒的数组作为形参带入,函数返回转换好的字符串


首帖的第一第二两张图是函数的数组形参定义和引用,第三和第四张图是将数组形参拆分成单个变量形参,同样的程序,数组形参结果就是错我的,第五张图是实际输出的结果。


在论坛里图可能看起来比较麻烦,我将这个函数COPY过来,刚学SCL写的比较简陋。


FUNCTION "Rtc2Str" : String

{ S7_Optimized_Access := 'TRUE' }

VERSION : 0.1

   VAR_INPUT 

      Date_Array : Array[0..2] of USInt;

      IsDate : Bool;

   END_VAR


   VAR_TEMP 

      StrTemp0 : String;

      StrTemp1 : String;

      BcdTemp : Byte;

      UintTemp : UInt;

   END_VAR



BEGIN

#BcdTemp := ((#Date_Array[0] / 10) * 16)+(#Date_Array[0] MOD 10);

#UintTemp := HTA(IN := #BcdTemp, N := 1, OUT => #StrTemp1);

#StrTemp0 := #StrTemp1;

IF #IsDate THEN

    #StrTemp0 := CONCAT(IN1 := #StrTemp0, IN2 := '-');

ELSE

    #StrTemp0 := CONCAT(IN1 := #StrTemp0, IN2 := ':');

END_IF;

#BcdTemp := ((#Date_Array[1] / 10) * 16) + (#Date_Array[1] MOD 10);

#UintTemp := HTA(IN := #BcdTemp, N := 1, OUT => #StrTemp1);

#StrTemp0 := CONCAT(IN1 := #StrTemp0, IN2 := #StrTemp1);

IF #IsDate THEN

    #StrTemp0 := CONCAT(IN1 := #StrTemp0, IN2 := '-');

ELSE

    #StrTemp0 := CONCAT(IN1 := #StrTemp0, IN2 := ':');

END_IF;

#BcdTemp := ((#Date_Array[2] / 10) * 16) + (#Date_Array[2] MOD 10);

#UintTemp := HTA(IN := #BcdTemp, N := 1, OUT => #StrTemp1);

#StrTemp0 := CONCAT(IN1 := #StrTemp0, IN2 := #StrTemp1);

#Rtc2Str := #StrTemp0;

END_FUNCTION


调用上层程序是这样的,实参是其他程序保存在DB块里面的运行LOG。

   VAR_TEMP 

      打印字符串 : String;

   END_VAR


#打印字符串 := CONCAT(IN1 := '工作日期:', IN2 := "Rtc2Str"(Date_Array := "打印数据".记录1.开始日期.年月日,

                                                                           IsDate := 1));

数据块的结构只能截图了,无法复制成文本方式





评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15113条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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