2月25日去现场调试时处理的一个问题,贴出来和大家分享:
系统构成:S7-300,4个数字量输入模块,2个输出模块,一个模拟量输入模块,配台达触摸屏。
现象:共有4个模拟量的上,下限值在人机界面上显示,并可以用设值按钮进行实时在线修改,可是上电后发现在人机界面上有数值显示,却无法在线修改,要写的值无法写入。
处理过程:
1.首先检查数据块,发现以此有关联的数据块分别是DB1,里边要装载的是上,下限的设定值。DB2里边要装载的是经过CEIL和FLOOR处理的数据,人机界面读的是DB2的数据,写入的地址是DB1,这两个数据块都是浮点数类型,看样子没什么问题。
2.再一次检查程序,发现有一个编号为CF12的功能,是用来对写入数据进行处理的,仔细一看,发现了问题,怎么8个数据都是以浮点数的形式直接通过MOVE指令装载到DB1中,然后经过CEIL和FLOOR处理后放在DB2中,而人机界面显示的正是这直接装载的8个浮点数,看样子问题就出在这里。
3.问题找到了,怎么处理那,先建立一个数据块DB4,把人机界面的写入地址改为DB4,然后把DB4的数据传给DB1,在处理,满以为这回可以啦,下载程序,新的块,人机界面的画面重新编译下载,一试,没戏,还不行,显示都为零,新的数据还是装载不进去,问题到底出在那啦?
4.再检查新建的块和程序,新建的块的数据类型是浮点数,突然想到,是不是人机界面的事呀?回过头看人机界面,发现这款人机界面在设值按钮选项里只支持整数和双整数输入,看样子还是数据类型的问题。
5.把DB4的数据类型改为双整数,用一条双整数转换为浮点数的指令,DB4为输入,输出为DB1,在经过CEIL和FLOOR处理后装载到DB2中。重新下载,再一试,完全正常,8个数都能够通过设值按钮写入并显示出来。
在模拟量处理时数据类型真是个基本功呀,一定要搞清楚,不光是PLC本身,外围设备也该搞清楚,不然真不干活呀。当然,大侠们一定有更简单的处理方法,请赐教。