特点:
● 编码器解码转换成标准Modbus RTU协议
● 可用作编码器计数器或者转速测量
● 支持8个编码器同时计数,可识别正反转
● 也可以设置作为16路独立DI高速计数器
● 编码器计数值支持断电自动保存
● DI输入和电源之间3000V隔离
● 通过RS-485/232接口可以清零和设置计数值
● 宽电源供电范围:8 ~ 32VDC
● 可靠性高,编程方便,易于应用
● 标准DIN35导轨安装,方便集中布线
● 用户可编程设置模块地址、波特率等
● 外形尺寸:120 mm x 70 mm x 43mm
典型应用:
● 编码器脉冲信号测量
● 流量计脉冲计数或流量测量
● 生产线产品计数
● 物流包裹数量计数
● 接近开关脉冲信号测量
● 编码器信号远传到工控机
● 智能工厂与工业物联网
● 替代PLC直接传数据到控制中心
概述:
YL69产品实现传感器和主机之间的信号采集,用来解码编码器信号。YL69系列产品可应用在 RS-232/485总线工业自动化控制系统,自动化机床,工业机器人,三坐标定位系统,位移测量,行程测量,角度测量,转速测量,流量测量,产品计数等等。
产品包括信号隔离,脉冲信号捕捉,信号转换和RS-485串行通信。每个串口最多可接255只 YL69系列模块,通讯方式采用ASCII码通讯协议或MODBUS RTU通讯协议,波特率可由代码设置,能与其他厂家的控制模块挂在同一RS-485总线上,便于计算机编程。
YL69系列产品是基于单片机的智能监测和控制系统,所有的用户设定的地址,波特率,数据格式,校验和状态等配置信息都储存在非易失性存储器EEPROM里。
YL69系列产品按工业标准设计、制造,信号输入 / 输出之间不隔离,抗干扰能力强,可靠性高。工作温度范围- 45℃~+85℃。
功能简介:
YL69远程I/O模块,可以用来测量八路编码器信号,也可以设置作为16路独立计数器或者DI状态测量。
- 信号输入
8路编码器信号输入或16路独立计数器,可接干接点和湿接点,详细请参考接线图部分。
- 通讯协议
通讯接口: 1路标准的RS-485通讯接口或1路标准的RS-232通讯接口,订货选型时注明。
通讯协议:支持两种协议,命令集定义的字符协议和MODBUS RTU通讯协议。模块自动识别通讯协议,能实现与多种品牌的PLC、RTU或计算机监控系统进行网络通讯。
数据格式:10位。1位起始位,8位数据位,1位停止位。无校验。
通讯地址(0~255)和波特率(2400、4800、9600、19200、38400、57600 、115200bps)均可设定;通讯网络最长距离可达1200米,通过双绞屏蔽电缆连接。
通讯接口高抗干扰设计,±15KV ESD保护,通信响应时间小于100mS。
- 抗干扰
可根据需要设置校验和。模块内部有瞬态抑制二极管,可以有效抑制各种浪涌脉冲,保护模块,内部的数字滤波,也可以很好的抑制来自电网的工频干扰。
产品选型:
选型举例1: 型号:YL69 - 232 表示输出为RS-232接口
选型举例2: 型号:YL69 - 485 表示输出为RS-485接口
YL69通用参数:
(typical @ +25℃,Vs为24VDC)
输入类型: 编码器AB信号输入,8通道(A0/B0~ A7/B7)。
低电平: 输入 < 1V
高电平: 输入 3.5 ~ 30V
频率范围0-10KHz(所有通道同时输入),单通道可支持50KHz输入。
编码器计数范围 - 2147483647 ~ +2147483647,断电自动保存
DI计数器范围0 ~ 4294967295,断电清零
输入电阻: 30KΩ
通 讯: 协议 RS-485 或 RS-232 标准字符协议 和 MODBUS RTU通讯协议
波特率(2400、4800、9600、19200、38400、57600 、115200bps)可软件选择
地址(0~255)可软件选择
通讯响应时间:100 ms 最大
工作电源: +8 ~ 32VDC宽供电范围,内部有防反接和过压保护电路
功率消耗: 小于1W
工作温度: - 45 ~ +80℃
工作湿度: 10 ~ 90% (无凝露)
存储温度: - 45 ~ +80℃
存储湿度: 10 ~ 95% (无凝露)
隔离耐压: DI输入和电源之间3000V隔离,通讯接口和电源共地。
外形尺寸: 120 mm x 70 mm x 43mm
引脚定义:
引脚 | 名 称 | 描 述 | 引脚 | 名 称 | 描 述 |
1 | DGND | 信号地 | 14 | A0 | 编码器0信号A输入端 |
2 | B5 | 编码器5信号B输入端 | 15 | B0 | 编码器0信号B输入端 |
3 | A6 | 编码器6信号A输入端 | 16 | A1 | 编码器1信号A输入端 |
4 | B6 | 编码器6信号B输入端 | 17 | B1 | 编码器1信号B输入端 |
5 | A7 | 编码器7信号A输入端 | 18 | A2 | 编码器2信号A输入端 |
6 | B7 | 编码器7信号B输入端 | 19 | B2 | 编码器2信号B输入端 |
7 | DICOM | 输入信号公共端 | 20 | DGND | 信号地 |
8 | 5V | 5V配电 | 21 | A3 | 编码器3信号A输入端 |
9 | NC | 空脚 | 22 | B3 | 编码器3信号B输入端 |
10 | DATA+ | RS-485信号正端 | 23 | A4 | 编码器4信号A输入端 |
11 | DATA- | RS-485信号负端 | 24 | B4 | 编码器4信号B输入端 |
12 | PW+ | 电源正端 | 25 | A5 | 编码器5信号A输入端 |
13 | GND | 电源负端 | 26 | DGND | 信号地 |
表1 引脚定义
YL69字符协议命令集:
模块的出厂初始设置,如下所示:
地址代码为01
波特率9600 bps
禁止校验和
如果使用 RS-485网络,必须分配一个不重复的地址代码,地址代码取值为16进制数在00和FF之间,由于新模块的地址代码都是一样的,他们的地址将会和其他模块矛盾,所以当你组建系统时,你必须重新配置每一个YL69模块地址。可以在接好YL69模块电源线和RS485通讯线后,通过配置命令来修改YL69模块的地址。波特率,校验和状态也需要根据用户的要求而调整。而在修改波特率,校验和状态之前,必须让模块先进入缺省状态,否则无法修改。
让模块进入缺省状态的方法:
YL69模块边上都有一个INIT的开关,在模块的侧面位置。将INIT开关拨到INIT位置,再接通电源,此时模块进入缺省状态。在这个状态时,模块的配置如下:
地址代码为00
波特率9600 bps
禁止校验和
这时,可以通过配置命令来修改YL69模块的波特率,校验和状态等参数。在不确定某个模块的具体配置时,也可以将INIT开关拨到INIT位置,使模块进入缺省状态,再对模块进行重新配置。
注: 正常使用时请将INIT开关拨到NORMAL位置。
字符协议命令由一系列字符组成,如首码、地址ID,变量、可选校验和字节和一个用以显示命令结束符(cr)。主机除了带通配符地址“**”的同步的命令之外,一次只指挥一个YL69模块。
命令格式:(Leading Code)(Addr)(Command)[data][checksum](cr)
(Leading code) 首码是命令中的第一个字母。所有命令都需要一个命令首码,如%,$,#,@,...等。 1- 字符
(Addr) 模块的地址代码, 如果下面没有指定,取值范围从 00~FF (十六进制)。 2- 字符
(Command) 显示的是命令代码或变量值。 变量长度
[data] 一些输出命令需要的数据。 变量长度
[checksum] 括号中的Checksum(校验和)显示的是可选参数,只有在启用校验和时,才需要此选项。 2- 字符
(cr) 识别用的一个控制代码符,(cr)作为回车结束符,它的值为0x0D。 1- 字符
当启用校验和(checksum)时,就需要[Checksum]。它占2-字符。命令和应答都必须附加校验和特性。校验和用来检查所有输入命令,来帮助你发现主机到模块命令错误和模块到主机响应的错误。校验和字符放置在命令或响应字符之后,回车符之前。
计算方法:两个字符,十六进制数,为之前所发所有字符的ASCII码数值之和,然后与十六进制数0xFF相与所得。
应用举例:禁止校验和(checksum)
用户命令 $002(cr)
模块应答 !00020600 (cr)
启用校验和(checksum)
用户命令 $002B6 (cr)
模块应答 !00020600 A9 (cr)
‘$’ = 0x24 ‘0’ = 0x30 ‘2’ = 0x32
B6=(0x24+0x30+0x30+0x32) AND 0xFF
‘!’ = 0x21 ‘0’ = 0x30 ‘2’ = 0x32 ‘6’ = 0x36
A9=(0x21+0x30+0x30+0x30+0x32+0x30+0x36+0x30+0x30) AND 0xFF
命令的应答 :
应答信息取决于各种各样的命令。应答也由几个字符组成,包括首代码,变量和结束标识符。应答信号的首代码有两种, ‘!’或 ‘>’表示有效的命令而‘?’ 则代表无效。通过检查应答信息,可以监测命令是否有效
注意:1、在一些情况下,许多命令用相同的命令格式。要确保你用的地址在一个命令中是正确的,假如你用错误的地址,而这个地址代表着另一个模块,那么命令会在另一个模块生效,因此产生错误。
2、必须用大写字母输入命令。
3、(cr)代表键盘上的回车符,不要直接写出来,应该是敲一下回车键(Enter键)。
1、设置编码器的工作模式
说 明:设置编码器工作模式,0 或1,出厂默认为0。工作模式修改后,必须重启模块才会生效。
工作模式0:编码器AB信号输入
工作模式1:两路独立的计数器输入
注意:下面命令备注(工作模式0)的表示是仅在编码器工作模式为0时数据才有效。
备注(工作模式1)的表示是仅在编码器工作模式为1时数据才有效。
命令格式:$AA3BBBBBBBB(cr) 设置编码器的工作模式。重启后生效。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AA(cr) 表示设置成功
参数说明:BBBBBBBB代表8个编码器通道的工作模式,8个数,排列顺序为编码器7~编码器0,
值为 0:工作模式0;值为 1:工作模式1
应用举例: 用户命令(字符格式) $01311110000 (cr)
模块应答(字符格式) ! 01(cr)
说 明:设置编码器7~编码器4为工作模式1, 设置编码器3~编码器0为工作模式0
2、读取编码器的工作模式
说 明:读取编码器的工作模式。
命令格式:$AA4(cr) 读取编码器的工作模式。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! BBBBBBBB (cr) 代表8个编码器通道的工作模式,8个数,排列顺序为编码器7~编码器0,
值为 0:工作模式0;值为 1:工作模式1
应用举例: 用户命令(字符格式) $014(cr)
模块应答(字符格式) ! 11110000 (cr)
说 明:编码器7~编码器4为工作模式1, 编码器3~编码器0为工作模式0
3、读取开关状态命令
说 明:从模块中读回所有编码器输入通道开关量状态。
命令格式:#AA(cr)
参数说明:# 分界符。十六进制为23H
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:> CCCCCCCC,DDDDDDDD (cr) 命令有效。
?01(cr) 命令无效或非法操作。
参数说明:> 分界符。十六进制为3EH
CCCCCCCC代表读取到的编码器输入开关状态,8个数,排列顺序为B7A7 B6A6 B5A5 B4A4,
DDDDDDDD代表读取到的编码器输入开关状态,8个数,排列顺序为B3A3 B2A2 B1A1 B0A0,
值为 0: 输入低电平;值为 1: 输入高电平
(cr) 结束符,上位机回车键,十六进制为0DH。
应用举例: 用户命令(字符格式) #01(cr)
模块应答(字符格式) >00001010,00000111(cr)
说 明:模块输入开关状态是00001010 , 排列顺序为B7A7 B6A6 B5A5 B4A4
A4:低电平 B4:高电平 A5:低电平 B5:高电平
A6:低电平 B6:低电平 A7:低电平 B7:低电平
模块输入开关状态是00000111 , 排列顺序为B3A3 B2A2 B1A1 B0A0
A0:高电平 B0:高电平 A1:高电平 B1:低电平
A2:低电平 B2:低电平 A3:低电平 B3:低电平
4、读编码器计数器数据命令(工作模式0)
说 明:读取编码器计数器的数据,可以读所有编码器,也可以读单个编码器。‘+’表示正转,‘-’表示反转。
命令格式:#AA2(cr)
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
2 表示读编码器0~编码器7计数器数据命令。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!+AAAAAAAAAA, +AAAAAAAAAA, +AAAAAAAAAA, +AAAAAAAAAA, +AAAAAAAAAA, +AAAAAAAAAA, +AAAAAAAAAA, +AAAAAAAAAA (cr)
命令格式:#AA2N(cr) 读通道N计数值
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
- 表示读计数器数据命令。
N 表示读编码器N计数器数据命令。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!+AAAAAAAAAA(cr)
应用举例1: 用户命令(字符格式) #012(cr)
模块应答(字符格式) !+0012345678, +0012345678, +0012345678, +0012345678, +0012345678, +0012345678, +0012345678, +0012345678 (cr)
说 明:所有编码器的计数值为正转+12345678
应用举例2: 用户命令(字符格式) #0120(cr)
模块应答(字符格式) !-0012345678(cr)
说 明:编码器0的计数值为反转-12345678。
5、读编码器输入频率命令(工作模式0)
说 明:读取编码器输入的频率,可以读所有编码器,也可以读单编码器。‘+’表示正转,‘-’表示反转。
命令格式:#AA3
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
3 表示读编码器0~编码器7输入频率命令。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!+AAAAAA.AA,+AAAAAA.AA,+AAAAAA.AA,+AAAAAA.AA, +AAAAAA.AA, +AAAAAA.AA, +AAAAAA.AA,+AAAAAA.AA (cr)
命令格式:#AA3N 读编码器N输入频率
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
- 表示读输入频率命令。
N 表示读编码器N输入频率命令。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! +AAAAAA.AA (cr)
应用举例1: 用户命令(字符格式) #013(cr)
模块应答(字符格式) !+001000.00,+001000.00,+001000.00,+001000.00,+001000.00, +001000.00, +001000.00,+001000.00 (cr)
说 明:所有编码器的输入频率值为正转+1KHz。
应用举例2: 用户命令(字符格式) #0130(cr)
模块应答(字符格式) !-001000.00(cr)
说 明:编码器0的输入频率值为反转-1KHz。
6、读编码器输入转速命令(工作模式0)
说 明:读取编码器输入的转速,可以读所有编码器,也可以读单编码器。‘+’表示正转,‘-’表示反转。
命令格式:#AA4
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
4 表示读编码器0~编码器7输入转速命令。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!+AAAAA,+AAAAA,+AAAAA,+AAAAA, +AAAAA,+AAAAA,+AAAAA,+AAAAA (cr)
命令格式:#AA8N 读编码器N输入转速
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
4 表示读输入转速命令。
N 表示读编码器N输入转速命令。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! +AAAAA (cr)
应用举例1: 用户命令(字符格式) #014(cr)
模块应答(字符格式) !+01000,+01000,+01000,+01000 (cr)
说 明:所有编码器的输入转速值为正转+1000转。
应用举例2: 用户命令(字符格式) #0140(cr)
模块应答(字符格式) !-01000(cr)
说 明:编码器0的输入转速值为反转-1000转。
7、修改编码器计数器的数值命令(工作模式0)
说 明:修改编码器计数器的值,也可以设置为零重新计数。
命令格式:$AA1N+AAAAAAAAAA(cr) 修改编码器N的计数值,N为编码器代号,取值0 ~ 7,设置N为‘M’时表示同时设置所有编码器的计数值。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AA(cr) 表示设置成功
应用举例1: 用户命令(字符格式) $0113+0000000000(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置编码器3的计数值为0。
应用举例2: 用户命令(字符格式) $011M+0000000000(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置所有编码器的计数值为0。
应用举例3: 用户命令(字符格式) $011M+0000003000(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置所有编码器的计数值为+3000。
8、设置编码器的每转脉冲数(工作模式0)
说 明:设置编码器的每转脉冲数。根据接入的编码器参数来设定,出厂默认值为1000,设置正确的脉冲数后才可以读出编码器转速。
命令格式:$AA5NAAAAA (cr) 设置编码器的每转脉冲数。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
5 设置编码器的每转脉冲数命令。
N 编码器代号,取值0 ~ 7。
AAAAA 代表脉冲数,如1000,800或者600等。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AA(cr) 表示设置成功
应用举例: 用户命令(字符格式) $015100300(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置编码器1的每转脉冲数为300。
9、读取编码器的每转脉冲数(工作模式0)
说 明:读取所有编码器的每转脉冲数。
命令格式:$AA6(cr) 读取所有编码器的每转脉冲数,排列顺序0~7。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AAAAA, AAAAA, AAAAA, AAAAA, AAAAA, AAAAA, AAAAA, AAAAA (cr) 表示编码器0~编码器7的每转脉冲数。
应用举例: 用户命令(字符格式) $016(cr)
模块应答(字符格式) ! 01000, 01000, 01000, 01000, 01000, 01000, 01000, 01000 (cr)
说 明:所有编码器的每转脉冲数都是1000。
10、设置编码器计数值断电是否自动保存(工作模式0)
说 明:设置编码器的计数值断电是否自动保存,出厂默认值为1(自动保存)。
命令格式:$AASW (cr) 设置编码器的断电是否自动保存。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
S 设置编码器的断电是否自动保存命令。
W 0: 不自动保存; 1:断电自动保存编码器计数值。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AA(cr) 表示设置成功
应用举例: 用户命令(字符格式) $01S0(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置编码器不保存计数值,断电后自动清零计数。
11、读计数器数据命令(工作模式1)
说 明:读取计数器的数据,可以读所有通道,也可以读单通道。
命令格式:#AA5(cr)
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
5 表示读通道A0~通道B7计数器数据命令。排列顺序A0,B0, ~ ~ ~ ,A7,B7。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAA
AAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA, AAAAAAAAAA (cr)
命令格式:#AA5N(cr)
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
- 表示读计数器数据命令。
N 表示读通道N计数器数据命令。N取值:0123456789ABCDEF,对应A0~B7
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AAAAAAAAAA(cr)
应用举例1: 用户命令(字符格式) #015(cr)
模块应答(字符格式) !0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678, 0012345678 (cr)
说 明:所有通道的计数值为12345678。
应用举例2: 用户命令(字符格式) #015F(cr)
模块应答(字符格式) !0012345678(cr)
说 明:通道B7的计数值为12345678。
12、读输入频率命令(工作模式1)
说 明:读取输入的频率,可以读所有通道,也可以读单通道。
命令格式:#AA6
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
6 表示读通道A0~通道B7输入频率命令。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAA
A.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA,AAAAAA.AA, AAAAAA.AA (cr)
命令格式:#AA6N 读通道N输入频率。
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
- 表示读输入频率命令。
N 表示读通道N输入频率命令。N取值:0123456789ABCDEF,对应A0~B7
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AAAAAA.AA (cr)
应用举例1: 用户命令(字符格式) #016(cr)
模块应答(字符格式) !001000.00,001000.00,001000.00,001000.00,001000.00,001000.00, 001000.00,001000.00,001000.00,001000.00,001000.00,001000.00,001000.00,001000.00,001000.00,001000.00(cr)
说 明:所有通道的输入频率值为1KHz。
应用举例2: 用户命令(字符格式) #016E(cr)
模块应答(字符格式) !001000.00(cr)
说 明:通道A7的输入频率值为1KHz。
13、修改DI计数器的数值命令(工作模式1)
说 明:修改DI计数器的值,也可以设置为零重新计数。
命令格式:$AA2N+AAAAAAAAAA(cr) 修改计数器N的计数值,N为计数器代号,取值0123456789ABCDEF,对应A0~B7, 设置N为‘M’时表示同时设置所有通道的计数值。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AA(cr) 表示设置成功
应用举例1: 用户命令(字符格式) $012F+0000000000(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置通道B7的计数值为0。
应用举例2: 用户命令(字符格式) $012M+0000000000(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置所有通道的计数值为0。
应用举例3: 用户命令(字符格式) $012M+0000003000(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置所有通道的计数值为+3000。
14、设置DI计数器的计数方式(工作模式1)
说 明:设置DI计数器是上升沿计数还是下降沿计数。出厂设置为00000000,00000000。默认是上升沿计数
设置在模块重启后生效。
命令格式:$AA7AAAAAAAA,BBBBBBBB(cr) 设置DI计数器的计数方式。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AA(cr) 表示设置成功
参数说明:AAAAAAAA代表通道状态,8个数,排列顺序为B7A7 B6A6 B5A5 B4A4,
BBBBBBBB代表通道状态,8个数,排列顺序为B3A3 B2A2 B1A1 B0A0,
值为 0:该通道上升沿计数;值为 1:该通道下降沿计数
应用举例: 用户命令(字符格式) $01711110000,00001111(cr)
模块应答(字符格式) ! 01(cr)
说 明:设置B7~A6通道下降沿计数, 设置B5~A2通道上升沿计数,
设置B1~A0通道下降沿计数。
15、读取DI计数器的计数方式(工作模式1)
说 明:读取DI计数器是上升沿计数还是下降沿计数。
命令格式:$AA8(cr) 读取DI计数器的计数方式。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AAAAAAAA,BBBBBBBB (cr) 表示DI计数器的计数方式。
参数说明:AAAAAAAA代表通道状态,8个数,排列顺序为B7A7 B6A6 B5A5 B4A4,
BBBBBBBB代表通道状态,8个数,排列顺序为B3A3 B2A2 B1A1 B0A0,
值为 0:该通道上升沿计数;值为 1:该通道下降沿计数
应用举例: 用户命令(字符格式) $018(cr)
模块应答(字符格式) ! 11110000,00001111 (cr)
说 明: B7~A6通道下降沿计数, B5~A2通道上升沿计数,B1~A0通道下降沿计数。
16、设置以上字符命令设置的所有参数恢复出厂设置。
说 明:设置模块用以上字符命令设置的参数恢复为出厂设置,完成后模块自动重启。
命令格式:$AA900(cr) 设置参数恢复出厂设置。
参数说明:AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:! AA(cr) 表示设置成功,模块会自动重启。
应用举例: 用户命令(字符格式) $01900
模块应答(字符格式) ! 01(cr)
说 明:参数恢复出厂设置。
17、配置YL69模块命令
说 明:对一个YL69模块设置地址,波特率,校验和状态。配置信息储存在非易失性存储器EEPROM里。
命令格式:%AANNTTCCFF(cr)
参数说明:% 分界符。
AA 模块地址,取值范围 00~FF(十六进制)。
NN 代表新的模块16进制地址,数值NN的范围从00到FF。
TT 用16进制代表类型编码。 YL69产品必须设置为00。
CC 用16进制代表波特率编码。
波特率代码 | 波特率 |
04 | 2400 baud |
05 | 4800 baud |
06 | 9600 baud |
07 | 19200 baud |
08 | 38400 baud |
09 | 57600 baud |
0A | 115200 baud |
表2 波特率代码
FF 用16进制的8位代表数据格式,校验和。注意从bits2 到bits5不用必须设置为零。
Bit7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit2 | Bit 1 | Bit 0 |
表3 数据格式,校验和代码
Bit7:保留位,必须设置为零
Bit6:校验和状态,为0:禁止; 为1:允许
Bit5-bit2:不用,必须设置为零。
Bit1-bit0:数据格式位。 00:工程单位(Engineering Units)
10:16进制的补码(Twos complement)
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AA(cr) 命令有效。
?AA(cr) 命令无效或非法操作,或在改变波特率或校验和前,没有安装配置跳线。
参数说明:! 分界符,表示命令有效。
? 分界符,表示命令无效。
AA 代表输入模块地址
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如你第一次配置模块,AA=00、 NN等于新的地址。假如重新配置模块改变地址、输入范围、数据格式,AA等于当前已配置的地址,NN等于当前的或新的地址。假如要重新配置模块改变波特率或校验和状态,则必须安装配置跳线,使模块进入缺省状态,此时模块地址为00H,即 AA=00H,NN等于当前的或新的地址。
假如格式错误或通讯错误或地址不存在,模块不响应。
应用举例: 用户命令 %0011000600(cr)
模块应答 !11(cr)
说 明:% 分界符。
00 表示你想配置的YL69模块原始地址为00H。
11 表示新的模块16进制地址为11H。
00 类型代码,YL69产品必须设置为00。
06 表示波特率9600 baud。
00 表示数据格式为工程单位,禁止校验和。
18、读配置状态命令
说 明: 对指定一个YL69模块读配置。
命令格式:$AA2(cr)
参数说明:$ 分界符。
AA 模块地址,取值范围 00~FF(十六进制)。
2 表示读配置状态命令
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AATTCCFF(cr) 命令有效。
?AA(cr) 命令无效或非法操作。
参数说明:! 分界符。
AA 代表输入模块地址。
TT 代表类型编码。
CC 代表波特率编码。见表2
FF 见表3
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如格式错误或通讯错误或地址不存在,模块不响应。
应用举例: 用户命令 $302(cr)
模块应答 !300F0600(cr)
说 明:! 分界符。
30 表示YL69模块地址为30H 。
00 表示输入类型代码。
06 表示波特率9600 baud。
00 表示禁止校验和。
19、读模块名称命令
说明:对指定一个YL69模块读模块名称。
命令格式:$AAM(cr)
参数说明:$ 分界符。
AA 模块地址,取值范围 00~FF(十六进制)。
M 表示读模块名称命令
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AA(ModuleName)(cr) 命令有效。
?AA(cr) 命令无效或非法操作
参数说明:! 分界符,表示命令有效。
? 分界符,表示命令无效。
AA 代表输入模块地址。
(ModuleName) 模块名称YL69
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如格式错误或通讯错误或地址不存在,模块不响应。
应用举例: 用户命令 $08M(cr)
模块应答 !08YL69 (cr)
说 明:在地址08H模块为YL69。
Modbus RTU 通讯协议:
模块的出厂初始设置,如下所示:
Modbus地址为01
波特率9600 bps
数据格式:10位。1位起始位,8位数据位,1位停止位。无校验。
让模块进入缺省状态的方法:
YL69模块边上都有一个INIT的开关,在模块的侧面位置。将INIT开关拨到INIT位置,再接通电源,此时模块进入缺省状态。在这个状态时,模块暂时恢复为默认的状态:地址为01,波特率为9600。在不确定某个模块的具体配置时,用户可以查询地址和波特率的寄存器40201-40202,得到模块的实际地址和波特率,也可以跟据需要修改地址和波特率。
注: 正常使用时请将INIT开关拨到NORMAL位置。
支持Modbus RTU通讯协议,命令格式按照标准Modbus RTU通讯协议。
YL69支持的功能码,详见如下:
功能码 | 名称 | 说明 | |
01 | Read Coil Status | 读取线圈状态 | 1表示高电平, 0表示低电平。 |
03 | Read Holding Register | 读保持寄存器 | 1表示高电平, 0表示低电平。 |
05 | Write Single Coil | 写单个线圈 | 1表示三极管导通, 0表示三极管断开。 |
06 | Write Single Register | 写单个寄存器 | 1表示三极管导通, 0表示三极管断开。 |
15 | Write Multiple Coils | 写多个线圈 | |
16 | Write Multiple Registers | 写多个寄存器 |
YL69的寄存器地址说明
支持功能码01,05和15的寄存器
地址0X(PLC) | 地址(PC,DCS) | 数据内容 | 属性 | 数据说明 |
00001 | 0000 | A0的计数方式 | 读/写 | 通道A0 ~ B7的计数方式 (默认值为0) 0为上升沿计数, 1为下降沿计数 设置在模块重启后生效。 正常不用修改,使用默认值即可。 |
00002 | 0001 | B0的计数方式 | 读/写 | |
00003 | 0002 | A1的计数方式 | 读/写 | |
00004 | 0003 | B1的计数方式 | 读/写 | |
00005 | 0004 | A2的计数方式 | 读/写 | |
00006 | 0005 | B2的计数方式 | 读/写 | |
00007 | 0006 | A3的计数方式 | 读/写 | |
00008 | 0007 | B3的计数方式 | 读/写 | |
00009 | 0008 | A4的计数方式 | 读/写 | |
00010 | 0009 | B4的计数方式 | 读/写 | |
00011 | 0010 | A5的计数方式 | 读/写 | |
00012 | 0011 | B5的计数方式 | 读/写 | |
00013 | 0012 | A6的计数方式 | 读/写 | |
00014 | 0013 | B6的计数方式 | 读/写 | |
00015 | 0014 | A7的计数方式 | 读/写 | |
00016 | 0015 | B7的计数方式 | 读/写 | |
00033 | 0032 | A0输入的开关量 | 只读 | 编码器输入点的电平状态 0表示低电平输入, 1表示高电平输入 |
00034 | 0033 | B0输入的开关量 | 只读 | |
00035 | 0034 | A1输入的开关量 | 只读 | |
00036 | 0035 | B1输入的开关量 | 只读 | |
00037 | 0036 | A2输入的开关量 | 只读 | |
00038 | 0037 | B2输入的开关量 | 只读 | |
00039 | 0038 | A3输入的开关量 | 只读 | |
00040 | 0039 | B3输入的开关量 | 只读 | |
00041 | 0040 | A4输入的开关量 | 只读 | |
00042 | 0041 | B4输入的开关量 | 只读 | |
00043 | 0042 | A5输入的开关量 | 只读 | |
00044 | 0043 | B5输入的开关量 | 只读 | |
00045 | 0044 | A6输入的开关量 | 只读 | |
00046 | 0045 | B6输入的开关量 | 只读 | |
00047 | 0046 | A7输入的开关量 | 只读 | |
00048 | 0047 | B7输入的开关量 | 只读 | |
支持功能码03,06和16的寄存器
地址4X(PLC) | 地址(PC,DCS) | 数据内容 | 属性 | 数据说明 |
40001 | 0000 | 编码器0工作模式 | 读/写 | 编码器工作模式,整数, 0 或1, 出厂默认为0(修改后需重启才生效) 工作模式0:编码器AB信号输入 工作模式1:两路独立的计数器输入 下面寄存器备注(工作模式0)的表示是仅在编码器工作模式为0时数据才有效。备注(工作模式1)的表示是仅在编码器工作模式为1时数据才有效。 |
40002 | 0001 | 编码器1工作模式 | 读/写 | |
40003 | 0002 | 编码器2工作模式 | 读/写 | |
40004 | 0003 | 编码器3工作模式 | 读/写 | |
40005 | 0004 | 编码器4工作模式 | 读/写 | |
40006 | 0005 | 编码器5工作模式 | 读/写 | |
40007 | 0006 | 编码器6工作模式 | 读/写 | |
40008 | 0007 | 编码器7工作模式 | 读/写 | |
40017~40018 | 0016~0017 | 编码器0计数 | 读/写 | 编码器0~7计数器(工作模式0) 数据为有符号的长整数,16进制格式,负数采用的是补码(two's complement), 正数(0x00000000~0x7FFFFFFF), 负数(0xFFFFFFFF~0x80000001), 计数器清零直接向对应寄存器写入0, 也可以根据需要写入其他值。 |
40019~40020 | 0018~0019 | 编码器1计数 | 读/写 | |
40021~40022 | 0020~0021 | 编码器2计数 | 读/写 | |
40023~40024 | 0022~0023 | 编码器3计数 | 读/写 | |
40025~40026 | 0024~0025 | 编码器4计数 | 读/写 | |
40027~40028 | 0026~0027 | 编码器5计数 | 读/写 | |
40029~40030 | 0028~0029 | 编码器6计数 | 读/写 | |
40031~40032 | 0030~0031 | 编码器7计数 | 读/写 | |
40033~40034 | 0032~0033 | 通道A0计数 | 读/写 | 通道A0~B7计数器(工作模式1) 数据为无符号的长整数,16进制格式,(0x00000000~0xFFFFFFFF),计数器清零直接向对应寄存器写入0,也可以根据需要写入其他值。 |
40035~40036 | 0034~0035 | 通道B0计数 | 读/写 | |
40037~40038 | 0036~0037 | 通道A1计数 | 读/写 | |
40039~40040 | 0038~0039 | 通道B1计数 | 读/写 | |
40041~40042 | 0040~0041 | 通道A2计数 | 读/写 | |
40043~40044 | 0042~0043 | 通道B2计数 | 读/写 | |
40045~40046 | 0044~0045 | 通道A3计数 | 读/写 | |
40047~40048 | 0046~0047 | 通道B3计数 | 读/写 | |
40049~40050 | 0048~0049 | 通道A4计数 | 读/写 | |
40051~40052 | 0050~0051 | 通道B4计数 | 读/写 | |
40053~40054 | 0052~0053 | 通道A5计数 | 读/写 | |
40055~40056 | 0054~0055 | 通道B5计数 | 读/写 | |
40057~40058 | 0056~0057 | 通道A6计数 | 读/写 | |
40059~40060 | 0058~0059 | 通道B6计数 | 读/写 | |
40061~40062 | 0060~0061 | 通道A7计数 | 读/写 | |
40063~40064 | 0062~0063 | 通道B7计数 | 读/写 | |
地址4X(PLC) | 地址(PC,DCS) | 数据内容 | 属性 | 数据说明 |
40068 | 0067 | 计数清零寄存器 | 写 | 无符号整数,默认为0,修改这个寄存器用于清零编码器计数器或通道计数器。修改后寄存器会自动恢复为0。 写入10:设置编码器0计数值为0, 写入11:设置编码器1计数值为0, 写入12:设置编码器2计数值为0, 写入13:设置编码器3计数值为0, 写入14:设置编码器4计数值为0, 写入15:设置编码器5计数值为0, 写入16:设置编码器6计数值为0, 写入17:设置编码器7计数值为0, 写入18:设置所有编码器计数值为0, 写入20:设置通道A0计数值为0, 写入21:设置通道B0计数值为0, 写入22:设置通道A1计数值为0, 写入23:设置通道B1计数值为0, 写入24:设置通道A2计数值为0, 写入25:设置通道B2计数值为0, 写入26:设置通道A3计数值为0, 写入27:设置通道B3计数值为0, 写入28:设置通道A4计数值为0, 写入29:设置通道B4计数值为0, 写入30:设置通道A5计数值为0, 写入31:设置通道B5计数值为0, 写入32:设置通道A6计数值为0, 写入33:设置通道B6计数值为0, 写入34:设置通道A7计数值为0, 写入35:设置通道B7计数值为0, 写入36:设置所有通道计数值为0。 写入其他值无效。 |
40073 | 0072 | 编码器0的脉冲数 | 读/写 | 编码器的脉冲数(工作模式0) 无符号整数(出厂默认值为1000),根据编码器每转脉冲数来设定,设置后寄存器40101~40108就是对应通道的转速。 |
40074 | 0073 | 编码器1的脉冲数 | 读/写 | |
40075 | 0074 | 编码器2的脉冲数 | 读/写 | |
40076 | 0075 | 编码器3的脉冲数 | 读/写 | |
40077 | 0076 | 编码器4的脉冲数 | 读/写 | |
40078 | 0077 | 编码器5的脉冲数 | 读/写 | |
40079 | 0078 | 编码器6的脉冲数 | 读/写 | |
40080 | 0079 | 编码器7的脉冲数 | 读/写 | |
40089 | 0088 | 参数恢复出厂设置 | 读/写 | 设置为FF00,则模块所有寄存器的参数恢复为出厂设置,完成后模块自动重启 |
地址4X(PLC) | 地址(PC,DCS) | 数据内容 | 属性 | 数据说明 |
40101 | 0100 | 编码器0的转速 | 只读 | 编码器的转速(工作模式0) 有符号整数,正负表示正反转。 转速是根据寄存器40073~40080设定的脉冲数换算得到。 |
40102 | 0101 | 编码器1的转速 | 只读 | |
40103 | 0102 | 编码器2的转速 | 只读 | |
40104 | 0103 | 编码器3的转速 | 只读 | |
40105 | 0104 | 编码器4的转速 | 只读 | |
40106 | 0105 | 编码器5的转速 | 只读 | |
40107 | 0106 | 编码器6的转速 | 只读 | |
40108 | 0107 | 编码器7的转速 | 只读 | |
40129~40130 | 0128~0129 | 编码器0的频率 | 只读 | 编码器的脉冲频率(工作模式0) 数据为浮点数 |
40131~40132 | 0130~0131 | 编码器1的频率 | 只读 | |
40133~40134 | 0132~0133 | 编码器2的频率 | 只读 | |
40135~40136 | 0134~0135 | 编码器3的频率 | 只读 | |
40137~40138 | 0136~0137 | 编码器4的频率 | 只读 | |
40139~40140 | 0138~0139 | 编码器5的频率 | 只读 | |
40141~40142 | 0140~0141 | 编码器6的频率 | 只读 | |
40143~40144 | 0142~0143 | 编码器7的频率 | 只读 | |
40145~40146 | 0144~0145 | 通道A0的频率 | 只读 | 通道的脉冲频率(工作模式1) 数据为浮点数 |
40147~40148 | 0146~0147 | 通道B0的频率 | 只读 | |
40149~40150 | 0148~0149 | 通道A1的频率 | 只读 | |
40151~40152 | 0150~0151 | 通道B1的频率 | 只读 | |
40153~40154 | 0152~0153 | 通道A2的频率 | 只读 | |
40155~40156 | 0154~0155 | 通道B2的频率 | 只读 | |
40157~40158 | 0156~0157 | 通道A3的频率 | 只读 | |
40159~40160 | 0158~0159 | 通道B3的频率 | 只读 | |
40161~40162 | 0160~0161 | 通道A4的频率 | 只读 | |
40163~40164 | 0162~0163 | 通道B4的频率 | 只读 | |
40165~40166 | 0164~0165 | 通道A5的频率 | 只读 | |
40167~40168 | 0166~0167 | 通道B5的频率 | 只读 | |
40169~40170 | 0168~0169 | 通道A6的频率 | 只读 | |
40171~40172 | 0170~0171 | 通道B6的频率 | 只读 | |
40173~40174 | 0172~0173 | 通道A7的频率 | 只读 | |
40175~40176 | 0174~0175 | 通道B7的频率 | 只读 | |
地址4X(PLC) | 地址(PC,DCS) | 数据内容 | 属性 | 数据说明 |
40201 | 0200 | 模块地址 | 读/写 | 整数,重启后生效,范围0x0000-0x00FF |
40202 | 0201 | 波特率 | 读/写 | 整数,重启后生效,范围0x0004-0x000A 0x0004 = 2400 bps, 0x0005 = 4800 bps 0x0006 = 9600 bps, 0x0007 = 19200 bps 0x0008 = 38400 bps, 0x0009 = 57600 bps 0x000A = 115200bps |
40211 | 0210 | 模块名称 | 只读 | 高位:0x00 低位:0x69 |
表5 Modbus Rtu寄存器说明
通讯举例1:假如模块地址为01,以16进制发送:010300100002C5CE ,即可取得寄存器的数据。
01 | 03 | 00 | 10 | 00 | 02 | C5 | CE |
模块地址 | 读保持寄存器 | 寄存器地址高位 | 寄存器地址低位 | 寄存器数量高位 | 寄存器数量低位 | CRC校验低位 | CRC校验高位 |
假如模块回复:010304CA90FFFFC476即读到的数据为0xFFFFCA90,换成10进制为-13680,即表明现在编码器0的计数值为-13680。
01 | 03 | 04 | CA | 90 | FF | FF | C4 | 76 |
模块地址 | 读保持寄存器 | 数据的字节数 | 数据1高位 | 数据1低位 | 数据2高位 | 数据2低位 | CRC校验低位 | CRC校验高位 |
通讯举例2:假如模块地址为01,以16进制发送:010300200002C5C1 ,即可取得寄存器的数据。
01 | 03 | 00 | 20 | 00 | 02 | C5 | C1 |
模块地址 | 读保持寄存器 | 寄存器地址高位 | 寄存器地址低位 | 寄存器数量高位 | 寄存器数量低位 | CRC校验低位 | CRC校验高位 |
假如模块回复:010304CA90FFFFC476即读到的数据为0xFFFFCA90,换成10进制为4294953616,即表明现在通道A0的计数值为4294953616。
01 | 03 | 04 | CA | 90 | FF | FF | C4 | 76 |
模块地址 | 读保持寄存器 | 数据的字节数 | 数据1高位 | 数据1低位 | 数据2高位 | 数据2低位 | CRC校验低位 | CRC校验高位 |
通讯举例3:假如模块地址为01,以16进制发送:01060043000AF819 ,即清零编码器0的计数值。
01 | 06 | 00 | 43 | 00 | 0A | F8 | 19 |
模块地址 | 写单个保持寄存器 | 寄存器地址高位 | 寄存器地址低位 | 数据高位 | 数据低位 | CRC校验低位 | CRC校验高位 |
假如模块回复:01060043000AF819即表示设置成功,编码器0的计数值修改为0。
01 | 06 | 00 | 43 | 00 | 0A | F8 | 19 |
模块地址 | 写单个保持寄存器 | 寄存器地址高位 | 寄存器地址低位 | 数据高位 | 数据低位 | CRC校验低位 | CRC校验高位 |
外形尺寸:(单位:mm)
8路编码器脉冲计数器或16路DI高速计数器,Modbus RTU模块 YL69https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.1d293d0dzzWtEC&ft=t&id=683841761627