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) 如果自己处理该用什么指令?


cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

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

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

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

以上~~~
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6777 个
工控威望: 38380 点
下载积分: 4323 分
在线时间: 9540(小时)
注册时间: 2006-09-13
最后登录: 2024-12-25
查看cvlsam的 主题 / 回贴
2楼  发表于: 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中去呢?

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

以上~~~