西门子PLC的USS通信程序原来是这样编写,赶紧转发收藏
点击上方"PLC发烧友"关注我们吧!
S7-200 SMART本体集成的 RS 485 通信口可以工作在自由口模式下,支持 USS 通信协议。
S7-200 SMART 与驱动装置(变频器)进行 USS 通信时可以:
1)根据驱动装置的具体 USS 通信规范,我们自己编程实现 USS 通信。此方式可以保证该驱动装置的所有 USS 通信功能都能得到使用;
2)使用西门子提供的 USS 通信指令库,实现与 Micro Master 系列的 MM3/MM4 和 SINAMICS G110/V20 的USS 通信。此指令库只能有限地支持与其他驱动装置的 USS 连接。
使用西门子提供的 USS 指令库,这样我们就不必自己配置复杂的 PKW/PZD 数据,或者计算校验字节。
S7-200 SMART的 USS 编程主要包括如下几个步骤:
参数设置和硬件接线部分可参考我们技成培训网观看《西门子变频器参数设置和实操训练》课程的相关章节,在这不再阐述;
调用USS初始化指令S7-200 SMART USS 标准指令库包括 USS_INIT、USS_CTRL、USS_RPM_X、USS_WPM_X等指令。调用这些指令时会自动增加一些子程序和中断服务程序。
USS 库应用首先要进行 USS 通信的初始化。使用 USS_INIT 指令初始化 USS 通信功能。
图 1. 选择 USS_INIT 指令
打开 USS 指令库分支,像调用子程序一样调用 USS_INIT 指令。
图 2. 调用 USS_INIT 指令
图中:
EN:初始化程序 USS_INIT 只需在程序中执行一个周期就能改变通信口的功能,以及进行其他一些必要的初始设置,因此可以使用 SM0.1 或者沿触发的接点调用 USS_INIT 指令;
Mode:模式选择,执行 USS_INIT 时 ,Mode 的状态决定在通讯端口上是否使用 USS 通信功能;
=1 设置为 USS 通信协议并进行相关初始化
=0 恢复为 PPI 协议并禁用USS通信
Baud:USS 通信波特率。此参数要和变频器的参数设置一致;
=1200
1200 bit/s
2400 表示2400 bit/s
4800表示4800 bit/s
9600表示9600 bit/s
19200表示19200 bit/s
38400表示38400 bit/s
57600表示57600 bit/s
115200表示115200 bit/s
Port: 0 = CPU 集成的 RS485 通讯端口;=1可选CM01 信号板。
Active:此参数决定网络上的哪些 USS 从站在通信中有效。详见下面的说明;
Done:初始化完成标志
Error:初始化错误代码;对应的代码如下:
USS 库指令错误代码
错误代码
错误描述
0
无错误
1
驱动装置无响应
2
来自驱动的响应中检测到校验和错误
3
来自驱动的响应中检测到奇偶校验错误
4
用户程序干扰引起错误
5
尝试执行非法命令
6
提供了无效的驱动装置地址
7
通信口未定义为 USS 协议
8
通信口忙于处理其他指令
9
驱动装置速度设定输入值超限
10
驱动装置返回的信息长度不正确
11
驱动装置返回报文的第一个字符不正确(不是 02 h)
12
驱动装置返回的长度信息不被 USS 指令支持
13
响应的驱动装置不正确
14
提供的 DB_ Ptr 地址不正确
15
提供的参数号不正确
16
选择了错误的协议
17
USS 已激活,不能改变
18
指定了非法的波特率
19
无通信活动:驱动装置未激活
20
驱动装置返回的参数值不正确或包括错误的代码
21
请求一个字长的数据时返回了一个双字数据
22
请求一个双字长的数据时返回了一个字数据
23
端口无效
24
信号板(SB) 端口1缺失或未组态
Active参数USS_INIT 子程序的 Active 参数用来表示网络上哪些 USS 从站要被主站访问,即在主站的轮询表中激活。网络上作为 USS 从站的驱动装置每个都有不同的 USS 协议地址,主站要访问的驱动装置,其地址必须在主站的轮询表中激活。USS_INIT 指令只用一个 32 位长的双字来映射 USS 从站有效地址表,Active 的无符号整数值就是它在指令输入端的取值。
表 1. 从站地址映射
在这个 32 位的双字中,每一位的位号表示 USS 从站的地址号;要在网络中激活某地址号的驱动装置,则需要把相应位号的位置设为二进制“1",不需要激活 USS 从站,相应的位设置为”0"。最后对此双字取无符号整数就可以得出 Active 参数的取值。
在表 1 的例子中,如果使用站地址为 3 的 MM 440 变频器,则须在位号为 03 的位单元格中填入二进制“1"。其他不需要激活的地址 对应的位设置为”0"。取整数,计算出的 Active 值为 00000008 h,即 16#00000008,也等于十进制数 8(如图 2.中的 e.)
建议使用 16 进制数,这样可以每 4 位一组进行加权计算出 16 进制数,并组合成一个整数。当然也可以表示为十进制或二进制数值,但有时会很麻烦,而且不直观。
如果一时难以计算出有多个 USS 从站配置情况下的 Active 值,可以使用 Windows 自带的计算器。将其设置为科学计算器模式,可以方便地转换数制
调用驱动装置控制指令
USS_CTRL 指令用于对单个驱动装置进行运行控制。这个功能块利用了 USS 协议中的 PZD 数据传输,控制和反馈信号更新较快。
图3.USS_CTRL指令
在 USS 通信指令库分支中选择 USS_CTRL 指令。
EN:使用 SM0.0 使能 USS_CTRL 指令
RUN:驱动装置的启动/停止控制
=0停止=1运行
此停车是按照驱动装置中设置的斜坡减速指电机停止.
OFF2:停车信号 2。此信号为“1"时,驱动装置将封锁主回路输出,电机自由停车
OFF3:停车信号 3。此信号为“1”时,驱动装置将快速停车
F_ACK:故障确认。当驱动装置发生故障后,将通过状态字向 USS 主站报告;如果造成故障的原因排除,可以使用此输入端清除驱动装置的报警状态,即复位。注意这是针对驱动装置(变频器)的操作。
DIR:电机运转方向控制。其“0/1”状态决定运行方向
Drive:驱动装置在 USS 网络上的站号。从站必须先在初始化时激活才能进行控制
Type:向 USS_CTRL 功能块指示驱动装置类型
=0表示MM3系列,或更早的产品
=1表示MM 4 系列,SINAMICS G 110,SINAMICS V 20
Speed_SP:速度设定值。
该速度是全速的一个百分数;“Speed_SP”为负值将导致变频器反向运行。
Resp_R:从站应答确认信号。
主站从 USS 从站收到有效的数据后,此位将为“1"一个程序扫描周期,表明以下的所有数据都是最新的
Error:错误代码。0 = 无出错。其他错误代码请参考USS 库指令错误代码
Status:驱动装置的状态字。此状态字直接来自驱动装置的状态字,表示了当时的实际运行状态
详细的状态字信息意义请参考相应的驱动装置(变频器)手册。
Speed:驱动装置返回的实际运转速度值,实数。
Run_EN:运行模式反馈,表示驱动装置是运行(为 1)还是停止(为 0)
D_Dir:指示驱动装置的运转方向,反馈信号
Inhibit:驱动装置禁止状态指示(0 - 未禁止,1 - 禁止状态)。禁止状态下驱动装置无法运行。要清除禁止状态,故障位必须复位,并且 RUN, OFF2 和 OFF3 都为 0
Fault:故障指示位(0 - 无故障,1 - 有故障)。表示驱动装置处于故障状态,驱动装置上会显示故障代码(如果有显示装置)。要复位故障报警状态,必须先消除引起故障的原因,然后用 F_ACK 或者驱动装置的端子、或操作面板复位故障状态。
此 USS_CTRL 功能块使用了 PZD 数据读写机制,传输速度比较快。但由于它还是串行通信,而且还可能有多个从站需要轮询,因此无法做到“实时”响应。要实现高要求的快速通信,应该使用 PROFIBUS-DP 等网络,同时更换主站为更高级的控制器。
USS_CTRL 已经能完成基本的驱动装置控制,如果需要有更多的参数控制选项,可以选用 USS 指令库中的参数读写指令实现。
调用驱动装置参数读写指令
USS 指令库中共有 6 种参数读写功能块,分别用于读写驱动装置中不同规格的参数。
它们是:
USS 参数读写指令采用与 USS_CTRL 功能块不同的数据传输方式。由于许多驱动装置把参数读写指令用到的 PKW 数据处理作为后台任务,参数读写的速度要比控制功能块 慢一些。因此使用这些指令时需要更多的等待时间,并且在编程时要考虑到,进行相应的处理。
读参数指令
以下的程序段读取SINAMICS V20 实际频率(参数 r0021)。由于此参数是一个实数,因此选用实数型参数读功能块。
参数读写指令必须与参数的类型配合。
调用 USS_RPM_R 指令读取 SINAMICS V20 的实际频率
EN:要使能读写指令此输入端必须为 1
XMT_REQ:发送请求。必须使用一个沿检测触点以触发读操作,它前面的触发条件必须与 EN 端输入一致
Drive:要读写参数的驱动装置在 USS 网络上的地址
Param:参数号(仅数字)。此处也可以是变量
Index:参数下标。有些参数由多个带下标的参数组成一个参数组,下标用来指出具体的某个参数。对于没有下标的参数,可设置为 0
DB_Ptr:读写指令需要一个 16 字节的数据缓冲区,用间接寻址形式给出一个起始地址。此数据缓冲区与“库存储区”不同,是每个指令(功能块)各自独立需要的。
此数据缓冲区也不能与其他数据区重叠,各指令之间的数据缓冲区也不能冲突
Done:读写功能完成标志位,读写完成后置 1
Error:出错代码。0 = 无错误
Value:读出的数据值。该数据值在 “Done”位为1时有效。
EN 和 XMT_REQ 的触发条件必须同时有效,EN 必须持续到读写功能完成(Done 为 1),否则会出错。
来源:PLC发烧友,作者:技成培训网-眭相建,转载请注明出处!文章源程序可免费提供,私信回复:源程序 免费领取! 评论处大家可以补充文章解释不对或欠缺的部分,这样下一个看到的人会学到更多,你知道的正是大家需要的。。。
实例讲解|西门子S7-200 SMART PLC之间通过向导实现S7通讯
导读:
PUT/GET 指令的编程可以使用PUT/GET 向导以简化编程步骤。该向导最多允许组态16 项独立PUT/GET 操作,并生成代码块来协调这些操作。
CPU1 (192.168.2.1 ) 把VB100~107数据传输到CPU2(192.168.2.2 ) VB0~7
CPU1 (192.168.2.1 ) 把VB100~107数据读取到CPU2(192.168.2.2 ) VB0~7
一、PUT/GET 向导编程步骤
1、STEP7 Micro/WIN SMART 在“工具”菜单的“向导”区域单击“Get/Put”按钮,启动PUT/GET 向导(见图1)。
图1 启动
2、在弹出的“Get/Put”向导界面中添加操作步骤名称并添加注释(见图2)。
图2
图2
a. 点击“添加”按钮,添加PUT/GET操作
b. 为每个操作创建名称并添加注释
3、定义PUT/GET操作(见图 3、图 4)。
图3 定义PUT 操作
a. 选择操作类型,PUT或 GET
b. 通信数据长度
c. 定义远程 CPU的 IP 地址
d. 本地 CPU 的通信区域和起始地址
e. 远程 CPU 的通信区域和起始地址
图4 定义GET 操作
a. 选择操作类型,PUT或 GET
b. 通信数据长度
c. 定义远程 CPU的 IP 地址
d. 本地 CPU 的通信区域和起始地址
e. 远程 CPU 的通信区域和起始地址
4、定义PUT/GET向导存储器地址分配(见图5)。
图5 分配存储器地址
注意:
点击“建议”按钮向导会自动分配存储器地址。需要确保程序中已经占用的地址、PUT/GET向导中使用的通信区域与不能存储器分配的地址重复,否则将导致程序不能正常工作。
5、在 图 5中点击“生成”按钮将自动生成网络读写指令以及符号表。只需用在主程序中调用向导所生成的网络读写指令即可(见图6)。
图6 主程序中调用向导生成的网络读写指令
二、程序调试
把主动端程序下载到CPU1中(192.168.2.1),被动端CPU2(192.168.2.2)不需要写程序,把空程序下载到CPU2中即可,打开状态图表监控和写入数据(见图7)。
图7 程序监控与写入
三、PUT/GET常见问题
1、S7-200SMART CPU以太网通信端口支持哪些通信协议,是否支持TCP、UDP和ISOonTCP等开放式用户通信或ModbusTCP通信?
S7-200 SMARTCPU以太网通信端口从V2.2固件支持TCP、UDP和ISOon TCP等开放式用户通信及ModbusTCP通信。
2、S7-200SMART CPU标准型和紧凑型产品是否都支持GET/PUT通信?
S7-200 SMART CPU 全系列产品都支持GET/PUT通信。但是固件版本低于V2.0的产品不支持GET/PUT通信,CPU固件可以通过Micro SD卡进行升级。
3、S7-200SMART CPU在同一时刻能否对同一个远程CPU调用多于8个GET/PUT指令?
同一时刻对同一个远程CPU可以调用多于8 个GET/PUT指令。同一时刻对同一个远程CPU 调用多个GET/PUT指令只会占用1个GET/PUT主动连接资源,而不是8个主动连接资源。
4、为什么有些第三方触摸屏不能与STEP7-Micro/WIN SMART 软件同时访问S7-200SMART CPU?
虽然S7-200SMART CPU 以太网端口具有25个连接资源,但是其中只有1个连接资源(PG连接资源)用于与STEP7-Micro/WIN SMART 软件的通信。如果第三方触摸屏与S7-200SMART CPU的连接也使用PG连接资源,就会造成第三方触摸屏不能与STEP7-Micro/WIN SMART 软件同时访问S7-200SMART CPU。
5、GET/PUT指令可以传送的最大用户数据是多少?
GET 指令可从远程站点读取最大222个字节的用户数据,PUT指令可向远程站点写入最大212个字节的用户数据;大数据量的用户数据通信可以调用多个GET/PUT指令来实现。采用GET/PUT向导时每个操作的读写用户数据的最大个数为200 个字节。
6、GET/PUT通信错误有哪些可能原因?
GET/PUT 指令TABLE参数表的第一个字节提供了“错误代码”,用于排查错误原因。GET/PUT指令故障可能原因:
(1)S7-200 SMART CPU 固件版本较低,通信双方 CPU 固件都需要 V2.0 及以上版本。
(2)超出了本地 CPU 主动连接资源限制或远程 CPU 无可用的被动连接资源。
(3)GET/PUT 指令 TABLE 参数定义错误。
(4)通信站点之间的物理连接出错。
7、如何获取S7通信的连接状态以及错误代码?
详细信息可以参考:如何判断S7通信中断并获取错误代码
总结
以上就是整个西门子S7-200SMART PLC之间通过向导实现S7通讯的步骤,文章内容如有错误请联系我们。
(技成培训网原创,作者:邹志锐,未经授权不得转载,违者必究)
附件:
1. 软件说明
200smart编程软件
STEP 7-Micro/WIN SMART v2.5或者以上版本
2. 主动端CPU1(192.168.2.1)程序
见下方图片
源程序领取
相关问答
1200plc485通讯怎么做通讯控制?
可以按照以下的方法步骤解决:1、在本体左侧可扩展3个通讯模块;2、在本体上可扩展1个通讯模板;如果RS485设备均可满足一致的协议、波特率、校验方式等技术要...
plc通信协议设置?
1、在PLC网络的高层子网中配置的通用协议主要有两种,一种是MAP规约(全MAP3.0),一种是Ethernet协议,这反映PLC网络标准化与通用化的趋势。PLC网的互联,PLC...1...
12个plc如何通讯?
PLC=ProgrammableLogicController,可编程逻辑控制器,一种数字运算操作的电子系统,专为在工业环境应用而设计的。它采用一类可编程的存储器,用于其内部存...
西门子S200PLC如何建立通信?
现在PC上建立OPCserver,可以下载西门子公司SIMATICNETOPCserver,这时候可以用ETHERNET、PROFIBUS、MPI都可以和西门子PLC建立通讯关系。通讯成功...
plc与电脑串口通信怎样设置?
要将PLC与电脑通过串口通信,您需要完成以下步骤:1.确定PLC的串口号和波特率。这些信息通常可以在PLC的手册或设置菜单中找到。2.在电脑上安装串口驱...要...
如何通过plc向设备发送指令?
首先建立起PLC与设备控制器的通信系统,然后在PLC上接入触摸屏或者通过在电脑上通过编程软件建立通讯,这样就相当于通过触摸屏或者电脑经过PLC然后我向设备发送...
西门子1200PLC和多个仪表用RS485通讯程序指令怎么写?
回答如下:以下是一个简单的示例程序,用于将西门子1200PLC与多个仪表进行RS485通讯:1.首先,需要在PLC中设置一个RS485通讯模块,并将其配置为主机模式。2...
西门子PLC串口通讯的几种方法?
第三方设备大部分支持,西门子S7PLC可以通过选择自由口通信模式控制串口通信。最简单的情况只用发送指令(XMT)向打印机或者变频器等第三方设备发送信息。不管任...
plc三大通讯协议?
plc的通讯协议就是PLC为连接不同操作系统和不同硬件体系结构的通信支持协议。西门子plc通讯协议内容:罗克韦尔的三个网:C网,D网,E网devicenet是can总线的...
三菱Fx1s系列PLC怎么样编程与电子称485通讯?
三菱FX1S系列PLC编程使用的是GXDeveloper编程软件,该软件具有图形化界面和丰富的函数库,易于编写、调试和维护PLC程序。在编程中,可以通过连接PLC与PC之间的...