工控之家

 找回密码
加入工控之家

S7-300模拟量输出问题请教

[复制链接]
发表于 2012-7-9 15:43:17 | 显示全部楼层 |阅读模式
描述:FC105的使用
图片:
描述:DB10的定义
图片:
工程中模拟量模块是SM334 AI4/AO2 8 BIT,接线是0~20mA的电流输出

输出通道号PQW352,PQW353,在人机界面上有一输入框,要在里面输入0~100的

整数,来调节现场的阀门开度。利用系统提供的FC106来处理模拟量输出。有关指令和DB10属于FC1如图所示

问题:(1) 为什么将FC1一下载就SF系统故障了?是否是FC1中参数的类型不匹配,但是语法检查通过了。

            (2) 如果自己处理该用什么指令?
发表于 2012-7-9 19:37:48 | 显示全部楼层
我怀疑是你的DB10定义有问题,,,你可以在数据块里把DBD80单独定义下试下
发表于 2012-7-9 23:32:18 | 显示全部楼层
是这个样子的哦。

如果您仔细看看您得定义以及FC106的Help,那么您会发现,FC106的IN引脚上的数据类型应该为REAL,而您在DB中定义的是数组类型,且数组的数据类型为DWORD,DWORD与REAL是不同的概念,这一点请务必注意。

问题就来了,由于REAL与DWORD是同样的数据长度,当以绝对地址(DB10.DBD80)来进行编程时,系统仅仅检查数据长度,也就是DWord也是32位,其他系统不管了,而下载至PLC运行时,由于FC106会检查输入数据类型,因此会由于编程错误而导致SF灯亮。

以上~~~
发表于 2012-7-10 03:26:48 | 显示全部楼层
DB10.DBD80开始就是定义的REAL型啊!
发表于 2012-7-10 07:21:18 | 显示全部楼层
好久没有用西门子了。我把软件装上研究一下再来谈谈。不知道的我不能说。
发表于 2012-7-10 11:15:48 | 显示全部楼层
DB10.DBD80在ARRAY[0..76]里面
发表于 2012-7-10 15:10:18 | 显示全部楼层
引用

引用第5楼sjm213于2008-08-13 17:52发表的  :
DB10.DBD80在ARRAY[0..76]里面[/quote]
DB10.DBD80在ARRAY[80..100]里面
发表于 2012-7-10 19:04:48 | 显示全部楼层
引用

引用第6楼foxplc于2008-08-17 15:47发表的  :

DB10.DBD80在ARRAY[80..100]里面[/quote]

看来您还真玩不转中高端的PLC哦……

数组的下标与数据块中的绝对地址是不同的。

比如:ARRAY[0..10] OF INT  这样的数组,其由于INT类型对应的是16位存储空间,因此0..10就是11个存储空间,也就是从数据块的0.0一直到21.0哦。

而对您上式来说,因为您的Start11是数组,ARRAY[0-76],也就是77个存储空间单元,而数据类型为DWORD,因此基本单元占用4个字节。因此其地址空间段为DBD4一直到DBD312,而您所使用的DBD80不就是这个地址段中的吗?

既然这个地址段为DWORD格式,又怎么能应用到REAL中去呢?

绝对地址与符号是有差异的,但是这个差异似乎在数据块的地址编号中已经能够看不来了。

以上~~~
发表于 2012-7-10 22:59:18 | 显示全部楼层
可能是数据格式的问题
您需要登录后才可以回帖 登录 | 加入工控之家

本版积分规则

QQ|手机版|小黑屋|Archiver|工控之家 ( 鲁ICP备12015736号-1 )

GMT+8, 2024-5-19 17:32 , Processed in 0.061775 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表