恭喜,你发布的帖子
发布于 2022-05-22 15:40:10
2楼
我在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 等你需要的地方使用,
请填写推广理由:
分享
只看
楼主