<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to SMC_ReadNCFile2 is always busy </title><link href="https://forge.codesys.com/forge/talk/Motion/thread/81ee3f8be0/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Motion/thread/81ee3f8be0/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Motion/thread/81ee3f8be0/</id><updated>2025-06-17T13:11:12.422000Z</updated><subtitle>Recent posts to SMC_ReadNCFile2 is always busy </subtitle><entry><title>SMC_ReadNCFile2 is always busy </title><link href="https://forge.codesys.com/forge/talk/Motion/thread/81ee3f8be0/?limit=25#280a" rel="alternate"/><published>2025-06-17T13:11:12.422000Z</published><updated>2025-06-17T13:11:12.422000Z</updated><author><name>tk096</name><uri>https://forge.codesys.com/u/tk096/</uri></author><id>https://forge.codesys.com1a839e95caa6694f0c850ec7038083b453a41771</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi, the subsequent interpreter should report an error? The reader is just reading the file without checking the syntax.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>SMC_ReadNCFile2 is always busy </title><link href="https://forge.codesys.com/forge/talk/Motion/thread/81ee3f8be0/?limit=25#a72d" rel="alternate"/><published>2025-06-17T08:28:19.969000Z</published><updated>2025-06-17T08:28:19.969000Z</updated><author><name>berkdan</name><uri>https://forge.codesys.com/u/berkdan/</uri></author><id>https://forge.codesys.comb22eb6fd5ff3fe5a7c14b786cde45c5d407b98fe</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Thank you for answering my question. I am sharing some POU's and the IPO screenshot below. I thing this should do the job.&lt;br/&gt;
Could you tell me what I am missing?&lt;br/&gt;
//Interpreter PRG&lt;br/&gt;
IF gCNC.bCycleStart THEN&lt;br/&gt;
    bOldExecute := TRUE;&lt;br/&gt;
    gCNC.bTaskCompleted :=FALSE;&lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;IF gCNC.bCycleStop THEN&lt;br/&gt;
    bOldExecute := FALSE;&lt;br/&gt;
    gCNC.bTaskCompleted :=TRUE;&lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;//Read File&lt;br/&gt;
fbReadFile(bExecute := bOldExecute,&lt;br/&gt;
    sFileName       := strFileName,&lt;br/&gt;
    fDefaultVelFF   := 50.0,&lt;br/&gt;
    fDefaultAccelFF := 30.0,&lt;br/&gt;
    fDefaultDecelFF := 30.0,&lt;br/&gt;
    ErrorID =&amp;gt; gCNC.eErrorId,&lt;br/&gt;
    errorPos =&amp;gt; gCNC.eErrorPos,&lt;br/&gt;
    ErrorProgramName =&amp;gt; gCNC.eErrorProgName&lt;br/&gt;
);&lt;/p&gt;
&lt;p&gt;//Interpret the file&lt;br/&gt;
fbInterpreter(Sentences := fbReadFile.sentences,&lt;br/&gt;
    bExecute            := bOldExecute,&lt;br/&gt;
    bAbort              := gCNC.bCycleStop,&lt;br/&gt;
    nSizeOutQueue       := SIZEOF(astGeoBuffer),&lt;br/&gt;
    pbyBufferOutQueue   := ADR(astGeoBuffer),&lt;br/&gt;
    GCodeText           =&amp;gt; sGCodeText);&lt;/p&gt;
&lt;p&gt;//Check Velocities&lt;br/&gt;
fbCheckVel(bExecute := fbInterpreter.bDone,&lt;br/&gt;
    bAbort          := gCNC.bCycleStop,&lt;br/&gt;
    poqDataIn       := fbInterpreter.poqDataOut);&lt;/p&gt;
&lt;p&gt;pGeoInfos           := fbCheckVel.poqDataOut;&lt;br/&gt;
bDone               := fbInterpreter.bDone;&lt;/p&gt;
&lt;p&gt;IF bDone THEN&lt;br/&gt;
    bOldExecute := FALSE;&lt;br/&gt;
    gCNC.bTaskCompleted :=TRUE;&lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;//Interpolator PRG&lt;/p&gt;
&lt;p&gt;IF LicOS_EtherCAT.xConfigFinished  THEN&lt;br/&gt;
   gCNC.bAxesEnable := TRUE;&lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;IF X_Axis.bCommunication AND Y_Axis.bCommunication AND Z_Axis.bCommunication AND gCNC.bAxesEnable THEN&lt;br/&gt;
    fbXPower(Axis :=X_Axis,&lt;br/&gt;
        Enable := TRUE,&lt;br/&gt;
        bRegulatorOn := gCNC.bAxesEnable,&lt;br/&gt;
        bDriveStart := TRUE,&lt;br/&gt;
        Status =&amp;gt; gCNC.bXPowerState);&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;fbYPower&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Axis&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Y_Axis&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Enable&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;bRegulatorOn&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bAxesEnable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;bDriveStart&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Status&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bYPowerState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;fbZPower&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Axis&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Z_Axis&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Enable&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;bRegulatorOn&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bAxesEnable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;bDriveStart&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Status&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bZPowerState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;Ipo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kr"&gt;IF&lt;/span&gt; &lt;span class="n"&gt;fbIpo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Act_Object&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="kr"&gt;THEN&lt;/span&gt;
    &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iSatirNo&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fbIpo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Act_Object&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iSourceLine_No&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;END_IF&lt;/span&gt;


&lt;span class="n"&gt;fbPosTracker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bEnable&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;dX&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lrXActPos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;dY&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lrYActPos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;dZ&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lrZActPos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;udiNumberOfPointsInArray&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;pBuffer&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ADR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;astPathPoints&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;vs3dt&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;gCNC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;st3dTrack&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;END_IF;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>SMC_ReadNCFile2 is always busy </title><link href="https://forge.codesys.com/forge/talk/Motion/thread/81ee3f8be0/?limit=25#aab8" rel="alternate"/><published>2025-06-17T06:23:37.639000Z</published><updated>2025-06-17T06:23:37.639000Z</updated><author><name>tk096</name><uri>https://forge.codesys.com/u/tk096/</uri></author><id>https://forge.codesys.com9fca761357190185a664f36d34924d21a0862a72</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi, do you process the sentences subsequently? If not, the function block fills the sentences (queue) and waits for the sentences to be processed, so that new sentences can be read and filled to the queue.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>SMC_ReadNCFile2 is always busy </title><link href="https://forge.codesys.com/forge/talk/Motion/thread/81ee3f8be0/?limit=25#d89f" rel="alternate"/><published>2025-06-16T15:01:43.362000Z</published><updated>2025-06-16T15:01:43.362000Z</updated><author><name>berkdan</name><uri>https://forge.codesys.com/u/berkdan/</uri></author><id>https://forge.codesys.comd43fdbac2c4e2cfbe3cc406688759b54840b5aba</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I’m using CODESYS V3.5 SP18.&lt;br/&gt;
When I try to use SMC_ReadNCFile2 to read the file /PlcLogic/gcode.nc, the function block's bBusy output remains TRUE indefinitely.&lt;br/&gt;
Can you help me understand what I might be doing wrong?&lt;/p&gt;
&lt;p&gt;Here is how I’m calling the function block.&lt;br/&gt;
The value of strFileName is 'gcode.nc'.&lt;/p&gt;
&lt;p&gt;fbReadFile(&lt;br/&gt;
    bExecute        := bExecute, &lt;br/&gt;
    sFileName       := strFileName,&lt;br/&gt;
    bAbort          := bCycleStop,&lt;br/&gt;
    fDefaultVel     := RetainVariables.xSlowVelocity,&lt;br/&gt;
    fDefaultAccel   := RetainVariables.xAcc,&lt;br/&gt;
    fDefaultDecel   := RetainVariables.xDec,&lt;br/&gt;
    b3DMode         := TRUE,&lt;br/&gt;
    bParenthesesAsComments := TRUE,&lt;br/&gt;
    fDefaultVelFF   := RetainVariables.xFastVelocity,&lt;br/&gt;
    fDefaultAccelFF := RetainVariables.xAcc,&lt;br/&gt;
    fDefaultDecelFF := RetainVariables.xDec,&lt;br/&gt;
    ErrorID         =&amp;gt; gCNC.eErrorId,&lt;br/&gt;
    errorPos        =&amp;gt; gCNC.eErrorPos,&lt;br/&gt;
    ErrorProgramName =&amp;gt; gCNC.eErrorProgName,&lt;br/&gt;
    bBusy           =&amp;gt; bReadFileBusy,&lt;br/&gt;
    sentences       =&amp;gt; sentencesss&lt;br/&gt;
);&lt;br/&gt;
Thanks in advance for your help.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>