I am also having this issue. It was working fine for the first 2ish months and is now throwing this error. I can just try and go online again a second time and it works. I'm wondering if there is an environmental variable or something that isn't set that is causing it to use an empty path as a temp directory. The empty path will be the location the app is running from which is that path C:\Program Files\CODESYS 3.5.19.50\CODESYS\Common. The permissions don't allow a normal user to write to that directory...
Did you ever figure this out? I'm pondering this same question.
I've caught so many bugs in my code. From silly mistakes to big head scratchers. Massive thanks guys
See the attached files. Yes, this is in v1.2.0.0
A note about this. It seems that if all the variables in the function I'm testing are 0.0 then the math can return NaN however if only the divisor (rl2) is 0.0 then the controller will throw a divide-by-zero exception. FUNCTION ExampleFunction : REAL VAR_INPUT rl1 : REAL; rl2 : REAL; rl3 : REAL; END_VAR ExampleFunction := (rl1 / rl2) * rl3; It is interesting the things you discover as you create more test cases. (Thanks for your work on this library <3 )
A note about this. It seems that if all the variables in the function I'm testing are 0.0 then the math can return NaN however if only the divisor (r2) is 0.0 then the controller will throw a divide-by-zero exception. FUNCTION ExampleFunction : REAL VAR_INPUT rl1 : REAL; rl2 : REAL; rl3 : REAL; END_VAR ExampleFunction := (r1 / r2) * r3; It is interesting the things you discover as you create more test cases. (Thanks for your work on this library <3 )
AssertEquals_REAL does not handle NaN
Did some digging on the format and I can't seem to find disabled as an attribute in the xsd (https://github.com/windyroad/JUnit-Schema/blob/master/JUnit.xsd) however skipped is mentioned, but in the context of <testsuite>
It seems it is not reported as disabled in the xml report or in the log. (See attached screen shots), but is reported as SKIPPED in the test suite. Maybe I misunderstand the disabled field for <testsuites> I was expecting that to give the total disabled or skipped tests. It does get marked as skipped, but calling TEST_FINISHED() doesn't mark it finished. (Not sure if it should)
Does TEST_FINISHED() need to be called when the test is marked as disabled_? or is it sufficient to just have it marked as skipped/disabled? METHOD T101_Process VAR_INPUT END_VAR VAR_INST mxT : UINT; END_VAR IF xLiveDB THEN TEST('T101_Process'); ELSE // gc_sDisable : STRING(10) := 'disabled_'; TEST(concat(gConst.gc_sDisable, 'T101_Process')); // Is this call necessary? TEST_FINISHED(); RETURN; END_IF CASE mxT OF 0: // init mxT := 10; 10: // multi stage test mxT := 20; ELSE TEST_FINISHED(); END_C...
Add ability to disable tests and have them reported
AssertEquals_STRING fails to display Error Severity
I may have gotten a better understanding with some new comments provided in the 3.5.17 release. FBF.FactoryBase Properties (* Is called by ``prvMemAlloc``, if ``prvPoolAdr`` returns ``CAA.gc_pNULL``*) PROPERTY prvInstCount : FBF.CAA.COUNT (* Is called by ``prvMemAlloc``, if ``prvPoolAdr`` returns not ``CAA.gc_pNULL``. it should be implementet like :code:`prvPoolSize := sizeof(abyPoolMemory)`*) PROPERTY prvInstPoolSize : FBF.CAA.SIZE (* Is called by ``prvMemAlloc``, to determine the Methode of allocation....
The files for the Soft PLC are located at c:\Users\All Users\CODESYS\CODESYSControlWinV3x64\ you can stop your soft PLC and then delete any directory that exists there. The next time you start your Soft PLC it will create a new directory with a fresh version and you'll be able to set a password for the device. If you have other soft PLCs you'll also find their files in the parent directory c:\Users\All Users\CODESYS\
I'm working on a library that has a state machine using a CASE statement and an ENUM. When I try and use the library in a project I get these errors if I select Only allow qualified access to all identifiers It seems to think that I need to call the elements with namespace inside the library? What's going on here?
PROPERTY prvInstCount : CAA.COUNT (* ctInst *) // prvInstCount.Get body (* Please choose a proper value for prvInstCount *) prvInstCount := 10; I can't seem to find any documentation on what a "proper" value is for this property or even what specifically it is supposed to be. By the name I would think it to be the Instance Count, but then how does one keep track of that? a VAR_STAT and FB_Init to increment it? leaving this value as 10 seems to work, but that just confuses me more.
After some asking around (they wish to remain nameless) I discovered that global parameter lists have been deprecated as of 3.5.15.0. I'm guessing here that the idea is for future libraries to use Function Block Factories? https://help.codesys.com/webapp/idx-CAA_FBFactory-lib;product=CAA_FBFactory;version=3.5.13.0
from @aliazzz in a PM The Add Object Parameter List was removed in CODESYS Engineering; *Add object > global parameter list (3.5.15.0) I'm guessing here that the idea is for future libraries to use Function Block Factories? https://help.codesys.com/webapp/idx-CAA_FBFactory-lib;product=CAA_FBFactory;version=3.5.13.0
from @aliazzz in a PM The Add Object Parameter List was removed in CODESYS Engineering; *Add object > global parameter list (3.5.15.0) I'm guessing here that the idea is for future libraries to use Function Block Factories? https://help.codesys.com/webapp/idx-CAA_FBFactory-lib;product=CAA_FBFactory;version=3.5.13.0
I have an issue where I have extended a function block from a library, but when I try to use it with the library defined interfaces I get the attached error. Error Text [ERROR] PRS Alternator Test: gAlarmManager(Line 5): C0032: Cannot convert type 'PceAlarms.IAlarmManager(pcealarms, 0.0.0.1 (powercore engineering))' to type 'IAlarmManager' Base FB Declaration in Library FUNCTION_BLOCK AlarmElement IMPLEMENTS IAlarmElement, PCI2.IBasicLogger ... Extended FB Declaration in Project FUNCTION_BLOCK PceAlarm...
ok, so I was playing around with some tests today and the code I was looking at I didn't actually try and build/run because I was missing libraries for it. Turns out you can build and run THIS^.refLamp REF= 0; it is just the precomplier that complains about it. Is this a bug then in the precompiler?
I've seen parameter lists in other libraries, but I can't seem to be able to find any information on them in the docs. They are also not an option in the context menu. Have they been removed? What should be used instead? How are they accessed if they haven't been removed?
Is there a way to work around the error that happens when trying to set a reference to 0 after it isn't needed or is invalid? Trying to do this in codesys >= V3.5.15 results in an error. See example below. Now I could great a GVL with a bunch of unset references, but I'd end up with a large amount of null types. METHOD FB_init : BOOL VAR_INPUT bInitRetains : BOOL; // if TRUE, the retain variables are initialized (warm start / cold start) bInCopyCode : BOOL; // if TRUE, the instance afterwards gets...
I'm having a problem with visualizations not getting the current values for data items in a datasource. I've got too many data items to just have the all of them update every scan. The documentation says the datasource should update the dataitems that are used on the screen, but not all of them are being updated that are used on the screen. This is happening on a frame that takes an array and simulates scrolling by incrementing the index using the scroll bar. (See attached screenshot) Is there a...
testresults.xml top level failure count not accurate
Multi-cycle TestSuite not able to finish
I'm getting an exception when I try and add a POU to a task in an HMI project. Steps to reproduce: Create new HMI project in Codesys 3.5.15.40 Create new programming POU Add new POU to MainTask Exception occurs Click continue POU shows in MainTask editor, but not in tree save project and reopen POU appears in tree and functions as expected.
ok, I figured out why those data points didn't show. Even though those points were being used in the current HMI they were not being read by the datasource. I selected "Always Update" and they are now being read. Hopefully that helps someone else in the future.
In the screen shots I have the PLC online data and the HMI datasource data. You can see that some of the data in the structure transfered, but not all of it. I'm discovering that the symbol configuration of the data source is not using OPC-UA but a different protocol? Is it even OPC?
Thanks @mprestel by demo license I mean no license. If there is no datasource limit then why am I not able to read all of the data source variables on the HMI, but I can read them fine with an OPC client? I don't see anything in the log of either the PLC or the HMI that would indicate a problem. The data points exist in the HMI, but don't have the PLC value and if written to from the HMI the PLC doesn't see the change.
Thanks @m.prestel by demo license I mean no license. If there is no datasource limit then why am I not able to read all of the data source variables on the HMI, but I can read them fine with an OPC client? I don't see anything in the log of either the PLC or the HMI that would indicate a problem. The data points exist in the HMI, but don't have the PLC value and if written to from the HMI the PLC doesn't see the change.
What is the datasource limit for the codesys hmi in demo mode? I'm having some OPC data points come through, but not all. I'm guessing it might be a demo mode limit issue since I can read all the data points from the PLC via UaExpert. I've got >5000 in the project so far. I tried looking for documentation on this, but I couldn't find any.
I'm trying to export some function block data over OPC UA and I'm getting errors. Is there a way around this issue? In the screenshot: gIO = Global Variable List ai* types are a function block of type AINMXB with properties exported via attributes
Hard to say for sure which codesys version since schneider electric hides that. I'm using Machine Expert v1.2 which uses codesys 3.5.? Visu profile is Machine Expert v1.2 (I really wish third party vendors didn't feel the need to hide what they are really using.) I was able to prevent the error by de-nesting the tab control. I had a tab-control with a second tab-control on the offending tab. I don't know if maybe with the nested tab-control all the elements for the second tab-control were active?...
Had to say for sure which codesys version since schneider electric hides that. I'm using Machine Expert v1.2 which uses codesys 3.5.? Visu profile is Machine Expert v1.2 (I really wish third party vendors didn't feel the need to hide what they are really using.) I was able to prevent the error by de-nesting the tab control. I had a tab-control with a second tab-control on the offending tab. I don't know if maybe with the nested tab-control all the elements for the second tab-control were active?...
I'm getting EventBuffer full errors in my webvisu. What causes this and what can be done to prevent these errors? I'm guessing it is related to number of screen objects, but is it certain types? (Inputs vs display items)