This is part of 2.1.0latest release.

MLxCommunicationWrite

1.0.0

Communication handling for writing to a MotoLogix system.

This function should be called at the end of the PLC task, or at least after any other MotoLogix function.

Version history

1.0.0

  deGroot

Changes

Added:Removed:
  • unused internal variables
show full history

0.1.0

  deGroot

Changes

Changed:

Overview

kindnametypedefaultcomment
inputFirstScanBOOLfirst scan after startup of plc
outputcommandsInUseSINTnumber of slots in the command buffer currently in use
in_outMLX_OutputARRAY[0..435] OF USINT
in_outMLXMLxDataThe MLxData Controller Scope tag.

Details

FirstScan

BOOL

Must be True for the first scan after startup of plc.

commandsInUse

SINT

Number of slots in the command buffer currently in use. It helps to understand what fill levels the command buffer reaches when running your MotoLogix application.

  • Each enabled instance of a MotoLogix function (except sytem- and PLC internal commands) occupies a slot in the command buffer for the length of its lifecycle.

  • A function block that gets triggered when the command buffer is already full will fail (Sts_ER status).

MLX_Output

ARRAY[0..435] OF USINT

Output data buffer (mapped to fieldbus IO).

The MotoLogix variable which acts as the shared memory for a MotoLogix system.

As the PLC runs through its scan cycle each active MotoLogix FB will read from- and write to this MotoLogix variable.

It is also used for processing the data red from- and sent to the robot controller.

There are a few important rules:

  • MLxCommunicationRead must be called at the very beginning of the PLC scan cycle.
  • MLxCommunicationWrite must be called at the very end of the PLC scan cycle.
  • All other MotoLogix FB’s used in your application must be called inbetween.
  • All off this must be handled by the same PLC task, respecting above rules.

Failing to follow above rules can lead to inconsistent data being sent to the robot controller which could result in unexpected motion.

Implementation

Snippet of the function call:
fbCommunicationWrite : ARRAY[0..0] OF MLxCommunicationWrite;

// fbCommunicationWrite[0].FirstScan := ;
fbCommunicationWrite[0]( MLX_Output := dummy,  MLX := dummy );
//  := fbCommunicationWrite[0].commandsInUse;

Pages built with Hugo - 23 Apr 2024 11:54 CEST