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。

参考:

1. 基于linux平台串行通信协议df1的c语言程序设计

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. 1.Servlet介绍 和 HTTP协议简述

    1. Servlet是什么? sun公司制订的一种用来扩展web服务器功能的组件规范. (1)扩展web服务器功能 注: 早期的web服务器只能处理静态资源的请求,即需要事先将 html文件准备好,并 ...

  2. TCP握手协议简述

    TCP握手协议简述在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器 ...

  3. DF1协议常用命令

    PCCC:Programmable Controller Communication Commands. AB PLC常用指令 根据http://www.iatips.com/pccc_tips.ht ...

  4. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  5. Http,Socket,TCP/IP 协议简述

    Http,Socket,TCP/IP 协议简述:https://blog.csdn.net/gordohu/article/details/54097841 TCP/IP协议,HTTP协议与webSo ...

  6. python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术

    python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...

  7. FPGA实战操作(2) -- PCIe总线(协议简述)

    目录 1. PCIe基础知识 2. 事务层协议 2.1 数据包结构 2.2 帧头含义详述 3. 报文举例 3.1 寄存器读报文 3.2 完成报文 4. 机制简述 4.1 Non-Posted和Post ...

  8. websocket 协议简述

    WebSocket 是一种网络通信协议,RFC 6455 定义了它的通信标准,属于服务器推送技术的一种 由于 HTTP 无状态.无连接.单向通信的特性,导致 HTTP 协议无法实现服务器主动向客户端发 ...

  9. 即时聊天IM之一 XMPP协议简述

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com  综述: ...

随机推荐

  1. node fs相对路径

    如果在js里面使用了node.js的fs,在传入path参数时,如果使用相对路径,按照根目录的层级就是用就好. 比如:目录结构为: a -b -c -c1.js d 在c1.js中调用时,如果需要使用 ...

  2. CSS/H5保留显示 textarea输入的空格和换行

    .show { white-space: pre-wrap; }

  3. [LeetCode] 47. Permutations II 全排列之二

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  4. jquery.pagination.js的使用

    html页面 //要显示内容表格 <table id="gifts"> <tr class='first'> <th>时间</th> ...

  5. NetCore 开发时中文编码转换出现异常

    在C#编程的时候难免会遇到需要转换编码的场合. 在Framwork中可以用System.Text.Encoding解决,但是到了core会发现,虽然也有这个东西,但几个关键的中文编码(比如GB2312 ...

  6. Python爬取豆瓣电影top

    Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称  评分 ...

  7. Spring事物隔离级别及事物传播行为@Transactional实现

    阅读本篇文章前,请先阅读如下文章: 四种事物隔离级别详解 先看下@Transactional可以配制那些参数及以其所代表的意义. isolation 枚举org.springframework.tra ...

  8. EFCore代码实践

    参考:https://www.cnblogs.com/Wddpct/p/6835574.html 控制台程序依赖注入参考:https://www.cnblogs.com/Wddpct/p/721920 ...

  9. 基于 Docker 实现 DevOps 的一些探索

    DevOps 介绍 DevOps(Deveplopment 和 Operations 的简称),中译为开发运维一体化,可定义为是一种过程.方法.文化.运动或实践,主要是为了通过一条高度自动化的流水线来 ...

  10. mongodb数据库环境配置

    数据是每一前端人员必定接触的一样,所有的数据都是后端来编写,如果自己想练习项目,却没有数据,而是写一些假数据,去编写,或者通过json-server搭建一个数据,今天我们就通过MongoDB来搭建一个 ...