Post by paulg on RasPi CAA Serial example - unexpected behavior during debug
CODESYS Forge
talk
(Post)
I've trimmed down the CAA Serial Codesys example to only listen on one port but, when stepping through the Case structure in debug mode, it jumps out of the structure during a specific point in every scan (I'll point it out below after describing the setup and listing the code). I'm using a Pi 4 Model B, and I have an Arduino Nano Every plugged in via USB which is streaming the following serial message at 1 Hz: Time since opening connection: 1 s Time since opening connection: 2 s ...and so on. The Pi shows the Nano at /dev/ttyACM0 so I edited CODESYSControl_User.cfg to read: Linux.Devicefile=/dev/ttyACM The code in my PLC_PRG is (ignore some of the comments, I hadn't deleted them out from the original example): PROGRAM PLC_PRG VAR xStartTest : BOOL:= TRUE; iState : INT; xTestDone : BOOL;(* True, when the test was done succesfully *) (* Settings to communicate with the COM Port *) aCom1Params : ARRAY [1..7] OF COM.PARAMETER; como1 : COM.Open; comc1 : COM.Close; comw1 : COM.Write; comr1 : COM.Read; //sWrite : STRING := 'Test String!'; sRead : STRING(25); szRead : CAA.SIZE; xCom1OpenError : BOOL; xCom1CloseError : BOOL; xCom1WriteError : BOOL; xCom1ReadError : BOOL; END_VAR //This example shows the communication of two COM Ports with each other. //The first one writes a string of characters, which is read by the second one. //After successful execution, the two COM Ports are closed and the test is done. IF xStartTest THEN CASE iState OF 0: //The parameters are set for the COM Port aCom1Params[1].udiParameterId := COM.CAA_Parameter_Constants.udiPort; aCom1Params[1].udiValue := 1; // the correct Port should be adapted aCom1Params[2].udiParameterId := COM.CAA_Parameter_Constants.udiBaudrate; aCom1Params[2].udiValue := 115200; aCom1Params[3].udiParameterId := COM.CAA_Parameter_Constants.udiParity; aCom1Params[3].udiValue := INT_TO_UDINT(COM.PARITY.NONE); aCom1Params[4].udiParameterId := COM.CAA_Parameter_Constants.udiStopBits; aCom1Params[4].udiValue := INT_TO_UDINT(COM.STOPBIT.ONESTOPBIT); aCom1Params[5].udiParameterId := COM.CAA_Parameter_Constants.udiTimeout; aCom1Params[5].udiValue := 0; aCom1Params[6].udiParameterId := COM.CAA_Parameter_Constants.udiByteSize; aCom1Params[6].udiValue := 8; aCom1Params[7].udiParameterId := COM.CAA_Parameter_Constants.udiBinary; aCom1Params[7].udiValue := 0; //The first Port is opened with the given parameters como1(xExecute := TRUE, usiListLength:=SIZEOF(aCom1Params)/SIZEOF(COM.PARAMETER),pParameterList:= ADR(aCom1Params)); IF como1.xError THEN xCom1OpenError := TRUE; iState := 1000; END_IF //After a successful opening, the next state is reached IF como1.xDone THEN iState := 15; END_IF 15: // the reading process is started comr1(xExecute := TRUE,hCom:= como1.hCom, pBuffer:= ADR(sRead), szBuffer:= SIZEOF(sRead)); IF comr1.xError THEN xCom1ReadError := TRUE; END_IF //After completion the size of the written bytes are saved IF comr1.xDone OR comr1.xError THEN szRead := comr1.szSize; iState := 20; END_IF 20: // If everything was successful the ports are closed and the handles are released comc1(xExecute := TRUE,hCom:= como1.hCom); IF comc1.xError THEN xCom1CloseError := TRUE; END_IF IF comc1.xDone OR comc1.xError THEN iState := 25; END_IF 25: // The first port is closed and the used handle released xTestDone := TRUE; xStartTest := FALSE; iState := 0; como1(xExecute := FALSE); comw1(xExecute := FALSE); comc1(xExecute := FALSE); ELSE iState := 0; END_CASE END_IF I realize as I write this that the .udiPort should be 0 and not 1, but that shouldn't be causing the issue I'm seeing. I'm forcing xStartTest:=TRUE every scan so that I can step into each line and observe what's happening. What I see is that the port parameters are set and the port is opened with no errors, but the code jumps out of the case structure to the last line every time it reaches (and I step into) the iState:=15 line (at the end of the iState:=0 block). So every scan cycle it goes through the block for iState=0 and jumps out at the same spot. I'm a little new to PLC programming so I may be misunderstanding the flow, but shouldn't this case structure keep moving down in the same scan? If it only handles one case per scan, why doesn't the value of iState persist? Thanks! Update: I restarted the Codesys control today and I was then able to see an error for como1.eError of "WRONG_PARAMETER". I tried doing some digging and another post made me think I should add another line to CODESYSControl_User.cfg, so I now have: [SysCom] Linux.Devicefile=/dev/ttyACM portnum := COM.SysCom.SYS_COMPORT1 So now when I set .udiPort to 1, I get "NO_ERROR" but I also don't read anything from the port (i.e. szRead = 0 always). If I try setting the port to 0 (which I'm confused about, because I added a COMPORT1 line but the device shows on the Pi as ACM0), I get the "WRONG_PARAMETER" error again. Is there an easier way to troubleshoot the Pi and view what ports the Codesys runtime is actually able to see while the Pi is running?
Last updated: 2024-06-06
Upgrading CODESYS runtime from v4.7 to v4.9 using a bash script leads to lose the licences stored in the soft container
CODESYS Forge
talk
(Thread)
Upgrading CODESYS runtime from v4.7 to v4.9 using a bash script leads to lose the licences stored in the soft container
Last updated: 2023-09-19
Post by nathant on Saving variable values on power cycle (RevPi Connect)
CODESYS Forge
talk
(Post)
Hello, this seems to be a known issue, but persistent/retain variables don't seem to work properly on RevPi devices. Is there a workaround to this? All I need is for a few configuration variables to be remembered through power cycle.
Last updated: 2023-12-03
Is there a way to Connect Visualization to a web that the buttons can be used using a mobile phone?
CODESYS Forge
talk
(Thread)
Is there a way to Connect Visualization to a web that the buttons can be used using a mobile phone?
Last updated: 2021-04-22
How to change list of referenced visualizations of a frame by programm? (NOT how to switch vis!)
CODESYS Forge
talk
(Thread)
How to change list of referenced visualizations of a frame by programm? (NOT how to switch vis!)
Last updated: 2023-06-01
Python Scripting: How to detect and handle "Object reference not set to an instance of an object" error
CODESYS Forge
talk
(Thread)
Python Scripting: How to detect and handle "Object reference not set to an instance of an object" error
Last updated: 2023-08-16
Is possible to transform a .sqlite file generated by a Trend Recording object to a .csv file?
CODESYS Forge
talk
(Thread)
Is possible to transform a .sqlite file generated by a Trend Recording object to a .csv file?
Last updated: 2017-12-22
Ethernet/IP Symbolic Access to I/O Channels pass the EIP Device FB instance to another FB IN_OUT
CODESYS Forge
talk
(Thread)
Ethernet/IP Symbolic Access to I/O Channels pass the EIP Device FB instance to another FB IN_OUT
Last updated: 2023-08-01
Post by meldawltly on Excel to Codesys 3.5
CODESYS Forge
talk
(Post)
Hello everyone, I have an excel file that i want to import into codesys3.5. Any idea how and what libraries can i use? To more clarify i have a table in codesys and i want to import my excel file into this table/ Thank you
Last updated: 2023-12-11
Post by meldawltly on Excel to Codesys 3.5
CODESYS Forge
talk
(Post)
Hello everyone, I have an excel file that i want to import into codesys3.5. Any idea how and what libraries can i use? To more clarify i have a table in codesys and i want to import my excel file into this table/ Thank you
Last updated: 2023-12-11
Post by ton on How to create a stopwatch?
CODESYS Forge
talk
(Post)
Hi, i guess you want to make a hour counter. You need to store the measured value. Try to use a retain variable, but need a graceful shutdown, or save it your self. see https://forge.codesys.com/forge/talk/Runtime/thread/278e325579/ Succes.
Last updated: 2023-12-12
Post by open on How to create a stopwatch?
CODESYS Forge
talk
(Post)
Thanks everyone for your input, I am using persistent variables to retain the timer value after machine shutdown, and main task to be as low as possible for the seconds TON to be accurate.
Last updated: 2023-12-14
Post by trycyclepower on How to transfer data from DINT to Union(16 Bools) which I need to use in Few FBs
CODESYS Forge
talk
(Post)
I have DINT data from drive input and would like to use this data in Bools in bunch of the FBs. I have tried using Union but it is not working. Please suggest
Last updated: 2023-12-14
Post by nadim4114 on Control Runtime Toolkit
CODESYS Forge
talk
(Post)
Hi @andreal, Were you able to adapt a codesys runtime to your linux based device? I am planning on the same lines. we want to develop a small controller of 64IOs for our application. We want to adapt codesys runtime on our Arm processor based embedded linux boards.
Last updated: 2023-12-26
Post by reinier-geers on One project diverent devices
CODESYS Forge
talk
(Post)
Ive got a project with 6 Divices version 9. They use networkvariable to communicate. I whant to add an Extra. But that one is probebly verion 19. Should that be a problem ? i have to update the software to 19. But i cant update the devices
Last updated: 2024-01-12
Post by ben1 on HMI Pushbutton/Move Instruction
CODESYS Forge
talk
(Post)
Hey mate, did you get to the bottom of this? If not, have you double checked the buttons are linked to the correct variables and/or performing the correct action? Have you tried always enabling the block to confirm false is moved to the variable if so?
Last updated: 2024-02-01
Post by gurkan on OPCUA array max length?
CODESYS Forge
talk
(Post)
2000 works. When testing with UA Expert there is a timeout from the OPCUA Server when trying to subscribe to the variable CPU do not seems to be to affected. The memory(RAM) however is building up
Last updated: 2024-02-19
Post by manuknecht on Creating softmotion axis dynamically
CODESYS Forge
talk
(Post)
Hi I was wondering the same thing. I managed to dynamically add an EtherCat Slave but I could not find out how to add a softmotion axis to it. Does anyone have an answer to this? Thanks in advance!
Last updated: 2024-02-21
Post by mattr on IFM CR711S Version Mismatch
CODESYS Forge
talk
(Post)
New to working with Codesys, it appears my device library has a newer version then the hardware i'm working with... I cant seem to find a way to update the hardware, or downgrade my library to match them up. I get this error Anythoughts?
Last updated: 2024-03-03
Post by timvh on Remote connection to ifm PLC & HMI
CODESYS Forge
talk
(Post)
Maybe also good to know that you could use the CODESYS installer to switch between gateways. - open the CODESYS installer - Select the (hamburger) menu - Select Settings - Select Services Then select the Gateway you would like to use.
Last updated: 2024-04-23
CNC - system goes to X=0 Y=0 before CNC file execution starts, how to avoid that?
CODESYS Forge
talk
(Thread)
CNC - system goes to X=0 Y=0 before CNC file execution starts, how to avoid that?
Last updated: 2024-05-07
Post by culius on Official MQTT-Client: MAX_RECEIVE_BUFFER_SIZE_EXCEEDED
CODESYS Forge
talk
(Post)
Hey Guys, could you give a explaination of how to change the g_udiMaxPacketSize from 6000 to 100000 and g_udiMaxPayloadSize from 4096 to 80000 ? When I go to the library the parameter is not editable. I would really appreciate it :) Kind Regards
Last updated: 2024-06-07
Post by lmartin on Scripting - how to get the fixed compiler version from Project settings
CODESYS Forge
talk
(Post)
Hi I search the way to be able to get the fixed version of the compiler set in the Project settings via a python script. Anabody know how to do that?
Last updated: 2024-06-13
Post by mos89p on is it possible to connect to a newer runtime from HMI runtime 3.5.16
CODESYS Forge
talk
(Post)
is it possible to connect to a newer runtime from HMI runtime 3.5.16 via Datasource manager for example a 3.5.20 ?
Last updated: 2024-07-02
Post by trycyclepower on How to set unit in Axis
CODESYS Forge
talk
(Post)
I am very new to Motion in Codesys. I have linear axis and would like to setup as mm, I want to move axis and control axis in mm, mm/s. How do I do that? I know my electronic gearing is 200000.
Last updated: 2024-08-29
To search for an exact phrase, put it in quotes. Example: "getting started docs"
To exclude a word or phrase, put a dash in front of it. Example: docs -help
To search on specific fields, use these field names instead of a general text search. You can group with AND
or OR
.