TwinCAT 3 读写xml程序

 GVL_config_xml

VAR_GLOBAL
	configXml:ST_config_xml;
END_VAR

 ST

TYPE ST_config_xml :
STRUCT
	control:ST_config_xml_control;
	parameter:ST_config_xml_parameter;
	status:ST_config_xml_status;
END_STRUCT
END_TYPE

TYPE ST_config_xml_control :
STRUCT
	bWrite:BOOL;
	bRead:BOOL:=TRUE;
END_STRUCT
END_TYPE

TYPE ST_config_xml_parameter :
STRUCT
	sSymName:T_MaxString:='GVL_parameter.configData';
 	sFilePath:T_MaxString:='C:\PlcData\Config\Parameter.XML';
	sXPath:T_MaxString:='/configData';
END_STRUCT
END_TYPE

TYPE ST_config_xml_status :
STRUCT
	bWriteDone:BOOL;
	bReadDone:BOOL;

	bError:BOOL;
	sComment:WSTRING:="无信息";
END_STRUCT
END_TYPE

P_config_xml

PROGRAM P_config_xml
VAR
	nWriteStep:INT;
	nReadStep:INT;

	nReadFail:INT;

	XmlSrvReadByNameFb:FB_XmlSrvReadByName;
	XmlSrvWriteByNameFb:FB_XmlSrvWriteByName;
END_VAR
//写入配置信息步
CASE nWriteStep OF
	ENUM_config_xml.nInitial://复位动作
		XmlSrvWriteByNameFb.bExecute:=FALSE;

		IF configXml.control.bWrite THEN
			configXml.status.bError:=FALSE;
			configXml.status.sComment:="";
			configXml.status.bWriteDone:=FALSE;
			configXml.control.bWrite:=FALSE;
			nWriteStep:=ENUM_config_xml.nWrite;
		END_IF

	ENUM_config_xml.nWrite://写入数据
		XmlSrvWriteByNameFb.bExecute:=TRUE;
		IF XmlSrvWriteByNameFb.bBusy THEN
			nWriteStep:=ENUM_config_xml.nWhetherWrite;
		END_IF

	ENUM_config_xml.nWhetherWrite://判断数据是否写入
		IF XmlSrvWriteByNameFb.bError THEN
			configXml.status.bError:=TRUE;
			configXml.status.sComment:="写配置失败";
			nWriteStep:=ENUM_config_xml.nInitial;
		END_IF
		IF NOT XmlSrvWriteByNameFb.bBusy AND NOT XmlSrvWriteByNameFb.bError THEN
			configXml.status.bWriteDone:=TRUE;
			configXml.status.sComment:="写配置写入完成";
			nWriteStep:=ENUM_config_xml.nInitial;
		END_IF
END_CASE

//读取配置信息步
CASE nReadStep OF
	ENUM_config_xml.nInitial://复位动作
		XmlSrvReadByNameFb.bExecute:=FALSE;

		IF configXml.control.bRead THEN
			configXml.status.bError:=FALSE;
			configXml.status.sComment:="";
			configXml.status.bReadDone:=FALSE;
			configXml.control.bRead:=FALSE;
			nReadStep:=ENUM_config_xml.nRead;
		END_IF

	ENUM_config_xml.nRead://读取数据
		XmlSrvReadByNameFb.bExecute:=TRUE;
		IF XmlSrvReadByNameFb.bBusy THEN
			nReadStep:=ENUM_config_xml.nWhetherRead;
		END_IF

	ENUM_config_xml.nWhetherRead://判断数据是否读取
		IF XmlSrvReadByNameFb.bError THEN
			configXml.status.bError:=TRUE;
			configXml.status.sComment:="读配置失败";
			nReadFail:=nReadFail+1;
			IF nReadFail<5 THEN
				configXml.control.bRead:=TRUE;
			END_IF
			nReadStep:=ENUM_config_xml.nInitial;
		END_IF
		IF NOT XmlSrvReadByNameFb.bBusy AND NOT XmlSrvReadByNameFb.bError THEN
			configXml.status.bReadDone:=TRUE;
			configXml.status.sComment:="读配置读取完成";
			nReadStep:=ENUM_config_xml.nInitial;
		END_IF
END_CASE

//功能块
XmlSrvReadByNameFb(
	sNetId:='' , 
	ePath:= , 
	nMode:= , 
	sSymName:=configXml.parameter.sSymName , 
	sFilePath:=configXml.parameter.sFilePath , 
	sXPath:=configXml.parameter.sXPath , 
	bExecute:= , 
	tTimeout:=T#10S , 
	bBusy=> , 
	bError=> , 
	nErrId=> );

XmlSrvWriteByNameFb(
	sNetId:='' , 
	ePath:= , 
	nMode:=XMLSRV_ADDMISSING , 
	sSymName:=configXml.parameter.sSymName , 
	sFilePath:=configXml.parameter.sFilePath , 
	sXPath:=configXml.parameter.sXPath , 
	bExecute:= , 
	tTimeout:=T#10S , 
	bBusy=> , 
	bError=> , 
	nErrId=> );

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Twincat3是一款常用的自动化控制软件,可用于控制和管理各种设备和系统。为了在Twincat3中运行程序,首先需要将程序文件上传(或上载)到控制器上。 Twincat3程序的上载可以通过以下步骤完成: 1. 打开Twincat3开发环境,并连接到控制器。在“PLC”资源中右键单击控制器对象,并选择“Upload/Download”命令。 2. 在弹出的对话框中,选择“Upload”选项,并选择要上传的程序文件。 3. 在上传程序之前,首先需要配置程序的名称、版本和其他属性。在对话框中设置这些属性,然后单击“Upload”按钮上传程序文件。 4. 上传程序的进度会显示在进度条中,完成之后会弹出提示框。程序已经上传到控制器中了。 5. 在上传程序后,可以通过“PLC Tasks”资源中的“Activate”命令激活程序程序激活后,可以在控制器上运行。 总结来说,Twincat3程序的上载需要在Twincat3开发环境中连接到控制器,选择上传程序并设置属性,然后激活程序即可。熟练掌握这些步骤可以帮助用户更加高效地使用Twincat3进行控制和管理。 ### 回答2: 要将Twincat3程序上传到电脑上,需要按照以下步骤进行操作: 第一步:首先打开Twincat3软件,然后连接要上载的PLC。 第二步:在工程管理器中选择要上载的程序,并在“属性”中设置相关的选项,如是否压缩程序、是否自动选择程序。 第三步:右键单击要上载的程序或选择“菜单”中的“PLC”选项,然后选择“上载”。 第四步:在弹出的“上载”对话框中,选择合适的选项。如果选中了“与控制器之间进行检查”,Twincat3会在上载过程中与PLC通信,以确保上传程序不会影响PLC。 第五步:启动上载过程。Twincat3将对程序进行编译和压缩,并将其上传到PLC中。上传进度将在对话框中显示,上传完成后Twincat3将停止,并提示上传是否成功。 需要注意的是,上传程序时要确保PLC已经连接成功并且处于运行状态,否则上传操作可能会失败。此外,在选择要上传的程序时,还要考虑与现有程序的兼容性,以确保上传程序不会影响设备的正常运行。 ### 回答3: Twincat 3程序上载的流程主要包括三个步骤:项目导出、Zielprojekt配置和上载。 首先,需要将程序从Twincat 3导出为文件。在Twincat 3开发环境中右键点击程序所在的项目并选择“Export Project”选项,弹出导出项目的对话框。在对话框中勾选需要导出的项目后,选择导出文件的存储路径,点击“Export”按钮即可导出项目。 接下来,需要在Zielprojekt配置面板中完成配置。在Twincat 3开发环境中,双击上载的Zielprojekt,打开Zielprojekt配置面板。在界面中依次选取“Controller”、“Online”、“Upload”选项,勾选需要上传的程序模块后,点击“Upload”按钮。 最后,等待程序上载完成。在上传步骤完成后,Twincat 3会自动连接PLC,并将程序上载到PLC中。在程序上传过程中,需要注意PLC和开发环境的网络连接状态,确保数据传输的稳定性和可靠性。 总之,Twincat 3程序上载是一个比较简单的过程,只需要按照上述步骤逐一操作即可成功。但是,在实际应用中,程序上载涉及到多个环节,需要严格按照操作规范进行,才能保障程序的正确性和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值