hcq0-1100-d【禾川PLC】

使用文档:   控制器: Q系列应用教程 

型号说明:【HCQ0-1100-D】【HCQ0-1200-D】

外观接口说明

npn接近开关,输出拉低0V (300mA)

Q0系列CPU模块说明书ATCIQ02232.pdf

【FN钮】:左stop,中run,右fn

【CAN】:
            网口1.1  H【内部已并联120Ω】
            网口1.2  L【can】
            网口1.3  GND【屏蔽】
            网口1.4  A2【内部已并联120Ω】【不支持从站模式】com2
            网口1.5  B2

【port_1】:以太网

【port_2】:ECAT

【QBus  】: 右扩展io

【端子台 】: COM_1#:【右侧长端子】(SW4左:接通电阻120Ω)

            COM_2#:【网口】(3 GND,4 a2,5 b2)

            COM_3#:【rs232】

千兆以太网口支持 Modbus TCP ;  选择》 简单模式

固件版本越新越好。
大于 1.04 【越好】 该版本支持web【网页可视化】

IPV4:192.168.88.100 子网掩码:255.255.255.0  

运行模式下改ip

PLC的描述文件安装方式是工具下第一个。 【包安装】

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的连接'

固件升级默认ip:    http://192.168.88.100:10000/

 FN拨码:

左:STOP        中:RUN        右: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
掉电保持区       800kBytes

CPU 16bit

编译

编译不报错,下载就报错:

固件版本问题导致的,需要降级【库函数】版本(占位符)
或者固件不支持的库/功能 也要删掉。如 web等

 

 固件版本:

控制器: Q系列 产品包文件

                看名称后缀  1.04   需要注意某些函数库版本不能超过固件支持

有些函数版本,不能超过固件版本
cmpCodeMeter
ioStandard

PN码第一位是4的话是340版本的,建议扫描确认具体版本

 

 利用错误关键字,在库里找出这个是属于哪方面的,做降级参考。

 降级这2个库后,程序下载到PLC就不报错了。

CAN主站:  

 codesys【CAN总线】-CSDN博客

 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主站:

codesys【ECAT总线】维修电工Demo-CSDN博客

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 THEN
	gvl.Axis1.In.wStatusWord := 16#250;
	ELSE
		gvl.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 THEN
	h0:=gvl.Axis1.In.wStatusWord;
END_IF
IF	gvl.Axis1.Out.wControlWord = 6 THEN
	h6:=gvl.Axis1.In.wStatusWord;
END_IF
IF	gvl.Axis1.Out.wControlWord = 7 THEN
	h7:=gvl.Axis1.In.wStatusWord;
END_IF
IF	gvl.Axis1.Out.wControlWord = 16#F THEN
	hf:=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 THEN
	gvl.Axis1.In.wStatusWord := 16#250;
	ELSE
		gvl.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 THEN
	h0:=gvl.Axis1.In.wStatusWord;
END_IF
IF	gvl.Axis1.Out.wControlWord = 6 THEN
	h6:=gvl.Axis1.In.wStatusWord;
END_IF
IF	gvl.Axis1.Out.wControlWord = 7 THEN
	h7:=gvl.Axis1.In.wStatusWord;
END_IF
IF	gvl.Axis1.Out.wControlWord = 16#F THEN
	hf:=gvl.Axis1.In.wStatusWord;
END_IF

修改ip:

控制器: Q系列 产品包文件

运行模式下 

运行模式下》【修改ip】》【写参数】》【断电重启】

如果ip修改不成功,
需要考虑设备库插件的问题,重新安装对应固件版本的库

 ip改好后【写参数】【断电重启PLC】

如果ip修改失败,是因为固件描述版本不对,重新安装对应版本。

控制器: Q系列 产品包文件 

安装成功后

扩展模块:

1耦合器:        HCQX-ES06-D4

2分布式io:        HCQX-EC03-D4

3输入DI:        HCQX-ID32-D4

4输出DO:        HCQX-OD32-D4

5混合DIO:        HCQX-MD32-D4

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值