C# 编写pc与西门子1500通讯,用modbus tcp协议
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 编写pc与西门子1500通讯,用modbus tcp协议相关的知识,希望对你有一定的参考价值。
问题1:连接时,端口只能是502吗?
问题2:同问题1相关。有2个DB块,一个DB1==>用于发送(plc发送给pc,即接收),DB10==>用于接收(pc发送给plc,即写入);如果只有一个端口502,那么当pc发送信息(写入)时,会自动找到DB10吗?同理,当pc接收数据时,会自动指定DB1吗?
问题3:同问题2相关,如果有多个端口号,那么,timer事件定时接收plc的信息,如果同要写入信息给DB10,接收会不会停止或产生异常(或者说写入产生异常)
1500PLC内需要调用modbus功能块 来实现modbus通讯。DB块的地址在modbus功能块的接口上指定。 参考技术B 1.C#语言开发,采用NET4.0框架,模块化设计,通信效率不怎么高 可以凑合用。
2.工程结构类似OPC通讯方式,采用Tag的方式,通过标签名就可以读写寄存器。
3.采用XML配置式标签的方式实时读写PLC内部寄存器,可读写寄存器包括I、Q、PI、PA、M、DB。
4.具有PLC断线重连功能,通讯稳定可靠。
5.完全开源免费、包括Dll文件、附件内包含源代码。
https://github.com/falionname/Siemens 参考技术C 用ModbusTCP需要在PLC里面编写程序才能实现的,可以搜一下WinTcpS7这个官方程序集资源,可以直接与PLC通讯;
西门子200MODBUS通信电度表读取地址怎么设置
我用西门子200做主站,通过MODBUS通信读写了几台变频器,轮训读写程序已经做好,也测试过后来增加了两个仪表不知道怎么读取了,站号和波特率已经设好了,八路巡检仪(温控表)中16进制的5C0是第一点的温度,三相电表中16进制的100表示电量,怎么读取他的地址啊?16#5C0读取41472吗(40000+1472)?
参考技术A 16#5C0的地址是4147316#100的地址是40257
以上是关于C# 编写pc与西门子1500通讯,用modbus tcp协议的主要内容,如果未能解决你的问题,请参考以下文章
PLC西门子通讯协议、以太网通讯协议、串口通讯协议、MODBUS