西门子1200与3台台达DT330温控器通讯程序(XMZ1200-6) 功能:实现西门子1200PLC对3台台达DT330温控器进行485通讯控制,在触摸屏上设定温度,读取温度 器件:西门子12001214DC/DC/DC.昆仑通态TPC7022NI,西门子KTP700BasicPN,台达DT330温控器。 说明:的是带详细注释西门子触摸屏PLC设置和温控器设置,接线说明书。 附送昆仑通态触摸屏程序
最近在项目中完成了西门子1200 PLC与3台台达DT330温控器的通讯控制,同时结合触摸屏实现温度设定与读取功能,今天就来和大家分享一下这个过程,希望对有类似需求的小伙伴有所帮助。
涉及器件
本次项目使用到的器件有西门子1200 1214DC/DC/DC 、昆仑通态TPC7022NI 、西门子KTP700BasicPN以及台达DT330温控器。
硬件接线
- 西门子1200与台达DT330温控器:西门子1200的485通讯端口与台达DT330温控器的485接口相连。注意A接A,B接B,并且为了保证通讯稳定性,在通讯线的两端最好加上120Ω的终端电阻。
- 触摸屏与西门子1200:昆仑通态TPC7022NI 以及西门子KTP700BasicPN通过以太网与西门子1200 PLC相连,这样可以方便地进行数据交互。
西门子PLC设置
通讯相关块调用
在OB1组织块中,我们需要调用一些通讯相关的功能块。以S7-1200为例,常用的是“MBCOMMLOAD”和“MB_MASTER”块。
// 初始化通讯端口 CALL "MB_COMM_LOAD" COMM_PORT := 1 // 通讯端口号,根据实际硬件设置 BAUD := 9600 // 波特率设置,需与温控器一致 PARITY := 0 // 奇偶校验设置,0表示无校验 DB_Ptr := P#DB1.DBX 0.0 // 指向通讯配置数据块的指针 RETURN_ERROR := M1.0 // 错误返回标志位 STATUS := MW2 // 通讯状态字这段代码使用“MBCOMMLOAD”块来初始化通讯端口,设置了波特率、奇偶校验等参数。通过指针指向数据块来存储相关配置信息,同时利用标志位和状态字来监控通讯状态。
// 主站通讯块 CALL "MB_MASTER" REQ := M10.0 // 触发通讯请求 MB_ADDR := 1 // 从站地址,这里假设第一台温控器地址为1 MODE := 2 // 通讯模式,2表示读保持寄存器 DATA_ADDR := P#DB2.DBX 0.0 // 数据存储区指针 DATA_LEN := 2 // 读取数据长度,根据实际需求设置 DB_Ptr := P#DB1.DBX 0.0 // 指向通讯配置数据块的指针 ERROR := M10.1 // 通讯错误标志位 STATUS := MW12 // 通讯状态字“MB_MASTER”块用于发起通讯请求,这里设置为读取从站(温控器)的保持寄存器数据。通过REQ触发请求,根据不同的从站地址可以与不同的温控器进行通讯。数据读取后会存储在指定的数据存储区。
台达DT330温控器设置
- 通讯参数设置:进入温控器的设置菜单,将通讯波特率、奇偶校验等参数设置为与西门子1200 PLC一致。例如波特率设为9600,无校验。
- 地址设置:分别设置3台温控器的从站地址,比如设为1、2、3,这样PLC就可以通过不同的地址区分并与它们通讯。
触摸屏设置
昆仑通态TPC7022NI
昆仑通态触摸屏程序设计相对直观。在界面上添加温度设定输入框和温度显示文本框。通过建立与西门子1200 PLC的数据连接,将设定温度值写入PLC对应地址,同时从PLC读取当前温度值显示在文本框中。
西门子KTP700BasicPN
同样在界面上构建温度设定与显示区域。在变量管理中,创建与PLC相关地址对应的变量,通过画面元素的属性设置,关联变量实现温度设定与读取的交互功能。
昆仑通态触摸屏程序分享
很遗憾这里没办法直接贴出完整的昆仑通态触摸屏程序,但整体思路就是先建立与PLC的连接,通过脚本或者组态功能实现数据的读写。比如在按钮按下事件中,可以通过脚本将输入框中的温度设定值写入PLC地址:
' 获取输入框中的设定温度值 Dim setTemp setTemp = Me.Screen1.TextInput1.Text ' 将设定温度值写入PLC对应地址 Call MCGSApp.SetDeviceValue("西门子1200", "V100", setTemp)而在画面加载事件中,可以读取PLC中的当前温度值并显示在文本框:
' 从PLC读取当前温度值 Dim currentTemp currentTemp = MCGSApp.GetDeviceValue("西门子1200", "V102") ' 在文本框中显示当前温度值 Me.Screen1.TextOutput1.Text = currentTemp通过以上一系列的设置与编程,就可以实现西门子1200 PLC对3台台达DT330温控器的485通讯控制,并在触摸屏上便捷地设定和读取温度啦。希望大家在自己的项目中也能顺利运用这些方法。