威纶通触摸屏宏指令,统合应用,与PLC自由通讯
想学习威纶宏指令的朋友,
可以关注前面的其他小节。
我们知道市面上硬件有非常多,
威纶不可能支持所有硬件的通讯,
所以它提供了宏指令让我们自己来实现。
学会宏可以极大的提升我们的触摸屏编程能力。
这小节我们以一个通讯实例结束威纶宏编程教程。
任何两个硬件通讯前,无线的还是有线的,都必须建立连接。
一般触摸屏通过以太网网络或串口通讯与其他硬件相连。
这里我们以威纶触摸屏TK6071IP和台湾永宏可编程控制器FBs系列为例,
讲解如何通过自由通讯协议,
通过编写宏指令,让两个硬件实现通讯。
其实威纶是支持永宏PLC的,我们这里假设它不支持,
看下威纶触摸屏是如何与自己不支持的硬件通讯上的。
这个过程一般分为三步。
某宝一般有定制版的,可以在上面买,
也可以查阅硬件手册,自己制作数据线。
如我们查阅的触摸屏与PLC的硬件手册,
得到通讯端口针的定义如下:
很明显,
PLC通讯端口九针侧,
3为接收数据RxD,
2为发送数据TxS,
5为公共接地GND。
触摸屏通讯端口侧,
6为发送数据TxD,
9为接收数据RxD,
5为公共接地GND。
所以针脚3连6, 2连9,5连5,
就能做成一根屏与PLC的通讯数据线。
熟悉或不熟悉的硬件,
在使用时我们都会习惯性的准备对应的手册,
比如接线时,我们会参考硬件的用户手册。
编程时,我们会下载编程手册。
这里我们要实现串口通讯,
所以我们也会准备硬件的通讯手册。
这里我们准备了PLC的通讯手册,
里面介绍有通讯协议相关知识。
翻阅手册,我们知道了PLC每个通讯帧的格式,
如下图。
帧头帧尾固定为0X02,0X03;PLC站号,
命令码占一个字节,分高低两部分。
校验码也占一个字节,分高低两部分,
为前面数据相加之和。
翻阅通讯手册,我们还知道了命令码的具体支持哪些,
如下图,截取了永宏PLC支持的部分命令码,
我们这里会选择使用两命令码作演示。
41,控制PLC的启停,
46,读取PLC连续多个寄存器资料。
1)控制PLC的启停(指令41 )
翻阅通讯手册,我们也能找到每个指令的解释与实例。
如下两图,为命令码41的格式与实例,
控制码为0表示停止PLC,为1表示启动PLC。
根据这些信息,我们就可以编写出控制PLC启停的帧,
以及PLC回应的帧我们也能提取出信息,具体代码在下面。
PLC回应的帧我们这里不核对校验码,
简单通过判断错误码来判断PLC是否成功执行指令。
错误码为0表示PLC执行成功。
如下图指令格式中,错误码在第5个字节。
我们就可以写出控制PLC启动与停止指令。
char c[9]
c[0] = 0x02
c[1] = '0' //0x30
c[2] = '1' //0x31
c[3] = '4' //0x34
c[4] = '1' //0x31
//0x30 为停止PLC指令,
//0X31为启动PLC指令.
c[5] = ‘0’
//c[6],c[7]为和校验码,
//即前面数据相加c[6]为高字节,
//c[7]为低字节。
c[6]
c[7]
c[8] = 0x03//帧尾
2)读取PLC连续多个寄存器资料(指令46 )
翻阅通讯手册,我们也能找到指令46的解释与实,
如下两图。
读取的寄存器个数在第一个字节指定,
读取的起始寄存器地址紧跟其后,
传统6个字节表示单字寄存器,
传递7个字节表示双字寄存器,
PLC支持的寄存器手册上也有介绍,
在后边有截图。
PLC回应帧格式里,
我们也能看出错误码在第5个字节,其后紧跟数据。
下面是PLC所支持的寄存器列表,
我们要演示的是读取WX0000一个字的内容。
也就是读取X0.0到x0.15的状态。
我们就可以写出读取PLC的WX0000的指令
char cFrame[255]
cFrame[0] = 0x02//帧头
cFrame[1] = 0x30//plc 站号
cFrame[2] = 0x31
cFrame[3] = 0x34//连续寄存器读取指令
cFrame[4] = 0x36
cFrame[5] = 0x30//读取1个寄存器
cFrame[6] = 0x31
cFrame[7] = 0x57//寄存器起始码 WX0000
cFrame[8] = 0x58
cFrame[9] = 0x30
cFrame[10] = 0x30
cFrame[11] = 0x30
cFrame[12] = 0x30
cFrame[13]//校验码
cFrame[14]
cFrame[15] =0x03//帧尾
3.编写代码与调试。
通过通讯手册获取协议信息,
就可以通过协议的约定来编写宏代码。
宏代码的编写是对我们前面小节介绍全部宏指令的一个综合应用。
我们可以多练习再借助宏输入窗口,熟悉使用威纶宏指令。
课前,我已在硬件上调试通过了下面的代码,可以参阅练习。
威纶通触摸屏宏指令,PLC指令分类函数,详解与实操
视频加载中...
前面小节我们介绍过数学运算,字符串处理,数据转换,数据操作,宏控制分类函数,
这小节我们继续了解PLC分类下的函数,通过编写程序来实践。
宏指令在编写过程当中我们可以使用PLC相关的函数控制与触摸屏连接的硬件,
读取硬件数据,也可以向硬件写入数据,当然也可以读写触摸屏自己寄存器的数据。
这类函数共有5个,分别是 GetData,GetDataEx, SetData, SetDataEx, GetError。
下面是每个函数的介绍。
1.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用于显示错误代码,再添加宏调用元件,测试编写的宏代码。
界面如下图。
宏指令如下,可以使用屏蔽的代码测试。
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
相关问答
plc宏的种类?
PLC里面宏的种类很多,有四十种,其实所谓的宏不管是任何一种编程软件,它只是一个思想而已,具体的形式可能是不一样的,但功能相同,就是为了简化重复编程的过...
plc编程f4什么意思?
F4在PLC编程中是一种特殊的功能键,用于调用常用功能,例如查找、替换、复制、粘贴等。F4键的使用可以大大提高编程效率,尤其是在处理大量数据时更加方便。此外...
西门子变频器连接宏是什么
西门子变频器连接宏是一种在PLC程序中使用的功能模块,用于实现变频器与PLC之间的通信和控制。通过使用连接宏,PLC可以直接读取和控制变频器的各种参数和状态,...
肿么利用威伦触摸屏的宏指令来修改PLC站号,使它与PLC通讯不...
那就不需要通过PLC再传给触摸屏这样就多此一举了你可以用变频器和触摸屏直接通讯就可在触摸屏上直接设定和显示你要的变频器参数了有用(0)回复精品应用推...
西门子V20变频器连接宏什么意思?
连接宏是指在西门子V20变频器中,通过编程设置一些特定的参数和逻辑,使其能够与其他设备进行通信和控制。连接宏的作用是实现变频器与其他设备的联动和协调工作...
欧姆龙PLC与温控表通过协议宏通讯?
只有这两段程序很难判断出问题所在PMCR为自定义通讯协议;使用此指令前先要设定一个通信序列到SCU模块里面,然后程序在调用PMCR指令,直接选择需要的序列,序列...
新代ez3t支持宏程序吗?
不支持宏程序。因为新代EZ3T是一款普通的烤箱控制器,按照其说明书上的介绍,没有提到可以支持宏程序。宏程序是一种较为高级的程序设置方式,需要相应的硬件和软...
PLC编程难学吗?-ZOL问答
要是想做编程工程师哪就学的多了,一般要三到五年实际工作经验.要是大专本科出来又能呆个好厂有师傅教一二年就可以出来做编程工程师了!有用(0)回复baidu_mir...
台达触摸屏宏指令怎样调用子程序?
[回答]1引言宏指令又叫做宏命令。在自动控制应用软件开发技术领域,宏指令属于高级编程技术,对于工业自动化软件高效编程开发和软件知识产权共享与积累具有...
三菱FB宏类型和子程序类型的区别?
三菱FB宏类型和子程序类型主要区别在于调用方式和使用范围。FB宏类型是功能块的宏定义,可以像一般指令一样在程序内直接调用,不需要在程序中单独写调用语句;而...