线下实训
HOME
线下实训
正文内容
德国倍福plc编程 倍福PLC学习:编写函数块及简单调试
发布时间 : 2024-10-21
作者 : 小编
访问数量 : 23
扫码分享至微信

倍福PLC学习:编写函数块及简单调试

今天这篇文章我们来编写一个简单的电机控制函数块,并将其下载到倍福CX5020控制器进行测试,以熟悉TwinCAT3环境下基本的编程步骤。

打开TwinCAT3(TC3),按照上一篇文章《倍福PLC学习:扫描EtherCAT I/O子站并测试模块》介绍的内容新建工程项目并扫描EtherCAT子站,项目名称为“motorControl”。

在左侧项目树的“PLC”节点下右键单击,选择“Add new item(添加新内容)”,添加新的PLC项目,命名为“CPU1”,如下图所示:

添加完成后,“CPU1 Project”中会有POUs、GVLs、DUTs等文件夹。其中,POU是程序组织单元,GVL是全局变量列表,UDT是用户自定义变量。我们计划编写一个电机控制的函数块,因此在“POUs”文件夹右键单击,在弹出的对话框中选择“添加(Add)”→“POUs”,如下图所示:

在弹出的“添加POU”对话框中,选择功能块(Function Block),命名为motorControl,编程语言选择ST语言,如下图所示:

在函数块motorControl中声明变量,其中:

VAR_INPUT是输入变量,包含电机启动 、停止信号;VAR_OUTPUT是输出变量,包含输出信号(线圈);VAR_STAT是静态变量,包含沿信号检测变量;

如下图所示(注意变量不区分大小写):

编写代码如下图所示:

为了分配参数,我们新建全局变量列表:GVL1,并添加变量如下图所示:

接下来要在主函数(MAIN)中调用电机控制函数块。首先在变量列表中声明motorControl的实例,命名为“motorControl1”,编写控制代码如下图所示:

单击工具栏“Build”→“Build CPU1”编译PLC程序。

单击工具栏“PLC”→“Download”下载PLC程序。

单击工具栏“PLC”→“Login”登录到在线状态,或者工具栏的快捷按钮,如下图所示:

如果PLC处于未运行状态,单击“Start(启动)”使其运行。本例程为了给出电机启动信号,我们将全局变量“startBtn1”的“Prepared Value”设置为“TRUE”,并单击工具栏“Write Values”按钮将该值写入到PLC中,如下图所示:

此时可以看到主程序MAIN中电机输出信号为TRUE,如下图所示:

如果想让函数输出对应到实际的输出模块,在“CPU 1 instance”→“PLCTask Outputs”→“GVL1.coilKM”,将其对应到“Linked to”指定的输出模块即可。

好了,关于倍福PLC编写函数块及简单调试就先介绍到这里。

用PLC的指针实现字符串转byte(Codesys平台)一文极简搞懂指针

第一步,确定配置

Codesys平台下的倍福Twincat2软件,和MES上位机,进行TCP/IP通信,进行数据的收发,只能收发Byte,不能直接收发字符串(很多PLC之间的通信都有这个问题,很难处理)。

第二步,问题描述

最近调了个改造设备,改造前是德国老外写的程序,MES程序里面数据交互有用到指针的地方没看明白,故在此深入研究一番,老外的程序过于复杂,我就单独把这块功能给拿出来做个功能块程序模拟下,如下图(先不用看这段程序,下面一步一步分解):

第三步:技术逻辑分析

MES和PLC通讯,字节传输,如果我想把PLC的字符串传给MES,必须要把PLC的字符串转变成字节,再传给MES,这不是很简单吗,正好程序有标准得STRING TO BYTE 指令,转一下不久OK了?

于是乎我写了一条这样的指令:srrr为byte,sKeyword为字符串。

不模拟不知道,一模拟吓一跳;不管我输入什么字母,srrr结果都是0 ?????

但是输入数字结果就对了如下图:输入字符串20,srrr为16进制的14,对的上。

这条指令是只能把数字类型的字符串转换成数字,例如字符串格式的数字‘20’,用STRING TO BYTE指令,只能把字符串‘20’,转换成十进制的数字20,字母是无法转换的。

我了个去!!

这个转换指令一点用也没有啊!!!

没办法,只有深入研究一下,字母怎么转byte了。

首先我模拟plc需要发一串字符“ABCDEFG”给MES,转换过程的数据结构如下图所示:

“ABCDEFG”转换成BYTE需要7个BYTE作为存储空间,每个字母用一个BYTE,通过ASCII码转换成10进制或16进制表示。

首先大家想到的一般都是每个字符ASCII码转换成数字表示,再组合起来用,发送过去,就可以了。但是这种方法麻烦,如果有上千个字符,一个个转,就相当花时间了。

下面就介绍用指针的方法处理这类问题.如下图:

1/先定义sKeyword字符串,这个是我要发送给MES但是还没想到好方法发过去的字符串;

2/定义一个指针pKeyword指向一个byte,存储字符sKeyword的地址;

3/定义一个指针pSendToMes指向一个byte,存储需要发送给MES的byte的地址(程序里定义strSendDate为2000个byte);

4/定义一个结构strSkeyWordDate, 这个作用是把每个字符串的值都按顺序存储在这个结构里,最终发给MES。

程序解析如下:

pKeyword:=ADR(sKeyword);

把sKeyword的地址写入指针pKeyword;

pSendToMes:=ADR(strSkeyWordDate);

把strSkeyWordDate的地址写入指针pSendToMes;

FOR iCounter:=1 TO LEN(sKeyword) BY 1

循环指令,循环字符串sKeyword的长度值,有两个字符就循环两次,三个字符就循坏三次;

DO

pSendToMes^:=pKeyword^;

^为取值指令,把pKeyword存储的地址里第一个byte的值,给pSendToMes的第一个Byte(为什么是第一个byte的值,因为指针指向一个byte)

pKeyword:=pKeyword+1;

指针存储的地址值加1,即指向pKeyword存储里的第二个byte。

pSendToMes:=pSendToMes+1;

指针存储的地址值加1,即指向pSendToMes存储里的第二个byte。

END_FOR

如果我发的字符串为ABCDEFG,那么会经过7个for循还,第一次循环给strSkeyWordDate的第一个字节赋值为41(程序为16进制表示),也就是大写的A,依次反复七次,strSkeyWordDate的前7个字节为16进制的41 42 43 44 45 46 47,ASCII翻译过就是ABCDEFG,这就完美解决了,字符串转Byte的需求。

第四步:技术分析指针数据

结合以上程序如下图,比如sKeyword的值是ABCDEFG,pKeyword为对应第一个字节的地址45492,pKeyword^为地址45492提取的值41,pKeyword+1则是地址加1,地址变为45493,对应的值为42.循环七次得到想要的数据。

OK!就分析到此,我是明白差不多了,有疑问评论区问我!!

相关问答

倍福嵌入式控制器是用什么语言来编程?

倍福的嵌入式控制器可以用多种语言来编程!打开编程软件一看就知道,网络不好我就不上图了,它支持IL,ST,SFC,FBD,CFC,LD这几种编程语言,应该说很多欧美的...

倍福plc如何上传程序?

要上传倍福PLC的程序,首先需要连接PLC和计算机。可以使用编程电缆将PLC与计算机连接起来。然后,使用倍福PLC编程软件,如倍福PLC编程软件或倍福PLC编程工具,...

倍福plc硬件id怎样读?

倍福PLC的硬件ID可以通过以下步骤进行读取:首先,进入倍福PLC编程软件,选择“工程管理”窗口,然后右键点击需要获取硬件ID的PLC,选择“属性”选项,然后在弹...

倍福怎么上传程序?

上传程序需要先确定上传的平台和方式。在倍福上通过上传文件功能可以将程序上传到云端。具体步骤为:选择要上传的文件,点击上传文件按钮,然后等待文件上传完成...

倍福plc程序密码忘记?

不能查看密码,忘记了只能清除程序清除方式是使用存储卡。详细步骤如下:1、将S7-1500设备断电2、插入一张存储卡到S7-1500CPU上,存储卡中的程序不能有密码保...

倍福plc支持profibus-dp总线吗?

倍福PLC只是一个CPU模块,如果你想用总线通讯,买一个总线模块就行了,倍福的profibus-DP总线模块型号是BK3010,BK3100,BK3110|PROFIBUS总线耦合器。以上...

倍福plc运行灯不亮?

好的那就是连线的问题,如果不好再来修改程序。检查线路,看一下是否出现连接头不稳定的情况。检查元器件是否有老化现象出现.一般遇到这种情况有几种可...

倍福plc最高运算速率?

他的运算速度很高,但是他的程序扫描周期最快是50微秒,也就是说每50微秒程序循环一次!他的运算速度很高,但是他的程序扫描周期最快是50微秒,也就是说每50微秒...

倍福plc使用pnp还是npn?

倍福PLC可以使用PNP或NPN信号输入,具体选择哪一种要根据实际情况进行判断。PNP输入信号一般使用正电压输入,输出为低电平,常用于负载为NPN的情况。而...

如何将倍福控制器的程序拷贝出来?

答:将倍福控制器的程序拷贝出来的步骤如下。1.新建工程新建TwinCATXAEProject倍福CX5120嵌入式控制器使用教程,2.连接设备点击SYSTEM,再点击“Change....

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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