plC编程LOg怎么编程 PLC的报警信息的标准化ST编程之功能块讲解

小编 95 0

PLC的报警信息的标准化ST编程之功能块讲解

上一篇文章讲了报警的标准化框架和常用数据结构,这一篇讲一下报警相关的功能块,都是封装好的标准功能块,用ST语言结构写程序可以直接调用就可以,不需要自己写报警相关的逻辑!先讲下思路和框架,后面再一个一个解读对应的标准功能块,这些功能块可以用于倍福和其它所有CODESYS平台的PLC软件,也可以稍微改动用于西门子的SCL编程语言下!

1、用于报警信息显示和设置报警的功能块介绍:

FB_AlarmMain 功能块用于显示报警信息,里面包括了三个 Action,每个 Action 的

具体功能如下:

FB_AlarmMain. AlarmAlive:用于显示当前报警列表

FB_AlarmMain. AlarmHMI:清除历史报警

FB_AlarmMain.AlarmShow:所有报警信息交替显示

FB_SetAlarm 功能块用于设置报警以及显示历史报警

FB_SetAlarm 的输入信号的介绍:

输入信号

FB_SetAlarm 输出信号的介绍:

输出信号

SW_FormatWstring 功能块实现如下功能:

把中文的字符串:

“ETHERCAT 总线错误,数量%D,在第%D 个,名称为%S”

中的%D,和%S 替代掉

FB_FileCopy功能:

文件复制

FB_DirectoryCopy功能:

调用 FB_FileCopy 实现文件复制功能

FB_DiagDataLogging_S 包括了 4 个 Action,每个 Action 具体功能如下:

FB_DiagDataLogging_S. act_AutoDelete: 自动删除旧文件

FB_DiagDataLogging_S. act_AutoWrite: 自动写入

FB_DiagDataLogging_S. act_CheckCom: 命令处理

FB_DiagDataLogging_S. act_Copy2USB: 复制到其他文件夹里

2、 功能块调用

1) 报警 ID 号码和报警内容

写报警ID和内容

2) 主程序或者子程序里调用报警的触发条件功能块

报警触发条件程序编写

功能块 FB_SetAlarm 的输入信号 ToTheLogFile 为 TRUE 的时候,则记录到全局变量 gsWriteToLog,则写入到文件。

当引脚 ToTheLogFile 为空的时候,则不记录到文件。

当需要定制化修改报警显示的内容时,可以使用新的引脚:D1,D2,S1(需要注意大小写)

例如:

报警定义:ETHERCAT总线错误,数量%D,在第%D个,名称为%S

(其中%D ,%S需要注意为大写)

D1:=2

D2:=8

S1:=’EL3314’

那么,报警输出显示为:THERCAT 总线错误,数量 2,在第 8 个,名称为 EL3314

输出报警信息如图

上面实现了功能块增加定制字符的功能。

其实,如果需要更彻底的修改显示内容,只需要在每次触发报警之前,改变一下 AlarmActionArray[AlarmID].AlarmMsg.CN 的内容就可以了。其中报警功能模块在全局变量里面已经定义了,不需要重复定义。

3) 事件的历史记录文件

例如,在控制器里面保存历史报警的LOG文档。工程师方便把文档拷贝出来做分析。如果工程师不在车间现场,客户也可以把该文件夹发送给工程师,帮助寻找并解决问题。

如下图,历史记录文件,以“年月日时”为名称。也就是说,每小时产生一个新的文件,以防止文件过大。

log文件

写LOG的功能块的调用

写log文件功能块

例如在例子程序里面的“MAIN_Alarm”程序里面就定义并调用了该功能块。

同时在全局变量里面,定义了string类型的”gsWriteToLog”变量。并作为输入输出类型,链接到了FB_DiagDataLogging的sInputString引脚。

工作流程原理:

1:检测到有报警,则把报警需要记录的字符串赋值给”gsWriteToLog”变量

2:FB_DiagDataLogging 检测到”gsWriteToLog”变量不为零,则记录下需要写的字符串。记录值放到[1..10] OF STRING 的中间变量内。中间存储变量的目的,是当文件没有写完的时候,又有报警记录进来,则可以缓存一下。

3:FB_DiagDataLogging把”gsWriteToLog”变量置零,等待其它报警的触发。

4:FB_DiagDataLogging检测到[1..10] OF STRING的中间变量不为零,则开始写文件。

5:写文件结束。

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问答

应该是怎样设置维纶触摸屏通讯参数,去和三菱PLC通讯。有用(0)回复jdddjhduhw比如RS485RS232RS422,看你用的通讯电缆和COM口对不对应了,触摸屏上有两个COM...

分光器衰耗标准公式?

分光器衰耗的标准公式是=-10*LOG10(0.625)=12.04dB,加上附加损耗0.8dB,接头损耗,一般损耗大约为13dB。1分16的分光器(PLC)的平均插入损耗小于等于13.8dB.PL...

家里人全感冒了,怎样让室内杀杀菌呀?-182****7921的回答...

首先要打开窗户,多通通风,让空气多流通,然后,可以买一瓶食用醋煮沸熏蒸一下房内,这样可以起到杀菌的作用,家人也要吃一些抗病毒口服液和治感冒的药...

16位输出的二进制有多少位?

输出是4位,2的4次方=16。例如:N位二进制编码器,有N个输入端,有log2(N)个输出端(前提是N是2的整数次幂,如果不满足这个条件,则取大于等于log2(N)的最小...

三相五线制动力低压配电箱里面的浪涌保护器要如何接...-汇财...

[回答]在计算SPD对后续设备的保护电压时,包括SPD本身的电压以及连接该SPD的导线电压,加在SPD以及连接线路上的电压,就是加在后续设备上的电压。所以,对后...

大神们!麻烦回答一下伺服压机调不到零怎么弄?

[回答]机操作方法是依据具体需要在油压机的缸内、液压垫上各自组装Kl下双翘板式、KTC支撑杆式直线位移传感器。在一个全自动工作中情况下,油压...在一个...

自动加汤机厂家的地址有人知道吗?

[回答]加汤机_火锅自动加汤机_火锅调料台_1、火锅自动加汤机利用PLC系统控制,物料接触部分均为304不锈钢材质,川汇火锅自动加汤机整机质保一年。2、可以根...

盆友们!求了解:新乡靠谱的电气设备安装维护,电气设备安装...

[回答]件用于维护别名(aliases),输出(exports)和路径改变(pathchanges)等等,以免影响~/.zshrc;使用Homebrew完成zsh和zshcompletions的安装;brew...

朋友们,粮仓生产设备标准是什么?大家可以说一下吗?

[回答]自动纸箱成型机、自动开箱机是大批量纸箱自动开箱、自动折合下盖、自动密封下底胶带的流水线设备,机器全部采用PLC显示屏控制,大大方便操作,是自动...

BDK是什么牌子的轴承?,BDK短视频霸屏运营什么品牌好??

[回答]您是不是看错了,应该是劲霸男装的标志吧南方网通我很多朋友都推荐给我,我就去自己了解了下,很符合我们公司,准备就确定他们了。有教学视频讲述接...