用串口通信来控制伺服速度,先看说明书
P3-05 CMM 通讯功能 通讯地址:030AH 030BH
参数功能: RS-232 通讯选择标准 MODBUS 或是与 ASDA-Soft 通讯
RS-232 通讯格式
0:RS-232 标准 MODBUS 通讯
1:RS-232 可与 ASDA-Soft 通讯
修改为0
改变控制模式
P1-01通讯地址:0102H 0103H
控制模式设定
Mode PT S T Sz Tz
单一模式
00 ▲
01 保留
02 ▲
03 ▲
04 ▲
05 ▲
混合模式
06 ▲ ▲
07 ▲ ▲
08 保留
09 保留
0A ▲▲
单一模式:
PT:位置控制模式(命令来源为外部脉冲输入/外部模拟电压(*预
计加入)两种来源,可通过 DI:PTAS 来选择)
S:速度控制模式(命令来源为外部模拟电压 /内部缓存器两种来源,
可通过 DI:SPD0,SPD1 来选择)
T:扭矩控制模式(命令来源为外部模拟电压 /内部缓存器两种来源,
可通过 DI:TCM0,TCM1 来选择)
Sz:零速度/内部速度缓存器命令
Tz:零扭矩/内部扭矩缓存器命令
混合模式:
可通过外部的 DI (Digital Input)来切换模式,例如设为 PT/S 的混合
模式(控制模式设定:06),则可通过 DI:S-P(请参考表 7.1)来
进行模式的切换。
寄存器的值设置为02 速度模式,再看输入端子
输入输出端子软件设定
输入
DI1 P2-10 0214H 0215H
DI2 P2-11 0216H 0217H
DI3 P2-12 0218H 0219H
DI4 P2-13 021AH 021BH
DI5 P2-14 021CH 021DH
DI6 P2-15 021EH 021FH
DI7 P2-16 0220H 0221H
DI8 P2-17 0222H 0223H
//1-8连续 第9个
DI9 P2-36 0248H 0249H
输出
DO1 P2-18 0224H 0225H
。..
DO5 P2-22 022CH 022DH
只看输入
DI3 、DI4出厂值是116,117控制力矩
我们改成114、115控制速度
速度命令的来源分成两类,一为外部输入的模拟电压;另一为内部参数。选择的方式可根
据 CN1 的 DI 信号来决定
内部速度指令的三个寄存器
SP1 P1-09 0112H 0113H
SP2 P1-10 0114H 0115H
SP3 P1-11 0116H 0117H
单位: 0.1r/min
设定范围: -50000 ~ +50000
此时外部硬件设置DI3 、DI4的信号,可以选择三个寄存器的速度值
00 0
10 sp1
01 sp2
11 sp3
怎样内部接通DI3 、DI4?
看P3-06
P3-06 SDI 输入接点(DI)来源控制开关 通讯地址:030CH 030DH
参数功能: DI 来源控制开关
此参数每 1 位决定 1 个 DI 的信号输入来源:
Bit0 ~ Bit8 对应至 DI1 ~ DI9。
位设定表示如下:
0:输入接点状态由外部硬件端子控制。
1:输入接点状态由系统参数 P4-07 控制。
数字输入接脚 DI 功能规划请参考:
DI1 ~ DI9:P2-10 ~ P2-17 与 P2-36
P3-06 DI来源控制开关。外部硬件控制还是内部寄存器控制
再来看P4-07
P4-07■ ITST 数字输入接点多重功能 通讯地址:040EH 040FH
参数功能: DI 的输入信号可来自外部硬件端子(DI1 ~ DI9)或是软件 SDI1 ~ 9
(对应参数 P4-07 的 Bit 0 ~ 8),并由参数 P3-06 来选择。P3-06
对应的位为 1 表示来源为软件 SDI(P4-07),反之,则来自硬件DI
例如:
读取 P4-07 的数值为 0x0011 则代表:最终 DI1、DI5 为 ON
写入 P4-07 的数值为 0x0011 则代表:软件 SDI1、SDI5 为 ON;
数字输入接脚 DI (DI1~DI9) 功能规划请参考 P2-10~P2-17 和P2-36;说的是上面的列表
P4-07相当于软件输入的开关,改变这个寄存器的值,就相当于外部硬件端子接通或断开某个DI
能设置这些寄存器,我们可以不用外部硬件接线,串口通信直接控制伺服的速度了。
上马
#关闭强制使能
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x023c, output_value=0))
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x023c, 0x0004))
#P1-01设置为2
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x0102, output_value=2))
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x0102, 0x0004))
# DI3 P2-12 0218H 0219H
# DI4 P2-13 021AH 021BH
logger.info(master.execute(dvc_id, cst.WRITE_MULTIPLE_REGISTERS, 0x0218, output_value=[0x114, 0, 0x115, 0]))
#logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x0218, output_value=2))
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x0218, 0x0004))
#3个32位的速度数据
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x0112, 0x0006))
# P3-06 SDI 输入接点(DI)来源控制开关 通讯地址:030CH 030DH
# 1为内部软控
_r = (master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x030C, 0x0002))
print(_r)
_va = _r[0] | 0x0C # 0000 1100 //第34位对应DI3 DI4
_va = _va | 0x01 # 0000 0001 //第1位对应DI1 Son 伺服使能
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x030C, output_value=_va))
# DI 的输入信号可来自外部硬件端子(DI1 ~ DI9)或是软件 SDI1 ~ 9(对应参数 P4-07 的 Bit 0 ~ 8)
_r = master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x040E, 0x0002)
print(_r)
_va = _r[0] | 0x0C # 0000 1100 //第34位对应DI3 DI4
_va = _va | 0x01 # 0000 0001 //第1位对应DI1 Son 伺服使能
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x040E, output_value=_va))
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x040E, 0x0002))
time.sleep(3)
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x040E, output_value=0x00))#关闭使能,停止
用串口通信来控制伺服速度,先看说明书
P3-05 CMM 通讯功能 通讯地址:030AH 030BH
参数功能: RS-232 通讯选择标准 MODBUS 或是与 ASDA-Soft 通讯
RS-232 通讯格式
0:RS-232 标准 MODBUS 通讯
1:RS-232 可与 ASDA-Soft 通讯
修改为0
改变控制模式
P1-01通讯地址:0102H 0103H
控制模式设定
Mode PT S T Sz Tz
单一模式
00 ▲
01 保留
02 ▲
03 ▲
04 ▲
05 ▲
混合模式
06 ▲ ▲
07 ▲ ▲
08 保留
09 保留
0A ▲▲
单一模式:
PT:位置控制模式(命令来源为外部脉冲输入/外部模拟电压(*预
计加入)两种来源,可通过 DI:PTAS 来选择)
S:速度控制模式(命令来源为外部模拟电压 /内部缓存器两种来源,
可通过 DI:SPD0,SPD1 来选择)
T:扭矩控制模式(命令来源为外部模拟电压 /内部缓存器两种来源,
可通过 DI:TCM0,TCM1 来选择)
Sz:零速度/内部速度缓存器命令
Tz:零扭矩/内部扭矩缓存器命令
混合模式:
可通过外部的 DI (Digital Input)来切换模式,例如设为 PT/S 的混合
模式(控制模式设定:06),则可通过 DI:S-P(请参考表 7.1)来
进行模式的切换。
寄存器的值设置为02 速度模式,再看输入端子
输入输出端子软件设定
输入
DI1 P2-10 0214H 0215H
DI2 P2-11 0216H 0217H
DI3 P2-12 0218H 0219H
DI4 P2-13 021AH 021BH
DI5 P2-14 021CH 021DH
DI6 P2-15 021EH 021FH
DI7 P2-16 0220H 0221H
DI8 P2-17 0222H 0223H
//1-8连续 第9个
DI9 P2-36 0248H 0249H
输出
DO1 P2-18 0224H 0225H
。..
DO5 P2-22 022CH 022DH
只看输入
DI3 、DI4出厂值是116,117控制力矩
我们改成114、115控制速度
速度命令的来源分成两类,一为外部输入的模拟电压;另一为内部参数。选择的方式可根
据 CN1 的 DI 信号来决定
内部速度指令的三个寄存器
SP1 P1-09 0112H 0113H
SP2 P1-10 0114H 0115H
SP3 P1-11 0116H 0117H
单位: 0.1r/min
设定范围: -50000 ~ +50000
此时外部硬件设置DI3 、DI4的信号,可以选择三个寄存器的速度值
00 0
10 sp1
01 sp2
11 sp3
怎样内部接通DI3 、DI4?
看P3-06
P3-06 SDI 输入接点(DI)来源控制开关 通讯地址:030CH 030DH
参数功能: DI 来源控制开关
此参数每 1 位决定 1 个 DI 的信号输入来源:
Bit0 ~ Bit8 对应至 DI1 ~ DI9。
位设定表示如下:
0:输入接点状态由外部硬件端子控制。
1:输入接点状态由系统参数 P4-07 控制。
数字输入接脚 DI 功能规划请参考:
DI1 ~ DI9:P2-10 ~ P2-17 与 P2-36
P3-06 DI来源控制开关。外部硬件控制还是内部寄存器控制
再来看P4-07
P4-07■ ITST 数字输入接点多重功能 通讯地址:040EH 040FH
参数功能: DI 的输入信号可来自外部硬件端子(DI1 ~ DI9)或是软件 SDI1 ~ 9
(对应参数 P4-07 的 Bit 0 ~ 8),并由参数 P3-06 来选择。P3-06
对应的位为 1 表示来源为软件 SDI(P4-07),反之,则来自硬件DI
例如:
读取 P4-07 的数值为 0x0011 则代表:最终 DI1、DI5 为 ON
写入 P4-07 的数值为 0x0011 则代表:软件 SDI1、SDI5 为 ON;
数字输入接脚 DI (DI1~DI9) 功能规划请参考 P2-10~P2-17 和P2-36;说的是上面的列表
P4-07相当于软件输入的开关,改变这个寄存器的值,就相当于外部硬件端子接通或断开某个DI
能设置这些寄存器,我们可以不用外部硬件接线,串口通信直接控制伺服的速度了。
上马
#关闭强制使能
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x023c, output_value=0))
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x023c, 0x0004))
#P1-01设置为2
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x0102, output_value=2))
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x0102, 0x0004))
# DI3 P2-12 0218H 0219H
# DI4 P2-13 021AH 021BH
logger.info(master.execute(dvc_id, cst.WRITE_MULTIPLE_REGISTERS, 0x0218, output_value=[0x114, 0, 0x115, 0]))
#logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x0218, output_value=2))
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x0218, 0x0004))
#3个32位的速度数据
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x0112, 0x0006))
# P3-06 SDI 输入接点(DI)来源控制开关 通讯地址:030CH 030DH
# 1为内部软控
_r = (master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x030C, 0x0002))
print(_r)
_va = _r[0] | 0x0C # 0000 1100 //第34位对应DI3 DI4
_va = _va | 0x01 # 0000 0001 //第1位对应DI1 Son 伺服使能
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x030C, output_value=_va))
# DI 的输入信号可来自外部硬件端子(DI1 ~ DI9)或是软件 SDI1 ~ 9(对应参数 P4-07 的 Bit 0 ~ 8)
_r = master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x040E, 0x0002)
print(_r)
_va = _r[0] | 0x0C # 0000 1100 //第34位对应DI3 DI4
_va = _va | 0x01 # 0000 0001 //第1位对应DI1 Son 伺服使能
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x040E, output_value=_va))
logger.info(master.execute(dvc_id, cst.READ_HOLDING_REGISTERS, 0x040E, 0x0002))
time.sleep(3)
logger.info(master.execute(dvc_id, cst.WRITE_SINGLE_REGISTER, 0x040E, output_value=0x00))#关闭使能,停止
举报