维修三菱FX3U PLC设备时的PING IP问题
引子:公司有台自动机故障,用的是三菱FX3U PLC、三菱六轴机械手、松下伺服驱动电机等。设备运行中卡在某一步不报警也不动作。机台是老设备,都用了7-8年了。查了气缸感应器,电机感应器,电磁阀方方面面因素均没发现问题,设备回原点也正常,运行中时坏时正常。理论上PLC程序也不会有问题。这个时候就要连起电脑来监控PLC程序才能更快的查找问题所在。
因为设备是外购的,不是自己写的,几年前的设备也没有注释,用过FX3U的人都知道,读取的PLC程序是没有注释的,所以监控看了一下程序后,根本发现不了问题的所在。没办法只能在运行设备的时候边运行边监控。这个时候PLC的编程口被电脑监控程序占用了,而威伦通触摸屏处于离线状态,PLC的编程口接了电脑就无法连威伦通触摸屏,而连了威伦通触摸屏就无法连电脑进行监控。没连威伦通触摸屏机台就无法启动。
在这为难的时候想起来了后段自动设备连了MES,而为了连MES那个设备装了一个MODBUS联网桥接器.果断的拆下MODBUS联网桥接器,安装到有故障的这台设备上,安装好MODBUS联网桥接器后读取PLC程序的时候又犯难了。连不上PLC......

又不能对MODBUS联网桥接器进行恢复出厂设备,因为恢复了出厂设置到时要装回后面设备进行MES联网还得重新设置。因为新进设备也要联MES,所以做过相关的MES联网MODBUS联网桥接器做过相应的设置,对联网的IP段、子网掩码、和网关是什么都知道。所以做了个理性的选择,PING MODBUS联网桥接器设置的IP.
拼了几个IP后头痛了,每个IP都要重新输,PING IP的过程中还要慢慢等,就在想能不能批量PING IP呢,网上一搜果然可以。Windows 系统下打开 CMD 窗口,使用 for 循环指令。代码如下:
for /L %D in (1,1,255) do ping 192.168.1.%D
括号第一个数字为批量PING IP的开始IP,
括号第二个数字为批量PING IP的执行间隔,
括号第三个数字为批量PING IP的结束IP,
后面的IP为要PING的IP全地址。
以上方法要订着电脑看,一下没注意PING出来的IP就错过了还一个一个往上找。下面有个不用订着电脑看的方法。
for /L %D in (1,1,255) do (ping 192.168.1.%D -n 1 && echo 192.168.1.%D>>ok.txt || echo 192.168.1.%D >>no.txt)
通的 IP 会写入 ok.txt,不通的写入 no.txt。
Linux 系统可使用 xargs 命令配合文件读取:
xargs -a ip.txt -t -L1 ping -c 1,
其中 ip.txt 每行存放一个 IP 地址 。
当然网上还有一堆要安装的软件,如:PingInfoView、vmPing 或 PingView。
PingInfoView 支持同时对多个主机执行 Ping 操作,可查看延迟、丢包率,并导出 CSV 报告。
可是我不想为了PING这一次IP就安装这些软件,所要果断选择代码PING.
怎么提高 Ping 的效率
在命令行 Ping 时,建议加上 -n 1 参数,只发送一个数据包,默认是 4 个,可大幅缩短等待时间 。
设置超时时间 -w 1000,避免在某个 IP 无响应时卡顿过久,单位为毫秒 。
对于大量 IP,推荐使用并行方式 Ping,例如通过脚本同时启动多个 Ping 任务,而非逐个顺序执行 。
我是一条一条盯着看的哈,看到PING出来通的IP后,记录通的IP直接关闭了CMD命令框.
再用PING出来的IP设置在三菱FX程序软件GX Works2里面,连接成功,完美对PLC进行了监控而不影响威伦通触摸屏的操作。
在监控中发现是取料伺服到了指定位置后M8340没对伺服脉冲指令进行复位,伺服脉冲指令常ON状态,对伺服脉冲指令进行了到位置不复位后延时自动强制复位,机台正常,到此设备维修结束。

