Post by olehmann03 on PFC200 - WAGO 750-8202 - MODBUS RTU
CODESYS Forge
talk
(Post)
Hello, I’m working on implementing Modbus RTU communication with a Carel controller (CPCO). I want to use the front RS485 interface through the DB9 connector. The issue is that I can’t get the communication working correctly. Below are the steps I’ve done so far: Connected pins 3 and 8 from the DB9 connector to the +/- RX/TX terminals on the Carel side. In the PLC shell, I set serialmode to RS485. In WBM under Administration > Serial Interface > Assign owner of serial interface, I set the port to unassigned. In the device tree, I created Modbus_COM with the following settings: COM port: 1 Baud rate: 19200 Parity: None Stop bits: 1 Created a Modbus client on this COM interface in RTU mode. Under the status tab, I can see it is in running state. On the client, I created a Modbus server and set the Modbus address of my unit to 1. Defined a few channels as FC03 to read holding registers according to the Carel register map. I checked the communication with the Carel controller using a USB-to-RS485 converter connected to my PC, and communication works correctly there. In the status tab, I can see that the Modbus server is polling, but there is no response from the controller. I also tried multiple times swapping A/B lines on the Carel side, but it did not help. Do you have any suggestions on what else I should check?
Last updated: 19 hours ago
Post by bolopg on MODBUS TCP REGISTERS CODESYS V3.5
CODESYS Forge
talk
(Post)
Hi. I have a problem with MODBUS TCP MASTER. I treid to read HR in range 3027-3037 but I cannot read them. I have modbus slave chanel with offset 0x3037. I checked what I read and it looks like I am reading HR in range 1-10. What I am doing wrong.
Last updated: 2024-10-11
Post by eschwellinger on File Creation Issue
CODESYS Forge
talk
(Post)
use the PLClogic directory to read / write files. /var/opt/codesys/PlcLogic this is due security reasons forced to use.
Last updated: 2025-03-04
Post by eschwellinger on Edge Gateway online, but PLC is not online
CODESYS Forge
talk
(Post)
need the log file - or you write/send it in the CODESYS store my question
Last updated: 2024-01-10
Post by eschwellinger on Rpi zero w lost license after 4.11 update
CODESYS Forge
talk
(Post)
Please write to 'my question' in the CODESYS Store.
Last updated: 2024-04-16
Post by dkugler on Text List Fallback Value
CODESYS Forge
talk
(Post)
why you adding this ' ' ? you don't need them in the text field :-) delete them, write only Unknown and everything will be as expected
Last updated: 2024-04-18
Post by automa on How to write variable by name
CODESYS Forge
talk
(Post)
It has been a few years since this topic. Any solutions?
Last updated: 2024-06-04
Post by adarsh on CAN Tags in Writing in PLC Error.
CODESYS Forge
talk
(Post)
Hi Folks, I have CAN Device Connected so I am able to read and write data at J1939 Manager. But unable to write the data from the PLC. Geeting the Following error while Writing from the Ladder Logic Diagram. Error:NO Valid Assignment Target How we can Rsolve this Problem
Last updated: 2024-04-02
Post by dogulas on OPC UA C# client connecting to OPC UA CODESYS server
CODESYS Forge
talk
(Post)
Ok, I have a simple test environment. From C#, using OPC UA, I can read DINTs, write DINTs, read Structs, but when I try to write a struct I get BadNotWritable. I am using Communication Manager, OPC UA Server, and IEC Symbol Publishing. I have a struct defined with one single DINT in it. The instance of the struct is in GVL. The struct is marked read/write in IEC Symbol Publishing. Any ideas? Pointers are welcome. public static async Task WriteStructA(byte[] structAData) { if (_session == null) throw new Exception("session is null"); // create a RequestHeader RequestHeader requestHeader = new RequestHeader { Timestamp = DateTime.UtcNow, TimeoutHint = 30000 // timeout in milliseconds }; // create an ExtensionObject to wrap the value to be written ExtensionObject extensionObject = new ExtensionObject( new ExpandedNodeId("GVL_StructA", 5), structAData ); // create a WriteValue object to hold the value to be written WriteValue writeValue = new WriteValue { NodeId = _structANodeId, AttributeId = Attributes.Value, Value = new DataValue(extensionObject) }; // put the WriteValue object into a WriteValueCollection object WriteValueCollection writeValueCollection = new WriteValueCollection() { writeValue }; // perform the write operation asynchronously WriteResponse writeResponse = await _session.WriteAsync( requestHeader, writeValueCollection, CancellationToken.None ); // check the result of the write operation if (writeResponse.Results[0] != StatusCodes.Good) throw new Exception("Write failed: " + writeResponse.Results[0]); }
Last updated: 2024-12-17
Post by greenwood on CODESYS Control Raspberry Pi mit Servotreiber T6 von StepperOnline
CODESYS Forge
talk
(Post)
Hallo, ich versuche, eine Modbus-RTU-Kommunikation zwischen meinem Raspberry Pi mit CODESYS Control für Raspberry Pi 64 SL und einem Servotreiber von StepperOnline, Typ T6, herzustellen. Die Verbindung ist wie folgt: RJ45-Stecker am Servotreiber -> Kabel mit RJ45 an einem Ende und USB-A-Stecker am anderen Ende -> Seriell-zu-USB-Konverter -> Raspberry Pi. Der Seriell-zu-USB-Konverter und die Kabel habe ich zusammen mit dem Motor und Treiber von StepperOnline gekauft und sie sind dafür gedacht, den Servotreiber mit einem Computer zu verbinden, auf dem deren Setup-Software läuft. dmesg | grep tty auf dem Pi sagt mir, dass der USB-zu-Seriell-Konverter auf ttyusb0 ist. Ich weiß nicht, wie man das in einen COM-Port übersetzt, ich habe COM 1 genommen. Ich habe ein Projekt in Codesys erstellt und ein Modbus_COM-Gerät hinzugefügt, einen Modbus_Master_COM_Port und einen Modbus_Slave_COM_Port angehängt. Auf der Registerkarte "Allgemein" des Modbus_COM habe ich die folgenden Werte eingestellt: Slave address 1 Baud rate 9600 Parity None Data bits 8 Stop bits 2 Ich habe den Servotreiber auf die gleichen Werte eingestellt. (Ich habe auch andere Werte getestet, aber mit dem gleichen Ergebnis). Auf der Registerkarte "Modbus Slave Channel" des Modbus_Slave_COM_Port habe ich einen Kanal hinzugefügt und die folgenden Werte eingetragen: Access type Read Holding Registers (Function Code 3) Read Register offset 0x0000 Length 1 Ich habe noch keinen Code geschrieben, weil ich noch nicht herausgefunden habe, wie man die Kommunikation programmiert. Wenn ich das Projekt zum Raspberry Pi herunterlade scheint der Modbus_Master_COM_Port zu laufen (grünes Symbol), aber der Modbus_Slave_COM_Port nicht (rotes Dreiecksymbol). Wenn ich einen anderen COM-Port eintrage, haben sowohl der Master als auch der Slave das rote Dreiecksymbol. Ich habe dies auch mit meinem Windows-PC unter Verwendung von Codesys Control Win 64 versucht und die gleichen Ergebnisse bekommen. Ich wäre dankbar für jede Hilfe oder Tipps, wie ich den Grund dafür herausfinden kann, warum der Servotreiberreiber nicht reagiert.
Last updated: 2024-05-31
Post by razebones on sdo read write codesys 3.5
CODESYS Forge
talk
(Post)
ENG For some reason, I can't bind a variable to the data parameter. Also, why does only the sdo_read4 function work for me? I also can't write through sdo_write4. I can only view the received values via sdo_read4. Please help me with this task. Moreover, I tried to write the values through sdo write 4 and for a while the data stopped being written and I overwritten it manually and sdo read4 started working again and at the same time they do not want to work in the main task. RU Я не могу почему то привязать переменную к параметру data. Так же у меня почему работает только функция sdo_read4 так же не могу записать через sdo_write4. Могу только просматривать полученные значения через sdo_read4. Помогите пожалуйста с этой задачей. Причём я попытался записать значения через sdo write 4 и у меня на какое то время перестали записываться данные и перезаписал вручную и sdo read4 начал работать снова и одновременно они не хотят работать в main task.
Last updated: 2025-04-01
Post by ben1 on How to write multiple coils (Modbus FC15)
CODESYS Forge
talk
(Post)
If I am understanding what you are saying, then yes that would be your problem. I would create an array of bools on the client side for the transfer and try that. Or if client can't be changed then use words on server and unpack. But I am not sure if you or I are mis interpreting but it sounds a bit jumbled. I don't know what you have control of, but, if you are turning on BITS in the server, you should write to BITS in the client with a Function 15. If you are writing to WORDS in the server, you should write to WORDS in the client with a Function 16.
Last updated: 2024-11-17
Post by sturmghost on Visualization using methods and cyclic ST-calls
CODESYS Forge
talk
(Post)
I found a way to do it: You can use, for example, the text variable property of any visualization element and call a function in it. Example: Write a test POU as a function (FUN), like MyTestFun which need a boolean Variable as an input value. Now write into the text variable property: MyTestFun(bBooleanValue) Thats it. The function is called at each visu_task cycle.
Last updated: 2024-01-22
Post by alez on CANOpen SDO to write VISIBLE STRING
CODESYS Forge
talk
(Post)
Hello, I am experiencing difficulties in configuring a CANopen device by sending SDOs. In particular I am attempting to write an Object Dictionary that has VISIBLE STRING as the Data Type. When I try to configure the sending of an SDO from Codesys to configure this parameter I am not allowed to enter a string value. In my particular case I am trying to change the Manufacturer Device Name ( Index 0x1008 ). Could it be that Codesys doesn't manage these types of variables?
Last updated: 2024-04-29
Post by bmatlove on Re-create CoE online window in Visu
CODESYS Forge
talk
(Post)
Hello, I am trying to re-create the CoE online window within a Visu for purposes of checking and interacting with device parameters occasionally for maintenance purposes. To minimize reliance on using the IDE for misc interactions. Ideally, I would like to exactly mimic the CoE online window within the IDE. I assume that it uses a few tricks to minimize overhead, such as only polling registers which are within the visual scope, for example. I'm afraid it might be too much to ask for a pre-built drop-in Visu module to exist for this task. Do I have any options aside from manually re-creating all the logic to do this, relying heavily on SdoInfo function blocks? Is there a way for me to reference the device ESI file to shortcut the process of determining how many registers there are and getting the address for each?
Last updated: 2025-12-27
Post by risele on Modbus connection via Qronox PCD3 M6893
CODESYS Forge
talk
(Post)
First, if you don't need to change conversion rules in runtime, take a look at "Unit conversion" module (Application -> add object -> UnitConversion). You can specify there biderectional conversion with different units, limits and so on. Second, since MODBUS don't have "real" types but only general 16-bit registers and Real is 32-bit, generally you need a byte-was conversion Real <> two Words. Note, that depending on the devices on both sides, there are two options: Real-> Word1, Word2 or Real-> Word2, Word1, where Word1 is minor register in Modbus register pair and Word2 is major. You can use simple union: TYPE u_Real : UNION rVal:REAL; wVal:ARRAY[0..1] OF WORD; dwVAL:DWORD; //same as previous, may be easier to specify the MB register END_UNION END_TYPE and convert it as following: VAR myUnion:u_Real; rValue_TO_SEND:REAL; rValue_TO_GET:REAL; END_VAR myUnion.rVal:=rValue_TO_SEND; rValue_TO_GET:=myUnion.rVal; Note, that WORD-order should be properly set in MODBUS registers, otherwise you will get strange values. This tool is helpful: https://www.scadacore.com/tools/programming-calculators/online-hex-converter/ Alternative, you can use functions as REAL_TO_DW and DW_TO_REAL from OSCAT_BASIC, for example.
Last updated: 2026-02-19
Post by eschwellinger on CSVReaderInit returns error : INVALID_HANDLE
CODESYS Forge
talk
(Post)
this is a security issue not to read/write in the plc allowed path I would recommend to update and change the path in the application were the files are😏
Last updated: 2023-08-30
Post by hwopereis on How to use Application Trigger in Modbus TCP Server
CODESYS Forge
talk
(Post)
I'm now circumventing the problem by creating a separate TCP client for all Write actions. Upon registering a changed variable, I enable this client, until the change is processed.
Last updated: 2024-07-01
Post by timvh on CanOpen write issue
CODESYS Forge
talk
(Post)
See: https://content.helpme-codesys.com/en/CODESYS%20Examples/_ex_canopen_canopen.html SDO example: SegmentedAndBlockWriteExample: Writing if an object of any length via SDO (segmented transfer or block transfer) by means of CiA405.SDO_WRITE_DATA This help page also contains a link to a demo project.
Last updated: 2024-07-16
Post by gauravthelkar on Static Code Analysis
CODESYS Forge
talk
(Post)
I am using the codesys V3.5 patch 7 64 bit. I have to write the python script for running the static analysis with loading standard rule .CSA file. how can we load the .csa rules file before running the static analysis command.
Last updated: 2024-08-05
Post by pablotorres on Dynamic Setting IP Address from IEC code
CODESYS Forge
talk
(Post)
Hi! I have a problem, when I write Ethernet.Enable, I get an error ("Enable" undefined). Could you send me the program? I can't solve it, and I don't know if it's because I'm missing a library or some FB...
Last updated: 2024-09-30
Post by banialuk on Modbus TCP Server
CODESYS Forge
talk
(Post)
I created Modbus Server TCP, but when I try started i have a error "TCP socet error" "Error on open/close/read/write TCP socket."
Last updated: 2024-10-21
Post by timvh on File access operation denied
CODESYS Forge
talk
(Post)
Go in Windows to this location. Right click on this file and go to properties. Is it in Read-only state? Then CODESYS cannot open in Write mode.
Last updated: 2024-11-09
Post by ben1 on How to write multiple coils (Modbus FC15)
CODESYS Forge
talk
(Post)
Yeah that is odd - sometimes you have to do what you have to do unfortunately. Have you tried sending consecutive bits in the word instead - ie. instead of [0].0. [1].0, [2].0 etc, send [0].0,[0].1, [0].2 etc. ?
Last updated: 2024-11-17
Post by ralfki on XMLWriteAsync
CODESYS Forge
talk
(Post)
Hello, I tried to write a XML file with XMLWriteAsync. Unfortunately after every Element it adds two CR and one LF. Is it possible to have only one CR and LF. Thanks for the support
Last updated: 2024-11-20
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.