抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望
启程高伟(工程师)

FC块数据类型定义:

DB块中的原始数据:

效果展示图:

浮点组数                                                                                                                          整型数组

如果输入的长度超过了FC块中定义的长度,那么会产生错误信息,我们把数组写成300长度

Message 错误消息展示

原码如下:

备注:本程序的数组输入索引是必须从0开始,本代码已通过测试,拷贝即可使用

IF IS_ARRAY(#in_array) THEN   //判断是否是数组

#arr_length := UDINT_TO_DINT(CountOfElements(#in_array)); //找到数组的长度,函数返回类型是UDINT,要转成DINT

IF #arr_length < #max_length THEN       //如果输入的数组的长度小于设定的最大长度  则进行以下判断

//**************************判断数组是整数进行计算***************************************            

IF TypeOfElements(#in_array) = Int THEN         //判断输入数组的类型

  VariantGet(SRC := #in_array,
  DST => #arr_int_temp);

#max_number_temp_int := #arr_int_temp[0];       //把索引为0的数认为是最大值
  
#max_index_temp := 0;         //0索引存起来

FOR #i := 0 TO #max_length - 1 DO      //循环 从最小索引开始,到最大索引结束
  
IF #max_number_temp_int < #arr_int_temp[#i] THEN //如果最大值小于后面索引的值

#max_number_temp_int := #arr_int_temp[#i];     //则把后面索引的值存入最大值变量里

#max_index_temp := #i;          //再把索引存起来
  END_IF;
  #sum := #sum + #arr_int_temp[#i];

END_FOR;
VariantPut(SRC := #max_number_temp_int,
DST := #max_out);          //把最大值输出 int
#max_index := #max_index_temp;            //把最大值的索引输出
#avg := #sum / #arr_length;
//*******************************如果数组是浮点进行计算*********************************                 
  
ELSIF TypeOfElements(#in_array) = Real THEN         //判断输入数组的类型
VariantGet(SRC := #in_array,

DST => #arr_real_temp);                //把输入的数组传入到内部数组进行处理

#max_number_temp_real := #arr_real_temp[0];            //把索引为0的数认为是最大值

#max_index_temp := 0;                      //0索引存起来

FOR #i := 0 TO #max_length - 1 DO          //循环   从最小索引开始,到最大索引结束

IF #max_number_temp_real < #arr_real_temp[#i] THEN   //如果最大值小于后面索引的值

#max_number_temp_real := #arr_real_temp[#i];       //则把后面索引的值存入最大值变量里

#max_index_temp := #i;          //再把索引存起来

END_IF;
#sum := #sum + #arr_real_temp[#i];

  END_FOR;
  VariantPut(SRC := #max_number_temp_real,
  DST := #max_out);            //把最大值输出 real
  #max_index := #max_index_temp;             //把最大值的索引输出
  #avg := #sum / #arr_length;
  END_IF;

ELSE
#message := 'fault';       //如果输入的数组长度超过200个,那就报错
END_IF;
END_IF;

启程智能

关于我们:启程自动化培训 中国领先的工业机器人培训服务提供商
联系电话:  13809869603
培训项目:机器人、PLC系统集成、机器视觉
特色服务:3000平米实训中心 +推荐就业+ 业界领先的课程体系
地            址:深圳市宝安区沙井汇聚107创智园

---

+老师 微信,了解课程详

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?获取邀请码

x
您需要登录后才可以回帖 登录 | 获取邀请码

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

Copyright 2010-2015. All rights reserved. 

微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码