技术论坛

 1200和温控器通过透传网关modbus tcp按寄存器地址逐条读写

返回主题列表
作者 主题
荧惑mars
侠士

经验值:1413
发帖数:157
精华帖:6
楼主    2023-11-03 09:12:46
主题:1200和温控器通过透传网关modbus tcp按寄存器地址逐条读写 精华帖 

背景:

山武、欧陆等温控器,寄存器地址很多,但实际需要呈现在HMI上的只是一小部分,所以需要挑挑拣拣,选择需要的,那么避免不了存在寄存器地址不连续的情况。

备注:当然,可以放在HMI/wincc上直接读取,但放在PLC里读取,更利于做自动程序/一键启停/自动流程等等。

本帖所涉及的硬件型号如下:

PLC:1214C;温控器:山武C36+宇电;透传网关:有人USR-N540。


初衷:由于合同要求HMI上需要PID参数和若干上下限等参数开放设定框给甲方,但平时我们又不需要实时读取,所以,本帖程序也做了一个类似于“监听”的功能,数组遍历对比,不一致,即先写入后读取。


未完成功能:本帖一个TCP端口对应一个程序,并未考虑一个端口下挂多个仪表的情况,请提前悉知。但有保留MB_Unit_ID接口,方便本人以后再次开发用,以及对应不同仪表不同从站地址用。

本体仅为modbus tcp client的程序,UDP本人也在考虑,但目前还在应付无休止的项目。


以下为本帖内容:(特别提醒,本人技术有限,欢迎对程序内容和立意等表达评头论足


输入输出+静态变量接口




程序内容文本如下:

ModbusTCP_FB.7z  此文件为.scl格式。

ModbusTCP_FB.txt  此为纯文本格式。


简单介绍下程序内容:

初始化需要去做读写的寄存器数量,初始化比对数组。

实时比对静态变量里保存的数值和写入的数值。

从站地址赋值;给予轮询30ms触发延迟。

以上是读写,寄存器地址赋值、长度赋值、modbus tcp client 缓存区数据转存+清空,以及客户端触发的置位+复位。


以下挑几个UDT的截图,大同小异。

每次只需要在UDT里填入寄存器地址即可,通过Excel整理modbus仪表地址的对应关系,按列复制即可。

这是我自己用的excel模板,以wincc导出的变量表为基础改的。

温控器的数值在读取和写入,需要做小数点的换算,大家都知道的,INT/WORD么。

最后呈现的就是如此,read数组实时读取,不停。parameter和write在初始化读取,值改变,PLC才会写入或读取。

DB块里的最后呈现。

这是配置的UDT,包含是否连接、IP地址端口、寄存器地址、是否需要比例换算等。

DB块里呈现。

最后呈现在梯形图上就是如此。


写这个参数的参考案例如下:

S7-1200Modbus TCP通信 (siemens.com.cn)

MB_CLIENT (siemens.com.cn)

【开源】Modbus设备的单FB封装和多设备平行调用的通用架构 ------ 一个温控器案例的完整项目文件-技术论坛-工业支持中心-西门子(中国)有限公司(SLC) (siemens.com.cn)

不使用UDT的设备FB封装---ModbusRTU通信的温控器的例子-技术论坛-工业支持中心-西门子(中国)有限公司(SLC) (siemens.com.cn)

用自由口通信制作的ModbusRTU协议的Master指令的SCL源码-技术论坛-工业支持中心-西门子(中国)有限公司(SLC) (siemens.com.cn)

通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码-技术论坛-工业支持中心-西门子(中国)有限公司(SLC) (siemens.com.cn)

擅用博图中的Trace功能-技术论坛-工业支持中心-西门子(中国)有限公司(SLC) (siemens.com.cn)

Modbus设备FB接口设计背后的理念-技术论坛-工业支持中心-西门子(中国)有限公司(SLC) (siemens.com.cn)


写在最后:

我的自动化的行业相关知识80%来源于互联网;

技术有限,欢迎斧正,谢谢。

活到老,学到老。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。