本文主要是介绍hcq0-1100-d【禾川PLC】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用文档: 控制器: Q系列应用教程
型号说明:【HCQ0-1100-D】【HCQ0-1200-D】
外观接口说明:
Q0系列CPU模块说明书ATCIQ02232.pdf【port_1】:以太网
【port_2】:ECAT
【QBus 】: 右扩展io【rs485 】: COM_1#:【右侧长端子】(SW4左:接通电阻120Ω)COM_2#:【网口】(3GND,4a,5b)【不支持从站模式】COM_3#:【rs232】网口1.1 H【内部已并联120Ω】
网口1.2 L【can】
网口1.3 GND【屏蔽】
网口1.4 A2【内部已并联120Ω】
网口1.5 B2
千兆以太网口支持 Modbus TCP ; 选择》 简单模式
固件版本越新越好。
大于 1.04 【越好】 该版本支持web【网页可视化】
IPV4:192.168.88.100 子网掩码:255.255.255.0
Q1系列有2个rj45网口:
网口1:IPV4:192.168.188.100 子网掩码:255.255.255.0
网口2:IPV4:192.168.88.100 子网掩码:255.255.255.0闪烁(W): Update灯【闪烁4下】 '用于查看和PLC的连接'
FN拨码:
【RUN闪烁】下:FN右拨一下,Update灯【闪4下】生效。再重新上电。SW向左 ←《 是ON
【RUN闪烁】下:FN右拨一下,Update灯【闪4下】生效。再重新上电。SW4:【左◀on】: A1 B1并联120Ω网口1.4 A2【内部已并联120Ω】
网口1.5 B2
TF卡位置:
sd0:TF卡
part0:U盘
程序总容量 16MBytes
I区(%) 128kBytes
Q区(%Q) 128kBytes
编程
M区 (%M) 512kBytes
掉电保持区 800kBytesCPU 16bit
编译:
编译不报错,下载就报错:
固件版本问题导致的,需要降级【库函数】版本(占位符)
或者固件不支持的库/功能 也要删掉。如 web等
固件版本:
看名称后缀 1.04 需要注意有些函数库版本不能超过固件支持。
有些函数版本,不能超过固件版本
cmpCodeMeter
ioStandard
利用错误关键字,在库里找出这个是属于哪方面的,做降级参考。
降级这2个库后,程序下载到PLC就不报错了。
CAN主站:
CAN轴【禾川】-CSDN博客
面板上【CAN灯】:【常亮】can网线没有接通。【闪烁】正常工作中。
HL【内部已并联120Ω】主站80h帧【必须】是Task周期的【1~2】倍。从站心跳消费周期是主站心跳的【1.5】倍。 '480ms,720ms'【POWER】启动条件:0x6041=0x0250【JOG】 条件:0x6041=0x0637;且 0x60ff不为0,且0x6061=3【可按stop切换到03】jog键【长按】【JOG】释放后,需要等待5秒【注】:复位节点是独立的,不受专家勾选影响。
在can模块下,再添加can轴主站
右键》扫描设备
添加can库:
MC_POWER_CO 的条件是0x6041的值为0x0250; 【其他函数】0x6041的值为0x0627;
说明文档: 禾川Q系列CANOPEN应用教程V1.3-20210907.pdf库函数文件: 库函数HCFA_CANopenLib_0.0.0.4.compiled-library注意:库函数文件,官网上下载不了,只能人工服务,问客服索取。
库并不好用,类似寄存器绑定。
ECAT主站:
ECAT轴【调试笔记】_smc_followposition-CSDN博客
1修改ECAT网卡ip
2用扳手在线
3ECAT总线【右击,扫描从站】
4断开PLC
5驱动器下,添加402轴。
PLC命令:
? 打印可用命令的列表。
getcmdlist 在内部用于显示所有可用的命令。
mem<address>〔<size>〕 打印指定内存区域的Hexdump。
reflect 只需回复输入的命令(用于测试连接)。
applist 打印当前加载的应用程序的列表。pid[<应用程序名称>|<应用程序索引>] 转储一个特定或所有加载的应用程序的Guid。
pinf[<应用程序名称>|<应用程序索引>] 转储一个特定或所有加载的应用程序的项目信息。
startprg[<app名称>|<app索引>] 启动一个特定或所有加载的应用程序。
stopprg[<应用程序名称>|<应用程序索引>] 停止一个特定或所有加载的应用程序。
resetprg[<应用程序名称>|<应用程序索引>] 重置一个特定或所有加载的应用程序。
resetprgcold[<应用程序名称>|<应用程序索引>] 对一个特定或所有加载的应用程序执行冷重置。reload[<应用程序名称>|<应用程序索引>] 从启动项目重新加载一个特定或所有加载的应用程序。getprgprop[尚未实施]
getprgstat[<app名称>|<app索引>] 获取一个特定或所有加载的应用程序的状态。plcload 获取PLC任务的处理器负载。
rtsinfo 打印运行时系统信息,如处理器和运行时版本。
channelinfo 返回通信信道信息。
rtc-get 通过DateTime字符串获取UTC。
rtc-set 通过DateTime字符串设置UTC(请参阅ISO 8601)。所需格式:“rtc-set YYYY-MM-DDThh:mm:ss[,sss]”showsecuritysettings 显示所有安全设置和当前配置的列表。
cert-getapplist 显示所有已注册的应用证书(组件ID和应用程序)
cert genselfsigned[<number retrieved by "cert-getapplist"> <expdays=>]生成所有自签名证书
cert-gendhparams [len in bits] 生成Diffie-Hellman密钥交换所需的参数。注意力可能会持续几分钟!cert getcertlist[<trustlevel>] 获取所有证书的列表
cert-createcsr [<number retrieved by "cert-getapplist">] 为所有应用程序创建CSR文件
证书导入<信任级别><文件名>
导入证书cert导出<trustlevel>〔<“cert-getcertlist”检索的数字>〕
导出证书
cert-remove<trustlevel><通过“cert-getcertlist”或“all”检索的数字>
删除证书
plc程序导出
将目标plc程序导出到usb设备。
delpasswd
删除用户密码。
saveretains[<applicationname>]
保存保留到个文件。[仅在指定的应用程序中可选]。
restoreretains[<applicationname>]
从文件还原保留。[仅对指定的应用程序可选]。
软件授权:
编程:
变量:
PROGRAM CANopen样例
VAR//Axis1: AXIS_REF_CO ; // 新建局部变量MC_Power_CO :MC_Power_CO;MC_Home_CO :MC_Home_CO;MC_Reset_CO :MC_Reset_CO;MC_Stop_CO :MC_Stop_CO;MC_MoveVelocity_CO :MC_MoveVelocity_CO;MC_MoveAbsolute_CO :MC_MoveAbsolute_CO;MC_MoveAbsolute1_CO :MC_MoveAbsolute_CO;MC_MoveRelative_CO :MC_MoveRelative_CO;MC_MoveRelative1_CO :MC_MoveRelative_CO;MC_Jog_CO :MC_Jog_CO;b伺服通信状态 :BOOL;e轴运行状态 :SMC_AXIS_STATE;e轴故障代码 :MC_ERROR_CO;f轴当前位置 :LREAL;f轴当前速度 :lREAL;f轴当前转矩 :REAL;num :UINT;h0:uint;h6:UINT;h7:UINT;hF:uint;
END_VAR
程序:
//GVL.Axis1.pDevice
gvl.Axis1.pDevice :=ADR(DMA882_CAN); //---指定对应的CANOPEN设备,必须赋值
// GVL.Axis1 := Axis1 ;
gvl.Axis1.fEncoderFactor :=10000; //---给定齿轮比,齿轮比=(电机一圈指令数÷电机转动一圈对应应用单元)
// 修改0x6041默认值0x0250
IF gvl.h6041 = 16#0200 THENgvl.Axis1.In.wStatusWord := 16#250;ELSEgvl.Axis1.In.wStatusWord := gvl.h6041;
END_IF
// 使能电机
mc_power_co.bRegulatorOn:=1;
mc_power_co.bEnable:=1;
// 刷新任务A00_功能块调用();num:=num+1;//gvl.h6041:=num;
// 显示结果
b伺服通信状态 :=gvl.Axis1.bCommunication; //---读取从站通信状态
e轴运行状态 :=gvl.Axis1.nAxisState; //---读取轴运行状态
e轴故障代码 :=gvl.Axis1.eErrorID[0]; //---读取当前的轴故障代码
f轴当前位置 :=gvl.Axis1.fActPosition; //---读取伺服反馈位置
f轴当前速度 :=gvl.Axis1.fActVelocity; //---读取伺服反馈速度
f轴当前转矩 :=gvl.Axis1.fActTorque; //---读取伺服反馈转矩IF gvl.Axis1.Out.wControlWord = 0 THENh0:=gvl.Axis1.In.wStatusWord;
END_IF
IF gvl.Axis1.Out.wControlWord = 6 THENh6:=gvl.Axis1.In.wStatusWord;
END_IF
IF gvl.Axis1.Out.wControlWord = 7 THENh7:=gvl.Axis1.In.wStatusWord;
END_IF
IF gvl.Axis1.Out.wControlWord = 16#F THENhf:=gvl.Axis1.In.wStatusWord;
END_IF
是oop对象。可以循环对轴操作。
程序移植:
变量:
PROGRAM CANopen样例
VAR//Axis1: AXIS_REF_CO ; // 新建局部变量MC_Power_CO :MC_Power_CO;MC_Home_CO :MC_Home_CO;MC_Reset_CO :MC_Reset_CO;MC_Stop_CO :MC_Stop_CO;MC_MoveVelocity_CO :MC_MoveVelocity_CO;MC_MoveAbsolute_CO :MC_MoveAbsolute_CO;MC_MoveRelative_CO :MC_MoveRelative_CO;MC_Jog_CO :MC_Jog_CO;b伺服通信状态 :BOOL;e轴运行状态 :SMC_AXIS_STATE;e轴故障代码 :MC_ERROR_CO;f轴当前位置 :LREAL;f轴当前速度 :lREAL;f轴当前转矩 :REAL;num :UINT;h0:uint;h6:UINT;h7:UINT;hF:uint;
END_VAR
程序:
//GVL.Axis1.pDevice
gvl.Axis1.pDevice :=ADR(DMA882_CAN); //---指定对应的CANOPEN设备,必须赋值
// GVL.Axis1 := Axis1 ;
gvl.Axis1.fEncoderFactor :=10000; //---给定齿轮比,齿轮比=(电机一圈指令数÷电机转动一圈对应应用单元)
// 修改0x6041默认值0x0250
IF gvl.h6041 = 16#0200 THENgvl.Axis1.In.wStatusWord := 16#250;ELSEgvl.Axis1.In.wStatusWord := gvl.h6041;
END_IF
// 使能电机
mc_power_co.bRegulatorOn:=1;
mc_power_co.bEnable:=1;
// 刷新任务A00_功能块调用();num:=num+1;//gvl.h6041:=num;
// 显示结果
b伺服通信状态 :=gvl.Axis1.bCommunication; //---读取从站通信状态
e轴运行状态 :=gvl.Axis1.nAxisState; //---读取轴运行状态
e轴故障代码 :=gvl.Axis1.eErrorID[0]; //---读取当前的轴故障代码
f轴当前位置 :=gvl.Axis1.fActPosition; //---读取伺服反馈位置
f轴当前速度 :=gvl.Axis1.fActVelocity; //---读取伺服反馈速度
f轴当前转矩 :=gvl.Axis1.fActTorque; //---读取伺服反馈转矩IF gvl.Axis1.Out.wControlWord = 0 THENh0:=gvl.Axis1.In.wStatusWord;
END_IF
IF gvl.Axis1.Out.wControlWord = 6 THENh6:=gvl.Axis1.In.wStatusWord;
END_IF
IF gvl.Axis1.Out.wControlWord = 7 THENh7:=gvl.Axis1.In.wStatusWord;
END_IF
IF gvl.Axis1.Out.wControlWord = 16#F THENhf:=gvl.Axis1.In.wStatusWord;
END_IF
修改ip:
控制器: Q系列 产品包文件
运行模式下》【修改ip】》【写参数】》【断电重启】如果ip修改不成功,
需要考虑设备库插件的问题,重新安装对应固件版本的库
ip改好后【写参数】【断电重启PLC】
安装成功后
这篇关于hcq0-1100-d【禾川PLC】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!