浔之漫智控技术(上海)有限公司
西门子PLC模块 , CPU模块 , DP通讯电缆 , 6GK交换机
西门子数字量输入模块6ES7221-1BF22-0XA8
发布时间:2023-10-26

问:我的下位机是西门子S7-300,上位机是由VC++编写的监控界面的PC机,现在上位监控与plc要实现通讯,请问有哪些通讯方式,哪种通讯方式比较好,每种方式是如何实现的?

答:1、Prodave通讯
Prodave是西门子提供的一个软件包,为**语言编程和plc通讯提供接口。
通讯接口:MPI
因为MPI口是每块cpu的编程口,所以plc不需要另外添加通讯模块,这个方案就比较经济,而且prodave软件包里面附带了example和详细的说明,用起来应该比较简单和方便(本人只匆匆看过文档,没有实验过)。这方面的资料在百度上很多。当然,mpi的速度是有限的,如果采用普通的pc adapter连接pc和plc,*高速度也就38.4kbps,我不知道prodave能否支持mpi卡(5611之类的话),如果可以的话速度可以达到187.5kbps。
2、串行通讯
看到过一些论文,采用串行通讯的方法实现pc和plc通讯。这种情况存在几点要求:
a、需要为plc添加一块串行通讯模块,比如300的话就需要cp340或者cp341(前者便宜些);
b、plc里面需要对串行通讯进行编程,其实也就是接收报文和发送报文,调用fb2/fb3(cp340的话)。
c、串行通讯的速度是有目共睹的,而且cp340或者cp341的数据吞吐量也是有限的,即报文长度是有限制的,因此个人认为通讯数据量大的话采用串行通讯就不合适了。
d、报文格式的话就比较自由,但是也应当合理,我虽然没有具体实验过,但是个人认为可以参考modbus的报文结构来编程,甚至就采用modbus的规范,不过这样的话要求编程者对pc和plc侧的modbus编程都要熟悉。
3、opc
Opc是这些年来很流行的东西,其实我很讨厌opc的安全认证的设定。不过采用opc编程来访问plc真的是一件非常轻松惬意的事情。你需要做的就是了解opc的结构和编程,尤其是采用vb来编写opc简直是件傻瓜化的工作当然也牺牲了很多。
前面我实验了用vb通过opc(以太网)来访问300,包括用西门子的simaticnet提供的opc接口和第三方的kepserver。
采用opc接口编程的优点:通讯速度快,编程简单。
4、以太网编程
采用以太网编程访问plc,其实又可以分为两种:
一种是socket接口,需要在plc里面编程进行收/发,大概是fc5/fc6吧,印象不深了,当然plc里面要定义一个connection,填好地址、端口号之类的信息,这个对于熟悉西门子工业通讯的人是很easy的事情。Pc侧采用socket接口编程,*简单的就是vb里面的wisock控件,当然这掩盖了很多细节。Socket编程本来就是一门艺术,讲究说学逗唱:)
这个方法的优点应该是pc侧编程稍微简单点(相对于后一种),而且可以不局限于windows平台,因为socket接口被诸如unix支持的更好。
第二种是采用西门子的sapi接口函数,这样plc里面不需要过多的编程了,当然pc侧的编程难度就比较高了,ms只能用c来写,所以我望而却步鸟。

    在编辑plc程序时,首先应保证程序中所选的CPU型号与实际的CPU型号一致。CPU型号的设置方法如下:
    ——在程序编辑区中的指令树(Instruction Tree)显示区的第一项,右键单击文件名——图12 -1.3中的sample-k (CPU221REL01.10),弹出选项“Type...”:
    ——单击“Type...”,显示CPU型号设定对话框(见图12 -1.3);
    ——点击对话框PLC Type中的按钮,可以选择PLC的CPU型号;
    ——点击对话框CPU Version中的按钮,可以选择PLC的CPU软件版本;
    ——选择完成后,点“OK”按钮确认。

    在编辑plc程序时,首先应保证程序中所选的CPU型号与实际的CPU型号一致。CPU型号的设置方法如下:
    ——在程序编辑区中的指令树(Instruction Tree)显示区的第一项,右键单击文件名——图12 -1.3中的sample-k (CPU221REL01.10),弹出选项“Type...”:
    ——单击“Type...”,显示CPU型号设定对话框(见图12 -1.3);
    ——点击对话框PLC Type中的按钮,可以选择PLC的CPU型号;
    ——点击对话框CPU Version中的按钮,可以选择PLC的CPU软件版本;
    ——选择完成后,点“OK”按钮确认。

我想知道如何将STOP再变会RUN?上位机就是一触摸屏。
答:1. 如果A、B端的PPI连接中断的话,两个CPU的状态是什么样的?
2. 外部的输入、输出信号如何连接到2套plc(这个其实比较简单,我只是提醒楼主要考虑这个问题)
建议楼主不要用通讯方式,还不如用硬接线方式,把A PLC的运行信号用常闭信号接入到B PLC,作为B PLC所有输出信号的闭锁信号。如果A PLC运行,闭锁打开,B PLC可以监视,但是无法输出所有控制信号;如果闭锁关闭,即A PLC不运行,则B PLC自动输出所有指令,切换时间为1个B PLC的扫描时间。当然,如果A PLC恢复后,也需要1个扫描周期后切回来(当然外部设备动作还需要考虑继电器等延时)。这种方式是否影响外部设备的运行状态与楼主的输出通道的接线有关。
由于硬接线可靠性较高,建议楼主简单的控制还不如用硬接线控制。
其实我建议楼主做成2套独立PLC同时运行的方式,即任一PLC正常工作,输出相应信号都可以实现设备的控制,这样就基本没有什么切换时间。可靠性较高。当然楼主要考虑失能控制和得能控制两种方式下继电器接线的不同,以及设备动作时的安全性问题。
失能控制是指设备用继电器常闭触点连接并进行动作的控制方式,即继电器没带电时设备动作,继电器带电反而设备停止工作。这种方式下2套PLC的输出采用常闭串联或并联(取决于设备的动作安全性)方式,;
得能控制是指设备在继电器触点接通后才能动作的控制方式,断电时设备停止;这种方式下2套PLC的输出采用常开并联方式,任意PLC信号接通设备动作;

展开全文
优质商家推荐 拨打电话