- 有没有大佬用三菱FX5U读取ATEQ F620的检测值呀? 这个问题可以解答吗 谢谢
- 各位大神,请教大家一个问题,我这边想用MCGS的触摸屏用tcpip的协议通讯 ab 1766系列plc,读取数据! 试了好几个协议都不行,通讯不了,读取不出来! 大神们有好的建议给指导下吗
- 各位大师傅想问一下我一个永磁电供水突然停电,水泵反转会不会烧坏变频器,或电机谢谢
- 2800转和1400转电机配安川变频器参数有哪些不同 这个电箱,我用1400转的电机,一点问题都没有,很正常 但是换成 电机 如图后 就不行 设置是50hz, 实际上只有hz17
- 三菱FX5U报错代码:H21A0 文件指定异常, 初始化内存,清除PLC数据 都不行
我用昆仑触摸屏,将配方的数据传送到汇川PLC,传不上,帮我写一下程序
联系人:16585879249971
电话/手机:联系客服
发布时间:2023-05-08 19:07
浏览:315次
上一条: 帮我写一下程序,wincc创建一个modbus从站,别一个设备读取wincc从站数据 2023-05-08 18:32
下一条: 西门子PLC 1200如何和其他品牌做DP 通讯,请写一段代码 2023-05-11 09:58
由于您没有提供具体的昆仑触摸屏型号和汇川PLC型号,因此我将为您提供一般性的PLC通信指南,供您参考。
对于使用昆仑触摸屏将配方数据传输到汇川PLC的问题,以下是一些可能的解决方案:
确认通信协议:首先,您需要确认您的昆仑触摸屏和汇川PLC之间的通



















































您好!在昆仑通态(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的缓冲区地址 -> 用户点击写入按钮发送触发信号