Search talk: open

 
<< < 1 .. 8 9 10 11 > >> (Page 10 of 11)

Post by damian177 on Codesys V3.5 + Pixtend v1.3 + RaspberryPi CODESYS Forge talk (Post)
Hi, I use Pixtend v1.3 with my RaspberryPi with Codesys V3.5 SP15 Patch1. Actually in my project I used two packages: - CODESYS Contro for Raspberry PI 3.5.15.10 - PiXtend for CODESYS 1.3.8.0 Now I would like to extend my project about the IIot Libraries SL package, I installed them. Next I added SMS_Service_SL 1.0.0.8 version library and I have problem with compile my project because I get error: [ERROR] PiXtend_DemoProject_q: Library Manager [Device: PLC Logic: Application]: Could not open library '#CAADTUtil'. (Reason: The placeholder library 'CAADTUtil' could not be resolved.) Any have idea what can I do to properly add SMS library to my project?
Last updated: 2023-09-26

Post by ofey on Modbus TCP communication CODESYS Forge talk (Post)
Hi! I tried setting up the PLC I'm working with (Beijer GN-9373) to connect to a modbus master running on a laptop. I have an ethernet connection (via USB-C to ethernet) between the laptop and the controller. I have tried following tutorial on how to set this up. I have added an ethernet device with the IP-address of the PLC. Further I added a ModbusTCP_Slave_Device with default settings. I get the error "Failed to open TCP Port: 1" when I try to go online with the PLC. Earlier I tested the exact same set up with the soft PLC from codesys. I can then read/write values correctly with the Modbus master i have running on the laptop. Hope anybody can help me with this, thanks in advance!
Last updated: 2023-10-06

Post by dhumphries on install codesys runtime on linux CODESYS Forge talk (Post)
I'm running the 3.5.18.20 IDE, installed the control for linux SL package from the installer. Following the directions here: https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_install_runtime_on_controller.html it says: Installing the runtime package with CODESYS on the Linux device Click Tools → Update CODESYS Control for <device> SL.</device> I don't have the update option in my tools menu. I've tried it without opening a project, as well as with a project open that uses the control for linux SL as a device. I have found the update device option by right clicking on the device in the device tree, but this only lets me change the device the project is using not load the runtime on the linux computer. Is there an updated instruction somewhere, or do I need to do some further preparation like install additional packages?
Last updated: 2023-11-04

Post by i-campbell on What does CODESYS expect to do when I get such an error message CODESYS Forge talk (Post)
you need to get the addons that the person that programmed it used. I always store an .installation-config file alongside the project. If you have lost that, then it gets a bit of a headache: I think even with SP18 you can hit yes to open it anyway, and it will suggest which addons it thinks are missing, if you double click the yellow "missing-addons" in the status bar. If you know you have the right addons, you can do a "Save As.." and it will write your current addon list to the file, and you wont get the error next time.
Last updated: 2024-01-08

Post by wiresplus on How to Connect / Go Online without re-downloading the project CODESYS Forge talk (Post)
Hello, I have a PLC in a remote location. I can connect to it, but when I use a different PC, it asks me to re-download to the PLC - which will a) interrupt production and b) cause version issues. Codesys being open-source, if someone else has made changes, I need to be able to connect, upload the current project, compare it with mine and then decide what next. Every time I connect, it says Warning: An application 'Application' is currently in RUN mode on the PLC. As there is no matching compile information, this existing application needs to be replaced. Click 'Yes' to download the latest code or 'No' to abort. What am I doing wrong?
Last updated: 2024-04-13

Post by installwhat on C0077 on one machine but not another CODESYS Forge talk (Post)
I have a version of codesys 3.5.16 on my local machine and a vm. The local machine has loads of codesys versions and libraries installed etc. I can open the FPosCR_Example_Project_SP16_patch1 project on my vm without any errors. On the local machine I get the error C0077: unknown type IoDrvEthercatLib.ETC_CO_SdoWrite. I can, on the local machine, declare a var of type IoDrvEthercatLib.ETC_CO_SdoWrite and include it in the code without adding an extra error. The problem only seems to affect the library. This is seems more an issue with my codesys set up rather than something with festo. I would like to know the possible causes. I understand most of the library manager features but it's not clear how to find the cause. Thanks
Last updated: 2024-06-11

Post by ron-rp on Errors with VisuUserManagement library CODESYS Forge talk (Post)
Hi all, I've played a bit with the VisuUserManagement library, and some other security option in my project, and I started getting this error when logging in - see attached pic. something to do with a specific screen in the library - VUM_Login. Also, Codesys started to ask me to log in to the library when logging in, asking to log in as user of the groups Maintainer or Owner, which I dont know either users (attached pic). when I close the login screen and try to log in to the PLC again, everything works again until I close and open Codesys. I do use user and password to login to the PLC, and this login screen is fine I know the user and pass I setup. anyone know what did I do wrong here and how to fix it?
Last updated: 2024-06-25

Post by abrarsk on SysCom Library Usage CODESYS Forge talk (Post)
Hello all, I am facing issues with using SysCom library. With SysCom23 library things were simple but since we are migrating to 64bit systems, I am writing a Porting program. With SysCom23, opening the comport was as simple as providing the ComPort no. which returns the Handle as a DWORD. dwHandle:=SysComOpen(Port); But the new library is a bit different. It is asking for 2 input parameters to open the Com Port - Port Number and POINTER to RTS_IEC_RESULT IF hCom = 0 THEN hCom := SysComOpen(ComSettings.sPort, ADR(pResult)); How should I use the RTS_IEC_Result? I can find RTS_IEC-REUSLT under SysType2Interfaces of SysCom library. Also, can someone give me a general understanding of this RTS_IEC_REULT and RTS_IEC_HANDLE, etc.?
Last updated: 2024-08-05

Post by wbj0t on Raspberry Pi CM4. CoDeSyS files corrupted after hard reset. CODESYS Forge talk (Post)
Hello everyone. Raspberry Pi CM4 after some 1 week of work was hard reset mannualy several times and after these hard resets User Management file was missed (when click login button, enter login/password, error: User Management File missed). Also programm can not open file via SysFile library, but this file exists and size of him is 0 bytes, but must be more any way (I keep some kind of archive via this lib). What happens, how files corrupted? Where do I need try to find this error of the codesys or system whole? In the log files of codesys nothing interesting about this happens. Thanks for reading Is this enough hold PlcLogic and SysFileMap.cfg as reserve copy in another place for restoring the programm? And how automate restoring actions if programm files corrupted?
Last updated: 2024-09-16

Post by ricola on Change default node Id name on Raspberry Pi CODESYS Forge talk (Post)
EDIT : https://forge.codesys.com/forge/talk/Engineering/thread/cb5a492aa0/ hyplcmotion - 2022-12-16 Found out how! Needed to connect to PFC200 via Putty, and open CodesysControl.cfg with “sudo nano /etc/CODESYSControl.cfg”. Then adding following command to the end of file, and use the name you want, save/close CODESYSControl.cfg, and reboot your PLC. [CmpOPCUAProviderIecVarAccess] CustomNodeName= PFC200 Hi! , I'm digging up this issue cause we have still this long name within current versions on CodesysControl. Is it a lock for "demo" licences or can it be changed in some way ? This DeviceSet name is too way long with spaces inside, not easy to handle with string parsing... Cheers !
Last updated: 2024-10-10

Post by spoun on Problem with edge gateway config mode CODESYS Forge talk (Post)
Hello, i want to connect my automation server and i follow the steps as desribed in the video series(https://www.youtube.com/watch?v=iiPKyyO4M00&list=PLaws15OZmd7Uu2W23zX2w424aI3TrOfHf) and also that guide (https://content.helpme-codesys.com/en/CODESYS%20Automation%20Server/_cas_add_plc_to_server.html). When i go to "Allow Edge Gateway configuration.." from the Codesys gateway Systray running i get the message in the attached picture, so i open the Gateway.cgf but the file doesn't contain an cmpedgegateway section as mentioned in the message. I have installed all the latest versions codesys and of the components mentioned in the guides. How can i solve that problem?
Last updated: 2024-10-21

Post by dsa28 on OPC UA subscriber not operational CODESYS Forge talk (Post)
Hello All, Hopefully I can get some help configuring an OPC UA subscriber in a CODESYS runtime in a Raspberry Pi 5 that tries to retrieve data from an OPC UA publisher (in this case running in a TwinCAT system). I tried to follow the steps described in the page to implement the OPC UA subscriber: https://content.helpme-codesys.com/en/CODESYS%20Examples/_ex_opcua_pubsub.html Seems that the example provided was created with version 3.5.16.0. Now with version 3.5.20.20 is not possible to open the complete project neither convert it. Anyway, after configuring all IPs and ports used in the OPC UA connection function block but the connection state always shows DISABLED. Can someone help me to do the proper configuration of the OPC UA subscriber? Many thanks in advance.
Last updated: 2024-10-22

Post by wistaro on How to use PLC_Open FBs with PROFINET servodrive (PROFIdrive layer) CODESYS Forge talk (Post)
Hello, I would like to know if there is a PROFIdrive layer in CODESYS. I am already familliar with Codesys's SoftMotion on CANOpen/EtherCAT (to control PLC Open FBs), and I need the same kind of stuff for PROFINET-IO devices; In my configuration, I have a CIFX board from Hischer to enable IRT, the SoftPLC "Codesys Control RTE V3 x64", and a servo-drive from INFRANOR that implements PROFINET / PROFIdrive (with IRT) protocol. This drive works well with the Object Technology of Tia Portal, but some customers use Codesys. Do you have an idea how to do that? Thanks in advance. Regards, William ROMIGUIERES INFRANOR France
Last updated: 2024-10-29

Post by rkohser on Scripted Git clone / checkout being blocked by "Project Environment" popup CODESYS Forge talk (Post)
Hi, I am trying to build a CI/CD pipeline around our codesys projects. The only entry point if the git url and branch, as we do not put our project file under source control, so we needed to find a way to git clone from the python scripting engine. This is currently how we do this : system.commands["Git", "Clone"].execute( "ProjectLocation=" + project_dir, "ProjectName=" + project_file_name, "RemoteUrl=" + project_git_remote_url, "GitProjectStoragePath=" + project_git_local_dir, ) system.commands["Git", "Checkout", "Branch"].execute( "PrimaryProjectHandle=0", "BranchName=origin/" + project_git_branch ) This works fine, except that, depending on the environment and the project, the "Project Environment" popup gets displayed to suggest for some updates, and waits for a user interaction, even with the "--noUI" flag injected as parameter. I investigated the VersionUpdateFlags, but the problem is that the git clone is an atomic operation that clones and directly opens the generated project without the possibility to inject any updateFlags argument (only used in the ScripProjects.open() function. I also tried to simulate some keyboard events acknowledge the window from script but I did not find the right location for the SendKeys statement, I think before the git clone call is too early and after is too late. So I am wondering if there would be some other way to do that. Is there some more proper scripting api for the git add on ? Is there a global configuration of the VersionUpdateFlags that would allow the popup to be disabled outside from any project context ? Is there some way to automatically acknowledge this kind of messages in a "--noUI" mode ? What do you suggest ? Thanks for your help, Roland Edit : I managed to solve my problem by following these steps in my pipeline : - create a template of a project and opt file preconfigured not to open the popup - open this project - initialize an empty git repo - add the remote, fetch and checkout the needed branch -> no popup is displayed, hourra Edit2 : The initial question was raised on a CODESYS V3.5 SP18 Patch 2 profile. Since CODESYS 3.5.19.30 a scripting API is available for Codesys Git that allows cloning a project with the support of VersionUpdateFlags https://content.helpme-codesys.com/en/CODESYS%20Git/_git_using_scripting.html
Last updated: 2024-01-19

Post by timvh on VisuElems.CurrentUserGroupId is not stable CODESYS Forge talk (Post)
I'm not sure what you are trying to do, but getting the CurrentUserGroupID like this will not work, because there could be multiple Visualization Clients and each can have a different user that is logged in. Also when you go online with CODESYS and open an Visualization, this is counted as a client. Probably this is the reason you see it changing. What you can to is "iterate" over all clients and then see which user is logged in on which visualization Client. For this you need to add the Visu Utils library to the project and call the FbIterateClients. See https://content.helpme-codesys.com/en/libs/Visu%20Utils/4.4.0.0/VisuUtils/VisuActionUtilities/Function-Blocks/FbIterateClients.html fbClientIteration( xExecute := x_Execute, itfClientFilter := VU.Globals.AllClients, itfIterationCallback := fbIterator, xDone => x_Done, xBusy => x_Busy, xError => x_Error, eError => e_Error); The fbIterator, in the example above, should be an instance of an FB which you have created yourself and this must implement VU.IVisualizationClientIteration. For example: FUNCTION_BLOCK FB_ITERATOR IMPLEMENTS VU.IVisualizationClientIteration Then automatically the corresponding methods will be called. In the HandleClient Method, you will get an interface to the client(s) and then you can get the current user through this interface: itfClient.UserGroupId You can also get the UserName: itfClient.UserName
Last updated: 2023-11-14

Post by open on How to create a stopwatch? CODESYS Forge talk (Post)
Hi @ph0010421, I tried the program the TimeTaken is calculated when stop is triggered. I want the TimeTaken to be continuously calculated and counting when a BOOL variable is true. I tried to program this way: Declaration: PROGRAM PLC_PRG VAR bStartStop: BOOL := FALSE; // Start/Stop button bReset: BOOL := FALSE; // Reset button bRunning: BOOL := FALSE; // Flag indicating whether the stopwatch is running tStartTime: TIME; // Variable to store the start time tElapsedTime: TIME; // Variable to store the elapsed time END_VAR Implementation: // Main program logic IF bReset THEN // Reset button pressed, reset the stopwatch bRunning := FALSE; tElapsedTime := T#0s; ELSIF bStartStop THEN // Start/Stop button pressed, toggle the running state IF bRunning THEN // Stop the stopwatch bRunning := FALSE; ELSE // Start the stopwatch bRunning := TRUE; tStartTime := tElapsedTime; END_IF; END_IF // Update the elapsed time when the stopwatch is running IF bRunning THEN tElapsedTime := tElapsedTime + T#1s; // Adjust the time increment as needed END_IF However counting of the seconds is not accurate. I tried changing the main task cycle time interval to 1000ms. The counting of seconds become slower. (see attached) Please help
Last updated: 2023-12-08

Post by toby on Ethernet/IP communication with Omron NX1P2 CODESYS Forge talk (Post)
Hey guys, I'm very much a noob with networking, it's my achillies heel, and this is my first networking project using Ethernet/IP. Any help offered is GREATLY appreciated. I'm trying to network a Codesys Project with an Omron NX1P2 PLC. I'm using EIP due to hardware restrains. I've added the fieldbus, EIP scanner (as the master), and made a Network Variable List. On the Sysmac Studio end, I've made the variables and set them to network inputs/outputs, registered them in EIP settings, but when I try to set the target device (the Codesys project), I suspect I need to import an EDS file for the EIP mapping. Back in the Codesys project, I'm not sure how to: - Make an EDS file to share with Sysmac Studio - How to link the target device (Omron PLC) to the EIP fieldbus - How to map the inputs from the Omron PLC. Im sorry for my very open request for help, i'm kind of lost looking through the various forums/video/tutorials as many of them dont match what im trying to do. Any help, or sample programs would be so so greatly appreciated. If you need any further clarifications, please feel free to ask. Thanks in advance, Toby
Last updated: 2024-01-24

Post by dominggus on when going online, stuck on "Syncing file "visuelemsdatetime.tl_datetime.txt" CODESYS Forge talk (Post)
Hi, We are currently using a Raspberry Pi 4 CM4 module in a EdgeBox RPI 200 - Industrial Edge Controller running the latest CODESYS Runtime Package 4.11.0.0. On the PC (actually an Intel Macbook Pro running Windows 10 in Parallels) we run CODESYS V3.5.19.50. Yesterday end of day when I was about to logoff and head home, I wanted to send the latest build to the Raspberry I clicked the Login button to compile a new version and then sync the application and all the files, it get's stuck on the last file to sync (see attached screenshot). This takes eternally, although sometimes, when I use my SFTP client (Cyberduck) and go into the raspberry and refresh the directory /var/opt/codesys/PlcLogic/visu/, or when I open the actual file visuelemsdatetime.tl_datetime.txt, it gets un-stuck (forcing a refresh, which might fix the syncing issue) and CODESYS continues and I can click the Start button to start the application. But this SFTP force refresh trick does not always help either... What could be the issue here? network connectivity? Can someone please help me out?
Last updated: 2024-03-02

Post by jrsantab on Remote connection to ifm PLC & HMI CODESYS Forge talk (Post)
We have finally solved the problem. The version of the Gateway in the computer that worked (3.5.11.0) and the one that didn't (3.5.17.30) was different. We have three different Codesys 3.5 versions installed because we work with different controllers. I believe that, depending on the sequence you follow to install the versions you get a different Gateway version. To solve the problem you first have to disable the "obsolete" services. Open services, serach for (in our case) CODESYS Gateway V3 Version 3.5.11.0 CODESYS ServiceControl Version 3.5.11.0 I stopped the services and changed to Manual Start. Then you have to create the new services. In our case, from a Command Prompt session (cmd): SC CREATE "Codesys GatewayService Rigual" binpath="C:\Program Files\CODESYS 3.5.17.30\GatewayPLC\GatewayService.exe" and then SC CREATE "CODESYS ServiceControl Version 3.5.17.30" binpath="C:\Program Files\CODESYS 3.5.17.30\GatewayPLC\CODESYSControlService.exe" remember also to set them as Automatic Start!
Last updated: 2024-04-22

Post by aliazzz on Unable to deploy Virtual Control SL on ARM64 (Raspberry Pi5) CODESYS Forge talk (Post)
Hi, I have successfully deployed "Virtual Control SL" on a few x86/64 machines now. However, I'd now like to deploy this to a Raspberry Pi (ARM64). To do this I prepared the Raspberry Pi5 with the following prereq's; * Minimal PREEMPT Debian * Latest Bootfirmware * full SSH access via non-root account * Podman * RedHat Cockpit with CODESYS LicensServer plugin up and running However, I can't seem to resolve copying the correct (deploy) Images as they wont show up in the CODESYS IDE I have added CODESYS Virtual Control for Linux SL and the CODESYS LicenseServer for Linux SL via the CODESYS installer on my DevBox. I open CODESYS > Tools > Deploy Control SL Next I enter the SSH targets IP and Credentials and for my RPi5 and it shows "Connected". In the next tab, Deployment, the dropdown box only shows one (1) image, which also is the incorrect CPU architecture. Only Virtual Control AMDx64 shows up (!?) while I expect to see the ARM64 based images for both Edge and Control. Has someone encountered this too? I'd like to hear other people experiences with Virtual Control deployment on ARM based architecture. attachment 1: AMD64 based deployment pulldown menu (correct images) attachment 2: ARM64 based deployment pulldown menu (incorrect images) regards,
Last updated: 2024-07-28

Post by francesco86 on Script python for write in a file Project information CODESYS Forge talk (Post)
Dear all, My python script can read a Codesys project and save in file the different POU, but the problem is that I don't able to read the project info from the obj list. Following of this message there is my python script. Can you help my? Best regards Francesco # encoding:utf-8 # We enable the new python 3 print syntax from __future__ import print_function import os import shutil import time import sys from datetime import datetime print("--- Saving files in the project: ---") print("sys.argv: ", len(sys.argv), " elements:") for arg in sys.argv: print(" - ", arg) if (len(sys.argv)>1): folderExportName = sys.argv[1] print(" folderExportName: ", folderExportName) exportPath = sys.argv[2]+ sys.argv[3]+ "\\"+ sys.argv[1] print(" File path: ", exportPath) # git has_repo=False #save_folder=r'E:\Tmp\ControlPlugins\ControlPlugins\Export' save_folder = exportPath if not os.path.exists(save_folder): os.makedirs(save_folder) else: a=os.listdir(save_folder) for f in a: if not f.startswith("."): sub_path= os.path.join(save_folder,f) if os.path.isdir(sub_path): shutil.rmtree(sub_path) else: os.remove(sub_path) elif f==".git": has_repo=True info={} type_dist={ '792f2eb6-721e-4e64-ba20-bc98351056db':'pm', #property method '2db5746d-d284-4425-9f7f-2663a34b0ebc':'dut', #dut 'adb5cb65-8e1d-4a00-b70a-375ea27582f3':'lib', #lib manager 'f89f7675-27f1-46b3-8abb-b7da8e774ffd':'m', #method no ret '8ac092e5-3128-4e26-9e7e-11016c6684f2':'act', #action '6f9dac99-8de1-4efc-8465-68ac443b7d08':'pou', #pou '6654496c-404d-479a-aad2-8551054e5f1e':'itf', #interface '738bea1e-99bb-4f04-90bb-a7a567e74e3a':'', #folder 'ffbfa93a-b94d-45fc-a329-229860183b1d':'gvl', #global var '5a3b8626-d3e9-4f37-98b5-66420063d91e':'prop', #property '2bef0454-1bd3-412a-ac2c-af0f31dbc40f':'tl', #textlist '63784cbb-9ba0-45e6-9d69-babf3f040511':'gtl', #global textlist '225bfe47-7336-4dbc-9419-4105a7c831fa':'dev', #device 'ae1de277-a207-4a28-9efb-456c06bd52f3':'tc', #task configuration 'f8a58466-d7f6-439f-bbb8-d4600e41d099':'m', #method with ret '261bd6e6-249c-4232-bb6f-84c2fbeef430':'gvl', #gvl_Persistent '98a2708a-9b18-4f31-82ed-a1465b24fa2d':'task', #task '085afe48-c5d8-4ea5-ab0d-b35701fa6009':'progInfo'#project information }; def save(text,path,name,tp): if not tp: tp='' else: tp='.'+tp+'.txt' with open(os.path.join(path,name+tp),'w') as f: f.write(text.encode('utf-8')) def print_tree(treeobj, depth, path): global info #record current Path curpath=path isfolder=False t='' #text tp='' #type # get object name name = treeobj.get_name(False) id = treeobj.type.ToString() if id in type_dist: tp = type_dist[treeobj.type.ToString()] #Print all type of objects #print("--Name: ", tp) else: info[id]=name if treeobj.is_device: deviceid = treeobj.get_device_identification() t = 'type='+str(deviceid.type) +'\nid=' +str(deviceid.id) + '\nver='+ str(deviceid.version) if tp == "progInfo": print("-- There is prog info, ", tp) print("-- It has textual declaration: , ", treeobj.has_textual_declaration) print("-- It has textual implementation: , ", treeobj.has_textual_implementation) print("-- It is folder: , ", treeobj.is_folder) print("-- It is children: , ", treeobj.get_children(False)) print("-- It is children len: , ", len(treeobj.get_children(False))) print("-- It is progInfo type: , ", type(treeobj.ScriptProject)) #for child in treeobj.get_children(False): # print_tree(child, depth+1,curpath) try: if treeobj.is_folder : #system.ui.prompt('folder:'+u, PromptChoice.YesNo, PromptResult.Yes) isfolder=true pass except: pass if treeobj.has_textual_declaration : t=t+'(*#-#-#-#-#-#-#-#-#-#---Declaration---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' a=treeobj.textual_declaration t=t+a.text if treeobj.has_textual_implementation: t=t+'(*#-#-#-#-#-#-#-#-#-#---Implementation---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' a=treeobj.textual_implementation t=t+a.text if treeobj.has_textual_declaration and not treeobj.has_textual_implementation: t=t+'(*#-#-#-#-#-#-#-#-#-#---NOT Implementation visible---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' if treeobj.is_task : exports=[treeobj] projects.primary.export_native(exports,os.path.join(curpath,name+'.task')) if treeobj.is_libman: exports=[treeobj] projects.primary.export_native(exports,os.path.join(curpath,name+'.lib')) if treeobj.is_textlist: treeobj.export(os.path.join(curpath,name+'.tl')) children = treeobj.get_children(False) if children or isfolder: if tp: curpath=os.path.join(curpath,name+'.'+tp) else: curpath=os.path.join(curpath,name) if not os.path.exists(curpath): os.makedirs(curpath) if t: save(t,curpath,name,tp) for child in treeobj.get_children(False): print_tree(child, depth+1,curpath) for obj in projects.primary.get_children(): print_tree(obj,0,save_folder) with open(os.path.join(save_folder,'ExportInfo.txt'),'w') as f: now = datetime.now() infTimeExecution = now.strftime("%Y-%m-%d %H:%M:%S") f.write("Export date and time: "+infTimeExecution + "\r\n" + str(info)) print("--- Script finished. ---") #system.ui.info('save ok') projects.primary.close()
Last updated: 2024-04-30

Post by francesco86 on Script python for write in a file Project information CODESYS Forge talk (Post)
Dear all, My python script can read a Codesys project and save in file the different POU, but the problem is that I don't able to read the project info from the obj list. Following of this message there is my python script. Can you help my? Best regards Francesco # encoding:utf-8 # We enable the new python 3 print syntax from __future__ import print_function import os import shutil import time import sys from datetime import datetime print("--- Saving files in the project: ---") print("sys.argv: ", len(sys.argv), " elements:") for arg in sys.argv: print(" - ", arg) if (len(sys.argv)>1): folderExportName = sys.argv[1] print(" folderExportName: ", folderExportName) exportPath = sys.argv[2]+ sys.argv[3]+ "\\"+ sys.argv[1] print(" File path: ", exportPath) # git has_repo=False #save_folder=r'E:\Tmp\ControlPlugins\ControlPlugins\Export' save_folder = exportPath if not os.path.exists(save_folder): os.makedirs(save_folder) else: a=os.listdir(save_folder) for f in a: if not f.startswith("."): sub_path= os.path.join(save_folder,f) if os.path.isdir(sub_path): shutil.rmtree(sub_path) else: os.remove(sub_path) elif f==".git": has_repo=True info={} type_dist={ '792f2eb6-721e-4e64-ba20-bc98351056db':'pm', #property method '2db5746d-d284-4425-9f7f-2663a34b0ebc':'dut', #dut 'adb5cb65-8e1d-4a00-b70a-375ea27582f3':'lib', #lib manager 'f89f7675-27f1-46b3-8abb-b7da8e774ffd':'m', #method no ret '8ac092e5-3128-4e26-9e7e-11016c6684f2':'act', #action '6f9dac99-8de1-4efc-8465-68ac443b7d08':'pou', #pou '6654496c-404d-479a-aad2-8551054e5f1e':'itf', #interface '738bea1e-99bb-4f04-90bb-a7a567e74e3a':'', #folder 'ffbfa93a-b94d-45fc-a329-229860183b1d':'gvl', #global var '5a3b8626-d3e9-4f37-98b5-66420063d91e':'prop', #property '2bef0454-1bd3-412a-ac2c-af0f31dbc40f':'tl', #textlist '63784cbb-9ba0-45e6-9d69-babf3f040511':'gtl', #global textlist '225bfe47-7336-4dbc-9419-4105a7c831fa':'dev', #device 'ae1de277-a207-4a28-9efb-456c06bd52f3':'tc', #task configuration 'f8a58466-d7f6-439f-bbb8-d4600e41d099':'m', #method with ret '261bd6e6-249c-4232-bb6f-84c2fbeef430':'gvl', #gvl_Persistent '98a2708a-9b18-4f31-82ed-a1465b24fa2d':'task', #task '085afe48-c5d8-4ea5-ab0d-b35701fa6009':'progInfo'#project information }; def save(text,path,name,tp): if not tp: tp='' else: tp='.'+tp+'.txt' with open(os.path.join(path,name+tp),'w') as f: f.write(text.encode('utf-8')) def print_tree(treeobj, depth, path): global info #record current Path curpath=path isfolder=False t='' #text tp='' #type # get object name name = treeobj.get_name(False) id = treeobj.type.ToString() if id in type_dist: tp = type_dist[treeobj.type.ToString()] #Print all type of objects #print("--Name: ", tp) else: info[id]=name if treeobj.is_device: deviceid = treeobj.get_device_identification() t = 'type='+str(deviceid.type) +'\nid=' +str(deviceid.id) + '\nver='+ str(deviceid.version) if tp == "progInfo": print("-- There is prog info, ", tp) print("-- It has textual declaration: , ", treeobj.has_textual_declaration) print("-- It has textual implementation: , ", treeobj.has_textual_implementation) print("-- It is folder: , ", treeobj.is_folder) print("-- It is children: , ", treeobj.get_children(False)) print("-- It is children len: , ", len(treeobj.get_children(False))) print("-- It is progInfo type: , ", type(treeobj.ScriptProject)) #for child in treeobj.get_children(False): # print_tree(child, depth+1,curpath) try: if treeobj.is_folder : #system.ui.prompt('folder:'+u, PromptChoice.YesNo, PromptResult.Yes) isfolder=true pass except: pass if treeobj.has_textual_declaration : t=t+'(*#-#-#-#-#-#-#-#-#-#---Declaration---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' a=treeobj.textual_declaration t=t+a.text if treeobj.has_textual_implementation: t=t+'(*#-#-#-#-#-#-#-#-#-#---Implementation---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' a=treeobj.textual_implementation t=t+a.text if treeobj.has_textual_declaration and not treeobj.has_textual_implementation: t=t+'(*#-#-#-#-#-#-#-#-#-#---NOT Implementation visible---#-#-#-#-#-#-#-#-#-#-#-#-#*)\r\n' if treeobj.is_task : exports=[treeobj] projects.primary.export_native(exports,os.path.join(curpath,name+'.task')) if treeobj.is_libman: exports=[treeobj] projects.primary.export_native(exports,os.path.join(curpath,name+'.lib')) if treeobj.is_textlist: treeobj.export(os.path.join(curpath,name+'.tl')) children = treeobj.get_children(False) if children or isfolder: if tp: curpath=os.path.join(curpath,name+'.'+tp) else: curpath=os.path.join(curpath,name) if not os.path.exists(curpath): os.makedirs(curpath) if t: save(t,curpath,name,tp) for child in treeobj.get_children(False): print_tree(child, depth+1,curpath) for obj in projects.primary.get_children(): print_tree(obj,0,save_folder) with open(os.path.join(save_folder,'ExportInfo.txt'),'w') as f: now = datetime.now() infTimeExecution = now.strftime("%Y-%m-%d %H:%M:%S") f.write("Export date and time: "+infTimeExecution + "\r\n" + str(info)) print("--- Script finished. ---") #system.ui.info('save ok') projects.primary.close()
Last updated: 2024-04-30

Post by full0pullpolen on Device User Logon CODESYS Forge talk (Post)
The following guide describes how you can adapt the user management for the first time in a project. It deals with the definition of a user and a group to which he belongs. Requirement: the project for which the user management is to be set up is opened. There is no adapted user configuration yet. Select Project Settings ‣ Users and Groups and then the Users tab. The user Owner is already created by default. Click on Add. ⇒ The dialog box Add User appears. Enter a login name, for example ‘Dev1’, and a password. Leave the option Activated activated. Click on OK. ⇒ On creating a group for the first time, CODESYS now requests you to authenticate yourself to perform this action. In this case, enter ‘Owner’ as the current user. Do not enter a password, just click on OK. The user Dev1 appears in the list and is automatically a member of the group 'Everyone'. Change to the tab Groups, in order to add the user to a new group. ⇒ The groups Everyone and Owner have already been created. Click on Add in order to open the dialog box Add Group. Specify at least one name for the new group, for example ‘Developers’. Activate the checkbox next to the entry User ‘Dev1’ in the field Members. Click on OK. ⇒ The group Developers now appears with has user member 'Dev1'. Switch to the Users tab. ⇒ The user Dev1 now appears as a member of the groups ‘Everyone’ and ‘Developers’.
Last updated: 2024-01-24

Post by full0pullpolen on Device User Logon CODESYS Forge talk (Post)
The following guide describes how you can adapt the user management for the first time in a project. It deals with the definition of a user and a group to which he belongs. Requirement: the project for which the user management is to be set up is opened. There is no adapted user configuration yet. Select Project Settings ‣ Users and Groups and then the Users tab. The user Owner is already created by default. Click on Add. ⇒ The dialog box Add User appears. Enter a login name, for example ‘Dev1’, and a password. Leave the option Activated activated. Click on OK. ⇒ On creating a group for the first time, CODESYS now requests you to authenticate yourself to perform this action. In this case, enter ‘Owner’ as the current user. Do not enter a password, just click on OK. The user Dev1 appears in the list and is automatically a member of the group 'Everyone'. Change to the tab Groups, in order to add the user to a new group. ⇒ The groups Everyone and Owner have already been created. Click on Add in order to open the dialog box Add Group. Specify at least one name for the new group, for example ‘Developers’. Activate the checkbox next to the entry User ‘Dev1’ in the field Members. Click on OK. ⇒ The group Developers now appears with has user member 'Dev1'. Switch to the Users tab. ⇒ The user Dev1 now appears as a member of the groups ‘Everyone’ and ‘Developers’.
Last updated: 2024-01-24

Post by full0pullpolen on Device User Logon CODESYS Forge talk (Post)
The following guide describes how you can adapt the user management for the first time in a project. It deals with the definition of a user and a group to which he belongs. Requirement: the project for which the user management is to be set up is opened. There is no adapted user configuration yet. Select Project Settings ‣ Users and Groups and then the Users tab. The user Owner is already created by default. Click on Add. ⇒ The dialog box Add User appears. Enter a login name, for example ‘Dev1’, and a password. Leave the option Activated activated. Click on OK. ⇒ On creating a group for the first time, CODESYS now requests you to authenticate yourself to perform this action. In this case, enter ‘Owner’ as the current user. Do not enter a password, just click on OK. The user Dev1 appears in the list and is automatically a member of the group 'Everyone'. Change to the tab Groups, in order to add the user to a new group. ⇒ The groups Everyone and Owner have already been created. Click on Add in order to open the dialog box Add Group. Specify at least one name for the new group, for example ‘Developers’. Activate the checkbox next to the entry User ‘Dev1’ in the field Members. Click on OK. ⇒ The group Developers now appears with has user member 'Dev1'. Switch to the Users tab. ⇒ The user Dev1 now appears as a member of the groups ‘Everyone’ and ‘Developers’.
Last updated: 2024-01-24

<< < 1 .. 8 9 10 11 > >> (Page 10 of 11)

Showing results of 266

Sort by relevance or date