发表于:2005-04-07 11:49:00
4楼
Omron触摸屏数字输入方式,在屏上显示方式上分为10进制与16进制,10进制方式在数据传输上是按照bcd码进行传输,举个例子:如你设置触摸屏为10进制输入方式,输入200,触摸屏将此数直接转换为16进制的0x0200,在plc或控制器侧得到的数就是16进制的0200,等于10进制的512,如果你设置为16进制输入方式,输入ff,则在plc或控制器侧得到的数就是0xff等于10进制的255。
Trio控制器内对数据的处理就是二进制数据,你选择10进制输入方式输入11,触摸屏按照bcd码方式传送,Trio控制器得到的数据就是0x11及就是17,你按照16进制输入11,则trio控制器得到的就是0x11=17,并不是控制器的问题。解决这样的问题有两个方法,第一是设置触摸屏按照16进制进行输入,但这样不太符合一般操作人员的习惯。第二是设置触摸屏按照10进制进行输入,在trio控制器编制一个小的数值转换子程序。下面是我在实际项目编的数值转换子程序,可能对你有用(尽供参考):
bcdtobin:
'USE VR(1) AS DATA SOURSE
VR(0)=VR(1)
n0=VR(0) AND $000f
GOSUB shiftdata
n1=VR(0) AND $000f
GOSUB shiftdata
n2=VR(0) AND $000f
GOSUB shiftdata
n3=VR(0) AND $000f
VR(1)=n0+n1*10+n2*100+n3*1000
RETURN
shiftdata:
'use vr(0) as data sourse
FOR bit=0 TO 12
IF(READ_BIT(bit+4,0)=1) THEN
SET_BIT(bit,0)
ELSE
CLEAR_BIT(bit,0)
ENDIF
NEXT bit
RETURN