Paper Machine
17 min
a fine paper machine and its scanning quality control system, over opc ua eight sections from stock preparation to the reel, 118 nodes operator view port 4020 opc ua server port 5030 devices and tags 8 devices, 118 nodes litmus edge driver opc ua client advanced image pulp paper demo overview most continuous processes report a point value a pressure, a level, a flow a paper machine also reports a profile across the sheet the quality control system drags a scanning head across a sheet 8 4 m wide moving at 1,100 m/min, so a single measurement is a curve across the sheet rather than a number that gives two axes, and both terms appear in the tag names and on the operator view term axis measured against md, machine direction along the sheet time cd, cross direction across the sheet position md control is an ordinary loop moisture low, add steam cd control is twenty four dilution valves in the headbox, each trimming the fibre delivered to one slice of the sheet the operator view shows both axes, because a side elevation alone cannot show a profile the machine along the top, and below it the sheet seen from above, one bar per dilution zone, with the scanner head at its live position scenarios four scenarios ship with the solution the first causes the third, with nothing in the model connecting them directly fibre giveaway not a fault, and always present paper is sold by area and made by mass, so every gram per square metre above the customer minimum is fibre nobody paid for the mill must keep the thinnest part of the sheet legal rather than the average, so the aim point is the specification minimum plus the profile spread plus an operating margin a machine that cannot hold a flat profile runs heavier and pays that margin on every tonne, with nothing alarming flatten the profile and the aim point comes down a stuck headbox dilution valve the slice it feeds runs heavy a dilution valve does not affect only its own slice the diluted stock spreads before it reaches the lip, so one valve moves its neighbours, and a controller cannot correct anything narrower than its own response width cross direction two sigma goes from about 0 4 to about 1 6 g/m2 and stays there; the aim point follows it up within a scan or two, and giveaway follows the aim a sheet break, two sections downstream a heavier slice is also a wetter slice, and the dryers are controlled on the scanner average, so the average comes right while the streak stays wet a wet line through the sheet is a weak line, and the open draw between the press and the first dryer is where it lets go no fault is injected at the press a plugged press felt a point of dryness lost at the press is a point the dryers buy back with steam, and drying is the largest energy consumer on the machine steam per tonne goes from about 1 45 to about 1 85 with quality and production unchanged, which is why this condition can run for months neither the steam figure nor the dryness figure identifies the cause alone; the analytics group joins them tag names the node names follow what a paper machine's dcs and qcs publish to the mill historian, which is the level litmus edge reads basisweightgsm , moisturepct , cdsigma2 , drynessafterpresspct , steampertonne , freenesscsf , jetwireratio two groups exist for specific scenarios basisweightgsm and bwaimgsm are separate nodes, and the gap between them is the giveaway cdzone01bw through cdzone24bw are the databoxes across the sheet, and cdzone01valve through cdzone24valve are the dilution valves that feed them the measurement sits on the scanner and the actuator on the headbox, which is where each of them physically is there is no opc ua companion specification covering this domain model, so the node names are the solution's own the protocol provides discovery, typed values and subscription, not borrowed semantics what it creates on litmus edge component created devicehub 8 devices on the opc ua client advanced driver, 118 nodes digital twin 8 models, one instance each, one per machine section analytics 4 groups analytics group computes profile control health profile spread against the aim point it forces, and whether a valve is stuck basis weight control giveaway in grams, tonnes and dollars per hour drying energy specific steam against press dryness, to separate the two causes break risk the wet streak against the load in the draw it is about to break every group is multi input a single threshold on a single tag is what a scada alarm already provides; the join is what litmus edge adds the cross direction profile is served as twenty four sibling scalar nodes rather than one array node devicehub reads a tag as a value, so an array would arrive as one opaque tag that no analytics group could threshold and no twin attribute could bind to requirements litmus edge 4 0 x, reachable over https from the host running the solution an api token for that edge, or a username and password, or a client id and secret docker, and docker compose for the compose deployment a network path in both directions the solution reaches the edge's api, and the edge reaches this host on port 5030 deploy the solution ships two ways use the registry if the host can reach google artifact registry, and the downloaded archive if it cannot option 1 pull from the registry requires a read only registry credential, supplied by litmus separately cat key json | docker login u json key password stdin https //us docker pkg dev save this as docker compose yml services pulp paper image us docker pkg dev/litmus customer facing/litmus solutions/pulp paper demo 0 3 0 container name pulp paper demo restart unless stopped ports \ target 4020 published 4020 protocol tcp \ target 5030 published 5030 protocol tcp environment edge url "${edge url }" edge api token "${edge api token }" sim host "${sim host auto}" apply on start "${apply on start 1}" edge verify tls "${edge verify tls 0}" http port "4020" opcua port "5030" seed "13" log level "info" put the three values in a env file beside it edge url=https //10 0 0 5 edge api token=your token sim host=10 0 0 9 start it docker compose up d option 2 load the downloaded archive download pulp paper demo 0 3 0 amd64 tar gz from the solution's page on portal litmus io the archive is the container image, not a source bundle, and needs no registry access docker load i pulp paper demo 0 3 0 amd64 tar gz docker load prints the image it added loaded image us docker pkg dev/litmus customer facing/litmus solutions/pulp paper demo 0 3 0 that reference is the one the compose file above already names, so the same docker compose yml and env now work offline with no docker login docker compose up d to run it without compose, pass the same three values on the command line docker run d \\ \ name pulp paper demo \\ \ restart unless stopped \\ p 4020 4020 \\ p 5030 5030 \\ e edge url=https //10 0 0 5 \\ e edge api token=your token \\ e sim host=10 0 0 9 \\ us docker pkg dev/litmus customer facing/litmus solutions/pulp paper demo 0 3 0 open http //localhost 4020 within about a minute the edge is configured and the page fills in the page stays on its waiting panel until the edge carries this solution's devices that is deliberate the simulation does not tick and no value is shown until litmus edge is verified to hold the devices and poll them, so nothing on screen can be mistaken for data that never made the trip with apply on start at its default of 1 the solution configures the edge itself on startup, which takes 30 to 60 seconds if you set it to 0 , or the apply failed, press apply to edge in the page header configuration variable default purpose edge url the docker host litmus edge to configure edge api token unset token for that edge alternatively edge username and edge password , or edge client id and edge client secret sim host auto address the edge subscribes to apply on start 1 configure the edge on startup edge verify tls 0 1 verifies the edge's certificate seed 13 makes a run repeatable sim host requires attention the solution serves opc ua and the edge subscribes to it, so the edge needs an address it can route to leave it auto when the solution runs on the edge itself or with host networking otherwise set it to the address of the host running the solution, as the edge sees it an incorrect value fails quietly the devices are created, they report as online, and no tag ever reads a value, because the address written into the template is one the edge cannot reach the solution refuses to apply a template whose address is obviously unreachable and reports why operator view the header shows fibre giveaway in dollars per hour with tonnes beneath it, the cross direction two sigma against the flat machine floor, steam per tonne, and production with break and downgrade counts below that is the machine, stock preparation to reel, drawn side on with the sheet threaded through it flat on the wire, through the press nips, over and under the dryer cans, then onto the reel, which grows as the jumbo builds the sheet changes colour along the line as water leaves it, which shows where the machine is spending its energy below the machine is the sheet from above one bar per dilution zone against the aim, with the scanner head at its real position a stuck valve is visible here and nowhere else each scenario has a card naming the datahub topics to watch and what changes about them apply and remove the header carries both controls apply to edge pushes the devices, twins and analytics, and greys out once the solution is on the edge remove from edge previews first, listing what would be removed and from which edge, then offers to remove it the solution removes only what it created, and records which edge its apply landed on, so repointing at a different edge cannot leave a solution stranded on the first one reports preview report and export report produce one self contained html file inline styles, inline charts, no scripts and no external requests, so it opens offline, emails and prints it carries the shift totals, the cross direction profile against the specification band, giveaway and specific steam against time with the flat machine baseline marked, the reel record with its dispositions, and the litmus edge configuration that produced it support support\@litmus io mailto\ support\@litmus io