剪板机组态王6.55和6.60sp3仿真带参考word资料
在工业自动化圈子里混久了,总有几个老伙计让你又爱又恨,组态王6.55和它的升级版6.60sp3绝对算一对。最近在折腾剪板机的仿真项目,发现这俩版本就像皮卡车上的新旧轮胎——老胎稳当但容易打滑,新胎抓地力强可偶尔闹脾气。
先说说老将6.55的仿真脚本,调试剪板机行程时总得跟这个函数打交道:
Sub BladeControl(ByVal Position As Double) If Position < 0 Then Call SetAlarm("E001", "超程异常") Else Call MoveTo(Position, 1500) '1500ms运动时间 End If End Sub这个1500ms的参数是个暗坑,新手容易直接抄官方手册的2000ms设定,结果实际设备急停时液压缓冲不够直接撞刀。后来发现把运动时间缩短到1200-1500ms区间,配合Word资料里的《液压缸响应参数表》调整,仿真报错率直降40%。
剪板机组态王6.55和6.60sp3仿真带参考word资料
升级到6.60sp3后,通讯协议配置明显利索了。以前在6.55里要手动拼Modbus报文:
uint16_t crc_calc(uint8_t *data, int len) { //...省略15行CRC计算代码 }现在直接甩个预制模板搞定,但注意新版的事件触发机制有个隐藏设定——时间戳精度从毫秒级变成微秒级后,某些依赖定时器的脚本会抽风。上周就遇着个鬼畜bug:剪切计数每到237次就清零,最后发现是定时器溢出导致的,加个强制类型转换才镇住:
Dim cnt As Long '必须用Long替代Integer If Timer * 1000000 Mod 237 = 0 Then cnt = 0 End If仿真过程中最带劲的还是物料计算模块。参考Word里的《板材套料算法》,用了个二维数组缓存方案:
Dim MaterialQueue(20,5) As Double '20种材料,5个属性位 Sub CacheOptimize() For i = 0 To 19 If MaterialQueue(i, 3) > SheetThickness Then Call SkipMaterial(i) '跳过不适用材质 End If Next End Sub这代码在6.55里跑得欢,到6.60sp3却频繁报数组越界。原来新版对动态数组的索引校验更严格,得在初始化时显式声明Redim Preserve才行。
折腾完两版组态王,悟出个道理:工业软件升级就像给运转中的齿轮上润滑油,既得胆大心细,又要留着老版工程文件当救命绳。那些Word参考资料别看文件名土,关键时刻比Stack Overflow还好使——毕竟上面记的都是老师傅们真刀真枪踩出来的坑位图。