解决codesys每2小时掉线及与使用其他组件中函数方法

解决codesys Runtime每2小时掉线

注意:必须购买codesys相关组件才可以进行以下设置;将3s_INFO.txt中ID复制到以下链接创建生成的模板库中即可。
在这里插入图片描述

模板库创建

使用其他组件中函数方法

注意:通过模板库生成的CmpXKLibDep.m4文件只是最基础的,如果想调用其他组件的函数,或者说想与其他组件产生联系需要修改该文件。
CmpXKLibDep.m4

/**
 *  <name>Component Template</name>
 *  <description> 
 *  An example on how to implement a component.
 *  This component does no usefull work and it exports no functions
 *  which are intended to be used for anything. Use at your own risk.
 *  </description>
 *  <copyright>
 *  Copyright (c) 2017-2020 CODESYS Development GmbH, Copyright (c) 1994-2016 3S-Smart Software Solutions GmbH. All rights reserved.
 *  </copyright>
 */
SET_COMPONENT_NAME(`CmpXKLib')   /* 组件名称 */
COMPONENT_SOURCES(`CmpXKLib.c')  /* 组件源码 */

COMPONENT_VERSION(`0x03051000')  /* 组件版本 */

/* NOTE: REPLACE 0x0001 BY YOUR VENDORID */
COMPONENT_VENDORID(`0x177d')	/* 厂商ID,设置后可以解除2小时登录一次限制,从codesys提供的源码解压后找到Western_0x1_ARM_VxWorks_V3.5.16.40_XsCZMASIHS\Configuration\3S_INFO.txt 中可以找到 */			

#define CMPID_CmpXKLib		0x2000								/* NOTE: START HERE WITH YOUR COMPONENTIDS (see CmpItf.h */ /* 组件ID codesys保留0x0001-0x1fff 从0x2000-0x3FFF是我们可以使用的;组件管理器通过组件ID进行判断当前组件并进行管理*/
#define CLASSID_CCmpXKLib	ADDVENDORID(CMP_VENDORID, 0x2000)	/* NOTE: START HERE WITH YOUR CLASSIDS (see CmpItf.h */    /* class ID */
#define ITFID_ICmpXKLib		ADDVENDORID(CMP_VENDORID, 0x2000)	/* NOTE: START HERE WITH YOUR INTERFACEIDS (see CmpItf.h */ /* INFO ID */

CATEGORY(`Templates')  /* 只影响裸跑的RUNTIME 带有操作系统的runtime没有影响 */

USE_ITF(`CMUtilsItf.m4')  /* 当前组件需要依赖的其他组件名称 */
USE_ITF(`SysFileItf.m4') /* 若是需要添加其他组件在此处加即可 */

IMPLEMENT_ITF(`CmpXKLibItf.m4') /*当前实现的接口*/

REQUIRED_IMPORTS(                         
CMUtlSafeStrCpy)                   /* 若上面添加了其他USE_ITF 此次就可以添加需要使用的接口函数,此次的函数接口必须实现 */

OPTIONAL_IMPORTS(
SysFileOpen,
SysFileClose,
SysFileRead,
SysFileWrite)  /* 此次的函数接口可以不实现 */

比如我们想使用SysFileItf组件我们可以打开帮助文档(Western_0x1_ARM_VxWorks_V3.5.16.40_XsCZMASIHS\Documentation\RTS-Documentation.html)搜索SysFileItf后可以查看所有有关的函数

修改为:
REQUIRED_IMPORTS(
CMUtlSafeStrCpy,
SysFileOpen,
SysFileClose,
SysFileWrite)

OPTIONAL_IMPORTS(
SysFileRead)
此时使用.m4.bat重新生成.h后不同点为(READ的可以不实现后面写的是CM_IMPORT_OPTIONAL_FUNCTION,其余的都需要实现):
if (ERR_OK == importResult ) TempResult = GET_SysFileRead(CM_IMPORT_OPTIONAL_FUNCTION);\
          if (ERR_OK == importResult ) importResult = GET_SysFileWrite(0);\
          if (ERR_OK == importResult ) importResult = GET_SysFileClose(0);\
          if (ERR_OK == importResult ) importResult = GET_SysFileOpen(0);\
          if (ERR_OK == importResult ) importResult = GET_CMUtlSafeStrCpy(0);\
 
此时可以将此.h拷贝到工程,在工程中可以使用这几个函数了,注意调用函数必须加前缀CAL_
如以下:
//测试文件打开SysFileOpen_ (char *pszFile, RTS_IEC_UDINT am, RTS_RESULT *pResult)
	char filename[]="coswsysFileTest";
	RTS_RESULT *pResult;
	RTS_HANDLE handle = RTS_INVALID_HANDLE;
	unsigned char buf[] ="123456\n";
	RTS_SIZE num;
	
	handle = CAL_SysFileOpen_ (filename, AM_WRITE, &pResult);
	if(handle != RTS_INVALID_HANDLE)//判断是否是无效
	{
		num = CAL_SysFileWrite (handle, buf, sizeof(buf), &pResult);
		CAL_SysFileClose(handle);
	}
将编译生成的.out拷贝到板子,调用写此部分代码的函数接口即可创建

写文件结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值