foxplc
水到渠成
级别: 家园常客
精华主题: 2 篇
发帖数量: 550 个
工控威望: 628 点
下载积分: 4239 分
在线时间: 112(小时)
注册时间: 2007-08-09
最后登录: 2021-11-22
查看foxplc的 主题 / 回贴
楼主  发表于: 2008-08-09 20:57
描述:FC105的使用
图片:
描述:DB10的定义
图片:
工程中模拟量模块是SM334 AI4/AO2 8 BIT,接线是0~20mA的电流输出

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

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

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

            (2) 如果自己处理该用什么指令?


xushiyouwcg
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看xushiyouwcg的 主题 / 回贴
1楼  发表于: 2008-08-10 08:46
我怀疑是你的DB10定义有问题,,,你可以在数据块里把DBD80单独定义下试下
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6777 个
工控威望: 38380 点
下载积分: 4363 分
在线时间: 9540(小时)
注册时间: 2006-09-13
最后登录: 2024-12-26
查看cvlsam的 主题 / 回贴
2楼  发表于: 2008-08-10 10:03
是这个样子的哦。

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

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

以上~~~
foxplc
水到渠成
级别: 家园常客
精华主题: 2 篇
发帖数量: 550 个
工控威望: 628 点
下载积分: 4239 分
在线时间: 112(小时)
注册时间: 2007-08-09
最后登录: 2021-11-22
查看foxplc的 主题 / 回贴
3楼  发表于: 2008-08-11 21:34
DB10.DBD80开始就是定义的REAL型啊!
pklon2000
级别: 略有小成
精华主题: 0
发帖数量: 180 个
工控威望: 326 点
下载积分: 6381 分
在线时间: 182(小时)
注册时间: 2008-07-11
最后登录: 2024-12-17
查看pklon2000的 主题 / 回贴
4楼  发表于: 2008-08-13 15:24
好久没有用西门子了。我把软件装上研究一下再来谈谈。不知道的我不能说。
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 159043 分
在线时间: 3173(小时)
注册时间: 2007-11-21
最后登录: 2024-12-25
查看sjm213的 主题 / 回贴
5楼  发表于: 2008-08-13 17:52
DB10.DBD80在ARRAY[0..76]里面
foxplc
水到渠成
级别: 家园常客
精华主题: 2 篇
发帖数量: 550 个
工控威望: 628 点
下载积分: 4239 分
在线时间: 112(小时)
注册时间: 2007-08-09
最后登录: 2021-11-22
查看foxplc的 主题 / 回贴
6楼  发表于: 2008-08-17 15:47
引用
引用第5楼sjm213于2008-08-13 17:52发表的  :
DB10.DBD80在ARRAY[0..76]里面

DB10.DBD80在ARRAY[80..100]里面
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6777 个
工控威望: 38380 点
下载积分: 4363 分
在线时间: 9540(小时)
注册时间: 2006-09-13
最后登录: 2024-12-26
查看cvlsam的 主题 / 回贴
7楼  发表于: 2008-08-17 16:50
引用
引用第6楼foxplc于2008-08-17 15:47发表的  :

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


看来您还真玩不转中高端的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中去呢?

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

以上~~~
ly-cjf
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看ly-cjf的 主题 / 回贴
8楼  发表于: 2008-08-21 09:57
可能是数据格式的问题