请教各位,C++ Builder如何用Modbus TCP协议实现PC与多个PLC通讯

木奇 2011-12-06 03:49:42
请教各位,C++ Builder如何用Modbus TCP协议实现PC与多个PLC通讯?

目前程序用Socket建立连接,能用Modbus TCP协议与单个PLC建立连接,读写数据,如果需要同时连接多个PLC如何实现,是采用建立多个Socket实现?这样会不会占用太多资源?还是只要一个socket,每次连接后,再重新读取数据?
麻烦各位给个思路,现在混乱中,谢谢啦!
...全文
595 点赞 收藏 18
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
木奇 2011-12-07
[Quote=引用 14 楼 cankoo 的回复:]

用不到实时监控的话,可以循环扫描,轮流发命令,收一个处理一个。个人感觉用OPC会更好。
[/Quote]

目前程式是PC端作上位机,主动读取每个PLC中的数据,作数据处理并显示,是不是PC端应该循环读取每个PLC的值呀?
OPC不太懂,有没有相关的书推荐一下,学习学习,谢谢!
回复
cankoo 2011-12-07
用不到实时监控的话,可以循环扫描,轮流发命令,收一个处理一个。个人感觉用OPC会更好。
回复
木奇 2011-12-07
非常感谢,我试试.
回复
zzbinfo 2011-12-07
如果要求要求要PC主动连接PLC,你就用client Socket吧,至于你是用多个client Socket还是单个,你要求是多个plc同时读取的,你只能多个client Socket。
回复
木奇 2011-12-07
是不是我问的问题太没水准了,怎么没人理我了??
回复
木奇 2011-12-07
[Quote=引用 16 楼 songhtao 的回复:]

引用 15 楼 flying0302 的回复:
引用 14 楼 cankoo 的回复:

用不到实时监控的话,可以循环扫描,轮流发命令,收一个处理一个。个人感觉用OPC会更好。


目前程式是PC端作上位机,主动读取每个PLC中的数据,作数据处理并显示,是不是PC端应该循环读取每个PLC的值呀?
OPC不太懂,有没有相关的书推荐一下,学习学习,谢谢!


可以用多线程,并发读……
[/Quote]

另外请问下,采用多线程,怎么判断是读取哪个PLC的值呀?谢谢!
回复
木奇 2011-12-07
[Quote=引用 16 楼 songhtao 的回复:]

引用 15 楼 flying0302 的回复:
引用 14 楼 cankoo 的回复:

用不到实时监控的话,可以循环扫描,轮流发命令,收一个处理一个。个人感觉用OPC会更好。


目前程式是PC端作上位机,主动读取每个PLC中的数据,作数据处理并显示,是不是PC端应该循环读取每个PLC的值呀?
OPC不太懂,有没有相关的书推荐一下,学习学习,谢谢!


可以用多线程,并发读……
[/Quote]

请问有没有用多线程实现通讯的代码啊,迷糊中,谢谢啦!
回复
我不懂电脑 2011-12-07
[Quote=引用 15 楼 flying0302 的回复:]
引用 14 楼 cankoo 的回复:

用不到实时监控的话,可以循环扫描,轮流发命令,收一个处理一个。个人感觉用OPC会更好。


目前程式是PC端作上位机,主动读取每个PLC中的数据,作数据处理并显示,是不是PC端应该循环读取每个PLC的值呀?
OPC不太懂,有没有相关的书推荐一下,学习学习,谢谢!
[/Quote]

可以用多线程,并发读
回复
木奇 2011-12-06
[Quote=引用 9 楼 zzbinfo 的回复:]

引用 8 楼 flying0302 的回复:
PC端采用Server Socket怎么与PLC主动连接呀,目前程式是采用PC主动连接PLC,主动读写PLC寄存器中的数据,谢谢!……

你要多个PLC同时连接pc,应该把pc做服务器端吧,让plc主动连接pc。这个只是我个人的想法,具体还要看你这个项目的具体要求。
[/Quote]

要求要PC主动连接PLC,Server Socket能做到吗,如果不能用client Socket连接PLC应该采用建立多个Socket进行连接,还是建立一个每次要读写数据,先连接,再读写呀,谢谢!
回复
zzbinfo 2011-12-06
[Quote=引用 8 楼 flying0302 的回复:]
PC端采用Server Socket怎么与PLC主动连接呀,目前程式是采用PC主动连接PLC,主动读写PLC寄存器中的数据,谢谢!……
[/Quote]
你要多个PLC同时连接pc,应该把pc做服务器端吧,让plc主动连接pc。这个只是我个人的想法,具体还要看你这个项目的具体要求。
回复
木奇 2011-12-06
[Quote=引用 7 楼 zzbinfo 的回复:]

引用 6 楼 flying0302 的回复:
另外,PC 采用Client Socket 合理吗?

pc端采用Server Socket作为服务器端操作。具体你参照资料把现有的改成阻塞模式的通讯就行了
[/Quote]


PC端采用Server Socket怎么与PLC主动连接呀,目前程式是采用PC主动连接PLC,主动读写PLC寄存器中的数据,谢谢!
回复
zzbinfo 2011-12-06
[Quote=引用 6 楼 flying0302 的回复:]
另外,PC 采用Client Socket 合理吗?
[/Quote]
pc端采用Server Socket作为服务器端操作。具体你参照资料把现有的改成阻塞模式的通讯就行了
回复
木奇 2011-12-06
另外,PC 采用Client Socket 合理吗?
回复
木奇 2011-12-06
能说的具体些吗,我是初次做通讯方面的程序,很多都不太懂,谢谢啦!
回复
zzbinfo 2011-12-06
这个参照Socket的阻塞模式做,应该能满足你的要求
回复
木奇 2011-12-06
PC要实时读取PLC中的数据,并做数据处理,目前设计是按最多连接的仪器数200个左右,实际应该只有几十台设备,这样的话,应该怎样设计?谢谢!
回复
cankoo 2011-12-06
思路已经很清晰了
回复
zzbinfo 2011-12-06
这个要看你的具体需求的吧,看你PLC通讯是不是要求尽量实时的,还有就是同时最多有多少个联机?
回复
相关推荐
发帖
网络及通讯开发
创建于2007-08-02

1300

社区成员

C++ Builder 网络及通讯开发
申请成为版主
帖子事件
创建了帖子
2011-12-06 03:49
社区公告
暂无公告