主程序里的地址识别
刘玉蓉
发布于2014-10-21 17:18
32
0
标签:
用的是模拟量输入模块331-7KF02-0AB0,压力传感器量程0-10MPa,输出4-20mA信号,对应的PLC为0-27648,我在功能FC中已经编好了模拟量的输入程序,端口数据存储在MD16。主程序里OB调用FC后,紧接着在其后加了个比较指令,IN1为MD6,IN2为5.0MPa,当IN1大于IN2时就会输出报警Q7.0···
可现在问题是无论我怎么样改变输入电流,我就是没有报警输出?怎么回事?难道是FC的MD16和主程序里的MD16不识别?请教?
下图图1主程序截图,图2是FC
问题补充:
有人建议我,在比较报警输出指令后加一个延时指令?这是为啥?
图片说明: 1,1.1 2,1.2
佳答案
根据你的FC1程序块及其调用情况看,符合你的要求:压力变送器的量程为0~10MPa,输出信号为4~20mA,
模拟量输入模块的量程为4~20mA,转换后的数字量为0~27 648,假设转换后得到的数字为N,以kPa 为单位的压力值为0~10MPa(0~10 000kPa),对应于转换后的数字0~27 648(数字化的模拟值PIW258),通过两次转换把单整数(字)转换为浮点数的实数,再经过实数乘法和实数除法,实际上是转换公式为P = 10 × N / 27 648 (MPa),转换为浮点格式的实数值,通过赋值指令保存到位存储双字MD16中,而且你在运算时采用了要先乘后除,保证了原始数据的精度,程序是没有任何问题的。
你在主循环OB1中调用FC1也是可以的,但由于PLC的一个扫描周期一般为40-100ms,而输入刷新的时间一般为4ms左右;而且PLC工作的主要特点是输入信号的集中处理、执行过程集中批处理和输出控制集中批处理,即采用“串行”工作方式,这种工作方式对于快速响应的控制系统引起时间上的滞后,建议在比较报警输出指令后加一个延时指令是必要的。
同时,在SIMATIC管理器中打开你的项目的硬件组态界面,检查模拟量输入模块331-7KF02-0AB0的设置是否正确,模块的缺省设置为“电压”测量,量程为“± 10V”。必须根据你所连接的压力传感器量程是两线制电流测量还是四线制电流测量(4-20mA),更改量程卡的位置(两线制电流测量选择D,四线制电流测量为C),使之适合测量类型和范围模块的印记也提供了必要的设置。 一般标记前门上量程卡的位置