找回密码
 立即注册
查看: 1086|回复: 22

新手求助:12CA560S2工控板寻找好心网友帮忙写程序

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-05-01 10:39:04
已绑定手机

29

主题

70

回帖

706

积分

高级会员

单片机新手小秦

积分
706
发表于 2024-8-9 09:45:15 | 显示全部楼层 |阅读模式
寻找好心网友帮忙写程序


我现在用12C5A60S2——(价格4元一个)做的工控板,暂时先用这个,以后再考虑换芯片
输入点
P22=X0 按钮1
P23=X1 接近开关
P24=X2 磁性开关
P25=X3 信号
P27=X5 按钮2
输出点
P20=Y0 电机
P07=Y1 电磁阀
P06=Y2 信号
程序流程:

X0 复位按钮1按下,启动变量M5 (参考三菱程序的中间量) 启动Y0电机

X0 复位按钮1再次按下,结束变量M5,停止所有输出,不包括Y1

X1接近开关上升沿触发后,停止Y0,启动Y1
X2磁性开关 和Y1,同时启动四个计时器,T0,T1 T2,T3
T0开 T1关  M5开,输出Y2
T2开 T3关,m5开,输出Y2
-----------
X5按钮2,复位开关,按下停止程序M5,反转Y1电磁阀

0efc7b8fb31d7917cad512c0f2cde23.jpg
497400050#qq.com
我是我的邮箱,感谢发送
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-8-9 10:58:06 来自手机 | 显示全部楼层
可以换8051U
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-8-9 11:24:44 | 显示全部楼层
M5程序指什么?
工控这东西基本都是低速IO时序,实现起来比较容易的.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-05-01 05:52:49
已绑定手机

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2024-8-9 13:19:53 | 显示全部楼层
楼主估计还没有整理好他的思路
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-05-01 10:39:04
已绑定手机

29

主题

70

回帖

706

积分

高级会员

单片机新手小秦

积分
706
发表于 2024-8-9 14:01:37 | 显示全部楼层
jw*** 发表于 2024-8-9 13:19
楼主估计还没有整理好他的思路

这个工控板目前,在使用中,,有三菱的程序,没有STC的程序,STC的程序,Kill的我不会写,所以求助网友,帮写一下,或写一问部分也可
497400050#qq.com
我是我的邮箱,感谢发送
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-05-01 10:39:04
已绑定手机

29

主题

70

回帖

706

积分

高级会员

单片机新手小秦

积分
706
发表于 2024-8-9 14:06:12 | 显示全部楼层

平台搭建好了,在使用中,小批量生产中
等写好KILL程序,再换其它芯片
因为我不会写程序,所有求助网友帮写一下
497400050#qq.com
我是我的邮箱,感谢发送
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-8-9 14:15:46 | 显示全部楼层
yyy5*** 发表于 2024-8-9 14:06
平台搭建好了,在使用中,小批量生产中
等写好KILL程序,再换其它芯片
因为我不会写程序,所有求助网友 ...

你不是用PLC2hex移植的吗?难道没成功
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-05-01 10:39:04
已绑定手机

29

主题

70

回帖

706

积分

高级会员

单片机新手小秦

积分
706
发表于 2024-8-9 21:33:38 | 显示全部楼层
网*** 发表于 2024-8-9 14:15
你不是用PLC2hex移植的吗?难道没成功

已经成功了,现在小批量制作中
之所有需要KILL程序,是因为好更换新芯片
-----
新芯片不需要晶振,安全 性能更高。
497400050#qq.com
我是我的邮箱,感谢发送
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:263
  • 最近打卡:2025-05-01 10:39:04
已绑定手机

29

主题

70

回帖

706

积分

高级会员

单片机新手小秦

积分
706
发表于 2024-8-9 21:34:50 | 显示全部楼层

我也想换,换了U不会写程序
所以现在找网友帮忙写程序
497400050#qq.com
我是我的邮箱,感谢发送
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-08-10 08:44:59

0

主题

1

回帖

8

积分

新手上路

积分
8
发表于 2024-8-10 08:39:24 | 显示全部楼层
针对您描述的STC12CA560S2微控制器在工业控制板上的应用需求,我们可以设计一个简单的程序流程来满足您的要求。由于STC12CA560S2是一个基于8051内核的单片机,我们将使用标准的C语言来编写控制逻辑。下面是一个简化的程序框架,用于实现您的功能需求:

c
#include <reg52.h> // 包含STC12C560S2的头文件  
  
sbit X0 = P2^2; // 定义输入点  
sbit X1 = P2^3;  
sbit X2 = P2^4;  
sbit X5 = P2^7;  
sbit Y0 = P2^0; // 定义输出点  
sbit Y1 = P0^7;  
sbit Y2 = P0^6;  
  
bit M5 = 0; // 定义变量M5,作为中间控制变量  
  
void Timer0_Init(); // 假设需要初始化定时器(具体实现根据需求)  
void Timer1_Init();  
void Timer2_Init();  
void Timer3_Init();  
  
void main() {  
    // 初始化IO口和定时器(这里仅为示意,具体实现根据硬件和需求)  
    X0 = 1; // 通常设置为输入模式时,需要配置为上拉或下拉  
    X1 = 1;  
    X2 = 1;  
    X5 = 1;  
  
    Y0 = 0; // 初始时电机停止  
    Y1 = 0; // 初始时电磁阀关闭  
    Y2 = 0; // 初始时信号输出关闭  
  
    Timer0_Init();  
    Timer1_Init();  
    Timer2_Init();  
    Timer3_Init();  
  
    while (1) {  
        // 检测X0(复位按钮1)的状态变化  
        if (!X0) {  
            delay(10); // 消抖延时  
            if (!X0) {  
                if (M5) {  
                    // 如果M5已启动,则停止所有输出(除了Y1)  
                    M5 = 0;  
                    Y0 = 0;  
                    // 如果需要,可以在这里添加代码来停止其他输出或重置状态  
                } else {  
                    // 如果M5未启动,则启动M5和Y0  
                    M5 = 1;  
                    Y0 = 1;  
                }  
                while (!X0); // 等待按钮释放  
            }  
        }  
  
        // 检测X1(接近开关)的上升沿  
        // 假设有一个变量lastX1保存了X1的上一个状态  
        if (X1 && !lastX1) {  
            Y0 = 0; // 停止Y0  
            Y1 = 1; // 启动Y1  
            // 初始化或重置计时器(如果需要)  
            // ...  
            lastX1 = 1; // 更新X1的状态  
        }  
  
        // 检测X2(磁性开关)的状态  
        // 如果X2为高且Y1也为高,则启动计时器  
        if (X2 && Y1) {  
            // 假设这里通过控制寄存器来启动/停止定时器  
            // ...  
        }  
  
        // 处理X5(按钮2)的按下  
        if (!X5) {  
            delay(10); // 消抖延时  
            if (!X5) {  
                M5 = 0; // 停止M5  
                // 如果需要反转Y1,则切换Y1的状态  
                Y1 = !Y1;  
                while (!X5); // 等待按钮释放  
            }  
        }  
  
        // 根据M5和计时器的状态控制Y2  
        // ...  
    }  
}  
  
// 延时函数(简单实现,用于消抖)  
void delay(unsigned int ms) {  
    // 实现延时逻辑,这里只是示意  
}  
  
// 定时器初始化函数(具体实现根据需求)  
void Timer0_Init() {  
    // ...  
}  
// ... 其他定时器的初始化函数
注意:

上面的代码是一个简化的框架,具体实现时需要根据您的硬件环境和需求进行调整。
定时器的初始化和控制逻辑没有详细展开,因为这取决于您的具体需求(如定时时间、中断服务程序等)。
消抖延时函数delay的具体实现也需要您根据系统时钟频率来编写。
输入点通常配置为上拉或下拉输入,具体取决于您的电路设计。
文心一言编写的框架
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:36 , Processed in 0.125537 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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