发表于:2006-08-30 10:55:00
楼主
大家都知道,在wincc画片中定义一个输入区将时间传送给 cpu时,如果不经过处理,会导致plc直接停机,但要是经过处理后,往往只能显示9.9秒以下,这是为什么呢?因为在程序,西门子给定的时基是0.01s,显示时间=(bcd码×时基)=999×时基;如果时基是0.01s,它最大只能显示9.99秒,超过10s,就只能显示为0;那么如果能显示10s以上的呢,我这里有个好的修改时基的方法,比如在wincc中定义md200为时间输入变量,先把md200和10相乘得md210,再传递为实型md220,再与0.1相乘得md230,再进行round转换得md240,再传送为bcd码md250,再与w#16#1000进得字或得qw80,再将qw80作为定时器的时间变量,一切就好了,这样能显示0-100s,要是业示0-1000s,把最后的md250与w#16#2000相字或 ,要是显示10000s以下,只要与w#16#3000相字或就可以了;为什么要与16进制中的1000进得字或呢,因为在时基位是00 1010 0110 0011,时基位正好在第12位和第13位进行改变,00表示0.01s显示,要是改成01,就是在原来时间上加上二进制数1000000000000化成十六进制正好是1000,同理得出最高时基11为显示10s ,也就是加上1100000000000,化成十六进制正好是3000,所以时基就是这样来修改成功的!