<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://softmc.servotronix.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eliot</id>
		<title>SoftMC-Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://softmc.servotronix.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eliot"/>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/wiki/Special:Contributions/Eliot"/>
		<updated>2026-04-04T14:48:56Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=softMC_Configurator&amp;diff=133929</id>
		<title>softMC Configurator</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=softMC_Configurator&amp;diff=133929"/>
				<updated>2023-06-19T13:18:35Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== softMC Configurator ==&lt;br /&gt;
&lt;br /&gt;
The following pages explain how to generate application files for some of the motion elements supported by softMC, using the softMC Configurator:&lt;br /&gt;
&lt;br /&gt;
*[[Single_Axis_Setup_in_EtherCAT/CANopen_Network|1-Axis Setup in EtherCAT/CANopen Network]] &lt;br /&gt;
*[[3-Axis_XYZ_Cartesian_Group_Setup_in_EtherCAT_Network|3-Axis XYZ Cartesian Group Setup in EtherCAT Network]] &lt;br /&gt;
*[[4-Axis_Delta_robot_Setup|4-Axis Delta robot Setup]] &lt;br /&gt;
*[[4-Axis_Scara_robot_Setup|4-Axis Scara robot Setup]] &lt;br /&gt;
*[[6-Axis_Puma_robot_Setup|6-Axis Puma robot Setup]] &lt;br /&gt;
*[[6-Axis_Puma_robot_Setup|Add a&amp;amp;nbsp;new IO/Drive to the configurator]] &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[Category:Robot Models]]&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133922</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133922"/>
				<updated>2023-02-13T15:21:46Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Added some content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}}/!\ Under construction /!\ &lt;br /&gt;
== [[Program_Examples:1.1_Feature_introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 HW connection]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
C2 connection&amp;amp;nbsp;:&amp;amp;nbsp;&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls2.png|600x400px|Hwconnectionfastpls2.png]]&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls.png|350x300px|Hwconnectionfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.3&amp;amp;nbsp;Before running the code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
[[File:configfastpls.png|500x400px|configfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.4 The&amp;amp;nbsp;code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;Elliot Serfaty&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.5&amp;amp;nbsp; The results]] ==&lt;br /&gt;
&lt;br /&gt;
[[File:FastplsResults.png|650x500px|FastplsResults.png]]&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples&amp;diff=133921</id>
		<title>Program Examples</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples&amp;diff=133921"/>
				<updated>2023-02-13T15:21:00Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Fast path pls added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples}} &lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
*[[Getting_Started_with_MC-Basic_and_ControlStudio|Getting Started with MC-Basic and ControlStudio]] &lt;br /&gt;
*[[Program_Examples_-_Sending_Hexadecimal_Data_Over_RS232|Program Examples - Sending Hexadecimal Data Over RS232]] &lt;br /&gt;
&lt;br /&gt;
= Communication =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:Serial_Com:Serial_Com_Example|Program Example - Serial COM]] - How to setup a serial connection &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_Simple_Server|Program Example - TCP/IP Simple Server]] - How to setup a simple TCP-IP server &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_Simple_Client|Program Example - TCP/IP Simple Client]] - How to setup a simple TCP-IP client &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_Multi_Server|Program Example - TCP/IP Multi Server]] - How to setup a TCP-IP server that opens connections with multiple clients &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_TelNet_Server|Program Example - TCP/IP TelNet Server]] - How to setup a TCP-IP TelNet server with simple parser &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_Winsock_Client|Program Example - TCP/IP windows socket client]] - An example written in C language, corresponds to the &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_TelNet_Server|TCP/IP TelNet Server]] example. &lt;br /&gt;
&lt;br /&gt;
= File handling =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:File_Handling:Open_Read_Write|Program Example - File Handling - Open Read Write]] - How to open a file with different permissions &lt;br /&gt;
*[[Virtual_Entry_Station_(VES)|Program Example - Virtual Entry Station (VES)]] &lt;br /&gt;
*[[File_Encryption|Program Example - File Encryption (VES)]] &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Motion Bus =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:CANOpen:DS402_CAN_Drive_Setup|Program Example - DS402 CAN Drive Setup]] - How to setup drive for cyclic synchronous position operation &lt;br /&gt;
&lt;br /&gt;
= HMI =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:Operate_softMC_3_with_HMI|Program Examples - HMI]] - how to configure HMI with softMC 3 &lt;br /&gt;
&lt;br /&gt;
= Caming Examples =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:Create_Motion:CAM_Table|Program Examples - Create CAM table and move axes]] &lt;br /&gt;
*[[Program_Examples:Camming_by_Virtual_Master|Program Examples - Caming by Virtual Master]] &lt;br /&gt;
*[[Program_Examples:Reverse_engineering_for_cam_table|Program Examples - Reverse engineering for cam table]] &lt;br /&gt;
*[[Program_Examples:Cam_table_with_shutdown_and_restart|Program Examples - Cam table with shutdown and restart]] &lt;br /&gt;
*[[Cut_To_Length_(Punching)_Application|Program Examples - Cut To Length (Punching) Application]] &lt;br /&gt;
*[[Flying_Shear_Application|Program Examples - Flying Shear Application]] &lt;br /&gt;
&lt;br /&gt;
= Motion Examples =&lt;br /&gt;
&lt;br /&gt;
*[[Axis_Setup_Procedure|Program Example - Axis Setup]] - How to set up the basic configuration of an axis. &lt;br /&gt;
*[[Master_and_Slave_configuration|Program Example - Master Slave]] - How to set up basic 2 axes master &amp;amp; slave configuration. &lt;br /&gt;
*[[Defining_Cartesian_Groups|Program Example - Defining Cartesian Groups]] - How to set up an XYZ system. &lt;br /&gt;
*[[Program_Examples:Helical_Interpolation|Program Examples - Helical Interpolation]] - Circle Demo &lt;br /&gt;
*[[Program_Examples:Backlash_Compensation|Program Examples - Backlash Compensation]] - Position Backlash Compensation &lt;br /&gt;
*[[Program_Examples:Backlash_Compensation_Table|Program Examples - Backlash Compensation using Compensation Tables]] - Position Backlash Compensation using compensation tables &lt;br /&gt;
*[[Program_Examples:Homing|Program Examples - Homing]] - How to set homing parameters and issue a homing procedure &lt;br /&gt;
*[[Program_Examples:Create_Motion:Position_Mode|Program Examples - Move Axis in Position Mode]] &lt;br /&gt;
*[[Program_Examples:Create_Motion:Velocity_Mode|Program Examples - Jog Axis in Velocity Mode]] &lt;br /&gt;
*[[Program_Examples:Create_Motion:Torque_Mode|Program Examples - Issue a Torque Command to an Axis in Torque Mode]] &lt;br /&gt;
*[[Program_Examples:Defining_a_Cartesian_Group|Program_Examples - Defining a Cartesian Group]] &lt;br /&gt;
*[[Program_Examples:Setting_Up_an_Axis|Program_Examples - Setting Up an Axis]] &lt;br /&gt;
*[[Program_Examples:Robot_tool_calibration|Program_Examples - Robot tool calibration]] &lt;br /&gt;
*[[Program_Examples:CT_without_buffer|Program_Examples - CT without buffer]] &lt;br /&gt;
*[[Program_Examples:Group_Blending|Program_Examples - Group Blending]] &lt;br /&gt;
*[[Program_Examples:Advanced_Interpolation|Program_Examples - Advanced Interpolation]] &lt;br /&gt;
*[[Program_Examples:Single_Axis_Blending|Program_Examples - Single Axis Blending]] &lt;br /&gt;
*[[Program_Examples:Robot_Circle_Command|Program_Examples - Robot Circle Command]] &lt;br /&gt;
*[[Program_Examples:Cartesian_Gearing|Program_Examples - Cartesian Gearing]] &lt;br /&gt;
*[[Program_Examples_-_Robot_Pick_and_Place_(P&amp;amp;P)|Program_Examples - Robot Pick and Place (P&amp;amp;P)]] &lt;br /&gt;
*[[Program_Examples_-_Robot_Helix_motion|Program_Examples - Robot Helix motion]] &amp;lt;!--* [[Program_Examples:Cyclic_recording_of_one_Axis|Program_Examples - Cyclic recording of one Axis]]--&amp;gt; &lt;br /&gt;
*[[Program_Examples:Cyclic_recording_of_single_Axis|Program_Examples - Cyclic recording of single Axis]] &lt;br /&gt;
*[[Program_Examples:_PIPEMODE_library_and_motion_commands|Program_Examples - PIPEMODE: Library and Motion Commands]] &lt;br /&gt;
*[[Program_Examples:_WorkSpace_areas|Program_Examples - WorkSpace areas]] &lt;br /&gt;
*[[Program_Examples:_Events|Program_Examples - Events]] &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== PLS Examples ==&lt;br /&gt;
&lt;br /&gt;
*[[PLS_SETUP_PROCEDURE|Program Example - Axis-PLS: PLS Setup]] - How to set up a PLS data table. &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Path_Distances_as_Position_Source|Program Example - Path-PLS: Path Distances as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Path_Percentages_as_Position_Source|Program Example - Path-PLS: Path Percentages as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Setpoint1_as_Position_Source|Program Example - Path-PLS: Setpoint1 as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Non-Blended_Motion_Transitions_as_Position_Source|Program Example - Path-PLS: Non-Blended Motion Transitions as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Blended_Motion_Transitions_as_Position_Source|Program Example - Path-PLS: Blended Motion Transitions as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Equidistant_Points_from_Start/End_as_Position_Source|Program Example - Path-PLS: Equidistant Points from Start/End as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_High_Accuracy_Concatenated_Motions|Program Example - Path-PLS: High Accuracy Concatenated Motions]] &lt;br /&gt;
*[[Program_Examples:Path-PLS|Program Example - Path-PLS: PUMA Robot Application with PLS]] &lt;br /&gt;
*[[Program_Examples:fast-PLS|Program Example - Fast-PLS: CDHD2 with fast-PLS 2023]] &lt;br /&gt;
*[[Program_Examples:fast-PLS|Program Example - Fast-Path-PLS: CDHD2 with fast-PLS 2023]] &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Advanced (Expert) =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:Visualization_with_RoboDK|Program_Example - Visualization with RoboDK]] &lt;br /&gt;
*[[Program_Examples:sys_log|Program Examples - sys.log]] - How to send log messages from MC-Basic context to Linux sys.log &lt;br /&gt;
*[[Program_Examples:Shared_Objects|Program Examples - Shared Objects]] - How to create, link and use shared objects with softMC &lt;br /&gt;
*[[Program_Examples:real_time_motion_event_tracer|Program Example - real time motion event tracer]] - How to trace internal motion events &lt;br /&gt;
*[[Program_Examples:Sci_Lab_interface|Program_Example - Sci Lab interface]] - Plotting softMC rec files in SciLab &lt;br /&gt;
*[[Program_Examples:Octave_interface|Program_Example - Octave interface]] - Plotting softMC rec files in Octave &lt;br /&gt;
*[[Program_Examples:User_Kinematics|Program_Example - User Kinematics - '''Advanced!''']] &lt;br /&gt;
*[[Program_Examples:force_sensor|Program_Example - Force Sensor]] &lt;br /&gt;
&lt;br /&gt;
= Undocumented =&lt;br /&gt;
&lt;br /&gt;
*[[Undocumented_User_Functions|Undocumented]]&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133920</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133920"/>
				<updated>2023-02-12T07:43:38Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Design&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
== [[Program_Examples:1.1_Feature_introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 HW connection]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
C2 connection :&amp;amp;nbsp;&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls2.png|600x400px|Hwconnectionfastpls2.png]]&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls.png|350x300px|Hwconnectionfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.3&amp;amp;nbsp;Before running the code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
[[File:configfastpls.png|500x400px|configfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.4 The&amp;amp;nbsp;code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;Elliot Serfaty&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.5&amp;amp;nbsp; The results]] ==&lt;br /&gt;
&lt;br /&gt;
[[File:FastplsResults.png|650x500px|FastplsResults.png]]&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples&amp;diff=133919</id>
		<title>Program Examples</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples&amp;diff=133919"/>
				<updated>2023-02-12T07:42:36Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Design&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples}} &lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
*[[Getting_Started_with_MC-Basic_and_ControlStudio|Getting Started with MC-Basic and ControlStudio]] &lt;br /&gt;
*[[Program_Examples_-_Sending_Hexadecimal_Data_Over_RS232|Program Examples - Sending Hexadecimal Data Over RS232]] &lt;br /&gt;
&lt;br /&gt;
= Communication =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:Serial_Com:Serial_Com_Example|Program Example - Serial COM]] - How to setup a serial connection &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_Simple_Server|Program Example - TCP/IP Simple Server]] - How to setup a simple TCP-IP server &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_Simple_Client|Program Example - TCP/IP Simple Client]] - How to setup a simple TCP-IP client &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_Multi_Server|Program Example - TCP/IP Multi Server]] - How to setup a TCP-IP server that opens connections with multiple clients &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_TelNet_Server|Program Example - TCP/IP TelNet Server]] - How to setup a TCP-IP TelNet server with simple parser &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_Winsock_Client|Program Example - TCP/IP windows socket client]] - An example written in C language, corresponds to the &lt;br /&gt;
*[[Program_Examples:TCP_IP:TCPIP_TelNet_Server|TCP/IP TelNet Server]] example. &lt;br /&gt;
&lt;br /&gt;
= File handling =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:File_Handling:Open_Read_Write|Program Example - File Handling - Open Read Write]] - How to open a file with different permissions &lt;br /&gt;
*[[Virtual_Entry_Station_(VES)|Program Example - Virtual Entry Station (VES)]] &lt;br /&gt;
*[[File_Encryption|Program Example - File Encryption (VES)]] &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Motion Bus =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:CANOpen:DS402_CAN_Drive_Setup|Program Example - DS402 CAN Drive Setup]] - How to setup drive for cyclic synchronous position operation &lt;br /&gt;
&lt;br /&gt;
= HMI =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:Operate_softMC_3_with_HMI|Program Examples - HMI]] - how to configure HMI with softMC 3 &lt;br /&gt;
&lt;br /&gt;
= Caming Examples =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:Create_Motion:CAM_Table|Program Examples - Create CAM table and move axes]] &lt;br /&gt;
*[[Program_Examples:Camming_by_Virtual_Master|Program Examples - Caming by Virtual Master]] &lt;br /&gt;
*[[Program_Examples:Reverse_engineering_for_cam_table|Program Examples - Reverse engineering for cam table]] &lt;br /&gt;
*[[Program_Examples:Cam_table_with_shutdown_and_restart|Program Examples - Cam table with shutdown and restart]] &lt;br /&gt;
*[[Cut_To_Length_(Punching)_Application|Program Examples - Cut To Length (Punching) Application]] &lt;br /&gt;
*[[Flying_Shear_Application|Program Examples - Flying Shear Application]] &lt;br /&gt;
&lt;br /&gt;
= Motion Examples =&lt;br /&gt;
&lt;br /&gt;
*[[Axis_Setup_Procedure|Program Example - Axis Setup]] - How to set up the basic configuration of an axis. &lt;br /&gt;
*[[Master_and_Slave_configuration|Program Example - Master Slave]] - How to set up basic 2 axes master &amp;amp; slave configuration. &lt;br /&gt;
*[[Defining_Cartesian_Groups|Program Example - Defining Cartesian Groups]] - How to set up an XYZ system. &lt;br /&gt;
*[[Program_Examples:Helical_Interpolation|Program Examples - Helical Interpolation]] - Circle Demo &lt;br /&gt;
*[[Program_Examples:Backlash_Compensation|Program Examples - Backlash Compensation]] - Position Backlash Compensation &lt;br /&gt;
*[[Program_Examples:Backlash_Compensation_Table|Program Examples - Backlash Compensation using Compensation Tables]] - Position Backlash Compensation using compensation tables &lt;br /&gt;
*[[Program_Examples:Homing|Program Examples - Homing]] - How to set homing parameters and issue a homing procedure &lt;br /&gt;
*[[Program_Examples:Create_Motion:Position_Mode|Program Examples - Move Axis in Position Mode]] &lt;br /&gt;
*[[Program_Examples:Create_Motion:Velocity_Mode|Program Examples - Jog Axis in Velocity Mode]] &lt;br /&gt;
*[[Program_Examples:Create_Motion:Torque_Mode|Program Examples - Issue a Torque Command to an Axis in Torque Mode]] &lt;br /&gt;
*[[Program_Examples:Defining_a_Cartesian_Group|Program_Examples - Defining a Cartesian Group]] &lt;br /&gt;
*[[Program_Examples:Setting_Up_an_Axis|Program_Examples - Setting Up an Axis]] &lt;br /&gt;
*[[Program_Examples:Robot_tool_calibration|Program_Examples - Robot tool calibration]] &lt;br /&gt;
*[[Program_Examples:CT_without_buffer|Program_Examples - CT without buffer]] &lt;br /&gt;
*[[Program_Examples:Group_Blending|Program_Examples - Group Blending]] &lt;br /&gt;
*[[Program_Examples:Advanced_Interpolation|Program_Examples - Advanced Interpolation]] &lt;br /&gt;
*[[Program_Examples:Single_Axis_Blending|Program_Examples - Single Axis Blending]] &lt;br /&gt;
*[[Program_Examples:Robot_Circle_Command|Program_Examples - Robot Circle Command]] &lt;br /&gt;
*[[Program_Examples:Cartesian_Gearing|Program_Examples - Cartesian Gearing]] &lt;br /&gt;
*[[Program_Examples_-_Robot_Pick_and_Place_(P&amp;amp;P)|Program_Examples - Robot Pick and Place (P&amp;amp;P)]] &lt;br /&gt;
*[[Program_Examples_-_Robot_Helix_motion|Program_Examples - Robot Helix motion]] &amp;lt;!--* [[Program_Examples:Cyclic_recording_of_one_Axis|Program_Examples - Cyclic recording of one Axis]]--&amp;gt; &lt;br /&gt;
*[[Program_Examples:Cyclic_recording_of_single_Axis|Program_Examples - Cyclic recording of single Axis]] &lt;br /&gt;
*[[Program_Examples:_PIPEMODE_library_and_motion_commands|Program_Examples - PIPEMODE: Library and Motion Commands]] &lt;br /&gt;
*[[Program_Examples:_WorkSpace_areas|Program_Examples - WorkSpace areas]] &lt;br /&gt;
*[[Program_Examples:_Events|Program_Examples - Events]] &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== PLS Examples ==&lt;br /&gt;
&lt;br /&gt;
*[[PLS_SETUP_PROCEDURE|Program Example - Axis-PLS: PLS Setup]] - How to set up a PLS data table. &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Path_Distances_as_Position_Source|Program Example - Path-PLS: Path Distances as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Path_Percentages_as_Position_Source|Program Example - Path-PLS: Path Percentages as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Setpoint1_as_Position_Source|Program Example - Path-PLS: Setpoint1 as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Non-Blended_Motion_Transitions_as_Position_Source|Program Example - Path-PLS: Non-Blended Motion Transitions as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Blended_Motion_Transitions_as_Position_Source|Program Example - Path-PLS: Blended Motion Transitions as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_Equidistant_Points_from_Start/End_as_Position_Source|Program Example - Path-PLS: Equidistant Points from Start/End as Position Source]] &lt;br /&gt;
*[[Program_Example_-_Path-PLS:_High_Accuracy_Concatenated_Motions|Program Example - Path-PLS: High Accuracy Concatenated Motions]] &lt;br /&gt;
*[[Program_Examples:Path-PLS|Program Example - Path-PLS: PUMA Robot Application with PLS]] &lt;br /&gt;
*[[Program_Examples:fast-PLS|Program Example - Fast-PLS: CDHD2 with fast-PLS 2023]] &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Advanced (Expert) =&lt;br /&gt;
&lt;br /&gt;
*[[Program_Examples:Visualization_with_RoboDK|Program_Example - Visualization with RoboDK]] &lt;br /&gt;
*[[Program_Examples:sys_log|Program Examples - sys.log]] - How to send log messages from MC-Basic context to Linux sys.log &lt;br /&gt;
*[[Program_Examples:Shared_Objects|Program Examples - Shared Objects]] - How to create, link and use shared objects with softMC &lt;br /&gt;
*[[Program_Examples:real_time_motion_event_tracer|Program Example - real time motion event tracer]] - How to trace internal motion events &lt;br /&gt;
*[[Program_Examples:Sci_Lab_interface|Program_Example - Sci Lab interface]] - Plotting softMC rec files in SciLab &lt;br /&gt;
*[[Program_Examples:Octave_interface|Program_Example - Octave interface]] - Plotting softMC rec files in Octave &lt;br /&gt;
*[[Program_Examples:User_Kinematics|Program_Example - User Kinematics - '''Advanced!''']] &lt;br /&gt;
*[[Program_Examples:force_sensor|Program_Example - Force Sensor]] &lt;br /&gt;
&lt;br /&gt;
= Undocumented =&lt;br /&gt;
&lt;br /&gt;
*[[Undocumented_User_Functions|Undocumented]]&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133918</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133918"/>
				<updated>2023-02-12T07:39:19Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: minor edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
== [[Program_Examples:1.1_Feature_introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 HW connection]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
C2 connection :&amp;amp;nbsp;&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls2.png|600x400px|Hwconnectionfastpls2.png]]&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls.png|350x300px|Hwconnectionfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.3&amp;amp;nbsp;Before running the code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
[[File:configfastpls.png|500x400px|configfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.4 The&amp;amp;nbsp;code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyFullName&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.5&amp;amp;nbsp; The results]] ==&lt;br /&gt;
&lt;br /&gt;
[[File:FastplsResults.png|650x500px|FastplsResults.png]]&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133917</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133917"/>
				<updated>2023-02-12T07:38:20Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Design&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
== [[Program_Examples:1.1_Feature_introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 HW connection]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[File:Hwconnectionfastpls2.png|600x400px|Hwconnectionfastpls2.png]]&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls.png|350x300px|Hwconnectionfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.3&amp;amp;nbsp;Before running the code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
[[File:configfastpls.png|500x400px|configfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.4 The&amp;amp;nbsp;code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyFullName&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.5&amp;amp;nbsp; The results]] ==&lt;br /&gt;
&lt;br /&gt;
[[File:FastplsResults.png|650x500px|FastplsResults.png]]&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133916</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133916"/>
				<updated>2023-02-12T07:38:04Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Design&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
== [[Program_Examples:1.1_Feature_introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 HW connection]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[File:Hwconnectionfastpls2.png|600x400px|Hwconnectionfastpls2.png]]&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls.png|350x300px|Hwconnectionfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.3&amp;amp;nbsp;Before running the code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
[[File:configfastpls.png|500x400px|configfastpls.png]]&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.4 The&amp;amp;nbsp;code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyFullName&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.5&amp;amp;nbsp; The results]] ==&lt;br /&gt;
&lt;br /&gt;
[[File:FastplsResults.png|650x500px|FastplsResults.png]]&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133915</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133915"/>
				<updated>2023-02-08T14:02:18Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Add the pictures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
== [[Program_Examples:1.1_Feature_introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 HW connection]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[File:Hwconnectionfastpls2.png|600x400px]]&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; [[File:Hwconnectionfastpls.png|350x300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.3&amp;amp;nbsp;Before running the code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
[[File:configfastpls.png|500x400px]]&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.4 The&amp;amp;nbsp;code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyFullName&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.5&amp;amp;nbsp; The results]] ==&lt;br /&gt;
&lt;br /&gt;
[[File:FastplsResults.png|650x500px]]&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=File:Hwconnectionfastpls2.png&amp;diff=133914</id>
		<title>File:Hwconnectionfastpls2.png</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=File:Hwconnectionfastpls2.png&amp;diff=133914"/>
				<updated>2023-02-08T13:59:49Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=File:Hwconnectionfastpls.png&amp;diff=133913</id>
		<title>File:Hwconnectionfastpls.png</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=File:Hwconnectionfastpls.png&amp;diff=133913"/>
				<updated>2023-02-08T13:59:18Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=File:configfastpls.png&amp;diff=133912</id>
		<title>File:configfastpls.png</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=File:configfastpls.png&amp;diff=133912"/>
				<updated>2023-02-08T13:58:57Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=File:FastplsResults.png&amp;diff=133911</id>
		<title>File:FastplsResults.png</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=File:FastplsResults.png&amp;diff=133911"/>
				<updated>2023-02-08T13:44:04Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133910</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133910"/>
				<updated>2023-02-08T13:40:36Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Design&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
== [[Program_Examples:1.1_Feature_introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 HW connection]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.3&amp;amp;nbsp;Before running the code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.4 The&amp;amp;nbsp;code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyFullName&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.5&amp;amp;nbsp; The results]] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133909</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133909"/>
				<updated>2023-02-08T13:37:57Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: Design update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
== [[Program_Examples:1.1_Feature_introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2_Scenarios|1.2 HW connection]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.3&amp;amp;nbsp;Before running the code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program_Examples:1.2.2_Before_running_the_code|1.4 The&amp;amp;nbsp;code]] ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyFullName&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== 1.2.5 The Result ===&lt;br /&gt;
&lt;br /&gt;
[[File:]]&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133908</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133908"/>
				<updated>2023-02-08T13:27:07Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: All the explain + test picture&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
== [[Program Examples:1.1 Feature introduction|1.1 Feature introduction]] ==&lt;br /&gt;
&lt;br /&gt;
This feature is used for laser application or any device that need a drive output to be toggled as fast as possible depends on the motor drive position.&amp;lt;br/&amp;gt; The idea is to trigger the FAST output 7/8 of the CDHD2 as fast as possible depending on the position feedback.&amp;lt;br/&amp;gt; In point of view of drive without master it’s easy.&amp;lt;br/&amp;gt; But in our case, we want the master to trigger to outputs and the master can provide data depending on the cycle time and in most of case the cycle time is to long so it a problem.&amp;lt;br/&amp;gt; That why thanks to this feature the drive can trigger the output even if it is not on a cycle times, we will se how to parameter this feature from the master (mc) in the next chapter&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== [[Program Examples:1.2 Scenarios|1.2 Scenarios]] ==&lt;br /&gt;
&lt;br /&gt;
I will explain the MC controller code that I wrote line by line&amp;lt;br/&amp;gt; The idea is to perform a homing process (home type 35) then to send motion to 400 degrees&amp;lt;br/&amp;gt; Meanwhile the motor is moving the user should see that the output 7 is toggled on 5 points: 150,175,200,220,360 degrees&lt;br /&gt;
&lt;br /&gt;
=== [[Program Examples:1.2.1 HW connection|1.2.1 HW connection]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
In other word:&amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== [[Program Examples:1.2.2 Before running the code|1.2.2 Before running the code]] ===&lt;br /&gt;
&lt;br /&gt;
Fast PLS output functionality need to be set on the drive (on out 7 or out 8)&amp;lt;br/&amp;gt; On the configurator in control studio two new objects need to be mapped on pdo4&amp;amp;nbsp;: 2191h and 2205h&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== 1.2.3 The code ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' File:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyTask&amp;gt;.prg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Purpose:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Just an example of a module header&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Version:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Author:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;MyFullName&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Description:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' History:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; YYYY-MM-DD&amp;amp;nbsp; &amp;lt;MyShortCut&amp;gt;&amp;amp;nbsp; V1.00&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Created&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'------------------------------------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' module global &amp;quot;constants&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'common shared FASTPLS1 as PLS a1 sys.DOut.1008&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Laser should be&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 150 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 175 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 200 &amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Off when pfb =&amp;gt; 220 &amp;amp;nbsp;&amp;amp;nbsp;deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'On when pfb =&amp;gt;&amp;amp;nbsp; 360&amp;amp;nbsp;&amp;amp;nbsp; deg&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program&lt;br /&gt;
&lt;br /&gt;
dim actualpfb as long&lt;br /&gt;
&lt;br /&gt;
dim tol as long = 0.1&lt;br /&gt;
&lt;br /&gt;
dim i as long&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
attach a1&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;------FastPLS V1.0--------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;/!\Home proccess/!\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_SET_HOMING_PARAMETERS(a1,HOMING_METHOD,35) &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;&amp;amp;nbsp;‘Hometype = 35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
call EC_SLAVE_HOME_DS402(a1, 5000)&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the home process&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if a1.PFb &amp;lt; tol and a1.PFac &amp;gt; - tol then&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Homing&amp;amp;nbsp;: DONE ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;-&amp;gt;Homing&amp;amp;nbsp;: FAIL ,Pfb = &amp;quot; + str$ (a1.PFb)&lt;br /&gt;
&lt;br /&gt;
end if&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;/!\ Init the Fast-PLS /!\ &amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.dout.1008=0&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'Turn off the output 1008 is pointing to DOUT 7 of the drive&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable = OFF&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Disable the FastPLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sys.dout.sim[1008]=0&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' set output as real&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.hwassistance=2&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' PLS as Fast PLS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CreatePlsData 5 FASTPLS1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;' Create 5 points&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[1] =&amp;amp;nbsp; 150&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[2] =&amp;amp;nbsp; 175&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[3] =&amp;amp;nbsp; 200&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[4] =&amp;amp;nbsp; 220&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPosition[5] =&amp;amp;nbsp; 360&lt;br /&gt;
&lt;br /&gt;
for i=1 to 5&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;Print &amp;quot;PLS position number: &amp;quot; + str$(i)+ &amp;quot;= &amp;quot;; FASTPLS1.PlsPosition[i]&lt;br /&gt;
&lt;br /&gt;
next&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsSource = A1.Pcmd&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘source of the PCOM&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationDelay=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PLSPropagationEnableDelay = 0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = ON &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'low to high polarity&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = ON&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;‘Enable the fastpls&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;FastPLS Active &amp;quot;&lt;br /&gt;
&lt;br /&gt;
print&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Motion activated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 50000 recdata = a1.PositionCommandHistory[1],a1.pcmd, 50*sys.dout[1008] ,ec_pdo_read(1,0x2191,0),a1.vcmd,((ec_pdo_read(1,0x2205,1) shl 4) shr 4), a1.PositionCommandHistory[1]+a1.vcmd*((ec_pdo_read(1,0x2205,1) shl 4) shr 4)/10/1e6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'record FASTPLS1.rec 10000 Gap=1 Recdata = a1.PCmd , 50*sys.dout[1008], ec_pdo_read(1,0x2191,0) , ec_pdo_read(1,0x2205,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00b050&amp;quot;&amp;gt;'recordon&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
move a1 400 abs=1 vcruise=720&lt;br /&gt;
&lt;br /&gt;
waitformotion a1&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Drive disable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
a1.En=0&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsEnable&amp;amp;nbsp;&amp;amp;nbsp; = OFF&lt;br /&gt;
&lt;br /&gt;
FASTPLS1.PlsPolarity = OFF&lt;br /&gt;
&lt;br /&gt;
Print&amp;quot;Test is done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'recordclose&lt;br /&gt;
&lt;br /&gt;
detach a1&lt;br /&gt;
&lt;br /&gt;
End Program&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== 1.2.5 The Result ===&lt;br /&gt;
&lt;br /&gt;
[[File:]]&lt;br /&gt;
&lt;br /&gt;
In red the cycle times (4ms)&amp;lt;br/&amp;gt; In blue the output 7&lt;br /&gt;
&lt;br /&gt;
As we can see the output is triggered even if it is not on the cycle time&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	<entry>
		<id>http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133907</id>
		<title>Program Examples:fast-PLS</title>
		<link rel="alternate" type="text/html" href="http://softmc.servotronix.com/index.php?title=Program_Examples:fast-PLS&amp;diff=133907"/>
				<updated>2023-02-08T13:24:56Z</updated>
		
		<summary type="html">&lt;p&gt;Eliot: minor edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Program_Examples:Path-PLS}} &lt;br /&gt;
78&lt;/div&gt;</summary>
		<author><name>Eliot</name></author>	</entry>

	</feed>