信捷PLC学习手册

软件安装

软件可在信捷官网下载,相关手册也在官网即可下载。
安装时退出电脑防护,以管理员身份运行XDPP即可,会自动安装另一个。
对应的HMI可以用FStudio

与PLC连接

通过以太网口连接

  • 设置网口 PLC 的 IP 地址
  • 设置电脑的 IP 地址
  • XDPPro 通过网口连接 PLC

局域网口按 ID 查找

(手册4-1-3-2)
编程软件,选择【软件串口设置】,选择任意一个通讯口,进入配置界面;通讯接口选“Ethernet”;通讯协议选 XNET,连接方式选择“局域网口”,查找方式可以选“设备类型”或是“设备 ID”。两种方式都可以:

  • 查找方式选“设备类型”,勾选相应类型,再点击“配置服务”—“重启服务”,点击确定即可完
    成连接。
  • 查找方式选“设备 ID”,填入网口 PLC 的 ID 号(PLC 的 ID 号可以查看 PLC 标签,也可以通过左侧菜单栏中的“PLC 本体信息”查看,本体信息查看 ID 号的前提是 PLC 与软件成功连接)

连接实例

接线:电脑跟PLC用网线连接,PLC与触摸屏用网线连接,电源红黑线给PLC和触摸屏分别供电。
网线直接连接电脑与触摸屏也可以下载触摸屏程序。
若PLC与触摸屏通过网线连接显示通讯失败,可以尝试通过VGA-COM的线进行连接,可能只设置了这种通讯。

电脑设置:修改本机以太网ipv4地址,win11通过控制面板修改,默认192.168.6.20,连接PLC正常可通过MODBUS_TCP连接成功。
若不成功,首先查看是否能ping通本机IP,失败说明修改IP失败。能通再ping PLC默认192.168.6.6。
连接成功后提示机型不匹配,切换机型。

问题处理

如果能下载不能运行,先设置扩展模块,不行的话重新上电试一下。

网络ip

用网线直接连接或通过HUB或交换机连接的计算机,当在同一网段时才能互通。(网络地址相同,主机地址不同)
计算网络地址=IP地址和子网掩码换算为二进制,进行与运算。

  • 公网IP和私网IP
    ipconfig查出来的是本机的内网私有地址,百度查出来的是上网的共有地址。

  • 网关
    网关是一个网络通往其他网络的IP地址。
    网关就是路由。
    缺省网关是默认网关的父类。

  • DNS服务器
    即域名服务器,用来域名解析(域名对应IP)

  • 端口
    包括物理端口和逻辑端口。
    主机区分不同的网络服务靠的是“IP地址+端口号”的模式
    0-1023是公认端口(常用端口),1025-49151是注册端口。

数据结构

c语言块中用W,B进行编写。
传参进来用D与M。
即D----W,B-----M
W与B按数组使用
双字DW【10】表示W【10】与W【11】

D0====FW【0】,为双字浮点数寄存器。

  • SM【13】为一秒脉冲,0.5sON,0.5sOFF。
    在信捷PLC中,有两种常见的计时器类型,分别是S定时器和T定时器。其中,S定时器是通电计时,断电不计时;而T定时器则是通电计时,断电后重新上电会继续计时。

扩展模块

连接扩展模块后要在编程软件中进行设置,上面的菜单栏-PLC设置-扩展模块设置,最常用的是第一种扩展模块。(XL-K-E6X)
连接的第一个扩展模块地址就是1000X,1000Y。
扩展模块设置

软元件

软元件概述

  • 输入继电器X,接收开关信号,八进制
    (按 X0到X7,X10到X17…八进制数的方式分配输入继电器地址号)
  • 输出继电器Y,驱动外部负载,八进制
  • 辅助继电器M,HM,仅能在程序中使用,十进制
  • 状态继电器S,HS,步进梯形图使用的继电器。也可作为信号报警器。
  • 定时器T,HT
  • 计数器C,HC
  • 数据寄存器D,HD

变量标准化命名

  • 开头用IOTKP,中间用英文名或拼音,最后用阿拉伯数字。
  • eg. I_Stop_A(输入变量–停止–A通道)
  • I是输入,O是输出,T是临时变量(中间变量),K是开关量,P是PWM量,TT是一次数据转换之后的变量,TTT是两次数据转换之后的变量。

程序实例

  1. “自动”的变量实例
if ( !X[8] && !X[9] && !HM[1]  && !B[51] && !B[66]  && !B[76]  && !B[86] && B[95] )
    {
        if ( B[230] )//中途搅拌
        {
            B[231] = true;//中途搅拌自动
        }
    }
  1. 顺序执行的实例
    使用LAST_M12,在运行一次后赋值。
 if ( B[12] == 1 & Last_M12 == 0 )
    {
        FW[72] = FW[70];
        FW[74] = FW[12];
    }
    if ( B[95] && B[14] )
    {
        if ( B[13] == 1 & Last_M13 == 0 )
        {
            FW[76] = FW[70];
            FW[78] = FW[12];
            FW[44] = ( FW[74] - FW[78] ) * ( ( FHD[4] * FHD[10] + FHD[6] * FHD[12] ) / ( FW[14] * 100.0 ) )  / ( FW[76] - FW[72] ); //干胶量
        }
    }

    if ( FW[44] < 0 )
    {
        FW[44] = 0;
    }
    Last_M12 = B[12];
    Last_M13 = B[13];
  1. 高低电位持续时间
//液位传感器处理   X3_A桶_低液位  X4_A桶_低液位  X5  B桶_低液位 X6_B桶_低液位
//下面这段代码仅针对X3一个传感器

    if ( X[3] )//若低液位传感器处于高电平
    {
        FW[1004]++;//高电平持续累计
        if (  X[3] == 1 && Last_X3 == 0 )//如果X3信号为1且上一次的X3信号为0,表示液位传感器状态从低电平变为高电平,记录液位传感器状态由低到高的时间
        {
            FW[1026] = FW[1006];
            FW[1006] = 0;
        }
    }
    else
    {
        FW[1006]++;//低电平持续累计
        if (  X[3] == 0 && Last_X3 == 1 )//记录液位传感器状态由高到低的时间
        {
            FW[1024] = FW[1004];//FW1024是高电平累计时间,也就是由高到低的时间——兰
            FW[1004] = 0;
        }
    }
    Last_X3 =   X[3];
    FW[1042] = ( FW[1026] / ( FW[1024] + FW[1026] ) ) * 100;//FW1042初值为0,第一次变高电平值变为1,再变低电平时值变为0.X,例如0.2。
    if ( FHD[150] < FW[1042] )//if ( FHD[150] < FW[1042] )+++JIA
    {
        HM[51] = 1;
    }
    else
    {
        HM[51] = 0;
    }

  1. #define DFD (INT32S)&D
    &D:对符号D所代表的对象取地址
    (INT32S*)&D:将这个地址强制转换为有符号32位整型指针指向的对象
    (INT32S)&D:然后从这个指针取出所指向的有符号32位整型对象
    简单来说,就是从D所在的地址依次取出4字节并按有符号32位整型解析。一个隐含的风险是在某些平台、某些编译环境下可能发生访问对齐错误。
  2. C语言中先执行置一后执行置零,重复执行结果不一定是一还是零,可能并非每次都按从上到下的逻辑严格执行。

库的建立

应用POU库可以实现功能块的封装,建立POU块。(选择FB函数块或FC函数)
POU块的位置
可用梯形图或C语言进行编写,需要先建立变量,变量名不可使用中文。POU库编程实例在梯形图中进行调用时可以直接输入POU块的名称,然后设置此处应用模块的名称。仍旧注意不能使用中文。
调用POU库

POU的变量输入要注意不能使用绝对地址,需要在全局变量表中设置变量映射。
全局变量表中映射地址是红色说明数据类型不对,可能是占用位数不对。M和D切换试试。
全局变量表
POU中定义变量要注意开关量用bit类型就好,BOOL类型占用的还是八位,所以在全局变量表中无法对应M地址。

函数块FB

FB中有自己的内部变量,FB中可以使用函数块和函数。

编程函数块

页面上方有局部变量区
FB 成员变量不允许使用 BIT 类型或 BIT 数组类型,可以使用 BIT 指针类型。BOOL类型与BIT类型在此处大多兼容

使用梯形图

有一些注意事项详见手册,例如常量有时候不用写K(当与自定义的变量在一起时)

块内不能使用TMR指令,只能使用TMR_FB

使用梯形图编写POU_FB_LD

使用C语言

需要在每一个变量前加“self->”
POU_FB_C

实例化调用函数块

梯形图中调用
  • 直接输入FB名称,弹框声明变量确定,输入相关信息后完成实例化调用。
  • 或者先声明实例化变量,梯形图直接输入变量名称。
C语言中调用

C语言中调用有严格顺序,需要先写传入参数,再写调用函数体,再写输出参数。
在POU_2_BODY中调用POU_FB_C

函数FC

  • 没有静态变量
  • 参数传递必须严格保持类型一致

用C编程:

  • Int等数量的数据类型,输入正常写即可,输出在变量前加星号
  • Bit和BOOL的数据类型:
    输入——加.Val
    输出——加->Val

REAL即为浮点型

C编程POU_FC_C 在C中调用如下:在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值