背景:
PLC数据录入MSSQL数据库的应用,以往都wincc+vbs脚本实现的.
萌生了从PLC端直接访问MSSQL数据库的想法,我知道这是一定能实现的,甚至西门子就有免费的库,在codesys端,商店内有第三方付费代码,199欧元每PLC.
目标:
自己从零写代码,功能块只需少量语法规范修改就能兼容codesys与tia两个平台.
这显然是一个非常有难度的事情
SQL的基础
通过TCP发送报文,接收报文
TDS协议库(数据库的访问的报文)的开发
Query生成,且需要兼容中文字符
从第二点开始每一步都很难,以往Socket/TCPClient报文基本都是很短固定内容,双方约束好多少长度,哪一位代表啥意思.这一次 显然不是. 以数据库login为例。 要经过三次双方的握手,密码关键信息,还会涉及到混淆算法。 TDS协议每个数据库的版本都有区别。
代码实现加调试加实际仿真,花了我2个工作日以上.很多坑是调试中才会遇到的,反复通过wireshark抓包分析迭代.
就不细述了,总之没有AI辅助,我是不可能完成这个工程的,我相信也没有多少电气工程师能独立完成.
收益:
全过程都是vibe coding方式进行,指挥AI干活.
借这个机会,我尝试了主流的IDE,VS code+Claude Code(最牛逼最受认可的), VS code+ Copilot(西门子的AI助手就是这玩意),以及国内的TRAE(字节的).以及在这些IDE下各个大模型的表现DeepSeek/MiniMax/doubao seed/Qwen.
给我的感受是,各个AI智能体还是很有特色,大模型切换我是没感受到很强的区别.
还有个挺有意思的各个AI工作模式下,你得到的反馈是不一样的,比如copilot有个学习模式,并不会给你答案,会告诉你几个方向让你来选,如果不合理会解释原因,整个过程是引导式的.
当然这些是我主观的感受,我也只是简单付费,没有很高阶的API也许不一定对.
还有需要区分AI编程工具与豆包这类ChatBot的区分.
再次强调,我不是要鼓吹什么AI干掉工程师之类.我只是很明确的告诉你,在复杂算法类的编程,AI就是你最好的助手.
以及最重要的,脱离了TIA环境,优秀的IDE是怎么个样子,如何工作的.
正式开始:

我不知道能不能看清楚,左边部分为我与AI的聊天窗口,比方我提一个意见,AI会给出他的思考过程与答复,有点像豆包.中间为代码区,我给AI提了修改意见,红色与黄色是删减更变的部分,你可以很直观看到区别,审核后中间顶端的保留一点就只剩下最新版本代码了,同时右下角有每个时间线的代码随时可以调出来.
论IDE工具,哪怕博途作为顶尖第一梯队也是远比不上的,博途集成了Copilot,上限其实也就这样指挥AI改程序,但是Copilot因为众所周知的原因国内是用不了的.
电气工程师没必要自我矮化,认为这类工具与传统PLC是隔绝的.你在设置中取消SCL声明表格形式,完全一样.图上中间这段代码是ST格式的,是完全可以复制到PLC内直接运行的.
以上是便利性,在整个过程中AI其实没有那么完美,我说了这个程序花了2天以上时间. 花掉最多时间的其实是TDS解析,特别是Login登录的握手认证.项目Plan我要告诉AI预期目标的时候,AI明确回复TDS很难很复杂,建议我用别的方式实现.这个协议很长,简单来说协议内约定了长度,约定了你的用户名/混淆算法后密码/数据库相关的内容的偏移量.以及对应字节开始必须对应哪些内容.
这一步反复出错,我用几个AI工具,轮番写代码,所有工具都失败.
整个过程都是通过wireshark抓包给AI分析的.几千字节的16进制交互,AI分析的明明白白.AI认为他没错. 这时候他会提别的建议,有些有用有些没用.
我是怎么解决的?在尝试了很长时间后, 没办法了. 我从codesys商店下载了老外的库, 虽然是收费的, 但是每次都有一小段免费使用时间, 通过那个块做成功了. 抓正确的流程包给AI分析比较最终完全实现的.

上面是双方发送报文与接受报文的过程,下面是对数据流的追踪,天书一样对不,就是通过下面的报文对比完成的代码迭代.其实到最后成功我也没有很搞清楚失败的原因,也许是TDS版本不对,也许是AI写的包头不对,这也是我刻意不去了解的东西,这种一次性且与工控无关的知识我根本不想知道.
还有一部分内容我原先认为可能是比较复杂的,就是PLC数据int,real之类统一转成string格式通过TCP发布出去.还需要兼容中文字符,我的MSSQL表中有中文字段的.没想到AI做的很好,这部分很快就完成了.而且AI可以完全的仿真.

写了挺多的,我也只是展示了实施过程,希望有人能从中得到启发.