关于数据类型对指令的影响
前一段时间,遇到一件“匪夷所思”的问题,一套315-2DP系统,有一段简单温度控制程序(非PID控制),自改造后运行几个月后突然似乎失控了。因为是在现场“抢修”,很多可能的问题被我人为“干预”掉了,一些疑问在我回来后,也进行了一些仿真的验证,还未真正意义上找到问题的根源。
今天,在“找答案”栏目中,又看到一则类似的情况,于是,再次“触景生情”想起前段时间那个“类似”的问题。
问题贴链接:http://www.ad.siemens.com.cn/service/answer/solve_247524_1072.html
提问者大致描述一个模拟量转换指令的应用,只是这个模拟量输出“没有”按提问者的要求显示需要的“数据”而已,声明:NORM_X 、SCALE_X就是portal软件环境下的比例缩放指令,该指令没有问题能够正常转换的。
图示:为验证方便,我在填写NORM_X指令的VALUE定义MW0变量地址并定义INT数据类型数据。
打开所有变量表看MD10/MD14及MW0的数据类型,图示:
再次声明,这些自定义的变量地址中的数据类型是系统“自动”生成的,为验证这些,我重新定义MD18/MD22,分别再次填写到各自管脚中,图示:模拟量输入不变。
系统仍然“自动”生成2个Real数据类型的数据。这里所谓的“自动”是与指令的数据类型选项有关的,图示:
正是因为我前一段时间遇到的类似问题,我在变量表中人为修改数据类型,看仿真结果,图示:假设改为Dword
同样方式,把2个变量的数据类型变更为DINT类型,图示:
由此,不按“常理”出牌后的结果就是提问者描述的那样“匪夷所思”了。