跨网段博途能连上PLC,但是连不上触摸屏
背景:触摸屏和电脑不再一个广播域,但是通过三层交换机路由连接,中间是通过VLAN隔离,在PC端用博途下载程序,开始一切正常,下载三个触摸屏程序后,然后第四个下载失败并重试三次后,发现就再也连不上了,反复重启依然如此,然后还试了所有的触摸屏发现都无法连接上了,但是PLC依然正常连接下载。
解决思路:先测试触摸屏的IP地址和端口,发现都能正常ping通。通过wirshark抓包监测,点击在线搜索发现博途根本没有发出连接请求触摸屏的102端口,应该是本地验证不通过导致不发请求,在线模式输入地址搜索,点击搜索后地址框立即爆红而且地址数据变成0。通过抓包监测,发现每次点击搜索,博途会发arp广播寻找触摸屏的mac地址,并能收到回应,但是发现触摸屏的MAC地址被交换机的MAC地址取代了,交换机没有把真实MAC地址告诉客户端,应该是交换机的arp代理功能,但是不确定博途是否一定要知道这个真实的MAC地址,我尝试在命令行输入
arp -s 172.39.22.123 真实MAC地址(设备上查询到的),使用静态绑定后,发现验证能通过,地址框不再爆红了,我想爆红原因可能是通过arp获取到的触摸屏MAC地址和网关MAC地址一致导致博途判断无法连接,使用静态绑定后,博途不再arp广播查询了。虽然现在不爆红,但是还是无法连接。再次抓包测试,和原来一样,博途也没有发出连接请求,估计还是无法验证通过。再次查找资料,发现PLC和触摸屏的工作机制不一样,PLC作为主动端,不依赖于LLDP/DCP协议来识别设备,我想PLC的工作机制应该是先尝试发起连接后,再识别。我尝试验证,通过PLC在线功能,把PLC的IP地址换成触摸屏的IP地址后,发现能发起连接请求,三次握手也正常,但是最终结果肯定也是连不上,毕竟PLC找到触摸屏肯定无法连接。通过资料查找发现西门子触摸屏依赖于DCP/LLDP协议识别设备,DCP是西门子私有协议,LLDP是数据链路层协议,而且触摸屏关闭LLDP也是可以被正常识别,所以主要还是DCP协议占主导,最好是DCP和LLDP的混杂模式,我查看数据包并没有发现触摸屏发出的DCP和LLDP包,本来触摸屏和PC不在一个广播域,不清楚这类数据包是否能正常透传过来。我想起开始是能下载的,后来无法连接的原因我推想应该是被三层交换机侦测到了DCP的数据包,并被强制过滤,可能是触发了交换机的防御机制,或者说人为操作的结果。具体原因至今无法完全论证,时至今日依然无法连接下载触摸屏程序。