签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
问题描述:
我在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
外部肯定也是数组啊。
//////////////////////
你定义输入端为一个数据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;
VAR
store_start:ARRAY[0..20] OF BOOL;
i:INT;
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 等你需要的地方使用,
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录