QQ登录

只需一步,快速开始

威纶通触摸屏宏指令,PLC指令分类函数,详解与实操

[ 复制链接 ]
前面小节我们介绍过数学运算,字符串处理,数据转换,数据操作,宏控制分类函数,
这小节我们继续了解PLC分类下的
函数,通过编写程序来实践。

威纶通触摸屏宏指令,PLC指令分类函数,详解与实操

威纶通触摸屏宏指令,PLC指令分类函数,详解与实操

宏指令在编写过程当中我们可以使用PLC相关的函数控制与触摸屏连接的硬件,
读取硬件数据,也可以向硬件写入数据,当然也可以读写触摸屏自己寄存器的数据。
这类函数共有5个,分别是 GetData,GetDataEx, SetData, SetDataEx, GetError。
下面是每个函数的介绍。

GetData。
函数用于从PLC等硬件读取数据,实际使用频率非常高。
例如int result[2],result1
GetData(result[0], "FATEK FB Series", D, 0, 1)
此函数从永宏PLC(FATEK FB Series)读取数据,
读取的寄存器起始地址为 D 0,
读取的数据个数为1个,
结果保存在result数组里,我们传递的数组元素类型为int,所以读取数据为1个整数。
这里的硬件名称” FATEK FB Series”为我们在编程软件里添加的硬件,
在创建一个触摸屏项目时会提示添加硬件,
默认只有触摸屏一个硬件,名称为“Local HMI”。
然后是硬件的寄存器地址,我们知道PLC一般都有X,Y,M,D等类型寄存器,
每种寄存器都有很多供使用,比如D0表示第0个数据寄存器,
在这个函数中就可以传递寄存器类型加索引来访问,
另外还有一种情况,一屏多机时,可以修改寄存器索引使用形式。

例如,我们修改为
GetData(result[0], "FATEK FB Series", D, 2#0, 1)
表示读取第二台plc的D0数据,上面函数中的2表示PLC站号,
只有一个PLC可以不填写。
用于存储结果的变量,可以是一个数组变量,也可以是一个单一变量,
变量类型可以是short,int,float,或bool。
例如下面代码表示读取触摸屏LB0的状态。
Bool result
GetData(result, " Local HMI ", LB, 0, 1)
例如下面代码表示读取触摸屏LW0开始的两个short数据。
short result[2]
GetData(result, " Local HMI ", LW0, 2)
例如下面代码表示读取触摸屏LW0开始的1个浮点数据。
浮点数占用4个字节,所以这里实际读取了LW1,LW0到变量result里。
Float result
GetData(result, " Local HMI ", LW, 0, 1)



2. GetDataEx。
这个函数与GetData使用上是一致的,只是触摸屏在执行这个函数时,
不会等其执行完返回,再往下执行其他代码。
这个功能和前小节介绍的异步调用宏指令,概念上是相似的。
我们知道PLC与触摸屏通讯时,有可能受到干扰,延时响应的,
这个函数可以不等PLC响应,径直执行其他代码,防止程序阻塞。
函数执行的结果可以使用,GetError获取,不为0表示未正确执行。

3. SetData。
有数据获取,对应就有数据设置。
这个函数用于将指定数据写入到PLC等硬件中。
例如下面代码,实现将123写入到触摸屏LW1寄存器中,共写入1个整数。
Int nValue=123.
SetData(nValue, "Local HMI", LW, 1, 1)
参数的含义与函数GetData一致。

4. SetDataEx。
这个函数和SetData在使用上一致,触摸屏在调用这个函数时,
也不会等待其执行完成再执行其他函数。
同样也可以通过函数GetError获取执行结果,不为0表示未正确执行。

5. GetError.
此函数获取其他函数执行结果。
可以在SetDataEx,GetDataEx执行后调用。
从而判断函数执行是否成功。获得错误代码为0表示成功,其他表示不成功。
例如
short nValue
SetDataEx(nValue, "FATEK FB/FBs/B1/B1z Series", D, 0, 1)
int error
GetError(error)
如果上面的函数SetDataEx执行成功,则error为0,不然为非0值。
GetDataEx执行失败,GetError(error) ,error=1
SetDataEx执行失败,GetError(error) ,error=2

我们可以在编写宏指令,编程软件里测试测试这几个函数的功能。
在界面上添加三个数值显示元件,地址LW0用于输入设置值,地址LW1用于显示设置值,
地址LW2用于显示错误代码,再添加宏调用元件,测试编写的宏代码。界面如下图。

威纶通触摸屏宏指令,PLC指令分类函数,详解与实操

威纶通触摸屏宏指令,PLC指令分类函数,详解与实操

参考下面的宏指令
macro_command main()
short nValue=123
//GetDataEx(nValue, "Local HMI", LW, 0, 1)
//GetDataEx(nValue, "FATEK FB/FBs/B1/B1z Series", D, 0, 1)
SetDataEx(nValue, "FATEK FB/FBs/B1/B1z Series", D, 0, 1)
int error
GetError(error)
if(0== error) then
//SetData(nValue, "Local HMI", LW, 1, 1)
else
SetData(error, "Local HMI", LW, 2, 1)
end if
end macro_command


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索