信捷TPTH系列触摸屏C函数功能块手册解读.docx
- 文档编号:583994
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:22
- 大小:26.14KB
信捷TPTH系列触摸屏C函数功能块手册解读.docx
《信捷TPTH系列触摸屏C函数功能块手册解读.docx》由会员分享,可在线阅读,更多相关《信捷TPTH系列触摸屏C函数功能块手册解读.docx(22页珍藏版)》请在冰点文库上搜索。
信捷TPTH系列触摸屏C函数功能块手册解读
TP、TH触摸屏C函数功能块
用户手册
信捷科技电子有限公司
资料编号:
HC10201104212C6
前言(1
1函数功能块制作(2
2函数功能块说明(4
2.1书写方式(4
2.2函数类型(4
2.3预定义数据类型(5
2.4预定义宏指令(6
2.5系统函数(6
2.5.1Read/Write(6
2.5.2Reads/Writes(7
2.5.3Enter/Leave(7
2.5.4Send(7
2.5.5Receive(8
2.5.6Malloc(8
2.5.7Free(8
2.5.8Delay(9
2.5.9ScreenJump(9
2.5.10OpenWindow(9
2.5.11CloseWindow(9
2.5.12Beep(9
2.5.13WakeScreen(10
2.5.14Crc(10
2.6触摸屏内部对象(10
2.6.1PSW对象(10
2.6.2PSB对象(10
3.1数据比较(12
3.2通讯(14
附录1C标准库函数的调用限制(18
附录2C函数使用注意事项(19
前言
相较于TP、TH系列触摸屏软件中简单的工程命令、高级功能指令,新添加的C函数功能块,使触摸屏可以完成更多、更复杂的运算和通讯要求,使系统功能得到了更大限度的发挥,更好地满足客户的实际需求。
本书通过介绍C指令以及结合一些简单的示例来说明关于C函数功能的使用方法,因此在介绍中只使用了一些简单易懂的C函数知识,主要目的是让客户找到了解这个功能,知道一些基本的书写规则,了解在使用过程中的一些注意事项。
1函数功能块制作
触摸屏软件要求V2.C.6以上,具体查看触摸屏软件“帮助”中“关于”。
创建函数过程:
1.打开V
2.C.6TouchWin软件。
2.选择“工程”栏“函数功能块”,右击“函数功能块”插入,在弹出的信息对话框中填写函数功
能块的基本信息。
注:
函数名必须为英文名,具体请参考2.1节。
3.双击打开函数功能块“Func1”,编写程序。
注:
可以按键盘上的F7键,对编辑好的C函数进行编译,检查函数编辑是否有错。
2函数功能块说明
2.1书写方式
函数功能块标识符的写法完全按照标准C语言书写,在C语言中用于标识名字的有效字符序列称为标识符,指的就是用户自定义的变量、函数、常量、语句标号名称。
合法的标识符
1由字母,数字和下划线组成;
2第一位只能为字母或下划线;
3不能和C语言的关键字完全相同;
4长度小于等于256字符;
2.2函数类型
根据函数的使用方法,触摸屏中将函数分为公共函数和功能函数。
公共函数
公共函数:
即全局函数,在公共函数中定义的函数可以被任意的功能函数调用,需要写函数原型,可以有参数和返回值。
例:
DWORDCrc(BYTE*pBytes,intLength
{
DWORDdwCrc=0;
…
returndwCrc;
}
公共函数中调用功能函数
voidCallFunction(
{
Func1(;
}
功能函数
功能函数:
无返回值、无参数、无需写函数原型,只要指定函数名,直接写函数体,功能函数可以通过功能键和功能域里的函数调用功能执行。
例:
BYTEbyArray[10];
DWORDdwCrc=0;
dwCrc=Crc(byArray,10;//调用公共函数
2.3预定义数据类型
typedefunsignedlongDWORD;
typedefunsignedcharBOOL;
typedefunsignedcharBYTE;
typedefunsignedshortWORD;
typedefunsignedintUINT;
数据类型预定义:
enum{FALSE=0,TRUE=1};
enumECom
{
HMI_LOCAL_MCH=-1,
DOWNLOAD,
PLC,
EComMax
};
enumEInnerReg
{
TYPE_PSB=0,
TYPE_PSW,
TYPE_PFW,
TYPE_PRW,
TYPE_PHW,
TYPE_PUW,
TYPE_PCW,
EInnerRegMax
};
enumEDataType
{
TYPE_NONE,
TYPE_BIT,
TYPE_BYTE,
TYPE_WORD,
TYPE_DWORD,
TYPE_REGS,
TYPE_BYTE_3
};
2.4预定义宏指令
#defineMax(a,b(((a>(b?
(a:
(b
#defineMin(a,b(((a<(b?
(a:
(b
#defineMAKEWORD(byl,byh((WORD(((BYTE(byl|((WORD((BYTE(byh
<<8
#defineMAKELONG(wl,wh((LONG(((WORD(wl|((DWORD((WORD(wh
<<16
#defineLOWORD(l((WORD(l
#defineHIWORD(l((WORD(((DWORD(l>>16&0xFFFF
#defineLOBYTE(w((BYTE(w
#defineHIBYTE(w((BYTE(((WORD(w>>8&0xFF
2.5系统函数
2.5.1Read/Write
功能读写操作(用于读写位和寄存器
格式读操作:
BOOLRead(intcomID,intstaID,intobjType,intadd1,intadd2,intdataType,void*pValue;
写操作:
BOOLWrite(intcomID,intstaID,intobjType,intadd1,intadd2,intdataType,DWORDdwValue;
注释comID:
串口(HMI_LOCAL_MCH=-1,DOWNLOAD=0,PLC=1
staID:
站号
objType:
寄存器地址类型
add1,add2:
寄存器地址
dataType:
TYPE_BIT=1占用1字节
TYPE_BYTE=2占用1字节
TYPE_WORD=3占用2字节
TYPE_DWORD=4占用4字节
pValue:
数值缓冲区(长度应该与dataType类型匹配
返回值:
TRUE/FALSE(成功/失败
举例BOOLbValue;//定义一个布尔变量
WORDwValue;//定义一个整型变量
Read(PLC,1,XINJE_XC_BIT_M,0,0,TYPE_BIT,&bValue;//读位M0
Read(PLC,1,XINJE_XC_REG_D,0,0,TYPE_WORD,&wValue;//读D[0]
2.5.2Reads/Writes
功能读写寄存器组
格式读操作:
BOOLReads(intcomID,intstaID,intobjType,intadd1,intregs,void*pRegs;
写操作:
BOOLWrites(intcomID,intstaID,intobjType,intadd1,intregs,void*pRegs;
注释comID:
串口(HMI_LOCAL_MCH=-1,DOWNLOAD=0,PLC=1
staID:
站号
objType:
寄存器地址类型
add1:
寄存器地址
regs:
寄存器个数
pRegs:
数值缓冲区(长度应该与需读写的寄存器组大小匹配
返回值:
TRUE/FALSE(成功/失败
举例WORDwValue[10];//定义一个整型变量
Reads(PLC,1,XINJE_XC_REGS_D,0,1,wValue;//读D0组
注意:
具体函数添加操作步骤可以参考Read函数操作。
2.5.3Enter/Leave
功能信号量控制,保证通信为同步方式,与Send和Receive配合使用
格式voidEnter(BYTEComID;
voidLeave(BYTEComID;
注释comID:
串口(HMI_LOCAL_MCH=-1,DOWNLOAD=0,PLC=1
举例Enter(PLC;
Leave(PLC;
2.5.4Send
功能发送串口数据
格式BOOLSend(BYTEComID,BYTE*SndBuf,WORDLen;
注释comID:
串口(DOWNLOAD=0,PLC=1
SndBuf:
发送缓冲区,类型为字节
Len:
要发送的数据长度,按字节计
返回值:
TRUE/FALSE(成功/失败
举例BYTERcvArray[8]={0x01,0x01,0x00,0x10,0x00,0x10,0x3C,0x03}
Send(PLC,RcvArray,8
2.5.5Receive
功能接收串口数据
格式WORDReceive(BYTEComID,BYTE*RcvBuf,WORDLen,WORDTimeOut,BYTETimeOutBytes;
注释comID:
串口(DOWNLOAD=0,PLC=1
RcvBuf:
接收缓冲区,类型为字节
Len:
希望接收的数据长度,按字节计
Timeout:
总接收超时时间(0:
一直等待。
单位:
ms
TimeOutBytes:
字节间接收超时时间(一般设为6
返回值:
实际接收到的数据长度,按字节计
举例BYTEbyArray[10];
Receive(PLC,byArray,10,0,6;
2.5.6Malloc
功能申请堆空间
格式void*Malloc(UINTsize
注释Size:
申请空间大小(bytes
Return:
被申请空间的地址,等于NULL表示申请失败
Malloc:
malloc向系统申请分配指定size个字节的内存空间替代标准库函数中的malloc使用,功能完全相同
Note:
申请的空间请及时释放
举例Unit*p;
p=(Unit*malloc(sizeof(Unit;
2.5.7Free
功能与malloc(函数配对使用,释放malloc函数申请的动态内存
格式voidFree(void*pBuffer
注释pBuffer:
待释放的空间
Free:
替代标准库函数中的Free使用,功能完全相同
Note:
申请的空间请及时释放
举例BYTE*pBuffer=Malloc(10;
Free(pBuffer
2.5.8Delay
功能延时
格式voidDelay(UINTms;
注释ms:
延时时间(单位:
ms,最大可设定延时时间为0xFFFF*延时精度延时精度:
Delay函数的精确值单位,TP、OP系列均为10ms,TPA61T、TH&、MH系列为5ms
举例Delay(10;//延时10毫秒
Delay(1000;//延时1秒
2.5.9ScreenJump
功能画面跳转
格式WORDScreenJump(WORDScreenNo;
注释screenNo:
画面号
Return:
实际跳转到的画面号
举例ScreenJump(2;//跳转到2号画面
2.5.10OpenWindow
功能打开窗口
格式voidOpenWindow(WORDwinNo,WORDwinX,WORDwinY;
注释winNo:
窗口号
winX:
窗口X轴起始位置
winY:
窗口Y轴起始位置
举例OpenWindow(2,10,10;//位于(10,10点显示窗口2
2.5.11CloseWindow
功能关闭窗口
格式voidCloseWindow(WORDwinNo;
注释winNo:
窗口号
举例CloseWindow(2;//关闭2号窗口
2.5.12Beep
功能蜂鸣器响一次
格式voidBeep(void;
注释无
举例Beep(;
2.5.13WakeScreen
功能唤醒画面(从屏保状态
格式voidWakeScreen(void;
注释无
举例WakeScreen(;
2.5.14Crc
功能计算Crc值
格式UINTCrc(BYTE*pHead,UINTnLen;
注释pHead:
数据缓冲区起始地址
nLen:
缓冲区长度
Return:
Crc值
举例BYTEbuffer[3]={0x01,0x02,0x03};
UINTnCrc=Crc(buffer,3;//将数组bufferCrc的校验值放到变量nCrc中
2.6触摸屏内部对象
触摸屏的内部对象有PSW、PFW、PSB,具体介绍可参考触摸屏说明书。
2.6.1PSW对象
1PSW寄存器可直接操作:
其类型为unsignedshort(即WORD
例:
PSW[300]+=1;//将PSW[300]的数值进行累加
2DWORDdwValue=*(DWORD*(PSW+300;或者
DWORDdwValue=MAKEDWORD(PSW[300],PSW[301];
//将PSW[300]、PSW[301]里面的值赋值给一个双字
DWORDdwValue;
*(DWORD*(PSW+300=dwValue;
//将一个双字赋给PSW[300]、PSW[301]
3floatfValue=*(float*(PSW+300;
//将PSW[300]、PSW[301]里面的值按浮点数格式读出
2.6.2PSB对象
GetPSBStatus(PSB_No;//获取PSB的值
例:
GetPSBStatus(300;//获取PSB300状态值
SetPSB(PSB_No//将相应PSB置1
例:
SetPSB(300//将相应PSB300置1
ResetPSB(PSB_No//将相应PSB置0
例:
ResetPSB(300//将相应PSB300置0
例:
if(GetPSBStatus(300
SetPSB(301;
Else
ResetPSB(301;
//根据PSB300的值,控制PSB301状态,PSB300值=PSB301值
3工程示例
3.1数据比较
示例要求:
从PLC内取三个整数进行比较,输出最大值和最小值在屏上显示
示例设备:
(1TP\TH系列触摸屏:
TH465-MT一台
(2PLC:
XC3-24R-E一台
(3软件版本:
2.c.6以上版本,硬件版本:
2.c以上版本
(4USB下载线一根,PLC通讯线一根,电脑一台
相关资料:
(1《XC系列可编程控制操作手册》
(2《TP\TH系列C语言功能使用手册》
(3《TP\TH系列工业触摸屏操作手册》
具体实现过程:
1建立C函数块
在编辑软件左边工程栏内右击“函数功能块”:
点击插入出现函数功能块信息输入框,填写信息然后“确定”,即建立一个C函数功能块编辑环境,函数部分如下:
注意数据类型的定义以及函数的书写方式,具体请参考2.3、2.5节。
2函数调用
在画面放置一个功能键,在左边“功能列表”中选择“函数调用”,然后点击“添加”按钮,添加此功能,选中右边“函数调用”,点击修改添加函数。
注:
关于并行执行、顺序执行说明请参考附录2。
3画面编辑
放置3个数值输入,地址D0、D2、D4,2个数值显示,地址PSW300、PSW301,5个文字串,如下:
4最后将程序下载到触摸屏中,连接PLC进行操作。
注:
由于C函数功能不能直接模拟操作,必须要下载到触摸屏才能操作。
3.2通讯
示例要求:
主要通过C函数功能块,读取PLC输出点Y状态
示例设备:
(1TP\TH系列触摸屏:
TH465-MT一台,XC系列PLC一台
(2软件版本:
2.c.6以上版本;硬件版本:
2.c以上版本
(3USB下载线一根,PLC通讯线一根,电脑一台
相关资料:
(1《TP\TH系列C语言功能使用手册》
(2《TP\TH系列工业触摸屏操作手册》
(3《XC系列可编程控制器用户手册》
操作流程:
1新建工程
将PLC口设置成三菱FX系列,通讯参数为19200、8、E(偶校验、1(停止位,
如下:
注:
PLC口设备任意设置,只需要保证通信参数与通讯设备的参数一致就可以了。
2建立C函数块
在编辑软件左边工程栏内右击“函数功能块”:
点击插入出现函数功能块信息输入框,填写信息然后“确定”,即建立一个C函数功能块编辑环境,函数部分如下:
注:
函数应用请参考第2章。
在画面放置一个功能域,将功能域模式设为连续,功能里添加函数功能块,如下:
注:
关于并行执行、顺序执行说明请参考附录2。
在画面中放置8指示灯按钮,地址为PSW300.0~PSW300.7,如下:
5最后将程序下载到触摸屏中,连接PLC进行操作。
注:
由于C函数功能不能直接模拟操作,必须要下载到触摸屏才能操作。
附录1C标准库函数的调用限制
主要说明受到限制的库函数,大多数常用的标准C库函数(除堆函数均是能正常使用的,现罗列出那些使用时受到限制的标准库函数:
1.alloca.h中所有的函数不能调用,函数均与堆相关。
2.assert.h中的断言函数不能调用。
3.stdio.h中针对流的函数不能调用,只有针对字符串的,函数(sscanf、sprintf可以正常使用。
4.stdlib.h中相关的堆操作函数不能调用,因此提供了替代的API函数。
附录2C函数使用注意事项l输入API函数时,应保证“函数名”和“(”在一起,中间不留有空格,这样可以弹出帮助对话框和提示框。
lllll代码区分大小写。
在公共函数定义的全局变量,不可以赋初值,全局变量默认为“0”。
在进行变量定义的时候,数据源是什么类型,就定义什么类型。
功能函数的函数名必须为英文,不能取相同的函数名。
代码输入完成后可通过F7键编译,关闭时,默认不编译,若需要编译,可通过软件的菜单-工具-选项进行修改。
l变量(局部或全局)声明时,一般不要声明大的数组(空间大于128字节),可以用专用空间分配函数申请尔后再使用。
l函数中不可以直接调用库函数中的堆函数malloc/free,而用Malloc/Free替代(首字母大写),功能完全相同。
l功能函数的执行的环境可以是多任务并行的,功能函数执行的模式:
并行执行、顺序执行。
顺序执行:
调用该功能函数的任务,只有在该功能函数执行完后,才能继续后继的处理;因此该功能函数必须有合适的退出条件。
并行执行:
调用该功能函数的任务,创建新的任务来执行函数,调用者则继续后继处理。
ll因为是多任务系统,提供了任务锁,请谨慎使用。
在写函数指令时,一定要注意指令大小写,Eg:
read(,READ(写法都不正确,正确写法Read(。
19
无锡市信捷科技电子有限公司江苏省无锡市蠡园开发区创意产业园7号楼四楼邮编:
214072电话:
*************传真:
*************XinjeElectronicCo.,Ltd.4thFloorBuilding7,OrignalityIndustrypark,LiyuanDevelopmentZone,WuxiCity,JiangsuProvince214072Tel:
(51085134136Fax:
(51085111290
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TPTH 系列 触摸屏 函数 功能块 手册 解读