找回密码
 立即注册
楼主: 青穗三三

用 51 做了个 PLC:X、Y、高速计数输入、高速输出、Modbus等直接用,超低学习成本

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-03-05 13:45:21

9

主题

68

回帖

893

积分

高级会员

积分
893
发表于 前天 08:06 | 显示全部楼层
高速输出/PWM
控制高速输出有4种方法。分别为以下:
Y100为例。
输出控制:PWM_OUT(Y100,频率,占空比)。频率范围为400Hz~100KHz,占空比范围为0-100,为整数,请勿使用小数。占空比0=无输出,100=持续高电平。
获取输出频率:PWM_GetFre(Y100)。返回设置的频率,若未设置,返回0
获取输出占空比:PWM_GetDuty(Y100)。返回设置的占空比,若未设置,返回255
停止输出:PWM_STOP(Y100)Y100将为0
注:若不进行高速输出,其默认将为一个通用输出。

微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-03-05 13:45:21

9

主题

68

回帖

893

积分

高级会员

积分
893
发表于 前天 08:06 | 显示全部楼层
高速计数输入
需要用到特殊辅助继电器、特殊数据寄存器,这里使用了一看就明白的变量值。
使能高速计数输入X0,注意使能后,请勿将其用作通用输入接口:
  1. DX0_CNT=0;  //设置起始计数值
  2. MX0_OUT=0;  //清除溢出标志
  3. DX0_MAX=100;  //定义设置上限
  4. SET(MX0_EN);  //启动
复制代码
停用高速计数输入X0,停用后,可用作通用输入接口:
  1. RST(MX0_EN);  //清除使能。除非用户手动清除计数值DX0_CNT,否则启动后继续计数
复制代码
当起始计数值DX0_CNT达到设置上限DX0_MAX,溢出标志MX0_OUT会置1,并且DX0_CNT0开始。需要用户手动清除溢出标志MX0_OUT
需要注意,受限于MCU的性能,若值范围为0~255,则计数的设置上限,以及起始计数值,设置时均不可超出此范围。
若需要使用高速计数输入X3,将以上代码中的X0修改为X3使用即可。

微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:605
  • 最近打卡:2026-03-05 22:28:39
已绑定手机

9

主题

180

回帖

1347

积分

金牌会员

积分
1347
发表于 前天 18:55 | 显示全部楼层
把FX2N兼容一下,能兼容FX3U更好
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-03-05 13:45:21

9

主题

68

回帖

893

积分

高级会员

积分
893
发表于 昨天 13:45 | 显示全部楼层
日期和时间
dhms是一个集合了设备已运行时间的对象。包含天数、时、分、秒。
dhms.day,天,最大到32767。
dhms.hour,时。
dhms.min,分。
dhms.sec,秒。
用户可将其加载至通用数据寄存器。
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-03-05 13:45:21

9

主题

68

回帖

893

积分

高级会员

积分
893
发表于 昨天 13:47 | 显示全部楼层
模拟量输入
直接读取值即可:
D0=AI0;
用起来超方便
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:380
  • 最近打卡:2026-03-05 17:35:39
已绑定手机

0

主题

11

回帖

304

积分

中级会员

积分
304
发表于 昨天 17:36 | 显示全部楼层
怎么把modbus的通讯速率改为9600?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-03-05 13:45:21

9

主题

68

回帖

893

积分

高级会员

积分
893
发表于 昨天 19:49 | 显示全部楼层
常州工*** 发表于 2026-3-5 17:36
怎么把modbus的通讯速率改为9600?

目前还修改不了,是固定的4800,也有仿真性能限制的原因,项目仍然在完善中
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:380
  • 最近打卡:2026-03-05 17:35:39
已绑定手机

0

主题

11

回帖

304

积分

中级会员

积分
304
发表于 昨天 21:48 | 显示全部楼层
目前已在开发板上实现了modbus 9600/8/n/1的通讯方式.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:380
  • 最近打卡:2026-03-05 17:35:39
已绑定手机

0

主题

11

回帖

304

积分

中级会员

积分
304
发表于 昨天 21:50 | 显示全部楼层
另外实际PLC中XY是八进制的,没有此项目的X8、X9等!!
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-03-05 13:45:21

9

主题

68

回帖

893

积分

高级会员

积分
893
发表于 昨天 22:00 | 显示全部楼层
常州工*** 发表于 2026-3-5 21:50
另外实际PLC中XY是八进制的,没有此项目的X8、X9等!!

搜索了下,确实是8进制,我修改一下
微信qsssuv
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-6 05:11 , Processed in 0.111885 second(s), 79 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表