Something went wrong

Latest / Featured posts

Posts

  • Scheduler watch dog error

    Dear sir I created a cpp RT-bundle using a scheduler running at 2ms and 29 priority. And there is another thread instance running at the same time, which has no real time requirement and can be executed whenever the cpu is free. Both the thread and scheduler program have used the motion service to do different command in parallel (but not in the same time), scheduler program only uses the motion get PLCopen State, set synchronize signal and axis abort command, the thread uses the positioning and wait synchronize command. However, I found that when the thread has massive tasks to do, it will sometimes cause the watch dog error of the 2ms scheduler, the error chance is not high, it happens about every 100~200 times. Is there any setting or method to prevent this error?
    2
    01/16/2025
  • Duplicate the SDK application

    Dear sir I have developed one SDK application to control the motion axis , create rt and nrt datalayer node and trace service in rt scheduler bundle. What I want to do is duplicating the function( motion, datalayer and scheduler) to another SDK application named by a different name. And both the original SDK and duplicated SDK app are installed in the same ctrlX core, and achieve the same function, only the motion axis name, datalayer node name and scheduler callable name is different. However, when I install the two APP in the same ctrlX core, I found that only one of them is normally running. So I guess the activator and the component or service in two APP is conflicted or not compatible. I wonder if I want to achieve the above feature like duplicate one SDK APP to another, what do I need to change in the duplicated SDK besides application name, motion axis name , scheduler callable name and datalayer noede name? Or is there any better way to achieve what I want? I want to duplicate the achieved motion and datalayer function and logic to multiple axis and data node. And still I can not upload the picture in the forum , do you have same problem?
    4
    01/08/2025
  • The compile process takes long time to finish in windows11 vscode?

    Dear sir Is there any related reason or setting that will slow down the compile speed in bosch windows11's vs code remote ssh? Because, I find out that it takes over 20 minutes to finish a celix rt cpp program by "build and run build task" in vs code, which took only 1~2 minutes to finish in previous windows 10 environment. I am not sure what is the reason to this phenomenon, it really affects the coding efficiency. I only build 21 cpps in my project like below: * Executing task: bash build-snap-amd64.sh ------------------------------------------------------- Print options ... ------------------------------------------------------- architecture: amd64 build type: release verbosity: verbose ------------------------------------------------------- Build with cmake presets ... ------------------------------------------------------- Preset CMake variables: CMAKE_BUILD_TYPE="RelWithDebInfo" CMAKE_INSTALL_PREFIX:PATH="/home/boschrexroth/scripts/ctrlx-automation-sdk/sample-rt/public/samples-cpp/cn.2.06/generated" CMAKE_TOOLCHAIN_FILE:FILEPATH="/home/boschrexroth/scripts/ctrlx-automation-sdk/sample-rt/public/samples-cpp/cn.2.06/../../cmake/toolchain/linux-amd64.cmake" SDK_ROOT_DIR="/home/boschrexroth/scripts/ctrlx-automation-sdk/sample-rt/public/samples-cpp/cn.2.06/../.." -- The C compiler identification is GNU 11.4.0 -- The CXX compiler identification is GNU 11.4.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/x86_64-linux-gnu-gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/x86_64-linux-gnu-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Using zip to create bundles -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") -- Found libuuid: /usr/lib/x86_64-linux-gnu/libuuid.so -- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.81.0") -- Found libzip: /usr/lib/x86_64-linux-gnu/libzip.so -- Found jansson: /usr/lib/x86_64-linux-gnu/libjansson.so -- Found libffi: /usr/lib/x86_64-linux-gnu/libffi.so -- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Configuring done -- Generating done -- Build files have been written to: /home/boschrexroth/scripts/ctrlx-automation-sdk/sample-rt/public/samples-cpp/cn.2.06/build [ 0%] Built target com.boschrexroth.sdk.rt.scheduler [ 4%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/BundleActivator.cpp.o [ 8%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/Component.cpp.o [ 13%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/global_variable.cpp.o [ 17%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/lib/motion.cmd/motion_cmd.cpp.o [ 21%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/lib/force.cmd/force_cmd.cpp.o [ 26%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/lib/file.cmd/file_cmd.cpp.o [ 30%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/lib/file.cmd/lib_json/json_reader.cpp.o [ 34%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/lib/file.cmd/lib_json/json_value.cpp.o [ 39%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/lib/file.cmd/lib_json/json_writer.cpp.o [ 43%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/lib/nrt.node.cmd/nrt_node_cmd.cpp.o [ 47%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/lib/rt.node.cmd/rt_node_cmd.cpp.o [ 52%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/trace/trace_cmd.cpp.o [ 56%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/scheduler/1_high/scheduler_high.cpp.o [ 60%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/scheduler/1_high/fun/pressing.fun/pressing_fun.cpp.o [ 65%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/scheduler/1_high/fun/curve.fun/curve_fun.cpp.o [ 69%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/scheduler/1_high/fun/interpreter.fun/interpreter_fun.cpp.o [ 73%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/scheduler/2_mid/scheduler_mid.cpp.o [ 78%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/scheduler/2_mid/fun/evaluation.cmd/evaluation_cmd.cpp.o [ 82%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/scheduler/3_low/scheduler_low.cpp.o [ 86%] Building CXX object src/CMakeFiles/sdk_rt_di_do.dir/threads/thread_1.cpp.o [ 91%] Linking CXX shared library libsdk_rt_di_do.so [ 91%] Built target sdk_rt_di_do [ 95%] Generating ../celix/gen/bundles/com.boschrexroth.sdk.rt.scheduler/lib-sdk_rt_di_do-copy-timestamp [100%] Packaging com.boschrexroth.sdk.rt.scheduler [100%] Built target com.boschrexroth.sdk.rt.scheduler_bundle [100%] Built target celix-bundles [100%] Built target celix-containers [100%] Built target celix-build-docker-dirs [100%] Built target celix-runtimes Install the project... -- Install configuration: "RelWithDebInfo" -- Installing: /home/boschrexroth/scripts/ctrlx-automation-sdk/sample-rt/public/samples-cpp/cn.2.06/generated/bundle/com.boschrexroth.sdk.rt.scheduler.zip ------------------------------------------------------- Snapcraft clean and build ... ------------------------------------------------------- Cleaning all parts Starting Snapcraft 7.5.6 Logging execution to '/root/.local/state/snapcraft/log/snapcraft-20241230-041703.210396.log' Skipping build-on: arm64 build-for: ['amd64'] because build-on doesn't match host arch: amd64 Skipping build-on: arm64 build-for: ['arm64'] because build-on doesn't match host arch: amd64 Running on amd64 for amd64 Initializing parts lifecycle Executing parts lifecycle... Executing parts lifecycle: pull bundle Executing action Executed: pull bundle Executing parts lifecycle: build bundle Executing action :: + cp --archive --link --no-dereference . /home/boschrexroth/scripts/ctrlx-automation-sdk/sample-rt/public/samples-cpp/cn.2.06/parts/bundle/install Executed: build bundle Executing parts lifecycle: stage bundle Executing action Executed: stage bundle Executing parts lifecycle: prime bundle Executing action Executed: prime bundle Executed parts lifecycle Extracting and updating metadata... Copying snap assets... Generating snap metadata... Generated snap metadata Reading snap metadata... Running linters... Running linter: classic Running linter: library Creating snap package... Created snap package cn_2.06.00_amd64.snap * Terminal will be reused by tasks, press any key to close it. Another non-ctrlX-related question about the forum, do you know why I can not upload the picture or file in this forum?
    2
    12/30/2024
  • What happened to the the motion extension library in ctrlX V2.06 SDK example?

    Hi,sir I had developed the motion application SDK in ctrlX v1.14, and I used several functions from motion extension library like below, however, I can not find the related or similar library in v2.06, what happened to these library? I need to use these library functions to change and read the axis and kinematics parameter like position/velocity/acceleration limitation and motion units, and so on. #include "motion/core/extension/i_axs_cfg.h" #include "motion/core/extension/i_kin_cfg.h" #include "motion/core/extension/i_obj.h" #include "motion/core/extension/i_obj_axs.h" #include "motion/core/extension/i_obj_kin.h" #include "motion.lib.jobs/motion/jobs/defines/cmd_defs.h" As well as the ethercat master library in V1.14 is missing in V2.06, I need this library to read and write directly from ethercat master to slave driver; #include "comm.ethercat.master/comm/ethercat/master/fbs/parameter_generated.h"
    4
    12/25/2024
  • How to generate fossinfo.xml from snapcraft.yaml stage-packages

    Hello, as an app developer it is required to provide a fossinfo.xml with the app code. Most apps will probably have some kind of apt dependencies defined in the snapcraft.yaml as stage-packages (e.g. for the datalayer). I was wondering if someone already came up with a script or other to generate parts of the fossinfo.xml based on the dependencies being installed through stage-packages? stage-packages (and their dependencies) seem to be available as debian packages at some point during the snapping process and all the required information could (hopefully) be gathered from there. Thank you and kindest regards, Fabian
    1
    12/19/2024
  • Unable to build arm snap

    So I have been building snaps before using a virtual machine. But now I want to try using the SDK to get a better workflow. But I'm running into an issue. It seems like I'm missing something basic. I have installed the latest version of the ctrl works (1.20.12), it installed without any issues. I have setup a build environment that has internet connection. When I start the environment I have zero errors. I have cloned and installed the latest version of the SDK from github. I have run all the installation scripts in the README.md I have setup a connection with vs code and connect to the build environment via remote explorer (SSH). Everything seems to be working correctly until I try to build a snap. I have tried to build multiple of the samples snap but I don't get an arm64.snap I only get the amd64.snap I run this command in the terminal ./build-snap-arm64.sh but I only get a amd64 version. I seems like I'm missing something basic, have I misunderstood the SDK that you cant crossbuild with ctrl works? Or have I simply missed a step in the setup?
    4
    12/12/2024
  • ctrlx SDK Realtime C

    Hello everybody, Our customer is planning to migrate their real-time code from an industrial PC to the ctrlX platform. The code is written in C and consists of a series of services managed by a task manager. In the Real-Time SDK, I only find examples related to C++. Is it possible to use C, particularly to interface with the ctrlX scheduler? Thank you in advance!
    4
    11/21/2024
  • Unauthorized Requests with Python Runtime librairies

    Hi, I'm trying to use the Python runtime libraries in the IDE app, but I'm encountering an "Unauthorized request" error. The documentation doesn't mention the token authorization, and I couldn't find any posts about it. Do i have to manage it in my code ? Thank you for your assistance.
    2
    11/19/2024
  • Execute a Python script from any directory.

    Hi everyone, I was experimenting with the Python runtime app and discovered that I can only run my script from the main folder activeConfiguration located at /var/snap/rexrothautomationcore/common/solutions/activeConfiguration. Even after setting all the necessary permissions for the folder and the script, it still only works from this specific directory. Is this due to security restrictions, or am I missing something? I don't want to clutter the main folder with multiple Python files. Thank you
    5
    11/12/2024
  • Data exchange between two ctrlX Apps

    Hi, we are facing the challenge of designing the data exchange between two apps to be as performant as possible. The typical amount of data that needs to be exchanged per cycle is 30-60 Mb We are planning for 400-800 cycles per hour We would like to learn more about the methods you would recommend for exchanging data between apps. What are the advantages and disadvantages of the different approaches? We found the following recommendation for the exchange via the file system:"The app must not write diagnostics or similar data cyclically to the internal solid-state memory, as this will damage the flash cells." https://boschrexroth.github.io/ctrlx-automation-sdk/appdevguide.html#622-integrated-storageflash-lifetimeWill this recommendation change in the case that a IPC with ctrlX will be used? Its sounds very specific for ctrlX CORE hardware. If the exchange with via the files system is viable, is there an example that shows using plugs and slots to define a shared directory for two apps to use? Consider that these two apps may not be made by the same company, they may be not built at the same time. We also found an cpp example for the exchange via Datalayer shared memory, is this example also available in other programming languages?
    9
    11/06/2024
  • Rest API Subscription

    Hello @CodeShepherd Hello all we have been trying to get the complex subscription working, following the guide. but im able to create the complex subscribe node where i get the code 201 but if i then try to execute a get like the examplei get nothing back. Thanks for you help With kind regards, David Maenen with kinde regards, David
    10
    10/29/2024
  • Rest api state change after motion

    Hello all, we are sending a axis command/ kinematic command using the Rest API, it executes the command thats not the problem. The problem is that we dont know when this movement is done, unless we execute a get reqeust for a state change. Is there a better way then executing a get request every cycle using some sort of scheduler so the bus dousnt get overloaded with unnecessary reqeust ? We are open for suggestions if there is a better way to do this.
    3
    10/22/2024
  • Unable to locate package ctrlx-datalayer SDK2.6

    setting a new enviroment for SDK 2.6. i am having this error when executing the script. ctrlx-automation-sdk/scripts/install-ctrlx-datalayer.sh ctrlx-automation-sdk/deb any suggestions will be appreciated
    3
    10/21/2024
  • REST-API get-request - Error: truncated response

    Hello community, I'm working on a python project which needs the configuration data of a solution so I tried receiving it via get-request in the REST-API on my virtual core. The requests seems to work and it responds with a 200 code however I get an error message saying the "message is truncated" instead of the content. Getting a bearer Token via POST-Request works though and I also tried to request it with the same data via the ctrlX OS and Postman. Both work fine and I get the full JSON-Data. Does anyone know what the problem is and how I can fix it? Thanks in advance! Heres the code and its output: head = {"accept": "application/json", 'Authorization': 'Bearer {}'.format(token)} url = 'https://10.0.2.2:8443/solutions/api/v1/solutions/DefaultSolution/configurations' with requests.get(url, headers=head, verify=False) as response: data = json.loads(response.text) print(response.json()) print(data) print(response.status_code) print(response.text) 2024-10-18T08:40:07Z sdk-py-webserver[24635]: - (error decoding original message: message key "MESSAGE" truncated) 2024-10-18T08:40:07Z sdk-py-webserver[24635]: - (error decoding original message: message key "MESSAGE" truncated) 2024-10-18T08:40:07Z sdk-py-webserver[24635]: 200 2024-10-18T08:40:07Z sdk-py-webserver[24635]: - (error decoding original message: message key "MESSAGE" truncated)
    2
    10/18/2024
  • Run pytorch ML model using ONNX on virtual core

    Hello, I tried to run a Pytorch ML model on the virtual core. Therefore I followed the instructions described in this community example LINK The model runs perfectly fine in Debug mode but when I build the snap and install it on the virtual core it does not work anymore. Does somebondy have an idea what might be the problem here? Thanks in advance 🙂
    2
    10/17/2024
  • Provide SSL certificates to APPs

    Hi all, I am in the last steps of finishing a first version of our Apache IoTDB App for CltrX. Currently working on tying up some loose ends. One of them being that I want to enable HTTPS for our app. For this we could install a self-signed certificate, which would make things a bit more difficult for our users. Alternatively we could install a real certificate, however this would expire, rendering the application useless. On normal systems I'd say that's ok, but knowing that quite often in the automation-world systems stay in operation untouched a lot longer than an IT guy feels comfortable with, I guess that's not an option. Yet another option would be something like Let'sEncrypt, but I really hope there are no PLCs out there that are allowed to be actively reached from the internet. One last option would be to use a certificate provided to the application and I know the CtrlX settings allow managing these certificates. Do you have any pointers on how to provide such external certificates to apps?
    1
    10/17/2024
  • Axis AxsJogIncr command

    Hello all, I have been trying to jog the motors via the sdk. i have the x axis in the status standstill. So if i read the docummentation correctly its now ready to recieve move commands. The problem is that i dont know how i need to declare and implement the axisjogcmd. This is done true the axis commands not the kinematic group. I added the code below. It gives a error about MotionResult not being declared. Thanks in advance #include <functional> #include <thread> #include <limits> #include "ctrlx_datalayer_helper.h" #include "datalayerclient.h" #include <stdio.h> #include <iostream> using namespace std; static void printStringList(comm::datalayer::Variant& data) { if (data.getType() == comm::datalayer::VariantType::ARRAY_OF_STRING) { std::cout << "Node List: "; const char** strArray = data; for (uint32_t i = 0; i < data.getCount(); i++) { std::cout << strArray[i] << " "; } std::cout << std::endl; } } static void printMetadata(comm::datalayer::Variant& data) { if (STATUS_FAILED(data.verifyFlatbuffers(comm::datalayer::VerifyMetadataBuffer))) { std::cout << "Invalid Flatbuffer: Not a MetadataBuffer"; return; } auto metadata = comm::datalayer::GetMetadata(data.getData()); std::cout << metadata->displayName()->c_str() << std::endl; std::cout << metadata->displayFormat() << std::endl; std::cout << metadata->description()->c_str() << std::endl; std::cout << metadata->descriptionUrl()->c_str() << std::endl; auto operations = metadata->operations(); std::cout << "AllowedOperations: read=" << operations->read() << " write:" << operations->write() << " create:" << operations->create() << " delete:" << operations->delete_() << std::endl; auto references = metadata->references(); for (flatbuffers::uoffset_t i = 0; i < references->size(); i++) { std::cout << references->Get(i)->type()->c_str() << std::endl; std::cout << references->Get(i)->targetAddress()->c_str() << std::endl; } } DataLayerClient::DataLayerClient(const std::string& ip, const std::string& user, const std::string& password, int sslPort) : m_ip(ip) , m_user(user) , m_password(password) , m_sslPort(sslPort) , m_client(nullptr) {} bool DataLayerClient::start() { std::cout << "m_datalayer.start(..)" << std::endl; m_datalayerSystem.start(false); m_client = getClient(m_datalayerSystem, m_ip, m_user, m_password, m_sslPort); return m_client != nullptr && m_client->isConnected(); } comm::datalayer::IClient::ResponseCallback DataLayerClient::responseCallback() { // [&] All needed symbols are provided per reference // (...) Parameter provided by the calling site return [&](comm::datalayer::DlResult result, const comm::datalayer::Variant* data) { m_resultAsync = result; if (data != nullptr) { // data must not be nullptr otherwise the '=' operator crashes m_dataAsync = *data; if (m_dataAsync.getType() == comm::datalayer::VariantType::ARRAY_OF_STRING) { printStringList(m_dataAsync); } } std::cout << "ResponseCallback: " << std::string(result.toString()) << std::endl; }; } bool DataLayerClient::waitForResponseCallback(int counter) { for (;;) { if (counter > 0) { counter--; if (counter <= 0) { return false; } } //sleep(1); if (m_resultAsync != -1) { std::cout << "ResponseCallback finished: " << m_resultAsync.toString() << std::endl; return true; } } } void DataLayerClient::ping() { std::cout << "ping" << std::endl; m_result = m_client->pingSync(); std::cout << "m_client->pingSync() " << m_result.toString() << std::endl; m_resultAsync = -1; m_result = m_client->pingAsync(responseCallback()); waitForResponseCallback(10); } //"fieldbuses/ethercat/master/instances/ethercatmaster/realtime_data/input/data/ctrlX_DRIVE_XCS_SoE_X/AT.Position_feedback_value_1" void DataLayerClient::readSync(const std::string& node) { std::string address = node; m_result = m_client->readSync(address, &m_data); // std::cout << ("readSync() " + address) << endl; cout << int32_t(m_data) << endl; } void DataLayerClient::writeSync(const std::string& node) { auto address = "motion/kin/Kinematics/cmd/group-ena"; m_result = m_client->writeSync(address, &m_data); cout << m_result.toString() << endl; } void DataLayerClient::write() { m_data.setValue(true); writeSync("bool8"); m_data.setValue(-0.123456789f); writeSync("float32"); m_data.setValue(-0.987654321); writeSync("float64"); m_data.setValue((int8_t)-127); writeSync("int8"); m_data.setValue((int16_t)-32767); writeSync("int16"); m_data.setValue((int32_t)0x80000001); writeSync("int32"); m_data.setValue((int64_t)0x8000000000000001); writeSync("int64"); m_data.setValue("Changed by cpp ctrlX Data Layer Client"); writeSync("string"); } void DataLayerClient::createSync(const std::string& node) { std::string address = node; m_client->removeSync(address); // First remove - may be node exists m_result = m_client->createSync(address, &m_data); cout << m_result.toString() << endl; } void DataLayerClient::stop() { delete m_client; m_client = nullptr; } int main() { // builds object DataLayerClient test; // starts tcp test.start(); //payload definition int p; // ping ctrl x core test.ping(); //set power to true test.m_data.setValue(true); test.createSync("motion/axs/X/cmd/power"); // this is the command responsible for jog the x axis virtual MotionResult axsPosCmd(const cmd::DataLayerClient::CmdSourceInfo & sourceInfo, const char* x, cmd::axs::AxsCmdType AXS_CMD_POS_ABS, double 400, const cmd::DynamicLimitsT & dynLim, bool true, uint64_t & cmdID) const = 0; for ( p = 0; p < 100; p++) { //cout << p << endl; //read out x encoder 100 times test.readSync("fieldbuses/ethercat/master/instances/ethercatmaster/realtime_data/input/data/ctrlX_DRIVE_XCS_SoE_X/AT.Position_feedback_value_1"); } //set power to false //test.m_data.setValue(false); //test.createSync("motion/axs/X/cmd/power"); //test.stop(); } With kinde regards, David
    7
    10/09/2024
  • nickH

    Wago Test forwarding a forum post

    I have a problem related to my WAGO Edge Controller with ctrlX OS.
    1
    09/30/2024
  • Python Snap with Flask and Gunicorn

    Hello, I´m trying to test an app with Python and Flask and Gunicorn as wsgi. If I configure Gunicorn to bind the address with port (0.0.0.0:5001), I can access the address http://<ipaddres>:5001. If I try Gunicorn binding to unix socket and bind the proxy of package manifest as below. Monitoring the snap service, gunicorn is generating the sock file. The snap is like below. Does anyone have any idea about what can be the problem?
    8
    09/25/2024
  • Troubleshooting Inconsistent Response Times in EtherCAT Sensor Communication Using Byte Arrays

    I have a project with a sensor that is connected via EtherCat. In general it works like this: You send a request to the sensor and it responds. I use the EtherCat app to do this and send a request to Transmit_data.Value and get a response via Receive_data.Value. The problem is that the two nodes are of the byte array type and this is not displayed properly in the data layer, which is why I had to think outside the box: getMemoryMap reads the MemoryMap and writeByteArray overwrites the Transmit_data.Value node I then created two nodes, one to request the name of the sensor with a bool and one node for the output. When the node is triggered, the function handleTransmitReadDeviceName is called which then overwrites the Transmit_data.Value with the corresponding byte array and then executes the handshake(processNodes). In the processAndWriteToNodes function, the response of the sensor and the expected byte sequence is compared and if this matches, the output node I created is overwritten. The function runs permanently This all works pretty well, but I have a problem: A time waster must have crept in somewhere during the output process, but I can't find it. The output process usually takes 3-4 seconds on average, but sometimes within milliseconds. How could I approach this problem Thanks in advance
    4
    09/23/2024
  • Active Solution Access

    Hello, I´m doing some tests with SDK cersion 2.6.7 and CtrlX Works 2.6.3 AppBuildEnvironment. I would like to use Python and access files generated by Node-red or by the PLC app. I would expect to get access to the path '/var/snap/<myapp>/current/solutions/activeConfiguration/node-RED/<file_to_be_used>' but I can´t access, even creating the plug to solutions in my snapcraft.yaml file and changing the package_manifest file to create the directory of my app. Even if I snap the "appdata" sample from github, I can´t see the app solution directory.
    2
    09/20/2024
  • Overview using a bearertoken

    Hi guys, am developing a snap which is basically a webapp serving some files and getting protected using the jwt... at some point my menu.sidebar looks like this: "menus": { "sidebar": [ { "id": "my-id", "title": "Title1", "icon": "my-icon", "link": "/my-id?token=${bearertoken}", "permissions": [...] } ]... and so far this is working fine since my link is getting created dynamically replacing the 'bearertoken' place-holder with the 'jwt' but then I decided to add also an "overview" using the same approach but in this case then the link is getting invalid since the replacement is not working, this is how my json looks like: "overview": [ { "id": "my-id-overview", "title": "Title overview", "icon": "my-icon", "link": "/my-id/token=${bearertoken}", "permissions": [...] },... this is resulting in an URL like: https://<foo>/<bar>?token=${bearertoken} am I using the feature incorrectly? or there is another way to do it? Thanks in advance Best regards José
    4
    09/19/2024
  • Python motion library

    Hi, I would like to use the motion python library from this documentation, but i couldnt find any examples in the sdk . Is there somewhere I can find something to help me? I guess it doesn't work like this: Thanks for any answers !
    3
    09/05/2024
  • nickH

    Nodes do not show up after restart of Data Layer provider

    I have a Data Layer Provider in .Net (similar to the SDK samples) running in my App Build Environment. I connect the provider via TCP to a Data Layer on a ctrlX CORE. When I terminate and restart the debugging of the provider the Nodes do not appear in the Data Layer again. Although I get "DL_OK" as a result for provider.registerNode().
    2
    08/08/2024
  • Qt Application with VS code

    Has anyone here ever tried to get Qt applications onto the ctrlX built with VS code? I just checked that I could try Qt applications locally in vs code. That worked quite well. All you have to do is install Qt and point out where the libraries can be found in CMake. I let mingw_64 compile it. Since I need aarch64-linux-gnu-g++ as a compiler to build apps, I have to change the compiler somehow. But it's not that easy because you can't set it up when installing Qt. Has anyone had experience with this and could possibly give me some input?
    4
    08/05/2024
  • Increasing Timeout and resolving Type Mismatch in Data Storage App

    I am currently working on an app that should be able to do the following: It should be able to store data over a user-selected period of time. - You need to specify the node you want to save. - You need to specify the mount point of the USB device. - The period you want (in seconds). - And the interval at which a value should be saved during that period. So far, it works quite well, however, I keep getting the following error message in the node: Method failed - Error: 408 DL_TIMEOUT original error: DL_TIMEOUT and Method failed - Error: 400 DL_TYPE_MISMATCH Can't read type Information Despite the error messages, the saving function works, but then the app crashes and has to be restarted. My specific question is how I can increase the timeout and why I am getting a mismatch error. Below you will find the important files. And a few screenshots of what I have already tried: here you can see the mismatch error timeout error but if i chose 2 seconds for period it works I guees the reason is in node: types/webserver/settings the default is at 3000 ms, is there a possibilty to change the default? i also tried to change the value in callable-timeout settings In the logbook you can see that my code works in manipulating the timeout; it says: Timeout value for the method sdk/usb/history successfully changed at 24000 ms I tried to set the timeout based on the period and interval and finally you can see that it somehow worked Maybe someone with similar problems could help me out. Thanks in advance
    4
    07/16/2024
  • RT-samples in com.boschrexroth.sdk.control.rt-2.6.0 causes the automationcore process to restart

    I downloaded com.boschrexroth.sdk.control.rt-2.6.0.zip and compiled the scheduler and dl-shm-owner examples from samples-cpp for testing. Both examples cause the entire rexroth-automation-frame process to restart during the first startup loading process. They only work correctly on the second load. The first run shows "Stopping Service for snap application rexroth-automationcore.control" after registering the component sdk_rt::ShmOwner. After the rexroth-automationcore.control service restarts, the second load is successful. The issue has been occured on both the Virtual 2.6.4 system in CtrlX Works and the 2.6 system on the CtrlX-X7. Attached is the complete log information I obtained from "snap logs -f rexroth-automationcore."
    7
    07/11/2024
  • IDE additional extensions

    Is it possible to add additional 3rd party extensions to the IDE visual coding app?
    1
    06/27/2024
  • C++ web server library with https reverse proxy support

    Hi everyone, What C++ library do you use for Webserver? Sicne CtrlX required to use proxy_mapping to route https to http or unix domain socket. I have tested with cpp-httplib and crow, but none of them work. (HTTPS Proxy support · Issue #658 · yhirose/cpp-httplib (github.com)) I was considering to try Qt or Boost beast, but they are all bit more complicated, so I am concerned about whether I really should spend time on these.
    3
    06/17/2024
  • upload customized json schema for configuration

    Hi everyone, I would like to enable user to get auto complete while editing the json configuration file. How can I do that? It looks like intelliJ is already running with some json schema. Is there any way to upload json schema file that IntelliJ can use the schema for auto complete? If it is possible to to set $schema using the addresses under "types" in datalayer? I tried to add "$schema": "setting.schema.json" doens't work, since it is interpreted as inmemory://model/settings.schema.json
    3
    06/17/2024
  • Built snap fails on CORE but runs on localhost

    Hello everyone, we want to build our own first SNAP. However, we are currently facing issues. When I execute the code inside the suitable environment, it is working OK. When I build the snap and install it on a virtual ctrlX CORE V2.4, I receive the following information via ssh: 2024-06-13T16:41:33Z systemd[1]: Started Service for snap application lincap.webserver. 2024-06-13T16:41:33Z lincap.webserver[10257]: /snap/lincap/x2/bin/main.py: 1: from: not found 2024-06-13T16:41:33Z lincap.webserver[10257]: /snap/lincap/x2/bin/main.py: 2: from: not found 2024-06-13T16:41:33Z lincap.webserver[10257]: /snap/lincap/x2/bin/main.py: 3: from: not found : not found16:41:33Z lincap.webserver[10257]: /snap/lincap/x2/bin/main.py: 4: : not found16:41:33Z lincap.webserver[10257]: /snap/lincap/x2/bin/main.py: 5: 2024-06-13T16:41:33Z lincap.webserver[10257]: /snap/lincap/x2/bin/main.py: 10: Syntax error: "(" unexpected (expecting "then") 2024-06-13T16:41:33Z systemd[1]: snap.lincap.webserver.service: Main process exited, code=exited, status=2/INVALIDARGUMENT 2024-06-13T16:41:33Z systemd[1]: snap.lincap.webserver.service: Failed with result 'exit-code'. 2024-06-13T16:41:42Z systemd[1]: Stopped Service for snap application lincap.webserver. In these lines 1-3 I try to import from a local package from src.xmlrpc_server import XmlRpcServer from src.servos import Servo from src.control_functions import ControlFunctions Although I included the packages into the setup.py, they are not recognized. Maybe someone has a hint, thanks a lot! from setuptools import setup setup( name='appname', version='1.1.0', description='description', author='me', packages=['app', 'appdata', 'motion.core.fbtypes', 'robot.core.fbtypes', 'src', 'src.rtde'], #src.rtde is used by python script inside the folder src install_requires=['flask', 'ctrlx-datalayer', 'ctrlx-fbs', 'pyopenssl'], package_data={}, scripts=['main.py', 'datalayerProvider.py', 'fbsFunction.py'], license='Copyright (c) 2024' ) Here is the folder structure: my_project/ ├── snap/ │ └── snapcraft.yaml ├── main.py ├── src/ │ ├── __init__.py │ ├── module1.py │ ├── module2.py │ ├── rtde/ │ │ ├── __init__.py │ │ ├── submodule1.py │ │ └── submodule2.py ├── app/ │ ├── __init__.py ├── appdata/ │ ├── __init__.py ├── motion/ │ ├── core/ │ │ ├── __init__.py │ │ ├── fbtypes.py ├── robot/ │ ├── core/ │ │ ├── __init__.py │ │ ├── fbtypes.py └── setup.py
    6
    06/13/2024
  • Port forwarding for UDP in App Build Environment

    I'm developing an App with UDP communication. But I had trouble getting the communication running, even though I've entered the port number in the "Port forwarding" field. Then, I've found out that CtrlX WORKS is assuming tcp, which leads to the following line in the "start.bat" file of the app build environment: call launch.bat amd64 noproxy "hostfwd=tcp::11022-:22,hostfwd=tcp::16110-:6110" Testbuilder whpx:tcg When I manually changed it to "udp" and started the environment manually via "start.bat", my communication worked. call launch.bat amd64 noproxy "hostfwd=tcp::11022-:22,hostfwd=udp::16110-:6110" Testbuilder whpx:tcg Unfortunately, on every start via CtrlX Works, this line is set back to "tcp". Is there a way to define port forwarding for "upd" in the app build environment properties in CtrlX WORKS?
    3
    06/12/2024
  • How to use persistent data in c++

    In my c++ application, I have some data (array of uint8) that I need to store in the retain memory (NVRAM). This data is updated every program cycle (every 5..10 ms). On power-off and restart of the ctrlX, the data should be read from the retain memory. Currently, I'm not sure how to do this properly. I assume that I have to use the data layer for this. But do I just create a node for it as a data layer client or do I have to use RT access to the data layer? None of this worked yet in my test program. Is there a code example somewhere?
    14
    06/12/2024
  • Problem with pyusb- libusb backend not found

    I wanted to play around with the pyusb library, but I have the impression that the library is not fully recognized. I created a node and wanted the node to display a list of the current USB devices. However, the problem seems to be in the backend I've already searched the forum and tried a few things, but I still can't get the problem resolved. Was looking were the library is However he cant find it while snapping Here you can see that the problem is the backend Here is my code Snapcraft(maybe here is my fault) Best regards
    2
    06/10/2024
  • Provide methods to Data Layer via Python

    Hi Nick, I just started working with the SDK and I also wanted to take a closer look at registering methods and providing API in the Data Layer. I'm currently only working with Python and can't quite get the sample converted. I was wondering if anyone has managed to get the sample that exists in cpp into Python. If it helps, I can upload my entire project to diagnose the exact source of the error Best regards
    1
    06/03/2024
  • what is the ip address of qemu vm from the windows side?

    I want to ping the qemu vm from windows, could any expert tell me what is the ip address ?
    1
    05/25/2024
  • Resolving Missing Libraries Issue with core20 Base in Snapcraft for ctrlX SDK

    Hi everyone, I have this problem that occurs when I am snapping samples from the SDK. The snap process works, but I always get the message about missing libraries -libcrypto.so.3 -libssl.so.3 (see screenshot). As a result, the snap does not work after installation in ctrlX virtual. Could it be because I changed the base in snapcraft.yaml to core20 (I need base core20 for my project) and this causes complications? How can I solve this problem? Best Regards
    7
    05/13/2024
  • RealTime Scheduler Watchdog Error

    I'm using the scheduler rt example as a basis for my program and in this moment I have one cycle running with 2ms cycle time in this part of the code: In addiction to this, I have another cycle (non real time) running in the finalStateMachine. When the state is on SCHED_OPERATING, my cycle runs. So far so good and the code runs well. My problem is that when I add more code to this part (non real time), some cycles to read info (readsync) and process information, my RealTime cycle is affected and take more time to complete (more than 2ms). It's supposed the non real time affects the real time process? Or could I be doing something wrong?
    3
    05/10/2024
  • Docker snap installed, but not showing up in the Container Engine app

    Hi, I've got a snap docker snap installed on a virtual-ctrlx-core (amd64) I followed the example here described here by @Sgilk https://github.com/S-Gilk/ctrlX-Docker-Ignition ctrlx-docker-ignition seems to be installed on "my virtual-ctrlx-core", but : localhost:9088 doesn't return anything in the web browser and the app is not showing up in the Container Engine app port forwarding is enabled : on ctrlX virtual settings in CtrlxWorks and on ctrlX CORE network adapter to access the webserver externally Any idea ? Thanks in advance
    2
    05/08/2024
  • a value of type "Provider *" cannot be assigned to an entity of type "Provider *"

    Hello everyone, Following this topic, i have another error that I don't find solution. What I'm missing?
    3
    04/30/2024