直播课堂
HOME
直播课堂
正文内容
plc编程9600 西门子PLC的USS通信程序原来是这样编写,赶紧转发收藏
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

西门子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发烧友,作者:技成培训网-眭相建,转载请注明出处!文章源程序可免费提供,私信回复:源程序 免费领取! 评论处大家可以补充文章解释不对或欠缺的部分,这样下一个看到的人会学到更多,你知道的正是大家需要的。。。

PLC程序密码破解方法,并总结了详细的解密过程

PLC程序解密,密码破解方法步骤分析,有关plc的解决方法,在进行plc编程的过程中,有时需要plc解密的一些操作,这里说一说plc的解密方法,并总结了详细的解密过程,有需要的朋友参考下。

PLC解密方法

1、使用串口调试器。

2、设置好有关参数。

设置串口:COM1,波特率:9600,数据位:7,校验:E偶,停止位:1

输入:输入EHX,显示:显示ASC

确定三菱PLC型号。根据PLC型号选择在串口调试程序的 文本 中输入对应字符串。

PLC型号 对应字符串

FX2 /STX0700808/ETX6A

FX2N /STX0300808/ETX66

FX2_EPROM /STX0800808/ETX6B

FXON/FXOX /STX0800808/ETX6B

FX1N/FX1X /STX0800808/ETX6B

3、发送后在接收框中显示的字符串就是plc的密码。

如果看不出来的话,将这些字符串拷贝到 HEX格式 中。发送一次看看。(发送前记得先断开PLC)

建议你自己设置一个密码,然后用这个方法读取一次看看,以后就知道是怎么回事了。

密码字符:0-9,A-F。

A系列:

发送:A2 07 00 FF 02 05 AE 00 08 C3

接收:0B 00 FF 02 00 AA 77 55 BB EF CD AB A4 00

密码:ABCDEF

发送:A2 07 00 FF 02 05 AE 00 08 C3

接收:0B 00 FF 02 00 AA 77 55 BB C1 B1 A1 A4

密码:A1B1C1

分析:密码为返回字符中BB至A4之间的字符,以每2字符为单位,从右往左读出。

FX系列:

返回:34 31 34 32 34 33 34 34 34 35 34 36 34 31 34 32

密码:ABCDEFAB

分析:接收到的是ASC码,对应的字符为 4 1 4 2 4 3 4 4 4 5 4 6 4 1 4 2,以每2字符为单位组合,即

41 42 43 44 45 46 41 42,

再译为对应的字符即为 ABCDEFAB.

1、在发送字符栏输入下面的字符串后点发送;

02 30 38 30 30 38 30 38 03 36 42

3、返回一串16进制的ASCII码,30H为数字0,31H为数字1,以此类推;

例:02 30 38 30 30 38 30 38 03 36 42

( 37ms )

/STX4236353433323130/ETX41

密码是:B6543210 《42=B》

以上就是PLC解密方法及解密过程的全部内容,希望对大家有所帮助。

TypeScript 中的整形和浮点数类型都是 number,这点和 JavaScript 是一样的,比如:十进制、二进制、八进制和十六进制的类型都是 number。

let decAge: number = 22; let hexAge: number = 0x0016; let binaryAge: number = 0b10110; let octalAge: number = 0o026; // 以上变量使用 (number).toString(10) 转换为十进制都为 22 复制代码

可使用 (number).toString(进制) 将数字转换为任意进制的类型。

字符串 → string

和 JavaScript 一样,字符串的值使用单引号或者双引号包裹:

let myName: string = "编程三昧"; let myHomepage: string = `example.com/${myName}`; 复制代码

数组

TypeScript 中定义数组的方式有两种。

第一种是元素类型后面接上 [],表示由此类型元素组成的一个数组:

let arr: number[] = [1, 2, 3, 4]; // 如果在数组中加入其他元素会报错 复制代码

第二种是使用数组泛型定义数组:

let arr1: any[] = [1, "2", 3, "4"]; // 这个数组中可以假如任意类型的元素 复制代码

元组 Tuple

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

let arr2:[number, string, number] = [1,"2",3]; // 若果写成 [1,2,3] 会报错 复制代码

元素是严格规定了数组的长度和每个位置的元素类型,并且在赋值时需要严格对应,否则会报错。

枚举

enum类型是对JavaScript标准数据类型的一个补充。像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。

enum Color {Red, Green, Blue} let c: Color = Color.Green; 复制代码

默认情况下,从0开始为元素编号。你也可以手动地指定成员的数值。例如,我们将上面的例子改成从 1开始编号:

enum Color {Red = 1, Green, Blue} let c: Color = Color.Green; 复制代码

或者,全部都采用手动赋值:

enum Color {Red = 1, Green = 2, Blue = 4} let c: Color = Color.Green; 复制代码

枚举类型提供的一个便利是你可以由枚举的值得到它的名字。例如,我们知道数值为2,但是不确定它映射到Color里的哪个名字,我们可以查找相应的名字:

enum Color {Red = 1, Green, Blue} let colorName: string = Color[2]; console.log(colorName); // 显示'Green'因为上面代码里它的值是2

上一节,我们已经把gitlab、jenkins、harbor、k8s都已经搭建好了,这一节我们来编写jenkins的pipline将我们的服务通过jenkins完整的发布到k8s中。

2、部署中间件

将mysql、redis、es等部署到k8s之外 , 模拟用作线上独立环境(至于线上你想把某些中间件部署到k8s内部这个自行处理,本次重点是如何将go-zero开发的微服务部署到k8s集群内部),这里我就直接使用项目下的docker-compose-env.yaml了,把所有依赖的第三方中间件环境直接安装在srv-data.com(192.168.1.181)这台服务器,前提是这台服务器已经安装好docker、docker-compose。

登陆到 192.168.1.181

$ mkdir data && cd data && vim docker-compose.yml$ docker-compose up -d$ docker-compose ps #查看确认

3、独立配置

将每个服务的配置都独立出来,统一放在一个git仓库,这样只给一个人线上仓库的权限,如果线上配置有变直接修改这个仓库的文件,在jenkins做cd的时候,会先拉取代码再拉取对应服务的配置自动构建,具体可以看后面的pipline。

【问】为什么不用配置中心?

1)修改db、redis等需要重启服务,但是有一些配置又不需要重启服务,运维又要去记,记混了比较容易造成线上事故

2)方便回滚。我们发新版本到线上,并且又改了新版本配置。这时候线上用户反馈有问题,线上需要快速回滚的话,如果我们使用将文件构建到镜像中,直接使用k8s一行命令就可以将上一个版本代码加配置直接回滚回来。如果使用了配置中心,回滚了代码,还要将上个版本的配置去配置中心改回来,很麻烦。

相关问答

西门子PLC和威纶通通信?大伙怎样做的~-ZOL问答

西门子200PLC和威纶触摸屏通信的时候其实很简单的;就是在EB8000里面配置的时候把你选择的PLC配置进去,然后买一个RS485通信线就可以搞定的!希望能帮到这位兄弟...

西门子s7-200编程电缆怎么连接?

西门子S7-200的PLC与触摸屏都是用的编程485下载电缆,编程电缆型号为6ES7901-3CB30-0XA0,西门子S7-200的PLC与触摸屏连接也是485的,触摸屏应该带连接线。西门...

威纶通触摸屏和西门子PLC通讯不上,老是提示plc没反应,该怎样...

你设置同样的波特率,同样的位数,同样的停止位,站号不能相同,就是说plc和触摸屏地址不能相同,然后确定通讯线是否正常。有用(0)回复easonyangPLCNORESPONS...

台达输程序一致侦测中?

您好,您这样:一、硬件1、电脑端:9针RS232接口,PLC端:台达9针-圆形通讯接口通信线,这个通讯线可以向台达购买。然后连接把通讯线两端分别连接电脑和PLC2...

plc容错系统怎么解决?

1、使用串口调试器。2、设置好有关参数。设置串口:COM1,波特率:9600,数据位:7,校验:E偶,停止位:1输入:输入EHX,显示:显示ASC确定三菱PLC型号。根...FX2_E...

三菱plc通信的波特率,奇偶效应怎么设置?

三菱plc通信的通讯设置分编程口和通讯模块,通讯模块的波特率、奇偶校验等可在程序中设置,编程口的波特率、奇偶校验等依产品系列的不同而不同。常用的FX系列...

smartplc是否能做modbus主站?

如果你说的是西门子smart200plc,目前它支持modbusrtu和modbustcp通讯,。modbus主站是针对modbusrtu得说法,当然她必须是支持可以作为主站...

触摸屏TP177B与PLCs7-200224连接问题,急求?

wincc下载时设置:DP,9600波特率,PLC地址2,HMI地址1?S7-224通讯口只能跑MPI/PPI/自由口,不能跑DP!wincc下载时设置:DP,9600波特率,PLC地址2,HM...

请回答,规模大的plc价格报价,plc价格有知道的吗??

[回答]道和安自动化工控设备回收公司他们家合作的客户挺多的,效果也没得挑,推荐!确定PLC使用的通讯协议根据协议编写相应的程序。也有可能通讯参数设置...

PLC控制线长达3百米会影响控制电机吗?

PLC控制线长达3百米会影响控制电机吗?实际应用中用交流220V供电形式,由于供电电压高,传输电缆造成的电压降不会影响到负载的正常工作,也不要考虑传输电缆电...P...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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