{"id":36647615,"url":"https://github.com/pcdshub/ioc-common-ads-ioc","last_synced_at":"2026-03-12T02:11:37.162Z","repository":{"id":39914801,"uuid":"161418139","full_name":"pcdshub/ioc-common-ads-ioc","owner":"pcdshub","description":"IOC template for Beckhoff TwinCAT3 deployments (using ESS's ADS support). Formerly named \"ads-ioc\".","archived":false,"fork":false,"pushed_at":"2025-10-28T20:32:29.000Z","size":189,"stargazers_count":4,"open_issues_count":13,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-24T19:39:33.921Z","etag":null,"topics":["ads-ioc","ess","ioc-template","motor-record","twincat"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pcdshub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-12T01:54:36.000Z","updated_at":"2025-10-28T20:32:35.000Z","dependencies_parsed_at":"2023-11-16T23:53:03.283Z","dependency_job_id":"afb180d2-60bb-4c7b-a66a-84e4ac6f11e9","html_url":"https://github.com/pcdshub/ioc-common-ads-ioc","commit_stats":null,"previous_names":["pcdshub/ioc-common-ads-ioc","pcdshub/ads-ioc"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/pcdshub/ioc-common-ads-ioc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcdshub%2Fioc-common-ads-ioc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcdshub%2Fioc-common-ads-ioc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcdshub%2Fioc-common-ads-ioc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcdshub%2Fioc-common-ads-ioc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pcdshub","download_url":"https://codeload.github.com/pcdshub/ioc-common-ads-ioc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pcdshub%2Fioc-common-ads-ioc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30412470,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T00:40:14.898Z","status":"online","status_checked_at":"2026-03-12T02:00:07.260Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ads-ioc","ess","ioc-template","motor-record","twincat"],"created_at":"2026-01-12T10:02:16.318Z","updated_at":"2026-03-12T02:11:37.141Z","avatar_url":"https://github.com/pcdshub.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"ADS IOC\n=======\n\n`ads-ioc` is an IOC template for Beckhoff TwinCAT ADS-based deployments in the\nLCLS PCDS group at SLAC.\n\nThat fork contains support for communicating with specifically structured\nTwinCAT projects using the ADS protocol.\n\nThis is set up to build on the LCLS PCDS NFS-accessible machines. This will not\nbuild on older operating systems such as rhel5 and rhel6. It does not need any\nspecific environment variable set, just type `make`. You can probably get it to\nbuild in other environments by modifying the `RELEASE_SITE` file appropriately.\n\n\nDependencies\n============\n\n* [asyn](https://github.com/epics-modules/asyn)\n* ads (ESS [m-epics-twincat-ads](https://bitbucket.org/europeanspallationsource/m-epics-twincat-ads))\n* EthercatMcSupport (ESS [m-epics-ethercatmc](https://bitbucket.org/europeanspallationsource/m-epics-ethercatmc))\n* EPICS motor record (ESS fork [ess-R6.9.x](https://bitbucket.org/europeanspallationsource/m-epics-motor/src/ess-6.9.x/))\n* [iocAdmin + devIocStats](https://github.com/epics-modules/iocStats)\n* [autosave](https://github.com/epics-modules/autosave)\n* [calc](https://github.com/epics-modules/calc)\n\nLogging\n=======\n\nLogging configuration is handled externally by way of the shared\n`pre_linux.cmd` (i.e., pre-iocInit) script:\n\n```\n# Send log messages to logstash:\nepicsEnvSet(\"EPICS_IOC_LOG_INET\", \"ctl-logsrv01.pcdsn\")\nepicsEnvSet(\"EPICS_IOC_LOG_PORT\", \"7004\")\n\n# The following prefix is *required* for logstash to know which IOC is sending\n# the message.  This *cannot* be modified without changes to the logstash\n# configuration.\niocLogPrefix(\"IOC=${IOC} \")\n\n# Send caPutLog messages to logstash:\nepicsEnvSet(\"EPICS_CAPUTLOG_HOST\", \"ctl-logsrv01.pcdsn\")\nepicsEnvSet(\"EPICS_CAPUTLOG_PORT\", \"7011\")\n```\n\nFor now, post-init settings are handled on a per-IOC basis. However, a similar\nchange may be used in the future for a post-`iocInit()` script which would\nenable logging outside of `ads-ioc`:\n\n```\n# Enable logging\niocLogInit()\n\n# Configure and start the caPutLogger after iocInit\nepicsEnvSet(EPICS_AS_PUT_LOG_PV, \"${IOC}:caPutLog:Last\")\n\n# caPutLogInit(\"HOST:PORT\", config)\n# config options:\n#       caPutLogNone       -1: no logging (disable)\n#       caPutLogOnChange    0: log only on value change\n#       caPutLogAll         1: log all puts\n#       caPutLogAllNoFilter 2: log all puts no filtering on same PV\ncaPutLogInit(\"${EPICS_CAPUTLOG_HOST}:${EPICS_CAPUTLOG_PORT}\", 0)\n```\n\nRelated tools\n=============\n\n* [pytmc](https://github.com/slaclab/pytmc)\n* [ads-deploy](https://github.com/slaclab/ads-deploy)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpcdshub%2Fioc-common-ads-ioc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpcdshub%2Fioc-common-ads-ioc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpcdshub%2Fioc-common-ads-ioc/lists"}