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

还是新手

  • 帖子

    548
  • 精华

    6
  • 被关注

    23

论坛等级:侠圣

注册时间:2008-06-07

黄金 黄金 如何晋级?

发布于 2012-09-22 08:04:44

14楼

quote:以下是引用杭州小子在2012-09-22 07:52:45的发言:
谢谢楼上的关注。
关于第一个问题,我主要是想知道:
tempDATA[count].data_int:=WORD_TO_INT(PIW[BeginAdd+2*count]);
这个语句中为什么是.data_int。我仔细看了一下上面你给出的例子。关于tempDATA:ARRAY[0..49] OF UDT_INT; 我不太理解。到底是把tempDATA定义成50个word的长度还是把tempDATA定义成50个UDT的结构。因为我在DB块里试了一下,UDT1 : 10个byte, TempDATA : Array[1..10] of udt1; 那么TempDATA的长度就是10×10Byte=100BYTE。不知道在SCL里采用 TempDATA : Array[ .. ] of udt***的定义是否有新的意义。不知道楼上的有没有明白我的意思。
第二个问题其实并不是直接赋值,而是通过PIW的格式赋值。
比如我在udt里定义了80个bool的变量,如果想通过PI的格式该如何写,因为PI最小的单位是PIB,换句话说,定义了一个UDT,里面有bool,byte,word,等等,但是总长度是100个byte,这样是否可以采用PI[]的方式来读取数据。
可能我的表述不清楚,请朋友费心了。

第一个问题:是定义成50个UDT的结构,而不是50个word。如果定义50个word还用定义UDT干吗?我只是举了一个UDT 例子。
第二个问题:我记得你说过你要取的是连续的100个byte。那你先PIW取进来。然后再在FB内部处理数据,这样简单。进***:238194643吧。收你为徒啦,哈哈、
欢迎关注西门子民间技术支持微信公众帐号。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54664条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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