我想将一些数据保存到.txt文件中。我可以创建它,但我不能写文本,因为FB保持忙碌。
案例柜台OF1: fileOpen.sNetId:=’’; fileOpen.sPathName:=’C:\ test \ …
这是因为你已经停止调用功能块来打开文件。你在这里做的是你在步骤1中调用FB_FileOpen,然后停止调用它。 bBusy-flag在步骤1中变为高(true),但永远不能更改为其他任何内容,因为您再也不会调用FB。您还需要在步骤2中调用它。请记住,bExecute也是ADS命令的触发器,因此在步骤2中完成后,可以在步骤2中将bExecute-input设置为FALSE,并在已经触发命令时转发。
... 2: fileOpen(bExecute := false); IF NOT fileOpen.bBusy AND NOT fileOpen.bError THEN (* bBusy stays true*) counter := 3; END_IF ...
还要记住,Beckhoffs FB_FileOpen假定目录C:\ test存在(虽然不是文件test.txt,如果用FOPEN_MODEWRITE打开它,它将自动创建)。要创建所有必需的指挥(如果它们尚不存在),请使用TwinCATs FB_CreateDir。