首页 > 全部分类 > 技术问答 > 帖子内容

我用昆仑触摸屏,将配方的数据传送到汇川PLC,传不上,帮我写一下程序

联系人:16585879249971

电话/手机:联系客服

发布时间:2023-05-08 19:07

浏览:315次

明扬工控技术客服2025-09-04 20:44:27
答复内容:

您好!在昆仑通态(MCGS)触摸屏和汇川PLC之间进行配方数据传输是常见的应用。传不上的原因有很多,可能是通信设置、变量地址、程序逻辑等环节出了问题。


由于您没有指定具体的汇川PLC型号(如H3U、H5U、AM/AH系列等,它们的使用方式有差异),我将为您提供一个基于H5U/AutoShop系列(常用且支持结构化文本ST)的通用思路和程序框架。您可以根据实际情况进行调整。


第一步:确保硬件和通信基础正确

这是最常见的问题所在,请务必先检查:


物理连接:网线或RS485线是否连接牢固?


PLC设置:PLC的IP地址(如果是以太网)或站号(如果是串口)是多少?


触摸屏设置:在MCGS的“设备窗口”中,您添加的“通用TCP/IP父设备”或“串口父设备”的参数(IP地址、端口号、串口号、波特率、数据位、停止位等)必须与PLC的设置完全一致。


变量连接:在MCGS的“实时数据库”中定义的变量,其“设备属性”必须正确连接到PLC的相应地址。


第二步:规划配方数据和PLC地址

假设您的一个配方包含3个参数:温度、压力、时间。我们在PLC和触摸屏中做好规划。


在汇川PLC中(以H5U为例):


定义配方数据结构:在AutoShop软件中,最好使用结构体(STRUCT)来管理配方。


st


复制


下载

// 定义一个配方元素的结构体

TYPE Recipe_Data :

STRUCT

    Temperature : INT; // 温度,对应触摸屏变量

    Pressure : INT;    // 压力,对应触摸屏变量

    Time : INT;        // 时间,对应触摸屏变量

END_STRUCT

END_TYPE


// 声明变量

PROGRAM MAIN

VAR

    CurrentRecipe : Recipe_Data; // 当前正在使用的配方

    RecipeBuffer : Recipe_Data;  // 用于从触摸屏接收新配方的缓冲区

    bWriteRecipe : BOOL;         // 从触摸屏来的“写入”触发信号

END_VAR

如果您的PLC不支持结构体,可以分别用D100, D101, D102等地址来对应温度、压力、时间。


在昆仑通态触摸屏(MCGS)中:


在“实时数据库”中创建变量,并连接至PLC的地址:


配方_温度 (设备通道: RecipeBuffer.Temperature 或 D100)


配方_压力 (设备通道: RecipeBuffer.Pressure 或 D101)


配方_时间 (设备通道: RecipeBuffer.Time 或 D102)


写入触发 (设备通道: M0 或 bWriteRecipe, 数据类型:开关型)


第三步:编写PLC程序(结构化文本ST或梯形图LD)

PLC程序的任务是:当收到触摸屏发来的“写入”信号时,将缓冲区(RecipeBuffer)中的数据写入到当前配方(CurrentRecipe)中。


使用结构体的版本(推荐):


st


复制


下载

// 主程序(MAIN)

IF bWriteRecipe THEN // 如果触摸屏触发了“写入”按钮

    CurrentRecipe := RecipeBuffer; // 将缓冲区数据完整拷贝到当前配方

    bWriteRecipe := FALSE;        // 立即复位触发信号,防止下次扫描周期再次写入

END_IF;

不使用结构体,使用D寄存器的版本(通用):


st


复制


下载

// 主程序(MAIN)

IF M0 THEN // 如果触摸屏的M0触点ON了

    // 将缓冲区的值逐个传送给当前配方

    D10 := D100; // 将触摸屏发到D100的温度值,赋给当前配方使用的D10

    D11 := D101; // 压力

    D12 := D102; // 时间


    M0 := FALSE; // 立即复位M0

END_IF;

第四步:设计触摸屏画面

在MCGS的“用户窗口”中,设计一个配方操作界面:


输入框:放置3个“输入框”构件。


分别连接变量:配方_温度, 配方_压力, 配方_时间。


用于输入新的配方值。


按钮:放置一个“按钮”构件。


在按钮的“按下”事件中,执行以下脚本:


vbscript


复制


下载

!SetDevice(设备0, 6, "写入触发")

// 注释:"设备0"是您的PLC设备在设备窗口中的名称

// 6代表“置1”操作,这条命令会将PLC中的 `bWriteRecipe` 或 `M0` 置为ON(1)

为了确保可靠传输,通常还需要加一个短暂的延时后复位,但更推荐在PLC程序里复位(如上一步程序所示),这样更可靠。如果您想在触摸屏侧完成,可以再加一个计时器或两个脚本:

“按下”脚本: !SetDevice(设备0, 6, "写入触发")

“抬起”脚本: !SetDevice(设备0, 5, "写入触发") // 5代表“置0”操作


第五步:调试与排查

如果还是传不上,请按以下步骤排查:


通信状态:查看MCGS设备窗口中和PLC编程软件中的通信状态指示灯,是否是绿色/通信正常?


变量监控:


在MCGS中,进入“运行模式”,打开“实时数据库”查看一下您输入的数值是否正确写入了配方_温度等变量。


在AutoShop软件中,在线监控PLC的变量(如RecipeBuffer.Temperature或D100),看触摸屏发送的数据是否已经成功到达了PLC。这是最关键的一步!


如果数据到了PLC,但CurrentRecipe没变化,问题出在PLC程序(第三步)的触发逻辑上。检查bWriteRecipe/M0是否有被成功触发和复位。


触发信号:确保那个“写入”的触发信号是脉冲边沿有效的。如果它一直为ON,PLC程序会每个扫描周期都执行拷贝复位,可能产生意想不到的效果。我们的程序里用了“按下置位,PLC立即复位”或“按下置位,抬起复位”的方式,都是为了避免这个问题。


总结

整个过程的数据流是:

用户在触摸屏输入 -> 数据存入触摸屏变量并通过驱动发送到PLC的缓冲区地址 -> 用户点击写入按钮发送触发信号

ChatGPT问答2023-05-08 19:19:04
答复内容:

由于您没有提供具体的昆仑触摸屏型号和汇川PLC型号,因此我将为您提供一般性的PLC通信指南,供您参考。

对于使用昆仑触摸屏将配方数据传输到汇川PLC的问题,以下是一些可能的解决方案:

确认通信协议:首先,您需要确认您的昆仑触摸屏和汇川PLC之间的通

对不起,请登录后再发表评论!

触屏端
扫一扫手机也能发信息
明扬工控商城-工控网-工控自动化真品,一站式专业服务!