回复:关于scl编程的一点疑问

杭州小子

  • 帖子

    151
  • 精华

    0
  • 被关注

    16

论坛等级:游侠

注册时间:2011-11-03

普通 普通 如何晋级?

发布于 2012-09-20 13:01:07

5楼

quote:以下是引用还是新手在2012-09-19 20:15:00的发言:
quote:以下是引用杭州小子在2012-09-19 12:52:50的发言:
quote:以下是引用还是新手在2012-09-19 08:15:24的发言:
不用AT指令。在FB内部定义UDT就可以了。定义UDT格式:
TYPE XXX //for UDT name
STRUCT
XXXX:XX // XXXX UDT内部变量名称,XX为变量类型
XXXX:XX // XXXX UDT内部变量名称,XX为变量类型
XXXX:XX // XXXX UDT内部变量名称,XX为变量类型
END_STRUCT
END_TYPE

这样本FB接口标签或Sata变量类型就可以定义为XXX(你建的UDT)类型了。
例如:

VAR
abc:XXX; // Static Variables,XXX为在程序内部定义的UDT

END_VAR

感谢楼上的回答,定义UDT倒是可以,不过如何读取外面的数据呢?是否还是需要利用sfc14来读取。比如从IW100.0开始连续读取100个byte.
主要是用在DPcoupling通讯。而且我看说明似乎是sfc14的存取地址要创建一个any类型的struct。

??没明白读外部数据用sfc14干嘛??
直接PIW不就OK了。读100个byte循环50次不就OK了吗???
下边程序供参考:
VAR_INPUT
BeginAdd:INT;
END_VAR
VAR
count:INT;
aaa: ARRAY[0..49] OF INT;
END_VAR

FOR count:= 0 TO 49 BY 1 DO
aaa[count]:=WORD_TO_INT(PIW[BeginAdd+2*count]);
END_FOR;
如果想放到对应UDT里。定义好UDT就行了,一样放。

楼上的这种用法我也知道,不过读到aaa[count]中后,aaa定义的是array格式的,如果读进来后想以UDT 的格式使用该如何转换呢?比如我读进来的是100个byte,但是用的时候有byte,bool,word,等等 ,那么如何把100个byte的array转换成100个byte的UDT格式变量呢?还希望楼上的帮忙解决一下。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54714条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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