关于weinview触摸屏的宏指令 点击:480 | 回复:0



jiesiliu10

    
发表于:2012-06-26 16:38:21
楼主

macro_command main()
unsigned int c
//float c
float b ,d ,e ,f
float s=0.13289 
bool a    
//GetData(a, "Device 1", M, 100, 1)
GetData(c, "Device 1", D, 218, 1)

e=c
f=e/100
//if a==0 then
//b=2
//SetData(b, "Device 1", D, 100, 1)
//end if

//if a==1  then
if f < 3 then
b= 101-f*10
//SetData(b, "Device 1", D, 101, 1)
else if f< 5  then
b=70-(f-3)*8

//SetData(b, "Device 1", D, 100, 1)

else if 7 > f  then
b=54-(f-5)*6.5
else if 10 > f  then
b=41-(f-7)*5
else if 12 >= f then
b=25-(f-10)*35
end if
b=101-b
d=b/s
SetData(f, "Device 1", D, 220, 1)
//SetData(b, "Device 1", D, 100, 1)
SetData(b, "Device 1", D, 222, 1)
//SetData(c, "Device 1", D, 100, 1)
SetData(d, "Device 1", D, 104, 1)
//end if

//GetData(a, "Device 1", M, 100, 1)
end macro_command

 

 

 

这是我写的一段宏指令...是和PLC通讯,把D218的数据读上来,显示在D220上,然后,通过一定的运算送到D222上显示,程序大概就是这个意思.读上来得数字是unsigned int的类型, D220与D222是32-bit float 类型..我因为是第一次用,不知道为什么,当触摸屏上是32-bit float 这个类型的时候.在PLC上读不到正确的数字.但,当D220的数据类型为32-bit float时,从PLC上来得数据D218,无法在D220上显示.当把D220的数据类型从32-bit float改成 16-bit unsigned 后,PLC上D218读上来得数字能在D220显示,,这后面问题又来了,就是,换成16-bit unsigned之后,无法把运算值送到D222,我知道是数据类型的问题...所以,问题一,是,为什么,32-bit float,不能在PLC上直接显示,是因为是小数?浮点型?的问题?PLC寄存器问题?..接下来,下面一个问题,就如程序上的,我把读到PLC的值D218.赋给了int 型的C,然后紧接着是,把C赋给 float型的e 接着进行数值的缩放赋给f...这过程好似很影响效率了.我想问的第二个问题就是,有没有其他什么方法更好的进行数据的转换..好了,先谢谢大家

 

 

还有,能不能发一些关于宏指令的例子,案例我参考下,谢谢,我QQ1162879549。.也希望能与大家一起交流



楼主最近还看过

SSI ļʱ