注释
是的,人们对进行一些演练非常感兴趣——我目前也在尝试通过 modbus 控制带有 linuxcnc 的 parker ac10…… |
贡献者作者
这里只是一个快速总结:
您可以使用附加的配置文件来开始。当我试图显示主轴的当前功率和平均功率时,它们比必要的更复杂。但我不认为从 VFD 检索到的值是正确的并且太高了。因此,您可以去除应该将 HAL 配置缩小一半的功率计算。 请注意,需要在 AC10 配置寄存器(F111 和 F112)和 custom.hal 文件中设置主轴的最小和最大频率。当然,我不保证这不会烧毁你的房子或引起地震。我只能说它对我来说很好用。 Github 不允许我附加 .ini 和 .hal 文件,因此您需要复制并粘贴它们。 我希望,它有所帮助。 mb2hal.ini文件
自定义文件
自定义面板.xml
custom_postgui.hal
|
非常感谢所有详细信息,我一定会试一试……我是 03.09.2018 um 12:37 schrieb chaotix- <notifications@github.com>:这里只是一个简短的总结:你需要 LinuxCNC > 2.7.14(例如下一个版本),master 分支或需要使用 PR #487和#489自己编译 mb2hal. 配置 AC10,使您的主轴正常工作。然后将F203设为10,即可通过ModBus控制。使用寄存器 0x2000 启动/停止和设置方向,使用寄存器 0x010d (F113) 设置速度,使用寄存器 0x1000+ 读取当前状态(更多信息参见手册)。您可以使用附加的配置文件来开始。当我试图显示主轴的当前功率和平均功率时,它们比必要的更复杂。但我不认为从 VFD 检索到的值是正确的并且太高了。因此,您可以去除应该将 HAL 配置缩小一半的功率计算。请注意,需要在 AC10 配置寄存器(F111 和 F112)和 custom.hal 文件中设置主轴的最小和最大频率。当然我不 不能保证这不会烧毁你的房子或引起地震。我只能说它对我来说很好用。Github 不允许我附加 .ini 和 .hal 文件,因此您需要复制并粘贴它们。我希望,它有所帮助。mb2hal.ini [MB2HAL_INIT] #OPTIONAL:init 和 INI 文件解析的调试级别。# 0 = 沉默。# 1 = 错误信息(默认)。# 2 = OK 确认消息。# 3 = 调试消息。INIT_DEBUG=3 #OPTIONAL:HAL 模块(组件)名称。默认为“mb2hal”。HAL_MODULE_NAME = spindle-vfd #OPTIONAL:在事务之间插入“FLOAT 秒”的延迟,#to 不会有大量日志记录并便于调试。#Useful when using DEBUG=3 (NOT INIT_DEBUG=3) #它影响所有事务。#对正常活动使用“0.0”。减速=0.0 #REQUIRED:Modbus 事务总数。没有最大值。TOTAL_TRANSACTIONS=4 #每笔交易需要一个交易节,从00开始依次递增。#如果有新的链接(不是交易),你必须第一次提供REQUIRED参数。#Warning:任何未指定的可选参数都是从上一个事务中复制的。[TRANSACTION_00] LINK_TYPE=serial SERIAL_PORT=/dev/ttyUSB0 SERIAL_BAUD=9600 #数据位。5、6、7、8之一。SERIAL_BITS=8 #数据校验。其中之一:偶数、奇数、无。SERIAL_PARITY=none #停止位。1, 2之一。 SERIAL_STOP=2 #串口之间的延迟仅针对本次交易。#在毫秒。默认为 0。SERIAL_DELAY_MS=150 MB_SLAVE_ID=1 FIRST_ELEMENT=4096 NELEMENTS=8 #REQUIRED:Modbus 事务功能代码(参见 TOTAL_TRANSACTIONS=4 #每笔交易需要一个交易节,从00开始依次递增。#如果有新的链接(不是交易),你必须第一次提供REQUIRED参数。#Warning:任何未指定的可选参数都是从上一个事务中复制的。[TRANSACTION_00] LINK_TYPE=serial SERIAL_PORT=/dev/ttyUSB0 SERIAL_BAUD=9600 #数据位。5、6、7、8之一。SERIAL_BITS=8 #数据校验。其中之一:偶数、奇数、无。SERIAL_PARITY=none #停止位。1, 2之一。 SERIAL_STOP=2 #串口之间的延迟仅针对本次交易。#在毫秒。默认为 0。SERIAL_DELAY_MS=150 MB_SLAVE_ID=1 FIRST_ELEMENT=4096 NELEMENTS=8 #REQUIRED:Modbus 事务功能代码(参见 TOTAL_TRANSACTIONS=4 #每笔交易需要一个交易节,从00开始依次递增。#如果有新的链接(不是交易),你必须第一次提供REQUIRED参数。#Warning:任何未指定的可选参数都是从上一个事务中复制的。[TRANSACTION_00] LINK_TYPE=serial SERIAL_PORT=/dev/ttyUSB0 SERIAL_BAUD=9600 #数据位。5、6、7、8之一。SERIAL_BITS=8 #数据校验。其中之一:偶数、奇数、无。SERIAL_PARITY=none #停止位。1, 2之一。 SERIAL_STOP=2 #串口之间的延迟仅针对本次交易。#在毫秒。默认为 0。SERIAL_DELAY_MS=150 MB_SLAVE_ID=1 FIRST_ELEMENT=4096 NELEMENTS=8 #REQUIRED:Modbus 事务功能代码(参见 您必须第一次提供必需的参数。#Warning:任何未指定的可选参数都是从上一个事务中复制的。[TRANSACTION_00] LINK_TYPE=serial SERIAL_PORT=/dev/ttyUSB0 SERIAL_BAUD=9600 #数据位。5、6、7、8之一。SERIAL_BITS=8 #数据校验。其中之一:偶数、奇数、无。SERIAL_PARITY=none #停止位。1, 2之一。 SERIAL_STOP=2 #串口之间的延迟仅针对本次交易。#在毫秒。默认为 0。SERIAL_DELAY_MS=150 MB_SLAVE_ID=1 FIRST_ELEMENT=4096 NELEMENTS=8 #REQUIRED:Modbus 事务功能代码(参见 您必须第一次提供必需的参数。#Warning:任何未指定的可选参数都是从上一个事务中复制的。[TRANSACTION_00] LINK_TYPE=serial SERIAL_PORT=/dev/ttyUSB0 SERIAL_BAUD=9600 #数据位。5、6、7、8之一。SERIAL_BITS=8 #数据校验。其中之一:偶数、奇数、无。SERIAL_PARITY=none #停止位。1, 2之一。 SERIAL_STOP=2 #串口之间的延迟仅针对本次交易。#在毫秒。默认为 0。SERIAL_DELAY_MS=150 MB_SLAVE_ID=1 FIRST_ELEMENT=4096 NELEMENTS=8 #REQUIRED:Modbus 事务功能代码(参见 SERIAL_PARITY=none #停止位。1, 2之一。 SERIAL_STOP=2 #串口之间的延迟仅针对本次交易。#在毫秒。默认为 0。SERIAL_DELAY_MS=150 MB_SLAVE_ID=1 FIRST_ELEMENT=4096 NELEMENTS=8 #REQUIRED:Modbus 事务功能代码(参见 SERIAL_PARITY=none #停止位。1, 2之一。 SERIAL_STOP=2 #串口之间的延迟仅针对本次交易。#在毫秒。默认为 0。SERIAL_DELAY_MS=150 MB_SLAVE_ID=1 FIRST_ELEMENT=4096 NELEMENTS=8 #REQUIRED:Modbus 事务功能代码(参见http://www.modbus.org规格)。# fnct_02_read_discrete_inputs (02 = 0x02) # fnct_03_read_holding_registers (03 = 0x03) # fnct_04_read_input_registers (04 = 0x04) # fnct_06_write_single_register (06 = 0x06) # fnct_15_write_multiple_coils (15 = 0x0F) # fnct_16_write_multiple_registers (16 = 0x10) #fnct_02_read_discrete_inputs: creates boolean output HAL pins . #fnct_03_read_holding_registers:创建浮点输出 HAL 引脚。# 还创建了一个 u32 输出 HAL 引脚。#fnct_04_read_input_registers:创建浮点输出 HAL 引脚。# 还创建了一个 u32 输出 HAL 引脚。#fnct_15_write_multiple_coils:创建布尔输入 HAL 引脚。#fnct_16_write_multiple_registers:创建浮点输入 HAL 引脚。#引脚根据组件名称命名,交易号和订单号。#Example: mb2hal.00.01 (transaction=00, second register=01 (00 is the first one)) MB_TX_CODE=fnct_03_read_holding_registers #OPTIONAL:此事务的响应超时。在整数毫秒。默认为 500 毫秒。#这是在引发错误之前等待第一个字节的时间。MB_RESPONSE_TIMEOUT_MS=500 #OPTIONAL:此事务的字节超时。在整数毫秒。默认为 500 毫秒。#这是在引发错误之前从一个字节到另一个字节等待的时间。MB_BYTE_TIMEOUT_MS=500 #OPTIONAL:不要提供交易编号,而是使用名称。#Example: mb2hal.00.01 could be become mb2hal.plcin.01 #名称不能超过32个字符。#NOTE:使用名称时要小心,不要以两个事务#usign 相同的名称结束。HAL_TX_NAME=info #OPTIONAL:以赫兹为单位的最大更新率。默认为 0.0 (0. 0 = 尽快可用 = 无限)。#NOTE:这是最高汇率,实际汇率可能会更低。#如果您想以毫秒为单位计算它,请使用 (1000 / required_ms)。#Example:100 ms = MAX_UPDATE_RATE=10.0,因为 1000.0 ms / 100.0 ms = 10.0 Hz MAX_UPDATE_RATE=2.0 #OPTIONAL:仅此事务的调试级别。#参见上面的 INIT_DEBUG 参数。DEBUG=1 #While DEBUGGING 事务注意返回的“ret[]”值对应于:#/* Modbus 协议异常*/ #ILLEGAL_FUNCTION -0x01 查询中收到的 FUNCTION 代码不允许或无效。#ILLEGAL_DATA_ADDRESS -0x02 查询中收到的数据地址不是从站允许的地址或无效。#ILLEGAL_DATA_VALUE -0x03 数据查询字段中包含的 VALUE 不是允许的值或无效。#SLAVE_DEVICE_FAILURE -0x04 SLAVE(或 MASTER)设备在尝试执行请求的操作时无法恢复 FAILUER。#SERVER_FAILURE -0x04(见上文)。#ACKNOWLEDGE -0x05 返回此响应以防止主机超时。# 在slave中处理请求需要很长时间。#SLAVE_DEVICE_BUSY -0x06 从站(或服务器)忙。稍后重传请求。#SERVER_BUSY -0x06(见上文)。#NEGATIVE_ACKNOWLEDGE -0x07 使用功能代码 13 或 14 的编程请求不成功。 #MEMORY_PARITY_ERROR -0x08 MEMORY 中的 SLAVE 奇偶校验错误。#GATEWAY_PROBLEM_PATH -0x0A (-10) 网关路径不可用。#GATEWAY_PROBLEM_TARGET -0x0B (-11) 目标设备无法响应(由主设备而非从设备生成)。stop setp mux4.runmode.in1 2 # Reverse setp mux4.runmode.in2 3 # Dec. stop setp mux4.runmode.in3 1 # Forward net spindle-on motion.spindle-on => mux4.runmode.sel0 net spindle-fwd 复制代码motion.spindle-forward => mux4.runmode.sel1 net spindle-runmode mux4.runmode.out => spindle-vfd.runmode.command # 根据所需速度计算频率 net spindle-speed motion.spindle-speed-out-abs = > mult2.freq.in0 setp mult2.freq.in1 1.666667 # 100 / 120 * 电机极数 net spindle-speed-raw mult2.freq.out => limit1.freq.in # 限制速度输出 setp limit1.freq.min 10000 #分钟 频率 * 100 setp limit1.freq.max 40000 # 最大。Frequency * 100 net spindle-speed-cmd limit1.freq.out => spindle-vfd.frequency.hz # 检查主轴状态是否有故障 net spindle-status-raw spindle-vfd.info.05.float => comp.status-行。in0 setp comp.status-ok.in1 25603 # 0x6403 MSB:驱动比(1 * 100),LSB:状态。< 3 = OK # 当 vfd 报告故障或在 GUI 中按下 estop 时触发 estop net estop-ioc-in iocontrol.0.user-enable-out => and2.estop-in.in0 net estop-vfd-in comp. status-ok.out => and2.estop-in.in1 net spindle-status-ok and2.estop-in.out => estop-latch.0.ok-in net estop-out estop-latch.0.ok- out => iocontrol.0.emc-enable-in net estop-reset iocontrol.0.user-request-enable => estop-latch.0.reset # 设置 motion.spindle-at-speed net spindle-speed near.speed .in1 net spindle-speed-in spindle-vfd.info2.rpm.float => near.speed.in2 setp near.speed.scale 1.05 net spindle-at-speed near.speed.out => motion.spindle-at- speed # temperature in °C net vfd-temp spindle-vfd.info.07.int # voltage * current * 0. <max_>24000</max_> </bar> </table> </labelframe> </pyvcp> custom_postgui.hal # 在此处包含您自定义的 HAL 命令 # 此文件中的命令在 AXIS GUI(包括 PyVCP 面板)之后运行) 启动 net vfd-power-mean pyvcp.vfd-power-mean net vfd-power pyvcp.vfd-power-cur net spindle-at-speed pyvcp.spindle-at-speed net spindle-speed-in pyvcp.spindle-speed -in——你收到这个是因为你发表了评论。直接回复此电子邮件,在 GitHub 上查看它,或将线程静音。hal # 在此处包含您自定义的 HAL 命令 # 此文件中的命令在 AXIS GUI(包括 PyVCP 面板)启动后运行 net vfd-power-mean pyvcp.vfd-power-mean net vfd-power pyvcp.vfd-power-cur net spindle-at-speed pyvcp.spindle-at-speed net spindle-speed-in pyvcp.spindle-speed-in – 你收到这个是因为你发表了评论。直接回复此电子邮件,在 GitHub 上查看它,或将线程静音。hal # 在此处包含您自定义的 HAL 命令 # 此文件中的命令在 AXIS GUI(包括 PyVCP 面板)启动后运行 net vfd-power-mean pyvcp.vfd-power-mean net vfd-power pyvcp.vfd-power-cur net spindle-at-speed pyvcp.spindle-at-speed net spindle-speed-in pyvcp.spindle-speed-in – 你收到这个是因为你发表了评论。直接回复此电子邮件,在 GitHub 上查看它,或将线程静音。
|
合作者
也许这属于维基?把它留在这里作为一个开放的问题看起来很糟糕…… |
我最近通过 mb2hal 将我的 Parker AC10 VFD 连接到 LinuxCNC。
是否有兴趣记录让所有部分协同工作所必需的内容?它将包含 VFD 的必要设置、mb2hal.ini、HAL 配置和 PYVCP-XML 文件(以显示当前速度和全速 LED 指示灯)。
我应该创建一个拉取请求吗?如果是的话,它应该去哪里?在 src/hal/user_comps/mb2hal/examples 或 docs/src/???
或者我应该把它放在这里的问题中,然后有人会把它包括在内吗?