精品干货分享—Free Protocol 自定通讯协议程序
- 格式:doc
- 大小:161.50 KB
- 文档页数:5
自控常见通讯协议6篇篇1合同协议甲方:_________乙方:_________根据《中华人民共和国合同法》及相关法律法规的规定,甲乙双方在平等、自愿、公平、诚实信用的基础上,就甲方购买乙方自控常见通讯协议产品事宜,达成如下协议:一、协议标的1. 甲方购买乙方自控常见通讯协议产品,包括但不限于以下产品:_________。
2. 乙方应提供产品的安装、调试、培训、技术支持等售后服务。
二、价格及支付方式1. 自控常见通讯协议产品的单价及总价以双方签订的合同为准。
2. 甲方应在合同签订后支付乙方全款。
三、交货及验收1. 乙方应在合同签订后按照甲方的要求及时交货。
2. 甲方在收到产品后,应按照合同约定及时进行验收,并签署验收报告。
四、售后服务及保修1. 乙方应提供产品的安装、调试、培训、技术支持等售后服务。
2. 自控常见通讯协议产品的保修期为一年,自验收之日起计。
在保修期内,如产品出现质量问题,乙方应负责免费维修或更换。
五、违约责任1. 甲方应按时支付货款,如逾期支付,则应承担相应的违约责任。
2. 乙方应按时交货并提供售后服务,如未能按时交付或提供售后服务,则应承担相应的违约责任。
六、争议解决1. 甲乙双方在履行合同时如发生争议,应首先通过友好协商解决;协商不成的,任何一方均可向有管辖权的人民法院提起诉讼。
2. 在争议处理过程中,除涉及争议的部分外,双方应继续履行各自的其他义务。
七、其他约定事项1. 本合同一式两份,甲乙双方各执一份。
本合同自双方签字或盖章之日起生效。
2. 本合同未尽事宜,可由甲乙双方另行协商补充,补充协议与本合同具有同等法律效力。
甲方(签字/盖章):_________日期:_________年_________月_________日乙方(签字/盖章):_________日期:_________年_________月_________日篇2合同协议甲方:XX公司乙方:XX公司鉴于甲乙双方在自控常见通讯协议方面存在合作关系,为了明确双方的权利和义务,达成如下协议:一、协议背景随着科技的快速发展和通讯技术的不断进步,自控常见通讯协议在各个领域的应用越来越广泛。
永宏FBs-PLC的自由通讯协议及应用引言电子技术的日益发展,通讯接口给工业控制的自动化集中控制带来巨大的变化,系统的分布控制,网络的远程监控等都是通过通讯来实现监控。
各个智能设备之间要进行正常通讯,首先要保证以下3个条件一致:通讯硬件界面相同;通讯参数设置一致;以及通讯协议一致。
在串口的通讯中,界面都已经是标准化,参数设定亦可透过设定来保持一致。
但在智能自动化设备中,由于品牌和产品都存在差异,对于同一种产品,不同的品牌就可能存在不同的通讯协议!所以,智能设备的通讯,设备的选择是关键!但针对同种协议的产品,就有可能缩小设备选型范围,势必会对系统的组成存在影响。
如造成成本的提升,系统得不到优化等问题。
现就针对通讯协议,介绍永宏PLC的自由口通讯协议做介绍。
即通过自由协议,可以跟任何一个智能设备进行连接,进行数据的传输。
大大方便了技术人员的选型,更有利控制系统的优化,性价比的提升!1. 系统硬件要求1.1 永宏FBs-PLC通讯功能永宏FBs-PLC提供相当强大的通讯功能,SoC单晶片中集合5个高速通讯端口。
主机自带一个通讯端口。
多样的扩展方式,可以选择通讯模块或者通讯板实现通讯端口的扩展,单一主机可以最多扩展至5个通讯端口;数据传输可以选择ASCII码或者速度快一倍的二进制码来传输;每个通讯端口通讯速率高达921.6Kbps;支持RS-232,RS-485,USB和Ethernet等界面;通讯协议提供永宏标准通讯协议,工业界通用的ModBus标准协议,以及自由口协议。
这里我们就永宏PLC的自由通讯协议做进一步探讨。
1.2 永宏PLC自由通讯协议简介所谓自由通讯协议,永宏PLC作为主站,根据通讯的从站设备通讯格式来编写通讯传输数据格式,以保证通讯格式的一致性。
在符合从站设备的数据格式时设备才能识别主站发送出来的命令要求,再根据命令来进行处理数据、做响应回复等工作。
这样将大大提高PLC控制对象的通讯接口兼容。
单片机自定义协议通信
首先,自定义协议通信的设计需要考虑数据帧的格式。
数据帧通常包括起始标志、地址信息、数据内容、校验位和结束标志等字段。
起始标志和结束标志用于标识数据帧的开始和结束,地址信息用于指示数据的发送方和接收方,数据内容是实际传输的信息,校验位用于检测数据的完整性和准确性。
其次,通信规则也是自定义协议通信设计的重要部分。
通信规则包括数据的发送和接收流程、数据帧的处理方式、重发机制、错误处理等。
在设计通信规则时,需要考虑通信的稳定性、实时性和可靠性。
另外,校验机制也是自定义协议通信设计中至关重要的部分。
常见的校验机制包括奇偶校验、CRC校验、校验和等,用于检测数据在传输过程中是否发生错误,以保证数据的准确性。
此外,单片机自定义协议通信还需要考虑通信的功耗、通信速率、通信距离等实际应用场景中的因素。
在实际应用中,需要根据具体的通信需求和环境来选择合适的通信协议设计方案。
总的来说,单片机自定义协议通信涉及到数据帧格式、通信规则、校验机制等多个方面的设计,需要综合考虑通信的稳定性、实时性、可靠性以及实际应用场景中的因素。
设计合理的自定义通信协议能够提高单片机系统的通信效率和可靠性。
串口通讯提供RS232与RS485串行口,以实现与上位机的通讯。
有三种协议:ASCII协议,Modbus协议和自由协议。
自由协议1、协议:数据格式:8位数据、1位停止位、无奇偶校验位传输速率:4800、9600(默认)、19200、38400、57600、115200、230400bps节、指令字节和内容字节,即除帧头和帧尾以外的剩余字节3、应答格式详细的指令集说明如下列章节所述。
※发送指令时注意帧头、地址、指令、内容、CRC校验、帧尾之间需空格。
※自由协议为十六进制,在串口助手上选择十六进制显示、十六进制发送5.1 握手指令格式:FE 01 00 CF FC CC FF(01为放大器地址,客户根据自己设定的地址输入。
)返回格式:FE 01 F1 CF FC CC FF握手指令主要用于判断设备是否上电初始化、通信是否正常和是否在线状态等。
※握手失败建议检查以下问题:1.线路是否连接正确;2.核实串口号是否与放大器连接串口号一致(放大器串口号怎么看,右击我的电脑,打开管理,选择设备管理器,双击端口,然后看到USB serial port+串口号),;3.电脑上波特率设置是否和放大器一致;4.数据格式是否正确;5.自由协议须选用十六进制显示和十六进制发送;6.串口是否打开。
5.2地址设置指令格式:FE 01 01 02 CF FC CC FF(使用前需解锁)返回格式:FE 01 F2 01 CF FC CC FF5.3波特率设置放大器出厂时默认波特率为9600,修改为115200,输入格式如下指令格式:FE 01 02 07 CF FC CC FF,手动发送指令后将系统波特率选择到115200(使用前需解锁)返回格式:FE 02 F2 01 CF FC CC FF (应答的数据是在变送器切换成新的波特率后返回的,如果上位机未及时切换到新的波特率,则无法收到数据)5.4协议类型设置协议可通过拨码开关设置,参考1.2.4,也可通过软件设置指令格式:FE 01 04 01 CF FC CC FF返回格式:FE 01 F2 01 CF FC CC FF00(自由协议),01(Modbus 协议),02(ASC协议),协议类型切换后,数字帧格式将恢复成默认值。
----在自由口模式下,通信协议是由用户定义的。
用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。
在自由口模式下,通信协议完全由梯形图程序控制。
指令格式定义计算机每次发送一个33字节长的指令来实现一次读/写操作,指令格式见表1 说明:起始字符----起始字符标志着指令的开始,在本例中被定义为ASCII码的“g”,不同的PLC从站可以定义不同的起始字符以接收真对该PLC的指令。
指令类型----该字节用来标志指令的类型,在本例中05H代表读操作,06H代表写操作。
目标西门子PLC站地址----目标PLC站地址占用指令的B2、B3两个字节,以十六进制ASCII码的格式表示目标西门子PLC的站地址。
目标寄存器地址----在西门子PLC内部可以用4个字节来表示一个寄存器的地址(但不能表示一个位地址)。
前两个字节表示寄存器类型,后两个字节表示寄存器号。
读/写字节数M----当读西门子plc的命令时,始终读回从目标寄存器开始的连续8个字节的数据(转换为十六进制ASCII码后占用16个字节),可以根据自己的需要取用,M可以任意写入。
----当写命令时,M表示的是要写入数据的十六进制ASCII码所占用的字节数。
例如要写入1个字节的数据,数据在指令中以十六进制ASCII码表示,它将占用2个字节,此时应向M中写入“02”。
同理,如果要写入5个字节的数据,M中应写入“0A”。
要写入的数据----要写入西门子plc的数据在指令中以十六进制ASCII码的格式表示,占用指令的B14-B29共16个字节。
数据区必须填满,但只有前M个字节的数据会被写入目标寄存器。
一条指令最多可以写入8个字节的数据(此时M中应写入“10”,代表十进制的16)艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有 10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
ftp通信协议书甲方(发送方):_____________________地址:_____________________________法定代表人:________________________联系电话:_________________________乙方(接收方):_____________________地址:_____________________________法定代表人:________________________联系电话:_________________________鉴于甲方希望将特定数据通过FTP(File Transfer Protocol)方式传输给乙方,乙方同意接收该数据,双方本着平等自愿、诚实信用的原则,经协商一致,特订立本FTP通信协议书。
第一条定义1.1 FTP:指文件传输协议,是一种用于在网络上进行文件传输的标准网络协议。
1.2 数据:指甲方通过FTP协议传输给乙方的电子文件或信息集合。
1.3 传输:指甲方通过FTP协议将数据发送至乙方的行为。
第二条传输内容2.1 甲方应确保传输的数据符合国家法律法规和相关行业标准。
2.2 乙方应确保接收的数据仅用于约定的合法目的。
第三条传输方式3.1 甲方应使用安全的FTP服务器进行数据传输。
3.2 乙方应提供必要的FTP客户端软件和网络环境以接收数据。
第四条数据安全与保密4.1 甲方应采取适当的安全措施,确保数据在传输过程中的安全。
4.2 乙方应妥善保管接收到的数据,防止数据泄露或被未授权访问。
第五条传输时间与频次5.1 双方应协商确定数据传输的具体时间。
5.2 传输频次应根据双方的实际需要和约定进行。
第六条传输费用6.1 甲方负责支付因FTP传输产生的所有费用。
6.2 乙方不承担因接收数据而产生的任何费用。
第七条违约责任7.1 如甲方未能按时传输数据,应承担由此给乙方造成的损失。
7.2 如乙方未能妥善保管接收到的数据,导致数据泄露或被未授权访问,应承担相应的法律责任。
abb串口自开发通讯协议ABB串口自开发通讯协议一、引言ABB是全球工控自动化领域的领导者,其产品广泛应用于工业自动化控制系统,ABB的通讯协议也是众多工控设备中的核心通讯标准之一。
然而,虽然ABB已经提供了多种通讯协议,但有时候仍需要根据特定需求开发自己的通讯协议。
本文将介绍一种基于ABB串口的自开发通讯协议。
该通讯协议适用于工控设备之间的数据传输与通讯控制,具有高效、稳定的特点,可以满足不同的通讯需求。
二、通讯协议框架该通讯协议基于ABB串口通讯协议,通过定义一组规范的数据格式和通讯命令,实现设备之间的数据传输和通讯控制。
1. 数据格式为了保证数据的正确传输和解析,数据格式需要定义明确的规范。
在该通讯协议中,数据格式如下:帧头源地址目标地址数据长度数据校验和帧尾其中,帧头和帧尾是固定的字节,用于标识一帧数据的开始和结束;源地址和目标地址分别表示数据的来源和目标设备;数据长度表示数据的字节数;数据是实际需要传输的内容;校验和用于验证数据的完整性和正确性。
2. 通讯命令通讯命令是设备之间进行通讯控制和数据传输的关键。
在该通讯协议中,通讯命令分为读和写两种类型。
读命令用于从目标设备读取数据,可以通过定义不同的命令代码和参数来实现对目标设备的不同功能读取。
写命令用于向目标设备写入数据,也需要定义不同的命令代码和参数来实现对目标设备的不同功能写入。
三、通讯协议详解1. 帧头和帧尾帧头和帧尾是用于标识数据帧的开始和结束的固定字节序列。
在该通讯协议中,帧头和帧尾分别为0xAA和0xBB,长度均为1个字节。
2. 源地址和目标地址源地址和目标地址分别用于表示数据的来源和目标设备。
在该通讯协议中,源地址和目标地址的长度均为2个字节。
3. 数据长度数据长度用于表示数据的长度,即数据字段的字节数。
在该通讯协议中,数据长度的长度为1个字节。
4. 数据数据字段用于实际的数据传输。
通常情况下,数据字段被分为多个子字段,每个子字段都有自己的数据类型和含义。
如何编写自由口协议程序,自由口通信的基本步骤
前面以S7-200SMART与英威腾变频器进行自由口通信为例详细讲解了自由口通信的方法及步骤,本文再带大家一起来学习与V20变频器进行自由口通信的程序编写方法。
V20支持标准的modbusRTU协议,真正使用时可以使用modbus通信,本文主要是教大家如何编写自由口协议程序。
总结了一下自由口通信的基本步骤如下:
1.研究弄懂对方的通信协议。
自由口也称自由协议或无协议通信,即通信双方没有共同的通信协议,只能临时根据某一方的协议进行发送和接收数据,以达到交换数据的目的。
那幺意味着每次书写的程序没有固定格式,不仅需要变成人员能掌握程序的编写,还要求编程人员能快速的读懂对方的通信协议。
查阅V20变频器手册得知,FC3 - 读保持寄存器读保持寄存器命令格式:
变频器响应反馈数据格式:
FC6 - 写单一寄存器命令格式:。
作业1模拟串行通讯一、作业背景题目:模拟串行通讯一、题目:通过数字通道进行两个计算机系统的通讯二、目标:设计、实现一个用于数字通道串行通讯的协议三、思路与方法1. 硬件2. 软件CLK 上升沿检测DTA 的值,作为1bit ,存入寄存器中。
3. 编写程序并测试二、课程作业方案设计(一)自定义协议格式START帧头 数据长度 标识 数据 数据效验 帧尾 1Byte1Byte 1Byte 1Byte 1Byte 2Byte 1Byte 0x53 0xFE 0x01 0xDD 0x0D0C 0xFF1、起始标志:协议数据帧开始的标志,保留字为0x53。
2、帧头:同其他设备通信时首要的一致性保证,此次为0xFE 。
计算机1 计算机2GND CLKDTA3、数据长度:表示当前数据包的大小。
4、标识:可以自定义,对于不同的数据包,采用不同的标识。
比如当为温度采样问题时,该为温度采集器序号。
当为湿度采样问题时,该为湿度采集器序号。
5、真实数据:发送的数据内容,对于温度采样问题。
6、数据校验:根据前述数据所得的CRC32校验码。
7、结束标志:即帧尾,协议数据结束的标志,保留字为0xFF。
(二)、自定义协议详解1、自定义协议采用的是端到端的通信。
2、自定义的通信协议采用2条信号线,1条时钟线(CLK)和1条数据线(DTA),属于串行半双工通信。
每个从设备有自己的标识、帧头、数据、数据长度、数据校验、帧尾,主设备发送START信号(0x53)后,紧跟着发送想要数据的帧头(0xFE),当验证了帧头之后,该数据包即是我们所需的对应数据包。
3、CLK上升沿检测DTA的值,作为1bit,存入寄存器中。
没有数据传输时,DAT上恒保持高电平。
4、START信号:当检测到DAT的值为0x53时,开始传输数据。
5、帧头:0xFE—>即在CLK时钟的8个周期内,此时传输了8bit数据为1111 1110时(即0xFE),该数据包即是正确的数据包,在第一个字节后,主机立即读从机,开始接收该数据包。
自定义CAN通信协议一、资源节点分配。
1.I/O输入地址00H---1FH2.I/O输出地址20H----3FH3.模拟量输入地址40H---5FH4.模拟量输出地址60H---7FH5.设备标识地址80H----9FH6.通信参数地址A0H----BFH6.1. A0H 本机物理地址(生产者地址)6.2. A1H 主机物理地址(消费者地址1默认第一个为主机地址0)6.3 A2H 主机物理地址(消费者地址2)6.4 A3H 主机物理地址(消费者地址3)6.5 A4H 主机物理地址(消费者地址4)6.6 A5H 主机物理地址(消费者地址5)6.7 A6H 主机物理地址(消费者地址6)A7H 从机物理地址(服务者地址1)A8H 从机物理地址(服务者地址2)A9H 从机物理地址(服务者地址3)AAH 从机物理地址(服务者地址4)ABH 从机物理地址(服务者地址5)ACH 从机物理地址(服务者地址6)6.8. ADH CAN波特率(1=10K,2=50K,3=100K,4=200K,5=500K)6.9. AEH 用户设置波特率(1=10K,2=50K,3=100K,4=200K,5=500K)6.10. AFH 从站循环发送时间单位为2ms6.11 B0H 节点心跳时间单位5ms6.12 B1H 节点发送数据方式(0主从方式。
1循环发送。
2主动发送。
)6.13 B2H 节点主动发送的资源节点起始地址6.14 B3H 节点主动发送的数据量6.15 B4H 本机为主机或者从机7. 自定义地址区域C0H----FFH二、29位标识符分配1. 物理地址分配28—23位(源地址)2. 目的地址分配22----17位3. 功能码地址分配16——13位4. 被操作的资源节点起始地址分配12---5位5. 主动帧/应答帧分配4位6. 保留位3----0位三、数据域分配第一个数据为分段码。
(6---7位表示分段标识,0----5位表示分段计数器)四、功能码编码1. 00H保留2.01H删除连接3. 02H建立连接4. 03H通信参数设置5. 04H写连续的资源节点6. 05H读连续的资源节点7. 06H节点心跳(由从机主动发送节点心跳)此功能码不用应答8.07H五、功能码解析1. 01H删除连接和02建立连接:一个节点可以是其他节点的主机也可以是其他节点的从机,但是在整个网络中绝对主机是地址为00的主机,他管理整个网络的网络联机,即各个相对主机的分配或者取消,网络参数的设置由00绝对主机设置。
信捷触摸屏自定义通讯协议操作手册无锡信捷电气股份有限公司资料编号HC083 20120924 2C6目录1 概述 (3)2 协议设置 (4)2-1 了解协议设备对象 (4)2-2 注册及创建协议文件 (5)2-3 编写协议文件 (7)2-3-1 简介 (7)2-3-2 在哪里编写协议代码 (7)2-3-3 协议代码的结构 (8)2-3-4 设置步骤 (8)1 概述■什么叫自定义通讯协议?自定义通讯协议的意思就是:借助触摸屏自定义协议方式,编写协议驱动文件,以实现与触摸屏软件中不支持设备的通讯。
■为什么要使用自定义通讯协议?通信协议又称通信规程,是指通信双方对数据传送控制的一种约定。
约定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。
也就是说触摸屏与设备之间的沟通必须讲述相同的语言,才能互相传输信息。
在触摸屏编辑软件Touchwin里,已自带了市面上主流PLC,变频器和仪表等设备的通讯协议,用户只需要针对自己的设备在触摸屏里选择相应的协议即可实现通讯。
图示:设备列表但是如果用户的设备不在通讯设备选择列表中,请先阅读该设备所支持的通讯协议,因为该设备的协议可能与设备列表中已存在的设备协议相同,例如被广泛使用的modbus协议。
如果确认在设备列表中没有支持该设备的协议,这种情况,就必须借助触摸屏自定义协议方式,编写协议驱动文件。
2 协议设置2-1 了解协议设备对象为了更好的理解自定义协议的制作过程,这里我们以仪表V900(注:V900是一个虚构的名称)的自由格式通讯协议的编写过程为例:仔细阅读仪表V900的通讯协议,确定需要发送和接受的代码信息。
根据用户的要求,需要在触摸屏上显示“当前重量”,“流量”显示和“目标量”。
V900的地址空间分布当前重量H42 流量H43目标量H44V900 读寄存器通讯格式发送信息站号读指令功能码03目标寄存器地址和校验V900回复信息站号寄存器内容高字节寄存器内容低字节和校验V900的站号设置为1,波特率设为9600,偶校验,8位数据位,1位停止位。
⾃定义应⽤层通信协议基于传输层TCP协议,⾃定义实现⼀个应⽤层协议⼀:回顾JsonCpp⼆:实现⾃定义应⽤层(⼀)协议分类1.按编码⽅式⼆进制协议:⽐如⽹络通信运输层中的tcp协议。
明⽂的⽂本协议:⽐如应⽤层的http、redis协议。
混合协议(⼆进制+明⽂):⽐如苹果公司早期的APNs推送协议。
2.按协议边界固定边界协议:能够明确得知⼀个协议报⽂的长度,这样的协议易于解析,⽐如tcp协议。
模糊边界协议:⽆法明确得知⼀个协议报⽂的长度,这样的协议解析较为复杂,通常需要通过某些特定的字节来界定报⽂是否结束,⽐如http协议。
(⼆)协议设计本协议采⽤固定边界+混合编码策略。
⽤于传输Json数据(命令)1.协议头8字节的定长协议头。
⽀持版本号,基于魔数的快速校验,不同服务的复⽤。
定长协议头使协议易于解析且⾼效。
2.协议体变长json作为协议体。
json使⽤明⽂⽂本编码,可读性强、易于扩展、前后兼容、通⽤的编解码算法。
json协议体为协议提供了良好的扩展性和兼容性3.协议图(三)设计协议结构const uint8_t MY_PROTO_MAGIC = 8; //协议魔数:通过魔数进⾏简单对⽐校验,也可以像之前学的CRC校验替换const uint32_t MY_PROTO_MAX_SIZE = 10*1024*1024; //10M协议中数据最⼤const uint32_t MY_PROTO_HEAD_SIZE = 8; //协议头⼤⼩//协议头部struct MyProtoHead{uint8_t version; //协议版本号uint8_t magic; //协议魔数uint16_t server; //协议复⽤的服务号,⽤于标识协议中的不同服务,⽐如向服务器获取get 设置set 添加add ... 都是不同服务(由我们指定)uint32_t len; //协议长度(协议头部+变长json协议体=总长度)};//协议消息体struct MyProtoMsg{MyProtoHead head; //协议头Json::Value body; //协议体};(四)实现协议封装函数//协议封装类class MyProtoEncode{public://协议消息体封装函数:传⼊的pMsg⾥⾯只有部分数据,⽐如Json协议体,服务号,我们对消息编码后会修改长度信息,这时需要重新编码协议uint8_t* encode(MyProtoMsg* pMsg, uint32_t& len); //返回长度信息,⽤于后⾯socket发送数据private://协议头封装函数void headEncode(uint8_t* pData,MyProtoMsg* pMsg);};//----------------------------------协议头封装函数----------------------------------//pData指向⼀个新的内存,需要pMsg中数据对pData进⾏填充void MyProtoEncode::headEncode(uint8_t* pData,MyProtoMsg* pMsg){//设置协议头版本号为1*pData = 1;++pData; //向前移动⼀个字节位置到魔数//设置协议头魔数*pData = MY_PROTO_MAGIC; //⽤于简单校验数据,只要发送⽅和接受⽅的魔数号⼀致,则接受认为数据正常++pData; //向前移动⼀个字节位置,到server服务字段(16位⼤⼩)//设置协议服务号,服务号,⽤于标识协议中的不同服务,⽐如向服务器获取get 设置set 添加add ... 都是不同服务(由我们指定)//外部设置,存放在pMsg中,其实可以不⽤修改,直接跳过该地址*(uint16_t*)pData = pMsg->head.server; //原⽂是打算转换为⽹络字节序(但是没必要)⽹络中不会查看应⽤层数据的pData+=2; //向前移动两个字节,到len长度字段//设置协议头长度字段(协议头+协议消息体),其实在消息体编码中已经被修正了,这⾥也可以直接跳过*(uint32_t*)pData = pMsg->head.len; //原⽂也是进⾏了字节序转化,⽆所谓了。
freemodbus 结构英文回答:Freemodbus is an open-source communication protocol stack that is widely used in industrial automation systems for implementing Modbus communication. It provides a set of functions and data structures that allow developers to easily integrate Modbus communication into their applications.The main data structure used in Freemodbus is called "modbus_t". This structure contains all the necessary information for setting up and managing a Modbus communication session. It includes fields such as the communication port, baud rate, slave address, and various flags for controlling the behavior of the communication.Here is an example of how the modbus_t structure can be used in a C program:c.#include <freemodbus.h>。
modbus_t modbus;int main() {。
// Initialize the modbus structure.modbus_init(&modbus);// Set the communication port and baud rate. modbus.port = "/dev/ttyUSB0";modbus.baud = 9600;// Set the slave address.modbus.slave = 1;// Enable the "read-only" flag.modbus.read_only = true;// Connect to the Modbus slave.modbus_connect(&modbus);// Read data from the slave.uint16_t data;modbus_read_registers(&modbus, 0, 1, &data); // Print the read data.printf("Read data: %d\n", data);// Disconnect from the Modbus slave.modbus_disconnect(&modbus);return 0;}。
串口通信协议编写过程1.确定通信需求:首先,要确定通信的目标和需求。
例如,是仅用于数据传输,还是需要实现一些控制命令?需要考虑数据传输的速率、数据帧格式以及错误检测恢复机制等。
2.选择数据帧格式:在确定了通信需求之后,需要选择合适的数据帧格式。
常用的数据帧格式包括字符格式和二进制格式。
字符格式通常使用ASCII码表示数据,而二进制格式直接传输二进制数据。
根据具体需求选择合适的格式。
3.设计数据帧结构:根据选择的数据帧格式,设计数据帧的结构。
数据帧通常由起始位、数据位、校验位和停止位等组成。
起始位用于标识帧的开始,数据位用于传输数据,校验位用于检测数据传输过程中的错误,停止位用于标识帧的结束。
4.确定命令和数据格式:如果需要实现控制命令,需要确定可以发送和接收的命令和数据格式。
可以定义不同的指令类型,并为每种指令定义参数格式和数据格式。
5.定义通信协议控制流程:根据通信需求,定义通信协议的控制流程。
例如,如果通信需要进行握手操作,需要定义握手协议的流程,包括请求握手、应答握手和确认握手等步骤。
6.设计错误检测和恢复机制:为了保证数据传输的可靠性,通常需要设计错误检测和恢复机制。
常用的错误检测和恢复机制包括奇偶校验、循环冗余校验(CRC)和重发机制等。
根据通信需求,选择合适的机制。
7.定义协议细节和约束:在编写协议的过程中,需要定义协议的各个细节和约束。
例如,定义数据帧的最大长度限制、通信速率的限制和错误恢复的时间间隔等。
8.编写协议文档:将协议的各个方面编写成文档,包括协议的结构、格式和控制流程等。
文档需要提供足够的信息,以便其他开发人员能够理解和实现该协议。
9.测试和验证协议:在完成协议编写之后,需要进行测试和验证。
可以编写测试用例,模拟不同的通信场景,确保协议的正确性和可靠性。
10.修改和优化协议:如果在测试和验证过程中发现问题,需要根据问题进行修改和优化。
可以根据实际需求进行协议的改进,提高通信的效率和可靠性。
1 / 5 关于自由口通讯协议 此协议为亚控公司为实现组态王与德国西门子公司SIMATIC S7-200系列PLC之间的通讯而制定的串行通讯协议,采用主从的问答方式,上位机为主呼方,下位机为应答方。协议格式如
下,最后一字节为校验字节,校验字节为前面所有字节的按位异或值。 上位机从PLCxx读数据: 上位机发送读指令: BYTE1: PLC地址(1~255) BYTE2: 0x00 (读指令代码) BYTE3:寄存器类型(0-V, 1-Q, 2-I) BYTE4-5:起始偏移地址(0-99) BYTE6:数据个数(1~32 n) BYTE7:数据类型(1,2,4 m) BYTE8-11:保留 BYTE12:校验字节 PLC应答: 读成功时: BYTE1: PLC地址(1~255) BYTE2: 0x00 (读指令代码) BYTE3:寄存器类型(0-V, 1-Q, 2-I) BYTE4-5:起始偏移地址(0-99) 2 / 5
BYTE6:数据个数(1~32 n) BYTE7:数据类型(1,2,4 m) BYTE8-n*m+8:数据 BYTEn*m+9:校验字节 读失败时: BYTE1: PLC地址(1~255) BYTE2: 0x80 (读指令失败代码) BYTE3:寄存器类型(0-V, 1-Q, 2-I) BYTE4-5:起始偏移地址(0-99) BYTE6:数据个数(1~32 n) BYTE7:数据类型(1,2,4 m) BYTE8: 0x01(校验错代码) BYTE9-11:保留 BYTE12:校验字节 上位机向PLCxx写入数据: 上位机发送写指令: BYTE1: PLC地址(1~255) BYTE2: 0x01 (写指令代码) BYTE3:寄存器类型(0-V, 1-Q, 2-I) BYTE4-5:起始偏移地址(0-99) BYTE6:数据个数(1 n) 3 / 5
BYTE7:数据类型(1,2,4 m) BYTE8-11:写入数据 BYTE12:校验字节 PLC应答: 写成功时: BYTE1: PLC地址(1~255) BYTE2: 0x01 (写指令代码) BYTE3:寄存器类型(0-V, 1-Q, 2-I) BYTE4-5:起始偏移地址(0-99) BYTE6:数据个数(1 n) BYTE7:数据类型(1,2,4 m) BYTE8-11:保留 BYTE12:校验字节 写失败时: BYTE1: PLC地址(1~255) BYTE2: 0x81 (写指令代码) BYTE3:寄存器类型(0-V, 1-Q, 2-I) BYTE4-5:起始偏移地址(0-99) BYTE6:数据个数(1 n) BYTE7:数据类型(1,2,4 m) BYTE8: 0x01(校验错代码) 4 / 5
信捷触摸屏自定义通讯协议操作手册信捷科技电子有限公司1 概述 (3)2 协议设置 (4)2-1 了解协议设备对象 (4)2-2 注册及创建协议文件 (5)2-3 编写协议文件 (8)2-3-1 简介 (8)2-3-2 在哪里编写协议代码 (8)2-3-3 协议代码的结构 (8)2-3-4 设置步骤 (9)■什么叫自定义通讯协议?自定义通讯协议的意思就是:借助触摸屏自定义协议方式,编写协议驱动文件,以实现与触摸屏软件中不支持设备的通讯。
■为什么要使用自定义通讯协议?通信协议又称通信规程,是指通信双方对数据传送控制的一种约定。
约定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。
也就是说触摸屏与设备之间的沟通必须讲述相同的语言,才能互相传输信息。
在触摸屏编辑软件Touchwin里,已自带了市面上主流PLC,变频器和仪表等设备的通讯协议,用户只需要针对自己的设备在触摸屏里选择相应的协议即可实现通讯。
图示:设备列表但是如果用户的设备不在通讯设备选择列表中,请先阅读该设备所支持的通讯协议,因为该设备的协议可能与设备列表中已存在的设备协议相同,例如被广泛使用的modbus协议。
如果确认在设备列表中没有支持该设备的协议,这种情况,就必须借助触摸屏自定义协议方式,编写协议驱动文件。
2-1 了解协议设备对象为了更好的理解自定义协议的制作过程,这里我们以仪表V900(注:V900是一个虚构的名称)的自由格式通讯协议的编写过程为例:仔细阅读仪表V900的通讯协议,确定需要发送和接受的代码信息。
根据用户的要求,需要在触摸屏 上显示“当前重量”,“流量”显示 和“目标量”。
V900的通讯回复: 01 (回复内容高字节)(回复内容低字节) sumcheck;2.读流量: H01 回复:01 sumcheck;3.读目标量: H01 回复:01 sumcheck;2-2 注册及创建协议文件■简介在编辑软件的设备列表中注册V900的选项,并且建立协议的载体文件。
精品干货分享—Free Protocol 自定通讯协议程序
1.范例操作概述
由于工业控制设备多样化,为避免EB8000可提供的通讯驱动的不足,使用者可利用[宏指令]编辑自定的通讯协议封包,来发送通讯命令格式并操控外部设备,以提升设备控制的效率。
[宏指令]以OUTPORT 和INPORT做为封包发送与接收的主要两个函
数命令,其中封包格式内容必须按照外部设备的通讯协议来定义。
2.规划说明
1.新建设备类型在设备列表中,此设备选择为[Free Protocol]
并取名为[MODBUS RTU device]。
(此范例利用MODBUS
PROTOCO做为设计范例,故取名为MODBUS RTU
device)
2.分别在宏指令列表中建立不同命令,以对外部设备做[读/写]
的操作控制,完整详细的指令说明请参考[宏指令]章节。
3.设置[位显示对象LB0]和[位设定对象],后者触发[宏指令]
列表中ID5,则[位显示对象LB0]则会显示设备中对应0x1的实际状态。
4.设置[数值输入元件]和[位设定元件],后者触发[宏指令]列表
中ID4,则[数值输入元件LW100 & 101]则会显示设备中对应4x1 & 4x2的实际数值状态。
5.设置[功能键]触发[宏指令]列表中ID1 & ID2,则可对设备地
址0x1做写入ON或OFF,以改变设备中对应bit地址的实际状态。
同理,建立[数值输入元件LW30 & 31]及[功能键]来触发ID3,当ID3被触发时,LW30 & 31的数据则会写入设备对应的4x1 & 4x2地址中。
6.建立数值显示对象,以读取设备回复的资料长度及内容。
3.元件列表
列表中项目说明此范例使用到的对象及功能说明。
元件ID说明
位显示灯BL0To read the 0x1 status. (LB0)位设定SB1Toggle the macro ID5.
SB0Toggle the macro ID4.
数值显示ND2Device’s value (4x1).
ND2Device’s value (4x2).
功能键FK1Set 0x1 ON
FK0Set 0x1 OFF
FK2Write (4x1, 4x2)
数值显示ND0Response length
Others ND Response data。