DPM 串行协议


DPM 的串行通信协议

(Dilbertian 协议修改)

请注意协议名称
名称 “Dilbertiano” 来自本议定书的第一个版本, 我们叫 “国内流离失所者倒 Dilbertian 协议” (2010), 零出席与单元格 “关闭” 与单元格 “大” (“0” 瘦和 “1” 脂肪 – 按照以下的小插图来自 “呆伯特” 由 Scott Adams – www.dilbert.com).

英语

意大利语
dilbertian_one


因为新的协议 ?

Theremino 系统的目的是为 PC 提供简单的输入输出系统, 价格便宜,易于使用. 使它易于使用的自动编号都需要与它们的类型的识别, 链接的成本最小化,简化沟通是必要上只有一根电线.

有是一个类似的协议,我们不得不把它写. 当前版本收集最好的多年的实验和研究.

下载此文档 PDF 格式:
Theremino 系统 - DPM_Protocol_2015_ENG.pdf
Theremino 系统 - DPM_Protocol_2015_ITA.pdf


功能

  • 单线双向串行通信.
  • 自动配置.
  • 自动检测连接的设备.
  • 从设备的数量 1 只有在 200.
  • 传输和接收的字节数取决于设备的类型.
  • 传输速度达 4 兆比特每秒传输大量的数据与短电缆.
  • 传输速度达 100 千比特每秒的长电缆 (高达 10 公里).
  • 高效率的沟通 (从 10 只有在 20 在可以比大的倍).


电动百叶窗

对单一导线的传输发生, 但你需要一个参考质量和电源电压, 到哪里电线,通常是三个.

任何支持 DPM 的设备必须有一个输入的连接器 (对母版) 和一个输出到下游设备 (奴隶)

连接器通常使用的 3 政策, 与间距的 2.54 毫米.

关于通信链应该有一位主 (提供电源和计时) 和叶栅中连接的设备数 (称为奴隶).

主提供线的张力是 5 V, 与相同公差和相同的最大电流的 5 V,退出 USB 连接器.

主人可以提供的最大电流限制可以连接的设备的类型和数目. 这种电流, 通常是 250 但, 和可达的增加 500 但. 复习一下,会超出容量的 USB ’ 和会强加到连接器不寻常的特征.

可连接的设备的最大数目被有限的由以下因素:
– 最大电流, “硕士” 可以提供.
– 最大线熊在周期时间的水稻传输的字节数.

这两个 “硕士” 那 “奴隶” 连接到同一个阻尼电阻线, 它也作为一个低通, 无线电干扰和过电压保护. 这个电阻的值通常是从 33 只有在 330 欧姆


播放格式

使用非零返回格式 (非归零码) 标准.

默认格式 = 8, N, 1
– 1 起始位
– 8 数据位
– no-parity
– 1 停止位


水平的数据线 “Com。 线”

一旁的线到上一级 (3.3 V)
信号 “1” 用来表示 3.3 V
信号 “0” 用来表示 0 Vdilbertian two


重复次数和吞吐量

传输速度
使用低速时的长度, 和这样的连接电缆的容量, 高. 当距离短和高速度可能用于与大量的设备进行通信 (或与需要大量字节的设备进行通信) 从建立命名速度 “1” (1 k 比特/秒) 高达 “12” (4 兆比特每秒)

最大字节数
根据波特率可以传输的字节的最大数目是下表中列出.


时间, 距离和的字节数

速度
位的时间
第二次
字节
每个
15女士
字节每
30女士
最大距离
最大容量
奴隶
最大
数量
1
1 女士
1K
1
3
10 公里
1 UF
3
2
500 我们
2K
3
6
5 公里
500 NF
6
3
200 我们
5K
4
8
2 公里
200 NF
15
4
100 我们
10K
15
30
1 公里
100 NF
30
5
50 我们
20K
30
60
500 m
50 NF
60
6
20 我们
50K
40
80
200 m
20 NF
150
7
10 我们
100K
150
300
100 m
10 NF
160
8
5 我们
200K
300
600
50 m
5 NF
80
9
2 我们
500K
400
800
20 m
2 NF
32
10
1 我们
1M
1500
3000
10 m
1 NF
16
11
500 NS
2M
3000
6000
5 m
500 PF
8
12
250_nS
4M
6000
12000
2.5 m
250 PF
4

所有设备必须至少都实现速度 “7” 这被认为是默认速度. 如果你想要设置不同于速度 “7” 链中的所有设备都必须都支持它.

的 “最大距离” 取决于电缆的特点, 表中的值被计算从屏蔽电缆 RG58 50 欧姆每米 100pF 的能力.

在低速度的数量 “奴隶” 可以传送的最大字节数受限制 30 毫秒. (每个奴隶使用至少一个字节和你声称的重复速度不够快,使流体运动)

高的速度,数目 “奴隶” 受到的最大容量的限制, 每个 “奴隶” 大约添加的能力 40..60 PF,大约减少了最大距离 50 厘米.

容量是根据每个 30pF 计算 “奴隶” 再加上其他 20pF 从连接电缆 20 厘米和其他 10pF 考虑到适当的附加阻力 “双边开关” (总计: 60PF)


最大电缆长度的通信比电源电流和电阻每米

电缆 类型 —>
最大电流
( 峰值电流 )
H1500/H1000/H500/H155/RG11
20 毫欧姆
或更少
每米
Rg58 /Rg59u/H155 /
网络电缆
关于
50 毫欧姆
每米
Rg59/RG6 /电话绞线 /
网络电缆
关于
100 毫欧姆
每米
10 但 1 公里 400 m 200 m
20 但 500 m 200 m 100 m
50 但 200 m 80 m 40 m
80 但 125 m 50 m 25 m
100 但 100 m 40 m 20 m
200 但 50 m 20 m 10 m
400 但 25 m 10 m 5 m
500 但 20 m 8 m 4 m
800 但 12.5 m 5 m 2.5 m
1 在 10 m 4 m 2 m

距离的计算中,我们考虑到,电压跌落在地上, 不超过 200 MV. 在电源线上的电压降, 不会造成传输错误, 它还可以更高 (的 5 V 可以滴落下来 3.3 V 在不创建问题) 在地面上的屏蔽电缆的情况下是屏幕, 通常具有更少的阻力比申报, 这样的距离会更大.


电缆容量

值 “最大长度” 如上表所示是仅对连接电缆与承载力约有效 100 PF 每米. 下表显示的更正申请的最常用的电缆.

电缆
外部
直径
( 毫米 )
阻抗
( 欧姆 )
能力
(PF/吨。)
电阻
(毫欧
/ 米)
最大长度校正
H1500
15
50
80
4
x 1.25
H1000
10.3
50
80
11
x 1.25
Rg213
10.3
50
100
H500
9.8
50
82
15
x 1.22
H155
5.8
50
82
32
x 1.22
Rg8
10
52
90
Rg11 (电视)
10.3
75
60
21
x 1.7
RG59 (电视)
6.15
75
67
159
x 1.5
RG6_(电视坐)
6.8
75
51
100
x 2.0
在 RG56 / _(电视)
6.9
75
53
x 2.0
RG59/U _(电视)
4.5
75
53
45
x 2.0
Rg58
5.2
50
100
53
Rg142
4.95
50
96
Rg174
2.8
50
100
Rg178
1.85
50
95
Rg179
2.55
75
64
x 1.5
RG187
2.7
75
65
x 1.5
Rg188
2.7
50
95
Rg196
1.9
50
93
Rg316
2.5
50
95
网线
分钟 50
最大 130
分钟 60
最大 200
x 2.0
x 0.7
PC 音频电缆
分钟 120
最大 300
分钟 500
最大 3000
x 0.8
x 0.5
音器
电缆
分钟 60
最大 300
x 1.7
x 0.3
扭曲的电话线
50
100
x 2.0

那里还有低容量电缆 (少用,很难找到):

  • Rg62 – 93 欧姆 – 44 PF/吨
  • RG71 – 93 欧姆 – 44 PF/吨
  • Rg210 – 93 欧姆 – 44 PF/吨
  • RG63 – 125 欧姆 – 33PF/吨
  • RG114 – 185 欧姆 – 27PF/吨

衡量一个未知的电缆的能力:

  • 准备的完美的剥皮屏蔽的电缆和保留绝缘中央钢绞线.
  • 测量之间中央和外盖有米或电容测量仪.
  • 为了提高测量精度, 使用五个或十米长的电缆.
  • 将皮法拉米电缆的数量来衡量其价值分为.


类型的设备

设备都带有一个数字从 0 只有在 199 找出她的"类型".
阶段的识别和编号的每个设备标识本身与这"类型".

目前定义以下设备:

设备类型
速度
分钟
最大速度
在出销
电源
名称
0
特别 “自定义” 类型
1
1
12
1
12 但
电容式传感器
嗨质量
2
1
12
10
Inout 仆人
3
1
12
12
InOut 泛型
4
1
12
12
InOut
5
6
虚拟大师针脚
(第一版)
8
10
虚拟大师针脚 – V2
9 12 虚拟大师针脚 – V4
255 未知

最大设备数
可连接的设备的最大数目被有限的:
– 最大可以根据选定的速度传送的字节数.
– "大师"可以提供最大电流 (通常 500 但)
– 议定书 》 所支持的设备的最大数目是 200 (从 0 只有在 199)


类型的 pin

别针被标记的数目 0 只有在 255 确定她"轴式".

输出 Pin 类型

输出插针
类型
名称
主人的奴隶
字节
奴隶对主人
字节
0
未使用
0
0
1
DIG_OUT
1
0
2
PWM_8
1
0
3
PWM_16
2
0
4
SERVO_8
1
0
5
SERVO_16
2
0
6 步进 4 0
7 PWM_FAST 5 0

输入的 Pin 类型

输入的引脚
类型
名称
主人的奴隶
字节
奴隶对主人
字节
129
DIG_IN
0
1
130
DIG_IN_PU
0
1
131
ADC_8
0
1
132
ADC_16
0
2
133
CAP_8
0
1
134
CAP_16
0
2
135
RES_8
0
1
136
RES_16
0
2
140
计数器
0
2
141
COUNTER_PU
0
2
142
FAST_COUNTER
0
2
143
FAST_COUNTER_PU
0
2
144
期间
0
4
145
PERIOD_PU
0
4
146
SLOW_PERIOD
0
4
147
SLOW_PERIOD_PU
0
4
150
USOUND_SENSOR
0
2
160
CAP_SENSOR
0
3
165
STEPPER_DIR
0
4
180
ENCODER_A
0
2
181
ENCODER_A_PU
0
2
182
ENCODER_B
0
0
183
ENCODER_B_PU
0
0
175
ADC_24
0
1
176
ADC_24_DIN
0
0
177
ADC_24_DOUT
0
0


主人和奴隶之间的通信 (串行线路)

第一个字节 类型的传输 传输 接收
255 (*4) 特别延长
(为了将来的扩展)
1 字节 (扩展)
>>>>> 请参阅扩展动词表 <<<<<
254 (*1) RecogStart
早期识别
和编号
1 字节 (数据字节数 = 0)
1 字节 (Cmd 的 CRC / 0)
253 (*2) 分子识别和分析
输入序列号和请求的类型
1 字节 (数据字节数 = 1)
1 字节 (从 0 只有在 199)
1 字节 (启联资源中心的 Cmd/Nbytes/类型)
1 字节 ( 类型 )
1 字节 ( 启联资源中心 )
251 (*3) FastDataExchange
快速数据交换.
1 字节 (数据字节数 = 0)
1 字节 (启联资源中心的 Cmd/0)
从 0 只有在 60 个字节的数据
从 0 只有在 63 个字节的数据
249 (*4) SetupSlavePins
输入设置
一针 “奴隶”
1 字节 (奴隶索引)
1 字节 (数据的字节数)
NN 字节 (PinTypes: 1 每个引脚的字节)
1 字节 (启联资源中心的 Cmd,SlaveId,等...)
1 字节 (奴隶索引)
1 字节 (对字节的 CRC
上一页)
248 (*4) SetMasterName
输入的名称 “硕士”
NN 字节 (名称由零终止字符)
247 (*4) GetMasterName
阅读的名称 “硕士”
NN 字节 (字符的
零终止的名称)
246 (*4) SendValuesToSlave
发送 “n” 字节
一个奴隶 “m”
(最大 56 字节)
1 字节 (奴隶索引)
1 字节 (字节数)
字节 1 . . . 字节 n
1 字节 (启联资源中心
Cmd/SlaveId/nBytes/n)
1 字节 (奴隶索引)
1 字节 (对字节的 CRC
上一页)
245 (*4) GetValuesFromSlave
请求 “n” 奴隶的字节 “m”
(最大 56 字节)
1 字节 (奴隶索引)
1 字节 (字节数)
1 字节 (启联资源中心的 Cmd/SlaveId/nBytes)
byte1 . . 字节 n
1 字节 (奴隶索引)
1 字节 (儿童权利公约关于
n + 1 以前字节)
244 (*4) SendBytesToSlave
发送 “n” 奴隶的字节 “m”
(最大 56 字节)
1 字节 (奴隶索引)
1 字节 (字节数)
字节 1 . . . 字节 n
1 字节 (启联资源中心
Cmd/SlaveId/nBytes/n)
1 字节 ( 奴隶索引 )
1 字节 ( 启联资源中心 ) 对字节
上一页
243 (*4) GetBytesFromSlave
请求 “n” 奴隶的字节 “m”
(最大 56 字节)
1 字节 (奴隶索引)
1 字节 (字节数)
1 字节 (启联资源中心的 Cmd/SlaveId/nBytes)
字节 1 . . . 字节 n
1 字节 (奴隶索引)
1 字节 ( 启联资源中心 ) 关于
n + 1 以前字节
199 (*5) SetSpeed 1 字节 (国际信息通信展览会. 速度)
1 字节 (儿童权利公约关于 Cmd/通信速度)
0 没有行动

(*1) 服务命令.
(*2) 该命令仅用于由主人和奴隶分子识别和分析在识别.
(*3) 快速的通信 – 主交换所有奴隶使用只有一个 USB 交换的值
(*4) 通信命令到单一的奴隶
(*5) 特殊的命令

SendValuesToSlave 将值发送到输出引脚的奴隶 (物理形式上的大师或虚拟的奴隶,)

GetValuesFromSlave 从输入 Pin 的奴隶中读取值 (物理形式上的大师或虚拟的奴隶,)

SendBytesToSlave 发送泛型字节 (配置示例), 对奴隶 (物理形式上的大师或虚拟的奴隶,)

GetBytesFromSlave 法律一般字节 (例如的状态), 从一个奴隶 (物理形式上的大师或虚拟的奴隶,)

所有的命令都从代码 200 只有在 255, 以防止, 错误的情况, Id 和奴隶类型 (从 0 只有在 199) 可被解释为命令. (Setspeed 不算,因为它不会发送串行线,但仅由 ’ HAL, 对母版, 通过 usb 接口)


上位机与主服务器之间的通信 (USB)

Comandi da “主机” verso “硕士”

命令名称 ID
USB_TxData[0]
参数
USB_TxData[1 对 n]
RecogStart 绑定, Nbytes
FastDataExchange 绑定, 从 0 自 60 数据字节
SetupSlavePins 绑定, SlaveId, Nbytes
SetMasterName 绑定, MasterName (零终止)
GetMasterName 绑定,
SendValuesToSlave 绑定, SlaveId, Nbytes, Byte1….ByteN
GetValuesFromSlave 绑定, SlaveId, Nbytes
SendBytesToSlave 绑定, SlaveId, Nbytes, Byte1….ByteN
GetBytesFromSlave 绑定, SlaveId, Nbytes
SetSpeed 绑定, CommSpeed

Risposte da “硕士” verso “主机”

命令名称 响应
USB_RxData[0]
返回值
USB_RxData[1 对 n]
RecogStart 0 = 确定 Nslaves, 奴隶 Type1 … 奴隶类型 N
FastDataExchange 0 = 确定 从 0 自 63 数据字节
SetupSlavePins 0 = 确定
SetMasterName 0 = 确定
GetMasterName 0 = 确定 主控形状名称 (零终止)
SendValuesToSlave 0 = 确定
GetValuesFromSlave 0 = 确定 字节 1 … N 字节
SendBytesToSlave 0 = 确定
GetBytesFromSlave 0 = 确定 字节 1 … N 字节
SetSpeed 0 = 确定

USB 缓冲区的零位置指示是否从执行了该命令 “硕士” 成功.


CRC 的计算

使用的所有 CRC 都计算超过一定数量的连续字节和 CRC 结果是一个字节. 使用一种基于"纵向冗余校验"算法的 CRC 计算.

纵向冗余校验

Dim CRC as Byte  CRC = 0  For each byte b      CRC = CRC Xor b  Next

为了避免世俗的序列之间的"碰撞" ( 例如, 0000 = 1111 或 123 = 321 ) 和生产有效 CRC 的简单序列 ( 例如, 0000 与 CRC = 0 ) 上述方法被修改与置换.

计算 CRC 结果是有效和非常简单.

本议定书中使用的 CRC 的计算

Dim CRC as Byte  CRC = 0  For each byte b      CRC = CRC Xor b      CRC = CRC + 1  Next 


设置波特率

如果你决定要使用非默认的波特率, 然后"大师"应该传达给链中的所有设备的新的速度.

此设置使循环设备识别之前甚至应该是可能和必须也有可能很长输电线路. 因此那里是一个特殊的命令,现在所示.

1 – 主处理器就维护的高线 50 女士
2 – 所有的奴隶绝对处于挂起的一个字符
3 – 主生成中断 (低位线 12 咬住了最低速度
4 – 主问题 55 字符 (01010101) 所需的波特率
5 – 所有的奴隶推断从这个字节的波特率 (自动波特率)
6 – 主服务器将发送指定的"速度"的一个字节 (从 1 只有在 12)
7 – 主服务器将发送一个字节的 CRC 计算的两个字节 (cmd/速度)
8 – 如果奴隶是一个错误,不会改变它的速度

dilbertian eig

检查波特率

如果你设置太高速度的输电线路在使用某些设备链中的可能不能够支持的速度设置和传输数据时,可能会发生错误.

如果传输错误是零个或更少比 0.1% 然后速度设置无效.


识别和编号

1 – 主输出到奴隶的整个序列的"速度"设置,以确保所有沟通以相同的速度.
2 – 主人是不会传染到命令 50 毫秒.
3 – 在这一点上所有的奴隶 等待命令.
4 – 主问题代码"254″ (RecogStart).
5 – 他们把弱拉向上的所有奴隶 (100-400 UA) 在输入输出和打开到下游设备的输出连接. 他们不再回应任何命令除了"253″ (分子识别和分析).
6 – 主问题代码"253″ (类型请求) 然后一个编号为 0 字节″, 链中的第一个设备满足与它的类型的字节, 删除上拉, 连接到下游的奴隶,不响应任何命令.
7 – 主问题代码"253″ (类型请求) 然后一个编号为 1 字节″, 链中的第二个设备满足与它的类型的字节, 删除上拉, 连接到下游的奴隶,不响应任何命令.
8 – 主问题代码"253″ (类型请求) 然后一个数字"2 字节″,

…. 的 “253” (类型请求) 重复达 200 时间
当没有更长的持续时间大于响应 10 咬住了当前吞吐量, 意味着链结束. 为了避免这种计算, 您可以使用超时值为 12 总是工作的女士, 甚至以最低的速度.

9 – 主人对奴隶问题所有设置序列"速度", 这表明所有的奴隶在正常通信模式.
10 – 主人让我通知主机 (PC) 通过 USB 奴隶确认数量和类型的每个.

Roberto_Cena & Livio_Cicala (2010 – 2016)

关闭评论.