精易论坛

标题: 雷赛smc106A 测试软件 想玩工控 上位机的可以看一下 [打印本页]

作者: 心寒中Q    时间: 2021-12-20 15:36
标题: 雷赛smc106A 测试软件 想玩工控 上位机的可以看一下
一直都在论坛上白嫖,今天我也贡献一点吧。雷赛运动控制器的测试源码,基于雷赛官方SMC106A动态库编写(未完全版本,正在研究中)
源码有调用精易模块,请自行下载。
源码功能正常(需要搭配SMC106A测试。)
  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
集_连接控制器 = smc_board_init (0, 2, “192.168.5.11”, 0)
如果真 (集_连接控制器 ≠ 0)
信息框 (“控制器未链接”, 0, “错误”, )
返回 ()
组合框1.现行选中项 = 1
组合框2.现行选中项 = 1
组合框3.现行选中项 = 1
组合框4.现行选中项 = 1
组合框5.现行选中项 = 1
组合框6.现行选中项 = 1
组合框7.现行选中项 = 1
组合框8.现行选中项 = 2
组合框9.现行选中项 = 2
组合框10.现行选中项 = 2
组合框11.现行选中项 = 2
组合框12.现行选中项 = 2
组合框13.现行选中项 = 2
组合框14.现行选中项 = 0
组合框15.现行选中项 = 0
组合框16.现行选中项 = 0
程序配置 ()
启动线程 (&_运动状态监视_时钟_周期事件, , )
启动线程 (&_IO监控_时钟_周期事件, , )
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
全_错误代码 = smc_emg_stop (0)  ' 停止
全_错误代码 = smc_board_close (0)
子程序名返回值类型公开备 注
程序配置  
变量名类 型静态数组备 注
局_有效电平0整数型 
局_有效电平1整数型 
局_有效电平2整数型 
局_回原点方向0整数型 
局_回原点方向1整数型 
局_回原点方向2整数型 
局_回原点模式0整数型 
局_回原点模式1整数型 
局_回原点模式2整数型 
局_重置模式0整数型 
局_重置模式1整数型 
局_重置模式2整数型 
局_重置位置0双精度小数型 
局_重置位置1双精度小数型 
局_重置位置2双精度小数型 
局_启动速度0双精度小数型 
局_启动速度1双精度小数型 
局_启动速度2双精度小数型 
局_最大速度0双精度小数型 
局_最大速度1双精度小数型 
局_最大速度2双精度小数型 
局_加速时间0双精度小数型 
局_加速时间1双精度小数型 
局_加速时间2双精度小数型 
原点模式0整数型 
原点模式1整数型 
原点模式2整数型 
集_启动速度 = 到数值 (编辑框1.内容)
集_停止速度 = 到数值 (编辑框2.内容)
集_最大加速 = 到数值 (编辑框3.内容)
集_加速时间 = 到数值 (编辑框4.内容)
集_减速时间 = 到数值 (编辑框5.内容)
集_S段时间 = 到数值 (编辑框6.内容)
集_指定位置 = 到数值 (编辑框7.内容)
全_错误代码 = smc_set_pulse_outmode (0, 0, 1)  ' 设置0轴脉冲输出模式
全_错误代码 = smc_set_pulse_outmode (0, 1, 1)  ' 设置1轴脉冲输出模式
全_错误代码 = smc_set_pulse_outmode (0, 2, 1)  ' 设置2轴脉冲输出模式
全_错误代码 = smc_set_equiv (0, 0, 1)  ' 设置0轴脉冲当量
全_错误代码 = smc_set_equiv (0, 1, 1)  ' 设置1轴脉冲当量
全_错误代码 = smc_set_equiv (0, 2, 1)  ' 设置2轴脉冲当量
全_错误代码 = smc_set_backlash_unit (0, 0, 0)  ' 设置0轴反向间隙值
全_错误代码 = smc_set_backlash_unit (0, 1, 0)  ' 设置1轴反向间隙值
全_错误代码 = smc_set_backlash_unit (0, 2, 0)  ' 设置2轴反向间隙值
全_错误代码 = smc_set_profile_unit (0, 0, 集_启动速度, 集_最大加速, 集_加速时间, 集_减速时间, 集_停止速度)  ' ' 设置0轴单轴运动速度曲线(时间模式)
全_错误代码 = smc_set_profile_unit (0, 1, 集_启动速度, 集_最大加速, 集_加速时间, 集_减速时间, 集_停止速度)  ' ' 设置1轴单轴运动速度曲线(时间模式)
全_错误代码 = smc_set_profile_unit (0, 2, 集_启动速度, 集_最大加速, 集_加速时间, 集_减速时间, 集_停止速度)  ' ' 设置2轴单轴运动速度曲线(时间模式)
全_错误代码 = smc_set_s_profile (0, 0, 0, 集_S段时间)  ' 设置0轴单轴速度曲线 S 段参数值
全_错误代码 = smc_set_s_profile (0, 1, 0, 集_S段时间)  ' 设置1轴单轴速度曲线 S 段参数值
全_错误代码 = smc_set_s_profile (0, 2, 0, 集_S段时间)  ' 设置2轴单轴速度曲线 S 段参数值
局_有效电平0 = 组合框2.现行选中项
局_有效电平1 = 组合框3.现行选中项
局_有效电平2 = 组合框4.现行选中项
局_回原点方向0 = 组合框5.现行选中项
局_回原点方向1 = 组合框6.现行选中项
局_回原点方向2 = 组合框7.现行选中项
局_回原点模式0 = 组合框8.现行选中项
局_回原点模式1 = 组合框9.现行选中项
局_回原点模式2 = 组合框10.现行选中项
局_重置模式0 = 组合框11.现行选中项
局_重置模式1 = 组合框12.现行选中项
局_重置模式2 = 组合框13.现行选中项
局_重置位置0 = 到数值 (编辑框8.内容)
局_重置位置1 = 到数值 (编辑框9.内容)
局_重置位置2 = 到数值 (编辑框10.内容)
局_启动速度0 = 到数值 (编辑框11.内容)
局_启动速度1 = 到数值 (编辑框12.内容)
局_启动速度2 = 到数值 (编辑框13.内容)
局_最大速度0 = 到数值 (编辑框14.内容)
局_最大速度1 = 到数值 (编辑框15.内容)
局_最大速度2 = 到数值 (编辑框16.内容)
局_加速时间0 = 到数值 (编辑框17.内容)
局_加速时间1 = 到数值 (编辑框18.内容)
局_加速时间2 = 到数值 (编辑框19.内容)
原点模式0 = 组合框14.现行选中项
原点模式1 = 组合框15.现行选中项
原点模式2 = 组合框16.现行选中项
全_错误代码 = smc_set_home_profile_unit (0, 0, 局_启动速度0, 局_最大速度0, 局_加速时间0, 0)  ' 设置回原点速度参数
全_错误代码 = smc_set_home_profile_unit (0, 1, 局_启动速度1, 局_最大速度1, 局_加速时间1, 0)  ' 设置回原点速度参数
全_错误代码 = smc_set_home_profile_unit (0, 2, 局_启动速度2, 局_最大速度2, 局_加速时间2, 0)  ' 设置回原点速度参数
全_错误代码 = smc_set_home_position_unit (0, 0, 局_重置模式0, 局_重置位置0)  ' 回零完成后设置偏移位置值
全_错误代码 = smc_set_home_position_unit (0, 1, 局_重置模式1, 局_重置位置1)  ' 回零完成后设置偏移位置值
全_错误代码 = smc_set_home_position_unit (0, 2, 局_重置模式2, 局_重置位置2)  ' 回零完成后设置偏移位置值
全_错误代码 = smc_set_homemode (0, 0, 局_回原点方向0, 1, 局_回原点模式0, 0)  ' 设置回原点模式
全_错误代码 = smc_set_homemode (0, 1, 局_回原点方向1, 1, 局_回原点模式1, 0)  ' 设置回原点模式
全_错误代码 = smc_set_homemode (0, 2, 局_回原点方向2, 1, 局_回原点模式2, 0)  ' 设置回原点模式
全_错误代码 = smc_set_home_pin_logic (0, 0, 局_有效电平0, 0)  ' 设置 ORG 原点信号
全_错误代码 = smc_set_home_pin_logic (0, 1, 局_有效电平1, 0)  ' 设置 ORG 原点信号
全_错误代码 = smc_set_home_pin_logic (0, 2, 局_有效电平2, 0)  ' 设置 ORG 原点信号
全_错误代码 = smc_set_el_home (0, 0, 原点模式0)  ' 限位当原点切换
全_错误代码 = smc_set_el_home (0, 1, 原点模式0)  ' 限位当原点切换
全_错误代码 = smc_set_el_home (0, 2, 原点模式0)  ' 限位当原点切换
子程序名返回值类型公开备 注
_启动_按钮_被单击  
启动线程 (&开始, , )
子程序名返回值类型公开备 注
开始  
变量名类 型静态数组备 注
局_运行方向整数型 
程序配置 ()
局_运行方向 = 组合框1.现行选中项
如果真 (单选框1.选中 = )
如果真 (选择框1.选中 = )
全_错误代码 = smc_pmove_unit (0, 0, 集_指定位置, 1)  ' 定长运动
如果真 (选择框2.选中 = )
全_错误代码 = smc_pmove_unit (0, 1, 集_指定位置, 1)  ' 定长运动
如果真 (选择框3.选中 = )
全_错误代码 = smc_pmove_unit (0, 2, 集_指定位置, 1)  ' 定长运动

如果真 (单选框2.选中 = )
如果真 (选择框1.选中 = )
全_错误代码 = smc_vmove (0, 0, 局_运行方向)  ' 恒动
如果真 (选择框2.选中 = )
全_错误代码 = smc_vmove (0, 1, 局_运行方向)  ' 恒动
如果真 (选择框3.选中 = )
全_错误代码 = smc_vmove (0, 2, 局_运行方向)  ' 恒动


子程序名返回值类型公开备 注
_运动状态监视_时钟_周期事件  
变量名类 型静态数组备 注
当前位置0双精度小数型 
当前位置1双精度小数型 
当前位置2双精度小数型 
局_运动状态0整数型 
局_运动状态1整数型 
局_运动状态2整数型 
运动状态监视_时钟.时钟周期 = 1
局_运动状态0 = smc_check_done (0, 0)  ' 检测指定轴的运动状态
局_运动状态1 = smc_check_done (0, 1)  ' 检测指定轴的运动状态
局_运动状态2 = smc_check_done (0, 2)  ' 检测指定轴的运动状态
如果 (局_运动状态0 = 1)
标签3.标题 = “停止”
标签3.标题 = “运行”
全_错误代码 = smc_get_position_unit (0, 0, 当前位置0)
标签4.标题 = 到文本 (到整数 (当前位置0))
如果 (局_运动状态1 = 1)
标签7.标题 = “停止”
标签7.标题 = “运行”
全_错误代码 = smc_get_position_unit (0, 1, 当前位置1)
标签8.标题 = 到文本 (到整数 (当前位置1))
如果 (局_运动状态2 = 1)
标签11.标题 = “停止”
标签11.标题 = “运行”
全_错误代码 = smc_get_position_unit (0, 2, 当前位置2)
标签12.标题 = 到文本 (到整数 (当前位置2))

子程序名返回值类型公开备 注
_IO监控_时钟_周期事件  
IO监控_时钟.时钟周期 = 50
如果 (smc_read_outbit (0, 0) = 0)
标签47.背景颜色 = #绿色
标签47.背景颜色 = #红色
如果 (smc_read_outbit (0, 1) = 0)
标签48.背景颜色 = #绿色
标签48.背景颜色 = #红色
如果 (smc_read_outbit (0, 2) = 0)
标签49.背景颜色 = #绿色
标签49.背景颜色 = #红色
如果 (smc_read_outbit (0, 3) = 0)
标签50.背景颜色 = #绿色
标签50.背景颜色 = #红色
如果 (smc_read_outbit (0, 4) = 0)
标签51.背景颜色 = #绿色
标签51.背景颜色 = #红色
如果 (smc_read_outbit (0, 5) = 0)
标签52.背景颜色 = #绿色
标签52.背景颜色 = #红色
如果 (smc_read_outbit (0, 6) = 0)
标签53.背景颜色 = #绿色
标签53.背景颜色 = #红色
如果 (smc_read_outbit (0, 7) = 0)
标签54.背景颜色 = #绿色
标签54.背景颜色 = #红色
如果 (smc_read_outbit (0, 8) = 0)
标签55.背景颜色 = #绿色
标签55.背景颜色 = #红色
如果 (smc_read_outbit (0, 9) = 0)
标签56.背景颜色 = #绿色
标签56.背景颜色 = #红色
如果 (smc_read_outbit (0, 10) = 0)
标签57.背景颜色 = #绿色
标签57.背景颜色 = #红色
如果 (smc_read_outbit (0, 11) = 0)
标签58.背景颜色 = #绿色
标签58.背景颜色 = #红色

子程序名返回值类型公开备 注
_紧急停止_按钮_被单击  
全_错误代码 = smc_emg_stop (0)  ' 紧急停止
子程序名返回值类型公开备 注
_减速停止_按钮_被单击  
全_错误代码 = smc_stop (0, 0, 0)  ' 减速停止
全_错误代码 = smc_stop (0, 1, 0)  ' 减速停止
全_错误代码 = smc_stop (0, 2, 0)  ' 减速停止
子程序名返回值类型公开备 注
_计数器清零_按钮_被单击  
全_错误代码 = smc_set_position_unit (0, 0, 10)  ' 设置当前指令位置计数器值
标签4.标题 = “0”
全_错误代码 = smc_set_position_unit (0, 1, 10)  ' 设置当前指令位置计数器值
标签8.标题 = “0”
全_错误代码 = smc_set_position_unit (0, 2, 10)  ' 设置当前指令位置计数器值
标签12.标题 = “0”
子程序名返回值类型公开备 注
_回零_按钮_被单击  
程序配置 ()
如果真 (选择框1.选中 = )
全_错误代码 = smc_home_move (0, 0)  ' 启动回零
如果真 (选择框2.选中 = )
全_错误代码 = smc_home_move (0, 1)  ' 启动回零
如果真 (选择框3.选中 = )
全_错误代码 = smc_home_move (0, 2)  ' 启动回零
回原点状态_时钟.时钟周期 = 100
子程序名返回值类型公开备 注
_回原点状态_时钟_周期事件  
变量名类 型静态数组备 注
局_回原点状态0整数型 
局_回原点状态1整数型 
局_回原点状态2整数型 
全_错误代码 = smc_get_home_result (0, 0, 局_回原点状态0)
全_错误代码 = smc_get_home_result (0, 0, 局_回原点状态1)
全_错误代码 = smc_get_home_result (0, 0, 局_回原点状态2)
如果真 (局_回原点状态0 = 1 局_回原点状态1 = 1 局_回原点状态2 = 1)
回原点状态_时钟.时钟周期 = 0
信息框 (“回零成功”, 0, , )
返回 ()


i支持库列表   支持库注释   
EThread多线程支持库

SMC106.zip

1.04 MB, 下载次数: 37, 下载积分: 精币 -2 枚


作者: 心寒中Q    时间: 2021-12-20 15:40
沙发是自己的 希望论坛尽快开放工控板块 阿弥陀佛
作者: 六度科技    时间: 2021-12-20 16:53
其实代码可以更加规范一些 这样也方便你自己后期更新维护
作者: yxl2008    时间: 2021-12-20 17:45
谢谢分享,下载学习!!!
作者: 心寒中Q    时间: 2021-12-20 18:11
打劫你裤衩 发表于 2021-12-20 16:53
其实代码可以更加规范一些 这样也方便你自己后期更新维护

这个只是测试函数用的 正在写上位机的时候肯定不能这么写的
作者: xjshuaishuai    时间: 2021-12-21 00:03
谢谢分享!
作者: 点点丶滴滴    时间: 2021-12-21 00:48
来看看
作者: qbb1822    时间: 2021-12-21 08:44
这个好,正需要这个呢。。
作者: zhaode2888    时间: 2021-12-21 21:45
谢谢分享,下载学习
作者: 1279868433    时间: 2021-12-21 23:53
        感谢分享,很给力!~
作者: 趣冉科技    时间: 2022-1-4 18:06
感谢楼主分享,支持一下~~
作者: ghost12    时间: 2022-3-27 00:02
很赞同,谢谢!
作者: 极品贱人    时间: 2023-4-13 22:41
感谢分享,有没有完整版的,
作者: 心寒中Q    时间: 2023-4-20 16:40
极品贱人 发表于 2023-4-13 22:41
感谢分享,有没有完整版的,

不用完整版 按照上面的例子照葫芦画瓢就行
作者: LOVE狼狼    时间: 2024-2-8 16:27
一起研究运动控制的加我404084439
作者: 1125542511    时间: 2024-4-22 11:42
下载看看




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4