威纶通触摸屏宏指令,统合应用,与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里面宏的种类很多,有四十种,其实所谓的宏不管是任何一种编程软件,它只是一个思想而已,具体的形式可能是不一样的,但功能相同,就是为了简化重复编程的过...
eplanp8怎么创建plc宏?
简单说就是:1,使用plc盒子及其连接点等符号绘制。2,选中需要创建为宏的部分,编辑,创建窗口宏。即可创建窗口宏至所选目录。3,使用的时候,插入,窗口宏,...简...
plc编程f4什么意思?
F4在PLC编程中是一种特殊的功能键,用于调用常用功能,例如查找、替换、复制、粘贴等。F4键的使用可以大大提高编程效率,尤其是在处理大量数据时更加方便。此外...
肿么利用威伦触摸屏的宏指令来修改PLC站号,使它与PLC通讯不...
建议你用HITECH的,威纶的一些底层不开放有用(0)回复ZXCSZDG121可以用模拟量输出控制变频器的频率,比如变频器设置的是0-50HZ,而模拟量范围是0-32000,将你想...
人机界面上的数据LW如何与plc上的数据寄存器D进行通讯?
这个问题很简单哦。可以分两步操作。我们这里拿威纶LW0寄存器与永宏PLC的D0寄存器作演示。一步步演示如何实现。实现后的效果我们可以提前看下界面上有显示L...
plc各个代码意思?
不同商家的PLC有不同的编程语言,但就某个商家而言,PLC的编程语言也就那么几种,下面以PLC编程语言为例,简单描述下一、指令系统:按照使用的情况分,大致分为...
fanuc加工中心宏程序简单的遍程实例?
2、按对应屏幕底部“密码”的键,进入密码画面,输入”admln”,按确认键,屏幕左下角会显示”密码正确”。3、按”程控”键,再按屏幕底下对应”PLCPAR”键,...
3菱系统西格马车床怎样编程?
西格玛数控车床,沈阳产,采用日本三菱E60伺服系统,支持宏编程,还具备PLC功能,主轴无级变速,X,Z轴与一般不同的是采用滚柱丝杠,能很好的控制精度和机床延长...
欧姆龙PLC编程指令与梯形图快速入门的目录?
去京东上搜索这本书,然后下边的商品介绍中就有这本书的目录的。京东上给出的本书的目录如下:第1章PLC编程软件与仿真软件1.1编程软件CX-Programmer1.1...3...
西门子宏程序防过切怎么用?
西门子宏程序防过切功能可以通过以下步骤来使用:1.打开西门子编程软件,例如STEP7或TIAPortal软件。2.创建一个宏程序,即需要防止过切的程序段。3.在宏程...