乐于分享
好东西不私藏

甲方丢来一堆PDF点表,以前手动整理要两三天,现在我用AI几分钟搞定

甲方丢来一堆PDF点表,以前手动整理要两三天,现在我用AI几分钟搞定
因公众号更改推送规则,请点“在看”并加“星标”

第一时间获取精彩技术分享

一、现象

做MES项目,甲方负责PLC,我们负责上位机。

甲方给的就是这样的东西:

某个西门子DB块的点位表PDF,里面写着:变量名、数据类型、偏移量、起始值——几十个字段,十几个DB块,每个DB块结构不同。

我的任务:把这些PDF里定义的点位,一条条输入到KingIOServer的TAG_TABLE导入模板中,生成一个可以直接导入KingIOServer的Excel文件。

听起来很简单?不就是把PDF里的内容抄到Excel里吗?

但实际做起来才知道有多坑:

  • 变量名、数据类型、地址偏移、位号,一个都不能错
  • String类型的地址格式是 DB块.偏移.长度Bool类型是 DB块.字节.位号Int/Real 是 DB块.偏移——不同数据类型地址格式不一样
  • 甲方PDF里可能还有结构体数组(Array of Struct),一个材料数组展开就是8个点位
  • 如果一个项目有40个工位,每个工位80个字段,就是3200个点位——手动敲,敲到怀疑人生

以前一个项目下来,光整理点表就要花两三天,而且眼睛盯久了,很容易敲错地址或者漏掉某个点位,导入后通讯不上,又要回头一个个排查,非常痛苦。


二、问题分析

这类工作的本质是:「格式转换」

甲方PDF的格式(TIA Portal DB定义):

名称
数据类型
偏移量
起始值
工单ID
String[12]
0.0
''
状态
Int
14.0
0
申请
Bool
16.0
false
任务完成
Bool
16.1
false

KingIOServer导入格式(TAG_TABLE,51列):

TagName
TagDataType
ItemDataType
ItemName
ItemAccessMode
...
XXX_工单ID
IOString
STRING
DB[N].0.14
读写
...
XXX_状态
IOShort
SHORT
DB[N].14
读写
...
XXX_申请
IODisc
BIT
DB[N].16.0
读写
...
XXX_任务完成
IODisc
BIT
DB[N].16.1
读写
...

核心映射规则:

TIA类型
KIO类型
地址格式
量程
String[n]
IOString/STRING
DB块.偏移.长度(2+n)
Int
IOShort/SHORT
DB块.偏移
±32767
Real
IOFloat/FLOAT
DB块.偏移
±1e9
Bool
IODisc/BIT
DB块.字节.位号
Byte
IOByte/BYTE
DB块.偏移
0~255
DInt
IOLong/LONG
DB块.偏移
±999999999
DWord
IODWord/LONG
DB块.偏移
0~999999999

这些规则固定不变,完全可以自动化。


三、解决方案

我用的工具是Hermes Agent(一个开源的AI Agent工具),它可以在本地运行,连接DeepSeek等大模型,帮我执行自动化任务。

核心思路:让AI解析PDF → 按映射规则生成Excel,一步到位。

3.1 解析PDF

甲方PDF是西门子TIA Portal导出的DB定义,结构固定:属性表(DB编号、名称)+ 字段表(名称、数据类型、偏移量)。

AI自动提取这两个信息,得到DB编号和字段列表。

3.2 按规则转换

对于每个字段,按上述映射规则生成对应的KIO行:

  • String[n] → IOString,地址 DB{N}.{偏移}.{n+2}
  • Int → IOShort,地址 DB{N}.{偏移}
  • Bool → IODisc,地址 DB{N}.{字节}.{位号}
  • Real → IOFloat,地址 DB{N}.{偏移}
  • 说明性字段(如"原料 库位申请")→ 不建点,存入Description列

3.3 处理复杂结构

实际项目中,甲方点表不止简单的平铺字段,还有几种复杂情况,AI都能处理:

① 结构体数组(Array of Struct)

一个材料数组包含ID、长、宽、厚度4个子字段,共2个元素 → 自动展开为 材料0_ID、材料0_长、材料0_宽、材料0_厚度、材料1_ID……共8个点位,地址自动匹配。

② 分组重复字段

同一个DB里有"托盘1"和"托盘2"两组,每组都有"状态"和"到位"字段 → 自动加前缀:托盘1_状态、托盘1_到位、托盘2_状态、托盘2_到位,避免重名。

③ 40个工位×80个字段

最夸张的一个点表:40个工位,每个工位74个字段,共2960个点位。如果手动敲,眼睛绝对看花。AI自动为每个工位加前缀(工位数据0_工单ID、工位数据1_工单ID…),一次生成,5分钟搞定。

④ 自动识别访问模式

有些甲方的PDF注释列里会写R/W、R(读写/只读),AI自动识别,直接配置到对应的ItemAccessMode列,不用手动指定。


四、效果对比

对比项
手动整理
AI自动生成
1个DB(50个点)
约1小时
30秒
10个DB
1天
5分钟
40工位×74字段(2960点)
2~3天
5分钟
准确率
凭眼力,难免出错
100%(规则化)
重复劳动
每个项目来一遍
一次配置,永久复用

实际项目数据:一个MES项目的配盘系列点表,共18个DB块,6000+个点位,AI全部转换完成,耗时不到1小时(主要是解析PDF的时间,生成Excel本身几秒钟)。


五、总结

这次经历让我最大的感触是:

工控人也要学会"借力"——不是所有问题都要靠加班解决。

重复性工作(格式转换、数据整理、批量录入)是AI最擅长的。把精力解放出来,去解决真正的业务逻辑问题,效率翻倍,人也轻松。

当然,AI不是万能的:

  • 甲方的PDF格式五花八门,需要不断补充规则
  • 生成完成后的验证还是得人工做(抽查几个点位地址)
  • 涉及保密数据,建议在本地运行AI,不要上传到云端

但总体而言,这个工作流已经把"几天"变成了"几分钟",投入产出比非常高

如果你也在做KingIOServer的点表整理,或者有类似的重复性数据转换工作,可以试试这个思路——让AI帮你做苦力,你做更有价值的事。


附录:转换规则速查表

TIA类型
TagDataType
ItemDataType
量程
地址格式
String[n]
IOString
STRING
DB{N}.{偏移}.{2+n}
Int
IOShort
SHORT
32767/-32768
DB{N}.{偏移}
Real
IOFloat
FLOAT
±1e9
DB{N}.{偏移}
Bool
IODisc
BIT
DB{N}.{字节}.{位号}
Byte
IOByte
BYTE
255/0
DB{N}.{偏移}
DInt
IOLong
LONG
±999999999
DB{N}.{偏移}
DWord
IODWord
LONG
0~999999999
DB{N}.{偏移}

注意:地址在 KIO 的 ItemName 列,RegName 恒为 DB,RegType 恒为 3,不要填反。