长期以来,Tp-Designer 及适用的TP100、TP200、TP300系列HMI,都坚持用户工程价值第一的原则,保持用户数据的自然升级,当增加新功能时,不需要重新制作工程,保持了版本兼容性,所以您所看到的编辑软件、应用操作方法几乎是一样的。 包括便利的操作、统一的设备管理、变量管理、画面管理、多语言管理等功能。足见软件架构的合理。
高品质图库,并且导入图片可以直接选择切割区域。
高品质图库:
直接选择裁切区域: 类似PhotoShop专业图象处理工具的功能,如下图片中的虚线框就是在直观地拖拉选择裁切区域。
简单快捷的组合图形功能:
快速、可靠、广泛:
从<1秒的极速启动开始,到零点几秒的画面切换;
内置SRAM 数据保持功能,存取速度快。其他多个方面也优于一般Flash保存,例如:无需考虑寿命次数、无需考虑缓存措施导致断电时可能的数据遗失;
经典的1:16,COM1/COM2标准配置,极尽优化的通讯处理;
EtherNet、CAN接口配置可选;
面向对象的动画功能,动画效果可以组合
诸如移动(传输带),同时加入大小变化、旋转变化,形成立体的动画效果。比单调的轨迹动画、图片切换动画更自由和逼真。
便利
存取U盘、网络传送功能,数据可以交换给电脑进行后续处理。
2011新特色 EtherNet 及 POST提交数据:
EtherNet 满足基本的PLC通讯、多屏“互动”外,现场的屏还可以直接通过http协议的POST方式远程传送数据到服务器端。
关于Ethernet 的详细应用,可以点击下面图片转到专门页面。
2011新特色 特色的文字功能:
LED字体、及100个自定义任意字形显示
打印、汉字输入
2012新特色新:
用户自定义下拉菜单功能,触摸菜单条出现滑动菜单。 当手指触摸在“文件”“编辑”等菜单条时,分别出现对应的下拉菜单,而子菜单的内容可以自由定义,甚至你可以加上丰富的图标。
2012新特色:
统计学、药品行业等行业专用功能库:CPK-给客户展示您的工序能力指数的依据;F值-在基准温度中对细菌的杀菌能力等。
更可以结合经典的脚本功能,包括能支持浮点数运算功能。
更新截止 2012-12-01
矢量数字显示功能,可以在大到 72磅 的情况下显示的数字依然光滑、不出现锯齿现象。
在电梯楼层显示、数控系统坐标显示、车载参数显示等场合非常醒目。
更具有逼真的适量大型LED字体显示。
字体支持正常、斜体风格。
使用方法:
只需要在数字显示器界面选择矢量字体及风格即可,完全兼容于之前的数字显示器操作方法。适用于TP100、TP200系列产品。
直接使用U盘,方便人机界面与计算机数据交换,无需CF/SD卡等的读卡器。
直接使用U盘,方便人机界面与计算机数据交换,无需CF/SD卡等的读卡器。
目前支持的功能包括,
数据记录数据在U盘之间的传送。
使用方法:
在画面脚本中,使用 Datalogging2UDisk(0); 或者 Datalogging2EasyUDisk(0); 指令语句,可以实现数据记录数据在U盘之间的传送。
其中,
Datalogging2UDisk 适用于自带USB 主接口的人机界面机型,例如TP106PT、TP110VT、TP204T、TP207T、TP210T等。
Datalogging2EasyUDisk适用于不带USB 主接口的人机界面机型,但此时需要一个额外的串口转USB的外置工具。
更过功能开发中,请于本公司联系。
参考:2010-5-10以后的用户手册的详细介绍。
利用先进脚本控制功能特性,甚至你可以编写出完整的PLC控制程序,这样你不需要再PLC里编写任何控制程序。
惊讶么?
PLC仅仅起IO输入/输出作用。
为什么要这么做呢? 相信你很容易读懂程序。并且你可以在应用案例区下载到完成的例子程序、或者直接复制下面的脚本,放到TP触摸屏里去运行(唯一要做的就是随意地做一个变量定义,只要每个变量使用不重叠的地址即可)。 本文要实现的功能是: 通过压缩机、加热器,控制系统温度按一定的曲线循环加热、制冷,达到指定的循环次数后停止。 |
本文给出了一个完整的示例。
/////////////////////////////////////////////////////////////////////
if([BB:实验状态值]==1)
{
if ([WS:cStProgress]<3)
{
[WS:cStProgress]=[WS:cStProgress]+1;
}
else
{ [WS:cStProgress]=0; }
}
else
{
[WS:cStProgress]=0;
}
/* 实时曲线显示范围-35到+35度 */
/* y=(100/7)*x+500 y=0-1000 x=-35 到 35 */
[WS:试验温度显示值]=100/7*[WS:试样温度AI1]+500;
[WS:冷冻液温度显示值]=100/7*[WS:冷冻液温度AI2]+500;
/////////////////////////////////////////////////////////////////////
/* 系统启动开关 */
if([BB:系统启动]==0&&[BB:实验状态值]==1)
{
[BB:压缩机状态]=0;
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[BB:实验状态值]=0;
}
if ( [BB:cDefaultDataInt] == 1 )
{
/*速冻状态值:代表制冷状态。速融状态值:代表加热状态*/
/*程序启动开始试验*/
if([BB:实验状态值]== 1 )
{
/*----------------------------------总时间记时----------------------------------*/
[WS:试验总时间]=[WS:试验总时间]+1;
if ([WS:试验总时间]==60)
{ [WS:试验总时间分]=[WS:试验总时间分]+1;
[WS:试验总时间]=0;
}
if ([WS:试验总时间分]==60)
{ [WS:试验总时间时]=[WS:试验总时间时]+1;
[WS:试验总时间分]=0;
}
/*------------------------总时间记时结束----------------------------------*/
/*----------------------------------制冷程序段开始----------------------------------*/
if ([BB:速冻状态值] ==1 && [WS:试样温度AI1] > [WS:试验温度下限])
{
if( [BB:冻融液制冷停机中间值]==0)
{ [BB:压缩机状态]=1;}
[BB:水泵状态]=1;
[BB:加热管状态]=0;
/*------------------------冻融液温度判断开始5-24----------------------------------*/
if ([WS:冷冻液温度AI2]<[WS:冻融液温度下限] && [BB:冻融液制冷停机中间值]==0)
{
[BB:冻融液制冷停机中间值]=1;
}
if ([BB:冻融液制冷停机中间值]==1)
{
[BB:压缩机状态]=0;
[WS:压机报警启动中间值1]=0;
[WS:压机报警启动中间值]=0;
[WS:制冷等待时间秒]=[WS:制冷等待时间秒]+1; /*60秒循环*/
if ([WS:制冷等待时间秒]==60)
{ [WS:制冷等待时间秒] =0;
[WS:制冷等待时间分]=[WS:制冷等待时间分]+1; /*分种循环*/
}
if ( [WS:制冷等待时间分]>=[WS:制冷等待时间])
{ [BB:冻融液制冷停机中间值]= 0;
[BB:冻融液加热停机中间值]=0;
[WS:制冷等待时间分]=0;
[WS:制冷等待时间秒]=0;
/* // [WS:压机报警启动中间值1]=0; */
/* // [WS:加热报警启动中间值1]=0; */
/* // [WS:压机报警启动中间值]=0; */
[WS:压机报警启动中间值1]=0; /*0603*/
[WS:压机报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
}
}
/*------------------------冻融液温度判断结束5-24----------------------------------*/
/*-----------时间记时段------------------------*/
[WS:制冷总时间]= [WS:制冷总时间]+1; /*秒*/
if([WS:制冷总时间]==60)
{
[WS:制冷总时间分]=[WS:制冷总时间分]+1; /*分*/
[WS:制冷总时间]=0;
}
if ([WS:制冷总时间分]==60)
{ [WS:制冷总时间时]=[WS:制冷总时间时]+1; /*时*/
[WS:制冷总时间分]=0;
}
}
if ([BB:速冻状态值] ==1 && [WS:试样温度AI1] <= [WS:试验温度下限])
{
[BB:压缩机状态]=0;
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[BB:速冻状态值]=0;
[BB:速融状态值]=1;
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值1]=0;
/*-----------5-24号-----------*/
[WS:加热等待时间秒]=0;
[WS:制冷等待时间秒]=0;
[WS:加热等待时间分]=0;
[WS:制冷等待时间分]=0;
[BB:冻融液制冷停机中间值]=0;
[BB:冻融液加热停机中间值]=0;
}
/*------------------------制冷程序段结束----------------------------------*/
/*------------------------加热程序段开始----------------------------------*/
if ([BB:速融状态值]==1 &&[WS:试样温度AI1]<[WS:试验温度上限])
{
if([BB:冻融液加热停机中间值]==0)
{ [BB:加热管状态]=1; }
[BB:压缩机状态]=0;
[BB:水泵状态]=1;
/*------------------------冻融液加热温度判断开始5-24----------------------------------*/
if ([WS:冷冻液温度AI2]>[WS:冻融液温度上限] && [BB:冻融液加热停机中间值]==0)
{
[BB:冻融液加热停机中间值]=1;
}
if ([BB:冻融液加热停机中间值]==1)
{ [BB:加热管状态]=0;
[WS:加热等待时间秒]=[WS:加热等待时间秒]+1; /*60秒循环*/
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
if ([WS:加热等待时间秒]==60)
{ [WS:加热等待时间秒] =0;
[WS:加热等待时间分]=[WS:加热等待时间分]+1; /*分种循环*/
}
if ( [WS:加热等待时间分]>=[WS:加热等待时间])
{ [BB:冻融液加热停机中间值]= 0;
[BB:冻融液制冷停机中间值]= 0;
[WS:加热等待时间分]=0;
[WS:加热等待时间秒]=0;
[WS:压机报警启动中间值1]=0; /*0603*/
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值]=0;
}
}
/*------------------------冻融液加热温度判断结束5-24----------------------------------*/
[WS:加热总时间]=[WS:加热总时间]+1; /*秒*/
if ([WS:加热总时间]==60)
{
[WS:加热总时间分]=[WS:加热总时间分]+1; /*分*/
[WS:加热总时间]=0;
}
if ([WS:加热总时间分]==60)
{ [WS:加热总时间时]=[WS:加热总时间时]+1; /*时*/
[WS:加热总时间分]=0;
}
}
if ([BB:速融状态值]==1 &&[WS:试样温度AI1]>=[WS:试验温度上限])
{
[BB:压缩机状态]=0;
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[BB:速冻状态值]=1;
[BB:速融状态值]=0;
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值1]=0;
/*-------------5-24-------------*/
[WS:加热等待时间秒]=0;
[WS:制冷等待时间秒]=0;
[WS:加热等待时间分]=0;
[WS:制冷等待时间分]=0;
[BB:冻融液制冷停机中间值]=0;
[BB:冻融液加热停机中间值]=0;
[WS:完成试验循环次数]=[WS:完成试验循环次数]+1;
}
/*------------------------加热程序段结束/*----------------------------------*/
}
else
{ /*当系统处于紧急停车状态时,即[BB:实验状态值]=0的时候,所有程序停止*/
[BB:压缩机状态]=0; /* 关闭压缩机,水泵,加热管 */
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[BB:速冻状态值]=0;
[BB:速融状态值]=0;
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值1]=0;
/*-----------5-24号-----------*/
[WS:加热等待时间秒]=0;
[WS:制冷等待时间秒]=0;
[WS:加热等待时间分]=0;
[WS:制冷等待时间分]=0;
[BB:冻融液制冷停机中间值]=0;
[BB:冻融液加热停机中间值]=0;
}
/*----------------------------------主控程序结束----------------------------------*/
/*----------------------------------压机停机时间----------------------------------*/
if ([BB:压缩机状态]==0)
{
[WS:压机停止时间]=[WS:压机停止时间]+1; /*秒*/
if ([WS:压机停止时间]==60)
{ [WS:压机停止总时间分]=[WS:压机停止总时间分]+1;/*分*/
[WS:压机停止时间]=0;
}
if ( [WS:压机停止总时间分]==60)
{ [WS:压机停止总时间时]=[WS:压机停止总时间时]+1; /*分*/
[WS:压机停止总时间分]=0;
}
}
/*----------------------------------实验循环到达后------------------------*/
if ([WS:完成试验循环次数]==[WS:循环次数])
{
[BB:实验状态值]=0;
[BB:压缩机状态]=0; /* 关闭压缩机,水泵,加热管 */
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[BB:速冻状态值]=0;
[BB:速融状态值]=0;
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值1]=0;
[WS:完成试验循环次数]=0;
[WS:年中间值END]=[WS:cBCDYear];
[WS:月中间值END]=[WS:cBCDMonthDay] >> 8;
[WS:日月中间值END]=[WS:cBCDMonthDay] & 0XFF;
[WS:时日月中间值END]=[WS:cBCDTime] >> 8;
[WS:分日月中间值END]=[WS:cBCDTime] & 0XFF;
[WS:秒日月中间值END]=0;
[BB:cWinMessage]=1; /*ShowPicture("试验完毕");*/
}
/*-----------水泵报警------------------------*/
/*----制冷状态下水泵报警----//BY CXD 为什么不用“水泵报警启动中间值”?--------*/
if ([BB:水泵报警]==0&&[BB:实验状态值]==1&&[WS:压机报警启动中间值]==1)
{
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[BB:压缩机状态]=0;
[BB:速冻状态值]=0;
[BB:速融状态值]=0;
[BB:实验状态值]=0;
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值1]=0;
[BB:cWinPumpAlarm]=1; /*ShowPicture("水泵报警");*/
}
/*---加热状态下水泵报警----//BY CXD 为什么不用“水泵报警启动中间值”?--------*/
if ([BB:水泵报警]==0&&[BB:实验状态值]==1&&[WS:加热报警启动中间值]==1)
{
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[BB:压缩机状态]=0;
[BB:速冻状态值]=0;
[BB:速融状态值]=0;
[BB:实验状态值]=0;
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值1]=0;
[BB:cWinPumpAlarm]=1; /*ShowPicture("水泵报警");*/
}
/*----压机报警------------------------*/
if ([BB:压机报警]==0&&[BB:实验状态值]==1&&[WS:压机报警启动中间值]==1)
{
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[BB:压缩机状态]=0;
[BB:速冻状态值]=0;
[BB:速融状态值]=0;
[BB:实验状态值]=0;
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值1]=0;
[BB:cWinCompressAlarm]=1; /*ShowPicture("压机报警");*/
}
/*-----------加热报警开始----------------------------------*/
/*------------------------报警条件判断值 制冷状态-----------*/
if([BB:实验状态值]==1 && [BB:压缩机状态]==1 &&[BB:水泵状态]==1)
{
[WS:压机报警启动中间值1]=[WS:压机报警启动中间值1]+1;
}
if([WS:压机报警启动中间值1]>=10)
{ [WS:压机报警启动中间值1]=10; }
if ([BB:实验状态值]==1 &&[WS:压机报警启动中间值1]==[WS:cAlarmDelay])
{ [WS:压机报警启动中间值]=1; }
/*----------------------------------加热状态------------------------*/
if([BB:实验状态值]==1 &&[BB:加热管状态]==1&&[BB:水泵状态]==1)
{
[WS:加热报警启动中间值1]=[WS:加热报警启动中间值1]+1;
}
if([WS:加热报警启动中间值1]==10)
{ [WS:加热报警启动中间值1]=10; }
if([BB:实验状态值]==1 &&[WS:加热报警启动中间值1]==[WS:cAlarmDelay])
{ [WS:加热报警启动中间值]=1; }
}
/* 6553.5秒,临时与LS00031速度对比用 */
if( [WS:cStProgress]>6553 )
{ [WS:cStProgress] = 0;
}
else
{ [WS:cStProgress] = [WS:cStProgress] +1;
}
/*BY CXD ------- “实验主画面”语言, 紧急停车 */
[BB:实验状态值]=0;
[BB:速融状态值]=0;
[BB:速冻状态值]=0;
[BB:压缩机状态]=0;
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值1]=0;
[WS:年中间值END]=[WS:cBCDYear];
[WS:月中间值END]=[WS:cBCDMonthDay] >> 8;
[WS:日月中间值END]=[WS:cBCDMonthDay] & 0XFF;
[WS:时日月中间值END]=[WS:cBCDTime] >> 8;
[WS:分日月中间值END]=[WS:cBCDTime] & 0XFF;
[WS:秒日月中间值END]=0;
/*Call PopSetParm;*/
/* //BY CXD ------ “实验主画面”画面语言, 设置参数 */
[WS:压机报警启动中间值]=0;
[WS:水泵报警启动中间值]=0;
[WS:加热报警启动中间值]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值1]=0;
[WS:加热报警启动中间值1]=0;
/*---//BY CXD--------- 另外 试验设置 画面出现时, 还有如下初始化 ------------*/
/* 参数设置窗口显示时 [BB:LB00LS01000.0]==1 T->F 时 */
[WS:试验编号中间值]=[WS:试验编号];
[WS:总循环次数中间值]=[WS:循环次数];
[WS:试验上限中间值]=[WS:试验温度上限];
[WS:试验下限中间值]=[WS:试验温度下限];
[WS:已循环次数中间值]=[WS:完成试验循环次数];
[WS:试验日期中间值]=[WS:试验日期];
[DS:操作人员中间值]=[DS:试验人];
if([BB:实验状态值]==0 )
{
[WS:年中间值]=[WS:cBCDYear];
[WS:月中间值]=[WS:cBCDMonthDay] >> 8;
[WS:日中间值]=[WS:cBCDMonthDay] & 0XFF;
[WS:时中间值]=[WS:cBCDTime]>> 8;
[WS:分中间值]=[WS:cBCDTime] & 0XFF;
[WB:秒中间值]=0;
}
/*Call CloseSetParmFinish;*/
/* //BY CXD ------- “试验设置”画面语言, 设置完成时 */
ClearBit([BB:cWinSetParm]); /* 关闭窗口 */
[WS:试验编号]=[WS:试验编号中间值];
[WS:循环次数]=[WS:总循环次数中间值];
[WS:试验温度上限]=[WS:试验上限中间值];
[WS:试验温度下限]=[WS:试验下限中间值];
[WS:完成试验循环次数]=[WS:已循环次数中间值];
[WS:试验日期]=[WS:试验日期中间值];
[WS:年]=[WS:年中间值];
[WS:月]=[WS:月中间值];
[WS:日]=[WS:日中间值];
[WS:时]=[WS:时中间值];
[WS:分]=[WS:分中间值];
[WS:秒]=[WS:秒中间值];
[DS:试验人]=[DS:操作人员中间值];
/* ///////////////////////程序在运行中的时候///////////////// */
if( [BB:实验状态值]==1)
{
if( [WS:试样温度AI1]>[WS:试验温度上限])
{
[BB:速冻状态值]=1;
[BB:速融状态值]=0;
}
if( [WS:试样温度AI1]<[WS:试验温度上限]&&[WS:试样温度AI1]>[WS:试验温度下限])
{
[BB:速冻状态值]=1;
[BB:速融状态值]=0;
}
if( [WS:试样温度AI1]<[WS:试验温度下限])
{
[BB:速冻状态值]=0;
[BB:速融状态值]=1;
}
}
[WS:水泵报警启动中间值]=0;
[WS:水泵报警启动中间值1]=0;
[WS:压机报警启动中间值]=0;
[WS:压机报警启动中间值1]=0;
[WS:压机报警启动中间值]=0;
[WS:压机报警启动中间值1]=0;
}
[WS:水泵报警启动中间值]=0;
[WS:水泵报警启动中间值1]=0;
[WS:压机报警启动中间值]=0;
[WS:压机报警启动中间值1]=0;
[WS:压机报警启动中间值]=0;
[WS:压机报警启动中间值1]=0;
}
/* //BY CXD ------- “试验设置”画面语言, "开始新试验"按钮 时 */
ClearBit([BB:cWinSetParm]); /* 关闭窗口 */
ClearBit([BB:cSetParmStart]); /* 复位开关 */
[WS:试验编号]=[WS:试验编号中间值];
[WS:循环次数]=[WS:总循环次数中间值];
[WS:试验温度上限]=[WS:试验上限中间值];
[WS:试验温度下限]=[WS:试验下限中间值];
[WS:试验人]=[WS:操作人员中间值];
[WS:完成试验循环次数]=[WS:已循环次数中间值];
[WS:年]=[WS:年中间值];
[WS:月]=[WS:月中间值];
[WS:日]=[WS:日中间值];
[WS:时]=[WS:时中间值];
[WS:分]=[WS:分中间值];
[WS:秒]=[WS:秒中间值];
[BB:实验状态值]=0;
[BB:压缩机状态]=0;
[BB:水泵状态]=0;
[BB:加热管状态]=0;
[WS:加热报警启动中间值]=0;
[WS:加热报警启动中间值1]=0;
[WS:压机报警启动中间值]=0;
[WS:压机报警启动中间值1]=0;
[WS:水泵报警启动中间值]=0;
[WS:水泵报警启动中间值1]=0;
[WS:cChgScreen]=15;
只要PLC设备有站号可选,TP都会支持1:16多PLC连接、并且COM1 /COM2都支持。
只要PLC设备有站号可选,TP都会支持1:16多PLC连接、并且COM1 /COM2都支持。 注:如果使用COM2连接,COM2 为RS232接口,因此需要使用COM2上的 RS-232/485 市售转换器。
|
|
TP系列规范上,无论屏的大小,都支持预定义的1:16多PLC连接。
所谓预定义,即给16个PLC设备都实行编号,例如PLC1#、PLC2#....PLC16# 分别代表连接在COM1 上的16台PLC设备。在系统参数设置中,可以一次性指定/变更各PLC实际对应的通讯协议站号,这就避免了下面这些尴尬的境况,例如:
在画面设计应用PLC地址时,只需要按下图示意,下拉列表选择PLC#即可。
| |
TRE TP全系列采用昂贵的、免校正数字矩阵式触摸技术,解决永远的后顾之忧。
为什么一般的触摸屏幕会有漂移? 包括基于Windows平台或者Win CE 平台的任何触摸屏系统,只要是其指点像素达到了以1像素为单位,那它一定是采用模拟技术的触摸屏。
|
|
模拟信号触摸屏,是通过AD变换电路来检测按压点对印刷的理论线性电阻的分压值、从而换算成位置信号。
既然如此,受到检测基准电压的稳定性、长期运行温度对印刷电阻的影响、印刷电阻的线性度、AD转换电路的精度和线性度、一起其他电路的稳定性等各方面综合影响。
| |
| |
数字矩阵式触摸技术,则采用完全的矩阵式开关阵列来提供位置检测。在一个20*20像素的区域设置一个印刷的物理开关,当触摸在该区域内时,改开关统一动作。 相对而言,似乎这样的触摸屏不能完成指点到1像素。 没错。但工业现场以可靠为要求的触摸屏,其实并不需要1像素那么小的按钮。一个小手指头那么大的开关,已经远远大于20*20像素的区域了。 一方面,它避免了1像素动作的误差,导致的不可靠性。 另一方面,它的区域是固定的,不受检测电压波动、长期运行温度/湿度等环境因素的影响,可以终身免校正。
那么为什么除了世界顶尖品牌的PROFACE、以及TRE外,一般触摸屏厂家都不采用这种技术呢? 答案当然是:技术、成本。 一般模拟触摸板,都采用4线、5线等引线(接口)电路、以及单片触摸控制检测芯片,并且无论屏幕大小,除了印刷电路增加以外,并无成本的增加。 而如果640*480分辨率的触摸屏,需要按20*20划分矩阵的话,则需要分成32*24个矩阵,那么至少需要32 + 24 个引线(接口)电路,再加上与CPU核心电路的电平转换、信号保持等,接口实现技术相对复杂,成本增加。甚至可以采用FPGA等专用ASIC来实现。 所以一般触摸屏厂家都不愿意这样做。
而TRE秉承质量第一的愿望,紧紧跟随世界顶尖品牌的PROFACE,持久地采用昂贵的、免校正数字矩阵式触摸技术,解决永远的后顾之忧。
|
模拟技术的触摸屏需要校正屏幕 |
极具创新价值,适合中国国情的创新中文输入法
中国人当然需要中文输入法。
在画面设计中,放置一个文本,鼠标右键选择动画连接,然后依次选中“文本显示动画”->“字符串显示”,在“字符串显示”的对话框中,勾选允许修改,OK,下载试试看!在触摸屏上操作,就能输入中文了。
下图为示例的屏幕键盘。
设计中文输入界面:
触摸时自动弹出中文拼音输入键盘:
本页显示7项,共有7项,第1页,共1页 | |