课程中心
HOME
课程中心
正文内容
c 编程与plc通信 【西门子PLC编程实例】S7-1200与第三方设备自由口通信
发布时间 : 2026-03-12
作者 : 小编
访问数量 : 23
扫码分享至微信

【西门子PLC编程实例】S7-1200与第三方设备自由口通信

西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方的设备(扫描枪、打印机等设备进行通讯。因为没有第三方的设备,这里就以超级终端为例介绍自由口通讯。

1.控制系统原理

图1:控制系统原理

2.硬件需求

S7-1200 PLC目前有3种类型的CPU:1)S7-1211C CPU。2)S7-1212C CPU。3)S7-1214C CPU。这三种类型的CPU都可以连接三个串口通信模版。本例中使用的PLC硬件为:1)PM1207电源 ( 6EP1 332-1SH71 )2) S7-1214C ( 6ES7 214 -1BE30 -0XB0 )3) CM1241 RS232 ( 6ES7 241 -1AH30 -0XB0 )

3.软件需求

1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)

4.组态

我们通过下述的实际操作来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和超级终端通信。

点击桌面上的“Totally Integrated Automation Portal V10”图标,打开如下图:

图2: 新建S7 -1200项目

首先需要选择“Create new project”选项,然后在“Project name:”里输入PTP;在“Path:”修改项目的存储路径为“C:\”;点击“Create”,这样就创建了一个文件PTP的新项目。创建后的窗口如下图所示:

图3: 新建项目后

点击门户视图左下角的“Project View”切换到项目视图下,如下图:

图4: 切换到项目视图

打开后,在“Devices”标签下,点击“Add new device”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。选择后如下图:

图5:PLC硬件组态

插入CPU后,点击CPU左边的空槽,在右边的“Catalog ”里找到“Communication”下的RS232模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS232模块硬件接口参数,选择RS232模块,在其下方会出现该模块的硬件属性配置窗口, 在属性窗口里有两个选项,一个是“general”;一个是“RS232 interface”。在“General”里包括了此模块的“项目信息”和“订货信息”;而在“RS232 interface”里包括“项目信息”、“端口的配置”、“发送信息的配置”、“接收信息的配置”和“硬件识别号”。在这里我们选择“RS232 interface”,在“端口”配置的选项里,进行端口的参数配置,波特率为:9600 ;校验方式:无 ;数据位为:8 ;停止位:1;硬件流控制:无;等待时间:1ms设置参数如下图:

图6:RS232接口配置

此时确认一下“硬件识别号”为11。

此时,完成了硬件的组态,接下来需要编写串口通讯程序,在这里我们实现两个功能:A、 S7-1200 发送数据给超级终端;B、 超级终端发送数据给S7-1200

对于第一个功能:S7-1200发送数据给超级终端,实际上是S7-1200是数据的发送方,超级终端是数据的接收方,对于S7-1200需要编写发送程序;而对于超级终端来说,只要打开超级终端程序,配置硬件接口参数与前面S7-1200的端口参数一只即可。

下面的步骤将具体介绍此功能实现的步骤:

①、在PLC中编写发送程序。在项目管理视图下双击“Device”下的程序块下的Main(OB1),打开OB1,在主程序中调用SEND_PTP功能块如下图所示:(注:SEND_PTP在指令库下的扩展指令中通讯指令下)

图7: 调用发送功能块

要对SEND_PTP赋值参数,首先需要创建SEND_PTP的背景数据块和发送缓冲数据块 ,双击“Devices”——> “PLC_1”——>“Program Block ”——“Add new block”,在弹出的串口命名DB_Send_PTP,选择DB块,在Type后选择“SEND_PTP(SFB113)”

图8: 创建发送功能块的背景数据块

插入背景DB后,再插入发送缓冲DB块,重复上面的步骤,只是在选择DB类型为“Global DB”,并去掉“Symbolic access only”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为DB_SEND_BUFF。建好这两个DB块后,双击打开DB_SEND_BUFF预先定义好要发送的数据,如下图所示:

图9:在接收缓冲区中接收到的数据

定义完发送缓冲区后,接下来就可以对SEND_PTP赋值参数,赋值参数后如下图:

图10:发送编程

在上面的编程块里需要注意的是,在指定发送缓冲区时。字符的开始地址是从第二个字节,而不是零字节开始,即是P#DB2.DBX2.0 Byte10 而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200对字符串的存放的格式造成的,S7-1200对字符串的前两个字节的定义第一字节是最大的字符长度,第二个字节是实际的字符长度。接下来才是存放实际字符。如下图:

图11:String存储格式

上面就完成了程序的编写,对项目进行编译;右击PLC_1项目在弹出的菜单里选择“Complies ALL”选项,这样就对硬件与软件进行编译,如下图:

图12:编译项目

编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“Download to Device”。②、用串口交叉线连接S7-1200的串口与计算机的串口,打开计算机的超级终端程序,并设置硬件端口参数如下图:

图13:超级终端的端口设置

③、打开OB1功能块在线监控程序,在变量监控表里强制M0.0为1,触发数据的发送,此时在超级终端就会接收到发送的数据,如下图:

图14:在超级终端监控发送来的数据

对于第二个功能:超级终端发送数据给S7-1200,实际上是S7-1200是数据的接收方,超级终端是数据的发送方,对于S7-1200需要编写接收程序;而对于超级终端来说,只要打开超级终端程序,配置硬件接口参数与前面S7-1200的端口参数一致,在界面上输入发送内容即可。

下面的步骤将具体介绍此功能实现的步骤:

①、在PLC中编写发送程序。在项目管理视图下双击“Device”下的程序块下的Main(OB1),打开OB1,在主程序中调用RCV_PTP功能块如下图所示:(注:RCV_PTP在指令库下的扩展指令中通讯指令下)

图15: 调用发送功能块

要对RCV_PTP赋值参数,首先需要创建RCV_PTP的背景数据块和发送缓冲数据块 ,双击“Devices”——> “PLC_1”——>“Program Block ”——“Add new block”,在弹出的串口命名DB_RCV_PTP,选择DB块,在Type后选择“RCV_PTP(SFB114)”

图16: 创建接收功能块的背景数据块

插入背景DB后,再插入接收缓冲DB块,重复上面的步骤,只是在选择DB类型为“Global DB”,并去掉“Symbolic access only”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为DB_RCV_BUFF。建好这两个DB块后,双击打开DB_RCV_BUFF定义接收缓冲区数据的类型,如下图所示:

图17:定义接收缓冲区

定义完接收缓冲区后,接下来就可以对RCV_PTP赋值参数,赋值参数后如下图:

图18:接收编程

在上面的编程块里需要注意的是,在指定接收缓冲区时。字符的开始地址是从第二个字节,而不是零字节开始,即是P#DB2.DBX2.0 Byte10 而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200对字符串的存放的格式造成的,S7-1200对字符串的前两个字节的定义第一字节是最大的字符长度,第二个字节是实际的字符长度。接下来才是存放实际字符。如下图:

图19:String存储格式

上面就完成了程序的编写,对项目进行编译;右击PLC_1项目在弹出的菜单里选择“Complies ALL”选项,这样就对硬件与软件进行编译,如下图:

图20:编译项目

编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“Download to Device”。②、用串口交叉线连接S7-1200的串口与计算机的串口,打开计算机的超级终端程序,并设置硬件端口参数如下图:

图21:超级终端的端口设置

在桌面上新建文本文件,打开此文本文件在里面输入“gfdcba”,如下图:

图22:在文本文件下输入要发送的字符串

③、打开变量监控表,强制M0.0,使能接收。然后, 在超级终端里,选择菜单“Transfer”下的“Send Text file”,在打开的窗口里找到桌面 上的文本文件。

图23:通过超级终端发送数据

打开DB_RCV_BUFF数据块,在线查看接收到的数据,如下图:

图23:接收缓冲区中接收到的数据

通过上面的例子实现了简单的应用,在实际的应用过程中,需要按第三方设备的协议进行编写S7-1200的程序。

三菱PLC通讯与编程实例!

FX系列作为三菱基本款的PLC,它们之间的通讯方式分别如下:CC-LINK,N:N网络连接,并联连接。

1.CC-LINK连接

CC-LINK连接图如下:

对应的PLC可为FX1N、FX1NC、FX2N、FX2NC、FX3U、FX3UC,因为在使用CC-LINK通讯时要扩展CC-LINK模块,而FX1S没有扩展模块功能,故FX1S不能用于此通讯方式。

2)FX1N/FX2N/FX3U即可以作为主站,也可以作为远程设备站使用。

此种通讯因为要加CC-LINK通讯模块,所以成本较高。

3)在CC-LINK网络中还可以加入变频器伺服等符合CC-LINK规格的设备。

2.N:N网络连接

N:N网络连接连接图如下:

3.并联连接

并联连接图如下:

1) 通讯对象是FX1S、FX1N、FX1NC、FX2N、FX2NC、FX3U、FX3UC同一系列的PLC之间。

2) 该通讯在PLC间进行1:1通讯,进行数据交换,只能满足2台PLC的通讯。

一、N:N网络通讯

1、通讯解决方案

用FX2N,FX2NC,FX1N,FXON可编程控制器进行的数据传输可建立在N:N的基础上。使用此网络通讯,它们能链接—个小规模系统中的数据。

2、相关标志和数据寄存器

对于FXlN/FX2N/FX2NC类可编程控制器,使用N:N网络通讯辅助继电器,其中M8038用来设置网络参数,

M8183在主站点的通讯错误时为ON,

M8184到M8190在从站点产生错误时为ON,(第1个从站点M8184,第7个从站点M8190)

M8191在与其它站点通讯时为ON

数据寄存器D8176设置站点号,0为主站点,1到7为从站点号D8177设定从站点的总数,设定值1为1个从站点,2为两个从站点;D8178设定刷新范围,0为模式0(默认值),1为模式1,2为模式2;D8179 主站设定通讯重试次数,设定值为0到10;D8180 设定主站点和从站点间的通讯驻留时间,设定值为5到255,对应时间为50到2550ms

案例

该系统有三个站点,其中一个主站,两个从站,每个站点的可编程控制器都连接一个FX2N-485-BD通讯板,通讯板之间用单根双绞线连接。刷新范围选择模式1,重试次数选择3,通信超时选50ms,系统要求:

①主站点的输入点X0到X3输出到从站点1和2的输出点Y10到Y13。

②从站点1的输入点X0到X3输出到主站和从站点2的输出点Y14到Y17。

③从站点2的输入点X0到X3输出到主站和从站点1的输出点Y20到Y23。

主站点的梯形图编制

从站点1的梯形图编制

从站点2的梯形图编制

二、并行链接通讯

1、并行通讯解决方案

用FX2N,FX2NC,FX1N,FX和FX2C可编程控制器进行数据传输时,是采用100个辅助继电器和10个数据寄存在 1:1的基础上来完成。FXlS和FXON的数据传输是采用50个辅助继电器和10个数据寄存器进行的。

2、使用方法

当两个FX系列的可编程控制器的主单元分别安装一块通讯模块后,用单根双绞线连接即可,编程时设定主站和从站,应用特殊继电器在两台可编程控制间进行自动的数据传送,很容易实现数据通讯连接。主站和从站的设定由M8070和M8071设定,另外并行连接有一般和高速两种模式,由M8162的通断识别。

3、通讯实例

在并行通讯系统中,控制要求如下:

①主站点输入X0到X7的ON/OFF状态输出到从站点的Y0到Y7。

②当主站点的计算结果(D0+D2)大于100,从站的Y10通。

从站点的M0到M7的ON/OF状态输出到主站点的Y0到Y7。

从站点中D10的值被用来设置主站点中定时器。

主站点梯形图

三、计算机链接

小型控制系统中的可编程控制器除了使用编程软件外,一般不需要与别的设备通讯。 可编程控制器的编程器接口一般都是RS-422或RS-485,而计算机的串行通讯接口是RS-232C,编程软件与可编程控制器交换信息时需要配接专用的带转接电路的编程电缆或通讯适配器,例如为了实现编程软件与FX系列plc之间的程序传送,需要使用SC-09编程电缆。

四、无协议通讯

大多数可编程控制器都有一种串行口无协议通讯指令 ,如FX系列的RS指令,它们用于可编程控制器与上位计算机或其它RS-232C设备的通讯。这种通讯方式最为灵活,可编程控制器与RS-232C设备之间可以使用用户自定义的通讯规定,但是可编程控制器的编程工作量较大,对编程人员的要求较高。如果不同厂家的设备使用的通讯规定不同,即使物理接口都是RS-485,也不能将它们接在同一网络内,在这种情况下一台设备要占用可编程控制器的一个通讯接口。

用各种RS232C单元,包括个人计算机,条形码阅读器和打印机,来进行数据通讯,可通过无协议通讯完成,此通讯使用RS指令或一个FX2N-232IF特殊功能模块完成。

五、可选编程端口通讯

现在的可编程终端产品(如三菱的GOT-900系列图形操作终端)一般都能用于多个厂家的可编程控制器。 与组态软件一样,可编程终端与可编程控制器的通讯程序也不需要由用户来编写,在为编程终端的画面组态时,只需要指定画面中的元素(如按钮、指示灯)对应的可编程控制器编程元件的编号就可以了,二者之间的数据交换是自动完成的。

对于FX2N,FX2NC,FX1N,FXlS系列的可编程控制器,当该端口连接在FX2N-232-BD,FXON—32ADP,FX1N—232—BD,FX2N-422—BD上时,可支持—个编程协议。

相关问答

可否使用VC++编程和西门子PLC通讯?为什么?

如果通信走得是USB转串口,协议还是串口类(如:ASTM系列)的话,还是可以使用的,如果通信协议也是USB的,那就用不到MSComm了。用VB写USB通信有点别扭,建议换VC...

可否使用VC++编程和西门子PLC通讯?为什么?

可以的...不过我没用过呵呵VC++和西门子PLC通讯这是组态软件WICC的事哦有一动态库:S7W95.DLL使用VC直接编程替代WINCC可以的...不过我没用过呵呵VC++...

怎么用C#语言让pc与plc通过tcpip互联-ZOL问答

如果不使用OPC,则比较复杂,首先需要在PLC中使用FB63、FB64、FB65来与PC建立连接,设置好端口号、IP地址、发送和接收的字节长度等。在PC用Winsock来建立连接。...

c#上位机怎么与三菱plc通讯?

1.C#上位机可以与三菱PLC进行通讯。2.这是因为C#是一种强大的编程语言,可以通过使用三菱PLC的通讯协议来实现与PLC的通讯。具体来说,可以使用C#的串口通讯功...

PLC通讯程序怎么写?

PLC通讯程序的具体编写流程与所采用的PLC品牌和型号有关,但大致可分为以下步骤:确定通讯接口,选择通讯协议,配置PLC参数,编写PLC程序并与上位机进行通讯。在...

PLC之间如何通信?

不同品牌之间的PLC如果想要通讯的话有两种方案:一、使用两者都兼容的通讯协议,比较目前较为广泛使用的Modbus协议。二、利用网关模块将其中一个协议转换成另...

PLC怎么实现同电脑的连接呢?数据线需要驱动程序吗?-ZOL问答

PLC怎么实现同电脑的连接呢?数据线需要驱动程序吗?笔记本电脑讨论回答(8)PLC同电脑连接,有两种形式:1、电脑作为编程器2、电脑作为控制过程的显示端,相当...

STEP7MICROWIN和PLC通讯怎么设置?

在STEP7MICROWIN软件中,可以通过组态标签页中的PLC连接设置来进行PLC通讯配置。首先,选择正确的通讯接口,并输入PLC的IP地址和端口号,然后点击连接按钮进行...

台达PLC通讯问题:程序无法写入PLC?

1、检查PLC设置的串口12、检查PC串口设置PC串口设置要把PLC的站号设置正确,PLC的站号在没有更改的情况下,默认为1;端口是电脑连接PLC的那个RS232接口,按...

横河DCS如何与西门子PLC通讯?

以横河DCS为主站PLC为从站来进行Modbus通讯,两边设置一样通讯要素如波特率、奇偶校验等;再到DCS里面进行PLC种类选择等以横河DCS为主站PLC为从站来进行Modbus...

 占有率  霍思邈 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2026  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部