技术论坛

如何通过input接口把数组类型数据传递到FC块去

作者 主题
侠客

经验值: 646
发帖数: 46
精华帖: 0
主题:【求助】如何通过input接口把数组类型数据传递到FC块去


只看楼主 楼主 2021-05-23 18:45:06

问题描述:

我在FC块内的IN接口定义一个 1..100的布尔量的数组,在外部接口如何把数据块内定义好的数据类型传递过去?传递的格式是什么样的?





 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1697080&b_id=4&s_id=0&num=2

侠士

经验值: 1800
发帖数: 234
精华帖: 0
回复:如何通过input接口把数组类型数据传递到FC块去


只看楼主 1楼 2021-05-23 19:57:36

外部肯定也是数组啊。


活到老,学到老
以下网友喜欢您的帖子:

  
侠圣

经验值: 2790
发帖数: 390
精华帖: 5
回复:如何通过input接口把数组类型数据传递到FC块去


只看楼主 2楼 2022-05-22 15:40:10

我在FC块内的IN接口定义一个 1..100的布尔量的数组,在外部接口如何把数据块内定义好的数据类型传递过去?传递的格式是什么样的?

//////////////////////

你定义输入端为一个数据ARRAY 型 例如 ARRAY[0..99] OF BOOL  为定义100个BOOL 量型 数据。

要求输入 写 为指针定义  例如 P# DB1.DBX0.0 BOOL 100  然后用SFC20 COPY 一下就行。



上面三个图时对DP 通讯进行诊断,第一个为第一次做法, 但发现每次都需要输入类似的P#DB255.DBX0.0 BYTE 10, 

然后用SCL 做了一个数据组  DP1 就是DP1的数据 有多少个DP 从站,建立多少个DP 数据组。仅仅该DP1,DP2 序列号就行,

P#DB255.DBX0.0 BYTE 10   指针型 对应了 STORE_DATA:ARRAY[0 ..10] OF BYTE; 数组类型。

方法2  不用FC 用FB  然后直接给背景数据块INPUT 直接写入数值。  我一般就是用方法,具体如下

 例如 单按钮控制启动停止。

FUNCTION_BLOCK FB3

VAR_INPUT

button_start:ARRAY[0..20] OF BOOL:=false;

fault:ARRAY[0..20] OF BOOL:=false;

start_condition:ARRAY[0..20] OF BOOL:=false;

END_VAR

VAR_OUTPUT

run:ARRAY[0..20] OF BOOL:=false;

run_light:ARRAY[0..20] OF BOOL:=false;

END_VAR

VAR

store_start:ARRAY[0..20] OF BOOL;

i:INT;

END_VAR

FOR i:= 0 TO 20 BY 1 DO

        run[i]:=((button_start[i] AND NOT store_start[i]) XOR run[i]) AND NOT fault[i] AND          start_condition[i];

        store_start[i]:= button_start[i];

        run_light[i]:=run[i]; 

END_FOR; 

END_FUNCTION_BLOCK

DATA_BLOCK DB4  FB3

//

// Block Comment...

//

BEGIN

END_DATA_BLOCK


P#DB3.DBX0.0 BOOL 21  对应 启停 输入组 button_start:ARRAY[0..20] OF BOOL:=false;

直接用SFC20 COPY 到DB4.DBX0.0 BOOL 21   这样可以直接在WINCC 等你需要的地方使用,




大家同行,you ok ? me !
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
如何通过input接口把数组类型数据传递到FC块去
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。