PLCgen TwinCAT self-certification: variables from MAIN not recognized in FUNCTION
**Test report**
| Tool | Version |
| ------ | ------ |
| ESCET | nightly-20241023-115319 |
| TwinCAT | v3.1 build 4020.56 |
| Test suite | v27 |
Setup of TwinCAT as described here: https://cstweb.wtb.tue.nl/4tc00/twincat/setup.html#twincat-install.
Project generated as described here: https://eclipse.dev/escet/cif/tools/plcgen/twincat.html#twincat-usage.
**Test case**: `iter_limit3_funcs_event.cif`, `iter_limit3_funcs_scope.cif`, `sync_events_funcs_event.cif`, `sync_events_funcs_scope.cif`
_Encountered errors_
I get a long list of errors, all caused by variables declared in `MAIN` not being recognized in the two `FUNCTION`s `tryEvent_a_c` and `tryEvent_a_u`. This is an example of the generated error messages:
- `Unknown type: '(a_x > 0)'` in `\Untitled1\POUs\tryEvent_a_c.TcPOU` at line 30
- `Identifier 'a_y' not defined` in `\Untitled1\POUs\tryEvent_a_c.TcPOU` at line 30
- `Identifier 'a_x' not defined` in `\Untitled1\POUs\tryEvent_a_c.TcPOU` at line 30
The relevant piece of generated code is for the three errors above is
```
IF a_x > 0 AND a_y > 0 THEN
edge_a := 0;
ELSE
```
The problematic variables are declared in `MAIN` as follows:
```
PROGRAM MAIN
VAR
a_x: DINT;
a_y: DINT;
firstRun: BOOL := TRUE;
loopsExhausted: INT;
END_VAR
```
Error seems to be independent from #1038.
Addresses #1020 #679
(Edit: clean format error messages.)
issue