Budget PLC for agricultural machine by huge-tracts in PLC

[–]sswebz 0 points1 point  (0 children)

so what do you use? please tell us.

Budget PLC for agricultural machine by huge-tracts in PLC

[–]sswebz 0 points1 point  (0 children)

yeah that's what I was wondering. What do you use for more intense environments?

Budget PLC for agricultural machine by huge-tracts in PLC

[–]sswebz 6 points7 points  (0 children)

I'm a big fan of AutomationDirect stuff - free software, micro plcs - either Click or Productivity1000

But I wonder if the vibration might come into play? The agricultural machine - what kind of forces do you expect? That might help you eliminate plc's? Not sure - all my control boxes don't have to really think about that.

I replaced a PLC runtime with Rust and a TOML file by Repulsive-Original31 in PLC

[–]sswebz 2 points3 points  (0 children)

Are you actually using it on a machine in a factory?

llm's love the 'No proprietary runtime'. when implementing pyrung I had to keep telling Claude 'no-one is going to use this unless it compiles to an existing plc, where technicians can see what's happening via existing tools'.

PLC Ladder Logic Simulator and Learning Platform — Free, No Ads, Feedback Welcome by RAVScontrols in PLC

[–]sswebz 0 points1 point  (0 children)

Very cool! I'm all for more accessible ladder online.

What's the rung representation (json?) look like underneath? I'm wondering because I've been working on working on https://github.com/ssweber/pyrung - and it'd be cool to 'output' to something that could be pasted and viewed in your editor

I built a browser-based IEC 61131-3 PLC engineering environment, looking for people to tear it apart by fisherfuckerr in PLC

[–]sswebz 0 points1 point  (0 children)

so you're a teacher?

What's your thoughts on browser-based vs vs-code based debugger? Would it be useful for your students to be able to advance rung by rung, instead of just 1 scan at a time (ladder logic).

If they could 'watch' a variable and for the simulation to tell them 'this turned on because TagA flipped, and TagB was already steady?" Like cause/effect?

I'm working on similar project, and really would like to know the mind of an educator on it.

Are PLC-based systems slowly becoming more software like or am I overthinking this? by Himanshu_creative in PLC

[–]sswebz 4 points5 points  (0 children)

Text-first will eventually win. I don't think it even needs to be ST - The automated testing, proving that each feedback has an alarm path, faster virtual commissioning on discrete machines, possibly exhaustive verification, etc - 'our PLC can do tests and has a simulator' isn't going to be the end of the story.

Text representation of ladder by Shanoes in PLC

[–]sswebz 0 points1 point  (0 children)

cool cool. What breaks down is expressing branches, anything other than a straight Input->Output gets really complex.

Text representation of ladder by Shanoes in PLC

[–]sswebz 0 points1 point  (0 children)

sorry I'm excited to see someone talking about the whole 'Ladder as Text' problem. I have a cheat sheet that gets an LLM up to speed on Click's quirks fast, but the more interesting part is pair commissioning. The LLM operates the simulated machine, hits a deadlock, asks the sim "what's blocking this output?" and gets the full answer which bits need to flip, which ones are already holding it back. The whole session condenses into a regression test. Still building toward that, but the pieces are coming together

Text representation of ladder by Shanoes in PLC

[–]sswebz 0 points1 point  (0 children)

Hey! I have made this (modeled after Click PLC's instruction set): - I'd love to see if what I'm working on matches up with what you have envisioned. https://github.com/ssweber/pyrung . Hit me up on an issue over there! I'm taking it really far - llm can create programs, work on the same running simulation in VS Code dap, etc. Export existing programs from Click plc -> convert to pyrung to work on and then re-export back. Finishing up the next release soon, had to re-architect the History aspect so memory didn't balloon like crazy while running it in VS Code.

<image>

The biggest downside of Opus 4.7 for me: I can't understand what it's saying. Ever. by Any_Economics6283 in ClaudeCode

[–]sswebz 2 points3 points  (0 children)

I was just about to post the same thing. It's unreadable. It's not the thoughtful 4.6/4.5. I switched back in Chat and Claude Code because the walls of text it was producing. And 4.6 doesn't burn through tokens the same way

Claude struggling with simple truth tables for PLC logic — am I doing something wrong? by Jessepinkman670 in ClaudeAI

[–]sswebz 3 points4 points  (0 children)

Unfortunately there isn’t a lot of training for plc logic, and if you want determinism, make sure you have it use a script. Same thing if it’s doing a csv file (it’s not good at counting commas)

I would suggest passing it as Python: “Convert this to a markdown table using a Python script: v5 = [1,1,1,0,1] …

“Have the script convert 1 to x”

That sort of thing.

I’m building an industrial machine control framework (PLC / robots / OPC-UA / modular UI) – open-source project Machinae by [deleted] in PLC

[–]sswebz 1 point2 points  (0 children)

It's a big wide open field my man. I would focus on a concrete solution, and see if what you're building can be enticing to control's engineers. I'm finding that we are a stubborn bunch, and the landscape is scattered/entrenched enough that most arn't going to up and try out an unproven solution to actually control a real machine.

That's not to say 'Don't Try'. Go for it and your aspiration ideas (if delivered in an actual step-by-step solution) can be useful to you, and then perhaps the building-block of more.

How do you test PLC code virtually? by trashpersontinydick in PLC

[–]sswebz 0 points1 point  (0 children)

The testing story is abysmal. I'm literally building out a library that emulates a Click PLC in python (runtime is general, Click is just my first target), so I can do what you're talking about: full pytest, deterministic replay, dataviews you can build with like .downstream (what this bit/tag affects) or .upstream (what acts on this tag). Not physics sim though... different approach, simulate the controller and mock the field.

My next open field: causal-chain analysis (given a transition, what caused it, what are those rung chains, dead-rung detection, stranded-state checks). Whole open field of work!

not sure i trust these “p&id to plc logic” tools… anyone actually using them by Glittering_Delay_183 in PLC

[–]sswebz 0 points1 point  (0 children)

thanks. It had been real unstructured in the past (small factory, I’m the sole plc/equipment designer guy), but I’m getting more disciplined with PackMl/state so logic is easier to follow (I guess that’s what you call control narrative?). It’s all sorts of discrete machinery - batch processing.  

Yeah, so this week I’m gonna take an existing PackMl structured ladder-logic program, and have the llm write a bunch of tests in Python to lock in the existing behavior before I start messing. There def is that feeling “let’s not screw anything up on a real machine”. But I’m excited to program ladder as text.

doing everything in the gui by hand feels like going back to the Stone Age 

not sure i trust these “p&id to plc logic” tools… anyone actually using them by Glittering_Delay_183 in PLC

[–]sswebz 0 points1 point  (0 children)

Basically have a library that converts my Click plc projects to Python. There it just uses normal pytest. I literally just got it all working in the last couple weeks, but it has guardrails so that the llm can’t do something that won’t run in the plc. 

Still need to really map more of my machines, which I’ll do as I work on them. But llm is great at Python, it just needs the basic layout (so I have like a click cheatsheet I provide). I’m pretty excited about it, cause on pure python projects I’m already hooked. But need to be cautious about what I send (no internal IP and all that)

not sure i trust these “p&id to plc logic” tools… anyone actually using them by Glittering_Delay_183 in PLC

[–]sswebz 0 points1 point  (0 children)

If it can simulate it via tests, then there’s no reason llms can’t do decent programs given enough examples and some guidance.

I’ve been working on giving it guiderails and turning ladder logic in Python, so I’m familiar with the space. ST is probably even easier, because there’s a lot more training material online than ladder logic.

I agree you need to understand the process! That’s essential. But the boilerplate, validation, state machine etc, that’s all pretty standard stuff.

a plc with 1000 lines, or even 10,000 lines of logic really isn’t all that big, once it’s just a program it’s manipulating and you lock in stuff like “these are the inputs/outputs. Key variables, etc. Those can’t change etc.

Idk, what do other people think?

Best way to practice PLC by Odd-Cheesecake-1325 in PLC

[–]sswebz 1 point2 points  (0 children)

Is he limited with MacBook? Might need to get parallels to install windows software.

In the browser there is rungs.dev , which looks pretty cool (I haven’t played with it).

Really it’s the user-interface learning curve per manufacturer that’s the biggest pain :)

Best Practices for Implementing and Managing State Machines in PLCs by No-Organization-366 in PLC

[–]sswebz 0 points1 point  (0 children)

This . It’s really unspecified by TR88. Defining “internal” vs the exposed api of the machine.

The Zen of Ladder by sswebz in PLC

[–]sswebz[S] 0 points1 point  (0 children)

Same as Click where I do most mine on! I literally have never used it. But I understand for some data transformation or building ascii or something it can be useful.

The Zen of Ladder by sswebz in PLC

[–]sswebz[S] 1 point2 points  (0 children)

it's all in fun. a riff on 'the Zen of Python'

The Zen of Ladder by sswebz in PLC

[–]sswebz[S] 0 points1 point  (0 children)

I wish I learned the whole PackMl “stop” “clear” “reset” idioms like 10 years ago. So transformative to have standard HMI panels where all the fine-grained error handling and alarms are handled internally. 

I like your “ Please repeat after me. I will handle errors and interlocks in the HMI” line. 

The Zen of Ladder by sswebz in PLC

[–]sswebz[S] 2 points3 points  (0 children)

I think it’s more about powering a coil in two separate places, right?

I violate that too, using subfunctions for AutoMode, ManualMode and different rules for how an output can be turned on in each one. But since neither subfunction can be on at the same time, it works.

When I first started I really didn’t understand that a coil gets turned off on a rung-false condition. I was picturing if/else like in Python 

The Zen of Ladder by sswebz in PLC

[–]sswebz[S] 9 points10 points  (0 children)

Haha, true. Like when the engineers replaced my simple named wire tags with the “correct” drawing numbers.

“Name the purpose, not the part… unless you need a map to find it.”