青穗三三 发表于 2026-3-5 22:03:36

常州工控-国光 发表于 2026-3-5 21:48
目前已在开发板上实现了modbus 9600/8/n/1的通讯方式.

在开发板?帖子的项目是在proteus仿真上实现的,是用的项目里面的MCU-LIB库在开发板上实现了吗?

常州工控-国光 发表于 2026-3-5 22:22:09

是的,代码原封不动写入到开发板上的

青穗三三 发表于 2026-3-5 22:23:41

常州工控-国光 发表于 2026-3-5 22:22
是的,代码原封不动写入到开发板上的

{:ciya:}牛

青穗三三 发表于 2026-3-6 08:05:01

Modbus-RTU从站协议
通信配置:4800,N,8,1。访问地址固定为1。
寄存器表就不贴图了,可以下载下来看设计说明中的详细内容。
总之,就是直接连上Modscan工具就可以使用,很方便。

在仿真上,你需要安装虚拟串口驱动,才能使用modscan连接到proteus仿真
在app_plc_reg_update文件中,填写了默认的更新事件内容,用户可自定义其它行为

青穗三三 发表于 2026-3-6 08:06:26

本 log 函数是针对 MCU-PLC 硬件场景定制的日志输出函数。
/********************************
功能描述:打印到控制台(串口输出)
参数说明:*format:格式控制。支持以下格式:
      %d:s16数据
      %u:u16数据
      %ld:s32数据
      %lu:u32数据
      %s:字符串
      %c:ASCII字符
      %X:u16数据的16进制字符串
      %lX:u32数据的16进制字符串
      %u:以n的宽度显示u16数据,不足时可前置添0,超过时宽度限制无效
      %lu:以n的宽度显示u32数据,不足时可前置添0,超过时宽度限制无效
      %.d:对s16数据以小数形式呈现
      %.ld:对s32数据以小数形式呈现
      %.u:对u16数据以小数形式呈现
      %.lu:对u32数据以小数形式呈现
      %.nd:参数1为保留小数位数,参数为2为s16数据
      %.nld:参数1为保留小数位数,参数为2为s32数据
      %.nu:参数1为保留小数位数,参数为2为u16数据
      %.nlu:参数1为保留小数位数,参数为2为u32数据
      %t:参数1为字符串指针。参数2为限制长度,可以是参数1的空间大小-1。将此字符之前的格式化的字符复制到第1个字符串指针位置
      %hs:参数1为u8指针。参数2为限制长度。将此数据转为十六进制字符串。
      %hn:参数1为u8指针。参数2为限制长度。直接拷贝源数据。
返回值:指向数据缓冲区的指针,除%t参数外,其它功能都会使得该数据区以字符串结束符结束(\0)
********************************/
char *log(char *format, ...);
例如,将AI0打印至窗口
log("AI0:%u\r\n",AI0);
受限MCU的资源,打印多个参数时,可能输出异常,可以分解进行单个打印。

青穗三三 发表于 2026-3-6 08:09:31

以上就将本项目的重点内容全部介绍完毕。
有一些可以开放但目前未开放的MCU资源,我会开发出来,写到设计说明书中,供用户使用
论坛里面的附件资料我也会实时更新。

world_all 发表于 2026-3-6 08:32:36

这个需要梯形图么

青穗三三 发表于 2026-3-6 08:35:32

world_all 发表于 2026-3-6 08:32
这个需要梯形图么

不需要梯形图,直接编代码、配注释,进行设计就可以

李鑫发 发表于 2026-3-6 15:32:53

有点意思,下载来看看咋回事

常州工控-国光 发表于 2026-3-8 12:51:47

"C:\Users\Administrator\Desktop\QQ20260308-124929.png",没库的源码,其他都改不了!!
页: 1 2 [3] 4
查看完整版本: 用 51 做了个 PLC:X、Y、高速计数输入、高速输出、Modbus等直接用,超低学习成本