西门子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-1200 PLC 的存储 MC卡的使用
关注“PLC发烧友 ”,一起涨知识!
回复:西门子全套,领西门子全系列电子资料包
一、SD卡的作用类别
S7-1200提供了专用的SD卡,支持4M/12M/24M/2G SD卡,该卡可作为程序卡、传送卡、或更新硬件及解除密码使用
S7-1200CPU使用的存储卡为SD卡,存储卡中可以存储用户项目文件,有如下几种主要功能:
1、作为CPU的装载存储区,用户项目文件可以仅存储在卡中,CPU中没有项目文件 ,离开存储卡无法运行。
2、在没有编程软件的情况下,作为向多个S7-1200PLC传送项目文件的介质。
3、忘记密码时,清除CPU内部的项目文件和密码。
4、24MB以上存储卡可以用于更新S7-1200CPU的固件版本
二、SD的卡作用之一传送卡
1、把SD卡设置成传输卡后,可实现两个功能的使用:
(1) 用于将程序从存储卡中复制到CPU的内部装载存储区,当把MC卡插入到PLC的插卡槽后,CPU首先会清除内部装载存储器的用户程序及任何强制值,然后把程序卡的程序,复制到CPU的内部装载存储器中,传送过程完成后,必须取下存储卡
(2)可以用于删除PLC设置的密码,当PLC加密并且又忘记密码后,可把一张空的传送卡插入到PLC的插卡槽,CPU会清除PLC设置的密码及所有程序
2、如何创建传送卡:
(1)在创建传送卡,将程序复制到存储卡之前,必须先组态CPU的启动参数(组态为暖启动 )若未组态CPU的启动参数,则程序从程序卡中复制到CPU的装载存储器后,CPU不会自动切换到运行状态
(2)将不受写保护的空白SD卡插入到与PC相连的读卡器中,若存储卡处于写保护模式,则应滑动保护开关,使其“LOCK”位置。若使用前发现存储卡中有内容的,需要先删除卡中的内容(务必不能格式化 )删除“S7-JOB.s7s”文件以及任何现有文件夹
(3)在TIA PORTAL软件的项目视图下,点击左侧”项目树“--->"读卡器/USB存储器" --->读卡器,右击存储卡的路径,选择“属性”,此时出现存储卡对话框,在卡的类型中选择传送卡,表示该卡作为传输卡
(4)把编写的项目程序放入存储卡中,通过在项目树中选CPU设备,将该CPU拖动到存储卡中或复制CPU设备,将其粘贴到存储卡中,此时会弹出“装载预览对话框”然后点击下载,就可以把程序复制到传输卡中
3、把传送卡中的程序传输到PLC
在CPU断电的情况下把SD卡插入到PLC中,重新上电后CPU会将程序复制到PLC的内部装载存储器,复制过程中,RUN/STOP呈绿色及黄色交替闪烁当RUN/STOP为黄色闪烁时,表示完成程序复制,此时可取下存储卡
三、SD的卡作用之一清除密码
如果忘记之前所设的S7-1200的密码时,可通过“恢复出厂设置”无法清除S7-1200内部的程序和密码,因此我们必须使用存储卡;具体操作如下:
使用一张存储卡,插在电脑读卡器中,清空内部文件在TIA PORTAL中将存储卡的工作模式改成“传送”卡 (参考传输卡的操作方式)将S7-1200设备断电插入存储卡到S7-1200CPU上将S7-1200设备上电,此时CPU会停止,当“MAINT”指示灯闪烁,将S7-1200设备断电取出存储卡后,将S7-1200设备上电,此时CPU密码及程序清除完成四、SD的卡作用之固件升级
使用SD卡对PLC进行固件升级时需注意:务必使用24M以上的存储卡才可以对PLC的固件进行升级,每个订货号对应的CPU都有相应的固件,需要下载与之对应的 固件版本
更新CPU的固件具体步骤如下:
(1)使用电脑通过读卡器清除存储卡中内容。注意:不要格式化存储卡!
(2)下载好固件文件并解压缩,得到一个“S7_JOB.SYS”文件和“FWUPDATE.S7S”文件夹。
(3)将“S7_JOB.SYS”文件和“FWUPDATE.S7S”文件夹拷贝到存储卡中。
(4)将存储卡插到CPU1200卡槽中。此时CPU会停止,“MAINT”指示灯闪烁。
(5)将CPU断电上电 。CPU的“RUN/STOP” 指示灯黄绿交替闪烁说明固件正在更新中;“RUN/STOP” 指示灯亮黄色,“MAINT”指示灯闪烁说明固件更新已经结束。
(6)拔出存储卡
(7)再次将CPU断电上电
我们可以在TIA PORTAL 软件--->在线和诊断--->诊断--->常规 中在线查看CPU目前的固件版本
S7-1200的固件版本下载链接
http://www.ad.siemens.com.cn/productportal/prods/s7-1200_plc_easy_plus/01-resource/08-online_download.htm#firm
五、SD的卡作用之程序卡
SD卡除了以上的功能以外还可以用来作为CPU的外部装载存储器,在CPU中插入程序卡将清除CPU内部装载存储器的所有内容(用户程序和所有强制值)CPU然后执行外部装载存储器中的程序,如果将数据下载插有程序卡的CPU,将仅更新外部装载存储器,因为CPU内部的装载存储器在插入程序卡时已删除,所以必须将程序卡留在CPU上,如果取出程序卡,CPU将切换到STOP模式,错误指示灯闪烁,提示程序卡已取出。
程序卡的使用过程与传输卡的使用过程一样,首先需要制作好程序卡(在上面选择传输卡的路径一致)然后把做好的程序复制到程序卡中;再在读卡器中取出存储卡,CPU断电后把卡插入卡槽后再次上电即可
回复:西门子全套,领西门子全系列电子资料包
相关问答
西门子plc编程s代表什么指令?
plc中的S代表:S:置位指令,只要是置位了不管其梯形图电路中是否接通,被置位的Q/M状态都为1,即使当前梯形图状态是断开的Q/M状态也还是为1,直到被复位才能...
plc中的S和R指令是怎么回事?
plc中的S和R指令:S:置位指令,只要是置位了不管其梯形图电路中是否接通,被置位的Q/M状态都为1,即使当前梯形图状态是断开的Q/M状态也还是为1,直到被复...plc...
plc程序是什么?
PLC程序(可编程逻辑控制器程序)是一种用于控制和监控工业自动化设备的程序。PLC是一种电子系统,用于执行逻辑运算、顺序控制、定时、计数和算术操作等面向用户...
plc控制器S/S口是干什么用的?
PLC是一种通用的可编程逻辑控制器,根据输入指令,时序,或一定的条件控制输出机构按照设定的方式工作,例如按下按键后,PLC控制电机顺时针转动90°,停留10秒,...
plc八个灯循环指令有哪些?
移位指令一共有四个循环右移、循环左移、右移、左移循环移位指令(左、右)八个位是循环移动的也就是说循环左移1位就是向左移动1位最高位移到最低位处循环...
plc中的si指令是什么?
plc中的S和R指令:S:置位指令,只要是置位了不管其梯形图电路中是否接通,被置位的Q/M状态都为1,即使当前梯形图状态是断开的Q/M状态也还是为1,直到被复位才...
三菱plc状态s使用方法?
三菱plc状态s的使用方法:在三菱PLC中利用带断电保持功能S500后的状态寄存器,结合STL指令就可以实现设备的断电记忆功能。假设当程序运行到状态S510时突然...
plc能通过编程实现S型加减速曲线吗?
可以,用伺服电机没问题,前提是成本高,而且伺服电机的功率可以满足要求。普通电机由于惯性太大,要做到完全曲线不太容易。可以,用伺服电机没问题,前提是成本高...
西门子PLC功能块编程怎么用?
西门子PLC(可编程逻辑控制器)的功能块编程是PLC编程的一种方法,通过预定义好的功能块,来完成复杂的控制任务。以下是使用西门子PLC进行功能块编程的一般步骤...
三菱plc指令s状态继电器的用法?
S状态继电器是一种辅助继电器,可以用于检测一个变量是否达到一定阈值,当变量达到阈值时,S状态继电器会变成“ON”状态,同时输出“1”,其它情况则变成“OFF”...