haoayou 发表于 2024-7-10 18:16:53

英威腾PLC 任意类型先入先出方法

<p><span style="text-wrap: nowrap;">&nbsp; &nbsp;// Title:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FIFO</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Comment/Function: Shift the data to&nbsp; FIFO</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Library/Family:&nbsp; &nbsp;</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Author:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DDA</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Tested with:&nbsp; &nbsp; &nbsp; V1.6.2 SP1</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Engineering:&nbsp; &nbsp; &nbsp; Lib_Dang</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Restrictions:&nbsp; &nbsp; &nbsp;ENO disabled - error handling done with error and status</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Requirements:&nbsp; &nbsp; &nbsp;PLC (AM610_AM400)</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; //-------------------------------------------------------------------------------</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Change log table:</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // Version&nbsp; | Date&nbsp; &nbsp; &nbsp; &nbsp;| Expert in charge&nbsp; &nbsp; &nbsp; &nbsp;| Changes applied</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; //----------|------------|------------------------|------------------------------</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // 09.00.00 29.7.2021&nbsp; dangguodong</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; // the index the of array must be start with the zreo&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; //==================================================================================</span></p><p><span style="text-wrap: nowrap;"><br/></span></p><p><span style="text-wrap: nowrap;"><br/></span></p><p><span style="text-wrap: nowrap;"><br/></span></p><p><span style="text-wrap: nowrap;">// Check the param</span></p><p><span style="text-wrap: nowrap;">IF Contianer=0</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp;OR arrayLenght&lt;=0</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp;OR elementBytes&lt;=0</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp;THEN</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp;FC_FIFO_V1:=FALSE;</span></p><p><span style="text-wrap: nowrap;">RETURN;</span></p><p><span style="text-wrap: nowrap;">END_IF;</span></p><p><span style="text-wrap: nowrap;"><br/></span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp;// put the pointer to the array , according of the first pointer</span></p><p><span style="text-wrap: nowrap;">FOR i:=arrayLenght-2 TO&nbsp; 0 BY -1 DO</span></p><p><span style="text-wrap: nowrap;">&nbsp; &nbsp; &nbsp; &nbsp;</span></p><p><span style="text-wrap: nowrap;">&nbsp; pointerArray:=Contianer+ INT_TO_DWORD(i*elementBytes);</span></p><p><span style="text-wrap: nowrap;">&nbsp; pointerArrayNext:=Contianer+ INT_TO_DWORD((i+1)*elementBytes);&nbsp; &nbsp; &nbsp; &nbsp;</span></p><p><span style="text-wrap: nowrap;">BMOV(pbyDataSrc:=ADR(pointerArray^), uiSize:=INT_TO_UINT(elementBytes) , pbyDataDes:=ADR( pointerArrayNext^));</span></p><p><span style="text-wrap: nowrap;"><br/></span></p><p><span style="text-wrap: nowrap;">END_FOR</span></p><p><span style="text-wrap: nowrap;"><br/></span></p><p><span style="text-wrap: nowrap;">FC_FIFO_V1:=TRUE;</span></p><p><br/></p>
页: [1]
查看完整版本: 英威腾PLC 任意类型先入先出方法