codesys log程序

文件存储路径如下

C:\ProgramData\CODESYS\CODESYSControlWinV3x64\BD916EDF\PlcLogic

TYPE ENUM_log :
(
	nInitial:=0,
	nOpen,
	nJudgeOpenStatus,
	nWrite,
	nJudgeWriteStatus,
	nClose,
	nJudgeCloseStatus
);
END_TYPE

TYPE ST_log :
STRUCT
	control:ST_log_control;
	parameter:ST_log_parameter;
	status:ST_log_status;
	FB:FB_log;
END_STRUCT
END_TYPE

TYPE ST_log_control :
STRUCT
	bWrite:BOOL;
END_STRUCT
END_TYPE

TYPE ST_log_parameter :
STRUCT
	sPathName:STRING:='./PlcData/Log/';
	sDescription:WSTRING:="无信息";
END_STRUCT
END_TYPE

TYPE ST_log_status :
STRUCT
	bWriteDone:BOOL;

	bError:BOOL;
	sComment:WSTRING;
END_STRUCT
END_TYPE
FUNCTION_BLOCK FB_log
VAR_INPUT
	LogControl:ST_log_control;
	LogParameter:ST_log_parameter;
	LogTime:STRING;
END_VAR
VAR_OUTPUT
	LogStatus:ST_log_status;
END_VAR
VAR
	sFileName:STRING;
	sData:WSTRING;
	sDataUTF8:STRING(255);
	
	hFileWrite:SysFile.RTS_IEC_HANDLE;
	iecResultWrite:SysFile.RTS_IEC_RESULT;
END_VAR


//文件名
sFileName:=CONCAT(MID(STR:=LogTime , LEN:=10 , POS:=1 ),'.TXT');
sFileName:=CONCAT(LogParameter.sPathName,sFileName);

//写入数据处理
sData:=WCONCAT(STRING_TO_WSTRING(LogTime),"    ");
sData:=WCONCAT(sData,LogParameter.sDescription);
sData:=WCONCAT(sData,STRING_TO_WSTRING('$n'));

sDataUTF8:='';
ConvertUTF16toUTF8(sourceStart:=ADR(sData) , targetStart:=ADR(sDataUTF8) , dwTargetBufferSize:=SIZEOF(sData) , bStrictConversion:=TRUE );

IF LogControl.bWrite THEN
	hFileWrite:=SysFileOpen(szFile:=sFileName , am:=SYSFILE.AM_APPEND_PLUS , pResult:=ADR(iecResultWrite) );
	SysFileWrite(hFile:=hFileWrite , pbyBuffer:=ADR(sDataUTF8) , ulSize:=INT_TO_UDINT(LEN(sDataUTF8)) , pResult:=ADR(iecResultWrite) );
	SysFileClose(hFile:=hFileWrite);
END_IF
VAR_GLOBAL
	//报警记录日志
	alarmLog:ARRAY[0..indexAlarmEnd-1] OF ST_log;
END_VAR
PROGRAM P_log
VAR
	i:INT;
END_VAR

//******报警记录******//
FOR i:=1 TO indexAlarmEnd-1 BY 1 DO 
	//复位写log
	IF alarmLog[i].control.bWrite THEN
		alarmLog[i].control.bWrite:=FALSE;
	END_IF

	//报警上升沿触发信息
	IF alarm[i].rTrig.Q THEN
		alarmLog[i].control.bWrite:=TRUE;
		alarmLog[i].parameter.sDescription:=WCONCAT("报警码:",STRING_TO_WSTRING(FUN_int_string(alarm[i].nCode,4)));
		alarmLog[i].parameter.sDescription:=WCONCAT(alarmLog[i].parameter.sDescription,"  报警信息:");
		alarmLog[i].parameter.sDescription:=WCONCAT(alarmLog[i].parameter.sDescription,alarm[i].sComment);
	END_IF

	//报警下降沿触发信息
	IF alarm[i].fTrig.Q THEN
		alarmLog[i].control.bWrite:=TRUE;
		alarmLog[i].parameter.sDescription:=WCONCAT("报警码:",STRING_TO_WSTRING(FUN_int_string(alarm[i].nCode,4)));
		alarmLog[i].parameter.sDescription:=WCONCAT(alarmLog[i].parameter.sDescription,"  报警信息:");
		alarmLog[i].parameter.sDescription:=WCONCAT(alarmLog[i].parameter.sDescription,alarm[i].sComment);
		alarmLog[i].parameter.sDescription:=WCONCAT(alarmLog[i].parameter.sDescription,"--报警消除");
	END_IF

	//报警LOG功能块
	alarmLog[i].FB(
		LogControl:=alarmLog[i].control , 
		LogParameter:=alarmLog[i].parameter , 
		LogTime:=sSystemTime , 
		LogStatus=>alarmLog[i].status );
END_FOR

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CODESYS凸轮程序是一种基于CODESYS编程环境的编程技术,用于控制机械设备的凸轮运动。凸轮是一种机械装置,它可以通过不同形状的凸轮曲线来实现工件的定位和运动控制。 CODESYS凸轮程序的编主要包括以下几个步骤: 1. 配置凸轮参数:首先需要定义凸轮的参数,包括凸轮的曲线形状、凸轮轴的位置和运动速度等。这些参数可以根据具体的机械设备要求进行设置。 2. 编凸轮程序:在CODESYS编程环境中,可以使用Ladder Diagram(梯形图)或Structured Text(结构化文本)等编程语言来编凸轮程序。凸轮程序主要包括凸轮运动的起始、运动方向、运动速度等控制逻辑。 3. 进行调试和测试:完成凸轮程序的编后,需要进行调试和测试,以确保凸轮的运动符合预期。可以通过模拟器或实际的机械设备进行调试,观察凸轮的运动状态,及时调整程序逻辑和参数。 CODESYS凸轮程序的应用非常广泛。例如,在自动化生产线中,可以使用凸轮程序控制工件的定位、装配和运输等。此外,凸轮程序还可以应用于机械手臂、升降机械等设备的运动控制。 综上所述,CODESYS凸轮程序是一种用于控制机械设备凸轮运动的编程技术,它通过设置凸轮参数和编控制逻辑来实现凸轮的精确运动控制。这种编程技术在自动化生产线和机械设备控制中具有重要的应用价值。 ### 回答2: Codesys凸轮程序,即Codesys软件中的凸轮控制程序,是一种基于凸轮机构的运动控制方法。通过编凸轮程序,可以实现各种复杂的运动轨迹和动作控制。 凸轮控制程序的编主要涉及以下几个方面: 1. 凸轮参数定义:首先要定义凸轮的参数,如凸轮的形状、轴心位置、角度等。凸轮的形状可以是圆形、椭圆形、三角形等。轴心位置和角度的定义则决定了凸轮的位置和运动方式。 2. 轴控制指令:在凸轮控制程序中,需要使用到轴控制指令来控制凸轮所连接的轴的运动。通过设置相应的目标位置和速度,可以实现轴的预定运动轨迹。可以根据需要设置不同的轴运动参数,如加速度、减速度等。 3. IEC 61131-3编程:Codesys软件使用IEC 61131-3标准作为其编程语言。在凸轮控制程序中,可以使用LD、FBD、ST、SFC和IL等编程语言来编相应的控制逻辑。通过程序的编,可以实现凸轮运动和轴的同步控制。 4. 运动控制信号输出:凸轮控制程序通过控制输出信号来控制运动执行器,如电机、气缸等。可以根据需要配置相应的IO模块,将控制信号输出到执行器上,从而实现凸轮的运动控制。 总之,Codesys凸轮程序是一种基于凸轮机构的运动控制方法,通过编凸轮参数定义、轴控制指令、IEC 61131-3编程和运动控制信号输出等方面内容,可以实现复杂的运动轨迹和动作控制。该方法在自动化领域中广泛应用,为各种机械设备的精密控制提供了有效的解决方案。 ### 回答3: CODESYS凸轮程序是一种专门用于控制凸轮机构的编程语言。凸轮机构是一种常见的机械结构,可以将旋转运动转换为线性运动,常用于开关、阀门、喷涂等机械设备的控制。 CODESYS凸轮程序通过编程语言,定义凸轮运动的参数和规则,将其转化为机械设备的控制信号,实现凸轮机构的运动控制。具体来说,凸轮程序可以实现以下功能: 1. 定义凸轮运动的周期和相位:可以通过编程语言设置凸轮的周期和相位,使其按照预定的时间和位置运动。 2. 控制凸轮运动的速度和加速度:可以通过编程语言设置凸轮的速度和加速度,实现凸轮运动的平滑和稳定控制。 3. 定义凸轮运动的角度和距离:可以通过编程语言设置凸轮的运动角度和线性距离,实现凸轮机构的自定义控制。 4. 实现凸轮运动的互锁和安全保护:可以通过编程语言设置凸轮运动的互锁和安全保护机制,确保凸轮机构在工作中的安全性和可靠性。 CODESYS凸轮程序具有良好的灵活性和扩展性,可以与其他控制系统和设备进行集成,实现更复杂的机械控制。通过对凸轮运动参数的自定义设置,可以满足不同机械设备的控制需求,并提高生产效率和产品质量。 总之,CODESYS凸轮程序是一种用于控制凸轮运动的编程语言,可以实现凸轮机构的灵活控制和安全保护,提高机械设备的运行效率和生产质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值