111,104
社区成员




我电脑一直是用自动获得IP地址的方式,给PLC灌程序时也是如此。
近来要用C#上位机与PLC通信,发现不成功。而这个C#上位机是几年前开发的,与当时的机器里的PLC通信是成功的,可见程序没问题。现在过了很多年,我电脑里的设置也许被改过了,所以不能与现在机器里的PLC通信。当然这是我猜测。目前我已经离开机器,无法实验,故来相问。
你得先了解 你写的C# 在跟PLC通讯的时候 是作为 客户端 还是服务端?
如果你是客户端. 那么你的IP无所谓. 只要能ping通 (一般在一个网段内) 即可.
所以你改不改IP 没什么用.
正常来说是这样的.
如果你作为服务端,那么你的IP一定是需要固定的. 但是一般来说 客户端的软件中 是需要配置服务端的IP的.
而你总不能用你那开发电脑作为服务端来跑程序吧.
所以这也不合理.
为什么必须设置固定IP?
通信协议要求
PLC通信协议(如西门子的S7协议、三菱的MC协议)要求上位机与PLC在同一局域网网段内(例如PLC IP为192.168.0.1,电脑IP需为192.168.0.x)。若电脑通过DHCP获取到不同网段的IP(如192.168.1.x),将无法建立TCP连接。
PLC的访问限制
多数PLC需配置允许通信的设备IP地址列表。例如西门子S7-1500需在TIA Portal中设置“允许PUT/GET访问”,若电脑IP未固定或未被授权,通信会被拒绝。
网络稳定性
工业环境强调实时性,DHCP分配的IP可能因租期到期或路由器重启而变化,导致通信中断。固定IP可避免此问题。
🚫 自动获取IP(DHCP)为何可能失败?
网段不一致:DHCP分配的IP可能与PLC网段不同(如PLC在192.168.0.x网段,电脑分配到192.168.1.x)。
IP冲突风险:DHCP可能分配已被其他设备占用的IP,引发冲突。
防火墙/路由器限制:企业网络可能隔离了DHCP网段和PLC网段。
🔍 通信失败的常见原因排查
根据您的描述(过去成功,现在失败),可能的原因包括:
电脑IP变更
DHCP分配的IP已脱离PLC网段。例如之前手动设置过IP,后重置为自动获取。
PLC IP重置
设备维护可能将PLC恢复出厂设置,IP变为默认值(如西门子PLC默认192.168.0.1)。
网络配置变更
新增路由器、交换机或VLAN划分导致网络拓扑变化。
软件/安全设置
防火墙阻止了通信端口(如西门子S7端口102、三菱MC端口6000)。
PLC未启用“允许远程访问”(西门子需勾选PUT/GET选项)。
🛠️ 解决方案:手动设置电脑IP
以下是具体步骤(以Windows为例):
确认PLC的IP地址
通过PLC编程软件(如TIA Portal、GX Works3)查看PLC当前IP。
若无法连接,尝试ARP扫描或联系设备维护人员。
设置电脑IP
控制面板 → 网络和共享中心 → 更改适配器设置 → 右键以太网 → 属性 → IPv4 → 使用以下IP地址:
IP地址:与PLC同网段(如PLC为192.168.0.1,电脑设为192.168.0.100)。
子网掩码:255.255.255.0(多数情况)。
网关:非必需,但需与PLC网关一致(若有跨网段通信)。
关闭防火墙
临时禁用防火墙测试通信,若成功则需添加端口例外规则。
⚙️ PLC通信要求对比
设备/协议 默认端口 IP设置要求 配置工具
西门子S7协议 102 同网段固定IP TIA Portal
三菱MC协议(FX5U) 6000 同网段固定IP GX Works3
Modbus TCP 502 同网段固定IP PLC编程软件
💎 建议操作流程
固定电脑IP:按PLC网段手动配置(见前文步骤)。
验证基础连接:
ping # 确保物理链路通畅
检查C#程序配置:
确认代码中PLC IP地址与当前一致(如192.168.0.1)。
若用第三方库(如S7.Net Plus),检查Plc类初始化参数。
PLC端复查:
确认PLC以太网模块已启用(三菱FX5U需在GX Works3开启MC协议)。
西门子PLC需勾选“允许来自远程对象的PUT/GET访问”。
💡 注:若现场PLC支持DHCP服务(少数型号),可将电脑设为自动获取,但需确保PLC的DHCP分配的IP符合网段要求。工业环境仍推荐固定IP以保障稳定性。
🌟 总结
电脑必须设置与PLC同网段的固定IP才能稳定通信。您遇到的故障大概率是DHCP分配了不同网段IP或PLC配置被重置所致。建议在设备现场按上述步骤重新配置IP,并同步检查PLC的通信授权设置。若仍有问题,可通过Wireshark抓包分析TCP连接请求是否被拒绝。