alarm in和alarm out
时间: 2023-12-10 22:03:33 浏览: 19
Alarm in和Alarm out是指报警输入和报警输出。报警输入也称为IO输入,是指当设备接收到某种触发信号时,会触发一个警报或通知。报警输出也称为IO输出,是指设备在发生某种事件或情况时,向外部设备发送警报信息或信号。通常,报警输出可以通过声音、光线、电子邮件、短信等方式进行通知。Alarm in和Alarm out通常用于安防监控、工业自动化等领域。
相关问题
delimiter // CREATE PROCEDURE area_pro2 ( IN x INT, OUT alarm_count INT, OUT over_spped INT, OUT over_spped_10 INT, OUT over_spped_20 INT, OUT over_spped_50 INT, OUT untreated INT, OUT processed INT ) BEGIN WITH cte AS ( SELECT organization_id FROM `user` WHERE organization_id = x OR father LIKE CONCAT( COALESCE ( ( SELECT father FROM `user` WHERE organization_id = x ), "" ), x, "-%" ) AND is_del = 0 ) SELECT count( location_alarm.id ) INTO alarm_count, COUNT( CASE WHEN location_alarm.max_speed > location_alarm.speed_limit * 10 THEN 0 END ), count( CASE WHEN location_alarm.max_speed / location_alarm.speed_limit > 11 THEN 0 END ) INTO over_spped_10, count( CASE WHEN location_alarm.max_speed / location_alarm.speed_limit > 12 THEN 0 END ) INTO over_spped_20, count( CASE WHEN location_alarm.max_speed / location_alarm.speed_limit > 15 THEN 0 END ) INTO over_spped_50, count( CASE WHEN location_alarm.alarm_process_id IS NULL THEN 0 END ) INTO untreated, count( location_alarm.alarm_process_id ) INTO processed FROM cte INNER JOIN car ON car.organization_id = cte.organization_id AND car.is_del = 0 INNER JOIN location_alarm ON car.id = location_alarm.car_id; END // 我这个存储过程为什么报错了
你的存储过程报错可能是因为你没有指定 DELIMITER。在你的存储过程中,你使用了分号 (;) 来分隔语句,而这与 MySQL 默认使用的分隔符相同。因此,你需要使用 DELIMITER 命令来改变分隔符。
下面是修改后的代码:
```
DELIMITER //
CREATE PROCEDURE area_pro2 (
IN x INT,
OUT alarm_count INT,
OUT over_spped INT,
OUT over_spped_10 INT,
OUT over_spped_20 INT,
OUT over_spped_50 INT,
OUT untreated INT,
OUT processed INT
)
BEGIN
WITH cte AS (
SELECT
organization_id
FROM
`user`
WHERE
organization_id = x
OR father LIKE CONCAT(
COALESCE((SELECT father FROM `user` WHERE organization_id = x), ''),
x,
'-%'
)
AND is_del = 0
)
SELECT
count(location_alarm.id) INTO alarm_count,
COUNT(CASE WHEN location_alarm.max_speed > location_alarm.speed_limit * 10 THEN 0 END),
count(CASE WHEN location_alarm.max_speed / location_alarm.speed_limit > 11 THEN 0 END) INTO over_spped_10,
count(CASE WHEN location_alarm.max_speed / location_alarm.speed_limit > 12 THEN 0 END) INTO over_spped_20,
count(CASE WHEN location_alarm.max_speed / location_alarm.speed_limit > 15 THEN 0 END) INTO over_spped_50,
count(CASE WHEN location_alarm.alarm_process_id IS NULL THEN 0 END) INTO untreated,
count(location_alarm.alarm_process_id) INTO processed
FROM
cte
INNER JOIN car ON car.organization_id = cte.organization_id
AND car.is_del = 0
INNER JOIN location_alarm ON car.id = location_alarm.car_id;
END//
DELIMITER ;
```
在这里,我们使用了 DELIMITER // 命令来指定新的分隔符,并在存储过程的结尾使用了 END// 来结束存储过程定义。最后,我们使用 DELIMITER ; 命令来将分隔符改回默认值。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY QIANGDAQI IS PORT(CLK,CLK2,S0,S1,S2,S3,S4,S5,S6,STOP,RST:IN STD_LOGIC; N,K,Q_OUT:OUT STD_LOGIC; M:OUT STD_LOGIC_VECTOR(1 DOWNTO 0); A,B,C,D,E,F,G:OUT STD_LOGIC); END QIANGDAQI; ARCHITECTURE BHV OF QIANGDAQI IS COMPONENT QDJB IS PORT(CLK2,RST:IN STD_LOGIC; S0,S1,S2,S3,S4,S5:IN STD_LOGIC; TMP:OUT STD_LOGIC; STATES:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END COMPONENT; COMPONENT JS IS PORT(CLK,RST,S,STOP:IN STD_LOGIC; WARN:OUT STD_LOGIC; TA,TB:BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0)); END COMPONENT; COMPONENT SJXZ IS PORT(CLK2,RST:IN STD_LOGIC; S:OUT STD_LOGIC_VECTOR(1 DOWNTO 0); A,B,C:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT; COMPONENT YMQ IS PORT(AIN4: IN STD_LOGIC_VECTOR (3 DOWNTO 0); DOUT7: OUT STD_LOGIC_VECTOR (6 DOWNTO 0)); END COMPONENT; COMPONENT ALARM IS PORT(CLK,I:IN STD_LOGIC; Q:OUT STD_LOGIC); END COMPONENT; SIGNAL STATES_OUT,TA_OUT,TB_OUT,Y_OUT:Std_LOGIC_VECTOR(6 downto 0); SIGNAL LEDOUT:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL W:STD_LOGIC; BEGIN A<=LEDOUT(6); B<=LEDOUT(5); C<=LEDOUT(4); D<=LEDOUT(3); E<=LEDOUT(2); F<=LEDOUT(1); G<=LEDOUT(0); U1:QDJB PORT MAP(CLK2,RST,S0,S1,S2,S3,s4,s5,TMP=>K,STATES=>STATES_OUT); U2:JS PORT MAP(CLK,RST,S,STOP,WARN=>N,TA=>TA_OUT,TB=>TB_OUT); U3:SJXZPORTMAP(CLK2=>CLK2,RST=>RST,S=>M,A=>STATES_OUT,B=>TA_OUT, C=>TB_OUT,Y=>Y_OUT); U4:YMQ PORT MAP(AIN4=>Y_OUT,DOUT7=>LEDOUT); U5:ALARM PORT MAP(CLK2,S,Q_OUT); END BHV;
这段代码看起来还是有一些错误,下面是我发现的几个问题:
1.在组件U3的实例化中,SJXZ后面应该有一个空格,应该改为SJXZ PORT MAP,否则代码会编译报错。
2.在组件JS的实例化中,TA和TB的类型应该为BUFFER,而不是BUFFER STD_LOGIC_VECTOR。
3.在组件ALARM的实例化中,输入参数应该是CLK和I,而不是CLK2和S。
下面是修改后的代码,你可以尝试运行一下看看是否能够成功编译:
```
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY QIANGDAQI IS
PORT(CLK,CLK2,S0,S1,S2,S3,S4,S5,S6,STOP,RST:IN STD_LOGIC;
N,K,Q_OUT:OUT STD_LOGIC;
M:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
A,B,C,D,E,F,G:OUT STD_LOGIC);
END QIANGDAQI;
ARCHITECTURE BHV OF QIANGDAQI IS
COMPONENT QDJB IS
PORT(CLK2,RST:IN STD_LOGIC;
S0,S1,S2,S3,S4,S5:IN STD_LOGIC;
TMP:OUT STD_LOGIC;
STATES:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));
END COMPONENT;
COMPONENT JS IS
PORT(CLK,RST,S,STOP:IN STD_LOGIC;
WARN:OUT STD_LOGIC;
TA,TB:BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0));
END COMPONENT;
COMPONENT SJXZ IS
PORT(CLK2,RST:IN STD_LOGIC;
S:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
A,B,C:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END COMPONENT;
COMPONENT YMQ IS
PORT(AIN4: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
DOUT7: OUT STD_LOGIC_VECTOR (6 DOWNTO 0));
END COMPONENT;
COMPONENT ALARM IS
PORT(CLK,I:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END COMPONENT;
SIGNAL STATES_OUT,TA_OUT,TB_OUT,Y_OUT:STD_LOGIC_VECTOR(6 DOWNTO 0);
SIGNAL LEDOUT:STD_LOGIC_VECTOR(6 DOWNTO 0);
SIGNAL W:STD_LOGIC;
BEGIN
A<=LEDOUT(6);
B<=LEDOUT(5);
C<=LEDOUT(4);
D<=LEDOUT(3);
E<=LEDOUT(2);
F<=LEDOUT(1);
G<=LEDOUT(0);
U1:QDJB PORT MAP(CLK2,RST,S0,S1,S2,S3,S4,S5,TMP=>K,STATES=>STATES_OUT);
U2:JS PORT MAP(CLK,RST,S,STOP,WARN=>N,TA=>TA_OUT,TB=>TB_OUT);
U3:SJXZ PORT MAP(CLK2=>CLK2,RST=>RST,S=>M,A=>STATES_OUT,B=>TA_OUT,C=>TB_OUT,Y=>Y_OUT);
U4:YMQ PORT MAP(AIN4=>Y_OUT,DOUT7=>LEDOUT);
U5:ALARM PORT MAP(CLK,I,Q_OUT);
END BHV;
```