FB_BARReadFacadeElementList

With the help of this function block, data for facade elements (windows) can be imported from a pre-defined Excel table in csv format into the list of facade elements. In addition the imported data are checked for plausibility and errors are written to a log file.
VAR_INPUT
bStart : BOOL;
sDataFile : STRING;
sLogFile : STRING;
sNetId : STRING;
bStart: A TRUE edge on this input starts the reading process.
sDataFile: Contains the path and file name for the data file to be opened. This must have been saved in Excel as file type "CSV (comma-separated values) (*.csv)". If the file is opened with a simple text editor, then the values must be displayed separated by semicolons. Example of an entry: sDataFile:= 'C:\Projects\FacadeElements.csv'
sLogFile: dto. Log file for the accumulating errors. This file is overwritten each time the function block is activated, so that only current errors are contained.
sNetId: A string can be entered here with the AMS Net ID of the TwinCAT computer on which the files are to be written/read. If it is to be run on the local computer, an empty string can be entered.
![]() | The data can be saved only on the control computer itself and on the computers that are connected by ADS to the control computer. Links to local hard disks in this computer are possible, but not to connected network hard drives. |
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
udiErrorId : UDINT;
uiAmountOfSetsRead : UINT;
bBusy: This output is TRUE as long as elements are being read from the file.
bError: This output is switched to TRUE if the parameters entered are erroneous or if an error has occurred while writing to or reading from the file.
udiErrorId: Contains the error code of the error that occurred last. See Error codes or ADS_Error codes.
uiAmountOfSetsRead: Number of data sets read
VAR_IN_OUT
arrFacadeElement : ARRAY[1..iColumnsPerFacade, 1..iRowsPerFacade] OF ST_BARFacadeElement;
arrFacadeElement: List of facade elements.
Excel table
The following example shows the Excel table with the entries of the window elements.
All text fields are freely writeable; important are the green marked fields, wherein each line of a data set is marked there.
The following rules are to be observed:
- A data set must always start with a '@'.
- The indices IndexColumn and IndexRow must lie within the defined limits, see List of facade elements. These indices directly describe the facade element in the list arrFacadeElements to which the data from the set are saved.
- Window width and window height must be greater than zero
- The corner coordinates P1x and P1y must be greater than or equal to zero.
- Each window element must be assigned to a group 1..255.
- For system-related reasons the total size of the table may not exceed 65534 bytes.
- The table has to be saved in Excel as file type "CSV (comma-separated values) (*.csv)".
It is not necessary to describe all window elements that would be possible by definition or declaration. Before the new list is read in, the function block deletes the entire old list in the program. All elements that are not described by entries in the Excel table then have pure zero entries and are thus marked as non-existent and also non-evaluable, since the function block for shading correction, FB_BARSunProtectionEx, does not accept elements with the group entry '0'.
Log file
Each time the reading function block is restarted, the log file is rewritten and the old contents are deleted. If there is no log file, it will be automatically created first. The log file then contains either an OK message or a list of all errors that have occurred. Errors connected with the opening, writing or closing of the log file itself cannot be written at the same time. Therefore the output udiErrorId of the reading function block must also always be observed, since it displays the last error code. Since the log file is always closed last during the reading process, a corresponding alarm is ensured in the event of an error.
Program sample
In this sample the variable bInit is initially set to TRUE when the PLC starts. Hence, the input bStart on the function block fbReadFacadeElementList receives a once-only rising edge that triggers the reading process. The file "FacadeElements.csv" is read, which is located in the folder "C:\Projects\". The log file "Logfile.txt" is then saved in the same folder. If this log file does not yet exist it will be created, otherwise the existing contents are overwritten. Reading and writing take place on the same computer on which the PLC is located. This is defined by the input sNetID = '' (=local). All data are written to the list arrFacadeElement declared in the program. The output bBusy is TRUE as long as reading and writing are taking place. The error that occurred last is indicated on udiErrorId; bError is then TRUE. The number of data lines found and read is indicated on uiAmountOfSetsRead for checking purposes.
The errors marked were "built into" the following Excel list. This results in the shown log file:
The first error is in data set 2 and is an index error, since "0" is not permitted.
The next error in data set 6 was found after validation of the data with the internally used function block FB_BARShadingObjectsEntry and was therefore provided in greater detail with an error number, which is explained in greater detail under error codes. The third and the fourth errors likewise occurred after the internal validation. Important here is that the data set numbers (in this case 22 and 24) do not go by the numbers entered in the list, but by the actual sequential numbers: only 30 data sets were read in here.
Requirements
Development environment | required library | required function |
---|---|---|
TwinCAT 3.1 build 4022.16 or higher | Tc2_HVAC V3.3.1.0 | TF8000 | TC3 HVAC V1.0.0.0 |