pcdshub / pytmc

Generate EPICS IOCs and records from TwinCAT projects - along with many TwinCAT project tools
https://pcdshub.github.io/pytmc/
Other
10 stars 11 forks source link

ENH: special syntax to allow for referring to PV name in linked variable #186

Closed klauer closed 4 years ago

klauer commented 4 years ago

This is subject to change and as such I don't want it to be documented just yet (I know, I know...)

Hoping to get this in for a paired PR in lcls-twincat-general shortly (assuming tests pass).

codecov-io commented 4 years ago

Codecov Report

Merging #186 into master will increase coverage by 0.27%. The diff coverage is 100%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #186      +/-   ##
==========================================
+ Coverage   79.83%   80.11%   +0.27%     
==========================================
  Files          18       18              
  Lines        2237     2253      +16     
==========================================
+ Hits         1786     1805      +19     
+ Misses        451      448       -3
Impacted Files Coverage Δ
pytmc/record.py 94.69% <100%> (+0.07%) :arrow_up:
pytmc/parser.py 88.98% <0%> (+0.18%) :arrow_up:
pytmc/bin/stcmd.py 87.2% <0%> (+0.2%) :arrow_up:
pytmc/pragmas.py 96.93% <0%> (+0.51%) :arrow_up:
pytmc/bin/db.py 48.64% <0%> (+1.8%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 03f1412...7c86d2d. Read the comment docs.

klauer commented 4 years ago

Here's a sample of the important records generated to take TEST:LINK and put it in the PLC in MAIN.fbTest. While it uses TEST:EPICSLink* to make this happen, they are not really meant to be a user-facing set of records:

record(ao, "TEST:EPICSLink") {
  field(DESC, "ads:MAIN.fbTest.fPLCInternalValue")
  field(SCAN, ".5 second")
  field(DTYP, "asynFloat64")
  field(DOL, "TEST:LINK CPP MS")
  field(OMSL, "closed_loop")
  field(OUT, "@asyn($(PORT),0,1)ADSPORT=851/MAIN.fbTest.fPLCInternalValue=")
  field(PREC, "3")
  info(autosaveFields_pass0, "PREC VAL")
}

record(longout, "TEST:EPICSLink:LinkSeverity") {
  field(DESC, "ads:MAIN.fbTest.iPLCInternalSeverity")
  field(SCAN, ".5 second")
  field(DTYP, "asynInt32")
  field(DOL, "TEST:EPICSLink.SEVR CPP MS")
  field(OMSL, "closed_loop")
  field(OUT, "@asyn($(PORT),0,1)ADSPORT=851/MAIN.fbTest.iPLCInternalSeverity=")
  info(autosaveFields_pass0, "VAL")
}