发布于 2011-04-02 01:53:37
13楼
我给你的程序做了个实验,是的,你编写的程序没有错误,正如2楼说的“既然是用绝对地址,那就没有必要再打开DB了”。那么引起PLC停机的原因是什么呢?如11楼所说“是你DB1定义的地址长度不对,至少要定义到DB1.DBW2”。
如果在程序中编写了DB块的应用内容,你没有下载DB1到CPU,CPU肯定会停机。但是你下载了DB1,这样问题就出在你没有对DB1.DBW0和DB1.DBW2进行定义的上面了。因此“诊断缓冲区”就会提示“读取时发生区域长度错误”。
那么如何定义数据区长度呢?打开你的数据块DB1,你会看到DB1的界面,图表中第二行显示,地址:+0.0;名称: “DB_VAR”;(数据)类型:“INT”;初始值:“0”;注释:临时占位符变量。图表的第三行地址=2.0等都是灰色。这是建立DB1时的参数缺省值,也就是对DB1.DBW0进行了定义,而DB1.DBW2没有定义。
定义DB1.DBW2的方法是:右键点击地址+0.0,从下拉菜单选择“选择之后的声明行”并点击之,会产生一行空白栏。在空白栏的名称栏内,填上你需要的符号,如“DB_VAR1”(注意不能填写中文);右键点击“类型”框,从下拉菜单选择你需要的数据类型。在这里你选择“基本类型”中的“WORD”;“初始值”填“W#16#0”;注释栏可以不填内容。然后把+0.0行的“类型”和“初始值”同样修改一致。将DB1保存并下载到PLC中,然后启动CPU就能运行了。