直播课堂
HOME
直播课堂
正文内容
plc用宏编程 威纶通触摸屏宏指令,统合应用,与PLC自由通讯
发布时间 : 2025-03-17
作者 : 小编
访问数量 : 23
扫码分享至微信

威纶通触摸屏宏指令,统合应用,与PLC自由通讯

想学习威纶宏指令的朋友,

可以关注前面的其他小节。

我们知道市面上硬件有非常多,

威纶不可能支持所有硬件的通讯,

所以它提供了宏指令让我们自己来实现。

学会宏可以极大的提升我们的触摸屏编程能力。

这小节我们以一个通讯实例结束威纶宏编程教程。

任何两个硬件通讯前,无线的还是有线的,都必须建立连接。

一般触摸屏通过以太网网络或串口通讯与其他硬件相连。

这里我们以威纶触摸屏TK6071IP和台湾永宏可编程控制器FBs系列为例,

讲解如何通过自由通讯协议,

通过编写宏指令,让两个硬件实现通讯。

其实威纶是支持永宏PLC的,我们这里假设它不支持,

看下威纶触摸屏是如何与自己不支持的硬件通讯上的。

这个过程一般分为三步。

1.准备数据线。

某宝一般有定制版的,可以在上面买,

也可以查阅硬件手册,自己制作数据线。

如我们查阅的触摸屏与PLC的硬件手册,

得到通讯端口针的定义如下:

很明显,

PLC通讯端口九针侧,

3为接收数据RxD,

2为发送数据TxS,

5为公共接地GND。

触摸屏通讯端口侧,

6为发送数据TxD,

9为接收数据RxD,

5为公共接地GND。

所以针脚3连6, 2连9,5连5,

就能做成一根屏与PLC的通讯数据线。

2.熟悉硬件的通讯协议。

熟悉或不熟悉的硬件,

在使用时我们都会习惯性的准备对应的手册,

比如接线时,我们会参考硬件的用户手册。

编程时,我们会下载编程手册。

这里我们要实现串口通讯,

所以我们也会准备硬件的通讯手册。

这里我们准备了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.在宏程...

 云影花阴  惠普4416s 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部