发表于:2013/2/28 9:23:04
#0楼
APCS:模拟量模块通过压力传感器(4-20ma)检测压力,待机时,所有电机均未启动,监控可以看到AIW6数值为6461,很稳定,但系统还是经常提示超压,于是我加了一条程序,用AIW6的值跟6400作比较,当AIW6的值小于6400时,将WIW6的即时值传送到某个存储器VW200,发现VW200的值有时5960,有时6210,总之就是远远小于6400,在计算中AIW6—6400有时候就会得到负数,最终计算出来的压力就会大过设定报警压力值,所以才会报警,知道问题所在了,但却百思不得其解,设备待机状态所有动力部份都不启动,应该不会有什么干扰,接线也正常,监控也正常,只有通过程序才能捕捉到它的瞬时值会偶尔小于6400,请大家帮帮忙,给个建议凌飞翼:我感觉是楼主的数据类型有问题。 把数据处理成工程量的实数表示,应该不会有太多跳动了。 零点显示5900~6460都不算什么,可以通过校准修正。
WAPCS:问题解决了,确实是数据类型的问题,在计算试中,我是用(AIWx–6400)的结果放到AC0后直接乘以总量程,再除以(3200—6400),那么当AIWX偶尔小于6400的时候,结果为负数,直接乘以总量程得出的结果就会非常大,所以超压,后来,我把(AIWx–6400)的结果进行整数到双整数的转化后,即使它的结果为负数,乘以总量程得出的结果也不会很大,这在大家眼里也许只是个常识性的东西,但它却困扰了我两天,见笑了,呵呵,下面是修改前后两段程序
版主置评:ITD指令用于16位数据格式向32位数据格式的转变,掩盖了一些技术细节。ITD并不改变变量的值,初学者容易把它给忽略。S7200的符号数(可正可负)是用2进制补码方式表示,最高位是符号位,当数位长度发生变化时,符号位必须予以正确处理,否则会造成数值转换错误。本贴就是一个实例。
WAPCS:问题解决了,确实是数据类型的问题,在计算试中,我是用(AIWx–6400)的结果放到AC0后直接乘以总量程,再除以(3200—6400),那么当AIWX偶尔小于6400的时候,结果为负数,直接乘以总量程得出的结果就会非常大,所以超压,后来,我把(AIWx–6400)的结果进行整数到双整数的转化后,即使它的结果为负数,乘以总量程得出的结果也不会很大,这在大家眼里也许只是个常识性的东西,但它却困扰了我两天,见笑了,呵呵,下面是修改前后两段程序
版主置评:ITD指令用于16位数据格式向32位数据格式的转变,掩盖了一些技术细节。ITD并不改变变量的值,初学者容易把它给忽略。S7200的符号数(可正可负)是用2进制补码方式表示,最高位是符号位,当数位长度发生变化时,符号位必须予以正确处理,否则会造成数值转换错误。本贴就是一个实例。
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/