@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.
- package/CHANGELOG.md +24 -0
- package/README.md +10 -7
- package/README.zh-CN.md +6 -5
- package/dist/codesys/compare.d.ts +17 -0
- package/dist/codesys/compare.js +105 -0
- package/dist/codesys/compare.js.map +1 -0
- package/dist/codesys/debug.d.ts +2 -0
- package/dist/codesys/debug.js +96 -2
- package/dist/codesys/debug.js.map +1 -1
- package/dist/codesys/graphical-read.d.ts +7 -4
- package/dist/codesys/graphical-read.js +103 -3
- package/dist/codesys/graphical-read.js.map +1 -1
- package/dist/codesys/graphical.d.ts +51 -4
- package/dist/codesys/graphical.js +247 -44
- package/dist/codesys/graphical.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +2 -2
- package/dist/tools.js +66 -12
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
- package/watcher/mcp_debug.py +54 -2
|
@@ -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
|
|
73
|
-
*
|
|
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(
|
|
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, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
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
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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
|
|
173
|
-
*
|
|
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.
|
|
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
|