modbus

Modbus协议栈应用实例之一:Modbus RTU主站应用

本小妞迷上赌 提交于 2020-08-09 19:13:23
自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例。所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,在这一篇中我们先来使用协议栈实现Modbus RTU主站的示例。 1 、何为 RTU 主站 Modbus协议是一个主从协议,那肯定就有主站和从站之分。所谓主站说的简单一点就是能够主动发起通讯的对象,所以主站就是发起通讯的一方。 对于RTU主站来说,自己并不会产生数据,而是要从从站获取数据。在Modbus RTU协议中从站不会主动向外发送数据,所以需要主站发送数据请求,从站才会向其返回请求的数据。这一过程如下图所示: 从上图我们不难看出,首先主站要主动发起数据请求,这也是它为什么被称之为主站的缘由。它首先告诉从站我需要哪些数据。然后从站按照主站的请求返回数据。主站得到响应后解析数据,这样就完成了主从站之间的一次数据通讯。所以主站就需要主动发起每一次数据通讯的对象。 2 、如何实现 RTU 主站 我们已经简单的说明了什么是RTU的主站,那么如何实现这一主站呢?其实在协议栈中,我们已经实现了主站的数据请求命令的合成以及响应数据的解析,所以我们使用协议栈时就是要控制何时将协议栈合成的主站请求命令发出以及如何解析数据响应进而得到想要的数据的过程。 在我们的协议栈中实现了0x01、0x02、0x03、0x04、0x05、0x06

工业采集网关需要具备哪些功能

ぐ巨炮叔叔 提交于 2020-08-09 17:12:21
在工控、自动化、监测等工业应用当中,各种设备、仪器、传感器的通信模式都有所不同,物联网和工业系统之间需要工业采集网关来做承上启下的作用,将不同协议的下位机反馈给上位机,它的基本功能是协议转换,汇总所有数据,转换传感器的协议,并在发送数据之前对其进行预处理。 一般来说,工业采集网关需要具备以下功能: 1、具备对下位机设备的协议解析功能,如modbus、can、opc等协议,实现现场设备数据采集。 2、需要具备常用的采集接口,如RS485、RS232、网口等,方便现场设备广泛接入。 3、具备对云端的协议对接功能,如常用的MQTT、212等协议,可与私有云、公有云匹配对接。 4、数据转发需要具备通信功能,如有线、无线、WiFi、4G、5G等通信方式。 5、需要具备边缘计算功能,保障数据安全与分担云端负荷。 BMG700工业采集网关采用ARM架构,具有强劲的边缘计算能力,可提供二次开发应用,具有丰富的采集接口,兼容多种协议,支持5G、4G、有线等多种通信方式,是工业设备数据采集的上上之选,工业级设计,契合工业现场使用。 来源: oschina 链接: https://my.oschina.net/u/4317114/blog/4480166

边缘计算网关有哪些优势特点

浪尽此生 提交于 2020-08-08 15:12:40
  在使用计讯物联边缘计算网关进行设备的云连接配置和操作,可以完成设备的远程数据传输与控制,为用户提供基于云端的物联网数据处理和告警服务,最大程度减少因设备损坏导致的资产损失。下面就一起来一起看看基于边缘计算网关的设备远程监控的优势特点有哪些吧。   1.边缘云端,互联互通   前端采集的数据通过5G/4G直接上云,基于仪表盘、计讯云平台、APP、短信等方式实现远程监测控制、预警通知、报告推送和设备连接。   2.高精度、高频率   全天候不间断实时高频数据采集、多通道动态信号采集,满足不同场景的数据采集需求。工业级Flash满足各种工业应用场景,读写使用寿命长;可扩展大容量内存空间,海量数据存储有助于应用扩展。   3.低成本,易部署   边缘计算网关在设备电脑上完整实现了采集、信号调理、连接云端 IoT 消息,方便快捷的进行数据收集、传输。   4.零改造,无中断   非侵入式传感器直接采集所需数据,企业现有设备无需改造,避免因设备改造失误对企业造成的生产损失。   边缘计算网关特点   计讯物联边缘计算网关TG452系列Gateway是一款工业级物联网无线网关,该系列产品可帮助用户快速接入高速互联网,实现安全可靠的数据传输,采用高性能的工业级32位通信处理器,软件多级检测和硬件多重保护机制来提高设备稳定性。   1、多路232和485串口接入设计

招聘|青岛旭升招聘高级软件工程师、3D视觉算法工程师

不想你离开。 提交于 2020-08-08 10:13:06
点击上方“ 3D视觉工坊 ”,选择“星标” 干货第一时间送达 公司介绍: 青岛旭升视觉有限公司是一家专注于机器人 3D视觉引导与工业3D测量领域 的高新技术企业,独立发展且拥有自主知识保护的先进三维物体感测技术,是国内机器人 3D视觉技术最早投入实际生产的公司之一。 职位信息: 部门: 研发技术部 岗位名称: 高级软件工程师 薪水: 面议 工作地点: 山东 青岛 工作职责: 负责搭建 3D视觉软件平台,按照相应的视觉需求文档进行软件产品的研发,产品的编码和测试工作,开发过程中相关设计文档的编写,协助其他3D产品的研发。 职位要求: 1.计算机/软件/通讯/自控等相关专业,本科及以上学历;(可接受应届毕业生和实习生) 2.熟练掌握C#语言,熟悉WPF/Winform等MS框架,熟练掌握多线程等编程技术,熟练掌握VS等编程工具; 3.有计算机图形学基础,能独立完成三维显示及UI交互功能; 4.熟悉常见网口/串口等通讯方式,熟悉Modbus,OPC等工业常用通讯协议者优先;接触和熟悉机器视觉者优先。 5.较好的学习能力,能快速学习掌握工控软件编程的相关技术; 6.较好的问题处理能力及抗压能力,遇到问题能自主寻求办法解决。 岗位名称: 3D视觉算法工程师 薪水: 面议 工作地点: 山东 青岛 工作职责: 参与公司 3D视觉算法的调研、研发、优化,将3D识别、定位、引导

8路DI/O计数器转RJ45支持PWM输出Modbus TCP

只愿长相守 提交于 2020-08-08 08:31:12
8路DI高速计数器,8路DO支持PWM输出,Modbus TCP模块 IBF93 产品特点: ● 8路开关量输入,8路开关量输出 ● DI每一路都可用作计数器或者频率测量 ● DO每一路都可独立输出PWM信号 ● 支持Modbus TCP 通讯协议 ● 内置网页功能,可以通过网页查询电平状态 ● 可以通过网页设定输出状态 ● 宽电源供电范围:8 ~ 32VDC ● 可靠性高,编程方便,易于应用 ● 标准DIN35导轨安装,方便集中布线 ● 用户可在网页上设置模块IP地址和其他参数 ● 网页登录可设置密码,更安全 ● 低成本、小体积、模块化设计 ● 外形尺寸:120 x 70 x 43mm 典型应用: ● 流量计脉冲计数或流量测量 ● LED灯光控制或电机控制 ● 智能楼宇控制、安防工程等应用系统 ● 以太网工业自动化控制系统 ● 工业现场信号隔离及长线传输 ● 设备运行监测与控制 ● 传感器信号的测量 ● 工业相机状态监测与控制 ● 物联网开关量信号采集 来源: oschina 链接: https://my.oschina.net/u/4346209/blog/4449078

Modbus协议栈应用实例之二:Modbus RTU从站应用

有些话、适合烂在心里 提交于 2020-08-08 01:06:53
自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例。所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们将使用协议栈实现一个Modbus RTU从站应用。 1 、何为 RTU 从站 Modbus协议是一个主从协议,那肯定就有主站和从站之分。所谓从站就是被动动响应通讯的对象,所以从站总是响应通讯的一方。 对于RTU从站来说,它是数据的数据的生产者,从站通过响应主站数据请求的方式将数据发送给主站。这一过程如下图所示: 从上图我们不难看出,首先主站要主动发起数据请求,这也是它为什么被称之为主站的缘由。它首先告诉从站我需要哪些数据。然后从站按照主站的请求返回数据。主站得到响应后解析数据,这样就完成了主从站之间的一次数据通讯。所以主站就需要主动发起每一次数据通讯的对象。 2 、如何实现 RTU 从站 我们已经了解的从站总是响应主站的数据请求来实现数据的传送。下面我们来看看使用协议栈如何实现一个从站。 我们知道从站是数据的生产者,对于Modbus协议来说有四类数据:线圈、状态、输入寄存器和保持寄存器。所以在从站中我们要为这四种数据定义相应的地址,以便主站能够对应的访问。所以设计一个从站我们先来设计它的数据地址,在我们的例子中我们规定如下: 我们规定了每类数据类型的数量为8,对于从站来说除了生成这些数据外

SCADA开源项目lite版本

自作多情 提交于 2020-08-06 10:51:22
一、 引子    自从看了老坏猫(江湖人称猫总)的SharpSCADA项目后,让我感觉耳目一新同时也对自动化数据采集有了更深入的认识,我相信有不少做上位机的朋友和我一样对这个项目非常好奇。我们做上位机的应用场景相比SCADA系统还是有很大差别的,比如我们再跟plc通讯的时候,每一次通讯数据很少存入数据库,还有报警、历史归档等功能很少体现在上位机里面。利用五一假期,我将猫总的代码进行了简化,做了一个SCADA的lite版本。 下面是SCADA系统的应用架构,在猫总的程序中,有个DAService的文件就是图中的网关服务器,同时也包含实时数据服务器和归档的功能,在我的简化版本中,没有了实时数据服务器,不再归档,数据不存数据库而是使用json解析定义的组与标签。 二、配置与运行 我的简化版本不需要数据库,所以基本上做到了零配置。由于手头没有plc可以调试,所以项目用的是modbus的模拟器程序,你只需要安装附件中的modsim软件,我配置了两个模拟器,一个是tcp通讯一个是串口通讯,tcp的直接导入配置就行,串口就稍微麻烦一点,需要安装附件中模拟串口软件,大家上网搜一下使用很简单。 1.在GitHub上下载源码,地址 https://github.com/qwe7922142/SharpSCADALite 。 2.安装modbus模拟器程序。 3.导入附件中一个叫TcpBool的文件

工控设备厂商典型工业协议与端口

白昼怎懂夜的黑 提交于 2020-08-06 06:57:03
序号 协议名称 端口号 牵头厂商或组织 主要用于行业或设备 1 MODBUS 502 Modicon公司的,被施耐德电气收购 仪器仪表、RTU、过程自动化领域等 2 EtherNet/IP 44818 罗克韦尔自动化公司 过程自动化领域 3 BACnet 47808 ISO、ANSI、ASHRAE 智能楼宇控制 4 S7 102 西门子通信协议 过程自动化领域 5 DNP3 20000 IEEE 水处理 6 FINS 9600 欧姆龙公司 过程自动化领域 7 GE SRTP 18245 美国通用电器,发那科 过程自动化领域 8 MELSEC-Q 5006/5007 日本三菱 过程自动化领域 9 Tridium-Niagara Fox协议 1911 Tridium公司 智能建筑、基础设置管理、安防等行业 10 CIP 44818 ODVA 过程自动化领域 11 IEC-60870-5-104 2400 国际电工委员会(IEC) 电力行业 12 Moxa Npot 4800 台湾MOXA公司 过程自动化领域 13 PCWorx 1962 菲尼克斯 过程自动化领域 14 IEC61850 48571 国际电工委员会(IEC) 电力行业 15 OPC DA 动态端口 OPC组织 数据采集 16 OPC UA 4840 OPC组织 数据采集 17 EGD 18246 GE,发那科

stm32编写Modbus步骤

会有一股神秘感。 提交于 2020-08-05 07:17:38
1. modbus协议简介:   modbus协议基于rs485总线,采取一主多从的形式,主设备轮询各从设备信息,从设备不主动上报。 日常使用都是RTU模式,协议帧格式如下所示:   地址 功能码 寄存器地址 读取寄存器个数 寄存器数据1 ..... CrcL CrcH /* AA 03 00 00 00 0A DC 16 addr cmd regH regL lenH lenL crcL crcH 主机发送 AA 03 14 00 00 00 00 00 00 00 00 00 03 00 01 00 00 00 18 00 1C 00 00 81 4B 从机回复 addr cmd datelen .... AA 10 00 0a 00 01 02 00 02 主机修改从机寄存器值 addr cmd regH regL regNum datalen data */   功能码及对应的操作字长: 目前比较简单的实现了读多个保持寄存器,以及写多个保持寄存器,由于不是使用的PLC,所以寄存器地址的划分没有严格按照上表,具体地址后面解释。 2.Modbus协议编写步骤:很多设备厂家都会有自己的modbus协议,大多数都不是很标准    (1)分析板子的具体信息,编写不同的设备结构体,比如只读的结构体,可读写的结构体,保存配置信息的结构体(当主机发送改变配置信息的消息帧时,会改变相应的变量

C#基于NModbus实现MODBUSTCP字符串、浮点数读写

只愿长相守 提交于 2020-08-04 23:42:22
引用NModbus 在NuGet搜索NModbus,添加引用。 封装ModbusTcp类 public class ModbusTCP { private ModbusFactory modbusFactory; private IModbusMaster master; private TcpClient tcpClient; public string IPAdress { get; set; } public int Port { get; set; } public bool Connected { get => tcpClient.Connected; } public ModbusTCP(string ip, int port) { IPAdress = ip; Port = port; modbusFactory = new ModbusFactory(); tcpClient = new TcpClient(IPAdress, Port); master = modbusFactory.CreateMaster(tcpClient); master.Transport.ReadTimeout = 2000; master.Transport.Retries = 10; } public bool[] ReadCoils(byte slaveAddress,