西门子PLC配合组态王怎么样?西门子1200实例讲解!实用编程教程
本示例通过一个简单的计数器程序说明相关硬件和软件的配置和简单使用。
组态王编写的人机界面可以控制并监测PLC的寄存器状态。左上角的按钮可以控制M0.0的关断,从而可以控制计数器的复位,计数器可以对左下角的按钮按下次数进行计数,计数值可以直接显示,也可以通过仪表显示。
硬件配置方法:我们选用的通信方式是基于以太网卡的TCP/IP协议通信
所以,我们直接使用网线将S7-1200和配置有网卡的计算机的以太网接口相连
TIA Portal与S7-1200的软件配置
1 使用博途组态S7-1200并编写程序,编写完成之后编译并下载
2 PLC与组态王通过以太网的方式通信的设置:
A、确认计算机中安装有以太网卡,并与PLC 连接到同一网络中(直接通过网线直连)。
B、通过编程软件设定IP地址和子网掩码,并下传到PLC中如IP地址(192.168.0.1)、子网掩码(255.255.255.0)。
C、为计算机设定IP地址和子网掩码,如IP地址(192.168.0.110)、子网掩码(255.255.255.0)。
D、使用ping 命令,保证能ping 到PLC 站。
3 PG/PC 接口配置,通信测试,以检查运行组态王的计算机是否和PLC正常通信
4 测试正常之后,即可在组态王开发项目
1 编写程序并下载
计算机与S7 1200PLC之间的通信是基于以太网卡的TCP/IP协议通信,我们可以查看组态的PLC设备的TCP/IP地址,默认为192.168.0.1,
编写、编译并下载程序
编写、编译并下载程序
在右侧的指令窗口中可以拖入进基本指令
编写、编译并下载程序,编写好的程序如下图:
可在PLC变量表里面为变量命名
在线监控可在线监控PLC寄存器状态
2 PLC与组态王通过以太网的方式通信的设置:
1、确认计算机中安装有以太网卡,并与PLC连接到同一网络中(直接通过网线直连)。
2、通过编程软件设定IP地址和子网掩码,并下传到PLC中如IP地址(192.168.0.1)、子网掩码(255.255.255.0)。 此步骤已经在博途中组态PLC的过程中完成了,通过PLC属性查看以太网地址。
3、为计算机设定IP地址和子网掩码,如IP地址(192.168.0.110)、子网掩码(255.255.255.0)。
这里以Win7系统为例
打开网络共享中心,双击更改适配器选项
修改IP地址
修改IP地址
4、使用ping 命令,保证能ping 到PLC 站。
在开始菜单“搜索程序和文件”中输入 cmd 指令,进入DOS命令窗口
在DOS 界面中输入命令:ping 192.168.0.110
然后回车。注意:在ping 和地址之间有一个空格,如下图所示。
观察DOS 界面中的ping 指令返回值。如包括time=1ms 或time<1ms 及TTL 等于某个数值,
且Lost=0,即ping 指令返回值正常,表明以太网连接正常。如下图所示。
如果连接不正常,可能如下图所示,ping 指令返回值显示timed out 或Lost 值不为0,
表示本机IP 地址和目标IP 地址连接不通,建议检查一下连接线缆及两台计算机的IP 地址设置。
(3)PG/PC 接口配置,通信测试,以检查运行组态王的计算机是否和PLC正常通信
1.打开Set PG/PC Interface。
在操作系统中点击“Start”菜单,打开“Control Panel”选项,在控制面板中,选中“大图标”显示,即可找到Set PG/PC Interface,如图。双击打开。
如图,在 Access Point of the Application(应用程序访问点)的下拉列表中选择 <Add/delete>,输入名称。
在 Interface Parameter Assignment Used 中点选Realtek PCIe FE Family Controller.TCPIP.1(注意:应根据运行计算机实际工作的网卡名进行选择,务必选择不带Auto 的),然后Access Point of the Application 内显示“CP-TCPIP - Realtek PCIe FE Family Controller.TCPIP.1 即可。
(4)通信测试,以检查运行组态王的计算机是否和PLC正常通信
我们的通信方式是TCP/IP,在组态王中定义的IO设备应该使用TCP/IP协议
注意设备地址的填写,冒号前面是我们在博途组态的PLC的地址,冒号后面为S1200的默认槽号,为0。为:192.168.0.1:0
通信测试,以检查运行组态王的计算机是否和PLC正常通信
然后使用组态王KingVIEW 6.55组态人机界面
(1)定义I/O设备:前面在测试设备的过程中,我们已经定义好了IO设备,此处略去
(2)定义I/O变量
根据程序,选择需要检测和控制的寄存器变量,在组态王数据词典中定义相应的IO变量。
先为复位开关M0.0建立一个IO变量
我们为其他寄存器定义好的I/O变量如下图:
其中,变量USB_Com用来显示组态王与PLC的通信状态,以帮助我们判断是否通信正常。
关闭(0)表示通信正常,打开(1)表示通信异常,也可以自行更改。或者可以在组态王的产品帮助文档中输入CommErr以查看使用说明。
全部建立好的变量如下图:
(3)新建并组态画面
现为复位开关M0.0以及计数M0.1组态开关按钮
现为复位开关M0.0关联PLC的M0.0
现为复位开关M0.0关联动作:鼠标按下时接通,弹起时断开。
同理我们为M0.1关联它的变量以及动作。
组态一个指示灯关联输出Q0.2,以便直观地观察复位状态
组态好的按钮和指示灯可以通过颜色显示状态之外,还可以通过工具箱的文本用“打开”或者“关闭”的文本标识状态。
为建立好的文本关联变量
使用同样的方法为按钮M0.1以及指示灯Q0.2建立文本并关联变量。
同时,我们再建立一个文本,关联计数器的计数值,以便在人机界面中查看计数值。
同时,我们也可以从图库中选取一个仪表,用刻度显示计数值。
此外,我们再建立一个文本并关联通信状态变量USB_Com,以便我们在人机界面运行时可以判断通信是否正常。
(4)保存并运行组态好的人机界面
可同时打开博图的在线监控,组态王的人机界面有指令时,博途也可以同时监测到寄存器的状态变化
3个案例就能学会S7-1200的间接寻址功能
给大家介绍下西门子S7-1200系列PLC的间接寻址的功能。
S7-1200系列的PLC间接寻址功能不同于S7-200系列PLC的间接寻址功能,S7-1200系列PLC的间接寻址功能主要是对DB块中所建立的数组进行寻址,根据对数组下标值的访问和修改来实现对数组中元素值的读取或写入。
在S7-1200PLC中,若需要根据数组下标值来对数组中元素的访问有两种方式可以实现,一是通过大家熟悉的梯形图来编写程序实现,二是可以通过SCL的编程方式来编写这样的程序实现。
一、举例说明梯形图和SCL如何实现程序编写
这里通过一个简单的例子为例,分别通过这两种方式如何实现通过索引数组的下标值来实现对数组中元素的访问。
例子说明:
假设需要从一组数据中找出一个最大值,并记录这个最大值是这组数据中的第几个数据。
先以大家相对来讲比较熟悉的梯形图的方式来实现此功能。这里我们需要用到通过读取域或写入域的指令,该指令根据索引的下标值来读取数值中相对应元素的值或写入数到数组中相对应的元素里。此例子中只需要用到读指令,指令位于移动操作指令中的“原有”文件加中。
读取数组中元素值的指令格式如下:
举例:
表示把数据中的data这个数组中的data[5]这个元素的值读取出来放入到MW100这个变量中。
写入数组中元素值的指令格式如下:
举例:
表示把数据20写入到数据块1中的变量名为data的数组中的data[3]元素的存储器中。
在本例中,我们只需要用到第一个指令,接下来设计一个如例题中所要求的梯形图程序。
程序编写思路:
本例题要去找出最大值,并把最大值所处的位置记录下来,编程思路:假设变量MAX_DATA作为最大值的存储器,然后根据下标值(INDEX)的多少去读取相应数值中对用的元素的值放于TEMP_DATA变量中,然后与MAX_DATA做比较,若MAX_DATA的值要小,则进行交换,同时记录INDEX值。然后INDEX加1,可以指向数组中的下一个元素
注:流程图不太标准,但希望对大家理解这个编程思路有所帮助,接下来主要对程序的编写进行介绍。
二、用梯形图编写一个取最大值的程序
前面介绍了读取和写入数组中元素值的指令Field Read和Field Write两条指令,同时给大家简单的分析了程序的设计思路。接下来就使用Field Read来实现本功能,在程序的设计过程中可能还需要用到循环跳转指令。
例子说明:
假设需要从一组数据中找出一个最大值,并记录这个最大值是这组数据中的第几个数据。
第一步:
添加一个全局DB块,并在DB块中建立一个变量名为data_1#,数据类型为数组的变量,用于存储需要找出最大的数据,同时建立一些相应的变量,如下图所示。
第二步:
初始化相应的存储器并把存储最大值的存储器的值设置为最小值。程序如下所示:
第三步:
编写判断数据的挨个比较是否完成,当执行的次数与设定的次数相等时,则表示完成,可以跳出最大值查找的程序,让程序跳转到最后执行。程序如下所示:
第四步:
编写读取数组中元素的值,然后与存储最大值的存储器中的值做比较,用于判断数据存储器存储的值是否是最大值,若不是最大值进行数据交换,同时记录位置,然后INDEX的值加1,同时记录执行次数并与设定次数做比较,如未达到设定次数,则跳转换前面继续通过Field Read指令读取数据出来继续做比较。
三、使用SCL如何实现程序编写
在前面介绍了使用梯形图的方式来编写一个取最大值的程序,但在S7-1200PLC中,还支持SCL的编程,使用SCL的编程对一些复杂的数据处理会带来很大的方便,下面还是以前面的例子为例说明使用SCL如何编写程序实现。
例子说明:
假设需要从一组数据中找出一个最大值,并记录这个最大值是这组数据中的第几个数据。
使用SCL编程来完成这个例子,这里我们需要用到两个语句
(1) 用于条件判断的语句
IF (条件) THEN (执行语句)
END_IF;
解析:如果条件满足,则执行THEN后面的语句。
举例:IF “DATA_A”<100 HEN
“DATA_A”:= “DATA_A”+1;
END_IF;
如果DATA_A的值小于100,则DATA_A的值等于自身加1.
(2) 用于循环执行的语句
FOR (执行变量):= (起始值) TO (结束值)BY(自增量)DO (后面需要执行的语句);
END_FOR;
解析:从“起始值”开始循环到执行,每循环一次,“执行变量”的值会根据“自增量”的多少进行变化,直到执行到“结束值”时,停止循环执行。
举例:FOR “count”: = 0 TO 4 BY 1 DO
“Data[count]”=10;
END_FOR;
把数值10填入到数值Data中的Data[0]到Data[4]的五个元素中,第一次循环时把10填入到Data[0],第二次循环时把10填入到Data[1],依次下去。
了解这两条语句后,接下来我们可以设计一个程序,这里我们可以把他建立为一个功能块(FB),方便以后使用。
第一步:
添加一个全局DB块,在全局DB块中建立一个变量名为Data的数组,元素个数可以视情况进行设置。如下图所示,元素个数设置为5个。
第二步:
添加一个FB块,同时把编程语言选择为SCL的编程语言。然后在FB的接口去中分别去定义相应的变量,如下图所示:
第三步:
用SCL语言编写功能块程序,如下所示
第四步:
在OB1中调用该功能块,由于使用的是FB,因此在调用时需要分配相应的背景DB,如下图所示:
寄语:程序仅供参考,一个简单的小例子,抛砖引玉,希望大家能够使用SCL可以编写出更复杂的一些功能块出来。
本文由技成曾鑫老师原创,未经授权不得转载
相关问答
1200plc的编程方法有哪几个?
这个问题,不好回答。我只能说一下思路。控制都容易,温度传感器变送出4---20mA信号,给PLC模拟量模块,然后模拟量输出模块输出4---20mA信号给你要控制的设备...
S7-1200PLC使用什么编程软件?
看书一般现在教学使用的都是西门子系列产品的s7-200或者s7-300的plc根据教材弄清原理然后下载plc仿真编程软件进行简单的编程编写如果想要精通需要大量...
plcs71200控制方案?
1.plcs71200控制方案可以实现各种自动控制系统中的控制逻辑,包括信号采集、逻辑控制、运动控制等。2.对于plcs71200控制方案,其可以应用于物流、工厂、通讯...
西门子plc定时器编程实例?
在西门子PLC定时器编程实例中,可以使用S7-1200PLC来实现。首先,通过TON指令创建一个定时器T1,设置一个时间常量,例如10秒。然后,在程序中使用一个触发条件...
1200plc主程序怎么写?
编写1200PLC主程序的具体步骤如下:创建一个新的PLC项目,并在项目中创建一个主程序块。在主程序块中定义输入和输出变量。这些变量将用于与外部设备进行通信...
西门子1200温度模拟量编程实例?
首先,连接PLC并创建一个新的工程。创建一个新的程序块,并将其命名为“Temperature_Control”。在Temperature_Control程序块中,创建两个数据块,一个用于模拟...
plc程序先进先出怎样实现?
使用WSFL指令(字左移)例如:将数据保存至D0,每次更新数据时,触发M0,将数据移至D100-D120的数据库中,当更新数据满足20个以后,第一个数据就出现在D119.LDM...
plc1200怎么添加新设备?
要添加新设备到PLC1200,需要先确保该设备可以与PLC1200进行通信。然后,使用适当的软件程序连接到PLC1200,并在程序中添加新设备的信息,如设备类型、IP地址和...
s7-1200plc由几部分组成?
S7-1200是SIMATICS7可编程控制器系列中的新型模块化微型PLC,其组成有:(1)控制器,带有集成PROFINET接口,用于编程设备、HMI或其它SIMATIC控制器之间通...
关于多台西门子S7-1200PLC之间的以太网通信,实例?
你看一下mcgs里面是否支持了s7-1200的驱动,如果有的话直接用就可以。如果没有的话你可以用modbustcp,也很方便。你看一下mcgs里面是否支持了s7-1200的驱动,...