@codesys/mcp-toolkit 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"graphical-read.js","sourceRoot":"","sources":["../../src/codesys/graphical-read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphical-read.js","sourceRoot":"","sources":["../../src/codesys/graphical-read.ts"],"names":[],"mappings":"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"}
@@ -45,8 +45,40 @@ export declare const fbdSchema: z.ZodObject<{
45
45
  expr: z.ZodType<Fbd, unknown, z.core.$ZodTypeInternals<Fbd, unknown>>;
46
46
  }, z.core.$strip>>;
47
47
  }, z.core.$strip>;
48
+ declare const sfcAction: z.ZodObject<{
49
+ name: z.ZodString;
50
+ qualifier: z.ZodDefault<z.ZodEnum<{
51
+ N: "N";
52
+ P: "P";
53
+ P0: "P0";
54
+ P1: "P1";
55
+ R: "R";
56
+ S: "S";
57
+ }>>;
58
+ st: z.ZodString;
59
+ }, z.core.$strip>;
60
+ export type SfcAction = z.infer<typeof sfcAction>;
61
+ /**
62
+ * An SFC as IEC draws it, top to bottom: steps and transitions alternate; an
63
+ * alternative branch (one path is taken) follows a step and each of its paths
64
+ * starts with a transition; a parallel branch (all paths run) follows a
65
+ * transition and each path starts with a step; a jump ends a path.
66
+ */
67
+ export type SfcElement = {
68
+ step: string;
69
+ initial?: boolean;
70
+ actions?: SfcAction[];
71
+ } | {
72
+ when: string;
73
+ } | {
74
+ alternative: SfcElement[][];
75
+ } | {
76
+ parallel: SfcElement[][];
77
+ } | {
78
+ jump: string;
79
+ };
48
80
  export declare const sfcSchema: z.ZodObject<{
49
- steps: z.ZodArray<z.ZodObject<{
81
+ steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
50
82
  name: z.ZodString;
51
83
  initial: z.ZodOptional<z.ZodBoolean>;
52
84
  actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -63,14 +95,29 @@ export declare const sfcSchema: z.ZodObject<{
63
95
  }, z.core.$strip>>>;
64
96
  next: z.ZodString;
65
97
  when: z.ZodString;
66
- }, z.core.$strip>>;
98
+ }, z.core.$strip>>>;
99
+ chart: z.ZodOptional<z.ZodArray<z.ZodType<SfcElement, unknown, z.core.$ZodTypeInternals<SfcElement, unknown>>>>;
67
100
  }, z.core.$strip>;
68
101
  export declare function ladderXml(name: string, pouType: "program" | "functionBlock", spec: z.infer<typeof ladderSchema>): string;
69
102
  export declare function fbdXml(name: string, pouType: "program" | "functionBlock", spec: z.infer<typeof fbdSchema>): string;
103
+ /**
104
+ * CFC from the same description as FBD. CODESYS stores CFC as an empty ST body
105
+ * with the elements in addData; every line runs through an unnamed connector
106
+ * that names the source's output (an input variable's output is its own text),
107
+ * and each box carries its call type and execution order (taken from CODESYS's
108
+ * own export; without the connectors its import drops the lines).
109
+ */
110
+ export declare function cfcXml(name: string, pouType: "program" | "functionBlock", spec: z.infer<typeof fbdSchema>): string;
111
+ /** The steps format (one sequence, the last step jumps back) as a chart. */
112
+ export declare function stepsToChart(steps: NonNullable<z.infer<typeof sfcSchema>["steps"]>): SfcElement[];
113
+ export declare function chartOf(spec: z.infer<typeof sfcSchema>): SfcElement[];
114
+ /** What is wrong with a chart: steps and transitions must alternate, branches start and end right. */
115
+ export declare function chartProblems(chart: SfcElement[]): string[];
70
116
  export declare function sfcXml(name: string, pouType: "program" | "functionBlock", spec: z.infer<typeof sfcSchema>): string;
71
117
  /**
72
- * The SFCs this generator makes are one sequence: each step goes to the next one
73
- * listed, and the last step jumps back (to any step). Branches aren't supported yet.
118
+ * The steps format is one sequence: each step goes to the next one listed, and
119
+ * the last step jumps back (to any step). Branches use the chart format.
74
120
  */
75
121
  export declare function sfcProblems(spec: z.infer<typeof sfcSchema>): string[];
76
122
  export declare function registerGraphicalActions(reg: RegisterAction, ctx: AppContext, run: (fn: () => Promise<string>) => Promise<ActionResult>): void;
123
+ export {};
@@ -29,16 +29,30 @@ export const fbdSchema = z.object({
29
29
  }))
30
30
  .min(1),
31
31
  });
32
+ const sfcAction = z.object({ name: z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/), qualifier: z.enum(["N", "S", "R", "P", "P0", "P1"]).default("N"), st: z.string() });
33
+ const sfcElement = z.lazy(() => z.union([
34
+ z.object({ step: z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/), initial: z.boolean().optional(), actions: z.array(sfcAction).optional() }),
35
+ z.object({ when: z.string().min(1) }),
36
+ z.object({ alternative: z.array(z.array(sfcElement).min(1)).min(2) }),
37
+ z.object({ parallel: z.array(z.array(sfcElement).min(1)).min(2) }),
38
+ z.object({ jump: z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/) }),
39
+ ]));
32
40
  export const sfcSchema = z.object({
33
41
  steps: z
34
42
  .array(z.object({
35
43
  name: z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/),
36
44
  initial: z.boolean().optional(),
37
- actions: z.array(z.object({ name: z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/), qualifier: z.enum(["N", "S", "R", "P", "P0", "P1"]).default("N"), st: z.string() })).optional(),
45
+ actions: z.array(sfcAction).optional(),
38
46
  next: z.string().describe("Step this one goes to"),
39
47
  when: z.string().describe("Transition condition in ST, e.g. 'xStart AND NOT xFault'"),
40
48
  }))
41
- .min(2),
49
+ .min(2)
50
+ .optional(),
51
+ chart: z
52
+ .array(sfcElement)
53
+ .min(2)
54
+ .optional()
55
+ .describe("With branches: [{step}, {when}, {alternative: [[{when}, {step}, {when}], [{when}, {jump}]]}, {parallel: [[{step}], [{step}]]}, ...]"),
42
56
  });
43
57
  const esc = (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
44
58
  function wrap(name, pouType, body, actions = "", addData = "") {
@@ -126,53 +140,239 @@ export function fbdXml(name, pouType, spec) {
126
140
  });
127
141
  return wrap(name, pouType, `<FBD>${parts.join("\n")}</FBD>`);
128
142
  }
129
- export function sfcXml(name, pouType, spec) {
130
- const steps = spec.steps;
131
- const names = new Set(steps.map((s) => s.name));
132
- for (const s of steps)
133
- if (!names.has(s.next))
134
- throw new Error(`step ${s.name} goes to '${s.next}', which isn't a step`);
135
- if (!steps.some((s) => s.initial))
136
- steps[0].initial = true;
143
+ /** IEC operators: CODESYS's CFC calls them with CallType 'operator'; other functions are 'function'. */
144
+ const OPERATORS = new Set(["AND", "OR", "XOR", "NOT", "ADD", "SUB", "MUL", "DIV", "MOD", "EXPT", "MOVE", "GT", "GE", "LT", "LE", "EQ", "NE", "SEL", "MAX", "MIN", "LIMIT", "MUX", "SHL", "SHR", "ROL", "ROR", "ABS", "SQRT", "LN", "LOG", "EXP", "SIN", "COS", "TAN", "ASIN", "ACOS", "ATAN", "TRUNC"]);
145
+ /**
146
+ * CFC from the same description as FBD. CODESYS stores CFC as an empty ST body
147
+ * with the elements in addData; every line runs through an unnamed connector
148
+ * that names the source's output (an input variable's output is its own text),
149
+ * and each box carries its call type and execution order (taken from CODESYS's
150
+ * own export; without the connectors its import drops the lines).
151
+ */
152
+ export function cfcXml(name, pouType, spec) {
137
153
  let id = 0;
154
+ let order = 0;
138
155
  const parts = [];
139
- const actionDefs = [];
140
- let y = 0;
141
- let prev;
156
+ const callType = (b) => `<addData><data name="http://www.3s-software.com/plcopenxml/cfccalltype" handleUnknown="implementation"><CallType xmlns="">${b}</CallType></data></addData>`;
157
+ /** A connector from a source output; returns the connector's id, which the consumer connects to. */
158
+ const line = (src, param) => {
159
+ const c = ++id;
160
+ parts.push(`<connector localId="${c}" name=""><position x="0" y="0" /><connectionPointIn><connection refLocalId="${src}" formalParameter="${esc(param)}" /></connectionPointIn></connector>`);
161
+ return c;
162
+ };
163
+ spec.networks.forEach((net, n) => {
164
+ const y = n * 12;
165
+ let x = 0;
166
+ const build = (e) => {
167
+ if (typeof e === "string") {
168
+ const v = ++id;
169
+ parts.push(`<inVariable localId="${v}"><position x="${x}" y="${y}" /><connectionPointOut><expression /></connectionPointOut><expression>${esc(e)}</expression></inVariable>`);
170
+ return { id: v, param: e };
171
+ }
172
+ const isFn = "fn" in e;
173
+ const ins = isFn ? e.args.map((a, k) => [`In${k + 1}`, build(a)]) : Object.entries(e.inputs ?? {}).map(([k, v]) => [k, build(v)]);
174
+ const conns = ins.map(([k, s]) => [k, line(s.id, s.param)]);
175
+ const b = ++id;
176
+ x += 10;
177
+ // A function's or operator's result is the output with no name (checked on SP22).
178
+ const outs = isFn ? [""] : [...new Set([e.output ?? "Q", ...Object.keys(net.assign ?? {})])];
179
+ const op = isFn && OPERATORS.has(e.fn.toUpperCase());
180
+ const type = isFn ? (op ? e.fn.toUpperCase() : e.fn) : e.fb;
181
+ const kind = isFn ? (op ? "operator" : "function") : "functionblock";
182
+ const inst = isFn ? "" : ` instanceName="${esc(e.instance)}"`;
183
+ parts.push(`<block localId="${b}" executionOrderId="${order++}" typeName="${esc(type)}"${inst}><position x="${x}" y="${y}" />` +
184
+ `<inputVariables>${conns.map(([k, c], i) => `<variable formalParameter="${esc(k)}"><connectionPointIn><relPosition x="0" y="${i}" /><connection refLocalId="${c}" /></connectionPointIn></variable>`).join("")}</inputVariables><inOutVariables />` +
185
+ `<outputVariables>${outs.map((o, i) => `<variable formalParameter="${esc(o)}"><connectionPointOut><relPosition x="0" y="${i}" /><expression /></connectionPointOut></variable>`).join("")}</outputVariables>${callType(kind)}</block>`);
186
+ return { id: b, param: isFn ? "" : (e.output ?? "Q") };
187
+ };
188
+ const out = build(net.expr);
189
+ const targets = [];
190
+ if (net.to)
191
+ targets.push([out.param, net.to]);
192
+ for (const [param, v] of Object.entries(net.assign ?? {}))
193
+ targets.push([param, v]);
194
+ for (const [param, v] of targets) {
195
+ const c = line(out.id, param);
196
+ x += 10;
197
+ parts.push(`<outVariable localId="${++id}" executionOrderId="${order++}"><position x="${x}" y="${y}" /><connectionPointIn><connection refLocalId="${c}" /></connectionPointIn><expression>${esc(v)}</expression></outVariable>`);
198
+ }
199
+ });
200
+ const body = `<ST><xhtml xmlns="http://www.w3.org/1999/xhtml" /></ST><addData><data name="http://www.3s-software.com/plcopenxml/cfc" handleUnknown="implementation"><CFC>${parts.join("\n")}</CFC></data></addData>`;
201
+ return wrap(name, pouType, body);
202
+ }
203
+ /** The steps format (one sequence, the last step jumps back) as a chart. */
204
+ export function stepsToChart(steps) {
205
+ const chart = [];
142
206
  steps.forEach((s, k) => {
143
- const st = ++id;
144
- parts.push(`<step localId="${st}"${s.initial ? ' initialStep="true"' : ""} name="${esc(s.name)}"><position x="0" y="${y}" /><connectionPointIn>${prev ? `<connection refLocalId="${prev}" />` : ""}</connectionPointIn><connectionPointOut formalParameter="sfc" /></step>`);
145
- if (s.actions?.length) {
146
- const blk = ++id;
147
- const acts = s.actions.map((a) => {
148
- actionDefs.push(`<action name="${esc(a.name)}"><body><ST><xhtml xmlns="http://www.w3.org/1999/xhtml">${esc(a.st)}</xhtml></ST></body></action>`);
149
- return `<action localId="${++id}" qualifier="${a.qualifier}"><relPosition x="0" y="0" /><reference name="${esc(a.name)}" /><connectionPointOut /></action>`;
150
- });
151
- parts.push(`<actionBlock localId="${blk}"><position x="150" y="${y}" /><connectionPointIn><connection refLocalId="${st}" /></connectionPointIn>${acts.join("")}</actionBlock>`);
207
+ chart.push({ step: s.name, ...(s.initial ? { initial: true } : {}), ...(s.actions?.length ? { actions: s.actions } : {}) }, { when: s.when });
208
+ if (k === steps.length - 1)
209
+ chart.push({ jump: s.next });
210
+ });
211
+ return chart;
212
+ }
213
+ export function chartOf(spec) {
214
+ if (spec.chart && spec.steps)
215
+ throw new Error("Give sfc.steps or sfc.chart, not both.");
216
+ if (spec.chart)
217
+ return spec.chart;
218
+ if (spec.steps)
219
+ return stepsToChart(spec.steps);
220
+ throw new Error("Give sfc.steps (one sequence) or sfc.chart (with branches).");
221
+ }
222
+ const stepNames = (seq) => seq.flatMap((e) => ("step" in e ? [e.step] : "alternative" in e ? e.alternative.flatMap(stepNames) : "parallel" in e ? e.parallel.flatMap(stepNames) : []));
223
+ /** What is wrong with a chart: steps and transitions must alternate, branches start and end right. */
224
+ export function chartProblems(chart) {
225
+ const out = [];
226
+ const names = stepNames(chart);
227
+ const seen = new Set();
228
+ for (const n of names) {
229
+ if (seen.has(n.toLowerCase()))
230
+ out.push(`step ${n} appears twice; step names must be unique`);
231
+ seen.add(n.toLowerCase());
232
+ }
233
+ const check = (seq, prev, where) => {
234
+ for (const e of seq) {
235
+ const at = `${where}${"step" in e ? ` at step ${e.step}` : ""}`;
236
+ if (prev === "jump") {
237
+ out.push(`${where}: nothing can follow a jump`);
238
+ return "jump";
239
+ }
240
+ if ("step" in e) {
241
+ if (prev === "step")
242
+ out.push(`${at}: two steps in a row need a {when} between them`);
243
+ else if (prev === "alt-start")
244
+ out.push(`${at}: each path of an alternative branch starts with a {when}`);
245
+ prev = "step";
246
+ }
247
+ else if ("when" in e) {
248
+ if (prev === "transition")
249
+ out.push(`${where}: two transitions in a row ('${e.when}') need a step between them`);
250
+ else if (prev === "start" || prev === "par-start")
251
+ out.push(`${where}: '${e.when}' must follow a step`);
252
+ prev = "transition";
253
+ }
254
+ else if ("jump" in e) {
255
+ if (!seen.has(e.jump.toLowerCase()))
256
+ out.push(`${where}: jump to '${e.jump}', which isn't a step`);
257
+ if (prev !== "transition" && prev !== "alt-start")
258
+ out.push(`${where}: a jump must follow a {when}`);
259
+ prev = "jump";
260
+ }
261
+ else if ("alternative" in e) {
262
+ if (prev !== "step")
263
+ out.push(`${where}: an alternative branch must follow a step (its paths start with their conditions)`);
264
+ const ends = e.alternative.map((b, i) => check(b, "alt-start", `${where} > alternative path ${i + 1}`));
265
+ ends.forEach((end, i) => {
266
+ if (end !== "transition" && end !== "jump")
267
+ out.push(`${where} > alternative path ${i + 1} must end with a {when} or a {jump}`);
268
+ });
269
+ prev = ends.every((x) => x === "jump") ? "jump" : "transition";
270
+ }
271
+ else {
272
+ if (prev !== "transition" && prev !== "start")
273
+ out.push(`${where}: a parallel branch must follow a {when}`);
274
+ const ends = e.parallel.map((b, i) => check(b, "par-start", `${where} > parallel path ${i + 1}`));
275
+ ends.forEach((end, i) => {
276
+ if (end !== "step")
277
+ out.push(`${where} > parallel path ${i + 1} must end with a step (paths of a parallel branch join before the next {when})`);
278
+ });
279
+ prev = "step";
280
+ }
152
281
  }
153
- y += 40;
154
- const cond = ++id;
155
- parts.push(`<inVariable localId="${cond}"><position x="0" y="${y}" /><connectionPointOut /><expression>${esc(s.when)}</expression></inVariable>`);
156
- const tr = ++id;
157
- parts.push(`<transition localId="${tr}"><position x="0" y="${y}" /><connectionPointIn><connection refLocalId="${st}" formalParameter="sfc" /></connectionPointIn><connectionPointOut /><condition><connectionPointIn><connection refLocalId="${cond}" /></connectionPointIn></condition></transition>`);
158
- y += 40;
159
- const following = steps[k + 1];
160
- if (following && following.name === s.next)
161
- prev = tr;
162
- else {
163
- parts.push(`<jumpStep localId="${++id}" targetName="${esc(s.next)}"><position x="0" y="${y}" /><connectionPointIn><connection refLocalId="${tr}" /></connectionPointIn></jumpStep>`);
164
- y += 40;
165
- prev = undefined;
282
+ return prev;
283
+ };
284
+ if (!chart.length || !("step" in chart[0]))
285
+ out.push("the chart starts with its initial step");
286
+ const end = check(chart, "start", "chart");
287
+ if (end === "step")
288
+ out.push("the chart ends with a step: add a {when} and a {jump} back");
289
+ return out;
290
+ }
291
+ export function sfcXml(name, pouType, spec) {
292
+ const chart = chartOf(spec);
293
+ const p = chartProblems(chart);
294
+ if (p.length)
295
+ throw new Error(p.join("\n"));
296
+ const first = chart[0];
297
+ const hasInitial = (seq) => seq.some((e) => ("step" in e ? !!e.initial : "alternative" in e ? e.alternative.some(hasInitial) : "parallel" in e ? e.parallel.some(hasInitial) : false));
298
+ const initialAll = !hasInitial(chart);
299
+ let id = 0;
300
+ let y = 0;
301
+ const parts = [];
302
+ const actionDefs = [];
303
+ const conns = (ins) => ins.map((c) => `<connection refLocalId="${c.id}"${c.param ? ` formalParameter="${c.param}"` : ""} />`).join("");
304
+ // A path that ends in a jump still feeds its branch's convergence, through the
305
+ // jumpStep: that is how CODESYS exports it, and its import drops the path otherwise.
306
+ let jumped = false;
307
+ const emit = (seq, ins) => {
308
+ let cur = ins;
309
+ jumped = false;
310
+ for (const e of seq) {
311
+ if ("step" in e) {
312
+ const st = ++id;
313
+ const initial = e.initial || (initialAll && e === first);
314
+ parts.push(`<step localId="${st}"${initial ? ' initialStep="true"' : ""} name="${esc(e.step)}"><position x="0" y="${y}" /><connectionPointIn>${conns(cur)}</connectionPointIn><connectionPointOut formalParameter="sfc" /></step>`);
315
+ if (e.actions?.length) {
316
+ const blk = ++id;
317
+ const acts = e.actions.map((a) => {
318
+ actionDefs.push(`<action name="${esc(a.name)}"><body><ST><xhtml xmlns="http://www.w3.org/1999/xhtml">${esc(a.st)}</xhtml></ST></body></action>`);
319
+ return `<action localId="${++id}" qualifier="${a.qualifier}"><relPosition x="0" y="0" /><reference name="${esc(a.name)}" /><connectionPointOut /></action>`;
320
+ });
321
+ parts.push(`<actionBlock localId="${blk}"><position x="150" y="${y}" /><connectionPointIn><connection refLocalId="${st}" /></connectionPointIn>${acts.join("")}</actionBlock>`);
322
+ }
323
+ y += 40;
324
+ cur = [{ id: st, param: "sfc" }];
325
+ }
326
+ else if ("when" in e) {
327
+ const cond = ++id;
328
+ parts.push(`<inVariable localId="${cond}"><position x="0" y="${y}" /><connectionPointOut /><expression>${esc(e.when)}</expression></inVariable>`);
329
+ const tr = ++id;
330
+ parts.push(`<transition localId="${tr}"><position x="0" y="${y}" /><connectionPointIn>${conns(cur)}</connectionPointIn><connectionPointOut /><condition><connectionPointIn><connection refLocalId="${cond}" /></connectionPointIn></condition></transition>`);
331
+ y += 40;
332
+ cur = [{ id: tr }];
333
+ }
334
+ else if ("jump" in e) {
335
+ const j = ++id;
336
+ parts.push(`<jumpStep localId="${j}" targetName="${esc(e.jump)}"><position x="0" y="${y}" /><connectionPointIn>${conns(cur)}</connectionPointIn></jumpStep>`);
337
+ y += 40;
338
+ cur = [{ id: j, param: "sfc" }];
339
+ jumped = true;
340
+ }
341
+ else {
342
+ const alt = "alternative" in e;
343
+ const paths = alt ? e.alternative : e.parallel;
344
+ const div = ++id;
345
+ const tag = alt ? "selection" : "simultaneous";
346
+ parts.push(`<${tag}Divergence localId="${div}"><position x="0" y="${y}" /><connectionPointIn>${conns(cur)}</connectionPointIn>${paths.map(() => `<connectionPointOut formalParameter="sfc" />`).join("")}</${tag}Divergence>`);
347
+ y += 20;
348
+ // CODESYS tells the paths apart by their order: every output of a divergence is 'sfc'.
349
+ const results = paths.map((path) => ({ out: emit(path, [{ id: div, param: alt ? "sfc" : undefined }]), jumped }));
350
+ const ends = results.map((r) => r.out);
351
+ const conv = ++id;
352
+ parts.push(`<${tag}Convergence localId="${conv}"><position x="0" y="${y}" />${ends.map((c) => `<connectionPointIn>${conns(c.map((x) => ({ ...x, param: "sfc" })))}</connectionPointIn>`).join("")}<connectionPointOut /></${tag}Convergence>`);
353
+ y += 20;
354
+ cur = [{ id: conv }];
355
+ jumped = results.every((r) => r.jumped);
356
+ }
166
357
  }
167
- });
358
+ return cur;
359
+ };
360
+ const tail = emit(chart, []);
361
+ // A chart that ends with a transition goes back to its initial step.
362
+ if (!jumped)
363
+ parts.push(`<jumpStep localId="${++id}" targetName="${esc(first.step)}"><position x="0" y="${y}" /><connectionPointIn>${conns(tail)}</connectionPointIn></jumpStep>`);
168
364
  const sfcSettings = `<addData><data name="http://www.3s-software.com/plcopenxml/sfcsettings" handleUnknown="implementation"><SFCSettings><LibTitle>IecSfc</LibTitle><LibCompany>System</LibCompany><LibVersion>4.4.0.0</LibVersion><LibNamespace>IecSfc</LibNamespace><CalcActiveTransOnly>false</CalcActiveTransOnly><UseDefaults>false</UseDefaults></SFCSettings></data></addData>`;
169
365
  return wrap(name, pouType, `<SFC>${parts.join("\n")}</SFC>`, actionDefs.length ? `<actions>${actionDefs.join("")}</actions>\n ` : "", sfcSettings);
170
366
  }
171
367
  /**
172
- * The SFCs this generator makes are one sequence: each step goes to the next one
173
- * listed, and the last step jumps back (to any step). Branches aren't supported yet.
368
+ * The steps format is one sequence: each step goes to the next one listed, and
369
+ * the last step jumps back (to any step). Branches use the chart format.
174
370
  */
175
371
  export function sfcProblems(spec) {
372
+ if (spec.chart)
373
+ return spec.steps ? ["Give sfc.steps or sfc.chart, not both."] : chartProblems(spec.chart);
374
+ if (!spec.steps)
375
+ return ["Give sfc.steps (one sequence) or sfc.chart (with branches)."];
176
376
  const out = [];
177
377
  const names = new Set(spec.steps.map((s) => s.name));
178
378
  if (names.size !== spec.steps.length)
@@ -182,30 +382,33 @@ export function sfcProblems(spec) {
182
382
  if (!names.has(s.next))
183
383
  out.push(`step ${s.name} goes to '${s.next}', which isn't a step`);
184
384
  else if (following && s.next !== following.name)
185
- out.push(`step ${s.name} must go to the next step listed (${following.name}); only the last step can jump back. Branches aren't supported yet: write the sequence in ST instead.`);
385
+ out.push(`step ${s.name} must go to the next step listed (${following.name}); only the last step can jump back. For branches use sfc.chart.`);
186
386
  });
187
387
  return out;
188
388
  }
189
389
  export function registerGraphicalActions(reg, ctx, run) {
190
390
  reg("create_graphical", {
191
- description: "Create a ladder (LD), function block diagram (FBD) or sequential function chart (SFC) program or function block from a structured description; CODESYS draws it. " +
391
+ description: "Create a ladder (LD), function block diagram (FBD), continuous function chart (CFC) or sequential function chart (SFC) program or function block from a structured description; CODESYS draws it. " +
192
392
  "ladder: {rungs: [{when: 'xStart' | 'NOT xStop' | {and: [...]} (series) | {or: [...]} (parallel), then: [{coil: 'xMotor', kind: 'coil'|'set'|'reset'|'negated'}]}]}. " +
193
393
  "fbd: {networks: [{expr: 'xA' | {fn: 'AND', args: [...]} | {fb: 'TON', instance: 'tonDelay', inputs: {IN: ..., PT: 'T#2S'}, output: 'Q'}, to: 'xOut', assign: {ET: 'tEt'}}]}. " +
394
+ "cfc: the same description as fbd, drawn as CFC (boxes run in the order listed, inputs first). " +
194
395
  "sfc: {steps: [{name, initial?, actions?: [{name, qualifier: 'N'|'S'|'R'|'P', st: 'ST code'}], next: 'NextStep', when: 'ST condition'}]}, one sequence: each step goes to the next listed, the last jumps back. " +
396
+ "sfc with branches: {chart: [...]}, top to bottom: {step: 'Idle', actions?}, {when: 'xStart'}, {alternative: [[{when: 'xA'}, {step: 'A'}, {when: 'xDoneA'}], [{when: 'NOT xA'}, {jump: 'Idle'}]]} (one path is taken), {parallel: [[{step: 'Fill'}], [{step: 'Heat'}]]} (all paths run, after a {when}; they join before the next {when}), {jump: 'Idle'}. Steps and transitions alternate; a chart ending with a {when} goes back to its first step. " +
195
397
  "declaration is the POU's ST declaration (PROGRAM or FUNCTION_BLOCK with its variables, FB instances included). Compile afterwards.",
196
398
  inputSchema: z.object({
197
399
  name: z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/),
198
400
  declaration: z.string().describe("e.g. 'PROGRAM LD_Motor\nVAR\n xStart, xStop, xMotor : BOOL;\nEND_VAR'"),
199
401
  ladder: ladderSchema.optional(),
200
402
  fbd: fbdSchema.optional(),
403
+ cfc: fbdSchema.optional(),
201
404
  sfc: sfcSchema.optional(),
202
405
  parent: z.string().optional().describe("Folder or object to create it under (default: the application)"),
203
406
  replace: z.boolean().optional().describe("Replace an existing POU of this name (read it with read_objects, edit the description, send it back). The old one is deleted first; revert_object brings it back from a checkpoint"),
204
407
  }),
205
408
  }, async (a) => run(async () => {
206
- const kinds = [a.ladder && "ladder", a.fbd && "fbd", a.sfc && "sfc"].filter(Boolean);
409
+ const kinds = [a.ladder && "ladder", a.fbd && "fbd", a.cfc && "cfc", a.sfc && "sfc"].filter(Boolean);
207
410
  if (kinds.length !== 1)
208
- throw new Error("Give exactly one of ladder, fbd or sfc.");
411
+ throw new Error("Give exactly one of ladder, fbd, cfc or sfc.");
209
412
  const head = /^\s*(?:\{[^}]*\}\s*)*(PROGRAM|FUNCTION_BLOCK)\s+([A-Za-z_][A-Za-z0-9_]*)/i.exec(a.declaration);
210
413
  if (!head)
211
414
  throw new Error("The declaration must start with PROGRAM or FUNCTION_BLOCK and the name.");
@@ -217,7 +420,7 @@ export function registerGraphicalActions(reg, ctx, run) {
217
420
  if (p.length)
218
421
  throw new Error(p.join("\n"));
219
422
  }
220
- const xml = a.ladder ? ladderXml(a.name, pouType, a.ladder) : a.fbd ? fbdXml(a.name, pouType, a.fbd) : sfcXml(a.name, pouType, a.sfc);
423
+ const xml = a.ladder ? ladderXml(a.name, pouType, a.ladder) : a.fbd ? fbdXml(a.name, pouType, a.fbd) : a.cfc ? cfcXml(a.name, pouType, a.cfc) : sfcXml(a.name, pouType, a.sfc);
221
424
  let replaced = false;
222
425
  if (a.replace) {
223
426
  try {
@@ -232,7 +435,7 @@ export function registerGraphicalActions(reg, ctx, run) {
232
435
  const r = await ctx.bridge.call("object.import_xml", { parent: a.parent, xml, save: false }, { timeoutMs: 120_000 });
233
436
  const path = r.added[0];
234
437
  await ctx.bridge.call("object.write", { path, declaration: a.declaration, save: ctx.autosave });
235
- return `${replaced ? "Replaced" : "Created"} ${path} in ${kinds[0] === "ladder" ? "ladder (LD)" : kinds[0] === "fbd" ? "FBD" : "SFC"}${a.sfc ? ` with ${a.sfc.steps.length} steps` : ""}. Compile to check it, and call it from a task (configure_task) or another POU.`;
438
+ return `${replaced ? "Replaced" : "Created"} ${path} in ${kinds[0] === "ladder" ? "ladder (LD)" : kinds[0] === "fbd" ? "FBD" : kinds[0] === "cfc" ? "CFC" : "SFC"}${a.sfc ? ` with ${a.sfc.steps ? a.sfc.steps.length : stepNames(a.sfc.chart ?? []).length} steps` : ""}. Compile to check it, and call it from a task (configure_task) or another POU.`;
236
439
  }));
237
440
  }
238
441
  //# sourceMappingURL=graphical.js.map