DF1协议简述
DF1协议
1. 概述
可编程控制器(PLC)因编程方便,抗干扰能力强,被广泛应用于各种领域。DF1协议是AB公司可编程控制器系统广泛支持的数据链路层通信协议,各系列可编程控制器及装有RSLinx通信软件的计算机均支持DF1协议。它的物理层建立在RS232和RS485等电气标准之上,针对不同的设备建立不同的应用层命令。综合物理层、数据链路层和应用层后能够完成基于DF1协议的通信。
2. 网络模型

相较于OSI网络模型,DF1协议应用涉及物理层、数据链路层和应用层。
DF1协议最大的特点是联合了ANSI x3.28规范中的D1(数据透明性)和F1(双向同时传输兼内部响应)。数据透明性是指报文格式简单和数据的可读性,双向同时传输兼内部响应是指在物理层的RXD和TXD上数据是同时传输的。DF支持全双工或半双工通信,对应不同的物理层网络拓补,全双工通信需要基于RS232/RS422等网络部署,半双工通信需要基于RS485网络部署。
3. DF1协议
3.1 DF1协议应用分类
DF1协议主要分两类:DF1半双工协议(主从通信)和DF1全双工协议(点对点通信)。
DF1半双工主从协议提供一种多支路单主多从网络,主机通过定时轮询从机启动通信。半双工协议是一种支持一主多从通信方式的协议,允许2到255个节点通过modems同时连接到单一链路上。如果只有一个从站,从站可以直接与主站相连。DF1全双工协议是点对点的通信协议,主要特定有:1)在点对点链路中允许同时收发数据;2)在多支路链路中的交互模块具有数据仲裁功能;3)高性能的协议实现程序应该尽可能的从传输媒介中获得大的数据流量。当通过AB通信模块连接交互模块时,通信模块自动完成仲裁功能。如果系统对实时性要求不高则采用半双工通信模式,反之采用全双工方式。
全双工和半双工通信的控制字符、数据帧格式、数据处理流程均不同,需区别处理。
3.2 DF1控制字符
DF1协议采用的是异步通信方式,数据是一帧一帧地发送。DF1协议的控制字符是ASCII码控制字符,通常由7位组成,需要在前面添加一位构成8位数据。DF1协议就是通过组合一些控制字符,构成特殊的控制信号和数据信号的。组成控制信号和数据信号的控制字符必须连续发送,中间不要再有其他字符。控制信号是固定不变的组合,而数据信号的内容是可变的。
全双工传送信号与半双工传送信号相比DLE NAK在这里没有reset作用,DLE ENQ也不是轮询报文开始标识,而是要求对方重新发送的标识,其他标识含义相同。半双工传送信号比全上工传送信号多出了DLE SOH(10 01)、DLE EOT(10 04)、STN等标识。DF1全双工主要通过两个主程序:发送主程序和接收主程序来实现发和收同时进行,这就体现了DF1的双向同时传输的特点。关于DF1全双工的实现流程比较简单,基本是一发一收,发送报文后通过收到的反馈情况来判断是否正确执行,若没有则重发,或显示错误等操作。
3.3 DF1报文帧格式
半双工协议使用下面3种报文帧格式:

全双工协议一般只使用半双工协议的第三种报文帧格式:从报文帧,格式如下:

一般情况下,应用消息帧格式如下:

DF1提供两种校验方式:BCC和CRC校验,BCC是一种累加校验算法,简单但功能有限,一般使用CRC校验。CF1的CRC校验虽然采用CRC-16标准,但与常用的CRC-16略有不同,其CRC初始寄存器值为0x0000H,而不是0XFFFFH。
参考:
2. 基于DF1协议的通讯在铝厂烟气净化监控系统中的应用实践
3. https://github.com/leicht/Df1
4. 基于AB DF1串口协议的无线控制方案在南京地铁BAS系统远程监控中的应用
5. DF1 Protocol and Command Set Reference Manual
6. Allen-Bradley on DF1
7. How to Connect to an Allen-Bradley SLC 500 PLC
8. 罗克韦尔官网
9. http://www.iatips.com/pccc_tips.html
DF1协议简述的更多相关文章
- 1.Servlet介绍 和 HTTP协议简述
1. Servlet是什么? sun公司制订的一种用来扩展web服务器功能的组件规范. (1)扩展web服务器功能 注: 早期的web服务器只能处理静态资源的请求,即需要事先将 html文件准备好,并 ...
- TCP握手协议简述
TCP握手协议简述在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器 ...
- DF1协议常用命令
PCCC:Programmable Controller Communication Commands. AB PLC常用指令 根据http://www.iatips.com/pccc_tips.ht ...
- Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用
Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...
- Http,Socket,TCP/IP 协议简述
Http,Socket,TCP/IP 协议简述:https://blog.csdn.net/gordohu/article/details/54097841 TCP/IP协议,HTTP协议与webSo ...
- python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术
python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...
- FPGA实战操作(2) -- PCIe总线(协议简述)
目录 1. PCIe基础知识 2. 事务层协议 2.1 数据包结构 2.2 帧头含义详述 3. 报文举例 3.1 寄存器读报文 3.2 完成报文 4. 机制简述 4.1 Non-Posted和Post ...
- websocket 协议简述
WebSocket 是一种网络通信协议,RFC 6455 定义了它的通信标准,属于服务器推送技术的一种 由于 HTTP 无状态.无连接.单向通信的特性,导致 HTTP 协议无法实现服务器主动向客户端发 ...
- 即时聊天IM之一 XMPP协议简述
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojit@qq.com 综述: ...
随机推荐
- Excel-基本操作
一.EXCEL的数据类型 1.字符型 2.数值型 3.日期型数据和时间型数据 二.快捷键 ctrl+上下左右健 快速选择某区域 上下左右单元格 ctrl+shift+上下左右 快速选择某个取悦 三. ...
- Linux学习笔记-第9天 与windows相同的分区知识
可能是因为之前自己已经对分区.引导.操作系统已经有了足够的认知和实践经验,也可能是因为这个知识已经看了三遍的原因.最近笔记有点少. 不是特别同意老师 新硬盘也可以不分区的关点.默认硬盘不分区应该是不能 ...
- vijos2054 SDOI2019 热闹的聚会与尴尬的聚会
题目链接 思路 首先观察题目最后的式子\(\lfloor \frac{n}{p + 1} \rfloor \le q\) 并且\(\lfloor \frac{n}{q+1} \rfloor \le p ...
- 《30天自制操作系统》笔记3 --- (Day2 上节)完全解析文件系统
Day2 汇编语言学习与Makefile入门 本文仅带着思路,研究源码里关于文件系统的参数 关于day2主程序部分及更多内容,请看<30天自制操作系统>笔记 导航 发现学习中的变化 源码差 ...
- DVWA CSRF 通关教程
CSRF 介绍 CSRF,全称Cross-site request forgery,即跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie.会话等),诱骗其点击恶意链接或者访问包含攻击代码 ...
- ES6模版字符串
传统的 JavaScript 语言,输出模板通常是这样写的(下面使用了 jQuery 的方法). $('#result').append( 'There are <b>' + basket ...
- nginx学习笔记2
nginx基础配置 一.nginx常用命令 nginx -s reload:在nginx已经启动的情况下重新加载配置文件(平滑重启) nginx -s reopen:重新打开日志文件 nginx -c ...
- Oracle Hint用法整理笔记
目录 1./+ result_cache / 2./+ connect_by_filtering / 3./+ no_unnset / 4./+ index(表别名 索引名) / 5./+ INDEX ...
- CyclicBarrier开启多个线程进行计算,最后统计计算结果
有一个大小为50000的数组,要求开启5个线程分别计算10000个元素的和,然后累加得到总和 /** * 开启5个线程进行计算,最后所有的线程都计算完了再统计计算结果 */ public class ...
- 提高性能,MySQL 读写分离环境搭建
这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...